OPN #DB_Numer //打开DB
L #StartAdd_PIW
SLD 3 //左移三位,变为指针。
LAR1
L #StarAdd_DB
SLD 3
LAR2
L #Number // N个字的循环计数为初值
M001: T #TEMP1 //计数值 送入 #TEMP1
L PIW [AR1,P#0.0] //按读指针指示的地址读数据
T DBW [AR2,P#0.0] //按写指针指示的地址写数据
+AR1 P#2.0 //读指针指向下一数据地址
+AR2 P#2.0 //写指针指向下一数据地址
L #TEMP1 //取循环计数值
LOOP M001
实现piw的一段值送到指定的DB块内,但是现在DB内部的偏移量上出现了问题,当它等于0、2和 6时,程序没问题,也实现了功能,但是在其它值时,程序报错,变为stop状态,请大家帮助。{火麒麟能看见的话,请帮助谢谢!}
最佳答案
楼主,我用PLCSIM模拟了一下,没出现你所说的问题啊
1:出错时看看诊断缓冲区,PLC----Moudle Information---Diagnostic buffer----open Block,看看诊断信息和哪个语句存在故障?
2:检查下DB块,寻址有没有超出DB区的地址范围?
3:你的这段程序写在FB内还是FC内,FB内的话使用AR2要注意。
给出一段不用地址寄存器AR的程序:在你的FC临时变量内新建2个DINT变量temp2,temp3
OPN #DB_Numer
L #StartAdd_PIW
SLD 3
T #temp2
L #StartAdd_DB
SLD 3
T #temp3
L #Number
next: T #TEMP1
L PIW [#temp2]
T DBW [#temp3]
L #temp2
+ 16
T #temp2
L #temp3
+ 16
T #temp3
L #TEMP1
LOOP next
提问者对于答案的评价:
非常感谢,还是你经验多,如你所说,就是使用了FB的原因,ar2出了问题,放在fc就ok了,新程序放在fb里也没问题
但是不知道为什么ar2会出问题啊!
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc244793.html