孟祥劍,黎向陽(yáng)
(國(guó)防科技大學(xué)電子科學(xué)與工程學(xué)院,長(zhǎng)沙 410073)
基于MODBUS協(xié)議的人機(jī)界面和單片機(jī)串行通信
孟祥劍,黎向陽(yáng)
(國(guó)防科技大學(xué)電子科學(xué)與工程學(xué)院,長(zhǎng)沙 410073)
為實(shí)現(xiàn)人機(jī)界面和單片機(jī)之間的可靠通信,對(duì)基于MODBUS協(xié)議的人機(jī)界面和單片機(jī)串行通信進(jìn)行了研究。在詳細(xì)討論了MODBUS通信協(xié)議的基礎(chǔ)上,設(shè)計(jì)了以人機(jī)界面和單片機(jī)為核心的通信系統(tǒng)。通信由單片機(jī)主控,軟件采用MODBUS協(xié)議的RTU模式數(shù)據(jù)格式編程。介紹了基于單片機(jī)的MODBUS協(xié)議實(shí)現(xiàn),以循環(huán)冗余校驗(yàn)(CRC)為例介紹了人機(jī)界面宏指令。測(cè)試結(jié)果表明:該系統(tǒng)穩(wěn)定可靠且實(shí)時(shí)性強(qiáng),人機(jī)交互能力較好。
MODBUS協(xié)議;人機(jī)界面;單片機(jī);串行通信
MODBUS協(xié)議是MODICON公司提出的開放式現(xiàn)場(chǎng)總線通信協(xié)議。通過此協(xié)議,可實(shí)現(xiàn)在不同控制器之間、控制器和其他設(shè)備之間進(jìn)行串行通信,目前已成為一種工業(yè)領(lǐng)域被廣泛使用的,真正開放、標(biāo)準(zhǔn)的網(wǎng)絡(luò)通信協(xié)議,是事實(shí)上的主流工業(yè)通信標(biāo)準(zhǔn)之一[1-2]。
帶觸控功能的彩色液晶屏的人機(jī)界面(HMI),如臺(tái)達(dá)公司的DOP-B系列,具有良好的人機(jī)交互能力,具備精細(xì)高畫質(zhì)顯示、多種通信接口、方便直觀的開發(fā)環(huán)境和元件庫(kù),在一些嵌入式電子系統(tǒng)中應(yīng)用非常廣泛[3]。人機(jī)界面一般都集成了基于MODBUS協(xié)議的驅(qū)動(dòng)程序,可與上百種可編程邏輯控制器(PLC)或設(shè)備通訊。
電子系統(tǒng)常常需要具備參數(shù)設(shè)置、運(yùn)行監(jiān)控、故障診斷等人機(jī)交互功能。當(dāng)系統(tǒng)設(shè)計(jì)中不具備PLC器件時(shí),與人機(jī)界面的通信就需要自主開發(fā)。本文基于單片機(jī)主控,采用MODBUS協(xié)議,設(shè)計(jì)開發(fā)了人機(jī)界面通信系統(tǒng),解決了人機(jī)界面對(duì)單片機(jī)采集數(shù)據(jù)的顯示和相關(guān)參數(shù)設(shè)置問題。
MODBUS協(xié)議規(guī)定通信遵循主從式通信方式,支持RS-232/422/485接口標(biāo)準(zhǔn)[4]。該協(xié)議規(guī)定主站發(fā)送的查詢數(shù)據(jù)幀格式:從站站號(hào)、功能碼、需要發(fā)送的數(shù)據(jù)和校驗(yàn)碼。從站站號(hào)表示需要訪問的從站地址,功能碼表示將要執(zhí)行什么樣的操作。相應(yīng)的從站返回的數(shù)據(jù)幀格式也遵循類似的格式[5-6]。正常通信時(shí),從站返回的從站站號(hào)及功能碼和主站發(fā)送的站號(hào)及功能碼一致。如果通信過程中出錯(cuò),那么從站將功能碼的最高位置1形成新的功能碼,表示傳輸出錯(cuò),形成錯(cuò)誤數(shù)據(jù)幀并返回給主站。通信過程中,主站和從站需要遵循相同的校驗(yàn)方式。
該協(xié)議有兩種通信模式:ASCII(american standard code for information interchange)模式和RTU(remote terminal unit)模式[4]。兩種模式下的數(shù)據(jù)幀格式如表1所示。
1.1 ASCII模式
在ASCII模式下,數(shù)據(jù)幀中的每個(gè)字節(jié)都作為2個(gè)ASCII字符來(lái)發(fā)送,例如站號(hào)01,在ASCII模式下應(yīng)該發(fā)送ASCII碼:30H 31H。該模式以字符冒號(hào)(:)字符(ASCII碼是3AH)作為起始位,以字符回車換行(ASCII碼為0DH 0AH)為終止位。ASCII模式下的校驗(yàn)方式采取縱向冗余校驗(yàn)(longitudinal redundancy check,LRC)。通信過程中,設(shè)備不斷監(jiān)測(cè)總線上的冒號(hào)字符,當(dāng)監(jiān)測(cè)到冒號(hào)字符時(shí),判斷下一個(gè)地址信息是否和設(shè)備自己的站號(hào)相同。如果相同,則進(jìn)行下一步處理;如果不同則不處理。ASCII模式的主要優(yōu)點(diǎn)是2個(gè)字符之間的時(shí)間間隔可達(dá)到1 s且不會(huì)發(fā)生錯(cuò)誤。
1.2 RTU模式
在RTU模式下,數(shù)據(jù)幀中的每個(gè)字節(jié)用2個(gè)十六進(jìn)制字符來(lái)表示。可以看出該模式在同樣的傳輸速率下,能傳輸比ASCII模式更多的數(shù)據(jù)。RTU模式下,MODBUS協(xié)議規(guī)定以至少3.5個(gè)字符時(shí)間間隔作為起始位和終止位。它采用循環(huán)冗余校驗(yàn)(cyclic redundancy check,CRC)方式校驗(yàn)由站號(hào)、功能碼和數(shù)據(jù)組成的數(shù)據(jù)串。需要注意的是:當(dāng)CRC被添加到數(shù)據(jù)幀中時(shí),低字節(jié)在前,高字節(jié)在后。設(shè)備接收到其他設(shè)備發(fā)來(lái)的數(shù)據(jù)后,對(duì)收到的站號(hào)、功能碼和數(shù)據(jù)計(jì)算CRC校驗(yàn)碼,并將計(jì)算的CRC校驗(yàn)碼和接收到的CRC校驗(yàn)碼相比較,判斷傳輸過程中是否出錯(cuò)。
MODBUS協(xié)議規(guī)定了很多功能碼,如讀多個(gè)寄存器命令03、寫多個(gè)寄存器命令16等。表2給出了RTU模式下,主站讀取從站站號(hào)為02、地址為0142H起始的連續(xù)2個(gè)寄存器地址數(shù)據(jù)的查詢數(shù)據(jù)幀,表3給出了相應(yīng)的從站返回?cái)?shù)據(jù)幀。
表2 RTU模式下主站查詢數(shù)據(jù)幀
表3 RTU模式下從站返回?cái)?shù)據(jù)幀
以單片機(jī)和人機(jī)界面為核心、結(jié)合數(shù)字電壓表設(shè)計(jì)了MODBUS協(xié)議通信系統(tǒng)如圖1所示。該系統(tǒng)中,MCU采用單片機(jī)CY7C68013作為主站。人機(jī)界面采用臺(tái)達(dá)公司的集成宏指令功能的人機(jī)界面DOP-B07S515作為從站1來(lái)提供顯示和控制功能。數(shù)字電壓表采用集成MODBUS協(xié)議的直流電壓表作從站2實(shí)時(shí)采集電壓數(shù)據(jù)。系統(tǒng)總線采用RS-485總線接口方式。系統(tǒng)工作時(shí),作為主站的MCU周期性地對(duì)從站的狀態(tài)進(jìn)行查詢。先由主站MCU讀取數(shù)字電壓表的數(shù)據(jù),然后將讀取到的數(shù)據(jù)寫入人機(jī)界面。當(dāng)用戶對(duì)人機(jī)界面進(jìn)行控制操作,例如實(shí)時(shí)輸入數(shù)據(jù)時(shí)會(huì)產(chǎn)生數(shù)據(jù)變化,該變化被主站的MCU查詢到后,MCU會(huì)立即解析并設(shè)置相應(yīng)的寄存器地址數(shù)據(jù)。
圖1 通信系統(tǒng)硬件結(jié)構(gòu)
RS-485采用差分線形式,能較好地抑制干擾,并且傳輸距離較遠(yuǎn),具有適合分布式系統(tǒng)等諸多優(yōu)點(diǎn),在工業(yè)控制方面得到了廣泛使用[7-8]。本通信系統(tǒng)采用RS-485接口。人機(jī)界面和數(shù)字電壓表均具備RS-485的接口。
3.1 主站單片機(jī)編程
系統(tǒng)軟件采用MODBUS協(xié)議的RTU模式編程。要實(shí)現(xiàn)系統(tǒng)整體正常通信,作為主站的單片機(jī)非常重要。系統(tǒng)工作時(shí)的所有命令都是先由它發(fā)出的。主站的編程主要包括3個(gè)方面:系統(tǒng)初始化、MODBUS協(xié)議解析處理和必要的時(shí)序控制。下面將分別闡述這3個(gè)方面。
小學(xué)生天性對(duì)一切事物都有極強(qiáng)的好奇心,基于他們的本性,教師要充分的利用這一特點(diǎn)來(lái)進(jìn)行教育和指導(dǎo)。在課程中,小學(xué)數(shù)學(xué)教師要積極的通過相關(guān)教學(xué)手段,促使小學(xué)生能夠積極的開動(dòng)大腦,動(dòng)手制作數(shù)學(xué)模型,將數(shù)學(xué)的知識(shí)應(yīng)用于生活中,這對(duì)于培養(yǎng)小學(xué)生的思維能力、創(chuàng)造能力和動(dòng)手能力都有積極的作用。所以,在素質(zhì)教學(xué)的指導(dǎo)下,小學(xué)數(shù)學(xué)改革要將德智體美勞方面的能力,貫穿于小學(xué)生的日常學(xué)習(xí)和生活實(shí)際之中[1]。
系統(tǒng)初始化主要是指單片機(jī)及數(shù)字電壓表串口的初始化。對(duì)單片機(jī)而言,就是設(shè)定串口的波特率、工作模式、開啟串口中斷、啟動(dòng)定時(shí)器等。單片機(jī)CY7C68013有2個(gè)串口,本文使用串口0作為發(fā)送和接收端口。對(duì)數(shù)字電壓表而言,需要按照它內(nèi)部集成MODBUS協(xié)議的通信格式對(duì)其進(jìn)行串口初始化的設(shè)置,確保數(shù)字電壓表的串口參數(shù)和主站的串口參數(shù)保持一致。
MODBUS協(xié)議解析是指對(duì)MODBUS協(xié)議規(guī)定的數(shù)據(jù)幀進(jìn)行處理,這其中包括數(shù)據(jù)發(fā)送和接收處理、數(shù)據(jù)幀解析和CRC校驗(yàn)。數(shù)據(jù)發(fā)送采用查詢方式,數(shù)據(jù)接收采用中斷方式。
數(shù)據(jù)幀解析方面,首先結(jié)合數(shù)字電壓表的協(xié)議說明,編寫了讀取數(shù)字電壓表的函數(shù)read-Watch。此外還利用03讀寄存器命令編寫了讀取人機(jī)界面寄存器數(shù)據(jù),利用16命令寫多個(gè)寄存器命令編寫了寫入人機(jī)界面寄存器數(shù)據(jù)的函數(shù),限于篇幅,這里僅給出了讀數(shù)字電壓表的程序[6]。
時(shí)序控制方面,主站主要運(yùn)用定時(shí)查詢、中斷等手段實(shí)現(xiàn)協(xié)議規(guī)定的通信時(shí)序控制。為了遵循RTU模式下的起始和終止位至少需要3.5個(gè)字符的延時(shí)要求,在發(fā)送和接收函數(shù)的前后分別加入了延時(shí)函數(shù)Delay。此外,主機(jī)在先后兩次發(fā)送數(shù)據(jù)幀之間留有足夠的時(shí)間間隔,使得從站有充分的時(shí)間響應(yīng)主站的查詢請(qǐng)求。
3.2 從站人機(jī)界面編程
DOP-B07S515人機(jī)界面是臺(tái)達(dá)公司最近推出的高性能人機(jī)界面。該人機(jī)界面集成了功能強(qiáng)大的宏指令功能。宏指令功能提供了相當(dāng)多樣的指令,利用宏指令不僅可以處理復(fù)雜的運(yùn)算,還可以自行編寫通信協(xié)議,大大擴(kuò)展了人機(jī)界面的功能。人機(jī)界面在和單片機(jī)相連接時(shí),由于內(nèi)部沒有集成的通信驅(qū)動(dòng)程序,故需要根據(jù)MODBUS協(xié)議編寫相應(yīng)的宏指令程序。
系統(tǒng)主要實(shí)現(xiàn)了單片機(jī)寫入和讀取人機(jī)界面的數(shù)據(jù)的功能。利用配套的人機(jī)組態(tài)軟件DOPSoft編輯畫面,設(shè)置界面上的各元件對(duì)象屬性,并依據(jù)MODBUS協(xié)議RTU模式編寫宏指令程序,離線模擬成功后將數(shù)據(jù)及畫面資料利用USB下載線加載到人機(jī)界面中[4]。作為從機(jī),人機(jī)界面的程序流程見圖2。在利用通信宏指令進(jìn)行串口初始化時(shí)的參數(shù)設(shè)置必須嚴(yán)格地和主站的串口初始化數(shù)據(jù)一致,這樣才能保證雙方正常通信。
圖2 人機(jī)界面程序流程
編寫的人機(jī)界面效果圖見圖3??梢钥闯?主站單片機(jī)接收到數(shù)字電壓表測(cè)量到的電壓數(shù)據(jù)是12.05 V,主站單片機(jī)將該數(shù)據(jù)寫入人機(jī)界面。同時(shí),利用人機(jī)界面可以對(duì)相關(guān)參數(shù)進(jìn)行設(shè)置,參數(shù)設(shè)置畫面見圖4。人機(jī)界面分別給出了在參數(shù)顯示和參數(shù)設(shè)置下主站單片機(jī)發(fā)送的數(shù)據(jù)幀和從站人機(jī)界面的返回?cái)?shù)據(jù)幀。試驗(yàn)結(jié)果表明:該通信系統(tǒng)性能穩(wěn)定,可靠性高,人機(jī)界面顯示清晰,畫面美觀,人機(jī)交互能力較好。
圖3 人機(jī)界面效果圖
圖4 參數(shù)設(shè)置界面
為了實(shí)現(xiàn)人機(jī)界面和單片機(jī)之間的可靠通信,本文基于單片機(jī)主控,利用MODBUS協(xié)議設(shè)計(jì)了以人機(jī)界面和單片機(jī)為核心的通信系統(tǒng)。測(cè)試結(jié)果表明:該系統(tǒng)具有界面顯示豐富友好、組態(tài)靈活、通信可靠性高、實(shí)時(shí)性強(qiáng)等特點(diǎn),能較好地應(yīng)用于電子系統(tǒng)中的數(shù)據(jù)監(jiān)測(cè)、實(shí)時(shí)參數(shù)設(shè)置。對(duì)基于如單片機(jī)等微處理器的控制系統(tǒng)具有廣泛的應(yīng)用價(jià)值和參考意義。
[1]袁臣虎,王臻,李秀艷,等.基于MODBUS協(xié)議的觸摸屏與TMS320F2812串行通信研究[J].天津工業(yè)大學(xué)學(xué)報(bào),2010,29(2):63-67.
[2]溫建明,魯五一,袁慶國(guó).基于MODBUS協(xié)議的觸摸屏與單片機(jī)通信的實(shí)現(xiàn)[J].起重運(yùn)輸機(jī)械,2008(7): 39-42.
[3]臺(tái)達(dá)電子工業(yè)股份有限公司.DOP-B系列人機(jī)界面使用手冊(cè)[M].臺(tái)灣:臺(tái)達(dá)電子工業(yè)股份有限公司,2012.
[4]李喜東,劉波濤,劉剛.Modbus RTU串行通訊協(xié)議在工業(yè)現(xiàn)場(chǎng)的應(yīng)用[J].自動(dòng)化技術(shù)與應(yīng)用,2005,24 (7):37-40.
[5]朱小超,徐雪春.基于Modbus協(xié)議的上位機(jī)與單片機(jī)通信的實(shí)現(xiàn)與仿真[J].儀表技術(shù)與傳感器,2011(6): 65-68.
[6]顏河恒,王曉華,佟為明.Modbus關(guān)鍵技術(shù)分析及節(jié)點(diǎn)開發(fā)[J].自動(dòng)化技術(shù)與應(yīng)用,2006,25(5):49-51.
[7]陳池,陳巒,任金忠.基于MODBUS協(xié)議的RS-485工業(yè)現(xiàn)場(chǎng)總線系統(tǒng)[J].裝備制造技術(shù),2009(5):93-96.
[8]王書根,王振松,劉曉云.Modbus協(xié)議的RS485總線通訊機(jī)的設(shè)計(jì)及應(yīng)用[J].自動(dòng)化與儀表,2011(5):25-28.
[9]向陽(yáng),徐景濤,董鵬永.基于MODBUS協(xié)議的CRC編碼研究[J].太原科技,2007(9):40-43.
(責(zé)任編輯 楊黎麗)
Serial Communication System Design between Touch Screen and MCU Based on MODBUS Protocol
MENG Xiang-jian,LIXiang-yang
(College of Electronic Science and Engineering,National University of Defense Technology,Changsha 410073,China)
For reliable communication between humanmachine interface(HMI)and MCU,the serial communication based on the MODBUS protocol is studied.The MODBUS communication protocol is discussed in detail.A communication system based on the HMIand MCU is designed.The communication is controlled by MCU.The software of the system is programmed by the data transmission format of MODBUSRTU.The MODBUS protocol MCU-based is realized.Then the HMImacro instruction is introduced by cyclic redundancy check.Experimental results show that the control system is stable,reliable,and has the ability to better human-machine interaction.
MODBUS protocol;human machine interface;MCU;serial communication
TP29
A
1674-8425(2014)09-0087-05
10.3969/j.issn.1674-8425(z).2014.09.019
2014-04-09
孟祥劍(1991—),男,安徽濉溪人,碩士研究生,主要從事寬帶信號(hào)產(chǎn)生技術(shù)研究;黎向陽(yáng)(1972—),男,湖南瀏陽(yáng)人,副教授,碩士生導(dǎo)師,主要從事新體制雷達(dá)系統(tǒng)設(shè)計(jì)和實(shí)時(shí)信息處理研究。
孟祥劍,黎向陽(yáng).基于MODBUS協(xié)議的人機(jī)界面和單片機(jī)串行通信[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué)版,2014(9):87-91.
format:MENG Xiang-jian,LIXiang-yang.Serial Communication System Design between Touch Screen and MCU Based on MODBUS Protocol[J].Journal of Chongqing University of Technology:Natural Science,2014 (9):87-91.