请问如何将整个DB块的数据传送至输出区
刘玉蓉
发布于2014-09-18 17:20
5
0
标签:
请问如何将整个DB块的数据传送至PLC的输出区(Q区域)
佳答案
将整个DB块的数据传送至PLC的输出区(Q区域)?
1、方法1:
使用SFC20 “BLKMOV”(块移动)可将存储器区(= 源区域)的内容复制到另一个存储器
区(= 目标区域)。
以下为允许的源区域:
? 部分数据块
? 存储位
? 输入的过程映像分区(部分过程映像)
? 输出的过程映像分区(部分过程映像)
详见:下述文档中3.1 使用SFC20 “BLKMOV”复制存储区域:
<S7-300400的系统软件和标准功能>下载:
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/1023.pdf
2、方法2:
就这个问题而言,输出区(Q区域)不可能太大(一般S7-300才具有128字节,即64个字,等价于32个双字),因此应用一对一传送语句即可,例:
OPN DB 10 //打开DB 10
L DBD0
T QD0//将双字(32位)DBD0(即DBW0,DBW2)送至QD0(即QBW0,QBW2)
L DBD4
T QD4//将双字(32位)DBD4(即DBW4,DBW6)送至QD0(即QBW4,QBW6
.........
可以继续写下去。
3、方法3:
如果传送的数量大,可以应用循环语句,例:
如将 DB 10的20字传送到PLC的输出区(Q区域)相应的地址中:
OPN DB 10 //打开DB 10
L P#128.0 //初始读指针
LAR1
L P#0.0 //初始写指针
LAR2
L 20 // 20个字的循环计数为初值
M001: T MB 10 //计数值 送入MB 10
L DBW [AR1,P#0.0] //按读指针指示的地址读数据
T QBW [AR2,P#0.0] //按写指针指示的地址写数据
+AR1 P#2.0 //读指针指向下一数据地址
+AR2 P#2.0 //写指针指向下一数据地址
L MB 10 //取循环计数值
LOOP M001 //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。