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:

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.

Sie können ebenfalls den genauen Parameternamen durch die Suchfunktion im Simulink®-Modell herausfinden.

Parametrierung der Code-Generierung über ein m-file 1:

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.

Parametrierung der Code-Generierung über ein m-file 2:

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: