两台S7-200SMART 做Modbus通讯,使用端口0,按示例程序编程,主站读取数据正常,但是向从站写数据时发现,从站中对应的寄存器数值没有变化,不知道是哪个地方出问题了,请教专家,十分感谢。编程文件见图片。另外,我编程时发现,如果把从站MBUS_INIT中的HoldStart参数设置为&VB0,主站就无法读取从站数据,如果改成&VB100就好了,不知道是什么原因,也请专家指导,不胜感谢!
问题补充:
我刚才又核对了一下主站和从站的库存储区,应该是没有与指令重合的。主站库存储器是VB2000-VB2285,从站库存储区是VB2000-VB2780.图片如下
图片说明:
最佳答案
把你主站和从站的库存储区分配地址截图出来,看这些地址是否和你程序中使用的地址是否有重叠存在。
补充问题回答:
从你截图从站上看VW100和VW102数据分别是125,876。看你主站读取从站的3个数据放到主站的VW100和VW102里面是125和876,没有错。你从站监控里面VW104没放到状态表里面所以不知道和主站程序里面的VW104是否一样。
图片说明:
提问者对于答案的评价:
我终于搞明白了,我是把Modbus地址与VB存储区的对应关系理解错了,编程软件Modbus RTU示例程中程序传递示例,第一段说VW100对应40001,VW102对应40002...第二段说VW200对应40010,VW202对应40011,这段话说的不对啊!应该是VW118对应40010,VW120对应40011。这样读写都对了。我刚才试了一下都正常了。我编的那个写程序段,把&VB200改成&VB118就好了。这个对应关系好像是不能更改的。
最佳答案作者回复:
对,你现在理解没问题。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc346997.html