0

如何使用 TRUE 在结构化文本 (Twincat 2) 中初始化布尔数组?

例如像这样:

VAR

    a_referenz_array : ARRAY[0..2] OF BOOL := TRUE, FALSE ; (* This does not work !! *)

END_VAR
4

3 回答 3

0

Google/Beckhoff infosys 是您的朋友。谷歌“阵列 TwinCAT”: https ://infosys.beckhoff.com/english.php?content=../content/1033/tcplccontrol/html/TcPlcCtrl_ARRAY.htm&id=

在 TwinCAT2 中: arr1 : ARRAY [1..2] OF BOOL := TRUE,FALSE;

TwinCAT3:arr1:ARRAY [1..2] OF BOOL := [TRUE,FALSE];

编辑,应该更正确地检查你的问题。这适用于 TwinCAT3,显然不适用于 TwinCAT2 :-)

于 2019-09-06T13:02:10.197 回答
0

您的代码将按预期工作,我在 TC2 中对其进行了测试。但是有几个问题可能会在测试时混淆......

  • 您的数组的大小为 3 个布尔值,但您只初始化 2。这意味着只有索引 0 和 1 将被初始化,并且取决于您的代码的其余部分,您可能会发现它与否。
  • 阵列只会在 PLC 重置后初始化,因此更改代码、重新编译和在线监控可能根本没有任何效果。您应该向 PLC 发送复位命令,然后重新运行程序。
  • 我的 TC2 版本是 2.11.2301 ......这是一个很长的镜头,但如果你的版本很老,那也可能是原因。

你的代码:

VAR
    a_referenz_array : ARRAY[0..2] OF BOOL := TRUE, FALSE ;
END_VAR
于 2019-09-11T15:25:33.343 回答
0

您可以在初始化部分使用 FOR 循环(它在启动 PLC 时实现一次):

FOR I:=0 TO 2 DO
   a_referenz_array[I]:=TRUE;
END_FOR
于 2019-09-06T12:09:32.277 回答