西门子PLC-移动操作MOVE


一、移动操作常用指令功能说明

1、MOVE移动值指令

1.1基本数据类型:64bits之内位序列、整数、浮点数、定时器、日期时间、字符等按表格传输即可。

1.2复制UDT、数组,要求当输入IN和输出OUT1中的操作数的数组元素位为同一数据类型时,才可以复制整个数组,

建议:

1.1、建议传送源IN 和传送目标OUT的数据类型相对应,且位长度一致。

1.2、如果传送源IN 数据类型位长度>传送目标OUT数据类型位长度,则源值高位数据丢失。

1.3、如果传送源IN 数据类型位长度<传送目标OUT 数据类型位长度,则目标值高位数据改写为“0”。

1.4、如果传送源IN 数据类型为DTL、STRUCT、ARRAY、UDT或者字符串中的字符,则无法扩展指令框。

面临问题,两个同样数组传输没问题,但输入数组从1-5,而输出数组从2-6,MOVE指令就不可以用了,需要用到MOVE—BLK块移动指令

2、MOVE—BLK块移动指令

2.1传送源IN和传送目标OUT的数据类型只能为数组元素(ARRAY OF DATA_TYPE)

2.2传输源IN和传送目标OUT数组元素的数据类型(DATA_TYPE)必须完全相同

2.3数组元素的数据类型(DATA_TYPE)只能使用下表指定的类型

2.4既可以用于数组的整体复制,也可以用于复制数组内的部分元素

面临问题:数据类型不是指定的复制不了,如UDT类型,就要用到下一个指令。

3MOVE_BLK_VARIANT“移动块”指令的使用

3.1用于从源区域向目标区域复制1个或多个结构类型元素(Struct、PLC data types)

3.2.SRC、DEST的数据类型为VARIANT(类似于指针),CPU运行过程中通过对实参的引用获知实际数据类型。

3.3.如果SRC、DEST参数未指向数组或仅指定数组的某个元素,则相应的INDEX参数必须赋值为“0”,且COUNT参数的值设定为“1"。

3.4无论后期如何声明该 ARRAY,参数 SRC INDEX和 DEST INDEX 始终从下限“0“开始计数。

4、VARIANT 数据类型

4.1VARIANT 数据类型的“参数”是一个指针或引用,只能在程序块接口区的Input、InOut、Temp中声明并使用。用于S7-120011500 PLC的间接寻址。

4.2VARIANT 指针指定的数据类型可以是基本数据类型,也可以是复杂数据类型,或者STRUCT、UDT类型的数组。在运行过程中VARIANT指针可以识别结构,并指向各个结构元素。

4.3VARIANT指针包含以下实际参数信息:指向元素的数据类型、ARRAY 元素的数量、ARRAY元素的数据类型

5、FILL BLK“填充块”指令的使用




注意事项:用于初始化或者填充目标区域(ARRAY、STRUCT、PLC data types)内的元素,且目标结构内的元素类型必须完全相同。

二、移动指令建议

1、单个基本类型元素复制 -MOVE 指令

2、整体复杂类型(UDT、数组等)复制 -MOVE 指令

3、基本数据类型“数组”内的部分元素复制 -MOVE BLK

4、复杂数据类型“数组”内的部分元素复制 -MOVE BLK VARIANT

5、基本数据类型“数组”内的元素初始化或填充 -FILL BLK

6、复杂数据类型“数组”内的元素初始化或填充 -MOVE BLK VARIANT

原文链接:,转发请注明来源!