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