使用CP341与13台仪表Modbus通讯,与其中有两品牌的仪表通讯不上,读不到数据,使用Modscan与仪表通讯正常,使用S7 200或S7 200smart 或是kepware通讯都没有问题,但是使用CP341和S7 1200 cp卡与这个品牌的仪表通讯就读不上来数据,折腾了几个月了,在1200中使用点到点通讯没有问题,在同一条线上别的仪表都能通讯上,唯独两个小品牌的PLC通不上。最后只能通过S7 200 plc通讯,再通过TCP通讯写入S7300 plc中。
在技术问答中没有找到合适的答案,推断是仪表通讯协议不符合Modbus通讯规范。后来在网上找了一个免狗的Modbus通讯程序,通过程序观察,其实是收到了数,只是数据都存在了第一个字节里,不断地覆盖,最后应该也不符合CRC校验,所以没有更新数据。
在网上找到一篇文章按照Modbus通讯规范,Modbus ASCII通讯时要求每个字符的发送间隔时间要求>3.5个字符周期,而Modbus RTU中要求每个字符的间隔周期要小于1.5个字符周期,问题可能就处在仪表发送的数据字符间隔周期太短了,发现可以通过CP341中的通讯参数进行修改。