SIMULINK · TARGETLINK · SIC

SIC 的 Simulink 模組需求
與 TargetLink 彈性調用

產生 SIC(Simulink Implementation Container)對 Simulink 環境與模組有明確需求。除了 Model Interface Package for Simulink,TargetLink 亦可將產品碼彈性地輸出為 SIC,作為行為模型用於 ConfigurationDesk 與 VEOS。

Simulink Coder · dsrt.tlc Model Interface Blockset tlGenerateSic Release 2024-B

SIC 可由兩種工具鏈產生:Model Interface Package for Simulink(一般 Simulink 行為模型)與 TargetLink(將產品碼輸出為 SIC)。本頁前半說明產生 SIC 對 Simulink 的模組與環境需求,後半說明 TargetLink 如何彈性地調用並產生 SIC。內容整理自 dSPACE 原廠手冊(RLS2024-B)。

Ⅰ Part I SIC 產生的 Simulink 模組需求

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 Referencingmodel 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() 指定各平台適用的靜態程式庫。
Ⅱ Part II TargetLink 的彈性調用(以 TargetLink 產生 SIC)

6. 概念:TargetLink 產品碼作為行為模型

可將 TargetLink 子系統產生的產品碼(production code)作為 ConfigurationDesk 的行為模型,從而在 dSPACE 即時平台上模擬產品碼。作法是:建模行為模型介面 → 產生程式碼 → 由 TargetLink 匯出為 SIC。

TargetLink 子系統 產生產品碼 匯出 SIC(.sic) ConfigurationDesk / VEOS

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_INPORTInPort(結構化用 Bus Inport)
Data outport…/RealTimePlatformSupport/DATA_OUTPORTOutPort(結構化用 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。有三種存取方式:

smart_button

按鈕

TargetLink Main Dialog 區塊 → Tools 頁 → Simulation unit export 群組 → Export SIC 按鈕。

terminal

API

於 MATLAB 呼叫 tlGenerateSic,適合自動化與批次流程。

tab

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)。
ContainerDirSIC 輸出目錄(預設:.\TLSIC)。
VariableDescriptionFileFormatTRC(供 ConfigurationDesk,預設)或 A2L(供 VEOS Player 與 ConfigurationDesk)。
ShowModelHierarchyInTrcFileTRC 內容依 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 blocksDD 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 GuideModelInterfacePackageForSimulinkGuide.pdf
TargetLink Interoperation and Exchange GuideTargetLinkInteroperationAndExchangeGuide.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\