数据块的移动

S7-1200中,MOVE_BLK指令只能针对Array 进行操作。 假如我有一个数组数据 Array[0].Array[1] 到Array[99],这100个Real 要移动到 MD0、MD4、MD396。 或者是要将数据 MB0-MB99移动到MB100-MB199. 像这种情况该用哪个指令,怎么操作!  谢谢!

最佳答案

POKE_BLK:写入存储区 S7-1200, S7-1500    
词汇表 
输入 SCL 指令 
编辑 SCL 指令 
有效数据类型概述 
存储区 
说明

“写入存储区”指令用于在不指定数据类型的情况下将存储区内容复制到另一个存储区。

如果在 AREA 参数中指定数据块的 16#84 区域,则只能通过块属性“标准”访问数据块。

说明 
该指令仅用于访问“标准”存储区。
 

语法

“写入存储区”指令的语法如下所示:

SCL 将以下程序代码复制到剪贴板。
 
POKE_BLK(AREA_SRC:= <操作数>,

         DBNUMBER_SRC:= <操作数>,

         BYTEOFFSET_SRC:= <操作数>,

         AREA_DEST:= <操作数>,

         DBNUMBER_DEST:= <操作数>,

         BYTEOFFSET_DEST:= <操作数>,

         COUNT := <操作数>)
 
clipboard
该指令的语法由以下部分组成:

参数
 声明
 数据类型
 存储区
 说明
 
AREA_SRC
 Input
 BYTE
 I、Q、M、D、L
 可以在源存储区中选择以下区域:

16#81: Input

16#82: Output

16#83: 位存储区

16#84: DB
 
DBNUMBER_SRC
 Input
 DINT, DB_ANY
 D
 如果 AREA = DB,则为源存储区中的数据块数量,否则为“0”
 
BYTEOFFSET_SRC
 Input
 DINT
 I、Q、M、D、L
 源存储区中待写入的地址

仅使用 16 个最低有效位。
 
AREA_DEST
 Input
 BYTE
 I、Q、M、D、L
 可以在目的存储区中选择以下区域:

16#81: Input

16#82: Output

16#83: 位存储区

16#84: DB
 
DBNUMBER_DEST
 Input
 DINT, DB_ANY
 D
 如果 AREA = DB,则为目的存储区中的数据块数量,否则为“0”
 
BYTEOFFSET_DEST
 Input
 DINT
 I、Q、M、D、L
 目的存储区中待写入的地址

仅使用 16 个最低有效位。
 
COUNT
 Input
 DINT
 I、Q、M、D、L
 已复制的字节数目
 

有关有效数据类型的更多信息,请参见“另请参见”。

说明
如果要将存储地址写入输入、输出或位存储区,则必须将参数 DBNUMBER 的值设置为“0”,否则指令将无效。
 

示例

以下示例说明了该指令的工作原理:

SCL 将以下程序代码复制到剪贴板。
 
POKE_BLK(AREA_SRC := "Tag_Source_Area",

         DBNUMBER_SRC := "Tag_Source_DBNumber",

         BYTEOFFSET_SRC := "Tag_Source_Byte"),

         AREA_DEST := "Tag_Destination_Area",

         DBNUMBER_DEST := "Tag_Destination_DBNumber",

         BYTEOFFSET_DEST := "Tag_Destination_Byte",

         COUNT := "Tag_Count");
 
clipboard
下表将通过具体的操作数值对该指令的工作原理进行说明:

参数
 操作数
 值
 
AREA_SRC
 Tag_Source_Area
 16#84
 
DBNUMBER_SRC
 Tag_Source_DBNumber
 5
 
BYTEOFFSET_SRC
 Tag_Source_Byte
 20
 
AREA_DEST
 Tag_Destination_Area
 16#83
 
DBNUMBER_DEST
 Tag_Destination_DBNumber
 0
 
BYTEOFFSET_DEST
 Tag_Destination_Byte
 30
 
COUNT
 Tag_Count
 100
 

该指令将数据块“5”中从地址“20”开始的 100 个字节写入位存储器中从地址“30”开始的存储区内。

提问者对于答案的评价:
谢谢! 用POKE 指令解决!

专家置评

已阅,最佳答案正确。
POKE 指令或者MOVE_BLK_VARIANT指令

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc150471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月4日 上午7:54
下一篇 2017年6月4日 上午7:55

相关推荐