Beckhoff TC3 - Kommunikation mit Matlab/Simulink

dofrey

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Im Rahmen meiner Bachelorarbeit möchte ich einen Simulink Regelkreis in meiner TwinCAT Steuerung einbauen. Dabei habe ich verschiedenen Verbindungsmöglichkeiten angeschaut und auch schon mehrere erfolgreich eingebaut (TE1400, TE1410 TC ADS Symbol Interface und TE1410 TC ADS Sync Read/Write). Diese funktionieren alle einwandfrei, jedoch kann ich mit den TE1410 Tools bis jetzt nur auf vorhandene TcCOM Objekte zugreiffen und kein eigenes erstellen.

Dies soll gemäss Anleitung mit dem TC ADS Module Interface gehen. Jedoch bekomme ich da eine Fehlermeldung, wenn ich das Modul erstellen will. Folgende Schritte habe ich unternommen:


  1. Matlab Interface Module unter TcCOM erstellt (Object Id: 0x01010030, AMS Net Id: 129.132.161.44.1.1)
  2. dieses mit einem eigenen Task verbunden (10 ms cycle ticks, Port 352)
  3. Dann in Matlab den Block "TC ADS Module Interface" erstellt
  4. NetID, OID wie oben eingetragen und eine neue Modul Instanz erstellt
  5. In-/Outputs hinzugefügt
  6. Apply geklickt
  7. -> Fehlermeldung: Could not save TMI file: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Nun weiss ich nicht mehr weiter wie ich das Problem lösen könnte. Was mir noch auffällt ist, dass er keinen Port verlangt bei diesem Modul. Jedoch wüsste ich nicht wo dieser noch einzufügen wäre.

Ich hoffe jemand kann mir einen Tipp geben.

Gruss Dominik
 
Hallo,

bist du in deiner Thematik bereits weiter gekommen? Um Simulinkmodelle einzubinden nutze ich die TE1400.
- Simulinkmodell erstellen und dort anhand der Beckhoff-Bibliothek die TC-Module Input/ Output an die jeweilige Stelle setzen.
- Build-Prozess in Simulink ausführen
- TcCom-Objekt in TwinCAT einbinden
- Task verbinden
- TcModuleInput/Outputs verbinden
- Konfiguration aktivieren
- Login

Gruß Andy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Andy,

Ja das TE1400 habe ich bereits erfolgreich eingebunden. Nach den Anleitungen ist dies auch mehr oder weniger verständlich möglich. Nur mit den Windows Zertifikaten hatte ich am Anfang ein wenig Probleme. Jedoch geht es in meiner Arbeit um die verschiedenen Möglichkeiten, die zur Verfügung stehen und daher möchte ich gerne auch das TE1410 benutzen. Ich denke vor allem während der Entwicklungsphase eines Systems ist es beser, wenn man das ganze Modell nicht für jeden Test neu kompilieren und einbinden muss, sondern extern im Simulink laufen lassen und verändern kann.

Später wenn keine grossen Änderungen im Simulink mehr auftreten, macht aber die direkte Einbindung im Code mit dem TE1400 dann doch mehr Sinn.

Ich war letzte Woche auf der Hannover Messe und habe bei Beckhoff nach diesem Fehler gefragt. Wir konnten ihn da auch reproduzieren, jedoch konnten wir keine Lösung dafür finden. Sobald ich eine Antwort von Beckhoff habe, werde ich euch hier die Lösung des Problems beschreiben.

Gruss Dominik
 
Hallo Dominik,

ich hab das TE 1410 mal für den External-Mode angewendet. Hast du den bereits eingesetzt?
Hier verliert man meines Wissens nach die Echtzeitfähigkeit des Modells. Daher hab ich das nicht weiterhin verfolgt.

Gruß
 
Hallo Andy,

Ich denke den External Mode brauchst du gar nicht um das TE1410 anzuwenden. External Mode bedeutet meines Wissens nach, dass nicht im Simulink, sondern auf einem anderen System gerechnet wird. Jedenfalls benutze ich den normalen Mode und verwende zum Beispiel den Block "TC ADS Symbol Interface". In diesem kann ich eine Synchronisation einstellen. Solange ich dann genügend Rechenleistung habe, sollte doch die Echtzeit garantiert sein oder nicht?

Gruss Dominik
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

bist du in deiner Thematik bereits weiter gekommen? Um Simulinkmodelle einzubinden nutze ich die TE1400.
- Simulinkmodell erstellen und dort anhand der Beckhoff-Bibliothek die TC-Module Input/ Output an die jeweilige Stelle setzen.
- ...

Gruß Andy

Nur um das mal gerade zu ziehen (wenn auch schon veraltet). Man braucht bei Beckhoff keine spezifischen Ein- und Ausgänge im Simulink Modell. Das funktioniert mit den Standard Ein- und Ausgängen aus Simulink. Die zusätzlichen Ein- Ausgänge sind nur für erweiterte Funktionalität notwendig. Z.B. Du hast in einem Subsystems Ein- oder Ausgänge die du nicht durch alle Hierachieebenen nach oben ziehen möchtest, dann kann man die direkt noch außen führen etc.
 
...
Dabei habe ich verschiedenen Verbindungsmöglichkeiten angeschaut und auch schon mehrere erfolgreich eingebaut (TE1400, TE1410 TC ADS Symbol Interface und TE1410 TC ADS Sync Read/Write). Diese funktionieren alle einwandfrei, jedoch kann ich mit den TE1410 Tools bis jetzt nur auf vorhandene TcCOM Objekte zugreiffen und kein eigenes erstellen.

...
Falls es noch interessant ist:
Das TE1410 ist ein Kommunikations-Interface zwischen TwinCAT und Simulink, welches die beschränkten Möglichkeiten des External-Modes deutlich erweitert. z.B. schneidet der External Mode bei SimMechanics die grafische Darstellung ab, so dass zwar die Physik in Echtzeit gerechnet wird, man aber nicht sieht wie sich die Maschine bewegt. Dies ist im Sinn einer virtuellen Inbetriebnahme aber unschön. Daher kann man die Verbindung mit dem TE1410 wiederherstellen.

"jedoch kann ich mit den TE1410 Tools bis jetzt nur auf vorhandene TcCOM Objekte zugreiffen" Das ist auch der Standard-UseCase. Man hat eine Anwendung in der Echtzeit und möchte aus dieser direkt Informationen angreifen um in Simulink oder Matlab damit zu arbeiten (z.B. für Analytics etc.). Dazu eignet sich der Symbol-Interface Block, weil man damit symbolisch auf die Variablen und Parameter in TwinCAT zugreifen kann. Für reines Matlab geht das auch klassenbasiert über Matlab Skript.
Der oben erwähnte Interface Block ist dazu gedacht, dass man sich auch ohne Applikationsprogramm und ohne Programmierung einen Task anlegt, über den Interface-Block ein Prozessabbild definiert und dieses über Verlinkungen mit beliebigen E/A's verknüpft. Somit kann man aus Simulink auch ohne Applikationsprogramm auf die Klemmen im Feld zugreifen und diese verwenden. Der Interface-Block selbst läuft dann in Echtzeit und sammelt die Daten ein und diese werden dann per ADS an Simulink oder Matlab weitergegeben.
 
Zurück
Oben