摘 要:隨著計算機網(wǎng)絡、通訊、控制等技術的發(fā)展,信息交換溝通的領域正在迅速覆蓋從工廠的現(xiàn)場設備層到控制、管理的各個層次?;诂F(xiàn)場總線的智能儀表對現(xiàn)場總線技術在我國的推廣應用具有非常重要的意義。本文在Modbus現(xiàn)場總線協(xié)議的基礎上設計了一個工業(yè)溫度控制系統(tǒng)。
關鍵詞:現(xiàn)場總線; ModBus協(xié)議; 單片機控制
一、ModBus協(xié)議簡介
當今世界,工業(yè)控制已從單機控制走向集中監(jiān)控、集散控制。在進入網(wǎng)絡時代的今天,工業(yè)控制器連網(wǎng)也為網(wǎng)絡管理提供了方便。ModBus協(xié)議就是工業(yè)控制器的網(wǎng)絡協(xié)議中的一種。ModBus協(xié)議是Modicon公司于1978年發(fā)明的一種用于電子控制器進行控制和通訊的通訊協(xié)議。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(例如以太網(wǎng))和其它設備之間可以進行通信。它的開放性、可擴充性和標準化使它成為一個通用工業(yè)標準。有了它,不同廠商生產(chǎn)的控制設備可以簡單可靠地連成工業(yè)網(wǎng)絡,進行系統(tǒng)的集中監(jiān)控,從而使它成為最流行的協(xié)議之一。
ModBus協(xié)議包括ASCII, RTU, PLUS, TCP等,并沒有規(guī)定物理層。此協(xié)議定義了控制器能夠認識和使用的消息結構,而不管它們是經(jīng)過何種網(wǎng)絡進行通信的。標準的ModBus 是使用RS-232C 兼容串行接口, RS-232C規(guī)定了連接器針腳、接線、信號電平、波特率、奇偶校驗等信息,ModBus的ASCII, RTU協(xié)議則在此基礎上規(guī)定了消息、數(shù)據(jù)的結構、命令和應答的方式。ModBus控制器的數(shù)據(jù)通信采用Master/Slave方式(主/從),即Master端發(fā)出數(shù)據(jù)請求消息,Slave端接收到正確消息后就可以發(fā)送數(shù)據(jù)到Master端以響應請求;Master端也可以直接發(fā)消息修改Slave端的數(shù)據(jù),實現(xiàn)雙向讀寫。
ModBus可以應用在支持ModBus協(xié)議的PLC和PLC之間、PLC和個人計算機之間、計算機和計算機之間、遠程PLC和計算機之間以及遠程計算機之間(通過Modem連接),可見ModBus的應用是相當廣泛的。由于ModBus是一個事實上的工業(yè)標準,許多廠家的PLC, HMI、組態(tài)軟件都支持ModBus,而且ModBus是一個開放標準,其協(xié)議內容可以免費獲得,一些小型廠商甚至個人都可根據(jù)協(xié)議標準開發(fā)出支持ModBus的產(chǎn)品或軟件,從而使其產(chǎn)品聯(lián)入到ModBus的數(shù)據(jù)網(wǎng)絡中。因此,ModBus有著廣泛的應用基礎。在實際應用中,可以使用RS232, RS 485 /422 , Modem加電話線、甚至TCP/IP來聯(lián)網(wǎng)。所以,ModBus的傳輸介質種類較多,可以根據(jù)傳輸距離來選擇。
二、ModBus協(xié)議的通訊格式
ModBus可分為兩種傳輸模式:ASCII模式和RTU模式。使用何種模式由用戶自行選擇,包括串口通信參數(shù)(波特率、校驗方式等)。在配置每個控制器的時候,同一個ModBus網(wǎng)絡上的所有設備都必須選擇相同的傳輸模式和串口參數(shù)。
2.1 ASCII模式
當控制器設為在ModBus網(wǎng)絡上以ASCII模式通信,在消息中的每個8Bit字節(jié)都作為兩個ASCII字符發(fā)送。這種方式的主要優(yōu)點是字符發(fā)送的時間間隔可達到1秒而不產(chǎn)生錯誤。
表1 ASCII模式的消息幀
如表1所示,使用ASCII模式,消息以冒號(:)字符(ASCII碼3AH)作為起始位,以回車換行符(ASCII碼0DH, 0AH)作為結束符。傳輸過程中,網(wǎng)絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個設備就解碼下個位的地址域,來判斷是否發(fā)給自己的。與地址域一致的設備繼續(xù)接受其它域,直至接受到回車換行符。除起始位和結束符外,其他域可以使用的傳輸字符是十六進制的0…9,A…F,當然也要用ASCII碼表示字符。當選用ASCII模式時,消息幀使用LRC(縱向冗長檢測)進行錯誤檢測。
2.2RTU模式
當控制器設為RTU模式時,消息幀中的每個8Bit字節(jié)包含兩個4Bit的十六進制字符。
表2 RTU模式的消息幀
該模式下消息發(fā)送至少要以3.5個字符時間的停頓間隔開始。傳輸過程中,網(wǎng)絡設備不斷偵測網(wǎng)絡總線,包括停頓間隔時間內。當?shù)谝粋€域(地址域)接收到,相應的設備就對接下來的傳輸字符進行解碼,一旦有至少3. 5個字符時間的停頓就表示該消息的結束。
在RTU模式中整個消息幀必須作為一連續(xù)的流轉輸,如果在幀完成之前有超過1.5個字符時間的停頓時間,接收設備將刷新不完整的消息并假定下一字節(jié)是一個新消息的地址域。同樣地,如果一個新消息在小于3. 5個字符時間內接著前個消息開始,接收的設備將認為它是前一消息的延續(xù)。如果在傳輸過程中有以上兩種情況發(fā)生的話,必然會導致CRC校驗產(chǎn)生一個錯誤消息,反饋給發(fā)送方設備。
當控制器設為RTU(遠程終端單元)模式通信時,消息中的每個8Bit字節(jié)包含兩個4Bit的十六進制字符。這種模式與ASCII模式相比在同樣的波特率下,可比ASCII模式傳送更多的數(shù)據(jù)。
三、系統(tǒng)設計
本文所設計的系統(tǒng)是一個基于modbus的工業(yè)控制網(wǎng)絡,它主要由實現(xiàn)現(xiàn)場控制功能的智能控制儀表、實現(xiàn)對智能控制儀表在線配置與監(jiān)控功能的主機兩部分組成。作為從機的現(xiàn)場智能控制儀表主要任務有:實現(xiàn)現(xiàn)場溫度采集、輸出控制、顯示、系統(tǒng)配置以及響應主機激勵;主機的主要任務是在線配置從機、監(jiān)控從機從而得到相應從機的狀態(tài)、歷史溫度數(shù)據(jù)分析;兩者之間的通訊是基于現(xiàn)場總線技術的。
3.1 系統(tǒng)的硬件設計
系統(tǒng)主要由通訊電路(輸入)、數(shù)據(jù)采集、輸出控制、LCD顯示、通信及電源模塊等組成。如圖1所示,系統(tǒng)具有對外界溫度信號進行采集的能力,采集的模擬信號經(jīng)A/D模塊轉換為相應的數(shù)字量,送入微處理器進行處理。采集到的每一路溫度都要與系統(tǒng)此路的溫度設定值進行比較,然后根據(jù)結果調用合適的控制算法,并通過控制相應的繼電器的占空比實現(xiàn)對溫度的調節(jié)。
考慮到系統(tǒng)實際應用,在硬件設計方面,微控制器選用了臺灣Syncmos公司生產(chǎn)的8位微控制器SM5964, 它是80C52 微控制器家族的派生產(chǎn)品,其強大的片內資源,只需添加少量的外圍器件即可實現(xiàn)系統(tǒng)的要求。溫度測量利用Pt(100Ω)熱敏電阻,測量的模擬信號經(jīng)A/D模塊轉換后送入微處理進行處理。模數(shù)轉換器選用凌特公司(Linear Technology)推出的20位無延遲模數(shù)轉換器LTC2430,此模塊可直接對測量的毫伏級信號進行處理,并能夠滿足精度要求。其它也選用了與通信和輸出控制相關的器件。
[align=center]
圖1 系統(tǒng)結構框圖[/align]
由于篇幅關系,只介紹本系統(tǒng)通信部分的電路原理。由于標準的ModBus物理層采用了RS-232串行通信標準,在PC機上模擬MODBUS通信通過使用RS-485插卡或者RS-232/ RS-485轉換模塊,實現(xiàn)多點通信,這里選用的是RS-232/RS-485轉換模塊。電路圖如圖2所示:
[align=center]
圖2 通信電路原理圖[/align]
SM5964的串行發(fā)送端口TXD和接收端口RXD經(jīng)MAX232芯片進行電平轉換后,分別與PC機的數(shù)據(jù)接收端口RXD和數(shù)據(jù)發(fā)送端口TXD相連接。SM5964串行通信的發(fā)送端TXD連接到的11引腳,發(fā)出的數(shù)據(jù)信號經(jīng)過MAX232芯片轉換后,由0~5V的TTL電平變?yōu)?12~+12V的RS232電平,從14引腳輸出到PC機串行口的第二引腳。按RS232通信協(xié)議規(guī)定,PC機串行口的第二引腳為數(shù)據(jù)輸入端,這樣,發(fā)出的數(shù)據(jù)就可被PC機接收到。由PC機串行口的發(fā)送端TXD(PC機串行口的第三引腳)傳輸來的數(shù)據(jù),作為RS232電平的信號輸入到MAX232芯片的第13引腳,經(jīng)過MAX232芯片進行電平轉換后變?yōu)門TL電平,再由MAX232的12引腳輸出到SM5964串行口的接收端口RXD。從而完成數(shù)據(jù)的雙向傳輸。
在設計中,使用了兩個發(fā)光二極管D7和D8監(jiān)視通信的工作狀態(tài)。
3.2 系統(tǒng)的軟件設計
本系統(tǒng)的軟件設計是基于軟件開發(fā)平臺μC/OS-II,它是由Labrosse先生編寫的一個開放式內核,最主要的特點就是源碼公開,清晰明了。在單片機系統(tǒng)中嵌入μC/OS-II將增強系統(tǒng)的可靠性,并使得調試程序變得簡單起來。但由于它沒有功能強大的軟件包,基于具體應用需要自己編寫驅動程序,對內核進行擴充。為使其能夠正常工作,要根據(jù)具體的硬件平臺完成相應的移植工作。μC/OS-II是一個占先式的內核,即已經(jīng)準備就緒的高優(yōu)先級任務可以剝奪正在運行的低優(yōu)先級任務的CPU使用權。這個特點使得它的實時性比非占先式的內核要好。根據(jù)要實現(xiàn)的功能,我將系統(tǒng)劃分為如下6個任務:按鍵處理、LCD顯示、串行通信、輸出任務、控制運算、信號采集處理。這里只介紹和ModBus總線協(xié)議相關的部分。
當選用的是ModBus的RTU模式時,一幀報文中字節(jié)與字節(jié)之間的時間間隔比幀與幀之間的時間間隔小得多,因此主要的難點在于如何判斷一幀報文接收結束與否,這可以利用單片機內置的定時器來進行判斷。若實際實現(xiàn)時,我們選擇了19200的傳輸速率,那么空閑間隔時間T≥1/19200*8*3.5=1.5ms。每當接收到一個新的字節(jié),就啟動定時器開始計時,定時器的時間設定為幀與幀之間的最小時間間隔(上面提到的例子中是1.5ms)。波特率不同,該時間的間隔也不同。若不到預定時間又接收到下一個字節(jié),則說明一幀報文尚未結束,定時器重新開始計數(shù);若定時器順利計數(shù)到預定時間,就會觸發(fā)相應的中斷,在該定時中斷服務程序中設定幀結束標志字節(jié),表明一幀報文接收完畢。這樣就可以防止報文接收不完整,導致該幀通訊任務無法結束而影響下一幀的接收。
[align=center]
圖3 接收程序流程圖[/align]
如圖3所示,在一個幀開始接收時判斷接收的第一個字節(jié)是否為本機地址,如果是則保存到接收緩沖區(qū)中,不是則繼續(xù)等待下一幀報文的到來,這樣節(jié)省了保存數(shù)據(jù)的時間,接收中斷服務程序只是保存數(shù)據(jù)而不處理數(shù)據(jù),只是在一幀新的報文接收結束后,通知系統(tǒng)(通過發(fā)出信號量來實現(xiàn));ModBus協(xié)議還規(guī)定了從方接收報文不正確時發(fā)問的出錯幀??紤]到裝置內部通信的過程不是很復雜,在實際應用中如果從方收到的報文校驗不正確,采取不作應答的方式。主方若在規(guī)定時間內未收到從方的應答報文時,將重發(fā)請求報文;若多次末收到從方應答報文,則報通訊故障。上面的措施大大縮短了中斷服務程序的執(zhí)行時間,防止了系統(tǒng)資源的無謂浪費。
在數(shù)據(jù)處理方面設計了一個環(huán)形的緩沖區(qū),用來存放接收到的數(shù)據(jù),這個緩沖區(qū)是一個兩維數(shù)組。假設一個幀不超過12個字節(jié),可以定義了一個5*12的二維數(shù)組。數(shù)組的第一個元素是標志位,前四位用來表示數(shù)據(jù)是否已經(jīng)處理,后四位存放接收的數(shù)據(jù)的個數(shù);每接收一個幀的數(shù)據(jù),數(shù)組下移一個。當接收的數(shù)據(jù)要覆蓋未處理數(shù)據(jù)時系統(tǒng)報警,這種情況一般不會發(fā)生,因為數(shù)據(jù)處理程序在本系統(tǒng)中被設成優(yōu)先級最高。
在ModBus協(xié)議中另外一個問題就是CRC校驗和的計算問題,一般情況下它是由硬件電路直接產(chǎn)生的,這樣速度比較快,系統(tǒng)負載小;但是在本文中介紹的單片機中沒有這種專用電路,而且一般的中低端的單片機一般也不具有這種專用電路。這里我們只有充分利用現(xiàn)有的資源,如果直接計算的話,單片機負載很大,而且浪費了大量的系統(tǒng)時間,影響系統(tǒng)的實時性,考慮到我所使用的MCU的Flash ROM比較大,可以存儲大量的常量線性表數(shù)據(jù),利用查表方式可以非常方便的計算出CRC校驗碼。
四、結束語
在本文中比較詳細地介紹了ModBus總線協(xié)議,并最終設計了一個實現(xiàn)多點溫度測量和控制的使用系統(tǒng),希望本系統(tǒng)對類似的通訊應用有所幫助。
參考資料
1. Modicon ModBus Protocol Reference Guide.PI一MBUS一300 Rev. J
2. Mark Nelson著.串行通訊開發(fā)指南. 北京:中國水利水電出版社,2000
3. 王田苗主編.嵌入式系統(tǒng)設計與實例開發(fā). 北京:清華大學出版社,2002