跳到主要内容

7.11.1 复制数组元素

功能

COPY称为复制数组元素,可将存储区(原范围)的数据移动到另一个存储区(目标范围)中。使用COUNT可以指定将移动到目标范围中的元素个数。待移动元素的宽度是源区域中第一个元素的宽度决定。

LD图形

alt text

参数说明

接口变量声明数据类型说明
COUNTVar_InputUDINT元素个数
SOURCEvar_IN_OUTAny_element但不含STRING待复制数组的起始元素
DESTvar_IN_OUTAny_element但不含STRING原范围内容要复制到的目标范围中的首个元素
函数名称返回值BOOL返回指令状态,TRUE代表指令正确执行,FALSE代表指令执行错误

对应语法

  • COUNT:复制的元素个数
  • SOURCE:源存储区
  • DEST:目标存储区

示例

  • LD示例图片如下图所示: alt text
  • ST示例如下代码所示:
r:=COPY(COUNT:=1,SOURCE:=sarr[0],DEST:=darr[5]);
信息
  • COPY_UB和COPY的区别是,COPY_UB函数能防止数据在复制操作过程中被更改,即COPY_UB函数执行过程中,不可以被其他高优先级用户TASK中断。而COPY没有限制。
  • 函数调用时,仅当源变量(SOURCE)和目标变量(DEST)数据类型完全相同(不支持隐性转换),且SOURCE,DEST实参只能是数组成员变量时,才能执行该指令(否则编译报错)。COUNT表示待复制的数组成员数量。
  • 如果根据源数组的起始元素(SOURCE),COUNT超出了源数组元素数量,或者根据目标数组的起始元素(DEST),COUNT超出了目标数组元素数量,返回值(函数名)将复位为FALSE,且数据不被复制。