S7-200传送给S7-300 15个地址(要显示15个温度,15个水压,15个气压的值),200的程序是每隔一秒把这个15个地址分别换为温度、水压和气压。
我现在WINCC要分别显示这45个数据(即45个DB地址),我wincc里或是S7-300的程序里该怎么处理啊。
最佳答案
我wincc里或是S7-300的程序里该怎么处理啊?
1、硬件组态中已将S7-200与S7-300地址定义了对应的关系(即地址映射)。
2、在WINCC与S7-300中为了便于应用,可将这些传送的数据存入DB(数据块),在编程时就体会到十分分别。
3、传送到DB实例:
可以应用循环语句。例如S7-200对应S7-300地址为PIW128开始的15个字,PIW168开始的15个字分别送人DB10、DB20:
. 将PIW128-开始,共:15个字送入DB10中
在OB1:
OPN DB 10 //打开DB 10
L P#128.0 //初始读指针
LAR1
L P#0.0 //初始写指针
LAR2
CALL FC 100
2. 将PIW168- 开始,共15个字送入DB20中
OPN DB 20 //打开DB 20
L P#168.0 //初始读指针
LAR1
L P#0.0 //初始写指针
LAR2
CALL FC 100
建立一FC块:
在FC100:
L 15 // 15个字的循环计数为初值
M001: T MB 10 //计数值 送入MB 10
L PIW [AR1,P#0.0] //按读指针指示的地址读数据
T DBW [AR2,P#0.0] //按写指针指示的地址写数据
+AR1 P#2.0 //读指针指向下一数据地址
+AR2 P#2.0 //写指针指向下一数据地址
L MB 10 //取循环计数值
LOOP M001 //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。
注:
1. L P#128.0 语句中的128.0是个表示地址的常数,可按需要设值.
2. L 15 语句中的15是个常数,可按需要设值.
3. L PIW [AR1,P#0.0] 语句即为从PIW取数,如写为L IW [AR1,P#0.0] 即为从IW取数。
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc248380.html