Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 2. Методы программирования контроллеров.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.66 Mб
Скачать

2.11.2. Определение интерфейса программных модулей

Параметры функциональных блоков:

  • может иметь много выходных параметров;

  • имеет всего максимум 32 параметра;

  • каждая копия (экземпляр) библиотечного блока (ссылка) должна иметь уникальное имя.

Параметры функций:

  • имеет только один выходной параметр;

  • может иметь до 31 параметра вызова;

  • всегда возвращает одно значение, имеющее то же самое имя, что и собственно функция.

Функции и подпрограммы всегда имеет один (и только один) выходной параметр, который должен иметь то же самое имя, как и функция, чтобы соответствовать соглашению языка “Си”.

Подпрограммы-потомки, написанные с использованием языка SFC, не имеют ни входных, ни выходных параметров.

Параметры возврата подпрограмм и функций

ST: параметр возврата использует то же имя, как и название подпрограммы или функции

subprog_name:=<выражение>;

IL: параметр возврата в конце вычислений должен содержаться в аккумуляторе

LD 10 ADD 20 (* величина параметра возврата = 30 *)

F BD: используется имя переменной с именем параметра возврата

L D: используется символ обмотки с именем параметра возврата

Примечание: переменную с именем параметра возврата (subprog_name) не нужно объявлять в словаре.

2.11.3. Словарь локальных переменных

Все типы программных модулей могут иметь локальные переменные.

Библиотечная функция или функциональный блок не могут обращаться к глобальным переменным. Начальные значения локальной переменной функции должны быть инициализированы в теле функции.

Локальные переменные функций и подпрограмм уничтожаются по завершении работы подпрограммы.

Локальные переменные функционального блока, написанного на языке МЭК, во время исполнения программы копируются для каждого блока, используемого в проекте. При выполнении блока в программе, фактически выполняется один и тот же код, но используемые данные (переменные) уникальны для каждого блока. Значения переменных блока сохраняются от одного цикла работы контроллера до другого.

2.11.4. Вызов программного модуля

2.11.4.1. Вызов функций и подпрограмм

ST:

<переменная>:=<имя подпрограммы>(<par1>, ..., <parN>);

Вызывает подпрограмму <имя подпрограммы> на языке ST, IL, LD или FBD со списком параметров <par1>, ..., <parN> и получает возвращаемое ею значение. Тип возвращаемого значения и параметров вызова должен соответствовать интерфейсу, определенному для подпрограммы.

Вызовы подпрограмм могут использоваться в любом выражении. Например: Y:=2*SubProgamm(x1,x2)+3;

IL:

При вызове подпрограммы первый параметр вызова должен находиться в аккумуляторе. Следующие параметры находятся в поле операнда и разделяются запятыми. Значение, возвращаемое подпрограммой, находится в аккумуляторе IL.

LD x1

CAL SubProgramm,x2

SFC:

Подпрограммы (написанные на языке ST, IL, LD или FBD) могут быть вызваны непосредственно из блока SFC-действий с использованием следующего синтаксиса:

ACTION(P); ACTION(N);

<результат>:=<подпрограмма>(); <результат>:=<подпрограмма>();

END_ACTION; END_ACTION;

Для вычисления условия, прикреплённого к переходу, может быть вызвана любая подпрограмма (написанная на языке FBD, LD, ST или IL). При этом результат вычисления выражения с использование подпрограммы должен быть булевым. Если функция имеет возвращаемое значение, отличное от булевого, то необходимо применять операции отношения (=, <, > и др.).

Например: (2*Podprog(x1,x2)+3)>10; или (2*Podprog(x1,x2)+3)=1;

FBD/LD:

При использовании функций в языках FBD/LD они автоматически появятся в поле выбора типа добавляемого в диаграмму блока наравне со стандартными блоками.