Parametrierung der Code-Generierung über ein m-file
Es gibt zwei Möglichkeiten, die Parametrierung der Code-Generierung über ein m-file (oder mlx-file) vorzunehmen:
- über modell-spezifischen Simulink®-Parameter mit
set_param
- über eine Instanz des Modulgenerators
TwinCAT.ModuleGenerator
Konfiguration über Simulink®-Parameter
Mit set_param
können Sie einem Objekt in Simulink® spezifische Parameter zuweisen. Wenn Sie die Konfiguration des Modulgenerators mit set_param
vornehmen, wird diese entsprechend im Simulink®-Modell hinterlegt.
Zur Strukturierung der Konfigurationsparameter kann hier kein Namespace genutzt werden, deshalb wird den Konfigurationsparametern ein Präfix vorangestellt. Dem Parameternamen (Spalte „Name“ in der Tabelle der Konfigurationsparameter) wird je nach Ebene ein Project_, TcCom_
oder TcPlcFb_
vorgesetzt.
Project_
Präfix: Bei allen Parametern, die in der Darstellung der Configuration Parameter in den Tabs TC General, TC Build, TC PLC Library und TC License, gruppiert sind.TcCom_
Präfix: Bei allen Parametern, die in der Darstellung der Configuration Parameter in den Tabs TC TcCom gruppiert sind.TcPlcFb_
Präfix: Bei allen Parametern, die in der Darstellung der Configuration Parameter in den Tabs TC PlcFb gruppiert sind.
Sie können ebenfalls den genauen Parameternamen durch die Suchfunktion im Simulink®-Modell herausfinden.

Beispiel
% load Simulink model
controller = load_system('TempCtrl.mdl');
% configure TwinCatGrt
set_param(controller,'SystemTargetFile','TwinCatGrt.tlc');
% set project specific parameters
set_param(controller,'TcProject_VendorName','CompanyName');
set_param(controller,'TcProject_GeneratePlcLibrary','on');
set_param(controller,'TcCom_OnlineChange','on');
set_param(controller,'TcPlcFb_MonitorExecutionTime','on');
% build the model
slbuild(controller);
% save and close the model
close_system(controller,1);
Konfiguration über den Modulgenerator
Parameter-Einstellungen wie im obigen Beispiel können auch über den Modulgenerator getätigt werden. Damit verbleiben die Einstellungen nicht im Simulink®-Modell, sondern in der Instanz des Modulgenerators.
Dazu wird lediglich für das Simulink®-Modell das SystemTargetFile definiert und der Parameter TcProject_Generate ausgeschaltet. Dadurch werden nur Code Artifacts erzeugt, aber kein TwinCAT C++-Projekt abgeleitet und auch dementsprechend nicht kompiliert. Die Code Artifacts werden im aktuellen MATLAB®-Pfad im Ordner <ModelName>_tcgrt abgelegt.
![]() | Export des Blockdiagramms Auf Ebene des Simulink®-Modells sollten Sie ebenfalls entscheiden, ob Sie das Blockdiagramm exportieren möchten. In den nachfolgenden Schritten arbeiten Sie auf den Code Artifacts und nicht mehr auf dem Simulink®-Modell. |
Sie können im Nachgang den Code Artifacts Ordner angeben, um eine ProjectExport-Konfiguration in den TwinCAT.Modulgenerator
zu laden. Hier können Sie dann Ihre Einstellungen vornehmen und das Projekt kompilieren.
Beispiel
% load Simulink model
controller = load_system('TempCtrl.mdl');
% configure TwinCatGrt
set_param(controller,'SystemTargetFile','TwinCatGrt.tlc');
% disable generation of C++ project files for each model (suppresses build)
set_param(controller,'TcProject_Generate','off');
% create code artifacts
slbuild(controller);
% save and close the model
close_system(controller,1);
% find the code artifacts in the existing code generation directories
controllerBuildDir = fullfile(pwd,'TempCtrl_tcgrt');
% load existing export configurations
controllerCfg = TwinCAT.ModuleGenerator.ProjectExportConfig.Load(controllerBuildDir);
% show complete configuration in MATALB Command Window
controllerCfg
% set project specific parameters
controllerCfg.Project.VendorName = "Company";
controllerCfg.Project.GeneratePlcLibrary = true;
controllerCfg.ClassExportCfg{1}.TcCom.OnlineChange = true;
controllerCfg.ClassExportCfg{1}.PlcFb.MonitorExecutionTime = true;
% set generate to true
controllerCfg.Project.Generate = true;
% instantiate and run the project exporter
TwinCAT.ModuleGenerator.ProjectExporter(controllerCfg);
Anwendungsbeispiele
Die Trennung des Code-Generierungsvorgangs in die Schritte (1) Erstellung der Code Artifacts und (2) Konfiguration des Modulgenerators und Erstellung der TwinCAT-Objekte, kann in unterschiedlichen Szenarien hilfreich sein:
- Sie möchten die Einstellungen des Modulgenerators nicht in jedem Simulink®-Modell speichern.
- Sie möchten mehrere Simulink®-Modelle in einem Projekt zusammenfügen. Damit werden alle Modelle in einem Treiber und in einer SPS-Bibliothek zusammengefasst. Beispiel:
TwinCAT.ModuleGenerator.Samples.Start('Combine Multiple TwinCAT Classes In Libraries')
- Sie arbeiten mit einem Build-Server oder mit einem CI/CD System. Beispiel:
TwinCAT.ModuleGenerator.Samples.Start("Use Continuous Integration Principles with Code Generation")