MN Opc2 0
MN Opc2 0
OPC-Prozessvariablen für
Band 2 - Schnittstellen ___________________
SIMATIC NET 2
OPC-Alarms-&-Events-
___________________
Server für SIMATIC NET 3
SIMATIC NET
___________________
OPC-Server nutzen 4
___________________
Literaturhinweise 8
Ausgabe 06/2011
C79000-G8900-C197-10
Rechtliche Hinweise
Rechtliche Hinweise
Warnhinweiskonzept
Dieses Handbuch enthält Hinweise, die Sie zu Ihrer persönlichen Sicherheit sowie zur Vermeidung von
Sachschäden beachten müssen. Die Hinweise zu Ihrer persönlichen Sicherheit sind durch ein Warndreieck
hervorgehoben, Hinweise zu alleinigen Sachschäden stehen ohne Warndreieck. Je nach Gefährdungsstufe
werden die Warnhinweise in abnehmender Reihenfolge wie folgt dargestellt.
GEFAHR
bedeutet, dass Tod oder schwere Körperverletzung eintreten wird, wenn die entsprechenden
Vorsichtsmaßnahmen nicht getroffen werden.
WARNUNG
bedeutet, dass Tod oder schwere Körperverletzung eintreten kann, wenn die entsprechenden
Vorsichtsmaßnahmen nicht getroffen werden.
VORSICHT
mit Warndreieck bedeutet, dass eine leichte Körperverletzung eintreten kann, wenn die entsprechenden
Vorsichtsmaßnahmen nicht getroffen werden.
VORSICHT
ohne Warndreieck bedeutet, dass Sachschaden eintreten kann, wenn die entsprechenden
Vorsichtsmaßnahmen nicht getroffen werden.
ACHTUNG
bedeutet, dass ein unerwünschtes Ergebnis oder Zustand eintreten kann, wenn der entsprechende Hinweis
nicht beachtet wird.
Beim Auftreten mehrerer Gefährdungsstufen wird immer der Warnhinweis zur jeweils höchsten Stufe verwendet.
Wenn in einem Warnhinweis mit dem Warndreieck vor Personenschäden gewarnt wird, dann kann im selben
Warnhinweis zusätzlich eine Warnung vor Sachschäden angefügt sein.
Qualifiziertes Personal
Das zu dieser Dokumentation zugehörige Produkt/System darf nur von für die jeweilige Aufgabenstellung
qualifiziertem Personal gehandhabt werden unter Beachtung der für die jeweilige Aufgabenstellung zugehörigen
Dokumentation, insbesondere der darin enthaltenen Sicherheits- und Warnhinweise. Qualifiziertes Personal ist
auf Grund seiner Ausbildung und Erfahrung befähigt, im Umgang mit diesen Produkten/Systemen Risiken zu
erkennen und mögliche Gefährdungen zu vermeiden.
Bestimmungsgemäßer Gebrauch von Siemens-Produkten
Beachten Sie Folgendes:
WARNUNG
Siemens-Produkte dürfen nur für die im Katalog und in der zugehörigen technischen Dokumentation
vorgesehenen Einsatzfälle verwendet werden. Falls Fremdprodukte und -komponenten zum Einsatz kommen,
müssen diese von Siemens empfohlen bzw. zugelassen sein. Der einwandfreie und sichere Betrieb der
Produkte setzt sachgemäßen Transport, sachgemäße Lagerung, Aufstellung, Montage, Installation,
Inbetriebnahme, Bedienung und Instandhaltung voraus. Die zulässigen Umgebungsbedingungen müssen
eingehalten werden. Hinweise in den zugehörigen Dokumentationen müssen beachtet werden.
Marken
Alle mit dem Schutzrechtsvermerk ® gekennzeichneten Bezeichnungen sind eingetragene Marken der
Siemens AG. Die übrigen Bezeichnungen in dieser Schrift können Marken sein, deren Benutzung durch Dritte für
deren Zwecke die Rechte der Inhaber verletzen kann.
Haftungsausschluss
Wir haben den Inhalt der Druckschrift auf Übereinstimmung mit der beschriebenen Hard- und Software geprüft.
Dennoch können Abweichungen nicht ausgeschlossen werden, so dass wir für die vollständige Übereinstimmung
keine Gewähr übernehmen. Die Angaben in dieser Druckschrift werden regelmäßig überprüft, notwendige
Korrekturen sind in den nachfolgenden Auflagen enthalten.
1 Vorwort .................................................................................................................................................... 17
1.1 Wie arbeite ich mit der Dokumentation?......................................................................................18
1.2 Bestimmungen .............................................................................................................................18
1.2.1 Welche juristischen Bestimmungen muss ich beachten?............................................................19
1.2.2 Welche Sicherheitsbestimmungen muss ich kennen? ................................................................19
2 OPC-Prozessvariablen für SIMATIC NET................................................................................................ 21
2.1 Welche Kommunikationsfunktionen gibt es? ...............................................................................21
2.2 Was sind Prozessvariablen?........................................................................................................21
2.3 Wie werden die ItemIDs der Prozessvariablen gebildet? ............................................................22
2.4 PROFIBUS-DP.............................................................................................................................23
2.4.1 DP Master Klasse 1 .....................................................................................................................24
[Link] Hochperformanter SIMATIC NET Inproc-Server für das PROFIBUS DP-Protokoll ....................24
[Link] Performanter SIMATIC NET OPC-Server für das PROFIBUS DP-Protokoll ..............................26
[Link] Einordnung der DPC1- und DPC2-Dienste .................................................................................27
[Link] Prozessvariablen für Dienste des Master Klasse 1 .....................................................................28
[Link] Syntax der Prozessvariablen für den Master Klasse 1................................................................29
[Link] Protokoll-ID ..................................................................................................................................30
[Link] Projektierter CP-Name.................................................................................................................30
[Link] Beispiele für Prozessvariablen für den Master Klasse 1 .............................................................31
[Link] DPC1-Dienste ..............................................................................................................................32
[Link] Syntax der Prozessvariablen für DPC1-Dienste..........................................................................32
[Link] Beispiele für Prozessvariablen für DPC1-Dienste .......................................................................34
[Link] Fast Logic für CP 5613/CP 5623 und CP 5614/CP 5624 (nur Master) .......................................34
[Link] Syntax der Steuervariablen für Fast Logic...................................................................................35
[Link] DP-spezifische Informationsvariablen .........................................................................................37
[Link] Syntax der DP-spezifischen Informationsvariablen .....................................................................37
[Link] Beispiele für DP-spezifische Informationsvariablen.....................................................................41
[Link] Syntax der systemspezifischen Informationsvariablen................................................................42
2.4.2 DP Master Klasse 2 .....................................................................................................................42
[Link] Protokoll-ID ..................................................................................................................................43
[Link] Projektierter CP-Name.................................................................................................................43
[Link] Syntax der Prozessvariablen für Master Diagnose......................................................................43
[Link] Syntax der Prozessvariablen für Slave Diagnose........................................................................51
[Link] Syntax der Prozessvariablen für I/O Daten .................................................................................56
[Link] Syntax der Prozessvariablen für Datensätze...............................................................................58
[Link] Beispiele für Prozessvariablen für Datensätze ............................................................................62
[Link] Syntax der DP2-spezifischen Informationsvariablen ...................................................................63
[Link] Syntax der systemspezifischen Informationsvariablen................................................................64
2.4.3 DP-Slave ......................................................................................................................................64
[Link] Variablendienste zum Zugriff auf lokale Slave-Daten..................................................................64
[Link] Syntax der Prozessvariablen für den DP-Slave...........................................................................65
[Link] Beispiele für Prozessvariablen für den DP-Slave ........................................................................66
[Link] DP-Slave-spezifische Informationsvariablen ...............................................................................67
5.10.31 UpperLimit..................................................................................................................................577
5.10.32 Value ..........................................................................................................................................578
5.10.33 Write...........................................................................................................................................579
5.10.34 WriteMode..................................................................................................................................579
5.10.35 ZeroPad .....................................................................................................................................580
5.11 Eigenschaften und Methoden des Slider Control ......................................................................580
5.11.1 Direction .....................................................................................................................................580
5.11.2 Enabled ......................................................................................................................................581
5.11.3 LargeChange .............................................................................................................................581
5.11.4 Max ............................................................................................................................................582
5.11.5 Min .............................................................................................................................................582
5.11.6 SmallChange..............................................................................................................................583
5.11.7 Ticks...........................................................................................................................................583
5.11.8 Value ..........................................................................................................................................584
5.12 Ereignisse der SIMATIC Controls ..............................................................................................584
5.12.1 Ereignisse des Data Control ......................................................................................................585
5.12.2 Ereignisse des Button Control ...................................................................................................585
5.12.3 Ereignisse des Number Control .................................................................................................585
5.12.4 Ereignisse des Slider Control.....................................................................................................586
5.13 Fehlermeldungen .......................................................................................................................586
5.13.1 Fehlermeldungen der SIMATIC Controls...................................................................................586
5.13.2 Fehlermeldungen des Data Control...........................................................................................586
5.13.3 Fehlermeldungen des Number Control......................................................................................587
6 Beispielprogramme................................................................................................................................ 589
6.1 OPC-Automation-Schnittstelle (Synchrone Kommunikation) in [Link]...................................589
6.1.1 Aktivieren der Simulationsverbindung .......................................................................................589
6.1.2 Bedienung des Beispielprogramms ...........................................................................................590
6.1.3 Beschreibung des Programmablaufs.........................................................................................591
6.1.4 Nutzung der OPC Automation-Schnittstelle mit dem .NET-Framework ....................................592
6.2 OPC-Custom-Schnittstelle (Synchrone Kommunikation) in C++...............................................595
6.2.1 Aktivieren der Simulationsverbindung .......................................................................................595
6.2.2 Bedienung des Beispielprogramms ...........................................................................................596
6.2.3 Beschreibung des Programmablaufs.........................................................................................597
6.2.4 Programmbeschreibung OPCDA_SyncDlg.cpp.........................................................................601
[Link] OnInitDialog ...............................................................................................................................601
[Link] OnStart.......................................................................................................................................602
[Link] OnRead......................................................................................................................................610
[Link] OnWrite ......................................................................................................................................613
[Link] OnStop .......................................................................................................................................614
[Link] DestroyWindow ..........................................................................................................................617
[Link] GetQualityText ...........................................................................................................................617
6.2.5 Hinweise zum Erstellen eigener Programme.............................................................................619
6.3 OPC-Custom-Schnittstelle (Asynchrone Kommunikation) in C++.............................................619
6.3.1 Aktivieren der Simulationsverbindung .......................................................................................619
6.3.2 Bedienung des Beispielprogramms ...........................................................................................620
6.3.3 Programm starten ......................................................................................................................620
6.3.4 Werte lesen und schreiben ........................................................................................................620
6.3.5 Gruppe aktivieren.......................................................................................................................621
6.3.6 Programm beenden ...................................................................................................................622
Darstellungsmittel
Diese Dokumentation setzt unterschiedliche Darstellungsmittel ein, damit Sie unterschied-
liche Informationen besser differenzieren können und spezielle Information leichter
erkennen. Die Tabelle zeigt, welche Darstellungsmittel verwendet werden.
1.2 Bestimmungen
Bei den Produkten von SIMATIC NET müssen Sie folgende Bestimmungen beachten:
Haftungsausschluss
Wir haben den Inhalt dieses Dokuments auf Übereinstimmung mit der beschriebenen Hard-
und Software geprüft. Dennoch können Abweichungen nicht ausgeschlossen werden, so
dass wir für die vollständige Übereinstimmung keine Gewähr übernehmen. Die Angaben in
diesem Dokument werden regelmäßig überprüft, und notwendige Korrekturen sind in den
nachfolgenden Auflagen enthalten. Für Verbesserungsvorschläge sind wir dankbar.
Technische Änderungen vorbehalten.
Weitergabe sowie Vervielfältigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts
ist nicht gestattet, soweit nicht ausdrücklich zugestanden. Zuwiderhandlungen verpflichten
zu Schadenersatz. Alle Rechte vorbehalten, insbesondere für den Fall der Patenterteilung
oder GM-Eintragung.
Siemens AG
I IA SC IC
Postfach 4848
D-90026 Nürnberg
© Siemens AG 2010
Qualifiziertes Personal
Inbetriebsetzung und Betrieb dieses Produkts darf nur von qualifiziertem Personal
vorgenommen werden. Qualifiziertes Personal im Sinne der sicherheitstechnischen
Hinweise dieser Dokumentation sind Personen, die die Berechtigung haben, Geräte,
Systeme und Stromkreise gemäß den Standards der Sicherheitstechnik in Betrieb zu
nehmen, zu erden und zu kennzeichnen.
Bestimmungsgemäßer Gebrauch
WARNUNG
Das Gerät darf nur für die im entsprechenden Katalog und in der technischen Beschreibung
vorgesehenen Einsatzfälle und nur in Verbindung mit von Siemens empfohlenen bzw.
zugelassenen Fremdgeräten und -komponenten verwendet werden.
Der einwandfreie und sichere Betrieb des Produkts setzt sachgemäßen Transport,
sachgemäße Lagerung, Aufstellung und Montage sowie sorgfältige Bedienung und
Instandhaltung voraus.
Mit den in diesem Dokument beschriebenen Produkten ist es auf einfache Weise möglich,
auf Prozessdaten zuzugreifen und diese zu ändern. Durch das Ändern von Prozessdaten
können unvorhersehbare Reaktionen im Prozess ausgelöst werden, die zu Tod, schwerer
Körperverletzung und/oder Sachschaden führen können.
Gehen Sie deshalb vorsichtig vor und achten Sie darauf, dass Sie nicht auf Daten
zugreifen, die unerwartete Reaktionen in den gesteuerten Geräten hervorrufen könnten.
Eine Prozessvariable ist ein schreibbares und/oder lesbares Datum der Prozessperipherie,
wie beispielsweise die Temperatur eines Kessels als Eingangswert einer
speicherprogrammierbaren Steuerung.
ItemIDs
Die ItemID ist eine Zeichenfolge, die eine Prozessvariable eindeutig identifiziert. Sie gibt
dem Server an, welche Prozessvariablen dem OPC-Item zugeordnet werden. Über das
OPC-Item kann dann auf den Prozesswert zugegriffen werden.
Der OPC-Server von SIMATIC NET bildet die verschiedenen Kommunikationsdienste der
SIMATIC NET Kommunikationsprotokolle über OPC-Items ab, indem er Teile der ItemID als
Parameter für den Aufruf einer Kommunikationsfunktion verwendet.
OPC UA
Alle Elemente eines Prozesses, werden im OPC-UA-Objektmodell durch geeignete Objekte
vertreten, z.B. Prozessvariablen durch Datenvariablen oder Properties, Alarme durch
Alarminstanzen oder Kommunikationsdienste durch Methoden. Die Objekte können
untereinander in Beziehung stehen.
NodeIds
Die NodeId setzt sich aus einem Namenraum-Index und einem Bezeichner (Zeichenfolge,
numerischer Wert, Byte-String oder GUID) zusammen. Die NodeId identifiziert in einem
OPC-UA-Server ein Objekt aus dem Prozess.
Die OPC-UA-Server von SIMATIC NET bilden die verschiedenen Kommunikationsdienste
der Protokolle über den Zugriff auf Objekte ab.
Syntax
<Protokoll-ID>:[<Verbindungsname>]<Variablenname>
Erklärungen
<Protokoll-ID>
gibt das Protokoll für den Zugriff auf die Prozessvariable an.
Es gibt folgende Protokoll-IDs:
<Verbindungsname>
Der Verbindungsname identifiziert die Verbindung oder die Kommunikationsbaugruppe, über
die der Partner (z.B. SPS, andere PC-Station oder DP-Slave) erreicht werden kann. Er wird
in der Projektierung mit STEP 7 / SIMATIC NCM PC bei der Netzwerkkonfiguration
angegeben.
Die Angabe des Verbindungsnamens ist abhängig vom gewählten Protokoll. Innerhalb eines
Protokolls muss der Verbindungsname eindeutig sein.
<Variablenname>
Variable, die angesprochen werden soll.
Der Variablenname muss für die im Verbindungsnamen angegebene Verbindung eindeutig
sein. Der Aufbau des Variablennamens ist abhängig vom gewählten Protokoll.
Hinweis
Die ItemIDs unterscheiden nicht zwischen Groß- und Kleinschreibung.
Hinweis
Die Syntax von OPC UA NodeIds finden Sie im Kapitel "OPC UA-Schnittstelle
programmieren (Seite 392)".
2.4 PROFIBUS-DP
Der Verwendung von OPC als COM-basierte Client-Server-Architektur sind jedoch je nach
Ausprägung des OPC-Servers gewisse interne Laufzeiten vorgegeben. Diese entstehen vor
allem bei Verwendung eines Local Servers (auch "Out-Process-Server" genannt; "*.exe"-
Datei mit eigenem Prozessraum) durch Prozesswechsel und Übermittlung der
Funktionsparameter vom Client zum Server (sog. Marshalling) und zurück.
Bei Ausprägung des OPC-Servers als In-Process-Server fallen die Laufzeiten für
Prozesswechsel und Marshalling weg, da der OPC-Server als dynamisch ladbare Bibliothek
(DLL) implementiert ist und im Prozess des Clients abläuft.
Bei der Verwendung eines In-Process-Servers muss allerdings folgendes berücksichtigt
werden:
● Nur 1 Client kann den Server zu einer Zeit benutzen.
Die gleichzeitige Benutzung des In-Process-OPC-Servers durch mehrere Clients würde
eine mehrfache Erzeugung des Servers in verschiedenen Prozessräumen bewirken, die
jedoch alle gleichzeitig und nicht koordiniert auf die gleiche Hardware zugreifen würden.
Die Folge ist, dass nur der zuerst gestartete Client-Zugriff auf die Prozessdaten hat, der
Zugriff weiterer Clients jedoch abgewiesen würde.
Für das sehr schnelle DP-Protokoll bietet SIMATIC NET einen In-Process-Server, der die
Leistungsfähigkeit des DP-Protokolls auch OPC-Clients nahezu ungeschmälert bereitstellt.
Visual C++:
r1 = CLSIDFromProgID(L"[Link]", &clsid);
r1 = CoCreateInstance (clsid, NULL, CLSCTX_INPROC_SERVER,
IID_IOPCServer, (void**)&m_pIOPCServer);
Konfiguration
Die Aktivierung dieser performanten Variante erfolgt implizit durch die alleinige Auswahl des
DP-Protokolls im Konfigurationsprogramm "PC-Station einstellen":
Bild 2-1 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl des DP-Protokolls
Vorteile / Nachteile
Die Verwendung des performanten DP-OPC-Servers hat jedoch den Nachteil, dass nur der
Einzelprotokollbetrieb von DP möglich ist. Dem stehen folgende Vorteile gegenüber:
● Höhere Performance als beim Multiprotokollbetrieb.
● Einfache Konfiguration.
● Mehrere Clients können den Server zur gleichen Zeit nutzen.
● Die Stabilität des OPC-Servers ist nicht von den Clients abhängig.
DP-Master Klasse 1
Der DP-Master Klasse 1 führt die zyklische Kommunikation zu den DP-Slaves aus. Durch
DPC1 kann ein zyklisch arbeitender Master zusätzlichen, azyklischen Datenverkehr
durchführen und auf Alarme von Slaves reagieren.
Die Kommunikation enthält zentrale Funktionen wie:
● Parametrierung und Konfigurierung der Slaves
● zyklischer Datentransfer zu den DP-Slaves
● Überwachen der DP-Slaves
● Bereitstellen von Diagnoseinformationen
DP-Master Klasse 2
Durch DPC2 kann ein DP-Master Klasse 2 weitere zusätzliche Kommunikationsbeziehungen
zu DP-Slaves aufbauen. Voraussetzung ist, dass die DP-Slaves die DP-V1-Zusatzfunktionen
unterstützen. Die wesentlichen DPC2-Funktionszusätze sind:
● Verbindungsaufbau
● Verbindungsabbau
● Datensatz lesen
● Datensatz schreiben
Übersicht DP-Protokoll
In der folgenden Abbildung sehen Sie die Protokollteile von DP bzw. DP-V1:
PG/PC PG/PC
DP-Master Klasse 1 DP-Master Klasse 2
Anwenderprogramm Anwenderprogramm
DP/DPC1- DPC2-
Programmierschnittstelle Programmierschnittstelle
DPC1 DP DPC2
Zykl. Betrieb
MSCY_C1
Azykl. Betrieb
MSAC_C2
Azykl.
Betrieb
MSAC_C1
DP-Slave mit
DP-V1 - Zusatz-
funktionen
Syntax
Eingänge:
DP:[<Verbindungsname>]Slave<Adresse>{M<Nummer>}_E{<Format>
<Offset>{.<Bit>}{,<Anzahl>}}
Ausgänge:
DP:[<Verbindungsname>]Slave<Adresse>{M<Nummer>}_A{<Format>
<Offset>{.<Bit>}{,<Anzahl>}}
Erklärungen
DP
DP-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
Beim DP-Protokoll ist der Verbindungsname der projektierte Name der
Kommunikationsbaugruppe.
Slave
Kennzeichen, dass ein DP-Slave angesprochen wird.
<Adresse>
PROFIBUS-Adresse des Slaves.
Bereich: 0 ... 126.
M
Kennzeichen für die Nummer des Moduls, das den Ein- oder Ausgangsbereich enthält.
<Nummer>
Nummer des Moduls, das den Ein- oder Ausgangsbereich enthält.
_E
Kennzeichen für einen Eingang. Eingänge sind nur lesbar.
_A
Kennzeichen für einen Ausgang. Ausgänge sind les- und schreibbar.
<Format>
Format der gelieferten Daten.
Durch die Formatangabe wird der Datentyp festgelegt.
Über die Automation- und Custom Schnittstelle von OPC können prinzipiell alle
angegebenen OLE-Datentypen gelesen werden. Einige Entwicklungswerkzeuge, wie z.B.
Visual Basic, bieten jedoch nur eine eingeschränkte Menge von Datentypen an.
Die folgende Tabelle listet den entsprechenden Visual Basic-Typ auf, in dem der
Variablenwert dargestellt werden kann.
<Offset>
Byteoffset im Adressraum des Slaves, an dem das Element liegt, das angesprochen werden
soll. Wird ein Modul spezifiziert, so gilt der Offset innerhalb des Moduls. Ohne Angabe des
Moduls bezieht sich der Offset auf den gesamten Ein-/Ausgabebereich des Slaves.
<Bit>
Bitnummer im adressierten Byte.
Die Spezifizierung eines Bits ist nur beim Formatbezeichner X zulässig, der Bereich liegt
zwischen 0 und 7.
<Anzahl>
Anzahl der Elemente.
Der Datentyp (VT-ARRAY) der Variable ist ein Feld mit Elementen des angegebenen
Formats. Wird Anzahl weggelassen, wird als Anzahl 1 angenommen und der Datentyp der
Variable ist kein Feld.
Hinweis
Wird die Angabe des Moduls weggelassen, liefert die Variable den gesamten Ein- bzw.
Ausgangsbereich über alle Module hinweg. Ein strukturierter Zugriff durch Angabe von
Format, Offset und Anzahl ist möglich.
[Link] Protokoll-ID
Die Protokoll-ID für das DP-Protokoll lautet "DP".
Syntax
DP:[<ProjektierterCPName>]
Erklärung
<ProjektierterCPName>
Der projektierte CP-Name wird mit SIMATIC STEP 7 / NCM projektiert.
Eingänge
DP:[CP 5613]Slave005M003_EB0
Slave005M003_EB0
Eingangsbyte 0 des Moduls 3 von Slave 5
DP:[CP 5613]Slave005M003_EB1,3
Slave005M003_EB1,3
Feld mit 3 Bytes ab Eingangsbyte 1 des Moduls 3 von Slave 5
DP:[CP 5613]Slave005M003_ED2
Slave005M003_ED2
Doppelwort ab Eingangsbyte 2 des Moduls 3 von Slave 5
DP:[CP 5613]Slave004M003_EReal0
Slave004M003_EReal0
Fließkommazahl im Eingangsbereich von Slave 4, Modul 3
DP:[CP 5613]Slave004_EB0,8
Slave004_EB0,8
Die ersten 8 Bytes des gesamten Eingangsbereichs von Slave 4 über alle Module hinweg
Ausgänge
DP:[CP 5613]Slave005M007_AB1
Slave005M007_AB1
Ausgangsbyte 1 des Moduls 7
DP:[CP 5613]Slave005M007_AX2.5
Slave005M007_AX2.5
Bit 5 im Ausgangsbyte 2 des Slave 5, Modul 7
DP:[CP 5613]Slave004_AW0,8
Slave004_AW0,8
Feld mit 8 Wörtern aus dem Ausgangsbereich von Slave 4 über alle Module hinweg
[Link] DPC1-Dienste
Mit den DPC1-Diensten können Sie auf Datensätze der DPC1-Slaves zugreifen. Die
Übertragung der Datensätze erfolgt azyklisch.
Die Bedeutung der Datensätze ist durch den Hersteller des Slave festgelegt. Sie können
beispielsweise für Konfigurationsdaten eines Antriebs genutzt werden.
Der OPC-Server kann beim Anmelden einer DPC1-Variablen nur die Syntax auf Korrektheit
überprüfen, aber nicht, ob auf Grund der Projektierung des DPC1-Slave die Variable im
Partnergerät gültig und die Größe des Datensatzes ausreichend ist.
Syntax
DP:[<Verbindungsname>]Slave<Adresse>S<Slot>Data<Index>
{,<Länge>}{,<Teilbereich>}
Erklärungen
DP
DP-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
Slave
Kennzeichen für den Zugriff auf einen Slave über das DP-Protokoll.
<Adresse>
PROFIBUS-Adresse des Slaves.
Bereich: 0 ... 126.
S
Kennzeichen für den Slot des Slaves, typischerweise ein Modul.
<Slot>
Slot im erweiterten Speicherbereich eines Slaves für azyklische Dienste. Slot und Index
kennzeichnen einen Datensatz.
Data
Kennzeichen für den Zugriff auf einen Datensatz.
<Index>
Index innerhalb eines Slots im erweiterten Speicherbereich eines Slaves für azyklische
Dienste. Slot und Index kennzeichnen einen Datensatz.
<Länge>
Länge des Datensatzes. Bereich zwischen 1 und 240.
<Teilbereich>
Der Teilbereich setzt sich wie folgt zusammen:
<Format><Offset>{.<Bit>}{,<Anzahl>}
<Format>
Format, in dem die Daten geliefert werden.
Wenn keine Formatangabe gemacht wird, wird das Format Byte verwendet.
<Offset>
Byteadresse im Datensatz für das Element, das angesprochen werden soll.
<Bit>
Bitnummer im adressierten Byte.
Die Spezifizierung eines Bits ist nur beim Formatbezeichner X zulässig.
<Anzahl>
Anzahl der Elemente
Der Datentyp der Variable ist ein Feld (VT_ARRAY) mit Elementen des angegebenen
Formats. Wird <Anzahl> weggelassen, wird als Anzahl 1 angenommen. Bei Anzahl 1 ist der
Datentyp der Variable kein Feld.
Wert des Datensatzes
Rückgabewert des Datensatzitems
Der Datentyp ist VT_ARRAY | VT_UI1, falls kein Teilbereich angeben wird.
Der Wert ist nur lesbar; falls die Datensatzlänge angegeben wird, auch schreibbar.
Hinweis
Die durch die Parameter Anzahl und Format bestimmte Datenlänge darf die Größe des
Datensatzes im Slave nicht überschreiten. Die Größe eines Datensatzes ist slave-abhängig
und kann vom OPC-Server nicht kontrolliert werden.
Wenn Sie Teilbereiche definieren, müssen Sie folgendes beachten: Wenn ein Lesezugriff
auf einen Datensatz erfolgt, wird vom Partnergerät zunächst immer der gesamte Datensatz
gelesen. Erst anschließend wird der Teilbereich ausgewertet.
Beim Schreiben wird ebenfalls der gesamte Datensatz an das Partnergerät gesendet.
Werden beim Schreibauftrag mehrere Teilbereiche über einen Mengenaufruf beschrieben,
werden zuerst alle Teilbereiche in den Datensatz eingetragen und der Datensatz erst
danach gesendet.
Aus diesem Grund sollten Sie alle OPC-Items mit Teilzugriffen auf einen Datensatz in einer
Gruppe zusammenfassen und die gesamte Gruppe schreiben.
ACHTUNG
Schreiben von Datensätzen an das Partnergerät
Vermeiden Sie beim Schreiben von Datensätzen grundsätzlich Überschneidungen und
Lücken, da nicht vorhersehbar ist, welcher Wert in diesem Fall geschrieben wird.
[Link] Fast Logic für CP 5613/CP 5623 und CP 5614/CP 5624 (nur Master)
Der CP 5613/CP 5623 und der DP-Master-Teil des CP 5614 unterstützen die Eigenschaft
Fast Logic. Dadurch können Sie den CP so parametrieren, dass er als Reaktion auf
Datenänderung beim gleichen oder bei anderen Slaves Werte schreibt. Die
Anwenderapplikation wird dabei über die Datenänderung informiert.
Der CP 5613/5614 und CP 5623/CP 5624 stellen 4 Fast Logic Auslöser bereit, die über
OPC-Steuervariablen konfiguriert und ausgewertet werden können.
Hinweis
Nachdem ein Fast Logic-Trigger ausgelöst wurde, wird er anschließend automatisch
deaktiviert. Sie müssen den Trigger dann erneut über die Variable FLActivate aktivieren.
Fast Logic funktioniert nur dann korrekt, wenn der DP-Master im Zustand OPERATE ist
und die beteiligten Slaves im Zustand READY sind. Deshalb sollte ein Fast Logic Trigger
von dem DP-Anwendungsprogramm erst aktiviert werden, wenn das
Anwendungsprogramm den DP-Master in den Zustand OPERATE versetzt hat.
Solange Fast Logic-Trigger aktiv sind, darf kein DP-Anwendungsprogramm schreibend
auf die Ausgangsbytes zugreifen, die über Fast Logic mit Eingangsbytes verknüpft sind.
Syntax
DP:[<Verbindungsname>]FL<Parameter><N>
Erklärungen
DP
DP-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
FL
Kennzeichen für Fast Logic.
<Parameter>
Mögliche Werte sind:
State
Gibt den Fast Logic Status zurück.
Rückgabewerte:
CLEARED
Auslöser N ist nicht aktiviert.
ACTIVATED
Auslöser N ist aktiviert.
TRIGGERED
Auslöser N hat die Überwachung ausgeführt.
Activate
Activate kann nur geschrieben werden.
Wenn ein Parameterblock geschrieben wird, wird die Fast Logic-Eigenschaft für den in der
ItemID angegebenen Auslöser festgelegt.
Der Parameterblock, der geschrieben wird, ist ein Feld mit 8 Bytes und hat folgenden
Aufbau:
slave_addr_in_byte
Adresse des Slaves, dessen Eingänge für den Trigger selektiert werden
index_in_byte
Offset des Eingangsbytes des Triggers
cmp_value_in_byte
Vergleichswert für das Eingangsbyte
mask_in_byte
Einzelne Bits im Eingangsbyte können maskiert werden, so dass sie beim Vergleich nicht
berücksichtigt werden. Maskiert wird durch eine "1" im entsprechenden Bit, das heißt für
mask_in_byte==0x00 werden alle Bits von cmp_value_in_byte für den Vergleich
herangezogen. Der Trigger wird ausgelöst, wenn alle nicht maskierten Bits im selektierten
Eingangsbyte gleich den Bits in cmp_value_in_byte sind.
slave_addr_out_byte
Selektiert den Slave, dessen Ausgangsbyte beim Eintreffen der Trigger-Bedingung verändert
werden soll
index_out_byte
Offset des Ausgangsbytes
value_out_byte
Wert, der in das Ausgangsbyte geschrieben werden soll
mask_out_byte
Einzelne Bits im Ausgangsbyte können maskiert werden, so dass sie beim Eintreffen der
Trigger-Bedingung nicht verändert werden. Maskiert wird durch eine "1" im entsprechenden
Bit, das heißt für mask_out_byte==0x00 werden alle Bits von value_out_byte in das
selektierte Ausgangsbyte geschrieben.
Clear
Clear kann nur geschrieben werden.
Wenn der boolsche Wert TRUE geschrieben wird, wird der in der ItemID spezifizierte Fast
Logic-Auslöser deaktiviert.
<N>
Nummer des verwendeten Fast Logic Auslösers. Wert zwischen 1 und 4.
Syntax
DP:[<Verbindungsname>]<Informationsparameter>
Erklärungen
DP
DP-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
<Informationsparameter>
Mögliche Werte sind:
● Masterstate
● EvAutoclear
● EvWatchdog
● EvClass2Master
● WatchdogTimeout
● SlavenSlvState
● SlavenSlvDiag
● SlavenMiscSlvType
● sonstige Slave-Informationen
Masterstate
Aktuelle Betriebsart des DP-Masters.
Die aktuelle Betriebsart kann sowohl gelesen als auch geschrieben werden. Das Einstellen
der Betriebsart durch Schreiben eines der unten genannten Werte ist nur in Abhängigkeit
von der DP-Anwendungsumgebung möglich.
Eingabe- und Rückgabewerte:
OFFLINE
Keine Kommunikation zwischen Master und Slave.
STOP
Bis auf Diagnosedaten keine Kommunikation zwischen Master und Slave
CLEAR
Parametrier- und Konfigurierphase
AUTOCLEAR
Autoclear-Phase, der DP-Master erreicht nicht mehr alle Slaves
OPERATE
Produktivphase
EvAutoclear
Signalisiert einen Fehler während der Kommunikation mit DP-Slaves. Das DP-System wird
selbständig in die Betriebsart CLEAR heruntergefahren.
Rückgabewerte:
True
Es ist ein Fehler während der Kommunikation mit DP-Slaves aufgetreten und das System ist
in die Betriebsart CLEAR heruntergefahren
False
Es ist kein Fehler aufgetreten
Hinweis
Sie können EvAutoclear nur verwenden, wenn AUTOCLEAR während der Projektierung
eingestellt worden ist.
Wenn dieser Informationsparameter ausgegeben wird, ist keine Reaktion erforderlich.
EvWatchdog
Signalisiert die Überschreitung der Auftragsüberwachungszeit der Baugruppe. Der OPC-
Server hat innerhalb der Überwachungszeit keinen DP-Funktionsaufruf durchgeführt.
Möglicherweise sind der OPC-Client oder der OPC-Server nicht mehr verfügbar.
Die Überwachungszeit stellen Sie in der Projektierung ein.
Rückgabewerte:
True
Die Überwachungszeit der Baugruppe ist überschritten
False
Die Überwachungszeit der Baugruppe ist nicht überschritten
EvClass2Master
Signalisiert einen Zugriff eines DP-Masters der Klasse 2.
Rückgabewerte:
True
Ein DP-Master der Klasse 2 nimmt am Busverkehr teil und greift auf interne Diagnoselisten
des DP-Masters der Klasse 1 zu
False
Es greift kein DP-Master der Klasse 2 zu
Hinweis
Eine Reaktion auf dieses Ereignis durch ein Anwenderprogramm ist nicht erforderlich.
WatchdogTimeout
Aktivitätsüberwachung auf dem CP. Wenn ein Wert geschrieben wird, kann die
Aktivitätsüberwachung eingestellt werden. Der Standardwert wird in der Projektierung
vorgegeben.
Rückgabewerte:
0
Überwachung aus
400 - 102000
Beliebiger Wert in ms. Der Wert wird auf ein Vielfaches von 400 gerundet.
6000
Default
SlavenSlvState
Aktueller Betriebszustand des DP-Slaves mit der Adresse n.
Rückgabewerte:
OFFLINE
Keine Kommunikation zwischen Master und Slave
NOT_ACTIVE
DP-Slave ist nicht aktiviert
READY
DP-Slave ist in der Datentransferphase
READY_DIAG
DP-Slave ist in der Datentransferphase; zusätzlich sind Diagnosedaten vorhanden
NOT_READY
DP-Slave ist nicht in der Datentransferphase
NOT_READY_DIAG
DP-Slave ist nicht in der Datentransferphase; zusätzlich sind Diagnosedaten vorhanden
SlavenSlvDiag
Letzte Diagnosedaten des DP-Slaves mit der Adresse n. Der Aufbau der Diagnosedaten ist
slave-abhängig und muss der Dokumentation des Slaves entnommen werden.
SlavenMiscSlvType
Typ des DP-Slaves mit der Adresse n.
Rückgabewerte:
NO_SLV
Kein DP-Slave
NORM
Norm-DP-Slave
ET200_U
Nicht Norm-Slave: ET 200 U
ET200K_B
Nicht Norm-Slave: ET 200 K/B
ET200_SPM
Nicht Norm-Slave: Allgemeine SPM-Station
UNDEFINED
Unbekannter DP-Slave
sonstige Slave-Informationen
Die folgenden Slave-spezifischen Informationsparameter sind nicht für den Produktivbetrieb
vorgesehen. Bei Problemen kann es jedoch nützlich sein, die aufgeführten Variablen
auszuwerten.
Alle Variablen sind in der Regel direkt Low-Level-DP-Diensten zugeordnet. Das Lesen
dieser Variablen erfolgt wie bei den anderen Informationsvariablen. Das Ergebnis des
Aufrufes ist der Byte-Dump des jeweiligen Low-Level-DP-Dienstes.
SlavenMiscReadSlvParCfgData
Konfigurationsdaten des Slaves an der Adresse n zur Beschreibung der Ein- und
Ausgangsdatenbereiche und der Datenkonsistenz
SlavenMiscReadSlvParUserData
Anwendungsdaten des Slaves n (Teil der Parameterdatei)
SlavenMiscReadSlvParPrmData
Parametrierdaten des Slaves n
SlavenMiscReadSlvParType
SI-Flag und Typ des Slaves n (Slave-bezogene Flags, Slave-Typ und weitere reservierte
Daten)
SlavenMiscSlvDiag
Diagnosedaten des Slaves n
Betriebsart DP-Master
DP:[CP 5613]MasterState
MasterState
&version()
Liefert eine Versionskennung für den DP OPC-Server, hier z.B. die Zeichenfolge
SIMATIC NET Core Server DP V [Link] Copyright 2010
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
DP-Master Klasse 2
Ein DP-Master Klasse 2 kann Konfigurations- und Online-Diagnoseaufträge durchführen. Die
wesentlichen DP-Master Klasse 2-Funktionen sind:
● Master-Diagnose: Lesen der Master-Klasse-1-Diagnosedaten
● Slave-Diagnose: Lesen von Diagnosedaten eines Slaves und der Slave-Konfiguration
● I/O Daten: Lesen von Ein- und Ausgangsdaten eines Slaves
● Datensätze: Datensätze für einen Slave schreiben und lesen
Mit den azyklischen Diensten zum Zugriff auf E/A-Daten können Sie lesend auf die Eingänge
und Ausgänge der Slaves und auf deren Diagnosedaten zugreifen und diese beobachten.
Voraussetzung ist, dass die Slaves die DP-V1-Zusatzfunktionen unterstützen. Zudem haben
Sie Zugriff auf die Daten eines Master Klasse 1.
Der Zugriff erfolgt:
● über die PROFIBUS-Adresse des Slaves
Slave-Geräte können nicht von sich aus eine Kommunikation aufnehmen. Sie erhalten
den Token nicht und antworten nur auf die an sie gerichteten Anfragen der Master.
Slaves bezeichnet man deshalb als passive Teilnehmer. Diese Nummer entspricht der
PROFIBUS-Adresse.
● über die PROFIBUS-Adresse des Masters
Zugriff auf die Diagnosedaten eines Masters Klasse 1 von einem Master Klasse 2 aus.
[Link] Protokoll-ID
Alle Items beginnen mit dem Präfix "DP2".
Syntax
DP2:[<ProjektierterCPName>]
Erklärung
<ProjektierterCPName>
Der projektierte CP-Name wird mit SIMATIC STEP 7 / NCM projektiert.
Beispiel
DP2:[CP 5613]
Einleitung
Der folgende Abschnitt beschreibt die verschiedenen Syntaxformen, mit denen Sie auf die
Diagnosedaten eines DP-Master Klasse 1 zugreifen können.
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>MstDiag
Erklärung
DP2-Items des Busteilnehmers - Item für die Master-Diagnose
MstDiag
Letzte Systemdiagnosedaten des DP-Master.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_BOOL
Beschreibung: 126 Elemente
Jedes Arrayelement signalisiert, ob der zugeordnete Slave Diagnosedaten gesendet hat,
wobei der Arrayindex der PROFIBUS-Adresse entspricht.
Wert Bedeutung
FALSE Slave hat keine Diagnosedaten gesendet
TRUE Slave hat Diagnosedaten gesendet
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>MstState
Erklärung
DP2-Items des Busteilnehmers - Diagnose-Items Master
MstState
Status des DP-Master. Enthalten den aktuellen Betriebszustand sowie einige
Versionsinformationen.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Beschreibung: 16 Elemente
Byte Beschreibung
1 Betriebszustand
0x40 – STOP
0x80 – CLEAR
0xC0 - OPERATE
2 und 3 Ident-Nummer
4 Version der Hardware (DDLM/user interface)
5 Version der Software (DDLM/user interface)
6 Version der Hardware
7 Version der Software
8 bis 16 Reserviert
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>
DataTransferList
Erklärung
DP2-Items des Busteilnehmers - Diagnose-Items Master
DataTransferList
Data-Transfer-Liste des DP-Master.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_BOOL
Beschreibung: 126 Elemente
Jedes Arrayelement signalisiert, ob der zugeordnete Slave in der Produktivphase ist und
gesendet hat, wobei der Arrayindex der PROFIBUS-Adresse entspricht.
Wert Beschreibung
FALSE Slave ist nicht in der Datentransferphase
TRUE Slave ist in der Datentransferphase
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiag
Erklärung
DP2-Items des Busteilnehmers - Diagnose-Items Master
<Adresse>
PROFIBUS Stationsadresse des Busteilnehmers. Der Busteilnehmer muss nicht
notwendigerweise am PROFIBUS angeschlossen sein, damit das Item angelegt und (ggf.
mit einem Zugriffsfehler) verwendet werden kann.
Bereich: 0 bis 126
ACHTUNG
Der SIMATIC NET OPC-Server kann erst durch den Erfolg eines auszuführenden Slave-
Dienstes erkennen, ob der adressierte Busteilnehmer tatsächlich DP-fähig ist. Bei
kritischen Busteilnehmern, die auf solche Dienste möglicherweise fehlerhaft reagieren, liegt
deshalb die Erzeugung entsprechender Items in der Verantwortung des Anwenders.
SlvDiag
Letzte Diagnosedaten des DP-Slaves, die beim DP-Master hinterlegt sind.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Für die speziellen Inhalte und Beschreibung der Elemente des Feldes SlvDiag gibt es
folgende weiteren Einzel-Items:
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagMasterLock
Dieses Bit wird gesetzt, wenn der DP-Slave bereits von einem anderen Master parametriert
worden ist, d. h. der eigene Master hat momentan keinen Zugriff auf diesen Slave.
Bit 7 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagPrmFault
Dieses Bit wird vom DP-Slave gesetzt, falls das letzte Parametriertelegramm für diesen
Slave fehlerhaft war (beispielsweise falsche Länge, falsche Ident-Number, ungültige
Parameter).
Bit 6 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagInvalidSlaveResponse
Dieses Bit wird gesetzt, sobald von einem angesprochenen DP-Slave eine unplausible
Antwort empfangen wird.
Bit 5 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagNotSupported
Dieses Bit wird gesetzt, sobald eine Funktion angefordert wurde, die von diesem Slave nicht
unterstützt wird (beispielsweise wird der Betrieb im SYNC-Mode gefordert, vom Slave aber
nicht unterstützt).
Bit 4 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagExtDiag
Dieses Bit wird vom DP-Slave gesetzt. Wenn das Bit gesetzt ist, dann muss in dem Slave-
spezifischen Diagnosebereich (Ext_Diag_Data) ein Diagnoseeintrag vorliegen.
Wenn das Bit nicht gesetzt ist, dann kann in dem Slave-spezifischen Diagnosebereich
(Ext_Diag_Data) eine Statusmeldung vorliegen. Die Bedeutung dieser Statusmeldung ist
applikationsspezifisch zu vereinbaren.
Bit 3 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagCfgFault
Dieses Bit wird gesetzt, sobald die vom DP-Master zuletzt gesendeten Konfigurationsdaten
mit denjenigen, die der DP-Slave ermittelt hat, nicht übereinstimmen. Das bedeutet, es liegt
ein Konfigurationsfehler vor.
Bit 2 des 1. Stationsstatus-Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagStationNotReady
Dieses Bit wird gesetzt, wenn der DP-Slave noch nicht für den Produktivdatenaustausch
bereit ist.
Bit 1 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagStationNonExistent
Dieses Bit setzt der DP-Master, falls der DP-Slave nicht über den Bus erreichbar ist. Wenn
dieses Bit gesetzt ist, dann enthalten die Diagnosebits den Zustand der letzten
Diagnosemeldung oder den Initialwert. Der DP-Slave setzt dieses Bit fest auf Null.
Bit 0 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagDeactivated
Dieses Bit wird gesetzt, sobald der DP-Slave im lokalen Parametersatz als nicht aktiv
gekennzeichnet und aus der zyklischen Bearbeitung herausgenommen wurde.
Bit 7 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Bit 6 des 2. (Stationsstatus-)Byte des Feldes SlvDiag ist reserviert.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagSyncMode
Dieses Bit wird vom DP-Slave gesetzt, sobald dieser DP-Slave das Sync-Steuerkommando
erhalten hat.
Bit 5 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagFreezeMode
Dieses Bit wird vom DP-Slave gesetzt, sobald dieser DP-Slave das Freeze-
Steuerkommando erhalten hat.
Bit 4 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagWDOn
Dieses Bit wird vom DP-Slave gesetzt. Wenn dieses Bit auf 1 gesetzt ist, dann ist die
Ansprechüberwachung beim DP-Slave aktiviert.
Bit 3 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Bit 2 des 2. (Stationsstatus-)Byte des Feldes SlvDiag ist fest auf 1 gesetzt.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagStatDiag
Wenn der DP-Slave dieses Bit setzt, dann muss der DP-Master solange
Diagnoseinformationen abholen, bis dieses Bit wieder gelöscht wird. Der DP-Slave setzt
zum Beispiel dieses Bit, wenn er keine gültigen Nutzdaten zur Verfügung stellen kann.
Bit 1 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagPrmReq
Wenn der DP-Slave dieses Bit setzt, dann muss er neu parametriert und konfiguriert werden.
Das Bit bleibt solange gesetzt, bis eine Parametrierung erfolgt ist.
Bit 0 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Anmerkung
Wenn Bit 1 (SlvDiagStatDiag) und Bit 0 (SlvDiagPrmReq) gesetzt sind, dann hat Bit 0 die
höhere Priorität.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagExtDiagOverflow
Wenn dieses Bit gesetzt ist, dann liegen mehr Diagnoseinformationen vor, als in
SlvDiagExtDiagData angegeben sind. Zum Beispiel setzt der DP-Slave dieses Bit, wenn
mehr Kanaldiagnosen vorliegen, als der DP-Slave in seinen Sendepuffer eintragen kann.
Oder der DP-Master setzt dieses Bit, wenn der DP-Slave mehr Diagnosedaten sendet, als
der DP-Master in seinem Diagnosepuffer berücksichtigen kann.
Bit 7 des 3. (Stationsstatus-)Byte des Feldes SlvDiag.
Bit 6 bis 0 des 3. (Stationsstatus-)Byte des Feldes SlvDiag sind reserviert.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagMasterAddr
In Byte 4 des Feldes SlvDiag (das [Link]-Byte) wird die Adresse des DP-Masters
eingetragen, der diesen DP-Slave parametriert hat. Wenn der DP-Slave von keinem DP-
Master parametriert ist, dann setzt der DP-Slave in dieses Byte die Adresse 255 ein.
Byte 4 ([Link]-Byte) des Feldes SlvDiag.
Datentyp: VT_UI1
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagIdentNumber
In diesem Wort wird die Herstellerkennung für einen DP-Slave-Typ angegeben. Diese
Kennung kann zum Einen für Prüfungszwecke und zum Anderen zur genauen Identifizierung
herangezogen werden.
5. und 6. (IdentNumber -)Byte des Feldes SlvDiag.
Datentyp: VT_UI2
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Master<AdresseMaster>Slave
<Adresse>SlvDiagExtDiagData
In diesem Feld von Bytes (die ExtDiagData-Bytes) mit einer Länge von bis zu 26 Byte kann
der DP-Slave seine spezifische Diagnose ablegen. Es wird eine Blockstruktur mit je einem
Header-Byte für die geräte- und kennungsbezogene Diagnose vorgeschrieben.
7. bis 32. (ExtDiagData-)Byte des Feldes SlvDiag.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Einleitung
Der folgende Abschnitt beschreibt die verschiedenen Syntaxformen, mit denen Sie auf die
Diagnosedaten eines Slave zugreifen können.
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiag
Erklärung
DPMCL2-Items des Busteilnehmers - Diagnose-Items Slave
SlvDiag
Letzte Diagnosedaten des DP-Slave.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Für die speziellen Inhalte und Beschreibung der Elemente des Feldes SlvDiag gibt es
folgende weiteren Einzelitems:
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagMasterLock
Dieses Bit wird gesetzt, wenn der DP-Slave bereits von einem anderen Master parametriert
worden ist, d. h. der eigene Master hat momentan keinen Zugriff auf diesen Slave.
Bit 7 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagPrmFault
Dieses Bit wird vom DP-Slave gesetzt, falls das letzte Parametriertelegramm für diesen
Slave fehlerhaft war (beispielsweise falsche Länge, falsche Ident-Number, ungültige
Parameter).
Bit 6 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagInvalidSlaveResponse
Dieses Bit wird gesetzt, sobald von einem angesprochenen DP-Slave eine unplausible
Antwort empfangen wird.
Bit 5 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagNotSupported
Dieses Bit wird gesetzt, sobald eine Funktion angefordert wurde, die von diesem Slave nicht
unterstützt wird (beispielsweise wird der Betrieb im SYNC-Mode gefordert, vom Slave aber
nicht unterstützt).
Bit 4 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagExtDiag
Dieses Bit wird vom DP-Slave gesetzt. Wenn das Bit gesetzt ist, dann muss in dem Slave-
spezifischen Diagnosebereich (Ext_Diag_Data) ein Diagnoseeintrag vorliegen.
Wenn das Bit nicht gesetzt ist, dann kann in dem Slave-spezifischen Diagnosebereich
(Ext_Diag_Data) eine Statusmeldung vorliegen. Die Bedeutung dieser Statusmeldung ist
applikationsspezifisch zu vereinbaren.
Bit 3 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagCfgFault
Dieses Bit wird gesetzt, sobald die vom DP-Master zuletzt gesendeten Konfigurationsdaten
mit denjenigen, die der DP-Slave ermittelt hat, nicht übereinstimmen. Das bedeutet, es liegt
ein Konfigurationsfehler vor.
Bit 2 des 1. Stationsstatus-Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagStationNotReady
Dieses Bit wird gesetzt, wenn der DP-Slave noch nicht für den Produktivdatenaustausch
bereit ist.
Bit 1 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagStationNonExistent
Dieses Bit setzt der DP-Master, falls der DP-Slave nicht über den Bus erreichbar ist. Wenn
dieses Bit gesetzt ist, dann enthalten die Diagnosebits den Zustand der letzten
Diagnosemeldung oder den Initialwert. Der DP-Slave setzt dieses Bit fest auf Null.
Bit 0 des 1. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagDeactivated
Dieses Bit wird gesetzt, sobald der DP-Slave im lokalen Parametersatz als nicht aktiv
gekennzeichnet und aus der zyklischen Bearbeitung herausgenommen wurde.
Bit 7 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Bit 6 des 2. (Stationsstatus-)Byte des Feldes SlvDiag ist reserviert.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagSyncMode
Dieses Bit wird vom DP-Slave gesetzt, sobald dieser DP-Slave das Sync-Steuerkommando
erhalten hat.
Bit 5 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagFreezeMode
Dieses Bit wird vom DP-Slave gesetzt, sobald dieser DP-Slave das Freeze-
Steuerkommando erhalten hat.
Bit 4 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagWDOn
Dieses Bit wird vom DP-Slave gesetzt. Wenn dieses Bit auf 1 gesetzt ist, dann ist die
Ansprechüberwachung beim DP-Slave aktiviert.
Bit 3 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Bit 2 des 2. (Stationsstatus-)Byte des Feldes SlvDiag ist fest auf 1 gesetzt.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagStatDiag
Wenn der DP-Slave dieses Bit setzt, dann muss der DP-Master solange
Diagnoseinformationen abholen, bis dieses Bit wieder gelöscht wird. Der DP-Slave setzt
zum Beispiel dieses Bit, wenn er keine gültigen Nutzdaten zur Verfügung stellen kann.
Bit 1 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagPrmReq
Wenn der DP-Slave dieses Bit setzt, dann muss er neu parametriert und konfiguriert werden.
Das Bit bleibt solange gesetzt, bis eine Parametrierung erfolgt ist.
Bit 0 des 2. (Stationsstatus-)Byte des Feldes SlvDiag.
Anmerkung
Wenn Bit 1 (SlvDiagStatDiag) und Bit 0 (SlvDiagPrmReq) gesetzt sind, dann hat Bit 0 die
höhere Priorität.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagExtDiagOverflow
Wenn dieses Bit gesetzt ist, dann liegen mehr Diagnoseinformationen vor, als in
SlvDiagExtDiagData angegeben sind. Zum Beispiel setzt der DP-Slave dieses Bit, wenn
mehr Kanaldiagnosen vorliegen, als der DP-Slave in seinen Sendepuffer eintragen kann.
Oder der DP-Master setzt dieses Bit, wenn der DP-Slave mehr Diagnosedaten sendet, als
der DP-Master in seinem Diagnosepuffer berücksichtigen kann.
Bit 7 des 3. (Stationsstatus-)Byte des Feldes SlvDiag.
Bit 6 bis 0 des 3. (Stationsstatus-)Byte des Feldes SlvDiag sind reserviert.
Datentyp: VT_BOOL
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagMasterAddr
In Byte 4 des Feldes SlvDiag (das [Link]-Byte) wird die Adresse des DP-Masters
eingetragen, der diesen DP-Slave parametriert hat. Wenn der DP-Slave von keinem DP-
Master parametriert ist, dann setzt der DP-Slave in dieses Byte die Adresse 255 ein.
Byte 4 ([Link]-Byte) des Feldes SlvDiag.
Datentyp: VT_UI1
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagIdentNumber
In diesem Wort wird die Herstellerkennung für einen DP-Slave-Typ angegeben. Diese
Kennung kann zum Einen für Prüfungszwecke und zum Anderen zur genauen Identifizierung
herangezogen werden.
5. und 6. (IdentNumber -)Byte des Feldes SlvDiag.
Datentyp: VT_UI2
Zugriffsrecht: Read-Only
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvDiagExtDiagData
In diesem Feld von Bytes (die ExtDiagData-Bytes) mit einer Länge von bis zu 26 Byte kann
der DP-Slave seine spezifische Diagnose ablegen. Es wird eine Blockstruktur mit je einem
Header-Byte für die geräte- und kennungsbezogene Diagnose vorgeschrieben.
7. bis 32. (ExtDiagData-)Byte des Feldes SlvDiag.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SlvCFGData
Erklärung
DPMCL2-Items des Busteilnehmers - Diagnose-Items Slave
SlvCFGData
Konfigurationsdaten des DP-Slaves, die beim DP-Master hinterlegt sind.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_U I1
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>SetSlaveAddress
Erklärung
DPMCL2-Items des Busteilnehmers - Diagnose-Items Slave
SetSlaveAddress
Setzt eine neue PROFIBUS-Adresse für den Slave
Datentyp: VT_ARRAY
Zugriffsrecht: Write-Only
OLE-Datentyp: VT_VARIANT
Beim Schreiben des Items wird der entsprechende DPMCL2-Dienst ausgeführt. Der zu
schreibende Wert enthält in einem Feld die zur Ausführung des Dienstes notwendigen
Parameter:
Nach erfolgreichem Schreiben der neuen Slave-Adresse müssen bei Bedarf für den Slave
neue Items angelegt werden. Die Items mit der alten Slave-Adresse (z. B. DPMCL2_E/A
Items) sprechen weiter den Slave unter der alten Adresse an und können deshalb nicht
mehr erfolgreich gelesen werden.
Syntax
Beim Zugriff auf die Eingänge im E/A-Bereich eines Slave muss die Slave-Variable nach
folgender Syntax gebildet werden:
DP2:[<ProjektierterCPName>]Slave<Adresse>_E{<Format>
<Offset{.Bit}>{,Anzahl}}
oder (englisch):
DP2:[<ProjektierterCPName>]Slave<Adresse>_I{<Format>
<Offset{.Bit}>{,Anzahl}}
Erklärung
DPMCL2-Items des Busteilnehmers - E Items Slave
<Adresse>_E oder englisch <Adresse>_I
<Adresse>_A oder englisch <Adresse>_Q
Die Eingänge und die Ausgänge können vom OPC-Client des SIMATIC NET OPC-Servers
nur gelesen werden.
Die durch die Projektierung vergebenen Module sowie deren Datengröße (Byte bzw. Wort)
und Konsistenz werden vom DP-Master Klasse 2 nicht berücksichtigt. Er unterscheidet sich
dadurch von einem DP-Master Klasse 1. Zwar kann der DP-Master Klasse 2 die
Konfiguration des Slave zur Laufzeit ermitteln, der Slave und der zugehörige DP-Master
Klasse 1 kann aber seine Konfiguration zur Laufzeit ändern, ohne dass der DP-Master
Klasse 2 darüber benachrichtigt wird. Die Konsequenz daraus sind inkonsistente
Konfigurationsdaten, selbst bei einem zeitraubenden und netzbelastenden Pollen der
Konfigurationsdaten.
Der Zugriff auf einen E/A-Bereich erfolgt durch Angabe der Slave-Nummer <Adresse> und
des E/A-Bereichs, wobei _E (bzw. _I, englisch) den Eingabebereich kennzeichnet. Falls die
optionale Formatangabe weggelassen wird, werden die Daten als Feld von Bytes in der
Gesamtlänge der Eingänge geliefert.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
<Format>
Das Element Format legt fest, in welchem Format die Daten geliefert werden. Wird keine
Formatangabe verwendet, wird das Format Byte verwendet. Durch die Formatangabe wird
auch der Datentyp festgelegt.
<Offset{.Bit}>
Offset in Bytes des anzusprechenden Elements (Offset-Adressierung). Die Spezifizierung
eines Bits ist nur bei dem Typ X zulässig. Der anzugebende Offset erfolgt in Bytes.
Beispiel: X2.3 liefert das 3. Bit des 2. Bytes.
<Anzahl>
Anzahl der Elemente. Der Datentyp der Variable ist ein Feld mit Elementen (Datentyp
VT_ARRAY) des angegebenen Formats. Die Angabe der Anzahl ist beim Format X nicht
möglich.
Wird dieser Namensteil weggelassen oder als Anzahl 1 angegeben, wird als Anzahl 1
angenommen und der Datentyp der Variable ist kein Feld.
Syntax
Beim Zugriff auf die Ausgänge im E/A-Bereich eines Slave muss die Slave-Variable nach
folgender Syntax gebildet werden:
DP2:[<ProjektierterCPName>]Slave<Adresse>_A{<Format>
<Offset{.Bit}>{,Anzahl}}
oder (englisch):
DP2:[<ProjektierterCPName>]Slave<Adresse>_Q{<Format>
<Offset{.Bit}>{,Anzahl}}
Erklärung
DPMCL2-Items des Busteilnehmers - A Items Slave
Der Zugriff auf einen E/A-Bereich erfolgt durch Angabe der Slave-Nummer <Adresse> und
des E/A-Bereichs, wobei _A (bzw. _Q, englisch) den Ausgabebereich kennzeichnet. Falls die
optionale Formatangabe weggelassen wird, werden die Daten als Feld von Bytes in der
Gesamtlänge der Ausgänge geliefert.
Datentyp: VT_ARRAY
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Die Formatierung erfolgt wie bei den E-Items des Slave.
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>S<Slot>Data<Index>
{,<Länge>}{,<Teilbereich>}
ACHTUNG
Der SIMATIC NET OPC-Server kann erst durch den Erfolg eines auszuführenden Slave-
Dienstes erkennen, ob der adressierte Busteilnehmer tatsächlich DP-fähig ist. Bei
kritischen Busteilnehmern, die auf solche Dienste möglicherweise fehlerhaft reagieren, liegt
deshalb die Erzeugung entsprechender Items in der Verantwortung des Anwenders.
Erklärung
DPC2-Items des Busteilnehmers - DPC2-Read/Write
S
Kennzeichen für den Slot des Slaves; typischerweise ein Modul.
<Slot>
Slot im erweiterten Speicherbereich eines Slave. Slot und Index kennzeichnen einen
Datensatz.
Bereich: 0 bis 255 (an der C-Schnittstelle: 0 bis 255)
Data
Kennzeichen für einen Datensatz.
<Index>
Index der Daten im Slave-Slot.
Bereich: 0 bis 255
<Länge>
Länge des Datensatzes.
Bereich: 1 bis 240
<Teilbereich>
Kennzeichen für einen Teilbereich.
<Format>
Das Element Format legt fest, in welchem Format die Daten geliefert werden. Durch die
Formatangabe wird auch der Datentyp festgelegt.
<Offset{.Bit}>
Offset in Bytes des anzusprechenden Elements. Die Spezifizierung eines Bits ist nur bei
dem Typ X zulässig.
Beispiel: X2.3 liefert das 3. Bit des 2. Bytes.
<Anzahl>
Anzahl der Elemente (bei Format X nicht zugelassen). Der Datentyp der Variable ist ein Feld
mit Elementen (Datentyp VT_ARRAY) des angegebenen Formats. Wird dieser Namensteil
weggelassen oder als Anzahl 1 angegeben, wird als Anzahl 1 angenommen und der
Datentyp der Variable ist kein Feld.
Wert des Datensatzes
Rückgabewert des Datensatzitems.
Der Datentyp ist VT_ARRAY | VT_UI1, falls kein Teilbereich angeben wird.
Lesbar; falls die Datensatzlänge angegeben wird, auch schreibbar.
Hinweis
Die durch die Parameter Anzahl und Format bestimmte Datenlänge darf die Größe des
Datensatzes im Slave nicht überschreiten. Die Größe eines Datensatzes ist slave-abhängig
und kann vom OPC-Server nicht kontrolliert werden.
Beim Lesezugriff auf einen Teilbereich des Datensatzes wird vom Partnergerät zunächst
immer der gesamte Datensatz gelesen und anschließend der entsprechende Teilbereich
ausgewertet.
Beim Schreiben eines Teilbereichs wird ebenfalls der gesamte Datensatz an das
Partnergerät weitergegeben. Werden innerhalb eines Schreibauftrags mehrere Teilbereiche
des Datensatzes beschrieben, wird der Datensatz erst an das Partnergerät geschrieben,
nachdem alle Teilbereiche des Datensatzes aktualisiert wurden.
Bei Verwendung des OPC-Servers ist es daher sinnvoll, alle Items mit Teilzugriffen auf einen
bestimmten Datensatz innerhalb einer Gruppe zusammenzufassen und die gesamte Gruppe
zu schreiben.
ACHTUNG
Schreiben von Datensätzen an das Partnergerät
Vermeiden Sie beim Schreiben von Datensätzen grundsätzlich Überschneidungen und
Lücken, da nicht vorhersehbar ist, welcher Wert in diesem Fall geschrieben wird.
Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>DTS<Slot>Data
<Index>{,<Länge>}{,<Teilbereich>}
mit <Teilbereich> = <Format><Offset>{.<Bit>}{,<Anzahl>}
Erklärung
DPC2-Items des Busteilnehmers - DPC2-Data-Transport
Die DPC2-DataTransport Items haben Lese/Schreibzugriff, falls die Länge angegeben wird
(sonst nur Lesezugriff). Wird kein Teilbereich vorgegeben, ist der Datentyp:
Datentyp: VT_ARRAY
OLE-Datentyp: VT_UI1
Dieses Item realisiert protokollseitig einen Datenaustausch. Der Lesezugriff dieser Items
erfolgt lokal und liefert den mit dem letzten Schreibzugriff im Austausch erhaltenen
Datensatz.
DTS
Kennzeichen für Data-Transport.
<Slot>
Slot im erweiterten Speicherbereich eines Slave. Slot und Index kennzeichnen einen
Datensatz.
Bereich: 0 bis 255
<Offset>{.<Bit>}
Offset in Bytes des anzusprechenden Elements. Die Spezifizierung eines Bits ist nur bei
dem Typ X zulässig.
Beispiel: X2.3 liefert das 3. Bit des 2. Bytes.
<Anzahl>
Anzahl der Elemente (bei Format X nicht zugelassen). Der Datentyp der Variable ist ein Feld
mit Elementen (Datentyp: VT_ARRAY) des angegebenen Formats. Wird dieser Namensteil
weggelassen oder als Anzahl 1 angegeben, wird als Anzahl 1 angenommen und der
Datentyp der Variable ist kein Feld.
Hinweis
Beim Lesezugriff auf einen Teilbereich des Datensatzes wird der entsprechende Teilbereich
des vom Partnergerät zuletzt erhaltenen Datensatzes ausgewertet.
Beim Schreiben eines Teilbereichs wird ebenfalls der gesamte Datensatz an das
Partnergerät weitergegeben. Werden innerhalb eines Schreibauftrags mehrere Teilbereiche
des Datensatzes beschrieben, wird der Datensatz erst an das Partnergerät geschrieben,
nachdem alle Teilbereiche des Datensatzes aktualisiert wurden.
Bei Verwendung des OPC-Servers ist es daher sinnvoll, alle Items mit Teilzugriffen auf einen
bestimmten Datensatz innerhalb einer Gruppe zusammenzufassen und die gesamte Gruppe
zu schreiben.
ACHTUNG
Schreiben von Datensätzen an das Partnergerät
Vermeiden Sie beim Schreiben von Datensätzen grundsätzlich Überschneidungen und
Lücken, da nicht vorhersehbar ist, welcher Wert in diesem Fall geschrieben wird.
DP2:[CP 5613]Slave005S003Data2,120,B8,4
Zugriff auf ein Feld mit 4 Bytes ab Offset 8 in einem Datensatz der Länge 120 Bytes in Slot
3, Index 2 des Slaves 5.
DP2:[CP 5613]Slave005DTS006Data2,10,DWORD2
Data Transport Zugriff auf das Doppelwort ab Offset 2 in einem Datensatz der Länge 10
Bytes in Slot 6, Index 2 des Slaves 5.
Syntax
DP2:[<ProjektierterCPName>]&identify()
Erklärung
&identify()
Liefert die Teilnehmeridentifikation des angegebenen Gerätes als Feld mit 4 Strings:
Datentyp: VT_ARRAY
Beschreibung: 4 Array-Elemente (0-3)
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_BSTR
Elemente des Rückgabewerts:
● Hersteller
● Controller
● Hardware-Version
● Software-Version
Beispiel: {Siemens AG|FW-CP 5613A2 EL (E2)|1.0|V 6.2.1.3175 20.08.2004}
Syntax
DP2:[<ProjektierterCPName>]lifelist()
Erklärung
lifelist()
Allgemeine Items
Liefert eine Liste mit allen angeschlossenen Busteilnehmern.
Datentyp: VT_ARRAY
Beschreibung: 127 Array-Elemente (0-126)
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Jedes Arrayelement steht für eine PROFIBUS Stationsadresse. Die Werte der Array-
Elemente bedeuten:
Element Bedeutung
0x00 STATION_PASSIVE
0x10 STATION_NON_EXISTANT
0x20 STATION_ACTIVE_READY (bereit zur Aufnahme in den logischen Ring)
0x30 STATION_ACTIVE (bereits im logischen Ring)
ACHTUNG
&version()
Liefert eine Versionskennung für den DP2 OPC-Server, hier z.B. die Zeichenfolge
SIMATIC NET Core Server DP2 V [Link] Copyright 2010
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
2.4.3 DP-Slave
Über Variablennamen können Statusinformation der Slaves und des DP-Masters abgefragt
werden.
Hinweis
Der parallele Betrieb von DP-Master und DP-Slave mit der Baugruppe CP 5614,
CP 5614 A2 oder CP 5614 FO ist nur möglich, wenn bei der Projektierung die Betriebsart
DP-Base eingestellt wurde.
Syntax
Eingänge:
DP:[<Verbindungsname>]Slave{M<Nummer>}_E{<Format><Offset>
{.<Bit>}{,<Anzahl>}}
Ausgänge:
DP:[<Verbindungsname>]Slave{M<Nummer>}_A<Format><Offset>
{.<Bit>}{,<Anzahl>}
Erklärungen
DP
Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
In der Projektierung angegebener Name der Kommunikationsbaugruppe.
Slave
Kennzeichen für den Zugriff auf einen Slave über das DP-Protokoll.
M
Kennzeichen für die Nummer des Moduls.
<Nummer>
Nummer des Moduls, das den Ein- bzw. Ausgangsbereich enthält.
_E
Kennzeichen für einen Eingang.
_A
Kennzeichen für einen Ausgang.
<Format>
Format, in dem die Daten geliefert werden.
Durch die Formatangabe wird auch der Datentyp festgelegt.
Über die Automation-Schnittstelle von OPC können alle angegebenen OLE-Datentypen
gelesen werden. Jedoch bieten einige Entwicklungswerkzeuge (wie z.B. Visual Basic) nur
eine eingeschränkte Menge von Datentypen an. Die folgende Tabelle listet deshalb den
entsprechenden Visual Basic-Typ auf, in dem der Variablenwert dargestellt werden kann.
<Offset>
Byteadresse im Adressraum des Slaves, an der das Element liegt, das angesprochen
werden soll.
<Bit>
Bitnummer in dem adressierten Byte. Der Bereich liegt zwischen 0 und 7.
Die Spezifizierung eines Bits ist nur beim Formatbezeichner X zulässig.
<Anzahl>
Anzahl der Elemente.
Der Datentyp (VT-ARRAY) der Variable ist ein Feld mit Elementen des angegebenen
Formats.
Wird Anzahl weggelassen, wird als Anzahl 1 angenommen und der Datentyp der Variable ist
kein Feld.
Den Parameter Anzahl dürfen Sie nicht beim Formatbezeichner X verwenden.
Eingänge
DP:[CP 5611]SlaveM003_EB0
SlaveM003_EB0
Eingangsbyte 0 (Offset 0) im Modul 3 des DP-Slaves.
DP:[CP 5611]SlaveM003_EB1,3
SlaveM003_EB1,3
Ein Feld mit 3 Bytes ab Eingangsbyte1 (Offset 1) im Modul 3 des DP-Slaves.
DP:[CP 5614]SlaveM003_EX0.0
SlaveM003_EX0.0
Eingangsbit 0 im Byte 0 im Modul 3 des DP-Slaves
DP:[CP 5614]SlaveM003_EB3,8
SlaveM003_EB3,8
Ein Feld mit 8 Eingangsbytes ab Offset 3 im Modul 3 des DP-Slaves.
Ausgänge
DP:[CP 5611]SlaveM003_AW3
SlaveM004_AW3
Ein Ausgangswort an Adresse 3 im Modul 4 des DP-Slave.
DP:[CP 5611]SlaveM003_ADWORD2
SlaveM003_ADWORD2
Ein Ausgangsdoppelwort an Adresse 2 im Modul 3 des DP-Slave.
DP:[CP 5614]SlaveM003_AX3.7
Slave_AX3.7
Ein Ausgangsbit 7 im Byte 3 des DP-Slave.
DP:[CP 5614]SlaveM001_AW0,4
SlaveM001_AW0,4
Ein Feld mit 4 Ausgangsworten im Modul 1 des DP-Slave.
Syntax
Es gibt zwei Möglichkeiten:
DP:[<Verbindungsname>]<Diagnose-Item>
DP:[<Verbindungsname>]<Parameter-Item>
Erklärungen
DP
Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Name, der in der Projektierung für die Kommunikationsbaugruppe festgelegt wurde.
<Diagnose-Item>
Vordefiniertes Item.
Es gibt folgende Möglichkeit:
devicestate
Zustand der Baugruppe, auf dem der DP-Slave abläuft.
Es gibt folgende Zustände:
● ONLINE
● OFFLINE
<Parameter-Item>
Vordefinierte Parameter-Items.
Es gibt folgende Möglichkeiten:
● SlaveMiscReadSlvParCfgData
Konfigurationsdaten des Slaves
● SlaveSlvState
Zustand des Slaves.
Es gibt folgende Zustände:
– DATA_EXCHANGE
– NO_DATA_EXCHANGE
2.4.4 PROFIdrive
PROFIdrive
PROFIdrive ist ein PROFIBUS Anwendungsprofil, das für das Geräteverhalten und das
Zugriffsverfahren von elektrischen Antrieben am PROFIBUS definiert ist.
OPC-Client
Erklärung
<index_info> := (I|i)[0-9]+
<subindex_info> := (S|s)[0-9]+
<datatype_info> := (D|d)(<datatype_code>)
<extra_info> := (X|x)<String>
<datatype_code> := [0-9]+
index_info: Parameternummer (beginnend mit 0)
Hinweis
Wenn eine benötigte Abbildung nicht existiert, ignoriert der Profil-Server einzelne Bytes oder
setzt sie zu Null. Dies muss beim Lesen und Schreiben von Gerätedaten berücksichtigt
werden!
Beispiel 2:
spezifizierte Länge: 64 Bit (8 Bytes)
empfangene Bytes: AA BB CC DD
Lesen des Items liefert: AA BB CC DD 00 00 00 00
[Link] Mehrachsgeräte
Unterstützt ein Antrieb mehrere Achsen, so werden für jede Achse die DRIVECOM-Items im
Namensraum angelegt. Die Tatsache, dass es sich um einen Antrieb mit unterlagerten
Achsen handelt, kann in der Hierarchie des Namensraums zum Ausdruck gebracht werden.
Der Wert des Items DS_DeviceID muss sich für jede Achse unterscheiden, da sonst der
Namensraum nicht mehr eindeutig ist.
[Link] Fehlercodes
Das PROFIdrive-Profil definiert eine Reihe von numerischen Codes, die im Fehlerfall
zurückgegeben werden. Diese Werte können jedoch nicht in OPC-Methoden zurückgegeben
werden. Sie sind daher entsprechend der nachfolgenden Tabelle in OPC-Standardcodes
umzusetzen. Bei welcher OPC-Funktion welcher Rückgabewert erlaubt ist, wird durch die
OPC-Spezifikation festgelegt.
PROFIdrive-Fehlercode OPC-Rückgabewert
0 OPC_E_INVALIDITEMID
1 OPC_E_BADRIGHTS
2 OPC_E_RANGE
3 DISP_E_BADINDEX
4 E_INVALIDARG
PROFIdrive-Fehlercode OPC-Rückgabewert
5 OPC_E_BADTYPE
6 OPC_E_BADRIGHTS
7 OPC_E_BADRIGHTS
9 E_INVALIDARG
11 E_ACCESSDENIED
15 E_INVALIDARG
17 E_INVALIDARG
20 E_INVALIDARG
21 E_OUTOFMEMORY
22 OPC_E_INVALIDITEMID
23 E_INVALIDARG
24 DISP_E_BADPARAMCOUNT
alle anderen E_FAIL
Hinweis
Die Adresse darf nicht mit der eines angeschlossenen Antriebs kollidieren (=
übereinstimmen). Welche Adressen bereits belegt sind, kann mit dem Tool
"PG/PC-Schnittstelle einstellen" Schaltfläche "Diagnose" überprüft werden.
Hinweis
Das im nächsten Schritt notwendige Register "OPC-Eigenschaften" ist möglicherweise
nicht sichtbar! In diesem Fall muss zunächst im Register Betriebsart die Option "DP-
Master" selektiert werden. Anschließend erscheint das Register "OPC-Eigenschaften".
Dann muss wieder "DP Master Klasse 2 (Diagnosefunktionen)" eingestellt werden.
[Link] Protokoll-ID
Die folgenden Abschnitte beschreiben die Variablen des SIMATIC NET PROFIdrive-Bus-
Server. Dieser Server dient zur Anbindung von Geräten über das DP-Protokoll.
Protokoll-ID
Alle Items beginnen wegen der Profil-Server-Spezifikation mit dem Präfix "DP2://"
Hinweis
Abweichend von der Syntax der anderen Protokolle werden bei PROFIdrive keine eckigen
Klammern verwendet.
Die ItemID setzt sich wie folgt zusammen: DP2://<Gerätename>/<Variablenname>
Syntax
DP2://brd<n>.seg<s>/lifelist()
Erklärung
brd
Kennzeichen, dass ein Board angesprochen wird.
<n>
Nummer des projektierten Boards. Die Board-Nummer wird mit SIMATIC NCM projektiert.
Die projektierte Board-Nummer wird vom Konfigurations-Server über das Item CPName
bereitgestellt. Bereich: 1-32.
seg
Kennzeichen, dass ein Segment angesprochen wird.
<s>
PROFIBUS Segmentnummer des Boards. Zur Zeit immer 0.
lifelist()
Liefert eine Liste mit allen angeschlossenen Busteilnehmern.
Datentyp: VT_ARRAY
Beschreibung: 127 Array-Elemente, 0-126
Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1
Jedes Arrayelement steht für eine PROFIBUS Stationsadresse, wobei der Array-Index der
PROFIBUS-Adresse entspricht.
Die Werte der Array-Elemente bedeuten:
Wert Bedeutung
0x00 STATION_PASSIVE
0x10 STATION_NON_EXISTANT
Wert Bedeutung
0x20 STATION_ACTIVE_READY (bereit zur Aufnahme in den logischen Ring)
0x30 STATION_ACTIVE (bereits im logischen Ring)
Dieses Item dient zu Informations- und Diagnosezwecken und wird vom Profil-Server nicht
verwendet.
Einleitung
Der folgende Abschnitt beschreibt die verschiedenen Syntaxformen, mit denen Sie auf die
Daten eines PROFIdrive-Geräts zugreifen können.
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/
Erklärung
dev
Kennzeichen für den Busteilnehmer (device).
<Adresse>
Spezifiziert die PROFIBUS Stationsadresse des Busteilnehmers.
Der Busteilnehmer muss nicht notwendigerweise am PROFIBUS angeschlossen sein, damit
das Item angelegt und (ggf. mit einem Zugriffsfehler) verwendet werden kann.
Bereich: 1-126
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_Vendorname
Erklärung
DS_Vendorname
Item des Busteilnehmers.
Dienst zur Erkennung eines Busteilnehmers durch den Profil-Server.
Item, mit dem Clients mögliche Partner am Bus im Namensraum identifizieren können. Der
Wert des Item wird vom Client nicht ausgewertet.
Für jeden aktuell am Bus vorhandenen Slave muss im Namensraum ein entsprechendes
Item angelegt sein, wenn über die Schnittstelle IOPCBrowseServerAdressSpace der
Namensraum ausgelesen wird.
Diese Items legt der OPC-Server auf Anfrage der Schnittstelle
IOPCBrowseServerAddressSpace im Namensraum an.
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/Timeout
Erklärung
DS_MSAC2_Parameter/Timeout
Mehrere Items, die die Funktionsparameter des MSAC2-Dienstes, insbesondere
MSAC2_Initiate, durch den Client vorgeben bzw. zurücklesen lassen.
Diese Items legt der Client an, wenn er sie benötigt.
Items des Busteilnehmers (Zugriffssteuerung).
DS_MSAC2_Parameter/Timeout Zeitüberwachung in [ms] Lese- oder Schreibzugriff auf
MSAC2-Items.
Datentyp: VT_I4
Zugriffsrecht: Read-Write
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/ConnectionStatus
Erklärung
DS_MSAC2_Parameter/ConnectionStatus
Items des Busteilnehmers (Zugriffssteuerung).
DS_MSAC2_Parameter/ConnetionStatus
Verbindungsstatus MSAC2.
Datentyp: VT_I2
Zugriffsrecht: Read-Only
Wert Bedeutung
1 CONNECTED
Verbindung ist geöffnet
0 NO_CONNECTION
Verbindung noch nicht aufgebaut. Es wurde von Seiten des SIMATIC NET OPC-Servers
noch kein erfolgloser Versuch dazu unternommen. Der Verbindungsstatus
NO_CONNECTION wird erst dann wieder erreicht, wenn der Client alle Items freigegeben
hat, mit denen eine Produktivkommunikation stattfindet, z.B. Items für
MSAC2_Read/Write, MSAC2_DataTransport oder Antriebe.
-1 SLAVE_NOT_PRESENT
Verbindung konnte nicht aufgebaut werden oder ist unterbrochen. Slave antwortet nicht.
Ohne das Vorliegen von Lese-Schreibaufträgen zum Slave kann eine Störung (z.B. Ziehen
des Buskabels) nicht erkannt werden und hat deshalb zunächst keine Auswirkung auf das
Item, d.h. der Verbindungsstatus bleibt möglicherweise auf CONNECTED.
-2 NO_RESOURCES
Slave lässt keine neue Verbindung mehr zu (z.B. keine neuen SAPs mehr verfügbar.
-3 TIMEOUT
Zeitüberschreitung beim Zugriff auf den Slave.
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/SendTimeout
Erklärung
DS_MSAC2_Parameter/SendTimeout
Items des Busteilnehmers (Initiate Parameter des Masters).
Diese Items werden für jedes Server-Objekt separat verwaltet, d.h. unterschiedliche Clients
können diese Parameter unterschiedlich belegen und haben jeweils eine eigene MSAC2-
Verbindung zu den angesprochenen Slaves. Falls ein Client mehrere Server-Objekte
erzeugt, werden auch diese Items hier separat verwaltet.
Zeitüberwachung in ms für den Verbindungsaufbau zum Slave. Ausgewertet in Schritten von
10 ms.
Datentyp: VT_I4
Zugriffsrecht: Read-Write
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
MA_Features_Supported_1
Erklärung
DS_MSAC2_Parameter/MA_Features_Supported_1
Items des Busteilnehmers (Initiate Parameter des Masters).
Diese Items werden für jedes Server-Objekt separat verwaltet, d.h. unterschiedliche Clients
können diese Parameter unterschiedlich belegen und haben jeweils eine eigene MSAC2-
Verbindung zu den angesprochenen Slaves. Falls ein Client mehrere Server-Objekte
erzeugt, werden auch diese Items hier separat verwaltet.
Funktionsparameter des Masters im MSAC2_Initiate.
Datentyp: VT_UI1
Zugriffsrecht: Read-Write
Default 1
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
MA_Features_Supported_2
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
MA_Profile_Features_Supported_1
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
MA_Profile_Features_Supported_2
Erklärung
DS_MSAC2_Parameter/MA_Features_Supported_2
DS_MSAC2_Parameter/MA_Profile_Features_Supported_1
DS_MSAC2_Parameter/MA_Profile_Features_Supported_2
Items des Busteilnehmers (Initiate Parameter des Masters).
Diese Items werden für jedes Server-Objekt separat verwaltet, d.h. unterschiedliche Clients
können diese Parameter unterschiedlich belegen und haben jeweils eine eigene MSAC2-
Verbindung zu den angesprochenen Slaves. Falls ein Client mehrere Server-Objekte
erzeugt, werden auch diese Items hier separat verwaltet.
Funktionsparameter des Masters im MSAC2_Initiate.
Datentyp: VT_UI1
Zugriffsrecht: Read-Write
Default 0
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
MA_ProfileIdentNumber
Erklärung
DS_MSAC2_Parameter/MA_ProfileIdentNumber
Items des Busteilnehmers (Initiate Parameter des Masters).
Diese Items werden für jedes Server-Objekt separat verwaltet, d.h. unterschiedliche Clients
können diese Parameter unterschiedlich belegen und haben jeweils eine eigene MSAC2-
Verbindung zu den angesprochenen Slaves. Falls ein Client mehrere Server-Objekte
erzeugt, werden auch diese Items hier separat verwaltet.
Funktionsparameter des Masters im MSAC2_Initiate.
Datentyp: VT_UI2
Zugriffsrecht: Read-Write
Default 0
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
SL_Features_Supported_1
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
SL_Features_Supported_2
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
SL_Profile_Features_Supported_1
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
SL_Profiie_Features_Supported_2
Erklärung
DS_MSAC2_Parameter/SL_Features_Supported_1
DS_MSAC2_Parameter/SL_Features_Supported_2
DS_MSAC2_Parameter/SL_Profile_Features_Supported_1
DS_MSAC2_Parameter/SL_Profiie_Features_Supported_2
Items des Busteilnehmers (Initiate Parameter des Slaves).
Diese Items werden für jedes Server-Objekt separat verwaltet, d.h. unterschiedliche Clients
können diese Parameter unterschiedlich belegen und haben jeweils eine eigene MSAC2-
Verbindung zu den angesprochenen Slave. Falls ein Client mehrere Server-Objekte erzeugt,
werden auch diese Items hier separat verwaltet. Diese Items haben die Quality
OPC_QUALITY_GOOD nur solange die MSAC2-Verbindung besteht.
Funktionsparameter des Slaves im MSAC2_Initiate.
Datentyp: VT_UI1
Zugriffsrecht: Read-Only
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/DS_MSAC2_Parameter/
SL_ProfileIdentNumber
Erklärung
DS_MSAC2_Parameter/SL_ProfileIdentNumber
Items des Busteilnehmers (Initiate Parameter des Slaves).
Diese Items werden für jedes Server-Objekt separat verwaltet, d.h. unterschiedliche Clients
können diese Parameter unterschiedlich belegen und haben jeweils eine eigene MSAC2-
Verbindung zu den angesprochenen Slave. Falls ein Client mehrere Server-Objekte erzeugt,
werden auch diese Items hier separat verwaltet. Diese Items haben die Quality
OPC_QUALITY_GOOD nur solange die MSAC2-Verbindung besteht.
Funktionsparameter des Slaves im MSAC2_Initiate.
Datentyp: VT_UI2
Zugriffsrecht: Read-Only
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/SlotI<Slot>S<Index>{D8209}
Erklärung
Items für die Adressierung MSAC2_Read/Write.
Datentyp: VT_ARRAY
OLE-Datentyp: VT_UI1
Die Formatangabe mit D8209 ist optional.
SlotI
Kennzeichen für den Slot des Slaves; typischerweise ein Modul.
<Slot>
Slot im erweiterten Speicherbereich eines Slave. Slot und Index Kennzeichnen einen
Datensatz. Für den Zugriff auf PROFIdrive Parameter wird üblicherweise der Slot 0
verwendet.
Bereich: 0 bis 254
S
Kennzeichen für den Slot des Slaves; typischerweise ein Modul.
<Index>
Index der Daten im Slave Slot. Für den Zugriff auf PROFIdrive Parameter wird üblicherweise
der Index 47 verwendet.
Bereich: 0 bis 254
Syntax
DP2://brd<n>.seg<s>.dev<Adresse>/SlotI<Slot>S<Index>{D8209}xDT
Erklärung
Items für die Adressierung MSAC2_DataTransport.
Die DPC2-Items haben Lese/Schreibzugriff. Es werden neue Daten übergeben und in der
Protokollquittung Ergebnisdaten empfangen. Der Lesezugriff dieser Items erfolgt lokal und
liefert den mit dem letzten Schreibzugriff im Austausch erhaltenen Datensatz.
Die Qualtität des Items hat erst dann den Wert "gut", wenn nach einem Schreibzugriff gültige
Daten erhalten wurden.
Datentyp: VT_ARRAY
OLE-Datentyp: VT_UI1
Die Formatangabe mit D8209 ist optional.
Syntax
DP2://&version()
Erklärung
Liefert eine Versionskennung für den PROFIdrive OPC-Server, hier z.B. die Zeichenfolge:
SIMATIC NET Core Server PD V [Link] Copyright © 2002
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
2.5 S7-Kommunikation
Das S7-Protokoll für PROFIBUS und Industrial Ethernet dient der Kommunikation von
Systemkomponenten innerhalb des Automatisierungssystems SIMATIC S7 und der
Kommunikation von SIMATIC S7-Systemkomponenten mit Programmiergeräten und PCs.
Einleitung
Der folgende Abschnitt beschreibt eine Konfigurationsvariante für das S7-Protokoll, die
höhere Performanceanforderungen erfüllt. Hierfür werden alle unterlagerten S7-
Protokollbibliotheken und der COM-Server als Inproc-Server in den Outproc-OPC-Server
geladen. Die Protokollbearbeitung läuft im Prozess des OPC-Servers ab, weitere Laufzeiten
für Prozesswechsel und Multiprotokollbetrieb fallen weg. Der Prozesswechsel zwischen
OPC-Client und OPC-Server ist allerdings noch vorhanden.
Konfiguration
Die Aktivierung dieser performanten Variante erfolgt implizit durch die alleinige Auswahl des
S7-Protokolls im Konfigurationsprogramm "PC-Station einstellen":
Bild 2-4 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl des S7-Protokolls
Vorteile / Nachteile
Die Verwendung des performanten S7-OPC-Servers hat jedoch den Nachteil, dass nur der
Einzelprotokollbetrieb von S7 möglich ist. Dem stehen folgende Vorteile gegenüber:
● Höhere Performance als beim Multiprotokollbetrieb.
● Einfache Konfiguration.
● Mehrere Clients können den Server zur gleichen Zeit nutzen.
● Die Stabilität des OPC-Servers ist nicht von den Clients abhängig.
2.5.2 Protokoll-ID
Die Protokoll-ID für das S7-Protokoll lautet "S7".
2.5.3 Verbindungsnamen
STEP 7-Verbindungen
Der Verbindungsname ist der in STEP 7 projektierte Name zur Identifikation der Verbindung.
Dieser Name heißt bei STEP 7 "Lokale ID". Die Lokale ID ist innerhalb des OPC-Servers
eindeutig.
Der OPC-Server unterstützt folgende Verbindungstypen:
● S7-Verbindung
● S7-Verbindung hochverfügbar
Hinweis
Zur Kompatibilität mit Version 2.2 und früher beachten Sie folgendes:
In älteren Versionen bestanden die Verbindungsinformationen aus den Angaben der
S7-Verbindung, der VFDs und des Kommunikationsprozessors. Diese Elemente werden
in der ItemID der Variablen weiterhin akzeptiert, sind jedoch nicht mehr im Namensraum
vorhanden. Falls in einer Konfiguration mehrere VFDs vom OPC-Server verwendet
wurden, können diese in STEP 7 ausschließlich aus Gründen der Kompatibilität
projektiert werden.
Verbindungsprojekte
Es gibt folgende S7-Verbindungs-Objekte:
● Produktive S7-Verbindungen
S7-Verbindungen werden zum Datenaustausch zwischen Automatisierungsgeräten
genutzt und im Allgemeinen über STEP 7 projektiert.
● Die DEMO-Verbindung
Sie dient ausschließlich zum Test.
● Die @LOCALSERVER–Verbindung
Sie stellt die lokalen S7-Datenbausteine für die S7-Serverfunktionalität zur Verfügung.
2.5.4 Variablendienste
Variablendienste ermöglichen den Zugriff und die Beobachtung von S7-Variablen im
Automatisierungsgerät. Die Adressierung der S7-Variablen erfolgt symbolisch. Die Art des
Zugriffs orientiert sich an der Notation der S7-Werkzeuge.
Objekte im Automatisierungsgerät
Der OPC-Server unterstützt folgende Objekte:
● Datenbausteine
● Instanzdatenbausteine
● Eingänge
● Ausgänge
● Peripherieeingänge
● Peripherieausgänge
● Merker
● Timer
● Zähler
Nicht jedes S7-Automatisierungsgerät unterstützt alle Objekttypen.
Syntax
Es gibt drei Möglichkeiten:
S7:[<Verbindungsname>]DB<Nr>,{<Typ>}<Adresse>{,<Anzahl>}
S7:[<Verbindungsname>]DI<Nr>,{<Typ>}<Adresse>{,<Anzahl>}
S7:[<Verbindungsname>]<Objekt>{<Typ>}<Adresse>{,<Anzahl>}
Erklärungen
S7
S7-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
DB
Datenbaustein. Kennzeichen für eine S7-Variable aus einem Datenbaustein.
DI
Instanzdatenbaustein. Kennzeichen für eine S7-Variable aus einem Instanzdatenbaustein.
<Nr>
Nummer des Datenbausteins oder Instanzdatenbausteins.
<Objekt>
Angabe des Bausteins/Bereichstyps in der S7.
Mögliche Werte sind:
E Eingang
A Ausgang
PE Peripherieeingang
PA Peripherieausgang
M Merker
T, TBCD, TDA Timer
Z Zähler
Die Anzahl der rechtsstehenden Nullen bestimmt das Zeitraster, die führenden Ziffern von 1
bis 999 multipliziert mit dem Zeitraster bestimmen die Laufdauer.
Beispiele:
Der Wert 90.000 ms hat ein Zeitraster von 100 ms.
Der Wert 123.000 ms hat ein Zeitraster 1 s.
Der Wert 150 ms hat ein Zeitraster von 10 ms.
Der OPC-Datentyp der S7-Timer-Variable vom Typ T ist ein Wort (unsigned, VT_UI2).
Zeitraster und Wertebereich von S7-Timer-Variablen (Typ TBCD):
Der Wertebereich von OPC-Prozessvariablen für S7 vom Typ TBCD ist BCD-kodiert. Aus
dem Wertebereich ergibt sich (für das Schreiben) das Zeitraster entsprechend der folgenden
Tabelle:
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bedeutungssymbol 0 0 x x z z z z z z z z z z z z
Erläuterung:
Bedeutungssymbol "0" nicht relevant
Bedeutungssymbol "x" Angabe des Zeitrasters
Bit 13 und 12 Zeitraster in Sekunden
00 0,01
01 0,1
10 1
11 10
Bedeutungssymbol "z" BCD-kodierter Zeitwert (0...999)
Beispiel:
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Wert 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1
Bit 0-11 legen die Zahl 075 fest. Bit 12 und 13 legen das Zeitraster 0,1 fest.
75 * 0,1 = 0,75 Sekunden
Der OPC-Datentyp der S7-Timer-Variable vom Typ TBCD ist ein Wort (unsigned, VT_UI2).
Bei dem Objekt TDA ist keine Eingabe der <Anzahl> möglich.
Beispiel:
Beschreiben des Timers TDA3 mit Wert {100|50} initialisiert den Timer 3 mit dem Wert
50*100ms=5000 ms, und dieser taktet 50-mal in 100 ms Stufen herunter.
Mit dem Typ T ist diese Einstellung nicht möglich.
Wertebereich von S7-Zähler-Variablen (Typ Z):
Der Wertebereich von OPC-Prozessvariablen für S7 vom Typ Zähler (Z) ist 0 bis 999,
dezimal kodiert.
Der OPC-Datentyp der S7-Zähler-Variable vom Typ Z ist ein Wort (unsigned, VT_UI2).
<Typ>
S7-Datentyp.
Ein S7-Datentyp wird im OPC-Server in den entsprechenden OLE-Datentyp umgewandelt.
Über die Automation-Schnittstelle von OPC können alle angegebenen OLE-Datentypen
gelesen werden. Einige Entwicklungswerkzeuge (wie z. B. Visual Basic) bieten jedoch nur
eine eingeschränkte Menge von Datentypen an. Die folgende Tabelle listet den
entsprechenden Visual Basic-Typ auf, in dem der Variablenwert dargestellt werden kann.
Bei den Objekten T, TDA und Z ist die Angabe eines Typs nicht zulässig.
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bedeutungssymbol 0 0 x x z z z z z z z z z z z z
Erläuterung:
Bedeutungssymbol "0" nicht relevant
Bedeutungssymbol "x" Angabe des Zeitrasters
Bit 13 und 12 Zeitraster in Sekunden
00 0,01
01 0,1
10 1
11 10
Bedeutungssymbol "z" BCD-kodierter Zeitwert (0...999)
Beispiel:
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Wert 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1
Bit 0-11 legen die Zahl 075 fest. Bit 12 und 13 legen das Zeitraster 0,1 fest.
75 * 0,1 = 0,75 Sekunden
Der OPC-Datentyp der Zeit-Variable vom Datentyp S5TIMEBCD ist ein Wort (unsigned,
VT_UI2). Beim Schreiben ist der Wertebereich entsprechend eingeschränkt.
<Adresse>
Adresse der ersten Variablen, die angesprochen werden soll. Mögliche Werte sind:
● Byte-Offset
● [Link] (nur für Datentyp X)
Der Wertebereich der Bit-Adresse erlaubt dann 0...7.
● [Link]-Länge (nur für Datentyp String, String-Länge 1 Byte bis 254 Byte)
Der Wertebereich für den Byte-Offset ist 0...65534. Geräte- und Typabhängig kann der
tatsächlich verwendbare Wert der Adresse geringer sein.
<Anzahl>
Anzahl der Variablen eines Typs, die ab dem im Parameter Adresse angegebenen Offset
angesprochen werden sollen. Der Wertebereich ist von der Projektierung abhängig.
Beim Datentyp X ist die Eingabe der Anzahl für Schreibzugriff nur in Vielfachen von 8
möglich. Die Bit-Adresse muss dann Null sein.
Beim Datentyp X ist die Eingabe der Anzahl für Lesezugriff nicht eingeschränkt.
Beispiele:
S7:[S7-OPC-1]DB1,X10.0,64, Zugriffsrechte RW
S7:[S7-OPC-1]DB1,X10.3,17, Zugriffsrechte R
Parameter Datenbaustein
S7:[S7-Verbindung-1]DB5,B12
DB5,B12
bezeichnet Datenbyte 12 im Datenbaustein 5.
Parameter Instanzdatenbaustein
S7:[S7-Verbindung-1]DI5,W10,9
DI5,W10,9
bezeichnet 9 Datenwörter ab Byteadresse 10 im Instanzdatenbaustein 5.
Parameter Objekte
S7:[S7-Verbindung-1]EB0
EB0
bezeichnet das Eingangsbyte 0.
DB10,B13
DB10,DW14
DB10,W20
Wird über das Kommunikationssystem als ein lesender Feldzugriff auf DB10,B10,12
ausgeführt.
Trotz der Lücke an Byte 18 und 19 erfolgt die Umwandlung in einen einzigen Leseauftrag.
Die unnötig gelesenen Daten werden verworfen. Anstelle von 5 einzelnen
Variablenanforderungen wird nur eine Anforderung über das Netz transportiert.
Hinweis
Blockorientierte Dienste können nur bei zweiseitigen Verbindungen verwendet werden. Die
erstellte Verbindungsprojektierung muss in das S7-Automatisierungsgerät bzw. auf die
betreffenden PCs geladen werden.
$EELOGXQJDXI EHUWUDJXQJ
23&,WHPV DQVWR¡HQ
'DWHQSXIIHU
¾EHUWUDJHQ
Bild 2-5 Senden eines Datenpakets von einem S7-400 Gerät an eine PC-Station mit S7 OPC-
Server
Damit der OPC-Server Daten empfangen kann, werden im PC ein oder mehrere OPC-Items
des Typs BRCV in eine aktive Gruppe eingefügt.
Im S7-400 Gerät stößt ein Anwendungsprogramm den Funktionsbaustein BSEND an.
BSEND startet die Übertragung des gesamten Datenbereichs als Puffer zum PC.
Im PC werden die empfangenen Daten an den OPC-Server übergeben. Der OPC-Server
bildet nun die Teilbereiche des Datenblocks auf die entsprechenden OPC-Items ab. Wenn
diese OPC-Items beobachtet werden, sendet der OPC-Server bei Änderung der Werte einen
Rückruf an den OPC-Client.
Syntax
Es gibt zwei Möglichkeiten:
S7:[<Verbindungsname>]BRCV,<RID>{,{<Typ>}<Adresse>{,<Anzahl>}}
S7:[<Verbindungsname>]BSEND<Länge>,<RID>{,{<Typ>}<Adresse>
{,<Anzahl>}}
Erklärungen
S7
S7-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
BRCV
BRCV enthält den zuletzt vom Partner empfangenen Datenblock. Der Inhalt und die Länge
der Empfangsdaten wird durch den sendenden Partner vorgegeben.
Die Variable ist nur lesbar.
Setzen Sie diese Variable zur Beobachtung ein. Damit wird der Empfang eines Datenblocks
durch OPC-Server an eine OPC-Client-Anwendung gemeldet.
Ein expliziter Auftrag zum Lesen dieser Variablen kehrt zurück, wenn eine verbindungs-
spezifische und in der Projektierung angegebene Fehlerwartezeit abgelaufen ist oder ein
Datenblock empfangen wurde.
BSEND
BSEND enthält den Sendedatenblock zur Übertragung an ein Partnergerät.
Der Datenblock wird erst dann an das Partnergerät übertragen, wenn die Variable
geschrieben wird. Bei einem Lesezugriff wird der Inhalt des zuletzt erfolgreich übertragenen
Datenblocks geliefert.
<Länge>
Länge des Datenblocks in Bytes, der gesendet werden soll.
<RID>
ID des Adressierungsparameters. Sie ist für ein Bausteinpaar (BSEND/ BRCV) festgelegt
und innerhalb einer Verbindung eindeutig definiert.
Sie können mehrere BSEND-Bausteine über eine Verbindung senden bzw. mehrere BRCV-
Bausteine empfangen, aber immer mit einer unterschiedlichen ID. Gleiche IDs können für
weitere Verbindungen verwendet werden. Der Wertebereich bei BSEND/BRCV ist
0...4294967295.
<Typ>
S7-Datentyp.
Ein S7-Datentyp wird im OPC-Server in den entsprechenden OLE-Datentyp umgewandelt.
Über die Automation-Schnittstelle von OPC können alle angegebenen OLE-Datentypen
gelesen werden. Jedoch bieten einige Entwicklungswerkzeuge (wie z.B. Visual Basic) nur
eine eingeschränkte Menge von Datentypen an. Die folgende Tabelle listet deshalb den
entsprechenden Visual Basic-Typ auf, in dem der Variablenwert dargestellt werden kann.
<Adresse>
Adresse der ersten Variablen, die angesprochen werden soll.
Mögliche Werte sind:
Byte-Nummer
[Link] (nur für Format X)
Der Wertebereich für die Byte-Nummer ist 0...65534. Geräte- und Typabhängig kann der
tatsächlich verwendbare Wert der Adresse geringer sein.
<Anzahl>
Anzahl der Variablen eines Typs, die ab der im Parameter Adresse angegebenen Adresse
angesprochen werden sollen (Wertebereich 0...65535).
Hinweis
Das Lesen (BRCV) und Schreiben (BSEND) einzelner Bits (Format X) ist möglich. Weiterhin
ist das Lesen und Schreiben von Feldern einzelner Bits ohne Einschränkung der Beginn-Bit-
Adresse und beliebiger Feldlänge innerhalb des Datenblockes möglich.
Beispiel: S7:[S7-OPC-1]BRCV,1,X10.4,78
Hinweis
Bitte beachten Sie folgende Hinweise:
Durch die optionale Angabe von Typ, Adresse und Anzahl können Sie strukturiert auf
Teilbereiche von Datenblöcken zugreifen.
Variablen für Sendedaten oder Empfangsdaten mit unterschiedlicher Länge oder
unterschiedlicher RID oder unterschiedlichem Verbindungsnamen verfügen über
unabhängige Speicherbereiche.
Der Sendedatenpuffer wird allokiert und mit Null initialisiert, wenn ein Item für einen
unabhängigen Speicherbereich angelegt wird. Ein Schreibauftrag auf ein BSEND-Item
wird in einen internen Schreibpuffer geschrieben und übertragen.
Die Übertragung der Datenblöcke erfolgt azyklisch. Parallele Netzaufträge für die
gleichen Daten sind möglich. Es wird immer der vollständige Sendedatenblock
übertragen. Dies gilt auch bei Subelementzugriff oder wenn mehrere Clients gleichzeitig
dieses Item beschreiben.
Ein paralleles Schreiben des gleichen Sendedatenblocks oder von Teilbereichen des
Sendedatenblocks durch mehrere Clients kann zu Inkonsistenzen führen. Es wird
deshalb empfohlen,
– immer den vollständigen Datenblock zu lesen oder zu schreiben,
– in NCM S7 ist die "Maximale Anzahl paralleler Netzaufträge" auf "Eins" zu setzen, was
jedoch die Übertragungsleistung reduziert.
Doppelwort übertragen
S7:[S7-OPC-1]BSEND16,1,D2
BSEND16,1,D2
In einem Datenblock der Länge 16 mit der RID 1 wird ab Offset 2 ein Doppelwort adressiert.
Wird ein Schreibbefehl auf die Variable angewendet, so wird der geschriebene Wert an der
angegebenen Position im Block eingetragen und der Datenblock wird gesendet.
Fließkommazahlen übertragen
S7:[S7-OPC-1]BSEND32,1,REAL20,2
BSEND32,1,REAL20,2
In einem Datenblock der Länge 32 mit der RID 1 wird ab Offset 20 ein Feld mit
Fließkommazahlen adressiert. Wird ein Schreibbefehl auf die Variable angewendet, so wird
der geschriebene Wert an der angegebenen Position im Block eingetragen und der
Datenblock wird gesendet.
S7-spezifische Informationsvariablen
Syntax:
S7:[<Verbindungsname>]<Informationsvariable>
Erklärungen
S7
S7-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
<Informationsparameter>
Mögliche Werte sind:
&identify()
Herstellerattribute eines Kommunikationspartners.
&vfdstate()
Zustand eines virtuellen Geräts.
Datentyp: VT_ARRAY of VT_VARIANT mit folgenden Komponenten:
logischer Status
Dienste, die unterstützt werden.
Rückgabewert:
● S7_STATE_CHANGES_ALLOWED
alle Dienste sind zulässig
physikalischer Status
Einsatzbereitschaft des realen Geräts
Rückgabewerte:
● S7_OPERATIONAL
das reale Gerät ist einsetzbar
● S7 NEEDS COMMISSIONING
das reale Gerät ist erst nach dem Abschluss lokaler Eingriffe einsetzbar
&statepath()
Zustand einer Kommunikationsverbindung zu einem Partnergerät.
Rückgabewerte:
● DOWN
Verbindung ist nicht aufgebaut
● UP
Verbindung ist aufgebaut
● RECOVERY
Verbindung wird aufgebaut
● ESTABLISH
(für zukünftige Erweiterungen reserviert)
&statepathval()
Zustand einer Kommunikationsverbindung zu einem Partnergerät.
Rückgabewerte:
● 1
Verbindung ist nicht aufgebaut
● 2
Verbindung ist aufgebaut
● 3
Verbindung wird aufgebaut
● 4
(für zukünftige Erweiterungen reserviert)
&identify()
kann beispielsweise folgende Werte zurückgeben:
● Hersteller: SIEMENS AG
● Modell des virtuellen Geräts: 6ES7413-1AE0-0AB0
● Revision: V1.0
Syntax
S7:[<Verbindungsname>]<Diagnosevariable>
Diagnosevariable Beschreibung
&vfd() Name des OPC-Servers, dem die Verbindung zugeordnet ist. Üblicherweise hat dieses bei
NCM-projektierten Verbindungen den Text "OPC Server".
Datentyp VT_BSTR, nur lesbar.
&cp() Name der Schnittstellenparametrierung, dem die Verbindung zugeordnet ist.
Datentyp VT_BSTR, nur lesbar.
&remoteaddress() Adresse des Verbindungspartners.
Datentyp VT_BSTR, nur lesbar.
Die Adresse des Verbindungspartners ist ein Datenpuffer mit einer vom Verbindungstyp
abhängigen Datenlänge. Für die übersichtlichere Auswertung durch den Anwender wird der
Datenpuffer formatiert in einem String dargestellt.
Profibus-Adresse
Format: "ddd" (1-3 dezimale Ziffern)
IP-Adresse (ISOonTCP)
Format: "[Link]" (je 1-3 dezimale Ziffern)
MAC-Adresse (ISO)
Format: "xx-xx-xx-xx-xx-xx" (je 2 hexadezimale Ziffern)
&localsap() Lokaler SAP der Verbindung.
Datentyp VT_BSTR, nur lesbar.
Der lokale SAP des Verbindungspartners ist ein Datenpuffer mit einer vom Verbindungstyp
abhängigen Datenlänge. Für die übersichtlichere Auswertung durch den Anwender wird der
Datenpuffer formatiert in einem String dargestellt.
Format: "[Link] " (je 2 hexadezimale Ziffern)
&remotesap() Remoter SAP der Verbindung.
Datentyp VT_BSTR, nur lesbar.
Der remote SAP des Verbindungspartners ist ein Datenpuffer mit einer vom Verbindungstyp
abhängigen Datenlänge. Für die übersichtlichere Auswertung durch den Anwender wird der
Datenpuffer formatiert in einem String dargestellt.
Format: "[Link] " (je 2 hexadezimale Ziffern)
&connect() Art des Verbindungsaufbaus.
Datentyp VT_UI4, nur lesbar.
0 Passiv, Verbindung wird permanent aufrecht erhalten.
1 Aktiv, Verbindungsaufbau wird erst bei Bedarf hergestellt, Verbindungsabbau ohne
Benutzung nach Wartezeit.
2 Aktiv, Verbindung wird permanent aufrecht erhalten.
Diagnosevariable Beschreibung
&abortconnectionafter() Automatischer Verbindungsabbau.
Verzögerungszeit für den automatischen Verbindungsabbau: Der OPC-Server baut die
Verbindung nach dieser Zeit selbständig wieder ab, sofern in dieser Zeit kein erneuter
Variablenzugriff erfolgt.
Auf diese Weise können bei Zugriffen auf Variablen in sehr großen Zeitabständen die
Anzahl der benötigten Verbindungen reduziert werden.
Datentyp VT_UI4, nur lesbar.
0: kein Abbau
>0: Leerlaufzeit bis zum Abbau in ms
&optimizes7read() Lesezugriffe für S7-Bausteinzugriff werden optimiert.
Datentyp VT_BOOL, nur lesbar.
"True": Optimierung
"False": keine Optimierung
Optimierung bedeutet: Mehrere Zugriffsaufträge auf einzelne Variablen werden intern in
einen einzigen Feldzugriff auf den Kommunikationspartner umgewandelt.
&optimizes7write() Schreibzugriffe für S7-Bausteinzugriff werden optimiert.
Datentyp VT_BOOL, nur lesbar.
"True": Optimierung
"False": keine Optimierung
Optimierung bedeutet: Mehrere Zugriffsaufträge auf einzelne Variablen werden intern in
einen einzigen Feldzugriff auf den Kommunikationspartner umgewandelt.
&autopasswordreset() Automatisches Rücksetzen des S7-Passworts zum Bausteinzugriff
Datentyp VT_BOOL, nur lesbar.
"True": Rücksetzen aktiviert
"False": Rücksetzen deaktiviert
In einer S7 bleibt eine Freischaltung der Domaindienste durch Passwort bis zu einem
expliziten Rücksetzen aktiviert. Ein automatisches Rücksetzen des Passworts bei
Verbindungsaufbau sorgt besonders im Zusammenwirken mit dem automatischen
Verbindungsabbau nach unbenutzter Zeit dafür, dass das Passwort nicht unnötig lange
freigegeben wird.
&fastconnectionstate- Schnelle Rückgabe eines Schreib/Lesezugriffs bei unterbrochener Verbindung.
returnenable() Datentyp VT_BOOL, nur lesbar.
"True": aktiviert
"False": deaktiviert
&connecttimeout() Verbindungsaufbau-Timeout
Datentyp VT_UI4, nur lesbar
0: kein Timeout
>0: Timeout in ms
&timeout() Auftrags-Timeout für Produktivaufträge in der S7-Kommunikation.
Datentyp VT_UI4, nur lesbar
0: kein Timeout
>0: Timeout in ms
Diagnosevariable Beschreibung
&receivecredit() Maximale Anzahl paralleler Netzaufträge, Empfangsrichtung
Vorschlagswert für Verbindungsaufbau
Datentyp VT_UI2, Nur lesbar
>=1, Vorschlagswert für Verbindungsaufbau
&tradedreceivecredit() Anzahl paralleler Protokollaufträge, Empfangsrichtung ausgehandelt nach
Verbindungsaufbau.
Datentyp VT_UI2, nur lesbar
Ist die Verbindung unterbrochen, so ist die Qualität dieser Variablen "BAD".
&sendcredit() Maximale Anzahl paralleler Netzaufträge, Senderichtung
Vorschlagswert für Verbindungsaufbau
Datentyp VT_UI2, nur lesbar
>=1, Vorschlagswert für Verbindungsaufbau
Wird gemeinsam mit &receivecredit() über die Projektierung eingestellt.
&tradedsendcredit() Anzahl paralleler Protokollaufträge, Senderichtung ausgehandelt nach Verbindungsaufbau.
Datentyp VT_UI2, nur lesbar
Ist die Verbindung unterbrochen, so ist die Qualität dieser Variablen "BAD".
&pdusize() Größe der Protokoll-PDU
Vorschlagswert für Verbindungsaufbau
Datentyp VT_UI2, Nur lesbar
>=1, Vorschlagswert für Verbindungsaufbau
&tradedpdusize() Größe der Protokoll-PDU, ausgehandelt nach Verbindungsaufbau.
Datentyp VT_UI2, nur lesbar
Ist die Verbindung unterbrochen, so ist die Qualität dieser Variablen "BAD".
&defaultalarmseverity() Vorgegebene Alarmseverity für unprojektierte Alarmereignisse.
Datentyp VT_UI2, nur lesbar
1: niederprior
…
1000: hochprior
In der Projektierung gibt es eine Einstellmöglichkeit für Vorgabe-Priorität von Meldungen für
S7-Meldungen und S7-Diagnosemeldungen.
&defaultdiagnosisseverity() Vorgegebene Alarmseverity für unprojektierte Diagnoseereignisse.
Datentyp VT_UI2, Nur lesbar
1: niederprior
…
1000: hochprior
In der Projektierung gibt es eine Einstellmöglichkeit für Vorgabe-Priorität von Meldungen für
S7-Meldungen und S7-Diagnosemeldungen.
&events() Anmeldung von Alarmen und Events beim Verbindungspartner.
Datentyp VT_UI4, nur lesbar.
Die einzelnen Werte können kombiniert werden.
0x00000001 SCAN-Item (nicht mehr unterstützt)
0x00000002 Einfache Meldungen (nicht mehr unterstützt)
0x00000004 Einfache symbolbezogen Meldungen (nicht mehr unterstützt)
0x00000008 Simotion TO-Alarme
Diagnosevariable Beschreibung
0x00000010 Verbindungsüberwachungs-Meldungen
0x00000020 Bausteinbezogene Meldungen (als Conditional Events)
0x00000040 Symbolbezogene Meldungen (als Conditional Events)
0x00000080 Diagnosemeldungen
&connectiontype() S7-Verbindungstyp
Datentyp VT_UI2, nur lesbar
2:S7D_STD_TYPE; Standardverbindung
3:S7D_H_TYPE; hochverfügbare Verbindung
Ist die S7-Verbindung noch nicht aufgebaut, wird für dieses Item die Qualität "BAD"
gemeldet und die Werte sind ungültig.
&connectionstate() S7-Verbindungszustand
Datentyp VT_UI2, nur lesbar
0x11:STD_DOWN; Standardverbindung ist gewollt abgebaut
0x12:STD_ABORT; Standardverbindung wurde ungewollt abgebaut (Fehler)
0x13:STD_NOT_USED; Standardverbindung noch nie aufgebaut
0x14:STD_OK; Standardverbindung aufgebaut
0x20:H_OK_RED; hochverfügbare Verbindung aufgebaut (redundant)
0x21:H_OK_RED_PATH_CHG; hochverfügbare Verbindung aufgebaut (redundant, es
wurde umgeschaltet)
0x22:H_OK_NOT_RED; hochverfügbare Verbindung nicht redundant aufgebaut
0x23:H_ABORT; hochverfügbare Verbindung wurde ungewollt abgebaut (Fehler)
0x24:H_NOT_USED; hochverfügbare Verbindung noch nie aufgebaut
0x25:H_DOWN; hochverfügbare Verbindung ist gewollt abgebaut
Die Datenvariable unterscheidet sich von der &statepath()-Variable dahingehend, dass sie
den Verbindungszustand aus Sicht des Protokollstacks wiedergibt und dabei zusätzliche
Informationen für die für den OPC-Server transparent benutzten redundanten H-
Verbindungen liefert.
&hconnectionwaystate() Zustand der H-Verbindungswege
Datentyp VT_ARRAY | VT_UI2
Die Werte beschreiben jeweils den Zustand eines Weges der H-Verbindung.
0x30:HW_PROD; Weg ist Produktivverbindung
0x31:HW_STBY; Weg ist Standby-Verbindung
0x32:HW_ABORT; Weg wurde ungewollt abgebaut (Fehler)
0x33:HW_NOT_USED; Weg wurde noch nie aufgebaut
0x34:HW_DOWN; Weg wurde gewollt abgebaut
0x35:HW_CN_BREAK; Weg konnte nicht aufgebaut werden
Ist die S7-Verbindung noch nicht aufgebaut, wird für dieses Item die Qualität "BAD"
gemeldet und die Werte sind ungültig.
Hinweis
Der in STEP 7 projektierte Verbindungsname darf nicht "SYSTEM" heißen, da dies ein
reservierter Bezeichner ist.
&version()
Liefert eine Versionskennung für den S7 OPC-Server, hier die Zeichenfolge, z.B.
SIMATIC NET Core Server S7 V [Link] Copyright 2010
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
S7:[SYSTEM]&sapiversion()
&sapiversion()
Liefert eine Versionskennung der SAPI S7-Anwenderschnittstelle.
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
2.5.7 Bausteindienste
Bausteindienste steuern die Übertragung und Rückübertragung von Daten- und
Programmelementen zwischen PC und Automatisierungsgerät. Auf dem PC werden Daten-
und Programmelemente in Dateien gespeichert. Bausteindienste können mit einem
Passwort geschützt werden.
Bausteine
Daten und Programmelemente werden auf S7-Automatisierungsgeräten in Bausteinen
abgelegt. Diese Bausteine werden mit Hilfe von STEP 7 generiert und auf das S7-Gerät
übertragen. Bei S7-Geräten gibt es folgende Bausteine:
● Organisationsbausteine
● Funktionsbausteine
● Datenbausteine (DB / DI)
● Bausteine einketten
● Speicher des Automatisierungsgeräts komprimieren
Hinweis
Die Erstellung von Bausteinen ist nicht mit dem OPC-Server möglich, Sie müssen
STEP 7 verwenden.
Syntax
S7:[<Verbindungsname>]<Diensteparameter>
Erklärungen
S7
S7-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
<Diensteparameter>
Diese Variablen sind nur schreibbar. Durch das Schreiben eines Wertes wird der Dienst
ausgelöst.
Mögliche Werte sind:
&blockread()
Baustein von einem Automatisierungsgerät wird auf den PC übertragen und dort in einer
Datei abgelegt.
Der geschriebene Wert enthält die Parametrierung des Dienstes. Er wird als Array of Variant
mit folgenden Elementen dargestellt:
Flags
Folgende hexadezimale Zahlen sind möglich:
0x0001 Ein nicht eingeketteter Block wird gelesen. Wenn eine Zieldatei besteht, wird diese
nicht überschrieben, es wird eine Fehlermeldung ausgegeben.
0x0040 Ein eingeketteter Block wird gelesen. Wenn eine Zieldatei besteht, wird diese nicht
überschrieben, es wird eine Fehlermeldung ausgegeben.
0x1001 Ein nicht eingeketteter Block wird gelesen. Eine schon vorhandene Zieldatei wird
überschrieben.
0x1040 Ein eingeketteter Block wird gelesen. Eine schon vorhandene Zieldatei wird
überschrieben.
Block
Bausteintyp und Nummer
OB Organisationsbaustein
FB Funktionsbaustein
FC Funktion
DB Datenbaustein
Datei
Vollständiger Pfad der Datei, in der der Baustein abgelegt werden soll
&blockwrite()
Baustein von einem PC auf ein Automatisierungsgerät übertragen. Nach der Übertragung
befindet sich der Baustein auf dem Automatisierungsgerät im passiven (nicht eingeketteten)
Zustand. Mit der Funktion &blocklinkin muss der Baustein vom passiven Zustand in den
eingeketteten Zustand gesetzt werden.
Der geschriebene Wert enthält die Parametrierung dieses Dienstes. Er wird als Array of
Variant mit folgenden Elementen dargestellt:
Flags
Folgende hexadezimale Zahlen sind möglich:
Datei
Vollständiger Pfad der Datei, in der der Baustein abgelegt ist
Hinweis
Die Domain-Dienste blockread() und blockwrite() erlauben keinen Zugriff auf Quell- und
Zieldateien der Bausteine auf einem Netzlaufwerk.
Das Überschreiben (0x1000) eines Blocks ist erst möglich, nachdem der ablaufrelevante Teil
eingekettet wurde.
&blocklinkin()
Baustein vom passiven Zustand in den Programmablauf des Automatisierungssystems
einketten. Dabei wird der ablaufrelevante Teil des Bausteins in den Ablaufspeicher des
Automatisierungssystems kopiert.
Der Baustein ist danach für das Programm auf dem Automatisierungssystem erreichbar.
Durch das Einketten eines Bausteins wird ein bestehender, aktiver Baustein ohne
Fehlermeldung überschrieben.
Der geschriebene Wert erhält als Parametrierung dieses Dienstes die Angabe des Blocks,
der eingekettet werden soll.
Block
Bausteintyp und Nummer.
Folgende Typen sind möglich:
OB Organisationsbaustein
FB Funktionsbaustein
FC Funktion
DB Datenbaustein
Hinweis
Zwischen einem blockwrite() und einem blocklinkin() darf die S7-Verbindung nicht abgebaut
werden, da sonst die Bausteine auf der remoten CPU sofort wieder gelöscht werden. Die
blocklinkin() Funktion funktioniert dann nicht.
&blockdelete()
Löschen eines Bausteins im Automatisierungsgerät. Es können sowohl die passiven, als
auch die in den Programmablauf eingeketteten Bausteine entfernt werden.
Der geschriebene Wert enthält die Parametrierung dieses Dienstes. Er wird als Array of
Variant mit folgenden Elementen dargestellt:
Flags
Folgende hexadezimalen Zahlen sind möglich:
Block
Bausteintyp und Nummer.
Folgende Typen sind möglich:
OB Organisationsbaustein
FB Funktionsbaustein
FC Funktion
DB Datenbaustein
&blockcompress()
Komprimierung des Speichers des Automatisierungsgeräts.
Fragmentierte Speicherbereiche werden zusammengefasst und es entsteht Platz für die
Übertragung neuer Blöcke.
Diese Variable ist nur schreibbar. Durch das Schreiben eines leeren Strings wird der Dienst
ausgelöst.
Hinweis
Einige der folgenden Bausteindienste werden durch den geschriebenen Wert parametriert.
Dabei werden Felder als Datentyp verwendet. Es kann aus Anwendersicht günstig sein,
wenn die Parameter als Wert im Datentyp VT_BSTR übergeben werden. Der OPC-Server
führt selbständig die Konvertierung in den benötigten Datentyp durch. Die Darstellung eines
Feldes in einem String ist beispielsweise: {ErstesElement|ZweitesElement|DrittesElement}.
Beachten Sie dazu auch die Beispiele.
Hinweis
Um den Wert wie in diesem Beispiel anzugeben, muss als Datentyp String angefordert
werden. Der Wert kann dann in der konvertierten Darstellung für Arrays angegeben werden.
Hinweis
Um den Wert wie in diesem Beispiel anzugeben, muss als Datentyp String angefordert
werden. Der Wert kann dann in der konvertierten Darstellung für Arrays angegeben werden.
&blockcompress()
Für die Speicherkomprimierung muss das Item mit einem leeren String beschrieben werden.
2.5.8 Passwörter
Schreibende und lesende Zugriffe von Bausteindiensten auf die CPU können bei der
Projektierung mit einem Passwort versehen werden. Das Passwort hat eine höhere Priorität
als der Schlüsselschalter der CPU.
Schutzstufen
Für S7-Automatisierungssysteme gibt es drei Schutzstufen. Sie werden mit Hilfe von STEP 7
aktiviert:
● Schutz durch die Stellung des Schlüsselschalters
● Schreibschutz
● Schreib- und Leseschutz
Wenn das richtige Passwort übermittelt wird, werden alle Schutzstufen für diese Verbindung
aufgehoben. Wenn ein leerer String als Passwort übermittelt wird, wird die Schutzfunktion für
die Verbindung wieder aktiv.
Die Schutzstufe von zweiseitig projektierten Verbindungen kann in der Projektierung
vorbelegt werden. Wird der Schutz für zweiseitige Verbindungen nicht durch die
Projektierung aktiviert, sind auf diesen Verbindungen alle Dienste selbst in
Schlüsselschalterstellung RUN möglich.
Für einseitig projektierte Verbindungen besteht eine Abhängigkeit von der
Schlüsselschalterstellung. Die folgende Tabelle zeigt die Abhängigkeit zwischen
Passwortübertragung und Schutzstufe bei einseitig projektierten Verbindungen.
Legende:
Alles = alle Dienste ausführbar
Lesen = nur Baustein lesen
Keine = keine Bausteindienste erlaubt
Syntax
S7:[<Verbindungsname>]&password()
Erklärungen
S7
S7-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
&password()
Kennzeichen für den Passwort-Dienst.
Die Übermittlung des Passworts wird durch das Schreiben eines Wertes ausgelöst.
Das Passwort kann in folgenden Darstellungen übermittelt werden:
● Octettstring
String mit den hexadezimalen Codes der einzelnen Zeichen des Passworts, getrennt
durch einen Punkt (maximal 8 Zeichen)
● String
Beliebiger, alphanumerischer String, eingeleitet durch das Zeichen "&" (maximal 8
Zeichen)
2.5.9 Server-Dienste
Zugriff auf DB 1
Die PC-Station mit einem aktiven OPC-Server für das S7-Protokoll stellt einen S7-
Datenbaustein zum Lesen und Schreiben zur Verfügung und wird damit zum S7-Server. Mit
PUT- und GET- Funktionsbausteinen können S7-Stationen in ihrem Programm den
Datenbaustein der PC-Station beschreiben oder lesen. Der Verbindungsaufbau ist beidseitig
möglich.
Der Datenbaustein (DB 1) hat eine Größe von 65535 Byte. Symbolische Namen und eine
Strukturierung des Datenbausteins nach Variablen bestehen nicht. Die Nummer des
Datenbaustein kann von remote und auch lokal, z. B. von einem SIMATIC NET OPC-Server
mit OPC Scout, abgefragt und beim Durchsuchen des Namensraums angezeigt werden.
Es wird nur ein Datenbaustein zur Verfügung gestellt. Keine Merker, Ein-, Ausgänge, Zähler
oder Timer. Eine Projektierung oder das Laden des Bausteins ist nicht erforderlich.
Über eine lokale S7-Verbindung @LOCALSERVER kann ein OPC-Client (z. B. der OPC
Scout) die Werte des Datenbausteins lesen oder beschreiben. Der OPC-Client kann zudem
den Datenbaustein beobachten und sich über Datenänderung benachrichtigen lassen.
Wenn mehrere Clients gleichzeitig versuchen die selben Datenbereiche zu beschreiben,
wird sichergestellt, dass jeder Auftrag nacheinander vollständig ausgeführt wird
(Datenkonsistenz bei Parallelzugriff).
Nach Neuanlauf der PC-Station bleiben die Werte im Datenbaustein erhalten
(Datenpermanenz).
Hinweis
Um die S7-Server-Dienste zu betreiben, muss ein lokaler OPC-Client auf der PC-Station mit
S7-Items aktiv sein. Falls ein Verbindungsaufbau nach Bedarf in NCM projektiert ist, müssen
die S7-Items die S7-Verbindung beinhalten, über welche der remote Partner Daten lesen
oder schreiben will. Alternativ kann ein permanenter Verbindungsaufbau projektiert werden.
Passive Verbindungen erfordern permanenten Verbindungsaufbau. Dann kann ein
beliebiges S7-Item aktiviert werden, um den S7 OPC-Server zu starten.
PC-Station S7 300-Station
OPC-Client S7-Programm
S7:[@LOCALSERVER]DB1,
B0
PUT
DB2,B0 über
S7-Verbindung_1
nach
C F
DB1,B0
OPC Beobachten
OPC-Server
DB2
DB1
B0 C F C F B0
B1 1 2 S7-Verbindung_1 0 6 B1
Übertragung gesteuert
durch das
S7-Programm
Bild 2-6 Server-Dienst: Seltenes Schreiben (PUT) eines Werts zur Entlastung der S7-Station
PC-Station S7 300-Station
OPC-Client S7-Programm
S7:[S7-Verbindung_1]DB2,B0
C F
OPC Beobachten
OPC-Server
DB2
C F C F B0
0 6 B1
S7-Verbindung_1
Zyklische Abfrage
Bild 2-7 Beobachten durch häufiges zyklisches Lesen eines Werts (pollen); Belastung der S7-
Station
2.5.10 S7 Template-Datenvariablen
Sie haben mit den Prozessvariablen für das S7-Protokoll flexible Einstellmöglichkeiten, um
die Prozessdaten seiner Anlage in den von ihm gewünschten Datenformaten zu erhalten.
Die Vielfalt der Adressierungsmöglichkeiten lässt sich allerdings nicht in einen vollständig
durchsuchbaren Namensraum fassen. Bereits ein Datenbaustein mit der Länge eines
einzelnen Bytes besitzt etwa 40 verschiedene Datenformatoptionen – angefangen vom Byte,
Char, Felder mit einem Element davon, einzelne Bits, Felder von Bits mit bis zu 8
Feldelementen an unterschiedlichen Bitoffsets beginnend.
Der OPC-Server unterstützt den Anwender deshalb mit den sogenannten
Template-Datenvariablen im S7-Namensraum. In einem für einen OPC-Client typischen
Texteingabefeld können diese Templates durch Ändern einiger weniger Zeichen in gültge
ItemIDs verwandelt werden.
Beispiel:
S7:[S7-Verbindung_1]DB<db>,DWORD<o> //Template für ein DWORD eines Datenbausteins
Durch Ersetzen von <db> mit der Bausteinadresse und <o> dem Offset innerhalb des
Datenbausteins erhält der Anwender eine gültige Itemsyntax.
⇒ S7:[S7-Verbindung_1]DB100,d3
Weiteres Beispiel:
S7:[S7-Verbindung_1]bsend<len>,<rid>,x<o>.<bit>,<c> //Template für ein Bitarray,
Blockdienst
⇒ S7:[S7-Verbindung_1]bsend100,21,x0.0,24
Hinweis
Die Verwendbarkeit von S7 Template-Datenvariablen kann im Konfigurationsprogramm
"PC-Station einstellen" unter "OPC-Protokollauswahl" aktiviert und deaktiviert werden.
<Object>:=
"E"| // Eingang
"A"| // Ausgang
"M"| // Merker
"PE"| // Peripherie-Eingang
"PA" // Peripherie-Ausgang
<Typ><o>:=
"X<o>.<bit>" | // Bit <Bit>= Template für die Bit-Adresse
"B<o>" | // Byte (unsigned)
"W<o>" | // Wort (unsigned)
"D<o>" | // Doppelwort (unsigned)
"CHAR<o>" | // Byte (signed)
"INT<o>" | // Wort (signed)
"DWORD<o>" | // Doppelwort (signed)
"REAL<o>"| // Fließkomma 4 Byte
"DT<o>"| // Datum und Uhrzeit, 8 Byte BCD–Format
"DATE<o>"| // Datum und Uhrzeit, 8 Byte, Uhrzeit immer [Link]
"TIME<o>"| // Zeitwert (signed), IEC-Format, in ms
"S5TIMEBCD<o>"| // Zeit-Variable (unsigned, 16 Bit), 0 ... 9990000 ms
"TOD<o>"| // Tageszeit (unsigned), 0 ... 86399999 ms
"STRING<o>.<len>" // Zeichenfolge. <len> ist ein Template für die Stringlänge
<o> // Template für die Adresse der ersten Variablen, dies ist ein Byte-Offset im
Adressbereich.
<c> // Template für die Anzahl der Variablen eines Typs, die ab dem im Parameter Adresse
angegebenen Offset angesprochen werden sollen.
Für Datenbausteine
S7:[<Verbindungsname>]DB<db>,<Typ><o>,<c>
Blockdienste
S7:[<Verbindungsname>]bsend<len>,<rid>,<Typ><o>,<c>
S7:[<Verbindungsname>]brcv,<rid>,<Typ><o>,<c>
<len> // Template für die Länge des Datenblocks in Bytes, der gesendet werden soll.
<RID> // Template für die ID des Adressierungsparameters. Sie ist für ein Bausteinpaar
(BSEND/ BRCV) festgelegt und innerhalb einer Verbindung eindeutig definiert.
S7-Timer
S7:[<Verbindungsname>]TDA<i> // S7-Timer-Variable (Typ TDA):
S7:[<Verbindungsname>]TBCD<i>{,<c>} // S7-Timer-Variable (Typ BCD):
Zähler
S7:[<Verbindungsname>]Z<i>{,<c>} // Zähler, Die Adressangabe <i> ist eine Zählernummer.
Voraussetzungen
Für einen Gerätezugriff ohne Projektierung müssen alle kommunikationsrelevanten Daten
des Partnergeräts bekannt sein. Dazu gehören unter anderem der Verbindungsname, der
Zugangspunkt und die Stationsadresse. Die notwendigen Parameter sind im folgenden
Abschnitt aufgeführt. Achten Sie bei der Wahl des Verbindungsnamens auf Eindeutigkeit
gegenüber bereits projektierten Namen.
Hinweis
Bei der Parametrierung des "Local TSAP" und des "Remote TSAP" wird empfohlen, für
das erste Byte jeweils die gleiche Einstellung zu wählen.
Mode
S7-Verbindungen werden entweder vom OPC-Server oder vom Verbindungspartner aktiv
aufgebaut. Für solche Verbindungen kann außerdem ein optimierter Schreib- bzw.
Lesezugriff eingesetzt werden. Es gibt folgende Werte für Mode:
● 1: Aktiver Verbindungsaufbau des OPC-Servers mit Optimierung
● 3: Aktiver Verbindungsaufbau des OPC-Servers ohne Optimierung
<Datenelement>
Hier wird beispielsweise ein Datenbaustein mit Nummer sowie der Typ (Byte, Wort usw.)
und die Adresse (z. B. Byte-Offset) angegeben. Welche Datenelemente für S7 möglich sind,
ist im Kapitel "S7-Kommunikation (Seite 82)" beschrieben.
Hinweis
Weitere Verbindungsparameter:
Die PDU-Größe kann nicht vorgegeben werden. Es wird die maximale Größe von 960 Byte
beim Verbindungsaufbau vorgeschlagen und damit die maximale mögliche Größe des
Partnergeräts ausgehandelt.
Für die Verbindungsaufbau-Timeouts und Auftrags-Timeouts werden feste Werte (jeweils
15.000ms) verwendet.
Der Vorschlagswert für die maximale Anzahl paralleler Netzaufträge beträgt 2.
Beispiele
S7:[S7-Verbindung 1|VFD1|S7ONLINE|01.00,[Link],02.02,1]DB10,B0
S7:[S7-Verbindung 2|VFD2|S7ONLINE|01.00,65,02.02,1]DB10,B0
S7:[S7-Verbindung 3|VFD3|S7ONLINE|01.00,08.06.05.e4.3a.00,02.02,1]MB0
Zugangspunkt definieren
Rufen Sie das Programm "PC-Station einstellen" auf, um einen Zugangspunkt zu definieren
und einer Schnittstellenparametrierung zuzuordnen:
Nach Doppelklick auf "S7Online" öffnet sich der Dialog "Eigenschaften von S7Online".
Eingaben im Clientprogramm
Rufen Sie ein Clientprogramm auf und legen Sie ein Item gemäß obiger Syntax an. Beim
Programm OPC-Scout öffnen Sie das Eingabefeld zum Einfügen von Items, indem Sie im
rechten Teil des Programmfensters das Kontextmenü "Item hinzufügen" auswählen. Ein
Browsen über die unprojektierte Verbindung ist zu diesem Zeitpunkt erst möglich, wenn die
Items mit der Funktion "Items ab hier neu Einlesen" über die rechte Maustaste aktualisiert
worden sind.
Bild 2-11 Das Fenster "OPC-Navigator" des Programms "OPC-Scout" mit geöffnetem
Kontextmenü "Item hinzufügen"
Item hinzufügen
Geben Sie das Item mit den zuvor beschriebenen Parametern in das Dialogfeld "Item
hinzufügen" ein und klicken Sie die Schaltfläche "Item hinzufügen". Wenn die eingegebene
Syntax korrekt war, erscheint das Item im Namensraum unterhalb des Zweigs "S7".
Nach dem Hinzufügen des Items und solange das Item aktiv ist, kann die Verbindung wie
eine projektierte Verbindung verwendet werden. Sie können also im Namensraum browsen
und auch weitere Items hinzufügen, ohne die Syntax der unprojektierten Verbindung zu
verwenden. Es genügt die Angabe des Verbindungsnamens, zum Beispiel S7:[S7-
Verb_1]MB1.
Mit Hilfe der COML S7-Projektiersoftware können S7-Verbindungen zu einer S7-CPU oder
zu einem PC erstellt werden. Unter jeder Baugruppe in der Konfigurations-Konsole "PC-
Station einstellen" befindet sich die Lasche "COML S7". Wenn Sie auf diese Lasche klicken,
erscheint auf der rechten Seite des Dialog-Fensters die COML S7-Verbindungsliste, über die
Sie gezielt für die ausgewählte Baugruppe S7-Verbindungen zu den Partnergeräten anlegen
können. Die bei der Projektierung entstandenen Daten werden für alle Baugruppen in einer
Datenbasis zusammengefasst und lokal auf dem PC gespeichert. Sie kann zur
Datensicherung exportiert und importiert werden. Danach muss die COML-S7-Projektierung
im Kontextmenü der Ebene "Baugruppen" aktiviert werden, um die angelegten
S7-Verbindungen in den COML S7-Verbindungslisten für eine S7-Kommunikation
verwenden zu können.
Hinweis
Der gleichzeitige Betrieb von projektierten S7-Verbindungen von STEP 7/SIMATIC NCM PC
und COML S7 ist nicht möglich. Sie sind gegenseitig verriegelt.
Nach der Aktivierung von COML S7-Verbindungen wird somit das Laden von S7-
Verbindungen von STEP 7/SIMATIC NCM PC abgelehnt.
Hinweis
Der gleichzeitige Betrieb von projektierten Verbindungen mit unprojektierten Verbindungen
ist nicht möglich. Sie sind gegenseitig verriegelt.
Nach der Aktivierung von projektierten Verbindungen wird der Betrieb von unprojektierten
Verbindungen abgelehnt.
● S7-Passwortfunktionen
Setzen eines Passworts zum Zugriff auf geschützte Bausteine
● Events, Conditions und Alarme
Verarbeitung von S7-Meldungen und S7-Diagnoseereignissen
Einleitung
Der folgende Abschnitt beschreibt eine Konfigurationsvariante für das S7-Protokoll, die auch
OPC UA unterstützt. Hierfür werden die S7-COM OPC-Data-Access-Server als Outproc-
OPC-Server eingerichtet.
Konfiguration
Die Auswahl erfolgt implizit durch das Aktivieren der Optionskästchen "OPC UA" und "S7" im
Konfigurationsprogramm "PC-Station einstellen".
Bild 2-14 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl von OPC UA für das S7-Protokoll
Vorteile / Nachteile
Bei Verwendung des S7-OPC-UA-Servers ist nur der Outproc-Betrieb von S7 möglich. Der
S7-OPC-UA-Server-Prozess muss zum Erhalt der Empfangsbereitsschaft in Betrieb sein.
Ein Beenden des S7-OPC-UA-Servers - auch nach Abmeldung aller OPC-UA-Clients - wird
nicht ausgeführt und darf nicht ausgeführt werden.
Dem stehen folgende Vorteile gegenüber:
● Es ist keine COM/DCOM-Konfiguration mehr nötig.
● Performante, sichere Kommunikation
● Für Ereignisse und Datenzugriffe ist nur noch ein Server erforderlich.
● Nachteil: Ein gleichzeitiger Betrieb des performanten Inproc OPC-DA-S7-Servers ist nicht
möglich.
Server-URL
Für das native binäre TCP-Protokoll gibt es zwei Möglichkeiten der Server-Adressierung:
● Direkte Adressierung:
– [Link]://<hostname>:4845
oder
– [Link]://<IP-Adresse>:4845
oder
– [Link]://localhost:4845
oder
– [Link]:\\.\pipe\locals7
Der S7-OPC-UA-Server hat den Port 4845.
Der performante lokale Pipe-Endpunkt erfordert die Verwendung des SIMATIC NET UA
Stacks im UA-Client. Die Aktivierung des Pipe-Endpunktes kann im
Konfigurationsprogramm "PC-Station einstellen" unter "OPC Protokollauswahl"
durchgeführt werden. Der Pipe-Endpunkt kann nur vom lokalen PC aus erreicht werden.
Der redundante S7-OPC-UA-Server wird von remote über die gemeinsame redundante
IP-Adresse angesprochen.
● Die URL des S7-OPC-UA-Servers kann auch über den OPC-UA-Discovery-Dienst
gefunden werden.
Die Eingabe zum Auffinden des Discovery-Servers lautet:
– [Link]://<hostname>:4840
oder
– [Link]://<IP-Adresse>:4840
oder
– [Link]
oder
– [Link]
Der Discovery-Server hat den Port 4840.
IPv6-Adresse
Für die IP-Adresse kann auch eine IPv6-Adresse verwendet werden. Die Adresse muss in
Klammern angegeben werden, z.B. [fe80::e499:b710:5975:73d8%14]
Bild 2-15 Das Dialogfeld "Endpunkte der UA-Server suchen" des OPC Scout V10
Die Namensraum-Indizes 0 und 1 sind reserviert und in Ihrer Bedeutung von der OPC
Foundation spezifiziert.
Die Zuordnung der restlichen Namensraum-Indizies zu den Bezeichnern (Namenraum-URI)
muss zu Beginn einer OPC-UA-Session vom Client unter Angabe des Bezeichners über die
Datenvariable "NamespaceArray" ermittelt werden. Die Bezeichner S7TYPES: S7: S7COM:
S7AREAS: S7SOURCES: sind beim S7-OPC-UA-Server immer vorhanden.
Die Namensraum-Indizes 0 und 1 sind reserviert und in Ihrer Bedeutung von der OPC
Foundation spezifiziert. Die weiteren Indizes müssen vom Client zur Laufzeit ermittelt
werden.
Beispiele
● NodeID:
– Namensraum-URI:
S7:
(= Namensraum-Index 3) für [Link].S7
– Bezeichner:
S7-Verbindung_1.m.10,b
● NodeID:
– Namensraum-URI:
S7COM:
(= Namensraum-Index 4) für [Link]; die Syntax ist S7-OPC-DA-kompatibel
– Bezeichner:
S7:[S7-Verbindung_1]mb10
Eine nicht interpretierbare NodeID wird mit einem Fehler zurückgewiesen. Die Groß- oder
Kleinschreibung der Buchstaben "A-Z" wird bei allen Items ignoriert.
Symbolische Objektdarstellung
Die OPC-UA-Spezifikation empfiehlt zur hierarchischen Beschreibung des Adressraums eine
einheitliche Symboldarstellung. Folgende Symbole werden in diesem Dokument verwendet:
2EMHFW %DVH2EMHFW7\SH
'DWD7\SH
+DV6XEW\SH
2UJDQL]HV
2I7\SH
$WWULEXWHV
+DV&RPSRQHQW 9DULDEOH
+DV3URSHUW\ 3URSHUW\
+DV&RPSRQHQW
2EMHFW
+DV3URSHUW\
+DV(YHQW6RXUFH
3URSHUW\
+DV&RPSRQHQW
(YHQW2EMHFW
0HWKRG
2.6.6 Verbindungsobjekte
S7-Verbindungs-Objekte
Es gibt folgende S7-Verbindungs-Objekte:
● Produktive S7-Verbindungen
S7-Verbindungen werden zum Datenaustausch zwischen Automatisierungsgeräten
genutzt und im Allgemeinen über STEP 7 projektiert.
● Die DEMO-Verbindung
Sie dient ausschließlich zum Test.
● Die @LOCALSERVER–Verbindung
Sie stellt die lokalen S7-Datenbausteine für die S7-Serverfunktionalität zur Verfügung.
Demo-Verbindung
<Verbindungsobjekt>:= "DEMO"
Unter der Demo-Verbindung mit dem Namen DEMO gibt es Objekte, die einen ähnlichen
Namensraum wie S7-Verbindungen beinhalten. Die Demo-Verbindung ist zum
Kennenlernen des SIMATIC NET OPC-Systems gedacht und kann über die Konfiguration
hinzugeschaltet werden.
ACHTUNG
Die Demo-Verbindung mit dem Namen DEMO darf nicht gleichzeitig mit einer S7-
Verbindung gleichen Namens eingesetzt werden. Eine mit diesem Namen projektierte S7-
Verbindung wird ignoriert, wenn die Demo-Verbindung hinzukonfiguriert wurde.
LocalServer-Verbindung
<Verbindungsobjekt>:= "@LOCALSERVER"
Unter der virtuellen LocalServer-Verbindung mit dem Namen "@LOCALSERVER" gibt es
Datenvariablen, die einen Zugriff auf die lokal vom Server verwalteten Datenbausteine
ermöglichen. Nach der Installation ist nur der Datenbaustein DB1 verfügbar.
Die Syntax der Datenvariablen ist identisch zu den S7-Variablen für Datenbausteine, z.B.:
@LOCALSERVER.DB1.100,B
Die S7-Variablen für Datenbausteine sind weiter unten beschrieben.
Weitere auf einer normalen S7-Verbindung vorhandene Datenvariablen und Methoden wie
z.B. Statepath, Block- oder Domain-Dienste gibt es nicht.
ACHTUNG
Der Verbindungsname "@LOCALSERVER" ist reserviert und darf niemals als Name einer
S7-Verbindung eingesetzt werden.
[Link] Verbindungsnamen
Verbindungstypen
Der OPC-Server unterstützt folgende Verbindungstypen:
● S7-Verbindung
● S7-Verbindung hochverfügbar
69HUELQGXQJ 6&RQQHFWLRQ7\SH
6$ODUP7\SH
6'LDJQRVLV(YHQW7\SH
VWDWHSDWK 66WDWHSDWK7\SH
66WDWHSDWK$ODUP7\SH
VWDWHSDWK
0XOWLVWDWH'LVFUHWH7\SH
YIGVWDWH 6WULQJ>@
LGHQWLI\ 6WULQJ>@
SDVVZRUG ,QSXW$UJV
EORFNUHDG ,QSXW$UJV
EORFNZULWH ,QSXW$UJV
EORFNOLQNLQ ,QSXW$UJV
EORFNGHOHWH ,QSXW$UJV
EORFNFRPSUHVV ,QSXW$UJV
Im OPC-UA-Namensraum für Objekte werden Instanzen dieses Typs angezeigt. Der Typ
selbst kann unter "Typen" strukturiert ausgelesen werden.
[Link] S7-Verbindungs-Informationsobjekte
Erklärungen
<Informationsparameter>:= "identify"|"vfdstate"|"statepath"
Bausteine
Daten und Programmelemente werden auf S7-Automatisierungsgeräten in Bausteinen
abgelegt. Diese Bausteine werden mit Hilfe von STEP 7 generiert und auf das S7-Gerät
übertragen. Bei S7-Geräten gibt es folgende Bausteine:
● Organisationsbausteine (OB)
● Funktionsbausteine (FB)
● Funktionen (FC)
● Datenbausteine (DB / DI)
● Bausteine einketten
● Speicher des Automatisierungsgeräts komprimieren
Hinweis
Die Erstellung von Bausteinen ist nicht mit dem OPC-Server möglich. Hierzu müssen Sie
STEP 7 verwenden.
Parameter Bedeutung
password() Passwort für Domain-Dienste an Partnergerät übertragen
InputArgument1: "password"; Datentyp: ByteString; WriteOnly
Um das Passwort an den Verbindungspartner zu übertragen, muss als Passwortargument eine
entsprechende Zeichenfolge übergeben werden. Für die Zeichenfolge gibt es zwei Möglichkeiten
"" (leere Zeichenfolge) Passwort wird zurückgesetzt
<bytestring(8)> Passwort in Bytestring-Darstellung (Feld von 8 Byte)
blockread() Ein Baustein von einem Automatisierungsgerät wird auf den PC übertragen und dort in einer Datei
abgelegt:
InputArgument1: "flags", Datentyp UInt32
InputArgument2: "block", Datentyp String
InputArgument3: "filename"; Datentyp: String
Parameter Bedeutung
Flags Flags
<unsigned32> Folgende hexadezimale Zahlen sind möglich:
0x0001
Ein nicht eingeketteter Block wird gelesen. Wenn eine Zieldatei
besteht, wird diese nicht überschrieben. Eine Fehlermeldung wird
ausgegeben.
0x0040
Ein eingeketteter Block wird gelesen. Wenn eine Zieldatei besteht,
wird diese nicht überschrieben. Eine Fehlermeldung wird
ausgegeben.
0x1001
Ein nicht eingeketteter Block wird gelesen. Eine schon vorhandene
Zieldatei wird überschrieben.
0x1040
Ein eingeketteter Block wird gelesen. Eine schon vorhandene
Zieldatei wird überschrieben.
Bausteintyp und Nummer:
"OB"<unsigned16>|"FB"<unsigned16>|
"FC"<unsigned16>|"DB"<unsigned16>
Vollständiger Pfad der Datei, in der der Baustein abgelegt ist:
<string(511)>
blockwrite() Ein Baustein von einem PC wird auf ein Automatisierungsgerät übertragen. Nach der Übertragung
befindet sich der Baustein auf dem Automatisierungsgerät im passiven (nicht eingeketteten)
Zustand. Mit der Funktion &blocklinkin muss der Baustein vom passiven Zustand in den
eingeketteten Zustand gesetzt werden.
InputArgument1: "flags", Datentyp UInt32
InputArgument2: "filename", Datentyp String
Flags Flags
<unsigned32> Folgende hexadezimale Zahlen sind möglich:
0x1000
Ein auf dem Automatisierungssystem bestehender nicht
eingeketteter Baustein gleichen Namens soll überschrieben
werden.
0x0000
Ein auf dem Automatisierungssystem bestehender nicht
eingeketteter Baustein gleichen Namens soll nicht überschrieben
werden.
Vollständiger Pfad der Datei, in welcher der Baustein abgelegt ist.
Datentyp <string(511)>
blocklinkin() Baustein vom passiven Zustand in den Programmablauf des Automatisierungssystems einketten.
Dabei wird der ablaufrelevante Teil des Bausteins in den Ablaufspeicher des
Automatisierungssystems kopiert.
Der Baustein ist danach für das Programm auf dem Automatisierungssystem erreichbar. Durch das
Einketten eines Bausteins wird ein bestehender, aktiver Baustein ohne Fehlermeldung
überschrieben.
Der geschriebene Wert erhält als Parametrierung dieses Dienstes die Angabe des Blocks, der
eingekettet werden soll.
InputArgument1: "block" Datentyp String
Parameter Bedeutung
Bausteintyp und Nummer:
"OB"<unsigned16>|"FB"<unsigned16>|
"FC"<unsigned16>|"DB"<unsigned16>
blockdelete() Baustein in einem Automatisierungsgerät löschen
InputArgument1: "flags" Datentyp UInt32
InputArgument2: "block" Datentyp String
Flags Flags
Datentyp VT_BSTR Folgende hexadezimale Zahlen sind möglich:
<unsigned32> 0x0001
Ein nicht eingeketteter Block wird gelöscht.
0x0040
Hinweis
Die Baustein-Dienste "blockread" und "blockwrite" erlauben keinen Zugriff auf Quell- und
Zieldateien der Bausteine auf einem Netzlaufwerk.
Das Überschreiben (0x1000) eines Blocks ist erst möglich, nachdem der ablaufrelevante Teil
eingekettet wurde.
Passwörter
Schreibende und lesende Zugriffe von Bausteindiensten auf die CPU können bei der
Projektierung mit einem Passwort versehen werden. Das Passwort hat eine höhere Priorität
als der Schlüsselschalter der CPU.
Zu Passwörtern und Schutzstufen siehe Kapitel "Passwörter (Seite 110)".
2.6.8 Variablendienste
[Link] Variablendienste
Klassische Syntax
Es gibt drei Möglichkeiten:
● <Verbindungsname>.<S7Objekt>.<Adresse>{,{<S7Typ>}{,<Anzahl>}}
● <Verbindungsname>.<S7TimerObjekt>.<Adresse>
{,{<S7TimerTyp>}{,<Anzahl>}}
● <Verbindungsname>.<S7CounterObjekt>.<Adresse>,
{,{<S7CounterTyp>}{,<Anzahl>}}
Erklärungen
Namensraum-URI: S7: (Namensraum-Index: 3)
Namensraum-URI für "[Link].S7"
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
Das folgende Trennzeichen ist der Punkt (".").
<S7Objekt>
Angabe des Bereichstyps in der S7. Mögliche Werte sind:
Parameter Bedeutung
db<Nr> Datenbaustein oder Instanzdatenbaustein. Kennzeichen für eine S7-Variable
aus einem Datenbaustein. Instanzdatenbausteine unterscheiden sich in der
S7-Kommunikation nicht von normalen Datenbausteinen. Deshalb kann auf
die Vergabe einer zusätzlichen Kennung zur Vereinfachung verzichtet werden.
<Nr>
Nummer des Datenbausteins oder Instanzdatenbausteins ohne führende
Nullen.
m Merker
i Eingang
Schreib- und lesbar
Es gibt vereinfachend nur diese englische Bezeichnung.
q Ausgang
Schreib- und lesbar
Es gibt vereinfachend nur diese englische Bezeichnung.
pI Peripherie-Eingang
Nur lesbar.
Es gibt vereinfachend nur diese englische Bezeichnung.
pq Peripherie-Ausgang
Nur schreibbar.
Es gibt vereinfachend nur diese englische Bezeichnung.
<S7TimerObjekt>
Parameter Bedeutung
t Timer. Wort (unsigned).
Die folgende Adressangabe ist eine Timernummer.
<S7CounterObjekt>
Parameter Bedeutung
c Zähler. Wort (unsigned).
Die folgende Adressangabe ist eine Zählernummer.
<Adresse>
Byte-Adresse der ersten Variablen, die angesprochen werden soll. Es werden keine
führenden Nullen (z.B. 001) unterstützt.
Der Wertebereich für die Byte-Adresse ist 0...65534. Geräte- und typabhängig kann der
tatsächlich verwendbare Wert der Adresse geringer sein.
<S7Typ>
S7-Datentyp
Ein S7-Datentyp wird im OPC-UA-Server in den entsprechenden OPC-UA-Datentyp
umgewandelt. Die folgende Tabelle listet den Typ-"Bezeichner" und den entsprechenden
OPC-UA-Datentyp auf, in dem der Variablenwert dargestellt werden kann.
*) Siehe nachfolgende Tabelle "Zeitraster und Wertebereich für den S7-Datentyp s5btcd"
Die Datentypen "c", "i", "di" und "r" können in einem Datenbaustein (db) oder einem
Instanzdatenbaustein verwendet werden, für Merker (m), für Eingänge (i), für Ausgänge (q),
für Peripherieeingänge (pi) und für Peripherieausgänge (pq).
Zeitraster und Wertebereich für den S7-Datentyp s5tbcd:
Der Wertebereich der Zeit-Variable vom Datentyp s5tbcd ist BCD-kodiert. Der Wertebereich
ergibt sich entsprechend der folgenden Tabelle:
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bedeutungssymbol 0 0 x x z z z z z z z z z z z z
Erläuterung:
Bedeutungssymbol "0" nicht relevant
Bedeutungssymbol "x" Angabe des Zeitrasters
Bit 13 und 12 Zeitraster in Sekunden
00 0,01
01 0,1
10 1
11 10
Bedeutungssymbol "z" BCD-kodierter Zeitwert (0...999)
Beispiel:
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Wert 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1
Bit 0-11 legen die Zahl 075 fest. Bit 12 und 13 legen das Zeitraster 0,1 fest.
75 * 0,1 = 0,75 Sekunden
Der OPC-Datentyp der Zeit-Variable vom Datentyp s5tbcd ist ein Wort (unsigned, UInt16).
Beim Schreiben ist der Wertebereich entsprechend eingeschränkt.
<S7TimerTyp>
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bedeutungssymbol 0 0 x x z z z z z z z z z z z z
Erläuterung:
Bedeutungssymbol "0" nicht relevant
Bedeutungssymbol "x" Angabe des Zeitrasters
Bit 13 und 12 Zeitraster in Sekunden
00 0,01
01 0,1
10 1
11 10
Bedeutungssymbol "z" BCD-kodierter Zeitwert (0...999)
Beispiel:
Bit-Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Wert 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1
Bit 0-11 legen die Zahl 075 fest. Bit 12 und 13 legen das Zeitraster 0,1 fest.
75 * 0,1 = 0,75 Sekunden
Mit der einfachen Timer-Variable vom Typ "t" lassen sich Timer zwar einfach bedienen. Es
sind aber nicht alle möglichen Kombinationen von Zeitraster und Wertebereich einstellbar,
da die Wertebereiche überlappen dürfen. Für diesen Fall kann die S7-Timer-Variable vom
Typ "tda" (Decimal Array) verwendet werden.
Datentyp: Feld von zwei Worten {Zeitraster in Millisekunden als UInt16 | Zeitwert UInt16}.
Tabelle 2- 2 Wertebereich
Bei dem Objekt TDA ist keine Eingabe der <Anzahl> möglich.
Beispiel:
Beschreiben des Timers "T.3", "tda" mit Wert {100|50} initialisiert den Timer 3 mit dem Wert
50 * 100 ms = 5000 ms und dieser taktet 50 mal in 100-ms-Stufen herunter.
Mit den Typen "t" und "tbcd" ist diese Einstellung nicht möglich.
<S7CounterTyp>
c UInt16 Zähler
Wertebereich für S7: 0…999, dezimal kodiert
Wird als Defaultwert verwendet, falls kein <S7CounterTyp>
angegeben ist.
<Anzahl>
Anzahl der Variablen eines Typs, die ab dem im Parameter "Adresse" angegebenen Offset
angesprochen werden sollen (Wertebereich 1...65 535).
Die Angabe einer Anzahl von Arrayelementen führt immer zur Bildung eines Feldes vom
entsprechenden Typ, auch wenn nur ein einziges Feldelement adressiert wird.
Das Trennzeichen ist ein Komma (",").
Beim Datentyp "x" ist die Eingabe der Anzahl für Schreibzugriff nur in Vielfachen von 8
möglich. Die Bit-Adresse muss dann Null sein.
Beim Datentyp "x" ist die Eingabe der Anzahl für Lesezugriff nicht eingeschränkt. Der
Wertebereich der Bit-Adresse erlaubt dann 0...7.
Bei dem Objekt TDA ist keine Eingabe der <Anzahl> möglich.
Beispiele:
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-OPC-1.db1.10,x0,64, Zugriffsrechte RW
S7-OPC-1.db1.10,x3,17, Zugriffsrechte R
Datenbaustein DB Einzel-Byte
Namensraum-URI: S7: (Namensraum-Index: 3) // für [Link].S7
S7-Verbindung-1.DB5.12,B
bezeichnet Datenbyte 12 im Datenbaustein 5 über S7-Verbindung-1.
Eingang 0
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.i.0
bezeichnet das Eingangsbyte 0 über S7-Verbindung-1.
Ausgang 0 Bit 0
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.q.0,x0
bezeichnet in Ausgangsadresse 0 das Bit 0 über S7-Verbindung-1.
Timer 22 BCD-kodiert
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.t.22
bezeichnet Timer 22, TBCD-Default über S7-Verbindung-1.
ACHTUNG
Blockorientierte Dienste können nur bei zweiseitigen Verbindungen verwendet werden. Die
erstellte Verbindungsprojektierung muss in das S7-Automatisierungsgerät geladen werden.
Vereinfachte Syntax
Vereinfachte Syntax der Prozessvariablen S7-OPC-UA-NodeID:
Namensraum-URI: S7: (Namensraum-Index: 2) für "[Link].S7"
Klassische Syntax
Es gibt zwei Möglichkeiten:
● <Verbindungsname>.brcv<rid>.<Adresse>{,{<S7Typ>}{,<Anzahl>}}
● <Verbindungsname>.bsend<rid>.<Pufferlänge>.<Adresse>{,{<S7Typ>}
{,<Anzahl>}}
Erklärungen
● Wenn ein Item für einen unabhängigen Speicherbereich angelegt wird, dann wird der
Sendedatenpuffer allokiert und mit Null initialisiert. Ein Schreibauftrag auf ein BSEND-
Item wird in einen internen Schreibpuffer geschrieben und übertragen.
● Die Übertragung der Datenblöcke erfolgt azyklisch. Parallele Netzaufträge für die
gleichen Daten sind möglich. Es wird immer der vollständige Sendedatenblock
übertragen. Dies gilt auch bei Zugriff auf ein Sub-Element oder wenn mehrere Clients
gleichzeitig dieses Item beschreiben. Ein paralleles Schreiben des gleichen
Sendedatenblocks oder von Teilbereichen des Sendedatenblocks durch mehrere Clients
kann zu Inkonsistenzen führen.
Es wird deshalb empfohlen, ...
– immer den vollständigen Datenblock zu lesen oder zu schreiben oder
– in NCM S7 die maximale Anzahl paralleler Netzaufträge auf 1 zu setzen. Dies
reduziert jedoch die Übertragungsleistung.
Doppelwort übertragen
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-OPC-1.bsend1.16.2,d
In einem Datenblock der Länge 16 mit der RID 1 wird ab Adresse 2 ein Doppelwort über S7-
OPC-1 adressiert. Wenn ein Schreibbefehl auf die Variable angewendet wird, dann wird der
geschriebene Wert an der angegebenen Position im Block eingetragen und der Datenblock
wird gesendet.
Fließkommazahlen übertragen
Namensraum-URI: S7: (Namensraum-Index: 3)
S7S7-OPC-1.bsend1.32.20,r,2
In einem Datenblock der Länge 32 mit der RID 1 wird ab Offset 20 ein Feld mit
Fließkommazahlen über S7-OPC-1 adressiert. Wenn ein Schreibbefehl auf die Variable
angewendet wird, dann wird der geschriebene Wert an der angegebenen Position im Block
eingetragen und der Datenblock wird gesendet.
[Link] Längeninformationen
69HUELQGXQJ 6&RQQHFWLRQ7\SH
EORFNV )ROGHU2EMHFW7\SH
L 6%ORFN7\SH
T OHQJWK 8,QW
SL
ST
EORFNV )ROGHU2EMHFW7\SH
ಱGEಯGE!
Jedes Bausteinobjekt enthält dabei eine OPC-UA-Property mit einer Längen- bzw.
Größenangabe über den Baustein (length).
Beispiel:
Namensraum-URI: S7: (-->Namensraum-Index: 3)
S7-Verbindung_1.[Link] //Property length des DB10-Bausteins (Länge in Byte)
[Link] Musterobjekte
Beispiel:
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung_1.db10.0,b
S7-Verbindung_1.m.0,b
<S7VerbindungsProperty>:= "vfd"|"cp"|"remoteaddress"|"localsap"|"remotesap"|
"connect"|"autopasswordset"|"fastconnectionstatereturnabl
e"|
"sendcredit"|"receivecredit"|"pdusize"|
"tradedsendcredit"|"tradedreceivecredit"|"tradedpdusize"|
"connecttimeout"|"timeout"|"abortconnectionafter"|
"optimizes7read"|"optimizes7write"|"defaultalarmseverity"|
"defaultdiagnosisseverity"|"events"|"connectiontype"|
"connectionstate"|"hconnectionwaystate"
S7-Verbindungsdiagnose-Property Bedeutung
vfd Name des OPC-Servers, dem die Verbindung zugeordnet ist. Üblicherweise hat
dieses bei NCM-projektierten Verbindungen den Text "OPC Server".
Datentyp String, nur lesbar.
cp Name der Schnittstellenparametrierung, dem die Verbindung zugeordnet ist.
Datentyp String, nur lesbar.
remoteaddress Adresse des Verbindungspartners.
Datentyp String, nur lesbar.
Die Adresse des Verbindungspartners ist ein Datenpuffer mit einer vom
Verbindungstyp abhängigen Datenlänge. Für die übersichtlichere Auswertung
durch den Anwender wird der Datenpuffer formatiert in einem String dargestellt.
Profibus-Adresse
Format: "ddd" (1-3 dezimale Ziffern)
IP-Adresse (ISOonTCP)
Format: "[Link]" (je 1-3 dezimale Ziffern)
MAC-Adresse (ISO)
Format: "xx-xx-xx-xx-xx-xx" (je 2 hexadezimale Ziffern)
localsap Lokaler SAP der Verbindung.
Datentyp String, nur lesbar.
Der lokale SAP des Verbindungspartners ist ein Datenpuffer mit einer vom
Verbindungstyp abhängigen Datenlänge. Für die übersichtlichere Auswertung
durch den Anwender wird der Datenpuffer formatiert in einem String dargestellt.
Format: "[Link] " (je 2 hexadezimale Ziffern)
S7-Verbindungsdiagnose-Property Bedeutung
remotesap Remoter SAP der Verbindung.
Datentyp String, nur lesbar.
Der remote SAP des Verbindungspartners ist ein Datenpuffer mit einer vom
Verbindungstyp abhängigen Datenlänge. Für die übersichtlichere Auswertung
durch den Anwender wird der Datenpuffer formatiert in einem String dargestellt.
Format: "[Link] " (je 2 hexadezimale Ziffern)
connect Art des Verbindungsaufbaus.
Datentyp UInt32, nur lesbar.
0 Passiv, Verbindung wird permanent aufrecht erhalten.
1 Aktiv, Verbindungsaufbau wird erst bei Bedarf hergestellt,
Verbindungsabbau ohne Benutzung nach Wartezeit.
2 Aktiv, Verbindung wird permanent aufrecht erhalten.
autopasswordreset Automatisches Rücksetzen des S7-Passworts zum Bausteinzugriff
Datentyp Boolean, nur lesbar.
True: Rücksetzen aktiviert
False: Rücksetzen deaktiviert
In einer S7 bleibt eine Freischaltung der Domaindienste durch Passwort bis zu
einem expliziten Rücksetzen aktiviert. Ein automatisches Rücksetzen des
Passworts bei Verbindungsaufbau sorgt besonders im Zusammenwirken mit dem
automatischen Verbindungsabbau nach unbenutzter Zeit dafür, dass das Passwort
nicht unnötig lange freigegeben wird.
fastconnectionstatereturnenable Schnelle Rückgabe eines Schreib/Lesezugriffs bei unterbrochener Verbindung.
Datentyp Boolean, nur lesbar.
True: aktiviert
False: deaktiviert
sendcredit Maximale Anzahl paralleler Netzaufträge, Senderichtung
Vorschlagswert für Verbindungsaufbau.
Datentyp UInt16, nur lesbar.
>=1, Vorschlagswert für Verbindungsaufbau
Wird gemeinsam mit &receivecredit() über die Projektierung eingestellt.
receivecredit Maximale Anzahl paralleler Netzaufträge, Empfangsrichtung
Vorschlagswert für Verbindungsaufbau.
Datentyp UInt16, nur lesbar.
>=1, Vorschlagswert für Verbindungsaufbau
pdusize Größe der Protokoll-PDU
Vorschlagswert für Verbindungsaufbau
Datentyp UInt16, nur lesbar.
>=1, Vorschlagswert für Verbindungsaufbau
tradedsendcredit Anzahl paralleler Protokollaufträge, Senderichtung ausgehandelt nach
Verbindungsaufbau.
Datentyp UInt16, nur lesbar.
Ist die Verbindung unterbrochen, so ist die Qualität dieser Property "BAD".
S7-Verbindungsdiagnose-Property Bedeutung
tradedreceivecredit Anzahl paralleler Protokollaufträge, Empfangsrichtung ausgehandelt nach
Verbindungsaufbau.
Datentyp UInt16, nur lesbar.
Ist die Verbindung unterbrochen, so ist die Qualität dieser Property "BAD".
tradedpdusize Größe der Protokoll-PDU, ausgehandelt nach Verbindungsaufbau.
Datentyp UInt16, nur lesbar.
Ist die Verbindung unterbrochen, so ist die Qualität dieser Property "BAD".
connecttimeout Verbindungsaufbau-Timeout
Datentyp UInt32, nur lesbar.
0:kein Timeout
>0:Timeout in ms
timeout Auftrags-Timeout für den Produktivverkehr in ms.
Datentyp UInt32, nur lesbar.
0:kein Timeout
>0:Timeout in ms
abortconnectionafter Automatischer Verbindungsabbau.
Verzögerungszeit für den automatischen Verbindungsabbau: Der OPC-Server baut
die Verbindung nach dieser Zeit selbständig wieder ab, sofern in dieser Zeit kein
erneuter Variablenzugriff erfolgt.
Auf diese Weise können bei Zugriffen auf Variablen in sehr großen Zeitabständen
die Anzahl der benötigten Verbindungen reduziert werden.
Datentyp UInt32, nur lesbar.
0:kein Abbau
>0:Leerlaufzeit bis zum Abbau in ms
optimizes7read Optimierung von s7 Lesezugriffen auf Bausteine.
Datentyp Boolean, Lesen und Schreiben.
True: Optimierung
False: Keine Optimierung
Optimierung bedeutet: Mehrere Zugriffsaufträge auf einzelne Variablen werden
intern in einen einzigen Feldzugriff auf den Kommunikationspartner umgewandelt.
optimizes7write Optimierung von S7-Schreibzugriffen auf Bausteine.
Datentyp Boolean, nur lesbar.
True: Optimierung
False: Keine Optimierung
Optimierung bedeutet: Mehrere Zugriffsaufträge auf einzelne Variablen werden
intern in einen einzigen Feldzugriff auf den Kommunikationspartner umgewandelt.
defaultalarmseverity Vorgabe-Priorität für unprojektierte Alarmereignisse.
Datentyp UInt16, nur lesbar.
1:niederprior
…
1000:hochprior
In der Projektierung gibt es eine Einstellmöglichkeit für Vorgabe-Priorität von
Meldungen für S7-Meldungen und S7-Diagnosemeldungen.
S7-Verbindungsdiagnose-Property Bedeutung
defaultdiagnosisseverity Vorgabe-Priorität für unprojektierte Diagnoseereignisse.
Datentyp UInt16, nur lesbar.
1:niederprior
…
1000:hochprior
In der Projektierung gibt es eine Einstellmöglichkeit für Vorgabe-Priorität von
Meldungen für S7-Meldungen und S7-Diagnosemeldungen.
events Anmeldung von Alarmen und Events beim Verbindungspartner.
Datentyp UInt32, nur lesbar.
Die einzelnen Werte können kombiniert werden
0x00000001 SCAN-Item (nicht mehr unterstützt)
0x00000002 Einfache Meldungen (nicht mehr unterstützt)
0x00000004 Einfache symbolbezogen Meldungen (nicht mehr unterstützt)
0x00000008 Simotion TO-Alarme
0x00000010 Verbindungsüberwachungs-Meldungen
0x00000020 Bausteinbezogene Meldungen (als Conditional Events)
0x00000040 Symbolbezogene Meldungen (als Conditional Events)
0x00000080 Diagnosemeldungen
connectiontype S7-Verbindungstyp
Datentyp UInt16, nur lesbar.
2:S7D_STD_TYPE; Standardverbindung
3:S7D_H_TYPE; hochverfügbare Verbindung
Ist die S7-Verbindung noch nicht aufgebaut, wird für dieses Item die Qualität "BAD"
gemeldet und die Werte sind ungültig.
S7-Verbindungsdiagnose-Property Bedeutung
connectionstate S7-Verbindungszustand
Datentyp UInt16, nur lesbar.
0x11:STD_DOWN; Standardverbindung ist gewollt abgebaut
0x12:STD_ABORT; Standardverbindung wurde ungewollt abgebaut (Fehler)
0x13:STD_NOT_USED; Standardverbindung noch nie aufgebaut
0x14:STD_OK; Standardverbindung aufgebaut
0x20:H_OK_RED; hochverfügbare Verbindung aufgebaut (redundant)
0x21:H_OK_RED_PATH_CHG; hochverfügbare Verbindung aufgebaut (redundant,
es wurde umgeschaltet)
0x22:H_OK_NOT_RED; hochverfügbare Verbindung nicht redundant aufgebaut
0x23:H_ABORT; hochverfügbare Verbindung wurde ungewollt abgebaut (Fehler)
0x24:H_NOT_USED; hochverfügbare Verbindung noch nie aufgebaut
0x25:H_DOWN; hochverfügbare Verbindung ist gewollt abgebaut
Ist die S7-Verbindung noch nicht aufgebaut, wird für dieses Item die Qualität "BAD"
gemeldet und die Werte sind ungültig.
hconnectionwaystate Zustand der H-Verbindungswege
Datentyp Arrays Of UInt16, 4 Arrayelemente, nur lesbar.
0x30:HW_PROD; Weg ist Produktivverbindung
0x31:HW_STBY; Weg ist Standby-Verbindung
0x32:HW_ABORT; Weg wurde ungewollt abgebaut (Fehler)
0x33:HW_NOT_USED; Weg wurde noch nie aufgebaut
0x34:HW_DOWN; Weg wurde gewollt abgebaut
0x35:HW_CN_BREAK; Weg konnte nicht aufgebaut werden
Ist die S7-Verbindung noch nicht aufgebaut, wird für dieses Item die Qualität "BAD"
gemeldet und die Werte sind ungültig.
-> S7-Verbindung1.db10.4,dw
Weiteres Beispiel:
[Link]<rid>.<l>,<o>,b,<c> //Template für Sende-Blockvariable,
//Bytestring
-> S7-Verbindung1.bsend43.1000,0,b,100
Der Vorteil dieses Konzepts ist, dass es von nahezu allen OPC-UA-Clients eingesetzt
werden kann, ohne dass Anpassungen der Clients erforderlich sind.
Hinweis
Die Verwendbarkeit von S7 Template-Datenvariablen kann im Konfigurationsprogramm
"PC-Station einstellen" unter "OPC-Protokollauswahl" > "Details ändern..." aktiviert und
deaktiviert werden.
NodeID: [Link]<db>.<o>,d
Browse-Name: Template Byte
Beschreibung: replace:
<db> by the address of the data block.
<o> by the offset within the data block
NodeId des S7- Anzeigename Bildet bei OPC Server 7.0 in Bildet bei OPC Server 8.0
Eventtypen der S7-Anlage folgendes in der S7-Anlage folgendes ab:
ab:
ns=S7Types, i=14 "S7StatepathAlarmType" 1) 1)
ns=S7Types, i=40 "S7ExclusiveLimitAlarmType" - Alle projektierten Baustein- und
symbolbezogene Meldungen
mit Meldeklasse: "Alarm -
oben", "Alarm unten",
"Warnung - oben" oder
"Warnung - unten".
ns=S7Types, i=41 "S7ExclusiveDeviationAlarmType" - Alle projektierten Baustein- und
symbolbezogene Meldungen
mit Meldeklasse: "Toleranz -
oben" oder "Toleranz unten".
Ns=S7Types, i=43 "OffNormalAlarmType" Baustein- und 1. Alle unprojektierten
symbolbezogene Baustein- und
Meldungen symbolbezogene
Meldungen und
2. projektierte Meldungen mit
anderen Meldeklassen als
"Toleranz - oben", "Toleranz
- unten", "Alarm - oben",
"Alarm - unten", "Warnung -
oben" und "Warnung -
unten").
Ns=S7Types, i=60 "S7DiagnosisEventType" Diagnosemeldungen Projektierte oder unprojektierte
Diagnosemeldungen
Zu 1): Der Eventtyp ns="S7TYPES:", i=14 mit dem Anzeigenamen "S7StatepathAlarmType" bildet den inversen Zustand
einer S7-Verbindung ab ("Inaktiv", wenn S7-Verbindung aufgebaut ("UP") ist; und "Aktiv", wenn S7-Verbindung nicht
aufgebaut ist ("Down")). Der Zustand wird nur PC-seitig ermittelt und kann hierdurch auch dann gemeldet werden, wenn
eine physikalische Verbindung zum S7-Gerät nicht besteht.
Der Eventtyp mit dem Anzeigenamen "BaseEventType" ist der Typ von dem alle Eventtypen
abgeleitet sind. Dieser Typ definiert alle Properties, die in allen Events verwendet werden
sowie auch deren Verhalten.
Ein Eventtyp ist eine numerische NodeId (z. B. ns="[Link] i=2041
und Anzeigename ="BaseEventType").
Beim S7 UA-Alarming werden Eventtypen, die vom ConditionType abgeleitet sind,
instanziiert. Ein S7-Alarm ist deshalb mit all seinen Properties in einem Alarmobjekt
abgebildet: die Condition-Instanz. Die Properties der Condition-Instanz können hilfsweise
auch über Data Access-Zugriffe gelesen oder beobachtet werden.
In den Folgenden Abschnitten werden die für den Anwender bei der Programmierung einer
UA-Applikation relevanten Properties angegeben. Sie sind gruppiert nach den Eventtypen, in
dem sie definiert werden. Bei der Referenzierung einer Property verwendet man den
Datentyp "QualifiedName". "QualifedName" beinhaltet einen Namespace und einen
Browse-Namen (gelegentlich Browse-Pfad).
Da jedoch im Kontext des Dokumentes nur Properties referenziert werden, deren
"QualifiedName" einen Namespace haben, der identisch mit dem Namespace des
definierenden Typen ist, wird auf die Angabe des Namespace verzichtet. Statt
"QualifiedName" wird der Browse-Name des Properties angegeben. Zusätzlich wird in
Klammern das angeforderte Attribut getrennt durch "|" von dem Datentyp angegeben. In den
meisten Fällen ist das angeforderte Attribut numerisch 13, was den "Value" angibt. Selten
tritt der Wert numerisch 1 auf, was die NodeId angibt.
2.6.13 Standard-Eventtypen
EventType
ist immer einer der bereits aufgelisteten S7-Eventtypen.
SourceNode
Herkunftsknoten eines Ereignisses, bei S7 UA-Alarming ein durch eine NodeId spezifiziertes
Objekt im ns="S7SOURCES:" oder das S7-Verbindungsobjekt im ns="S7:". Siehe auch im
Kapitel "Bereichsbaum und Herkunftsraum (Seite 189)".
SourceName
nicht lokalisierter Name der Herkunft. Siehe folgende Tabelle "Bildung des Source-Namen".
Message
Siehe folgende Tabelle "Bildung der Meldung".
Severity
Priorität siehe folgende Tabelle "Bildung der Severity".
Time
Zeitstempel, der so nahe wie möglich am Prozess ist. Dies wird durch die Projektierung
bestimmt, wobei es folgende Möglichkeiten gibt:
● CPU-Zeitstempel,
● CPU-Zeit + Offset,
● PC Zeit (UTC).
Bei PC-Zeit (UTC) ist "Time" identisch mit "ReceiveTIme".
ReceiveTime
Zeitstempel des PCs.
EventId
Eine Kennung (opaque Id), welche ein Event eindeutig bestimmt und referenziert. Der Client
benötigt die EventId z.B. zur Quittierung von Alarmen.
S7-Meldungspriorität Severity
0 1
1 63
S7-Meldungspriorität Severity
2 125
3 188
4 250
5 313
6 375
7 438
8 500
9 563
10 625
11 688
12 750
13 813
14 875
15 938
16 1000
ConditionName
Ein Event einer Condition wird durch die Kombination "SourceName" und "ConditionName"
eindeutig identifiziert. Siehe unten, Abschnitt "Bildung des Condition Namen".
EnableState
Ist Teil einer Zustandmaschine. Mögliche Werte gemäß UA-Alarming-Spezifikation für
EnableState (LocalizedText) sind "de";"Eingeschaltet" und "de";"Ausgeschaltet". S7 UA
Alarming unterstützt das Ausschalten nicht, daher erscheint immer "de","Eingeschaltet".
Quality
Das Beobachten von Events mit Qualitywert "0" (good) reicht in den meisten Fällen aus. Um
nur diese zu Empfangen, kann auf die Events mit Quality "0" gefiltert werden. Quality "0"
(good) kennzeichnet Events mit gültigen Properties, die gesichert sind. Für die möglichen
Quality-Werte siehe UA-Spezifikation.
2. Projektierte Meldungen:
Bausteinbezogene
Meldungen:
Name der mit dem Attribut
S7_a_type
gekennzeichneten
Eingabevariablen des
generierenden
Funktionsbausteins. Bei
den Signalen 2 ... 8 gefolgt
von "," und der
Signalnummer.
Beispiel:
Meld01, oder Meld01,
Symbolbezogene
Meldungen:
Name des Symbols
Beispiel: Scan01
2. Projektierte Meldungen:
Bausteinbezogene
Meldungen:
Name der mit dem Attribut
S7_a_type
gekennzeichneten
Eingabevariablen des
generierenden
Funktionsbausteins. Bei
den Signalen 2 ... 8 gefolgt
von "," und der
Signalnummer.
Beispiel:
Meld01, oder Meld01,
Symbolbezogene
Meldungen:
Name des Symbols
Beispiel: Scan01
ns= S7TYPES:, i=43 "OffNormalAlarmType" "alarm" + 1. Unprojektierte
Meldungsnummer. S7-Meldungen:
Beispiel: alarm1 "alarm" + Meldungsnummer
Beispiel: alarm1
2. Projektierte Meldungen:
Bausteinbezogene
Meldungen:
Name der mit dem Attribut
S7_a_type
gekennzeichneten
Eingabevariablen des
generierenden
Funktionsbausteins. Bei
den Signalen 2 ... 8 gefolgt
von "," und der
Signalnummer.
Beispiel:
Meld01, oder Meld01,
Symbolbezogene
Meldungen:
Name des Symbols
Beispiel: Scan01
AckedState
Ist ein Teil einer Zustandsmaschine. Mögliche Werte sind "de";"Quittiert" und
"de";"Unquittiert ". Jede Werteänderung von AckedState wird mit einem Event gemeldet.
Events, die mit dem AckedState "de", "Unquittiert" gemeldet werden, müssen mit der
Acknowledge-Funktion quittiert werden. Siehe STEP 7-Beschreibung der Bausteinalarme,
die eine Quittierung erfordern.
ActiveState
Ist Teil einer Zustandsmaschine. Bei S7 UA Alarming wird der ActiveState durch Baustein-
und symbolbezogene Meldungen gesteuert. Wenn das meldungsauslösende Signal den
Wert "1" hat, wird AckedState "Aktiv" gemeldet, wenn der Wert "0" hat, dann wird "Inaktiv"
gemeldet. Jede Werteänderung von ActiveState wird durch einen Event gemeldet.
LimitState|CurrentState
Mögliche Werte sind "High", "HighHigh", "Low" und "LowLow".
Der Eventtype mit dem Anzeigenamen "S7OffNormalAlarm Type" wird generiert, wenn ein
OPC Server 7.0 gewählt ist oder OPC Server 8.0 und für die Meldungen andere
Meldeklassen als "Toleranz - oben", "Toleranz - unten", "Alarm - oben", "Alarm - unten",
"Warnung - oben" und "Warnung - unten" eingestellt sind.
2.6.14 S7-Eventtypen
S7Connection
Gibt die NodeId der Verbindung an, über die eine S7-Meldung empfangen wird.
Bsp.: ns="S7:", s="Verbindungsname".
S7AlarmId
Meldungsnummer der S7-Meldung.
S7AlarmSubId
Die Nummer des auslösenden Signals einer S7-Meldung. Der Wertebereich ist 1 … 8.
S7Connection
Gibt die NodeId der Verbindung an, über die die S7 Meldung empfangen wird.
Bsp.: ns="S7:", s="Verbindungsname".
S7AlarmAddDatan|Data
Sind die Begleitwerte der generierenden S7-Meldungen.
Meldungen, dargestellt im ByteString-Format. 1 <= n <=10
S7AlarmAddData8|DataType
Sind die S7-Datentypen der Begleitwerte. Eine Abbildung der S7-Daten-Typen auf
UA-Datentypen ist nicht möglich, da sie nicht eindeutig abzubilden sind.
S7AlarmAddDataCount
Ist die tatsächliche Anzahl der Begleitwerte der S7-Meldungen.
S7AlarmAddTextn
1 <= n <=8. Zusatztexte aus der Projektierung.
Bild 2-30 Beispielhafte Darstellung der S7-spezifischen Properties für den S7OffNormalAlarm Type und den anderen
S7XXXAlarm Types
S7DiagnosisId
Melde-ID der Diagnosemeldung.
S7Connection
Gibt die NodeId der Verbindung an, über die die Diagnose Meldung empfangen wird.
Bsp.: ns="S7:", s="Verbindungsname".
S7DiagnosisData
Diagnosedaten
Hinweis
Eine detaillierte Beschreibung zu SFC 52 (S7DiagnosisData) finden Sie im Dokument "STEP
7 System- und Standardfunktionen für S7-300/400".
Der "Zusatztext 1" der Baustein- und symbolbezogenen Meldung generiert einen Herkunfts
Node (SourceNode). Z. B. Angenommen der "Zusatztext 1" ist "Überdrucksensor", entspricht
diesem Zusatztext der SourceNode mit NodeId
● ns="S7SOURCES:", s="Überdrucksensor".
Der "Zusatztext 1" kann "\" enthalten, dies führt jedoch nicht zu mehreren SourceNodes.
Die Angabe eines "Zusatztext 1" und "Zusatztext 2" ist nicht erforderlich. Sind diese nicht
vorhanden, werden als Ersatz für "Zusatztext 2" der Pfad in STEP 7 im Anlagebaum
verwendet und als Ersatz für "Zusatztext 1" der Pfad in STEP 7 im Anlagebaum +
Alarminstanzdatenbaustein bzw. Symbolnamen (bei SCAN) verwendet. Z. B. generiert der
Alarm im Alarminstanzdatenbaustein DB404 im "S7-Programm(1)" der CPU "CPU 416-3"
des AS-Geräts "Station1" die Bereiche "Station1" mit untergeordneten Bereichen "CPU 416-
3" und "S7-Programm(1)" mit den NodeIds der zugehörigen UA-Ordner
● ns="S7AREAS:", s="Station"
● ns="S7AREAS:", s="Station1\CPU 416-3"
● ns="S7AREAS:", s="Station1\CPU 416-3\S7-Programm(1)"
und der SourceNode
● ns="S7SOURCES:", "Station1\CPU 416-3\S7-Programm(1)\DB404"
Diagnosemeldungen weisen keinen "Zusatztext 1" und "Zusatztext 2" auf. Analog zu den
Alarmen wird als Ersatz für "Zusatztext 2" der Pfad in STEP 7 im Anlagebaum verwendet
und als Ersatz für den Zusatztext 1 der Pfad in STEP 7 im Anlagebaum + Meldebezeichner.
Z. B. generiert die Diagnosemeldung mit Meldebezeichner im obenstehenden "S7-
Programm(1)" neben den bereits obenstehenden UA-Ordnern zusätzlich noch den
SourceNode
● ns="S7SOURCES:", "Station1\CPU 416-3\S7-Programm(1)\WR_USMSG (1)"
Der Bereichsbaum und der Herkunftsraum können mit dem OPC Scout V10 durchsucht
werden.
Ausgewählt ist der Bereichsknoten mit dem Anzeigenamen "con13 Scan Notify" (NodeID
ns="S7AREAS:", s=" con13-Scan-Notify") im linken Fenster. Im rechten Fenster werden
seine Attribute angezeigt, es ist diesem zu entnehmen, dass der Bereichsknoten die
Referenz "HasNotifier" aufweist.
Bei OPC Server 7.0 gibt es keine projektierten S7-Meldungen, demnach werden alle Events
durch das Beobachten des EventNotifier des Server-Knotens und der Knoten der S7-
Verbindungen gemeldet.
Bei Erzeugen eines beobachteten Event-Items, müssen die zurück zuliefernden Properties
angegeben werden. Werden keine Properties angegeben, weiß man, dass ein Event
aufgetreten ist, jedoch nicht welches. Für die Aufnahme einer Property in die Liste der
zurück zuliefernden Properties, muss für jede Property
● die NodeId des definierten Eventtyps angegeben werden (TypeId),
● der Browse-Name ggf. Browse-Pfad von der Property und
● die AttributId
angegeben werden.
NodeId, Browse-Namen ggf. Browse-Pfad und die AttributId des definierten Eventtyps
können Sie dem Kapitel "Eventtyphierarchie von S7-UA-Alarming-Server (Seite 164)"
entnehmen.
Ein Event muss nicht alle zurück zu liefernden Properties aufweisen. Für Properties, die ein
Event nicht hat, wird "null" zurückgemeldet. Dabei kann S7 UA-Alarming nicht zwischen
Properties unterscheiden, die das Event nicht hat, oder solche, die aufgrund von der
fehlerhaften Angabe z. B. des Browse-Namen, keine gültige Property bezeichnen.
Wird ein EventNotifier eines Bereichsknoten beobachtet, werden alle Events gemeldet, die in
diesem Bereich entstanden sind. Die Anzahl der gemeldeten Events kann je nach
Ausprägung der Anlage (die Menge der potentiell verfügbaren EventSourcen kann dem
Herkunftsraum kombiniert mit dem Bereichsraum entnommen werden) sehr hoch sein.
Daher ist eine sinnvolle Filterung der Events erforderlich.
Die Filterung in UA-Alarming bietet sehr viele Möglichkeiten und übersteigt bei weitem die
Möglichkeiten von OPC A&E. Das ist einer der wesentlichen Gründe weshalb UA Alarming
gegenüber OPC A&E bevorzugt werden sollte.
Die Operanden und Operatoren sind in OPC UA beschrieben. Zusätzliche Informationen
finden sie in [UA Spezifikation, Part 4]
Folgendes Beispiel kann als Einführung von Definition von Filterbedingungen Verwendet
werden:
Filter / Index Operator Operand 1 Op. 1-Typ Operand 2 Op. 2-Typ Operand 3
E0 And E1 E2
E1 And E3 E4
E2 And E5 E6
E3 OfType ns="S7TYPES",i= NodeId
40
E4 Between TypeId: Property 1 Uint16 1000
ns="[Link]
[Link]/UA/",
i=2041
(BaseEventType)
BrowsePfad:
Severity
AttributeId:13
Filter / Index Operator Operand 1 Op. 1-Typ Operand 2 Op. 2-Typ Operand 3
E5 NOT E6
E6 Equals TypeId: Property 0x408F0000 StatusCode
ns="[Link]
[Link]/UA/",
i=2782
(ConditionType)
Browse-Pfad:
"Quality"
AttributeId: 13
E7 Or E8 E9
E8 Or E10 E11
E9 Or E12 E13
E10 Or E14 E15
E11 Or E16 E17
E12 Like TypeId: Property "Station1\con13 String
ns="[Link] -Scan-
[Link]/UA/", Notify\DB100"
i=2041
(BaseEventType)
Browse-Pfad:
"SourceName"
AttributeId:13
E13 Like TypeId: Property "Station1\con13 String
ns="[Link] -Scan-
[Link]/UA/", Notify\DB102"
i=2041
(BaseEventType)
Browse-Pfad:
"SourceName"
AttributeId:13
E14 Like TypeId: Property "Station1\con13 String
ns="[Link] -Scan-Notify\M
[Link]/UA/", 0.4"
i=2041
(BaseEventType)
Browse-Pfad:
"SourceName"
AttributeId:13
E15 Like TypeId: Property "Station1\con13 String
ns="[Link] -Scan-Notify\M
[Link]/UA/", 0.6"
i=2041
(BaseEventType)
Browse-Pfad:
"SourceName"
AttributeId:13
Filter / Index Operator Operand 1 Op. 1-Typ Operand 2 Op. 2-Typ Operand 3
E16 Like TypeId: Property "Station1\con13 String
ns="[Link] -Scan-Notify\M
[Link]/UA/", 1.0"
i=2041
(BaseEventType)
Browse-Pfad:
"SourceName"
AttributeId:13
E17 Like TypeId: Property "Station1\con13 String
ns="[Link] -Scan-
[Link]/UA/", Notify\S7-
Programm(3)\D
I=2041
B604"
(BaseEventType)
AttributeId: 13
Es kann jedoch nicht ohne die angegebene Literatur im Detail verstanden werden. Es
wurden Filter in ähnlicher Komplexität überprüft.
Enable()/Disable()
Für einen Alarm, der disabled ist, werden keine Events an Clients generiert. Zur
S7-Steuerung hin werden jedoch unabhängig davon die Alarme immer überwacht, da
Alarme dorthin nicht einzeln enabled/disabled werden können.
AddComment()
Für jede Alarminstanz kann jeweils ein Kommentar gespeichert werden.
ConditionRefresh()
Es werden alle aktiven oder unquittierten Alarme gemeldet.
Acknowledge()
Die Quittierung eines Alarms wird zur S7-Steuerung transportiert. Die Umschaltung des
Quittungszustandes wird unabhängig davon von der S7-Steuerung zum OPC-Server explizit
zurückgemeldet, erst dann wechselt der Alarm OPC-seitig in den quittierten Zustand und löst
entsprechende Events aus.
Einleitung
Der folgende Abschnitt beschreibt eine Konfigurationsvariante für das SR-Protokoll, die
höhere Performanceanforderungen erfüllt. Hierfür werden alle unterlagerten SR-Protokoll-
bibliotheken und der COM-Server als Inproc-Server in den Outproc-OPC-Server geladen.
Die Protokollbearbeitung läuft im Prozess des OPC-Servers ab, weitere Laufzeiten für
Prozesswechsel und Multiprotokollbetrieb fallen weg. Der Prozesswechsel zwischen OPC-
Client und OPC-Server ist allerdings noch vorhanden.
Konfiguration
Die Aktivierung dieser performanten Variante erfolgt implizit durch die alleinige Auswahl des
SR-Protokolls im Konfigurationsprogramm "PC-Station einstellen":
Bild 2-32 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl des SR-Protokolls
Vorteile / Nachteile
Die Verwendung des performanten SR-OPC-Servers hat jedoch den Nachteil, dass nur der
Einzelprotokollbetrieb von SR möglich ist. Dem stehen folgende Vorteile gegenüber:
● Höhere Performance als beim Multiprotokollbetrieb.
● Einfache Konfiguration.
● Mehrere Clients können den Server zur gleichen Zeit nutzen.
● Die Stabilität des OPC-Servers ist nicht von den Clients abhängig.
[Link] Protokoll-ID
Die Protokoll-ID für das SEND/RECEIVE-Protokoll lautet "SR".
[Link] Verbindungsnamen
Der Verbindungsname ist der in STEP 7 projektierte Name zur Identifikation der Verbindung.
[Link] Variablendienste
Variablendienste ermöglichen den direkten Zugriff und die Beobachtung von Variablen im
Automatisierungsgerät. Die Adressierung der Variablen erfolgt symbolisch, die Notation der
Variablennamen orientiert sich an den Programmierwerkzeugen. Zum direkten Lesezugriff
auf Variablen überträgt der OPC-Server die gewünschte Adressinformation an den
Empfänger und dieser sendet daraufhin die angeforderten Daten zurück. Bei einem
Schreibzugriff überträgt der OPC-Server die Adressinformation zusammen mit dem zu
schreibenden Wert an das Partnergerät.
Hinweis
Die angeforderte Variable muss mit der Projektierung des Partnergeräts konsistent sein.
Andernfalls führt der Zugriff auf bestimmte Bereiche zu Kommunikationsfehlern. Der OPC-
Server kann bei der Anmeldung einer Variablen nur die Syntax überprüfen. Es ist nicht
möglich, festzustellen, ob auf Grund der Projektierung des Partners die Variable im
Partnergerät gültig ist.
Erklärungen
SR
SEND/RECEIVE-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
<Bereich>
Objekt, das angesprochen werden soll.
M Merker
P Peripherie (für S5-CPUs)
PAE Peripherie (für S7-CPUs)
BS Systembereich
AS Absolute Anfangsadresse
DXnn Erweiterter Datenbaustein
DEnn Datenbaustein im Externspeicher
QB Erweiterte Peripherie
<Typ>
Datentyp.
Der Datentyp (Formatbezeichner) wird im OPC-Server in den entsprechenden OLE-
Datentyp umgewandelt.
<Adresse>
Adresse der Variablen im Bereich.
Abhängig vom Bereich ist die Adresse, die angegeben werden muss, eine Byte- oder eine
Wortadresse. Bei Zugriff auf die folgenden Bereiche wird die angegebene Adresse als
Wortadresse interpretiert: DBnn
Wortadressen:
● DXnn
● DEnn
Für die anderen Bereiche ist die Adresse eine Byte-Adresse. Für Datentyp X ist die Syntax
der <Adresse> = <[Link]>
Der Wertebereich Bit ist 0...7.
Der Wertebereich für den Byte-Offset ist bei Byte-Adressen 0...65534 und bei Wortadressen
0...32767. Geräte- und Typabhängig kann der tatsächlich verwendbare Wert der Adresse
geringer sein.
Wort- und Byteadressen werden folgendermaßen adressiert:
● Wortadressen: <Wort-Nummer>{.Bit-Nummer}
● Byteadressen: <Byte-Nummer>{.Bit-Nummer}
<Anzahl>
Anzahl der Variablen eines Typs, die ab der im Parameter Adresse angegebenen Adresse
angesprochen werden (Wertebereich 0...65535).
Beim Datentyp X ist die Eingabe der Anzahl für
● Schreibzugriff (WRITE): nur Vielfache von 8 bei Bitnummer 0 beginnend.
● Lesezugriff (FETCH): beliebige Anzahl bei beliebigem Offset beginnend.
Beispiel:
SR:[ISO-WRITE-1]DB1,X10.0,16, Zugriffsrechte W, Offset 10, ab Bitnummer 0, Anzahl 16
Bit
SR:[ISO-FETCH-1]DB1,X10.4,9, Zugriffsrechte R, Offset 10, ab Bitnummer 4, Anzahl 9 Bit
● Tnn
Timer
● Znn
Zähler
SR:[<Verbindungsname>]send{<n>}{,<Typ><Adresse>{,<Anzahl>}}
Zusätzlich wurde ab SIMATIC NET PC / Software Edition 2006 eine zweite Möglichkeit zum
Empfang von Daten eingerichtet. Bei aktiviertem Item werden Daten gemeldet, auch wenn
sich diese nicht geändert haben:
SR:[<Verbindungsname>]receivedata{,<Typ><Adresse>{,<Anzahl>}}
Erklärungen
SR
SEND/RECEIVE-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
receive
Zuletzt vom Partner empfangener Datenpuffer.
Die Struktur des Datenpuffers ist nicht vorgegeben. Daher wird der Puffer immer als Feld
von Bytes geliefert.
Hinweis
Die RECEIVE-Variable entspricht einem Empfangspuffer. Deshalb kann die Variable nur
gelesen werden. Bei einem Lesezugriff auf das Gerät (DEVICE) wird explizit ein
Empfangspuffer im Kommunikationssystem bereitgestellt. Wird nicht innerhalb einer
Fehlerwartezeit für diesen Puffer ein Datenblock empfangen, so wird ein Fehler erzeugt.
Deshalb sollten Sie diese Variablen nur beobachten oder aus dem Cache lesen.
receivedata
Das Item "receivedata" ist nicht OPC-konform.
Funktionell entspricht "receivedata" dem zuvor beschriebenen Item "receive". Es gibt aber
folgenden Unterschied:
Bei aktivem Item dieser Art werden neue Daten gemeldet, auch wenn sich die Inhalte nicht
geändert haben. Dadurch wird es einem Client ermöglicht, auch unveränderte gesendete
Datenpuffer vom Partner zu erhalten. Ebenso erfolgt der OnDataChange-Callback nicht
schneller als die ausgehandelte Aktualisierungszeit (Update rate). Stellen Sie also hierfür
immer Aktualisierungszeiten schneller als die Senderate der SEND/RECEIVE-Daten ein.
send
Ein Sendepuffer, der an den Verbindungspartner übertragen werden kann.
Für die Größe des Sendepuffers ist durch die Projektierung ein Defaultwert festgelegt. Der
Puffer wird immer als Feld von Bytes geliefert.
Schreibzugriffe auf diese Variable bewirken, dass der Sendepuffer an den Partner
übertragen wird.
Hinweis
Diese Variable und daraus abgeleitete Variablen dürfen nicht gelesen und nicht aktiviert
werden. Lesezugriffe auf diese Variable werden unter Umständen vom Partnergerät mit
einem Verbindungsabbau quittiert.
<n>
Größe des Sendepuffers in Byte.
Sie können n verwenden, wenn auf einer Verbindung Sendepuffer verschiedener Größe
verwendet werden sollen. Wenn n weggelassen wird, wird die in der Projektierung
eingetragene Puffergröße verwendet.
Bei TCP/IP native mit abgeschaltetem Miniprotokoll (siehe Projektierungswerkzeug
SIMATIC STEP 7 oder SIMATIC NCM PC) ist die Angabe der Größe des Sendepuffers nicht
möglich. In diesem Fall wird die in der Projektierung eingetragene Puffergröße verwendet.
Die Größe des Sendepuffers ist von der Projektierung abhängig. Beachten Sie, dass die
<Anzahl> multipliziert mit der Größe des <Typ> in Byte der Variablen nicht größer als der
Sendepuffer <n> gewählt werden darf.
<Typ>
Datentyp.
Der Datentyp (Formatbezeichner) wird im OPC-Server in den entsprechenden OLE-
Datentyp umgewandelt.
<Adresse>
Byteadresse der Variablen im Bereich Byte-Nummer.
Für den Datentyp Bit wird das angeforderte Bit durch [Link]-Nummer adressiert.
<Anzahl>
Anzahl der Variablen eines Typs, die ab der im Parameter Adresse angegebenen Adresse
angesprochen werden sollen.
Hinweis
Bitte beachten Sie folgende Hinweise:
Durch die optionale Angabe von Typ, Adresse und Anzahl können Sie strukturiert auf
Teilbereiche von Datenblöcken zugreifen.
Variablen für Sendedaten oder Empfangsdaten mit unterschiedlicher Länge oder
unterschiedlichem Verbindungsnamen verfügen über unabhängige Speicherbereiche.
Der Sendedatenpuffer wird allokiert und mit Null initialisiert, wenn ein Item für einen
unabhängigen Speicherbereich angelegt wird. Ein Schreibauftrag auf ein send-Item wird
in einen internen Schreibpuffer geschrieben und übertragen.
Die Übertragung der Datenblöcke erfolgt azyklisch. Es wird immer der vollständige
Sendedatenblock übertragen. Dies gilt auch bei Subelementzugriff oder wenn mehrere
Clients gleichzeitig dieses Item beschreiben.
Empfangsvariablen
SR:[MyConnection]receive,w4,6
receive,w4,6
6 Datenworte ab Offset 4 im Empfangspuffer.
SR:[MyConnection]receive,dword7
receive,dword7
Ein Doppelwort ab Offset 7 im Empfangspuffer
SR:[MyConnection]receive,REAL0,2
receive,REAL0,2
Ein Feld mit 2 Fließkommawerten ab Offset 0 im Empfangspuffer.
Beispiel für die Übertragung von Daten, die sich nicht geändert haben müssen (siehe
"receivedata"):
SR:[MyConnection]receivedata,w4,6
receivedata,w4,6
6 Datenworte ab Offset 4 im Empfangspuffer.
Sendevariablen
SR:[MyConnection]send30,dword7
send30,dword7
Ein Doppelwort ab Byte 7 in einem 30 Byte großen Sendepuffer. Wenn der Standardwert der
Größe des Sendpuffers nicht gleich 30 ist, greift diese Variable auf einen separaten Puffer
zu.
SR:[MyConnection]send,B20,6
send,B20,6
Ein Feld mit 20 Bytes ab Offset 6 in einem Sendepuffer mit Standardgröße. Die
Standardgröße des Sendepuffers wird in der Projektierung festgelegt.
SR:[MyConnection]send8,DINT0
send8,DINT0
Ein vorzeichenbehaftetes Doppelwort ab Adresse 0 in einem Sendepuffer mit der Größe 8.
SR:[<Verbindungsname>]&<Informationsparameter>()
Erklärungen
SR
SEND/RECEIVE-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
<Informationsparameter>
Es gibt folgende Möglichkeiten:
● statepath
● Zustand einer Kommunikationsverbindung zu einem Partnergerät.
Das Ergebnis wird als String dargestellt.
Rückgabewerte:
DOWN
Verbindung ist nicht aufgebaut
UP
Verbindung ist aufgebaut
RECOVERY
Verbindung wird aufgebaut
ESTABLISH
Reserviert für zukünftige Erweiterungen
statepathval
Zustand einer Kommunikationsverbindung zu einem Partnergerät.
Das Ergebnis wird als Zahl dargestellt.
Rückgabewerte:
1
Verbindung ist nicht aufgebaut
2
Verbindung ist aufgebaut
3
Verbindung wird gerade aufgebaut
4
Reserviert für zukünftige Erweiterungen
SR:[SR_CONNECTION]&statepathval()
&statepathval()
kann beispielsweise folgenden Wert zurückgeben:
2
Die Verbindung ist aufgebaut.
S7:[SYSTEM]&sapiversion()
&winsockversion()
Versionskennung der Winsocket-Schnittstelle.
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
Das ISO/OSI-Referenzmodell
Der offene Kommunikationsdienst (SEND/RECEIVE) über PROFIBUS ist ein einfaches,
telegrammorientiertes Protokoll für SIMATIC Geräte. Es verwendet die Dienste des Fieldbus
Data Links (FDL), der Ebene 2 des ISO/OSI-Referenzmodell bei PROFIBUS.
[Link] Protokoll-ID
Die Protokoll-ID für das FDL-Protokoll lautet FDL.
[Link] Verbindungsnamen
Der Verbindungsname ist der in STEP 7 projektierte Name zur Identifikation der Verbindung.
Sie müssen den FDL-Verbindungsnamen für den OPC-Server eindeutig wählen.
FDL:[<Verbindungsname>]send{<n>}{,<Typ><Adresse>{,<Anzahl>}}
Erklärungen:
FDL
FDL-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
receive
Zuletzt vom Partner empfangener Datenpuffer.
Die Struktur des Datenpuffers ist nicht vorgegeben. Daher wird der Puffer immer als Feld
von Bytes geliefert.
Hinweis
Die RECEIVE-Variablen entspricht einem Empfangspuffer. Deshalb kann die Variable nur
gelesen werden. Bei einem Lesezugriff auf das Gerät (DEVICE) wird explizit ein
Empfangspuffer im Kommunikationssystem bereitgestellt. Wird nicht innerhalb einer
Fehlerwartezeit für diesen Puffer ein Datenblock empfangen, so wird ein Fehler erzeugt.
Deshalb sollten Sie diese Variablen nur beobachten oder aus dem Cache lesen.
send
Immer vorhandener Sendepuffer, der an den Verbindungspartner übertragen werden kann.
Für die Größe des Sendepuffers ist durch die Projektierung ein Defaultwert festgelegt. Der
Puffer wird immer als Feld von Bytes geliefert.
Schreibzugriffe auf diese und daraus abgeleitete Variablen bewirken, dass der Sendepuffer
an den Partner übertragen wird.
Diese Variable und daraus abgeleitete Variablen dürfen nicht gelesen und nicht aktiviert
werden.
In Abhängigkeit von der Kombination der in der Verbindungsprojektierung angegebenen
Stationsaddresse und der SAPs wird beim Schreiben eines Send-Items ein spezieller FDL-
Dienst verwendet:
<n>
Größe des Sendepuffers.
Mit blockorientierten Diensten können Sie Datenpuffer senden und empfangen. Die
empfangenen und die zu sendenden Datenpuffer werden auf OPC-Variablen abgebildet. Ein
entsprechend großes Feld kann beispielsweise den gesamten Empfangspuffer enthalten.
Die Zuordnung von Teilabschnitten der Puffer zu einzelnen Variablen ist auch möglich.
Die Übertragung der Datenblöcke erfolgt azyklisch. Ein Sendeauftrag wird in einen internen,
mit "Null" vorbelegten, Schreibpuffer geschrieben. Es wird immer der vollständige
Datenblock des Schreibpuffers übertragen. Dies gilt auch bei Teilzugriff oder wenn mehrere
Clients gleichzeitig dieses Item beschreiben.
<Typ>
Datentyp.
Der Datentyp (Formatbezeichner) wird im OPC-Server in den entsprechenden OLE-
Datentyp umgewandelt.
<Adresse>
Byteadresse der Variablen im Bereich Byte-Nummer. Der Wertebereich ist von der
Projektierung abhängig.
Für den Datentyp Bit wird das angeforderte Bit durch [Link]-Nummer adressiert.
<Byte-Nummer>{.<Bit-Nummer>}
Wenn Sie bei <Bit-Nummer> nichts eintragen, wird Bit mit 0 adressiert.
<Anzahl>
Anzahl der Variablen eines Typs, die ab der im Parameter Adresse angegebenen Adresse
angesprochen werden sollen. Der Wertebereich ist von der Projektierung abhängig.
Syntax der Prozessvariable für blockorientierte Dienste über SDA und SDN (FDL)
Es kann vorteilhaft sein, dass der verwendete Dienst nicht von der Kombination der Adresse
der Partnerstation und den SAPs abhängt.
Durch Verwendung der Namen "SendSDA" und "SendSDN" können Sie festlegen, dass nur
die jeweiligen Dienste "SDA" oder "SDN" zum Senden verwendet werden sollen. Diese
besonderen Namen werden im OPC-Browsing nicht angezeigt.
Syntax:
Es gibt zwei Möglichkeiten:
FDL:[<Verbindungsname>]SendSDA{<n>}{,<Typ><Adresse>{,<Anzahl>}}
FDL:[<Verbindungsname>]SendSDN{<n>}{,<Typ><Adresse>{,<Anzahl>}}
Erklärungen
FDL
FDL-Protokoll für den Zugriff auf die Prozessvariable.
<Verbindungsname>
Protokollspezifischer Verbindungsname. Der Verbindungsname wird bei der Projektierung
festgelegt.
SendSDA
SendSDN
Es werden nur die Dienste SDA oder SDN zum Senden verwendet.
<n>
Größe des Sendepuffers.
Mit blockorientierten Diensten können Sie Datenpuffer senden und empfangen. Die
empfangenen und die zu sendenden Datenpuffer werden auf OPC-Variablen abgebildet. Ein
entsprechend großes Feld kann beispielsweise den gesamten Empfangspuffer enthalten.
Die Zuordnung von Teilabschnitten der Puffer zu einzelnen Variablen ist auch möglich.
<Typ>
Datentyp.
Der Datentyp (Formatbezeichner) wird im OPC-Server in den entsprechenden OLE-
Datentyp umgewandelt.
<Adresse>
Byteadresse der Variablen im Bereich Byte-Nummer. Der Wertebereich ist von der
Projektierung abhängig.
Für den Datentyp Bit wird das angeforderte Bit durch [Link]-Nummer adressiert.
<Anzahl>
Anzahl der Variablen eines Typs, die ab der im Parameter Adresse angegebenen Adresse
angesprochen werden sollen. Der Wertebereich ist von der Projektierung abhängig.
Hinweis
Bitte beachten Sie folgende Hinweise:
Durch die optionale Angabe von Typ, Adresse und Anzahl können Sie strukturiert auf
Teilbereiche von Datenblöcken zugreifen.
Variablen für Sendedaten oder Empfangsdaten mit unterschiedlicher Länge oder
unterschiedichem Verbindungsnamen verfügen über unabhängige Speicherbereiche.
Der Sendedatenpuffer wird allokiert und mit Null initialisiert, wenn ein Item für einen
unabhängigen Speicherbereich angelegt wird. Ein Schreibauftrag auf ein send-Item wird
in einen internen Schreibpuffer geschrieben und übertragen.
Die Übertragung der Datenblöcke erfolgt azyklisch. Parallele Netzaufträge für die
gleichen Daten sind möglich. Es wird immer der vollständige Sendedatenblock
übertragen. Dies gilt auch bei Subelementzugriff oder wenn mehrere Clients gleichzeitig
dieses Item beschreiben.
Ein paralleles Schreiben des gleichen Sendedatenblocks oder von Teilbereichen des
Sendedatenblocks durch mehrere Clients kann zu Inkonsistenzen führen. Es wird
deshalb empfohlen:
– immer den vollständigen Datenblock zu lesen oder zu schreiben.
– die Maximale Anzahl paralleler Netzaufträge auf Eins setzen, was jedoch die
Übertragungsleistung reduziert.
Lesevariable
FDL:[MyConnection]receive,w0,6
6 Datenworte ab Byte 0 im Empfangspuffer.
FDL:[MyConnection]receive,dword7
Ein Doppelwort ab Byte 7.
FDL:[MyConnection]Receive,REAL0,2
Zwei Realwerte ab Byte 0 im Empfangspuffer
Schreibvariablen
FDL:[MyConnection]send30,dword7
Ein Doppelwort ab Byte 7 in einem 30 Byte großen Sendepuffer.
FDL:[MyConnection]SendSDN,B5,20
Ein Feld mit 20 Bytes ab Offset 5 in einem Sendepuffer mit Default-Größe. Die Default-
Größe wird durch die Projektierung vorgegeben. Unabhängig von der Angabe der SAPs in
der Projektierung wird der PROFIBUS-FDL-Dienst SDN verwendet.
FDL:[MyConnection]Send8,DINT0
Ein vorzeichenbehaftetes Doppelwort ab Adresse 0 in einem Sendepuffer der Größe 8
Bytes.
FDL:[||<CP-Name>]&<Informationsparameter>()
Erklärungen
FDL
FDL-Protokoll für den Zugriff auf die Prozessvariable.
<CP-Name>
Der CP-Name wird bei der Projektierung festgelegt. Es werden nur jene CP-Namen
unterstützt, über die auch eine FDL-Verbindung projektiert ist.
<Informationsparameter>
Es gibt fünf Möglichkeiten:
● busparameter
● defaultsap
● identify
● ts
● lifelist
Alle fünf Möglichkeiten werden nachfolgend beschrieben.
busparameter
Liefert die Busparameter des an der angegebenen Verbindung betriebenen PROFIBUS-
Netzes. Die Werte werden als Bytefeld zurückgeliefert und entsprechen den von dem FDL-
Dienst FDL_READ_VALUE gelieferten Ergebnissen. Detailierte Informationen können dem
Handbuch zur FDL-Programmierschnittstelle entnommen werden.
defaultsap
Liefert den Wert für den Default-SAP (SAP = Service Access Point). Immer wenn ein SAP
nicht explizit angegeben wird, gilt für die Adressierung der sogenannte Default-SAP.
identify
Liefert die Teilnehmeridentifikation der angegebenen Verbindung als Feld mit 4 Strings:
Elemente des Rückgabewerts:
Hersteller
Controller
Hardware-Version
Software-Version
ts
Gibt die lokale Stationsadresse der angegebenen Baugruppe zurück.
lifelist
Informationen über die am Bus verfügbaren Teilnehmer.
Das 127 Elemente umfassende Feld enthält Informationen über jede mögliche
Stationsadresse. Jeder Stationsadresse ist ein Index des Feldes zugeordnet.
Rückgabewerte der einzelnen Feldeinträge:
FDL_STATION_NON_EXISTENT
Kein Teilnehmer vorhanden (Wert 0x10)
FDL_STATION_PASSIVE
Passiver Teilnehmer (Wert 0x00)
FDL_STATION_READY_FOR_RING
Teilnehmer bereit für die Aufnahme in den Token-Ring des PROFIBUS (Wert 0x30)
FDL_STATION_ACTIVE
Aktiver Teilnehmer (Wert 0x20)
Hinweis
Zur Ermittlung dieser Daten wird der FDL-Dienst FDL_LIFE_LIST_CREATE_REMOTE
benutzt. Dieser Dienst erzeugt eine deutliche Busbelastung, deshalb sollte diese Variable
möglichst nicht aktiv beobachtet werden.
&version()
Liefert eine Versionskennung für den FDL OPC-Server, hier z.B. die Zeichenfolge
SIMATIC NET Core Server FDL V [Link] Copyright 2010
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
2.8.1 Protokoll-ID
Protokoll-ID
Die Protokoll-ID für das SNMP-Protokoll lautet "SNMP".
Syntax
Hinweis
Abweichend von der Syntax der anderen Protokolle wird bei SNMP folgende Syntax
verwendet:
SNMP:[<Teilnehmername>]<Objektname>
Erklärungen
SNMP
SNMP-Protokoll für den Zugriff auf die Prozessvariablen (MIB-Objekte) und Trap-Variablen.
<Teilnehmername>
Der Teilnehmername wird bei der Projektierung (Anlagenkonfiguration) festgelegt und ist
eindeutig.
<Objektname>
Symbolischer Name für das MIB-Objekt des Partnergeräts.
Beispiel
SNMP:[OSM]sysName
Abfrage des MIB-Objektes sysName. Der Teilnehmername wurde in diesem Beispiel in der
Anlagenkonfiguration als OSM projektiert.
Einleitung
Die folgenden Abschnitte beschreiben, welche Variablen der SNMP OPC-Server zur
Verfügung stellt:
● Variablen für das Kommunikationssystem und die Verbindungszustände
● Variablen für den SNMP OPC-Server
Syntax
SNMP:[<Teilnehmername>]<Informationsparameter>
Erklärungen
SNMP
SNMP-Protokoll für den Zugriff auf die Prozessvariablen (MIB-Objekte) und Trap-Variablen.
<Teilnehmername>
Der Teilnehmername wird bei der Projektierung (Anlagenkonfiguration) festgelegt.
<Informationsparameter>
Es sind folgende Informationsparameter definiert:
Die folgenden Informationsparameter sind nur sichtbar, wenn bei der Projektierung "Kein
SNMP" ausgewählt wurde, weil das betreffende Gerät kein SNMP sondern nur den Ping
unterstützt.
Beispiel
SNMP:[OSM]&ipaddress()
Als Rückgabewert wird die projektierte IP Adresse des Teilnehmernamens mit dem Namen
OSM zurückgeliefert.
Syntax
SNMP:[SYSTEM]<Informationsparameter>()
Erklärungen
SNMP
SNMP-Protokoll für den Zugriff auf die Informationsvariablen zum lokalen System.
SYSTEM
Kennung des lokalen Systems, dieser Name ist immer fest.
<Informationsparameter>
Es sind folgende Informationsparameter definiert:
Beispiel
SNMP:[SYSTEM]&version()
Als Rückgabewert wird die Version des SIMATIC NET SNMP OPC-Servers zurückgeliefert,
zum Beispiel SIMATIC NET Core Server SNMP V6.1.1000.2815 Copyright ©SIEMENS AG
Syntax
Erste Variable für die Anzahl der aufgetretenen Ereignisse:
SNMP:[<Teilnehmername>]<Trapname>
Erklärungen
SNMP
SNMP-Protokoll für den Zugriff auf die Prozessvariablen (MIB-Objekte) und Trap-Variablen.
<Teilnehmername>
Der Teilnehmername wird bei der Projektierung (Anlagenkonfiguration) festgelegt.
<Trapname>
Name des Traps.
Beispiel
Die erste Variable liefert die Anzahl der Coldstart-Traps, die vom Partnergerät ausgelöst
wurden:
SNMP:[OSM]coldStart
Die zweite Variable liefert eine Beschreibung der Trap:
SNMP:[OSM]coldStart_description
Einleitung
Diese Konfigurationsvariante für das PROFINET-IO-Protokoll erfüllt höhere Performance-
Anforderungen. Es wird der unterlagerte PROFINET IO COM-Server als Inproc-Server in
den Outproc-OPC-Server geladen. Die Protokollbearbeitung läuft im Prozess des OPC-
Server ab; weitere Laufzeiten für Prozesswechsel und Multiprotokollbetrieb fallen weg. Der
Prozesswechsel zwischen OPC-Client und OPC-Server ist noch vorhanden.
Konfiguration
Die Aktivierung dieser performanten Konfigurationsvariante erfolgt durch die alleinige
Auswahl des PROFINET-IO-Protokolls im Konfigurationsprogramm "PC-Station einstellen".
"Symbolik" darf zusätzlich ausgewählt werden.
Bild 2-33 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl des PROFINET-IO-Protokolls
Vor-/Nachteile
Die Verwendung des performanten SIMATIC NET-OPC-Server hat jedoch den Nachteil,
dass nur der Einzelprotokollbetrieb von PROFINET IO möglich ist.
Dem stehen folgende Vorteile gegenüber:
● Höhere Performance als beim Multiprotokollbetrieb
● Einfache Konfiguration
● Zugang über die ProgID "[Link]"
● Mehrere Clients können den Server zur gleichen Zeit nutzen
● Die Stabilität des OPC-Servers ist nicht von den Clients abhängig.
Adressierung
Es wird eine sogenannte logische Adressierung verwendet.
Die logische Adresse verweist auf ein Abbild der E/A-Bereiche aller Devices in vom
Controller verwalteten Prozessabbildern. Diese Prozessabbilder sind für den E- und den
A-Bereich jeweils 4 Gbyte groß (232-1). Die Zuordnung der Prozessabbilder erfolgt mit den
PROFINET-IO-Projektierwerkzeugen. Die logische Adresse gibt den Byte-Offset des E/A-
Bereichs eines Device im Prozessabbild an.
Die logische Adressierung ist für das Lesen und Schreiben von IO-Daten ideal. Bei
geschickter Projektierung des Anwenders liegen die E/A Abbilder der Devices dicht gepackt.
Es können zusammenhängende Bereiche mehrerer Devices auf einmal gelesen und
geschrieben werden.
Bild 2-34 Lesen und Schreiben der IO-Daten von Devices in getrennt liegenden bzw.
zusammenhängenden Bereichen durch den Controller
Beispiel
Adressierungsbeispiel eines Controllers CP 1612-PROFINET-IO mit einer OPC Server
Applikation und einem IM 151.
Die Adressen sind:
● Eingang 0, Länge 4 Bit
● Ausgang 0 und 1, Länge 2 Bit
Die Diagnoseadresse der IM151 ist 16382.
Bild 2-35 Anzeige der Adressen der Baugruppen einer PC-Station im Stationsfenster von
"HW Konfig"
Die vorhandenen Eingänge und Ausgänge werden mit Adressen angezeigt. Da auch die
projektierte Datenlänge bekannt ist, wird jeweils ein vorgefertigtes Item angeboten.
In der technologischen Sicht werden unter dem Zweig "devices" alle projektierten Geräte mit
Namen (darunter deren Module) aufgelistet. Zu jedem Modul werden alle vorhanden Ein-
und Ausgänge mit Adressen angezeigt. Vorgefertigte Items sind bereits vorhanden.
2.9.5 Protokoll-ID
Die Protokoll-ID für das PROFINET-IO-Protokoll lautet "PNIO".
2.9.6 Controller-Name
Der Verbindungsname spezifiziert den Kommunikationszugang durch Angabe des
Kommunikationsprozessors, der mit dem PROFINET-Ethernet verbunden ist.
Der Controller-Name ist beim PROFINET-IO-Protokoll der Name der
Kommunikationsbaugruppe mit Angabe des Steckplatzes (Index) in der PC-Station
(Komponenten-Konfigurator).
Controller-Name = CTRL<Index>
Beispiele für Controller-Name:
● CTRL3
● CTRL5
2.9.7 PROFINET-IO-Prozessvariablen
Das Lesen und Schreiben von Items für PROFINET-IO-Prozessvariablen ist der häufigste
Anwendungsfall. Ein einfacher Zugriff wird ermöglicht. Der Anwender muss den Controller-
Namen und die Adresse aus der Projektierung vorgeben.
Der projektierte Adressraum kann im OPC-Namensraum durchsucht werden.
Eine Adressüberprüfung wird beim Hinzufügen von Items durchgeführt.
Einfache Adressierung
Syntax
Eingänge:
PNIO:[<Controller-Namen>]E<Format><Adresse>
{.<Bit|Stringlänge>}{,<Anzahl>}
Ausgänge:
PNIO:[<Controller-Namen>]A<Format><Adresse>
{.<Bit|Stringlänge>}{,<Anzahl>}
Erklärungen
PNIO
PROFINET-IO-Protokoll für den Zugriff auf die Prozessvariable.
<Gerätename> = CTRL<Index>
Protokollspezifischer Gerätename. Der Index des Gerätenamens wird bei der Konfiguration
der PC-Station festgelegt. Wertebereich 1...32
Beispiel: CTRL1
E
Kennzeichen für einen Eingang. Eingänge sind nur lesbar.
A
Kennzeichen für einen Ausgang. Ausgänge sind les- und schreibbar.
<Format>
Format der gelieferten Daten.
Durch die Formatangabe wird der Datentyp festgelegt.
Über die Automation- und Custom Schnittstelle von OPC können prinzipiell alle
angegebenen OLE-Datentypen gelesen werden. Einige Entwicklungswerkzeuge, wie z.B.
Visual Basic, bieten jedoch nur eine eingeschränkte Menge von Datentypen an.
Die folgende Tabelle listet deshalb den entsprechenden Visual Basic-Typ auf, in dem der
Variablenwert dargestellt werden kann.
Datentypen, die größer als ein Byte sind, werden im Motorola-Format interpretiert.
<Bit|Stringlänge>
Spezifizierung für den Datentyp X: Bit-Nummer im adressierten Byte.
Der Bereich liegt zwischen 0 und 7.
Spezifizierung für den Datentyp STRING: Reservierte Stringlänge.
Für die Formatbezeichner X und STRING muss zusätzlich .<Bit|Stringlänge> angegeben
werden.
<Anzahl>
Anzahl der Elemente
Das Lesen und Schreiben von Bitarrays ist nur möglich, wenn,
● die Bit-Adresse den Wert 0 hat und
● die Länge ein Vielfaches von 8 ist und
● die exakte Modullänge erreicht ist.
<Adresse>=<logische Adresse>
Einfache logische Adressierung
Logische Basisadresse des Device entsprechend der Projektierung.
Zahl Wertebereich 0...4 294 967 295.
Hinweis
Beachten Sie, dass das Schreiben und Lesen von PROFINET-IO-Daten exakt die
projektierte Längenangabe erfordert. Z. B. ein IO-Modul mit einer Länge von 4 Byte lässt
sich nicht mit nur 2 Byte über ein OPC Item PNIO:[CTRL1]AWORD0 teilweise beschreiben.
Erlaubt sind dann z. B. PNIO:[CTRL1]AB0,4 oder PNIO:[CTRL1]ADWORD0.
Erweiterte Adressierung
In der erweiterten Adresse wird der Datenbereich des gesamten zusammengehörigen
Submoduls angegeben. Diese Information ist der Projektierung zu entnehmen.
Syntax
Eingänge:
PNIO:[<Controller-Name>]E<erweiterte Adresse>,
<Format><Offset>{.<Bit|Stringlänge>}{,<Anzahl>}
Ausgänge:
PNIO:[<Controller-Name>]A<erweiterte Adresse>,
<Format><Offset>{.<Bit|Stringlänge>}{,<Anzahl>}
Zusätzliche Erklärungen
<erweiterte Adresse> =
B oder BYTE<logische Adresse>,<Bereichanzahl>
Die erweiterte Adresse beschreibt den gesamten Adressbereich eines Submoduls, innerhalb
dessen beliebige Unterbereiche bis zu einzelnen Bits relativ adressiert werden können.
Die erweiterte Adresse wird durch die Byte-Anzahl ab der logischen Basisadresse
beschrieben.
<Offset>
Byteoffset innerhalb des adressierten Submodul, an der das Element liegt, das
angesprochen werden soll.
Hinweis
Das Lesen und Schreiben einzelner Bits ist mit der erweiterten Adressierung möglich.
Weiterhin ist das Lesen und Schreiben von Feldern einzelner Bits ohne Einschränkung der
Beginn-Bit-Adresse und beliebiger Feldlänge innerhalb der erweiterten Adresse möglich.
● Ausgänge
PNIO:[CTRL3]AB7
Controller Index 3, logische Adresse 7, erstes Ausgangsbyte.
PNIO:[ CTRL1]AW0,8
Controller Index 1, logische Adresse 0, Feld der ersten 8 Worte.
PNIO:[CTRL3]AX2.0,64
Controller Index 3, logische Adresse 2.0, Feld der ersten 64 Ausgangsbits, lesbar und
schreibbar. Nur Vielfache von 8 beginnend ab Bytes.
PNIO:[ CTRL1]ASTRING100.32,3
Controller Index 1, logische Adresse 100, Feld der ersten 3 Zeichenketten von 32
Zeichen.
Erweiterte Adressierung:
PNIO:[ CTRL1]AB1,1,X0.0
Controller Index 1, erweiterten Adresse 1, Bereichsanzahl 1 Byte, Offset 0 Byte erstes
Ausgangsbit 0.
PNIO:[ CTRL1] AB2,4,X1.0,2
Controller Index 1, erweiterten Adresse 2, Bereichsanzahl 4 Bytes, Offset 1 Byte, Feld
der ersten 2 Bits ab Ausgangsbit 0.
2.9.8 PROFINET-IO-Datenstatus
Mit den Items für den Status (IOPS und IOCS) kann ein OPC-Client die jeweiligen Status-
Bytes einer logischen Adresse abfragen bzw. setzen.
Die folgende Grafik zeigt die Datenstatus und den Wertefluss im Prozessabbild.
IO-Controller IO-Device
Output
Data
APS = Remoter Status Schreiben von
eines Ausgangs aus Ausgängen
Sicht des Erzeugers IOPS
(IO-Controller)
IOCS
Input
Data
Lesen von EPS = Remoter Status
Eingängen eines Eingangs aus Sicht
IOPS des Erzeugers (IO-Device)
IOCS
ACS = Lokaler Status
eines Ausgangs aus Sicht
des Verwenders (IO-Device)
Beim Schreiben von Ausgangsdaten in das Prozessabbild durch den OPC-Client gibt dieser
den IO-Daten den remoten Status des Ausgangs aus seiner Sicht (Erzeuger) mit "APS".
Dabei teilt das Device den eigenen, lokalen Status des Ausgangs aus seiner Sicht
(Verwender) mit "ACS".
Beim Lesen von Eingangsdaten aus dem Prozessabbild durch den OPC-Client gibt dieser
den eigenen, lokalen Status des Eingangs aus seiner Sicht (Verwender) mit "ECS".
Dabei teilt das Device den remoten Status des Eingangs aus seiner Sicht (Erzeuger) mit
"EPS".
Syntax
PNIO:[<Controller-Name>]<E|A><PS|CS><Adresse>
Erklärungen
PNIO
PROFINET-IO-Protokoll für den Zugriff auf Datensätze.
<Controller-Name> = CTRL<Index>
Protokollspezifischer Controller-Name. Der Index des Controller-Namens wird bei der
Konfiguration der PC-Station festgelegt. Wertebereich 1 ... 32
E
Kennzeichen für einen Eingang. Eingänge sind nur lesbar.
A
Kennzeichen für einen Ausgang. Ausgänge sind les- und schreibbar.
PS
Kennzeichen des remoten Status (Provider-Status).
CS
Kennzeichen des lokalen Status (Consumer-Status).
oder
EPS Remoter Status Eingang
APS Remoter Status Ausgang
ECS Lokaler Status Eingang
ACS Lokaler Status Ausgang
<Adresse>=<logische Adresse>
Einfache logische Adressierung
Logische Basisadresse des Device entsprechend der Projektierung.
Zahl Wertebereich 0 ... 4 294 967 295.
Bezeichnung Erläuterung
EPS Remoter Status einer Eingangs-Adresse
Datentyp: VT_I4, ReadOnly.
Der Datenerzeuger eines Eingangs ist aus Sicht des OPC-Servers das Device. Das Device teilt hierbei
den Zustand der Eingangsdaten mit.
Das Beobachten des EPS wird pollend durchgeführt.
Die Verwendung des Items ist für eine OPC-Applikation nicht unbedingt erforderlich, da sich der Inhalt des
Items in der OPC-Quality der mit derselben Adresse verbundenen Eingangs-Items wiederfindet.
ECS Lokaler Status einer Eingangs-Adresse
Datentyp: VT_I4, ReadWrite.
Default: GOOD = 0
Der Datenverwender eines Eingangs ist aus Sicht des OPC-Servers der OPC-Client. Der OPC-Client teilt
hierbei dem Device den Zustand der Eingangsdaten aus seiner Sicht mit. Üblicherweise ist dieser Zustand
aber immer GOOD.
Beim Lesen von IO Daten wird immer der zuletzt von der OPC-Applikation geschriebene lokale Status
einer Eingangsadresse schreibend dem Partnergerät mitgegeben. Hat die OPC-Applikation das Item nicht
angelegt oder noch nicht mit einem Wert beschrieben, so wird bei einem Lesen der zugehörigen
Eingangsdaten der Wert GOOD übergeben.
Das Lesen des Status durch den OPC-Client wird über den Cache abgewickelt.
ACS Lokaler Status einer Ausgangs-Adresse
Datentyp: VT_I4, ReadOnly.
Der Datenverwender eines Ausgangs ist aus Sicht des OPC-Servers das Device. Das Device teilt hierbei
den Zustand der Ausgangsdaten aus seiner Sicht mit.
Das Lesen des Status erfolgt dadurch, dass der OPC-Client zuvor oder gleichzeitig ein mit derselben
Adresse verbundenes Ausgangs-Item erfolgreich beschreiben konnte.
Das Beobachten des ACS wird pollend durchgeführt, dabei werden der Funktion immer gleichzeitig die
zuletzt vom OPC-Client geschriebenen Ausgangsdaten übergeben. Konnte der OPC-Client noch keinen
Wert erfolgreich schreiben, so liefert das Lesen von Device einen Fehler bzw. die OPC-Quality bad.
APS Remoter Status einer Ausgangs-Adresse
Datentyp: VT_I4, ReadWrite.
Default: GOOD = 0
Der Datenerzeuger eines Ausgangs ist aus Sicht des OPC-Servers der OPC-Client. Der OPC-Client teilt
hierbei dem Device den Zustand der Ausgangsdaten aus seiner Sicht mit. Normalerweise ist dieser
Zustand aber immer GOOD.
Beim Schreiben von IO Daten werden immer der zuletzt von der OPC-Applikation geschriebene lokale
Status der Ausgangsdaten und die Ausgangsdaten einer Ausgangsadresse schreibend mitgegeben. Hat
die OPC-Applikation das IO-Item nicht angelegt oder noch keinen Ausgangswert erfolgreich geschrieben,
so wird bei einem Schreiben der zugehörigen Ausgangsdaten der Wert GOOD übergeben.
Beim Schreiben eines neuen Status durch den OPC-Client wird der Datenwert verwendet, der vom OPC-
Client zuvor (oder gleichzeitig) mit der Adresse des verbundenen Ausgangs-Items erfolgreich beschrieben
wurde.
Konnte der OPC-Client noch keinen Wert erfolgreich schreiben, so liefert das Schreiben des Items den
speziellen Rückgabewert (S_OPC_COREPNIOSTATUS). Der geschriebene Status wird dann beim
nächsten erfolgreichen Schreiben von dem zugehörigen Ausgangs-Item geschrieben.
0 = GOOD
1 = BAD
2.9.9 PROFINET-IO-Datensätze
Mit den Datensatzfunktionen können gerätespezifische Informationen ausgelesen oder
Parameter geschrieben werden.
Die Bedeutung der Datensätze ist durch den Hersteller festgelegt. Sie können
beispielsweise für Konfigurationsdaten eines Antriebs genutzt werden. Der OPC-Server
kann beim Anmelden einer Datensatz-Variablen nur die Syntax auf Korrektheit überprüfen,
aber nicht, ob auf Grund der Projektierung des Device die Variable im Partnergerät gültig
und die Größe des Datensatzes ausreichend ist.
Syntax
PNIO:[<Controller-Name>]<E|A>DS<Adresse>,DATA<DatensatzIndex>,
{<DatensatzLänge>}{,<Subelement>}
Erklärungen
PNIO
PROFINET-IO-Protokoll für den Zugriff auf Datensätze.
<Controller-Name> = CTRL<Index>
Protokollspezifischer Controller-Name. Der Index des Controller-Namens wird bei der
Konfiguration der PC-Station festgelegt.
Wertebereich: 1 ... 32
E
Kennzeichen für einen Eingang.
A
Kennzeichen für einen Ausgang.
DS
Kennzeichen für einen Datensatz.
<Adresse>=<logische Adresse>
Einfache logische Adressierung
Logische Basisadresse des Device entsprechend der Projektierung.
Zahl Wertebereich 0 ... 4 294 967 295.
DATA
Kennzeichen für Daten.
● <DatensatzIndex>
Datensatzindex, gerätespezifischer Parameter.
Wertebereich: 0 ... 65535).
Einige in der PROFINET IO Spezifikation standardisierte Datensatzindices sind:
0x8030 = 32816 Lesen Input Data Object
0x8031 = 32817 Lesen Output Data Object
0x8020 = 32800 Schreiben von Ersatzwerten für Output Data Object
60k+10 = 0xF00A = 61450 Lesen Diagnoseinformationen IO Device-Ebene
56k+10 = 0xE00A = 57354 Lesen Diagnoseinformationen AR Ebene
48k+10 = 0xC00A = 49162 Lesen Diagnoseinformationen Slot Ebene
32k+10 = 0x800A = 32788 Lesen Diagnoseinformationen Subslot Ebene
● <DatensatzLänge>
Datensatzlänge. Beim Lesen von Datensätzen kann dem Device die exakte Länge des
zu lesenden Datensatzes in Byte als Vorgabe mitgeteilt werden. Der OPC-Client muss
dann die Länge spezifizieren. Bei einer Längenvorgabe kann das Item auch geschrieben
werden. Ohne Längenvorgabe kann das Item nicht geschrieben werden. Beim Lesen
kann die Datensatzlänge optional weggelassen werden. Dann wird die Länge des Feldes
der (Rückgabe-)Werte variabel zurückgeliefert. Der Anwender muss nicht wissen wie
groß der Datensatz ist (Wertebereich: 0 ... 65535).
● <Subelement>
Um dem Anwender bei der Strukturierung der Datensätze zu unterstützen, kann er
daraus einen oder mehrere Teilbereiche selektieren. Dazu verwendet er die ebenfalls für
die IO-Prozessvariable gültigen Datentypen, die weiter oben beschrieben sind.
Lesen: Da die Struktur und Länge des vom Partner gelesenen Datensatzes nicht fest
sein muss, ist es nicht verboten, Daten außerhalb des Bereichs zu definieren und
anzufordern. Kann der entsprechende Bereich bei einem Empfang von Daten nicht mehr
ausgefüllt werden, wechselt die Quality der Variablen entsprechend.
Schreiben: Beim Schreibzugriff auf einen Teilbereich wird immer der ganze Datensatz
abgeschickt. Werden innerhalb eines OPC Schreibauftrags mehrere Teilbereiche des
Datensatzes geschrieben, wird er erst abgeschickt, nachdem alle seine Teilbereiche
aktualisiert wurden.
Im Datensatz werden die Datentypen im Motorola-Format interpretiert und entsprechend
in das Intel-Format konvertiert.
<Subelement>=<Format><Offset>{.<Bit|Stringlänge>}{,<Anzahl>}
● <Offset>
Byteoffset des Subelements relativ zum adressierten Datensatz.
Hinweis
Das Lesen und Schreiben einzelner Bits ist auch für Datensätze möglich.
Weiterhin ist das Lesen und Schreiben von Feldern einzelner Bits ohne Einschränkung
der Beginnadresse und beliebiger Feldlänge innerhalb des Datensatzes möglich.
Hinweis
Durch die optionale Angabe von Typ, Adresse und Anzahl können Sie strukturiert auf
Teilbereiche von Datensätzen zugreifen.
Variablen für Eingangs- oder Ausgangsdatensätze mit unterschiedlichem Controller-
Namens oder unterschiedlicher Adresse oder unterschiedlichem Datensatzindex oder
unterschiedlicher Länge verfügen über unabhängige Speicherbereiche.
Der Ausgangsdatenpuffer wird allokiert und mit Null initialisiert, wenn ein Item für einen
unabhängigen Speicherbereich angelegt wird. Ein Schreibauftrag auf ein ADS-Item wird
in einen internen Schreibpuffer geschrieben und übertragen.
Der OPC-Lese-Cache ist ein separater Puffer, welcher nur über Leseaufträge über
Device aktualisiert wird.
Die Übertragung der Datensätze erfolgt azyklisch. Parallele Netzaufträge für die gleichen
Daten sind möglich. Es wird immer der vollständige Sendedatensatz übertragen. Dies gilt
auch bei Subelementzugriff oder wenn mehrere Clients gleichzeitig dieses Item
beschreiben.
Ein paralleles Schreiben des gleichen Sendedatensatzes oder von Teilbereichen des
Sendedatensatzes durch mehrere Clients kann zu Inkonsistenzen führen. Es wird
deshalb empfohlen, immer den vollständigen Datensatz zu lesen oder zu schreiben.
PNIO:[CTRL1]EDS10,DATA32768
Controller Index 1, Modul Adresse 10, Datensatzindex 32768, Länge nicht vorgegeben, Item
nur lesbar. Lesen der Diagnoseinformationen eines Slot.
PNIO:[CTRL1]EDS16382,DATA61452
Controller Index 1, Diagnose-(Basis-) Adresse 16832, Datensatzindex 61452, Länge nicht
vorgegeben, Item nur lesbar. Lesen der Diagnoseinformationen herstellerspezifisch, Block,
Slot, Kanal und Daten.
PNIO:[CTRL1]ADS10,DATA32768,22,B0,10
Controller Index 1, logische Adresse 10, Datensatzindex 32768, Länge 22 Byte vorgegeben,
Item ist schreib- und lesbar, Teilbereich der ersten 10 Bytes. Diagnoseinformationen eines
Slot.
PNIO:[CTRL1]ADS10,DATA32768,22,X0.0,13
Controller Index 1, logische Adresse 10, Datensatzindex 32768, Länge 22 Byte vorgegeben,
Item ist schreib- und lesbar, Teilbereich der ersten 13 Bits ab Bit 0. Diagnoseinformationen
eines Slot.
PNIO:[Ctrl2]EDS11000,DATA2147483648,80,X0.0,1
Dieses Item ist in eine OPC-Gruppe einfügbar, wenngleich auch keine gute Qualität
erreichbar ist, da dieser Index nicht projektierbar ist und außerhalb des Wertebreichs liegt.
Syntax
PNIO:[<Controller-Name>]&<Informationsparameter>
Erklärungen
PNIO
PROFINET-IO-Protokoll für den Zugriff auf die Prozessvariable.
<Controller-Name>
Protokollspezifischer Controller-Name. Der Index des Controller-Namens wird bei der
Konfiguration der PC-Station festgelegt.
&<Informationsparameter>
Mögliche Werte sind:
● deviceactivate()
● deviceactivateval()
● devicedeactivate()
● devicedeactivateval()
● mode()
● modeval()
&deviceactivate()
Aktivieren eines Device.
Diese Betriebsart kann nur geschrieben werden. Das Einstellen der Betriebsart durch
Schreiben eines der unten genannten Werte ist nur in Abhängigkeit von der PROFINET-IO-
Anwendungsumgebung möglich.
Es müssen die erlaubten Betriebszustandsänderungen beachtet werden. Diese sind:
INACTIVE → ACTIVE
Eingabewerte als String:
Logische Adresse des Device entsprechend der Projektierung und das Kennzeichen für
einen Eingang E oder Ausgang A : <A|E><logische Diagnoseadresse>.
Beispiel: E16373.
&deviceactivateval()
Aktivieren eines Device mit Zahlenwerten.
Datentyp VT_ARRAY | VT_I4, WriteOnly. Arraylänge 2 Elemente (EA-Flag und logische
Adresse).
Eingabewerte als Feld von 2 Zahlenwerten:
Das erste Element des Feldes ist immer ein Flag, welches angibt, ob es sich bei der Adresse
um eine Eingangs- oder Ausgangsadresse handelt.
0 = Eingangsadresse
1 = Ausgangsadresse
Das zweite Element beschreibt eine beliebige logische Adresse des Device.
Beispiel: Wert{0|16375} entspricht E16375.
Hinweis
Auf Grund des Aktivierens des Device kann protokollseitig der Alarm "Stationswiederkehr"
ausgelöst werden.
&devicedeactivate()
Deaktivieren eines Device.
Diese Betriebsart kann nur geschrieben werden. Das Einstellen der Betriebsart durch
Schreiben eines der unten genannten Werte ist nur in Abhängigkeit von der PROFINET-IO-
Anwendungsumgebung möglich.
Es müssen die erlaubten Betriebszustandsänderungen beachtet werden.
Diese sind:
ACTIVE → INACTIVE
Eingabewerte als String:
Logische Adresse des Device entsprechend der Projektierung und das Kennzeichen für
einen Eingang E oder Ausgang A : <A|E><logische Diagnoseadresse>.
Beispiel: E16373.
Es kann auch die die Diagnoseadresse eines Gerätes gewählt werden.
&devicedeactivateval()
Deaktivieren eines Devices mit Zahlenwerten.
Datentyp: VT_ARRAY | VT_I4, WriteOnly.
Feldlänge: 2 Elemente (EA-Flag und logische Adresse).
Das erste Element des Arrays ist immer ein Flag, welches angibt, ob es sich bei der Adresse
um eine Eingangs- oder Ausgangsadresse handelt.
0 = Eingangsadresse
1 = Ausgangsadresse
Das zweite Element beschreibt eine beliebige logische Adresse des Device.
Beispiel: Wert{0|16373} entspricht E16373.
Hinweis
Auf Grund des Deaktivierens des Device kann protokollseitig der Alarm "Stationsausfall"
ausgelöst werden.
&mode()
Betriebszustand des Controllers ermitteln oder setzen.
Beim Schreiben eines neuen Betriebszustands sind alle Betriebszustandsänderungen
erlaubt:
OFFLINE ↔ CLEAR ↔ OPERATE
oder
OFFLINE ↔ OPERATE
Damit ist beispielsweise auch ein direkter Wechsel von OFFLINE nach OPERATE und
umgekehrt möglich.
Der Zustand OFFLINE darf gesetzt werden, z. B. um den Controller zu stoppen.
Ausschließlich im Anlauf, wenn sich der erste Client mit dem OPC-Server verbindet, wird
nicht automatisch in den Zustand CLEAR, sondern in den Zustand OPERATE gewechselt,
falls mit NCM "PNIO Controller automatisch auf OPERATE setzen" projektiert wurde.
Beim Beenden des OPC-Servers wird selbständig der Zustand OFFLINE gesetzt.
Datentyp VT_BSTR, Schreibbar, Lesbar.
● OFFLINE
● CLEAR
● OPERATE
&modeval()
Betriebszustand des Controllers ermitteln oder setzen als Zahl.
Datentyp: VT_UI4, Schreibbar, Lesbar
Wertebereich Bedeutung
0 OFFLINE
1 CLEAR
2 OPERATE
Syntax
PNIO:[SYSTEM]&version()
Erklärung
Liefert eine Versionskennung für den PROFINET IO OPC-Server, hier die Zeichenfolge, z.B.
SIMATIC NET Core Server PNIO V [Link] Copyright 2010
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only
Einleitung
Der folgende Abschnitt beschreibt eine Konfigurationsvariante für das PROFINET-IO-
Protokoll, die auch OPC UA unterstützt. Hierfür werden die PROFINET-IO-COM OPC-Data-
Access-Server als Outproc-OPC-Server eingerichtet.
Konfiguration
Die Aktivierung erfolgt implizit durch die Auswahl der Optionen "OPC UA" und "PROFINET
IO" im Konfigurationsprogramm "PC-Station einstellen".
Bild 2-38 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl von OPC UA für das PROFINET-
IO-Protokoll
Vorteile / Nachteile
Bei Verwendung des PROFINET-IO-OPC-UA-Servers ist nur der Outproc-Betrieb von
PROFINET IO möglich. Der PROFINET-IO-OPC-UA-Server-Prozess muss zum Erhalt der
Empfangsbereitsschaft in Betrieb sein. Ein Beenden des PROFINET-IO-OPC-UA-Servers -
auch nach Abmeldung aller OPC-UA-Clients - wird nicht ausgeführt und darf nicht
ausgeführt werden.
Dem stehen folgende Vorteile gegenüber:
● Es ist keine COM/DCOM-Konfiguration mehr nötig.
● Performante, sichere Kommunikation
● Für Ereignisse und Datenzugriffe ist nur noch ein Server erforderlich.
● Mehrere Clients können den Server zur gleichen Zeit nutzen.
Wenn Sie die Optionskästchen "OPC UA" und "PROFINET IO" aktiviert haben, wird der
PROFINET-IO-UA-Server immer gestartet. Das hat bei einer entsprechenden PROFINET-
IO-Projektierung zur Folge, dass der PROFINET-IO-Controller im OFFLINE-Betrieb ist. Erst
wenn mindestens ein OPC-UA-Client sich auf den Server verbunden hat, wechselt der
PROFINET-IO-Controller in den OPERATE-Betrieb.
Server-URL
Für das native binäre TCP-Protokoll gibt es zwei Möglichkeiten der Server-Adressierung:
● Direkte Adressierung:
– [Link]://<hostname>:4847
oder
– [Link]://<IP-Adresse>:4847
oder
– [Link]://localhost:4847
oder
– [Link]:\\.\pipe\localpnio
Der PNIO-OPC-UA-Server hat den Port 4847.
Der performante lokale Pipe-Endpunkt erfordert die Verwendung des SIMATIC NET UA
Stacks im UA Client und die Aktivierung des Pipe-Endpunktes im
Konfigurationsprogramm "PC-Station einstellen" unter "OPC Protokollauswahl".
● Die URL des PROFINET-IO-OPC-UA-Servers kann auch über den OPC-UA-Discovery-
Dienst gefunden werden.
● Die Eingabe zum Auffinden des Discovery-Servers lautet:
– [Link]://<hostname>:4840
oder
– [Link]://<IP-Adresse>:4840
oder
– [Link]
oder
– [Link]
Der Discovery-Server hat den Port 4840.
IPv6-Adresse
Für die IP-Adresse kann auch eine IPv6-Adresse verwendet werden. Die Adresse muss in
Klammern angegeben werden, z.B. [fe80::e499:b710:5975:73d8%14].
Der Discovery-Dienst auf dem angesprochenen Host meldet die Endpunkte der Server, d.h.
deren Sicherheitsanforderungen und Protokollunterstützung.
Die Server-URL "[Link]://<hostname>:4847" des PROFINET-IO-OPC-UA-Servers bietet
folgende Endpunkte:
● Endpunkt im Sicherheitsmodus "SignAndEncrypt":
Zur Kommunikation mit dem Server werden Signierung und Verschlüsselung gefordert.
Die Kommunikation ist durch Zertifikateaustausch und Passworteingabe geschützt.
Zusätzlich zum Sicherheitsmodus wird die Sicherheitsrichtlinie
"[Link] angezeigt.
● Endpunkt im Sicherheitsmodus "keiner":
In diesem Modus werden keine Sicherheitsfunktionen vom Server gefordert
(Sicherheitsrichtlinie "None").
Weitere Details zu den Sicherheitsfunktionen finden Sie im Kapitel "OPC UA-Schnittstelle
programmieren (Seite 392)".
Die Sicherheitsrichtlinien "Basic128Rsa18" und "None" finden Sie in der UA-Spezifikation
der OPC Foundation unter folgender Internet-Adresse:
"[Link] > "Specifications" > "Part 7".
Bild 2-39 Das Dialogfeld "Endpunkte der UA-Server finden" des OPC Scout V10
Der OPC Scout V10 beinhaltet eine Liste der OPC-UA-Endpunkte. Diese sind persistent.
Der Discovery-Dienst auf dem angesprochenen Host meldet dann die registrierten OPC-UA-
Server sowie deren Ports und Sicherheitsmodi.
Weitere Details finden Sie in der Online-Hilfe des OPC Scout V10.
Abhängig von der Konfiguration kann sich in Ihrem OPC-UA-Client bei den Indizes 2 bis 4
die Zuordnung zwischen Namensraum-Index und Namensraum-Bezeichner ändern. Der
Bezeichner muss daher immer eindeutig sein.
Die Namensraum-Indizes 0 und 1 sind reserviert und in Ihrer Bedeutung von der OPC
Foundation spezifiziert.
Die Zuordnung der restlichen Namensraum-Indizies zu den Bezeichnern (Namenraum-URI)
muss zu Beginn einer OPC-UA-Session vom Client unter Angabe des Bezeichners über die
Datenvariable "NamespaceArray" ermittelt werden. Die Bezeichner PNIOTYPES: PNIO:
PNIOCOM: sind beim PROFINET-IO-OPC-UA-Server immer vorhanden.
Die vorhandenen Eingänge und Ausgänge werden mit Adressen angezeigt. Da auch die
projektierte Datenlänge bekannt ist, wird jeweils eine vorgefertigte Variable angeboten.
In der technologischen Sicht werden unter dem Zweig "devices" alle projektierten Geräte mit
Namen (darunter deren Module) aufgelistet. Zu jedem Modul werden alle vorhandenen Ein-
und Ausgänge mit Adressen angezeigt. Vorgefertigte Items sind bereits vorhanden.
Beispiele
● NodeId:
– Namensraum-URI:
PNIO:
(= Namensraum-Index 3) für [Link]
– Bezeichner
ctrl1.q0.0,b
● NodeId:
– Namensraum-URI:
PNIOCOM:
(= Namensraum-Index 4)
– Bezeichner
PNIO:[ctrl1]AB0
Syntax
Die NodeIds aller OPC-UA-Objekte haben folgenden Aufbau:
<controllerobjekt>"."<objekt>"."<unterobjekt>"."<property>
Ein Objekt kann weitere Unterobjekte beinhalten.
Eine nicht interpretierbare NodeId wird mit einem Fehler zurückgewiesen. Die Groß- oder
Kleinschreibung der Buchstaben "A-Z" wird bei allen Objekten ignoriert.
Symbolische Objektdarstellung
Die OPC-UA-Spezifikation empfiehlt zur hierarchischen Beschreibung des Adressraums eine
einheitliche Symboldarstellung. Die in diesem Dokument verwendeten Symbole sind:
2EMHFW %DVH2EMHFW7\SH
'DWD7\SH
+DV6XEW\SH
2UJDQL]HV
2I7\SH
$WWULEXWHV
+DV&RPSRQHQW 9DULDEOH
+DV3URSHUW\ 3URSHUW\
+DV&RPSRQHQW
2EMHFW
+DV3URSHUW\
+DV(YHQW6RXUFH
3URSHUW\
+DV&RPSRQHQW
(YHQW2EMHFW
0HWKRG
Alle protokollspezifischen Objekte sind immer einem Board zugeordnet, bei PROFINET IO
ist dies der PROFINET-IO-Controller.
Projektierter PROFINET-IO-Controller
<PNIO-Controller>:= "ctrl"<unsigned32>
<ControllerObject>:= <PNIO-Controller>
<ControllerVariable>:= <ControllerObject>".mode"|
<ControllerObject>".controllerid"
Beispiele:
[Link]
[Link]
Datenvariable Beschreibung
mode Betriebszustand des Controllers ermitteln oder setzen.
Datenvariable vom UA-Typ MultistateDiscreteType, ReadWrite.
0 OFFLINE
1 CLEAR
2 OPERATE
Beim Schreiben eines neuen Betriebszustandes müssen die erlaubten
Betriebszustandsänderungen beachtet werden. Diese sind:
OFFLINE ↔ CLEAR ↔ OPERATE
Im Fehlerfall wird ein Kommunikationsfehler zurückgegeben.
Der Zustand CLEAR wird in der Regel nur von DP-Slaves umgesetzt, die über einen IE-PB Link
(Verbinder zwischen Ethernet und PROFIBUS) als PROFINET-IO-Devices emuliert werden.
Abhängig von Konfigurationswert AutoOnline wird der Controller vom OPC-Server beim ersten
Anmelden eines Clients selbständig in den Modus OPERATE gefahren. Beim Abmelden des
letzten Clients wird der Controller unabhängig vom Konfigurationswert AutoOnline automatisch in
den Modus OFFLINE gefahren. Beim unplanmäßigen Beenden eines Clients (Absturz) wird dies
vom UA-Protokollstack entsprechend der zwischen Client und Server ausgehandelten KeepAlive-
Mechanismen erkannt, nach der entsprechenden Wartezeit wird der Client automatisch vom
Protokollstack abgemeldet.
Beim Herunterfahren des OPC-Servers wird der Controller beendet.
modeval Das unter COM verfügbare Item &modeval() entfällt, da mode als enumerierter Typ abgebildet
wird.
controllerid Boardnummer = Steckplatz im Komponenten-Konfigurator
Property vom Typ UInt32, ReadOnly
Variable zu Informationszwecken
2.10.7 Device-Objekte
<PNIO-Device>:= "dev"<unsigned32>
//Device-Nummer = entsprechend STEP7
<DeviceObject>:= <ControllerObject>"."<PNIO-Device>
<DeviceStatusObject>:= <DeviceObject>".status"
Das PROFINET-IO-Device-Objekt hat die Aufgabe, eine globale Statusinformation über das
Device bereitzustellen. Der Device-Status wird in einem untergeordneten Objekt verwaltet
und bietet dazu auch zwei Methoden an, um das Device mit allen seinen Modulen zu
aktivieren bzw. zu deaktivieren.
<DeviceVariable>:= <DeviceObject>".deviceid"
<DeviceStatusVariable>:= <DeviceStatusObject>".status"
<DeviceStatusMethode>:= <DeviceStatusObject>".deviceactivate()"|
<DeviceStatusObject>".devicedeactivate()"
Beispiele:
[Link]
[Link]
[Link]".deviceactivate()"
[Link]".devicedeactivate()"
2.10.9 PROFINET-IO-Modulobjekte
<Module>: = <ControllerObject>"."<InputModule>|
<ControllerObject>"."<OutputModule>
<LAddress>: = <unsigned32>
<InputModule>: = "i"<LAddress>
<OutputModule>: = "q"<LAddress>
<ControllerIOVariable>: = <IOModuleVariable>|
<IOVariable>|
<IOXSVariable>
<IOModuleVariable>:= <Module>".moduleid"|
<Module>".moduletype"|
<Module>".length"|
<Module>".deviceid"
Beispiele:
[Link]
[Link]
[Link]
[Link]
Datentypenbeschreibung
Beispiele:
<IOXSVariable>:= <IPSVariable>|
<OPSVariable>|
<ICSVariable>|
<OCSVariable>
<IPSVariable>:= <InputModule>".ps" // Provider-Status Eingang, lesbar
<OPSVariable>:= <OutputModule>".ps" // Provider-Status Ausgang, les- und
schreibbar
<ICSVariable>:= <InputModule>".cs" // Consumer-Status Eingang, les- und
schreibbar
<OCSVariable>:= <OutputModule>".cs" // Consumer-Status Ausgang, lesbar
Mit den Items für den Status (IOPS und IOCS) kann ein OPC-Client die jeweiligen Status-
Bytes einer logischen Adresse abfragen bzw. setzen.
Die folgende Grafik zeigt die Datenstatus und den Wertefluss im Prozessabbild.
IO-Controller IO-Device
Output
Data
OPS = Remoter Status Schreiben von
eines Ausgangs aus Ausgängen
Sicht des Erzeugers IOPS
(IO-Controller)
IOCS
Input
Data
Lesen von IPS = Remoter Status
Eingängen eines Eingangs aus Sicht
IOPS des Erzeugers (IO-Device)
IOCS
OCS = Lokaler Status
eines Ausgangs aus Sicht
des Verwenders (IO-Device)
Beim Schreiben von Ausgangsdaten in das Prozessabbild durch den OPC-Client gibt dieser
den IO-Daten den remoten Status des Ausgangs aus seiner Sicht (Erzeuger) mit "OPS".
Dabei teilt das Device den eigenen, lokalen Status des Ausgangs aus seiner Sicht
(Verwender) mit "OCS".
Beim Lesen von Eingangsdaten aus dem Prozessabbild durch den OPC-Client gibt dieser
den eigenen, lokalen Status des Eingangs aus seiner Sicht (Verwender) mit "ICS".
Dabei teilt das Device den remoten Status des Eingangs aus seiner Sicht (Erzeuger) mit
"IPS".
Bezeichnung Erläuterung
IPS Remoter Status einer Eingangs-Adresse
Datenvariable vom UA-Typ MultistateDiscreteType, ReadOnly.
Der Provider eines Eingangs ist das Device. Das Device teilt hierbei den Zustand der Eingangsdaten mit.
Das Beobachten des IPS wird pollend durchgeführt.
Die Verwendung des Items ist für eine OPC-Applikation nicht unbedingt erforderlich, da sich der Inhalt des
Items in der OPC-Quality der mit derselben Adresse verbundenen Eingangs-Items wiederfindet.
ICS Lokaler Status einer Eingangs-Adresse
Datenvariable vom UA-Typ MultistateDiscreteType, ReadWrite.
Default: GOOD = 0
Der Datenverwender eines Eingangs ist der OPC-Client. Der OPC-Client teilt hierbei dem Device den
Zustand der Eingangsdaten aus seiner Sicht mit. Üblicherweise ist dieser Zustand aber immer GOOD.
Beim Lesen von IO Daten wird immer der zuletzt von der OPC-Applikation geschriebene lokale Status
einer Eingangsadresse schreibend dem Partnergerät mitgegeben. Hat die OPC-Applikation das Item nicht
angelegt oder noch nicht mit einem Wert beschrieben, so wird bei einem Lesen der zugehörigen
Eingangsdaten der Wert GOOD übergeben.
Das Lesen des Status durch den OPC-Client wird über den Cache abgewickelt.
OCS Lokaler Status einer Ausgangs-Adresse
Datenvariable vom UA-Typ MultistateDiscreteType, ReadOnly.
Der Datenverwender eines Ausgangs ist das Device. Das Device teilt hierbei den Zustand der
Ausgangsdaten aus seiner Sicht mit.
Das Lesen des Status erfolgt dadurch, dass der OPC-Client zuvor oder gleichzeitig ein mit derselben
Adresse verbundenes Ausgangs-Item erfolgreich beschreiben konnte.
Das Beobachten des OCS wird pollend durchgeführt, dabei werden der Funktion immer gleichzeitig die
zuletzt vom OPC-Client geschriebenen Ausgangsdaten übergeben. Konnte der OPC-Client noch keinen
Wert erfolgreich schreiben, so liefert das Lesen von Device einen Fehler bzw. die OPC-Quality bad.
OPS Remoter Status einer Ausgangs-Adresse
Datenvariable vom UA-Typ MultistateDiscreteType, ReadWrite.
Default: GOOD = 0
Der Datenerzeuger eines Ausgangs ist der OPC-Client. Der OPC-Client teilt hierbei dem Device den
Zustand der Ausgangsdaten aus seiner Sicht mit. Normalerweise ist dieser Zustand aber immer GOOD.
Beim Schreiben von IO Daten werden immer der zuletzt von der OPC-Applikation geschriebene lokale
Status der Ausgangsdaten und die Ausgangsdaten einer Ausgangsadresse schreibend mitgegeben. Hat
die OPC-Applikation das IO-Item nicht angelegt oder noch keinen Ausgangswert erfolgreich geschrieben,
so wird bei einem Schreiben der zugehörigen Ausgangsdaten der Wert GOOD übergeben.
Beim Schreiben eines neuen Status durch den OPC-Client wird der Datenwert verwendet, der vom OPC-
Client zuvor (oder gleichzeitig) mit der Adresse des verbundenen Ausgangs-Items erfolgreich beschrieben
wurde.
Konnte der OPC-Client noch keinen Wert erfolgreich schreiben, so liefert das Schreiben des Items den
speziellen Statuscode OPCUA_GoodClamped. Der geschriebene Status wird dann beim nächsten
erfolgreichen Schreiben von dem zugehörigen Ausgangs-Item geschrieben.
<ControllerDRVariable>:= <ControllerObject>"."<DRVariable>
<DRVariable>:= <DRReadOnlyVariable>|
<DRReadWriteVariable>
<DRReadWriteVariable>:= <DRModule>| //Gesamter
<DRModule>","<DRLength>| Datensatz
<DRModule>","<DRLength>"." //Subelemente
<Offset>{","<PNIOType>}|
<DRModule>","<DRLength>"." //Subelemente, Feld
<Offset>","<PNIOType>","
<CountElements>
<DRReadOnlyVariable>:= <DRModule>"." //Subelemente
<Offset>{","<PNIOType>}|
<DRModule>"." //Subelemente, Feld
<Offset>","<PNIOType>","
<CountElements>
<DRModule>:= <Module>"."<DR>
<DR>:= "dr"<unsigned32> //Datensatznummer
<DRLength>:= <unsigned16> //Datensatzlänge
<Module>:= "i"|"q"<LAdress>
Ohne Längenangabe ist das Lesen und Schreiben von Datensätzen auf 480 Bytes
beschränkt.
Subelementadressierung
Die Client-seitige Strukturierung von Anwenderdatensätzen wird durch die
Subelementadressierung unterstützt. Dabei werden aus dem Datensatz Teilbereiche
adressiert.
Lesen: Ohne Längenangabe des Datensatzes ist die Adressierung eines Subelements
möglich. Da die gerätespezifische Länge des Datensatzes vorher nicht bekannt ist oder
sogar wechselt, können Subelemente auch außerhalb der tatsächlich erhaltenen Länge
verwendet werden. Der OPC-UA-Statuscode zeigt dann allerdings einen Fehler.
Schreiben: Das Schreiben einzelner oder gleichzeitig mehrerer Subelemente über den
gesamten Datensatz erfolgt konsistent über den mit der Längenangabe spezifizierten
Bereich. Etwaige Lücken werden mit den zuletzt geschriebenen Werten (nicht gelesenen)
ergänzt, bzw. mit "0"-Werten, falls dieser Datensatz noch nicht geschrieben wurde.
ctrl1.i10.dr61450
Datensatz-Diagnoseinformationen des Device mit
logischer Eingangsadresse 10. Gesamter Datensatz,
Byte[], ReadWrite.
ctrl1.q99.dr32788,100.8,w,3
Datensatz mit Datensatzlänge,
Subelementadressierung ab Byte 8, UInt16[3],
ReadWrite
ctrl1.q99.dr32788.8,dw
Datensatz ohne Datensatzlänge,
Subelementadressierung ab Byte 8, UInt32, ReadOnly
[Link] Template-Datenvariablen
Sie haben mit den IO-Datenvariablen und Datensatz-Datenvariablen flexible Werkzeuge, um
die Prozessdaten Ihrer Anlage in den von Ihnen gewünschten Datenformaten zu erhalten.
Zwar wird der OPC-PROFINET-IO-UA-Server einige IO-Datenvariablen im Namensraum
anbieten, jedoch bleibt die Vielfalt der möglichen Datenformatoptionen dabei außen vor.
Bereits ein Modul mit der Länge eines einzelnen Bytes besitzt bereits ca. 40 verschiedene
Datenformatoptionen – angefangen vom Byte, SByte, Arrays mit einem Element davon,
einzelne Bits, Felder von Bits mit bis zu 8 Feldelementen an unterschiedlichen Bitoffsets
beginnend usw.
Es wird das Konzept der Template-Datenvariablen umgesetzt. Die Idee der
Template-Datenvariablen ist, einen Satz Datenvariablen ohne Prozesszugriff anzubieten.
Deren lesbare NodeIDs ähneln sich jedoch denen von realen Datenvariablen, um mit einem
für OPC-UA-Clients typischen Texteingabefeld durch Ändern einiger weniger Zeichen auf
reale Prozessdaten zuzugreifen.
Beispiel:
Durch Ersetzen von <x> mit der Moduladresse und <o> dem Offset innerhalb des Moduls
erhalten Sie eine gültige NodeID. → ctrl4.i8.15,dw
Weiteres Beispiel:
→ ctrl4.i125.dr61450,100.0,c,100
Ein großer Vorteil dieses Konzepts ist, dass es von nahezu allen OPC-UA-Clients eingesetzt
werden kann, ohne dass Anpassungen der Clients erforderlich sind. Ein weiterer Vorteil ist,
dass die Realisierung vergleichsweise wenig aufwändig ist und dieses Konzept auch auf
andere Protokollserver einschließlich COM der SIMATIC NET OPC-Umgebung übertragen
werden kann.
Hinweis
Die Verwendbarkeit von PROFINET IO Template-Datenvariablen kann im
Konfigurationsprogramm "PC-Station einstellen" unter "OPC-Protokollauswahl" aktiviert und
deaktiviert werden.
NodeID: "ctrl1.i<x>,<o>,b"
Browse-Name: "Template Input Byte"
Beschreibung: "replace:
<x> by the address of the module.
<o> by the offset within the module"
<ControllerTemplateVariable>: <ControllerObject>"."<InputTemplateVariable>|
= <ControllerObject>"."<OutputTemplateVariable>|
<ControllerObject>"."<DRTemplateVariable>
<PNIOTypeTemplate>:= "x<bit>"| //Bit mit Bitadresse
b"|"w"|"dw"|"lw"| //unsigned-Typen
"c"|"i"|"di"|"li"| //signed-Typen
"r"|"lr"| //Real-Typen
"s<sl>" //String mit Länge
<DatatypeTemplate>:= "<o>,"<PNIOTypeTemplate>| //Skalar
"<o>,"<PNIOTypeTemplate>",<c> //Feld
<InputTemplateVariable>:= "i<x>."<DatatypeTemplate>
<OutputTemplateVariable>:= "q<x>."<DatatypeTemplate>
<DRTemplateVariable>:= "i<x>.dr<dr>,<l>."<DatatypeTemplate>|
"q<x>.dr<dr>,<l>."<DatatypeTemplate>
2.11 Server-Diagnose
2.11.1 Protokoll-ID
2.11.2 OPC-DA-Server-Diagnose-Items
Server:
Capabilities
MinSupportedUpdateRate
DiagnosticsSummary
CurrentSessionCount
CumulatedSessionCount
CurrentSubscriptionCount
CumulatedSubscriptionCount
VendorInfo
ComponentVersion
VendorInfoString
Einleitung
Dieses Kapitel beschreibt die Verwendung blockorientierter Dienste mit OPC. Sie erfahren,
wie Datenpuffer auf OPC-Variablen abgebildet werden. Außerdem lesen Sie, welche
Besonderheiten bei der Verwendung von TCP/IP native im Zusammenhang mit
blockorientierten Diensten zu berücksichtigen sind.
Hinweis
Die S7-Blockdienste sind derzeit nur für Geräte der Baureihe S7-400, M7 und PC-Stationen
verfügbar. Die S5-Blockdienste sind für nahezu alle Geräte der Baureihe S5, S7 und PC-
Stationen verfügbar. Beachten Sie die Hinweise über die Kommunikationspartner bezüglich
der zukünftigen Unterstützung der Blockdienste in der Liesmich-Datei auf dem
Hauptverzeichnis der SIMATIC NET CD.
Unterstützte Dienste
Bei blockorientierten Diensten werden Datenpuffer von einem Sender über das
Kommunikationssystem an einen Empfänger gesendet.
Folgende Protokolle unterstützen blockorientierte Dienste:
● S7-Kommunikation (BSEND/BRECEIVE)
● Offene Kommunikationsdienste (SEND/RECEIVE) über Ethernet
● Offene Kommunikationsdienste (SEND/RECEIVE) über PROFIBUS (SDA,
SDN/Indication)
Kennzeichnend für die Blockorientierten Dienste ist, dass nur dann Daten übertragen
werden, wenn der Sender den Übertragungsvorgang anstößt. Der Empfänger kann die
Kommunikation nicht auslösen.
● Wenn das OPC-Item beobachtet wird (Aktives Empfangs-Item in aktiver Gruppe), wird
dauerhaft ein Empfangspuffer auf der Kommunikationsbaugruppe eingerichtet. Wird ein
Datenpaket empfangen, so signalisiert der OnDataChange-Rückruf dies der Anwendung,
sofern sich die Daten von den zuvor empfangenen Daten unterscheiden.
● Empfangs-Items sind nicht schreibbar.
Update Rate
Es sollte darauf geachtet werden, dass der OPC-Server die Empfangspuffer schneller
abholt, als sie vom Sender abgeschickt werden. Die Rate, mit der die Empfangspuffer
abgeholt werden, wird durch den gruppenspezifischen OPC-Parameter Update Rate
festgelegt.
Je nach Protokoll werden ansonsten empfangene Datenblöcke überschrieben, ohne dass
der OPC-Client dies erfährt (bei S7, SEND/RECEIVE mit ISO und RFC 1006) oder
Datenpakete stauen sich auf, so dass der Empfänger veraltete Daten erhält
(SEND/RECEIVE mit TCP/IP native).
<OPCItem>=<Rechte>
<OPCItem>
Angabe eines oder mehrerer OPC Items entsprechend der in der OPC-Dokumentation
definierten Syntax. Die Verwendung von Aliasnamen ist möglich. Folgende Platzhalter
können verwendet werden:
<Rechte>
Beispiel:
DP:[CP 5611]Slave040_AB*=RW
DP:[CP 5611]Slave040_AB1=R
DP:[CP 5611]Slave040_AB2=W
DP:[CP 5611]Slave040_AB1=W
DP:[CP 5611]Slave040_AB1*=R
DP:[CP 5611]Slave040_AB1=R
Hinweis
Führende Nullen in der Syntax der Zugriffsrechtevergabe werden grundsätzlich ignoriert.
Verwenden sie deshalb keine Platzhalterzeichen ? oder * an Stellen, wo auch eine führende
Null stehen kann!
Beispiel:
Die Definition Slave0?9M06_AB1=R muss durch folgende beide Definitionen ersetzt werden:
Slave?9M06_AB1=R
Slave9M06_AB1=R
Einleitung
Dieses Kapitel beschreibt, welche Ereignisse vom OPC-Server geliefert werden und welche
Zusatzinformationen als Attribute zur Verfügung stehen.
OPC
A&E-Server
Meldesystem
Bild 3-1 Prinzip der Alarms & Events-Kommunikation zwischen Client und A&E-Server
Bedienstation
Bedienstation
Protokoll-
drucker
Alarm / Event
Management-
Server
Event-Server Event-Server
S7-Protokoll
Das S7-Protokoll bietet den Protokollmechanismus "Programmierte Meldungen (ALARM)"
zur Übertragung von Ereignissen an.
Der Meldungstyp wird vom Simple Event-Server verwendet.
Alarmkategorie
Für die S7-Kommunikation werden die folgenden Alarms&Events-Kategorien bereitgestellt:
Event-Kategorie Beschreibung
Wert
EVENTCATEGORY_S7SIMPLE Simple Events für folgende S7-Alarme:
2 NOTIFY
ALARM
ALARM_8
ALARM_8P
EVENTCATEGORY_DIAGNOSIS Enthalten die Einträge im Diagnosepuffer der
12 Baugruppe (Simple Events).
EVENTCATEGORY_S7CONDITION Condition Events für folgende S7-Alarme:
13 NOTIFY
ALARM
ALARM_8
ALARM_8P
ALARM_S
ALARM_SQ
EVENTCATEGORY_STATEPATH Alarme für die Anzeige einer unterbrochenen
14 Verbindung zu einem Gerät (Condition related
Events).
EVENTCATEGORY_CAT_LEVEL Levelalarm
40 Alarm signalisiert Überschreitungen
von Min/Max-Werten
EVENTCATEGORY_CAT_DEVIATION Toleranzalarm
41 Alarm signalisiert Abweichungen von
Toleranzen
EVENTCATEGORY_CAT_ROC RateOfChange-Alarm
42 Alarm signalisiert Wechselhäufigkeiten
EVENTCATEGORY_CAT_OFFNORMAL OffNormal-Alarm
43 Alarm signalisiert Abweichungen von einem
Normalzustand
Default für alle S7-Alarme SFB, SFC, SCAN
EVENTCATEGORY_CAT_TRIP Trip-Alarm
44 Alarm signalisiert das Auslösen einer
Abschaltsicherung
EVENTCATEGORY_CAT_COS ChangeOfState-Alarm
45 Alarm signalisiert eine Zustandsänderung
EVENTCATEGORY_CAT_DEVICEFAILURE Gerätefehler
46 Alarm signalisiert einen Gerätefehler
EVENTCATEGORY_CAT_SYSTEMFAILURE Systemfehler
47 Alarm signalisiert einen Systemfehler
EVENTCATEGORY_CAT_SYSTEMMESSAGE Systemnachricht (Simple-Event)
60
Hinweis
Die Event-Kategorien 2 bis 14 werden für Projektierungen des OPC-Server < 8.0 und über
die Meldetextdatei verwendet. Für OPC-Server >= 8.0 gelten die Kategorien 40 bis 60.
Tabelle 3- 1 Alarme und Scans werden der Alarmkategorie 43 (CAT_OFFNORMAL) zugeordnet oder
entsprechend der eingestellten Step7-Meldeklasse gemäß folgender Tabelle:
Parameter Bedeutung
szSource Als Quelle für die Benachrichtigung wird vom OPC-Event-Server die
Verbindungsinformation des meldenden S7-Geräts angegeben. Sie
setzt sich wie folgt zusammen:
S7:\<Verbindungsname>
ftTime Der Zeitpunkt, zu dem das Event auftrat.
szMessage Der Name der Nachricht setzt sich aus dem Meldemechanismus und
der projektierten Meldungsnummer zusammen:
ALARM<Meldungsnummer>
Beispiele: ALARM55
(siehe auch Hinweis unten)
dwEventType Der OPC-Event-Server unterstützt die folgenden Events:
OPC_SIMPLE_EVENTDiese Konstante hat den Wert 0x0001.
OPC_CONDITION_EVENTDiese Konstante hat den Wert 0x0004.
dwEventCategory Als Ereigniskategorie sind folgende Werte möglich:
Für OPC-Server < 8.0:
EVENTCATEGORY_S7SIMPLE (2)
EVENTCATEGORY_S7T0 (11)
EVENTCATEGORY_DIAGNOSIS (12)
EVENTCATEGORY_S7CONDITION (13)
EVENTCATEGORY_STATEPATH (14)
Für OPC-Server >= 8.0: EVENTCATEGORY_CAT_LEVEL (40)
EVENTCATEGORY_CAT_DEVIATION (41)
EVENTCATEGORY_CAT_ROC (42)
EVENTCATEGORY_CAT_OFFNORMAL (43)
EVENTCATEGORY_CAT_TRIP (44)
EVENTCATEGORY_CAT_COS (45)
EVENTCATEGORY_CAT_DEVICEFAILURE (46)
EVENTCATEGORY_CAT_SYTEMFAILURE (47)
EVENTCATEGORY_CAT_SYSTEMMESSAGE (60)
dwSeverity Für die Schwere des Meldungsgewichts wird ein Vorgabewert
zurückgeliefert. Dieser Vorgabewert kann für einzelne
Meldungsnummern eines Kommunikationspartners in der
Konfigurationsdatenbank von STEP 7 verändert werden.
dwNumEventAttrs Die Anzahl der mit der Meldung gelieferten Attribute hängt von der
Anzahl der mitgelieferten Begleitwerte ab.
pEventAttributes Diese Struktur beinhaltet die mit dem Ereignis gelieferten Attribute.
Die Attribute beinhalten auch die vom Partnergerät gelieferten
Begleitwerte der Meldung.
Hinweis
Alarmbaustein-Meldungsgewicht vor Vorgabe-Priorität für Alarmmeldungen
Mit dem OPC-Alarms-&-Events-Server "[Link]" können S7-Alarme mit
Meldungsgewicht ("Severity") empfangen werden. Diese Meldungen können in STEP 7 /
NetPro unter Eigenschaften S7-Verbindung des OPC-Servers projektiert werden. Beachten
Sie:
Das programmierbare Alarm-Meldungsgewicht eines Bausteins ALARM, ALARM_8P oder
NOTIFY in einem S7-Programm setzt sich gegen die projektierbare Vorgabe-Priorität für
Alarmmeldungen durch.
Weiterhin setzen sich in NetPro projektierte Alarm-Prioritäten für bestimmte Alarm-Nummern
gegenüber der allgemeinen Vorgabe-Priorität für Alarmmeldungen und auch gegenüber
programmierten Meldungsgewichten durch. ALARM_S und ALARM_SQ besitzen keine
Severity, so dass immer die projektierten Meldungsgewichte verwendet werden.
Parameter Bedeutung
szConditionName Der Name der Bedingung.
szSubconditionName Der Name der Unterbedingung. Falls es keine Unterbedingung gibt,
enthält dieser Parameter den Namen der Bedingung.
wChangeMask Zeigt an, welche Zustandsänderung das Senden der
Benachrichtigung veranlasst hat. Mögliche Werte sind z. B.
OPC_CHANGE_QUALITY oder OPC_CHANGE_SUBCONDITION.
wNewState Der Status der im Parameter szSubconditionName übermittelten
Unterbedingung. Folgende Werte sind möglich:
OPC_CONDITION_ACTIVE
OPC_CONDITION_ENABLE
OPC_CONDITION_ACKED
wQuality Enthält eine Information über die Qualität des Wertes, auf den sich die
Benachrichtigung bezieht.
bAckRequired Zeigt an, ob die Benachrichtigung eine Quittierung erfordert.
ftActiveTime Der Zeitpunkt, zu dem die Unterbedingung aktiviert wurde. Wenn
keine Unterbedingung vorhanden ist, enthält dieser Parameter den
Zeitpunkt, ab dem die Bedingung erfüllt war.
dwCookie Vom Server vergebenes Cookie für die Benachrichtigung.
szActorID Enthält eine anwendungsspezifische Information über die Ursache
des Ereignisses.
3.1.3 Ereignisattribute
Zu einer Meldung oder einem Alarm liefert eine S7-Station einen Begleitwert mit. Bei
EVENT_ATTR_S7_DATAn, EVENT_ATTR_S7_DATAn_DATATYPE und
EVENT_ATTR_S7_DATAn_VALUE_LEN können dies für n bis zu 10 Begleitwerte sein. Die
Begleitwerte stehen über die OPC Alarms & Events-Schnittstelle in den Ereignisattributen
zur Verfügung.
Programmierte Meldungen (ALARM) liefern folgende Attribute:
● EVENT_ATTR_S7_MSGTEXT
● EVENT_ATTR_S7_ALARMSTATE
● EVENT_ATTR_S7_TYPE
● EVENT_ATTR_S7_SEVERITY
● EVENT_ATTR_S7_CATEGORYID
● EVENT_ATTR_S7_CATEGORYDESC
● EVENT_ATTR_S7_COMMENT
● EVENT_ATTR_S7_ACTIVETIME
● EVENT_ATTR_S7_PCTIME
● EVENT_ATTR_S7_S7TIME
● EVENT_ATTR_S7_STATE
● EVENT_ATTR_S7_ACK_STATE
● EVENT_ATTR_S7_EVENT_STATE
● EVENT_ATTR_S7_NO_DATA
● EVENT_ATTR_S7_DATAn
● EVENT_ATTR_S7_DATAn_DATATYPE
● EVENT_ATTR_S7_DATAn_VALUE_LEN
● EVENT_ATTR_S7_EVENT_EVENTID
● EVENT_ATTR_S7_EVENT_SUBEVENTID
● EVENT_ATTR_S7_CONNECTION
● EVENT_ATTR_S7_AREAS
● EVENT_ATTR_S7_INFOTEXT
● EVENT_ATTR_S7_TEXT1
● EVENT_ATTR_S7_TEXT2
● EVENT_ATTR_S7_TEXT3
● EVENT_ATTR_S7_TEXT4
● EVENT_ATTR_S7_TEXT5
● EVENT_ATTR_S7_TEXT6
● EVENT_ATTR_S7_TEXT7
● EVENT_ATTR_S7_TEXT8
● EVENT_ATTR_S7_TEXT9
EVENT_ATTR_S7_MSGTEXT
Wert: -1
Datentyp: VT_BSTR
EVENT_ATTR_S7_ALARMSTATE
Wert: -2
Datentyp: VT_UI4
EVENT_ATTR_S7_ALARMSTATE Beschreibung
CHANGE_ACTIVE | ACTIVE | Die Werte der einzelnen #Defines (ACTIVE...) sind in den
ACKREQUIRED
opc_ae.h Header-Dateien bestimmt.
ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/
SCAN gekommen
CHANGE_ACTIVE | ACTIVE | ACKED ALARM_S/ALARM_D/NOTIFY/NOTIFY_8P gekommen
(implizit quittiert)
Das Flag CHANGE_ACKED darf nicht gesetzt werden.
ACTIVE | ACKREQUIRED ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/
SCAN aktiv
(nur bei Refresh)
ACTIVE | ACKED ALARM_S/ALARM_D/NOTIFY/NOTIFY_8P aktiv (implizit
quittiert)
(nur bei Refresh)
ACTIVE | CHANGE_ACKED | ACKED ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/
SCAN aktiv und Quittierung gekommen
ACTIVE | ACKED ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/
SCAN aktiv und quittiert
(Nur bei Refresh)
CHANGE_INACTIVE | ACKREQUIRED ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/
SCAN gegangen und noch nicht quittiert
CHANGE_INACTIVE | ACKED ALARM_S/ALARM_D/NOTIFY/NOTIFY_8P gegangen
(implizit quittiert)
CHANGE_INACTIVE | ACKED ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/
SCAN gegangen und quittiert
ACKREQUIRED ALARM/ALARM_8/ALARM_8P/ALARM_SQ/
ALARM_DQ/SCAN inaktiv und noch nicht quittiert
(nur bei Refresh)
EVENT_ATTR_S7_TYPE
Wert: -5
Datentyp: VT_UI4
Attributwert: EVENT_TYPE_CONDITION
EVENT_ATTR_S7_SEVERITY
Wert: -6
Datentyp: VT_I4
Attributwert: Severity
Der Severity-Wert zeigt die Gewichtung oder Priorität einer Sub-Condition an. Der
Wertebereich liegt zwischen 1 und 1000. Je höher der Wert, desto höher ist die Gewichtung.
EVENT_ATTR_S7_CATEGORYID
Wert: -9
Datentyp: VT_I4
EVENT_ATTR_S7_CATEGORYDESC
Wert: -10
Datentyp: VT_BSTR
EVENT_ATTR_S7_ COMMENT
Wert: -13
Datentyp: VT_BSTR
EVENT_ATTR_S7_ ACTIVETIME
Wert: -15
Datentyp: VT_DATE
Attributwert: Zeitpunkt des Signalwechsels von "Alarm gekommen" aus dem Zeitstempel.
EVENT_ATTR_S7_PCTIME
Wert: 6000
Datentyp: VT_DATE
Attributwert: Zeitpunkt, an dem der OPC Event Server die Meldung bekommen hat.
EVENT_ATTR_S7_S7TIME
Wert: 6001
Datentyp: VT_DATE
Attributwert: Zeitpunkt, zu dem die Meldung auf dem Partnergerät erzeugt wurde.
EVENT_ATTR_S7_STATE
Wert: 6002
Datentyp: VT_UI1 bei Condition Events
VT_UI2 bei Simple Events
ALARM Meldungen
EVENT_ATTR_S7_ACK_STATE
Wert: 6003
Datentyp: VT_UI2
Über den OPC Event Server für SIMATIC NET ist eine Quittierung von Meldungen möglich.
Meldungen können jedoch auch von anderen Bediensystemen quittiert werden.
ALARM Meldungen:
Über den OPC Event Server für SIMATIC NET ist eine Quittierung nur für "Meldung n gekommen"
möglich. Meldungen können jedoch auch von anderen Bediensystemen quittiert werden.
EVENT_ATTR_S7_EVENT_STATE
Wert: 6004
Datentyp: VT_UI1 bei Condition-related Events
VT_UI2 bei Simple Events
Attributwert: Ereigniszustand
EVENT_ATTR_S7_NO_DATA
Wert: 6005
Datentyp: VT_UI1 bei Condition Events
VT_UI2 bei Simple Events
EVENT_ATTR_S7_DATAn
Attributwert: Die relevanten Bytes des Begleitwertes Nr. "n" als Feld von Bytes.
EVENT_ATTR_S7_DATAn_DATATYPE
Parameterwert Beschreibung
S7_DATATYPE_ERROR Fehler (0x0)
S7_DATATYPE_BOOLEAN Boolean (0x03)
S7_DATATYPE_INTEGER Integer (0x05)
S7_DATATYPE_UNSIGNED Integer (0x06)
S7_DATATYPE_FLOAT Float (0x07)
S7_DATATYPE_OCTET_STRING String (0x09)
S7_DATATYPE_BITSTRING Bit-String (0x04)
Hinweis: Längenangabe in Byte statt in Bit
S7_DATATYPE_DATE Datum (0x30)
Hinweis: Tage seit 01.01.1990
Parameterwert Beschreibung
S7_DATATYPE_TIME_OF_DAY Zeit (0x31)
Hinweis: ms seit Tagesbeginn
S7_DATATYPE_TIME Zeit (0x32)
Hinweis: ms
S7_DATATYPE_S5TIME Zeit (0x33)
Hinweis: BCD codiert
S7_DATATYPE_DATE_AND_TIME Datum und Uhrzeit (0x34)
EVENT_ATTR_S7_DATAn_VALUE_LEN
EVENT_ATTR_S7_EVENT_EVENTID
Wert: 6046
Datentyp: VT_UI4 (nur bei Condition-related Events)
Attributwert: Alarmnummer
EVENT_ATTR_S7_EVENT_SUBEVENTID
Wert: 6047
Datentyp: VT_UI1 (nur bei Condition-related Events)
Attributwert: SubEventID (Wertebereich 1 ... 8) bei Meldungen vom Typ ALARM_8 / ALARM_8P,
sonst 1.
EVENT_ATTR_S7_CONNECTION
Wert: 6050
Datentyp: VT_BSTR
Attributwert: S7-Verbindungsname
EVENT_ATTR_S7_AREAS
Wert: 6051
Datentyp: VT_ARRAY of VT_BSTR
EVENT_ATTR_S7_INFOTEXT
Wert: 6060
Datentyp: VT_BSTR
EVENT_ATTR_S7_TEXT1
Wert: 6061
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT2
Wert: 6062
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT3
Wert: 6063
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT4
Wert: 6064
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT5
Wert: 6065
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT6
Wert: 6066
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT7
Wert: 6067
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT8
Wert: 6068
Datentyp: VT_BSTR
EVENT_ATTR_S7_ TEXT9
Wert: 6069
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_MSGTEXT
Wert: -1
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_TYPE
Wert: -5
Datentyp: VT_I4
Attributwert: EVENT_TYPE_SIMPLE
EVENT_ATTR_DIAGNOSIS_SEVERITY
Wert: -6
Datentyp: VT_I4
Attributwert: Severity
EVENT_ATTR_DIAGNOSIS_CATEGORYID
Wert: -9
Datentyp: VT_I4
EVENT_ATTR_DIAGNOSIS_CATEGORYDESC
Wert: -10
Datentyp: VT_I4
EVENT_ATTR_DIAGNOSIS_S7_PCTIME
Wert: 6001
Datentyp: VT_DATE
EVENT_ATTR_DIAGNOSIS_S7_DIAGNOSISID
Wert: 6048
Datentyp: VT_I4
EVENT_ATTR_DIAGNOSIS_S7_DIAGNOSISDATA
Wert: 6049
Datentyp: VT_ARRAY oder VT_UI1
Attributwert: Informationen zum Diagnoseereignis bzw. zu dessen Wirkung, Datenlänge abhängig von
der Ereignisklasse.
Hinweis
Eine detaillierte Beschreibung zu SFC 52 (S7DiagnosisData) finden Sie im Dokument "STEP
7 System- und Standardfunktionen für S7-300/400".
EVENT_ATTR_DIAGNOSIS_S7_CONNECTION
Wert: 6050
Datentyp: VT_BSTR
Attributwert: S7-Verbindungsname
EVENT_ATTR_DIAGNOSIS_S7_AREAS
Wert: 6051
Datentyp: VT_ARRAY|VT_BSTR
Attributwert: Areas, unter denen das Diagnoseereignis aufgezählt wird. Gegenwärtig ist höchstens
eine Area verfügbar. Default: leer
Oder
Falls irgendwelche Projektierungsinformationen über den Alarm bestehen:
connections\<verbindungsname>
Oder
Projektierte Area
EVENT_ATTR_DIAGNOSIS_S7_INFOTEXT
Wert: 6060
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT1
Wert: 6061
Datentyp: VT_BSTR
Attributwert: Projektierter Zusatztext 1 (ggf. identisch mit Source), sprachabhängig. Falls nicht
projektiert, leer.
EVENT_ATTR_DIAGNOSIS_S7_TEXT2
Wert: 6062
Datentyp: VT_BSTR
Attributwert: Projektierter Zusatztext 2 (ggf. verwendet als Area), sprachabhängig. Falls nicht
projektiert, leer.
EVENT_ATTR_DIAGNOSIS_S7_TEXT3
Wert: 6063
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT4
Wert: 6064
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT5
Wert: 6065
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT6
Wert: 6066
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT7
Wert: 6067
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT8
Wert: 6068
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_TEXT9
Wert: 6069
Datentyp: VT_BSTR
EVENT_ATTR_DIAGNOSIS_S7_S7TIME
Wert: 6100
Datentyp: VT_DATE
Attributwert: Zeitstempel
Siehe auch
Attribute für Alarme, die eine unterbrochene Verbindung anzeigen (Seite 295)
EVENT_ATTR_STATEPATH_MSGTEXT
Wert: -1
Datentyp: VT_BSTR
EVENT_ATTR_STATEPATH_ALARMSTATE
Wert: -2
Datentyp: VT_UI4
EVENT_ATTR_STATEPATH_ALARMSTATE Beschreibung
CHANGE_ACTIVE | ACTIVE Die Werte der einzelnen #Defines (ACTIVE...)
sind in den opc_ae.h Header-Dateien bestimmt.
STATEPATH gekommen (nicht bei "Refresh")
ACTIVE STATEPATH aktiv
CHANGE_INACTIVE | INACTIVE STATEPATH gegangen (nicht bei "Refresh")
EVENT_ATTR_STATEPATH_TYPE
Wert: -5
Datentyp: VT_I4
Attributwert: EVENT_TYPE_CONDITION
EVENT_ATTR_STATEPATH_SEVERITY
Wert: -6
Datentyp: VT_I4
Attributwert: Severity
EVENT_ATTR_STATEPATH_CATEGORYID
Wert: -9
Datentyp: VT_I4
EVENT_ATTR_STATEPATH_CATEGORYDESC
Wert: -10
Datentyp: VT_BSTR
EVENT_ATTR_STATEPATH_COMMENT
Wert: -13
Datentyp: VT_BSTR
Attributwert: Kommentar
EVENT_ATTR_STATEPATH_ACTIVETIME
Wert: -15
Datentyp: VT_DATE
Attributwert: Zeitpunkt des Signalwechsels auf "Alarm gekommen" aus dem Zeitstempel.
EVENT_ATTR_STATEPATH_CONNECTION
Wert: 6050
Datentyp: VT_BSTR
Attributwert: S7-Verbindungsname
EVENT_ATTR_STATEPATH_AREAS
Wert: 6051
Datentyp: VT_ARRAY of VT_BSTR
Bild 3-3 Projektierungs-Dialog eines Alarm-SFCs mit dem ALARM_SQ (SFC17), der im FB1
aufgerufen wurde, Instanz-DB ist DB1.
Bild 3-4 Projektierungs-Dialog eines symbolbezogenen Alarms für das Merkerbit 3.1
Bild 3-5 Beispiel für die Projektierung einer Anwenderdiagnosemeldung zum WR_UMSG
(SFC52)
● Projektierte Herkunft:
In den Dialogen in denen auch der Meldetext erfasst wird, kann auch die
Meldungsherkunft (Source) eingegeben werden. Als Herkunft wird der 1. Zusatztext
(Herkunft bei gesetztem Attribut am Datenbaustein S7_alarm_ui=1) verwendet, siehe
Abbildung 3-6.
Ist dieser nicht gesetzt, wird der Pfadname zu dem Baustein verwendet, der dem
Meldetext in STEP 7 zugeordnet ist.
z. B. SIMATIC400(1)/CPU416.3DP/S7-Programm(1)/DB10/DB100.
Beim StatepathAlarm wird als Herkunft der projektierte Verbindungsname verwendet.
● Projektierter Bereich (Area):
Als Bereich wird der 2. Zusatztext (OS-Bereich bei gesetztem Attribut S7_Alarm_ui=1)
verwendet, siehe Abbildung 3-6.
Ist dieser nicht gesetzt, wird auch hier der Pfadname vom STEP 7-Projekt verwendet.
Beim StatepathAlarm wird als Bereich der projektierte Verbindungsname verwendet.
<Nummer> Steht für die Nummer des Begleitwertes, der für den formalen Parameter verwendet
werden soll.
<Typ> Beschreibt den Typ des Begleitwertes. Folgende Werte sind möglich:
Y - Byte
W - Word
D - DWord
I - Integer
D - Double Integer
B - Bool
C - Char
R - Real
<leer> - keine Typangabe:
Hinweis: Für die Formate "%t", "%s" und "%Y" darf kein Typ angeben werden. Für die
anderen Formate wählen Sie einen zum Begleitwert und Format passenden Typ. Es
erfolgt keine Typkonvertierung des angegebenen Begleitwertes.
<Format> Beschreibt die Formatierung des Begleitwertes im Text. Folgende Formatierungen
sind möglich:
%[i]X Hexadezimale Darstellung des Begleitwertes mit Großbuchstaben.
%[i]x Hexadezimale Darstellung des Begleitwertes mit Kleinbuchstaben. *)
%[i]u Darstellung als Dezimalzahl ohne Vorzeichen.
%[i]d Darstellung als Dezimalzahl mit Vorzeichen.
%[i]i Darstellung als Dezimalzahl mit Vorzeichen. *)
%[i]b Darstellung als Binärzahl.
%[i][.y]f Darstellung als Festpunktzahl mit y Nachkommastellen.
%[i][.y]e Darstellung als Gleitpunktzahl mit y Nachkommastellen in
Exponentialdarstellung mit Kleinbuchstaben. *)
%[i][.y]E Darstellung als Gleitpunktzahl mit y Nachkommastellen in
Exponentialdarstellung mit Großbuchstaben. *)
%[i][.y]g Darstellung als Festpunktzahl oder als Gleitpunktzahl mit y
Nachkommastellen mit Kleinbuchstaben. *)
%[i][.y]G Darstellung als Festpunktzahl oder als Gleitpunktzahl mit y
Nachkommastellen mit Großbuchstaben. *)
%[i]s Der Begleitwert wird als mit 0 terminierte Zeichenkette interpretiert.
%t#<datei> Der Begleitwert wird als Index in die Textbibliothek <datei>
interpretiert und der Text aus der Textbibliothek eingefügt.
%Y[locale] Der Begleitwerte wird als DATE_AND_TIME interpretiert und nach
[#DT-Format] dem Format DT-Format unter Berücksichtigung von locale formatiert.
*)
Die Angabe "locale" steht für eine Locale-Bezeichnung, z. B.
german, deu oder us. Fehlt diese Angabe, wird die aktuelle Locale
verwendet.
DT-Format entspricht der Formatangabe der Standardfunktion
strftime() mit der Erweiterung, dass %s für die dreistellige Ausgabe
der Millisekunden steht. Wird DT-Format nicht angegeben, so wird
%c verwendet, was der Datum- und Uhrzeit-Repräsentation
entspricht.
In eckige Klammern [] gesetzte Angaben sind dabei optional. Der Wert "i" steht für die Anzahl von
Zeichen, die für die Darstellung verwendet werden sollen.
Die nachfolgenden Zeichenfolgen werden außerhalb von formalen Parametern wie folgt
ersetzt:
Bild 3-8 Herkunfts-Namensraum einer CPU 416. Über den 1. Zusatztext kann die Herkunft
spezifisch projektiert werden.
3.1.8 Abbildung der STEP 7-Projektierungswerte auf OPC S7 Alarme & Events-
Parameter
In der folgenden Tabelle wird die Abbildung von Projektierungsdaten, wie die "EventID" aus
STEP 7 auf OPC A&E-Parameter wie "Condition" dargestellt:
Priorität: Die Priorität wird in eine OPC Alarmseverity nach dieser Tabelle umgewandelt
werden:
3.1.9 S7-Demoalarme
Mit der DEMO-Verbindung werden Datenbaustein-Objekte im Namensraum für Data Access
angeboten. Die DEMO-Verbindung ist zum Kennenlernen des SIMATIC NET OPC-Systems
gedacht und kann über die Konfiguration hinzugeschaltet werden.
Es können auch S7-Meldungen simuliert werden. Diese Meldungen können durch Setzen
und Rücksetzen der Bits des ersten Bytes des DEMO-Datenbausteins "db20" ausgelöst
werden.
COM DA S7
ItemID:
S7:[DEMO]DB20,X0.0
S7:[DEMO]DB20,X0.1
S7:[DEMO]DB20,X0.7
OPC UA S7
NamesspaceID
S7:
NodeID:
…
DEMO.db20.0,x7
Setzen der Bits von "False" auf "True" lösen kommende OPC-Alarme aus, Rücksetzen der
Bits von "True" auf "False" lösen gehende OPC-Alarme aus,
Die Alarme sind implizit quittiert wenn entsprechende Bits im dritten Byte des
DEMO-Datenbausteins "db20" auf "True" gesetzt sind:
S7:[DEMO]DB20,X2.0 … bzw.
S7: DEMO.db20.2,x0 …
Durch Rücksetzen dieser Bits auf "False" können quittierbare Alarme eingestellt werden.
Durch Auslösung der Alarme über Data Access werden
● für OPC Alarms& Events für S7-Kommunikation
Conditional Alarme der Kategorie EVENTCATEGORY_S7OFFNORMAL = 43
● für OPC UA Alarms & Conditions für S7-Kommunikation
UA Alarme des EventType = NodeID(ns=S7TYPES:, i=43)
-> Referenzierte NodeID des S7OffNormalAlarmType
erzeugt.
SNMP-Traps
Traps sind Nachrichten, die ohne Aufforderung des OPC-Servers an diesen gesendet
werden. Es gibt sieben generische Traps, die bei vielen SNMP-fähigen Gerät verfügbar sind.
Darüber hinaus gibt es gerätespezifische Traps, die in der MIB-Datei beschrieben sind.
Hinweis
Gerätespezifische MIBs müssen über den MIB-Compiler (Bestandteil von STEP 7)
eingebunden werden.
Traps müssen in den jeweiligen Geräten aktiviert und ihre Zielstation (hier: SNMP OPC-
Server) projektiert werden.
Generische Traps
warmStart
Reboot des Rechners, wenn dieser bereits Verbindung zum Netz hatte.
Wird gesendet, wenn das Gerät einen Warmstart durchgeführt hat.
coldStart
Neustart des Rechners, wenn dieser noch keine Verbindung zum Netz hatte.
Wird gesendet, wenn das Gerät einen Kaltstart durchgeführt hat.
linkDown
Wird gesendet, wenn eine vom Gerät ausgehende Verbindung abgebaut wurde.
linkUp
Wird gesendet, wenn eine vom Gerät ausgehende Verbindung aufgebaut wurde.
authenticationFailure
Wird gesendet, wenn ein unbefugter Zugriff auf das Gerät erfolgte.
egpNeighborLoss
Der EGP-Nachbar (EGP = Exterior Gateway Protocol) des Geräts ist außer Betrieb. Das
Exterior Gateway Protocol dient zum Austausch von Routing-Information zwischen zwei
benachbarten Gateway-Hosts.
enterpriseSpecific
Wird gesendet, wenn ein gerätespezifischer Trap gesendet wurde.
● Die IP Adresse des PC mit dem OPC SNMP Server muss beim SNMP-fähigen Gerät als
Trap-Empfänger eingetragen sein und die Traps müssen aktiviert sein. Die Umsetzung
erfolgt durch gerätespezifische Projektierungstools (siehe Handbuch "PC-Stationen in
Betrieb nehmen"; Web based Management von OSM/ESM/SCALANCE).
● Der SNMP Dienst von Windows muss installiert sein.
Generische Traps sind durch Standards festgelegt und für alle Geräte in Ihrer Bedeutung
gleich. Spezifische Traps sind geräteabhängig. Die Information, ob ein Trap generisch oder
spezifisch ist, erhält der SNMP OPC-Server über die Geräteprofildatei.
Diese Kategorien "generisch" bzw. "spezifisch" sind im Zusammenhang mit dem Begriff
"Category" zu verstehen. Bei jedem Partnergerät ("Source") können Alarme und Events
jeder Kategorie auftreten. Verschiedene Alarme und Events ein und derselben Kategorie
vom gleichen Partnergerät werden mit unterschiedlichen EventIDs gekennzeichnet.
Traps werden vom Kommunikationspartner ausgelöst und vom SNMP-Protokoll an den
SIMATIC NET SNMP OPC-Server weitergereicht. Traps können bei hohen
Kommunikationsbelastungen vom SNMP-Protokoll verworfen werden, so dass der SIMATIC
NET SNMP OPC-Server möglicherweise nicht alle Traps enthält. Dies ist eine allgemeine
Einschränkung des SNMP-Protokolls.
Traps haben keinen Zustand und sind nicht zu quittieren, daher verwaltet der SIMATIC NET
SNMP OPC-Server für die Traps keine Zustandsmaschine.
Mit dem Aufruf der Rückruffunktion OnEvent des Clients erhält der Client eine Liste von
Ereignissen. Der SNMP OPC-Event-Server liefert dabei folgende serverspezifische
Parameter:
Parameter Bedeutung
dwEventCategory Als Ereigniskategorie ist folgender Wert möglich:
EVENTCATEGORY_SNMP_GENERICTRAP = 20
EVENTCATEGORY_SNMP_SPECIFICTRAP = 21
dwEventType Der SNMP