如何在TwinCAT中将新变量赋值给数组
在TwinCAT中,可以直接初始化数组的所有参数,例如,对于数组a,我们可以使用:
a: INT := 3(0)的数组1.3;
或
a:数组1.3的INT := 0,0,0;
但是,如果您想在主程序中分配数组(而不是初始化部分),例如
a:=2,8,5;
您将面临以下错误提示:Unexpected array initialisation。

任何帮助都将不胜感激。
发布于 2022-07-06 13:56:03
不能直接初始化程序部件内的数组。
也就是说,最好的选择是定义一个包含所需初始化值的常量,然后将该常数的值分配给您的数组:
VAR
aiMyArray : ARRAY [1..2] OF INT;
END_VAR
VAR CONSTANT
aiInitializerMyArrayOptionA : ARRAY [1..2] OF INT := [1,2];
aiInitializerMyArrayOptionB : ARRAY [1..2] OF INT := [3,4];
END_VARIF bCondition THEN
aiMyArray := aiInitializerMyArrayOptionA;
ELSE
aiMyArray := aiInitializerMyArrayOptionB;
END_IF另一种选择是手动初始化每个索引,然后一个接一个地初始化,这很容易得到不实际的数组大小:
IF bCondition THEN
aiMyArray[1] := 1;
aiMyArray[2] := 2;
ELSE
aiMyArray[1] := 3;
aiMyArray[2] := 4;
END_IF循环处理所有元素和赋值也可能是一种选择。但是,只有当这些值不是任意的constatns,但您可以从某些公式中计算值时,这才是有用的。
https://stackoverflow.com/questions/67997321
复制相似问题