描述:某個專案有多個設備額,每個設備是ModBus。
我需要通過服務器根據協議,通過網路讀取每個設備里面數值,然后處理+存盤。
我原來的方法也是最原始的辦法,就是通過Socket(每個設備支持TCP客戶端,TCP服務端)回圈讀取,一次讀一個。
但是設備個數少還好,但是如果多的話,回圈一次時間就長了,資料也就沒法保證是實時資料了。
請問高手如何處理,多執行緒也從考慮過,但是畢竟新手,摸不著頭緒。。
希望高手留下QQ號,我好問的詳細一點
uj5u.com熱心網友回復:
你寫的Modbus程式是做主站還是從站??從站的話簡單一些,你等著別人來讀你就好了。
主站的話,你要去主動發命令給下面的設備,然后等待設備應答。
你走的是Modbus TCP,傳輸速度應該不是問題,可能下面的設備相應的慢??
問題很好解決啊,你下面有幾個設備,你就建立幾個 TcpClient,每個TcpClient 單獨使用一個執行緒,并且都設定成異步模式就好了,不難的。。
uj5u.com熱心網友回復:
必須得多執行緒啊,看你得設備有多少了,1000個?2000個?,uj5u.com熱心網友回復:
要采集什么東西的?需要這么快的資料?MODBUS你收完一個站點馬上請求下一個站點,而且TCP的,10M的網速,1s就有1.25MB資料了,如果是RTU的方式,一個站點200Byte,1.25MB,6250個站點,扣除其他的,打個折 ,5折總行了吧,也能通信3000個站點,除非,你每個站點一次命令讀不上了,分3次,那也有1000個站點,打折,5折,也有500個站點,到底要讀多少個?我用串口,20多個站點,19.2kbps的,1s內就回圈完畢,關鍵是界面更新,存盤的速度慢了uj5u.com熱心網友回復:
http://download.csdn.net/detail/kwer/9050123轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94382.html
標籤:網絡及通訊開發
