文 方, 歐陽嵩
(江西現(xiàn)代職業(yè)技術(shù)學(xué)院,江西南昌 330095)
變頻器作為節(jié)能應(yīng)用與速度工藝控制中越來越重要的自動化設(shè)備,變頻調(diào)速已成為現(xiàn)代電機控制技術(shù)的重要發(fā)展方向。如果把總線通信與變頻控制技術(shù)統(tǒng)一起來,將推動交流電機群控技術(shù)以及設(shè)備遠(yuǎn)程監(jiān)控技術(shù)的發(fā)展。Modbus作為一種通用的現(xiàn)場總線,已經(jīng)得到了廣泛應(yīng)用,很多廠商的工控器、可編程邏輯控制器(Programmable Logic Controller,PLC)、變頻器、智能 I/O 與 A/D模塊都具備Modbus通信接口。通過Modbus總線,可以很方便地將不同廠商生產(chǎn)的控制設(shè)備連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。
Modbus協(xié)議是MODICON公司開發(fā)的一種開放式現(xiàn)場總線通信協(xié)議,由于其功能完善而且使用簡單,數(shù)據(jù)易于處理,因此在各種智能設(shè)備中被廣泛采用。尤其適用于小型控制系統(tǒng)或單機控制系統(tǒng),可實現(xiàn)低成本、高性能的主從式計算機網(wǎng)絡(luò)監(jiān)控。Modbus只定義了通信消息的結(jié)構(gòu)。一個Modbus信息幀包括從機地址、功能碼、數(shù)據(jù)區(qū)、數(shù)據(jù)校驗碼,對端口沒有具體規(guī)定。Modbus的數(shù)據(jù)通信采用主/從方式,主設(shè)備可以單獨和從設(shè)備通信,也可以通過廣播方式和所有從設(shè)備通信。單獨通信時,從設(shè)備需要返回一消息作為回應(yīng);以廣播方式查詢的,則不作任何回應(yīng)。由于Modbus協(xié)議所具有的良好的適用性,已經(jīng)得到了諸如GE、SIMENS等大公司的應(yīng)用,并把它作為一種標(biāo)準(zhǔn)的通信接口提供給用戶。
Modbus協(xié)議定義了兩種傳輸模式,即RTU和ASCII。在RTU模式中,1字節(jié)的信息作為一個8位字符被發(fā)送,而在ASCII模式中則作為兩個ASCII字符被發(fā)送。發(fā)送同樣的數(shù)據(jù)時,RTU模式的效率約為ASCII模式的2倍。一般來說,數(shù)據(jù)量少且主要是文本時采用ASCII;數(shù)據(jù)量大且是二進(jìn)制數(shù)值時,多采用RTU模式。主站一次可向一個或所有從站發(fā)送通信請求(或指令),主設(shè)備通過消息幀的地址域來選通從設(shè)備。主站發(fā)送的消息幀的內(nèi)容和順序為從站地址、功能碼、數(shù)據(jù)域(數(shù)據(jù)起始地址、數(shù)據(jù)量、數(shù)據(jù)內(nèi)容)、CRC校驗碼;從站應(yīng)答的信息內(nèi)容和順序與主站信息幀基本相同。Modbus除了定義通信功能秒之外,同時還定義了出錯碼,標(biāo)志出錯信息。主站接收到錯誤碼后,根據(jù)錯誤的原因采取相應(yīng)的措施,從站應(yīng)答的數(shù)據(jù)內(nèi)容依據(jù)功能碼進(jìn)行響應(yīng)。
Modbus通信的RTU模式中,規(guī)定信息幀的最后兩個字節(jié)用于傳遞CRC(循環(huán)冗余校驗)碼。發(fā)送方將信息幀中地址域、功能碼、數(shù)據(jù)域的所有字節(jié)按規(guī)定的方式進(jìn)行位移并進(jìn)行異或計算,得到2字節(jié)的CRC碼,把包含CRC校驗碼的信息幀作為一連續(xù)的流進(jìn)行傳輸。接收方在收到該信息幀時按同樣的方式進(jìn)行計算,并將結(jié)果與收到的CRC碼的雙字節(jié)比較,如果一致就認(rèn)為通信正確,否則認(rèn)為通信有誤,從站將發(fā)送CRC錯誤應(yīng)答。
RTU模式一般采用CRC-16冗余校驗方法,CRC-16的校驗碼為16位(2字節(jié))。實現(xiàn)CRC校驗有兩種方法:根據(jù)CRC校驗的定義公式進(jìn)行計算,或者在程序中建立CRC校驗值表。在程序中使用前者更容易實現(xiàn),這里需要使用CRC生成多項式X16+X15+X2+1。該多項式對應(yīng)的碼組系數(shù)為18005H(16進(jìn)制),去除最高位,對應(yīng)的16位余數(shù)為8005H,即為CRC-16常數(shù)。
CRC-16校驗過程如下:將CRC寄存器的每一位預(yù)置為1;把該寄存器值與8 bit的信息幀數(shù)據(jù)進(jìn)行異或,結(jié)果存于該寄存器;對CRC寄存器從高到低進(jìn)行移位,在最高位(MSB)的位置補零,而最低位(LSB)如果為1,則把寄存器與CRC-16常數(shù)進(jìn)行異或,否則如果LSB為零,則無需進(jìn)行異或。重復(fù)上述的由高至低的移位8次,第一個8 bit數(shù)據(jù)處理完畢,用此時寄存器的值與下一個8 bit數(shù)據(jù)異或并進(jìn)行如前一樣的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。CRC添加到消息中時,先加入低字節(jié),然后高字節(jié)。
Modbus標(biāo)準(zhǔn)的物理層可以采用RS-232串行通信方式,但在長距離通信中常采用RS-422或RS-485代替。在多點通信情況下只采用RS-485方式,所以RTU模式下的Modbus系統(tǒng)采用屏蔽雙絞線,通信距離可達(dá)1 000 m。一條總線上最多可配置31個從站設(shè)備。傳輸線上的信息交換是半雙工的,避免了線路的沖突。
RTU模式的傳輸格式是1個數(shù)據(jù)位,2個停止位,沒有奇偶校驗位。通信數(shù)據(jù)安全由控制參數(shù)CRC-16碼保證。RTU接收設(shè)備依靠接收字符間經(jīng)過的時間判斷一幀的開始,如果經(jīng)過3個半的字符時間后仍然沒有新的字符或者沒有完成幀,接收設(shè)備就會放棄該幀,并設(shè)下一個字符為新一幀的開始。
在采用Modbus總線構(gòu)建的數(shù)據(jù)采集與監(jiān)控系統(tǒng)中,主站和從站中的控制設(shè)備上都要實現(xiàn)Modbus通信協(xié)議。主站控制器的通信協(xié)議實現(xiàn)過程流程圖如圖1所示。
圖1 通信協(xié)議實現(xiàn)過程流程圖
選用自帶Modbus總線接口的變頻器,整合PLC、單片機或者PC機作為主站的控制器,可以組建生產(chǎn)線自動控制系統(tǒng),發(fā)揮Modbus總線控制和變頻調(diào)速的優(yōu)良性能,實現(xiàn)設(shè)備的集中式控制,系統(tǒng)的組成原理圖如圖2所示。一般變頻器除電壓、電流、脈沖輸入和旋鈕控制外,均支持點到點的Modbus協(xié)議通信,硬件接口采用RS-422/485串行方式;軟件接口協(xié)議采用Modbus RTU模式,消息幀中的每個8 bit字節(jié)包含2個4 bit的十六進(jìn)制數(shù)字字符。
圖2 Modbus控制系統(tǒng)組成原理圖
圖2中的微控制器AT89C51擴(kuò)展了2個通信口,一個是RS-232串口預(yù)留備用,另外通過芯片MAX485擴(kuò)展RS-485接口。AT89C51作為主站微控制器,它通過RS-485總線方式,將多臺變頻器和具備Modbus RTU接口的智能型從站組成一個數(shù)字通信控制網(wǎng)絡(luò)。AT89C51可以向從站變頻器發(fā)送參數(shù)設(shè)置、起停、數(shù)據(jù)查詢等指令,而變頻器則根據(jù)指令要求控制電機系統(tǒng)運行,并返回信息。該系統(tǒng)不僅可以實現(xiàn)對交流電機的遠(yuǎn)程控制,還可以通過單片機與人機界面連接,完成整個生產(chǎn)線的起動、升速、降速停車等操作和監(jiān)控。通過主站控制器的設(shè)置按鈕,可以對系統(tǒng)操作參數(shù)進(jìn)行設(shè)計,對于一些重要的參數(shù)直接存儲在32 K字節(jié)的EEPROM芯片AT24C32中。通過設(shè)置變頻器參數(shù),可自由切換系統(tǒng)運行在手動或自動控制模式下。該系統(tǒng)的優(yōu)點在于:(1)AT89C51直接利用Modbus協(xié)議對交流變頻器讀寫,無需使用其他附件進(jìn)行組態(tài),簡化了硬件,并可實時獲取各變頻器的工作狀態(tài),包括運行狀態(tài)、運行參數(shù)、故障報警等;(2)主站控制器與從站變頻器之間的連接只有兩根通信線,極大地減少了線路連接的復(fù)雜性,提高了系統(tǒng)可靠性;(3)延長了系統(tǒng)的控制距離;(4)采集電機各運行參數(shù)并通過LCD顯示,不需要各種現(xiàn)場智能儀表,極大地減少了線路連接的復(fù)雜性;(5)能與高精度網(wǎng)絡(luò)方便地進(jìn)行交換信息,從而實現(xiàn)工廠高度自動化。
單片機程序使用C語言編寫,采用自上而下的模塊化設(shè)計方法,整個程序包括系統(tǒng)初始化、串口發(fā)送、串口中斷接收、485通信、LCD顯示、鍵盤接收、報警等功能子模塊。應(yīng)用程序中,Modbus協(xié)議通信由通信子模塊實現(xiàn),包含CRC-16計算與驗證、信息幀的編制和分解。每一條指令可以對指定地址的變頻器進(jìn)行操作;信息幀中包括數(shù)據(jù)的字節(jié)數(shù)、起始地址等。一般變頻器只使用3個功能碼,例:03H、08H、10H,分別實現(xiàn)數(shù)據(jù)讀出、回路反饋測試和數(shù)據(jù)寫入的功能。為了實現(xiàn)Modbus總線控制,需要預(yù)先設(shè)置變頻器的操作參數(shù):n003=2(設(shè)備起停通過總線方式控制),n004=6(輸出頻率由總線通信方式控制),n151~n157中完成通信參數(shù)的設(shè)置。設(shè)計中,可將變頻器設(shè)置為無超時檢測、頻率指令單位為0.01 Hz、通信波特率為 9 600 bps、無奇偶校驗、8位數(shù)據(jù)位、1位停止位、RS控制,而變頻器地址可設(shè)為0~32。設(shè)置好變頻器參數(shù)后,控制器可以通過RS-485總線發(fā)送通信指令,通信流程如圖3所示,單片機的主站指令與變頻器/智能設(shè)備的響應(yīng)信號之間具有一定的時間間隔,在程序中可通過循環(huán)延時語句實現(xiàn)[2]。
圖3 Modbus總線通信流程圖
開發(fā)的Modbus總線控制變頻調(diào)速系統(tǒng)應(yīng)用于水泥配料生產(chǎn)中。在該生產(chǎn)線上,以單片機為核心的控制器通過Modbus總線控制4臺調(diào)速秤配料機的變頻器,這4臺變頻器通過變速機構(gòu)和電機分別控制各變頻器的頻率。實踐表明,Modbus總線通信、變頻調(diào)速和液晶顯示技術(shù)的應(yīng)用,減少了控制系統(tǒng)的布線數(shù)量,提高了系統(tǒng)集成度和可靠性,水泥配料成分可在大范圍內(nèi)隨意調(diào)控,其良好的用戶界面大大改善了設(shè)備的操作性能,降低了成本,提升了產(chǎn)品的市場競爭力。
[1]徐濤,閆科,趙景林.基于MODBUS協(xié)議的串行接口實現(xiàn)與DCS通訊[J].工業(yè)控制計算機,2002,15(3):56-57.
[2]潘洪躍.基于MODBUS協(xié)議通信的設(shè)計與實現(xiàn)[J].計量技術(shù),2002(4):35-36.