PLC-ST:如何在声明中初始化结构?

PLC-ST: How to initialize a structure in declaration?

根据PLCOpen,IEC-61131标准,是否可以在声明中初始化结构?

我正在考虑 this C++ question

您提供的 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。如果您愿意,也可以按照相同的语法在 pou 中初始化 struct

作为参考,这是我的结构

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