通过以下两种方式,实现 S7-1200 数据区域的移动。
这两个指令在 S7-1200 “基本指令”的“移动” 中,适用编程语言 LAD、FBD和SCL。
MOVE_BLK 用于将数据从一个地址区域移动到另一个地址区域,执行过程可以被高优先级事件中断;UMOVE_BLK 同样可以实现数据从一个地址区域到另一个地址区域的移动,不同的是,该指令执行过程,不允许被中断,在执行 UMOVE_BLK 过程中,如果有高优先级事件发生,要等待指令执行完成后再做处理。UMOVE_BLK 指令通常使用于被移动数据有一致性要求的应用。
指令如下,见图一:
图一 MOVE_BLK 和 UMOVE_BLK 指令
MOVE_BLK 和 UMOVE_BLK 参数:
以 MOVE_BLK 为例说明编程方法:
1、双击“添加新块”生成FC1,见图二
图二
在FC1的接口区,定义数组型输入变 量data-in,做被移动数据;UInt变量 amount 为要移动数据的数量。输出数据 Data-out,为数据移动到的目标地址。
在FC1中调用 MOVE_BLK,如图三:
图三 FC1
2、双击“添加新块”生成 DB 块
在源数据块 DB1 中添加数组 data_in。
图四 DB1
目标数据块 DB2 中添加数组 data_out。
图五 DB2
在OB1 中调用 FC1。
图六 OB1
3、查看执行结果
打开数据块DB1 和 DB2 查看程序执行结果。
图七 执行结果
SCL 编程指令 POKE_BLK 写入存储区域,可以实现输入(I)变量、输出(Q)变量、位寄存器(M)、数据块(DB)做区域数据传送。
POKE_BLK 指令程序格式如下,见图八。
图八 POKE_BLK
源地址区域 area _src、目标地址区域 area _dest 取值范围:
示例一:
用 POKE_BLK 指令实现两个 DB 块的区域写。
在 S7-1200 的项目视图,双击添加新块生成 DB 块 Data_Source 和 Data_Dest。
图九 生成DB块
源数据块 Data_Source 为 DB3,目标数据块 Data_Dest 为 DB4 。
图十
双击添加新块选择SCL语言生成 FC2。
图十一 FC2
在OB1 中调用 FC2。
图十二 OB1
在线查看 DB3 和 DB4。
图十三
示例二:
用 POKE_BLK 指令实现位存储器的区域写。
OB1中调用示例一的FC2:
图十四 OB1
程序执行的结果,MB30 开始的8个字节被传送到 MB100的地址区域内。
使用变量表查看程序执行情况:
图十五 变量表