Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

Вызовы программных компонентов в LD


В языке программирования LD вызовы дочерних программ, функциональных блоков, функции и стандартных операторов, описанных в разделе "Операторы", идентичны. Для этого они добавляются в редактор, их входные и выходные параметры соединяются линиями связи с соответствующими блоками. Кроме этого, к блокам добавляются дополнительные параметры (ENI-ENO), необходимость их применения описана в разделе "Язык программирования LD - Основной синтаксис - Блоки" настоящего руководства.
Вызов дочерней программы.
Дочерняя программа "child_program" с двумя входными параметрами и одним выходным будет выполнена, когда прямой контакт "var_1" пропустит через себя дискретный сигнал TRUE на вход ENI. После чего дискретный сигнал без изменения будет передан в правую шину питания, а результат выполнения функции записан в переменную "out_1".
Синтаксис на языке ST:
//если переменная var_1 пропускает дискретный сигнал true на вход ENI
//выполняется дочерняя программа
IF var_1 THEN
eni := var_1;
out_1 := child_program(in1, in2);
END_IF;
//на выход ENO передается поступающее на вход ENI значение сигнала
eno := var_1;
 
Вызов функционального блока.
Для примера использован системный функциональный блок "CMP_I". Выполнение блока будет запущено, когда прямой контакт "var_1" пропустит через себя дискретный сигнал TRUE на вход ENI. После чего дискретный сигнал без изменения будет передан в правую шину питания, а на один из выходов блока будет передан дискретный сигнал TRUE, в зависимости от результата сравнения двух входных значений.
Синтаксис на языке ST:
//если переменная var_1 пропускает дискретный сигнал true на вход ENI
IF var_1 THEN
eni := var_1;
CMP_I_1(in1, in2);           //вызывается функциональный блок
less := CMP_I_1.LT;           //считываются выходные параметры блока
equally := CMP_I_1.EQ;  
more := CMP_I_1.GT;     
END_IF;
//на выход ENO передается поступающее на вход ENI значение сигнала
eno := var_1;
Вызов функции.
Пользовательская функция "function_0001" с двумя входными параметрами и одним выходным будет выполнена, когда прямой контакт "var_1" пропустит через себя дискретный сигнал TRUE на вход ENI. После чего дискретный сигнал без изменения будет передан в правую шину питания, а результат выполнения функции записан в переменную "out".
Синтаксис на языке ST:
//если переменная var_1 пропускает дискретный сигнал true на вход ENI
//вызывается функция
IF var_1 THEN
eni := var_1;
out := function_0001(in1, in2);
END_IF;
//на выход ENO передается поступающее на вход ENI значение сигнала
eno := var_1;
 
Выполнение оператора.
Оператор сложения с двумя входными параметрами и одним выходным будет выполнен, когда прямой контакт "var_1" пропустит через себя дискретный сигнал TRUE на вход ENI. После чего дискретный сигнал без изменения будет передан в правую шину питания, а результат выполнения функции записан в переменную "out".
Синтаксис на языке ST:
//если переменная var_1 пропускает дискретный сигнал true на вход ENI
//выполняется сложение
IF var_1 THEN
out := in1 + in2;
END_IF;
//на выход ENO передается поступающее на вход ENI значение сигнала
eno := var_1;