各步驟的簡介各步驟的簡介
(1)Control Design and offline Simulation:算法模型構建和離線仿真(基於模型的設計) 。算法工程師用Matlab模型實現算法;並實施離線仿真,驗證算法。
(2)Rapid Control Prototyping:快速原型 。算法工程師將上一步構建好的算法模型下載到快速原型設備中,並使用快速原型設備控制車輛,並實施在線仿真,驗證算法。請注意,這一步的仿真是在線仿真,而上一步則是離線仿真。
(3)Automatic Code Generation:自動代碼生成 。通過軟件將算法模型自動生成C代碼。
(4)HIL:硬件在環 。此時,上一步生成的C代碼已經驗證完畢,並下載到了量產ECU中。在這一步,用量產ECU驅動車輛,以驗證量產ECU的軟件、硬件。
(5)Calibration:標定 。在這一步,主要是為了優化軟件中的參數使得車輛各方面性能達到最佳。
一、基於模型的設計(Model Based Design,MBD)是什么?
1.基於模型的開發是一種軟件開發方法
傳統的嵌入式軟件開發方法:算法工程師編寫算法文檔,程序員根據算法文檔手寫代碼(C或匯編語言),代碼完成之后下載到嵌入式硬件中驗證算法、軟件是否正確。
與傳統的方法相比,基於模型的開發有以下優點
(1)可運行的算法。基於模型的開發中算法 = Matlab模型 ,Matlab模型是可以運行的。因此算法工程師在構建模型之后可以運行模型對算法實施驗證,確認算法是否符合預期。這樣,可以更早地發現算法中的錯誤。
(2)自動生成代碼。傳統方法中需要由程序員根據算法手寫代碼,而基於模型的開發則可以通過Targetlink等代碼自動生成軟件將算法直接轉變為C代碼。這個過程不但縮短了代碼開發的時間,而且還大大地提升了代碼的整體質量和可靠性。因為Targetlink生成的代碼一般比3年經驗的程序員手寫的代碼質量要高。
二、快速原型是什么?
快速控制原型(Rapid Control Prototype,簡稱RCP)。實時硬件運行Simulink控制算法(模擬控制器),控制真實被控對象(如開關、電磁閥、電機、發動機等),快速驗證該Simulink算法。此時實時硬件可以看作是原型的控制器,通過這種方式我們快速地得到了一個原型控制器,對原型的控制算法進行測試,故稱之為快速控制原型。此時,被控對象是真的,控制器是假的 (控制器不是真正的量產控制器)。
快速控制原型
1、快速原型的設備有什么?
鏈接:https://www.zhihu.com/question/24239041/answer/72565699
這就不得不提到牛逼的dSpace盒子
<img src="https://pic4.zhimg.com/50/287c9ef96327c7fe680b6f9d9bb77197_hd.jpg?source=1940ef5c" data-rawwidth="632" data-rawheight="312" class="origin_image zh-lightbox-thumb" width="632" data-original="https://pic4.zhimg.com/287c9ef96327c7fe680b6f9d9bb77197_r.jpg?source=1940ef5c"/>
這個就是我在前面提到的microautobox
在硬件出來之前: 對於硬件系統(mechanic and electronic)建模: 1 Matlab/Simulink可完成mechanic 和傳感器,促動器的建模
2 microautobox就是electronic硬件,也相當於就是很多ECU的組合,它比汽車單個的ECU功能強大的多。你可以只當一個ECU來用,也可以當多個ECU來用。 3 這個盒子硬件部分可以接傳感器,促動器。軟件可以接 Matlab/Simulink
4 我們在Matlab/Simulink里面設計控制算法,比C更直觀容易理解 5 算法自動轉碼 成C Code到這個盒子 6 dspace還有對應軟件可以看輸出端實時(realtime)響應曲線
等汽車造出來以后 7 電腦--------盒子------CAN BUS------汽車連接起來 (這就是HIL 的一種,什么是Hardware In the Loop 就不細說了) 8 一個人開車,一個人坐在副駕駛座上用軟件實時的調節各項參數 9 所有都合適之后,生產單個的ECU(發動機ECU,ABS的ECU,ESP的ECU......) 10 FINAL TEST 11 well done!給汽車工程師發獎金
2、dspace簡介
dSPACE的作用 對整車廠來說,dSPACE是一個卓越的基於模型開發相關的軟件、設備、工程服務供應商。
自動代碼生成軟件,dSPACE有Targetlink(行業標桿)。 快速原型設備,dSPACE有MicroAutoBox+RapidPro設備(行業標桿,但是很貴,好多公司都改用更便宜的MotoHawk了)。
硬件在環設備,dSPACE有HIL設備(行業標桿,但是很貴,好多公司都改用更便宜的ETAS、NI了)。
此外,關於如何改進整個基於模型的開發流程,以及如何滿足ISO26262、AUTOSAR標准,dSPACE提供相關的工程服務(嗯,很貴)。
三、自動代碼生成
參考:https://www.zhihu.com/question/52838341/answer/138658739
https://www.zhihu.com/question/369208008
1. 什么是自動代碼生成技術?或者說什么是基於模型的設計?
在汽車行業,2010年之前,大多數控制軟件,比如發動機控制軟件,自動變速箱控制軟件,車身控制軟件等等,都是手寫C代碼的。歐洲汽車行業使用很多外包公司來進行這項重復性的腦力活動,甚至把很多寫代碼的活兒外包到印度降低成本。一個大型軟件比如發動機控制軟件,甚至需要超過上百個碼農在像網吧一樣的大辦公室里手動撰寫不同模塊的代碼,之后再進行拼裝。 2010年之后到現在,在汽車行業手寫C代碼的情況已經非常少了,如下表所示來自Infineon的預測,到2020年手動C代碼在整個汽車行業所占的比例會只剩下10%左右,就這個估計我覺得還是保守的,其實現在除了少數一些發展中的車企和微型公司,C代碼已經很罕見了。
那么如果不用手寫C代碼,汽車控制軟件編譯前的代碼怎么得到呢?就是通過自動代碼生成技術,或者說基於模型的設計。如果你用過類似 Matlab 中的 Simulink 或者其他圖形化的語言就會知道,在建模和仿真的過程中很少直接使用 C 代碼。Simulink對比C代碼,就好像 Windows 操作系統對比 DOS 操作系統一樣,一個是圖形化的控制,一個是基於命令行。Simulink 的圖形和 C 代碼之間是可以雙向轉換的,比如下圖這段代碼:
那么在這個背景下, Simulink 可以搭配專門的自動代碼生成工具,比如Targetlink或者Matlab自己的Embedded Coder,軟件設計者只需要編寫圖形化的 Simulink 代碼,之后通過上面說到的兩個工具之一自動生成對應的C代碼,最后可以直接編譯再刷寫到具體的電子控制器上使用。
2. 這種技術有什么優點?
在使用自動代碼生成技術前,汽車控制軟件的主要一部分開發流程是下圖這樣的:
首先系統和功能設計工程師需要制定軟件的功能和需求,並設計控制模型,系統和功能設計工程師可能完全不懂C代碼。
之后功能設計工程師提供具體的需求和設計說明書給軟件工程師或者外包公司的碼農。
碼農將系統工程師的設計理念從模型轉化為C代碼,編譯后刷寫到電子控制器。
最后系統工程師或者測試工程師再拿到刷寫好的軟件去測試自己設計的功能。
而使用了自動代碼生成技術之后,軟件開發流程就成了下面這樣:
碼農下崗了。
軟件開發中,功能設計工程師不再需要浪費時間給碼農解釋自己的設計理念,也不需要等待碼農輸出C代碼,只需要使用Targetlink,Embedded coder加上其他軟件工具來自動生成和編譯圖形化的代碼。
那么相對於上面的手動C代碼,基於模型的設計有顯而易見的巨大進步:
節約了閉環設計中無數的時間和人力成本,那一房間上百個碼農都可以節約下來了。
系統和功能設計工程師可以獨立完成軟件的輸出,可以很容易避免因為技術文檔描述不准確或者歧義而導致的從功能到代碼的錯誤設計。
軟件功能修改后可以快速自動生成代碼而不需要經過復雜的流程由碼農來做修改。
軟件一致性不會像以前一樣因為使用不同的碼農而不同,代碼也會由自動工具統一優化。 圖形化的軟件設計和Windows一樣更易懂,類似Simulink中完整的診斷和查詢顯示功能也可以更容易對軟件進行糾錯,找到bugs。
基於模型的設計和自動代碼生成技術對於包括汽車和航空航天在內的很多行業可以說是革命性的進步,也是目前汽車行業最多金和最熱門的技術研發領域。
四、硬件在環
硬件在環仿真(Hardware-in-loop,簡稱HIL)。是一個反過來的過程,實時硬件運行Simulink被控對象模型(模擬被控對象),受真實控制器的控制,以此對控制器進行測試。此時,控制器是真的,被控對象是假的 。在實車測試之前,先對控制器做一個全面的功能測試。因為該被控對象是假的,所以HIL比實車測試安全高效,而且可以測試一些實車測試中不容易實現的極端case。
硬件在環仿真
判斷一個設備是做RCP還是HIL的直觀方法是:看設備的大小。
一般情況下,相對而言,被控對象模型比控制算法模型復雜,所以HIL對CPU算力的要求比RCP更高,因此HIL實時主機機箱比RCP的大;另外,HIL可能會涉及到程控電源、信號調理、故障注入等,所以HIL設備會有更多的附件。因此,比較小巧簡潔的是RCP設備,比較大且復雜的HIL設備 。
比如,RCP設備甚至有下圖這種手掌大小的。
<img src="https://pic2.zhimg.com/50/v2-b0129c9ef9c037019bf14bb1529980ef_hd.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="403" data-rawheight="238" data-default-watermark-src="https://pic1.zhimg.com/50/v2-a6b0ee095a9f15ed999651ca9e8df33f_hd.jpg?source=1940ef5c" class="content_image" width="403"/>
HIL設備有桌面式的,也有機櫃式的。
桌面式如下圖左側設備:
<img src="https://pic3.zhimg.com/50/v2-e1258efb338d4e2dbf9447e9fdb20e74_hd.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="1883" data-rawheight="539" data-default-watermark-src="https://pic2.zhimg.com/50/v2-90dfc312142365816c1709ee00ddd82b_hd.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="1883" data-original="https://pic2.zhimg.com/v2-e1258efb338d4e2dbf9447e9fdb20e74_r.jpg?source=1940ef5c"/>
截圖引自MathWorks公開課視頻,鏈接如下:
Using Speedgoat Target Computer Hardware for Simulink Real-Timewww.mathworks.com
集成程控電源、信號調理板卡、故障注入板卡等的機櫃式HIL設備如下圖(引自MathWorks官網):
<img src="https://pic4.zhimg.com/50/v2-c98d242578f8445c83f2dbb959880531_hd.jpg?source=1940ef5c" data-size="normal" data-rawwidth="281" data-rawheight="718" data-default-watermark-src="https://pic4.zhimg.com/50/v2-143363e1a9fde64a43f245770533293e_hd.jpg?source=1940ef5c" class="content_image" width="281"/>
截圖引自MathWorks官網
轉自:https://www.zhihu.com/question/369208008/answer/1066342163
也即是硬件在回路(HiL ),首先看一下下面三種情況的區別(如果將實際控制器的仿真稱為 虛擬控制器,實際對象的仿真稱為虛擬對象,可得到控制系統仿真的3種形式:)
①虛擬控制器+虛擬對象=動態仿真系統,是純粹的系統仿真;
③實際控制器+虛擬對象=硬件在回路(HiL)仿真系統,是系統的另一種半實物仿真 。