【摘要】介紹了Modbus通信協(xié)議的特點,簡述了遠程輸入輸出接口設(shè)備在分布式控制系統(tǒng)中的作用,提出了一種具有Modbus_RTU接口的遠程輸入輸出接口設(shè)備的設(shè)計,并對軟硬件設(shè)計進行了詳細闡述,該設(shè)計利用了Modbus_RTU協(xié)議的開放性和易用性,在單片機運行、端口隔離等方面進行了抗干擾設(shè)計,對完善分布式控制系統(tǒng)功能具有促進作用。
【關(guān)鍵詞】遠程;Modbus;輸入輸出;單片機;抗干擾
引言
Modbus通信協(xié)議是Modicon公司開發(fā)的一種通信協(xié)議,它采用主從問答方式工作,是一種真正開放、標準的、免收許可費的網(wǎng)絡(luò)通信協(xié)議[1]。Modbus通信協(xié)議廣泛應(yīng)用于過程控制系統(tǒng),是實現(xiàn)控制主站(例如可編程控制器)與分站(例如遠程輸入輸出接口)、傳感器通信的一種常用協(xié)議。在分布式控制系統(tǒng)中,控制主站實現(xiàn)邏輯控制功能,但系統(tǒng)中存在遠程的數(shù)據(jù)采集點和遠程控制輸出點,需要通過現(xiàn)場總線的方式實現(xiàn)數(shù)據(jù)互聯(lián),由于Modbus協(xié)議簡單開放的特點,在這種情況下經(jīng)常應(yīng)用。遠程輸入輸出接口是分布式控制系統(tǒng)的一個重要組成部分,兼容Modbus接口能夠很好地提高設(shè)備的易用性和性價比。Modbus通信模式分為ASCII和RTU兩種,RTU是最常用的模式,本文提出了一種具有Modbus_RTU通信接口的遠程輸入輸出接口的設(shè)計方法,能夠滿足分布式控制系統(tǒng)的應(yīng)用需求。
1.Modbus協(xié)議簡介
Modbus通信協(xié)議具有開放性好、易實現(xiàn)、擴展性好、可靠性高等優(yōu)點, 因而具有廣闊的應(yīng)用前景,被越來越多的設(shè)備廠商所支持。不同廠商生產(chǎn)的控制設(shè)備可以連成Modbus工業(yè)網(wǎng)絡(luò),由Modbus通信的主站對 現(xiàn)場設(shè)備和儀表進行遠程監(jiān)控,實現(xiàn)非常好的監(jiān)控效果和系統(tǒng)性能[2]。
Modbus沒有規(guī)定物理層,它只規(guī)定了可以被通信節(jié)點識別的數(shù)據(jù)結(jié)構(gòu)[3]。Modbus規(guī)定了數(shù)據(jù)的結(jié)構(gòu)、命令和應(yīng)答的形式,數(shù)據(jù)通信采用主從方式,主站可以向特定的從站發(fā)起讀寫命令,也可以向所有從站發(fā)起廣播命令。在同一個通信網(wǎng)絡(luò)中,所有通信節(jié)點(包括主站和從站)都必須設(shè)置相同的通信參數(shù),包括波特率、數(shù)據(jù)位、停止位和校驗位,而字符超時、回復(fù)超時等保護參數(shù)每個通信節(jié)點可以不盡相同。
Modbus通信模式分為ASCII和RTU兩種,兩者的不同主要在于數(shù)據(jù)格式,兩者的數(shù)據(jù)格式分別如表1和表2所示。
表1
位置 起始位 設(shè)備地址 功能碼 數(shù)據(jù) LRC校驗 結(jié)束符
字符個數(shù) 1 2 3 n 2 2
表2
位置 起始位 設(shè)備地址 功能碼 數(shù)據(jù) CRC校驗 結(jié)束符
位數(shù) 靜止時段 8bit 8bit N*8bit 2*8bit 靜止時段
Modbus功能碼可以是1-255范圍內(nèi)任何整數(shù)值,有些功能碼適用于所有的通信設(shè)備,有些則只適用于特定的控制器,還有一些用于功能的擴展。
主站通過時間間隔的方式判斷的通信幀的結(jié)束,從站在收到主站的命令后,需要至少間隔3.5個字符周期才能回復(fù)數(shù)據(jù),如果時間間隔不夠,主站將無法區(qū)分主站的數(shù)據(jù)幀和從站的數(shù)據(jù)幀。如果一幀數(shù)據(jù)在完成之前有一個1.5字符周期的停頓,則接收端會認為數(shù)據(jù)損壞而丟棄數(shù)據(jù)。尤其當通信波特率不大于19.2kbps時,對1.5字符周期和3.5字符周期有嚴格要求,當通信波特率大于19.2kbps時,1.5字符周期固定為750us,3.5字符周期固定為1.75ms。從機必須保證同步主機的時序,否則無法正確接受主機的數(shù)據(jù)。同時,從機還要有合理的收發(fā)轉(zhuǎn)換時間,間隔至少3.5字符周期,否則會導(dǎo)致主機和其他從機誤判,但收發(fā)轉(zhuǎn)換周期也不能超過主機的回復(fù)超時時間,否則主機會做出超時判斷。
2.硬件設(shè)計
基于Modbus_RTU的遠程輸入輸出接口的硬件電路框圖如圖1所示。硬件電路主要包括處理器(單片機)、輸入輸出隔離器件和RS485收發(fā)器三個部分。
圖1 硬件電路框圖
單片機是輸入輸出接口設(shè)備的核心,其接收來自總線的數(shù)據(jù)命令,根據(jù)命令的形式,控制相應(yīng)的端口輸出或?qū)⒉杉降亩丝谛畔⑦M行回復(fù)。單片機的電路部分又可以分為電源、晶振、看門狗三個部分,電源是數(shù)字電路工作的必須部分,通常單片機的電源是一個降壓穩(wěn)壓電路,通用單片機的工作電壓一般為3.3V或5V,而普通開關(guān)電源或AC-DC模塊的輸出電壓一般為12V或24V,所以需要降壓。為了保證單片機工作的穩(wěn)定,需要在降壓器件的輸出側(cè)加穩(wěn)壓二極管和電容,以保證電壓的穩(wěn)定和降低紋波。晶振為單片機工作提供時基,晶振分為內(nèi)部晶振和外部晶振兩種,外部晶振具有更好的精度和穩(wěn)定性。單片機工作在工業(yè)環(huán)境中,容易受到各種干擾,會導(dǎo)致控制程序出現(xiàn)異常,看門狗電路可以將出現(xiàn)異常的程序及時拉回到正常狀態(tài),防止出現(xiàn)事故??撮T狗的原理是定時接收單片機發(fā)出的周期信號,當一定時間內(nèi)沒有收到周期信號后,將單片機熱復(fù)位,讓程序重新運行,而這個過程單片機的RAM不會發(fā)生改變,保證控制功能可以繼續(xù)。
在工業(yè)控制環(huán)境中,各種干擾會沖擊傳輸線路,這就需要對單片機的端口進行隔離,將干擾阻擋在隔離器件之外,首先保證單片機的安全。常用的隔離器件有光耦和磁耦,光耦傳輸速率相對較低,可以在輸入輸出端口隔離中使用,磁耦的傳輸速率相對較高,可以在通信隔離中使用。
單片機的串口一般只支持TTL電平,如果需要連接Modbus總線(物理層為RS485),則需要RS485總線收發(fā)器,RS485收發(fā)器將接收到的RS485差分信號轉(zhuǎn)換為單片機可以識別的TTL電平信號,將單片機發(fā)出的TTL電平信號轉(zhuǎn)換為RS485差分信號,以實現(xiàn)Modbus總線與單片機信號的互聯(lián)。
3.軟件設(shè)計
軟件設(shè)計流程圖如圖2所示。初始化部分主要完成單片機的初始配置,包括晶振的設(shè)置、定時器的設(shè)置、Modbus_RTU協(xié)議棧的設(shè)置和端口的輸入輸出設(shè)置。采集端口信息部分完成對單片機輸入端口的電平采集,端口的電平狀態(tài)需要進行濾波,防止狀態(tài)出現(xiàn)頻繁跳動,濾波采用平均濾波法,即在一定時間內(nèi)采集數(shù)次端口的電平,數(shù)次電平一致,則認為電平已穩(wěn)定,將穩(wěn)定的電平值定期存儲在Modbus_RTU寄存器中,以備Modbus主站讀取。Modbus數(shù)據(jù)處理部分采用中斷的形式,當總線上收到來自主站的命令時,觸發(fā)一次中斷,置中斷標識。在中斷處理程序中,首先判斷收到的命令是讀命令還是寫命令,如果是讀命令,則根據(jù)Modbus_RTU協(xié)議規(guī)則,把主站想要讀取的寄存器的值回復(fù)給主站,如果是寫命令,則改變相應(yīng)的寄存器的值,進而根據(jù)內(nèi)部寄存器與外部端口的映射關(guān)系,將相應(yīng)的單片機端口置位。整個軟件設(shè)計實現(xiàn)了主站對遠程輸入輸出接口設(shè)備的輸入口信息的采集和主站對遠程輸入輸出接口設(shè)備的輸出口的控制,主站具有總線控制權(quán),可以隨時采集端口信息和控制端口輸出。
圖2 軟件流程圖
4.結(jié)語
按照上述方法設(shè)計的遠程輸入輸出接口設(shè)備能夠?qū)崿F(xiàn)控制主站對遠端輸入端口的數(shù)據(jù)采集,同時控制主站可以實時控制遠端執(zhí)行機構(gòu)動作,軟硬件設(shè)計均進行了抗干擾處理,能夠有效應(yīng)對復(fù)雜的工業(yè)控制環(huán)境。此設(shè)計已在實際應(yīng)用中得到驗證,對完善分布式控制系統(tǒng)功能具有促進作用。
參考文獻
[1]呂國芳,唐海龍,李進.基于Modbus RTU的串口調(diào)試軟件的實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009,19(9):236-238.
[2]何志勇,張茂青,錢偉清.PLC主站對Modbus網(wǎng)絡(luò)的監(jiān)控方法[J].計算機網(wǎng)絡(luò)與通信,2007,29(2):26-28.
[3]舒凱.基于MODBUS-RTU協(xié)議的PLC多路數(shù)據(jù)采集系統(tǒng)[J].水電自動化與大壩監(jiān)測,2008,32(2):66-69.
作者簡介:謝印釗(1988—),男,黑龍江鶴崗人,主要研究方向:電氣自動化。