徐彪,呂濤,陳寶導(dǎo),桂進(jìn)
(1.中國人民解放軍32153部隊,河北 張家口 076150;2.銅仁職業(yè)技術(shù)學(xué)院,貴州 銅仁 554300)
當(dāng)前機(jī)械、汽車行業(yè)的技術(shù)發(fā)展形勢偏向于電子化與智能化,典型的模擬仿真技術(shù)、智能電子技術(shù)的應(yīng)用成為機(jī)械、汽車開發(fā)設(shè)計的主要途徑。典型的方式是結(jié)合計算機(jī)模擬仿真,包含多方方軟件聯(lián)合建模設(shè)計,借助模型平臺最大化的實現(xiàn)從設(shè)計到應(yīng)用的必要程序。浙江大學(xué)的王帥通過研究車用發(fā)動機(jī)內(nèi)部的節(jié)溫器,以電控閥的設(shè)計及其控制程序編譯替代老式節(jié)溫器,有效解決其物理偏差[1]。哈爾賓工程大學(xué)的張鵬等人通過設(shè)計開發(fā)電子硬件并借助測控程序形成電磁感應(yīng)加熱裝置為汽車系統(tǒng)加熱,如圖1所示[2]。
本文基于MATLAB/Simulink中所形成的控制模型,以STM32單片機(jī)為核心,借助其開發(fā)板及第三方軟件實現(xiàn)C語言程序編譯的控制開發(fā),為控制系統(tǒng)設(shè)計開發(fā)及其程序編譯的銜接提供案例。
本文所述的控制模型是以一種溫度管理系統(tǒng)為例,該溫度管理系統(tǒng)主要是通過檢測目標(biāo)系統(tǒng)的發(fā)動機(jī)、駕駛室及燃料溫度的溫度,并調(diào)節(jié)自帶設(shè)備的工作狀態(tài)以達(dá)到最佳狀態(tài)。
圖1 電磁感應(yīng)加熱器
本文所述控制案例通過流程圖進(jìn)行表達(dá),以明確控制系統(tǒng)的相關(guān)思路。主要分為主體流程、保暖模式流程、預(yù)熱模式流程三部分按照相關(guān)硬件傳感裝置采集數(shù)據(jù)進(jìn)行條件判斷,實現(xiàn)策略控制工作。如圖2所示為控制系統(tǒng)主流程。
圖2 控制系統(tǒng)主流程圖
通過主流程圖的判斷分析,可選擇保暖模式及預(yù)熱模式進(jìn)行控制流程循環(huán),如圖3所示為保暖模式流程圖。
圖3 保暖模式流程圖
圖4 為預(yù)熱模式流程圖,圖中通過判斷分析感應(yīng)器的數(shù)據(jù)進(jìn)行各種系統(tǒng)狀態(tài)的切換。整體控制當(dāng)中各系統(tǒng)狀態(tài)依次由heateron、heater1、heater2-2等代表,主要對系統(tǒng)內(nèi)部的各部件執(zhí)行開關(guān)操作命令,此處不進(jìn)行詳述。
在上述內(nèi)容的基礎(chǔ)上基于MATLAB軟件中自帶的Simu -link/Stateflow功能模塊搭建控制模型。其中以Simulink模塊構(gòu)建與其他物理聯(lián)合仿真軟件的控制及接口環(huán)境[3],以Stateflow模塊建立邏輯門限值控制具體模型,案例的相關(guān)模型外部環(huán)境如圖5所示。
圖4 預(yù)熱模式流程圖
圖5 模型外部環(huán)境
Stateflow模塊是按照有限狀態(tài)的原理及控制流程的邏輯決策方式對模型進(jìn)行搭建的MATLAB模塊。該模塊充分利用常見的控制表達(dá)方式,如流程圖、真值表等,按照一定的規(guī)則整合為模擬控制系統(tǒng)。該模塊常應(yīng)用于設(shè)計系統(tǒng)任務(wù)調(diào)度類、故障管理類的控制[3]。以上述模塊建立邏輯門限值控制具體模型,如圖6所示。
圖6 控制模型
利用上述數(shù)學(xué)軟件形成的控制模型,借助所開發(fā)控制硬件官方的軟件環(huán)境程序進(jìn)行聯(lián)合編譯。其后將生成的主體程序?qū)氤S贸绦蚓幾g軟件修改完善和移植相關(guān)附屬驅(qū)動程序,再下載至控制器開發(fā)板開展調(diào)試以獲得目標(biāo)程序。
STM32嵌入式單片機(jī)為意法半導(dǎo)體公司設(shè)計研發(fā)的32位微控制器。該型嵌入式控制器采用的是著名的ARM? Cortex?M處理器內(nèi)核,其特點在于良好的信號處理性能,普遍應(yīng)用于多種控制系統(tǒng)當(dāng)中;高度集成的硬件內(nèi)置多組模擬-數(shù)字、數(shù)字-模擬的信號轉(zhuǎn)換;遵循行業(yè)規(guī)范開發(fā)的處理器具有較高的通用性,使開發(fā)過程更輕松。STM32嵌入式單片機(jī)以內(nèi)核架構(gòu)、外部配置為標(biāo)準(zhǔn)形成多個系列,諸多型號[4]。本文采用STM32F1嵌入式單片機(jī),其軟、硬件水平足以滿足常見控制的需求,如圖7所示。
圖7 STM32系列單片機(jī)及開發(fā)板
針對上述的嵌入式單片機(jī)進(jìn)行本文案例的開發(fā),所需要的STM32-Cube軟件是由意法半導(dǎo)體官方開發(fā)的,主要用于支持上述嵌入式單片機(jī)程序環(huán)境的設(shè)定以及時快速產(chǎn)生常用的程序語言、編譯軟件的工程文件。同時,其能夠與MATLAB軟件的開發(fā)庫建立連接,使數(shù)字化的控制模型遵循仿真過程及原始設(shè)計思路轉(zhuǎn)化為規(guī)范的程序。而在此過程中利用可視化圖形的操作可簡單、精準(zhǔn)的配置控制模型所對應(yīng)的相關(guān)代碼,使最終生成的工程的控制邏輯具備科學(xué)性和可操作性,如圖8所示。
圖8 STM32-Cube軟件界面
但是采用機(jī)器進(jìn)行自動化編譯的方式對于所生成的程序較人工編譯具有不完善之處,如對控制系統(tǒng)設(shè)計思路的實現(xiàn)偏差、嵌入式軟件資源的不充分使用、程序可讀性較差等。介于上述問題,應(yīng)當(dāng)引入程序編譯軟件對前述問題開展完善。
本文程序編譯軟件選用MDK-ARM,其主要編寫C語言的嵌入式程序,為嵌入式微控制器提供可靠、高效的開發(fā)條件。其包括了調(diào)試以及Keil C編譯功能模塊,可實現(xiàn)C/C++、匯編等常用編程語言的完善及編譯。本文中通過將編譯后的程序與前述所選擇的STM32嵌入式單片機(jī)開發(fā)板通訊,實現(xiàn)了最終環(huán)節(jié)的調(diào)試,如圖9所示。
圖9 MDK-ARM軟件界面
上述程序控制依靠硬件電路進(jìn)行工作,本硬件電路根據(jù)前述的單片機(jī)為控制核心,借助各種信號傳輸轉(zhuǎn)換將各驅(qū)動電路子模塊進(jìn)行連接,從而形成完整的輸入輸出控制回路。根據(jù)各模塊的功能可將硬件電路劃分為輸入電路、控制電路、輸出電路三部分,具體見圖10。
圖10 外部硬件控制電路
本文基于C語言進(jìn)行開發(fā),根據(jù)控制系統(tǒng)設(shè)計的硬件特性以及開發(fā)軟件,對搭建的控制模型進(jìn)行程序的編譯。其控制核心采用STM32F103RCT6單片機(jī),在STM32-Cube中根據(jù)控制需求對應(yīng)地將眾多I/O口資源合理分配;在Simulink環(huán)境下仿真實現(xiàn)程序的初步編譯;在MDK-ARM軟件中將導(dǎo)入的工程文件進(jìn)行完善修改,最后形成基于C語言的控制程序,思路如圖11。
圖11 軟件聯(lián)合編譯思路
第一步,在STM32-Cube軟件自帶的數(shù)據(jù)庫中設(shè)置本文所述的控制芯片型號以及分配相應(yīng)的芯片I/O口資源,以初步實現(xiàn)其基本架構(gòu),即形成前述設(shè)計的模式,包括信號輸入與、輸出等功能。將相關(guān)設(shè)定及配置以文件的形式輸出,為所生成程序在專用編譯軟件中的繼續(xù)完善與修改提供基礎(chǔ)。
第二步,進(jìn)入MATLAB軟件下加載第三方軟件模塊,即安裝意法半導(dǎo)體官方的STM32-MAT /TARGET開發(fā)庫。該庫是其與Mathworks公司聯(lián)合開發(fā)的官方文件,專門用于解決在MATLAB軟件中的嵌入式程序開發(fā),采用模塊拖拽等圖形化語言構(gòu)建控制模型與程序轉(zhuǎn)移的基本環(huán)境。然后在軟件中的設(shè)置部分進(jìn)行C語言選項的轉(zhuǎn)譯設(shè)置,并導(dǎo)入前述在STM32-Cube軟件下生成的工程配置文件,通過開展計算機(jī)模擬仿真的方式即可完成控制程序主體部分的代碼[5]。
值得注意的是,此環(huán)節(jié)的主體控制程序是完全依靠軟件的仿真運行以及電腦的標(biāo)準(zhǔn)計算而得的代碼。通過觀察與解讀,可發(fā)現(xiàn)該程序不具備有主觀方面的閱讀性,編譯的互動效果并不友好,難以直接利用。為避免上述問題在后期程序修改完善中的消極影響,此處應(yīng)當(dāng)針對程序進(jìn)行人工的修改以符合主觀的理解及思路。
第三步,針對上述問題調(diào)取程序至MDK-ARM編譯器中,對其開展進(jìn)一步地調(diào)整以提高程序的閱讀性;針對控制系統(tǒng)的外設(shè)部件,在前述形成的工程文件框架下移植固定的初始化以及驅(qū)動類程序[6],以實現(xiàn)主體控制思路在硬件上的最終實現(xiàn)。如圖9所示,在MDK-ARM環(huán)境下編譯的控制程序頁面及程序的樹形架構(gòu)。在此基礎(chǔ)上將最終程序燒錄到嵌入式單片機(jī)控制電路中,接入相應(yīng)硬件并經(jīng)過實驗調(diào)試即可完成控制的開發(fā)。
但是控制程序的開發(fā)過程中,受限于編程水平的限制存在代碼編譯的精度不高等問題,難以準(zhǔn)確的保證與控制策略 運算思想一致;電路的硬件設(shè)備在選用當(dāng)中受限于物理特性的極限難以完全保證程序目標(biāo)功能的準(zhǔn)確性。
本文梳理控制系統(tǒng)從設(shè)計建模到程序編譯的實現(xiàn)過程?;贛ATLAB軟件控制模型案例,借助控制模型仿真及STM32-Cube軟件實現(xiàn)主體程序編譯,以STM32嵌入式單片機(jī)為控制核心,結(jié)合外部電路硬件參數(shù)及驅(qū)動完善程序,最終實現(xiàn)C語言嵌入式的控制開發(fā)。本文通過上述手段為工程上控制系統(tǒng)開發(fā)提供了可行的參考。