謝榮清
(中海油田服務股份有限公司,三河 065201)
海上高分辨率地震勘探設備應用在高分辨率地震作業(yè)領域,提供高分辨率的地震資料,得到清晰的地下地質構造成像。對于高分辨率和精確度的物探裝備,采集的數據量也隨之提高,這對數據處理系統的高實時性、高可靠性和高效傳輸性都提出了嚴格的要求[1]。為了達到高效的性能,海上高精度地震采集設備數據采集箱體中央處理器板采用了嵌入式VxWorks操作系統。VxWorks操作系統是美國WindRiver公司于1983年開發(fā)設計的一種嵌入式實時操作系統(RTOS)。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛(wèi)星通訊、軍事演習、彈道制導、飛機導航等[2]。本文的研究內容屬于海上高精度地震采集設備室內部分CPCI箱體中央處理器板的嵌入式軟件設計。
高精度地震數據采集系統主要分為水下部分和室內部分。水下部分4條拖纜接收由震源激發(fā)的地震信號,每塊電纜接口板FCI(Fibre Cable Interface)負責接收1路的拖纜數據,并將其轉化成數字信號傳入室內系統。最后主控工作站和繪圖工作站得到數據并進行處理、分析和存儲。系統結構如圖1所示。
圖1 系統結構Fig.1 System structure diagram
中央處理板是CPCI機箱中一塊電路板,如圖2所示。中央處理板作為CPCI部分的管理單元實現著對4塊FCI板的初始化和管理工作;通過與主控工作站的通訊,實現了對主控命令的轉發(fā)和處理;通過背板CPCI總線把數據從FCI板收集到中央處理板,中央處理板通過千兆網口把數據轉發(fā)到繪圖工作站。本文主要闡述運行在中央處理板上的Vx-Works軟件的設計與實現。
圖2 CPCI機箱各個板卡位置Fig.2 Position of each card of CPCI chassis
中央處理板嵌入式軟件采用模塊化設計,主要分為4個模塊:命令循環(huán)處理模塊、地震數據發(fā)送模塊、命令通道監(jiān)控模塊和地震數據通道監(jiān)控模塊。這四大模塊采用VxWorks的多任務并行處理技術,通過信號量的同步機制[3]實現彼此間的同步協作。為了實現多任務雙工,建立了一個消息指針隊列,用于存放從命令通道接收到主控工作站命令、緩沖中斷消息和命令排隊。
主循環(huán)模塊分為命令接收任務以及命令執(zhí)行和消息發(fā)送任務,命令接收任務使用recv()循環(huán)從網絡接收主控命令,malloc出足夠空間,并將其頭指針添加到消息指針隊列中,當主控沒有發(fā)出命令時,recv()將被阻塞,不會占用CPU。命令執(zhí)行和消息發(fā)送任務從隊列中取出頭指針,調用相應的函數處理命令,最后使用send()返回信息給主控工作站。
地震數據發(fā)送模塊負責地震數據的發(fā)送,在初始化時會建立地震數據的socket客戶端并連接繪圖工作站,如果通道建立,當地震數據到達中央控制板時會實時發(fā)送到繪圖工作站。
兩個監(jiān)控模塊監(jiān)測網絡,一旦出錯就關閉所有現存任務,停止數據的傳輸,并重新開啟網絡通道的server,重新建立連接。
主循環(huán)模塊分為命令接收任務以及命令執(zhí)行和消息發(fā)送任務,兩個任務由于要對公共的指令指針隊列進行操作,故用一個計數型信號量來統一,初始為0;當接收任務接收到一個指令幀或接收完一批數據幀時,釋放信號量(semGive()),命令執(zhí)行和消息發(fā)送任務semTake()到信號量后,從隊頭取出一個指針,對其指向數據相應進行處理(如圖3所示),如果semTake()不到,任務將被掛起,不占用CPU。
圖4描述了整個系統的工作流程,用戶程序首先對硬件進行初始化,然后開始建立網絡鏈接。對于中央處理板來說,系統啟動后開啟地震數據通訊server和指令通訊server,等待主控的連接,連接建立以后,主控對中央控制板進行工作參數的配置,然后中央控制板進入對應的工作狀態(tài)。應用軟件解釋從主控工作站傳來的命令并進行相應的操作,將執(zhí)行結果返回給工作站;地震數據通過數據socket通道發(fā)送給繪圖工作站。
圖3 中央處理板命令執(zhí)行和消息發(fā)送任務流程Fig.3 Flow chart of command execution and message sending
圖4 中央處理板命令接收執(zhí)行和地震數據發(fā)送流程Fig.4 Flow chart of command execution and data sending
在命令循環(huán)接收時涉及到了對隊列的操作,用一個單向鏈表來保存malloc出的指針,由于隊頭的插入會影響到命令執(zhí)行和消息發(fā)送任務,故對頭的插入定為插在當前存在的隊頭后一個。對應有2種情況:
1)當前命令執(zhí)行和消息發(fā)送任務被阻塞,此時隊列為空,插入隊列后將立刻被執(zhí)行。
2)當前命令執(zhí)行和消息發(fā)送任務正在運行,由于優(yōu)先級低于命令接收任務而被打斷,此時隊列不為空,插入到被調用消息指針后面。隊尾的插入則不會影響到消息的執(zhí)行。鏈表的單節(jié)定義如下:
此外還需要3個全局變量struct cmdSingle*queueHead,*queueRear,int queueLen。
鏈表的操作有:
1)queueInit()鏈表初始化;
2)queueAdd(pBuff,pri)鏈表添加元素;
3)queueDelHead()鏈表頭元素刪除[4];
零槽通過中斷以DMA方式經CPCI背板總線從FCI板接收數據,并實現緩存,當4條拖纜數據都到達時通過千兆網口發(fā)給繪圖工作站。
兩個監(jiān)控模塊監(jiān)測網絡,一旦出錯就關閉所有現存任務,停止數據的傳輸,并重新開啟兩個網絡通道的server。對于命令通道的監(jiān)控程序,由于命令循環(huán)處理模塊總是處于recv()被阻塞的狀態(tài),一旦主控強行退出,recv將返回錯誤,通過信號燈通知命令通道的監(jiān)控任務。而對于地震數據,由于只有單向發(fā)送,故還需要發(fā)起一個通過recv()來判斷是否出錯的任務,正常情況下此任務被阻塞,一旦出錯也通過信號燈通知地震數據通道的監(jiān)控任務。
首先利用白盒、黑盒測試方法[5]對嵌入式軟件進行了系統測試,接著進行室內測試,如表1所示。通過上層主控軟件配置 1 ms、2 ms、0.5 ms 不同的采樣率,模擬系統最大負荷。4條拖纜,單纜1920道的數據量,嵌入式軟件都能及時響應主控下發(fā)的命令并解釋處理,同時能夠穩(wěn)定地把4纜(滿負荷數據量:12.96 Mb/s*4 纜=51.84 Mb/s)數據通過千兆網發(fā)送給繪圖工作站,滿足了系統設計要求。
表1 室內數據千兆網傳輸測試表Tab.1 Test form of gigabit data transmission
其次海上高精度地震數據采集系統在渤海、南海進行了大量的二維、三維試驗。二維單纜1 ms、0.5 ms采樣,如表 2 所示。 三維單纜 1 ms、0.5 ms采樣,如表3所示。嵌入式系統軟件均能穩(wěn)定的運行、穩(wěn)定的把數據傳送給繪圖工作站。
中央處理器板嵌入式軟件是海上高精度地震數據采集系統室內部分的重要組成部分,該軟件采用VxWorks嵌入式操作系統,VxWorks以其高實時性和高可靠性在軍事、通信、工業(yè)各個領域廣泛應用。大量的室內測試和海上試驗證明本軟件的可靠性、穩(wěn)定性和高效性,滿足高精度地震數據采集系統的系統需求。
表2 二維單纜數據千兆網傳輸測試表Tab.2 Test form of 2D single cable data transmission
表3 三維雙纜數據千兆網傳輸測試表Tab.3 Test form of 3D two cable data transmission
[1] 阮福明,宋克柱,曹平.海上時延地震勘探記錄系統的設計與研究[J].電子測量與儀器學報,2006,20(4):37-41.
[2] 孔祥營,柏桂枝.嵌入式實時操作系統VxWorks及其開發(fā)環(huán)境Tornado[M].北京:中國電力出版社,2001.
[3] 陳智育,溫彥軍,陳琦.VxWorks程序開發(fā)實踐[M].北京:人民郵電出版社,2004.
[4] WindRiver.VxWorks Programmer’s Guides[M].Edition 1,1999.
[5] Sommerville I.軟件工程[M].程成,譯.北京:機械工業(yè)出版社,2007.■