1.引言
在汽車行業向軟件定義汽車(SDV)轉型的過程中,傳統硬件在環(HIL)測試方案因難以適應新的技術架構與需求,其局限性日益凸顯。傳統HIL對硬件依賴性強,擴展性差,更換ECU或傳感器需額外硬件支持,成本高且周期長、難以協調多供應商的異構模型,通信協議之間轉換復雜、對實時場景支持有限(如μs級響應),且難以保證分布式系統的全局時間同步。而以上這些問題痛點通過軟件在環(SIL),依托仿真中間件都可以迎刃而解。所謂“在環”指的是將待測軟硬件置于一個模擬的閉環系統中進行測試和驗證,好像被“圈”在一個由輸入、處理和輸出構成的環路中,不斷地與模擬環境進行交互,以驗證各種情況下的功能和性能是否正確和穩定。而軟件在環,就是這基礎上將待測試的嵌入式軟件從硬件環境中抽象出來,在完全虛擬環境中進行運行和測試。
2.仿真中間件SIL KIT的應用生態
SIL仿真中間件通過虛擬化、標準化通信和分布式架構,可有效解決傳統HIL在擴展性、復雜性和成本方面的局限性。尤其在新型電子架構和自動駕駛開發中,逐漸成為不可替代的測試驗證手段。借助仿真中間件SIL KIT可以實現以下功能:
- 通過SIL KIT可創建虛擬ECU節點,無需物理硬件即可模擬各類控制器功能
- 支持虛擬 CAN、LIN 和以太網
- 提供標準化通信層,如SOME/IP,兼容多種工具鏈
- 提供全局仿真時鐘(精度可達±100μs),支持確定性調度
- SILKIT可優化大數據傳輸(如激光雷達點云)
SIL KIT的設計目標之一是實現輕松連接不同的工具,并在算法開發的初期階段進行功能驗證。SIL KIT提供抽象通信服務、虛擬車輛網絡、虛擬時間同步和生命周期管理服務。可與虛擬以太網和 CAN 網絡、Linux 虛擬輸入 / 輸出設備、功能模型接口(FMI)標準實現互操作,并支持流行的系統仿真器 QEMU。目前越來越多的第三方軟件工具支持SIL KIT。這種靈活性與高性能相結合,使 SIL Kit 成為軟件定義汽車(SDV)架構下 SIL 測試的完美基礎。
圖 1?SIL KIT生態圖
???????2.1?FMU導入器
SIL KIT可以通過FMI標準接口將FMU作為仿真的一個節點進行訪問,通過YAML配置文件進行FMU和SIL KIT仿真之間的數據和時間同步設置。SIL KIT提供了Synchronized時間同步模式,使得FMU通過SIL KIT的虛擬時間同步與其他SIL KIT參與者同步。可確保在處理下一個仿真步驟之前,FMU接收到來自虛擬時間中先前時間點的所有數據,并立即執行 FMU 的仿真步驟。 ??????
圖 2?SIL KIT與FMU集成
多個FMU之間數據的mapping可以通過配置VariableMapping來快速實現在序列化數據之前將數據進行交換和共享以及類型轉化。??
圖 3?多個FMU之間的數據mapping
??????????????2.2?SIL KIT 網絡模擬器
SIL KIT 網絡模擬器可在網絡層面實現通信行為模擬。它支持 CAN、CAN FD、CAN XL、LIN、FlexRay 和以太網,并將特定總線行為集成到 SIL Kit 仿真環境中。
- 可模擬帶寬和網絡延遲等基本參數
- 可確保準確模擬特定總線行為,如 CAN 網絡中的仲裁或 FlexRay 集群中的調度
- 由網絡模擬器賦能的 SIL Kit 仿真能夠進行更精細的分析,并使仿真結果更具實際意義
- 能在早期階段評估網絡設計,包含在過載條件下
? ? ??
圖 4?網絡模擬階段圖
??????????????2.3?SIL KIT 監測器
SIL KIT檢測器是用來收集、存儲并展示來自SIL KIT系統的信息。它是SIL KIT庫的多功能擴展,包含數據庫后端和輕量級 Web 客戶端。通過其Web界面,用戶可以評估已結束的仿真,并監控正在運行的仿真的實時視圖,有助于對仿真進行詳細分析,提供全面的統計數據,并幫助識別配置錯誤和系統異常行為。
圖 5監測器界面
3.仿真中間件SILKIT示例
綜上所述SIL KIT很適合用于自動駕駛算法測試,接下來我們將以自動駕駛ACC功能為例,了解SIL KIT是如何將基于VTD的毫米波雷達數據以CANFD的形式、攝像頭數據以以太網的形式與ACC算法相連接形成閉環,并觸發ACC功能的。
?
圖 6?ACC Demo數據流
3.1 CAN FD的模擬
SIL KIT經過二次開發支持導入并解析DBC文件,可根據信號長度、初始值、Offset、Factor、Layout等構建CAN或CAN FD報文,以原始數據形式發出或對接收到的Message進行解析。如圖 7為原始DBC文件及圖 8解析后的DBC文件。
基于SIL KIT源碼編寫CanWriter、CanReader程序,其中CanWriter建立新線程用于讀取RDB_OBJECT_STATE_t信息,通過vehicle_state_canfd_vehicle_state_pack函數將傳感器數據打包成Message,隨后通過SendFrame函數發布信息到SilKit-Can總線上。
啟動CanWriter、CanReader程序后,在CANoe端激活SIL KIT,并在CAN節點中添加對應DBC文件,在CanWriter、CanReader程序、CANoe Trace中可以觀測到SIL KIT總線上發布的Message,如圖 9、圖 10所示。
圖 10?CANoe Trace CAN報文
3.2 以太網的模擬
在VTD中配置傳感器,同時基于SIL KIT源碼編寫 EthernetWriter、EthernetReader程序,在EthernetWriter中,利用SerializeSensorObjectMsg函數將傳感器數據序列化至payload,同時利用SendFrame函數將payload中的傳感器數據發布至SilKit-Ethernet總線上。對源碼進行編譯前確認CMakeLists.txt中確認已包含所需頭文件的路徑或源文件,如RDBHandler.cc、RDBHandler.hh等。
啟動程序后,在EthernetWriter、EthernetReader程序、CANoe Trace窗口可監控到以太網數據,如圖 11、圖 12、圖 13所示。
圖 12?EthernetReader終端
圖 13?CANoe Trace Ethernet報文
3.3 算法搭建
ACC DEMO算法采用Simulink搭建,生成為C++代碼后導入SIL KIT,算法作為一個SIL KIT總線節點接入來獲取SIL KIT總線上發布的傳感器數據作為函數輸入,根據當前車速、前車速度與前車的距離等車輛狀態信息,算出本車的加速度,圖 14為算法節點數據流。
算法計算出的車輛控制信號通過指針推入到初始化過得RDBHandler消息中指定的內存塊,通過TCP發送到TaskControl,并在parseRDBMessageEntry中調用本函數,來不斷覆蓋VTD 的DRIVER_CTRL信息實現對VTD中本車的控制。
??????????????3.4?集成與閉環效果
SIL KIT使用 YAML 配置文件來定義仿真環境和參與者的參數,圖 15YAML配置文件里定義了仿真環境的注冊地址和啟用了日志追蹤。
圖15 ?YAML配置文件
在 SIL KIT的仿真場景中,往往存在多個參與者。sil-kit-registry則作為集中式的協調中心,負責管理和協調這些參與者之間的通信與交互。記錄了所有參與者的信息,像參與者的名稱、連接的網絡端點等。當一個新的參與者啟動并嘗試加入仿真環境時,需向sil-kit-registry進行注冊。sil-kit-registry接收這個注冊請求,并將該參與者的信息添加到注冊表中。同時會把其他已注冊參與者的信息提供給新加入的參與者,這樣新參與者就能知道在仿真環境中還有哪些其他參與者,并與它們建立通信,圖 16為sil-kit-registry注冊列表圖。
圖 16 ?sil-kit-registry終端
完成注冊后,運行源碼編譯后的可執行文件,進而可實現不同抽象層次的通信,并執行ACC算法,場景中添加ACC算法后的Ego車可根據前車的速度和相對距離等實時調整本車速度,達到跟車效果,如圖 17所示。
4.總結
軟件定義汽車(SDV)正引領汽車行業的變革,其強調軟件在汽車功能實現與創新中的核心地位。在SDV的復雜開發與測試流程里,軟件在環(SIL)仿真技術至關重要,軟件在環測試無需實際的硬件設備,只需在計算機上運行軟件和模擬模型,可大大減少硬件采購、維護和更新的成本。而仿真中間件SIL KIT在軟件在環中更是扮演著不可或缺的角色,它為SDV生態系統中的各類組件與工具搭建起互聯互通的橋梁,有力推動著汽車軟件開發的高效迭代與創新。SIL KIT為自動駕駛算法的開發與測試提供了豐富的資源與環境。開發人員能借助SIL KIT連接自動駕駛算法仿真模塊與高精度地圖仿真、車輛動力學仿真、傳感器仿真等多個模塊。驗證算法在復雜場景下的準確性與可靠性,加速算法迭代優化。下一期內容將介紹虛擬ECU的開發,深入探討基于Vector的vVIRTUALtarget的vECU生成,以及在SIL中的應用。