6.6.1 Общие свойства программных компонентов
6.6.1.1 Общие положения
Программными компонентами (POU), установленными в настоящем стандарте, являются функция, функциональный блок, класс и программа. Функциональные блоки и классы могут содержать методы.
Для достижения модуляризации и структурирования программные компоненты состоят из четко сформулированных частей программы. Программные компоненты имеют определенный интерфейс с входами и выходами и может вызываться и выполняться много раз.
Примечание - Упомянутый выше параметрический интерфейс не совпадает с интерфейсом, определенным в рамках объектно-ориентированного подхода.
Программные компоненты и методы могут поставляться разработчиком или программироваться пользователем.
Ранее объявленный программный компонент может использоваться в объявлении других программных компонентов, как показано на рисунке 3.
Рекурсивные выходы программных компонентов и методы определяются разработчиком.
Максимальное число программных компонентов, методов и экземпляров для данного ресурса определяется разработчиком.
6.6.1.2 Присваивание и выражение
6.6.1.2.1 Общие положения
Языковые конструкции присваивания и выражения используются в текстовых и (частично) графических языках.
6.6.1.2.2 Присваивание
Присваивание используется для записи значения литерала, константы или выражения (см. ниже) другой переменной. Данная переменная может быть переменной любого вида, например, входной или выходной переменной функции, метода, функционального бока и т.д.
Переменные одного типа всегда могут присваиваться. Дополнительно применяются следующие правила:
- переменная или константа типа STRING или WSTRING может быть присвоена другой переменной типа STRING или WSTRING, соответственно. Если исходная строка длиннее, чем целевая строка, результат определяется реализатором;
- переменная типа-диапазона может использоваться везде, где может использоваться переменная базового типа. Если значение типа-диапазона выходит за пределы указанных значений, возникает ошибка;
- переменная производного типа может использоваться везде, где может использоваться переменная ее базового типа.
Дополнительные правила для массивов могут быть определены разработчиком.
Для адаптации типа данных источника к типу данных адресата может использоваться неявное или явное преобразование типа:
a) в текстовой форме (частично применимой и к графическим языкам) оператор присваивания может быть следующим:
который означает, что значение выражения в правой стороне оператора записывается в переменную в левой стороне оператора; или
который означает, что значение в левой стороне оператора записывается в переменную в правой стороне оператора.
Оператор используется только для списка параметров вызова функций, методов, функциональных блоков и т.п. и только для передачи параметра VAR_OUTPUT назад вызывающему объекту.
Пример -
A:= B + C/2;
Func (in1:= A, out2 => x); A_struct1:= B_Struct1;
Примечание - Присваивание определенных пользователем типов данных (STUCTURE, ARRAY) рассматривается в таблице 72;
b) в графической форме: