自動化產生 V-ECU(VEOS)與 FMU
COM API · 建置腳本 · CI 管線
SystemDesk 以 COM 自動化介面把「產生 V-ECU 實作 → 匯出容器 → 呼叫 VEOS Build Console 建置」整條流程腳本化。同一套機制依輸出副檔名產生 .vecu(供 VEOS/ConfigurationDesk)或 .fmu(供 FMI 相容模擬器)。
本頁整理自 dSPACE 原廠文件:SystemDesk Manual「Automating SystemDesk / Generating V-ECU Implementations / Performing Test Builds / Configuring ECUs for FMU Export / Using SystemDesk in Build Pipelines」與 SystemDesk Tutorial(RLS2024-B)。程式碼骨架取自手冊所載 API 用法;建置與匯出的實際方法呼叫,請以 SystemDesk「V-ECU – Build」自動產生的腳本與 SystemDesk API Reference 為準。
目錄
01. 自動化架構與物件模型
SystemDesk 的自動化介面是一個以 Microsoft COM 實作的 API,任何 COM 相容的語言/環境皆可驅動——可自動化「設定專案、建立 SWC、驗證系統、匯入匯出檔案、產生報告」等幾乎所有功能,也包含產生 V-ECU 實作與在建置管線中建置。
支援語言
Python(外部直譯器 / PythonWin)、MATLAB M、Microsoft Office VBA;以及 C# / C++ / Visual Basic 開發的應用程式。
物件模型
Collection(Add/Item/Count/Elements/Names)、Interface(Name/Description/UUID、Delete/MoveTo)、Enumeration。
進入點
win32com.client.Dispatch("SystemDesk.Application");指定版本用 "SystemDesk.Application.2024-B"。IntelliSense(Visual Studio)可查 API。
02. 兩種產出:.vecu vs .fmu
自動化的最終產物有兩種格式,由同一套「產生 V-ECU 實作 + 建置」機制輸出,差別僅在目標平台與匯出格式:
| 格式 | 用途 / 平台 | 特性 |
|---|---|---|
| .vecu V-ECU 實作容器 | dSPACE SIL 解決方案:VEOS(離線模擬)與 ConfigurationDesk(即時) | dSPACE 專屬格式,支援 SIL 解決方案全部功能(CAN/LIN/Ethernet、診斷等) |
| .fmu V-ECU FMU | FMI 相容模擬器(第三方);OEM–供應商協作、非全員採用 dSPACE SIL 時 | 需在 V-ECU 加入 FMI adapter(FMI 2.0 / 3.0);受 FMI 標準限制(如不支援 LIN/Ethernet) |
containerFile 參數預設值即為 <VEcuName>.vecu/.fmu——換言之,指定副檔名 .vecu 或 .fmu 即決定產出哪一種容器(FMU 另需 V-ECU 具備 FMI adapter)。03. 前置:產生 V-ECU 實作(Auto Configure and Generate)
建置容器前,必須先從 ECU configuration 產生 V-ECU 實作——即產生 RTE 程式碼、BSW 模組設定與程式碼、以及變數描述(A2L)。UI 路徑:ECU Configuration Manager 選取 ECU configuration → ECU Configuration – Auto Configure and Generate,SystemDesk 依序執行:
此步驟同樣可透過自動化介面觸發(BSW 模組設定的自動化程式庫)。產生後即可:匯出 .vecu 供 VEOS/ConfigurationDesk,或(V-ECU 含 FMI adapter 時)匯出 .fmu。
04. 自動化基礎:連線與腳本骨架
官方建議的 Python 腳本結構:① 匯入模組 → ② 加入 Tools\Scripting 到搜尋路徑並匯入列舉定義 → ③ 定義功能函式 → ④ 於 Main() 呼叫。
# ① 匯入模組 import sys, os import win32com from win32com.client import Dispatch # 開啟 COM 連線(未啟動時會自動啟動 SystemDesk;可加版本字尾指定版本) sd = Dispatch("SystemDesk.Application.2024-B") # ② 加入 SystemDesk 的 Scripting 目錄並匯入列舉定義 scripting = os.path.join(sd.ApplicationRootDir, r"Tools\Scripting") sys.path.insert(0, scripting) import SystemDeskEnums # reload(SystemDeskEnums) # 於互動式重載時
移除參考用 pythoncom.Nothing
將參考設為 None 會出錯;須用 pythoncom.Nothing。例:elem.CompuMethod = pythoncom.Nothing。
大量新增用 AddNewRange
批次建立元素時,以短名字串陣列呼叫 ArPackages.AddNewRange(names) 比逐一 AddNew() 效能更佳。
05. 範例 A:自動產生 V-ECU 並建置給 VEOS
SystemDesk 在你於 V-ECU ribbon 點 V-ECU – Build 時,會自動產生一支 Python 建置腳本,預設存於 <ProjectDir>\VEcuImplementations\<VEcuName>.py。此腳本以 COM API 匯出 V-ECU 實作容器,並呼叫 VEOS Build Console(veos-build.exe)完成建置。建議以它為起點修改。其四個關鍵參數:
| 參數 | 說明 | 預設值 |
|---|---|---|
| projectFile | 含 V-ECU 實作的專案路徑 | %USERPROFILE%\...\NewProject.sdp |
| vEcuName | 要建置的 V-ECU 實作名稱 | V-ECU Manager 中的名稱 |
| containerFile | 要匯出的容器路徑 —— 副檔名決定 .vecu 或 .fmu | <ProjectDir>\...\<VEcuName>.vecu/.fmu |
| veosBuildTool | VEOS Build Console 路徑 | \Program Files\dSPACE VEOS <版本>\bin\veos-build.exe |
建置腳本的參數區塊概念如下(實際匯出/呼叫程式碼以 SystemDesk 產生的腳本為準):
# 產生 .vecu 供 VEOS 建置 projectFile = r"C:\...\NewProject.sdp" vEcuName = "MyVEcu" containerFile = r"C:\...\VEcuImplementations\MyVEcu.vecu" # ← .vecu = VEOS veosBuildTool = r"C:\Program Files\dSPACE VEOS 2024-B\bin\veos-build.exe" # 腳本以 COM API 開啟專案、匯出 containerFile,再呼叫 veosBuildTool # 進行建置(另需指定 VEOS Build Console 參數,如 build directory)。
06. 範例 B:自動匯出 V-ECU FMU
匯出 FMU 的前提是 V-ECU 已加入 FMI adapter(FMI 2.0 或 3.0,見 FMU Export 設定)。手動 UI 流程如下,這些動作皆可經自動化介面腳本化,或直接讓建置腳本的 containerFile 指向 .fmu:
啟用產生
V-ECU ribbon → Enable Auto Configure and Generate。
匯出 FMU
V-ECU Manager 選 V-ECU → 右鍵 → Export V-ECU FMU,SystemDesk 先驗證。
設定並匯出
Export FMU 對話框選匯出組態 → Export。
Export FMU 對話框的匯出模式(組態定義於 Preferences → FMU Export):
| 匯出模式 | 說明 |
|---|---|
| Build and export binaries | 觸發建置,匯出含二進位的 FMU |
| Export source code | 只匯出原始碼 |
| 兩者皆選 | 同時匯出二進位與原始碼 |
.vecu 供 VEOS。相容性資訊見 dspace.com/go/FMI-Compatibility。07. CI/CD 建置管線
SystemDesk 可在持續整合/持續測試管線中產生 V-ECU 實作(可用 Jenkins 等工具),流程為:軟體架構 + 原始碼 + 匯流排模型 → 持續整合產生 V-ECU → 由 VEOS 建置 → 以 AutomationDesk 自動測試或 ControlDesk 手動測試。
7.1 命令列產生/註冊 BSW 自動化組件
於 SystemDesk 安裝的 Bin 目錄,用 SystemDesk.Console.exe 為模組設定自動化建立/註冊組件(供 Python/C# 引用):
:: 產生某模組定義的自動化組件(.dll) SystemDesk.Console.exe -GenerateBsw ^ "<Absolute path>\AUTOSAR_MOD_ECUConfigurationParameters_4.3.0.arxml;/AUTOSAR/EcucDefs/Com" :: 註冊 %ProgramData%\dSPACE\SystemDesk\2024-B\Automation 下所有組件 :: 並產生供 Python 使用的 *.tlb SystemDesk.Console.exe -RegisterBsw
產生的組件與列舉定義模組位於 %ProgramData%\dSPACE\SystemDesk\2024-B\Automation;Python 腳本把此路徑加入搜尋路徑後 import 即可設定 BSW 模組、產生程式碼、轉換模組設定等。
7.2 管線日誌:Message Reader API
建置管線中應以 Message Reader API(dSPACE.Common.MessageHandler.Logging)讀取 SystemDesk 產生的訊息,將驗證/產生/建置結果導入 CI 日誌與判定。搭配啟用 batch mode(§04)確保無對話框阻斷。
08. 官方 Demo 與範例腳本
SystemDesk 安裝於 .\Demos 提供 ZIP 範例(使用前先複製到 Documents 解壓)。每個 demo 含 SD(專案與 AUTOSAR 模型/實作檔)與 Scripts(以工具自動化建立 demo 的 Python 檔)兩資料夾:
| Demo | 重點 |
|---|---|
| LunarLander.zip | 示範建立 code-based V-ECU 供 SIL 測試 —— 與本主題最相關 |
| Tutorial.zip | 互動式導覽 SystemDesk 最重要功能(learning-by-doing) |
| AR_Fuelsys.zip | 較複雜功能,及 SystemDesk 與 TargetLink 的互通 |
| Validation.zip | RuleModule.py 示範自訂驗證規則 |
LunarLander 的 Scripts 內 Python 檔作為「以自動化建立並產生 code-based V-ECU」的實作起點,再接上 §05 的建置腳本產出 .vecu / .fmu。09. 最佳實務
- 以 SystemDesk 產生的腳本為起點不要從零手寫建置/匯出邏輯;用 V-ECU – Build 產生的
<VEcuName>.py再改參數,並置於 Working Directories。 - 副檔名決定產出
containerFile用.vecu(VEOS)或.fmu(FMI);FMU 前提是 V-ECU 具 FMI adapter。 - CI 啟用 batch mode避免錯誤對話框阻斷無人值守腳本;並以 Message Reader API 收集訊息做判定。
- 大量元素用 AddNewRange建構大型模型時以批次 API 提升效能;移除參考用
pythoncom.Nothing。 - 版本綁定多版本並存時以
Dispatch("SystemDesk.Application.2024-B")明確指定版本。 - 方法簽章查 API ReferenceAuto Configure / Export / Build 的確切方法名與參數,以 SystemDesk API Reference(dSPACE Help)與產生的腳本為準。
原始文件出處(dSPACE RLS2024-B)
| 文件 / 章節 | 內容 |
|---|---|
| SystemDesk Manual — Automating SystemDesk | COM API、物件模型、多語言、腳本骨架、SystemDeskEnums、pythoncom.Nothing、AddNewRange、Build Pipelines、SystemDesk.Console.exe、Message Reader API |
| SystemDesk Manual — Generating V-ECU Implementations | Auto Configure and Generate(RTE/BSW/A2L 產生流程) |
| SystemDesk Manual — Performing Test Builds | 建置腳本參數(projectFile/vEcuName/containerFile/veosBuildTool)、VEOS Build Console |
| SystemDesk Manual — Configuring ECUs for FMU Export | FMI adapter、Export V-ECU FMU、FMU Export 匯出組態 |
| SystemDesk Manual — Demos and Sample Scripts | Demos 資料夾、LunarLander(code-based V-ECU)等範例 |
程式碼骨架取自手冊所載 API 用法;建置/匯出的實際方法呼叫以 SystemDesk 自動產生的建置腳本與 SystemDesk API Reference 為準。實際選單、路徑與參數請以安裝版本為準。