段世梅 劉晶晶 孫倩
中國飛行試驗研究院
多串口數據處理系統對實時性、穩定性的要求,傳統的軟硬件結構已經不能滿足系統性能指標的要求,因此需要選用一個新的開發平臺VxWorks,來滿足系統的設計要求。
VxWorks是由WindRiver公司開發的一種實時嵌入式操作系統(ERTOS),是嵌入式開發環境的關鍵組成部分。VxWorks為程序員提供了高效的實時服務調度、中斷管理、實時的系統資源以及實時的任務間通信。VxWorks以其良好的可靠性和卓越的實時性被廣泛的應用在通信、軍事、航天、航空、醫療等高精尖技術及實時性要求極高的領域中。VxWorks操作系統的基本構成模塊包括以下幾部分:高效的實時內核Wind、I/O系統、文件系統、網絡特性、虛擬內存(Vxvm)和共享內存(VIMP)及板級支持包BSP(Board Support Package)。
多串口數據處理系統用于對多個傳感器數據的接收、處理,并上傳給上位機。主要功能包括:
采集12路RS232/422數據。串口通訊屬性和數據格式可設置;
對12路數據按要求的格式進行打包,并通過以太網發送給上位機。上傳速率、目標機和主機的IP地址及端口號可設置;
驅動一路離散量輸出,指示前端處理機的運行狀態;
采用VxWorks實時操作系統。軟件能夠在用戶指定的硬件環境下運行。
多串口數據處理系統由多個傳感器、嵌入式開發平臺、上位機等部分組成,結構框圖如圖1所示。

圖1 多串口數據處理系統結構框圖
多串口數據處理系統主要由12個傳感器、CPU板、多串口卡、USB連接線、網線及上位機等組成。CPU板上集成了四路串口,對CPU板進行相應的跳線設置,可使其工作在RS232模式下。
對多串口卡的8個串口通道使用了三個中斷,對應的中斷請求使用下拉電阻即可實現硬件配置。多串口卡配置有8個完全相同、相互獨立的串行通信口。這8個串行異步通信單元(ACE)所用的內部工作寄存器有3類:控制、狀態和數據,與主板集成串口工作模式兼容。8個串口的基地址和中斷選擇可通過軟件配置。
多串口數據處理系統軟件是采用VxWorks操作系統的實時多任務軟件,實現各通道數據的采集、整理和發送,軟件具有快速啟動、靈活配置等功能。主要由嵌入式操作系統、I/O設備驅動程序、配置模塊、初始化模塊、系統狀態處理任務、串口通道采集任務、數據發送任務等任務和功能模塊組成。多串口數據處理系統軟件工作流程見圖2。

圖2 多串口數據處理系統軟件工作流程
多串口數據處理系統軟件采用文件加載的方式進行采集任務的配置。配置文件名稱固定為“setup.ini”,存放在根目錄下。配置文件采用固定的結構形式,用戶只需要調整相應的參數就可以完成采集任務的配置。采集任務配置處理流程如圖3所示。
配置文件詳細描述如下:


當配置文件不存在或錯誤時自動按確省模式配置。系統確省配置參數如下:

應用程序通過驅動0x37A(LPT)的D0位高低變化的頻率來表示系統運行狀態。
恒高:采集器啟動過程或程序異常;
1秒高低變化1次:采集器工作正常;
1秒高低變化3次:至少有一個通道數據失步;
快速高低變化(約1秒8次):數據上傳異常。
在BIOS Custom Configuration選項中,LPT1(378/IRQ7)需要設置為SMSC LPT。

圖3 采集任務配置處理流程
系統運行狀態處理任務通過同步信號量與主控任務同步,每秒處理次數與上傳頻率一樣。主要包括系統串口數據采集狀態處理(如接收正常、沒有輸入信號、數據失步等)和數據上傳狀態處理,并根據系統狀態驅動DO輸出(優先級從高到低為:數據上傳異常、至少有一個通道數據失步、采集器工作正常)系統運行狀態處理流程見圖4。

圖4 系統運行狀態處理流程
系統共有十二路串口,其中COM1~COM4順序對應CPU主板上的四路串口,COM5~COM12順序對應MSP-8板卡上的八路串口。數據接收采用中斷方式,共有七個中斷資源供程序選擇。COM1~COM4獨立中斷,COM5~COM6兩個串口共享一個中斷,COM7~COM9三個串口共享一個中斷,COM10~COM12三個串口共享一個中斷。
串口數據每一幀具有固定的兩個字節的同步字和特定長度,應用程序能夠完成數據的采集和數據提取,并且對數據中斷、失步和接收正常等狀態進行處理。同步字和數據長度可由用戶定制。
連續1秒接收不到傳感器信號定義為“沒有輸入”,接收到串口數據但無法按數據格式挑選出完整一幀數據定義為“數據失步”,接收到串口數據且按特定格式挑選出完整一幀數據定義為“接收正常”。
串口數據采集流程見圖5。

圖5 串口數據采集流程
將采集數據按一定的上傳速率發送給上位機,采用UDP方式。上傳數據格式如表8所示。

表8 數據上傳格式

每路接收狀態用數據的兩位組合來表示,定義如下:
0X00:接收正常 0X01:串口沒有使能或初始化失敗
0X10:沒有輸入 0X11:數據失步
數據上傳任務通過信號量與主控任務同步。同步字為固定內容,每成功發送一個數據包后包序號加一,采集器狀態由系統狀態處理任務生成,各通道的數據為最近一次挑選數據。如果某一通道沒有輸入或挑選不出滿足格式的數據,則該通道數據為初始值或上拍值。
通道初始值設置如下:
第1個字節:0XFA
第2個字節:0XFF
后續字節從0X00開始,依次加一。最后一個字節的數值為總數據長度-3。主控計算機應該根據每路接收狀態進行數據處理。當且僅當該通道接收正常時(狀態=0X00)對應的上傳數據才有實際意義。
將bootrom.sys、VxSys.com及VxWorks映像文件拷貝在系統盤上。DOS啟動后,執行VxSys C,寫系統引導區則可。重新啟動系統,則可自動加載和運行VxWorks映像文件。接上顯示終端,可以看到系統應用配置情況(如圖6所示)。

圖6 系統配置信息
針對多串口數據處理系統的特點,采用了嵌入式開發系統VxWorks,通過實驗,證明該系統具有較強的實時性與穩定性,滿足了開發者的需求。
[1]魯玉生.基于VxWorks的轉臺伺服系統設計與開發,西安電子科技大學碩士學位論文,2010年1月
[2]周啟平,張楊.VxWorks下設備驅動程序及BSP開發指南.北京:中國電力出版社,2004年9月
[[3]宋先紅.VxWorks下嵌入式數據采集與控制系統的研制,西北工業大學碩士學位論文,2003年2月
[4]馬文興,徐伯夏.VxWorks的串口驅動原理和串口通信.第十一屆全國抗惡劣環境計算機學術年會,2001年。