華逸飛,李維波,方雄偉,許智豪,徐聰,員欽生
1武漢理工大學自動化學院,湖北武漢430070
2海軍工程大學電氣工程學院,湖北武漢430033
3上海船用柴油機研究所,上海200090
傳統(tǒng)的艦船推進方式采用原動機進行推進,而目前的電力推進艦船則是由原動機帶動發(fā)電機,然后通過推進電動機驅(qū)動螺旋槳進行推進。電力推進由于具有諸多明顯的優(yōu)勢已成為21世紀艦船動力發(fā)展的主要方向,而能量管理系統(tǒng)則是電力推進系統(tǒng)的重要組成部分[1-2]。
能量管理系統(tǒng)可對艦船電能進行集中調(diào)度、管理和控制,是綜合電力系統(tǒng)艦船的核心控制部分之一。能量管理系統(tǒng)能夠綜合考慮并實現(xiàn)發(fā)電自動化、系統(tǒng)監(jiān)測報警、輸配電監(jiān)控保護及用電設(shè)備的監(jiān)控管理,能綜合優(yōu)化船舶電力系統(tǒng)的經(jīng)濟性、可靠性及安全穩(wěn)定性,為現(xiàn)代大型船舶提供穩(wěn)定、可靠、經(jīng)濟的電力能源[3-4]。
能量管理系統(tǒng)通常采用“二層網(wǎng)絡(luò)、三級設(shè)備”的網(wǎng)絡(luò)構(gòu)架,頂層一般采用冗余的工業(yè)以太網(wǎng)連接各種設(shè)備控制器,下層一般為CAN總線組成現(xiàn)場網(wǎng)絡(luò),與底層設(shè)備進行連接[5-7]。
艦船能量管理系統(tǒng)中的可視化系統(tǒng)是整個系統(tǒng)的人機接口單元,負責整個能量系統(tǒng)中參數(shù)的顯示、管理以及故障的實時報警,同時能夠?qū)Φ讓釉O(shè)備下達控制指令,是艦船能量管理系統(tǒng)安全運行的重要保障。
傳統(tǒng)的嵌入式圖形可視化開發(fā)一般使用Microsoft Visual C++(VC),QT等軟件,這些軟件雖然能夠達到理想的人機界面,但是存在開發(fā)周期長、上手難度大等缺點,為此,本文采用Tilcon軟件進行可視化應(yīng)用研究。目前,Tilcon軟件作為VxWorks操作系統(tǒng)下的圖形可視化開發(fā)工具,具有大量的成熟控件,無需像傳統(tǒng)的可視化開發(fā)軟件那樣,通過調(diào)用函數(shù)去畫線填充以及美化圖形,把用戶從大量編碼的圖形可視化開發(fā)方式中解放出來,簡化了嵌入式圖形的可視化開發(fā)過程[8-9]。
為了保證系統(tǒng)的實時性,本文采用VxWorks操作系統(tǒng)。該操作系統(tǒng)是由美國Wind River公司針對嵌入式系統(tǒng)開發(fā)的實時操作系統(tǒng)。由于其高性能、高可靠性、可剪裁性以及友好的用戶開發(fā)環(huán)境等特點,被廣泛應(yīng)用于軍用和民用的高科技領(lǐng)域[10]。
本文將以某艦船的能量管理系統(tǒng)為基礎(chǔ),針對該船的實際情況,給出艦船能量管理系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu),分析UDP通信并提出設(shè)計方案,研究網(wǎng)絡(luò)架構(gòu)中的可視化關(guān)鍵技術(shù)及其實現(xiàn)方法,確保艦船能量管理系統(tǒng)能夠健康、安全和可靠運行。
某艦船能量管理系統(tǒng)由1個可視化系統(tǒng)、1臺能量管理系統(tǒng)中心控制器以及下層的供電監(jiān)測系統(tǒng)、配電監(jiān)測系統(tǒng)、絕緣監(jiān)測系統(tǒng)、推進監(jiān)測系統(tǒng)和故障錄播系統(tǒng)組成,該系統(tǒng)的主干控制網(wǎng)采用雙冗余CAN網(wǎng),顯示用數(shù)據(jù)網(wǎng)采用雙冗余以太網(wǎng)。能量管理系統(tǒng)中心控制器為整個系統(tǒng)的核心,負責整個雙冗余CAN網(wǎng)絡(luò)內(nèi)數(shù)據(jù)的處理、調(diào)度以及控制指令的下發(fā),并通過雙冗余以太網(wǎng)與可視化系統(tǒng)進行數(shù)據(jù)交互。而供電監(jiān)測系統(tǒng)、配電監(jiān)測系統(tǒng)、推進監(jiān)測系統(tǒng)、絕緣監(jiān)測系統(tǒng)和故障錄播系統(tǒng)則負責與底層控制器之間的交互,將來自底層設(shè)備的數(shù)據(jù)參數(shù)轉(zhuǎn)換為CAN信號并轉(zhuǎn)發(fā)至雙冗余CAN網(wǎng)中,同時能夠接收來自雙冗余CAN網(wǎng)的指令操作底層設(shè)備。整個能量管理系統(tǒng)的系統(tǒng)框圖如圖1所示。
本文研究的重點為可視化系統(tǒng),該系統(tǒng)需要實時顯示艦船能量管理系統(tǒng)中所有的測點信息,并且能夠?qū)收闲畔⑦M行報警,是整個系統(tǒng)安全運行的重要保證。
能量管理系統(tǒng)中心控制器,通過雙冗余以太網(wǎng)完成與可視化系統(tǒng)之間的通信。因為用戶數(shù)據(jù)報協(xié)議(UDP)無需建立連接,故通信效率高[11]。而可視化系統(tǒng)僅用于數(shù)據(jù)顯示和部分數(shù)據(jù)下發(fā),適合采用UDP通信。UDP發(fā)送端的通信流程如圖2所示,其運行步驟簡述如下:
1)通過調(diào)用socket()函數(shù)建立數(shù)據(jù)報套接字并且返回套接字號;
2)通過調(diào)用bind()函數(shù)將套接字與本地地址綁定;
3)調(diào)用sendto()函數(shù)發(fā)送數(shù)據(jù);
4)調(diào)用close()函數(shù)關(guān)閉套接字,服務(wù)結(jié)束。
UDP接收端的通信流程如圖3所示,其運行步驟為:
1)通過調(diào)用socket()函數(shù)建立數(shù)據(jù)報套接字并且返回套接字號;
2)通過調(diào)用bind()函數(shù)將套接字與本地地址綁定;
3)接著通過調(diào)用recvfrom()函數(shù)接收數(shù)據(jù);
4)最后調(diào)用close()函數(shù)關(guān)閉套接字,服務(wù)結(jié)束。
其中,VxWorks系統(tǒng)下的UDP網(wǎng)絡(luò)通信socket編程分為以下2種方式:
1)阻塞模式:調(diào)用結(jié)果返回之前,當前任務(wù)會被掛起,函數(shù)只有在得到結(jié)果之后才會返回。
2)非阻塞模式:即使不能立刻得到結(jié)果,當前任務(wù)也不會被掛起,而會立刻返回。
UDP通信初始化階段默認接收(recvfrom)為阻塞模式,發(fā)送(send)為非阻塞模式,這就意味著在沒有接收到數(shù)據(jù)的時候,程序?qū)⒉粫?zhí)行讀取語句后續(xù)的程序,而發(fā)送數(shù)據(jù)的時候則不管對方是否能夠接收,直接把數(shù)據(jù)發(fā)送至網(wǎng)絡(luò)中。
阻塞模式的響應(yīng)速度比非阻塞模式快,因為若有數(shù)據(jù)可以讀取,將會立刻調(diào)用recvfrom函數(shù)讀取數(shù)據(jù),但是非阻塞模式卻要順序執(zhí)行之后才能讀取數(shù)據(jù)。若采取阻塞模式,當任務(wù)出現(xiàn)阻塞時,會對后續(xù)的數(shù)據(jù)解析處理造成影響。為了排除阻塞模式對數(shù)據(jù)解析的影響,可以創(chuàng)建2個任務(wù),一個通信任務(wù),一個數(shù)據(jù)解析處理任務(wù),當通信任務(wù)因為阻塞而被掛起的時候,數(shù)據(jù)處理任務(wù)仍然可以正常執(zhí)行,但這樣可能會因任務(wù)時序造成數(shù)據(jù)出錯,因此不建議采用。
如果對系統(tǒng)響應(yīng)時間要求較低,可以把任務(wù)改為非阻塞模式,數(shù)據(jù)接收和數(shù)據(jù)解析在一個函數(shù)中執(zhí)行,這樣既可以減少任務(wù)開銷,也可以讓數(shù)據(jù)解析更加可靠。本文中的可視化系統(tǒng)僅用于數(shù)據(jù)的顯示和部分指令的下發(fā),對響應(yīng)時間要求不是很高,因此采用非阻塞的方式進行接收,同時將數(shù)據(jù)接收和數(shù)據(jù)解析一同處理。
通過調(diào)用ioctl函數(shù),可以設(shè)置socket為非阻塞模式,其核心代碼為:
基于Tilcon軟件的可視化圖形的開發(fā)過程包含如下3個部分:
1)嵌入式圖形開發(fā)工具:負責完成界面的繪制,能夠通過調(diào)用各種不同的控件構(gòu)建復(fù)雜的可視化圖形界面。除了成熟的控件外,Tilcon也支持自定義控件設(shè)定功能,控件選項中還包含回調(diào)函數(shù)和觸發(fā)器等配置,通過這些選項能夠完成控件之間的相互關(guān)聯(lián),這些控件除了數(shù)據(jù)顯示以外與用戶的應(yīng)用程序完全分離開來,僅靠控件自身的ID與應(yīng)用程序進行關(guān)聯(lián),最終生成被可視化界面引擎所調(diào)用的.twd圖形資源文件。
2)嵌入式圖形界面引擎:獨立于應(yīng)用程序之外的一個系統(tǒng),除了能夠執(zhí)行API函數(shù)對界面上的控件進行設(shè)置顯示之外,還可以對顯示控件的數(shù)據(jù)結(jié)構(gòu)進行維護,它是將VxWorks操作系統(tǒng)下界面顯示與.twd圖形資源文件進行連接的橋梁。
3)應(yīng)用程序接口函數(shù)API:應(yīng)用接口程序函數(shù)API是將應(yīng)用程序和圖形界面連接起來的協(xié)議,通過調(diào)用這些API函數(shù)能夠完成對應(yīng)控件的初始化、數(shù)據(jù)顯示和其他功能操作。
圖4所示為基于Tilcon軟件由數(shù)據(jù)獲取到界面顯示的過程,其關(guān)鍵性運行步驟為:
1)通過外部通信的方式獲取采集到的數(shù)據(jù);
2)通過調(diào)用應(yīng)用接口程序API將顯示用的控件進行初始化;
3)載入嵌入式圖形界面引擎;
4)完成圖形界面的顯示。
對于需要顯示較多數(shù)據(jù)的系統(tǒng),通常需要通過不同的窗口分類顯示,Tilcon軟件下的多頁面切換一般有如下2種方法:
1)采用多張.twd圖形資源文件,每次需要切換頁面的時候?qū)斍绊撁娴?twd圖形資源文件刪除,接著載入另外一張.twd圖形資源文件并進行顯示。優(yōu)點是每次只載入需要顯示的窗口控件,但是要耗用大量的內(nèi)存,每次切換界面都需要刪除并且載入.twd圖形資源文件,切換過程中屏幕閃爍嚴重,且可能造成死機的問題。
2)采用panel控件方式,只采用一張.twd圖形作為界面底圖,設(shè)置多個panel控件,所有顯示用控件均放置在panel控件中,通過切換panel控件的方式來完成界面切換,程序初始化的時候僅載入主panel窗口,其余panel窗口通過TRT_SetValues函數(shù)將其TRT_ATT_HIDE參數(shù)設(shè)置為0進行隱藏。優(yōu)點是只采用一張.twd圖,每次只需要顯示當前頁面的panel控件,將其余panel控件進行隱藏,雖然需要實時設(shè)置所有控件的數(shù)值,但是比起第1種方法,極大地減少了內(nèi)存的使用,同時也提高了切換速度。
經(jīng)過對比可知,采用panel控件切換界面的方式節(jié)約了系統(tǒng)內(nèi)存,降低了系統(tǒng)任務(wù)級的開銷,提高了切換速度,相對于采用.twd圖形文件切換的方式優(yōu)勢明顯。
本文采用panel控件的方式進行界面切換,解決了Tilcon下多頁面切換中屏幕閃爍嚴重和內(nèi)存占用過大的問題,避免了因為內(nèi)存不足而造成頻繁死機的難題。
可視化系統(tǒng)上電之后,自動載入.out文件,入口函數(shù)為main,接著執(zhí)行如圖5所示的流程,進行啟動與刷新,其關(guān)鍵步驟為:
1)通過TRT_Start函數(shù)啟動界面引擎,將VxWorks系統(tǒng)和Tilcon的插件進行關(guān)聯(lián),關(guān)聯(lián)之后才可以調(diào)用API函數(shù)對界面中的控件進行設(shè)置操作;
2)調(diào)用TRT_WindowLoad函數(shù),從界面路徑之中獲取.twd文件,并載入系統(tǒng)內(nèi)存之中;
3)調(diào)用TRT_WindowDisplay函數(shù)將.twd文件加載至窗口進行顯示,至此界面啟動完畢;
4)進入應(yīng)用程序主循環(huán),應(yīng)用程序可以通過TRT_GetInput函數(shù),獲取外部鼠標或者鍵盤按鍵輸入;
5)調(diào)用TRT_SetValues函數(shù),將通過以太網(wǎng)通信獲取的數(shù)據(jù)用于設(shè)置對應(yīng)控件的數(shù)值,以刷新界面的顯示內(nèi)容。
VxWorks軟件支持文件系統(tǒng),為防斷電之后數(shù)據(jù)丟失,可以將數(shù)據(jù)存儲至文本文件之中。當報警信息由0變?yōu)?(即上升沿觸發(fā))時判定報警發(fā)生,將報警信息及其當前時標等參數(shù)寫入文本文檔中,在以下2種情況下需要進行報警文本的讀寫:
1)每次開機初始化調(diào)用read()函數(shù),將報警記錄文本文檔中的內(nèi)容拷貝至結(jié)構(gòu)體數(shù)組之中;
2)每次觸發(fā)報警之后,調(diào)用Write()函數(shù)將結(jié)構(gòu)體數(shù)組寫入報警記錄文本文檔中。
基于VxWorks系統(tǒng)下實現(xiàn)文本的寫入操作步驟為:
為了驗證應(yīng)用于艦船能量管理系統(tǒng)中的VxWorks可視化技術(shù)的有效性,將上述可視化設(shè)計技術(shù)進行工程化驗證。工程樣機的配置為:
1)圖形可視化開發(fā)軟件為Tilcon5.8;
2)軟件開發(fā)平臺為Work Bench3.2;
3)操作系統(tǒng)為VxWorks6.8。
本文以能量管理系統(tǒng)中供電部分的可視化設(shè)計為例進行說明,該可視化設(shè)計由1#機組參數(shù)欄(又稱主窗口)、2#機組參數(shù)欄、3#機組參數(shù)欄、4#機組參數(shù)欄、1#柴油發(fā)電機參數(shù)欄、2#柴油發(fā)電機參數(shù)欄以及報警記錄欄7個窗口組成。其設(shè)置情況為:
1)1#機組參數(shù)欄(主窗口):負責顯示1號機組機柜溫度、機組狀態(tài)、三相電壓、三相電流、有功功率、無功功率以及頻率等參數(shù),采用了指示燈、文本框、條形圖以及數(shù)字儀表等多種控件,增加了可視化效果,并且添加了時間顯示。
2)2#機組參數(shù)欄、3#機組顯示欄和4#機組顯示欄:分別顯示了2#機組、3#機組以及4#機組的相關(guān)參數(shù),它們的顯示內(nèi)容與1#機組參數(shù)欄(主窗口)類似。
3)1#柴油發(fā)電機參數(shù)欄和2#柴油發(fā)電機參數(shù)欄:用于監(jiān)測2臺柴油發(fā)電機的運行狀態(tài),顯示柴油發(fā)電機的輸出電壓、輸出電流、頻率、機油壓力和冷卻系統(tǒng)溫度等參數(shù),同時能夠?qū)^壓、過流、超頻等故障進行報警顯示。
4)報警記錄欄窗口:負責記錄4臺機組以及2臺柴油發(fā)電機的故障信息,將報警信號按照級別進行分類,不同的報警信號用不同的顏色顯示,同時顯示報警時間,保證了重要信息的存儲。
由于篇幅有限,本文僅給出了1#機組參數(shù)欄和報警記錄欄工程樣機設(shè)置界面圖。其中,圖6顯示的是1#機組參數(shù)欄的界面,它負責顯示1#機組的運行、準備以及遙控狀態(tài),同時監(jiān)測1#機組機柜的進出風溫度的越限報警等狀態(tài)參數(shù),其中模擬量參數(shù)以3種形式分別顯示:
1)以文本框的形式顯示1#機組的電壓功率等模擬量參數(shù);
2)以柱狀圖的形式顯示當前1#機組的帶載情況;
3)以儀表盤的形式顯示1#機組的轉(zhuǎn)速以及滑油壓力等參數(shù)。
圖7所示為報警記錄欄的界面,它采用表格的方式顯示報警信息,顯示了4臺機組以及2臺柴油發(fā)電機的一類故障或二類故障等報警信號,并且區(qū)分了報警級別,記錄了報警時間。
經(jīng)工程驗證,實現(xiàn)了應(yīng)用于艦船能量管理系統(tǒng)中的VxWorks可視化技術(shù)、多頁面切換技術(shù)、界面啟動與刷新技術(shù),同時解決了頁面切換過程中屏幕閃爍、內(nèi)存不足而造成頻繁死機以及重要信息遺失等問題。
本文研究了應(yīng)用于艦船能量管理系統(tǒng)中的VxWorks可視化設(shè)計技術(shù),以UDP通信為核心,采用實時性高的VxWorks操作系統(tǒng)以及具有較高可維護性和可靠性的Tilcon軟件進行圖形可視化開發(fā),著重分析了網(wǎng)絡(luò)架構(gòu)中Tilcon可視化原理、多頁面切換技術(shù)、界面啟動與刷新技術(shù)以及故障報警和記錄技術(shù),解決了界面啟動刷新顯示、多頁面切換由于內(nèi)存不足而導(dǎo)致經(jīng)常死機以及重要信息遺漏丟失等問題。工程樣機的現(xiàn)場實測結(jié)果表明,該方法能夠成功應(yīng)用于艦船能量管理的可視化系統(tǒng),且具有運行穩(wěn)定、操作簡潔、實時性高等優(yōu)點,是比較理想的圖形界面解決方案,具有較高的推廣應(yīng)用價值。