張義彬 詹 杰*
( 湖南科技大學(xué)物理與電子科學(xué)學(xué)院,湖南 湘潭411201)
開發(fā)用于高空風(fēng)能發(fā)電的控制系統(tǒng)軟件是一項(xiàng)復(fù)雜的任務(wù), 特別是如果風(fēng)箏由機(jī)載舵吊艙控制器控制的話。 除了風(fēng)箏的操縱吊艙之外,整個(gè)系統(tǒng)的自動(dòng)化還包括地面站上的多個(gè)傳感器和執(zhí)行器,用于操控繩索和執(zhí)行啟動(dòng)與恢復(fù),一個(gè)數(shù)據(jù)記錄系統(tǒng)以及用戶界面。 為此, 我們設(shè)計(jì)了控制風(fēng)箏發(fā)電機(jī)系統(tǒng)的軟件設(shè)計(jì)思路。
控制吊艙為小批量生產(chǎn)的, 它嵌入了兩個(gè)專用的優(yōu)化控制板: 飛行控制計(jì)算機(jī)板和用于風(fēng)箏執(zhí)行器的運(yùn)動(dòng)控制板。 驅(qū)動(dòng)執(zhí)行器的能量以及到機(jī)載部件的通信數(shù)據(jù)必須通過牽引繩由船向風(fēng)箏傳遞。為與電纜導(dǎo)線的固有電阻相適應(yīng),使用了120 伏的非標(biāo)準(zhǔn)電動(dòng)機(jī)供電電壓。 因此, 考慮到成本和重量兩方面因素,將電源管理和數(shù)據(jù)調(diào)制解調(diào)器電路集成到傳感器數(shù)據(jù)采集和控制計(jì)算機(jī)平臺(tái)中非常有益。 通過平衡硬件和軟件的魯棒性需求, 嵌入式控制器解決方案需遞歸地開發(fā)。 為了提高電子電路的穩(wěn)定性, 所有的信號(hào)處理被限制在所需的帶寬上。 適用于在48 MHz 時(shí)鐘頻率下工作的微處理器。結(jié)果,只有那些需要自動(dòng)放風(fēng)箏的算法在控制艙中進(jìn)行處理,包括導(dǎo)航、數(shù)據(jù)融合和運(yùn)動(dòng)控制算法。 為了降低生產(chǎn)成本并簡化維修技師的要求, 飛行計(jì)算機(jī)板與運(yùn)動(dòng)控制板分離, 以適應(yīng)不同風(fēng)箏尺寸的平臺(tái)策略。其結(jié)果是,僅需要改變功率分量以適應(yīng)風(fēng)箏尺寸。使用CAN總線將現(xiàn)在和以后的吊艙組件連接在一起,解決軟件體系結(jié)構(gòu)的這個(gè)挑戰(zhàn)。 CAN 總線能夠進(jìn)行確定性定時(shí)和自仲裁,在屬性上確保了高優(yōu)先級(jí)消息的傳輸。 因此,在系統(tǒng)的未來擴(kuò)展中,沒有先前驗(yàn)證的定時(shí)或運(yùn)動(dòng)控制屬性丟失。 當(dāng)將額外的傳感器或數(shù)據(jù)記錄器結(jié)合到生產(chǎn)等級(jí)系統(tǒng)中用于研究和開發(fā)時(shí),這是有價(jià)值的。為了最大限度地利用這些屬性,我們選擇了pod 內(nèi)通信數(shù)據(jù)的可變抽象,如圖1 所示。
圖1 POD 變量內(nèi)部數(shù)據(jù)表示原理( UML 靜態(tài)結(jié)構(gòu))
變量由PodVariable 類表示, 并且可以附加到CAN 傳輸層,該傳輸層能夠立即將消息排入微控制器的傳出CAN 緩存中。因此,只要總線可用,就會(huì)在CAN 總線上廣播變量。易用的獲取器和設(shè)置器實(shí)現(xiàn)了不同數(shù)據(jù)的表示,并且通過中央消息id 文件完成對(duì)CAN 傳輸層的注冊。 這允許在編譯時(shí)檢測和消除死連接,并且軟件程序員團(tuán)隊(duì)成員可以共享中心電報(bào)文檔。
因?yàn)閭鞲衅鞯男畔⒖赡苁钱?dāng)前活動(dòng)的,也可能過時(shí),操作控制算法的魯棒性關(guān)鍵取決于這些信息特征。 因此, 變量的一個(gè)重要屬性是TTL 特征,它表示變量的生存時(shí)間。
計(jì)算如下:在每個(gè)SET( )變量的訪問中,生存時(shí)間被重置為默認(rèn)值。 每個(gè)控制循環(huán)調(diào)用通過一個(gè)計(jì)數(shù)遞減值。 當(dāng)TTL 值耗盡時(shí),意味著變量過時(shí),它具有的意義是,算法可以采取相應(yīng)的行動(dòng)針對(duì)變量是否過時(shí),例如切換到回收方案。
計(jì)算機(jī)在內(nèi)部循環(huán)啟動(dòng)的同時(shí)在CAN 總線上放置一個(gè)循環(huán)啟動(dòng)報(bào)文。這允許所有總線通信參與者同步其內(nèi)部控制回路。不需要進(jìn)一步的機(jī)制來保證實(shí)時(shí)操作和確定性的CAN 總線訪問。
模塊集成模式如下。 模塊使用輸入向量pod 變量,operation( )調(diào)用和輸出變量的向量。 輸入和輸出變量通過引用傳遞。這允許統(tǒng)一的模塊文檔并簡化軟件單元測試[6,12]的開發(fā),因?yàn)閷⒄{(diào)度實(shí)現(xiàn)與任務(wù)實(shí)現(xiàn)分離。 按照這個(gè)規(guī)范,靜態(tài)測試[5,11]以及大量運(yùn)行時(shí)測試可以在臺(tái)式計(jì)算機(jī)上執(zhí)行, 而不是在目標(biāo)系統(tǒng)上執(zhí)行, 這加快了開發(fā)的速度。 目標(biāo)系統(tǒng)中的定時(shí)驗(yàn)證可以通過使用消息嗅探器直接在CAN 總線上進(jìn)行。
控制算法的配置參數(shù)由相同的變量抽象表示, 并且從中央數(shù)據(jù)處理計(jì)算機(jī)上傳到低帶寬信道上,并作為低優(yōu)先級(jí)消息在CAN 總線上轉(zhuǎn)發(fā)。
利用這些技術(shù),嵌入式軟件組件變得適應(yīng)性強(qiáng),并可得到輕松的質(zhì)量保證。
發(fā)射和回收處理的系統(tǒng)由拖曳絞車、 可傾斜的伸縮桅桿和附加絞車組成。 這個(gè)額外的絞盤控制著一根線, 該線負(fù)責(zé)在著陸過程中引導(dǎo)風(fēng)箏,并在風(fēng)箏放走之前對(duì)風(fēng)箏進(jìn)行收帆處理。
整個(gè)裝置由工業(yè)PLC 控制, 以滿足ISO 13849 的功能安全要求。 根據(jù)指導(dǎo)方針, 即使裝置與飛控計(jì)算機(jī)通信或中央數(shù)據(jù)的采集中斷,也必須保持功能特性。 因此,可以直接在模塊級(jí)別上處理與安全相關(guān)的屬性,以盡可能擴(kuò)展。 安全關(guān)鍵模塊越小,模塊之間的耦合越小,構(gòu)建安全案例所需的工作就越少,并且根據(jù)IEC 61508 記錄了所需屬性的驗(yàn)證。
因此,組織PLC 軟件的軟件模型被選擇為中央有限狀態(tài)自動(dòng)機(jī),其特性易于文檔化和驗(yàn)證。
圖2 中概述了子模塊組織的原理。 每個(gè)子模塊都知道中央自動(dòng)機(jī)狀態(tài),并且必須自組織它的內(nèi)部狀態(tài)轉(zhuǎn)換。 例如當(dāng)中央自動(dòng)機(jī)從飛行狀態(tài)切換到操縱狀態(tài)時(shí),負(fù)責(zé)海浪運(yùn)動(dòng)補(bǔ)償?shù)哪K必須正確地管理模塊內(nèi)部的液壓絞車參考信號(hào)。 與單片強(qiáng)耦合模型相比,這更易于驗(yàn)證。
圖2 由中央自動(dòng)機(jī)組織的PLC 軟件模塊
此外,模塊可以在組件測試床上投入運(yùn)行,從而加速軟件開發(fā)。 當(dāng)這些模塊連接到運(yùn)行中的風(fēng)箏推進(jìn)系統(tǒng)中的中央控制自動(dòng)機(jī)上時(shí),先前驗(yàn)證過的特性不會(huì)受到影響。
風(fēng)箏推進(jìn)系統(tǒng)的中央計(jì)算機(jī)利用工業(yè)PC 機(jī)接收、記錄、處理和轉(zhuǎn)發(fā)來自每個(gè)系統(tǒng)部件的數(shù)據(jù)。 選擇了基于PC 的硬件,因?yàn)樗梢暂p松記錄所有傳感器數(shù)據(jù)軌道,控制算法的輸出值和輔助數(shù)據(jù),如算法參數(shù)和用戶輸入。 日志記錄每天產(chǎn)生大約三千兆字節(jié)的未壓縮數(shù)據(jù),這些數(shù)據(jù)被壓縮存儲(chǔ)在硬盤上。 由于數(shù)據(jù)采集和處理主循環(huán)必須與飛控計(jì)算機(jī)的控制周期同步,所以Linux 操作系統(tǒng)安裝了一個(gè)實(shí)時(shí)擴(kuò)展功能。 其優(yōu)點(diǎn)包括Linux高分辨率計(jì)時(shí)器和快速響應(yīng)時(shí)間,但代價(jià)是處理速度會(huì)顯著降低。
由于牽引繩通信的調(diào)制解調(diào)器被限制在有限的帶寬內(nèi),因此與飛控計(jì)算機(jī)交換的通信分組被分為兩個(gè)部分:一個(gè)部分的特征是可變數(shù)據(jù),稱為等時(shí)數(shù)據(jù)。 在多路復(fù)用時(shí)隙中傳輸較少更新的變量。 另一部分包括面向信道的排隊(duì)消息傳輸。 實(shí)現(xiàn)高優(yōu)先級(jí)和標(biāo)準(zhǔn)優(yōu)先級(jí)隊(duì)列,為用戶命令路由和安全關(guān)鍵消息提供高優(yōu)先級(jí)隊(duì)列,而標(biāo)準(zhǔn)隊(duì)列用于更新配置數(shù)據(jù)和從飛控計(jì)算機(jī)傳輸調(diào)試消息。
可以通過TCP 連接將多個(gè)圖形用戶接口連接到中央控制計(jì)算機(jī)。 在船橋上連續(xù)使用一個(gè)GUI 用于系統(tǒng)的用戶操作,另外一些GUI 可用于服務(wù)以及實(shí)驗(yàn)?zāi)康摹?這一特征在研究過程中具有特殊的重要價(jià)值。 開展飛行試驗(yàn), 需要從船舶艏樓區(qū)域進(jìn)行嚴(yán)格監(jiān)督。 因此,必須實(shí)現(xiàn)事件模型,它允許以安全的方式處理多個(gè)并發(fā)的用戶交互。 圖3 給出了解決方案的概述。
每個(gè)GUI 向中央控制計(jì)算機(jī)提供事件輸入, 這些事件輸入在內(nèi)部事件隊(duì)列中排隊(duì),并在內(nèi)部自動(dòng)化控制中觸發(fā)動(dòng)作。 控制自動(dòng)機(jī)生成事件, 這些事件被傳送到飛控計(jì)算機(jī)。 這臺(tái)計(jì)算機(jī)上運(yùn)行的自動(dòng)化程序通過更新同步變量來回傳它們的狀態(tài),以便控制自動(dòng)機(jī)根據(jù)需要采取行動(dòng)。 發(fā)射與回收系統(tǒng)的PLC 由同一個(gè)系統(tǒng)范式連接,它接收狀態(tài)改變請(qǐng)求事件,并將中央自動(dòng)機(jī)的實(shí)際狀態(tài)發(fā)送回。 為了減少實(shí)現(xiàn)錯(cuò)誤,為PLC 和中央控制計(jì)算機(jī)開發(fā)了基于XML 描述文件的自動(dòng)代碼生成工具。
將中央控制納入運(yùn)作的一個(gè)核心問題是選擇模塊組織模式。 如果組件之間的耦合較低,則軟件更易于開發(fā)、測試和維護(hù)。因此,在用于新設(shè)計(jì)的復(fù)雜控制系統(tǒng)中, 通常選擇使用通信中間件。但是,對(duì)于整個(gè)系統(tǒng)來說,為了滿足交付期限問題,放棄某些關(guān)鍵模塊的測試覆蓋率是不可接受的。 因此, 現(xiàn)代技術(shù)已經(jīng)被合并到遺留變量抽象中, 其結(jié)果在圖4 中描述。 除了顯著降低開發(fā)復(fù)雜性之外,變量實(shí)現(xiàn)的單元測試比通信中間件的測試和維護(hù)工作更少。
圖3 事件傳播模型
圖4 變量抽象和XML 驅(qū)動(dòng)的工廠模式
變量實(shí)現(xiàn)的特點(diǎn)是封裝了三種可能的數(shù)據(jù)類型:整數(shù)( 對(duì)于狀態(tài)自動(dòng)機(jī)很重要)、浮點(diǎn)和文本字符串。 整數(shù)和浮點(diǎn)類型可以直接附加到通信對(duì)象等時(shí)段, 而字符串僅限于面向通道的段。變量還包括獲取變量的接口信息,全文描述,物理單元信息和時(shí)間實(shí)時(shí)設(shè)定值。 變量配置由XML 描述文件維護(hù),運(yùn)行時(shí)對(duì)象由工廠類實(shí)例化。 這使得配置管理更容易。 對(duì)變量的訪問由快速名稱服務(wù)完成,其數(shù)據(jù)庫( 即散列表)在對(duì)象生成過程期間建立。如果名稱請(qǐng)求失敗,則返回對(duì)虛擬對(duì)象的引用。這減少了模塊之間的耦合,因此,當(dāng)應(yīng)用經(jīng)常變化時(shí),增加了實(shí)驗(yàn)軟件的穩(wěn)定性。 模塊實(shí)現(xiàn)遵循與飛控計(jì)算機(jī)軟件相同的規(guī)范。 在初始化模塊時(shí),通過名稱服務(wù)建立到變量的連接,在模塊操作時(shí)調(diào)用循環(huán)operate()方式。
在本文中,詳細(xì)介紹了控制系統(tǒng)組件,以及所遇到的挑戰(zhàn),并解釋了如何通過軟件工程技術(shù)解決這些問題。 本文為高空風(fēng)能的利用及風(fēng)箏發(fā)電機(jī)控制系統(tǒng)的設(shè)計(jì)提供了相關(guān)基礎(chǔ)。