引言
現(xiàn)代工業(yè)自動控制系統(tǒng)朝智能化、網(wǎng)絡(luò)化和開放式結(jié)構(gòu)的方向發(fā)展。利用現(xiàn)場總線技術(shù),將符合同一標準的各種智能設(shè)備統(tǒng)一起來,徹底實現(xiàn)整個監(jiān)測系統(tǒng)的分散控制,將提高系統(tǒng)集成度和數(shù)據(jù)傳輸效率、延長有效控制距離,并有利于提高系統(tǒng)抗干擾性能和擴展系統(tǒng)功能。在運動控制中,伺服電機以其響應(yīng)速度快,控制精準等優(yōu)點以被更多的客戶所選用。如果把總線通信與伺服控制技術(shù)統(tǒng)一起來,將推動運動控制技術(shù)以及設(shè)備遠程監(jiān)控技術(shù)的發(fā)展。MODBUS作為一種通用的現(xiàn)場總線,已經(jīng)得到很廣泛的應(yīng)用,很多廠商PLC、智能I/O與A/D模塊具備MODBUS通訊接口。本文在闡述MODBUS通信協(xié)議的基礎(chǔ)上,構(gòu)建了基于MODBUS的伺服電機運動控制。
1 MODBUS總線控系統(tǒng)的技術(shù)特征
MODBUS通訊協(xié)議是一種工業(yè)現(xiàn)場總線通訊協(xié)議,它定義的是一種設(shè)備控制器可以識別和使用的信息幀結(jié)構(gòu),獨立于物理層介質(zhì),可以承載于多種網(wǎng)絡(luò)類型中。MODBUS協(xié)議把通信參與者規(guī)定為“主站”(Master)和“從站”(Slave),數(shù)據(jù)和信息的通信遵從主/從模式,當它應(yīng)用于標準MODBUS網(wǎng)絡(luò)時,信息被直接傳送。MODBUS總線網(wǎng)絡(luò)中的各個智能設(shè)備通過異步串行總線連接起來,只允許一個控制器作為主站,其余智能設(shè)備作為從站。采用命令/應(yīng)答的通信方式,主站發(fā)出請求,從站應(yīng)答請求并送回數(shù)據(jù)或狀態(tài)信息,從站不能夠自己發(fā)送信息。MODBUS協(xié)議定義的各種信息幀格式,描述了主站控制器訪問從站設(shè)備的過程,規(guī)定從站怎樣做出應(yīng)答響應(yīng),以及檢查和報告?zhèn)鬏斿e誤等。網(wǎng)絡(luò)中的每個從設(shè)備都必須分配給一個唯一的地址,只有符合地址要求的從設(shè)備才會響應(yīng)主設(shè)備發(fā)出的命令。
由于MODBUS總線系統(tǒng)開發(fā)成本低,簡單易用,并且現(xiàn)在已有很多工控器、PLC、顯示屏等都具有MODBUS通信接口,所以它已經(jīng)成為一種公認的通信標準。通過MODBUS總線,可以很方便地將不同廠商生產(chǎn)的控制設(shè)備連成工業(yè)網(wǎng)絡(luò),進行集中監(jiān)控。
MODBUS最初為PLC通信而設(shè)計,它通過24種總線命令實現(xiàn)PLC與外界的信息交換。這些總線命令對應(yīng)的通信功能主要包括AI/AO、DI/DO的數(shù)據(jù)傳送。但不是很多MODBUS設(shè)備的控制只使用其中的幾條命令,對其余命令不做反應(yīng)。
1.1 MODBUS通信格式
MODBUS協(xié)議定義了兩種傳輸模式,即RTU(Remote Terminal Unit)和ASCII。在RTU模式中,1字節(jié)的信息作為一個8位字符被發(fā)送,而在ASCII模式中則作為兩個ASCII字符被發(fā)送,如發(fā)送字符“20”時,采用RTU模式時為“00100000”,然而采用ASCII模式則成為“00110010”+“00110000”(ASCII字符的“2”和“0”)??梢姡l(fā)送同樣的數(shù)據(jù)時,RTU模式的效率大約為ASCII模式的兩倍。一般來說,數(shù)據(jù)量少而且主要是文本時采用ASCII;通信數(shù)據(jù)量大而且是二進制數(shù)值時,多采用RTU模式。
數(shù)據(jù)格式:地址碼功能碼數(shù)據(jù)區(qū)錯誤校檢
數(shù)據(jù)長度:1字節(jié)1字節(jié)N字節(jié)16位CRC碼(冗余循環(huán)碼)
主站一次可向一個或所有從站發(fā)送通信請求(或指令),主設(shè)備通過消息幀的地址域來選通從設(shè)備。主站發(fā)送的消息幀的內(nèi)容和順序為:從站地址、功能碼、數(shù)據(jù)域(數(shù)據(jù)起始地址、數(shù)據(jù)量、數(shù)據(jù)內(nèi)容)、CRC校驗碼;從站應(yīng)答的信息內(nèi)容和順序與主站信息幀基本相同。MODBUS除了定義通信功能碼之外,同時還定義了出錯碼,標志出錯信息。主站接收到錯誤碼后,根據(jù)錯誤的原因采取相應(yīng)的措施。從站應(yīng)答的數(shù)據(jù)內(nèi)容依據(jù)功能碼進行響應(yīng),例如功能代碼03要求讀取從站設(shè)備中保持寄存器的內(nèi)容。
MODBUS部分功能碼
功能碼定 義操 作(二進制)
02讀開關(guān)量輸入讀取一路或多路開關(guān)量狀態(tài)輸入數(shù)據(jù)
01讀開關(guān)量輸出讀取一路或多路開關(guān)量輸出狀態(tài)數(shù)據(jù)
03讀寄存器數(shù)據(jù)讀取一個或多個寄存器的數(shù)據(jù)
05寫開關(guān)量輸出控制一路繼電器“合/分”輸出
06寫單路寄存器把一組二進制數(shù)據(jù)寫入單個寄存器
10寫多路寄存器把多組二進制數(shù)據(jù)寫入多個寄存器
1.2 CRC校驗的實現(xiàn)
MODBUS通信的RTU模式中,規(guī)定信息幀的最后兩個字節(jié)用于傳遞CRC(Cyclic Redundancy Check,循環(huán)冗余校驗)碼。發(fā)送方將信息幀中地址域、功能碼、數(shù)據(jù)域的所有字節(jié)按規(guī)定的方式進行位移并進行XOR(異或)計算,即可得到2字節(jié)的CRC碼,并把包含CRC校驗碼的信息幀作為一連續(xù)的流進行傳輸。接收方在收到該信息幀時按同樣的方式進行計算,并將結(jié)果同收到的CRC碼的雙字節(jié)比較,如果一致就認為通信正確,否則認為通信有誤,從站將發(fā)送CRC錯誤應(yīng)答。
RTU模式一般采用CRC-16冗余校驗方法,CRC-16的校驗碼為16位(2字節(jié)),其中低字節(jié)在前,高字節(jié)在后。實現(xiàn)CRC校驗有兩種方法:根據(jù)CRC校驗的定義公式進行計算,或者在程序中建立CRC校驗值表。在程序中使用前者更容易實現(xiàn),這里需要使用CRC生成多項式X16+X15+X2+1。該多項式對應(yīng)的碼組系數(shù)為18005H(16進制),去除最高位,對應(yīng)的16位余數(shù)為8005H,即為CRC-16常數(shù)。CRC-16校驗過程如下:將CRC寄存器的每一位預(yù)置為1;把該寄存器值與8bit的信息幀數(shù)據(jù)進行異或,結(jié)果存于該寄存器;對CRC寄存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與CRC-16常數(shù)進行異或,否則如果LSB為零,則無需進行異或。重復(fù)上述的由高至低的移位8次,第一個8bit數(shù)據(jù)處理完畢,用此時寄存器的值與下一個8bit數(shù)據(jù)異或并進行如前一樣的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。CRC添加到消息中時,先加入低字節(jié),然后高字節(jié)。
1.3 鏈路特征
MODBUS標準的物理層可以采用RS-232串行通信方式,但在長距離通信中常采用RS-422或RS-485代替。在多點通信情況下只采用RS-485方式,所以RTU模式下的MODBUS系統(tǒng)采用屏蔽雙絞線,通信距離可達1000m。一條總線上最多可配置31個從站設(shè)備。傳輸線上的信息交換是半雙工的,即同時只能有一臺設(shè)備允許發(fā)送信息,主站在發(fā)送下一條指令之前等待從站回應(yīng),從而避免了線路的沖突。
RTU模式的傳輸格式是1個數(shù)據(jù)位,2個停止位,沒有奇偶校驗位。通信數(shù)據(jù)安全由控制參數(shù)CRC-16碼保證。RTU接收設(shè)備依靠接收字符間經(jīng)過的時間判斷一幀的開始,如果經(jīng)過3個半的字符時間后仍然沒有新的字符或者沒有完成幀,接收設(shè)備就會放棄該幀,并設(shè)下一個字符為新一幀的開始。
轉(zhuǎn)載請注明出處。