【问题标题】:Twincat 3 how to declare variableTwincat 3 如何声明变量
【发布时间】:2020-01-10 17:10:39
【问题描述】:

我正在尝试将一些代码行从 siemens scl 转换为 twincat 3,我发现自己在下面解释的一些事情上遇到了困难:

这是我要理解的代码:

VAR_INPUT
  in_00 : BOOL ;
  in_00_b AT in_00 : ARRAY[0..0] OF BOOL;   
  in_01 : BOOL ;   
  in_02 : BOOL ;   
  in_03 : BOOL ;   
  in_04 : BOOL ;   
  in_05 : BOOL ;   
  in_06 : BOOL ;   
  in_07 : BOOL ;   
  in_08 : BOOL ;   
  in_09 : BOOL ;   
  in_10 : BOOL ;   
END_VAR

VAR_OUTPUT
  out_00 : BOOL ; 
  out_00_b AT out_00 : ARRAY[0..0] OF BOOL;   
  out_01 : BOOL ;   
  out_02 : BOOL ;   
  out_03 : BOOL ;   
  out_04 : BOOL ;   
  out_05 : BOOL ;   
  out_06 : BOOL ;   
  out_07 : BOOL ;   
  out_08 : BOOL ;   
  out_09 : BOOL ;   
  out_10 : BOOL ;   
END_VAR

VAR_TEMP
  i : INT; 
END_VAR

    FOR i:=0 TO 10 BY 1 DO       
        out_00_b[i]:=in_00_b[i];         
    END_FOR;

我怎样才能像例子一样在同一个地址声明这个数组?

提前致谢。

【问题讨论】:

  • 硬编码内存地址在 TwinCAT 编程中很少见。 AT 关键字通常只用于将变量映射到 IO。您能否提供更多详细信息,说明为什么要将数组放在同一地址?

标签: arrays twincat


【解决方案1】:

我认为您可以执行以下操作。因为我认为你没有正确地声明你的数组,所以代码应该是这样的:

实际上,您可以一次复制所有数组,而不仅仅是逐个元素。

VAR_INPUT
  in_00 : BOOL ;
  in_00_b AT %I* : ARRAY[0..10] OF BOOL;   
  in_01 : BOOL ;   
  in_02 : BOOL ;   
  in_03 : BOOL ;   
  in_04 : BOOL ;   
  in_05 : BOOL ;   
  in_06 : BOOL ;   
  in_07 : BOOL ;   
  in_08 : BOOL ;   
  in_09 : BOOL ;   
  in_10 : BOOL ;   
END_VAR

VAR_OUTPUT
  out_00 : BOOL ; 
  out_00_b AT %Q* : ARRAY[0..10] OF BOOL;   
  out_01 : BOOL ;   
  out_02 : BOOL ;   
  out_03 : BOOL ;   
  out_04 : BOOL ;   
  out_05 : BOOL ;   
  out_06 : BOOL ;   
  out_07 : BOOL ;   
  out_08 : BOOL ;   
  out_09 : BOOL ;   
  out_10 : BOOL ;   
END_VAR

VAR_TEMP
  i : INT; 
END_VAR

    FOR i:=0 TO 10 BY 1 DO       
        out_00_b[i]:=in_00_b[i];         
    END_FOR;
out_00_b = in_00_b; I think this is more efficient.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多