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

?

基于模型的噴水推進(jìn)系統(tǒng)嵌入式模擬器研究

2018-08-10 06:06王亞偉吳杰長常廣暉蘇攀張宇
電子設(shè)計(jì)工程 2018年15期
關(guān)鍵詞:代碼生成定標(biāo)模擬器

王亞偉,吳杰長,常廣暉,蘇攀,張宇

(海軍工程大學(xué)動(dòng)力工程學(xué)院,湖北武漢430033)

眾所周知,艦船動(dòng)力裝置訓(xùn)練模擬器是模擬實(shí)船機(jī)艙設(shè)備操作、培養(yǎng)艦員專業(yè)技能的有效器材,可為艦船動(dòng)力裝置操作人員提供高效的訓(xùn)練手段,近年來得到了廣泛應(yīng)用,目前艦船動(dòng)力裝置訓(xùn)練模擬器普遍采用工控機(jī)、大量信號I/O卡、及專用仿真軟件平臺的基本架構(gòu),其復(fù)雜的仿真模型及信號I/O有賴于微機(jī)及復(fù)雜的信號采集系統(tǒng)。該類基于工控PC機(jī)和專用仿真平臺的動(dòng)力裝置訓(xùn)練模擬器存在開發(fā)周期長、成本高、占用場地大、靈活性差以及不便大規(guī)模推廣應(yīng)用等缺陷。隨著我國海軍裝備快速發(fā)展,設(shè)備的更新?lián)Q代越來越快,傳統(tǒng)的動(dòng)力裝置模擬器開發(fā)方式很難滿足要求。因此,基于模型代碼生成的嵌入式仿真訓(xùn)練模擬器近年來得到了高度重視,其相對而言具有開發(fā)周期短、成本低、擴(kuò)展性好和便于推廣等特點(diǎn),既適合構(gòu)建傳統(tǒng)的岸基訓(xùn)練模擬器、也可用于實(shí)船訓(xùn)練系統(tǒng),其關(guān)鍵技術(shù)問題是在于如何生成有效的動(dòng)力裝置嵌入式模型代碼。

針對以上問題,文中特此以噴水推進(jìn)系統(tǒng)嵌入式模擬器開發(fā)為例,對基于Simulink的噴水推進(jìn)系統(tǒng)建模和嵌入式代碼生成與應(yīng)用等關(guān)鍵技術(shù)問題進(jìn)行了研究。通過試驗(yàn)驗(yàn)證了該方法的有效性和噴水推進(jìn)系統(tǒng)嵌入式模擬器開發(fā)的可行性。

1 噴水推進(jìn)系統(tǒng)Simulink仿真模型

根據(jù)噴水推進(jìn)系統(tǒng)基本構(gòu)成和船、機(jī)、泵配合關(guān)系,采用機(jī)理建模方法和模塊化分解建模思路將系統(tǒng)劃分為柴油機(jī)-噴泵子系統(tǒng)和噴泵-船體子系統(tǒng),分別對各子系統(tǒng)建模后集成為總體仿真模型。

1.1 柴油機(jī)-噴泵子系統(tǒng)

模擬器開發(fā)中重點(diǎn)關(guān)注柴油機(jī)轉(zhuǎn)矩轉(zhuǎn)速等參數(shù)的響應(yīng),按照通常的建模方法,將其簡化為多個(gè)反應(yīng)輸入、輸出關(guān)系的數(shù)學(xué)表達(dá)式。為了便于代碼生成,將復(fù)雜的輸入、輸出關(guān)系轉(zhuǎn)化為表格數(shù)據(jù),通過查表的方式來反應(yīng)柴油機(jī)轉(zhuǎn)速轉(zhuǎn)矩等參數(shù)的響應(yīng)。柴油機(jī)建模相關(guān)內(nèi)容可參照參考文獻(xiàn)[1-4]。

根據(jù)噴水推進(jìn)裝置基本工作原理,由動(dòng)量定理和流體力學(xué)知識可以建立噴水推進(jìn)系統(tǒng)數(shù)學(xué)模型[5]。由單位時(shí)間內(nèi)噴泵進(jìn)出口動(dòng)量的變化量即推力可表達(dá)為:

式中,Q為水泵的流量,Vj為噴嘴的截面積噴射的速度;ρ為水的密度;Vs為船速。另外,根據(jù)管道中水流的連續(xù)性,可得流量與噴口速度之間的公式:

式中,Aj為噴口面積。

考慮噴水推進(jìn)器在實(shí)際工作中存在噴口損失和管道損失,分別用噴射速度頭百分比和來流速度頭百分比表示損失[6],可得泵的揚(yáng)程為:

式中,kj為噴口損失系數(shù);k為管道損失系數(shù);Δh為噴泵內(nèi)水位差值;g為重力加速度。根據(jù)式(1)可知,只有先求出流量Q,才能求出噴泵的推力,由于噴水推進(jìn)裝置實(shí)際工作點(diǎn)是由推進(jìn)系統(tǒng)所需要的壓頭與噴泵提供的壓頭平衡點(diǎn)決定,根據(jù)Giov-anni Benevento等人做的噴泵試驗(yàn)數(shù)據(jù)[7-8],可得到噴泵所能提供的壓頭Hp:

式中,np為噴泵給定轉(zhuǎn)速;np0為實(shí)驗(yàn)參考轉(zhuǎn)速;a,b,c為待定常數(shù)。令H=Hp,聯(lián)立式(2)、(3)和(4),可求得噴泵的流量Q,進(jìn)而得到噴泵產(chǎn)生的推力T,并可利用公式(5)計(jì)算出噴泵扭矩Mp。

式中,np為噴泵的轉(zhuǎn)速;ηp為噴泵推進(jìn)效率;ηr為噴泵相對旋轉(zhuǎn)效率;ηm為機(jī)械效率。

由牛頓第二定律可得機(jī)泵相互作用的動(dòng)力學(xué)方程為:

式中,Me為柴油機(jī)扭矩;Mf為摩擦損失扭矩;i齒輪減速比;J為整個(gè)噴水推進(jìn)系統(tǒng)的轉(zhuǎn)動(dòng)慣量;ω為軸系的角速度。

1.2 噴泵-船體子系統(tǒng)

噴水推進(jìn)器船實(shí)際工作中運(yùn)動(dòng)較復(fù)雜,為簡化模型,只取船舶前進(jìn)方向的一維運(yùn)動(dòng)分析,由此可得噴泵與船體相互作用動(dòng)力學(xué)方程為[9]:

式中,MS為船體總質(zhì)量;MSAD為船體附加水質(zhì)量;T為噴水推進(jìn)器推力;R為船體阻力,可簡化為航速的函數(shù),即:

1.3 模型總成

在建立上述兩個(gè)子系統(tǒng)數(shù)學(xué)模型的基礎(chǔ)上,采用Simulink仿真工具建立噴水推進(jìn)系統(tǒng)整體仿真模型如圖1所示,用于下文所研究的嵌入式代碼生成。

圖1 系統(tǒng)仿真圖

對噴水推進(jìn)全系統(tǒng)進(jìn)行驗(yàn)證,利用所建的模型進(jìn)行單機(jī)單泵加速運(yùn)行工況下仿真計(jì)算,仿真結(jié)果如圖2所示。圖2曲線中所有穩(wěn)態(tài)數(shù)據(jù)與實(shí)驗(yàn)數(shù)據(jù)[10]之間的平均誤差在6%以內(nèi),說明本文所建立的數(shù)學(xué)模型能可以很好地?cái)M噴水推進(jìn)系統(tǒng)總體工作情況,能夠滿足模型嵌入代碼生成要求。

圖2 單機(jī)單泵加速工況曲線

2 模型的代碼生成

2.1 模型配置及定標(biāo)處理

模型配置是代碼生成過程必不可少的環(huán)節(jié),對于建立好的Simulink仿真模型,要實(shí)現(xiàn)C代碼的生成需要選擇定步長仿真算法,相關(guān)參數(shù)可在Solver option選項(xiàng)中設(shè)置。

Simulink模型的輸入輸出參數(shù)設(shè)置可在該信號線的信號設(shè)置中完成,將所用到的信號屬性均設(shè)置為ExportedGlobal。

此外,還應(yīng)在代碼生成選項(xiàng)中選擇目標(biāo)代碼類型,也就是(TLC)最終生成的代碼類型,這里選擇嵌入式C代碼類型的ert.tlc。相關(guān)設(shè)置如表1所示[11]。

表1 參數(shù)設(shè)置

定標(biāo)處理是模型代碼生成的必備條件。一方面,通常單片機(jī)處理的都是定點(diǎn)計(jì)算類型的數(shù)據(jù),為了保證控制器始終進(jìn)行定點(diǎn)運(yùn)算,必須對模型中的所有變量進(jìn)行定標(biāo)處理[12],即在滿足計(jì)算精度的同時(shí)保證計(jì)算過程不會溢出的前提下,設(shè)置變量的大小和精度范圍。另一方面,若代碼生成前未進(jìn)行定標(biāo)處理,變量默認(rèn)的數(shù)據(jù)類型為double型,模型生成的源代碼將占用較大內(nèi)存空間,可能會超出單片機(jī)內(nèi)存而使系統(tǒng)無法正常運(yùn)行;而定標(biāo)處理后,變量數(shù)據(jù)類型為定點(diǎn)型,源代碼所占用的內(nèi)存將大大減少,這樣可提高單片機(jī)的運(yùn)行速度。表2所列出的是本文中輸入、輸出變量數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)類型fixdt(0,32,23,0)首位“0”表示無符號位,“32”表示數(shù)據(jù)位數(shù),“23”表示小數(shù)位數(shù),末位“0”表示數(shù)據(jù)范圍的偏移量。

表2 定標(biāo)前后變量數(shù)據(jù)類型

2.2 代碼生成

基于模型的代碼生成是利用Matlab軟件中的RTW工具箱,將Simulink模型轉(zhuǎn)化為目標(biāo)機(jī)器源代碼,在此基礎(chǔ)上使用KEIL編譯環(huán)境建立工程文件,其代碼生成流程如圖3所示。針對不同的硬件系統(tǒng),開發(fā)人員可利用RTW工具箱中的TLC(目標(biāo)語言編譯器)生成相應(yīng)目標(biāo)硬件的驅(qū)動(dòng)程序[13]。

圖3 代碼生成流程

文中在Matlab中預(yù)先安裝好支持的編譯器VC++2012,在命令窗口輸入mex-setup,根據(jù)系統(tǒng)提示,選擇當(dāng)前安裝的編譯器。配置好相關(guān)參數(shù)后,點(diǎn)擊build按鈕可以生成模型代碼,系統(tǒng)自動(dòng)產(chǎn)生一個(gè)DiselJetHull_ert_tlc文件夾,里面包含模型的源文件、頭文件和其它代碼說明文件,如圖4所示。這些源代碼包含了模型的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、各子系統(tǒng)代碼和輸入輸出接口函數(shù),且生成的源代碼結(jié)構(gòu)組成順序以及結(jié)構(gòu)體結(jié)構(gòu)符合C語言結(jié)構(gòu)模式。其中DiselJetHull.c是實(shí)現(xiàn)模型功能的代碼,Disel?JetHull_data.c為模型的初始參數(shù)數(shù)據(jù),DiselJetHull.h是包含參數(shù)和狀態(tài)變量定義的頭文件,其它文件:rt_look.h,rtwtypes.h,rtGetInf.h等為RTW所需的必要配置文件[14-15]。

2.3 嵌入式代碼移植與集成

代碼的移植與集成即實(shí)現(xiàn)模型代碼到嵌入式代碼的轉(zhuǎn)化。在keil中新建一個(gè)工程文件,將模型代碼加入到工程中,編寫其它相關(guān)的接口程序,實(shí)現(xiàn)模型代碼與編寫的接口函數(shù)的集成。

圖4 生成的文件及代碼

VC++2012/keil與Simulink的集成是通過VC++2012/keil編程驅(qū)動(dòng)C++模型代碼中的initialize、terminate和rt_OneStep 3個(gè)函數(shù)來實(shí)現(xiàn)的。顧名思義,這3個(gè)函數(shù)分別實(shí)現(xiàn)了模型的初始化、停止和單步運(yùn)算。如圖5所示是生成的代碼執(zhí)行流程圖,在主函數(shù)中循環(huán)調(diào)用JET_HULL_step函數(shù),每調(diào)用一次,就會計(jì)算出一組結(jié)果,并可對計(jì)算結(jié)果實(shí)時(shí)提取[16-20]。

圖5 代碼執(zhí)行流程

集成的部分main函數(shù)如下所示,其中

rt_OneStep()函數(shù)是模型單步運(yùn)算函數(shù)[12]。

3 代碼嵌入及試驗(yàn)驗(yàn)證

3.1 代碼嵌入

在完成基于Simulink模型生成代碼的基礎(chǔ)上,還需編寫相關(guān)的輸入、輸出接口程序,才能構(gòu)建出完整的嵌入式系統(tǒng)的工程文件。利用KEIL編譯軟件新建工程,編寫相應(yīng)的輸入輸出接口程序,并將基于模型生成的源文件和頭文件添加到工程中,編譯無誤后下載到單片機(jī)中運(yùn)行。本文嵌入式系統(tǒng)硬件平臺選用STM32F103ZET開發(fā)板,將PA0作為輸入口,PA5作為輸出口。試驗(yàn)裝置如圖6所示,輸入接入與Simulink仿真模型相同的設(shè)定轉(zhuǎn)速,由D/A輸出、并通過示波器讀出輸出的船速仿真信號。

圖6 試驗(yàn)裝置

3.2 試驗(yàn)驗(yàn)證

為了驗(yàn)證生成代碼的有效性,設(shè)定相同的轉(zhuǎn)速輸入,對比Simulink仿真模型的輸出與硬件電路I/O信號輸出進(jìn)行校驗(yàn)。實(shí)船為四機(jī)四泵裝置,本文選用雙機(jī)雙泵工作模式進(jìn)行試驗(yàn)驗(yàn)證。給定Simulink模型設(shè)定轉(zhuǎn)速輸入序列為(t0,700 rpm;t0+200,1 900 rpm;t0+800,1 200 rpm),圖7為Simulink模型對應(yīng)的航速輸出,可見對應(yīng)不同的轉(zhuǎn)速檔,船速分別穩(wěn)定在4.8 kn、18.6 kn和11.6 kn。試驗(yàn)裝置通過PA0口設(shè)定相同的轉(zhuǎn)速輸入,單片機(jī)D/A口輸出的航速信號,如圖8所示。由圖7和圖8對比可知,在采樣時(shí)間內(nèi)仿真結(jié)果與模型嵌入單片機(jī)后的輸出信號一致。

4 結(jié) 論

圖7 船速仿真圖

圖8 示波器顯示

文中對基于模型的代碼生成技術(shù)及其在噴水推進(jìn)系統(tǒng)嵌入式模擬器中的應(yīng)用方法進(jìn)行了深入研究。介紹了基于sinulink模型利用RTW工具箱生成代碼過程,通過試驗(yàn)驗(yàn)證了該方法的有效性以及噴水推進(jìn)系統(tǒng)嵌入式模擬器開發(fā)方案的可行性。本文所使用的開發(fā)方法相比以往基于工控PC機(jī)模擬器的開發(fā)更加簡單,基于模型的代碼生成技術(shù)能夠簡化開發(fā)過程中的編程環(huán)節(jié),使得嵌入式開發(fā)便捷有效。該方法可為其它艦艇動(dòng)力裝置嵌入式模擬訓(xùn)練器的開發(fā)提供參考。

猜你喜歡
代碼生成定標(biāo)模擬器
我國為世界大豆精準(zhǔn)選種“定標(biāo)”
了不起的安檢模擬器
盲盒模擬器
劃船模擬器
基于恒星的電離層成像儀在軌幾何定標(biāo)
Lustre語言可信代碼生成器研究進(jìn)展
基于角反射器的機(jī)載毫米波云雷達(dá)外定標(biāo)實(shí)驗(yàn)
代碼生成技術(shù)在軟件開發(fā)中的應(yīng)用
基于XML的代碼自動(dòng)生成工具
4m直徑均勻擴(kuò)展定標(biāo)光源
盐亭县| 北川| 云林县| 称多县| 新河县| 旬阳县| 湖州市| 广宗县| 汝南县| 牟定县| 满洲里市| 汕尾市| 玉溪市| 吕梁市| 鄱阳县| 巴南区| 灵丘县| 灯塔市| 颍上县| 鄄城县| 德昌县| 临潭县| 邢台县| 蓬溪县| 铜陵市| 固阳县| 眉山市| 莱阳市| 连云港市| 西吉县| 岑巩县| 汤阴县| 西和县| 寻乌县| 河源市| 东乌| 东阳市| 长乐市| 铅山县| 宜昌市| 宁都县|