S7-1200需要讀取10個(ge) Modbus設備的數據,現在出現一個(ge) 問題,單獨調用一路是每秒可以循環25次,但是同時調用超過1路後,每秒隻能進行10次通訊(10路循環一次,2路循環5次)。實驗反應這麽(me) 幾個(ge) 問題:
1:隻通訊任何一路時,通訊非常正常無任何故障。
2:通訊多路時,通訊速度明顯變慢,且還不如將從(cong) 站斷電無接受信號時的速度快。我將超時時間設置為(wei) 50ms。將從(cong) 站全部斷電後,發送燈反而比從(cong) 站正常通訊速度還快。
3:更改波特率幾乎沒有影響。變更超時時間有影響,但在50ms時達到最快,低於(yu) 30ms開始出現故障。其他參數看不太明白,瞎設了以下,沒任何影響。
4:是否是S1200的發送,和終止機製有什麽(me) 要求,變換通道地址後,需要什麽(me) 處理延遲了發送?
5:我現在需要將10從(cong) 站一秒巡檢兩(liang) 次。請大蝦幫忙。
我采用的通訊模塊是6ES7 241-1CH32-0XB0
最佳答案
1、MODBUS通信是一主多從(cong) 方式,主站輪詢訪問從(cong) 站,訪問每個(ge) 從(cong) 站都需要一定時間,這個(ge) 時間取決(jue) 於(yu) 通信波特率和通信的字數,所以從(cong) 站越多,一個(ge) 輪詢需要的時間就越長,這是正常的
2、通信超時時間是指主站發送後等待從(cong) 站發來響應數據的時間,通信正常的時候,主站隻要接到從(cong) 站響應就會(hui) 複位“busy"狀態位,這有通信非正常的時候(通信中斷或幹擾)才會(hui) 一直等待從(cong) 站響應的數據,直到達到規定的超時時間才會(hui) 置位故障狀態位,和複位busy位,才可能接受新的通信請求。如果通信中斷,主站肯定是每個(ge) 通信超時都去發送新的請求,所以發送狀態燈會(hui) 不停的閃,要注意這麽(me) 快的LED響應,肉眼判斷往往不是很準確
2、由於(yu) modbus TRU采用的是用信號中斷間隔來判斷一個(ge) 通信貞是否完成,由於(yu) 這個(ge) 間隔時間的存在,所以通信波特率調高後,雖然通信速度肯定提高,但是一個(ge) 通信周期所需要的總時間並沒有減少很明顯,通信字數少的時候更是如此。如果超時時間太短,不能使一個(ge) 正常的通信完成,就會(hui) 出現通信故障
4、modbus 是標準的通信協議,隻要支持這個(ge) 協議的所有設備,運行機製都相同,沒有區別
5、要降低輪詢時間有以下幾個(ge) 措施:
用較好的屏蔽通信雙絞線(注意485通信網絡的兩(liang) 個(ge) 端頭要有終端電阻),降低通信幹擾,盡量提高波特率
如果從(cong) 站過多,可以用兩(liang) 個(ge) 或三個(ge) 主站模塊,降低每個(ge) 通道的從(cong) 站數量
如果允許,對於(yu) 寫(xie) 從(cong) 站的指令,程序中可以變更發送請求方式,隻在需要發送(數據有變更)的時候才發送