在 Codesys 中定义数组
Defining Arrays in Codesys
我正在使用 Codesys 创建数组。
下面的示例是我用来为 5 个值创建数组的示例
ARRAY [1..5] OF INT := [1,2,3,4,5];
这对于包含 5 个值的数组来说没问题,但如果我需要一个包含 100 个值的数组?
有没有一种更快的方法来为 100 个值创建一个数组,而不是像下面的示例那样分别输入每个值。
ARRAY [1..100] OF INT :=[1,2,3,4,5,6,7 to 100]
好吧,如果您只想执行最多 100 个元素,并且希望数组的元素按顺序进行,您可以使用此代码在第一次 plc 扫描时初始化数组,而不是在数组声明中初始化.
VAR
SomeArray: ARRAY[1..100] OF INT;
i:INT:=0;
isInitialized:BOOL:=false;
END_VAR
IF NOT isInitialized THEN
FOR i:=1 TO 100 BY 1 DO
SomeArray[i]:=i;
END_FOR;
isInitialized:=TRUE;
END_IF;
如果你想用相同的值初始化一个数组或数组的一部分,你可以使用()-shorthand
ARRAY [1..100] OF INT :=[4(1),3(2),2(3),4]; //Equivalent [1,1,1,1,2,2,2,3,3,4]
在Codesys V3或TwinCat 3中可以使用FB_init方法编写初始化代码。 FB_init 所有声明的 FB 实例的方法将在正常循环任务执行开始之前在启动时被调用。
你可以这样使用它:
METHOD FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start)
bInCopyCode : BOOL; // if TRUE, the instance afterwards gets moved into the copy code (online change)
END_VAR
VAR
unCount : UINT;
END_VAR
FOR unCount := 1 TO 100 DO
arrnInitExample[unCount]:= unCount;
END_FOR
注意:FB_init 方法的前两个布尔输入必须始终相同。但是你也可以在之后添加额外的输入变量。然后,您可以在 FB 实例的声明中将自定义参数传递给该方法。
我正在使用 Codesys 创建数组。
下面的示例是我用来为 5 个值创建数组的示例
ARRAY [1..5] OF INT := [1,2,3,4,5];
这对于包含 5 个值的数组来说没问题,但如果我需要一个包含 100 个值的数组?
有没有一种更快的方法来为 100 个值创建一个数组,而不是像下面的示例那样分别输入每个值。
ARRAY [1..100] OF INT :=[1,2,3,4,5,6,7 to 100]
好吧,如果您只想执行最多 100 个元素,并且希望数组的元素按顺序进行,您可以使用此代码在第一次 plc 扫描时初始化数组,而不是在数组声明中初始化.
VAR
SomeArray: ARRAY[1..100] OF INT;
i:INT:=0;
isInitialized:BOOL:=false;
END_VAR
IF NOT isInitialized THEN
FOR i:=1 TO 100 BY 1 DO
SomeArray[i]:=i;
END_FOR;
isInitialized:=TRUE;
END_IF;
如果你想用相同的值初始化一个数组或数组的一部分,你可以使用()-shorthand
ARRAY [1..100] OF INT :=[4(1),3(2),2(3),4]; //Equivalent [1,1,1,1,2,2,2,3,3,4]
在Codesys V3或TwinCat 3中可以使用FB_init方法编写初始化代码。 FB_init 所有声明的 FB 实例的方法将在正常循环任务执行开始之前在启动时被调用。
你可以这样使用它:
METHOD FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start)
bInCopyCode : BOOL; // if TRUE, the instance afterwards gets moved into the copy code (online change)
END_VAR
VAR
unCount : UINT;
END_VAR
FOR unCount := 1 TO 100 DO
arrnInitExample[unCount]:= unCount;
END_FOR
注意:FB_init 方法的前两个布尔输入必须始终相同。但是你也可以在之后添加额外的输入变量。然后,您可以在 FB 实例的声明中将自定义参数传递给该方法。