Особенности программирования Scl-функций
К Scl-функциям принадлежат следующие функции: таймеров, счетчиков, математические, сдвига и преобразования.
Программирование таймеров
В системной памяти CPU поддерживается ряд таймеров, которые отличаются режимам работы:
S_PULSE – режим управляемого импульса (pulse timer);
S_PEXT – режим расширенного импульса (extended pulse);
S_ODTON – с задержкой включения (delay);
S_ODTS – с задержкой включения с памятью (latching ON delay);
S_OFFDT – с задержкой выключения (OFF delay).
Все функции таймера имеют параметры, показанные в таблице 6.4.
Пример вызова функций таймеров:
Time_BCD := S_PULSE(
T_NO := Timer_address,
S := Start_input,
TV := Timer_duration,
R := Reset,
Q := Timer_status,
BI := Binary_time);
Таблица 6.4 - Параметры Simatic-функций таймеров
Параметр | Объявление | Тип данных | Значение |
T_NO S TV R | INPUT INPUT INPUT INPUT | TIMER BOOL S5TIME BOOL | Адрес таймера Параметр запуска Установленное значение Сброс таймера |
Функциональное значение Q BI | OUTPUT OUTPUT OUTPUT | S5TIME BOOL WORD | Текущее значение в BCD формате Состояние таймера Текущее значение таймера в двоичном коде |
При инициализации параметров функций таймеров следует учитывать, что параметр T_NO должен быть инициирован всегда, а другие можно не инициировать.
В дополнение к Simatic-функциям таймеров в специализированных CPU поддерживаются также Iec-функции таймеров. Эта поддержка обеспечивается системными функциональными блоками SFB:
SFB 3 TP – функция генерации импульса;
SFB 4 TON – функция генерации импульса с задержкой включения;
SFB 5 TOF – функция генерации импульса с задержкой выключения.
Эти функциональные блоки хранятся в библиотеке Standard library в разделе System Function Blocks (Системные функциональные блоки).
Программирование счетчиков
В системной памяти CPU поддерживаются три функции счетчиков:
S_CU – функция счетчика прямого счета (up counter);
S_CD – функция счетчика обратного счета (down counter);
S_CUD – функция прямого и обратного счета (up-down counter).
Параметры Simatic-функций счетчиков представлены в таблице 3.5.
Таблица 3.5 - Параметры Simatic-функций счетчиков
Параметр | Объявление | Тип данных | Значение |
C_NO CU CD S PV R | INPUT INPUT INPUT INPUT INPUT INPUT | COUNTER BOOL BOOL BOOL S5TIME BOOL | Адрес счетчика Прямой счет Обратный счет Параметр запуска Установленное значение Сброс счетчика |
Функциональное значение Q CV | OUTPUT OUTPUT OUTPUT | WORD BOOL WORD | Текущее значение в BCD формате Состояние счетчика Текущее значение в двоичном коде |
Пример вызова функций счетчиков:
BCD_Count_Value := S_CU(
C_NO := Count_address,
CU := Count_up,
S := Set_input,
PV := Count_value,
R := Reset,
Q := Counter_status,
BI := Binary_count_value);
При инициализации параметров функций счетчиков применяются следующие правила:
• не допускается применения параметра CD вместе с функцией счетчика S_CU, а также параметра CU вместе с функцией счетчика S_CD (должен быть установлен один из параметров CD или CU);
• параметр C_NO должен быть инициирован всегда;
• параметры S и PV, а также параметры Q и CV можно не инициировать.
Для инициализации параметра PV счетчика может быть применено целое число типа INT, как константа.
В специализированных CPU поддерживаются также Iec-функции счетчиков (как системные функциональные блоки SFB):
SFB 0 CTU – функция счетчика прямого счета;
SFB 1 CTD – функция счетчика обратного счета;
SFB 2 CTUD – функция счетчика прямого и обратного счета.
Программирование математических функций
В языке программирования SCL поддерживаются следующие математические функции:
Тригонометрические функции:
SIN функция синуса;
COS функция косинуса;
TAN функция тангенса;
ASIN функция арксинуса;
ACOS функция арккосинуса;
ATAN функция арктангенса.
Логарифмические функции:
EXP экспонентная функция по основанию е;
EXPD экспонентная функция по основанию 10;
LN натуральный логарифм;
LOG десятичный логарифм;
Другие функции:
ABS функция выделения абсолютного значения;
SQR функция нахождения квадрата числа;
SQRT функция взятия квадратного корня.
Математические функции обрабатывают числа форматов INT, DINT и REAL. При использовании входного параметра в формате INT или DINT, число автоматически превратится в формат REAL. Исключение представляет функция ABS, которая выдает результат того же типа, к которому относилось исходное число.
Тригонометрические функции рассматривают входные параметры, как углы, выраженные в радианах, в диапазоне от 0 до 2π (где π = 3,141593e+00), что отвечает диапазону в градусах от 0° до 360°.
Примеры программирования математических функций:
1. Расчет реактивной мощности Reactive_power, которая определяется произведением напряжения Voltage на ток Current и на синус фазового сдвига между ними:
Reactive_power:= Voltage * Current * SIN(ϕ);
2. Расчет объема жидкости Volume, который определяется произведением числа PI на квадрат радиуса основания сосуда Radius и на уровень заполнения сосуды Level:
Volume:= PI * SQR(Radius) * Level;
3. Расчет длины гипотенузы по известным величинам катетов:
c:= SQRT(SQR(a) + SQR(b));
Программирование функций сдвига
Общая форма вызова функций сдвига (Shifting) и циклического сдвига (Rotating) имеет вид:
Result:= Function(IN:= Input_value, N:= Shift_number);
Функции сдвига и циклического сдвига имеют два входных параметра.
Параметр IN определяет переменную, с которой необходимо выполнить операцию сдвига или циклического сдвига. Этот параметр принадлежит к классу ANY_BIT, то есть, к типам BOOL, BYTE, WORD, DWORD. При этом значение функции принадлежит к тому же типу, что и входное значение.
Параметр N показывает число бит, на которое необходимо сделать операцию сдвига или циклического сдвига. Этот параметр принадлежит к типу INT.
К функциям сдвига принадлежат:
SHL – сдвиг влево;
SHR – сдвиг вправо.
К функциям циклического сдвига принадлежат:
ROL – циклический сдвиг влево;
ROR – циклический сдвиг вправо.
Примеры:
MW14:= SHL(IN:= MW12, N:= 2);
res_dword:= ROR(IN:= in_dword, N:= shift_int);
Использование функций преобразования
В языке программирования SCL поддерживаются два типа функций преобразования – неявные и явные.
Неявные функции выполняются в SCL автоматически (неявно), потому что они не связаны с потерей информации. Примером может служить преобразование данных типа BYTE в данные типа WORD.
Явные функции пользователь должен инициировать самостоятельно, явным образом. Примером может служить преобразование данных типа REAL в данные типа INT. Любая потеря информации может быть предупреждена с помощью соответствующего контроля данных или же пользователь может проверять OК-переменную для проверки результатов выполнения операций.
Следует учесть, что при использовании некоторых явных функций преобразования, во-первых, преобразование данных по сути не происходит и не выполняется никакой код, а во-вторых, некоторые из функций преобразования влияют на состояние переменной ОК.
Контрольные вопросы
1. Для решения каких задач применяется язык SCL?
2. Что надо определить для назначения типа данных в SCL-операндов?
3. Какие области данных используются при адресации в языке SCL?
4. Какой тип данных определяет константа?
5. Какой синтаксис применяется для адресации переменных в SCL?
6. Что представляют собой логические выражения в языке SCL?
7. Что представляют собой математические выражения в языке SCL?
8. Как распределяются приоритеты операторов?
9. С помощью каких операторов можно организовать ветвление программы?
10. При каких условиях применяется оператор IF?
11. Какие задачи решаются с использованием оператора CASE?
12. С помощью каких операторов можно организовать циклические процедуры?
13. Какими операторами можно завершить циклические процедуры?
14. Как осуществляется вызов и завершения работы блоков программы?
4 ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ S7-GRAPH
Дата добавления: 2016-12-09; просмотров: 4210;