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

?

基于模型的HEX自動(dòng)生成工具的開發(fā)與應(yīng)用

2018-08-23 01:12李哲帥周文華
機(jī)電工程 2018年8期
關(guān)鍵詞:共軌任務(wù)調(diào)度代碼

李哲帥,周文華,聶 飛

(浙江大學(xué) 能源工程學(xué)院,浙江 杭州 310027)

0 引 言

目前,世界上主流柴油機(jī)電控噴油系統(tǒng)就是高壓共軌系統(tǒng),而控制軟件的開發(fā)成為至關(guān)重要的環(huán)節(jié)[1]。隨著控制功能越來(lái)越多,基于扭矩的控制算法越來(lái)越復(fù)雜化[2],傳統(tǒng)手寫代碼的開發(fā)模式已難以勝任,采用基于模型的開發(fā)模式[3-5],便于控制策略后續(xù)修改完善。共軌壓力控制是一個(gè)實(shí)時(shí)控制系統(tǒng)[6],為追求良好的響應(yīng)和控制精度,需要不斷摸索最優(yōu)控制算法,采用模型設(shè)計(jì)方法將會(huì)極大減輕設(shè)計(jì)工作量,縮短開發(fā)周期。

通過(guò)Embedded Coder可將Simulink控制模型轉(zhuǎn)換為C代碼,但從C代碼到可下載至單片機(jī)運(yùn)行的包含程序和數(shù)據(jù)的十六進(jìn)制文件(HEX文件),仍有許多工作要做,如C代碼編譯鏈接、數(shù)據(jù)單元描述文件(ASAM MCD-2MC language, A2L)地址更新等,若人工執(zhí)行,耗時(shí)耗力且容易出錯(cuò)。此外,模型數(shù)據(jù)管理也是個(gè)問(wèn)題。

針對(duì)基于模型開發(fā)中這兩個(gè)無(wú)法回避的問(wèn)題,本文將利用腳本開發(fā)模型一鍵生成HEX工具,將Simulink模型直接轉(zhuǎn)換為HEX文件。

1 總體框架設(shè)計(jì)

模型自動(dòng)生成HEX工具autorun.m主要包含兩部分:數(shù)據(jù)管理和HEX文件生成。具體實(shí)現(xiàn)流程如圖1所示。

數(shù)據(jù)管理主要實(shí)現(xiàn)用Excel管理轉(zhuǎn)換公式和模型數(shù)據(jù)。HEX文件生成包含模型編譯、任務(wù)調(diào)度、代碼后處理、編譯鏈接和A2L文件更新。autorun.m腳本編寫是建立在通用文件夾基礎(chǔ)架構(gòu)上的,通用文件夾基礎(chǔ)架構(gòu)如圖2所示。

圖2 通用文件夾基礎(chǔ)架構(gòu)

2 數(shù)據(jù)管理

本研究采用常用的Excel實(shí)現(xiàn)數(shù)據(jù)統(tǒng)一管理,用于模型仿真測(cè)試、代碼生成及A2L自動(dòng)生成,其相較于m文件、mat文件、sldd格式的數(shù)據(jù)字典等[7],更加清晰直觀,并可利用Excel諸多便捷功能。

2.1 轉(zhuǎn)換公式

轉(zhuǎn)換公式包含枚舉型enumeration和數(shù)值型numeric兩類,用于物理值和十六進(jìn)制數(shù)之間的轉(zhuǎn)換,合理的轉(zhuǎn)換公式有助于提升運(yùn)算速度和精度。調(diào)用自定義函數(shù)Import_ComputeMethod.m讀取Excel轉(zhuǎn)換信息,分別創(chuàng)建enumeration.m文件至Matlab搜索路徑,導(dǎo)入numeric至Matlab工作空間,實(shí)現(xiàn)流程如圖3所示。

2.2 模型數(shù)據(jù)

模型數(shù)據(jù)包含Simulink控制模型中的測(cè)量量和標(biāo)定量。調(diào)用自定義Import_Data_Object.m函數(shù),通過(guò)xlsfinfo.m和xlsread.m函數(shù)讀取Excel數(shù)據(jù),寫入modeldata.m文件后運(yùn)行,則把數(shù)據(jù)導(dǎo)入到Matlab工作空間,實(shí)現(xiàn)流程如圖4所示。

3 HEX文件生成

目標(biāo)是自動(dòng)生成可直接下載至ECU中使用的HEX文件,以及包含正確ECU描述信息的A2L文件。代碼的編譯鏈接、A2L文件的地址更新等所有過(guò)程都是在后臺(tái)完成,最終在Matlab命令窗口顯示工作完成。HEX文件自動(dòng)生成流程如圖5所示。

圖3 轉(zhuǎn)換公式流程圖

圖4 模型數(shù)據(jù)流程圖

圖5 HEX文件自動(dòng)生成流程圖

3.1 模型編譯

本研究在編譯前完成如下配置:主模型選擇定步長(zhǎng)離散求解器,硬件選擇Infineon-TriCore,系統(tǒng)目標(biāo)文件選擇ert.tlc;單個(gè)功能模塊設(shè)置為原子單元,以便自定義其生成代碼的文件名及函數(shù)名;設(shè)置標(biāo)定量輸出類型為從常數(shù)繼承,測(cè)量量輸出resolve,保證模型編譯成功;最后通過(guò)rtwbuild.m函數(shù)編譯模型為C代碼。

3.2 任務(wù)調(diào)度

項(xiàng)目采用RTA-OSEK操作系統(tǒng)[8],可實(shí)現(xiàn)噴油量、噴油正時(shí)、軌壓精確控制。為避免直接面對(duì)C代碼進(jìn)行操作,本研究采用Excel管理任務(wù)調(diào)度信息[9],主要配置2個(gè)初始化任務(wù),9個(gè)時(shí)間任務(wù),3個(gè)事件任務(wù),任務(wù)調(diào)度函數(shù)信息表如圖6所示(以10 ms任務(wù)為例)。

筆者將各功能模塊函數(shù)名分別列入相應(yīng)Sheet,調(diào)用自定義OSTaskFilesRewrite.m函數(shù),通過(guò)xlsfinfo.m和xlsread.m函數(shù)讀取不同Sheet中的任務(wù)函數(shù)名,并利用fopen.m和fprintf.m函數(shù)寫入任務(wù)調(diào)度C文件如圖7所示。

圖6 10 ms任務(wù)調(diào)度信息表

3.3 代碼后處理

本研究通過(guò)copyfile.m函數(shù)將Matlab自動(dòng)生成C代碼和腳本控制生成C代碼統(tǒng)一拷貝至包含底層驅(qū)動(dòng)和基礎(chǔ)軟件的工程路徑下。

3.4 編譯鏈接

本研究將工程路徑下所有應(yīng)用層及底層源代碼,通過(guò)后臺(tái)調(diào)用編譯器方式轉(zhuǎn)換為機(jī)器碼。調(diào)用bat批處理文件,設(shè)定后臺(tái)編譯軟件為cctc.exe,初始化工作空間和路徑,定義CPU類型為TC 1782,參照TASKING編譯器Compiler和Linker中配置生成的All options執(zhí)行語(yǔ)句,把源代碼編譯成目標(biāo)文件,再把目標(biāo)文件和庫(kù)文件鏈接成可執(zhí)行文件,完成地址和空間分配,后臺(tái)實(shí)現(xiàn)C代碼編譯鏈接等工作。

3.5 更新A2L文件

直接由Maltab自動(dòng)生成的A2L并不完整,可通過(guò)修改相關(guān)tlc信息來(lái)自定義生成理想A2L文件。標(biāo)定量定義成Parameter,測(cè)量量定義成Signal,設(shè)置Interface為ASAP2。在asap2setup.tlc中自定義靜態(tài)配置,包括文件名、工程名、注釋、模塊名等。在asap2userlib.tlc中自定義HEADER項(xiàng)目信息,包括項(xiàng)目編號(hào)、項(xiàng)目版本等,設(shè)置硬件交互部分內(nèi)容,如添加A2ML和IF_DATA、在MOD_PAR中設(shè)置內(nèi)存范圍等。將自定義設(shè)置好的tlc文件添加到Matlab搜索路徑,生成自定義A2L文件。

Matlab自動(dòng)生成的A2L文件不包含實(shí)際地址,需用編譯器分配物理地址進(jìn)行更新。添加手寫代碼中測(cè)量量和標(biāo)定量至自動(dòng)生成的A2L文件后,利用bat腳本后臺(tái)調(diào)用asap2editor,結(jié)合包含編譯器分配地址信息的ELF文件,生成中間地址文件MAPCONV.TMP。用TMP中真實(shí)地址替換自動(dòng)生成A2L中的假地址,完成變量地址更新。

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

該試驗(yàn)用高壓共軌控制模型如圖8所示。

試驗(yàn)用發(fā)動(dòng)機(jī)是直列、廢氣渦輪增壓中冷、水冷、四沖程柴油機(jī),四缸,排量1.995 L,額定功率75 kW,額定轉(zhuǎn)速3 600 r/min,最大扭矩223 Nm,怠速轉(zhuǎn)速800 r/min,型號(hào)為常柴4F20TCI。在發(fā)動(dòng)機(jī)試驗(yàn)臺(tái)架上,主要通過(guò)測(cè)試啟動(dòng)工況、軌壓控制、怠速工況及部分負(fù)荷工況等4大核心功能,實(shí)現(xiàn)對(duì)高壓共軌控制程序的充分驗(yàn)證,整個(gè)試驗(yàn)過(guò)程中發(fā)動(dòng)機(jī)均能正常運(yùn)行,驗(yàn)證了工具自動(dòng)生成HEX文件的可靠性。

4.1 啟動(dòng)工況

實(shí)測(cè)發(fā)動(dòng)機(jī)啟動(dòng)過(guò)程如圖9所示。

圖9 啟動(dòng)控制過(guò)程圖

啟動(dòng)過(guò)程十分平順,用時(shí)2 s左右,啟動(dòng)成功后轉(zhuǎn)速超調(diào)80 r/min左右,并快速穩(wěn)定至目標(biāo)怠速800 r/min,未出現(xiàn)“跌坑”,啟動(dòng)過(guò)程軌壓超調(diào)量不超過(guò)80 bar,并平穩(wěn)過(guò)渡至目標(biāo)軌壓,整個(gè)啟動(dòng)過(guò)程正常,滿足高壓共軌柴油機(jī)啟動(dòng)要求。

4.2 軌壓控制

實(shí)測(cè)發(fā)動(dòng)機(jī)軌壓控制效果如圖10所示。

圖10 軌壓控制效果圖

本研究手動(dòng)設(shè)定目標(biāo)軌壓,通過(guò)調(diào)節(jié)PID控制參數(shù),將軌壓穩(wěn)態(tài)偏差限制在±5 bar內(nèi)。保持轉(zhuǎn)速為1 400 r/min,當(dāng)目標(biāo)軌壓階躍50 bar時(shí),軌壓超調(diào)20 bar左右;當(dāng)目標(biāo)軌壓階躍100 bar時(shí),軌壓超調(diào)30 bar左右;當(dāng)目標(biāo)軌壓階躍200 bar時(shí),軌壓超調(diào)60 bar左右。軌壓控制采用軌壓-燃油計(jì)量閥驅(qū)動(dòng)電流雙閉環(huán)控制策略,調(diào)節(jié)響應(yīng)迅速,基本沒(méi)有振蕩,直接平穩(wěn)過(guò)渡至目標(biāo)軌壓,軌壓穩(wěn)態(tài)偏差控制和動(dòng)態(tài)響應(yīng)控制效果滿足要求。

4.3 怠速工況

實(shí)測(cè)發(fā)動(dòng)機(jī)怠速控制過(guò)程如圖11所示。

圖11 怠速控制過(guò)程圖

穩(wěn)態(tài)空載怠速波動(dòng)在±5 r/min范圍內(nèi),手動(dòng)設(shè)定目標(biāo)怠速階躍50 r/min,怠速超調(diào)量小于10 r/min,并迅速穩(wěn)定至目標(biāo)怠速,響應(yīng)時(shí)間不超過(guò)1 s,滿足怠速穩(wěn)態(tài)和動(dòng)態(tài)控制要求。

4.4 部分負(fù)荷工況

發(fā)動(dòng)機(jī)部分負(fù)荷工況如圖12所示。

圖12 部分負(fù)荷工況控制效果圖

試驗(yàn)分別選取10個(gè)工況點(diǎn)進(jìn)行驗(yàn)證:(1)1 000 r/min下測(cè)功機(jī)設(shè)定扭矩分別為0 Nm、10 Nm、20 Nm、30 Nm;(2)1 500 r/min下測(cè)功機(jī)設(shè)定扭矩分別為0 Nm、30 Nm、50 Nm;(3)1 800 r/min下測(cè)功機(jī)設(shè)定扭矩分別為0 Nm、30 Nm、50 Nm。實(shí)測(cè)各工況下轉(zhuǎn)速波動(dòng)在±5 r/min范圍內(nèi),軌壓波動(dòng)在±5 bar范圍內(nèi),發(fā)動(dòng)機(jī)運(yùn)行穩(wěn)定,滿足試驗(yàn)要求。

5 結(jié)束語(yǔ)

(1)本研究利用m語(yǔ)言、tlc語(yǔ)言和bat腳本,完成了Simulink控制模型到單片機(jī)HEX文件一鍵式實(shí)現(xiàn),成功應(yīng)用于高壓共軌ECU開發(fā)項(xiàng)目,實(shí)踐證明:HEX自動(dòng)生成工具開發(fā)的高壓共軌ECU滿足柴油機(jī)控制要求,并提升了整個(gè)開發(fā)過(guò)程自動(dòng)化程度,提高了基于模型開發(fā)效率;

(2)HEX自動(dòng)生成工具采用調(diào)用函數(shù)方式實(shí)現(xiàn)了各功能,便于后續(xù)完善,比如可通過(guò)Excel管理層次化模型信息,實(shí)現(xiàn)自動(dòng)集成,進(jìn)一步提升自動(dòng)化程度,減輕了工作量,縮短了開發(fā)周期;

(3)HEX自動(dòng)生成工具具有較強(qiáng)通用性,雖然是基于高壓共軌ECU開發(fā)項(xiàng)目,完成工具開發(fā)與發(fā)動(dòng)機(jī)臺(tái)架試驗(yàn)驗(yàn)證,但也適用于其他任何ECU開發(fā)項(xiàng)目。

猜你喜歡
共軌任務(wù)調(diào)度代碼
高壓共軌發(fā)動(dòng)機(jī)控制器硬件平臺(tái)自動(dòng)化測(cè)試設(shè)備設(shè)計(jì)
基于PEPA的云計(jì)算任務(wù)調(diào)度性能分析
基于改進(jìn)NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
基于小生境遺傳算法的相控陣?yán)走_(dá)任務(wù)調(diào)度
基于混合粒子群算法的云計(jì)算任務(wù)調(diào)度研究
采用共軌噴油系統(tǒng)和可變截面渦輪增壓器的3.0L-V6型柴油機(jī)
大庆市| 余庆县| 铜山县| 上林县| 垫江县| 公主岭市| 游戏| 建水县| 台前县| 临猗县| 麻江县| 宁武县| 禹州市| 修文县| 望都县| 保德县| 芮城县| 通河县| 茌平县| 赤壁市| 新密市| 黄梅县| 德化县| 永泰县| 宿迁市| 乐清市| 宣武区| 玛纳斯县| 金堂县| 驻马店市| 宜丰县| 昌图县| 囊谦县| 芦溪县| 冀州市| 临高县| 调兵山市| 同心县| 澎湖县| 廊坊市| 裕民县|