移动块
功能描述
将一个存储区(源范围)的数据移动到另一个存储区(目标范围)中。
可以将一个完整的 ARRAY 或 ARRAY 的元素复制到另一个相同数据类型的 ARRAY 中。可以复制一个Array内的多个或单个元素,但复制的元素数量不得超过所选源范围或目标范围
可以将此功能块在FB块中使用,然后调用FB的Input接口。指定形参数据类型为Variant。作为此功能块的SRC参数。那么不管实参如何声明,参数 SRC_INDEX 和 DEST_INDEX 始终从下限“0”开始计数。这也是和块移动功能指令的区别之一。块移动不具备此功能。
执行条件
-
. 使能输入 EN 的信号状态不能为“0”。
-
移动的数据量不得超出输入 IN 或输出 OUT 所能容纳的数据量。
接口参数
参数 | 声明 | 数据类型 | 存储区 | 说明 |
---|---|---|---|---|
EN | Input | BOOL | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | I、Q、M、D、L | 使能输出 |
SRC | Input | VARIANT(指向一个 ARRAY 或一个 ARRAY 元素),ARRAY of <数据类型> | L(可在块接口的“Input”、“InOut”和“Temp”部分进行声明。) | 待复制源区域中的源块 |
COUNT | Input | DINT | I、Q、M、D、L 或常量 | 已复制的元素数目 如果参数 SRC 或参数 DEST 中未指定任何 ARRAY,则将参数 COUNT 的值设置为“1”。 |
SRC_INDEX | Input | DINT | I、Q、M、D、L 或常量 | 源范围内容要复制到的目标范围中的首个元素 |
DEST_INDEX | Input | DINT | I、Q、M、D、L 或常量 | 定义了目标存储区的起点。 DEST_INDEX 参数将从 0 开始计算。如果参数 DEST 中指定了 ARRAY,则参数 DEST_INDEX 中的整数将指定待复制目标范围中的第一个元素。而与所声明的 ARRAY 限值无关。 如果参数 DEST 中未指定任何 ARRAY,则将参数 DEST_INDEX 赋值为“0”。 |
DEST | Output | VARIANT | L(可在块接口的“Input”、“InOut”和“Temp”部分进行声明。) | 源块中内容将复制到的目标区域。 |
RET_VAL | Output | INT | I、Q、M、D、L | 错误信息: 如果在该指令执行期间出错,则在参数 RET_VAL 中输出一个错误代码。 |
注意事项
1.DEST 参数在表格中声明为Output类型,但在FB中调用时,需要声明为InOut。
- 参数 SRC 的数据类型不能为 BOOL 和 BOOL 型 ARRAY。不然无法移动数据块
程序举例
将数据块1的数据从第五个数据开始,一共移动10个数据到数据块2,数据块的索引值为20
1.创建DB块,用于数据移动和数据接受
2.创建FB块,并添加接口。然后在OB1中调用。
声明 | 声明 | 数据类型 | 说明 |
---|---|---|---|
IN_Variant | Input | Variant | SRC形参 |
DEST | InOut | Variant | DEST形参 |
Move_BLK_Variant_Ret_Val | Static | INT | 功能块错误代码 |
程序演示
源程序
请使用博图V15查看