色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ModBus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用

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

          作者: 時(shí)間:2012-06-19 來(lái)源:網(wǎng)絡(luò) 收藏

            3.2 系統(tǒng)的軟件設(shè)計(jì)

            本系統(tǒng)的軟件設(shè)計(jì)是基于軟件開發(fā)平臺(tái)μC/OS-II,它是由Labrosse先生編寫的一個(gè)開放式內(nèi)核,最主要的特點(diǎn)就是源碼公開,清晰明了。在單片機(jī)系統(tǒng)中嵌入μC/OS-II將增強(qiáng)系統(tǒng)的可靠性,并使得調(diào)試程序變得簡(jiǎn)單起來(lái)。但由于它沒(méi)有功能強(qiáng)大的軟件包,基于具體應(yīng)用需要自己編寫驅(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í)器開始計(jì)時(shí),定時(shí)器的時(shí)間設(shè)定為幀與幀之間的最小時(shí)間間隔(上面提到的例子中是1.5ms)。波特率不同,該時(shí)間的間隔也不同。若不到預(yù)定時(shí)間又接收到下一個(gè)字節(jié),則說(shuō)明一幀報(bào)文尚未結(jié)束,定時(shí)器重新開始計(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é)束而影響下一幀的接收。

            如圖3所示,在一個(gè)幀開始接收時(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));還規(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í)最高。

            在中另外一個(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ì)類似的通訊應(yīng)用有所幫助。

          參考資料

            1. Modicon ModBus Protocol Reference Guide.PI一MBUS一300 Rev. J

            2. Mark Nelson著.串行通訊開發(fā)指南. 北京:中國(guó)水利水電出版社,2000

            3. 王田苗主編.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā). 北京:清華大學(xué)出版社,2002


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉