TC3 Target for MATLAB Simulink - Neuladen eines Moduls

redria

Level-1
Beiträge
11
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich suche jemanden, der sich mit dem TwinCAT 3 Target für MATLAB Simulink auskennt.

Ich arbeite aktuell an einer Projektarbeit, die untersucht, TwinCAT mithilfe des Targets als Rapid Control Prototyping Umgebung einzusetzen.

Meine Problemstellung ist nun die Folgende:

Ich besitze bereits ein TwinCAT-Projekt mit einem TcCOM-Modul, das aus Simulink heraus erstellt wurde. Dessen Ein- und Ausgänge sind mit anderen TcCOM-Modulen verknüpft.
Anschließend ändere ich in Simulink das Modell und übersetze erneut in ein TcCOM-Modul. Nun möchte ich das Modul in TwinCAT erneut laden, ohne die Verknüpfung der Ein- und Ausgänge zu ändern.
Bislang verwendete ich dazu die unter "<TwinCATDir>\3.1\CustomConfig\Modules\<ModuleName>\<ModuleName>.tmc" angelegte .tmc-Datei mit der Funktion Reload TMI/TMC File..
Das funktioniert soweit auch gut, solange ich dabei in Simulink Blöcke ergänze oder hinzufüge.

Problematisch wird es, wenn ich in Simulink ausschließlich die Parameter von einem oder mehreren Blöcken ändere und neu übersetze.
Die Parameteränderung wird durch die Reload TMI/TMC File.. Funktion nicht nach TwinCAT übernommen. Unter Parameter (Init) bleiben die alten Parameter erhalten.

Ich muss also nach einer einfachen Parameteränderung immer das Modul löschen und neu aus dem TE1400 Module Vendor einfügen.
Anschließend ist es notwendig, die Ein- und Ausgänge neu zu verknüpfen.

Gibt es eine Funktion, um TwinCAT zu zwingen, die neuen Parameter mit der Reload TMI/TMC File Funktion zu übernehmen?
Gibt es alternativ eine Möglichkeit, nach dem Laden eines Moduls aus dem TE1400 Module Vendor die vorherige Verknüpfung der Ein- und Ausgänge wiederherzustellen?

Vielen Dank für Hilfe im Voraus!

Mit freundlichen Grüßen

Redria


Edit: Alternativ suche ich die Möglichkeit, durch einen Define oder ähnliches die Default-Werte direkt in die .tmc Datei zu schreiben. Gibt es hierfür eine Möglichkeit?
 
Zuletzt bearbeitet:
Ich kenne mich mit dem Matlab-anteil nicht aus, aber zwei Anfregungen.
1) LinkTo ermöglicht in C++ über die *.tmc die EA auf eine HW zu verknüpfen. Könnte/müsste eigentlich auch für die Matlab nutzen funktionieren.
http://infosys.beckhoff.de/index.php?content=../content/1031/tc3_c/27021598484077323.html&id=
2) Im EA-Baum von TwinCAT kannst du die Zuordnungen/Assignements exportieren bzw. importieren. Damit müsstest du mit relativ wenig Aufwand die Verknüpfungen immer wieder herstellen können.

Lass mal hören ob die Ideen tatsächlich bei dir umsetzbar sind.

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Punkt 1) wenn du nur Parameter änderst, kannst du das über das Blockschaldbild in TwinCAT tun, dazu muss man nicht neu generieren!! Von daher wird das nicht "problematisch", sondern dein Workflow ist mit Kanonen auf Spatzen schießen. Dazu brauch man noch nicht mal Matlab/ Simulink -> ist also denkbar einfach
Punkt 2) nach dem Reload der TMC-Datei in das Blockdiagramm wechseln, dort unter Other die ModelParameters auswählen und dort im Kontext-Menü "Insert default parameters" auswählen (siehe Bild). Danach werden die Parameter im Speicher durch die neu generierten Default-Parameter überschrieben -> ebenfalls einfach

Unbenannt.png

kommt halt immer auf den Anwendungsfall an, ob man nach Änderungen im Modul noch die alten Parameter behalten will, um nicht nochmal alles neu einzurichten oder ob man die neuen Default-Parameter verwenden möchte.

@Guga: das geht jetzt nicht nur bei C++ sondern schon länger auch aus der SPS heraus. Aus Simulink heraus geht es nicht. Ist aber ja gerade der Vorteil den man erzielen wollte, dass man Hardware unabhängig Module genieren kann um diese mehrfach zu Instanziieren und wiederzuverwenden.
 
Erstmal vielen Dank Euch beiden für Eure Antworten!

Als Hinweis vorneweg sei gesagt, dass es ein Ziel der Arbeit ist, TwinCAT von Studenten innerhalb eines Laborpraktikums einsetzen zu lassen.
Aus diesem Grund suche ich nach einer Möglichkeit, die Diskrepanz der Parameter zwischen Simulink und TwinCAT, die nach Verwendung der Reload Funktion entstehen kann, zu umgehen.
Es könnte im Laborbetrieb die Studenten denke ich verwirren, wenn sie in Simulink einen Parameter ändern, das Modul eigentlich korrekt neu geladen wird, der Wert des Parameters sich jedoch nicht verändert.

@ Guga: Die LinkTo-Funktion finde ich tatsächlich sehr interessant. Wie KGU schon schrieb, habe ich diese bei C++ und der SPS gefunden, jedoch nicht in Simulink.
Ich würde mir wünschen, wenn man bei den TwinCAT-spezifischen IO-Blöcken einen LinkTo Pfad optional eingeben könnte.

@KGU: Sicherlich ist das mit Kanonen auf Spatzen schießen, jedoch wollte ich wie gesagt die Diskrepanz vermeiden, um keine Verwirrung zu erzeugen. Für einen Anwender, der sich mit dem TwinCAT-Target auskennt, ist dies sicherlich auch logisch.
Studenten, die gegebenenfalls TwinCAT zum ersten Mal sehen, wird das aber wahrscheinlich eher verwirren.
Deinen zweiten Vorschlag habe ich ausprobiert, jedoch setzt er bei mir dadurch alle Parameter auf null. (Vielleicht ein Bug? Ich verwende die Version 4020.14)

Mit freundlichen Grüßen

redria
 
Hallo,

ich hänge mich mal in die Thematik mit ein. Gibt es eine Möglichkeit aus der SPS heraus einen Neu-Start des TcCom-Object auszuführen? Bei dSpace geht das denkbar einfach!

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum verwendest du nicht einfach die vorgefertigten Blöcke vom TE1410? Damit entfällt der ganze Übertragungsprozess ins TwinCAT. Mit diesem stellst du einmal eine Verbindung zwischen TwinCAT und Simulink her und kannst dann unabhängig voneinander die beiden Programme bedienen.

Somit kannst du das Simulink auch steuern, wie du es gewohnt bist und kannst auch die volle Funktionspalette nutzen.

Gruss Dominik
 
Dominik, für Echtzeitanwendungen wird das so nicht funktionieren.

Andy: Die TcCom-Objekte können aus der SPS heraus instanziiert und auch wieder zerstört werden. Wenn man das Objekt komplett zurück setzen möchte, müsste man vermutlich diesen Weg gehen. Wenn man es nur starten oder stoppen bzw. die Ausgangsparameter wieder schreiben will, geht das auch ohne zerstören. Der mitgenerierte SPS-Funktionsbaustein enthält bereits alle Initialisierungsparameter. Die kann man aus der SPS heraus jederzeit wieder schreiben und das Objekt danach wieder ausführen.
 
Hallo KGU,
bisher führen wir einen Neu-Start des TcCom-Objects mit "Activate-Configuration" durch. Das dauert allerdings ziemlich lange. Wir würden das gerne aus der SPS heraus machen. Wenn ich das richtig verstehe, müssten wir das Objekt aus der SPS heraus "zerstören" um es somit wieder komplett zurück zu setzen.
Wie lässt sich das realisieren? Welcher Baustein findet hier Anwendung?

Gruß
 
Zurück
Oben