国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Simulink/Stateflow模型的LNG加注船控制軟件開發(fā)

2016-01-08 03:39:41張興龍

朱 晶, 張興龍

(上海船舶運(yùn)輸科學(xué)研究所 航運(yùn)技術(shù)與安全國家重點(diǎn)實(shí)驗(yàn)室,上海 200135)

基于Simulink/Stateflow模型的LNG加注船控制軟件開發(fā)

朱晶,張興龍

(上海船舶運(yùn)輸科學(xué)研究所 航運(yùn)技術(shù)與安全國家重點(diǎn)實(shí)驗(yàn)室,上海 200135)

摘要:LNG加注是LNG燃料水上供應(yīng)鏈中的關(guān)鍵環(huán)節(jié),也是推動(dòng)LNG作為船用燃料必須首先解決的問題;而LNG加注船加注控制邏輯較復(fù)雜,安全性要求高,傳統(tǒng)的軟件開發(fā)方法人工編寫代碼工作量大,且容易出錯(cuò)?;诖?提出一種快速的自動(dòng)生成嵌入式軟件代碼的開發(fā)方法。首先在Simulink/Stateflow中構(gòu)建基于有限狀態(tài)機(jī)模型的仿真系統(tǒng),然后利用Embedded Coder工具箱由模型自動(dòng)生成C語言代碼,再根據(jù)LNG加注船項(xiàng)目進(jìn)行二次開發(fā)整合,最終生成優(yōu)化的加注控制程序軟件。經(jīng)仿真驗(yàn)證,證明了該方法的可行性,在保證軟件質(zhì)量的同時(shí),大大縮短了軟件的開發(fā)周期。

關(guān)鍵詞:LNG加注船加注;LNG加注控制;Stateflow;Embedded Coder

0引言

隨著《國際防止船舶造成污染公約》附則VI和其他一些限制船舶污染物排放的相關(guān)法規(guī)相繼實(shí)施,以及石油價(jià)格不斷攀升,以柴油為主要燃料的船舶運(yùn)輸業(yè)面臨著節(jié)能減排和成本增加的雙重壓力。

液化天然氣(Liquefied Natural Gas, LNG)是一種公認(rèn)的清潔、高效、優(yōu)質(zhì)能源,已在化工、電力、城市燃?xì)獾阮I(lǐng)域得到廣泛應(yīng)用。

在LNG船用燃料工程應(yīng)用方面起步最早的是挪威,挪威船級(jí)社早在2001年就制定出了LNG動(dòng)力船的規(guī)范。我國從2010年才開始在內(nèi)河開展將LNG作為船用燃料的試點(diǎn)工程。2014年5月26日,中國交通運(yùn)輸部海事局發(fā)文核準(zhǔn)了“武家嘴57”作為LNG燃料動(dòng)力試點(diǎn)船舶。該船是我國第一艘獲得LNG燃料動(dòng)力改造批準(zhǔn)的海船,標(biāo)志著我國海船LNG燃料動(dòng)力試點(diǎn)正式啟動(dòng)[1]。資料顯示,在2016年之前,我國新建或改造的LNG動(dòng)力船舶總數(shù)可能超過2 800艘,且船舶的類型涵蓋廣泛,包括油船、客船、游船、普通貨船、集裝箱船、滾裝船、港內(nèi)工程船等[2]。隨著越來越多的國家正在加入到“油改氣”的行列中來,LNG動(dòng)力船的發(fā)展開始進(jìn)入了春天。

然而,LNG作為船用燃料還有一些問題亟待解決。LNG燃料加注點(diǎn)數(shù)量不足、基礎(chǔ)配套設(shè)施不完善、成熟的加注方式案例少等都是制約LNG動(dòng)力船普及的阻力。

LNG加注是LNG燃料水上供應(yīng)鏈中的關(guān)鍵環(huán)節(jié),也是推動(dòng)LNG作為船用燃料必須首先解決的問題。在船舶LNG燃料加注方面,目前提出的加注方案主要有5種:氣體燃料儲(chǔ)罐整體更換(the use of portable tanks)、槽罐車加注(tank truck-to-ship bunkering,TTS)、岸基加注(terminal/pipeline-to-ship bunkering,PTS)、躉船加注(pontoon-to-ship bunkering)、加注船加注(ship-to-ship bunkering,STS)。[3]其中加注船加注又稱移動(dòng)加液船加注,具有靈活性高,可以在碼頭、河道或海上對(duì)各種類型的船舶進(jìn)行加注,以及裝載率高、加注容量大等優(yōu)點(diǎn)。這些優(yōu)點(diǎn)使得其很有可能成為LNG燃料動(dòng)力船的主要加注方案。

LNG加注船加注控制是保證LNG燃料水上供應(yīng)鏈安全高效的核心。傳統(tǒng)的軟件開發(fā)由開發(fā)人員手工編寫代碼,工作量大,且代碼質(zhì)量不容易保證。此處利用Matlab軟件中的Simulink/Stateflow組件,以狀態(tài)機(jī)理論為基礎(chǔ),通過圖形化的方式建立加注控制器的仿真模型,利用Embedded Coder工具箱生成嵌入式軟件代碼,并針對(duì)具體項(xiàng)目對(duì)生成的代碼進(jìn)行整合開發(fā),得到適用于特定硬件平臺(tái)的加注控制軟件程序。

1LNG加注系統(tǒng)

1.1LNG加注管路系統(tǒng)

以某型LNG加注船為目標(biāo)船,該船采用2個(gè)吊艙式電力推進(jìn)器作為動(dòng)力源,全船電力來自于2臺(tái)LNG燃料發(fā)動(dòng)機(jī)。船上配備有1個(gè)LNG低溫儲(chǔ)罐和1個(gè)LNG燃料罐。低溫儲(chǔ)罐是加注船存儲(chǔ)LNG的主要容器,主要用于對(duì)外加注;燃料罐用于存儲(chǔ)加注船自身發(fā)動(dòng)機(jī)所需的LNG燃料。圖1為LNG加注船加注部分的主要管路系統(tǒng)框圖。

圖1 加注部分主要管路系統(tǒng)框圖

LNG低溫儲(chǔ)罐CC01布置在主甲板上,儲(chǔ)罐后端設(shè)置有冷箱,冷箱內(nèi)布置有潛液泵、質(zhì)量流量計(jì)及相應(yīng)的管路、閥件和附件。除了圖1中所示部件以外,在儲(chǔ)罐及管路的相應(yīng)部位還配置有若干溫度變送器、壓力變送器和液位變送器等傳感器。LNG加注船通過岸基向低溫儲(chǔ)罐CC01補(bǔ)給,并可通過潛液泵增壓向燃料罐CC02充裝或經(jīng)加注裝置向客戶船進(jìn)行加注操作。

1.2LNG加注控制系統(tǒng)

LNG加注控制系統(tǒng)包含加注控制功能模塊、安全保護(hù)功能模塊、監(jiān)測(cè)報(bào)警功能模塊和儲(chǔ)罐高高位報(bào)警模塊4個(gè)功能模塊。

此處以加注控制功能模塊為例,介紹LNG加注控制器軟件代碼的生成流程。

LNG加注控制模塊的控制功能包括LNG低溫儲(chǔ)罐充裝、系統(tǒng)預(yù)冷、燃料罐充裝和對(duì)外加注控制。這些功能通過控制LNG管路中閥門的開啟和關(guān)閉,以及潛液泵的起動(dòng)和停止來實(shí)現(xiàn)。

1.2.1低溫儲(chǔ)罐充裝

低溫儲(chǔ)罐充裝是指將岸基LNG加液站中的LNG裝載至LNG加注船的低溫儲(chǔ)罐內(nèi),充裝過程中主要靠岸基加液站來控制LNG的流速及流量。當(dāng)加注船補(bǔ)液充裝口與岸基加注口連接、補(bǔ)液回氣口與岸基回氣口相連完成后,通過控制貨控臺(tái)的加注控制面板上的按鈕來執(zhí)行和結(jié)束充裝。另外,當(dāng)LNG低溫儲(chǔ)罐液位高于儲(chǔ)罐內(nèi)徑85%時(shí),LNG加注控制器會(huì)自動(dòng)結(jié)束充裝。

1.2.2系統(tǒng)預(yù)冷

在對(duì)客戶船進(jìn)行加注或?qū)θ剂瞎捱M(jìn)行充裝之前,首先要對(duì)系統(tǒng)進(jìn)行預(yù)冷,包括潛液泵預(yù)冷和流量計(jì)預(yù)冷2部分。

潛液泵預(yù)冷時(shí),開啟LNG低溫儲(chǔ)罐底部的出液閥,使儲(chǔ)罐內(nèi)的部分LNG液體流入泵池,再經(jīng)泵池溢流口處的管道回至低溫儲(chǔ)罐。當(dāng)泵入口與溢流口溫度均低于-100 ℃,且兩者溫度差<3 ℃后,再延時(shí)15 min完成泵預(yù)冷。潛液泵預(yù)冷完成后,啟動(dòng)泵,開始對(duì)流量計(jì)進(jìn)行預(yù)冷。

1.2.3燃料罐充裝

對(duì)燃料罐進(jìn)行充裝的優(yōu)先級(jí)高于對(duì)客戶船進(jìn)行加注,當(dāng)對(duì)外加注的過程中出現(xiàn)燃料罐需要充裝的情況時(shí),對(duì)外加注須停止。燃料罐充裝可通過操作面板上的燃料罐充裝開始按鈕來啟動(dòng),當(dāng)燃料罐液位達(dá)到85%后自動(dòng)停止,也可隨時(shí)通過操作面板上的燃料罐充裝停止按鈕手動(dòng)結(jié)束。

1.2.4客戶船加注

客戶船加注是指將加注船LNG低溫儲(chǔ)罐中的LNG加注至客戶船的LNG儲(chǔ)罐中,加注量通過加注船上的液相流量計(jì)和氣相流量計(jì)來監(jiān)測(cè)。加注船配備有一組加注軟管,可連接至客戶船的LNG接收口。加注的執(zhí)行和結(jié)束通過貨控柜面板上的按鈕來控制。

2基于Simulink/Stateflow的LNG加注控制軟件設(shè)計(jì)

2.1開發(fā)環(huán)境簡介

有限狀態(tài)機(jī)(Finite-State Machine,F(xiàn)SM)又稱有限狀態(tài)自動(dòng)機(jī)(簡稱狀態(tài)機(jī)),是一種具有離散輸入、輸出狀態(tài)的系統(tǒng)的數(shù)學(xué)描述,以“事件驅(qū)動(dòng)”的方式工作,通過離散事件驅(qū)動(dòng)下系統(tǒng)狀態(tài)間的轉(zhuǎn)移關(guān)系來描述一個(gè)系統(tǒng)的行為[4]。

Stateflow是集成于Simulink中的交互式圖形化設(shè)計(jì)與開發(fā)工具,其仿真原理是有限狀態(tài)機(jī)理論,主要用于事件響應(yīng)控制系統(tǒng)中的復(fù)雜控制邏輯的建模與仿真。Stateflow的模型框圖一般會(huì)嵌入到Simulink仿真模型中。利用Stateflow可視化的模型和直觀的仿真能力,可以清晰、簡潔地反映出復(fù)雜動(dòng)態(tài)邏輯關(guān)系[5]。

Embedded Coder(早期版本中為Real-Time Workshop Embedded Coder,從Matlab Release 2011a版本開始,Real-Time Workshop Embedded Coder工具箱的功能被Embedded Coder工具箱所替代,此處生成代碼所用的Matlab版本為Release 2014a)可從Simulink模型圖、Stateflow模型圖和Matlab函數(shù)中生成可讀、緊湊且快速的C或C++代碼。Embedded Coder在Simulink Coder的基礎(chǔ)上,針對(duì)嵌入式系統(tǒng)提供了許多配置選項(xiàng)和高級(jí)優(yōu)化,以便對(duì)所生成代碼的函數(shù)、文件和數(shù)據(jù)進(jìn)行細(xì)粒度控制。這些優(yōu)化可提高代碼效率,且有助于和生產(chǎn)中使用的已有代碼、數(shù)據(jù)類型及校準(zhǔn)參數(shù)集成。

2.2狀態(tài)圖設(shè)計(jì)

根據(jù)前文所述LNG加注控制模塊的功能及控制流程,設(shè)計(jì)LNG加注控制模塊狀態(tài)圖(見圖2)。

圖2 LNG加注控制模塊狀態(tài)圖

圖2共包含8個(gè)狀態(tài),分別為:Standby,LNGLoading,PumpPrecooling,PumpPrecoolFinish,F(xiàn)lowmeterPrecooling,CustomBunkering,F(xiàn)uelTankFilling和EmergencyStop。限于篇幅,圖中并未標(biāo)示出所有狀態(tài)轉(zhuǎn)移語句。

圖2中各個(gè)狀態(tài)間轉(zhuǎn)移的條件:一部分是加注控制面板上相應(yīng)按鈕的開閉狀態(tài),如LNG低溫儲(chǔ)罐充裝的開啟、潛液泵的啟動(dòng)和對(duì)外加注的啟動(dòng)與結(jié)束等;也有部分是圖形函數(shù)的執(zhí)行結(jié)果,如泵預(yù)冷完成狀態(tài)判斷、LNG低溫儲(chǔ)罐和燃料罐充裝完成狀態(tài)判斷等。

模型中使用的部分圖形函數(shù)見圖3。

圖3LNG加注控制模塊模型部分圖形函數(shù)

2.3驗(yàn)證加注控制模型

Simulink提供了一些用于驗(yàn)證Stateflow模型功能的組件,此處驗(yàn)證模型時(shí)使用到了Signal Builder和Scope這2個(gè)功能組件。

1) Signal Builder組件用來生成測(cè)試用例,利用Signal Builder的不同通道輸出時(shí)序不同的脈沖信號(hào)或模擬量信號(hào),進(jìn)而模擬實(shí)船控制面板按鈕及傳感器信號(hào)。

2) Signal Builder生成的測(cè)試信號(hào)輸入到封裝了Stateflow模型的Subsystem組件中,Subsystem組件的輸出信號(hào)送至Scope組件顯示出來,用于檢驗(yàn)加注控制模型是否正確。

2.4代碼自動(dòng)生成

以下為生成定制的嵌入式代碼的主要步驟。

2.4.1配置模型參數(shù)

參數(shù)配置對(duì)話框中包括了許多標(biāo)簽頁,為了能夠生成針對(duì)嵌入式系統(tǒng)優(yōu)化的代碼,主要對(duì)其中幾個(gè)標(biāo)簽頁進(jìn)行設(shè)置。

在Simulink中打開Simulation->Model Configuration Parameters,配置以下選項(xiàng)。

(1) Solver:設(shè)置Solver類型為離散(discrete),Type設(shè)置為固定步長(Fixed-step),步長設(shè)置為0.01 s;

(2) Code Generation:此標(biāo)簽頁中主要是選擇系統(tǒng)的目標(biāo)類型,即調(diào)用合適的TLC文件來生成代碼。點(diǎn)擊System target file欄后的Browse按鍵,然后在彈出的對(duì)話框中選擇“ert.tlc-Embedded Coder”,即使用Embedded Coder來生成代碼,且選擇目標(biāo)語言為C語言。

除了以上2項(xiàng)必須配置的選項(xiàng)外,還可根據(jù)實(shí)際需求配置其他一些選項(xiàng)卡。例如:

(1) Hardware Implementation:在此選項(xiàng)卡中,可根據(jù)所用的硬件平臺(tái)配置相應(yīng)的主控芯片,以使Embedded Coder直接生成適配特定硬件目標(biāo)的嵌入式代碼;

(2) Comments:選中Code Generation->Comments->Simulink data object descriptions復(fù)選框,可在生成的代碼中顯示Simulink模型中自己編寫的注釋文字;

(3) Code Style:在Code Generation->Code Style選項(xiàng)卡中,可設(shè)置生成代碼的風(fēng)格。例如可以選擇生成的代碼是Allman或K&R的縮進(jìn)風(fēng)格。

2.4.2生成代碼

勾選Code Generation標(biāo)簽頁中Generate Code Only復(fù)選框,不編譯生成可執(zhí)行文件,點(diǎn)擊Generate Code按鈕可以直接生成代碼。

2.5生成代碼分析

利用Embedded Coder工具箱生成的代碼默認(rèn)保存在Stateflow模型目錄中的model_ert_rtw(model代表模型名稱,下同)文件夾下。該文件夾中有ert_main.c,model.h,model.c,model_private.h,model_types.h和rtwtypes.h等6個(gè)自動(dòng)生成的嵌入式C代碼文件。

ert_main.c文件為main函數(shù)所在的源文件,該文件中包含了自動(dòng)生成的main例程函數(shù)。

model.h文件中主要定義了3個(gè)結(jié)構(gòu)體。其中:DW_model_T結(jié)構(gòu)體定義了狀態(tài)圖模型中所有的狀態(tài)標(biāo)志;ExtU_model_T結(jié)構(gòu)體定義了所有的外部輸入端口;ExtY_model_T結(jié)構(gòu)體定義了所有的外部輸出端口。

model.c文件包含了代碼生成所得到的主要函數(shù),具體包括由狀態(tài)圖中的圖形函數(shù)分別生成的若干個(gè)靜態(tài)函數(shù),以及model_initialize,model_step和model_terminate3個(gè)全局函數(shù)。由狀態(tài)圖中的圖形函數(shù)生成的靜態(tài)函數(shù)僅可在model.c文件中被調(diào)用,用戶一般無需關(guān)注??晒┯脩粽{(diào)用的只有上述3個(gè)全局函數(shù)。其中,model_step函數(shù)實(shí)現(xiàn)了模型在一個(gè)步長時(shí)間內(nèi)所有的控制算法。代碼執(zhí)行過程中,主函數(shù)循環(huán)調(diào)用model_step函數(shù),model_step函數(shù)通過判斷狀態(tài)標(biāo)志來執(zhí)行相應(yīng)的分支語句。

model_private.h,model_types.h和rtwtypes.h等頭文件包含了對(duì)其他一些參數(shù)、變量、數(shù)據(jù)結(jié)構(gòu)的定義和聲明。

2.6代碼整合

對(duì)于Matlab中的代碼自動(dòng)生成功能,由于Hardware Implementation選項(xiàng)卡中可選的主控平臺(tái)類型有限,并不是針對(duì)任何硬件平臺(tái)都可以直接生成已配置好底層(如I/O端口)的代碼[6]。而在實(shí)際應(yīng)用中,由于性能、成本等要求不同,使得微控制器的品種繁多。不同型號(hào)的微控制器在功能、性能和封裝等方面很少兼容,這就需要在自動(dòng)生成的C代碼的基礎(chǔ)上進(jìn)行二次開發(fā),手工編寫程序框架和硬件系統(tǒng)的初始化程序,并與自動(dòng)生成的代碼進(jìn)行有機(jī)整合。

代碼整合主要是對(duì)ert_main.c文件進(jìn)行修改,也可使用自建的包含main函數(shù)的源文件替代該文件。在手工整合的過程中,編程人員只需考慮模型的接口,配置好主控芯片的時(shí)鐘、總線以及端口映射等功能。整合后的嵌入式代碼要保證定時(shí)器時(shí)鐘周期與模型仿真時(shí)的固定步長一致,模型中的輸入、輸出變量與所用微控制器的端口對(duì)應(yīng)。

3結(jié)語

隨著LNG動(dòng)力船逐漸被推廣,建設(shè)LNG水上加注設(shè)施顯得越來越緊迫。LNG加注船加注方式憑借其諸多優(yōu)勢(shì),在發(fā)展LNG加注設(shè)施方面扮演著十分重要的角色。在介紹LNG加注船加注控制過程的基礎(chǔ)上,重點(diǎn)研究了基于Simulink/Stateflow的加注控制軟件的設(shè)計(jì)、仿真、驗(yàn)證及自動(dòng)生成方法。通過對(duì)模型

進(jìn)行仿真測(cè)試,驗(yàn)證了該方法的可行性?;赟tateflow狀態(tài)圖的可視化建模仿真開發(fā)方式提升了軟件開發(fā)的可靠性,便于發(fā)現(xiàn)程序設(shè)計(jì)時(shí)的邏輯錯(cuò)誤,同時(shí)有效縮短了軟件的開發(fā)周期。

參考文獻(xiàn):

[1]趙虎.我國海船LNG燃料動(dòng)力試點(diǎn)正式啟動(dòng)[N].中國水運(yùn)報(bào),2014-5-28(1).

[2]渠沛然.船用LNG或成未來消費(fèi)中流砥柱[N].中國能源報(bào),2014-7-21(13).

[3]Germanischer Llyod.Study on Standards and Rules for bunkering of gas-fuelled Ships [R].European Maritime Safety Agency,2012.

[4]陳小琴,蔣存波,金紅.狀態(tài)機(jī)原理在控制程序設(shè)計(jì)中的應(yīng)用[J].制造業(yè)自動(dòng)化,2007,29(10):57-60.

[5]張威.Matlab/Stateflow邏輯系統(tǒng)建模[M].西安:西安電子科技大學(xué)出版社,2007.

[6]任佳麗,曹海燕.嵌入式軟件自動(dòng)代碼生成和代碼整合方法研究[J].太原理工大學(xué)學(xué)報(bào),2013,44(4):518-521.

收稿日期:2014-10-21

作者簡介:朱晶(1988—),男,河南民權(quán)人,碩士生,主要從事艦船自動(dòng)化研究。

文章編號(hào):1674-5949(2015)01-073-05

中圖分類號(hào):TP311.52

文獻(xiàn)標(biāo)志碼:A

Developing Software of LNG Ship-to-ship Bunkering
Control with Simulink/Stateflow

ZhuJing,ZhangXinglong

(Shanghai Ship and Shipping Research Institute, State Key Laboratory of Navigation and

Safety Technology,Shanghai 200135, China)

Abstract:Bunkering is an important part of LNG-fuel supplying on water. It is also the first problem must be solved in promoting the usage of LNG as the fuel for ships. The control logic for LNG ship-to-ship bunkering is complex, and the safety requirement is high. It is a huge job to write the control software manually, and it is not unusual to make mistakes. In view of this problem a method of automatic programming of the control software is put forward. A simulation system based on finite-state machine is built in Simulink/Stateflow. The C language code based on the simulation system is produced automatically by using the Embedded Coder toolbox. The further development integrates the embedded code with the control system. The feasibility of this method is proved by simulation. This method ensures the quality of the code, in the same time, greatly shortens the software development cycle.

Key words:LNG ship-to-ship bunkering; LNG bunkering control; stateflow; embedded coder

宜宾县| 璧山县| 股票| 重庆市| 仁怀市| 滨州市| 二连浩特市| 香格里拉县| 成安县| 云龙县| 惠东县| 青岛市| 巫山县| 安新县| 临猗县| 合作市| 遵化市| 娄烦县| 安龙县| 高尔夫| 赣榆县| 江口县| 绥德县| 台中县| 福清市| 临沭县| 高陵县| 乌苏市| 遂川县| 志丹县| 新干县| 宣武区| 永德县| 南澳县| 广饶县| 正镶白旗| 晋州市| 铜山县| 昭平县| 新和县| 连江县|