綦聲波,柴 瀛,劉貴杰
(中國海洋大學工程學院,山東青島266100)
水下絞車是一種在水中工作無人值守的絞車。它通過控制內置電機或液壓裝置以實現繩纜的收放,從而控制探測浮球的升降。水下絞車可以使探測系統藏匿于深水中,遠離臺風、海浪或漁網的侵害,實現對溫度、鹽度、深度等海洋環境參數的全天候長期連續定點觀測,在海洋環境監測和資源調查中有著非常廣泛的應用[1-2]。
水下絞車控制系統是典型的嵌入式系統。水下絞車始終在惡劣的水下環境中工作,一旦出現工作狀態異常,無法進行水下維修,導致探測任務失敗,因此水下絞車控制系統需要具有較高的可靠性和穩定性。但傳統的嵌入式軟件設計方法則存在缺陷,軟件組件之間的依賴性較大,開放性不足,軟件質量和可靠性難以保證[3]。傳統嵌入式軟件開發過程多采用瀑布模式,對用戶需求的變化難以適應,并且只有在開發后期的測試階段才能對產品進行功能驗證,存在開發風險[4]。而隨著圖形化工具的廣泛應用,基于模型的設計方法因其具有直觀性強、易于仿真和移植等優點,逐步為開發人員接受[5]。
本研究以有限狀態機模型為橋梁,融合統一建模語言(UML)和Simulink 兩種建模語言,形成一種協同設計方法,并利用該方法實現水下絞車控制系統的需求捕獲、模型建立、功能仿真和代碼生成。
UML 是一種標準的建模語言,用于對軟件系統進行可視化處理、描述、構造以及建立相關文檔。UML能夠捕獲系統靜態結構和動態行為的信息[6]。常用的UML 圖包括用例圖、類圖、序列圖、活動圖、狀態圖等。在嵌入式軟件系統中UML 軟件設計方法已經得到了廣泛的應用[7-10],以下將基于UML 來建立水下絞車控制系統的模型。
水下絞車系統主要由絞車和控制器兩部分組成。絞車部分主要由傳感器浮球、電池及控制艙、液壓站、排纜器等單元組成??刂破魇钦麄€控制系統的核心,位于電池及控制艙內。水下絞車系統的總體結構框圖如圖1 所示。

圖1 總體結構框圖
水下絞車系統的全部動作根據預先設定的工作參數自動完成。初始狀態時絞車整機坐于海底,探測浮球??吭诮g車上。睡眠時間結束后,控制器發出放纜指令。浮球在自身浮力作用下,通過液壓馬達的怠速作用,以設定的速度上浮,在該過程中其上搭載的傳感器可以完成各剖面參數的測量工作。為了更好地觀測某些要素,控制程序可實現中途停留或指定剖面的多次重復觀測。達到設定位置并停留指定時間后,液壓馬達反向轉動,拉動浮球下降到初始位置,完成收攬過程。
對系統需求進行分析后,需要描述系統所要完成的主要功能。用例圖可以幫助開發人員捕獲用戶對系統的功能要求。水下絞車控制系統的用例圖如圖2 所示。水下絞車的主要使用者是海上作業人員。海上作業人員只需輸入睡眠和采集時間、浮球升降速度等工作參數,絞車在算法的調度下就可以實現浮球自動升降、系統模式切換以及狀態自檢等功能。

圖2 用例圖
本研究以用例圖為入口,通過用例細化,明確系統應具有的屬性、操作及行為等特征,抽象出系統的類。類圖是一種顯示類、接口、協作以及它們之間的關系的圖,主要用于描述系統的靜態結構。水下絞車控制系統的類圖如圖3 所示。

圖3 類圖
海上作業人員通過參數輸入類將工作參數發送給浮球類、定時器類及策略類。策略類會根據收到的工作參數,綜合當前浮球速度、位置、工作時間以及功耗等情況,發送相應指令給電機類和比例閥類,實現浮球自動升降。浮球類中包含速度類和位置類。電源類包含電壓控制類和功耗類。電壓控制類主要控制電機和比例閥的電流通斷,同時也可監測各級電壓值;功耗類綜合當前電池電量和電機功率,通過電量估算模型預測剩余電量,策略類依據其預測值實現系統模式的切換。
系統動態行為描述了系統隨時間變化的行為。對行為進行建模的方式有3 種:①根據相關對象之間相互作用時的交互方式;②根據經過不同活動時執行流程的演變;③根據對象與外界發生交互的生存周期。系統動態行為模型主要包括序列圖、活動圖和狀態圖。
序列圖表示了對象之間傳遞消息的時間順序。探測浮球單次自升降過程的序列圖如圖4 所示。定時器喚醒系統后,向策略類發出浮球釋放指令,策略類調用PID 控制算法調節比例閥開度,進而控制浮球上升速度穩定在設定值,當浮球到達指定位置時,比例閥關閉。此時浮球中的探測器開始采集工作。采集時間結束后,定時器發出回收浮球指令。策略類首先啟動直流電機,待溢流閥開始溢油后,調節比例閥開度使浮球以設定速度勻速下降,當浮球到達初始位置時,比例閥和直流電機關閉。

圖4 探測浮球單次升降序列圖
活動圖可以對系統工作流程進行建模。探測浮球的工作活動圖如圖5 所示。系統初始化后,接著開始睡眠。睡眠時間結束后,如果工況良好,系統開始正常工作。系統可以控制探測浮球以設定速度在各剖面之間多次采集數據。當工況出現問題時,系統快速回收浮球,將其迅速拉回初始位置,避免浮球因電量不足等原因無法回收。
Stateflow 是一個基于狀態機來構建組合和時序邏輯決策模型并進行仿真的環境。它與Matlab、Simulink緊密集成,能夠為包含控制、優先級管理、工作模式邏輯的嵌入式系統提供有效的設計工具[11]。研究者在Stateflow 環境中可以直接繪制UML 狀態機模型[12-15]。

圖5 探測浮球工作活動圖
狀態機模型由對象的各個狀態和連接狀態的轉換組成,用來描述對象們的生存周期。水下絞車控制系統的狀態機模型如圖6 所示。各個狀態定義如下:①Sleep 狀態:除定時器外的其它模塊均進入低功耗模式直到睡眠時間結束;②Work 狀態:包含Floating、Sinking、Float_Collection、Peak_Collection、Sink_Collection 5個子狀態,它們以采集時間和當前位置等參數為條件進行狀態轉換;③Reclaim 狀態:結束交互或工況異常時,絞車以設定的最大收攬速度將浮球拉回初始位置。
為了仿真狀態機模型的運行情況,本研究在Simulink 環境中模擬了參數輸入、剩余電量偵測Power_Detect、絞車液壓系統Winch 等模塊,其中輸入參數包括睡眠時間SleepTime、采集時間CollectTime、升降速度Speed、最大速度SpeedMax、目標位置Target、交互命令Order 和電池總電量Battery,絞車液壓系統的傳遞函數依據文獻[16]提出的數學模型建立。作為邏輯控制模塊的Stateflow 模型通過輸入輸出信號與其他模塊共享數據和相應的事件。示波器模塊Scope 顯示了浮球的位移Displacement、速度Speed 和模型的狀態State。最終建立起的完整的Simulink 仿真模型如圖7所示。
通過對狀態機模型反復進行調試修改,就可以得到符合期望的仿真結果。圖6 說明,在仿真開始時,模型被激活在Sleep 狀態,10 s 后模型遷移到Floating 狀態,Speed 迅速上升到5 m/s,Displacement 上升直到20 m 處暫停,模型進入Float_Collection 狀態。浮球采集數據10 s 后Displacement 繼續上升,如此反復,在最高點50 m 處采集數據結束后開始下降。當Displacement 降為0 時,模型回到Sleep 狀態,完成一次升降周期。

圖6 Stateflow 狀態機模型

圖7 Simulink 仿真模型
在仿真110 s 時,模型收到結束交互命令后進入Reclaim 狀態,Speed 迅速上升到最大速度20 m/s,方向向下,Displacement 迅速降為0,浮球回到初始位置,開始新一個工作周期。在仿真155 s 后,因電量不足導致工況異常,模型進入Reclaim 狀態,隨后進入Sleep 狀態直到仿真結束。
Embedded Coder 通過嵌入式實時目標可以生成可讀、緊湊且快速的ANSI C/C + +代碼,這些產品級源代碼可以在以微控制器為核心的嵌入式平臺上高效實時運行。
本研究在Code Generation 選項卡中選擇ANSI C為生成語言,以Cortex-M3 為目標硬件,正確配置系統時鐘和函數接口后,點擊Build Model 就可以將上述系統模塊轉換成C 代碼。通過將生成的代碼與微控制器的底層驅動代碼相結合就得到了完整的程序代碼,可以順利地移植到特定的嵌入式平臺上。
Embedded Coder 生成的代碼框架如下所示:

為了驗證自動生成的水下絞車控制系統軟件的可行性,本研究在IAR 集成開發環境下對最終源代碼編譯鏈接,然后下載到以STM32F207 為主控芯片的控制器上,最后將控制器與絞車機械部分連接后進行整機的測試實驗。
由于采用閥控液壓馬達調速,水下絞車系統具有轉速低、扭矩大、響應滯后的特點[17-18],本研究在實際測試中設定最大位移為10 m,升降速度為0.35 m/s,睡眠及采集時間均為10 s,在第2 個升降周期中向絞車發送一次交互命令,快速回收速度為0.5 m/s。測試結束后,對獲取的實測數據與指令數據相比較可得到的結果如圖8 所示。實驗結果表明,該控制系統既滿足UML 模型的需求,又符合功能仿真得出的相應結果,并且具有較高的可靠性和穩定性。
(1)本研究從面向對象的角度用UML 語言對水下絞車控制系統的功能需求、靜態結構以及動態行為進行了明確的描述,建立起可靠的系統模型,使得不同階段的開發人員能夠清晰直觀地理解系統,避免因溝通不暢和理解偏差造成的錯誤,保證開發的一致性。

圖8 實驗數據處理
(2)本研究通過Simulink 仿真工具驗證了系統模型的準確性和有效性,嵌入式代碼的自動生成工具縮短了開發周期,節約時間和人力成本,提升了代碼質量,避免手工編碼易犯的錯誤,保證設計的可靠性。開發人員可以更專注于產品功能的設計。
(3)本研究將UML 與Simulink 結合起來,提出了在模型建立、仿真驗證、代碼生成和測試實驗各階段的方法,完成了水下絞車控制系統的整體設計與實現,達到了預期的性能指標,實現了快速高效地設計可維護性強、可靠性高的軟件系統的開發目的。
[1]黃高揚,聶曉敏.無人值守式水下絞車系統研究[J].水雷戰與艦船防護,2010(1):14.
[2]徐良波,于文峰.水下絞車及其在海洋內波現場測量系統的應用[J].艦船科學技術,2009,31(11):132-133.
[3]綦聲波,張承瑞,羅 映.基于SOPC 和量子框架的電控機械式變速器電控系統[J]. 農業機械學報,2011,42(10):13-19.
[4]LIGGESMEYER P,ROMBACH D. 張 聚,汪慧英,賈虹,等譯.嵌入式系統軟件工程:基礎知識、方法和應用[M].北京:電子工業出版社,2009.
[5]張俊智,薛俊亮,潘 凱.混合動力系統控制軟件的開發[J].機械工程學報,2009,45(5):115-120.
[6]RUMBAUGH J,JACOBSON I,BOOCH G. The Unified Modeling Language Reference Manual[M]. 2nd ed. New Jersey:Addison-Wesley Professional,2004.
[7]綦聲波,紀風磊,于敬東. 電控機械式變速器控制系統UML 建模與實現[J].農業機械學報,2013,44(4):8-14.
[8]劉興華,曹云峰.一種模型驅動的嵌入式控制軟件設計技術研究[J].系統仿真學報,2013(7):17.
[9]MATTSSON A,FITZGERALD B,LUNDELL B,et al. An approach for modeling architectural design rules in UML and its application to embedded software[J].Acm Transactions on Software Engineering and Methodology,2012,21(2):1-47.
[10]VANDERPERREN Y,MUELLER W,DEHAENE W.UML for electronic systems design:a comprehensive overview[J]. Design Automation for Embedded Systems,2008,12(4):261-292.
[11]劉 杰.基于模型的設計及其嵌入式實現[M].北京:北京航空航天大學出版社,2010.
[12]胡麗楠,陳國金,陳慧鵬,等.基于模型的線控轉向執行電機測試研究[J].機電工程,2014,31(3):330-333.
[13]劉玉良,李 剛,康 凱. 基于MATLAB 的嵌入式系統軟件開發[J].天津大學學報:自然科學與工程技術版,2008,41(5):593-596.
[14]梁東方,王宇英,周興社,等. 基于異構模型融合的CPS系統仿真建模方法研究[J]. 計算機科學,2012,39(11):24-28.
[15]HINNERICHS A. An Integrative Approach for Embedded Software Design with UML and Simulink[C]// Computer Software and Applications Conference,2009. Seatele:[s.n.],2009:516-521.
[16]胡建軍,楊尚平,趙光波,等.直動式比例閥控液壓馬達數學建模及研究[J].現代制造工程,2008(6):99-102.
[17]石 磊,周一屆.卸荷回中阻尼孔對溢流閥動態特性的影響[J].輕工機械,2014,32(6):37-39.
[18]張宗成,袁銳波,何 敏,等.基于AMEsim 的閥控液壓馬達特性研究[J]. 科學技術與工程,2010,10(13):3222-3225.