Bündelung mehrerer Modelle in einem TwinCAT-Treiber

Automatisch generierter Code von Simulink®-Modellen und MATLAB®-Funktionen können in einem einzelnen C++-Projekt gebündelt werden. Nach dem Build-Vorgang sind dann alle gebündelten Objekte in einem Treiber verfügbar.

Beispielcode in MATLAB®

Bündelung mehrerer Modelle in einem TwinCAT-Treiber 1:

Öffnen Sie das passende Beispiel mit: TwinCAT.ModuleGenerator.Samples.Start('Combine Multiple TwinCAT Classes In Libraries')

Vorteile der Bündelung

Wenn eine SPS-Bibliothek erzeugt wird, sind dann alle erstellen Objekte als Funktionsblock (FB) in dieser Bibliothek gelistet. Obwohl nur ein Treiber und eine tmc-Datei erstellt wird, sind dennoch alle Module einzeln unter System > TcCOM instanziierbar, d. h. aus Sicht des Anwenders in TwinCAT XAE ändert sich hinsichtlich der Nutzung der TcCOM-Objekte nichts. Bei Nutzung der SPS-Bibliothek erhöht sich die Übersichtlichkeit.

Bündelung mehrerer Modelle in einem TwinCAT-Treiber 2:

Vorteile der Bündelung in einem Treiber:

Hinweis

Simulink CoderTM unterstützt keine Namespaces

Werden Datentypen oder Funktionen mit gleicher Benennung in mehreren Modellen definiert, schlägt der Build-Vorgang fehl, da die Definitionen im selben Namespace liegen.

Vorgehensweise

1. Deaktivieren Sie in Simulink® „Run the publish step after project generation”. Dadurch wird nach der Code-Generierung abgebrochen und das erstellte C++-Projekt nicht kompiliert.
2. Nutzen Sie bei der Bündelung mehrerer Module einfach die generierten Ordner <modelname>_tcgrt, welche im aktuellen MATLAB®-Pfad abgelegt werden.
3. Laden, Bündeln und Konfigurieren Sie in einem Projekt über den ModuleGenerator die Exportkonfigurationen (<modelname>_tcgrt).
4. Erstellen Sie ein Export-Projekt.

Im Folgenden ist dies beispielhaft an der Bündelung von 2 Exportkonfigurationen gezeigt:

% find the code artifacts in the existing code generation directories
controllerBuildDir = fullfile(pwd,'TempCtrl_tcgrt');
ctrlsystemBuildDir = fullfile(pwd,'TempCtrlSysPT2_tcgrt');
% load existing export configurations
controllerCfg = TwinCAT.ModuleGenerator.ProjectExportConfig.Load(controllerBuildDir);
ctrlsystemCfg = TwinCAT.ModuleGenerator.ProjectExportConfig.Load(ctrlsystemBuildDir);
% create a new project export configuration
combinedCfg = TwinCAT.ModuleGenerator.ProjectExportConfig('FullPath',fullfile(pwd,'TempCtrlLib','TempCtrlLib.vcxproj'));
% add the loaded class export configurations to the new project configuration
combinedCfg.AddClassExportConfig(controllerCfg.ClassExportCfg{1});
combinedCfg.AddClassExportConfig(ctrlsystemCfg.ClassExportCfg{1});
% ...
% additinal class export configurations can be added here, loaded from
% - Simulink code generation directories (as described)
% - MATLAB code generation directories (from MATLAB Coder with TE1401) in the same way
% turn on generation and installation of the PLC library
combinedCfg.Project.GeneratePlcLibrary = true; % generate a PLC Lib true/false
combinedCfg.Project.InstallPlcLibrary = true; % install the PLC lib on local system true/false
% instantiate and run the project exporter
TwinCAT.ModuleGenerator.ProjectExporter(combinedCfg);