7.11.1 复制数组元素
功能
COPY称为复制数组元素,可将存储区(原范围)的数据移动到另一个存储区(目标范围)中。使用COUNT可以指定将移动到目标范围中的元素个数。待移动元素的宽度是源区域中第一个元素的宽度决定。
LD图形
参数说明
接口变量 | 声明 | 数据类型 | 说明 |
---|---|---|---|
COUNT | Var_Input | UDINT | 元素个数 |
SOURCE | var_IN_OUT | Any_element但不含STRING | 待复制数组的起始元素 |
DEST | var_IN_OUT | Any_element但不含STRING | 原范围内容要复制到的目标范围中的首个元素 |
函数名称 | 返回值 | BOOL | 返回指令状态,TRUE代表指令正确执行,FALSE代表指令执行错误 |
对应语法
- COUNT:复制的元素个数
- SOURCE:源存储区
- DEST:目标存储区
示例
- LD示例图片如下图所示:
- 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,且数据不被复制。