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
根据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