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