Handbuch. MATLAB /Simulink. TwinCAT 3. Version: Datum:

Ähnliche Dokumente
Handbuch. Remote Access. TwinCAT 3. Version: Datum:

Dokumentation C9900-L100. License-Key-USB-Stick für TwinCAT 3.1. Version: Datum:

Dokumentation C9900-L100. License-Key-USB-Stick für TwinCAT 3.1. Version: Datum:

Handbuch. TC3 PLC HMI Web. TwinCAT 3. Version: Datum: Bestell-Nr.: TF1810

Dokumentation. Netzdrosseln AX2090-ND50. Version: Datum:

Handbuch. TC3 EtherCAT Simulation. TwinCAT 3. Version: Datum: Bestell-Nr.: TE1111

Handbuch TC3 PLC HMI. TwinCAT 3. Version: Datum: Bestell-Nr.: TF1800

Handbuch. Source Control. TwinCAT 3. Version Datum

P-touch Editor starten

Parametrierung von TwinCAT für Servoverstärker-Anbindung via Profibus

VB.net Programmierung und Beispielprogramm für GSV

Visual Basic Editor CATIA V5

Sprout Companion. Benutzerhandbuch

TwinCAT. TwinCAT Quick Start. The Windows Control and Automation Technology. Version: 1.2 Datum:

Anbindung WAGO Ethernet Controller über Modbus TCP an Siemens WinCC Anwendungshinweis

Autor: Version: Datum: Christoph Luidold :39

Installation. Deutsch. Server-Software für die DMVC iphone App. DMVC iphone Server. Rev /

Immo Meets Office Easy Office Storage Easy Outlook Storage Handbuch

Anbindung eines WAGO Ethernet Kopplers an ifix V2.1 von Intellution Anwendungshinweis

OPC -Server / -Client

Programm erstellen. TIA Portal. SIMATIC Programm erstellen. Bausteinbibliothek laden 1. Programmbaustein Main [OB1] löschen

CPK-Terminal Bedienungsanleitung

DAS EINSTEIGERSEMINAR

In Inventor werden Stile bzw. Stilbibliotheken zur Formatierung von Objekten benutzt:

Aktivierungsassistenten Bedienungsanleitung

Messwertmonitor Funktionsbeschreibung UMG 96RM-E Artikel-Nr.:

C/C++ Debugging mit CDT unter Eclipse

Einrichten und Verwenden der Solutio Charly PA-Konzepte Schnittstelle

Einführung in Automation Studio

Fern-Konfigurations-Software DMS NetConfig 2

Das Anpassen der Stammdatenansichten

Anwendungshinweis. IEC60870 Parametrieren aus der Applikation. a500780, Deutsch Version 1.0.0

Informatik für Elektrotechnik und Informationstechnik

MICROSOFT EXCEL XP. Inhaltsverzeichnis

e-design Benutzerhandbuch

Handbuch. Accantum GmbH Äußere Oberaustr. 36/4 D Rosenheim. Betreff: DirectLink V6.1. Revisionsnummer: 1.00

Verwendung des OPC-Clients von Softing

Anwenderhandbuch. Netzwerkkonfiguration von Projektiersystem und Bediengerät. Teilenummer: Version: 1

WufooConnector Handbuch für Daylite 4

Ethernet Kopplers mit der SCADA/HMI Software Lookout Anwendungshinweis

Neues Projekt anlegen Neue Position anlegen Position in Statikdokument einfügen Titelblatt und Vorbemerkungen einfügen...

disigner Bedienungsanleitung Version 1.0, 26. Mai 2010

Anwenderhandbuch. Schnelleinstieg KNX mit TSwin.net. Teilenummer: Version: 2. Datum:

Anleitung zur Bluetooth - Inbetriebnahme für Lactate Scout+

Information zur Konzeptberatungs-Schnittstelle

Handbuch zum VivaWeb-Serienbrief-Programm

Virtual Serial COM Driver IP 67

Docusnap X Discovery Service. Installation und Konfiguration

Aufwandprotokoll für Amtstierärzte Bedienungsanleitung

Markus Mandalka Einführung in die Fotoverwaltung mit JPhotoTagger. Version vom 6. September Inhaltsverzeichnis

Meisterplan 5.0 Release Notes. itdesign GmbH

Integration MULTIEYE in EBÜS - Das Einheitliche Bildübertragunssystem

tentoinfinity Apps 1.0 EINFÜHRUNG

Installationsanleitung

SCHULSPEZIFISCHEN ROLLENRECHTE

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

EDV HÖHNE GMBH ibs-loga

Schnellstart. RemusLAB. CAEMAX Technologie GmbH. Bunzlauer Platz 1 Telefon: support@caemax.de

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Platform Manager 4.5 Export Tool

Windows Cockpit Konfiguration Montag, 23. November :59

Internet Grundkurs kompakt. Charlotte von Braunschweig 1. Ausgabe, 1. Aktualisierung, Januar mit Internet Explorer 8 K-IE8-G

Installationsanleitung. Novaline Bautec.One incl. MS SQL Server 2012 Express. ohne Demodaten

Produktschulung WinArchiv

AudaNet 19.1 AudaPad Web

Kurzdokumentation Datanorm. TOPIX:8 Version 8.9.0, Stand 02/2014. TOPIX Business Software AG

Qt-Projekte mit Visual Studio 2005

Lehrstuhl für betriebswirtschaftliche Informationssysteme Prof. Dr. Joachim Fischer. Installationsanleitung SAPGUI

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Handbuch SelectLine EDI-Modul

Whitepaper. Produkt: combit address manager & combit Relationship Manager. Debuggen von Scripts in Visual Studio 2005

Web-IO als Schaltuhr

EL9820/EL9821 Evaluation Kit

FastViewer Remote Edition 2.X

FAQ Frequently Asked Questions. Produktname AFPS Outlook-AddIn Version 1.63 Stand Inhalt

Erste Schritte mit Elvis 3 ein Beispielprojekt

Das Anwendungsfenster

Technical Note Nr

IFA-Formulare im PDF-Format mit Adobe Acrobat Reader DC öffnen. Inhalt. Einleitung. 1. PDF-Formular lokal speichern und öffnen

Script-Sprache für UPT und MKT-View II / III / IV. Einleitung, Anwendungsfälle, Programmierung. MKT Systemtechnik

FAQ zur Antriebstechnik

Schnelleinstieg Visual Studio C/C#

SCADA-Anbindung eines WAGO Ethernet Controllers über Modbus TCP an VISAM SCADA / HMI - Systeme Anwendungshinweis

JUNG Facility-Pilot Visualisierungs-Server Version 2.2

1 DAS KONTAKTE-FENSTER

Handbuch. PLC Lib: Tc2_Standard. TwinCAT 3. Version: Datum:

VisiScan 2011 für cobra

Quickstart. Solutions Inventory. Version 1.14

SFirm32/HBCI und der KEN!Server

G-Info Lizenzmanager

Startup-Anleitung für Macintosh

Erste Schritte mit Eclipse

Fotos für Garmin Oregon 550 georeferenzieren

Road Account Maut Control. Version 1.34

Einführung. Unterstützte Daten. Inhalt. OpenJUMP Image PlugIn

CANape Option Simulink XCP

Bedienungsanleitung Makrogenerator ProMille für Pro/ENGINEER Wildfire

Handbuch. TC3 Modbus TCP. TwinCAT 3. Version: Datum: Bestell-Nr.: TF6250

Import aus TwixTel. Version Software für die Versicherungsund Finanzverwaltung

DFBnet Spielbericht online Handbuch für Sportrichter

Transkript:

Handbuch MATLAB /Simulink TwinCAT 3 Version: Datum: 1.0 17.08.2017

Inhaltsverzeichnis Inhaltsverzeichnis 1 Vorwort... 5 1.1 Hinweise zur Dokumentation... 5 1.2 Sicherheitshinweise... 6 2 Übersicht... 7 3 Blockdiagramm... 10 3.1 Bedienung des Blockdiagramms... 10 3.2 Einbinden des Blockdiagramm-Controls... 11 3.3 Debuggen... 13 3.4 Anzeigen von Signalverläufen... 17 3.5 Modul-Parametrierung im Blockdiagramm... 19 4 ADS-Kommunikation aus MATLAB... 21 4.1 Beispiele... 21 4.1.1 Zugriff auf ein Array in der SPS... 21 4.1.2 Ereignisgesteuertes Lesen... 22 MATLAB /Simulink Version: 1.0 3

Inhaltsverzeichnis 4 Version: 1.0 MATLAB /Simulink

Vorwort 1 Vorwort 1.1 Hinweise zur Dokumentation Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist. Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig. Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem betreffenden Zeitpunkt veröffentliche Dokumentation zu verwenden. Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt. Disclaimer Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt. 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 eingetragene und lizenzierte Marken der Beckhoff Automation GmbH. Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen. Patente Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente: EP1590927, EP1789857, DE102004044764, DE102007017835 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern. Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente: EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern. EtherCAT ist eine eingetragene Marke und patentierte Technologie lizensiert durch die Beckhoff Automation GmbH, Deutschland Copyright Beckhoff Automation GmbH & Co. KG, Deutschland. Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet. Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmusteroder Geschmacksmustereintragung vorbehalten. MATLAB /Simulink Version: 1.0 5

Vorwort 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 SoftwareKonfigurationen ausgeliefert. Änderungen der Hard- oder Software-Konfiguration, die über die dokumentierten Möglichkeiten hinausgehen, sind unzulässig und bewirken den Haftungsausschluss der Beckhoff 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 nebenstehenden Sicherheitshinweis oder Hinweistext verwendet. Die Sicherheitshinweise sind aufmerksam zu lesen und unbedingt zu befolgen! Akute Verletzungsgefahr! Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht unmittelbare Gefahr für Leben und Gesundheit von Personen! GEFAHR Verletzungsgefahr! Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht Gefahr für Leben und Gesundheit von Personen! WARNUNG Schädigung von Personen! Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, können Personen geschädigt werden! VORSICHT Schädigung von Umwelt oder Geräten Wenn der Hinweis neben diesem Symbol nicht beachtet wird, können Umwelt oder Geräte geschädigt werden. Achtung Tipp oder Fingerzeig Dieses Symbol kennzeichnet Informationen, die zum besseren Verständnis beitragen. Hinweis 6 Version: 1.0 MATLAB /Simulink

Übersicht 2 Übersicht MATLAB /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 und Entwicklung 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 Blockdiagrammen implementiert, wie in der Regelungstechnik üblich. Die Standardbibliothek von Simulink stellt bereits eine große Anzahl an Funktionsbausteinen zu Verfügung, mit denen das Verhalten beliebiger Systeme dargestellt werden kann. Neben dieser Standardbibliothek gibt es Toolboxen für verschiedene Anwendungsgebiete (ereignisbasierte Systeme, physikalische Systeme, Steuerungs- und Regelungstechnik, Signal- sowie Bildverarbeitung und vieles mehr), mit denen der Zeitaufwand verringert und die Modellierung vereinfacht werden. Einsatz von MATLAB /Simulink in der Automatisierungstechnik Eine der besonders für die Automatisierungstechnik interessanten Stärken von Simulink ist die modellbasierte Regleroptimierung. Durch Funktionen der übergeordneten Softwareumgebung MATLAB (mit entsprechenden Toolboxen) können Steuerungen mit Berechnungsverfahren aus der Regelungstheorie ausgelegt werden. Auf diese Weise ausgelegte Regler können anschließend in Simulink in einem Modell des geschlossenen Regelkreises simuliert und validiert werden. Neben einfachen Regelkreisen und Steuerungssystemen können auch ganze Produktionsanlagen als Modell nachgebildet und getestet werden. Das bietet im Entwicklungsprozess einer Maschine mehrere Vorteile. So ist z. B. für erste Tests der Steuerungssoftware noch keine reale Maschine erforderlich, wenn ein geeignetes Modell der Maschine zur virtuellen Inbetriebnahme verwendet wird. Dies reduziert außerdem die Gefahr der Beschädigung der Maschine durch fehlerhafte Steuerungssoftware bei der ersten Inbetriebnahme. Zur virtuellen Inbetriebnahme ermöglicht die TwinCAT 3 Function TE1111 EtherCAT Simulation die Simulation eines EtherCAT-Stranges. Darüber hinaus ergeben sich mit den verschiedenen Simulink -Toolboxen weitere Einsatzbereiche, darunter z. B. die Ablaufsteuerung einer Maschine mit Stateflow oder die Messdatenauswertung durch Hinzufügen eines Streaming-Signalverarbeitungssystems mit der DSP Systems Toolbox TM. TE1400 TwinCAT Target für MATLAB /Simulink Um ein Modell aus MATLAB /Simulink nach erfolgreichen Tests in der realen Maschine zu nutzen, können die 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 bereits implementierten Algorithmen in echtzeitfähige Programmteile. Mit TE1400 TwinCAT Target für MATLAB /Simulink kann der Anwender echtzeitfähige Module aus MATLAB /Simulink heraus erzeugen, die in der TwinCAT 3 Laufzeit ausgeführt werden können. Diese Module können in der TwinCAT 3 Entwicklungsumgebung mehrfach instanziiert, parametriert und debuggt werden. MATLAB /Simulink Version: 1.0 7

Übersicht 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 zwischen TwinCAT3 und MATLAB /Simulink. Der Datenaustausch erfolgt über ADS mit Hilfe von Simulink-Blöcken, die in einer Simulink-Bibliothek bereitgestellt werden. 8 Version: 1.0 MATLAB /Simulink

Übersicht Weitere Informationen finden Sie im Abschnitt TE1410 Interface für MATLAB /Simulink. Webinare zu TE1400 und TE1410 Termin Thema Referent 01.10.2013 TwinCAT 3 Matlab /Simulink -Integration: Einführung, Anwendungsbeispiele, TC3 Interface for Matlab /Simulink Eine Übersicht der aktuellen Beckhoff Webinare finden Sie auf der Beckhoff Hompage: http:// www.beckhoff.com/default.asp?support/webinars.htm Dr. Knut Güttel MATLAB /Simulink Version: 1.0 9

Blockdiagramm 3 Blockdiagramm Bei der Generierung eines TwinCAT-Moduls aus MATLAB / Simulink kann optional das Blockdiagramm mit exportiert werden. In diesem Fall kann das Blockdiagramm in der TwinCAT-Entwicklungsumgebung unter dem 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 im Debugging 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. 3.1 Bedienung des Blockdiagramms Bei der Generierung eines TcCom-Moduls aus MATLAB / Simulink kann der Export des Blockdiagramms konfiguriert 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 des TwinCAT-Moduls navigieren, Parameterwerte ansehen, Signalewerte darstellen und optional zusätzliche Debug-Informationen erhalten. 10 Version: 1.0 MATLAB /Simulink

Blockdiagramm Shortcut-Funktionen: Space Backspace ESC STRG + + STRG + - F5 Shortcut Funktion Zoom auf die aktuelle Größe des Blockdiagramm- Reiters Wechseln auf die nächst höhere Hierarchiestufe Wechseln auf die nächst höhere Hierarchiestufe Herein zoomen Heraus zoomen Attach Debugger (System- > Real-Time -> C++ Debugger -> Enable C ++ Debugger muss aktiviert sein) Kontextmenü-Funktionen: 3.2 Einbinden des Blockdiagramm-Controls Das Control welches das Blockdiagramm in der TwinCAT XAE Umgebung darstellt, kann auch als Control in eigene Visualisierungen eingebunden werden. Folgende Schritte sind dafür notwendig: 1. Neue Windows-Forms-Applikation erstellen 2. Hinzufügen der TwinCAT.BlockDiagramm.dll zur Toolbox: MATLAB /Simulink Version: 1.0 11

Blockdiagramm 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 12 Version: 1.0 MATLAB /Simulink

Blockdiagramm 5. Hinzufügen einer TcBlockdiagram-Control-Instanz zum Windows-Forms-Object per Drag&Drop 3.3 Debuggen Um Fehler innerhalb eines TcCom-Modules zu finden, welches mithilfe von MATLAB / Simulink erstellt wurde, stehen unterschiedliche Wege zur 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 entsprechenden Modulinstanz verwendet werden. Dazu nutzt das Blockdiagramm den Microsoft Visual Studio Debugger, der über den TwinCAT Debugger-Port mit der TwinCAT-Laufzeit verbunden werden kann. Voraussetzungen für das Debuggen innerhalb des Blockdiagramms sind: Der C/C++-Quellcode des TcCom-Moduls muss auf dem Engineering-System vorhanden sein und vom Visual Studio-Debugger gefunden werden können. Idealerweise sollte das Debuggen daher auf dem System stattfinden, auf dem auch die Codegenerierung ausgeführt wurde. Das Modul muss mit der Konfiguration Debug erstellt worden sein. Bei Verwendung des Publish- Mechanismus bei der Codegenerierung ist dazu in den Coder-Einstellungen unter Tc Module die Option Publish Debug Version zu aktivieren. Bei der Codegenerierung müssen in den Coder-Einstellungen unter Tc Advanced die Optionen Export 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. Das Verbinden (Attachen) des Debuggers erfolgt wie im C++-Bereich unter Debuggen beschrieben. Setzen von Breakpoints im Blockdiagramm 1. Nach dem Verbinden (Attachen) des Debugger mit der TwinCAT-Laufzeit, werden die möglichen Breakpoints im Blockdiagramm den Blöcken zugeordnet und als Punkte dargestellt. Durch Anklicken des gewünschten Breakpoints kann dieser aktiviert werden, um die Ausführung der Modulinstanz bei der nächsten Abarbeitung des zugehörigen Blocks zu stoppen. Die Farbe des Punktes gibt Auskunft über den 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 MATLAB /Simulink Version: 1.0 13

Blockdiagramm angehalten Blauer Punkt in der Mitte: Breakpoint Hit (wie gelb), allerdings in einer anderen Instanz des Moduls. 2. Im Tool-Tip des Breakpoints findet man zusätzliche Informationen, wie z. B. den zugehörigen C++- Code-Abschitt: 14 Version: 1.0 MATLAB /Simulink

Blockdiagramm Hinweis Hinweis Breakpoints werden nicht immer einem einzelnen Block zugeordnet. Im zugrunde liegenden C++-Code sind häufig Funktionalitäten mehrerer Blöcke in einem Codeabschnitt oder sogar einer Zeile zusammengefasst. Weil sich daher oft mehrere Blöcke den gleichen Breakpoint teilen, ändert sich bei der Aktivierung eines Breakpoints im Blockdiagramm häufig auch die Darstellung der Punkte an anderen 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. Dazu muss das TcCom-Modul die oben genannten Voraussetzungen erfüllen und der C++-Debugger muss im TwinCAT-Projekt aktiviert sein (TwinCAT 3 C++ Enable C++ debugger). Nachdem der Debugger verbunden (attached) wurde, was vor dem Auftreten aber auch noch danach erfolgen kann, wird der verursachende Block im Blockdiagramm hervorgehoben, sofern die verursachende Codezeile einem Block zugeordnet werden kann. Der Name des Blockes wird rot dargestellt und der Block selbst wird fett markiert. Manuelle Auswertung von Exceptions 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 Blockschaltbild hervorheben. Typischerweise wird beim Auftreten eines Fehlers immer eine Fehlermeldung generiert, in der die Quellcode-Datei sowie die Zeile im Quellcode angegeben ist. Über diese Information lässt sich eine Exception 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 Debuginformationen erzeugt wurden (Option Export block diagram debug information in den Coder-Einstellungen unter Tc Advanced ). MATLAB /Simulink Version: 1.0 15

Blockdiagramm 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 und Zeilennummer einzutragen: 16 Version: 1.0 MATLAB /Simulink

Blockdiagramm 5. Der Name des Blockes, welchem die Zeilennummer zugeordnet ist, wird rot dargestellt und der Block selbst wird fett markiert: 3.4 Anzeigen von Signalverläufen Oft ist es hilfreich sich zur Verifikation und Fehlersuche Signalverläufe anzeigen zu lassen. Das Blockdiagramm 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 ein Signal oder Block durch Drag and Drop auf einen freien Bereich des Blockdiagramms gezogen. MATLAB /Simulink Version: 1.0 17

Blockdiagramm Abb. 1: Erstellen eines Scopes im Blockdiagramm Nach dem Drop öffnet sich ein Scope Fenster im Blockdiagramm. Abb. 2: Anzeige des Scopes im Blockdiagramm Das Titelleiste vom Scope Fenster bietet folgende Optionen Fenster schließen Fenster über alle Blockdiagrammhierarchien im Vordergrund halten Fenster auf die Titelleiste minimieren 18 Version: 1.0 MATLAB /Simulink

Blockdiagramm Hinweis Hinweis Für die Darstellung des Scopes im Blockdiagramm-Control [} 11] wird eine Lizenz des Scope View Professional (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 genauere Analysen 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 das Signal dort hinzugefügt. Abb. 3: Hinzufügen eines Signals in ein TwinCAT Scope Projekt 3.5 Modul-Parametrierung im Blockdiagramm Im Abschnitt Parametrierung des generierten Moduls werden die allgemeinen Parametrierungsmöglichkeiten eines TcCom-Objektes beschrieben. Im Folgenden wird speziell die Parametrierung im Blockdiagramm gezeigt. Dazu kann das Parameter Fenster direkt im Blockdiagramm verwendet werden. Außerdem kann die Eigenschafts-Tabelle genutzt werden, die am rechten Rand des Blockdiagramms ein- und ausgeklappt werden 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 der Modulbeschreibungsdatei gespeichert und ermöglichen es, nach Parameteränderungen die "manufacturing settings" wiederherzustellen Startup-Werte werden in der TwinCAT-Projektdatei gespeichert und in die Modulinstanz heruntergeladen, 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änge mit anderen Prozessabbildern verknüpft werden müssen. Interne Signale und Ausgangssignale haben keine 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 zeigen den aktuellen Wert des Parameters im laufenden Modul. Dieser kann auch während der Laufzeit geä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. Mit ihrer Hilfe können verschiedene Werte gespeichert werden, um sie konsistent in das Modul zu schreiben. Wenn vorbereitete Werte festgelegt wurden, sind diese in einer Tabelle unterhalb des Blockdiagramms zu sehen. Mit den Schaltflächen rechts neben der Liste können die vorbereiteten Werte 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. MATLAB /Simulink Version: 1.0 19

Blockdiagramm Abb. 4: Parametrierbarer Block Durch Doppelklick auf den Block oder durch einen einzelnen Klick auf den gelben Kasten wird ein Fenster mit den veränderbaren Parametern angezeigt. Abb. 5: Parameter Fenster Wird ein Wert geändert kann dieser mit folgenden Tastenbefehlen übernommen werden: STRG + Enter SHIFT + Enter Enter Online-Wert setzen Startup-Wert setzen 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 20 Version: 1.0 MATLAB /Simulink

ADS-Kommunikation aus MATLAB 4 ADS-Kommunikation aus MATLAB Für die ADS-Kommunikation aus einem MATLAB-Skript wird keine Zusatzsoftware benötigt. Mit der Installation 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 direkt verwendet werden kann. Beschreibung Beispiel 1: Zugriff auf ein Array in der SPS [} 21] Beispiel 2: Ereignisgesteuertes Lesen [} 22] Download https://infosys.beckhoff.com/content/1031/ tc3_matlab_overview/resources/zip/1539905291.zip https://infosys.beckhoff.com/content/1031/ tc3_matlab_overview/resources/zip/1539903627.zip Dokumente hierzu 2 MatlabSample_AdsReadWriteByName (https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/ Resources/zip/1539905291.zip) 2 MatlabSample_AdsNotifications (https://infosys.beckhoff.com/content/1031/tc3_matlab_overview/resources/zip/1539903627.zip) 4.1 Beispiele Beschreibung Beispiel 1: Zugriff auf ein Array in der SPS [} 21] Beispiel 2: Ereignisgesteuertes Lesen [} 22] Download https://infosys.beckhoff.com/content/1031/ tc3_matlab_overview/resources/zip/1539905291.zip https://infosys.beckhoff.com/content/1031/ tc3_matlab_overview/resources/zip/1539903627.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/1539905291.zip enthält die hier beschriebenen Dateien. Matlab Funktion function[] = Matlab_ADS_Sample() Importieren der Ads.dll AdsAssembly = NET.addAssembly('C:\TwinCAT\AdsApi\.NET\v2.0.50727\TwinCAT.Ads.dll'); import TwinCAT.Ads.* Instanz der Klasse TcAdsClient erzeugen tcclient = TcAdsClient; Verbindung mit dem Port 851 auf dem lokalen Computer herstellen tcclient.connect(851); try hvar = tcclient.createvariablehandle('main.plcvar'); catch err tcclient.dispose(); msgbox(err.message,'fehler beim Erstellen des Variablenhandles','error'); error(err.message); end MATLAB /Simulink Version: 1.0 21

ADS-Kommunikation aus MATLAB AdsStream der Daten aufnehmen soll datastream = AdsStream(100 * 2); binread = AdsBinaryReader(dataStream); Array auslesen tcclient.read(hvar,datastream); for i=1:1:100 disp(binread.readint16) end catch err tcclient.dispose(); msgbox(err.message,'fehler beim Lesen des Arrays','error'); error(err.message); end Ressource wieder freigeben tcclient.dispose(); SPS Programm PROGRAM MAIN VAR PLCVar : ARRAY [0..99] OF INT; Index: BYTE; END_VAR FOR Index := 0 TO 99 DO PLCVar[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/1539903627.zip enthält die hier beschriebenen Dateien. Die Funktion OnNotification.m wird automatisch bei einer eingehenden ADS-Notification aufgerufen. Die Skriptdatei MatlabADSSample_Notification.m registriert die Notifications und entfernt sie nach Ablauf einer gewissen 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 empfangen werden, erfolgt die Abmeldung der Notifications. Importieren der Ads.dll AdsAssembly = NET.addAssembly('C:\TwinCAT\AdsApi\.NET\v4.0.30319\TwinCAT.Ads.dll'); import TwinCAT.Ads.*; Instanz der Klasse TcAdsClient erzeugen tcclient = TcAdsClient; Verbindung mit dem Port 851 auf dem lokalen Computer herstellen tcclient.connect(851); Hilfsvariablen zur Behandlung der Notifications % ADS stream datastream = AdsStream(31); % reader binread = AdsBinaryReader(dataStream); % notification handles hconnect = zeros(7,1); % variables to be read from target by notification boolvarname = 'MAIN.boolVal'; intvarname = 'MAIN.intVal'; 22 Version: 1.0 MATLAB /Simulink

ADS-Kommunikation aus MATLAB dintvarname = 'MAIN.dintVal'; sintvarname = 'MAIN.sintVal'; lrealvarname = 'MAIN.lrealVal'; realvarname = 'MAIN.realVal'; stringvarname = 'MAIN.stringVal'; Erstellen der Device Notifications try % Register callback function tcclient.addlistener('adsnotification',@onnotification); % Register notifications (the variable names are also use as "userdata", which can be evaluated by the callback function) hconnect(1) = tcclient.adddevicenotification(boolvarname,datastream,0,1, AdsTransMode.On- Change,100,0,boolVarName); hconnect(2) = tcclient.adddevicenotification(intvarname,datastream,1,2,adstransmode.on- Change,100,0,intVarName); hconnect(3) = tcclient.adddevicenotification(dintvarname,datastream,3,4,adstransmode.on- Change,100,0,dintVarName); hconnect(4) = tcclient.adddevicenotification(sintvarname,datastream,7,1,adstransmode.on- Change,100,0,sintVarName); hconnect(5) = tcclient.adddevicenotification(lrealvarname,datastream,8,8,adstransmode.on- Change,100,0,lrealVarName); hconnect(6) = tcclient.adddevicenotification(realvarname,datastream,16,4,adstransmode.on- Change,100,0,realVarName); hconnect(7) = tcclient.adddevicenotification(stringvarname,datastream,20,11,adstransmode.on- Change,100,0,stringVarName); % Listen to ADS notifications for 20 seconds pause(20); catch err msgbox(err.message,'error reading array via ADS','error'); disp(['error registering ADS notifications: ' err.message]); end ADS-Notifications abmelden for idx=1:length(hconnect) tcclient.deletedevicenotification(hconnect(idx)); end Verbindung beenden tcclient.dispose(); Callback-Funktion OnNotification function OnNotification(sender, e) Data-Stream-Offset setzten e.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 Workspace hconnect = evalin('base','hconnect'); binread = evalin('base','binread'); Variablen-Zuordnung anhand des Handles und Konvertierung des gelesenen Wertes in einen String if ( 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) ) MATLAB /Simulink Version: 1.0 23

ADS-Kommunikation aus MATLAB strvalue = char(system.string(binread.readchars(11))); end Ausgabe des empfangenen Wertes disp(sprintf('notification received at %04d-%02d-%02d %02d:%02d:%02.3f:\t %s = \t %s',clock(),valuename,strvalue)); SPS-Programm PROGRAM MAIN VAR boolval : BOOL; intval : INT := 222; dintval : DINT; sintval : SINT; lrealval : LREAL := 22.2; realval : REAL; stringval : STRING(10); END_VAR dintval := dintval+1; 24 Version: 1.0 MATLAB /Simulink