Modbus TCP中的多主站

Modbus TCP中的多主站

问题描述:

Modbus TCP/IP中的多主站有一个奇怪的问题。我知道Modbus串行不支持多主站。但是当我看到一些文档时,他们说Modbus TCP支持多主机。Modbus TCP中的多主站

我组成了三个TCP客户端作为Modbus TCP主站和一个服务器作为Modbus TCP从站。每个Modbus TCP主站请求Modbus TCP从站定期每2秒获取一次数据。我使用Modbus TCP堆栈作为Master设备,由Triangle MicroWorks制作。

我料想每个主人都可以接收奴隶的数据,但实际上,一个主人只能与奴隶沟通,其他主人无法接收数据。他们只收到返回状态“3”,意思是“MBCHNL_RESP_STATUS_CANCELED”。

在这个构图中,这种行为是否正确? 我想知道堆栈无法支持“多主/多个相同的请求”,或者有其他方式来处理多主。

我找到了这个问题的答案。 总之,主人太快,奴隶渠道很忙。我不能保证所有类型的modbus堆栈都能这样做,但在这种情况下确实如此。

返回消息“MBCHNL_RESP_STATUS_CANCELED”来自TMW堆栈代码中的消息队列,这是因为有一些代码用于检查以确保这不是重复的请求。因此,奴隶渠道无法同时处理来自三位主人的消息,然后每位主人的消息仍保留在他们自己的队列中。

我问三角Microworks同样的问题,我上周收到他们的opnion。 “...你可以有多个频道(每个频道必须有一个唯一的IP /端口组合) 2秒可能太快,只有1个频道...尝试更改周期为3秒,依此类推。 “

我认为这不是完美的答案,所以我改进了请求的逻辑。 - 每2秒发送一次,但是如果我只收到回复。

沟通比以前流利。它看起来更连续。有时,主人不能接受几秒钟,但几秒钟后,他们再次交流。

我知道这不是一个完美的答案。如果我找到更好的答案,我会再写一遍。