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