郭建昌
(中國礦業(yè)大學(北京)機電與信息工程學院1,北京 100083;南陽理工學院電子與電氣工程學院2,河南 南陽 473000)
虛擬串口測試系統(tǒng)設計
郭建昌1,2
(中國礦業(yè)大學(北京)機電與信息工程學院1,北京 100083;南陽理工學院電子與電氣工程學院2,河南 南陽 473000)
針對嵌入式工程師基于串口的實際測試需要,對虛擬儀器技術、Proteus電路仿真技術、ARM多串口技術和虛擬串口技術進行了研究,設計了基于Proteus和ARM7的虛擬串口測試系統(tǒng),并給出了系統(tǒng)總體設計方案。具體介紹了系統(tǒng)工作原理、Proteus電路詳細設計和對應的軟件設計,并通過了工程應用測試。試驗結果驗證了該設計能實現(xiàn)串口測試命令生成和測試結果分析的功能,滿足嵌入式工程師基于串口的測試需要。
Proteus ARM接口 測試系統(tǒng) 虛擬串口 串口調試助手 仿真
煤礦用手持巡檢儀設計采用ARM7芯片LP2101,功能測試中需要通過PC機中串口調試助手發(fā)送測試命令,需要對串口調試助手接收到的巡檢儀響應數(shù)據(jù)進行分析。但通過串口調試助手發(fā)送的測試命令比較長、種類比較多,所以需要人工不斷地輸入不同的測試命令。同時,巡檢儀響應數(shù)據(jù)也比較長、種類比較多,所以需要人工不斷地分析響應數(shù)據(jù)。
針對這個問題,希望能有一款串口測試軟件,能自動生成測試命令、自動發(fā)送測試命令、自動分析響應數(shù)據(jù)、直接顯示分析結果。遺憾的是如同很多嵌入式工程師一樣,筆者對諸如VB、Visual C或虛擬儀器軟件LabVIEW等可視化開發(fā)環(huán)境熟悉度不深,不能針對不同應用編寫基于串口的測試界面及通信程序[1]。而對嵌入式系統(tǒng)開發(fā)中經(jīng)常用到的電路仿真軟件Proteus則相對比較熟悉。
通過研究分析和工程測試應用,設計了一套基于Proteus和ARM7的虛擬串口測試系統(tǒng),能很好地解決這個問題。
基于Proteus和ARM7的虛擬串口測試系統(tǒng)如圖1所示[2-8]。圖1中,虛線框中代表的是軟件,實線框中代表的是硬件。
圖1 系統(tǒng)總體設計圖Fig.1 General design of the system
測試系統(tǒng)硬件包括PC機、PC機串口(物理串口或者USB轉串口都可以),軟件包括串口調試助手、Proteus軟件、虛擬串口軟件、ARM編譯軟件。其中,Proteus軟件設計測試系統(tǒng)電路,建立電路模型;ARM編譯軟件編譯ARM程序;虛擬串口軟件建立串口調試助手與Proteus電路中ARM7元件的串口連接;串口調試助手通過串口發(fā)送測試命令數(shù)據(jù)和顯示測試結果。本測試系統(tǒng)由相關常用的軟件集成構成。這些軟件對嵌入式工程師來說是比較簡單且經(jīng)常使用的軟件。
測試系統(tǒng)工作原理如下。
①生成測試命令。
PC機中串口調試助手通過虛擬串口發(fā)送簡易測試命令數(shù)據(jù),串口0接收簡易測試命令數(shù)據(jù)。ARM7元件分析接收到的簡易測試命令數(shù)據(jù),生成實際測試命令數(shù)據(jù)。串口1發(fā)送實際測試命令數(shù)據(jù),命令通過PC串口發(fā)送給被測試的嵌入式系統(tǒng)。
②測試結果分析。
串口1通過PC機串口接收嵌入式系統(tǒng)響應的測試數(shù)據(jù),ARM7元件分析測試響應數(shù)據(jù)。串口0通過虛擬串口把分析結果發(fā)送給串口調試助手顯示,從而直接顯示響應結果。
基于Proteus和ARM7的虛擬串口測試系統(tǒng)采用雙串口的ARM7元件,主要是因為嵌入式工程師對串口調試助手和PC機串口最熟悉,應用最多,而嵌入式系統(tǒng)一般都具有串口通信接口。本測試系統(tǒng)中所有的通信節(jié)點都采用串口,通過ARM7元件解析串口助手發(fā)送的簡易測試命令數(shù)據(jù),獲得實際發(fā)送的測試命令數(shù)據(jù)。也就是說,串口調試助手發(fā)送的命令不變,但通過ARM7元件的不同解析可以發(fā)出不同的實際測試命令,減輕了工程師的測試工作量和復雜程度,特別是生成具有校驗碼的測試命令。通過ARM7元件分析接收到的測試響應數(shù)據(jù),把分析結果發(fā)送給串口調試助手直接顯示,工程師可以直接看到測試結果。針對不同的測試需要,工程師只需要調整ARM7元件命令解析和響應數(shù)據(jù)分析功能即可。另外,串口調試助手和ARM7元件串口0的通信參數(shù)可以固定不變,這樣可以進一步減少發(fā)送測試命令的復雜程度;而ARM7元件串口1可以根據(jù)實際測試的嵌入式系統(tǒng)串口通信參數(shù)來設定。
基于Proteus和ARM7的虛擬串口測試系統(tǒng)電路設計包括ARM7元件電路和串口電路設計,如圖2所示。整個電路設計元件比較少,主要包括一個ARM7元件LPC2101[9]和兩個串口元件COMPIM,Proteus元件庫直接添加即可,整個電路設計比較簡單。LPC2101具有雙串口,即串口0(TXD0和RXD0)和串口1(TXD1和RXD1)。串口0與串口元件P0直接連接,P0通過虛擬串口與串口調試助手通信。串口1與串口元件P1直接連接,P1通過PC機串口(物理串口)與被測試的嵌入式系統(tǒng)串口通信。
圖2 測試系統(tǒng)電路圖Fig.2 Circuit of the testing system
本測試系統(tǒng)的軟件設計同樣也是基于ARM7元件串口的,比較簡單。軟件設計包括ARM7元件LP2101串口參數(shù)設置,簡易測試命令數(shù)據(jù)接收、解析及生成實際測試命令,測試響應數(shù)據(jù)分析。測試系統(tǒng)程序流程如圖3所示。
圖3 測試系統(tǒng)程序流程圖Fig.3 Flowchart of the program of testing system
首先進行LP2101初始化,主要是設置串口的通信參數(shù)?;赑roteus和ARM7的串口測試系統(tǒng)中串口調試助手和ARM7元件串口0的通信參數(shù)設置如下:9 600 bit/s,無校驗位,8 bit(data),1 bit(stop)。針對不同的嵌入式設備,可以保持不變,簡化新測試系統(tǒng)的程序修改,也可以采用別的通信參數(shù)。ARM7元件串口1可以根據(jù)被測試的嵌入式系統(tǒng)串口通信參數(shù)設定。串口通信設置完畢后進入接收簡易測試命令狀態(tài),解析串口0接收到的簡易測試命令,生成實際測試命令。在實際軟件設計中,可以采用把實際測試命令放入數(shù)組中的方式,建立簡易測試命令與實際測試命令數(shù)組的關聯(lián)。這樣實際測試命令需要改變時只需要改變命令數(shù)組數(shù)據(jù)即可。然后通過串口1發(fā)送實際測試命令,接著等待接收響應的數(shù)據(jù)并分析,獲得測試結果。測試結果也可以采用數(shù)組方式,設置幾種可能的結果,比如:OK、ERROR。根據(jù)分析的結果,直接通過串口0發(fā)送給串口助手顯示。
筆者參與設計的煤礦用手持巡檢儀測試通信協(xié)議基于Modbus協(xié)議[10],在Modbus數(shù)據(jù)包基礎上增加數(shù)據(jù)包頭和校驗碼。測試命令和響應數(shù)據(jù)格式詳細情況如下。
(1)測試命令格式:包長度+分組信息+設備地址+功能代碼+寄存器地址高位+寄存器地址低位+ CRCH+CRCL+CC。
①包長度:不包括CC校驗碼。即包長度僅包括Modbus標準協(xié)議數(shù)據(jù)包。
②分組信息:指的是各功能模塊。01代表GPS模塊采集到的數(shù)據(jù),02代表ZigBee模塊采集到的數(shù)據(jù),03代表RFID模塊采集到的數(shù)據(jù),04代表氣體檢測、A/D和開關量模塊采集到的數(shù)據(jù)。
③設備地址、功能代碼、寄存器地址高位、寄存器地址低位、CRCL和CRCH:標準的Modbus通信協(xié)議數(shù)據(jù)包。
④CC:累加和校驗,是指前面所有字節(jié)相加取一個字節(jié)(不包括CRC校驗碼)。
(2)巡檢儀響應數(shù)據(jù)格式:包長度+分組信息+設備地址+功能代碼+數(shù)據(jù)數(shù)量+數(shù)據(jù)+CRCH+ CRCL+CC。
①包長度、分組信息和設備地址與測試命令中相同。
②CC:累加和校驗,是指前面所有字節(jié)相加取一個字節(jié)(包括CRC校驗碼)。
③功能代碼、數(shù)據(jù)數(shù)量、數(shù)據(jù)1,…,數(shù)據(jù)n、CRCL和CRCH是標準的Modbus協(xié)議數(shù)據(jù)包。
測試過程如下。串口調試助手采用2.2版本。虛擬串口軟件采用VSP虛擬串口軟件,運行后建立一對虛擬串口,分別與串口調試助手和LP2101串口0相連接。編譯LP2101程序,獲得對應的HEX文件,在Proteus中指定LP2101對應的HEX文件后運行。此時,基于Proteus和ARM7的虛擬串口測試系統(tǒng)已經(jīng)建立,通過串口調試助手發(fā)送簡易測試命令,即可進行測試。
測試中需要發(fā)送4組9 B的測試命令,特別是還包含CRC校驗碼及累加和校驗碼計算。響應的數(shù)據(jù)最短為9 B,需要分析其中的數(shù)據(jù),包括CRC校驗碼及累加和校驗碼。但通過基于Proteus和ARM7的虛擬串口測試系統(tǒng),簡易測試命令只需要4組1 B的命令,分別為01~04。響應數(shù)據(jù)直接顯示為對應設備的具體數(shù)據(jù),如GPS經(jīng)度+實際數(shù)據(jù)維度+實際數(shù)據(jù),即直接顯示分析結果。
測試結果完全達到基于Proteus和ARM7的虛擬串口測試系統(tǒng)設計的目的,實現(xiàn)了相關功能。
基于Proteus和ARM7的虛擬串口測試系統(tǒng)把嵌入式工程師掌握的 ARM7接口及程序設計技術、Proteus仿真技術、虛擬串口技術有機的集成在一起,不需要使用復雜的Visual Basic、Visual C或虛擬儀器軟件LabVIEW等工具開發(fā)測試系統(tǒng),可實現(xiàn)同樣的測試功能,對嵌入式工程師來說靈活度比較高,難度低,并且與對應的產(chǎn)品設計很好地融合在一起,不需要額外的開發(fā)工具,可以說是虛擬儀器技術的靈活應用。根據(jù)不同測試對象,只需要修改ARM7元件的簡易命令解析和響應數(shù)據(jù)分析功能部分程序即可構建新的測試系統(tǒng)。該系統(tǒng)具有串口測試命令生成和測試結果分析的功能。
[1]馮雪飛,陳文亮.Windows平臺下串行通信的幾種實現(xiàn)方法[J].機械制造與自動化,2002(1):33-38.
[2]朱清慧,張鳳蕊,翟天嵩,等.Proteus教程—電子線路設計、制版與仿真[M].北京:清華大學出版社,2008:125-150.
[3]吳海峰,鄧世建,李紅.基于LabVIEW和Proteus的單片機數(shù)據(jù)采集系統(tǒng)仿真[J].礦山機械,2008,36(24):18-21.
[4]周潤景,張麗娜,丁莉.基于PROTEUS的電路及單片機設計與仿真[M].2版.北京:北京航空航天大學出版社,2010:200-234.
[5]張宇,黃偉志,郝巖.基于LabVIEW的多功能數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)[J].自動化儀表,2013,34(8):24-6.
[6]夏偉,鄭詩程,葛蘆生.基于AVR單片機的電網(wǎng)參數(shù)監(jiān)控系統(tǒng)[J].自動化儀表,2008,29(8):35-40.
[7]金昊,柯冬香.PC自動化測試技術及軟件結構[J].自動化儀表,1999,20(4):1-3,9.
[8]汝彥冬.新型井下監(jiān)控分站的設計[J].自動化儀表,2010,31(6):64-66.
[9]陳健.基于微控制器LPC2101的煤礦安全監(jiān)控系統(tǒng)分站的設計[J].中國礦業(yè),2009,18(1):104-108.
[10]胡文翔,蔡政,郭偉瑋,等.面向RS-485控制網(wǎng)絡的Modbus協(xié)議擴展及應用[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
國家高技術研究發(fā)展計劃(863)基金資助項目(編號:2012AA062203)。
修改稿收到日期:2014-03-11。
作者郭建昌(1978-),男,現(xiàn)為中國礦業(yè)大學(北京)通信與信息系統(tǒng)專業(yè)在讀博士研究生,講師;主要從事通信與信息系統(tǒng)的研究。