Особенности программирования 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; просмотров: 3993;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.014 сек.