綦聲波,柴 瀛,劉貴杰
(中國海洋大學(xué)工程學(xué)院,山東青島266100)
水下絞車是一種在水中工作無人值守的絞車。它通過控制內(nèi)置電機(jī)或液壓裝置以實(shí)現(xiàn)繩纜的收放,從而控制探測(cè)浮球的升降。水下絞車可以使探測(cè)系統(tǒng)藏匿于深水中,遠(yuǎn)離臺(tái)風(fēng)、海浪或漁網(wǎng)的侵害,實(shí)現(xiàn)對(duì)溫度、鹽度、深度等海洋環(huán)境參數(shù)的全天候長(zhǎng)期連續(xù)定點(diǎn)觀測(cè),在海洋環(huán)境監(jiān)測(cè)和資源調(diào)查中有著非常廣泛的應(yīng)用[1-2]。
水下絞車控制系統(tǒng)是典型的嵌入式系統(tǒng)。水下絞車始終在惡劣的水下環(huán)境中工作,一旦出現(xiàn)工作狀態(tài)異常,無法進(jìn)行水下維修,導(dǎo)致探測(cè)任務(wù)失敗,因此水下絞車控制系統(tǒng)需要具有較高的可靠性和穩(wěn)定性。但傳統(tǒng)的嵌入式軟件設(shè)計(jì)方法則存在缺陷,軟件組件之間的依賴性較大,開放性不足,軟件質(zhì)量和可靠性難以保證[3]。傳統(tǒng)嵌入式軟件開發(fā)過程多采用瀑布模式,對(duì)用戶需求的變化難以適應(yīng),并且只有在開發(fā)后期的測(cè)試階段才能對(duì)產(chǎn)品進(jìn)行功能驗(yàn)證,存在開發(fā)風(fēng)險(xiǎn)[4]。而隨著圖形化工具的廣泛應(yīng)用,基于模型的設(shè)計(jì)方法因其具有直觀性強(qiáng)、易于仿真和移植等優(yōu)點(diǎn),逐步為開發(fā)人員接受[5]。
本研究以有限狀態(tài)機(jī)模型為橋梁,融合統(tǒng)一建模語言(UML)和Simulink 兩種建模語言,形成一種協(xié)同設(shè)計(jì)方法,并利用該方法實(shí)現(xiàn)水下絞車控制系統(tǒng)的需求捕獲、模型建立、功能仿真和代碼生成。
UML 是一種標(biāo)準(zhǔn)的建模語言,用于對(duì)軟件系統(tǒng)進(jìn)行可視化處理、描述、構(gòu)造以及建立相關(guān)文檔。UML能夠捕獲系統(tǒng)靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為的信息[6]。常用的UML 圖包括用例圖、類圖、序列圖、活動(dòng)圖、狀態(tài)圖等。在嵌入式軟件系統(tǒng)中UML 軟件設(shè)計(jì)方法已經(jīng)得到了廣泛的應(yīng)用[7-10],以下將基于UML 來建立水下絞車控制系統(tǒng)的模型。
水下絞車系統(tǒng)主要由絞車和控制器兩部分組成。絞車部分主要由傳感器浮球、電池及控制艙、液壓站、排纜器等單元組成??刂破魇钦麄€(gè)控制系統(tǒng)的核心,位于電池及控制艙內(nèi)。水下絞車系統(tǒng)的總體結(jié)構(gòu)框圖如圖1 所示。
圖1 總體結(jié)構(gòu)框圖
水下絞車系統(tǒng)的全部動(dòng)作根據(jù)預(yù)先設(shè)定的工作參數(shù)自動(dòng)完成。初始狀態(tài)時(shí)絞車整機(jī)坐于海底,探測(cè)浮球??吭诮g車上。睡眠時(shí)間結(jié)束后,控制器發(fā)出放纜指令。浮球在自身浮力作用下,通過液壓馬達(dá)的怠速作用,以設(shè)定的速度上浮,在該過程中其上搭載的傳感器可以完成各剖面參數(shù)的測(cè)量工作。為了更好地觀測(cè)某些要素,控制程序可實(shí)現(xiàn)中途停留或指定剖面的多次重復(fù)觀測(cè)。達(dá)到設(shè)定位置并停留指定時(shí)間后,液壓馬達(dá)反向轉(zhuǎn)動(dòng),拉動(dòng)浮球下降到初始位置,完成收攬過程。
對(duì)系統(tǒng)需求進(jìn)行分析后,需要描述系統(tǒng)所要完成的主要功能。用例圖可以幫助開發(fā)人員捕獲用戶對(duì)系統(tǒng)的功能要求。水下絞車控制系統(tǒng)的用例圖如圖2 所示。水下絞車的主要使用者是海上作業(yè)人員。海上作業(yè)人員只需輸入睡眠和采集時(shí)間、浮球升降速度等工作參數(shù),絞車在算法的調(diào)度下就可以實(shí)現(xiàn)浮球自動(dòng)升降、系統(tǒng)模式切換以及狀態(tài)自檢等功能。
圖2 用例圖
本研究以用例圖為入口,通過用例細(xì)化,明確系統(tǒng)應(yīng)具有的屬性、操作及行為等特征,抽象出系統(tǒng)的類。類圖是一種顯示類、接口、協(xié)作以及它們之間的關(guān)系的圖,主要用于描述系統(tǒng)的靜態(tài)結(jié)構(gòu)。水下絞車控制系統(tǒng)的類圖如圖3 所示。
圖3 類圖
海上作業(yè)人員通過參數(shù)輸入類將工作參數(shù)發(fā)送給浮球類、定時(shí)器類及策略類。策略類會(huì)根據(jù)收到的工作參數(shù),綜合當(dāng)前浮球速度、位置、工作時(shí)間以及功耗等情況,發(fā)送相應(yīng)指令給電機(jī)類和比例閥類,實(shí)現(xiàn)浮球自動(dòng)升降。浮球類中包含速度類和位置類。電源類包含電壓控制類和功耗類。電壓控制類主要控制電機(jī)和比例閥的電流通斷,同時(shí)也可監(jiān)測(cè)各級(jí)電壓值;功耗類綜合當(dāng)前電池電量和電機(jī)功率,通過電量估算模型預(yù)測(cè)剩余電量,策略類依據(jù)其預(yù)測(cè)值實(shí)現(xiàn)系統(tǒng)模式的切換。
系統(tǒng)動(dòng)態(tài)行為描述了系統(tǒng)隨時(shí)間變化的行為。對(duì)行為進(jìn)行建模的方式有3 種:①根據(jù)相關(guān)對(duì)象之間相互作用時(shí)的交互方式;②根據(jù)經(jīng)過不同活動(dòng)時(shí)執(zhí)行流程的演變;③根據(jù)對(duì)象與外界發(fā)生交互的生存周期。系統(tǒng)動(dòng)態(tài)行為模型主要包括序列圖、活動(dòng)圖和狀態(tài)圖。
序列圖表示了對(duì)象之間傳遞消息的時(shí)間順序。探測(cè)浮球單次自升降過程的序列圖如圖4 所示。定時(shí)器喚醒系統(tǒng)后,向策略類發(fā)出浮球釋放指令,策略類調(diào)用PID 控制算法調(diào)節(jié)比例閥開度,進(jìn)而控制浮球上升速度穩(wěn)定在設(shè)定值,當(dāng)浮球到達(dá)指定位置時(shí),比例閥關(guān)閉。此時(shí)浮球中的探測(cè)器開始采集工作。采集時(shí)間結(jié)束后,定時(shí)器發(fā)出回收浮球指令。策略類首先啟動(dòng)直流電機(jī),待溢流閥開始溢油后,調(diào)節(jié)比例閥開度使浮球以設(shè)定速度勻速下降,當(dāng)浮球到達(dá)初始位置時(shí),比例閥和直流電機(jī)關(guān)閉。
圖4 探測(cè)浮球單次升降序列圖
活動(dòng)圖可以對(duì)系統(tǒng)工作流程進(jìn)行建模。探測(cè)浮球的工作活動(dòng)圖如圖5 所示。系統(tǒng)初始化后,接著開始睡眠。睡眠時(shí)間結(jié)束后,如果工況良好,系統(tǒng)開始正常工作。系統(tǒng)可以控制探測(cè)浮球以設(shè)定速度在各剖面之間多次采集數(shù)據(jù)。當(dāng)工況出現(xiàn)問題時(shí),系統(tǒng)快速回收浮球,將其迅速拉回初始位置,避免浮球因電量不足等原因無法回收。
Stateflow 是一個(gè)基于狀態(tài)機(jī)來構(gòu)建組合和時(shí)序邏輯決策模型并進(jìn)行仿真的環(huán)境。它與Matlab、Simulink緊密集成,能夠?yàn)榘刂?、?yōu)先級(jí)管理、工作模式邏輯的嵌入式系統(tǒng)提供有效的設(shè)計(jì)工具[11]。研究者在Stateflow 環(huán)境中可以直接繪制UML 狀態(tài)機(jī)模型[12-15]。
圖5 探測(cè)浮球工作活動(dòng)圖
狀態(tài)機(jī)模型由對(duì)象的各個(gè)狀態(tài)和連接狀態(tài)的轉(zhuǎn)換組成,用來描述對(duì)象們的生存周期。水下絞車控制系統(tǒng)的狀態(tài)機(jī)模型如圖6 所示。各個(gè)狀態(tài)定義如下:①Sleep 狀態(tài):除定時(shí)器外的其它模塊均進(jìn)入低功耗模式直到睡眠時(shí)間結(jié)束;②Work 狀態(tài):包含F(xiàn)loating、Sinking、Float_Collection、Peak_Collection、Sink_Collection 5個(gè)子狀態(tài),它們以采集時(shí)間和當(dāng)前位置等參數(shù)為條件進(jìn)行狀態(tài)轉(zhuǎn)換;③Reclaim 狀態(tài):結(jié)束交互或工況異常時(shí),絞車以設(shè)定的最大收攬速度將浮球拉回初始位置。
為了仿真狀態(tài)機(jī)模型的運(yùn)行情況,本研究在Simulink 環(huán)境中模擬了參數(shù)輸入、剩余電量偵測(cè)Power_Detect、絞車液壓系統(tǒng)Winch 等模塊,其中輸入?yún)?shù)包括睡眠時(shí)間SleepTime、采集時(shí)間CollectTime、升降速度Speed、最大速度SpeedMax、目標(biāo)位置Target、交互命令Order 和電池總電量Battery,絞車液壓系統(tǒng)的傳遞函數(shù)依據(jù)文獻(xiàn)[16]提出的數(shù)學(xué)模型建立。作為邏輯控制模塊的Stateflow 模型通過輸入輸出信號(hào)與其他模塊共享數(shù)據(jù)和相應(yīng)的事件。示波器模塊Scope 顯示了浮球的位移Displacement、速度Speed 和模型的狀態(tài)State。最終建立起的完整的Simulink 仿真模型如圖7所示。
通過對(duì)狀態(tài)機(jī)模型反復(fù)進(jìn)行調(diào)試修改,就可以得到符合期望的仿真結(jié)果。圖6 說明,在仿真開始時(shí),模型被激活在Sleep 狀態(tài),10 s 后模型遷移到Floating 狀態(tài),Speed 迅速上升到5 m/s,Displacement 上升直到20 m 處暫停,模型進(jìn)入Float_Collection 狀態(tài)。浮球采集數(shù)據(jù)10 s 后Displacement 繼續(xù)上升,如此反復(fù),在最高點(diǎn)50 m 處采集數(shù)據(jù)結(jié)束后開始下降。當(dāng)Displacement 降為0 時(shí),模型回到Sleep 狀態(tài),完成一次升降周期。
圖6 Stateflow 狀態(tài)機(jī)模型
圖7 Simulink 仿真模型
在仿真110 s 時(shí),模型收到結(jié)束交互命令后進(jìn)入Reclaim 狀態(tài),Speed 迅速上升到最大速度20 m/s,方向向下,Displacement 迅速降為0,浮球回到初始位置,開始新一個(gè)工作周期。在仿真155 s 后,因電量不足導(dǎo)致工況異常,模型進(jìn)入Reclaim 狀態(tài),隨后進(jìn)入Sleep 狀態(tài)直到仿真結(jié)束。
Embedded Coder 通過嵌入式實(shí)時(shí)目標(biāo)可以生成可讀、緊湊且快速的ANSI C/C + +代碼,這些產(chǎn)品級(jí)源代碼可以在以微控制器為核心的嵌入式平臺(tái)上高效實(shí)時(shí)運(yùn)行。
本研究在Code Generation 選項(xiàng)卡中選擇ANSI C為生成語言,以Cortex-M3 為目標(biāo)硬件,正確配置系統(tǒng)時(shí)鐘和函數(shù)接口后,點(diǎn)擊Build Model 就可以將上述系統(tǒng)模塊轉(zhuǎn)換成C 代碼。通過將生成的代碼與微控制器的底層驅(qū)動(dòng)代碼相結(jié)合就得到了完整的程序代碼,可以順利地移植到特定的嵌入式平臺(tái)上。
Embedded Coder 生成的代碼框架如下所示:
為了驗(yàn)證自動(dòng)生成的水下絞車控制系統(tǒng)軟件的可行性,本研究在IAR 集成開發(fā)環(huán)境下對(duì)最終源代碼編譯鏈接,然后下載到以STM32F207 為主控芯片的控制器上,最后將控制器與絞車機(jī)械部分連接后進(jìn)行整機(jī)的測(cè)試實(shí)驗(yàn)。
由于采用閥控液壓馬達(dá)調(diào)速,水下絞車系統(tǒng)具有轉(zhuǎn)速低、扭矩大、響應(yīng)滯后的特點(diǎn)[17-18],本研究在實(shí)際測(cè)試中設(shè)定最大位移為10 m,升降速度為0.35 m/s,睡眠及采集時(shí)間均為10 s,在第2 個(gè)升降周期中向絞車發(fā)送一次交互命令,快速回收速度為0.5 m/s。測(cè)試結(jié)束后,對(duì)獲取的實(shí)測(cè)數(shù)據(jù)與指令數(shù)據(jù)相比較可得到的結(jié)果如圖8 所示。實(shí)驗(yàn)結(jié)果表明,該控制系統(tǒng)既滿足UML 模型的需求,又符合功能仿真得出的相應(yīng)結(jié)果,并且具有較高的可靠性和穩(wěn)定性。
(1)本研究從面向?qū)ο蟮慕嵌扔肬ML 語言對(duì)水下絞車控制系統(tǒng)的功能需求、靜態(tài)結(jié)構(gòu)以及動(dòng)態(tài)行為進(jìn)行了明確的描述,建立起可靠的系統(tǒng)模型,使得不同階段的開發(fā)人員能夠清晰直觀地理解系統(tǒng),避免因溝通不暢和理解偏差造成的錯(cuò)誤,保證開發(fā)的一致性。
圖8 實(shí)驗(yàn)數(shù)據(jù)處理
(2)本研究通過Simulink 仿真工具驗(yàn)證了系統(tǒng)模型的準(zhǔn)確性和有效性,嵌入式代碼的自動(dòng)生成工具縮短了開發(fā)周期,節(jié)約時(shí)間和人力成本,提升了代碼質(zhì)量,避免手工編碼易犯的錯(cuò)誤,保證設(shè)計(jì)的可靠性。開發(fā)人員可以更專注于產(chǎn)品功能的設(shè)計(jì)。
(3)本研究將UML 與Simulink 結(jié)合起來,提出了在模型建立、仿真驗(yàn)證、代碼生成和測(cè)試實(shí)驗(yàn)各階段的方法,完成了水下絞車控制系統(tǒng)的整體設(shè)計(jì)與實(shí)現(xiàn),達(dá)到了預(yù)期的性能指標(biāo),實(shí)現(xiàn)了快速高效地設(shè)計(jì)可維護(hù)性強(qiáng)、可靠性高的軟件系統(tǒng)的開發(fā)目的。
[1]黃高揚(yáng),聶曉敏.無人值守式水下絞車系統(tǒng)研究[J].水雷戰(zhàn)與艦船防護(hù),2010(1):14.
[2]徐良波,于文峰.水下絞車及其在海洋內(nèi)波現(xiàn)場(chǎng)測(cè)量系統(tǒng)的應(yīng)用[J].艦船科學(xué)技術(shù),2009,31(11):132-133.
[3]綦聲波,張承瑞,羅 映.基于SOPC 和量子框架的電控機(jī)械式變速器電控系統(tǒng)[J]. 農(nóng)業(yè)機(jī)械學(xué)報(bào),2011,42(10):13-19.
[4]LIGGESMEYER P,ROMBACH D. 張 聚,汪慧英,賈虹,等譯.嵌入式系統(tǒng)軟件工程:基礎(chǔ)知識(shí)、方法和應(yīng)用[M].北京:電子工業(yè)出版社,2009.
[5]張俊智,薛俊亮,潘 凱.混合動(dòng)力系統(tǒng)控制軟件的開發(fā)[J].機(jī)械工程學(xué)報(bào),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]綦聲波,紀(jì)風(fēng)磊,于敬東. 電控機(jī)械式變速器控制系統(tǒng)UML 建模與實(shí)現(xiàn)[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2013,44(4):8-14.
[8]劉興華,曹云峰.一種模型驅(qū)動(dòng)的嵌入式控制軟件設(shè)計(jì)技術(shù)研究[J].系統(tǒng)仿真學(xué)報(bào),2013(7):17.
[9]MATTSSON A,F(xiàn)ITZGERALD 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]劉 杰.基于模型的設(shè)計(jì)及其嵌入式實(shí)現(xiàn)[M].北京:北京航空航天大學(xué)出版社,2010.
[12]胡麗楠,陳國金,陳慧鵬,等.基于模型的線控轉(zhuǎn)向執(zhí)行電機(jī)測(cè)試研究[J].機(jī)電工程,2014,31(3):330-333.
[13]劉玉良,李 剛,康 凱. 基于MATLAB 的嵌入式系統(tǒng)軟件開發(fā)[J].天津大學(xué)學(xué)報(bào):自然科學(xué)與工程技術(shù)版,2008,41(5):593-596.
[14]梁東方,王宇英,周興社,等. 基于異構(gòu)模型融合的CPS系統(tǒng)仿真建模方法研究[J]. 計(jì)算機(jī)科學(xué),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]胡建軍,楊尚平,趙光波,等.直動(dòng)式比例閥控液壓馬達(dá)數(shù)學(xué)建模及研究[J].現(xiàn)代制造工程,2008(6):99-102.
[17]石 磊,周一屆.卸荷回中阻尼孔對(duì)溢流閥動(dòng)態(tài)特性的影響[J].輕工機(jī)械,2014,32(6):37-39.
[18]張宗成,袁銳波,何 敏,等.基于AMEsim 的閥控液壓馬達(dá)特性研究[J]. 科學(xué)技術(shù)與工程,2010,10(13):3222-3225.