dSPACE SYSTEMDESK · AUTOMATION

自動化產生 V-ECU(VEOS)與 FMU
COM API · 建置腳本 · CI 管線

SystemDesk 以 COM 自動化介面把「產生 V-ECU 實作 → 匯出容器 → 呼叫 VEOS Build Console 建置」整條流程腳本化。同一套機制依輸出副檔名產生 .vecu(供 VEOS/ConfigurationDesk)或 .fmu(供 FMI 相容模擬器)。

Python COM .vecu / .fmu VEOS Build Console Release 2024-B

本頁整理自 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)
關鍵:SystemDesk「V-ECU – Build」自動產生的建置腳本,其 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 依序執行:

驗證 ECU configuration 更新模組設定 產生並連接 BSW 產生 V-ECU 實作檔(H/C · ARXML · A2L)

此步驟同樣可透過自動化介面觸發(BSW 模組設定的自動化程式庫)。產生後即可:匯出 .vecu 供 VEOS/ConfigurationDesk,或(V-ECU 含 FMI adapter 時)匯出 .fmu。

04. 自動化基礎:連線與腳本骨架

官方建議的 Python 腳本結構:① 匯入模組 → ② 加入 Tools\Scripting 到搜尋路徑並匯入列舉定義 → ③ 定義功能函式 → ④ 於 Main() 呼叫。

連線與骨架(手冊所載 API 用法)Python
# ① 匯入模組
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() 效能更佳。

CI 必備 — Batch Mode:Message Browser 的 batch mode 決定自動化腳本執行時是否彈出訊息對話框。預設為停用,此時發生錯誤腳本會卡住等待關閉對話框。在無人值守的管線中務必啟用 batch mode,讓訊息不阻斷腳本。

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
veosBuildToolVEOS Build Console 路徑\Program Files\dSPACE VEOS <版本>\bin\veos-build.exe

建置腳本的參數區塊概念如下(實際匯出/呼叫程式碼以 SystemDesk 產生的腳本為準):

<ProjectDir>\VEcuImplementations\<VEcuName>.py(參數區塊)Python
# 產生 .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)。
V-ECU Manager 建立 V-ECU V-ECU – Build 產生建置腳本 修改參數 / 存到 Working Directory 匯出 .vecu + VEOS Build Console 建置
VEOS Build Console 是 VEOS 安裝內的命令列建置工具(取代 VEOS Player 的圖形建置),可在無 GUI 環境建置 V-ECU;完整參數見 VEOS User Interfaces Reference 的「VEOS Build Console Command Reference」。你也可將建置腳本放到 Preferences – Working Directories 指定的目錄,讓 SystemDesk 於 V-ECU – Build 時直接呼叫你的自訂版本。

06. 範例 B:自動匯出 V-ECU FMU

匯出 FMU 的前提是 V-ECU 已加入 FMI adapter(FMI 2.0 或 3.0,見 FMU Export 設定)。手動 UI 流程如下,這些動作皆可經自動化介面腳本化,或直接讓建置腳本的 containerFile 指向 .fmu:

01

啟用產生

V-ECU ribbon → Enable Auto Configure and Generate。

02

匯出 FMU

V-ECU Manager 選 V-ECU → 右鍵 → Export V-ECU FMU,SystemDesk 先驗證。

03

設定並匯出

Export FMU 對話框選匯出組態 → Export。

Export FMU 對話框的匯出模式(組態定義於 Preferences → FMU Export):

匯出模式說明
Build and export binaries觸發建置,匯出含二進位的 FMU
Export source code只匯出原始碼
兩者皆選同時匯出二進位與原始碼
FMU 限制:FMI 標準不支援 dSPACE SIL 全部功能(如 LIN / Ethernet)。需要完整功能與匯流排時序時,改產出 .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# 引用):

SystemDesk 安裝的 Bin 目錄cmd
:: 產生某模組定義的自動化組件(.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.zipRuleModule.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 SystemDeskCOM API、物件模型、多語言、腳本骨架、SystemDeskEnums、pythoncom.Nothing、AddNewRange、Build Pipelines、SystemDesk.Console.exe、Message Reader API
SystemDesk Manual — Generating V-ECU ImplementationsAuto Configure and Generate(RTE/BSW/A2L 產生流程)
SystemDesk Manual — Performing Test Builds建置腳本參數(projectFile/vEcuName/containerFile/veosBuildTool)、VEOS Build Console
SystemDesk Manual — Configuring ECUs for FMU ExportFMI adapter、Export V-ECU FMU、FMU Export 匯出組態
SystemDesk Manual — Demos and Sample ScriptsDemos 資料夾、LunarLander(code-based V-ECU)等範例

程式碼骨架取自手冊所載 API 用法;建置/匯出的實際方法呼叫以 SystemDesk 自動產生的建置腳本與 SystemDesk API Reference 為準。實際選單、路徑與參數請以安裝版本為準。