我只用一条链接,Client_0的指令通讯没问题,用多条就连接不上。我是分别写了四个子程序,单独调用其他的几条显示网络连接上了,但是读、写指令的Done位为0,调用子程序的顺序Client_0在第一个的时候0能通讯成功,其他的不行,0不在第一个显示正在进行其他操作,错误码16
问题补充:
我修改了ConnID数值以后,调用两条链接都显示连接成功但是轮询的标志位只有轮询到该从站时才为0,其他时候报3和111错误代码,111错误代码没查到,原来MB_Client0还能全部正常(修改完ConnID),昨天晚上也还行。现在也不行了,只调用一条链接也不行。数据能读上来但是实时性不好,不准。如果升级成V2.4,2.4只有MBUS_CLENTY一个指令,能使用多条链接吗?同一个IP地址我想把对从站的读跟写分开,也就是用两条链接,这两条链接之间还需要轮询吗?
小弟刚毕业,一人在外调试,恳请诸位前辈帮助!
图片说明:
最佳答案
STEP7-Micro/WIN SMART 从V2.4 版本开始,软件中直接集成 Modbus TCP 库指令。
你所使用的V2.3版,属于自行添加的库,曾有多个版本,功能各有不同,需要仔细研究。建议升级软件。
建立多个连接,不同连接之间,可以并行操作,因为占用的通信资源不同;但建立一个连接,进行多个操作(读、写),不同操作之间需要进行轮询,同一时刻只能有一个操作在进行。
针对问题补充:
MBC_Connect仅仅用于建立客户端与服务器的连接,不同IP的客户端,必须使用不同的库(MBC_Connect_0、MBC_Connect_1、MBC_Connect_2)建立连接,这并不需要轮询。需要轮询的是MBC_MSG指令,同一时刻只能有一条MBC_MSG指令使能(EN必须一直接通直到该指令的Done位被置1)
而对于V2.4版的软件,Modbus TCP客户端库指令只有MBUS_CLIENT一条指令,多个客户端连接必须具有不同的 IPAddr 或 IP_Port 输入参数。对于同一个连接,读或者写不同参数,则需要改变参数RW、Addr、DataPtr等参数,只调用一次而不是使用多条MBUS_CLIENT轮询。
可以参考:新版S7-200Smart系统手册,第9.4.4节
https://support.industry.siemens.com/cs/cn/zh/view/109745610
出现通信问题,请仔细查看:指定的库指令使用的库存储器区,与你编写程序占用存储器是否有重叠。确保库存储器区避开你编程占用的区域。
提问者对于答案的评价:
我现在轮询都正常了,就是我下面挂的13个从站有一个从站断电的话就会影响整个轮询,我监控,轮询能正常走下去,但是报3和111错误,我没查到111错误是什么意思,请您指点一下
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc285989.html