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
Другие вопросы по тегам