ВУЗ: Пермский национальный исследовательский политехнический университет
Категория: Методичка
Дисциплина: Системы реального времени
Добавлен: 15.11.2018
Просмотров: 2156
Скачиваний: 14
б) FOR – TO – DO
FOR <переменная>:=<выражение> TO <выражение> BY <выражение > DO
<утверждение >;
END_FOR;
в) REPEAT – UNTIL
REPEAT <утверждение>;
UNTIL <выражение>
END_REPEAT;
Типы переменных:
INT (от -32768 до 32767) – целый тип
SINT (от -128 до 127) – короткий целый
DINT (от -2147483648 до 2147483647) – длинный целый
STRING (может содержать строку) – строковый тип
BOOL (истина или ложь) – логический тип
Функции
Объявление функций:
FUNCTION <имя> : return type;
VAR_INPUT
<переменная> : <тип>;
... ...
<переменная> : <тип>;
END_VAR;
VAR
<переменная> : <тип>;
... ...
<переменная> : <тип>;
END_VAR;
<утверждение>
END_FUNCTION;
return type (возвращаемый тип) может быть: BOOL, SINT, INT или DINT.
VAR_INPUT содержит переменные, которые должны быть объявлены вне
функции (переменные не могут быть изменены в функции). VAR содержит
частные переменные функции, которые могут читаться и изменяться изнутри
функции. Утверждения, которые находятся в теле функции, могут
использовать частные переменные.
Пример:
FUNCTION Add : INT;
VAR_INPUT
a : INT;
b : INT;
c : INT;
END_VAR;
Add := a+b+c;
END_FUNCTION;
Операции языка VPL:
1. Унарные
- отрицание
NOT логическое отрицание
** степень
2. Бинарные
+ сложение
- вычитание
* умножение
/ деление
MOD модуль
3. Операторы сравнения
< меньше чем
<= меньше или равно
> больше
>= больше или равно
= равно
<> неравно
4. Логические операторы
AND логическое И
XOR исключающее логическое ИЛИ
OR логическое ИЛИ
5. Назначенные приоритеты в выполнении операции:
1. ( ) – круглые скобки
2. Function
3. SIZEOF
4. ADDR
5. Унарные операции
6. Бинарные операции
7. Операторы сравнения
8. Логические операторы
Функции GSM.
Функции GSM позволяют программе взаимодействовать с модулями
GSM на RTCU платформе.
gsmConnected
Функция проверяет, находится ли GSM модуль в соединении с GSM
базовой станцией. Входящие параметры: нет. Возвращаемое значение bool:
true – есть соединение с базовой станцией, false – нет соединения с базовой
станцией.
INCLUDE rtcu.inc
PROGRAM test;
BEGIN
…
…
// Проверка успешности соединения с GSM базовой станцией
IF gsmConnected() THEN
// Устройство соединилось с базовой станцией
…
…
ELSE
// Устройство не соединилось с базовой станцией
…
…
END_IF;
END;
END_PROGRAM;
gsmIncomingCall
Функциональный блок используется для проверки входящего звонка.
Выходные параметры: status: int(0..2) может принимать значения 0 – нет
входящего звонка, 1 – входящий звонок с номером вызывающего, 2 –
входящий звонок без номера вызывающего, phonenumber: string -
телефонный номер (если статус 1).
INCLUDE rtcu.inc
PROGRAM test;
VAR
incoming : gsmIncomingCall;
END_VAR;
// Включение питания на GSM модуле
gsmPower(power := TRUE);
BEGIN
incoming();
…
…
// Проверка входящего звонка
IF incoming.status = 1 THEN
// Входящий звонок с номером вызывающего
// Ответ на входящий звонок
gsmAnswer();
// Отправить голосовое сообщение
voiceTalk(message := "Hello");
//
gsmHangup();
…
…
END_IF;
END;
END_PROGRAM;
gsmPower
Функция контролирует электропитание GSM модуля. Используя эту
функцию, можно включать и выключать GSM модуль. Входные параметры:
power:bool может принимать значения: true (включить питание), false
(выключить питание). Возвращаемое значение:int: 0 – если задача выполнена
правильно, 1 – если происходит вызов данных (выключение не возможно в
данном случае), 2 – если модем блокирован из-за неполадок в сети, 8 – если
скорость системы не поддерживающая (должно быть 48 МГц), 9 – если
модем уже работает по способу LP (пониженная скорость соединения, GSM
модуль включен функцией gsmPowerLP).
INCLUDE rtcu.inc
PROGRAM test;
// Включение питания на GSM модуле
gsmPower(power := TRUE);
BEGIN
…
…
END;
END_PROGRAM;
gsmSendSMS
Функция отправляет SMS сообщения, используя GSM модуль. Входные
параметры: phonenumber:string - телефонный номер (максимальная длина 20),
message:string - строка сообщения. Возвращаемое значение:int: 0 – если
сообщение отправлено успешно, 1 – если общая ошибка, 2 – если CMS/CME
ошибка (ошибка на сети GSM), 3 – если GSM модуль не связан с основной
станцией, 4 – если модуль GSM не включен, 5 – если модуль GSM занят
вызовом данных.
INCLUDE rtcu.inc
PROGRAM test;
// Включение питания на GSM модуле
gsmPower(power := TRUE);
BEGIN
…
…
// Примечание: в этом примере не проверяется код возвращаемого
значения из //функции gsmSendSMS
gsmSendSMS(phonenumber := "+44 12 34 56 789", message := "This is a
test
message sent using SMS");
…
…
END;
END_PROGRAM;
Функции дисплея.
Функции дисплея позволяют программе взаимодействовать с LCD
дисплеем на RTCU платформе.
displayBackLight
Функция контролирует яркость дисплея. Входные параметры:
intensity:int(0..100) – яркость в %. Возвращаемое значение: нет.
INCLUDE rtcu.inc
PROGRAM test;
// Настроить яркость дисплея равную 75%
displayBacklight(intensity := 75);
BEGIN
…
…
END;
END_PROGRAM;
displayClear
Функция очищает содержимое дисплея. После ее вызова текущая
записывающая позиция будет установлена слева вверху. Входные
параметры: нет. Возвращаемое значение: нет.
INCLUDE rtcu.inc
PROGRAM test;
BEGIN
…
…
// очистить дисплей
displayClear();
…
…
END;
END_PROGRAM;
displayString
Функция печатает текст сообщения на дисплее с текущей записывающей
позиции. Входные параметры: message:string – текст сообщения.
Возвращаемое значение: нет.
INCLUDE rtcu.inc
PROGRAM test;
BEGIN
…
…
// Установить текущую записывающую позицию к 1,2
displayXY(x := 1, y := 2);
// Отобразить сообщение, начиная с текущей записывающей позиции