【问题标题】:How to init bool array with TRUE in ST (Twincat2)?如何在 ST(Twincat2)中使用 TRUE 初始化布尔数组?
【发布时间】:2019-09-12 15:42:49
【问题描述】:

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

例如这样:

VAR

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

END_VAR

【问题讨论】:

    标签: plc twincat structured-text


    【解决方案1】:

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

    FOR I:=0 TO 2 DO
       a_referenz_array[I]:=TRUE;
    END_FOR
    

    【讨论】:

    • 是的,这是我目前使用的解决方案。但是,在声明部分怎么做呢?
    【解决方案2】:

    Google/Beckhoff infosys 是您的朋友。谷歌“阵列双猫”: 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 :-)

    【讨论】:

    • 是的,我在 TwinCat2 中都试过了,但都没有工作。有趣的是,它适用于 TwinCat3。
    【解决方案3】:

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

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

    你的代码:

    VAR
        a_referenz_array : ARRAY[0..2] OF BOOL := TRUE, FALSE ;
    END_VAR
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2015-01-18
      • 2019-01-16
      • 2011-12-26
      • 1970-01-01
      • 2019-04-18
      • 2017-03-21
      相关资源
      最近更新 更多