SIC 的 Simulink 模組需求
與 TargetLink 彈性調用
產生 SIC(Simulink Implementation Container)對 Simulink 環境與模組有明確需求。除了 Model Interface Package for Simulink,TargetLink 亦可將產品碼彈性地輸出為 SIC,作為行為模型用於 ConfigurationDesk 與 VEOS。
SIC 可由兩種工具鏈產生:Model Interface Package for Simulink(一般 Simulink 行為模型)與 TargetLink(將產品碼輸出為 SIC)。本頁前半說明產生 SIC 對 Simulink 的模組與環境需求,後半說明 TargetLink 如何彈性地調用並產生 SIC。內容整理自 dSPACE 原廠手冊(RLS2024-B)。
1. 軟體與環境需求
Simulink Coder 授權
產生 SIC 或於 ConfigurationDesk 啟動模型碼產生,皆需 Simulink Coder 授權。
dsrt.tlc 系統目標檔
必須指定 dSPACE Run-Time Target(dsrt.tlc)作為 system target file。
DSRT 模型範本
可由 Simulink 起始頁的 DSRT 範本建立新模型,已預設 dsrt.tlc 的程式碼產生選項與 model callbacks。
僅產生階段需 MATLAB
產生 SIC 需 MATLAB/Simulink;於 ConfigurationDesk 或 VEOS 使用 SIC 則不需 MATLAB。
2. 模型介面模組需求(Model Interface Blockset)
行為模型的介面必須以 Model Interface Blockset 的 model port blocks 定義。這是 SIC 對外暴露、供 ConfigurationDesk/VEOS 連接的介面。
Data Inport
資料輸入埠,實作外部送入模型的資料交換。
Data Outport
資料輸出埠,實作模型輸出至外部的資料交換。
Runnable Function
Hardware-Triggered(非同步,僅 ConfigurationDesk)與 Software-Triggered(預定義 task,CD 與 VEOS 皆可)。
- 唯一 ID 需求Data port block 具唯一 block/signal ID;跨模型沿用同一介面時,須用 Paste and Keep IDs 保留 ID(一般 copy&paste 會產生新 ID)。
- 函式名稱唯一Hardware-/Software-Triggered Runnable Function blocks 在模型中須有唯一函式名稱。
- 範本限制model templates 中不可使用 Model Interface Blockset 的 model port blocks。
3. 取樣時間與速率轉換
若模型中不同取樣時間(sample time)的區塊以訊號線相連,需要適當的耦合機制。可使用所有 Simulink/Simulink Coder 選項來建模速率轉換:
建議區塊:Rate Transition 區塊、Unit Delay 區塊。Data Inport/Outport 可用於既有 task,也可因設定不同 sample time 而負責新的週期 task。
4. MATLAB / Simulink 相容性規則
| 項目 | 規則 |
|---|---|
| 命名慣例 | 檔案與資料夾須遵循 MATLAB 命名慣例。 |
| 字元編碼 | 區塊名稱、訊號標籤、註解僅用 ASCII;避免 UTF-16 全形字元。區塊/訊號名稱勿含 "、/、.。 |
| 變數名稱 | 不可含雙底線(__);不可以「底線 + 大寫字母」開頭。 |
| Model Referencing | model port blocks 只能用於 model referencing 階層的最上層;被參考模型含 model port blocks 會使建置中止。存取被參考模型變數時,Total number of instances 須設為 One。 |
| 巢狀保護模型 | 保護模型可含其他保護的被參考模型,但不支援巢狀保護模型。 |
| User S-function | 模型碼產生時,<sfunname>.c 或 .cpp 原始檔須存在(若實作由靜態程式庫提供,該檔可為空)。 |
| Code Generation Folder | 用於 SIC 產生的模型,Folder Structure 僅支援預設的 Model Specific。 |
5. 不支援產生 SIC 的模組情況
- 匯流排 MultiMessage / FlexRay 區塊模型含 dSPACE RTI CAN MultiMessage、RTI LIN MultiMessage 或 FlexRay Configuration Blockset 區塊時,無法產生 SIC;但可將該模型直接加入 ConfigurationDesk 應用使用。(VEOS 亦不支援含 CAN/LIN MM 區塊之模型所產生的 SIC。)
- C++ 程式碼產生產生 SIC 時勿啟用 Simulink Coder 的 C++ code generation;可將 C++ 整合進 S-function,且變數名稱須符合 C 符號語法。
- 平台專屬 custom code加入平台專屬 custom code 後,SIC 可能無法在其他平台建置,且工具不會發出警告。建議以
dsrt_addfiles()指定各平台適用的靜態程式庫。
6. 概念:TargetLink 產品碼作為行為模型
可將 TargetLink 子系統產生的產品碼(production code)作為 ConfigurationDesk 的行為模型,從而在 dSPACE 即時平台上模擬產品碼。作法是:建模行為模型介面 → 產生程式碼 → 由 TargetLink 匯出為 SIC。
7. 指定介面:Model Port Variables
要把 TargetLink 模型作為行為模型,須透過 model port variables 指定介面:建立參考合適 VariableClass 的 DD Variable 物件,並以 DD ModelPortBlock/ModelPort 物件分組。
| ConfigurationDesk 中的 Model Port | DD VariableClass 物件 | TargetLink Port Block |
|---|---|---|
| Data inport | …/RealTimePlatformSupport/DATA_INPORT | InPort(結構化用 Bus Inport) |
| Data outport | …/RealTimePlatformSupport/DATA_OUTPORT | OutPort(結構化用 Bus Outport) |
- 開啟 RealTimePlatformSupport產生要匯出至 SIC 的程式碼前,須將 Code Generator 的
RealTimePlatformSupport選項設為on(使用 SIC Manager 時會自動開啟)。 - 變數不可縮放model port variable 不可 scaled:存取 scaled 變數用浮點型(Float64/Float32);存取未縮放或 Boolean 變數則可用整數或 Bool 型。
- 初始值可於 DD Variable 的 Value 屬性指定初始值,作為 I/O 首次執行前即時應用的預設值。
- DD API可用
CreateSuitableModelPorts、DeleteObsoleteModelPorts、ReplaceID操作相關 DD 物件。若未明確指定介面,只要區塊變數特性允許,TargetLink 仍可產生 SIC(但無法控制 model port variables)。
8. SIC Runnable Functions 與多函式彈性
TargetLink 為子系統產生 root function,並由對應的 SIC runnable function 呼叫;在 ConfigurationDesk 中該 runnable function 可指派給 task,決定其執行方式。
單一 SIC 多個 runnable functions:以「外部觸發的 function-call 子系統」建模,可在一個 SIC 中產生多個 SIC runnable functions,於 ConfigurationDesk 指派到不同 task,達成非同步或不同速率執行。函式間若需通訊,以 Simulink Rate Transition 區塊建模資料流;勾選 Ensure data integrity during data transfer 可在即時模擬中以緩衝確保資料一致性。
- 優先權子系統產生的 SIC runnable function 具最高優先權;外部觸發子系統所產生者,依 FcnCall 訊號的 Inport 編號決定(編號越小優先權越高)。可於 ConfigurationDesk 再行調整。
- 初始化與啟停需初始值的變數在 RTA 啟動時重設,因此須在至少一個 restart function 初始化;或將
InitializeVariablesViaRestartFunction設為3 - Always。 - AUTOSAR為 AUTOSAR 軟體元件產生 SIC 時,檔內另含供即時硬體使用的模擬 Rte(stub Rte)原始檔。
9. 三種調用方式(SIC Manager)
TargetLink 的 SIC Manager 讓您把 SIC 匯出供 ConfigurationDesk 或 VEOS Player 使用;匯出含兩步驟:產生產品碼、收集所需檔案打包為 SIC。有三種存取方式:
按鈕
TargetLink Main Dialog 區塊 → Tools 頁 → Simulation unit export 群組 → Export SIC 按鈕。
API
於 MATLAB 呼叫 tlGenerateSic,適合自動化與批次流程。
Toolstrip
Simulink Toolstrip 的 TargetLink 頁 → Tools → Export › Simulation Unit › Export SIC…
彈性:多個 model implementation 指派同一 application process。TargetLink 產生的 SIC 可作為 model implementation,且可將多個指派到同一 application process(一對一或多對一皆可)。
10. tlGenerateSic 主要參數
tlGenerateSic('Model','myModel', ...
'TLSubsystems',{'ctrl'}, ...
'VariableDescriptionFileFormat','A2L', ...
'ContainerDir','.\TLSIC')
| 參數 | 說明(預設值) |
|---|---|
Model | 含 TargetLink 子系統的模型名稱(預設:目前模型)。 |
TLSubsystems | 要產生 SIC 的子系統名稱(預設:模型內全部)。 |
DDCodeGenerationUnits | 要納入的 DD CodeGenerationUnit;auto 由 TargetLink 自動判斷(預設:auto)。 |
ContainerDir | SIC 輸出目錄(預設:.\TLSIC)。 |
VariableDescriptionFileFormat | TRC(供 ConfigurationDesk,預設)或 A2L(供 VEOS Player 與 ConfigurationDesk)。 |
ShowModelHierarchyInTrcFile | TRC 內容依 Simulink 子系統階層(on)或函式階層(off,預設)呈現。 |
IncludeExternalVariablesInTRCFile | 是否納入全域外部變數描述(預設 on);設 off 可避免同一 process 多 SIC 的變數衝突。 |
IncludeStubCodeFileVariablesInTRCFile | 是否納入 stub code 全域變數描述(預設 on);設 off 同樣用於避免衝突。 |
IncludeSystemFiles | 是否複製 Fixed-Point Library 原始碼進 SIC(預設 on)。 |
GenerateGlobalSymbols | 處理未明確指定為介面、而為 extern global 的 root 函式介面變數;若定義已由 Addfile 區塊提供則須設 off(預設 on)。 |
11. 多 SIC 指派同一 Process 的變數衝突處理
當多個 TargetLink SIC 指派到同一 application process,若其 TRC 描述了相同的全域變數(externally defined 或 stub code 中定義),這些變數位址不會更新,ControlDesk 無法量測/校正,ConfigurationDesk 會顯示衝突。
解法:避免不同子系統的 SIC 共用相同全域變數;若無法避免,可將 tlGenerateSic 的 IncludeExternalVariablesInTRCFile 與 IncludeStubCodeFileVariablesInTRCFile 設為 off,讓該 SIC 的 TRC 不含這些變數描述。建置時 ConfigurationDesk 會為多個 model implementation 共用的全域變數各建獨立副本(與 SIL/PIL 每變數僅一份不同)。
12. TargetLink 產生 SIC 的限制
- array-of-bus 介面子系統 root ports 若路由 array-of-bus 訊號,無法產生 SIC。
- Adaptive AUTOSAR若以 Code generation mode =
Adaptive AUTOSAR產生產品碼,TargetLink 不產生 SIC。 - 同名原始檔若子系統或其下 incremental CGU 產生了「路徑不同但檔名相同」的原始檔,不產生 SIC。
- A2L 匯出容器匯出時產生 A2L,array-of-struct 變數的各元件不會產生 A2L 項目。
兩種 SIC 產生方式比較
| 面向 | Model Interface Package for Simulink | TargetLink |
|---|---|---|
| 程式碼性質 | 一般 Simulink 模型碼 | 產品碼(production code) |
| 介面定義 | Model Interface Blockset 的 model port blocks | DD model port variables + TargetLink port blocks |
| 產生方式 | Ctrl+B(dsrt.tlc)/dsrt_build() | SIC Manager 按鈕/tlGenerateSic/Toolstrip |
| 狀態變數記錄時點 | 於 t(n) 記錄 t(n) 值 | 於 t(n) 記錄 t(n+1) 值(輸出/更新碼未分離) |
| 同 process 多 SIC | 每 process 僅 1 個行為模型(如需 BSC) | 可多個 model implementation 指派同一 process |
兩種來源的 SIC 皆可加入 ConfigurationDesk 或匯入 VEOS。與 Bus Manager 整合、產生 BSC 的規則(每 application process 0 或 1 個 SIC 等),請參閱同系列文件 SIC 與 BSC 整合說明。
原始文件出處(dSPACE RLS2024-B)
| 文件 | 檔名 |
|---|---|
| Model Interface Package for Simulink – Modeling Guide | ModelInterfacePackageForSimulinkGuide.pdf |
| TargetLink Interoperation and Exchange Guide | TargetLinkInteroperationAndExchangeGuide.pdf |
| TargetLink API Reference(tlGenerateSic) | TargetLinkAPIReference.pdf |
| TargetLink Tool and Utility Reference(SIC Manager) | TargetLinkToolAndUtilityReference.pdf |
| TargetLink Limitation Reference(SIC Generation) | TargetLinkLimitationReference.pdf |
路徑前綴:C:\Users\Public\Acolada\Cobrili\HelpSetStorage\dSPACEPDF\RLS2024-B\en\