西门子S7 200 两个口都进行MODBUS通讯问题

S7-200PLC CPU226 CN,PORT1做主站,采用SM0.
5触发,从另外一个MODBUS仪表上读取数据,经过换算后,由PORT0做MODBUS从站,被GPRS读取换算结果。测试采用MODSCAN软件从PORT0读取到计算机,发现有3%的数据是失败的,怀疑485转换器故障,更换后故障依旧,怀疑程序有问题,停止PORT1向MODBUS仪表采集数据,故障排除,MODSCAN与PLC通讯完全正常,遂将SM0.5调整为SM0.4进行触发采集仪表数据,在用MODSCAN测试,发现故障率存在,但基本在0.4%,因此怀疑是S7 200 CPU226的两个口在分别进行MODBUS主、从数据任务时程序有问题,做了很多工作都没有效果,请教大家,看看有没有好办法@!
另:反复排查过,库存储区与在用V地址并无冲突
均为MODBUS RTU格式

S7-200中的MODBUS通讯协议实际上是用了其自由口协议来实现,因此,端口上的报文接收都要用到SMB2这个系统寄存器。双口MODBUS在原生西门子S7-200PLC的CPU上是不可能实现的。

解决办法:

  1. 选择兼容品牌的CPU,某些产品具有双自由口,可以实现第二通道MODBUS,程序轻微修改;

  2. 选择兼容品牌的扩展模块,某雀粗握些产品可以扩展第二个口,可以实现第二通道MODBUS,程序轻微修改;

  3. 升级至200SMART并扩展SB通讯信号板(程序轻微修改),甚至是1200(需重写);

  4. 跳出一定要双口MODBUS RTU的方案,则可以其中一个口用PPI、扩展模块EM277走凳高DP或MPI、扩顷庆展模块CP243走以太网S7协议、扩展兼容以太网模块走以太网S7协议或MODBUS TCP/IP模块,都是一些解决上述问题的对策。