ModbusASCII協(xié)議仿真在實(shí)驗教學(xué)中的應(yīng)用獲獎科研報告_第1頁
ModbusASCII協(xié)議仿真在實(shí)驗教學(xué)中的應(yīng)用獲獎科研報告_第2頁
ModbusASCII協(xié)議仿真在實(shí)驗教學(xué)中的應(yīng)用獲獎科研報告_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

ModbusASCII協(xié)議仿真在實(shí)驗教學(xué)中的應(yīng)用獲獎科研報告摘

要:在工業(yè)測控相關(guān)的教學(xué)實(shí)踐課程中,常常涉及上位機(jī)與智能儀器設(shè)備通信問題,而智能儀器儀表廣泛采用Modbus通信協(xié)議。鑒于工業(yè)用Modbus協(xié)議的設(shè)備價格昂貴,實(shí)驗過程復(fù)雜,本文開發(fā)了用于實(shí)驗的ModbusASCII仿真器,實(shí)現(xiàn)了ModbusASCII通信協(xié)議。

關(guān)鍵詞:通信協(xié)議;上位機(jī);ModbusASCII;仿真

00TP2

000B

引言

在工業(yè)測控相關(guān)的教學(xué)實(shí)踐課程中,常常購買大量昂貴的工業(yè)測控智能儀器、儀表和實(shí)驗臺,硬件設(shè)備維護(hù)工作量巨大。工業(yè)測控課程主要是通過計算機(jī)或PLC等上位機(jī)對測控儀器儀表(下位機(jī))發(fā)送控制命令并從其采集數(shù)據(jù)實(shí)現(xiàn)測量與控制,主要涉及雙方的通信問題。由于智能儀器儀表都是用在工業(yè)控制系統(tǒng)中的,其功能強(qiáng)、可靠性高,價格昂貴,用于教學(xué)操作復(fù)雜,也過于奢侈浪費(fèi)。為了降低測控實(shí)驗教學(xué)成本,本文開發(fā)了一個ModbusASCII仿真器,可構(gòu)成虛擬的測控系統(tǒng),用于學(xué)習(xí)編寫、運(yùn)行及調(diào)試計算機(jī)測控程序,進(jìn)行測控實(shí)驗。這樣,充分利用學(xué)校的計算機(jī)資源,減少了智能儀器儀表的費(fèi)用和維護(hù)工作量,同時也可為學(xué)生提供了形象直觀的實(shí)驗過程。

1

ModbusASCII通信協(xié)議

Modbus協(xié)議已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn),是智能儀器儀表之間常用的通信方式。Modbus協(xié)議支持傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)設(shè)備,有ASCII、RTU和TCP三種通信格式,其標(biāo)準(zhǔn)性和多樣性非常適合作為測控軟件的教學(xué)內(nèi)容。其中ModbusASCII通信數(shù)據(jù)格式比較簡單,使用ASCII即字符串格式,字符傳輸間隔要求不高,小于1秒就行,數(shù)據(jù)串可讀性強(qiáng),易于實(shí)現(xiàn)。本文在分析了ModbusASCII通信格式的基礎(chǔ)上實(shí)現(xiàn)了相應(yīng)的軟件仿真器。

Modbus通信協(xié)議通常用于RS-485工業(yè)總線上,采用一主多從的通信方式,由于從機(jī)多,需要為每一個從機(jī)分配一個地址,主從之間采用異步傳輸方式,1位起始位,8位數(shù)據(jù)位,可不用奇偶校驗位,可采用1位停止位。

本文以ModbusASCII的2個常用功能03和06進(jìn)行說明。03功能為讀取一個或多個寄存器的數(shù)據(jù);06功能把1個16位的數(shù)據(jù)寫入某一寄存器。主機(jī)通過03和06號功能對從機(jī)的寄存器操作來讀寫其中任意存儲器中的數(shù)據(jù),實(shí)現(xiàn)主從機(jī)的遠(yuǎn)程測控。

以ModbusASCII的03功能為例(其它功能類似),其通信格式如下“:AA03XXXXYYYYLRCCRLF”,通信數(shù)據(jù)字符串可分為由2個16進(jìn)制數(shù)構(gòu)成的1個字節(jié)形式的2個字符對,連在一起構(gòu)成命令或響應(yīng)數(shù)據(jù)串。這里,“:”為數(shù)據(jù)串的起始位,AA(01到FF之間)為從機(jī)地址,03即功能碼,XXXX為起始寄存器號,YYYY為讀取寄存器數(shù)量,LRC為縱向校驗碼,由前面的2位數(shù)對求和取補(bǔ)得到,以檢測數(shù)據(jù)串傳輸是否有誤。CRLF為回車和換行符號,表示數(shù)據(jù)串結(jié)束。

2

ModbusASCII仿真器設(shè)計

ModbusASCII下位機(jī)仿真仿真器的設(shè)計思想是程序運(yùn)行后處于字符串接收狀態(tài),當(dāng)從串行口收到命令串后,在接收事件中處理,根據(jù)命令要求,將需要的寄存器值構(gòu)成應(yīng)答串。

為了在VB中實(shí)現(xiàn)串行通信[1],仿真器設(shè)計中采用了微軟的MSCOMM控件,其屬性設(shè)置為:CommPort=3,即仿真器連接在串口3上;Rthreshold=1,即事件接收方式;InputMode=0為字符串收發(fā)方式,對應(yīng)ModbusASCII的數(shù)據(jù)串格式;Settings=”9600,n,8,1”,即通信波特率為9600,無校驗,8位數(shù)據(jù)位,1個停止位。

Modbus協(xié)議是針對線圈和寄存器操作的,在仿真器程序中設(shè)計了10個16位寄存器,用戶可通過鍵盤輸入或顯示主機(jī)發(fā)來的4位16進(jìn)制數(shù)。主機(jī)可通過ModbusASCII命令串讀取或改寫這些寄存器中的值。仿真器運(yùn)行時,處于等待被查詢狀態(tài),隨時接收上位機(jī)發(fā)來的命令串。在接收事件中對收到的命令串進(jìn)行分析。首先檢查地址,確定是否接收命令串;然后再對數(shù)據(jù)串進(jìn)行縱向冗余校驗,無錯則進(jìn)一步查看是被讀命令還是寫命令;如果是被讀則發(fā)送需要的寄存器值,如果被寫則按設(shè)定值改寫相應(yīng)寄存器的值。

3

仿真實(shí)驗測試

為了在一臺計算機(jī)上進(jìn)行測試,首先建立實(shí)驗測試環(huán)境,測試環(huán)境搭建需要3個軟件,一個是本文設(shè)計的仿真器;一個是測控工程中常用的ModbusPoll測試軟件;一個是模擬主從設(shè)備通過串口連接的虛擬串口軟件[2]。

如下圖所示,測試軟件用03功能讀取仿真器的10個寄存器數(shù)據(jù),也可以通過雙擊測試軟件中的數(shù)據(jù)改寫仿真器端對應(yīng)寄存器中的值。可以看到主從雙方數(shù)據(jù)傳輸一致,仿真器測試成功。

測試成功后就可以將仿真器作為PLC、變頻器或各種智能儀器儀表使用。上位機(jī)測控軟件可以采用VB、VC或VC#等編程軟件設(shè)計,方便地通過字符串命令讀寫仿真器中寄存器數(shù)據(jù),實(shí)現(xiàn)工業(yè)測控上位機(jī)監(jiān)控系統(tǒng)。

4

結(jié)束語

本文分析了ModbusASCII通信協(xié)議,開發(fā)了相應(yīng)的實(shí)驗教學(xué)用的仿真器,可代替ModbusASCII通信協(xié)議的工業(yè)智能儀器儀表,該仿真器已

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論