技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > ModBus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用

ModBus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用

時(shí)間:2008-08-08 13:53:00來(lái)源:ronggang

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

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:組態(tài)王環(huán)境下數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.wangxinlc.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)