调试中发现下面一个问题,百思不得其解。
程序段:LDW>= 累积分显示:VW62, +60 //(VW62=64)
MOVW +0, 累积分显示:VW62 //(VW62=0
INCW 累积时显示:VW64 //(VW64=-26935)
MOVW 累积时显示:VW64, 存累积时:MW8 //(MW8=-26935)
程序编程:设备停机后使用时间不会累积。停机后在TD400C文本中发现链接的VW64数据显示在-26935附近不断变化(开机时还正常),分析程序找不到原因,最后连接监控看到VW62=64,不知什么原因?监控到的截屏图见附件。监控显示以上程序段各支路均通路,
上面程序段斜线后括号中为监控到的数据
问题补充:
第1句: LDW>= 累积分显示:VW62, +60 //一直通(VW62=64)
后面结果
第2句: MOVW +0, 累积分显示:VW62 //一直通(VW62=0)
下面
第3句: INCW 累积时显示:VW64 //一直通(VW64=-26935)
第4句: MOVW 累积时显示:VW64, 存累积时:MW8 //一直通(VW64、MW8=-26935)
后两句监控显示VW64、MW8=-26935溢出不难理解,由于第2句清零没有起到作用,导致每个扫描周期加1,VW64、MW8马上会溢出。
现在问题焦点是:为什么第2句明白显示VW62=0已经清零了,但第1句中VW62为什么在第二个扫描周期中没有执行,竟然VW62=64一直接通下去。
个人现在怀疑是不是程序整体结构上其他地方在某种特定条件下对这里有影响。变频器与PLC通讯出现执行结果错误6,即Modbus忙于处理另一个请求:一次只能激活一条MBUS_MSG指令时,程序会不会出现这个样子?
最佳答案
你单独建个项目,只有这几句,使用写入改变一下vw62 的值试试,如果不出现这种情况,我怀疑你的程序中vw62有重叠使用的地方,这交叉引用中查查VW62是不是和其他重叠了
提问者对于答案的评价:
就是地址重叠了!谢谢了
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc349187.html