郭建昌
(中國礦業大學(北京)機電與信息工程學院1,北京 100083;南陽理工學院電子與電氣工程學院2,河南 南陽 473000)
虛擬串口測試系統設計
郭建昌1,2
(中國礦業大學(北京)機電與信息工程學院1,北京 100083;南陽理工學院電子與電氣工程學院2,河南 南陽 473000)
針對嵌入式工程師基于串口的實際測試需要,對虛擬儀器技術、Proteus電路仿真技術、ARM多串口技術和虛擬串口技術進行了研究,設計了基于Proteus和ARM7的虛擬串口測試系統,并給出了系統總體設計方案。具體介紹了系統工作原理、Proteus電路詳細設計和對應的軟件設計,并通過了工程應用測試。試驗結果驗證了該設計能實現串口測試命令生成和測試結果分析的功能,滿足嵌入式工程師基于串口的測試需要。
Proteus ARM接口 測試系統 虛擬串口 串口調試助手 仿真
煤礦用手持巡檢儀設計采用ARM7芯片LP2101,功能測試中需要通過PC機中串口調試助手發送測試命令,需要對串口調試助手接收到的巡檢儀響應數據進行分析。但通過串口調試助手發送的測試命令比較長、種類比較多,所以需要人工不斷地輸入不同的測試命令。同時,巡檢儀響應數據也比較長、種類比較多,所以需要人工不斷地分析響應數據。
針對這個問題,希望能有一款串口測試軟件,能自動生成測試命令、自動發送測試命令、自動分析響應數據、直接顯示分析結果。遺憾的是如同很多嵌入式工程師一樣,筆者對諸如VB、Visual C或虛擬儀器軟件LabVIEW等可視化開發環境熟悉度不深,不能針對不同應用編寫基于串口的測試界面及通信程序[1]。而對嵌入式系統開發中經常用到的電路仿真軟件Proteus則相對比較熟悉。
通過研究分析和工程測試應用,設計了一套基于Proteus和ARM7的虛擬串口測試系統,能很好地解決這個問題。
基于Proteus和ARM7的虛擬串口測試系統如圖1所示[2-8]。圖1中,虛線框中代表的是軟件,實線框中代表的是硬件。

圖1 系統總體設計圖Fig.1 General design of the system
測試系統硬件包括PC機、PC機串口(物理串口或者USB轉串口都可以),軟件包括串口調試助手、Proteus軟件、虛擬串口軟件、ARM編譯軟件。其中,Proteus軟件設計測試系統電路,建立電路模型;ARM編譯軟件編譯ARM程序;虛擬串口軟件建立串口調試助手與Proteus電路中ARM7元件的串口連接;串口調試助手通過串口發送測試命令數據和顯示測試結果。本測試系統由相關常用的軟件集成構成。這些軟件對嵌入式工程師來說是比較簡單且經常使用的軟件。
測試系統工作原理如下。
①生成測試命令。
PC機中串口調試助手通過虛擬串口發送簡易測試命令數據,串口0接收簡易測試命令數據。ARM7元件分析接收到的簡易測試命令數據,生成實際測試命令數據。串口1發送實際測試命令數據,命令通過PC串口發送給被測試的嵌入式系統。
②測試結果分析。
串口1通過PC機串口接收嵌入式系統響應的測試數據,ARM7元件分析測試響應數據。串口0通過虛擬串口把分析結果發送給串口調試助手顯示,從而直接顯示響應結果。
基于Proteus和ARM7的虛擬串口測試系統采用雙串口的ARM7元件,主要是因為嵌入式工程師對串口調試助手和PC機串口最熟悉,應用最多,而嵌入式系統一般都具有串口通信接口。本測試系統中所有的通信節點都采用串口,通過ARM7元件解析串口助手發送的簡易測試命令數據,獲得實際發送的測試命令數據。也就是說,串口調試助手發送的命令不變,但通過ARM7元件的不同解析可以發出不同的實際測試命令,減輕了工程師的測試工作量和復雜程度,特別是生成具有校驗碼的測試命令。通過ARM7元件分析接收到的測試響應數據,把分析結果發送給串口調試助手直接顯示,工程師可以直接看到測試結果。針對不同的測試需要,工程師只需要調整ARM7元件命令解析和響應數據分析功能即可。另外,串口調試助手和ARM7元件串口0的通信參數可以固定不變,這樣可以進一步減少發送測試命令的復雜程度;而ARM7元件串口1可以根據實際測試的嵌入式系統串口通信參數來設定。
基于Proteus和ARM7的虛擬串口測試系統電路設計包括ARM7元件電路和串口電路設計,如圖2所示。整個電路設計元件比較少,主要包括一個ARM7元件LPC2101[9]和兩個串口元件COMPIM,Proteus元件庫直接添加即可,整個電路設計比較簡單。LPC2101具有雙串口,即串口0(TXD0和RXD0)和串口1(TXD1和RXD1)。串口0與串口元件P0直接連接,P0通過虛擬串口與串口調試助手通信。串口1與串口元件P1直接連接,P1通過PC機串口(物理串口)與被測試的嵌入式系統串口通信。

圖2 測試系統電路圖Fig.2 Circuit of the testing system
本測試系統的軟件設計同樣也是基于ARM7元件串口的,比較簡單。軟件設計包括ARM7元件LP2101串口參數設置,簡易測試命令數據接收、解析及生成實際測試命令,測試響應數據分析。測試系統程序流程如圖3所示。

圖3 測試系統程序流程圖Fig.3 Flowchart of the program of testing system
首先進行LP2101初始化,主要是設置串口的通信參數。基于Proteus和ARM7的串口測試系統中串口調試助手和ARM7元件串口0的通信參數設置如下:9 600 bit/s,無校驗位,8 bit(data),1 bit(stop)。針對不同的嵌入式設備,可以保持不變,簡化新測試系統的程序修改,也可以采用別的通信參數。ARM7元件串口1可以根據被測試的嵌入式系統串口通信參數設定。串口通信設置完畢后進入接收簡易測試命令狀態,解析串口0接收到的簡易測試命令,生成實際測試命令。在實際軟件設計中,可以采用把實際測試命令放入數組中的方式,建立簡易測試命令與實際測試命令數組的關聯。這樣實際測試命令需要改變時只需要改變命令數組數據即可。然后通過串口1發送實際測試命令,接著等待接收響應的數據并分析,獲得測試結果。測試結果也可以采用數組方式,設置幾種可能的結果,比如:OK、ERROR。根據分析的結果,直接通過串口0發送給串口助手顯示。
筆者參與設計的煤礦用手持巡檢儀測試通信協議基于Modbus協議[10],在Modbus數據包基礎上增加數據包頭和校驗碼。測試命令和響應數據格式詳細情況如下。
(1)測試命令格式:包長度+分組信息+設備地址+功能代碼+寄存器地址高位+寄存器地址低位+ CRCH+CRCL+CC。
①包長度:不包括CC校驗碼。即包長度僅包括Modbus標準協議數據包。
②分組信息:指的是各功能模塊。01代表GPS模塊采集到的數據,02代表ZigBee模塊采集到的數據,03代表RFID模塊采集到的數據,04代表氣體檢測、A/D和開關量模塊采集到的數據。
③設備地址、功能代碼、寄存器地址高位、寄存器地址低位、CRCL和CRCH:標準的Modbus通信協議數據包。
④CC:累加和校驗,是指前面所有字節相加取一個字節(不包括CRC校驗碼)。
(2)巡檢儀響應數據格式:包長度+分組信息+設備地址+功能代碼+數據數量+數據+CRCH+ CRCL+CC。
①包長度、分組信息和設備地址與測試命令中相同。
②CC:累加和校驗,是指前面所有字節相加取一個字節(包括CRC校驗碼)。
③功能代碼、數據數量、數據1,…,數據n、CRCL和CRCH是標準的Modbus協議數據包。
測試過程如下。串口調試助手采用2.2版本。虛擬串口軟件采用VSP虛擬串口軟件,運行后建立一對虛擬串口,分別與串口調試助手和LP2101串口0相連接。編譯LP2101程序,獲得對應的HEX文件,在Proteus中指定LP2101對應的HEX文件后運行。此時,基于Proteus和ARM7的虛擬串口測試系統已經建立,通過串口調試助手發送簡易測試命令,即可進行測試。
測試中需要發送4組9 B的測試命令,特別是還包含CRC校驗碼及累加和校驗碼計算。響應的數據最短為9 B,需要分析其中的數據,包括CRC校驗碼及累加和校驗碼。但通過基于Proteus和ARM7的虛擬串口測試系統,簡易測試命令只需要4組1 B的命令,分別為01~04。響應數據直接顯示為對應設備的具體數據,如GPS經度+實際數據維度+實際數據,即直接顯示分析結果。
測試結果完全達到基于Proteus和ARM7的虛擬串口測試系統設計的目的,實現了相關功能。
基于Proteus和ARM7的虛擬串口測試系統把嵌入式工程師掌握的 ARM7接口及程序設計技術、Proteus仿真技術、虛擬串口技術有機的集成在一起,不需要使用復雜的Visual Basic、Visual C或虛擬儀器軟件LabVIEW等工具開發測試系統,可實現同樣的測試功能,對嵌入式工程師來說靈活度比較高,難度低,并且與對應的產品設計很好地融合在一起,不需要額外的開發工具,可以說是虛擬儀器技術的靈活應用。根據不同測試對象,只需要修改ARM7元件的簡易命令解析和響應數據分析功能部分程序即可構建新的測試系統。該系統具有串口測試命令生成和測試結果分析的功能。
[1]馮雪飛,陳文亮.Windows平臺下串行通信的幾種實現方法[J].機械制造與自動化,2002(1):33-38.
[2]朱清慧,張鳳蕊,翟天嵩,等.Proteus教程—電子線路設計、制版與仿真[M].北京:清華大學出版社,2008:125-150.
[3]吳海峰,鄧世建,李紅.基于LabVIEW和Proteus的單片機數據采集系統仿真[J].礦山機械,2008,36(24):18-21.
[4]周潤景,張麗娜,丁莉.基于PROTEUS的電路及單片機設計與仿真[M].2版.北京:北京航空航天大學出版社,2010:200-234.
[5]張宇,黃偉志,郝巖.基于LabVIEW的多功能數據采集系統的設計與實現[J].自動化儀表,2013,34(8):24-6.
[6]夏偉,鄭詩程,葛蘆生.基于AVR單片機的電網參數監控系統[J].自動化儀表,2008,29(8):35-40.
[7]金昊,柯冬香.PC自動化測試技術及軟件結構[J].自動化儀表,1999,20(4):1-3,9.
[8]汝彥冬.新型井下監控分站的設計[J].自動化儀表,2010,31(6):64-66.
[9]陳健.基于微控制器LPC2101的煤礦安全監控系統分站的設計[J].中國礦業,2009,18(1):104-108.
[10]胡文翔,蔡政,郭偉瑋,等.面向RS-485控制網絡的Modbus協議擴展及應用[J].自動化儀表,2013,34(4):59-61,65.
Design of the Virtual Serial Port Testing System
In accordance with the practical test demand based on serial port for embedded engineer,the technologies of virtual instrument,Proteus circuit simulation,ARM multi-serial port,and virtual serial port are researched,and the virtual serial port testing system has been designed based on Proteus and ARM7.The general design scheme of the system is proposed and theworking principle of the system,the design of Proteus circuit and the corresponding software are introduced.The engineering application test of the system is conducted.The experimental results show that the design achieves the functions of serial port command generation and test results analysis,and satisfies the test demands based on serial port for embedded engineer.
Proteus ARM interface Testing system Virtual serial port Serial debugging assistant Simulation
TP391+.9
A
國家高技術研究發展計劃(863)基金資助項目(編號:2012AA062203)。
修改稿收到日期:2014-03-11。
作者郭建昌(1978-),男,現為中國礦業大學(北京)通信與信息系統專業在讀博士研究生,講師;主要從事通信與信息系統的研究。