我在Modbus TCP/IP中遇到了一个奇怪的问题。我知道Modbus系列不支持多主机。但是当我看到一些文档时,他们说Modbus TCP支持多主机。
我组成了三个tcp客户端作为Modbus TCP主服务器和一个服务器作为Modbus TCP从站。每个Modbus TCP主请求Modbus TCP从服务器每2秒定期获取数据。并采用Modbus协议栈作为主设备,由三角MicroWorks制作。
我希望每一位主人都能从奴隶那里接收数据,但实际上,只有一位主人能很好地与奴隶沟通,而其他的主人却无法接收数据。他们只收到返回状态"3",意思是"MBCHNL_RESP_STATUS_CANCELED“。
在这个作文里,这种行为对吗?我想知道堆栈是否不能支持“多主/多个相同的请求”,或者还有其他方式来表现多主。
发布于 2017-06-21 08:20:14
我找到了这个问题的答案。总之,主人太快了,奴隶频道忙得不可开交。我不能保证所有类型的modbus堆栈都是这样做的,但是在这种情况下它做到了。
返回消息"MBCHNL_RESP_STATUS_CANCELED“来自TMW堆栈代码中的消息队列,这是因为有一些用于检查的代码,以确保这不是重复的请求。因此,从通道无法同时处理来自三个主程序的消息,因此每个主程序的消息都保留在自己的队列中。
我问了三角微工场同样的问题,上周我收到了他们的意见。“.允许有多个通道(每个通道必须有唯一的ip/端口组合)。对于一个通道来说,2秒可能太快了。……尝试将时间更改为3秒,以此类推。”
我认为这不是一个完美的答案,所以我改进了请求的逻辑。-每2秒发送一次,但如果我只收到回复的话。
这种交流比过去更加流畅。看上去更连续。有时候,大师不能得到一些秒,但在几秒钟后,他们再次很好地沟通。
我知道这也不是一个完美的答案。如果我找到更好的答案,我会再写一遍。
https://stackoverflow.com/questions/44275493
复制相似问题