我正在使用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]发布于 2016-01-06 22:42:06
好吧,如果你只想做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;发布于 2016-01-08 00:11:55
如果要使用相同的值初始化数组或数组的一部分,则可以使用()-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实例的FB_init方法将在正常循环任务开始执行之前在启动时被调用。
你可以这样使用它:
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_VARFOR unCount := 1 TO 100 DO
arrnInitExample[unCount]:= unCount;
END_FOR注意: FB_init方法的前两个布尔值输入必须始终相同。但您也可以在之后添加额外的输入变量。然后,您可以在声明FB实例时将自定义参数传递给该方法。
https://stackoverflow.com/questions/34634574
复制相似问题