0

我正在尝试将一些代码行从 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;

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

提前致谢。

4

1 回答 1

0

我认为您可以执行以下操作。因为我认为您没有正确声明数组,所以代码应如下所示:

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

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.
于 2020-01-10T09:10:39.477 回答