①从站仪表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