PLC通过modbus读取从站多个地址数据,如何转存到其他地址?

①从站仪表1,PLC读取从站6个地址数据,40001~40006的数据读取到vw1000~vw1010中;
     vw1000~vw1010的数据再转存到vw0~vw10中;放到触摸屏上显示;
②从站仪表2,PLC读取从站6个地址数据,40001~40006的数据读取到vw1000~vw1010中;
     vw1000~vw1010的数据再转存到vw20~vw30中;放到触摸屏上显示;
③从站仪表3,PLC读取从站6个地址数据,40001~40006的数据读取到vw1000~vw1010中;
     vw1000~vw1010的数据再转存到vw40~vw50中;放到触摸屏上显示;
④如此类推,将从站1~从站6的数据通过vw1000~vw1010作为中转地址转存;
这样中转主要是为了简化程序的步骤编写,从站只需要通过INC+1累加就可以从站自动轮询;

问题:
①跟从从站的站号变化,例如从站=1时,读取从站数据到vw1000~1010后通过“BLMKMOV W”存到vw0~vw10;
    从站=2时,读取从站数据到vw1000~1010后通过“BLMKMOV W”存到vw10~vw20; 如此类推;
   这样编写程序,数据转存会出错,想问数据如何处理?如果不转存,直接在触摸屏上显示vw1000~vw1010的数据是对的;

②我试过用   &vb0 通过mov DW 到vd1000,  这样编写反而能正常显示;
   我觉得这样编写应该是有问题,&vb0指针地址存放到vd1000中, vd1000里面应该只有vd0而已(触摸屏读取vw0以及vw2),vd1004的地址按道理应该还是vd1004,但是在触摸屏上仍能正确显示vw4~vw10的数据,(即vd1004~vd1008存入了vd4~vd8的地址);想问问是什么问题?

最佳答案

用指针编写没有问题的。
200的建立指针只能是&vb?的表示,也可以理解为建立指针是字节(指令必须是32位的),而取指针中的数据可以是字节、字、双字。所以,你建立指针后,可以用16位指令连续取数据(mov_w)指令。
至于触摸屏显示的数据需要根据你定义I/O域的数据长度来确定的。

提问者对于答案的评价:
虽然好像回答的不是很贴切我的问题,但还是谢谢回答

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc366860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论