28
Handbuch MATLAB®/Simulink® TwinCAT 3 1.2 06.11.2018 Version: Datum:

06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

  • Upload
    hanhu

  • View
    238

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Handbuch

MATLAB®/Simulink®

TwinCAT 3

1.206.11.2018

Version:Datum:

Page 2: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls
Page 3: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Inhaltsverzeichnis

MATLAB®/Simulink® 3Version: 1.2

Inhaltsverzeichnis1 Vorwort ....................................................................................................................................................... 5

1.1 Hinweise zur Dokumentation............................................................................................................. 51.2 Sicherheitshinweise........................................................................................................................... 6

2 Übersicht .................................................................................................................................................... 7

3 Blockdiagramm........................................................................................................................................ 103.1 Bedienung des Blockdiagramms ..................................................................................................... 103.2 Einbinden des Blockdiagramm-Controls ......................................................................................... 113.3 Debuggen ........................................................................................................................................ 133.4 Anzeigen von Signalverläufen ......................................................................................................... 183.5 Modul-Parametrierung im Blockdiagramm ...................................................................................... 20

4 ADS-Kommunikation aus MATLAB ....................................................................................................... 224.1 Beispiele .......................................................................................................................................... 22

4.1.1 Zugriff auf ein Array in der SPS .......................................................................................  224.1.2 Ereignisgesteuertes Lesen ..............................................................................................  23

5 TwinCAT Automation Interface: Verwendung in MATLAB® ............................................................... 265.1 Beispiel: Tc3AutomationInterface.................................................................................................... 26

Page 4: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Inhaltsverzeichnis

MATLAB®/Simulink®4 Version: 1.2

Page 5: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Vorwort

MATLAB®/Simulink® 5Version: 1.2

1 Vorwort

1.1 Hinweise zur DokumentationDiese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- undAutomatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und dernachfolgenden Hinweise und Erklärungen unbedingt notwendig. Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem betreffenden Zeitpunktveröffentliche Dokumentation zu verwenden.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produktealle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungenund Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiterentwickelt.Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zuändern.Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche aufÄnderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE®, XFC®und XTS® sind eingetrageneund lizenzierte Marken der Beckhoff Automation GmbH.Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kannzu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen undPatente:EP1590927, EP1789857, DE102004044764, DE102007017835mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen undPatente:EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenenanderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizensiert durch die BeckhoffAutomation GmbH, Deutschland

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sindverboten, soweit nicht ausdrücklich gestattet.Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster-oder Geschmacksmustereintragung vorbehalten.

Page 6: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Vorwort

MATLAB®/Simulink®6 Version: 1.2

1.2 Sicherheitshinweise

Sicherheitsbestimmungen

Beachten Sie die folgenden Sicherheitshinweise und Erklärungen!Produktspezifische Sicherheitshinweise finden Sie auf den folgenden Seiten oder in den Bereichen Montage,Verdrahtung, Inbetriebnahme usw.

Haftungsausschluss

Die gesamten Komponenten werden je nach Anwendungsbestimmungen in bestimmten Hard- und Software-Konfigurationen ausgeliefert. Änderungen der Hard- oder Software-Konfiguration, die über diedokumentierten Möglichkeiten hinausgehen, sind unzulässig und bewirken den Haftungsausschluss derBeckhoff Automation GmbH & Co. KG.

Qualifikation des Personals

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs-,Automatisierungs- und Antriebstechnik, das mit den geltenden Normen vertraut ist.

Erklärung der Symbole

In der vorliegenden Dokumentation werden die folgenden Symbole mit einem nebenstehendenSicherheitshinweis oder Hinweistext verwendet. Die Sicherheitshinweise sind aufmerksam zu lesen undunbedingt zu befolgen!

GEFAHRAkute Verletzungsgefahr!Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht unmittelbare Gefahr fürLeben und Gesundheit von Personen!

WARNUNGVerletzungsgefahr!Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht Gefahr für Leben und Ge-sundheit von Personen!

VORSICHTSchädigung von Personen!Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, können Personen geschädigt wer-den!

HINWEISSchädigung von Umwelt oder GerätenWenn der Hinweis neben diesem Symbol nicht beachtet wird, können Umwelt oder Geräte geschädigt wer-den.

Tipp oder FingerzeigDieses Symbol kennzeichnet Informationen, die zum besseren Verständnis beitragen.

Page 7: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Übersicht

MATLAB®/Simulink® 7Version: 1.2

2 ÜbersichtMATLAB®/Simulink®

MATLAB®/Simulink® ist ein Werkzeug zur computergestützten Modellierung und Simulation sowie Analyse z.B. physikalischer oder biologischer Systeme und wird seit vielen Jahren in weiten Teilen der Forschung undEntwicklung eingesetzt. Das Programm wird von der Firma „The Mathworks“ entwickelt und vertrieben.Die Modelle der zu simulierenden Systeme werden in erster Linie grafisch in Form von Blockdiagrammenimplementiert, wie in der Regelungstechnik üblich. Die Standardbibliothek von Simulink stellt bereits einegroße Anzahl an Funktionsbausteinen zu Verfügung, mit denen das Verhalten beliebiger Systeme dargestelltwerden kann. Neben dieser Standardbibliothek gibt es Toolboxen für verschiedene Anwendungsgebiete(ereignisbasierte Systeme, physikalische Systeme, Steuerungs- und Regelungstechnik, Signal- sowieBildverarbeitung und vieles mehr), mit denen der Zeitaufwand verringert und die Modellierung vereinfachtwerden.

Einsatz von MATLAB®/Simulink® in der Automatisierungstechnik

Eine der besonders für die Automatisierungstechnik interessanten Stärken von Simulink® ist diemodellbasierte Regleroptimierung. Durch Funktionen der übergeordneten Softwareumgebung MATLAB® (mitentsprechenden Toolboxen) können Steuerungen mit Berechnungsverfahren aus der Regelungstheorieausgelegt werden. Auf diese Weise ausgelegte Regler können anschließend in Simulink® in einem Modelldes geschlossenen Regelkreises simuliert und validiert werden.Neben einfachen Regelkreisen und Steuerungssystemen können auch ganze Produktionsanlagen alsModell nachgebildet und getestet werden. Das bietet im Entwicklungsprozess einer Maschine mehrereVorteile. So ist z. B. für erste Tests der Steuerungssoftware noch keine reale Maschine erforderlich, wennein geeignetes Modell der Maschine zur virtuellen Inbetriebnahme verwendet wird. Dies reduziert außerdemdie Gefahr der Beschädigung der Maschine durch fehlerhafte Steuerungssoftware bei der erstenInbetriebnahme. Zur virtuellen Inbetriebnahme ermöglicht die TwinCAT 3 Function TE1111 EtherCATSimulation die Simulation eines EtherCAT-Stranges.

Darüber hinaus ergeben sich mit den verschiedenen Simulink®-Toolboxen weitere Einsatzbereiche, darunterz. B. die Ablaufsteuerung einer Maschine mit Stateflow® oder die Messdatenauswertung durch Hinzufügeneines Streaming-Signalverarbeitungssystems mit der DSP Systems ToolboxTM.

TE1400 TwinCAT Target für MATLAB®/Simulink®

Um ein Modell aus MATLAB®/Simulink® nach erfolgreichen Tests in der realen Maschine zu nutzen, könnendie entsprechenden Algorithmen durch manuelle Codierung z. B. in ein SPS-Programm überführt werden.Einfacher und erheblich weniger fehleranfällig ist allerdings die automatische Umwandlung der bereitsimplementierten Algorithmen in echtzeitfähige Programmteile.

Mit TE1400 TwinCAT Target für MATLAB®/Simulink® kann der Anwender echtzeitfähige Module ausMATLAB®/Simulink® heraus erzeugen, die in der TwinCAT 3 Laufzeit ausgeführt werden können. DieseModule können in der TwinCAT 3 Entwicklungsumgebung mehrfach instanziiert, parametriert und debuggtwerden.

Page 8: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Übersicht

MATLAB®/Simulink®8 Version: 1.2

Weitere Informationen finden Sie im Abschnitt TE1400 TwinCAT Target für Matlab®/Simulink®.

TE1410 Interface für MATLAB®/Simulink®

Das TE1410 Interface für MATLAB®/Simulink® ist eine Schnittstelle für den Datenaustausch zwischenTwinCAT3 und MATLAB®/Simulink®. Der Datenaustausch erfolgt über ADS mit Hilfe von Simulink-Blöcken,die in einer Simulink-Bibliothek bereitgestellt werden.

Page 9: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Übersicht

MATLAB®/Simulink® 9Version: 1.2

Weitere Informationen finden Sie im Abschnitt TE1410 Interface für MATLAB®/Simulink®.

Webinare zu TE1400 und TE1410

Termin Thema Referent01.10.2013 TwinCAT 3 | Matlab®/Simulink®-Integration: Einführung,

Anwendungsbeispiele, TC3 Interface for Matlab®/Simulink®Dr. KnutGüttel

Eine Übersicht der aktuellen Beckhoff Webinare finden Sie auf der Beckhoff Hompage: http://www.beckhoff.com/default.asp?support/webinars.htm

Page 10: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink®10 Version: 1.2

3 BlockdiagrammBei der Generierung eines TwinCAT-Moduls aus MATLAB® / Simulink® kann optional das Blockdiagramm mitexportiert werden. In diesem Fall kann das Blockdiagramm in der TwinCAT-Entwicklungsumgebung unterdem Karteireiter Block Diagram der Modul-Instanz angezeigt werden:

Mithilfe dieses Controls ist nicht nur möglich durch die gesamte Struktur des Blockdiagramms zu navigieren,sondern auch Parameterwerte einzusehen und zu ändern, Signalwerte und Verläufe darzustellen sowie imDebugging Mode auch mithilfe von Breakpoints durch das Modul zu debuggen. Das Control ist so gestaltet,dass es auch in einer eigenen Visualisierung verwendet werden kann.

Installation

Das Block Diagram Setup wird mit dem TwinCAT 3 Setup ausgeführt und muss nicht separat ausgeführtwerden. Die Versionsnummer des Block Diagram können Sie durch Rechtsklick in das Control und AuswahlAbout TC3 BlockDiagram einsehen. Alternativ können Sie auch im Control Panel unter Programs andFeatures die Versionsnummer einsehen (Eintrag Beckhoff TwinCAT 3 BlockDiagram).

3.1 Bedienung des BlockdiagrammsBei der Generierung eines TcCom-Moduls aus MATLAB® / Simulink® kann der Export des Blockdiagrammskonfiguriert werden. Wurde dieser Export aktiviert, findet man das Blockdiagramm in der TwinCAT-Entwicklungsumgebung unter dem Karteireiter „Block Diagram“ der Modul-Instanz.

Unter Verwendung von Shortcuts, Drag&Drop sowie einem Kontextmenü kann man durch die Hierarchie desTwinCAT-Moduls navigieren, Parameterwerte ansehen, Signalewerte darstellen und optional zusätzlicheDebug-Informationen erhalten.

Page 11: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink® 11Version: 1.2

Shortcut-Funktionen:

Shortcut FunktionSpace Zoom auf die aktuelle Größe des Blockdiagramm-

ReitersBackspace Wechseln auf die nächst höhere HierarchiestufeESC Wechseln auf die nächst höhere HierarchiestufeSTRG + “+“ Herein zoomenSTRG + “-“ Heraus zoomenF5 Attach Debugger

(System- > Real-Time -> C++ Debugger -> Enable C++ Debugger muss aktiviert sein)

Kontextmenü-Funktionen:

3.2 Einbinden des Blockdiagramm-ControlsDas Control welches das Blockdiagramm in der TwinCAT XAE Umgebung darstellt, kann auch als Control ineigene Visualisierungen eingebunden werden.

Folgende Schritte sind dafür notwendig:

1. Neue Windows-Forms-Applikation erstellen2. Hinzufügen der TwinCAT.BlockDiagramm.dll zur Toolbox:

Page 12: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink®12 Version: 1.2

3. Per Kontextmenü den Eintrag „Choose Items…“ wählen

4. Browsen zur TwinCAT.Blockdiagram.dll, welche sich unter <TwinCAT-Installationspfad>\3.1\Components\TcBlockDiagram befindet

Page 13: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink® 13Version: 1.2

5. Hinzufügen einer TcBlockdiagram-Control-Instanz zum Windows-Forms-Object per Drag&Drop

3.3 DebuggenUm Fehler innerhalb eines mit MATLAB®/Simulink® erstellten TcCOM-Modules zu finden bzw. das Verhaltendes Modules in der Gesamtarchitektur des TwinCAT-Projekts zu analysieren, stehen unterschiedliche Wegezur Verfügung.

Debuggen im Blockdiagramm

Wurde bei der Generierung des TcCOM-Moduls das Blockdiagramm exportiert, kann dieses in der TwinCAT-Entwicklungsumgebung angezeigt und unter anderem zum Debuggen innerhalb der entsprechendenModulinstanz verwendet werden. Dazu nutzt das Blockdiagramm den Microsoft Visual Studio Debugger, derüber den TwinCAT Debugger-Port mit der TwinCAT-Laufzeit verbunden werden kann. Das Verbinden(Attachen) des Debuggers erfolgt wie im C++-Bereich unter Debuggen beschrieben.

Voraussetzungen für das Debuggen innerhalb des Blockdiagramms sind:

• Der C/C++-Quellcode des TcCOM-Moduls muss auf dem Engineering-System vorhanden sein undvom Visual Studio-Debugger gefunden werden können. Idealerweise sollte das Debuggen daher aufdem System stattfinden, auf dem auch die Codegenerierung ausgeführt wurde. Wurde das Modul aufeinem anderen System erstellt, kann der zugehörige C/C++-Quellcode i.d.R. durch Einbindung desVisual Studio Projektes in den C++ Bereich von TwinCAT bekannt gemacht werden. Die Datei<ModelName>.vcxproj liegt im build-Verzeichnis, siehe Welche Dateien werden automatisch bei derCodegenerierung und dem Publish erstellt?

• Das Modul muss mit der Konfiguration Debug erstellt worden sein. Beim Publish direkt im Anschlussan die Codegenerierung, muss im Bereich Publish-Mechanismus unter publish configuration dieEinstellung Debug ausgewählt werden. Beim publish des Moduls aus dem C++ Bereich in TwinCATmuss der Debugger im C++ Knoten der Solution freigegeben sein, siehe Dokumentation C/C++ -Debuggen.

• Bei der Codegenerierung müssen in den Coder-Einstellungen unter Tc Advanced die OptionenExport block diagram und Export block diagram debug information aktiviert sein.

• Im TwinCAT-Projekt muss der Debugger-Port aktiviert sein, wie unter TwinCAT 3 C++ Enable C++debugger beschrieben.

Setzen von Breakpoints im Blockdiagramm

Page 14: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink®14 Version: 1.2

1. Nach dem Verbinden (Attachen) des Debuggers mit der TwinCAT-Laufzeit, werden die möglichenBreakpoints im Blockdiagramm den Blöcken zugeordnet und als Punkte dargestellt. Durch Anklicken desgewünschten Breakpoints kann dieser aktiviert werden, um die Ausführung der Modulinstanz bei dernächsten Abarbeitung des zugehörigen Blocks zu stoppen. Die Farbe des Punktes gibt Auskunft überden aktuellen Zustand des Breakpoints:

◦ Grau: Breakpoint inaktiv◦ Rot: Breakpoint aktiv. Bei der nächsten Abarbeitung dieses Blocks wird der Programmablauf

angehalten◦ Gelber Punkt in der Mitte: Breakpoint Hit. Die Programmabarbeitung ist im Augenblick an dieser

Stelle angehalten◦ Blauer Punkt in der Mitte: Breakpoint Hit (wie gelb), allerdings in einer anderen Instanz des

Moduls.

Page 15: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink® 15Version: 1.2

2. Im Tool-Tip des Breakpoints findet man zusätzliche Informationen, wie z. B. den zugehörigen C++-Code-Abschnitt:

Breakpoints werden nicht immer einem einzelnen Block zugeordnet. Im zugrundeliegenden C++-Code sind häufig Funktionalitäten mehrerer Blöcke in einem Codeabschnitt oder sogar einer Zeilezusammengefasst. Weil sich daher oft mehrere Blöcke den gleichen Breakpoint teilen, ändert sichbei der Aktivierung eines Breakpoints im Blockdiagramm häufig auch die Darstellung der Punkte ananderen Blöcken.

Auswertung von Exceptions

Treten während der Abarbeitung eines TcCOM-Modules Exceptions, wie z.B. eine Division durch Null, auf,so kann die Stelle an der diese Exception versursacht wurde im Blockdiagramm dargestellt werden. Dazumuss das TcCOM-Modul die oben genannten Voraussetzungen erfüllen und der C++-Debugger muss imTwinCAT-Projekt aktiviert sein (TwinCAT 3 C++ Enable C++ debugger). Nachdem der Debugger verbunden(attached) wurde, was vor aber auch noch nach dem Auftreten der Exception erfolgen kann, wird derverursachende Block im Blockdiagramm hervorgehoben, sofern die verursachende Codezeile einem Blockzugeordnet werden kann. Der Name des Blockes wird rot dargestellt und der Block selbst wird fett markiert.

Page 16: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink®16 Version: 1.2

Manuelle Auswertung von Exceptions ohne Quellcode

Auch wenn auf dem Engineering-System nicht der Source Code des Modules verfügbar ist oder der C++-Debugger nicht aktiviert wurde, kann man nach Auftreten einer Exception die Fehlerstelle im Blockschaltbildhervorheben.

Typischerweise wird beim Auftreten eines Fehlers immer eine Fehlermeldung generiert, in der dieQuellcode-Datei sowie die Zeile im Quellcode angegeben ist. Über diese Information lässt sich eineException in vielen Fällen einem Block des Blockschaltbildes zuordnen. Dazu kann man wie folgt vorgehen:

ü Voraussetzung für das Hervorheben der Fehlerstelle innerhalb des Blockdiagramms ist, dass die Debug-informationen erzeugt wurden (Option Export block diagram debug information in den Coder-Einstel-lungen unter Tc Advanced).

Page 17: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink® 17Version: 1.2

3. Aus dem Kontext-Menü des Blockschaltbildes ist der Eintrag Provide exception data zu wählen:

4. In dem sich öffnenden Dialog sind die in der Fehlermeldung bereitgestellte Quellcode-Datei undZeilennummer einzutragen:

Page 18: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink®18 Version: 1.2

5. Der Name des Blockes, welchem die Zeilennummer zugeordnet ist, wird rot dargestellt und der Blockselbst wird fett markiert:

3.4 Anzeigen von SignalverläufenOft ist es hilfreich sich zur Verifikation und Fehlersuche Signalverläufe anzeigen zu lassen. DasBlockdiagramm bietet hierzu folgende Möglichkeiten:

Anzeigen von Signalverläufen im Blockdiagramm

Das Blockdiagramm bietet die Möglichkeit Signalverläufe in einem Fenster anzuzeigen. Hierzu wird einSignal oder Block durch Drag and Drop auf einen freien Bereich des Blockdiagramms gezogen.

Page 19: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink® 19Version: 1.2

Erstellen eines Scopes im Blockdiagramm

Nach dem Drop öffnet sich ein Scope Fenster im Blockdiagramm.

Anzeige des Scopes im Blockdiagramm

Die Titelleiste vom Scope Fenster bietet folgende Optionen

Fenster schließen

Fenster über alle Blockdiagrammhierarchien im Vordergrund halten

Fenster auf die Titelleiste minimieren

Page 20: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink®20 Version: 1.2

Für die Darstellung des Scopes im Blockdiagramm-Control [} 11] wird eine Lizenz des Scope ViewProfessional (TE1300) benötigt. Im Visual Studio ist dies nicht nötig.

Es bietet sich an das Scope im Blockdiagramm für einen schnellen Überblick zu verwendet. Für genauereAnalysen empfiehlt es sich die Signale im TwinCAT Scope zu analysieren.

Anzeigen von Signalverläufen im TwinCAT Scope

Erfolgt der Drop nicht auf das Blockdiagramm sondern auf eine Achse in einem Scope Projekt wird dasSignal dort hinzugefügt.

Hinzufügen eines Signals in ein TwinCAT Scope Projekt

3.5 Modul-Parametrierung im BlockdiagrammIm Abschnitt Parametrierung des generierten Moduls werden die allgemeinen Parametrierungsmöglichkeiteneines TcCom-Objektes beschrieben. Im Folgenden wird speziell die Parametrierung im Blockdiagrammgezeigt.

Dazu kann das Parameter Fenster direkt im Blockdiagramm verwendet werden. Außerdem kann dieEigenschafts-Tabelle genutzt werden, die am rechten Rand des Blockdiagramms ein- und ausgeklapptwerden kann. Grundsätzlich wird zwischen unterschiedlichen Parameter-Werten unterschieden:

„Default“, „Startup“, „Online“ und „Prepared“

Im Dropdownmenü der Eigenschaftstabelle des Blockdiagramms findet man folgende Wertetypen:

• Default-Werte sind die Parameterwerte beim Generieren des Codes. Sie sind unveränderlich in derModulbeschreibungsdatei gespeichert und ermöglichen es, nach Parameteränderungen die"manufacturing settings" wiederherzustellen

• Startup-Werte werden in der TwinCAT-Projektdatei gespeichert und in die Modulinstanzheruntergeladen, sobald TwinCAT die Modulinstanz startet.In Simulink-Modulen können auch Startwerte für das Eingangs-Prozessabbild festgelegt werden.Dadurch kann das Modul mit Eingangswerten ungleich Null gestartet werden, ohne dass die Eingängemit anderen Prozessabbildern verknüpft werden müssen. Interne Signale und Ausgangssignale habenkeine Startwerte, da sie in jedem Fall im ersten Zyklus überschrieben würden.

• Online-Werte sind nur verfügbar, wenn das Modul auf dem Zielsystem gestartet wurde. Sie zeigenden aktuellen Wert des Parameters im laufenden Modul. Dieser kann auch während der Laufzeitgeändert werden, das entsprechende Eingabefeld muss dazu allerdings erst über das Kontextmenüfreigeschaltet werden, um versehentliche Eingaben zu vermeiden.

• Prepared-Werte können immer dann festgelegt werden, wenn auch Onlinewerte verfügbar sind. Mitihrer Hilfe können verschiedene Werte gespeichert werden, um sie konsistent in das Modul zuschreiben. Wenn vorbereitete Werte festgelegt wurden, sind diese in einer Tabelle unterhalb desBlockdiagramms zu sehen. Mit den Schaltflächen rechts neben der Liste können die vorbereitetenWerte als Onlinewert heruntergeladen und/oder als Startwert gespeichert oder auch gelöscht werden.

Parametrieren im Blockdiagramm

Parametrierbare Blöcke werden im Blockdiagramm mit einem gelben Kasten markiert.

Page 21: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

Blockdiagramm

MATLAB®/Simulink® 21Version: 1.2

Abb. 1: Parametrierbarer Block

Durch Doppelklick auf den Block oder durch einen einzelnen Klick auf den gelben Kasten wird ein Fenstermit den veränderbaren Parametern angezeigt.

Abb. 2: Parameter Fenster

Wird ein Wert geändert kann dieser mit folgenden Tastenbefehlen übernommen werden:

STRG + Enter Online-Wert setzenSHIFT + Enter Startup-Wert setzenEnter Prepared-Wert setzen

Die Symbole in der Titelleiste haben folgende Funktionen:

Fenster schließen

Fenster über alle Blockdiagrammhierarchieebenen im Vordergrund halten

Fenster auf der aktuellen Blockdiagrammhierarchieebene offen halten

Fenster auf Titelleiste minimieren

Page 22: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

ADS-Kommunikation aus MATLAB

MATLAB®/Simulink®22 Version: 1.2

4 ADS-Kommunikation aus MATLABFür die ADS-Kommunikation aus einem MATLAB-Skript wird keine Zusatzsoftware benötigt. Mit derInstallation von TwinCAT steht beispielsweise die .NET-Klassenbibliothek „TwinCAT.ADS.dll“ zur Verfügung.Diese stellt .NET-Klassen zur Realisierung einer ADS-Kommunikation bereit, die im MATLAB-Skript direktverwendet werden kann.

Beschreibung DownloadBeispiel 1: Zugriff auf ein Array in der SPS [} 22] https://infosys.beckhoff.com/content/1031/

tc3_matlab_overview/Resources/zip/9007200794646283.zip

Beispiel 2: Ereignisgesteuertes Lesen [} 23] https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/Resources/zip/9007200794644619.zip

4.1 BeispieleBeschreibung DownloadBeispiel 1: Zugriff auf ein Array in der SPS [} 22] https://infosys.beckhoff.com/content/1031/

tc3_matlab_overview/Resources/zip/9007200794646283.zip

Beispiel 2: Ereignisgesteuertes Lesen [} 23] https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/Resources/zip/9007200794644619.zip

4.1.1 Zugriff auf ein Array in der SPS

Übersicht

Dieses Beispiel ist an das Visual C# Beispiel 1 angelehnt. https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/Resources/zip/9007200794646283.zip enthält die hier beschriebenen Dateien.

Matlab Funktionfunction[] = Matlab_ADS_Sample()

Importieren der Ads.dllAdsAssembly = NET.addAssembly('C:\TwinCAT\AdsApi\.NET\v2.0.50727\TwinCAT.Ads.dll');

import TwinCAT.Ads.*

Instanz der Klasse TcAdsClient erzeugentcClient = TcAdsClient;

Verbindung mit dem Port 851 auf dem lokalen Computer herstellentcClient.Connect(851);

tryhVar = tcClient.CreateVariableHandle('Main.PLCVar');catch errtcClient.Dispose();msgbox(err.message,'Fehler beim Erstellen des Variablenhandles','error');error(err.message);end

AdsStream der Daten aufnehmen solldataStream = AdsStream(100 * 2);binRead = AdsBinaryReader(dataStream);

Page 23: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

ADS-Kommunikation aus MATLAB

MATLAB®/Simulink® 23Version: 1.2

Array auslesentcClient.Read(hVar,dataStream);for i=1:1:100disp(binRead.ReadInt16)endcatch errtcClient.Dispose();msgbox(err.message,'Fehler beim Lesen des Arrays','error');error(err.message);end

Ressource wieder freigebentcClient.Dispose();

SPS ProgrammPROGRAM MAINVARPLCVar : ARRAY [0..99] OF INT;Index: BYTE;END_VAR

FOR Index := 0 TO 99 DOPLCVar[Index] := 3500 + INDEX;END_FOR

4.1.2 Ereignisgesteuertes Lesen

Übersicht

Dieses Beispiel ist an das Visual C# Beispiel 2 angelehnt. https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/Resources/zip/9007200794644619.zip enthält die hier beschriebenen Dateien.

Die Funktion „OnNotification.m“ wird automatisch bei einer eingehenden ADS-Notification aufgerufen. DieSkriptdatei „MatlabADSSample_Notification.m“ registriert die Notifications und entfernt sie nach Ablauf einergewissen Zeit wieder.

MatlabAdsSample_Notification.m

Die Skriptdatei wird einmalig ausgeführt. Zunächst werden die ADS-Notifications angelegt und die Funktion„OnNotification“ als Callback registriert. Nach einer gewissen Zeit, in der ADS-Notifications empfangenwerden, erfolgt die Abmeldung der Notifications.

Importieren der Ads.dllAdsAssembly = NET.addAssembly('C:\TwinCAT\AdsApi\.NET\v4.0.30319\TwinCAT.Ads.dll');import TwinCAT.Ads.*;

Instanz der Klasse TcAdsClient erzeugentcClient = TcAdsClient;

Verbindung mit dem Port 851 auf dem lokalen Computer herstellentcClient.Connect(851);

Hilfsvariablen zur Behandlung der Notifications% ADS streamdataStream = AdsStream(31);% readerbinRead = AdsBinaryReader(dataStream);% notification handleshConnect = zeros(7,1);

% variables to be read from target by notificationboolVarName = 'MAIN.boolVal';intVarName = 'MAIN.intVal';dintVarName = 'MAIN.dintVal';sintVarName = 'MAIN.sintVal';lrealVarName = 'MAIN.lrealVal';realVarName = 'MAIN.realVal';stringVarName = 'MAIN.stringVal';

Page 24: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

ADS-Kommunikation aus MATLAB

MATLAB®/Simulink®24 Version: 1.2

Erstellen der Device Notificationstry % Register callback functiontcClient.addlistener('AdsNotification',@OnNotification);

% Register notifications (the variable names are also use as "userData", which can be evaluated bythe callback function)hConnect(1) = tcClient.AddDeviceNotification(boolVarName,dataStream,0,1,AdsTransMode.OnChange,100,0,boolVarName);hConnect(2) =tcClient.AddDeviceNotification(intVarName,dataStream,1,2,AdsTransMode.OnChange,100,0,intVarName);hConnect(3) =tcClient.AddDeviceNotification(dintVarName,dataStream,3,4,AdsTransMode.OnChange,100,0,dintVarName);hConnect(4) =tcClient.AddDeviceNotification(sintVarName,dataStream,7,1,AdsTransMode.OnChange,100,0,sintVarName);hConnect(5) =tcClient.AddDeviceNotification(lrealVarName,dataStream,8,8,AdsTransMode.OnChange,100,0,lrealVarName);hConnect(6) =tcClient.AddDeviceNotification(realVarName,dataStream,16,4,AdsTransMode.OnChange,100,0,realVarName);hConnect(7) =tcClient.AddDeviceNotification(stringVarName,dataStream,20,11,AdsTransMode.OnChange,100,0,stringVarName);

% Listen to ADS notifications for 20 secondspause(20);catch errmsgbox(err.message,'Error reading array via ADS','error');disp(['Error registering ADS notifications: ' err.message]);end

ADS-Notifications abmeldenfor idx=1:length(hConnect)tcClient.DeleteDeviceNotification(hConnect(idx));end

Verbindung beendentcClient.Dispose();

Callback-Funktion “OnNotification”function OnNotification(sender, e)

Data-Stream-Offset setztene.DataStream.Position = e.Offset;

Das Element „UserData“ wird hier genutzt, um den Variablennamen zu übergeben:valuename = char(e.UserData);

Einlesen von Variablen aus dem MATLAB WorkspacehConnect = evalin('base','hConnect');binRead = evalin('base','binRead');

Variablen-Zuordnung anhand des Handles und Konvertierung des gelesenen Wertes in einen Stringif ( e.NotificationHandle == hConnect(1))strValue = num2str(binRead.ReadBoolean());elseif( e.NotificationHandle == hConnect(2) )strValue = num2str(binRead.ReadInt16());elseif( e.NotificationHandle == hConnect(3) )strValue = num2str(binRead.ReadInt32());elseif( e.NotificationHandle == hConnect(4) )strValue = num2str(binRead.ReadSByte());elseif( e.NotificationHandle == hConnect(5) )strValue = num2str(binRead.ReadDouble());elseif( e.NotificationHandle == hConnect(6) )strValue = num2str(binRead.ReadSingle());elseif( e.NotificationHandle == hConnect(7) )strValue = char(System.String(binRead.ReadChars(11))); end

Page 25: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

ADS-Kommunikation aus MATLAB

MATLAB®/Simulink® 25Version: 1.2

Ausgabe des empfangenen Wertesdisp(sprintf('Notification received at %04d-%02d-%02d %02d:%02d:%02.3f:\t %s = \t%s',clock(),valuename,strValue));

SPS-ProgrammPROGRAM MAINVARboolVal : BOOL;intVal : INT := 222;dintVal : DINT;sintVal : SINT;lrealVal : LREAL := 22.2;realVal : REAL;stringVal : STRING(10);END_VARdintVal := dintVal+1;

Page 26: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

TwinCAT Automation Interface: Verwendung in MATLAB®

MATLAB®/Simulink®26 Version: 1.2

5 TwinCAT Automation Interface: Verwendung inMATLAB®

Kurzbeschreibung des Automation Interface

Mit dem TwinCAT Automation Interface können TwinCAT XAE Konfigurationen per Programmier-/Skriptcodes automatisch erzeugt und bearbeitet werden. Die Automatisierung einer TwinCAT-Konfigurationsteht dank sogenannter Automation Interfaces zur Verfügung, auf die über alle COM-fähigenProgrammiersprachen (z. B. C++ oder .NET) und auch über dynamische Scriptsprachen wie WindowsPowerShell, IronPython oder sogar das (veraltete) VBscript zugegriffen werden kann. Ebenfalls ist dieVerwendung aus der MATLAB® Umgebung möglich.

Eine ausführliche Dokumentation der Produkts finden Sie hier: TwinCAT Automation Interface

Verwendung in MATLAB®

In MATLAB® können Sie das Automation Interface durch das Kommando NET.addAssembly sichtbarmachen. Damit sind Sie in der Lage die in der Produktdokumentation beschriebenen Interfaces (AutomationInterface API) zu nutzen. Ebenfalls finden Sie in der Produktdokumentation viele Programmierbeispiele fürdie Nutzung aus C# und PowerShell (Automation Interface Configuration).

Um Ihnen den Einstieg aus MATLAB® zu vereinfachen finden Sie im Folgenden eineBeispielimplementierung für MATLAB® auf Basis einer MATLAB-Klasse, welche Sie nutzen, verändern underweitern können.

5.1 Beispiel: Tc3AutomationInterface

Übersicht

Der Beispielcode besteht aus zwei m-Files

• Tc3AutomationInterface.m: MATLAB Klasse, welche einige häufig genutzte Methoden implementiert• Tc3AutomationInterface_Testbench.m: MATLAB Script, welches die MATLAB Klasse beispielhaft

aufruft.

Zusätzlich enthält der Beispielcode die TctComMessageFilter.dll. Das Sample können Sie hier https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/Resources/zip/5776206091.zip.

Das MATLAB Script

Das MATLAB Script liefert ein Beispiel, wie Sie eine TwinCAT-Solution erzeugen, den EtherCAT-Masternach I/O scannen, zwei TcCOM Module instanziieren, verlinken und das Projekt auf einem Target aktivierenkönnen.

Um das Script ausführen zu können, müssen die beiden verwendeten TcCOM in Ihrem publish directory%TwinCATDir%\\CustomConfig\Modules\ vorhanden sein. Laden Sie dazu das Beispiel TemperatureController aus der TE1400 | Target for MATLAB®/Simulink® herunter. Die Dateiordner aus demVerzeichnis .\TE1400Sample_TemperatureController\_PrecompiledTcComModules\Actual TwinCATversions\ kopieren Sie dann in das publish directory.

Führen Sie das m-File Tc3AutomationInterface_Testbench.m aus. Es wird im Hintergrund die aktuellste aufIhrem System verfügbare Visual Studio Instanz geöffnet und die TwinCAT Solution konfiguriert, speichertund aktiviert.

Die MATLAB Klasse

Die Properties

Page 27: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

TwinCAT Automation Interface: Verwendung in MATLAB®

MATLAB®/Simulink® 27Version: 1.2

In den Properties der Klasse Tc3AutomationInterface werden alle zur Instanz der Klasse gehörigenVariablen und Interfaces gehalten. So können mehrere TwinCAT Solutions in einem MATLAB Scriptaufgebaut werden, indem für jede Solution eine Instanz der Klasse erzeugt wird. Damit ergeben sich dannkeine Überschneidungen.

Der Konstruktor

function this = Tc3AutomationInterface

Der Konstruktor lädt alle notwendigen Assemblies und setzt bei Erfolg das Property AssembliesLoaded aufTRUE. Die geladenen Assemblies sind

• EnvDTE und EnvDTE80: Bibliotheken für das Visual Studio Core Automation. Notwendig zurKonfiguration von Visual Studio.

• TCatSysManagerLib: TwinCAT Automation Interface Bibliothek zur Konfiguration einer TwinCATSolution in Visual Studio.

• TwinCAT.Ads: ADS Bibliothek, z. B. zum Lesen und Verändern des XAR state.• System.Xml: Bibliothek zum Parsen von XML Dateien.

Ausgewählte Methoden der Klasse

function TcComObject = CreateTcCOM(this, Modelname)

Nutzen Sie die Hilfefunktion von MATLAB, um die Funktion und die Parameter der Methode einzusehen.

Ebenfalls wird bei einigen Methoden ein Link ins das Beckhoff Infosys angeboten. Diese verweisen aufDokumentationsbeispiele aus der TwinCAT Automation Interface Dokumentation, sodass Sie direkt einenVergleich zur Implementierung in MATLAB, C# und PowerShell einsehen können. Ebenfalls finden Sie ineinigen Sektionen im Kommentar einen Link zum Beckhoff Infosys, sodass Sie die Quelle der Informationeinsehen können.

Die Methode CreateTcCOM beginnt zunächst mit dem Parsen der <modelname>.tmc Datei. Daraus wird mitder System.Xml die ClassID, die Task Zylkuszeit sowie Task Priorität extrahiert. Dann wird mit demAutomation Interface ein entsprechendes TcCOM instanziiert sowie eine (oder mehrere) zugehörige Task(s)erzeugt. Abschließend wird (werden) die Task(s) dem TcCOM zugeordnet.

function ActivateOnDevice(this, AmsNetId)

Um den aktuellen Status einer TwinCAT Runtime, z .B. config oder run, zur erfragen bzw. zu verändern wirdTwinCAT ADS genutzt. In der Methode ActivateOnDevice wird zunächst die XAR mit der spezifiziertenAmsNetId in den Config-Modus geschaltet und dann die aktuelle TwinCAT-Konfiguration aktiviert, sowie dasSystem gestartet. Zwischen den Einzelschritten sind Pausen eingetragen, da dieser Vorgang ggf. etwas Zeitbenötigt.

Page 28: 06.11.2018 MATLAB®/Simulink® - download.beckhoff.com · MATLAB ®/Simulink® ist ein ... dem Karteireiter Block Diagram der Modul-Instanz angezeigt werden: Mithilfe dieses Controls

TwinCAT Automation Interface: Verwendung in MATLAB®

MATLAB®/Simulink®28 Version: 1.2

Statische Methoden

Statische Methoden sind auch ohne Instanz der Klasse verfügbar.

function vsVersions = GetInstalledVisualStudios

Vorbereitet ist hier eine Funktion, welche über Registry Key Einträge die auf dem System verfügbaren VisualStudio Installationen detektiert und auflistet. Die Implementierung ist auf VS 2010 bis VS 2017 limitiert.