劉心紅 郭福田

摘? 要:在工業測控相關的教學實踐課程中,常常涉及上位機與智能儀器設備通信問題,而智能儀器儀表廣泛采用Modbus通信協議。鑒于工業用Modbus協議的設備價格昂貴,實驗過程復雜,本文開發了用于實驗的ModbusASCII仿真器,實現了ModbusASCII通信協議。
關鍵詞:通信協議;上位機;ModbusASCII;仿真
中圖分類號:TP2???? 文獻標識碼:B
引言
在工業測控相關的教學實踐課程中,常常購買大量昂貴的工業測控智能儀器、儀表和實驗臺,硬件設備維護工作量巨大。工業測控課程主要是通過計算機或PLC等上位機對測控儀器儀表(下位機)發送控制命令并從其采集數據實現測量與控制,主要涉及雙方的通信問題。由于智能儀器儀表都是用在工業控制系統中的,其功能強、可靠性高,價格昂貴,用于教學操作復雜,也過于奢侈浪費。為了降低測控實驗教學成本,本文開發了一個ModbusASCII仿真器,可構成虛擬的測控系統,用于學習編寫、運行及調試計算機測控程序,進行測控實驗。這樣,充分利用學校的計算機資源,減少了智能儀器儀表的費用和維護工作量,同時也可為學生提供了形象直觀的實驗過程。
1? ModbusASCII通信協議
Modbus協議已經成為工業領域通信協議的業界標準,是智能儀器儀表之間常用的通信方式。Modbus協議支持傳統的RS-232、RS-422、RS-485和以太網設備,有ASCII、RTU和TCP三種通信格式,其標準性和多樣性非常適合作為測控軟件的教學內容。其中ModbusASCII通信數據格式比較簡單,使用ASCII即字符串格式,字符傳輸間隔要求不高,小于1秒就行,數據串可讀性強,易于實現。本文在分析了ModbusASCII通信格式的基礎上實現了相應的軟件仿真器。
Modbus 通信協議通常用于RS-485工業總線上,采用一主多從的通信方式,由于從機多,需要為每一個從機分配一個地址,主從之間采用異步傳輸方式,1位起始位,8位數據位,可不用奇偶校驗位,可采用1位停止位。
本文以ModbusASCII的2個常用功能03和06進行說明。03功能為讀取一個或多個寄存器的數據;06功能把1個16位的數據寫入某一寄存器。主機通過03和06號功能對從機的寄存器操作來讀寫其中任意存儲器中的數據,實現主從機的遠程測控。
以ModbusASCII的03功能為例(其它功能類似),其通信格式如下“:AA 03 XX XX YY YY LRC CR LF”,通信數據字符串可分為由2個16進制數構成的1個字節形式的2個字符對,連在一起構成命令或響應數據串。這里,“:”為數據串的起始位,AA(01到FF之間)為從機地址,03即功能碼,XXXX為起始寄存器號,YYYY為讀取寄存器數量,LRC為縱向校驗碼,由前面的2位數對求和取補得到,以檢測數據串傳輸是否有誤。CRLF為回車和換行符號,表示數據串結束。
2? ModbusASCII仿真器設計
ModbusASCII下位機仿真仿真器的設計思想是程序運行后處于字符串接收狀態,當從串行口收到命令串后,在接收事件中處理,根據命令要求,將需要的寄存器值構成應答串。
為了在VB中實現串行通信[1],仿真器設計中采用了微軟的MSCOMM控件,其屬性設置為:CommPort=3,即仿真器連接在串口3上;Rthreshold=1,即事件接收方式;InputMode=0為字符串收發方式,對應ModbusASCII的數據串格式;Settings=”9600,n,8,1”,即通信波特率為9600,無校驗,8位數據位,1個停止位。
Modbus協議是針對線圈和寄存器操作的,在仿真器程序中設計了10個16位寄存器,用戶可通過鍵盤輸入或顯示主機發來的4位16進制數。主機可通過ModbusASCII命令串讀取或改寫這些寄存器中的值。仿真器運行時,處于等待被查詢狀態,隨時接收上位機發來的命令串。在接收事件中對收到的命令串進行分析。首先檢查地址,確定是否接收命令串;然后再對數據串進行縱向冗余校驗,無錯則進一步查看是被讀命令還是寫命令;如果是被讀則發送需要的寄存器值,如果被寫則按設定值改寫相應寄存器的值。
3? 仿真實驗測試
為了在一臺計算機上進行測試,首先建立實驗測試環境,測試環境搭建需要3個軟件,一個是本文設計的仿真器;一個是測控工程中常用的Modbus Poll測試軟件;一個是模擬主從設備通過串口連接的虛擬串口軟件[2]。
如下圖所示,測試軟件用03功能讀取仿真器的10個寄存器數據,也可以通過雙擊測試軟件中的數據改寫仿真器端對應寄存器中的值。可以看到主從雙方數據傳輸一致,仿真器測試成功。
測試成功后就可以將仿真器作為PLC、變頻器或各種智能儀器儀表使用。上位機測控軟件可以采用VB、VC或VC#等編程軟件設計,方便地通過字符串命令讀寫仿真器中寄存器數據,實現工業測控上位機監控系統。
4? 結束語
本文分析了ModbusASCII通信協議,開發了相應的實驗教學用的仿真器,可代替ModbusASCII通信協議的工業智能儀器儀表,該仿真器已經用于工控軟件設計等實驗教學中,替代了工業測控教學中一大類字符串通信的實驗設備。仿真器的使用提高了實驗效率,并節約了大量的經費,同時去除了硬件設備的維護工作量。用仿真器的實驗教學方法在測控課程學習方面具有一定的推廣意義。
參考文獻
[1]? 曾麗麗,劉心紅,趙忖,張昕編著. VB通信編程技術[M]. 北京:中國石化出版社. 2014.106-128
[2]? 劉心紅,郭福田,開關控制器仿真設計及其在教學中的應用[J].北京:知識-力量:2019,8(23),80-81
作者簡介:劉心紅(1966-),女(漢族),黑龍江大慶市人,工學學士,副教授,教師。現從事計算機軟件應用方面的教學與研究工作。
基金項目:秦皇島市科學技術研究與發展計劃課題:Modbus通信協議仿真及其在教學中的應用(201902A006)