徐彪,呂濤,陳寶導,桂進
(1.中國人民解放軍32153部隊,河北 張家口 076150;2.銅仁職業技術學院,貴州 銅仁 554300)
當前機械、汽車行業的技術發展形勢偏向于電子化與智能化,典型的模擬仿真技術、智能電子技術的應用成為機械、汽車開發設計的主要途徑。典型的方式是結合計算機模擬仿真,包含多方方軟件聯合建模設計,借助模型平臺最大化的實現從設計到應用的必要程序。浙江大學的王帥通過研究車用發動機內部的節溫器,以電控閥的設計及其控制程序編譯替代老式節溫器,有效解決其物理偏差[1]。哈爾賓工程大學的張鵬等人通過設計開發電子硬件并借助測控程序形成電磁感應加熱裝置為汽車系統加熱,如圖1所示[2]。
本文基于MATLAB/Simulink中所形成的控制模型,以STM32單片機為核心,借助其開發板及第三方軟件實現C語言程序編譯的控制開發,為控制系統設計開發及其程序編譯的銜接提供案例。
本文所述的控制模型是以一種溫度管理系統為例,該溫度管理系統主要是通過檢測目標系統的發動機、駕駛室及燃料溫度的溫度,并調節自帶設備的工作狀態以達到最佳狀態。

圖1 電磁感應加熱器
本文所述控制案例通過流程圖進行表達,以明確控制系統的相關思路。主要分為主體流程、保暖模式流程、預熱模式流程三部分按照相關硬件傳感裝置采集數據進行條件判斷,實現策略控制工作。如圖2所示為控制系統主流程。

圖2 控制系統主流程圖
通過主流程圖的判斷分析,可選擇保暖模式及預熱模式進行控制流程循環,如圖3所示為保暖模式流程圖。

圖3 保暖模式流程圖
圖4 為預熱模式流程圖,圖中通過判斷分析感應器的數據進行各種系統狀態的切換。整體控制當中各系統狀態依次由heateron、heater1、heater2-2等代表,主要對系統內部的各部件執行開關操作命令,此處不進行詳述。
在上述內容的基礎上基于MATLAB軟件中自帶的Simu -link/Stateflow功能模塊搭建控制模型。其中以Simulink模塊構建與其他物理聯合仿真軟件的控制及接口環境[3],以Stateflow模塊建立邏輯門限值控制具體模型,案例的相關模型外部環境如圖5所示。

圖4 預熱模式流程圖

圖5 模型外部環境
Stateflow模塊是按照有限狀態的原理及控制流程的邏輯決策方式對模型進行搭建的MATLAB模塊。該模塊充分利用常見的控制表達方式,如流程圖、真值表等,按照一定的規則整合為模擬控制系統。該模塊常應用于設計系統任務調度類、故障管理類的控制[3]。以上述模塊建立邏輯門限值控制具體模型,如圖6所示。

圖6 控制模型
利用上述數學軟件形成的控制模型,借助所開發控制硬件官方的軟件環境程序進行聯合編譯。其后將生成的主體程序導入常用程序編譯軟件修改完善和移植相關附屬驅動程序,再下載至控制器開發板開展調試以獲得目標程序。
STM32嵌入式單片機為意法半導體公司設計研發的32位微控制器。該型嵌入式控制器采用的是著名的ARM? Cortex?M處理器內核,其特點在于良好的信號處理性能,普遍應用于多種控制系統當中;高度集成的硬件內置多組模擬-數字、數字-模擬的信號轉換;遵循行業規范開發的處理器具有較高的通用性,使開發過程更輕松。STM32嵌入式單片機以內核架構、外部配置為標準形成多個系列,諸多型號[4]。本文采用STM32F1嵌入式單片機,其軟、硬件水平足以滿足常見控制的需求,如圖7所示。

圖7 STM32系列單片機及開發板
針對上述的嵌入式單片機進行本文案例的開發,所需要的STM32-Cube軟件是由意法半導體官方開發的,主要用于支持上述嵌入式單片機程序環境的設定以及時快速產生常用的程序語言、編譯軟件的工程文件。同時,其能夠與MATLAB軟件的開發庫建立連接,使數字化的控制模型遵循仿真過程及原始設計思路轉化為規范的程序。而在此過程中利用可視化圖形的操作可簡單、精準的配置控制模型所對應的相關代碼,使最終生成的工程的控制邏輯具備科學性和可操作性,如圖8所示。

圖8 STM32-Cube軟件界面
但是采用機器進行自動化編譯的方式對于所生成的程序較人工編譯具有不完善之處,如對控制系統設計思路的實現偏差、嵌入式軟件資源的不充分使用、程序可讀性較差等。介于上述問題,應當引入程序編譯軟件對前述問題開展完善。
本文程序編譯軟件選用MDK-ARM,其主要編寫C語言的嵌入式程序,為嵌入式微控制器提供可靠、高效的開發條件。其包括了調試以及Keil C編譯功能模塊,可實現C/C++、匯編等常用編程語言的完善及編譯。本文中通過將編譯后的程序與前述所選擇的STM32嵌入式單片機開發板通訊,實現了最終環節的調試,如圖9所示。

圖9 MDK-ARM軟件界面
上述程序控制依靠硬件電路進行工作,本硬件電路根據前述的單片機為控制核心,借助各種信號傳輸轉換將各驅動電路子模塊進行連接,從而形成完整的輸入輸出控制回路。根據各模塊的功能可將硬件電路劃分為輸入電路、控制電路、輸出電路三部分,具體見圖10。

圖10 外部硬件控制電路
本文基于C語言進行開發,根據控制系統設計的硬件特性以及開發軟件,對搭建的控制模型進行程序的編譯。其控制核心采用STM32F103RCT6單片機,在STM32-Cube中根據控制需求對應地將眾多I/O口資源合理分配;在Simulink環境下仿真實現程序的初步編譯;在MDK-ARM軟件中將導入的工程文件進行完善修改,最后形成基于C語言的控制程序,思路如圖11。

圖11 軟件聯合編譯思路
第一步,在STM32-Cube軟件自帶的數據庫中設置本文所述的控制芯片型號以及分配相應的芯片I/O口資源,以初步實現其基本架構,即形成前述設計的模式,包括信號輸入與、輸出等功能。將相關設定及配置以文件的形式輸出,為所生成程序在專用編譯軟件中的繼續完善與修改提供基礎。
第二步,進入MATLAB軟件下加載第三方軟件模塊,即安裝意法半導體官方的STM32-MAT /TARGET開發庫。該庫是其與Mathworks公司聯合開發的官方文件,專門用于解決在MATLAB軟件中的嵌入式程序開發,采用模塊拖拽等圖形化語言構建控制模型與程序轉移的基本環境。然后在軟件中的設置部分進行C語言選項的轉譯設置,并導入前述在STM32-Cube軟件下生成的工程配置文件,通過開展計算機模擬仿真的方式即可完成控制程序主體部分的代碼[5]。
值得注意的是,此環節的主體控制程序是完全依靠軟件的仿真運行以及電腦的標準計算而得的代碼。通過觀察與解讀,可發現該程序不具備有主觀方面的閱讀性,編譯的互動效果并不友好,難以直接利用。為避免上述問題在后期程序修改完善中的消極影響,此處應當針對程序進行人工的修改以符合主觀的理解及思路。
第三步,針對上述問題調取程序至MDK-ARM編譯器中,對其開展進一步地調整以提高程序的閱讀性;針對控制系統的外設部件,在前述形成的工程文件框架下移植固定的初始化以及驅動類程序[6],以實現主體控制思路在硬件上的最終實現。如圖9所示,在MDK-ARM環境下編譯的控制程序頁面及程序的樹形架構。在此基礎上將最終程序燒錄到嵌入式單片機控制電路中,接入相應硬件并經過實驗調試即可完成控制的開發。
但是控制程序的開發過程中,受限于編程水平的限制存在代碼編譯的精度不高等問題,難以準確的保證與控制策略 運算思想一致;電路的硬件設備在選用當中受限于物理特性的極限難以完全保證程序目標功能的準確性。
本文梳理控制系統從設計建模到程序編譯的實現過程?;贛ATLAB軟件控制模型案例,借助控制模型仿真及STM32-Cube軟件實現主體程序編譯,以STM32嵌入式單片機為控制核心,結合外部電路硬件參數及驅動完善程序,最終實現C語言嵌入式的控制開發。本文通過上述手段為工程上控制系統開發提供了可行的參考。