PLC-ST: Как инициализировать структуру в объявлении?
Согласно PLCOpen, стандарту IEC-61131, возможно ли инициализировать структуру в декларации?
Я думаю о чем-то вроде этого вопроса C++.
2 ответа
Вы привели пример C++, где они определяют struct
в функции. Эквивалентный компонент в IEC61131
будет function block
, Вы можете инициализировать struct
в функциональном блоке
FUNCTION_BLOCK SampleFunctionBlock
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
internalBlockStruct:SampleStruct:=(One:=1,Two:=2,Three:=3);
END_VAR
а затем использовать это struct
в коде функционального блока. Вы также можете инициализировать struct
в pou
если вы хотите, следуя тому же синтаксису.
для справки это моя структура
TYPE SampleStruct :
STRUCT
One:INT;
Two:INT;
Three:INT;
END_STRUCT
END_TYPE
примечание: пример, который я привел, использует синтаксис Codesys. Большинство языков IEC61131 имеют очень похожий синтаксис.
Вы можете добавить значения по умолчанию в структурные переменные при объявлении структуры. Вы также можете инициализировать переменные с разными значениями при объявлении переменной.
TYPE ST_Test :
STRUCT
One : INT := 123;
Two : REAL := 4567.5;
Three : STRING := 'Hello';
END_STRUCT
END_TYPE
В каком-то блоке:
VAR
//Original default values
TestOriginalValues : ST_Test;
//Own initialization values
TestOtherValues : ST_Test := (One:=555, Two:=678.5, Three:='Whats up');
END_VAR