背景:
1、CPU 315PN/DP 通过PROFINET与外部设备通讯,需要交互200个字节的数据;
2、对于PLC来将,该设备是外部设备,硬件组态分配的地址为PQW1000-PQW1199;
3、准备通过SFC20指令实现DB块数据传向PQW1000-PQW1199,但SFC20不支持直接向外部PQ传输数据,于是决定先把DB数据传输给QW1000-QW1199,然后再将QW1000-QW1199传给PQW1000-PQW1199;
4、作者编写了如下程序,数据也能传输了,但CPU的SF灯会亮,因为QW肯定超出了PLC系统的地址范围了。
问题:
1.有没有不通过SFC20,然后实现DB至PQW的数据传输的例程??
2.如果继续使用SFC20,有没有办法消除SF灯亮?
附录PLC程序:
第一段:
L P#1000.0 //初始读指针
LAR1
L P#1000.0 //初始写指针
LAR2
第二段:
L 200 // 200个字节传输,完成任意长度的循环
M001: T MB 1000 //计数值 送入MB 1000
L QW [AR1,P#0.0] //按读指针指示的地址读数据
T PQW [AR2,P#0.0]
+AR1 P#2.0 //读指针指向下一数据地址
+AR2 P#2.0 //写指针指向下一数据地址
L MB 1000 //取循环计数值
LOOP M001
第三段:
CALL "BLKMOV"
SRCBLK :=P#DB800.DBX2.0 BYTE 180
RET_VAL:=MW20
DSTBLK :=P#Q 1000.0 BYTE 180
NOP 0