段世梅 劉晶晶 孫倩
中國飛行試驗研究院
多串口數(shù)據(jù)處理系統(tǒng)對實時性、穩(wěn)定性的要求,傳統(tǒng)的軟硬件結(jié)構(gòu)已經(jīng)不能滿足系統(tǒng)性能指標(biāo)的要求,因此需要選用一個新的開發(fā)平臺VxWorks,來滿足系統(tǒng)的設(shè)計要求。
VxWorks是由WindRiver公司開發(fā)的一種實時嵌入式操作系統(tǒng)(ERTOS),是嵌入式開發(fā)環(huán)境的關(guān)鍵組成部分。VxWorks為程序員提供了高效的實時服務(wù)調(diào)度、中斷管理、實時的系統(tǒng)資源以及實時的任務(wù)間通信。VxWorks以其良好的可靠性和卓越的實時性被廣泛的應(yīng)用在通信、軍事、航天、航空、醫(yī)療等高精尖技術(shù)及實時性要求極高的領(lǐng)域中。VxWorks操作系統(tǒng)的基本構(gòu)成模塊包括以下幾部分:高效的實時內(nèi)核Wind、I/O系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)特性、虛擬內(nèi)存(Vxvm)和共享內(nèi)存(VIMP)及板級支持包BSP(Board Support Package)。
多串口數(shù)據(jù)處理系統(tǒng)用于對多個傳感器數(shù)據(jù)的接收、處理,并上傳給上位機。主要功能包括:
采集12路RS232/422數(shù)據(jù)。串口通訊屬性和數(shù)據(jù)格式可設(shè)置;
對12路數(shù)據(jù)按要求的格式進行打包,并通過以太網(wǎng)發(fā)送給上位機。上傳速率、目標(biāo)機和主機的IP地址及端口號可設(shè)置;
驅(qū)動一路離散量輸出,指示前端處理機的運行狀態(tài);
采用VxWorks實時操作系統(tǒng)。軟件能夠在用戶指定的硬件環(huán)境下運行。
多串口數(shù)據(jù)處理系統(tǒng)由多個傳感器、嵌入式開發(fā)平臺、上位機等部分組成,結(jié)構(gòu)框圖如圖1所示。
圖1 多串口數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)框圖
多串口數(shù)據(jù)處理系統(tǒng)主要由12個傳感器、CPU板、多串口卡、USB連接線、網(wǎng)線及上位機等組成。CPU板上集成了四路串口,對CPU板進行相應(yīng)的跳線設(shè)置,可使其工作在RS232模式下。
對多串口卡的8個串口通道使用了三個中斷,對應(yīng)的中斷請求使用下拉電阻即可實現(xiàn)硬件配置。多串口卡配置有8個完全相同、相互獨立的串行通信口。這8個串行異步通信單元(ACE)所用的內(nèi)部工作寄存器有3類:控制、狀態(tài)和數(shù)據(jù),與主板集成串口工作模式兼容。8個串口的基地址和中斷選擇可通過軟件配置。
多串口數(shù)據(jù)處理系統(tǒng)軟件是采用VxWorks操作系統(tǒng)的實時多任務(wù)軟件,實現(xiàn)各通道數(shù)據(jù)的采集、整理和發(fā)送,軟件具有快速啟動、靈活配置等功能。主要由嵌入式操作系統(tǒng)、I/O設(shè)備驅(qū)動程序、配置模塊、初始化模塊、系統(tǒng)狀態(tài)處理任務(wù)、串口通道采集任務(wù)、數(shù)據(jù)發(fā)送任務(wù)等任務(wù)和功能模塊組成。多串口數(shù)據(jù)處理系統(tǒng)軟件工作流程見圖2。
圖2 多串口數(shù)據(jù)處理系統(tǒng)軟件工作流程
多串口數(shù)據(jù)處理系統(tǒng)軟件采用文件加載的方式進行采集任務(wù)的配置。配置文件名稱固定為“setup.ini”,存放在根目錄下。配置文件采用固定的結(jié)構(gòu)形式,用戶只需要調(diào)整相應(yīng)的參數(shù)就可以完成采集任務(wù)的配置。采集任務(wù)配置處理流程如圖3所示。
配置文件詳細描述如下:
當(dāng)配置文件不存在或錯誤時自動按確省模式配置。系統(tǒng)確省配置參數(shù)如下:
應(yīng)用程序通過驅(qū)動0x37A(LPT)的D0位高低變化的頻率來表示系統(tǒng)運行狀態(tài)。
恒高:采集器啟動過程或程序異常;
1秒高低變化1次:采集器工作正常;
1秒高低變化3次:至少有一個通道數(shù)據(jù)失步;
快速高低變化(約1秒8次):數(shù)據(jù)上傳異常。
在BIOS Custom Configuration選項中,LPT1(378/IRQ7)需要設(shè)置為SMSC LPT。
圖3 采集任務(wù)配置處理流程
系統(tǒng)運行狀態(tài)處理任務(wù)通過同步信號量與主控任務(wù)同步,每秒處理次數(shù)與上傳頻率一樣。主要包括系統(tǒng)串口數(shù)據(jù)采集狀態(tài)處理(如接收正常、沒有輸入信號、數(shù)據(jù)失步等)和數(shù)據(jù)上傳狀態(tài)處理,并根據(jù)系統(tǒng)狀態(tài)驅(qū)動DO輸出(優(yōu)先級從高到低為:數(shù)據(jù)上傳異常、至少有一個通道數(shù)據(jù)失步、采集器工作正常)系統(tǒng)運行狀態(tài)處理流程見圖4。
圖4 系統(tǒng)運行狀態(tài)處理流程
系統(tǒng)共有十二路串口,其中COM1~COM4順序?qū)?yīng)CPU主板上的四路串口,COM5~COM12順序?qū)?yīng)MSP-8板卡上的八路串口。數(shù)據(jù)接收采用中斷方式,共有七個中斷資源供程序選擇。COM1~COM4獨立中斷,COM5~COM6兩個串口共享一個中斷,COM7~COM9三個串口共享一個中斷,COM10~COM12三個串口共享一個中斷。
串口數(shù)據(jù)每一幀具有固定的兩個字節(jié)的同步字和特定長度,應(yīng)用程序能夠完成數(shù)據(jù)的采集和數(shù)據(jù)提取,并且對數(shù)據(jù)中斷、失步和接收正常等狀態(tài)進行處理。同步字和數(shù)據(jù)長度可由用戶定制。
連續(xù)1秒接收不到傳感器信號定義為“沒有輸入”,接收到串口數(shù)據(jù)但無法按數(shù)據(jù)格式挑選出完整一幀數(shù)據(jù)定義為“數(shù)據(jù)失步”,接收到串口數(shù)據(jù)且按特定格式挑選出完整一幀數(shù)據(jù)定義為“接收正?!?。
串口數(shù)據(jù)采集流程見圖5。
圖5 串口數(shù)據(jù)采集流程
將采集數(shù)據(jù)按一定的上傳速率發(fā)送給上位機,采用UDP方式。上傳數(shù)據(jù)格式如表8所示。
表8 數(shù)據(jù)上傳格式
每路接收狀態(tài)用數(shù)據(jù)的兩位組合來表示,定義如下:
0X00:接收正常 0X01:串口沒有使能或初始化失敗
0X10:沒有輸入 0X11:數(shù)據(jù)失步
數(shù)據(jù)上傳任務(wù)通過信號量與主控任務(wù)同步。同步字為固定內(nèi)容,每成功發(fā)送一個數(shù)據(jù)包后包序號加一,采集器狀態(tài)由系統(tǒng)狀態(tài)處理任務(wù)生成,各通道的數(shù)據(jù)為最近一次挑選數(shù)據(jù)。如果某一通道沒有輸入或挑選不出滿足格式的數(shù)據(jù),則該通道數(shù)據(jù)為初始值或上拍值。
通道初始值設(shè)置如下:
第1個字節(jié):0XFA
第2個字節(jié):0XFF
后續(xù)字節(jié)從0X00開始,依次加一。最后一個字節(jié)的數(shù)值為總數(shù)據(jù)長度-3。主控計算機應(yīng)該根據(jù)每路接收狀態(tài)進行數(shù)據(jù)處理。當(dāng)且僅當(dāng)該通道接收正常時(狀態(tài)=0X00)對應(yīng)的上傳數(shù)據(jù)才有實際意義。
將bootrom.sys、VxSys.com及VxWorks映像文件拷貝在系統(tǒng)盤上。DOS啟動后,執(zhí)行VxSys C,寫系統(tǒng)引導(dǎo)區(qū)則可。重新啟動系統(tǒng),則可自動加載和運行VxWorks映像文件。接上顯示終端,可以看到系統(tǒng)應(yīng)用配置情況(如圖6所示)。
圖6 系統(tǒng)配置信息
針對多串口數(shù)據(jù)處理系統(tǒng)的特點,采用了嵌入式開發(fā)系統(tǒng)VxWorks,通過實驗,證明該系統(tǒng)具有較強的實時性與穩(wěn)定性,滿足了開發(fā)者的需求。
[1]魯玉生.基于VxWorks的轉(zhuǎn)臺伺服系統(tǒng)設(shè)計與開發(fā),西安電子科技大學(xué)碩士學(xué)位論文,2010年1月
[2]周啟平,張楊.VxWorks下設(shè)備驅(qū)動程序及BSP開發(fā)指南.北京:中國電力出版社,2004年9月
[[3]宋先紅.VxWorks下嵌入式數(shù)據(jù)采集與控制系統(tǒng)的研制,西北工業(yè)大學(xué)碩士學(xué)位論文,2003年2月
[4]馬文興,徐伯夏.VxWorks的串口驅(qū)動原理和串口通信.第十一屆全國抗惡劣環(huán)境計算機學(xué)術(shù)年會,2001年。