康瑞航,王 毅,郝 飛,嚴 宇,劉 奇,張 旭
(陜西萬方汽車零部件有限公司,陜西 西安 710200)
車身控制器是重型汽車的重要零部件,直接影響到重型汽車燈具、油量檢測和燃油防盜邏輯、機油壓力和品質判定檢測、差速鎖控制、雨刮控制、電源管理、信號轉發、掛車檢測以及參數標定等功能要求。
以轉向燈程序為例:日間行車燈作為重型汽車上使用最頻繁使用的燈具。
在技術要求都明確后,進行程序設計:設計程序時執行不同功能需要設計不同的優先級、使用比較頻繁就需要有即時和穩定考慮故障檢測以及故障報警程序設計。為保證這些需求常規手寫代碼,分層程序設計需要至少三層的程序設計:底層用于驅動程序設計、中間層用于不同的功能邏輯程序設計和負載開段路診斷程序設計、頂層用作不同優先級調用程序的設計。
如圖1 所示轉向燈程序列表,為左右兩側日間行車燈燈的控制程序。

圖1 某重型汽車的日間行車燈函數列表
如圖2 某重型汽車的部分轉向燈驅動原理圖通過控制VND5T035AKTR-E 芯片的INPUT(1/2)進而控制OUT(1_x/2_x)輸出電平的高低來控制負載燈具的亮滅:

圖2 某重型汽車的部分日間行車驅動原理圖
底層驅動程序階段,根據功能的不同,以驅動芯片的輸入端為參數,編寫底層驅動程序,當打左轉型燈時,調用相應端口為參數的底層驅動程序,完成底層程序的編寫和驗證后,需要完成底層程序的說明性文檔,以供應用層調用時理解和以后測試的依據性文檔。
中間層程序階段,分兩部分功能邏輯程序,邏輯:點亮或關閉日間行車燈;診斷:通過周期性檢測工作時各個輸出端口的分壓電阻上的電壓值判斷負載狀態,并將相應標志位置位。完成中間層程序的編寫和驗證后,需要完成中間層程序的說明性文檔,以及其他工程師調用時理解和以后測試的依據性文檔。
頂層間層程序階段,編寫調用程序,通過檢測各個開關狀態確定轉型燈的工作狀態。根據優先級關系調用相應功能程序完成相應功能。完成頂層程序的編寫和驗證后,需要完成頂層程序的說明性文檔,以及其他工程師調用時理解和以后測試的依據性文檔。
最后,將各個層次程序統一放置在只含轉向燈程序的C文件中,通過main 函數中相應周期時間執行函數中調用頂層程序實現相應功能,并完成整個功能模塊程序的技術文檔。
基于Stateflow 模型代碼主要分為以下步驟,(1)需求分析;(2)系統規范;(3)子系統設計;(4)子系統實現;(5)子系統集成和測試;(6)分系統集成和測試;(7)全系統集成和測試[1]。本例以日間行車燈模塊為例,在清楚需求后以Stateflow 狀態轉移為核心搭建相應功能的邏輯模型。
如圖3 所示日間行車燈模型總體包含電源狀態、燈光開關狀態、點火開關狀態、日間行車燈負載診斷標志位狀態作為輸入條件,日間行車燈命令為輸出動作。

圖3 日間行車燈模型總體
如圖4 所示日間行車燈模型內部第一層狀態轉移圖展示了將燈光開關和鑰匙這兩個同一級輸入通過圖5 所示真值表為邏輯條件放在上框圖合二為一,和電源狀態以及診斷標志狀態作為邏輯模塊的輸入條件[2]。

圖4 日間行車燈模型內部第一層狀態轉移圖

圖5 上框圖內部真值表
如圖6 所示為日間行車燈模型最內層邏輯狀態圖,以輸入條件為狀態轉移條件,實現日間行車診斷和亮滅控制。

圖6 圖4下框圖內部狀態轉移圖
完成模型搭建和模擬驗證,就可以進行Stateflow Coder目標編譯生成嵌入式C 代碼。
如圖7 所示在求解器(Solver)中設置步長為固定步長(Fixed-step)。

圖7 在參數設置框設置步長
如圖8 所示在參數設置框配置模型,設置目標編譯器為ert.tlc->Embedded Codery 語言選擇為C,應用并保存設置[3]。

圖8 在參數設置框配置模型

圖9 代碼生成報告框
在設置完所有參數、數據類型以及接口后,點擊代碼生成按鈕Build Model,生成需要的C 代碼,將生成的C 文件加載到嵌入式工程中,在功能函數調用部分調用相關調用自動生成的代碼即可完成相關邏輯。
對于代碼生成還可以通過設置Code Styleg 改變生成的代碼的風格以及減少占用更少RAM。
(1)經實驗驗證兩種方式的代碼都可以完美實現功能需求。
(2)Stateflow 自動生成代碼不需要再根據編寫每個環節的說明性文檔和測試文檔。
(3)Stateflow 自動生成的代碼可以在代碼生成報告中追溯每一段代碼對應的模型。
(3)Stateflow 自動生成的代碼可以通過設置取消或者增加代碼的標注,方便快捷。
(4)Stateflow 模型的每個階段都可以進行仿真和驗證。
通過Stateflow 自動生成代碼技術和傳統手寫代碼對比,Stateflow 自動生成代碼技術具有以下優勢:
(1)Stateflow 模型就是可執行規范。在基于模型的系統設計過程中,所有過程遵循統一環境下的統一模型。由于模型能夠進行仿真計算,因而在設計初期就可以針對設計思想進行仿真驗證,這相當于把測試手段從系統設計的初期就引入到整個設計流程中。作為規范的模型能夠通過執行仿真來驗證自己的正確性,從而保證規范的正確性。
(2)連續不斷的測試和驗證。在整個基于模型的系統設計過程中,從設計初期就進行離線的算法仿真測試,在產品實現之前通常還有完成快速原型仿真,軟件再回路仿真處理器再回路仿真燈步驟,從產品實現之后需要完成硬件再回路仿真,人在回路仿真等集成測試手段。這些測試都是基于前面開發的模型,即每個環節都引入了測試仿真手段。利用充分的仿真,可以考察系統不同組件對整個系統的影響。
(3)自動代碼生成。利用自動代碼生成技術,工程師擺脫了繁瑣的代碼編寫和調試工作。自動生成代碼源頭為一步步測試驗證過的模型,只要模型正確,則生成的代碼也正確。自動代碼生成技術使快速原型仿真和硬件在回路仿真成為簡單易行的測試手段。而且嵌入式產品代碼生成技術則能夠幫助工程師節約70%以上的工作時間,極大提高工作效率。一旦測試發現問題,只需要直接追溯模型,修改仿真即可,對于控制器程序升級和后期維護提供便捷渠道。