根据 PLCOpen、IEC-61131 标准,是否可以在声明中初始化结构?
我正在考虑与这个 C++ question类似的东西。
您提供的 c++ 示例是他们struct
在函数中定义 a 的地方。中的等效组件IEC61131
是 a function block
。struct
您可以在功能块中初始化 a
FUNCTION_BLOCK SampleFunctionBlock
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
internalBlockStruct:SampleStruct:=(One:=1,Two:=2,Three:=3);
END_VAR
然后struct
在功能块代码中使用它。如果您愿意,也可以按照相同的语法struct
在 a 中初始化 a 。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