2017-05-31 883 views
0

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」。

在這個構圖中,這種行爲是否正確? 我想知道堆棧無法支持「多主/多個相同的請求」,或者有其他方式來處理多主。

回答

1

我找到了這個問題的答案。 總之,主人太快,奴隸渠道很忙。我不能保證所有類型的modbus堆棧都能這樣做,但在這種情況下確實如此。

返回消息「MBCHNL_RESP_STATUS_CANCELED」來自TMW堆棧代碼中的消息隊列,這是因爲有一些代碼用於檢查以確保這不是重複的請求。因此,奴隸渠道無法同時處理來自三位主人的消息,然後每位主人的消息仍保留在他們自己的隊列中。

我問三角Microworks同樣的問題,我上週收到他們的opnion。 「...你可以有多個頻道(每個頻道必須有一個唯一的IP /端口組合) 2秒可能太快,只有1個頻道...嘗試更改週期爲3秒,依此類推。 「

我認爲這不是完美的答案,所以我改進了請求的邏輯。 - 每2秒發送一次,但是如果我只收到回覆。

溝通比以前流利。它看起來更連續。有時,主人不能接受幾秒鐘,但幾秒鐘後,他們再次交流。

我知道這不是一個完美的答案。如果我找到更好的答案,我會再寫一遍。