0% fanden dieses Dokument nützlich (0 Abstimmungen)
17 Ansichten824 Seiten

MN Opc2 0

Hochgeladen von

Hoang Tran Dinh
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
17 Ansichten824 Seiten

MN Opc2 0

Hochgeladen von

Hoang Tran Dinh
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

1

Industrielle Kommunikation mit PG/PC ___________________


Vorwort

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

Industrielle Kommunikation mit ___________________


SIMATIC Computing 5
PG/PC Band 2 - Schnittstellen
___________________
Beispielprogramme 6
Programmierhandbuch
Referenz Automation-
___________________
Schnittstelle 7

___________________
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.

Siemens AG Dokumentbestellnummer: C79000-G8900-C197 Copyright © Siemens AG 2011.


Industry Sector Ⓟ 06/2011 Änderungen vorbehalten
Postfach 48 48
90026 NÜRNBERG
DEUTSCHLAND
Inhaltsverzeichnis

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 3
Inhaltsverzeichnis

[Link] Syntax der DP-Slave-spezifischen Informationsvariablen .......................................................... 67


2.4.4 PROFIdrive.................................................................................................................................. 68
2.4.5 PROFIdrive Profil-Server ............................................................................................................ 69
[Link] Syntax der Prozessvariablen für Parameter ............................................................................... 69
[Link] Beispiele der Prozessvariablen für Parameter............................................................................ 70
[Link] Syntax der DRIVECOM-spezifischen Informationsvariablen...................................................... 72
[Link] Einzel- und Multiparameterzugriffe ............................................................................................. 72
[Link] Mehrachsgeräte .......................................................................................................................... 72
[Link] Fehlercodes ................................................................................................................................ 72
[Link] Einstellungen für Profil-Server .................................................................................................... 73
2.4.6 PROFIdrive Bus-Server .............................................................................................................. 73
[Link] Protokoll-ID ................................................................................................................................. 74
[Link] Projektierter Gerätename............................................................................................................ 75
[Link] Syntax der Prozessvariablen für PROFIdrive-Slaves ................................................................. 76
[Link] Syntax der systemspezifischen Informationsvariablen ............................................................... 81
2.5 S7-Kommunikation...................................................................................................................... 82
2.5.1 Performanter SIMATIC NET OPC-Server für das S7-Protokoll.................................................. 82
2.5.2 Protokoll-ID ................................................................................................................................. 83
2.5.3 Verbindungsnamen ..................................................................................................................... 84
2.5.4 Variablendienste ......................................................................................................................... 85
[Link] Syntax der Prozessvariablen für S7-Variablendienste ............................................................... 85
[Link] Beispiele für Prozessvariablen für S7-Variablendienste............................................................. 90
[Link] Beispiele optimal strukturierter Items.......................................................................................... 90
2.5.5 Blockorientierte Dienste .............................................................................................................. 91
[Link] Syntax der Prozessvariablen für Blockorientierte Dienste.......................................................... 92
[Link] Beispiele für Prozessvariablen für Blockorientierte Dienste ....................................................... 95
2.5.6 S7-spezifische Informationsvariablen ......................................................................................... 96
[Link] Syntax der S7-spezifischen Informationsvariablen..................................................................... 96
[Link] S7-spezifische Diagnosevariablen.............................................................................................. 99
[Link] Syntax der systemspezifischen Informationsvariablen ............................................................. 104
2.5.7 Bausteindienste......................................................................................................................... 104
[Link] Syntax der Steuervariablen für Bausteindienste....................................................................... 105
[Link] Beispiele für die Verwendung der Bausteindienste .................................................................. 108
2.5.8 Passwörter ................................................................................................................................ 110
[Link] Syntax der Steuervariablen für Passwörter .............................................................................. 111
[Link] Beispiel für die Verwendung der Passwörter ............................................................................ 111
2.5.9 Server-Dienste .......................................................................................................................... 112
[Link] Beispiel für die Verwendung von Server-Diensten ................................................................... 112
2.5.10 S7 Template-Datenvariablen .................................................................................................... 114
[Link] Template-Datenvariablen im Namensraum .............................................................................. 116
[Link] Syntax der Template-Datenvariablen ....................................................................................... 117
2.5.11 Unprojektierte S7-Verbindung................................................................................................... 118
2.5.12 COML S7-Verbindung............................................................................................................... 123
2.6 S7-Kommunikation mit OPC UA ............................................................................................... 124
2.6.1 Eigenschaften der S7-Kommunikation mit OPC UA................................................................. 124
2.6.2 SIMATIC NET OPC-UA-Server für das S7-Protokoll................................................................ 125
2.6.3 Wie wird der S7-OPC-UA-Server adressiert?........................................................................... 127
2.6.4 Welche Namensräume bietet der S7-OPC-UA-Server an?...................................................... 129
2.6.5 Die NodeID................................................................................................................................ 130
2.6.6 Verbindungsobjekte .................................................................................................................. 132
[Link] Verbindungsnamen ................................................................................................................... 133

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


4 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Inhaltsverzeichnis

2.6.7 Aufbau und Funktionen des produktiven S7-Verbindungsobjekts.............................................134


[Link] Typ-Definition des S7-Verbindungsobjekts................................................................................135
[Link] S7-Verbindungs-Informationsobjekte ........................................................................................136
[Link] Beispiele für S7-spezifische Informationsvariablen und Rückgabewerte ..................................137
[Link] Methoden für die S7- Bausteindienste.......................................................................................138
2.6.8 Variablendienste ........................................................................................................................142
[Link] Variablendienste ........................................................................................................................142
[Link] Syntax der Variablendienste ......................................................................................................142
[Link] Beispiele für Prozessvariablen für S7-OPC-UA-Variablendienste ............................................148
2.6.9 Blockorientierte Dienste .............................................................................................................149
[Link] Syntax der blockorientierten Dienste .........................................................................................149
[Link] Beispiele für Prozessvariablen für blockorientierte Dienste ......................................................152
2.6.10 Baustein-Informations-Objekte einer S7-Verbindung ................................................................153
[Link] Längeninformationen .................................................................................................................153
[Link] Musterobjekte.............................................................................................................................154
[Link] Diagnose- und Konfigurations-Informationen ............................................................................154
2.6.11 S7 OPC UA Template-Datenvariablen ......................................................................................161
2.6.12 Events, Conditions und Alarme..................................................................................................162
[Link] Welche Alarme gibt es? .............................................................................................................162
[Link] Was sind Events? ......................................................................................................................163
[Link] Welche Events des S7-UA-Alarming-Servers gibt es?..............................................................163
[Link] Eventtyphierarchie von S7-UA-Alarming-Server .......................................................................164
2.6.13 Standard-Eventtypen .................................................................................................................167
[Link] Standard-Eventtyp mit dem Anzeigenamen "BaseEventType" .................................................167
[Link] Standard-Eventtyp mit dem Anzeigenamen "ConditionType" ...................................................174
[Link] Standard Eventtyp mit dem Anzeigenamen "AcknowledgeableConditionType" .......................178
[Link] Standard-Eventtyp mit dem Anzeigenamen "AlarmConditionType"..........................................178
[Link] Standard-Eventtyp mit dem Anzeigenamen "ExclusiveLimitAlarmType" ..................................180
[Link] Standard-Eventtyp mit dem Anzeigenamen "ExclusiveLevelAlarmType" .................................181
[Link] Standard-Eventtyp mit dem Anzeigenamen "ExclusiveDeviationAlarmType"...........................181
[Link] Standard-Eventtyp mit dem Anzeigenamen "OffNormalAlarmType".........................................181
2.6.14 S7-Eventtypen ...........................................................................................................................182
[Link] S7-Eventtyp mit dem Anzeigenamen "S7StatepathlAlarmType"...............................................182
[Link] S7-Eventtyp mit dem Anzeigenamen "S7ExclusiveLevelAlarmType" .......................................183
[Link] S7-Eventtyp mit dem Anzeigenamen "S7ExclusiveDeviationAlarmType".................................185
[Link] S7-Eventtyp mit dem Anzeigenamen "S7OffNormalAlarmType" ..............................................186
[Link] S7-Eventtyp mit dem Anzeigenamen "S7DiagnosisEventType" ...............................................188
2.6.15 Bereichsbaum und Herkunftsraum ............................................................................................189
2.6.16 Empfang von Events..................................................................................................................190
2.6.17 Methoden von UA-Alarmen........................................................................................................193
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)...................................................................194
2.7.1 Offene Kommunikationsdienste (SEND/RECEIVE) über Industrial Ethernet............................194
[Link] Performanter SIMATIC NET OPC-Server für das SR-Protokoll ................................................194
[Link] Protokoll-ID ................................................................................................................................195
[Link] Verbindungsnamen....................................................................................................................195
[Link] Variablendienste ........................................................................................................................196
[Link] Blockorientierte Dienste .............................................................................................................198
[Link] SEND/RECEIVE-spezifische Informationsvariablen .................................................................202
[Link] Syntax der systemspezifischen Informationsvariablen..............................................................204
2.7.2 Offene Kommunikationsdienste (SEND/RECEIVE) über PROFIBUS.......................................204
[Link] Protokoll-ID ................................................................................................................................204
[Link] Verbindungsnamen....................................................................................................................205

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 5
Inhaltsverzeichnis

[Link] Blockorientierte Dienste ............................................................................................................ 205


[Link] FDL-spezifische Informationsvariablen..................................................................................... 210
[Link] Syntax der systemspezifischen Informationsvariablen ............................................................. 212
2.8 SNMP-Kommunikation über Industrial Ethernet ....................................................................... 213
2.8.1 Protokoll-ID ............................................................................................................................... 213
2.8.2 Datentypen des SNMP-Protokolls ............................................................................................ 213
2.8.3 Prozessvariablen für SNMP-Variablendienste.......................................................................... 214
2.8.4 SNMP-spezifische Informationsvariablen ................................................................................. 215
2.8.5 SNMP-spezifische Traps........................................................................................................... 218
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet .......................................................... 219
2.9.1 Performanter SIMATIC NET OPC-Server für das PROFINET-IO-Protokoll............................. 219
2.9.2 Wie können IO-Daten adressiert werden?................................................................................ 220
2.9.3 Wie kann der projektierte PROFINET-IO-Namensraum durchsucht werden? ......................... 223
2.9.4 Welche OPC Variable für PROFINET IO stehen zur Verfügung? ............................................ 224
2.9.5 Protokoll-ID ............................................................................................................................... 224
2.9.6 Controller-Name........................................................................................................................ 224
2.9.7 PROFINET-IO-Prozessvariablen .............................................................................................. 224
2.9.8 PROFINET-IO-Datenstatus....................................................................................................... 229
2.9.9 PROFINET-IO-Datensätze........................................................................................................ 232
2.9.10 PROFINET-IO-spezifische Informationsvariablen .................................................................... 236
2.9.11 Syntax der systemspezifischen Informationsvariablen ............................................................. 239
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet...................................... 239
2.10.1 SIMATIC NET OPC-UA-Server für das PROFINET-IO-Protokoll............................................. 239
2.10.2 Wie wird der PROFINET IO OPC-UA-Server adressiert? ........................................................ 241
2.10.3 Welche Namensräume bietet die PROFINET-IO-Kommunikation mit OPC UA?..................... 243
2.10.4 Die NodeID................................................................................................................................ 245
2.10.5 Board-Objekt und PROFINET-IO-Controller............................................................................. 247
2.10.6 Datenvariablen des PROFINET-IO-Controllers ........................................................................ 249
2.10.7 Device-Objekte.......................................................................................................................... 249
2.10.8 Datenvariablen und Methoden des Device-Objekts ................................................................. 251
2.10.9 PROFINET-IO-Modulobjekte .................................................................................................... 252
[Link] Datenvariablen der PROFINET-IO-Module .............................................................................. 253
[Link] IO-Datenvariablen der PROFINET-IO-Module ......................................................................... 254
[Link] Datenvariablen für IOPS und IOCS .......................................................................................... 256
[Link] Datensatz-Datenvariablen der PROFINET-IO-Module............................................................. 259
2.10.10 PROFINET IO OPC UA Templates .......................................................................................... 261
[Link] Template-Datenvariablen..................................................................................................... 261
[Link] Verzeichnis der Template-Datenvariablen........................................................................... 262
2.11 Server-Diagnose ....................................................................................................................... 264
2.11.1 Protokoll-ID ............................................................................................................................... 264
2.11.2 OPC-DA-Server-Diagnose-Items.............................................................................................. 264
2.12 Blockorientierte Dienste mit der OPC-Schnittstelle .................................................................. 269
2.12.1 Blockdienste verwenden ........................................................................................................... 269
2.12.2 Eigenschaften blockorientierter Kommunikation....................................................................... 269
2.12.3 Abbildung von Datenpuffern auf OPC-Variablen ...................................................................... 270
2.12.4 Anwendung der blockorientierten Dienste ................................................................................ 271
2.12.5 Besonderheiten der blockorientierten Dienste über TCP/IP native .......................................... 272
2.13 Zugriffsrechte von OPC-Variablen einschränken ..................................................................... 272
3 OPC-Alarms-&-Events-Server für SIMATIC NET................................................................................... 275

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


6 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Inhaltsverzeichnis

3.1 Event-Server für S7-Kommunikation .........................................................................................275


3.1.1 Funktionsprinzip und Alarmkategorien ......................................................................................275
3.1.2 Parameter für Ereignisse ...........................................................................................................279
3.1.3 Ereignisattribute .........................................................................................................................281
3.1.4 Attribute für Einträge im Diagnosepuffer der Baugruppe...........................................................291
3.1.5 Attribute für Alarme, die eine unterbrochene Verbindung anzeigen..........................................295
3.1.6 Projektierung von Meldetexten, Source und Area .....................................................................297
3.1.7 Wie können Herkunftsangaben, Quellen und Bedingungen im Namensraum durchsucht
und gefiltert werden? .................................................................................................................303
3.1.8 Abbildung der STEP 7-Projektierungswerte auf OPC S7 Alarme & Events-Parameter............305
3.1.9 S7-Demoalarme .........................................................................................................................306
3.2 Simple Event-Server für SNMP-Kommunikation .......................................................................308
3.3 Alarms-&-Events-Server für S7- und SNMP-Kommunikation....................................................311
3.3.1 Die A&E-Server von SIMATIC NET ...........................................................................................311
3.3.2 Wie sind die Namen (ProgID) der Server? ................................................................................312
3.3.3 Wie kann das Protokoll der Alarmquelle erkannt werden?........................................................312
4 OPC-Server nutzen ............................................................................................................................... 315
4.1 Automation-Schnittstelle programmieren...................................................................................315
4.1.1 Automation-Schnittstelle programmieren für Data Access ........................................................315
[Link] Was leistet das Objektmodell von OPC Data Access? .............................................................315
[Link] Was müssen Sie bei der Programmierung beachten? ..............................................................316
[Link] Objekte der Automation-Schnittstelle für Data Access..............................................................317
4.1.2 Automation-Schnittstelle programmieren für Alarms & Events..................................................326
[Link] Was leistet das Objektmodell von OPC Alarms & Events? .......................................................326
[Link] Was müssen Sie bei der Programmierung beachten? ..............................................................327
[Link] Objekte der Automation-Schnittstelle für Alarms & Events .......................................................327
4.2 Custom-Schnittstelle programmieren ........................................................................................336
4.2.1 COM-Objekt erzeugen und Status des OPC-Servers abfragen ................................................337
4.2.2 Objekte der Custom-Schnittstelle für Data Access....................................................................337
[Link] Objekt OPCServer .....................................................................................................................338
[Link] Objekt OPCGroup......................................................................................................................342
4.2.3 Objekte der Custom-Schnittstelle für Alarms & Events .............................................................351
[Link] Objekt OPCEventServer ............................................................................................................351
[Link] Objekt OPCEventSubscription...................................................................................................354
[Link] Objekt OPCEventAreaBrowser..................................................................................................356
4.2.4 Schnittstellen des Clients für Alarms und Events ......................................................................356
[Link] Schnittstelle IOPCEventSink......................................................................................................356
[Link] Schnittstelle IOPCShutdown......................................................................................................357
4.2.5 Fehlermeldungen für OPC DA Prozessvariablen ......................................................................358
4.3 XML-Schnittstelle programmieren..............................................................................................361
4.3.1 Beschreibung der Elemente.......................................................................................................362
4.3.2 Basis-Schemas ..........................................................................................................................363
[Link] ItemProperty...............................................................................................................................363
[Link] ItemValue ...................................................................................................................................364
[Link] OPCError ...................................................................................................................................365
[Link] ReplyBase..................................................................................................................................365
[Link] RequestOptions .........................................................................................................................366
4.3.3 Read- und Write-Aufträge ..........................................................................................................368
[Link] Read...........................................................................................................................................368

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 7
Inhaltsverzeichnis

[Link] ReadResponse ......................................................................................................................... 370


[Link] Write .......................................................................................................................................... 372
[Link] WriteResponse.......................................................................................................................... 374
4.3.4 Verwendung von Subscriptions ................................................................................................ 375
[Link] Subscribe .................................................................................................................................. 377
[Link] SubscribeResponse .................................................................................................................. 379
[Link] SubscriptionPolledRefresh........................................................................................................ 380
[Link] SubscriptionPolledRefreshResponse ....................................................................................... 382
[Link] SubscriptionCancel ................................................................................................................... 383
[Link] SubscriptionCancelResponse................................................................................................... 383
4.3.5 Weitere Abfragen ...................................................................................................................... 384
[Link] Browse ...................................................................................................................................... 384
[Link] BrowseResponse ...................................................................................................................... 386
[Link] GetProperties ............................................................................................................................ 387
[Link] GetPropertiesResponse............................................................................................................ 389
[Link] GetStatus .................................................................................................................................. 390
[Link] GetStatusResponse .................................................................................................................. 391
4.4 OPC UA-Schnittstelle programmieren ...................................................................................... 392
4.4.1 S7-UA- und PROFINET IO-UA-Server konfigurieren ............................................................... 393
[Link] Authentifizierung ....................................................................................................................... 393
[Link] Endpunkt-Sicherheit.................................................................................................................. 394
[Link] Endpunkt lokal performante Windows-Pipe .............................................................................. 394
4.4.2 Zertifikatverwaltung für den S7-UA- und PROFINET IO-UA-Server......................................... 395
4.4.3 Zertifikatverwaltung im S7-UA-Client "OPC Scout V10"........................................................... 397
4.4.4 Zertifikatsverwaltung mit grafischer Oberfläche........................................................................ 402
4.4.5 OPC UA-Dienste ....................................................................................................................... 403
4.4.6 OPC UA-Clients erstellen.......................................................................................................... 407
[Link] Schnittstellen unter OPC UA..................................................................................................... 407
[Link] Die C-Schnittstelle unter OPC UA ............................................................................................ 407
[Link] Die .NET-Schnittstelle unter OPC UA....................................................................................... 408
4.4.7 Meldungen der UA-Server ........................................................................................................ 408
4.4.8 Migration von OPC Data Access / Alarms & Events nach OPC UA ......................................... 410
4.5 OPC UA-Redundanz-Schnittstelle programmieren .................................................................. 411
4.5.1 Installieren und Konfigurieren des Feature "Netzwerklastenausgleich" ................................... 414
4.5.2 Projektierung der Redundanzgruppe ........................................................................................ 421
4.5.3 Auffinden der Server-Endpunkt mit Hilfe des Discovery-Servers ............................................. 429
4.5.4 Der OPC UA-Reconnect-Vorgang ............................................................................................ 429
4.5.5 Redundanz Unterstützung durch OPC UA-Clients ................................................................... 431
4.5.6 Wann tritt eine Serverumschaltung ein? ................................................................................... 432
4.5.7 Details zur Serverumschaltung ................................................................................................. 433
4.5.8 Generelle Empfehlungen und Hinweise für die redundante OPC UA S7-Kommunikation....... 436
4.5.9 Auslesen des Zustands der Redundanzgruppe vom OPC UA-Client ...................................... 436
5 SIMATIC Computing.............................................................................................................................. 441
5.1 SIMATIC NET OPC Data Control konfigurieren mit der .NET-Schnittstelle ............................. 442
5.1.1 .NET OPC Client API ................................................................................................................ 442
[Link] Namensraum [Link] ........................................................................... 443
[Link] Namensraum [Link]..................................................................................... 472
5.1.2 .NET OPC Client Control .......................................................................................................... 481
[Link] Übersicht ................................................................................................................................... 481
[Link] Schritt 1 - Installation................................................................................................................. 483

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


8 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Inhaltsverzeichnis

[Link] Schritt 2 - Controls in einer WINDOWS FORM .........................................................................488


[Link] Schritt 3 - Datenverknüpfungen konfigurieren ...........................................................................494
[Link] Schritt 4 - Starten des Beispielprogramms ................................................................................509
[Link] Fehlerbehandlung ......................................................................................................................511
[Link] OPC-UA-Zertifikat-Erstellung für das NET OPC Data Control ..................................................512
[Link] OPC-UA-Zertifikate bei Verbindung zu einem OPC-UA-Server ................................................512
5.2 SIMATIC NET OPC Data Control konfigurieren mit Visual Studio 6 .........................................514
5.2.1 Eigenschaftsfenster für SIMATIC NET OPC Data Control öffnen .............................................515
5.2.2 OPC-Server auswählen .............................................................................................................515
5.2.3 Anzeige-Controls mit Prozessvariablen verbinden ....................................................................516
5.2.4 Prozessvariablen zu Ereignissen zuordnen...............................................................................517
5.2.5 Zusätzliche Aufgaben durchführen ............................................................................................518
5.3 Button Control konfigurieren ......................................................................................................520
5.3.1 Eigenschaften des Button Control .............................................................................................521
5.3.2 Eigenschaftsfenster für Button Control öffnen ...........................................................................521
5.3.3 Label festlegen...........................................................................................................................522
5.3.4 Schriftart des Labels festlegen...................................................................................................522
5.3.5 Farbe des Button Control festlegen ...........................................................................................523
5.3.6 Button Control aktivieren............................................................................................................523
5.3.7 Button Control mit den Prozessdaten verbinden .......................................................................523
5.4 Number Control konfigurieren....................................................................................................524
5.4.1 Eigenschaften und Methoden des Number Control...................................................................525
5.4.2 Eigenschaftsfenster für Number Control öffnen.........................................................................527
5.4.3 Datenanzeige definieren ............................................................................................................527
5.4.4 Erscheinungsbild festlegen ........................................................................................................529
5.4.5 Label festlegen...........................................................................................................................530
5.4.6 Skalierung für die Anzeige festlegen .........................................................................................531
5.4.7 Schriftart des Labels festlegen...................................................................................................532
5.4.8 Farbe des Number Control festlegen.........................................................................................532
5.4.9 Number Control aktivieren .........................................................................................................533
5.4.10 Number Control mit den Prozessdaten verbinden.....................................................................533
5.5 Slider Control konfigurieren .......................................................................................................534
5.5.1 Eigenschaften des Slider Control...............................................................................................535
5.5.2 Eigenschaftsfenster für Slider Control öffnen ............................................................................535
5.5.3 Datenanzeige definieren ............................................................................................................536
5.5.4 Slider Control aktivieren.............................................................................................................537
5.5.5 Slider Control mit den Prozessdaten verbinden ........................................................................537
5.6 Weitere ActiveX Controls einbinden ..........................................................................................537
5.6.1 Welche Richtlinien gibt es für Container-Anwendungen? .........................................................538
5.6.2 Welche Richtlinien gibt es für ActiveX Controls?.......................................................................538
5.6.3 Wie werden Daten vom Data Control gelesen?.........................................................................539
5.6.4 Wie werden Daten auf das Data Control geschrieben? ............................................................539
5.7 Eigenschaften und Methoden der SIMATIC Controls................................................................539
5.8 Eigenschaften und Methoden der Data Controls.......................................................................542
5.8.1 Activated ....................................................................................................................................542
5.8.2 AddNotification ...........................................................................................................................543
5.8.3 AutoConnect ..............................................................................................................................543
5.8.4 AutoConnectTimeout .................................................................................................................544
5.8.5 Connect......................................................................................................................................544

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 9
Inhaltsverzeichnis

5.8.6 DefaultDeadband ...................................................................................................................... 545


5.8.7 DefaultUpdateRate.................................................................................................................... 545
5.8.8 Disconnect................................................................................................................................. 546
5.8.9 GetItemProperties ..................................................................................................................... 547
5.8.10 NodeName ................................................................................................................................ 547
5.8.11 QueryAvailableItemProperties .................................................................................................. 548
5.8.12 ReadMultiVariables ................................................................................................................... 548
5.8.13 ReadVariable ............................................................................................................................ 549
5.8.14 ServerName .............................................................................................................................. 550
5.8.15 ShowErrorBoxes ....................................................................................................................... 550
5.8.16 WriteMultiVariables ................................................................................................................... 551
5.8.17 WriteVariable............................................................................................................................. 552
5.9 Eigenschaften und Methoden des Button Control .................................................................... 552
5.9.1 Enabled ..................................................................................................................................... 552
5.9.2 FalseCaption ............................................................................................................................. 553
5.9.3 FalseColor ................................................................................................................................. 553
5.9.4 Font ........................................................................................................................................... 554
5.9.5 TrueCaption .............................................................................................................................. 554
5.9.6 TrueColor .................................................................................................................................. 555
5.9.7 Value ......................................................................................................................................... 555
5.10 Eigenschaften und Methoden des Number Control.................................................................. 556
5.10.1 Alignment .................................................................................................................................. 556
5.10.2 Appearance............................................................................................................................... 557
5.10.3 BackColor.................................................................................................................................. 557
5.10.4 BorderStyle ............................................................................................................................... 558
5.10.5 Captionn .................................................................................................................................... 558
5.10.6 CaptionnAlignment.................................................................................................................... 559
5.10.7 CaptionnBackColor ................................................................................................................... 559
5.10.8 CaptionnFont............................................................................................................................. 560
5.10.9 CaptionnForeColor.................................................................................................................... 560
5.10.10 CaptionnSize............................................................................................................................. 561
5.10.11 ConvertedValue ........................................................................................................................ 562
5.10.12 DataType................................................................................................................................... 562
5.10.13 Enabled ..................................................................................................................................... 564
5.10.14 Factor ........................................................................................................................................ 564
5.10.15 Font ........................................................................................................................................... 565
5.10.16 ForeColor .................................................................................................................................. 565
5.10.17 LayoutType ............................................................................................................................... 566
5.10.18 LimitCheck................................................................................................................................. 566
5.10.19 Locked....................................................................................................................................... 567
5.10.20 LowerLimit ................................................................................................................................. 568
5.10.21 Offset......................................................................................................................................... 568
5.10.22 Precision.................................................................................................................................... 569
5.10.23 Radix ......................................................................................................................................... 570
5.10.24 RangeRawMax.......................................................................................................................... 571
5.10.25 RangeRawMin........................................................................................................................... 572
5.10.26 RangeScaledMax...................................................................................................................... 573
5.10.27 RangeScaledMin....................................................................................................................... 574
5.10.28 ScaleMode ................................................................................................................................ 575
5.10.29 ShowButtons ............................................................................................................................. 576
5.10.30 ShowErrorBoxes ....................................................................................................................... 576

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


10 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Inhaltsverzeichnis

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 11
Inhaltsverzeichnis

6.3.7 Beschreibung des Programmablaufs........................................................................................ 622


6.3.8 Beschreibung der Programmstruktur ........................................................................................ 629
6.3.9 Die Datei "OPCDA_AsyncDlg.cpp" ........................................................................................... 629
6.3.10 [Link] und Callback.h..................................................................................................... 651
6.3.11 Hinweise zum Erstellen eigener Programme............................................................................ 657
6.4 OPC-Custom-Schnittstelle (Asynchrone Kommunikation) in [Link]...................................... 657
6.4.1 Bedienung des Beispielprogramms .......................................................................................... 658
6.4.2 Programmbeschreibung............................................................................................................ 659
6.5 OPC-Custom-Schnittstelle (Synchrone Kommunikation) in C# ................................................ 664
6.5.1 Bedienung des Beispielprogramms .......................................................................................... 664
6.5.2 Programmbeschreibung............................................................................................................ 665
6.6 OPC-Custom-Schnittstelle (Asynchrone Kommunikation) in C# .............................................. 669
6.6.1 Bedienung des Beispielprogramms .......................................................................................... 669
6.6.2 Programmbeschreibung............................................................................................................ 670
6.7 OPC-XML-Schnittstelle in C#.................................................................................................... 675
6.7.1 Bedienung des Beispielprogramms .......................................................................................... 675
6.7.2 Web-Dienst zum Projekt hinzufügen......................................................................................... 677
6.7.3 Die Klasse MainForm................................................................................................................ 678
6.7.4 Der Konstruktor von MainForm und die Methode Dispose....................................................... 680
6.7.5 Erzeugen der Dialogfeldelemente............................................................................................. 680
6.7.6 Die Methode Main ..................................................................................................................... 685
6.7.7 Die Methode Button_Start_Sample_Click ................................................................................. 686
6.7.8 Die Methode Button_Stop_Sample_Click ................................................................................. 688
6.7.9 Die Methode Button_Read_Value_Click ................................................................................... 689
6.7.10 Die Methode Button_Write_Value_Click ................................................................................... 690
6.8 OPC Alarms & Events Custom-Schnittstelle in C++................................................................. 692
6.9 OPC-UA-Schnittstelle in C ........................................................................................................ 695
6.9.1 Aktivieren der Simulationsverbindung....................................................................................... 696
6.9.2 Importieren des Client-Zertifikates ............................................................................................ 696
6.9.3 Bedienung des Beispielprogramms .......................................................................................... 697
6.9.4 Programm starten ..................................................................................................................... 697
6.9.5 Werte lesen und schreiben ....................................................................................................... 697
6.9.6 Variablen beobachten ............................................................................................................... 698
6.9.7 Programm beenden .................................................................................................................. 698
6.9.8 Beschreibung des Programmablaufs........................................................................................ 699
[Link] Verbindungsaufbau ................................................................................................................... 699
[Link] Lesen und Schreiben von Variablen ......................................................................................... 700
[Link] Beobachten von Variablen und Alarmen .................................................................................. 700
[Link] Verbindungsabbau .................................................................................................................... 701
6.9.9 Hinweise zum Umstellen auf reale Variablen ........................................................................... 701
6.10 OPC-UA-Schnittstelle (Asynchrone Kommunikation) in C#...................................................... 702
7 Referenz Automation-Schnittstelle......................................................................................................... 703
7.1 Allgemeine Informationen ......................................................................................................... 703
7.1.1 Was ist eine Schnittstelle? ........................................................................................................ 703
7.1.2 Die zwei Schnittstellenarten von OPC ...................................................................................... 704
7.1.3 COM-/OLE-Objekte................................................................................................................... 704
7.1.4 Collection-Objekte..................................................................................................................... 705
7.1.5 Objektmodell ............................................................................................................................. 706

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


12 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Inhaltsverzeichnis

7.1.6 Datensynchronisation ................................................................................................................707


7.1.7 Ausnahmen ................................................................................................................................707
7.1.8 Ereignisse ..................................................................................................................................708
7.1.9 Arrays.........................................................................................................................................708
7.1.10 Parameter ..................................................................................................................................708
7.1.11 Type Library ...............................................................................................................................708
7.2 Das Objekt OPCServer..............................................................................................................709
7.2.1 Eigenschaften des Objekts OPCServer.....................................................................................709
[Link] StartTime....................................................................................................................................710
[Link] CurrentTime ...............................................................................................................................710
[Link] LastUpdateTime.........................................................................................................................711
[Link] MajorVersion ..............................................................................................................................711
[Link] MinorVersion ..............................................................................................................................712
[Link] BuildNumber ..............................................................................................................................712
[Link] VendorInfo..................................................................................................................................713
[Link] ServerState ................................................................................................................................713
[Link] LocaleID .....................................................................................................................................714
[Link] Bandwidth ..................................................................................................................................715
[Link] OPCGroups................................................................................................................................715
[Link] PublicGroupNames....................................................................................................................716
[Link] ServerName ...............................................................................................................................716
[Link] ServerNode ................................................................................................................................717
[Link] ClientName ................................................................................................................................717
7.2.2 Methoden des Objekts OPCServer ...........................................................................................718
[Link] GetOPCServers .........................................................................................................................718
[Link] Connect......................................................................................................................................719
[Link] Disconnect .................................................................................................................................720
[Link] CreateBrowser ...........................................................................................................................721
[Link] GetErrorString ............................................................................................................................721
[Link] QueryAvailableLocaleIDs...........................................................................................................722
[Link] QueryAvailableProperties ..........................................................................................................722
[Link] GetItemProperties......................................................................................................................723
[Link] LookupItemIDs ...........................................................................................................................724
7.2.3 Ereignisse des Objekts OPCServer...........................................................................................725
[Link] ServerShutDown........................................................................................................................726
7.3 Das Collection-Objekt OPCGroups ...........................................................................................726
7.3.1 Eigenschaften des Objekts OPCGroups ...................................................................................727
[Link] Parent.........................................................................................................................................727
[Link] DefaultGroupIsActive .................................................................................................................728
[Link] DefaultGroupUpdateRate ..........................................................................................................728
[Link] DefaultGroupDeadband .............................................................................................................729
[Link] DefaultGroupLocaleID ...............................................................................................................729
[Link] DefaultGroupTimeBias...............................................................................................................730
[Link] Count..........................................................................................................................................730
7.3.2 Methoden des Objekts OPCGroups ..........................................................................................731
[Link] Item ............................................................................................................................................731
[Link] Add.............................................................................................................................................732
[Link] GetOPCGroup............................................................................................................................732
[Link] Remove......................................................................................................................................733
[Link] RemoveAll..................................................................................................................................733
[Link] ConnectPublicGroup..................................................................................................................734

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 13
Inhaltsverzeichnis

[Link] RemovePublicGroup ................................................................................................................. 734


7.3.3 Ereignisse des Objekts OPCGroups......................................................................................... 735
[Link] GlobalDataChange.................................................................................................................... 735
7.4 Das Objekt OPCGroup.............................................................................................................. 737
7.4.1 Eigenschaften des Objekts OPCGroup .................................................................................... 738
[Link] Parent........................................................................................................................................ 738
[Link] Name......................................................................................................................................... 739
[Link] IsPublic...................................................................................................................................... 739
[Link] IsActive...................................................................................................................................... 740
[Link] IsSubscribed ............................................................................................................................. 741
[Link] ClientHandle.............................................................................................................................. 741
[Link] ServerHandle ............................................................................................................................ 742
[Link] LocaleID .................................................................................................................................... 743
[Link] TimeBias ................................................................................................................................... 743
[Link] DeadBand ................................................................................................................................. 744
[Link] UpdateRate ............................................................................................................................... 745
[Link] OPCItems.................................................................................................................................. 745
7.4.2 Methoden des Objekts OPCGroup ........................................................................................... 746
[Link] SyncRead.................................................................................................................................. 746
[Link] SyncWrite .................................................................................................................................. 748
[Link] AsyncRead ................................................................................................................................ 749
[Link] AsyncWrite ................................................................................................................................ 751
[Link] AsyncRefresh............................................................................................................................ 752
[Link] AsyncCancel ............................................................................................................................. 753
7.4.3 Ereignisse des Objekts OPCGroup .......................................................................................... 754
[Link] DataChange .............................................................................................................................. 754
[Link] AsyncReadComplete ................................................................................................................ 755
[Link] AsyncWriteComplete................................................................................................................. 756
[Link] AsyncCancelComplete.............................................................................................................. 757
7.5 Das Collection-Objekt OPCItems.............................................................................................. 758
7.5.1 Eigenschaften des Collection-Objekts OPCItems .................................................................... 758
[Link] Parent........................................................................................................................................ 759
[Link] DefaultRequestedDataType...................................................................................................... 759
[Link] DefaultAccessPath.................................................................................................................... 760
[Link] DefaultIsActive .......................................................................................................................... 760
[Link] Count......................................................................................................................................... 761
7.5.2 Methoden des Collection-Objekts OPCItems ........................................................................... 761
[Link] Item ........................................................................................................................................... 761
[Link] GetOPCItem.............................................................................................................................. 762
[Link] AddItem ..................................................................................................................................... 762
[Link] AddItems ................................................................................................................................... 763
[Link] Remove ..................................................................................................................................... 764
[Link] Validate ..................................................................................................................................... 765
[Link] SetActive ................................................................................................................................... 766
[Link] SetClientHandles ...................................................................................................................... 767
[Link] SetDataTypes ........................................................................................................................... 768
7.6 Das Objekt OPCItem................................................................................................................. 768
7.6.1 Eigenschaften des Objekts OPCItem ....................................................................................... 769
[Link] Parent........................................................................................................................................ 769
[Link] ClientHandle.............................................................................................................................. 769
[Link] ServerHandle ............................................................................................................................ 770

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


14 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Inhaltsverzeichnis

[Link] AccessPath ................................................................................................................................770


[Link] AccessRights .............................................................................................................................771
[Link] ItemID.........................................................................................................................................771
[Link] IsActive.......................................................................................................................................772
[Link] RequestedDataType ..................................................................................................................772
[Link] Value ..........................................................................................................................................773
[Link] Quality ........................................................................................................................................774
[Link] TimeStamp.................................................................................................................................774
[Link] CanonicalDataType ...................................................................................................................775
[Link] EUType ......................................................................................................................................775
[Link] EUInfo ........................................................................................................................................776
7.6.2 Methoden des Objekts OPCItem ...............................................................................................777
[Link] Read...........................................................................................................................................777
[Link] Write...........................................................................................................................................778
7.7 Definitionen ................................................................................................................................778
7.7.1 Zustand des Servers..................................................................................................................779
7.7.2 Fehlermeldungen .......................................................................................................................779
7.8 Anhang zur Referenz Automation-Schnittstelle .........................................................................781
8 Literaturhinweise.................................................................................................................................... 785
8.1 OPC-Spezifikationen..................................................................................................................786
Glossar .................................................................................................................................................. 789

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 15
Inhaltsverzeichnis

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


16 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Vorwort 1
Was ist neu beim SIMATIC NET OPC-Server?
Mit OPC Unified Architecture Version 1.01 sind die bisherigen Funktionalitäten erweitert
worden.
Die SIMATIC NET OPC-UA-Server unterstützen zusätzlich:
● Transparente Server- Redundanz für das S7-Protokoll.
● Konfigurierbare optionale performante lokale Kommunikation.
● Konfigurierbare optionale Benutzer-Authentifizierung.

Was ist neu bei SIMATIC NET OPC?


● Das neue OPC Data Control für die .NET-Schnittstellen unterstützt nun OPC UA mit einer
einfachen Zertifikatverwaltung. Hiermit ist die einfache grafische OPC-UA-
Programmierung auch für .NET möglich
● Mit einem einfachen neuen Symbol-Editor können nun Symboldateien vom performanten
Typ "ATI" bearbeitet werden. CSV-Import/-Export und STI-Import sind nun verfügbar.

Was ist neu in diesem Handbuch?


● Das Kapitel "FAQs" wurde entfernt. Sie finden dieses Kapitel ab jetzt in dem Handbuch
"PC-Station in Betrieb nehmen".
● Das Kapitel "UA-Redundanz-Schnittstelle programmieren" wurde hinzugefügt.

SIMATIC NET - Wegweisende Erfolgskonzepte schwarz auf weiß


Diese Dokumentation begleitet Sie auf Ihrem Weg zum erfolgreichen Einsatz von SIMATIC
NET. Sie führt anschaulich in das Thema ein und zeigt Ihnen, wie Sie einzelne
Komponenten installieren und projektieren, und wie Sie Programme auf der Basis von OPC
erstellen. Sie werden sehen, was industrielle Kommunikation mit SIMATIC NET bedeuten
kann - für Ihre Automatisierungswelt und vor allem für den Erfolg Ihres Unternehmens.

SIMATIC NET - Eine gute Entscheidung


Sie kennen die Vorteile verteilter Automatisierungssysteme und wollen die Möglichkeiten
industrieller Kommunikation optimal nutzen. Sie bauen auf einen starken Partner; Sie setzen
auf innovative und zuverlässige Produkte. Mit SIMATIC NET haben Sie die richtige Wahl
getroffen.
Diese Dokumentation baut auf Ihrem Wissen auf und lässt Sie vom Know-how der
Spezialisten profitieren.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 17
Vorwort
1.1 Wie arbeite ich mit der Dokumentation?

Sind Sie Neuling?


Dann können Sie sich systematisch einarbeiten. Beginnen Sie in Band 1 mit der Einführung
in die industrielle Kommunikation. In Band 1 erfahren Sie alles Nötige über
Kommunikationsprinzip und Funktionsumfang des SIMATIC NET OPC-Servers. Lesen Sie
die Grundlagen zur OPC-Schnittstelle, machen Sie sich mit den SIMATIC NET-
Kommunikationsprotokollen und deren Vorteilen und Funktionen bekannt.

Sind Sie Profi?


Dann können Sie sofort durchstarten. Dieser Band 2 gibt Ihnen alle Informationen, die Sie
zum Bedienen von SIMATIC NET benötigen.

Folgen Sie gerne einem guten Beispiel?


Dann finden Sie in den mitgelieferten Beispielprogrammen wertvolle Anregungen, die Ihnen
helfen, eigene Vorstellungen umzusetzen.

1.1 Wie arbeite ich mit der Dokumentation?


Um Ihnen das Arbeiten mit der Dokumentation zu erleichtern, werden verschiedene
Darstellungsmittel und Bedienelemente verwendet. Sie dienen insbesondere dazu,
Informationsaufnahme und Informationszugriff zu beschleunigen.

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.

Dieses Darstellungsmittel zeigt an:


kursive Schrift Dies sind betonte Ausdrücke oder Namen von
Items, Variablen, Programmen, Dialogen etc.
<Text in spitzen Klammern> Dies sind <variable Begriffe>, die Sie durch den
jeweils aktuellen Begriff ersetzen müssen.
fett gedruckte Begriffe Syntaxelemente,
am Anfang der Textspalte die nachfolgend beschrieben werden.
Text in Schriftart Courier New Hier steht Programmcode.
{Syntax-Text in geschweiften Klammern} Optionale Angaben in Syntaxbeschreibungen
"Syntax-Text in Anführungszeichen" Variable Begriffe in Syntaxbeschreibungen

1.2 Bestimmungen
Bei den Produkten von SIMATIC NET müssen Sie folgende Bestimmungen beachten:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


18 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
Vorwort
1.2 Bestimmungen

1.2.1 Welche juristischen Bestimmungen muss ich beachten?


Wir weisen darauf hin, dass der Inhalt dieses Dokuments nicht Teil einer früheren oder
bestehenden Vereinbarung, Zusage oder eines Rechtsverhältnisses ist oder diese abändern
soll. Sämtliche Verpflichtungen von Siemens ergeben sich aus dem jeweiligen Kaufvertrag,
der auch die vollständige und allein gültige Gewährleistungsregel enthält. Diese
vertraglichen Gewährleistungsbestimmungen werden durch die Ausführungen dieses
Dokuments weder erweitert noch beschränkt.
Wir weisen außerdem darauf hin, dass aus Gründen der Übersichtlichkeit nicht jede nur
erdenkliche Problemstellung im Zusammenhang mit dem Einsatz des OPC-Servers
beschrieben werden kann. Sollten Sie weitere Informationen benötigen oder sollten
besondere Probleme auftreten, die hier nicht ausführlich genug behandelt werden, können
Sie die erforderliche Auskunft über die örtliche Siemens-Niederlassung anfordern.

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

1.2.2 Welche Sicherheitsbestimmungen muss ich kennen?

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 19
Vorwort
1.2 Bestimmungen

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


20 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET 2
Dieses Kapitel zeigt die Syntax der Namen von Prozessvariablen. Diese Namen legen an
der OPC-Schnittstelle fest, welche Prozesswerte angesprochen werden. Die
Variablennamen müssen Sie bei der Programmierung oder Konfiguration eines OPC-Client
angeben.

2.1 Welche Kommunikationsfunktionen gibt es?


Der OPC-Server bietet einen standardisierten Zugriff auf die industriellen
Kommunikationsnetze von SIMATIC NET.
Der SIMATIC NET OPC-Server unterstützt die Anbindung von Anwendungen an beliebige
Automatisierungskomponenten, die über PROFIBUS oder Industrial Ethernet vernetzt sind.
Er bietet folgende Kommunikationsfunktionen:
● S7-Kommunikation
● Offene Kommunikationsdienste (SEND/RECEIVE)
● PROFIBUS DP und FDL
● SNMP
● PROFINET IO
Die Kommunikatonsfunktionen sind speziell für die verschiedenen Anforderungen optimiert.
Es können mehrere Kommunikationsfunktionen gleichzeitig vom OPC-Server für Data
Access und Unified Architecture unterstützt werden. S7-Kommunikation und PROFINET
IO-Kommunikation gibt es auch für OPC UA.

2.2 Was sind Prozessvariablen?

Eine Prozessvariable ist ein schreibbares und/oder lesbares Datum der Prozessperipherie,
wie beispielsweise die Temperatur eines Kessels als Eingangswert einer
speicherprogrammierbaren Steuerung.

OPC COM (Data Access)


Prozessvariablen werden im OPC-Data Access-Klassenmodell durch die Klasse OPC-Item
vertreten. Nur die Elemente dieser Klasse repräsentieren in OPC eine reale Größe aus dem
Prozess.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 21
OPC-Prozessvariablen für SIMATIC NET
2.3 Wie werden die ItemIDs der Prozessvariablen gebildet?

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.

2.3 Wie werden die ItemIDs der Prozessvariablen gebildet?


Prozessvariablen werden an der OPC-Schnittstelle durch einen eindeutigen Namen, die
ItemID, identifiziert. Die ItemID setzt sich wie folgt zusammen:

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:

DP DP-Protokoll einschließlich DP Master, DP Slave und DPC1


S7 S7-Funktionen über PROFIBUS und Industrial Ethernet
SR Offene Kommunikationsdienste über Industrial Ethernet
FDL Offene Kommunikationsdienste über PROFIBUS
SNMP SNMP-Kommunikation über Industrial Ethernet

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


22 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

PNIO PROFINET-IO-Kommunikation über Industrial Ethernet


DP2 DP Master Klasse 2 und DPC2

<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

Prozessvariablen für den DP-Master


Der OPC-Server von SIMATIC NET für den DP-Master-Betrieb bietet für folgende Dienste
Prozessvariablen an:
● Dienste für den Master Klasse 1
Zugriff und Beobachtung von DP-Eingängen und Ausgängen
● DPC1-Dienste
Azyklische Übertragung von Datenblöcken
● Fast Logic für
– CP 5613 und CP 5614 (nur DP-Master)
Automatische Überwachung von Slave-Daten
– CP 5623 und CP5624 (nur DP-Master)
Automatische Überwachung von Slave-Daten
● Diagnosevariablen
Auswertung der statischen Diagnose

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 23
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Prozessvariablen für PROFIdrive


● Profil-Server
Anbindung von Antriebsgeräten über das DP-Protokoll entsprechend der DRIVE-Com-
Spezifikation
● Bus-Server
Anbindung von Antriebsgeräten über das DP-Protokoll unter Verwendung der Master
Klasse 2-Funktionen (DPC2-Dienste)

Prozessvariablen für den DP Master Klasse 2


● Konfigurationsdienste
– Lesen der Ein-/Ausgangsdaten eines Slave
– Lesen der Slave-Konfiguration
– Datensätze für einen Slave schreiben
● Online-Diagnose
– Lesen der Diagnosedaten eines Slave
– Lesen der Master Klasse 1 Diagnosedaten
● Datensätze für einen Slave schreiben und lesen (DPC2)

Prozessvariablen für den DP-Slave


Der OPC-Server von SIMATIC NET für den DP-Slave-Betrieb bietet für folgende Dienste
Prozessvariablen an:
● Variablendienste zum Zugriff auf lokale Slave-Daten
Zugriff auf die Ein- und Ausgänge des Slaves
● Diagnosevariablen
Auswertung der statischen Diagnose des Slaves

2.4.1 DP Master Klasse 1

[Link] Hochperformanter SIMATIC NET Inproc-Server für das PROFIBUS DP-Protokoll


Da das PROFIBUS DP-Protokoll ein Abbild der Ein- und Ausgangsdaten im
Kommunikationsprozessor des Rechners bereithält, erfolgen die Zugriffe auf die
Prozessdaten nur innerhalb des lokalen Rechners. Damit können die Zugriffe besonders bei
Verwendung der SIMATIC NET Baugruppen CP 5613 und CP 5623 über die Schnittstelle
DP-Base sehr schnell erfolgen.
In einigen Anwendungsfällen, z.B. bei Verwendung von PC-basierten Steuerungen, sind
extrem kurze Zeiten zum Zugriff auf Prozessdaten erforderlich.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


24 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
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.

● Die Stabilität des OPC-Servers ist vom Client abhängig.


Verhält sich der OPC-Client unkontrolliert z.B. bei Zugriffsverletzungen, ist unweigerlich
der OPC-Server mit betroffen. Die Folge ist, dass das ggf. notwendige Rücksetzen der
Kommunikationsbaugruppe durch den OPC-Server nicht mehr erfolgen kann. Auch ein
explizites Beenden des OPC-Servers über die Konfigurationsprogramme ist nicht
möglich.

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.

Aufruf des In-Process-Servers für DP


Der In-Process-Server für DP wird über eine separate ProgID angesprochen. Die ProgID
lautet "[Link]".
Die ProgID wird in Funktionsaufrufen oder in OPC-Clients angegeben, um einen Server
auszuwählen.

Beispiele für Funktionsaufrufe:


Visual Basic:
[Link] ("[Link]")

Visual C++:
r1 = CLSIDFromProgID(L"[Link]", &clsid);
r1 = CoCreateInstance (clsid, NULL, CLSCTX_INPROC_SERVER,
IID_IOPCServer, (void**)&m_pIOPCServer);

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 25
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

[Link] Performanter SIMATIC NET OPC-Server für das PROFIBUS DP-Protokoll

Performanceverbesserung auch bei mehreren Clients


Wie im vorangegangenen Abschnitt beschrieben, kann der hochperformante Inproc-Server
für PROFIBUS-DP nur von einem Client genutzt werden. Um bei höheren
Performanceanforderungen die gleichzeitige Nutzung von zwei oder mehr Clients zu
ermöglichen, wird eine weitere Konfigurationsvariante angeboten.
Hierfür werden alle unterlagerten DP-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
DP-Protokolls im Konfigurationsprogramm "PC-Station einstellen":

Bild 2-1 Fenster des Konfigurationsprogramms "PC-Station einstellen" zur Auswahl des DP-Protokolls

"Symbolik" darf zusätzlich ausgewählt werden.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


26 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

[Link] Einordnung der DPC1- und DPC2-Dienste

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

Slaves mit DP-V1-Zusatzfunktionen


Slaves mit DP-V1-Zusatzfunktionen können mit DP-Master Klasse 1 und DP-Master
Klasse 2 kommunizieren.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 27
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Ü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

Bild 2-2 Die Protokollteile von DP bzw. DP-V1

MSCY_C1 Master-Slave, zyklischer C1-Betrieb


MSAC_C1 Master-Slave, azyklischer C1-Betrieb
MSAC_C2 Master-Slave, azyklischer C2-Betrieb

[Link] Prozessvariablen für Dienste des Master Klasse 1


Mit den Diensten zum Zugriff auf zyklische Daten können Sie auf die Eingänge und
Ausgänge der Slaves zugreifen und diese beobachten und steuern.
Der Zugriff erfolgt über:
● Slave Nummer.
Diese Nummer entspricht der PROFIBUS-Adresse.
● Modulnummer.
DP-Slaves können mehrere Module mit unterschiedlichen Ein-/Ausgangsbereichen
enthalten.
● Ein-/Ausgangsbereich

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


28 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

[Link] Syntax der Prozessvariablen für den Master Klasse 1

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 29
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Format- Beschreibung OLE-Datentyp Visual Basic-Typ


bezeichner
X Bit VT_BOOL Boolean
BYTE oder B Byte (unsigned 8) VT_UI1 Byte
CHAR Character (signed 8) VT_I1 Integer
WORD oder W Wort (unsigned 16) VT_UI2 Long
INT Integer (signed 16) VT_I2 Integer
DWORD oder D Doppelwort (unsigned 32) VT_UI4 Double
DINT Doppel-Integer (signed 32) VT_I4 Long
REAL Fließkommazahl (IEEE 4 Byte) VT_R4 Single

<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".

[Link] Projektierter CP-Name


Der Verbindungsname spezifiziert den Kommunikationszugang durch Angabe des
Kommunikationsprozessors, der mit dem PROFIBUS-Netz verbunden ist.
Beim DP-Protokoll ist der projektierte CP-Name der Name der Kommunikationsbaugruppe.

Syntax
DP:[<ProjektierterCPName>]

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


30 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Erklärung
<ProjektierterCPName>
Der projektierte CP-Name wird mit SIMATIC STEP 7 / NCM projektiert.

Beispiele für "Projektierter CP-Name"


Typische Projektierte CP-Namen sind:
CP 5613
CP 5614
CP 5611

[Link] Beispiele für Prozessvariablen für den Master Klasse 1


Hier finden Sie Beispiele, die die Syntax von Variablennamen für DP-Variablen
verdeutlichen.

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 31
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

[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.

[Link] Syntax der Prozessvariablen für DPC1-Dienste

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>}

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


32 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

<Format>
Format, in dem die Daten geliefert werden.
Wenn keine Formatangabe gemacht wird, wird das Format Byte verwendet.

Format- Beschreibung OLE-Datentyp Visual Basic-Typ


bezeichner
X Bit VT_BOOL Boolean
BYTE oder B Byte (unsigned 8) VT_UI1 Byte
CHAR Character (signed 8) VT_I1 Integer
WORD oder W Wort (unsigned 16) VT_UI2 Long
INT Integer (signed 16) VT_I2 Integer
DWORD oder D Doppelwort (unsigned 32) VT_UI4 Double
DINT Doppel-Integer (signed 32) VT_I4 Long
REAL Fließkommazahl VT_R4 Single

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 33
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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] Beispiele für Prozessvariablen für DPC1-Dienste


Hier finden Sie Beispiele, die die Syntax von Variablennamen für DPC1-Dienste
verdeutlichen.

Variablennamen für DPC1


DP:[CP 5613]Slave005S003Data2,120,DWORD7
Slave005S003Data2,120,DWORD7
Zugriff auf das Doppelwort ab Offset 7 in einem Datensatz der Länge 120 Bytes in Slot 3,
Index 2 des Slaves 5.
DP:[CP 5613]Slave005S003Data2,120,B8,4
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.

[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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


34 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Vorteile von Fast Logic


Die Verwendung von Fast Logic hat folgende Vorteile:
● Der OPC-Server und der OPC-Client sind entlastet.
● Die Datenübertragung findet schneller statt, weil sie unabhängig von der auf dem PC
laufenden Software in der Hardware des CPs abläuft.

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.

[Link] Syntax der Steuervariablen für Fast Logic

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 35
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

OLE-Datentyp Visual Basic Typ


VT_BSTR String

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY of VT_UI1 Byte()

Clear
Clear kann nur geschrieben werden.
Wenn der boolsche Wert TRUE geschrieben wird, wird der in der ItemID spezifizierte Fast
Logic-Auslöser deaktiviert.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


36 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

OLE-Datentyp Visual Basic Typ


VT_BOOL Boolean

<N>
Nummer des verwendeten Fast Logic Auslösers. Wert zwischen 1 und 4.

[Link] DP-spezifische Informationsvariablen


Mit den DP-spezifischen Informationsvariablen für den Master Klasse 1 werden
Informationen über den DP-Master und die angeschlossenen DP-Slaves abgefragt.
Sie können folgende Informationen abfragen:
● Betriebsart des DP-Masters
● Ereignismeldungen des DP-Masters
● Aktivitätsüberwachung des CPs
● Betriebszustand eines DP-Slaves
● Typ eines DP-Slaves
● sonstige Informationen zur tiefergehenden Diagnose

[Link] Syntax der DP-spezifischen Informationsvariablen

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 37
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

● 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

OLE-Datentyp Visual Basic Typ


VT_BSTR String

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

OLE-Datentyp Visual Basic Typ


VT_BOOL Boolean

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


38 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

OLE-Datentyp Visual Basic Typ


VT_BOOL Boolean

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

OLE-Datentyp Visual Basic Typ


VT_BOOL Boolean

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:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 39
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

0
Überwachung aus
400 - 102000
Beliebiger Wert in ms. Der Wert wird auf ein Vielfaches von 400 gerundet.
6000
Default

OLE-Datentyp Visual Basic Typ


VT_UI4 Double

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

OLE-Datentyp Visual Basic Typ


VT_BSTR String

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY | VT_UI1 Byte()

SlavenMiscSlvType
Typ des DP-Slaves mit der Adresse n.
Rückgabewerte:
NO_SLV
Kein DP-Slave

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


40 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

OLE-Datentyp Visual Basic Typ


VT_BSTR String

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

[Link] Beispiele für DP-spezifische Informationsvariablen


Hier finden Sie einige Beispiele für Rückgabewerte von DP-spezifischen
Informationsvariablen.

Betriebsart DP-Master
DP:[CP 5613]MasterState
MasterState

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 41
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

kann beispielsweise folgenden Wert zurückgeben:


OPERATE
Der DP-Master befindet sich in der Produktivphase.

Aktueller Betriebszustand eines Slaves


DP:[CP 5613]Slave3SlvState
Slave3SlvState
kann beispielsweise folgenden Wert zurückgeben:
READY
Der DP-Slave mit der Adresse 3 ist in der Datentransferphase.

Typ eines Slaves


DP:[CP 5613]Slave3MiscSlvType
Slave3MiscSlvType
kann beispielsweise folgenden Wert zurückgeben:
ET200_U
Bei dem Slave 3 handelt es sich um eine ET 200U.

[Link] Syntax der systemspezifischen Informationsvariablen


DP:[SYSTEM]&version()

&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

2.4.2 DP Master Klasse 2

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


42 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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".

[Link] Projektierter CP-Name


Der projektierte CP-Name spezifiziert den eingesetzten Kommunikationsprozessor (CP).

Syntax
DP2:[<ProjektierterCPName>]

Erklärung
<ProjektierterCPName>
Der projektierte CP-Name wird mit SIMATIC STEP 7 / NCM projektiert.

Beispiel
DP2:[CP 5613]

[Link] Syntax der Prozessvariablen für Master Diagnose

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 43
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

DP2-Items des Busteilnehmers


Master
Kennzeichen für den Zugriff auf einen Master über das DP-Protokoll.
<AdresseMaster>
PROFIBUS Stationsadresse des Busteilnehmers.
Bereich: 0 bis 126

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


44 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 45
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


46 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 47
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


48 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 49
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


50 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Zugriffsrecht: Read-Only
OLE-Datentyp: VT_UI1

[Link] Syntax der Prozessvariablen für Slave Diagnose

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 51
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


52 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 53
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


54 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 55
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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:

Feldelement Datentyp Bedeutung


1 VT_UI1 Neu zu vergebende Slave-Adresse.
2 VT_BOOL Flag, ob die DP-Slave Adresse zu einem späteren Zeitpunkt
noch einmal geändert werden kann.
3 VT_I4 Gerätetyp (PROFIBUS Ident-Nummer) des Teilnehmers.
4 VT_ARRAY | VT_UI1 Anwenderspezifische Daten. Es kann ein leeres Array
übergeben werden.

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.

[Link] Syntax der Prozessvariablen für I/O Daten


Die englischen Abkürzungen I/O (input/output) entsprechen den deutschen Abkürzungen
E/A (Eingang/Ausgang).

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


56 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

Formatbezeichner Beschreibung OLE- Visual Basic-


Datentyp Datentyp
X Bit VT_BOOL Boolean
BYTE oder B Byte (unsigned 8) VT_UI1 Byte
CHAR Character (signed 8) VT_I1 Integer
WORD oder W Wort (unsigned 16) VT_UI2 Long
INT Integer (signed 16) VT_I2 Integer
DWORD oder D Doppelwort (unsigned 32) VT_UI4 Double

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 57
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Formatbezeichner Beschreibung OLE- Visual Basic-


Datentyp Datentyp
DINT Doppel-Integer (signed 32) VT_I4 Long
REAL Fließkommazahl VT_R4 Single

<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.

[Link] Syntax der Prozessvariablen für Datensätze

Syntax
DP2:[<ProjektierterCPName>]Slave<Adresse>S<Slot>Data<Index>
{,<Länge>}{,<Teilbereich>}

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


58 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

mit Teilbereich = <Teilbereich> = <Format><Offset>{.<Bit>}{,<Anzahl>}

DP2-Items des Busteilnehmers


Slave
Kennzeichen für den Zugriff auf einen Slave über das DP-Protokoll.
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.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 59
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Datentyp


X Bit VT_BOOL Boolean
BYTE oder B Byte (unsigned 8) VT_UI1 Byte
CHAR Character (signed 8) VT_I1 Integer
WORD oder W Wort (unsigned 16) VT_UI2 Long
INT Integer (signed 16) VT_I2 Integer
DWORD oder D Doppelwort (unsigned 32) VT_UI4 Double
DINT Doppel-Integer (signed 32) VT_I4 Long
REAL Fließkommazahl VT_R4 Single

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


60 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 61
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

<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.

[Link] Beispiele für Prozessvariablen für Datensätze


Hier finden Sie Beispiele, die die Syntax von Variablennamen für DPC2-Datensätze
verdeutlichen.

Variablennamen für DPC2


DP2:[CP 5613]Slave005S003Data2,120,DWORD7
Zugriff auf das Doppelwort ab Offset 7 in einem Datensatz der Länge 120 Bytes in Slot 3,
Index 2 des Slaves 5.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


62 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

[Link] Syntax der DP2-spezifischen Informationsvariablen

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}

OLE-Datentyp Visual Basic Typ


VT_ARRAY | VT_BSTR String()

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:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 63
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Bei Verwendung der Lifelist als OPC-Item, z. B. DP2:[CP5614A2]lifelist(), ist Folgendes zu


beachten:
Der FDL-Dienst "Lifelist" ist ein Dienst, der nur von einer Anwendung aufgerufen werden
kann. Wird er als OPC-Item eingestellt, so steht er für andere Anwendungen nicht mehr zu
Verfügung. Insbesondere kann in "PC-Station einstellen" die Lifelist nicht mehr angezeigt
werden.
Da der Lifelist-Aufruf zudem eine nicht unbedeutende Buslast erzeugt, die unter OPC
zyklisch auftritt, sollte er nach Möglichkeit vermieden werden.

[Link] Syntax der systemspezifischen Informationsvariablen


DP2:[SYSTEM]&version()

&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

[Link] Variablendienste zum Zugriff auf lokale Slave-Daten


Der OPC-Server für SIMATIC NET kann in einem PROFIBUS DP Netz neben der DP-
Master-Funktion auch die Rolle des DP-Slaves übernehmen. Der OPC-Server verwaltet
Speicherbereiche für die Ein- und Ausgänge dieses DP-Slaves und bildet diese auf OPC
Variablen ab. Ein OPC-Client kann die vom Master gesetzten Ausgänge lesen und in den
Eingängen Werte setzen, die der DP-Master im nächsten Zyklus abholt.
DP-Slaves sind modular aufgebaut. Ein DP-Slave kann mehrere Module mit
unterschiedlichen Ein-/Ausgangsbereichen enthalten. Die Zuordnung der Module geschieht
durch die DP-Projektierung.
Der Variablenname bezeichnet einen Ein- oder Ausgangsbereich im Modul eines Slaves.
Der Zugriff auf die Ein- und Ausgänge des Slaves erfolgt durch Angabe der Modul-Nummer
und des Ein- oder Ausgangsbereichs.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


64 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Ü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.

[Link] Syntax der Prozessvariablen für den DP-Slave

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 65
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Typ


X Bit VT_BOOL Boolean
BYTE oder B Byte(unsigned 8) VT_UI1 Byte
CHAR Character (signed 8) VT_I1 Integer
WORD oder W Wort (unsigned 16) VT_UI2 Long
INT Integer (signed 16) VT_I2 Integer
DWORD oder D Doppelwort (unsigned 32) VT_UI4 Double
DINT Doppel-Integer (signed 32) VT_I4 Long
REAL Fließkommazahl VT_R4 Single

<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.

[Link] Beispiele für Prozessvariablen für den DP-Slave


Hier finden Sie einige Beispiele, die die Syntax von Variablennamen für DP-Slave-Variablen
verdeutlichen.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


66 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

[Link] DP-Slave-spezifische Informationsvariablen


Für Diagnosezwecke beim DP-Slave gibt es einige vordefinierte Informationsvariablen.

[Link] Syntax der DP-Slave-spezifischen Informationsvariablen

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 67
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

<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.

Wie funktioniert PROFIdrive?


PROFIdrive definiert ein Gerätemodell aus Funktionsmodulen, die geräteintern zusammen-
arbeiten und die Intelligenz des Antriebssystems widerspiegeln. Diesen Modulen sind
Objekte zugeordnet, die im Profil beschrieben und hinsichtlich ihrer Funktionen definiert
werden. Die gesamte Funktionalität eines Antriebs ist durch die Summe seiner Parameter
beschrieben.
Im Gegensatz zu anderen Antriebsprofilen definiert PROFIdrive nur die Zugriffsmechanis-
men auf die Parameter sowie ein Subset von ca. 30 Profilparametern, wozu beispielsweise
Störpuffer, Antriebssteuerungen oder die Geräteidentifikation gehören.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


68 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

OPC-Client

OPC PROFIdrive Profil-Server


([Link])

OPC PROFIdrive Bus-Server


SIMATIC NET PROFIBUS DPC2
([Link])

Antrieb 1 Antrieb 2 Antrieb 3

Bild 2-3 Übersicht der PROFIdrive-Architektur unter einem OPC-Client

2.4.5 PROFIdrive Profil-Server

Was ist ein PROFIdrive Profil-Server?


Der PROFIdrive Profilserver basiert auf dem OPC-Standard und ermöglicht den Anwendern
einen komfortablen Zugriff auf Antriebsgeräte. Er übersetzt die komplizierte DPV1-
Funktionalität in anwenderfreundliche Geräte- und Parameternamen.

[Link] Syntax der Prozessvariablen für Parameter


Die Spezifikation der Variablen richtet sich nach der Spezifikation der DriveCom
([Link]
<variable>: = "PAR"<index_info>[<subindex_info>][<datatype_info>][<extra_info>]

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)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 69
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

subindex_info: Index des Parameters (beginnend mit 0).


Wenn der Parameter nicht indiziert ist, dann kann dieser Teil
weggelassen werden.
datatype_code: Der Code kann der folgenden Tabelle entnommen werden.

OPC-Datentyp Wert Beschreibung


(Variant Typ)
VT_I2 2 2 byte integer with sign
VT_I4 3 4 byte integer with sign
VT_R4 4 4 byte floating point number
VT_R8 5 8 byte floating point number
VT_BSTR 8 String
VT_BOOL 11 Boolean, True=-1, False=0
VT_I1 16 1 byte integer with sign
VT_UI1 17 1 byte integer without sign
VT_UI2 18 2 byte integer without sign
VT_UI4 19 4 byte integer without sign
VT_ARRAY | VT_UI1 8209 array of byte

[Link] Beispiele der Prozessvariablen für Parameter


Der Variablennamen für den Parameter 964, Index 1, 2 Byte Integer lautet dann:
PARI964S1D2
Der Profil-Server unterschiedet nicht zwischen Groß und Kleinschreibung. Der
Variablenname pari964s1d2 ebenso wie ParI964s1D2 bezieht sich auf den gleichen
Parameter.
Bestimmte Datentypen werden durch den Profil-Server selbstständig konvertiert. Die
folgende Tabelle zeigt die Kombinationen von OPC-Datentyp und PROFIdrive-Datentypen
die behandelt werden.

OPC-Datentyp (Variant Typ) PROFIdrive Typ


VT_I1 integer8, BYTE
VT_I2 integer16, WORD
VT_I4 integer32, DWORD
VT_UI1 unsigned8, BYTE
VT_UI2 unsigned16, WORD
VT_UI4 unsigned32, DWORD
VT_R4 float, DWORD
VT_R8
VT_BSTR VisibleString
VT_ARRAY | VT_UI1 all types (raw format)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


70 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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!

Für die Typumwandlung zwischen den OPC-Datentypen und den PROFIdrive-Datentypen


gilt folgende Konvention:
Wenn ein Typ nicht direkt abgebildet werden kann, da z.B. der angeforderte Variant-
Datentyp kürzer als der PROFIdrive-Datentyp ist, so werden die ersten Bytes des
PROFIdrive-Datentyps verwendet. Ist der Variant-Datentyp länger als der PROFIdrive-Typ,
so sind die nicht benutzten Bytes mit Null aufzufüllen.
Die Länge des Variant-Datentyps VT_ARRAY | VT_UI1 kann dynamisch angepasst werden.
Wird beim Anlegen eines OPC-Items mit diesem Datentyp keine Länge explizit angegeben,
so wird diese aus dem Datenstrom des Feldbusses ermittelt und ein entsprechend großes
Feld angelegt. Bei jedem Lese-/Schreibvorgang kann die Länge variieren. Wird die Länge
explizit angegeben, so werden stets Arrays der spezifizierten Länge übertragen. Stimmt die
spezifizierte Länge nicht mit der tatsächlichen Länge der Daten überein, so werden
gegebenenfalls Daten abgeschnitten oder nicht benutzte Feldelemente mit Null aufgefüllt.
Beispiel 1:
spezifizierte Länge: 32 Bit (4 Bytes)
empfangene Bytes: AA BB CC DD EE FF GG HH
Lesen des Items liefert: AA BB CC DD

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 71
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

[Link] Syntax der DRIVECOM-spezifischen Informationsvariablen


Die DriveServer-Spezifikation verlangt, dass für jedes am Bus angeschaltete Gerät einige
OPC-Items im Namensraum anzulegen sind. Das Anlegen dieser Items übernimmt der
PROFIdrive-Busserver (genauer PROFIBUS-DP-Server) automatisch während der Start-
Phase, nachdem er die Life-List ermittelt hat. Es handelt sich dabei um die nachfolgend
genannten Items, die für Busserver nach der DriveServer-Spezifikation als "mandatory"
gekennzeichnet sind.

Name des Items Beschreibung


DS_Vendorname Enthält die Herstellerkennung gemäß PROFIdrive Profil V3.1. Anhang A6. Die
Information kann aus Parameter 964, Index 0 entnommen werden.
DS_Devicename Enthält den Gerätetyp. Die Information kann aus Parameter 964, Index 1
entnommen werden.
DS_DeviceID Enthält die Geräteadresse, die mit Hilfe der Life-List ermittelt wurde. Alternativ
kann diese Information auch aus Parameter 918 ermittelt werden.

[Link] Einzel- und Multiparameterzugriffe


Das PROFIdrive-Profil V3.1 definiert Einzel- und Multiparameterzugriffe, also Lesen bzw.
Schreiben einzelner Parameter oder einer Liste von Parametern. Gelingt der
Multiparameterzugriff grundsätzlich nicht, wird er möglicherweise vom Gerät nicht
unterstützt. In diesem Fall werden automatisch Einzelparameterzugriffe vom Profil-Server
ausgeführt.

[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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


72 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

[Link] Einstellungen für Profil-Server


Um Einstellungen für den Profil-Server vorzunehmen, muss der Profil-Server-Konfigurator
gestartet werden.
1. Wählen Sie unter "anzeigen:" die Option "OPC-Server Ver 2.0" aus.
Damit werden unten links die auf dem PC befindlichen OPC-Server aufgelistet.
2. Markieren Sie "[Link]" und beenden Sie abschließend den Konfigurator.
Damit sind alle Einstellungen für den Betrieb des PROFIdrive-Profil-Servers
vorgenommen.
Ein OPC-Client kann nun den OPC Profil-Server "[Link]-Server" verwenden.

2.4.6 PROFIdrive Bus-Server

Was ist ein OPC-Bus-Server?


Der OPC-Busserver dient der Anbindung von elektrischen Antrieben an den OPC-Client
über das DP-Protokoll. Die Daten werden über sogenannte Parameter ausgetauscht. Ein
Parameter hat eine Nummer über die er identifiziert wird und einen zugehörigen Wert.
Optional kann der Parameter auch indiziert sein, dann besteht der Parameter aus einem
Feld von Werten, wobei alle Werte den selben Datentyp haben.
Die Parameternummern sind in ihrer Bedeutung herstellerspezifisch und werden nicht
lückenlos verwendet. Um dieser Situation gerecht zu werden, muss die Adressierung des
Parameters im Variablennamen kodiert werden können. Die Variablen können dynamisch
angelegt werden und müssen nicht vorab projektiert sein.
Der OPC-Busserver bildet die Parameter eines Profilservers auf die SIMATIC NET DPC2-
Dienste ab. Ein OPC-Client greift seinerseits auf den Profil-Server zu.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 73
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

Allgemeine Hinweise zum Betrieb des PROFIdrive-Bus-Server


Nach der Konfiguration sollten Sie folgende Punkte überprüfen, um einen problemlosen
Betrieb zu gewährleisten.
● In "NetPro / HW Konfig" muss im Dialog "Eigenschaften" der Baugruppe im Register
"OPC-Eigenschaften" die Option "im PROFIdrive Modus betreiben" selektiert werden.
● Für die Baugruppe in der PC-Station muss in NetPro im Dialog "Eigenschaften" >
"PROFIBUS-Schnittstelle CPxxxx" ("Netzanschluss" Kontextmenü "Objekteigenschaften")
im Register "Parameter" eine PROFIBUS-Adresse vergeben werden.

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.

● Für das Bus-Profil muss in "NetPro / HW Konfig" im Dialog "Eigenschaften" im Register


"Netzeinstellungen" das Profil "Universell" ausgewählt werden.
● Anpassung der Übertragungsrate entsprechend den angeschlossenen Antrieben. Die
Einstellung 1.5 Mbit/s sollte aber immer funktionieren.
● Zur Kontrolle der Objekteigenschaften der installierten Kommunikationsbaugruppe
(CPxxxx) muss im Dialog "Eigenschaften" im Register "Betriebsart" die Option
"DP Master Klasse 2 (Diagnosefunktionen)" eingestellt sein.

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.

● Im Register "OPC-Eigenschaften" muss unter DP Master Klasse 2


– "Datensatzfunktionen aktivieren" und
– "im PROFIdrive Modus betreiben"
aktiv geschaltet werden.
● Abschließend muss das Projekt übersetzt und die Projektierung ins Zielsystem (PC)
geladen 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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


74 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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>

[Link] Projektierter Gerätename


Die Board-Nummer spezifiziert den Steckplatz des Board im Komponenten Konfigurator der
PC-Station (virtueller Steckplatz). Die Board-Nummer wird mit SIMATIC NCM projektiert.

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 75
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

[Link] Syntax der Prozessvariablen für PROFIdrive-Slaves

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


76 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 77
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


78 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 79
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


80 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.4 PROFIBUS-DP

<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.

[Link] Syntax der systemspezifischen Informationsvariablen

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 81
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

Eigenschaften der S7-Kommunikation mit OPC


Der OPC-Server von SIMATIC NET hat folgende Eigenschaften:
● Variablendienste
Zugriff und Beobachtung von S7-Variablen.
● Blockorientierte Dienste
Programmgesteuerte Übertragung größerer Datenblöcke.
● Serverfunktionalität
Der PC kann als Server für Datenblöcke und -bausteine eingesetzt werden.
● Bausteindienste
Übertragung eines ladbaren Datenbereichs von und zu S7.
● S7-Passwortfunktionen
Setzen eines Passworts zum Zugriff auf geschützte Bausteine.
● Ereignisse
Verarbeitung von S7-Meldungen (S7-Alarms) als OPC Alarms & Events.

2.5.1 Performanter SIMATIC NET OPC-Server für das S7-Protokoll

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


82 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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

"Symbolik" darf zusätzlich ausgewählt werden.

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".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 83
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

Welche Zeichen sind für S7-Verbindungsnamen erlaubt?


Für den <Verbindungsname> sind Ziffern "0-9", alphabetische Zeichen in Groß- und
Kleinschreibung "A-z" und Sonderzeichen "_-+()" erlaubt. Der Verbindungsname darf 32
Zeichen lang sein. Groß- und Kleinschreibung wird nicht unterschieden.
Weitere sichtbare Zeichen (größer als Zeichentabellen-Nummer 32) werden nicht abgelehnt
sind aber nicht erlaubt.
Die Verbindungsnamen "SYSTEM" bzw. der Verbindungsname "@LOCALSERVER" sind
reserviert und dürfen nicht verwendet werden.

Beispiele für Verbindungsnamen


Typische Beispiele sind:
● S7-Verbindung_1
● S7-OPC-Verbindung
● @LOCALSERVER

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


84 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

[Link] Syntax der Prozessvariablen für S7-Variablendienste

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>}

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 85
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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

Zeitraster und Wertebereich von S7-Timer-Variablen (Typ T):


Der Wertebereich von OPC-Prozessvariablen für S7 vom Typ Timer (T) ist dezimal in ms
kodiert. Aus dem Wertebereich ergibt sich (für das Schreiben) das Zeitraster entsprechend
der folgenden Tabelle:

Wertebereich Zeitraster Kommentar


1.000.000 ms bis 9.990.000 ms 10 s Die Werte müssen Vielfache von 10.000 ms betragen.
100.000 ms bis 999.000 ms 1s Die Werte müssen Vielfache von 1.000 ms betragen.
10.000 ms bis 99.900 ms 100 ms Die Werte müssen Vielfache von 100 ms betragen.
10 ms bis 9.990 ms 10 ms Die Werte müssen Vielfache von 10 ms betragen.
Ein feineres Raster ist nicht möglich.
0 ms sind erlaubt, aber ohne Funktion.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


86 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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).

Zeitraster und Wertebereich von S7-Timer-Variablen (Typ TDA):


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.
<Objekt>: TDA
Datentyp: Feld von zwei Worten {Zeitraster in ms VT_UI2 | Zeitwert VT_UI2}.
Wertebereich:

Zeitraster in ms: 10, 100, 1000, 10000.


Zeitwert: 0...999; 0 ist erlaubt, aber ohne Funktion.
Zeitbereiche: 10 ms: 0...9990ms; 100 ms: 0...99900ms; 1000 ms: 0...999000ms;
10.000 ms: 0...9990000ms

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 87
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

S7-Datentyp Beschreibung OLE-Datentyp Visual Basic-Typ


X Bit (bool). VT_BOOL Boolean
Sie müssen die Bit-Nummer (0...7) angeben.
B Byte (unsigned) VT_UI1 Byte
W Wort (unsigned) VT_UI2 Long
D Doppelwort (unsigned) VT_UI4 Double
CHAR Byte (signed) VT_I1 Integer
INT Wort (signed) VT_I2 Integer
DINT Doppelwort (signed) VT_I4 Long
REAL Fließkomma VT_R4 Single
STRING Zeichenfolge. VT_BSTR String
Sie müssen die String-Länge angeben. Der
String muss auf der S7 mit gültigen Werten
initialisiert sein.
DT Datum und Uhrzeit, 8 Byte BCD-Format VT_DATE Date
(S7-CPU DATE-AND-TIME)
DATE Datum und Uhrzeit, 8 Byte VT_DATE Date
Die Uhrzeit ist immer [Link], Wertebereich
ab 01.01.1990.
Abbildung des CPU Datentyps DATE
(unsigned, 16 Bit).
TIME Zeitwert (signed), IEC-Format, in ms VT_I4 Long
TOD Tageszeit (unsigned), VT_UI4 Double
0...86399999 ms
S5TIMEBCD Abbildung des CPU Datentyps S5TIME VT_UI2 Long
(unsigned, 16 Bit) mit eingeschränktem
Wertebereich, 0...9990000 ms

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


88 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Zeitraster und Wertebereich für den S7-Datentyp S5TIMEBCD:


Der Wertebereich der Zeit-Variable vom Datentyp S5TIMEBCD 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 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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 89
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Beispiele:
S7:[S7-OPC-1]DB1,X10.0,64, Zugriffsrechte RW
S7:[S7-OPC-1]DB1,X10.3,17, Zugriffsrechte R

[Link] Beispiele für Prozessvariablen für S7-Variablendienste


Hier finden Sie Beispiele, die die Syntax von Variablennamen für Variablendienste
verdeutlichen.

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.

[Link] Beispiele optimal strukturierter Items


Für die Variablendienste S7 bietet der OPC-Server einen Optimierungsalgorithmus:
● OPC-Items, die gleichzeitig gelesen oder beobachtet werden, sollten im Namensraum
des Partnergeräts aufeinanderfolgend angeordnet sein. Kleinere Lücken zwischen den
relevanten Teilen werden zwar verarbeitet, verschlechtern jedoch den Datendurchsatz.
● OPC-Items, die gleichzeitig geschrieben werden, müssen im Namensraum
aufeinanderfolgend angeordnet sein. Wenn der Schreibzugriff optimal erfolgen soll,
dürfen keine Lücken vorhanden sein.
Wenn Ihr OPC-Client nicht auf Verwendung einzelner OPC-Items für die Prozessvariablen
angewiesen ist, können Sie alternativ direkt Felder zum Zugriff auf die relevanten Daten
verwenden und die Elemente der gelesenen Felder einzelnen Prozessvariablen zuweisen.

Organisation eines Datenbausteins bei Lesezugriff


DB10,W10
DB10,B12

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


90 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

Organisation eines Datenbausteins bei Schreibzugriff


DB10,W10
DB10,B12
DB10,B13
DB10,DW14
DB10,W20
Wird über das Kommunikationssystem als zwei schreibende Zugriffe auf das Feld
DB10,B10,8 und die einzelne Variable DB10,W20 ausgeführt.

2.5.5 Blockorientierte Dienste


Blockorientierte Dienste ermöglichen eine programmgesteuerte Übertragung größerer
Datenblöcke. Die Übertragung wird durch Variablen realisiert:
● Variablen, die Datenblöcke empfangen
● Variablen, die Datenblöcke senden
Die Datenmenge beträgt bei dem Datentransfer bis zu 65534 Byte, unabhängig von der
Größe der PDU. Die Segmentierung der Daten wird von den Funktionen selbst
übernommen.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 91
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Beispiel für die Verwendung von Blockdiensten


Die folgende Abbildung zeigt, wie ein S7-400 Gerät ein Datenpaket an eine PC-Station mit
S7-OPC-Server sendet.

$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.

[Link] Syntax der Prozessvariablen für Blockorientierte Dienste

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


92 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY | VT_UI1 Byte()

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY | VT_UI1 Byte()

<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.

Format- Beschreibung OLE-Datentyp Visual Basic-Typ


bezeichner
X Bit (bool). VT_BOOL Boolean
Sie müssen die Bit-
Nummer angeben.
BYTE oder B Byte (unsigned) VT_UI1 Byte

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 93
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Format- Beschreibung OLE-Datentyp Visual Basic-Typ


bezeichner
WORD oder W Wort (unsigned) VT_UI2 Long
DWORD oder D Doppelwort (unsigned) VT_UI4 Double
CHAR Byte (signed) VT_I1 Integer
INT Wort (signed) VT_I2 Integer
DINT Doppelwort (signed) VT_I4 Long
REAL Fließkomma VT_R4 Single
STRING Zeichenfolge. VT_BSTR String
Sie müssen die
Stringlänge angeben
DT Datum und Uhrzeit, VT_DATE Date
8 Byte BCD-Format
TIME Zeitwert (signed), VT_I4 Long
IEC-Format, in ms
TOD Tageszeit (unsigned), VT_UI4 Double
0...86399999 ms

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


94 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

[Link] Beispiele für Prozessvariablen für Blockorientierte Dienste


Hier finden Sie Beispiele, die die Syntax von Variablennamen für blockorientierte Dienste
verdeutlichen.

Datenblock empfangen im gesamten Puffer


S7:[S7-OPC-1]BRCV,1
BRCV,1
Ein Datenblock wird im Empfangspuffer mit der RID 1 empfangen. Der vollständige Puffer
wird auf ein Feld von Bytes abgebildet.

Teilzugriff auf empfangenen Datenblock


S7:[S7-OPC-1]BRCV,1,W2,4
BRCV,1,W2,4
Aus dem empfangenen Datenblock wird der Inhalt ab Offset 2 auf ein Feld aus 4 Wörtern
abgebildet. Insgesamt werden also 8 Bytes aus dem Datenblock betrachtet.

Doppelwort übertragen
S7:[S7-OPC-1]BSEND16,1,D2

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 95
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

2.5.6 S7-spezifische Informationsvariablen


Es gibt S7-spezifische Variablen, mit denen Sie Informationen über die S7-Kommunikation
und die aufgebauten Verbindungen abfragen können.
Folgende Informationen können ermittelt werden:
● Attribut eines virtuellen Geräts (VFD)
● Status einer S7-Verbindung
● Status eines virtuellen Geräts
● Konfigurierte Parameter und Laufzeitparameter der S7-Verbindung zur Diagnose

[Link] Syntax der S7-spezifischen Informationsvariablen

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


96 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Rückgabewerte (als Elemente eines String-Feldes):


● Hersteller
● Modell
● Revision

OLE-Datentyp Visual Basic Typ


VT_ARRAY of VT_BSTR String()

&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

OLE-Datentyp Visual Basic Typ


VT_BSTR String

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

OLE-Datentyp Visual Basic Typ


VT_BSTR String

Detailinformationen über den lokalen VFD-Status.


Der Status wird als Octett-String zurückgegeben. Weitere Informationen zur Bedeutung des
Rückgabewertes müssen der Dokumentation des Partnergerätes entnommen werden.

OLE-Datentyp Visual Basic Typ


VT_ARRAY of VT_BSTR String()

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 97
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

&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)

OLE-Datentyp Visual Basic Typ


VT_BSTR String

&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)

OLE-Datentyp Visual Basic Typ


VT_UI1 Byte

Beispiele für S7-spezifische Informationsvariablen und Rückgabewerte


Hier finden Sie Beispiele, die die Syntax von S7-spezifischen Informationsvariablennamen
verdeutlichen.

Informationen über die Herstellerattribute eines virtuellen Geräts


S7:[S7-OPC-1]&identify()

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


98 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

&identify()
kann beispielsweise folgende Werte zurückgeben:
● Hersteller: SIEMENS AG
● Modell des virtuellen Geräts: 6ES7413-1AE0-0AB0
● Revision: V1.0

Zustand eines Geräts


S7:[S7-OPC-1]&vfdstate()
&vfdstate()
kann beispielsweise folgende Werte zurückgeben:
● Logischer Status: S7_STATE_CHANGES_ALLOWED
● Alle Dienste sind zulässig.
● Physikalischer Status: S7_OPERATIONAL
● Das reale Gerät ist einsatzbereit.
● Detailinformationen: 02.00.00
● Detailinformationen zum lokalen VFD-Status.

Zustand einer Kommunikationsverbindung als String


S7:[S7-OPC-1]&statepath()
&statepath()
kann beispielsweise folgenden Wert zurückgeben:
● Verbindungsstatus: RECOVERY
● Die Verbindung wird momentan aufgebaut.

Zustand einer Kommunikationsverbindung als Zahl


S7:[S7-OPC-1]&statepathval()
&statepathval()
kann beispielsweise folgenden Wert zurückgeben:
● Verbindungsstatus: 2
● Die Verbindung ist aufgebaut.

[Link] S7-spezifische Diagnosevariablen


Zur Überprüfung der Projektierungsparameter und aktueller Laufzeitparameter zu einer
S7-Verbindung werden folgende Diagnosevariablen zur Verfügung gestellt. Im
OPC Scout V10 gibt es hierfür eine separate Diagnoseansicht, zusätzlich werden die
Variablen im Namensraum im Ordner "Configuration" unter der jeweiligen S7-Verbindung
angezeigt.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 99
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


100 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 101
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


102 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 103
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

[Link] Syntax der systemspezifischen Informationsvariablen


S7:[SYSTEM]&version()

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)

Aufgaben mit Bausteinen


Sie können folgende Aufgaben über den SIMATIC NET OPC-Server ausführen:
● Bausteine zwischen PC und Automatisierungsgerät übertragen
● Bausteine löschen

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


104 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

● 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.

[Link] Syntax der Steuervariablen für Bausteindienste

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.

OLE-Datentyp Visual Basic Typ


VT-BSTR String

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 105
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Block
Bausteintyp und Nummer

OB Organisationsbaustein
FB Funktionsbaustein
FC Funktion
DB Datenbaustein

OLE-Datentyp Visual Basic Typ


VT-BSTR String

Datei
Vollständiger Pfad der Datei, in der der Baustein abgelegt werden soll

OLE-Datentyp Visual Basic Typ


VT-BSTR String

&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:

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.

OLE-Datentyp Visual Basic Typ


VT-BSTR String

Datei
Vollständiger Pfad der Datei, in der der Baustein abgelegt ist

OLE-Datentyp Visual Basic Typ


VT-BSTR String

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


106 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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

OLE-Datentyp Visual Basic Typ


VT-BSTR String

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:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 107
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

0x0001 Ein nicht eingeketteter Block wird gelöscht


0x0040 Ein eingeketteter Block wird gelöscht
0x0041 Der eingekettete und der nicht eingekettete Block werden gelöscht

OLE-Datentyp Visual Basic Typ


VT-BSTR String

Block
Bausteintyp und Nummer.
Folgende Typen sind möglich:

OB Organisationsbaustein
FB Funktionsbaustein
FC Funktion
DB Datenbaustein

OLE-Datentyp Visual Basic Typ


VT-BSTR String

&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.

[Link] Beispiele für die Verwendung der Bausteindienste


Hier finden Sie einige Beispiele, die die Syntax von Variablennamen für Bausteindienste
verdeutlichen.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


108 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Lesen eines Bausteins


S7:[S7-OPC-1]&blockread()
&blockread()
Um beispielsweise den Baustein OB1 in eine Datei "c:\temp\[Link]" zu lesen, muss das
Item mit folgendem Wert beschrieben werden:
{0x0040|OB1|c:\temp\[Link]}

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.

Schreiben eines Bausteins


S7:[S7-OPC-1]&blockwrite()
&blockwrite()
Um beispielsweise den Baustein in der Datei "c:\temp\[Link]" zum Automatisierungssystem
zu schicken, muss das Item mit folgendem Wert beschrieben werden:
{0x1000|c:\temp\[Link]}

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.

Beispiel für das Einketten eines Bausteins


S7:[S7-OPC-1]&blocklinkin()
&blocklinkin()
Um beispielsweise den Baustein DB1 in den Programmablauf des Automatisierungsgeräts
einzuketten, muss das Item mit folgendem Wert beschrieben werden:
DB1

Beispiel für das Löschen eines Bausteins


S7:[S7-OPC-1]&blockdelete()
&blockdelete()
Für das Löschen eines eingeketten Bausteins DB1 muss das Item mit folgendem Wert
beschrieben werden:
{0x0040|DB1}

Beispiel für Speicherkomprimierung des Automatisierungsgeräts


S7:[S7-OPC-1]&blockcompress()

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 109
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

&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.

Einseitig projektierte Resultierende aktive Schutzstufe


Verbindungen
Projektierte Schutzstufe Passwort wurde nicht Richtiges Passwort wurde
übertragen übertragen
Schlüsselschalterstellung Schlüsselschalterstellung
RUN RUN-P, RUN RUN-P,
STOP STOP
Schlüsselschalter RUN - durch Lesen Alles Alles Alles
Passwort aufhebbar
Schlüsselschalter RUN - durch Lesen Alles Lesen Alles
Passwort nicht aufhebbar
Schreibschutz mit Passwort Lesen Lesen Alles Alles
Schreib- / Leseschutz Keine Keine Alles Alles

Legende:
Alles = alle Dienste ausführbar
Lesen = nur Baustein lesen
Keine = keine Bausteindienste erlaubt

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


110 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

[Link] Syntax der Steuervariablen für Passwörter

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)

Das Schreiben des Passworts liefert folgende Rückgabewerte:


● OPC_E_BADRIGHTS
Das Passwort ist ungültig
● S_OK
Das Passwort ist gültig

OLE-Datentyp Visual Basic Typ


String String

[Link] Beispiel für die Verwendung der Passwörter


Hier finden Sie ein Beispiel, um die Übermittlung von Passwörtern zu verdeutlichen.

Beispiel für die Passwortübergabe


S7:[S7-OPC-1]&password()
&password()
Um das Passwort SetMeFre an das Automatisierungsgerät zu übergeben, muss die Variable
mit folgendem Wert beschrieben werden:
&SetMeFre

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 111
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

[Link] Beispiel für die Verwendung von Server-Diensten


Ein S7-Client könnte z. B. eine S7 300-Station sein, welche Statusdaten an die PC-Station
melden möchte, ohne dass diese die Statusdaten ständig abpollt, siehe nachfolgende
Abbildung. Er schreibt dann (selten) Statuswerte in den Datenbaustein.
Ein lokaler Client auf der PC-Station kann über Datenänderungen der Statuswerte informiert
werden, siehe Abbildung "Beobachten durch häufiges zyklisches Lesen eines Werts...". Ein
ständiges Pollen der Statuswerte auf der S7-Station wird dadurch vermieden.
Die folgende Abbildung zeigt, wie ein S7-Gerät Daten in einer PC Station mit S7-OPC-
Server beschreibt.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


112 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 113
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


114 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

⇒ 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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 115
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

[Link] Template-Datenvariablen im Namensraum


Die Template-Datenvariablen befinden sich in eigenen Ordnern im Namensraum.

Bild 2-8 Hierarchie der Template-Datenvariablen

Der Blattname im Namensraum ist dabei eine weitreichende Hilfestellung ("Template M


Byte").

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


116 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

[Link] Syntax der Template-Datenvariablen


Es gibt folgende Templates:

Für Merker, Ein- und Ausgänge


S7:[<Verbindungsname>]<Object><Typ><o>,<c>

<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>

<db> // Template für die Nummer des Datenbausteins

Blockdienste
S7:[<Verbindungsname>]bsend<len>,<rid>,<Typ><o>,<c>

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 117
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

2.5.11 Unprojektierte S7-Verbindung

Zugriff auf ein Partnergerät ohne Projektierung


Üblicherweise werden Verbindungen zu Partnergeräten in einer Projektierung definiert.
Dafür stehen die Programme STEP 7 bzw. NCM PC zur Verfügung.
Allerdings gibt es Anwendungsfälle, bei denen z. B. Daten ohne Verbindungsprojektierung
von einem Partnergerät gelesen bzw. Variablen geschrieben oder beobachtet werden sollen.
Es besteht die Möglichkeit, diese Aufgaben auch ohne Projektierung durchzuführen.

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.

Dienstzugangspunkt (SAP Service Access Point)


Der Dienstzugangspunkt ist jeweils der Punkt, an dem eine Schicht des ISO/OSI-
Referenzmodells der direkt übergeordneten Schicht ihre Dienste zur Verfügung stellt.
Der gesamte Informationsaustausch zwischen zwei benachbarten Schichten erfolgt über die
Dienstzugangspunkte. Er ist die Schnittstelle zwischen der untergeordneten und der
übergeordneten Schicht. Im Falle des Übergangs zwischen Schicht 3 (Network Layer) und
Schicht 4 (Transport Layer) heißt der Dienstzugangspunkt NSAP, Network Service Access
Point, im Falle des Übergangs von Schicht 4 auf Schicht 5 (Session Layer) heißt er TSAP,
Transport Service Access Point.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


118 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Einem Dienstzugangspunkt sind üblicherweise bestimmte Ressourcen und


Kommunikationspartner zugeordnet. Deshalb werden die innerhalb einer Kommunikation
benötigten SAPs mit eindeutigen Namen oder Nummern gekennzeichnet.

Parameter für eine unprojektierte Verbindung


Eine unprojektierte Verbindung hat folgende Syntax:
S7:[<Verbindungsname>|<VFD>|<Zugangspunkt>|<Adress-Spezifikation>]<Datenelement>
Dabei haben die einzelnen Bestandteile folgende Bedeutung:
<Verbindungsname>
Der Verbindungsname darf noch nicht vorhanden sein. Falls der gewählte Verbindungsname
bereits projektiert wurde oder für eine andere frei spezifizierte S7-Verbindung verwendet
wurde, werden die Zusatzinformationen für frei spezifizierte Verbindungen ignoriert und das
Item wird der bereits vorhandenen Verbindung zugeordnet.
<VFD>
Ein VFD-Name entspricht dem Applikationsnamen in der PC-Station-Projektierung von
NetPro.
Ein beliebiger VFD-Name. Alle Verbindungen können auf demselben VFD angelegt werden.
Der VFD-Name darf maximal 32 Zeichen lang sein. Der gewählte Name darf noch nicht
vorhanden sein.
<Zugangspunkt>
Der Zugangspunkt der Kommunikationsbaugruppe muss mit dem Programm "PC-Station
einstellen" vorab konfiguriert werden.
<Adress-Spezifikation> = <Local TSAP>,<Stationsadresse>,<Remote TSAP>,<Mode>
Die Adress-Spezifikation enthält folgende Informationen, wobei die einzelnen Werte durch
Kommas getrennt werden:
● Local TSAP (Local Transport Service Access Point, lokaler Dienstzugangspunkt)
Beim S7-Protokoll besteht der Local TSAP aus genau zwei durch Leerzeichen oder
Punkt getrennten Zahlen, die folgende Bedeutung haben:
– Das erste Byte kann eine Gerätekennung enthalten, erlaubte Werte sind 02 oder 03:
02 OS (Operating Station Bedienen und Beobachten)
03 Sonstiges
– Das zweite Byte ist immer 0.
Empfohlene Einstellung: 02.00
● Stationsadresse
Für die Stationsadresse gibt es drei Darstellungsvarianten:

Übertragungsverfahren Darstellung der Stationsadresse Beispiel


PROFIBUS PROFIBUS-Adresse, dezimale Darstellung 65
TCP/IP TCP/IP-Adresse [Link]
ISO MAC-Adresse 08-06-05-e4-3a-00

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 119
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Remote TSAP (Remote Transport Service Access Point, entfernter Dienstzugangspunkt)


Die Darstellung ist die gleiche wie beim Local TSAP, allerdings hat das zweite Bytes eine
andere Bedeutung:
● erstes Byte: enthält eine Gerätekennung, erlaubte Werte sind 02 oder 03:
02 OS (Operating Station Bedienen und Beobachten)
03 Sonstiges
Empfohlene Einstellung: 02
● zweites Byte: enthält die Adressierung der SIMATIC S7-CPU,
unterteilt in:
Bit 7 ... 5 Rack (Subsystem) der S7-CPU
Bit 4 ... 0 Steckplatz der S7-CPU

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


120 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

Zugangspunkt definieren
Rufen Sie das Programm "PC-Station einstellen" auf, um einen Zugangspunkt zu definieren
und einer Schnittstellenparametrierung zuzuordnen:

Bild 2-9 Aufrufen des Programms "PC-Station einstellen"

Nach Doppelklick auf "S7Online" öffnet sich der Dialog "Eigenschaften von S7Online".

Bild 2-10 Der Dialog "Eigenschaften von S7Online"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 121
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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".

Bild 2-12 Dialog "Ein Item hinzufügen"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


122 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.5 S7-Kommunikation

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.

2.5.12 COML S7-Verbindung

Zugriff auf Partnergeräte mit lokalen COML S7-Verbindungen

Bild 2-13 COML S7 - Configuration Management lokal - Projektiersoftware für S7-Verbindungen

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 123
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Voraussetzungen zur Nutzung der COML S7-Verbindungen


Für einen Gerätezugriff mit COML-S7-Projektierung müssen alle kommunikationsrelevanten
Daten des Partnergeräts bekannt sein. Dazu gehören unter anderem der Partner TSAP und
die Partner-Adresse. Weitere Informationen über die Parameter finden Sie in der
Online-Hilfe beim Anlegen der COML S7-Verbindungen.

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.

2.6 S7-Kommunikation mit OPC UA

2.6.1 Eigenschaften der S7-Kommunikation mit OPC UA


Der SIMATIC NET OPC-Server ermöglicht die Nutzung der S7-Kommunikation über OPC
UA.

Der S7-OPC-UA-Server von SIMATIC NET hat folgende Eigenschaften:


● Variablendienste
Zugriff und Beobachtung von S7-Variablen
● Blockorientierte Dienste
Programmgesteuerte Übertragung größerer Datenblöcke
● Server-Funktionalität
Der PC kann als Server für Datenblöcke und Datenbausteine eingesetzt werden.
● Bausteindienste
Übertragung eines ladbaren Datenbereichs von und zu S7

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


124 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

● S7-Passwortfunktionen
Setzen eines Passworts zum Zugriff auf geschützte Bausteine
● Events, Conditions und Alarme
Verarbeitung von S7-Meldungen und S7-Diagnoseereignissen

2.6.2 SIMATIC NET OPC-UA-Server für das S7-Protokoll

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

Zusätzlich dürfen Sie "Symbolik" vom Typ "ATI" auswählen.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 125
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


126 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

2.6.3 Wie wird der S7-OPC-UA-Server adressiert?

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]

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 127
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Endpunkte und Sicherheitsmodi


Der SIMATIC NET S7-OPC-UA-Server unterstützt Endpunkte mit dem nativen binären TCP-
Protokoll und erfordert Authentisierung über Zertifikate und eine verschlüsselte Übertragung.
Der Discovery-Dienst auf dem angesprochenen Host meldet die Endpunkte der Server, d.h.
deren Sicherheitsanforderungen und Protokollunterstützung.
Die Server-URL "[Link]://<hostname>:4845" des S7-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".

Die OPC-UA-Discovery des OPC Scout V10


Der OPC Scout V10 ermöglicht das Öffnen des OPC-UA-Discovery-Dialogs zur Übernahme
von UA-Endpunkten in den Navigationsbereich des OPC Scout V10.

Bild 2-15 Das Dialogfeld "Endpunkte der UA-Server suchen" des OPC Scout V10

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


128 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Der OPC-UA-S7-Server kann über den OPC-UA-Discovery-Dienst gefunden werden. Dieser


hat den reservierten Port 4840. Zur Eingabe siehe oben unter "Server-URL".
Der OPC Scout V10 beinhaltet eine Liste der OPC-UA-Endpunkte. 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.

2.6.4 Welche Namensräume bietet der S7-OPC-UA-Server an?

Der S7-OPC-UA-Server bietet folgende Namensräume an:

Tabelle 2- 1 Namensräume von OPC UA

Namensraum-Index "Bezeichner" (Namensraum-URI) / Kommentar


0 "[Link]
von der OPC Foundation spezifiziert
1 "urn:{Rechnername}:[Link].S7:{GUID}"
Eindeutiger Bezeichner des lokalen performanten S7-OPC-UA-Servers.
2 "S7TYPES:"
Definitionen für S7-spezifische Objekttypen.
3 "S7:"
Bezeichner des lokalen performanten S7-OPC-UA-Servers mit neuer
vereinfachter Syntax (durchsuchbar und verwendbar mit UA)
4 "S7COM:"
Bezeichner des Servers mit alter Syntax, S7-OPC-DA-kompatibel (mit UA
verwendbar aber nicht durchsuchbar)
5 "S7SOURCES:"
Bezeichner für Quellen von Alarmen und Anwenderdiagnoseereignissen.
6 "S7AREAS:"
Bezeichner für Bereiche einer Alarmhierarchie.
7 "SYM:"
Optionaler Server mit ATI-S7-Symbolik; abhängig von der Projektierung
und der Konfiguration der PC-Station (durchsuchbar und verwendbar mit
UA).
Alternativ kann hier ein Präfix stehen, der in der Symbolik-Parametrierung
("PC-Station einstellen") festgelegt wird.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 129
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

2.6.5 Die NodeID

Identifikation einer S7-Prozessvariable


Die NodeID identifziert mit Hilfe des folgenden Tupels eine S7-Prozessvariable eindeutig:
● Namensraum-Index
● Bezeichner (Zeichenfolge, numerischer Wert)

Bild 2-16 Namensräume von OPC UA

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


130 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Wie verhält sich der neue auf OPC UA angepasste Namensraum?


Die Welt der OPC-Data-Access-Items eines COM-Servers ist zum Lesen und Schreiben von
Prozessvariablen in sich abgeschlossen. Daneben existiert unabhängig davon die
Alarmwelt.
Dagegen ist die OPC-UA-Sicht auf Automatisierungsobjekte auch auf verschiedene
Eigenschaften der Objekte bezogen. OPC UA greift nicht mehr alleine auf Items zu, sondern
auf Objekte und deren Unterobjekte.
● Datenvariablen, Methoden und zum Teil Ereignisse sind beispielsweise Unterobjekte
eines S7-Verbindungsobjekts. Attribute und Properties definieren die Objekte näher.
● Ein OPC-Data-Access-Item für den Bausteinzugriff entspricht dabei am ehesten einer
OPC-UA-Datenvariablen.
● Ein OPC-Data-Access-Item für Domain-Dienste entspricht am ehesten einer
OPC-UA-Methode.
Den qualifizierten Bezeichnern der NodeIDs kommt unter OPC UA eine größere Bedeutung
als unter OPC Data Access zu. Jeder einzelne Zugriff auf ein Objekt, Unterobjekt, Property
und Attribut erfolgt über dessen NodeID.
Unter Anderem für die Unterstützung durch lokale Sprachen sieht OPC UA den
Anzeigenamen vor. So kann ein und dasselbe Objekt beispielsweise in unterschiedlichen
Sprachumgebungen, die der OPC-UA-Client vorgibt, unterschiedlich durchsucht werden,
wobei aber jedes Mal die selbe NodeID präsentiert wird. Der Anzeigename wird analog zur
jeweiligen NodeID gewählt. Die Texte des gesamten Namensraums sind in Englisch.

Syntax der S7-OPC-UA-Datenobjekte


Unter OPC UA wird eine optimierte Syntax eingeführt. Die NodeIDs aller OPC-UA-Objekte
haben folgenden Aufbau:
<verbindungsobjekt>"."<unterobjekt>"."<property>
Ein Unterobjekt kann weitere Unterobjekte beinhalten.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 131
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

2EMHFW +DV7\SH'HILQLWLRQ 2EMHFW7\SH

2I7\SH
$WWULEXWHV
+DV&RPSRQHQW 9DULDEOH

+DV3URSHUW\ 3URSHUW\

+DV&RPSRQHQW

2EMHFW
+DV3URSHUW\

+DV(YHQW6RXUFH
3URSHUW\

+DV&RPSRQHQW

(YHQW2EMHFW

0HWKRG

Bild 2-17 Symbole des OPC-UA-Adressraums

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


132 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Der Verbindungsname einer S7-Verbindung


Der Verbindungsname ist der in STEP 7 oder COML S7 projektierte Name zur Identifikation
der Verbindung. Dieser Name heißt bei STEP 7 "Lokale ID". Die Lokale ID ist innerhalb des
OPC-Servers eindeutig.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 133
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Verbindungstypen
Der OPC-Server unterstützt folgende Verbindungstypen:
● S7-Verbindung
● S7-Verbindung hochverfügbar

Welche Zeichen sind für S7-Verbindungsnamen erlaubt?


Für den <Verbindungsname> sind Ziffern "0-9", alphabetische Zeichen in Groß- und
Kleinschreibung "A-z" und Sonderzeichen "_-+()" erlaubt. Der Verbindungsname darf 32
Zeichen lang sein. Groß- und Kleinschreibung wird nicht unterschieden.
Weitere sichtbare Zeichen (größer Nummer 32) werden nicht abgelehnt sind aber nicht
erlaubt.
Die Verbindungsnamen "SYSTEM" bzw. der Verbindungsname "@LOCALSERVER" sind
reserviert und dürfen nicht verwendet werden.

Beispiele für Verbindungsnamen:


Typische Beispiele sind:
● S7-Verbindung_1
● S7-OPC-Verbindung

2.6.7 Aufbau und Funktionen des produktiven S7-Verbindungsobjekts

Was sind S7-Verbindungsobjekte?


Alle produktiven protokollspezifischen Objekte sind immer einer Verbindung zugeordnet. Bei
S7 sind dies die Verbindungen zu Kommunikationspartnern (S7-Verbindung). Ausnahmen
hiervon bilden die Systemverbindung und die Demoverbindung.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


134 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] Typ-Definition des S7-Verbindungsobjekts

Typ-Definition des S7-Verbindungsobjekts


Für die Objekte und Funktionalitäten, die über eine produktive S7-Verbindung verwendbar
sind, ist ein spezifischer OPC-UA-Objekttyp definiert:

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

Bild 2-18 Der Typ des S7-Verbindungsobjekts im Namensraum von OPC UA

Im OPC-UA-Namensraum für Objekte werden Instanzen dieses Typs angezeigt. Der Typ
selbst kann unter "Typen" strukturiert ausgelesen werden.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 135
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] S7-Verbindungs-Informationsobjekte

S7-spezifische Datenvariablen für Informationen


Es gibt S7-spezifische Datenvariablen, mit denen Sie Informationen über die S7-
Kommunikation und die aufgebauten Verbindungen abfragen können.
Folgende Informationen können ermittelt werden:
● Attribut eines virtuellen Geräts (VFD)
● Status einer S7-Verbindung
● Status eines virtuellen Geräts
● Status der Anmeldung für Meldungen
(siehe Parameter "events" in Kapitel "Diagnose- und Konfigurations-Informationen
(Seite 154)".)

Syntax der S7-spezifischen Informationsvariablen


NodeID:
Namensraum-Index: 3 // für [Link].S7
<Verbindungsobjekt>.<Informationsparameter>

Erklärungen
<Informationsparameter>:= "identify"|"vfdstate"|"statepath"

identify Herstellerattribute eines Kommunikationspartners.


Datentyp Array Of String (3 Arrayelemente), ReadOnly.
"identify" kann beispielsweise folgende Werte zurückgeben:
Hersteller Siemens AG
Modell 6ES7 416-3XR05-0AB0
Revision V5.0
vfdstate Zustand eines virtuellen Geräts
Datentyp Array Of String (3 Arrayelemente), ReadOnly.
Logischer Status S7_STATE_CHANGES_ALLOWED
Alle Dienste sind zulässig.
Physikalischer Status S7_OPERATIONAL
Das reale Gerät ist einsetzbar.
S7_NEEDS_COMMISSIONING
Das reale Gerät ist erst nach dem Abschluss
lokaler Eingriffe einsetzbar.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


136 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Detailinformationen VFD-Status, <bytestring(3)>


geräteabhängig (Feld von 3 Byte)
Der Status wird als Oktett-String
zurückgegeben. Weitere Informationen zur
Bedeutung des Rückgabewerte müssen der
Dokumentation des Partnergeräts entnommen
werden.
statepath Zustand einer Kommunikationsverbindung zum Partnergerät
Der Wert der Variable wird als Zahl ausgelesen und kann durch zusätzliches Auslesen des
zugehörigen Enumstring {UNKNOWN, DOWN, UP, RECOVERY, ESTABLISH} einem Text
zugeordnet werden.
Variable vom UA-Typ MultistateDiscreteType, ReadOnly
1 DOWN Verbindung ist nicht aufgebaut
2 UP Verbindung ist aufgebaut
3 RECOVERY Verbindung ist nicht aufgebaut. Es wird versucht, die
Verbindung aufzubauen.
4 ESTABLISH Für zukünftige Erweiterungen reserviert
0 UNKNOWN Für zukünftige Erweiterungen reserviert

[Link] Beispiele für S7-spezifische Informationsvariablen und Rückgabewerte


Hier finden Sie Beispiele, welche die Syntax der Namen von S7-spezifischen
Informationsvariablen verdeutlichen.

Informationen über die Herstellerattribute eines virtuellen Geräts


● NodeID:
– Namensraum-URI:
S7: (Namensraum-Index: 3) // für [Link].S7
– Bezeichner:
S7-Verbindung_1.identify
Mögliche Rückgabewerte:
● Hersteller: SIEMENS AG
● Modell des virtuellen Geräts: 6ES7413-1AE0-0AB0
● Revision: V1.0

Zustand eines Geräts


● NodeID:
– Namensraum-URI:
S7: (Namensraum-Index: 3) // für [Link].S7
– Bezeichner:
S7-Verbindung_1.vfdstate
Mögliche Rückgabewerte:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 137
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

● Logischer Status: S7_STATE_CHANGES_ALLOWED


Alle Dienste sind zulässig.
● Physikalischer Status: S7_OPERATIONAL
Das reale Gerät ist einsatzbereit.
● Detailinformationen: 02.00.00
Detailinformationen zum lokalen VFD-Status

Zustand einer Kommunikationsverbindung als String


● NodeID:
– Namensraum-URI:
S7: (Namensraum-Index: 3) // für [Link].S7
– Bezeichner:
S7-Verbindung_1.statepath
Mögliche Rückgabewerte vom Typ "MultistateDiscreteType":
● Verbindungsstatus: RECOVERY
Die Verbindung wird momentan aufgebaut.

[Link] Methoden für die S7- Bausteindienste

Was machen 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 (OB)
● Funktionsbausteine (FB)
● Funktionen (FC)
● Datenbausteine (DB / DI)

Aufgaben mit Bausteinen


Sie können folgende Aufgaben über den SIMATIC NET OPC-Server ausführen:
● Bausteine zwischen PC und Automatisierungsgerät übertragen
● Bausteine löschen

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


138 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

● 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.

OPC UA unterstützt produktspezifische Methoden. Die S7-Bausteindienste entsprechen dem


Ausführen von Methoden.

Syntax der Methoden für die S7- Bausteindienste


NodeID:
Namensraum-URI: S7: (Namensraum-Index: 2)
für [Link].S7
<Verbindungsname>.<DomainMethod>
<DomainMethod>:=
"password()"|"blockread()"|"blockwrite()"|"blocklinkin()"|"blockdelete()"|"blockcompress()"

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 139
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


140 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Ein eingeketteter Block wird gelöscht.


0x0041
Der eingekettete und der nicht eingekettete Block werden
gelöscht.
Bausteintyp und Nummer
Datentyp VT_BSTR
"OB"<unsigned16>|"FB"<unsigned16>|
"FC"<unsigned16>|"DB"<unsigned16>
blockcompress() Komprimierung des Speichers des Automatisierungsgeräts
"" (leere Zeichenfolge)

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)".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 141
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

2.6.8 Variablendienste

[Link] Variablendienste

Was machen Variablendienste?


Variablendienste ermöglichen den Zugriff und die Beobachtung von S7-Variablen im
Automatisierungsgerät. Die Adressierung der S7-Variablen erfolgt als Namenskürzel der
adressierten Objekte. Die Art des Zugriffs orientiert sich an der Notation der S7-Werkzeuge.
Objekte im Automatisierungsgerät der S7-OPC-UA-Server unterstützten 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.

[Link] Syntax der Variablendienste

Syntax der Prozessvariablen


Vereinfachte Syntax der Prozessvariablen der S7-OPC-UA-Node-ID:
Namensraum-URI: S7: (Namensraum-Index: 3) // für [Link].S7

Klassische Syntax
Es gibt drei Möglichkeiten:
● <Verbindungsname>.<S7Objekt>.<Adresse>{,{<S7Typ>}{,<Anzahl>}}

● <Verbindungsname>.<S7TimerObjekt>.<Adresse>
{,{<S7TimerTyp>}{,<Anzahl>}}

● <Verbindungsname>.<S7CounterObjekt>.<Adresse>,
{,{<S7CounterTyp>}{,<Anzahl>}}

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


142 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Das folgende Trennzeichen ist der Punkt (".").

<S7TimerObjekt>

Parameter Bedeutung
t Timer. Wort (unsigned).
Die folgende Adressangabe ist eine Timernummer.

<S7CounterObjekt>

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 143
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

S7-Datentyp OPC-UA-Datentyp Beschreibung


<S7Typ>
b Byte Byte (unsigned)
Wird als Defaultwert verwendet, falls kein <S7Typ>
angegeben ist.
w UInt16 Wort (unsigned)
c SByte Byte (signed)
i Int16 Wort (signed)
di Int32 Doppelwort (signed)
dw UInt32 Doppelwort (unsigned)
r Float Fließkomma (4 Byte)
dt DateTime Datum und Uhrzeit, Wertebereich ab 01.01.1990, (auf
CPU DATE_AND_TIME)
date DateTime Datum und Uhrzeit (8 Byte), wobei die Uhrzeit immer
[Link] ist, Wertebereich ab 01.01.1990.
Abbildung des CPU Datentyps DATE (unsigned,
16 Bit).
t Int32 Vorzeichenbehafteter Zeitwert in Millisekunden
tod Int32 Tageszeit, 0...86399999 ms ab Mitternacht
s5tbcd UInt16 Abbildung des CPU Datentyps S5TIME auf UInt 16
(unsigned, 16 Bit) mit eingeschränktem Wertebereich,
0...9990000 ms.*)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


144 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

S7-Datentyp OPC-UA-Datentyp Beschreibung


<S7Typ>
x<Bitadresse> Boolean Bit (bool)
Zusätzlich zum Byte-Offset im Bereich ist noch die
<Bitadresse> im jeweiligen Byte anzugeben.
Wertebereich 0...7
s<Stringlänge> String Es ist noch die für den String reservierte
<Stringlänge> anzugeben.
Wertebereich 1...254
Beim Schreiben können auch kürzere Strings
geschrieben werden, wobei die übertragene
Datenlänge immer die reservierte Stringlänge in Byte
zuzüglich 2 Byte ist. Die nicht benötigten Bytes
werden mit dem Wert 0 gefüllt.
Das Lesen und Schreiben von Strings und String-
Arrays wird intern auf das Lesen und Schreiben von
Byte-Arrays abgebildet.
Der String muss auf der S7 mit gültigen Werten
initialisiert sein.

*) 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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 145
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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>

S7-Datentyp OPC-UA-Datentyp Beschreibung


<S7Typ>
tbcd UInt16 Timer, BCD-codiert
Wird als Defaultwert verwendet, falls kein
<S7TimerTyp> angegeben ist.
tda UInt16[2] Timer, Dezimale Zeitbasis und Zeitwert

Zeitraster und Wertebereich von S7-Timer-Variablen "t","tbcd" (<S7TimerObjekt> = t,


<S7TimerTyp> = tbcd).
Der Wertebereich von OPC-Prozessvariablen für S7 vom Typ Timer (t) 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

Zeitraster und Wertebereich von S7-Timer-Variablen "t", "tda" (<S7TimerObjekt > = t,


<S7TimeTyp> = tda):

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


146 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Zeitraster [ms] 10, 100, 1 000, 10 000


Zeitwert 0...999
0 ist erlaubt aber ohne Funktion.
Zeitbereiche [ms] 10 ms: 0...9 990
100 ms: 0...99 900 ms
1 000 ms: 0...99 9000
10.000 ms: 0...9 990 000

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 147
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] Beispiele für Prozessvariablen für S7-OPC-UA-Variablendienste


Hier finden Sie Beispiele, die die Syntax von Variablennamen für Variablendienste
verdeutlichen.

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.

Datenbaustein DB, Feld von Wörtern


Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.db5.10,w,9
bezeichnet 9 Datenwörter ab Byteadresse 10 im Datenbaustein 5 über S7-Verbindung-1.

Datenbaustein DB, Feld von Strings


Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.db100.50,s32,3
bezeichnet 3 Strings der Länge 32 ab Byteadresse 50 im Instanzdatenbaustein 100 ü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.

Feld von lesbaren Merkerbits


Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.m.3,x4,12 Zugriffsrechte R
bezeichnet 12 Bits ab Merkeradresse 3 und dort ab Bitadresse 4 über S7-Verbindung-1. Nur
lesbar.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


148 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Timer 22 BCD-kodiert
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung-1.t.22
bezeichnet Timer 22, TBCD-Default über S7-Verbindung-1.

2.6.9 Blockorientierte Dienste

Was machen blockorientierte Dienste?


Blockorientierte Dienste ermöglichen eine programmgesteuerte Übertragung größerer
Datenblöcke. Die Übertragung wird durch Variablen realisiert:
● Variablen, die Datenblöcke empfangen
● Variablen, die Datenblöcke senden
Die Datenmenge beim Datentransfer beträgt bis zu 65 534 Byte, unabhängig von der Größe
der PDU. Die Segmentierung der Daten wird von den Funktionen selbst übernommen.

ACHTUNG

Blockorientierte Dienste können nur bei zweiseitigen Verbindungen verwendet werden. Die
erstellte Verbindungsprojektierung muss in das S7-Automatisierungsgerät geladen werden.

[Link] Syntax der blockorientierten Dienste

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>}}

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 149
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Erklärungen

Parameter der Bedeutung


Namensvariablen
Verbindungsname Protokollspezifischer Verbindungsname. Der Verbindungsname wird
bei der Projektierung festgelegt.
brcv Datentyp: Array of Byte
brcv enthält den zuletzt vom Partner empfangenen Datenblock.
Inhalt und Länge der Empfangsdaten werden durch den sendenden
Partner vorgegeben.
Die Variable ist nur lesbar. Setzen Sie diese Variable zur
Beobachtung ein. Damit wird der Empfang eines Datenblocks durch
den OPC-Server an eine OPC-Client-Anwendung gemeldet.
bsend Datentyp: Array of Byte
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.
<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.
<Pufferlänge> Länge (in Byte) des Datenblocks, der gesendet werden soll. Es kann
eine beliebige Anzahl Schreibpuffer unterschiedlicher Länge
definiert werden. Damit ist es möglich, Teilbereiche
unterschiedlicher Länge an den Partner zu schicken.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


150 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Parameter der Bedeutung


Namensvariablen
<Adresse>,<S7Typ> Die Datenpuffer können strukturiert werden. Sie können daraus
einen oder mehrere Teilbereiche selektieren. Geben Sie hierzu den
Datentyp <S7Typ> und die <Adresse> an, die beide auch für die S7-
Datenbaustein-Variable gültig sind. Sie sind beide oben im Kapitel
"Variablendienste (Seite 85)" beschrieben.
Lesen:
Da Struktur und Länge des vom Partner empfangenen Datenblocks
nicht fest sein müssen, ist es nicht verboten, Variablen außerhalb
des Bereichs zu definieren und anzufordern. Wenn der
entsprechende Bereich bei einem Empfang von Daten nicht mehr
ausgefüllt werden kann, dann wechselt die Quality der Variablen
entsprechend.
Schreiben:
Beim Schreibzugriff auf einen Teilbereich eines an den Partner zu
sendenden Datenblocks wird immer der ganze Datenpuffer
abgeschickt, dessen Länge über <Pufferlänge> spezifiziert wird.
Wenn innerhalb eines OPC-UA-Mengenaufrufs mehrere
Teilbereiche des Datenpuffers geschrieben werden, dann wird der
Datenpuffer erst abgeschickt, nachdem alle seine Teilbereiche
aktualisiert wurden. Nicht spezifizierte Teilbereiche werden aus dem
Cache gefüllt.
Hinweis
Im Datenpuffer werden die Datentypen im Motorola-Format
interpretiert und zum Schreiben in das Intel-Format konvertiert.
Anzahl Anzahl der Feldelemente
Wertebereich: 1...65 534

Hinweise zum Lesen und Schreiben


● Das Lesen (brcv) und Schreiben (bsend) einzelner Bits (Format x) ist möglich.
● Das Lesen und Schreiben von Feldern einzelner Bits ist ohne Einschränkung der
Anfangs-Bitadressen und mit beliebiger Feldlänge innerhalb des Datenblocks möglich.
Beispiel: [Link].1.10.x4,78
● Variablen für Sendedaten oder Empfangsdaten mit unterschiedlicher Länge,
unterschiedlicher Adressierungsparameter-ID (RID) oder unterschiedlichem
Verbindungsnamen verfügen über unabhängige Speicherbereiche.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 151
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

● 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.

[Link] Beispiele für Prozessvariablen für blockorientierte Dienste


Hier finden Sie Beispiele, die die Syntax von Variablennamen für blockorientierte Dienste
verdeutlichen.

Datenblock empfangen im gesamten Puffer


Namensraum-URI: S7: (Namensraum-Index: 3)
S7-OPC-1.brcv1
Ein Datenblock wird im Empfangspuffer mit der RID 1 empfangen über S7-OPC-1. Der
vollständige Puffer wird auf ein Feld von Bytes abgebildet.

Teilzugriff auf empfangenen Datenblock


Namensraum-URI: S7: (Namensraum-Index: 3)
S7-OPC-1.brcv1.2,w,4
Aus dem empfangenen Datenblock wird der Inhalt ab Adresse 2 auf ein Feld aus 4 Wörtern
abgebildet. Insgesamt werden also 8 Byte aus dem Datenblock betrachtet.

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)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


152 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

2.6.10 Baustein-Informations-Objekte einer S7-Verbindung

[Link] Längeninformationen

Die Bausteinobjekte unter einem S7-Verbindungsobjekt


Die Art und Größe des Bausteinaufbaus in einem S7-Automatisierungsgerät wird zur
Laufzeit ermittelt. Es gibt folgende Bausteinobjekte unter einem S7-Verbindungsobjekt, die
diese Informationen einem OPC-UA-Client zur Verfügung stellen.

69HUELQGXQJ 6&RQQHFWLRQ7\SH

EORFNV )ROGHU2EMHFW7\SH

L 6%ORFN7\SH

T OHQJWK 8,QW

SL

ST

EORFNV )ROGHU2EMHFW7\SH

ಱGEಯGE!

Bild 2-19 Bausteinobjekte unter einem S7-Verbindungsobjekt

Jedes Bausteinobjekt enthält dabei eine OPC-UA-Property mit einer Längen- bzw.
Größenangabe über den Baustein (length).

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 153
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Beispiel:
Namensraum-URI: S7: (-->Namensraum-Index: 3)
S7-Verbindung_1.[Link] //Property length des DB10-Bausteins (Länge in Byte)

[Link] Musterobjekte

Das Musterobjekt eines Bausteinobjekts


Für jedes beim Durchsuchen angezeigte Bausteinobjekt wird ein Musterobjekt angezeigt,
dessen NodeID als Vorlage für weitere benutzerdefinierte Datenobjekte verwendet werden
kann. Das Musterobjekt besitzt den Standard-Datentyp B (bzw. c oder tbcd) für das jeweilige
Bausteinobjekt und beginnt immer ab Adresse 0. Sollte dieses Item beim
Verbindungspartner nicht zugreifbar sein, dann wird dies über entsprechende
Zugriffsergebnisse und Quality-Codes angezeigt.

Beispiel:
Namensraum-URI: S7: (Namensraum-Index: 3)
S7-Verbindung_1.db10.0,b
S7-Verbindung_1.m.0,b

[Link] Diagnose- und Konfigurations-Informationen

Die Properties eines S7-Verbindungsobjekts


Im Allgemeinen werden die Eigenschaften einer S7-Verbindung mit dem
Projektierungswerkzeug STEP 7 projektiert. Zur Laufzeit kann es sinnvoll sein, einige
Projektierungsparameter auszuwerten.
Einige Projektierungsparameter werden für OPC UA als Properties zum S7-
Verbindungsobjekt bereitgestellt:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


154 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-20 Properties eines S7-Verbindungsobjekts (Teil 1)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 155
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


156 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-21 Properties eines S7-Verbindungsobjekts (Teil 2)

Syntax zu Diagnose- und Konfiguration-Informationen


Namensraum-URI: S7: (-->Namensraum-Index: 3)
<Verbindungsname>.<S7VerbindungsProperty>

<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)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 157
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


158 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 159
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


160 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

2.6.11 S7 OPC UA 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,
SByte, 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:
[Link]<db>.<o>,dw //Template für ein UInt32 eines Datenbausteins
Durch Ersetzen von <db> mit der Datenbausteinnummer und <o> dem Offset innerhalb des
Datenbausteins erhält der Anwender eine gültige NodeID.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 161
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

-> 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.

Template-Datenvariablen innerhalb der Browse-Hierarchie


Die Template-Datenvariablen befinden sich in eigenen Ordnern in der Browse-Hierarchie,
dort nahe, wo sie am ehesten gebraucht werden. Durch Unterbringung in eigenen Ordnern
kann der versierte Anwender, der keine Templates mehr benötigt, diese leicht übergehen
und wird davon in seiner Übersicht nicht behindert.

Spezielle Nutzung einiger Attribute der Template-Datenvariablen


Die Verwendung der OPC-UA-Attribute ist durch die UA-Spezifikation vorgegeben und
bedarf keiner weiteren Erläuterung.
Beispiel für das Template einer Datenbaustein-Bytevariablen:

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

2.6.12 Events, Conditions und Alarme

[Link] Welche Alarme gibt es?


Dieser Abschnitt beschreibt die Abbildung von S7-Meldungen und S7-Diagnoseereignisse
auf OPC-UA-Events, Conditions und Alarme.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


162 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Folgende Event- und Alarmtypen gibt es für OPC UA und S7:


● Statepath-Alarm
Meldungen zum S7-Verbindungszustand
● Symbolbezogene Meldungen (SCANs)
Ermöglichen asynchron zum SPS-Anwenderprogramm die Überwachung von Bits in den
Bereichen E, A, M und DB der CPU.
● Bausteinbezogene Meldungen (Alarm-SFB, Alarm-SFC)
Quittierbare Alarm-SFBs sind: ALARM (SFB 33), ALARM_8 (SFB 34) und ALARM_8P
(SFB 35)
Nicht quittierbar sind die SFBs: NOTIFY (SFB 36) und NOTIFY_8P (SFB 31)
Quittierbare Alarm-SFCs sind: ALARM_SQ (SFC 17) und ALARM_DQ (SFC 107)
Nicht quittierbar sind die SFCs: ALARM_S (SFC 18) und ALARM_D (SFC 108)
● Diagnosemeldungen
Systemdiagnose (ID 0x1000-0x79FF, 0xC000-0xEFFF, 0xF900-0xF9FF)
Anwenderdiagnose (ID 0x8000-0xB9FF) mit WR_USMSG (SFC 52)

[Link] Was sind Events?


Eine Anlage ist charakterisiert durch die Stati seiner Hardware- und Software-Komponenten.
UA-Alarming bietet die Möglichkeit, Statusänderungen einer Auswahl aller Stati dem dafür
angemeldeten Anwender als Ereignisse zu melden. Die Informationen des Events sind in
seinen Properties abgelegt. Welche Properties ein Event aufweist, wird durch den Eventtyp
definiert.
Der Eventtyp weist eigene oder von einem anderem Eventtyp (der seinerseits vererbte
Properties aufweisen kann) vererbten Properties auf. Die Möglichkeit der einfachen
Vererbung führt zu einer Event Typhierachie. Die UA-Alarming-Spezifikation weist eine
Vielzahl von vordefinierten Eventtypen auf, die in der vordefinierten Typhierarchie strukturiert
sind. Des Weiteren macht die UA-Alarming-Spezifikation Angaben zum Typ der Properties
und zu der Semantik dieser Properties. Alle vordefinierten Events befinden sich in
Namespace ns="[Link]

[Link] Welche Events des S7-UA-Alarming-Servers gibt es?


Der S7-UA Alarming-Server lehnt sich an vordefinierten Eventtypen an und leitet die eigenen
Eventtypen von den vordefinierten Eventtypen ab. Es sind für S7-Events eigene Eventtypen
definiert. Alle S7-Eventtypen befinden sich im Namespace ns="S7TYPES:".
S7–UA-Alarming dient zur Darstellung von S7-Meldungen. Die untenstehende Tabelle gibt
an, welche Eventtypen ein S7-UA-Alarming Server meldet. Mit der Ausnahme des ersten
Eventtypen, treten Events mit dem angegebenen Eventtyp erst nach dem Empfang einer
abgebildeten S7-Meldung auf.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 163
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Tabelle 2- 3 Eventtypen von S7-UA-Alarming und ihre Verwendung

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.

[Link] Eventtyphierarchie von S7-UA-Alarming-Server


Die Eventtypenhierarchie des S7-UA-Alarming-Servers besteht aus der
Standard-Eventtypenhierarchie, wobei aus manchen Eventtypen S7-Eventtypen abgeleitet
werden.
Die Eventtyphierarchie kann mit dem OPC-Scout V10 durchsucht werden. Beim
Durchsuchen werden jedoch nicht die NodeIds der Elemente angezeigt, sondern ihre
Anzeigenamen.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


164 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-22 Abbildung der Eventtyphierarchie

Die Vererbung der Eventtypen ist wie folgt:

Eventtyp mit Anzeigenamen erbt von …


"ExclusiveLevelAlarmType" "ExclusiveLimitAlarmType"
"ExclusiveLimitAlarmType" "LimitAlarmType"
"LimitAlarmType" "AlarmConditionType"
"AlarmConditionType" "AcknowledgeableConditionType"
"AcknowledgeableConditionType" "ConditionType"

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 165
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-23 Beobachten der Alarmobjekte über Data Access

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


166 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

2.6.13 Standard-Eventtypen

[Link] Standard-Eventtyp mit dem Anzeigenamen "BaseEventType"


NodeId: ns="[Link] i=2041
Abgeleitet von: ist von keinem anderen EventType abgeleitet.
Browse-Namen der relevanten Properties
"EventType" (13|NodeId)
"SourceNode" (13|NodeId)
"SourceName" (13|String)
"Message" (13|LocalizedText)
"Severity" (13|UInt16)
"Time" (13|DateTime)
"ReceiveTime" (13|DateTime)
"EventId" (13|ByteString)
Direkt von diesem Typen abgeleitete S7-UA-Eventtypen: ns="S7TYPES:", i =60,
Anzeigenamen="S7DiagnosisEventType". Er hat keine Condition-Instanz. Ein Event von
diesem Eventtyp wird eindeutig durch den Source-Namen identifiziert.

Bild 2-24 Beispielhafte Darstellung des BaseEventType

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 167
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


168 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bildung des Source-Namen

NodeId des Anzeigename Bildungsregel bei Bildungsregel bei


S7-Eventtypen OPC Server 7.0: OPC Server 8.0:
ns=S7TYPES:, i=14 "S7StatepathAlarmType" S7-Verbindungsname + S7-Verbindungsname +
".statepath". Beispiel ".statepath"
[Link] Beispiel: [Link]. Es
existiert ein entsprechender
SourceNode.
ns= S7TYPES:, i=40 "S7ExclusiveLimitAlarmType" S7-Verbindungsname 1. Unprojektierte S7-Meldungen:
Beispiel: con13 S7-Verbindugsname
Beispiel: con13
2. Projektierte Meldungen:
Zusatztext 1
Es existiert ein entsprechender
SourceNode.
3. Projektierte Meldungen ohne
Zusatztext1: Anlagepfad + "\" +
Baustein (bzw. Symbolnamen
bei SCAN) . Beispiel:
Station1\con13-Scan-
Notify\S7-Programm(3)\DB604.
Es existiert ein entsprechender
SourceNode.
ns= S7TYPES:, i=41 "S7ExclusiveDeviationAlarmType" S7-Verbidungsname 1. Unprojektierte S7-Meldungen:
Beispiel: con13 S7-Verbindugsname
Beispiel: con13
2. Projektierte Meldungen:
Zusatztext 1.
Es existiert ein entsprechender
Source Node.
3. Projektierte Meldungen ohne
Zusatztext1: Anlagepfad + "\" +
Baustein (bzw. Symbolnamen
bei SCAN) . Beispiel:
Station1\con13-Scan-
Notify\S7-Programm(3)\DB604.
Es existiert ein entsprechender
SourceNode.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 169
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

NodeId des Anzeigename Bildungsregel bei Bildungsregel bei


S7-Eventtypen OPC Server 7.0: OPC Server 8.0:
ns= S7TYPES:, i=43 "OffNormalAlarmType" S7-Verbindungsname 1. Unprojektierte S7-Meldungen:
Beispiel: con13 S7-Verbindungsname
Beispiel: con13
2. Projektierte Meldungen:
Zusatztext 1.
Es existiert ein entsprechender
SourceNode.
3. Projektierte Meldungen ohne
Zusatztext1: Anlagepfad + "\" +
Baustein (bzw. Symbolnamen
bei SCAN) . Beispiel:
Station1\con13-Scan-
Notify\S7-Programm(3)\DB604.
Es existiert ein entsprechender
SourceNode.
ns= S7TYPES:, i=60 "S7DiagnosisEventType" S7-Verbindungsname + 1. Unprojektierte Meldungen:
".diagnosis" + S7-Verbindungsname +
Meldungsnummer als ".diagnosis" +
Hex-Wert Meldungsnummer als
Beispiel: Hex-Wert
Con13.diagnosis0xA001 Beispiel:
con13.diagnosis0xA001
2. Projektierte Meldungen:
Anlagepfad + "\" +
Meldebezeichner
Beispiel:
Station1\con13-Scan-
Notify\S7-Programm(3)\DB604
3. Projektierte Meldungen:
Anlagepfad + "\" +
Meldebezeichner. Beispiel:
Station1\con13-Scan-
Notify\S7-
Programm(3)\WR_USMSG (1).
Es existiert ein entsprechender
SourceNode.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


170 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bildung der Meldung

NodeId des Anzeigename Bildungsregel bei Bildungsregel bei


S7-Eventtypen OPC Server 7.0: OPC Server 8.0:
ns= S7TYPES:, i=14 "S7StatepathAlarmType" "statepath" "statepath"
ns= S7TYPES:, i=40 "S7ExclusiveLimitAlarmType" Verbindungsname + 1. Unprojektierte
".alarm" + Meldenummer S7-Meldungen:
Beispiel: con13.alarm1 S7-Verbindungsname +
".alarm"+ Meldenummer
Beispiel: con13.alarm1
2. Projektierte Meldungen:
Meldetext
ns= S7TYPES:, i=41 "S7ExclusiveDeviationAlarmType" Verbindungsname + 1. Unprojektierte
".alarm" + Meldenummer S7-Meldungen:
Beispiel: con13.alarm1 S7-Verbindungsname +
".alarm"+ Meldenummer
Beispiel: con13.alarm1
2. Projektierte Meldungen:
Meldetext
ns= S7TYPES:, i=43 "OffNormalAlarmType" Verbindungsname + 1. Unprojektierte
".alarm" + Meldenummer S7-Meldungen:
Beispiel: con13.alarm1 S7-Verbindungsname +
".alarm"+ Meldenummer
Beispiel: con13.alarm1
2. Projektierte Meldungen:
Meldetext
ns= S7TYPES:, i=60 "S7DiagnosisEventType" S7-Verbindungsname + 1. Unprojektierte Meldungen:
".diagnosis" + Hex-Wert. S7-Verbindungsname +
Beispiel: ".diagnosis" + Hex-Wert.
con13.diagnosis0xA001 Beispiel:
con13.diagnosis0xA001
2. Projektierte Meldungen:
Meldetext kommend und
Meldetext gehend

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 171
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bildung der Severity

NodeId des Anzeigename Bildungsregel bei Bildungsregel bei


S7-Eventtypen OPC Server 7.0: OPC Server 8.0:
ns= S7TYPES:, i=14 "S7StatepathAlarmType" Für jede S7-Verbindung Für jede S7-Verbindung
Vorgabe-Priorität für Vorgabe-Priorität für
Meldungen. Meldungen.
ns= S7TYPES:, i=40 "S7ExclusiveLimitAlarmType" - 1. Für jede S7-Verbindung
Meldungsweise erfasste
Priorität falls vorhanden
oder sie wird aus der
S7-Meldungspriorität (0 bis
16) der Bausteine und
Symbole abgeleitet.
ns= S7TYPES:, i=41 "S7ExclusiveDeviationAlarmType" - 1. Für jede S7-Verbindung
Meldungsweise erfasste
Priorität falls vorhanden
oder sie wird aus der
S7-Meldungspriorität (0 bis
16) der Bausteine und
Symbole abgeleitet.
ns= S7TYPES:, i=43 "OffNormalAlarmType" Für jede S7-Verbindung 1. Unprojektierte
Vorgabe-Priorität für S7-Meldungen:
Meldungen. Für jede S7-Verbindung
Meldungnummerweise Vorgabe-Priorität für
erfasste Priorität, falls Meldungen oder
vorhanden. Meldungsnummerweise
erfasste Priorität.
2. Projektierte Meldungen: Für
jede S7-Verbindung
erfasste Priorität falls
vorhanden oder sie wird
aus der
S7-Meldungspriorität (0 bis
16) der Bausteine und
Symbole abgeleitet.
ns= S7TYPES:, i=60 "S7DiagnosisEvent Type" Für jede S7-Verbindung 1. Für jede S7-Verbindung
Vorgabe-Priorität für Vorgabe-Priorität für
Meldungen oder Meldungen
Meldungnummerweise oder
erfasste Priorität. 2. Meldungsnummerweise
erfasste Priorität, falls
vorhanden.

Tabelle 2- 4 Umformungstabelle S7-Meldungspriorität Severity

S7-Meldungspriorität Severity
0 1
1 63

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


172 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 173
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] Standard-Eventtyp mit dem Anzeigenamen "ConditionType"


NodeId: ns:"[Link] i=2782
Abgeleitet von: ns="[Link] i=2041 mit Anzeigenamen "BaseEvent
Type"
Browse-Namen der relevanten Properties
"" (1|NodeId)
"ConditionName" (13|String)
"EnableState|ID" (13|Boolean)(Browse-Path)
"EnableState" (13|LocalizedText)
"Quality" (13|StatusCode)
Direkt von diesem Typen abgeleitete S7-Eventtypen: keine
Direkt oder indirekt davon abgeleitete Eventtypen haben eine Condition-Instanz.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


174 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-25 Beispielhafte Darstellung des ConditionType

ConditionName
Ein Event einer Condition wird durch die Kombination "SourceName" und "ConditionName"
eindeutig identifiziert. Siehe unten, Abschnitt "Bildung des Condition Namen".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 175
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Bildung des Condition-Namen

NodeId des Anzeigename Bildungsregel bei Bildungsregel bei


S7-Eventtypen OPC Server 7.0: OPC Server 8.0:
ns=S7TYPES:, i=14 "S7StatepathAlarmType" "statepath" "statepath"
ns= S7TYPES:, i=40 "S7ExclusiveLimitAlarmType" "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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


176 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

NodeId des Anzeigename Bildungsregel bei Bildungsregel bei


S7-Eventtypen OPC Server 7.0: OPC Server 8.0:
ns= S7TYPES:, i=41 "S7ExclusiveDeviationAlarmType" "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
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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 177
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] Standard Eventtyp mit dem Anzeigenamen "AcknowledgeableConditionType"


NodeId: ns:"[Link] i=2881
Abgeleitet von: ns="[Link] i=2782 mit Anzeigenamen "ConditionType"
Browse-Namen der relevanten Properties
"AckedState|Id" (13|Boolean)
"AckedState" (13|LocalizedText)
Direkt von diesem Typen abgeleitete S7-Eventtypen: keine

Bild 2-26 Beispielhafte Darstellung des AcknowledgeableConditionType

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.

[Link] Standard-Eventtyp mit dem Anzeigenamen "AlarmConditionType"


NodeId: ns:"[Link] i=2915
Abgeleitet von: ns="[Link] i=2881 mit Anzeigenamen
"AcknowledgeableConditionType"
Browse-Namen der relevanten Properties
"ActiveState|Id" (13|Boolean)
"ActiveState" (13|LocalizedText)
Direkt von diesem Typen abgeleitete S7-Eventtypen: keine
Mögliche Werte gemäß UA-Alarming-Spezifikation für ActiveState (LocalizedText) sind
"de";"Aktiv" und "de";"Inaktiv".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


178 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-27 Beispielhafte Darstellung des AlarmConditionType

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.

ActiveState bei Eventtyp mit dem Anzeigenamen="S7StatepathAlarmType"


Hier wird der Zustand "Aktiv" erreicht, wenn die S7-Verbindung nicht aufgebaut ist. Der
Zustand "Inaktiv" ist erreicht, wenn die S7-Verbindung aufgebaut ist.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 179
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] Standard-Eventtyp mit dem Anzeigenamen "ExclusiveLimitAlarmType"


NodeId: ns:"[Link] i=9341
Abgeleitet indirekt von: ns="[Link] i=2915 mit Anzeigenamen
"AlarmConditionType"
Browse-Namen der relevanten Properties:
"LimitState|CurrentState" (13|LocalizedText)
Direkt von diesem Typen abgeleiteten S7-UA-Eventtypen: keine

Bild 2-28 Beispielhafte Darstellung des ExclusiveLimitAlarmType

LimitState|CurrentState
Mögliche Werte sind "High", "HighHigh", "Low" und "LowLow".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


180 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] Standard-Eventtyp mit dem Anzeigenamen "ExclusiveLevelAlarmType"


NodeId: ns:"[Link] i=9482
Abgeleitet von: ns="[Link] i=9341 Anzeigenamen
"ExclusiveLimitAlarm Type"
Browse-Namen der relevanten Properties: keine
Direkt von diesem Typen abgeleiteten S7-UA-Eventtyp:
ns="S7TYPES:", i =40, Anzeigenamen="S7ExclusiveLevelAlarm Type"
Der Eventtyp mit dem Anzeigenamen "S7ExclusiveLevelAlarm Type" wird generiert, wenn
ein OPC-Server 8.0 gewählt ist und für die Meldeklasse der Meldungen
"Alarm - oben" (LimitState|CurrentState="HighHigh"),
"Alarm – unten" (LimitState|CurrentState="LowLow"),
"Warnung - oben" (LimitState|CurrentState="High") und
"Warnung - unten" (LimitState|CurrentState="Low") eingestellt ist.

[Link] Standard-Eventtyp mit dem Anzeigenamen "ExclusiveDeviationAlarmType"


NodeId: ns:"[Link] i=9764
Abgeleitet von: ns="[Link] i=9341 Anzeigenamen
"ExclusiveLimitAlarm Type"
Browse-Namen der relevanten Properties: keine
Direkt von diesem Typen abgeleiteten S7-UA-Eventtype:
ns=S7Types, i =41, Anzeigenamen="S7ExclusiveDeviationAlarm Type"
Der Eventtype mit dem Anzeigenamen "S7ExclusiveDeviationAlarm Type" wird generiert,
wenn ein OPC Server 8.0 gewählt ist und für die Meldeklasse der Meldungen "Toleranz -
oben" oder "Toleranz - unten" eingestellt ist.

[Link] Standard-Eventtyp mit dem Anzeigenamen "OffNormalAlarmType"


NodeId: ns:"[Link] i=10637
Abgeleitet indirekt von: ns="[Link] i=2915 mit Anzeigenamen
"AlarmCondition Type"
Browse-Namen der relevanten Properties: keine
Direkt von diesem Typen abgeleiteten S7-UA-Eventtypen:
ns=S7TYPES:, i = 43, Anzeigename="S7OffNormalAlarm Type"
ns=S7TYPES:, i =14, Anzeigenamen="S7StatepathAlarm Type"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 181
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-29 Beispielhafte Darstellung des OffNormalAlarm Type

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

[Link] S7-Eventtyp mit dem Anzeigenamen "S7StatepathlAlarmType"


NodeId: ns="S7TYPES:", i=14
Abgeleitet indirekt von: ns="[Link] i=2915 mit Anzeigenamen
"AlarmCondition Type"
Browse-Namen der relevanten Properties:
"S7Connection" (13|NodeId)
Dieser Eventtyp 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.

S7Connection
Gibt die NodeId der Verbindung an, über die eine S7-Meldung empfangen wird.
Bsp.: ns="S7:", s="Verbindungsname".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


182 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] S7-Eventtyp mit dem Anzeigenamen "S7ExclusiveLevelAlarmType"


NodeId: ns="S7TYPES:", i=40
Abgeleitet indirekt von: ns="[Link] i=9482 mit Anzeigenamen
"ExclusiveLevelAlarm Type"
Browse-Namen der relevanten Properties:
"S7AlarmId" (13|UInt32)
"S7AlarmSubId" (13|Byte)
"S7Connection" (13|NodeId)
"S7Time" (13|DateTime)
"S7AlarmAddDataCount" (13|Byte)
"S7AlarmAddData1|DataType" (13|Byte)
"S7AlarmAddData1|Data" (13|ByteString)
"S7AlarmAddData2|DataType" (13|Byte)
"S7AlarmAddData2|Data" (13|ByteString)
"S7AlarmAddData3|DataType" (13|Byte)
"S7AlarmAddData3|Data" (13|ByteString)
"S7AlarmAddData4|DataType" (13|Byte)
"S7AlarmAddData4|Data" (13|ByteString)
"S7AlarmAddData5|DataType" (13|Byte)
"S7AlarmAddData5|Data" (13|ByteString)
"S7AlarmAddData6|DataType" (13|Byte)
"S7AlarmAddData6|Data " (13|ByteString)
"S7AlarmAddData7|DataType" (13|Byte)
"S7AlarmAddData7|Data" (13|ByteString)
"S7AlarmAddData8|DataType" (13|Byte)
"S7AlarmAddData8|Data" (13|ByteString)
"S7AlarmAddData9|DataType" (13|Byte)
"S7AlarmAddData9|Data" (13|ByteString)
"S7AlarmAddData10|DataType3|Byte)
"S7AlarmAddData10|Data" (13|ByteString)
"S7AlarmAddText1" (13|LocalizedText)
"S7AlarmAddText2" (13|LocalizedText)
"S7AlarmAddText3" (13|LocalizedText)
"S7AlarmAddText4" (13|LocalizedText)
"S7AlarmAddText5" (13|LocalizedText)
"S7AlarmAddText6" (13|LocalizedText)
"S7AlarmAddText7" (13|LocalizedText)
"S7AlarmAddText8" (13|LocalizedText)
Dieser S7-Eventtyp bildet bei OPC-Server 8.0 alle projektierten Baustein- und
symbolbezogene Meldungen mit den Meldeklassen "Alarm - oben", "Alarm unten", "Warnung
- oben" oder "Warnung - unten" ab. Bei OPC-Server 7.0 wird dieser S7 Eventtyp nicht
verwendet.

S7AlarmId
Meldungsnummer der S7-Meldung.

S7AlarmSubId
Die Nummer des auslösenden Signals einer S7-Meldung. Der Wertebereich ist 1 … 8.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 183
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


184 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] S7-Eventtyp mit dem Anzeigenamen "S7ExclusiveDeviationAlarmType"


NodeId: ns="S7TYPES:", i=41
Abgeleitet indirekt von: ns="[Link] i=9764 mit Anzeigenamen
"ExclusiveDeviationAlarm Type"
Browse-Namen der relevanten Properties:
"S7AlarmId" (13|UInt32)
"S7AlarmSubId" (13|Byte)
"S7Connection" (13|NodeId)
"S7AlarmAddDataCount" (13|Byte)
"S7Time" (13|DateTime)
"S7AlarmAddData1|DataType" (13|Byte)
"S7AlarmAddData1|Data" (13|ByteString)
"S7AlarmAddData2|DataType" (13|Byte)
"S7AlarmAddData2|Data" (13|ByteString)
"S7AlarmAddData3|DataType" (13|Byte)
"S7AlarmAddData3|Data" (13|ByteString)
"S7AlarmAddData4|DataType" (13|Byte)
"S7AlarmAddData4|Data" (13|ByteString)
"S7AlarmAddData5|DataType" (13|Byte)
"S7AlarmAddData5|Data" (13|ByteString)
"S7AlarmAddData6|DataType" (13|Byte)
"S7AlarmAddData6|Data " (13|ByteString)
"S7AlarmAddData7|DataType" (13|Byte)
"S7AlarmAddData7|Data" (13|ByteString)
"S7AlarmAddData8|DataType" (13|Byte)
"S7AlarmAddData8|Data" (13|ByteString)
"S7AlarmAddData9|DataType" (13|Byte)
"S7AlarmAddData9|Data" (13|ByteString)
"S7AlarmAddData10|DataType" (13|Byte)
"S7AlarmAddData10|Data" (13|ByteString)
"S7AlarmAddText2" (13|LocalizedText)
"S7AlarmAddText3" (13|LocalizedText)
"S7AlarmAddText4" (13|LocalizedText)
"S7AlarmAddText5" (13|LocalizedText)
"S7AlarmAddText6" (13|LocalizedText)
"S7AlarmAddText7" (13|LocalizedText)
"S7AlarmAddText8" (13|LocalizedText)
Dieser S7-Eventtyp bildet bei OPC-Server 8.0 alle projektierten Baustein- und
symbolbezogene Meldungen mit den Meldeklassen "Toleranz - oben" oder "Toleranz unten"
ab. Siehe Hinweise von "S7ExclusiveLevelAlarm Type".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 185
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

[Link] S7-Eventtyp mit dem Anzeigenamen "S7OffNormalAlarmType"


NodeId: ns="S7TYPES:", i=43
Abgeleitet indirekt von: .ns="[Link] i=10637 mit Anzeigenamen
"OffNormalAlarm Type"
Browse-Namen der relevanten Properties:
"S7AlarmId" (13|UInt32)
"S7AlarmSubId" (13|Byte)
"S7Connection" (13|NodeId)
"S7AlarmAddDataCount" (13|Byte)
"S7Time" (13|DateTime)
"S7AlarmAddData1|DataType" (13|Byte)
"S7AlarmAddData1|Data" (13|ByteString)
"S7AlarmAddData2|DataType" (13|Byte)
"S7AlarmAddData2|Data" (13|ByteString)
"S7AlarmAddData3|DataType" (13|Byte)
"S7AlarmAddData3|Data" (13|ByteString)
"S7AlarmAddData4|DataType" (13|Byte)
"S7AlarmAddData4|Data" (13|ByteString)
"S7AlarmAddData5|DataType" (13|Byte)
"S7AlarmAddData5|Data" (13|ByteString)
"S7AlarmAddData6|DataType" (13|Byte)
"S7AlarmAddData6|Data " (13|ByteString)
"S7AlarmAddData7|DataType" (13|Byte)
"S7AlarmAddData7|Data" (13|ByteString)
"S7AlarmAddData8|DataType" (13|Byte)
"S7AlarmAddData8|Data" (13|ByteString)
"S7AlarmAddData9|DataType" (13|Byte)
"S7AlarmAddData9|Data" (13|ByteString)
"S7AlarmAddData10|DataType" (13|Byte)
"S7AlarmAddData10|Data" (13|ByteString)
"S7AlarmAddText2" (13|LocalizedText)
"S7AlarmAddText3" (13|LocalizedText)
"S7AlarmAddText4" (13|LocalizedText)
"S7AlarmAddText5" (13|LocalizedText)
"S7AlarmAddText6" (13|LocalizedText)
"S7AlarmAddText7" (13|LocalizedText)
"S7AlarmAddText8" (13|LocalizedText)
Dieser Eventtyp bildet bei OPC-Server 7.0 Baustein- und symbolbezogene Meldungen ab.
Bei OPC-Server 8.0 bildet er alle unprojektierten Baustein- und symbolbezogene Meldungen
und projektierte Meldungen mit anderen Meldeklassen als "Toleranz - oben", "Toleranz -
unten", "Alarm - oben", "Alarm - unten", "Warnung - oben" und "Warnung - unten") ab. Siehe
Hinweise von "S7ExclusiveLevelAlarm Type".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


186 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 187
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

Bild 2-30 Beispielhafte Darstellung der S7-spezifischen Properties für den S7OffNormalAlarm Type und den anderen
S7XXXAlarm Types

[Link] S7-Eventtyp mit dem Anzeigenamen "S7DiagnosisEventType"


NodeId: ns="S7TYPES:", i=60
Abgeleitet indirekt von: .ns="[Link] i=2041 mit Anzeigenamen
"BaseEvent Type"
Browse-Namen der relevanten Properties:
"S7DiagnosisId" (13|UInt32)
"S7Connection" (13|NodeId)
"S7DiagnosisData" (13|ByteString)
"S7Time" (13|DateTime)

Bild 2-31 Beispielhafte Darstellung des S7DiagnosisEvent Type

S7DiagnosisId
Melde-ID der Diagnosemeldung.

S7Connection
Gibt die NodeId der Verbindung an, über die die Diagnose Meldung empfangen wird.
Bsp.: ns="S7:", s="Verbindungsname".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


188 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

S7DiagnosisData
Diagnosedaten

Hinweis
Eine detaillierte Beschreibung zu SFC 52 (S7DiagnosisData) finden Sie im Dokument "STEP
7 System- und Standardfunktionen für S7-300/400".

2.6.15 Bereichsbaum und Herkunftsraum


Bei OPC Server 7.0 gibt es keinen Bereichsbaum und keinen Herkunftsraum. Bei
OPC Server 8.0 enthalten der Bereichsbaum und der Herkunftsraum die SourceNodes von
projektierten S7-Meldungen. Unprojektierte S7-Meldungen haben keine SourceNodes.
S7-UA-Alarming baut den Bereichsbaum auf, um die SourceNodes Bereichen zuzuordnen.
Knoten des Bereichsbaums sind spezielle UA-Ordner, die Bereiche der Anlage abbilden.
Diese speziellen UA-Ordner werden Bereichsknoten genannt.
Bereiche einer Anlage werden als "Zusatztext 2" aller Baustein- und symbolbezogenen
Meldungen definiert. Z. B. definiert der Zusatztext "Maschinenhaus\Kessel" den
übergeordneten Bereich "Maschinenhaus" und den untergeordneten Bereich "Kessel" mit
den NodeIds der zugehörigen UA-Ordner
● ns="S7AREAS:", s="Maschinenhaus".
● ns="S7AREAS:", s="Maschinenhaus\Kessel".

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"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 189
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

2.6.16 Empfang von Events


Die einzige Möglichkeit aktuelle Events von einem Server zu empfangen ist das Erzeugen
von einem oder mehreren beobachteten Event-Items in einer Subscription. Bei einem Event-
Item wird das Attribut EventNotifier (12) beobachtet. EventNotifier weisen nur Objekte auf,
die die Referenz "HasNotifier" haben. Bei S7 UA-Alarming mit OPC Server 8.0 sind das der
Server-Knoten ns="[Link] i=2253, alle Knoten der S7-Verbindungen,
z.B. ns="S7:", s="S7-Verbindung_1" und alle Bereichsknoten im ns="S7AREAS:". Die
EventNotifier des Server-Knotens und der Knoten der S7-Verbindungen sind die Einzigen,
die Events für unprojektierte S7-Meldungen melden.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


190 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 191
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


192 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.6 S7-Kommunikation mit OPC UA

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.

2.6.17 Methoden von UA-Alarmen

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 193
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

2.7 Offene Kommunikationsdienste (SEND/RECEIVE)


Je nach Kommunikationsnetz werden zwei Ausprägungen der offenen
Kommunikationsdienste (SEND/RECEIVE) unterschieden:
● Offene Kommunikationsdienste (SEND/RECEIVE) über Industrial Ethernet
Protokoll-ID: SR
● Offene Kommunikationsdienste (SEND/RECEIVE) über PROFIBUS
Protokoll-ID: FDL

2.7.1 Offene Kommunikationsdienste (SEND/RECEIVE) über Industrial Ethernet


Der offene Kommunikationsdienst (SEND/RECEIVE) über Industrial Ethernet wird auch als
SEND/RECEIVE-Protokoll bezeichnet. Es ermöglicht die Kommunikation mit S5- und S7-
Geräten, sowie mit Fremdgeräten.

Eigenschaften der offenen Kommunikationsdienste (SEND/RECEIVE) über Industrial Ethernet


● Kommunikation über SIMATIC S5-Hantierungsbausteine und S7-Funktionsbausteine.
● Kopplung zweier PC-Stationen möglich.
● Unterstützung der WRITE- und FETCH-Funktion zum Zugriff auf Objekte des
Partnergeräts.
● Schneller Zugriff auf große Datenpakete über die Betriebsarten SEND und RECEIVE.
● Teilzugriff innerhalb eines Datenpakets.
● Anzeige und Überwachung des Verbindungszustands.

[Link] Performanter SIMATIC NET OPC-Server für das SR-Protokoll

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


194 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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

"Symbolik" darf zusätzlich ausgewählt werden.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 195
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

Es werden folgende Verbindungstypen vom OPC-Server unterstützt:


● ISO-Transportverbindung
● ISO-on-TCP-Verbindung
● TCP-Verbindung

Beispiele für Verbindungsnamen


Typisches Beispiel ist:
SR_Connection

[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.

Syntax der Prozessvariablen für SEND/RECEIVE-Variablendiensten


SR:[<Verbindungsname>]<Bereich>{,}<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.
<Bereich>
Objekt, das angesprochen werden soll.

DBnn Datenbaustein Nr. nn


A Ausgang
E Eingang

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


196 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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.

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Typ


X Bit (Boolean) VT_BOOL Boolean
Sie müssen die Bit-Nummer
(0...7) angeben.
Hinweis: Nur bei den
Objekten E, A, M, P, PAE,
DB und QB (nur
Lesezugriff)
B oder BYTE Byte (unsigned8) VT_UI1 Byte
Hinweis: Nur bei den
Objekten E, A, M, P, PAE,
QB verfügbar
CHAR Byte (signed8) VT_I1 Integer
Hinweis: Nur bei den
Objekten E, A, M, P, PAE,
QB verfügbar
W oder WORD Wort (unsigned16) VT_UI2 Long
INT Wort (signed16) VT_I2 Integer
D oder DWORD Doppelwort (unsigned32) VT_UI4 Double
DINT Doppelwort (signed32) VT_I4 Long
REAL Fließkomma, IEEE VT_R4 Single
Darstellung
S5REAL Fließkomma, S5 VT_R4 Single
Darstellung

<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:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 197
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

● 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

Syntax für Timer und Zähler


SR:[<Verbindungsname>]<Nummer>

● Tnn
Timer
● Znn
Zähler

[Link] Blockorientierte Dienste


Die blockorientierten Dienste ermöglichen eine programmgesteuerte Übertragung größerer
Datenblöcke. Diese Dienste werden auch als SEND/RECEIVE-Dienste bezeichnet. Die
Übertragung mit dem OPC-Server wird durch Variablen realisiert:
● Variablen, die Datenblöcke empfangen
● Variablen, die Datenblöcke senden
Eine Standardgröße der Datenblöcke wird in der Projektierung festgelegt, beim Senden von
Variablen kann die Größe eingeschränkt werden. Ein Teilzugriff innerhalb der Datenblöcke
ist möglich.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


198 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

Fest definierte Variablennamen


Folgende Variablennamen sind für jede Verbindung fest definiert:
● RECEIVE
● SEND

Syntax der Prozessvariablen für blockorientierte Dienste


Es gibt folgende Möglichkeiten:
SR:[<Verbindungsname>]receive{,<Typ><Adresse>{,<Anzahl>}}

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>}}

Dieses Item ist nicht konform zur OPC-Spezifikation.

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY|VT_UI1 Byte

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 199
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY|VT_UI1 Byte

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.

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Typ


X Bit (Boolean) VT_BOOL Boolean
B oder BYTE Byte (unsigned8) VT_UI1 Byte
CHAR Byte (signed8) VT_I1 Integer
W oder WORD Wort (unsigned16) VT_UI2 Long
INT Wort (signed16) VT_I2 Integer

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


200 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Typ


D oder DWORD Doppelwort (unsigned32) VT_UI4 Double
DINT Doppelwort (signed32) VT_I4 Long
REAL Fließkomma, IEEE Darstellung VT_R4 Single
S5REAL Fließkomma, S5 Darstellung VT_R4 Single

<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.

Beispiele für Prozessvariablen für blockorientierte Dienste


Hier finden Sie Beispiele, die die Syntax von Variablennamen für blockorientierte Dienste
verdeutlichen.

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"):

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 201
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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.

[Link] SEND/RECEIVE-spezifische Informationsvariablen


Mit den SEND/RECEIVE-spezifischen Informationsvariablen können Sie Informationen über
den Verbindungszustand abfragen.
Folgende Information kann ermittelt werden:
Status einer Verbindung

Syntax der Informationsvariablen für offene Kommunikationsdienste (SEND/RECEIVE)

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:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


202 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

DOWN
Verbindung ist nicht aufgebaut
UP
Verbindung ist aufgebaut
RECOVERY
Verbindung wird aufgebaut
ESTABLISH
Reserviert für zukünftige Erweiterungen

OLE-Datentyp Visual Basic Typ


VT_BSTR String

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

OLE-Datentyp Visual Basic Typ


VT_UI1 Byte

Beispiele für SEND/RECEIVE-spezifische Informationsvariablen


Hier finden Sie einige Beispiele für Rückgabewerte von Informationsvariablen für die offene
Kommunikation (SEND/RECEIVE):
SR:[SR_CONNECTION]&statepath()
&statepath()
kann beispielsweise folgenden Wert zurückgeben:
UP
Die Verbindung ist aufgebaut

SR:[SR_CONNECTION]&statepathval()
&statepathval()
kann beispielsweise folgenden Wert zurückgeben:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 203
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

2
Die Verbindung ist aufgebaut.

[Link] Syntax der systemspezifischen Informationsvariablen


SR:[SYSTEM]&version()
&version()
Liefert eine Versionskennung für den SR OPC-Server, hier die Zeichenfolge, z.B.
SIMATIC NET Core Server SR V [Link] Copyright 2010
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only

S7:[SYSTEM]&sapiversion()
&winsockversion()
Versionskennung der Winsocket-Schnittstelle.
Datentyp: VT_BSTR
Zugriffsrecht: Read-Only

2.7.2 Offene Kommunikationsdienste (SEND/RECEIVE) über PROFIBUS

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.

Eigenschaften der offenen Kommunikationsdienste (SEND/RECEIVE) über PROFIBUS


Der OPC-Server von SIMATIC NET bietet folgende Eigenschaften:
● Kommunikation über SIMATIC S5 und SIMATIC S7-Hantierungsbausteine auf einem
Automatisierungsgerät
● Kopplung zweier PC-Stationen möglich
● Schnelle Übertragung von Datenpaketen
● Strukturierter Zugriff innerhalb eines Datenpakets
● Anzeige und Überwachung des Verbindungszustandes

[Link] Protokoll-ID
Die Protokoll-ID für das FDL-Protokoll lautet FDL.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


204 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

[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.

Beispiele für Verbindungsnamen


Ein typisches Beispiel ist:
FDL-Connection

[Link] Blockorientierte Dienste


Blockorientierte Dienste ermöglichen die programmgesteuerte Übertragung von
Datenblöcken. Die empfangenen und die zu sendenden Datenpuffer werden auf OPC-
Variablen abgebildet.

Fest definierte Variablennamen


Folgende Variablennamen sind für jede Verbindung fest definiert:
● RECEIVE
● SEND
● SendSDA
● SendSDN

Syntax der Prozessvariablen für blockorientierte Dienste (FDL)


Es gibt zwei Möglichkeiten:
FDL:[<Verbindungsname>]receive{,<Typ><Adresse>{,<Anzahl>}}

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 205
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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.

OLE-Datentyp Visual Basic Typ


VT_ARRAY|VT_UI1 Feld mit Elementen vom Typ Byte

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:

LocalSAP Remote Remote Bedeutung/ verwendeter Dienst bei


Station SAP Send
0...62, 255 0...126 0...62, 255 Senden und Empfangen / SDA
0...62, 255 0...126 63 Nur Senden / SDA
63 0...126 0...62, 255 Nur Empfangen (kein Send)
0...62, 255 127 63 Broadcast: Nur Senden an Alle / SDN

LocalSAP Remote Remote Bedeutung/ verwendeter Dienst bei


Station SAP Send
63 127 0...62, 255 Broadcast Empfang
(kein Send)
0..62, 255 127 0...62, 255 Multicast: Nur Senden an Alle, die den
RemoteSAP aktiviert haben / SDN

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


206 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

OLE-Datentyp Visual Basic Typ


VT_ARRAY|VT_UI1 Feld mit Elementen vom Typ Byte

<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.

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Typ


X Bit (Boolean) VT_BOOL Boolean
B oder BYTE Byte (unsigned8) VT_UI1 Byte
CHAR Byte (signed8) VT_I1 Integer
W oder WORD Wort (unsigned16) VT_UI2 Long
INT Wort (signed16) VT_I2 Integer
D oder DWORD Doppelwort (unsigned32) VT_UI4 Double
DINT Doppelwort (signed32) VT_I4 Long
REAL Fließkomma, IEEE Darstellung VT_R4 Single
S5REAL Fließkomma, S5 Darstellung VT_R4 Single

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 207
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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.

Formatbezeichner Beschreibung OLE-Datentyp Visual Basic-Typ


X Bit (Boolean) VT_BOOL Boolean
B oder BYTE Byte (unsigned8) VT_UI1 Byte
CHAR Byte (signed8) VT_I1 Integer
W oder WORD Wort (unsigned16) VT_UI2 Long
INT Wort (signed16) VT_I2 Integer
D oder DWORD Doppelwort (unsigned32) VT_UI4 Double
DINT Doppelwort (signed32) VT_I4 Long
REAL Fließkomma, IEEE Darstellung VT_R4 Single
S5REAL Fließkomma, S5 Darstellung VT_R4 Single

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


208 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

<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.

Beispiele für Prozessvariablen für blockorientierte Dienste (FDL)


Hier finden Sie Beispiele, die die Syntax von Variablennamen für FDL-Variablen
verdeutlichen.

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 209
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

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.

[Link] FDL-spezifische Informationsvariablen


Der OPC-Server für offene Kommunikationsdienste (SEND/RECEIVE) über PROFIBUS
(FDL) stellt Variablen zur Verfügung, mit denen Informationen über Zustand und Ausbau des
Kommunikationsnetzes ermittelt werden können.

Syntax der FDL-spezifischen Informationsvariablen

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


210 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

Inhalt Beschreibung Datentyp Länge


(Bytes)
HSA Höchste PROFIBUS-Adresse am Bus, 2...126 BYTE 1
TS PROFIBUS-Adresse des lokalen Teilnehmers, 0...hsa BYTE 1
bzw. 126.
Station_Type Typ des lokalen Teilnehmers INTEGER 2
Baudrate Übertragungsrate INTEGER 2
Medium_red Redundanz INTEGER 2
Retry_Ctr Anzahl der Aufrufwiederholungen an einen nicht UWORD 2
antwortenden Teilnehmer (remote), 0...7.
Default_SAP Nummer des Default-SAP der Station (local), 0...63 BYTE 1
network_con_SAP reserviert BYTE 1
TSL SLOT Time UWORD 2
TQUI Modulatorausklingzeit / Repeater-Umschaltzeit UWORD 2
TSET Setup-Time UWORD 2
MIN_TSDR Minimum der station delay time UWORD 2
MAX TSDR Maximum der station delay time UWORD 2
TTR Target rotation time DWORD 4
GAP GAP-Updatefaktor BYTE 1
in_Ring_desired Ringaufnahmewunsch BOOLEAN 1
physical_layer Einstellbare Busphysik INTEGER 2
ident Vendor-Name, Controllertype, Hard- und STRING 211
Softwarestände

OLE-Datentyp Visual Basic Typ


VT_ARRAY | VT_UI1 Byte()

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.

OLE-Datentyp Visual Basic Typ


VT_UI1 Byte

identify
Liefert die Teilnehmeridentifikation der angegebenen Verbindung als Feld mit 4 Strings:
Elemente des Rückgabewerts:
Hersteller
Controller
Hardware-Version

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 211
OPC-Prozessvariablen für SIMATIC NET
2.7 Offene Kommunikationsdienste (SEND/RECEIVE)

Software-Version

OLE-Datentyp Visual Basic Typ


VT_ARRAY | VT_BSTR String()

ts
Gibt die lokale Stationsadresse der angegebenen Baugruppe zurück.

OLE-Datentyp Visual Basic Typ


VT_UI1 Byte

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)

OLE-Datentyp Visual Basic Typ


VT_ARRAY of VT_UI1 Feld mit 127 Elementen vom Typ Byte()

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.

[Link] Syntax der systemspezifischen Informationsvariablen


FDL:[SYSTEM]&version()

&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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


212 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.8 SNMP-Kommunikation über Industrial Ethernet

Zugriffsrecht: Read-Only

2.8 SNMP-Kommunikation über Industrial Ethernet

Prozessvariablen für SNMP


SNMP-Daten sind in erster Linie Diagnosevariablen (bei Schreibzugriff auch
Geräteparameter.
Der SNMP OPC-Server von SIMATIC NET bietet folgende Variablen an:
● Prozessvariablen
● Informationsvariablen
● Trap-Variablen

Weitere Informationen zum SNMP OPC-Server: ([Link]

2.8.1 Protokoll-ID

Protokoll-ID
Die Protokoll-ID für das SNMP-Protokoll lautet "SNMP".

2.8.2 Datentypen des SNMP-Protokolls

Abbildung auf verfügbare Datentypen


Das SNMP-Protokoll verwendet bei der Deklaration der MIB Objekte eigene Datentypen. Der
SNMP OPC-Server bildet die Datentypen des SNMP-Protokolls auf die an der OPC-
Schnittstelle verfügbaren Datentypen wie folgt ab:

SNMP-Datentyp Kanonischer OLE- Visual Basic-Typ Bedeutung


Code Datentyp
ASN_INTEGER VT_I4 Long signed long (4 Byte)
02h
ASN_INTEGER32 VT_I4 Long signed long (4 Byte)
02h
ASN_UNSIGNED32 VT_UI4 Double unsigned long
47h (4 Byte)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 213
OPC-Prozessvariablen für SIMATIC NET
2.8 SNMP-Kommunikation über Industrial Ethernet

SNMP-Datentyp Kanonischer OLE- Visual Basic-Typ Bedeutung


Code Datentyp
ASN_OCTETSTRING VT_BSTR String Falls keine druckbaren
04h Zeichen, Notation:
ostring:[Link]
ASN_OBJECTIDENTIFIER VT_BSTR String In der MIB-Notation:
06h .a.b.c.d.e.
ASN_IPADDRESS VT_BSTR String In dezimaler Notation:
40h [Link]
ASN_COUNTER32 VT_UI4 Double unsigned long
41h (4 Byte)
ASN_GAUGE32 VT_UI4 Double unsigned long
42h (4 Byte)
ASN_TIMETICKS VT_UI4 Double unsigned long
43h (4 Byte)
ASN_OPAQUE VT_ARRAY of VT_ARRAY of unsigned Byte
44h VT_UI1 VT_UI1

2.8.3 Prozessvariablen für SNMP-Variablendienste

Variablen und Geräteprofile


SNMP–Variablen bezeichnen die Variablen im Partnergerät. Diese Variablen werden dem
OPC-Server anhand der Geräteprofile bekannt gemacht. Diese Geräteprofile können mit
Hilfe des MIB-Compilers und den entsprechenden MIB-Dateien des Gerätes erstellt werden.
Standardgeräteprofile sind im Lieferumfang des Projektierungswerkzeugs enthalten.
Anschließend wird die Projektierung auf den PC mit dem OPC-Server geladen, damit die
Variablen dem OPC-Server zur Verfügung stehen.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


214 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.8 SNMP-Kommunikation über Industrial Ethernet

<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.

2.8.4 SNMP-spezifische Informationsvariablen

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

Informationen zum SNMP-Gerät


Der OPC-Server stellt Variablen zur Verfügung, mit denen Sie Informationen über das
SNMP-Gerät (z.B. Port; Switch) abfragen können.
Sie können folgende Informationen abfragen:
● Den eingegebenen Kommentar bei der Projektierung
● Die projektierte IP Adresse des Partnergeräts
● Den Status der Verbindung zum Partnergerät
● Zusatzinformationen bei nicht SNMP-fähigen Geräten

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 215
OPC-Prozessvariablen für SIMATIC NET
2.8 SNMP-Kommunikation über Industrial Ethernet

<Informationsparameter>
Es sind folgende Informationsparameter definiert:

&description() Der bei der Projektierung im Kommentarfeld eingegebene Text.


VT_BSTR, Read-Only
&ipaddress() Die IP Adresse des Partnergerätes.
VT_BSTR, Read-Only.
&statepath() Verbindungszustand zum Partnergerät.
Wert in Textform (VT_BSTR, Read-Only):
DOWN Das Gerät kann nicht mit einem Ping erreicht werden bzw. es
bestehen keine aktiven Lese- oder Schreibaufträge.
UP Es konnten erfolgreich Aufträge zu diesem Gerät abgewickelt
werden.
RECOVERY Das Gerät kann nicht mit einem Ping erreicht werden bzw. der
letzte Auftrag wurde mit einem Fehler abgeschlossen, der auf
einen Kommunikationsabbruch hindeutet, und es bestehen
weitere aktive Aufträge zum Gerät.
&statepathval() Verbindungszustand zum Partnergerät. Wert als Integer.
VT_UI1, Read-Only.
1 Das Gerät kann nicht mit einem Ping erreicht werden bzw. es bestehen
keine aktiven Lese- oder Schreibaufträge.
2 Es konnten erfolgreich Aufträge zu diesem Gerät abgewickelt werden.
3 Das Gerät kann nicht mit einem Ping erreicht werden bzw. der letzte
Auftrag wurde mit einem Fehler abgeschlossen, der auf einen
Kommunikationsabbruch hindeutet und es bestehen weitere aktive
Aufträge zum Gerät.
&ping() Verbindungszustand zum Partnergerät.
VT_UI1, Read-Only.
0 Das Gerät kann nicht mit einem Ping erreicht werden.
1 Das Gerät kann mit einem Ping erreicht werden.
&alarmagentmib2() Verbindungszustand zum SNMP-Agent-Partnergerät (Item sysUpTime aus
dem MIB2-Profil kann erreicht werden).
VT_UI1, Read-Only.
0 "sysUpTime" kann nicht gelesen werden.
1 "sysUpTime" kann gelesen werden.

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.

&syscontact() Der bei der Projektierung im Feld sysContact eingegebene Text.


VT_BSTR, Read-Only.
&syslocation() Der bei der Projektierung im Feld sysLocation eingegebene Text.
VT_BSTR, Read-Only.
&sysname() Der bei der Projektierung im Feld sysName eingegebene Text.
VT_BSTR, Read-Only.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


216 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.8 SNMP-Kommunikation über Industrial Ethernet

Beispiel
SNMP:[OSM]&ipaddress()
Als Rückgabewert wird die projektierte IP Adresse des Teilnehmernamens mit dem Namen
OSM zurückgeliefert.

Informationen über den SNMP OPC-Server


Der OPC-Server stellt Variablen zur Verfügung, mit denen Informationen über den SIMATIC
NET SNMP OPC-Server abgefragt werden können.
Sie können folgende Informationen abfragen:
● Version des SIMATIC NET SNMP OPC-Servers
● Version zur Winsocket
● Information zum Trap-Empfang

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:

&version() Versionskennung des SIMATIC NET SNMP OPC-Servers. VT_BSTR,


Read-Only.
&winsockversion() Versionskennung von Winsocket. VT_BSTR, Read-Only.
&traplisten() Indikator, ob sich der SIMATIC NET SNMP OPC-Server für den Empfang
von Traps anmelden konnte. VT_BOOL; Read-Only.
FALSE
Der SNMP OPC-Server konnte sich nicht zum Empfang anmelden.
TRUE
Der SNMP OPC-Server hat sich erfolgreich zum Empfang angemeldet.

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 217
OPC-Prozessvariablen für SIMATIC NET
2.8 SNMP-Kommunikation über Industrial Ethernet

2.8.5 SNMP-spezifische Traps

Verarbeitung der Traps durch den OPC-Server


Traps sind Ereignisse, die vom Gerät ohne Aufforderung an den OPC SNMP Server
geschickt werden. Der OPC-Server verarbeitet diese Ereignisse auf die folgende Art und
Weise:
● Der Trap wird als Simple Event an der Alarms & Events Schnittstelle abgebildet.
● Für jeden projektierten Trap werden an der Data Access-Schnittstelle 2 Variablen
gebildet: Eine Variable wird bei jedem Auftreten der betreffenden Trap inkrementiert, die
andere Variable speichert eine Beschreibung der Trap.

Syntax
Erste Variable für die Anzahl der aufgetretenen Ereignisse:
SNMP:[<Teilnehmername>]<Trapname>

Zweite Variable für die Beschreibung der Trap:


SNMP:[<Teilnehmername>]<Trapname>_description

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


218 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

2.9 PROFINET-IO-Kommunikation über Industrial Ethernet


Das Systemmodell eines dem PROFINET-IO-Controller zugeordneten PROFINET-IO-
Device ist modulorientiert aufgebaut. Ein PROFINET-IO-Device kann mehrere Module
enthalten, jedes Modul kann mehrere Submodule enthalten. Ein Submodul enthält i.d.R. die
physikalischen Klemmen oder Treiberbausteine (Kanäle) für die anzuschließende Anlagen-
Hardware, z. B. Förderbänder oder Sensoren, deren Eingangsdaten oder Stellwerte werden
mit den IO-Daten angesprochen. Das Lesen und Schreiben der IO-Daten ist der wichtigste
Anwendungsfall für PROFINET IO.
Sowohl Devices als auch Module und Submodule können Datensätze zur Verfügung stellen
und Alarme generieren. Die Anwendung von Datensätzen und Alarmen ist geräteabhängig.

2.9.1 Performanter SIMATIC NET OPC-Server für das PROFINET-IO-Protokoll

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 219
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

2.9.2 Wie können IO-Daten adressiert werden?


Im Allgemeinen werden für die IO-Daten keine Adressierungen unterstützt, die mehrere
Submodule, Module oder Devices umfassen. Es sind keine internen Mengenaufrufe möglich,
d.h. jede PROFINET-IO-Adresse muss einzeln gelesen oder geschrieben werden.

Adressierung
Es wird eine sogenannte logische Adressierung verwendet.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


220 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 221
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

Bild 2-35 Anzeige der Adressen der Baugruppen einer PC-Station im Stationsfenster von
"HW Konfig"

Wie sollte die Adressierung sinnvoll erweitert werden?


Wenn nur ein einzelnes Eingangs-Bit eines Submoduls mit z. B. 64 Bit Breite gelesen
werden soll, müssen alle 8 Bytes vollständig gelesen werden. Gleiches gilt für das Schreiben
eines Ausgangs-Bit, es müssen alle 8 Bytes vollständig geschrieben werden.
Der Aufbau der Anlage, also Informationen über die tatsächlich vorhandenen Devices und
deren Module und Submodule, wird projektiert und ist damit dem Anwender bekannt. Es
müssen jedoch Module und Submodule auch noch im laufenden Betrieb entfernt oder
hinzugefügt werden können.
Um dem OPC-Anwender trotzdem einen gewissen Komfort bei der Konvertierung der E/A
Daten zu geben, wird die erweiterte Adressierung eingeführt. Der Anwender, der seine
Anlage ja kennt, kann mit Hilfe der Item-Syntax den PROFINET-IO-OPC-Server lokal mit
den notwendigen Projektierungsinformationen versorgen
Beispiel:
Angenommen, ein PROFINET-IO-Device steuert über ein IO-Submodul 64 elektrische
Schalter. Das Submodul wird mit der Projektierungs-Software auf die logische Basisadresse
400 abgebildet mit einem Wertebereich von 64 Bit gleich 8 Byte. Diese Information wird
vorgegeben. Mit dem folgenden Item kann der Anwender Bit 5 des Submoduls ab Offset 4
Lesen oder Schreiben.
PNIO:[ctrl1]AB400,8,X4.5

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


222 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

2.9.3 Wie kann der projektierte PROFINET-IO-Namensraum durchsucht werden?


Die projektierten PROFINET-IO-Geräte des OPC-Server können mit den Suchfunktionen
(Browsing) von OPC DA angezeigt werden.

Bild 2-36 Durchsuchen des projektierten Namensraums im OPC Scout

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 223
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

2.9.4 Welche OPC Variable für PROFINET IO stehen zur Verfügung?


Der PROFINET IO OPC-Server von SIMATIC NET bietet folgende Variablentypen an:
● Prozessvariablen - Daten Lesen/Schreiben/Beobachten
● Informationsvariablen - Zustandsabfragen
● Steuervariablen - Geräte aktivieren/deaktivieren

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>}

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


224 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Format- OLE- Visual Basic Beschreibung


bezeichner Datentyp V6.0-Typ
Automation
Datatype
X VT_BOOL Boolean Zusätzlich ist noch die Bit-Adresse im jeweiligen Byte
anzugeben.
Das Schreiben einzelner Bits ist aus Konsistenz-
gründen nur bei der erweiterten Adressierung möglich,
der OPC-Client sollte dabei jedoch immer alle Bits der
logischen Adresse gleichzeitig beschreiben.
Zusätzlich kann eine Array-Länge in Bits angegeben
werden. Das Lesen von Bitarrays ist immer möglich,
das Schreiben aus Konsistenzgründen aber nur, wenn
die Bit-Adresse den Wert 0 hat und die Bit-Länge ein
Vielfaches von 8 ist.
Aus Gründen der Einheitlichkeit wird jedoch das Lesen
von Bitarrays ebenfalls nur zugelassen, wenn die Bit-
Adresse den Wert 0 hat und die Bit-Länge ein
Vielfaches von 8 ist.
B oder BYTE VT_UI1 Byte Byte (unsigned)
W oder WORD VT_UI2 Long Wort (unsigned)
D oder VT_UI4 Currency Doppelwort (unsigned)
DWORD Abbildung auf den umfassenderen Visual Basic- Typ
6.0 Currency 8 Byte, da kein entsprechender Datentyp
vorhanden.
LWORD VT_UI8 VT_UI8 Automation Typ Integer 8 Byte (unsigned), wird von
Visual Basic 6.0 nicht unterstützt.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 225
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

Format- OLE- Visual Basic Beschreibung


bezeichner Datentyp V6.0-Typ
Automation
Datatype
CHAR VT_I1 Integer Byte (signed) Abbildung auf den umfassenderen Visual
Basic- Typ Integer 2 Byte.
INT VT_I2 Integer (%) Wort (signed)
DINT VT_I4 Long (&) Doppelwort (signed)
LINT VT_I8 VT_I8 Automation Typ Integer 8 Byte (signed), wird von
Visual Basic 6.0 nicht unterstützt.
REAL VT_R4 Single Fließkomma 4 Byte
LREAL VT_R8 Double Fließkomma 8 Byte
STRING VT_BSTR String Zeichenkette
Zusätzlich ist noch die für den String reservierte Länge
anzugeben. Beim Schreiben können auch kürzere
Strings geschrieben werden, wobei die übertragene
Datenlänge immer die reservierte String-Länge in
Bytes ist. Die nicht benötigten Bytes werden mit dem
Wert 0x00 gefüllt.

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


226 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 227
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

Beispiele für Prozessvariablen für PROFINET IO


Hier finden Sie Beispiele, die die Syntax von Variablennamen für PROFINET-IO-Variablen
verdeutlichen.
● Eingänge
PNIO:[CTRL3]EB10
Controller Index 3, logische Adresse 10, erstes Eingangsbyte.
PNIO:[CTRL3]EB4,3
Controller Index 3, logische Adresse 4, Feld der ersten 3 Bytes.
PNIO:[CTRL1]ED2
Controller Index 1, logische Adresse 2, erstes Doppelwort.
PNIO:[CTRL1]EX10.0,64
Controller Index 1, logische Adresse 10.0, Feld der ersten 64 Ausgangsbits. Nur
Vielfache von 8 vom Beginn des ersten Byte.
PNIO:[CTRL1]EReal4
Controller Index 1, logische Adresse 4, erste Fließkommazahl im Eingangsbereich.
Erweiterte Adressierung:
PNIO:[ CTRL1] EB2,1,X1.0,2
Controller Index 1, erweiterte Adresse 2, Bereichsanzahl 1 Byte, Offset 1 Byte, Feld der
ersten 2 Bits ab Eingangsbit 0.
PNIO:[CTRL1]EB10,4,X1.3,7
Controller Index 1, erweiterte Adresse 10, Bereichsanzahl 4 Bytes, Offset 1 Byte, Feld
der ersten 7 Bits ab Eingangsbit 3.

● 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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


228 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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

ECS = Lokaler Status


eines Eingangs aus Daten-Frames im
Sicht des Verwenders Prozessabbild
(IO-Controller)

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)

Bild 2-37 Übersicht der Datenstatus im Prozessabbild bei der PROFINET-IO-Kommunikation


zwischen IO-Controller und einem 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".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 229
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


230 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Aufbau des Statuswerts


Der Statuswert Typ VT_UI4 hat immer folgenden Aufbau:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 231
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


232 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

● <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).

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 233
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

● <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.

Die Bedeutung der Werte <Format>, <Bit|Stringlänge> und <Anzahl> entspricht


derjenigen im Kapitel "PROFINET-IO-Prozessvariablen (Seite 224)".

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


234 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

Wert des Datensatzes


Datentyp: VT_ARRAY | VT_UI1. Lesbar; falls die Datensatzlänge angegeben wird auch
schreibbar.
Enthält den zuletzt vom Device gelesenen Datensatz bzw. den zuletzt an das Device
geschriebenen Datensatz. Struktur und Länge des Datensatzes sind nicht fest vorgegeben.
Die Länge des gelesenen Datensatzes ist implizit in der Feldlänge des Werts enthalten.
Es ist zu beachten, dass, abhängig vom angesprochenen Device und dem Datensatzindex,
geschriebene Datensätze möglicherweise nicht oder nur einmalig verändert zurückgelesen
werden können. Dementsprechend sollte ein Pollen von Datensätzen (aktives Item) nur bei
Datensätzen vorgenommen werden, die mehrmaliges Lesen unterstützen.
Wird ein Datensatz mit Leseeinschränkungen- oder Schreibeinschränkungen angesprochen,
wird an der OPC-Schnittstelle ein Fehler (Kommunikationsfehler oder Zugriffsfehler)
zurückgegeben.

Beispiele für PROFINET-IO-Datensätze


PNIO:[CTRL1]EDS16382,DATA61450,22
Controller Index 1, Diagnoseadresse 16382, Datensatzindex 61450, Länge 22 Byte, Lesen
der Diagnoseinformationen IO Device-Ebene.
PNIO:[CTRL1]EDS32,DATA32788,100,W8
Controller Index 1, logische Adresse 32, Datensatzindex 32788, Länge 100 Byte. Lesen der
Diagnoseinformationen des Subslots. Das Wort 8 enthält, falls vorhanden, den Fehlertyp des
ersten Kanalfehlers.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 235
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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.

2.9.10 PROFINET-IO-spezifische Informationsvariablen

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()

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


236 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

&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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 237
OPC-Prozessvariablen für SIMATIC NET
2.9 PROFINET-IO-Kommunikation über Industrial Ethernet

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


238 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

2.9.11 Syntax der systemspezifischen Informationsvariablen

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

2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Das Systemmodell eines dem PROFINET-IO-Controller zugeordneten PROFINET-IO-


Device ist modulorientiert aufgebaut. Ein PROFINET-IO-Device kann mehrere Module
enthalten, jedes Modul kann mehrere Submodule enthalten. Ein Submodul enthält i.d.R. die
physikalischen Klemmen oder Treiberbausteine (Kanäle) für die anzuschließende Anlagen-
Hardware, z.B. Förderbänder oder Sensoren. Deren Eingangsdaten oder Stellwerte werden
mit den IO-Daten angesprochen. Das Lesen und Schreiben der IO-Daten ist der wichtigste
Anwendungsfall für PROFINET IO.
Sowohl Devices als auch Module und Submodule können Datensätze zur Verfügung stellen
und Alarme generieren. Die Anwendung von Datensätzen und Alarmen ist geräteabhängig.
Der PROFINET-IO-OPC-UA-Server von SIMATIC NET hat folgende Eigenschaften:
● Prozessvariablen - Daten Lesen/Schreiben/Beobachten
● Informationsvariablen - Zustandsabfragen
● Steuervariablen - Geräte aktivieren/deaktivieren

2.10.1 SIMATIC NET OPC-UA-Server für das PROFINET-IO-Protokoll

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 239
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


240 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

2.10.2 Wie wird der PROFINET IO OPC-UA-Server adressiert?

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].

Endpunkte und Sicherheitsmodi


Der SIMATIC NET PROFINET-IO-OPC-UA-Server unterstützt Endpunkte mit dem nativen
binären TCP-Protokoll und erfordert Authentisierung über Zertifikate und eine verschlüsselte
Übertragung.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 241
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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".

Die OPC-UA-Discovery des OPC Scout V10


Der OPC Scout V10 ermöglicht das Öffnen des OPC-UA-Discovery-Dialogs zur Übernahme
von UA-Endpunkten in den Navigationsbereich des OPC Scout V10.

Bild 2-39 Das Dialogfeld "Endpunkte der UA-Server finden" des OPC Scout V10

Der PROFINET-IO-OPC-UA-Server kann über den OPC-UA-Discovery-Dienst gefunden


werden. Dieser hat den reservierten Port 4840. Zur Eingabe siehe oben unter "Server-URL".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


242 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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.

2.10.3 Welche Namensräume bietet die PROFINET-IO-Kommunikation mit OPC UA?

Der PROFINET-IO-OPC-UA-Server bietet folgende Namensräume an:

Tabelle 2- 5 Namensräume von OPC UA

Namensraum-Index "Bezeichner" (Namensraum-URI) / Kommentar


0 "[Link]
von der OPC Foundation spezifiziert
1 "urn: {RechnerName}:[Link]:{GUID}"
Eindeutiger Bezeichner des lokalen performanten PROFINET-IO-OPC-UA-
Servers.
2 "PNIOTYPES:"
Bezeichner für den Namensraum der PROFINET-IO-Typen.
3 "PNIO:"
Bezeichner des lokalen performanten PROFINET-IO-OPC-UA-Servers mit
neuer vereinfachter Syntax (durchsuchbar und verwendbar mit UA)
4 "PNIOCOM:"
Bezeichner des Servers mit alter Syntax.
(mit UA verwendbar aber nicht durchsuchbar)
In diesem Namensraum kann die PROFINET-IO-OPC-DA-kompatible
Syntax im OPC-UA-Server angewendet werden, jedoch sind hier keine
Bezeichner möglich, die im OPC-DA-Server Alias-Items sowie Symbolik
entsprechen.
Beispiel: Im Namensraum PNIOCOM: gibt es den Bezeichner
PNIO:[cltr1]ab0 ebenso wie als Item im OPC DA Server.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 243
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Wie kann der projektierte PROFINET-IO-Namensraum durchsucht werden?


Die projektierten PROFINET-IO-Geräte des OPC-Server können mit den Suchfunktionen
(Browsing) von OPC Data Access angezeigt werden.

Bild 2-40 Durchsuchen des projektierten Namensraums im OPC-Scout

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


244 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

2.10.4 Die NodeID

Identifikation einer PROFINET-IO-Prozessvariable


Die NodeId identifiziert mit Hilfe des folgenden Tupels eine PROFINET-IO-Prozessvariable
eindeutig:
● Namensraum-Index
● Bezeichner (Zeichenfolge, numerischer Wert)

Bild 2-41 Namensräume von OPC UA bei PROFINET-IO-Kommunikation

Index 0 ist von der OPC-Foundation vorbelegt, Index 1 - 4 sind herstellerspezifisch.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 245
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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

Wie verhält sich der neue auf OPC UA angepasste Namensraum?


Während die Welt der OPC Data Access Items eher auf das Lesen und Schreiben von
Prozessvariablen beschränkt, in sich abgeschlossen ist und daneben davon völlig losgelöst
beispielsweise die Alarmwelt existiert, ist die OPC UA Sicht auf Automatisierungsobjekte mit
verschiedenen Eigenschaften bezogen.
Dementsprechend greift OPC UA nicht mehr alleine auf Items zu, sondern auf Objekte und
deren Unterobjekte. Datenvariablen und Methoden sind beispielsweise Unterobjekte eines
PROFINET-IO-Device-Objekts. Properties definieren die Objekte näher, alle Informationen
werden von Attributen der Objekte bereitgestellt.
Ein OPC Data Access Item für Zugriff auf IO-Bereiche eines PROFINET-IO-Device
entspricht dabei einer OPC-UA-Datenvariablen. Ein OPC Data Access Item zur
Aktivierung/Deaktivierung eines Device entspricht einer OPC-UA-Methode.
Den qualifizierten Bezeichnern (NodeId) unter OPC UA kommt eine größere Bedeutung als
unter OPC Data Access zu. Jeder einzelne Zugriff auf Objekt, Unterobjekt, Property und
Attribut erfolgt über dessen NodeId.
Der OPC-Namensraum für PROFINET IO ist in einer Baumstruktur dargestellt und kann
nach NodeIds durchsucht werden. Alle Texte des Namensraums sind in Englisch.

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


246 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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

2EMHFW +DV7\SH'HILQLWLRQ 2EMHFW7\SH

2I7\SH
$WWULEXWHV
+DV&RPSRQHQW 9DULDEOH

+DV3URSHUW\ 3URSHUW\

+DV&RPSRQHQW

2EMHFW
+DV3URSHUW\

+DV(YHQW6RXUFH
3URSHUW\

+DV&RPSRQHQW

(YHQW2EMHFW

0HWKRG

Bild 2-42 Symbole des OPC-UA-Adressraums

2.10.5 Board-Objekt und PROFINET-IO-Controller


<Boardobjekt>:= <PNIO-Controller>

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>

Beispiel: <PNIO-Controller>:= "ctrl1" // mit Steckplatz "1" im Komponenten-Konfigurator

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 247
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Bild 2-43 PROFINET-IO-Controller Klassenbaum

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


248 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

2.10.6 Datenvariablen des PROFINET-IO-Controllers

Datenvariablen des PROFINET-IO-Controllers

<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"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 249
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Bild 2-44 Deviceobjekt

Das Device-Objekt des PROFINET-IO-Controller-Klassenbaums befindet sich in Bild 2-42.


Kommunikationspartner des PROFINET-IO-Controllers sind die PROFINET-IO-Devices,
welche die Ein- und Ausgangsmodule besitzen. Allerdings haben die PROFINET-IO-Devices
im Rahmen der Adressierung nur eine untergeordnete Bedeutung und werden vom
Protokollstack nur beim Verbindungsaufbau genutzt. An der OPC Server-Client-Schnittstelle
werden die PROFINET-IO-Devices ausschließlich über deren Module angesprochen. Auch
wenn ein Kommando (z. B. Device activate/deactivate) Rückwirkungen auf alle Module eines
Devices hat, so genügt es für das Kommando, ein beliebiges Modul dieses Devices
anzusprechen.
Aus der Projektierung erhält der OPC-Server die diesem Device zugeordneten E/A- und
Diagnoseadressen, welche eindeutig sind und für die OPC UA NodeIds und die
Kommunikation verwendet werden.
Alle Datenvariablen eines Device-Objekts erhalten jedoch im ergänzenden UA-Attribut
"DisplayName" (4) für den jeweiligen Device-Anteil des Names den mit STEP7 projektierten
Gerätenamen.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


250 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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.

2.10.8 Datenvariablen und Methoden des Device-Objekts

<DeviceVariable>:= <DeviceObject>".deviceid"
<DeviceStatusVariable>:= <DeviceStatusObject>".status"
<DeviceStatusMethode>:= <DeviceStatusObject>".deviceactivate()"|
<DeviceStatusObject>".devicedeactivate()"

Beispiele:
[Link]

[Link]

[Link]".deviceactivate()"

[Link]".devicedeactivate()"

Datenvariable / Methode Beschreibung


deviceid Device-Nummer aus STEP7
Property vom Typ UInt32, ReadOnly
Variable zu Informationszwecken
[Link] Status des Device.
Datenvariable vom UA-Typ MultistateDiscreteType, ReadOnly.
0 FAILURE
1 OPERATE
Der Status des Device wird durch Beobachten der PNIO-Alarme
"PNIO_ALARM_DEV_FAILURE" (0x00010000) und "PNIO_ALARM_DEV_RETURN"
(0x00010001) ermittelt. Ein Lesezugriff darauf ermittelt den vom PROFINET-IO-
Controller zuletzt geschickten Wert.
Beim Anlauf bzw. nach einer Aktivierung des Device kann es geräteabhängig
mehrere Sekunden dauern, bis der Zustand auf OPERATE wechselt.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 251
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Datenvariable / Methode Beschreibung


[Link]() Device aktivieren.
Methode.
Keine Input/Output Argumente
Das Device wird mit der Funktion PNIO_device_activate(PNIO_DA_TRUE) aktiviert.
Dazu wird aus den Projektierungsinformationen die erste vorhandene
Diagnoseadresse verwendet.
Ein erfolgreicher Abschluss des Methodenaufrufs zeigt an, dass die Aktivierung
erfolgreich zum Device transportiert wurde. Ob das Device aus Sicht des Controllers
wirklich aktiv ist, muss über die die Datenvariable "[Link]" überprüft werden.
[Link]() Device deaktivieren.
Methode.
Keine Input/Output Argumente
Das Device wird mit der Funktion PNIO_device_activate(PNIO_DA_FALSE)
deaktiviert. Dazu wird aus den Projektierungsinformationen die erste vorhandene
Diagnoseadresse verwendet.
Ein erfolgreicher Abschluss des Methodenaufrufs zeigt an, dass die Deaktivierung
erfolgreich zum Device transportiert wurde. Ob das Device aus Sicht des Controllers
wirklich inaktiv ist, muss über die die Datenvariable "[Link]" überprüft werden.

2.10.9 PROFINET-IO-Modulobjekte

<Module>: = <ControllerObject>"."<InputModule>|
<ControllerObject>"."<OutputModule>
<LAddress>: = <unsigned32>
<InputModule>: = "i"<LAddress>
<OutputModule>: = "q"<LAddress>
<ControllerIOVariable>: = <IOModuleVariable>|
<IOVariable>|
<IOXSVariable>

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


252 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Bild 2-45 PROFINET-IO-Modulobjekte

[Link] Datenvariablen der PROFINET-IO-Module

<IOModuleVariable>:= <Module>".moduleid"|
<Module>".moduletype"|
<Module>".length"|
<Module>".deviceid"

Beispiele:
[Link]

[Link]

[Link]

[Link]

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 253
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

moduleid Moduladresse aus STEP 7


Property vom Typ UInt32, ReadOnly
Variable zu Informationszwecken
modultype Modultyp aus STEP7
Datenvariable vom Typ MultistateDiscreteType, ReadOnly
0 UNKNOWN
1 I (Input)
Der aktuell vom PROFINET-IO-UA-Server gelieferte Wert ist I.
2 Q (Output)
Der aktuell vom PROFINET-IO-UA-Server gelieferte Wert ist O.
3 I (Diag)
Der aktuell vom PROFINET-IO-UA-Server gelieferte Wert ist I (Diag).
Keine zyklische Daten, nur Datensätze.
Variable zu Informationszwecken
length Modullänge in Bytes aus STEP 7
Property vom Typ UInt16, ReadOnly
Variable zu Informationszwecken
Besondere Modullängen:
0 kein Modul aus dem Peripherieadressbereich (modultype = 3)
deviceid Zum Modul gehörige Device-Nummer aus STEP 7
Property vom Typ UInt32, ReadOnly
Variable zu Informationszwecken

[Link] IO-Datenvariablen der PROFINET-IO-Module

<IOVariable>: = <Module>"."<Offset>| //Default-Datentyp


<Module>"."<Offset>","<PNIOType>|
<Module>"."<Offset>","<PNIOType> //Array, auch mit 1 Element
","<CountElements>
<Module>: = <ControllerObject>"."<InputModule>|
<ControllerObject>"."<OutputModule>
<LAddress>: = <unsigned32> //Logische Adresse
//(Wertebereich
0...4294967295)
<InputModule>: = "i"<LAddress> //lesbar
<OutputModule>: = "q"<LAddress> //schreib- und lesbar
<Offset>: = <unsigned16> //Offset im Modul

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


254 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

<CountElements>: = <unsigned16> //Arrayelemente


<PNIOType>: = "x"<unsigned8(0,7)>| //Bit mit Bitadresse
"b"|"w"|"dw"|"lw"| //Unsigned-Typen
"c"|"i"|"di"|"li"| //Signed-Typen
"r"|"lr"| //Real-Typen
"s"<unsigned16> //String mit Länge

Datentypenbeschreibung

Datentyp OPC UA Datatype Hinweis


x<Bitadresse> Boolean Bit (bool)
Zusätzlich zum Byte-Offset im Bereich ist noch die <Bitadresse> im jeweiligen
Byte anzugeben.
Wertebereich 0...7
b Byte Byte (unsigned)
ByteString Wird als Defaultwert verwendet, falls kein <PNIOType> angegeben ist.
w UInt16 Wort (unsigned)
dw UInt32 Doppelwort (unsigned)
lw UInt64 Langwort (unsigned)
c SByte Byte (signed)
i Int16 Wort (signed)
di Int32 Doppelwort (signed)
li Int64 Langwort (signed)
r Float Fließkomma (4 Byte)
lr Double Fließkomma (8 Byte)
s<Stringlänge> String Es ist noch die für den String reservierte <Stringlänge> anzugeben.
Beim Schreiben können auch kürzere Strings geschrieben werden, wobei die
übertragene Datenlänge immer die reservierte Stringlänge in Byte ist. Die
nicht benötigten Bytes werden mit dem Wert 0 gefüllt.

Beispiele:

ctrl4.i10.0,w Datenwort ab Byteadresse 10


ctrl4.q17.3 Ausgangsbyte ab Byteadresse 3 (BYTE-Default)
ctrl4.i10.0,x0 Eingangsbit ab Byteadresse 0, Bit 0
ctrl4.q17.1,x4,16 Feld von 16 Ausgangsbits ab Byteadresse 1, Bit 4
ctrl4.i27355.100,s32,3 Feld mit 3 Zeichenketten zu je 32 Zeichen

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 255
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

[Link] Datenvariablen für IOPS und IOCS

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


256 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

IO-Controller IO-Device

Output
Data
OPS = Remoter Status Schreiben von
eines Ausgangs aus Ausgängen
Sicht des Erzeugers IOPS
(IO-Controller)

IOCS

ICS = Lokaler Status


eines Eingangs aus Daten-Frames im
Sicht des Verwenders Prozessabbild
(IO-Controller)

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)

Bild 2-46 Übersicht der Datenstatus im Prozessabbild bei der PROFINET-IO-Kommunikation


zwischen IO-Controller und einem 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".

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 257
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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.

Aufbau des Statuswerts


Die Datenvariable vom UA-Typ MultistateDiscreteType hat immer folgenden Aufbau:
0 = GOOD
1 = BAD

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


258 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

Im Normalfall müssen die [Link] und [Link] an der UA-Schnittstelle nicht


geschrieben werden, da diese Werte durch das Schreiben/Lesen der Variablen selbst
gesetzt werden. Nur wenn dem Device die fehlende Bereistellungs- bzw.
Verarbeitungsmöglichkeit mitgeteilt werden soll, wird der Status explizit gesetzt.
Beispiele:

[Link] Remoter Status der logischen Eingangsadresse 10


[Link] Lokaler Status der logischen Ausgangsadresse 20

[Link] Datensatz-Datenvariablen der PROFINET-IO-Module


Mit den Datensatz-Datenvariablen ("data record" = "dr") können gerätespezifische
Informationen ausgelesen oder geschrieben werden. Die möglichen Adressen sind an
projektierte Modul- oder Diagnoseadressen gekoppelt.

<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>

Datensätze und Längenangabe


Die Syntax unterscheidet Datensätze mit und ohne Längenangabe.
Die Längenangabe wird immer beim Schreiben von Datensätzen benötigt, wenn mit der
Variablen nicht der gesamte Datensatz als Bytestring adressiert wird und damit die Länge
über die zu schreibenden Daten bekannt sind. Dies ist der Fall, wenn die
Subelementadressierung verwendet wird.
Wird ohne Längenangabe und ohne Subelementadressierung geschrieben, ermittelt der
OPC-Server die Länge des Datensatzes anhand der Anzahl zu schreibender Bytes.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 259
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

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.

Pollen von Datensätzen


Datensätze sind per Definition nicht im Prozessabbild. Sie dienen zur Konfiguration,
Parametrierung und Diagnose. Datensätze werden im Profinet-IO-Protokoll nur bei der
Controller-seitigen Aufforderung gelesen und geschrieben. Hier sind Geräte- und
Anlagenspezifikationen besonders zu beachten.
Transportieren Datensätze etwa gerätespezifische Kommunikationsmechanismen, hängt
das Ergebnis eines Lesezugriffs auf einen Datensatz häufig von einem zuletzt
geschriebenen Datensatz ab und ist einmalig.
Ob ein Pollen von Datensätzen über die Verwendung der Datenvariablen in OPC-UA-
Monitored Items unterstützt wird, ist ebenfalls gerätespezifisch. Häufig werden
Datensatzadressen als Pufferspeicher, z. B. für Fehlerdiagnosen, eingesetzt, welche bei
jedem Auslesen andere Daten liefern bis der Pufferspeicher leer ist.
Beispiele:

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


260 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

2.10.10 PROFINET IO OPC UA Templates

[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:

ctrl4.i<x>.<o>,dw Template für ein UInt32 eines Eingangsmoduls

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.i<x>.dr<dr>,<l>.<o>,c,<c> Template für eine Datensatzvariable, Char[]

→ 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.

Template-Datenvariablen innerhalb der Baumstruktur


Die Template-Datenvariablen befinden sich in eigenen Ordnern in der Baumstruktur. Durch
Unterbringung in eigenen Ordnern können Sie diese leicht übergehen und werden davon in
seiner Übersicht nicht behindert, sofern Sie die Template-Datenvariablen nicht verwenden
möchten.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 261
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

[Link] Verzeichnis der Template-Datenvariablen

Spezielle Nutzung einiger Attribute der Template-Datenvariablen


Bei den Template-Variablen werden die Attribute "NodeID" (1), "BrowseName" (3) und
"Description" (5) besonders intelligent eingesetzt.
Beispiel für das Template einer Eingangs-Bytevariablen:

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"

Verzeichnis der Template-Datenvariablen

<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>

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


262 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.10 PROFINET-IO-Kommunikation mit OPC UA über Industrial Ethernet

NodeID Browse-Name Beschreibung


ctrl1.i<x>.<o>,x<bit>,<c> template input bit replace:
<x> by the address of the module
<o> by the offset within the module
<bit> by the bitoffset (0...7)
<c> by the array size
ctrl1.i<x>.<o>,b,<c> template input byte replace:
<x> by the address of the module
<o> by the offset within the module
<c> by the array size
ctrl1.i<x>.<o>,w,<c> template input UInt16 replace:
<x> by the address of the module
<o> by the offset within the module
<c> by the array size
Usw.
ctrl1.i<x>.<o>,s<sl>,<c> template input string replace:
<x> by the address of the module
<o> by the offset within the module
<sl> by the length of the string
<c> by the array size

ctrl1.q<x>.<o>,x<bit>,<c> template output bit replace:


<x> by the address of the module
<o> by the offset within the module
<bit> by the bitoffset (0...7)
<c> by the array size
Usw.
ctrl1.i<x>.dr<dr>,<l>.<o>,b,<c> template dataset byte replace:
<x> by the address of the module
<dr> by the data record number
<l> by the total length of the data
<o> by the offset within the data
<c> by the array size
Usw.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 263
OPC-Prozessvariablen für SIMATIC NET
2.11 Server-Diagnose

2.11 Server-Diagnose

Was ist die Server-Diagnose?


OPC-Client- und OPC-Server-Diagnoseinformatiomationen werden ab der "SIMATIC NET,
PC Software, V8.0" für OPC Data Access (COM, XML, UA) angeboten. Es kann z. B. die
Anzahl der verbundenen Clients und die Anzahl der aktiven OPC-Gruppen ausgelesen
werden. Zusätzlich sind Versionsdaten der OPC-Server auslesbar.

2.11.1 Protokoll-ID

Was ist die Protokoll-ID?


Die Protokoll-ID für die Server-Diagnose lautet SERVER:
Diese ID wird für OPC DA und OPC XML DA verwendet.
Für OPC UA DA wird die Server-Diagnose von der Norm vorgegeben, dort finden sich die
Diagnose Nodes im Namespace 0 unter Server.

2.11.2 OPC-DA-Server-Diagnose-Items

Welche OPC-DA-Server-Diagnose-Items gibt es?


Die OPC-Server bieten einen hierarchischen Namensraum an, in dem sich die
verschiedenen Diagnose-Items befinden. In Anlehnung an die OPC-UA-Norm werden die
Diagnoseinformationen wie folgt gegliedert:

Server:
Capabilities
MinSupportedUpdateRate

DiagnosticsSummary
CurrentSessionCount
CumulatedSessionCount
CurrentSubscriptionCount
CumulatedSubscriptionCount

VendorInfo
ComponentVersion
VendorInfoString

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


264 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.11 Server-Diagnose

Diagnose ItemID Datentyp Beschreibung


Server\Capabilities\ VT_UI4 Minimale Update–Rate für eine OPC-Gruppe
MinSupportedUpdateRate
Server\DiagnosticsSummary\ VT_UI4 Aktuelle Anzahl der OPC-Client-Sitzungen (bzw. Anzahl der
CurrentSessionCount OPC-Serverinstanzen)
Server\DiagnosticsSummary\ VT_UI4 Gesamtanzahl der OPC-Client-Sitzungen, die seit dem
CumulatedSessionCount OPC-Serveranlauf gestartet wurden. Einige Sitzungen können aber
inzwischen beendet worden sein.
Server\DiagnosticsSummary\ VT_UI4 Aktuelle Anzahl der OPC-DA Subscriptions, d.h. der OPC-Gruppen, die
CurrentSubscriptionCount aktiviert sind und OnDataChange-Callbacks an den OPC-Client schicken
können.
Server\DiagnosticsSummary\ VT_UI4 Gesamtanzahl der OPC-DA Subscriptions, die seit dem
CumulatedSubscriptionCount OPC-Serveranlauf gestartet wurden. Einige können aber inzwischen
beendet worden sein.
Server\VendorInfo\ VT_BSTR OPC-Server–Versionstring, z.B. "V03.08.00.00_01.14.00.01"
ComponentVersion
Server\VendorInfo\ VT_BSTR OPC-Server – Bezeichnung, z.B.
VendorInfoString "SIMATIC NET OPC-Server
DataAccess-V2.05/3.0 (C)
SIEMENS AG 2010"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 265
OPC-Prozessvariablen für SIMATIC NET
2.11 Server-Diagnose

Bild 2-47 OPC-Server-Diagnose-Items für COM/DCOM [Link]

Wie sehen die OPC-XML DA-Server-Diagnose-Items aus?


Es gelten dieselben Diagnose-Items wie im OPC DA-Server, bis auf
MinSupportedUpdateRate, da es keine Callbacks bei OPC XML-DA gibt. Da auch keine
Gruppenanmeldung benutzt wird, wird die Session-Anzahl CurrentSessionCount
folgendermaßen umgesetzt.
Unter Session/Sitzung versteht man hier eine länger andauernde Kommunikationsbeziehung
zwischen einem Client und einem Server. Von den XML DA–Methoden wirkt in diesem Sinn
nur die Subscription. Alle anderen Methoden (GetStatus, Browse, Read, Write) sind einzelne
Zugriffe, die keiner Session zugeordnet werden können. XML DA Subscriptions werden
durch den Aufruf "Subscribe" angelegt. Der Client besorgt sich die Daten dieser
Subscriptionen per PolledRefresh. Dabei ist sichergestellt, dass alle Subscriptions einer
Liste demselben Client und damit zu derselben "Session" zählen. Der SessionCount
berechnet sich aus der Zahl vorhandenen Subcriptions eines Clients.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


266 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.11 Server-Diagnose

Bild 2-48 OPC-Server-Diagnose-Items für XML DA


[Link]

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 267
OPC-Prozessvariablen für SIMATIC NET
2.11 Server-Diagnose

Was bietet die OPC-UA-Server-Diagnose?


Die OPC-UA-Server-Diagnose dient als Vorbild und bietet die gleichen und darüber hinaus
weiter Diagnose- und Infornations-Nodes. Einen Eindruck bietet nachfolgendes Bild. Ziehen
Sie hierfür die OPC-UA-Spezifikationen zur Referenz hinzu.

Bild 2-49 OPC-UA-Server-Diagnose-Nodes

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


268 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.12 Blockorientierte Dienste mit der OPC-Schnittstelle

2.12 Blockorientierte Dienste mit der OPC-Schnittstelle

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.

2.12.1 Blockdienste verwenden


Für die Übertragung von großen Datenpaketen bieten die S7-Kommunikation und die S5-
kompatible Kommunikation über Industrial Ethernet Blockdienste an. Dabei werden
Datenpakete zwischen den Kommunikationspartnern versendet. Die Übermittlung der Daten
belastet das Netz nur dann, wenn ein Partner explizit einen Sendeauftrag absetzt.
Mit dem OPC-Server für SIMATIC NET können Sie die Datenblöcke strukturieren. So
können einzelne Teile des Datenpakets OPC-Items zugeordnet werden.

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.

2.12.2 Eigenschaften blockorientierter Kommunikation

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 269
OPC-Prozessvariablen für SIMATIC NET
2.12 Blockorientierte Dienste mit der OPC-Schnittstelle

Aktionen von Sender und Empfänger beim Austausch von Datenpuffern


Sender
● Stellt einen Sendepuffer mit den Inhalten zusammen
● Sendet den Puffer auf einer Verbindung an einen Kommunikationspartner ab
● Bekommt eine Quittung über das Ergebnis der Datenübertragung
Empfänger
● Stellt einen Empfangspuffer für eine Verbindung bereit
● Wird benachrichtigt, wenn ein Partner ihm einen Datenpuffer zusendet
● Sendet eine Quittung an den Sender
● Wertet die empfangenen Daten aus

2.12.3 Abbildung von Datenpuffern auf OPC-Variablen

Unterschiede zwischen Sende- und Empfangs-Items


Die OPC Data Access Schnittstelle kennt nur Prozessvariablen. Damit die Vorteile der
blockorientierten Dienste auch mit OPC genutzt werden können, muß eine Abbildung auf
OPC Items erfolgen:
Sende-Item (S7-Kommunikation: BSEND, Offene Kommunikation: Send)
● Ein OPC-Item repräsentiert einen Sendepuffer oder einen Teilbereich eines
Sendepuffers.
● Wenn das OPC-Item geschrieben wird (synchron/asynchron), wird ein Schreibauftrag auf
dem Netz ausgelöst.
● Werden mehrere Items, die einen Teilbereich eines Puffers repräsentieren, in einer
Mengenoperation auf einmal geschrieben, so wird erst der gesamte Sendepuffer aus
allen Teilbereichen gebildet und dann gesendet.
● Der Lesezugriff liefert die zuletzt gesendeten Daten aus dem Sendepuffer. Wurde noch
nicht gesendet, ist das Item unter den genannten Umständen lesbar, hat aber die Qualität
BAD.
Empfangs-Item (S7-Kommunikation: BRCV, Offene Kommunikation: RECEIVE)
● Ein OPC-Item repräsentiert einen Empfangspuffer.
● Wenn das OPC-Item vom Gerät gelesen wird (synchron/asynchron), wird die
Kommunikationsbaugruppe empfangsbereit. Dieser Zustand bleibt so lange bestehen, bis
ein Datenpaket empfangen wurde oder der verbindungsspezifische Timeout abgelaufen
ist. Wenn kein Datenpaket während der Timeout-Zeit empfangen wurde, ist die Qualität
des OPC-Items BAD.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


270 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.12 Blockorientierte Dienste mit der OPC-Schnittstelle

● 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.

2.12.4 Anwendung der blockorientierten Dienste

Handhabung von Sende- und Empfangs-Items


Sende-Items sollten nur beschrieben werden, das Lesen oder Beobachten der Sende-Items
liefert nur die zuvor geschriebenen Daten.
Empfangs-Items sollten beobachtet werden, d. h. das Empfangs-Item sollte als aktives Item
in einer aktiven Gruppe vorhanden sein. Damit wird - unabhängig von der Implementierung
einer Rückruf-Funktion - der Cache des OPC-Servers mit jedem Eintreffen eines
Datenpakets aktualisiert.

Lesen aus dem Cache und direkt vom Gerät


Leseaufträge - synchron wie asynchron - sollten auf dem Cache ausgeführt werden. Der
Cache enthält den zuletzt empfangenen Datenblock, wenn das Empfangs-Item beobachtet
wird. Durch Verwendung des Cache ist auch sichergestellt, dass mehrere Clients, die zum
gleichen Zeitpunkt das Item lesen, den gleichen Wert erhalten.
Leseaufträge an ein Device (direkt an das Gerät) sind nicht sinnvoll, da nur während des
Timeout-Intervalls der Verbindung (üblicherweise einige Sekunden) ein Empfangspuffer
bereitsteht. Ein Sender muss innerhalb dieses Zeitfensters senden, damit der Datenpuffer
vom Empfänger angenommen wird.

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).

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 271
OPC-Prozessvariablen für SIMATIC NET
2.13 Zugriffsrechte von OPC-Variablen einschränken

2.12.5 Besonderheiten der blockorientierten Dienste über TCP/IP native

Bedeutung der Socket-Schnittstelle


Das SEND/RECEIVE-Protokoll für offene Kommunikation über TCP/IP native basiert auf den
Socket-Diensten von Windows. Es werden dabei keine expliziten Puffer übermittelt, sondern
an der Socket-Schnittstelle wird ein kontinuierlicher Datenstrom übertragen. Das Protokoll
verwendet dabei sowohl auf Sende- als auch auf Empfangsseite einen Zwischenspeicher,
der die ein- bzw. ausgehenden Daten nach dem FIFO-Prinzip (First-In First-out) überträgt.

TCP/IP native und OPC-Variablen


Die oben beschriebenen Protokolleigenschaften wirken sich auch auf die Anwendung mit
OPC-Variablen aus:
● Auch wenn der Partner keine Daten übernimmt, werden Sendeaufträge so lange positiv
quittiert, bis der sendeseitige Speicher überläuft. Verhindern Sie einen Speicherüberlauf
anwenderprogrammseitig.
● Der Zwischenspeicher zum Datenempfang steht unabhängig von der Beobachtung einer
Variablen oder dem Absetzen eines Leseauftrags immer bereit.
● Wenn auf Seiten des Empfängers die Daten nicht schnell genug abgeholt werden, gibt es
einen Datenstau im Empfangspuffer. Das führt dazu, dass der Empfänger nicht die
zuletzt gelesenen Daten übernimmt, sondern veraltete Daten. Verhindern Sie einen
Datenstau anwenderprogrammseitig.

2.13 Zugriffsrechte von OPC-Variablen einschränken

Zugriffsrechte in STEP 7 bzw. NCM festlegen


In STEP 7 bzw. NCM können Sie im Eigenschaftendialog des OPC-Servers Zugriffsrechte
aktivieren. Die Zugriffsrechte der Variablen werden durch das Aktivieren des
entsprechenden Kontrollkästchens standardmäßig auf Read/Write (RW) gesetzt und können
bei Bedarf auf Read (R), Write (W) oder None geändert werden.
Im Dialogfeld Item-spezifische-Zugriffsrechte können Sie Zugriffsrechte definieren, die von
der Festlegung für alle Items abweichen. Die dort eingetragenen Rechte überschreiben dann
die Default-Zugriffsrechte.

OPC-Item-spezifische Zugriffsrechte vergeben


Tragen Sie hier für eine oder mehrere OPC-Items Zugriffsrechte ein. Die für die übrigen
OPC Items definierten Default-Rechte werden dadurch nicht berührt. Die Syntax ist wie folgt
definiert:

<OPCItem>=<Rechte>

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


272 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Prozessvariablen für SIMATIC NET
2.13 Zugriffsrechte von OPC-Variablen einschränken

<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:

* eine beliebige Anzahl Zeichen


? genau ein Zeichen

<Rechte>

RW Schreib- und Lesezugriff


R nur Lesezugriff
W nur Schreibzugriff
NONE weder Schreib- noch Lesezugriff

Regeln bei der Auswertung


Die hier spezifisch vergebenen Rechte haben Vorrang vor den Default-Rechten, die Sie
unter dem Eingabebereich Zugriffsschutz vergeben haben. Die hier spezifisch vergebenen
Rechte werden in der hier eingegebenen Reihenfolge ausgewertet. Bei mehrfacher
Zuweisung zu einem OPC Item ist immer die letzte Zuweisung gültig.

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

Auf Grund dieses Eintrages sind u.a. folgende Zugriffsrechte wirksam:


DP:[CP 5611]Slave040_AB2=W

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 273
OPC-Prozessvariablen für SIMATIC NET
2.13 Zugriffsrechte von OPC-Variablen einschränken

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


274 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET 3
3.1 Event-Server für S7-Kommunikation

3.1.1 Funktionsprinzip und Alarmkategorien

Einleitung
Dieses Kapitel beschreibt, welche Ereignisse vom OPC-Server geliefert werden und welche
Zusatzinformationen als Attribute zur Verfügung stehen.

A&E-Server für SIMATIC NET


Der OPC-Server für SIMATIC NET kann als "Simple Event-Server" oder als "Conditional
Alarm- und Event-Server" genutzt werden. Ein Simple Event-Server verfügt in einem Bedien-
und Beobachtungssystem über keine Projektierungsinformationen bezüglich der Alarm- und
Ereignisbehandlung.

OPC
A&E-Server

Meldesystem

Bild 3-1 Prinzip der Alarms & Events-Kommunikation zwischen Client und A&E-Server

"Condition-related Events" können Unterbedingungen erhalten. Es ist möglich, für einen


Alarm auch mehrere Unterbedingungen zu definieren. Ein solches Event tritt auf, wenn eine
der Unterbedingungen erfüllt ist.
Darüber hinaus bieten condition-related Events die Möglichkeit, die Auswertung der
Bedingungen durch den Server zu aktivieren oder zu deaktivieren, sowie eine
Quittierungsmöglichkeit.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 275
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

Einbindung des Event-Servers


Ein Simple Event-Server gibt nur einfache Meldungen der unterlagerten Komponenten
weiter. Ein übergeordneter Alarm/Event-Management-Server verarbeitet unter Beachtung
von Projektierungsinformationen die Meldungen der unterlagerten Simple Server.

Bedienstation

Bedienstation
Protokoll-
drucker

Alarm / Event
Management-
Server

Event-Server Event-Server

Anbindung an das Sonstiges Gerät


Kommunikations- mit Alarm-
system information

Bild 3-2 Einbindung des Event-Servers

S7-Protokoll
Das S7-Protokoll bietet den Protokollmechanismus "Programmierte Meldungen (ALARM)"
zur Übertragung von Ereignissen an.
Der Meldungstyp wird vom Simple Event-Server verwendet.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


276 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 277
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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:

STEP7 Meldeklasse OPC Alarmkategorie


Keine Meldung Meldung wird unterdrückt (durch Anwender
einstellbar, z.B. bei überzähligen Alarm_8p
Alarmbits).
Unspezifizierte oder unbekannte Meldeklasse Alarmkategorie 43
(EVENTCATEGORY_CAT_OFFNORMAL)
(Default)
Alarmkategorie 40
Alarm - oben (EVENTCATEGORY_CAT_LEVEL)
Alarm – unten Condition "HIHI"
Warnung – oben Condition "LOLO"
Warnung – unten Condition "HI"
Condition "LO"
Alarmkategorie 41
Toleranz – oben (EVENTCATEGORY_CAT_DEVIATION)
Toleranz – unten Condition "HI"
Condition "LO"
AS-Leittechnik Meldung - Störung Alarmkategorie 43
AS-Leittechnik Meldung - Fehler (EVENTCATEGORY_CAT_OFFNORMAL)
OS-Leittechnik Meldung - Störung Condition "CFN"
Vorbeugende Wartung - allgemein
Prozeßmeldung - mit Quittierung
Betriebsmeldung - ohne Quittierung
Bedienanforderung - allgemein
Bedienmeldung - allgemein
Statusmeldung - AS
Statusmeldung – OS

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


278 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

3.1.2 Parameter für Ereignisse

Parameter für alle Events


Mit dem Aufruf der Rückruf-Funktion OnEvent des Clients erhält der Client eine Liste von
Ereignissen. Welche Parameter der OPC-Event-Server liefert, hängt von der Art des Events
ab. Die folgenden Parameter sind für alle Events relevant:

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 279
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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 für condition-related Events


Für condition-related Events werden zusätzlich folgende Parameter übertragen:

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


280 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 281
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

● EVENT_ATTR_S7_TEXT8
● EVENT_ATTR_S7_TEXT9

EVENT_ATTR_S7_MSGTEXT

Wert: -1
Datentyp: VT_BSTR

Attributwert: Projektierter Meldetext, sprachabhängig. Falls nicht projektiert, identisch zu EventID

EVENT_ATTR_S7_ALARMSTATE

Wert: -2
Datentyp: VT_UI4

Attributwert: Alarmzustände (EVENT_ATTR_S7_ALARMSTATE)

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)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


282 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Attributwert: Category Identifier

Mögliche Werte werden oben in der Tabelle "Alarms&Event-Kategorien" im Kapitel


"Funktionsprinzip und Alarmkategorien (Seite 275)" aufgelistet.

EVENT_ATTR_S7_CATEGORYDESC

Wert: -10
Datentyp: VT_BSTR

Attributwert: Kategorie Beschreibung

EVENT_ATTR_S7_ COMMENT

Wert: -13
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 9, der sprachabhängig ist.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 283
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Attributwert: Allgemeiner Zustand, der angibt, ob eine Meldung vorhanden ist.

ALARM Meldungen

Das Bit zeigt an:


0x00H (alle Bits 0) Die Meldung ist vorhanden
Bit 0 gesetzt Initanlauf
Bit 1 gesetzt Overflow Signal
Bit 2 gesetzt Overflow Instanz
Bit 3 ... 5 0, reserviert
Bit 6 gesetzt Zusatzwerte nicht eintragbar (Größe)
Bit 7 gesetzt Zusatzwerte nicht erreichbar

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


284 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_S7_ACK_STATE

Wert: 6003
Datentyp: VT_UI2

Attributwert: Quittierungszustand des Alarms im S7-Automatisierungsgerät

Ü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:

Das Bit zeigt an:


0 Quittierung erfolgt für "Meldung 1 gekommen"
1 ... 6 Quittierung erfolgt für "Meldung 2 bis 7 gekommen" (nur ALARM_8 / ALARM_8P)
7 Quittierung erfolgt für "Meldung 8 gekommen" (nur ALARM_8 / ALARM_8P)
8 Quittierung erfolgt für "Meldung 1 gegangen"
9 ... 14 Quittierung erfolgt für "Meldung 2 bis 7 gegangen" (nur ALARM_8 / ALARM_8P)
15 Quittierung erfolgt für "Meldung 8 gegangen" (nur ALARM_8 / ALARM_8P)

Ü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

Das Bit zeigt an:


0 Aktueller Zustand "Meldung 1" (1 = aktiv)
1 ... 6 Aktueller Zustand "Meldung 2 bis 7" (1 = aktiv) (nur ALARM_8 / ALARM_8P)
7 Aktueller Zustand "Meldung 8" (1 = aktiv) (nur ALARM_8 / ALARM_8P)

EVENT_ATTR_S7_NO_DATA

Wert: 6005
Datentyp: VT_UI1 bei Condition Events
VT_UI2 bei Simple Events

Attributwert: Anzahl der Begleitwerte. Wertebereich: 1...10

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 285
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_S7_DATAn

Wert: für n = 0 6008


für n = 1 6012
für n = 2 6016
für n = 3 6020
für n = 4 6024
für n = 5 6028
für n = 6 6032
für n = 7 6036
für n = 8 6040
für n = 9 6044
Datentyp: VT_ARRAY|VT_UI1

Attributwert: Die relevanten Bytes des Begleitwertes Nr. "n" als Feld von Bytes.

EVENT_ATTR_S7_DATAn_DATATYPE

Wert: für n = 0 6006


für n = 1 6010
für n = 2 6014
für n = 3 6018
für n = 4 6022
für n = 5 6026
für n = 6 6030
für n = 7 6034
für n = 8 6038
für n = 9 6042
Datentyp: VT_UI2: bei Simple Events
VT_UI1: bei Condition-related Events

Attributwert: Datentyp des Begleitwertes Nr. "n".

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


286 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Wert: für n = 0 6007


für n = 1 6011
für n = 2 6015
für n = 3 6019
für n = 4 6023
für n = 5 6027
für n = 6 6031
für n = 7 6035
für n = 8 6039
für n = 9 6043
Datentyp: VT_UI2: bei Simple Events
VT_UI2: bei Condition-related Events

Attributwert: Anzahl der relevanten Bytes des Begleitwertes Nr. "n".

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 287
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_S7_CONNECTION

Wert: 6050
Datentyp: VT_BSTR

Attributwert: S7-Verbindungsname

EVENT_ATTR_S7_AREAS

Wert: 6051
Datentyp: VT_ARRAY of VT_BSTR

Attributwert: Areas, unter denen das Diagnoseereignis aufgezählt wird.

EVENT_ATTR_S7_INFOTEXT

Wert: 6060
Datentyp: VT_BSTR

Attributwert: Projektierter Infotext, der sprachabhängig ist.

EVENT_ATTR_S7_TEXT1

Wert: 6061
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 1, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT2

Wert: 6062
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 2, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT3

Wert: 6063
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 3, der sprachabhängig ist.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


288 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_S7_ TEXT4

Wert: 6064
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 4, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT5

Wert: 6065
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 5, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT6

Wert: 6066
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 6, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT7

Wert: 6067
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 7, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT8

Wert: 6068
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 8, der sprachabhängig ist.

EVENT_ATTR_S7_ TEXT9

Wert: 6069
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 9, der sprachabhängig ist.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 289
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

Bedeutung der verschiedenen Zeitstempel

Attribute Eintreffen neuer Meldungen vom S7-Gerät: Refresh


Parameter TimeStamp Abhängig von der Einstellung der Projektierung Abhängig von der Einstellung der
der Zeitstempelherkunft: Projektierung der Zeitstempelherkunft:
1) Eintreffen von Flankenwechsel: letzter S7-Zeitpunkt der jeweiligen
S7-Zeitpunkt der jeweiligen Flanke des Signals Flanke des Signals oder der
2) Eintreffen der Quittierungsmeldung: Quittierung
S7-Zeitpunkt der Quittierung
Oder
1) Eintreffen von Flankenwechsel: Oder
S7-Zeitpunkt der jeweiligen Flanke des Signals letzter S7-Zeitpunkt der jeweiligen
+- Offset Flanke des Signals oder der
2) Eintreffen der Quittierungsmeldung: Quittierung +- Offset
S7-Zeitpunkt der Quittierung +- Offset
Oder
1) Eintreffen von Flankenwechsel: Oder
PC-Zeitpunkt der Benachrichtigung PC-Zeitpunkt der letzten
2) Eintreffen der Quittierungsmeldung: Benachrichtigung über Flankenwechsel
PC-Zeitpunkt der Benachrichtigung oder Quittierung
EVENT_ATTR_S7_S7TIME 1) Eintreffen von Flankenwechsel: S7-Zeitpunkt letzter S7-Zeitpunkt der jeweiligen
der jeweiligen Flanke des Signals Flanke des Signals oder der
2) Eintreffen der Quittierungsmeldung: Quittierung
S7-Zeitpunkt der Quittierung
EVENT_ATTR_S7_PCTIME 1) Eintreffen von Flankenwechsel: PC-Zeitpunkt PC-Zeitpunkt der letzten
der Benachrichtigung Benachrichtigung über Flankenwechsel
2) Eintreffen der Quittierungsmeldung: oder Quittierung
PC-Zeitpunkt der Benachrichtigung

Beim ersten Verbindungsaufbau oder einer Verbindungsunterbrechnung liefert der


S7-Meldungsupdate bei den Signaltypen
ALARM/ALARM_8/ALARM_8P/ALARM_SQ/ALARM_DQ/SCAN keinen S7-Zeitstempel. Das
Attribut ATTR_S7_S7TIME enthält dann den Zeitstempel 01.01.1990 (ältestmögliche S7-
Zeit), der Timestamp wird Abhängig von der Einstellung der Projektierung der
Zeitstempelherkunft andernfalls aus dem Zeitstempel 01.01.1990 oder aus der PC-Zeit
gebildet.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


290 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

3.1.4 Attribute für Einträge im Diagnosepuffer der Baugruppe

EVENT_ATTR_DIAGNOSIS_MSGTEXT

Wert: -1
Datentyp: VT_BSTR

Attributwert: Projektierter Meldetext, sprachabhä[Link] nicht projektiert, identisch zu


EventIDVorzugsweise verwendet jedoch eine SIMOTION Umgebung ihren eigenen
Meldetextserver.

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

Attributwert: Kategorie Identifier

EVENT_ATTR_DIAGNOSIS_CATEGORYDESC

Wert: -10
Datentyp: VT_I4

Attributwert: Kategorie Beschreibung

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 291
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_DIAGNOSIS_S7_PCTIME

Wert: 6001
Datentyp: VT_DATE

Attributwert: Zeitstempel des SIMATIC NET S7 OPC-Servers

EVENT_ATTR_DIAGNOSIS_S7_DIAGNOSISID

Wert: 6048
Datentyp: VT_I4

Attributwert: Diagnoseereignisnummer, analog EventID

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

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


292 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Attributwert: Projektierter Infotext, sprachabhängig. Falls nicht projektiert, leer.

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

Attributwert: Projektierter Zusatztext 3, sprachabhängig. Falls nicht projektiert, leer.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 293
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_DIAGNOSIS_S7_TEXT4

Wert: 6064
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 4, sprachabhängig. Falls nicht projektiert, leer.

EVENT_ATTR_DIAGNOSIS_S7_TEXT5

Wert: 6065
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 5, sprachabhängig. Falls nicht projektiert, leer.

EVENT_ATTR_DIAGNOSIS_S7_TEXT6

Wert: 6066
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 6, sprachabhängig. Falls nicht projektiert, leer.

EVENT_ATTR_DIAGNOSIS_S7_TEXT7

Wert: 6067
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 7, sprachabhängig. Falls nicht projektiert, leer.

EVENT_ATTR_DIAGNOSIS_S7_TEXT8

Wert: 6068
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 8, sprachabhängig. Falls nicht projektiert, leer.

EVENT_ATTR_DIAGNOSIS_S7_TEXT9

Wert: 6069
Datentyp: VT_BSTR

Attributwert: Projektierter Zusatztext 9, sprachabhängig. Falls nicht projektiert, leer.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


294 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

EVENT_ATTR_DIAGNOSIS_S7_S7TIME

Wert: 6100
Datentyp: VT_DATE

Attributwert: Zeitstempel

Bedeutung der verschiedenen Zeitstempel

Attribute Eintreffen neuer Diagnoseereignisse vom S7-Gerät:


Parameter TimeStamp Abhängig von der Einstellung des EventTimeBias:
S7 Zeitpunkt des Diagnoseereignisses
Oder
S7 Zeitpunkt des Diagnoseereignisses +- Offset
Oder
PC Zeitpunkt des Eintreffens des Diagnoseereignisses.
EVENT_ATTR_DIAGNOSIS_S7TIME S7-Zeitpunkt des Diagnoseereignisses
EVENT_ATTR_ DIAGNOSIS_PCTIME PC-Zeitpunkt des Eintreffens des Diagnoseereignisses

Siehe auch
Attribute für Alarme, die eine unterbrochene Verbindung anzeigen (Seite 295)

3.1.5 Attribute für Alarme, die eine unterbrochene Verbindung anzeigen

EVENT_ATTR_STATEPATH_MSGTEXT

Wert: -1
Datentyp: VT_BSTR

Attributwert: Projektierter Meldetext, sprachabhängig. Falls nicht projektiert, identisch zu EventID.

EVENT_ATTR_STATEPATH_ALARMSTATE

Wert: -2
Datentyp: VT_UI4

Attributwert: Alarmzustände (EVENT_ATTR_STATEPATH_ALARMSTATE)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 295
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Attributwert: Category Identifier

EVENT_ATTR_STATEPATH_CATEGORYDESC

Wert: -10
Datentyp: VT_BSTR

Attributwert: Kategorie Beschreibung

EVENT_ATTR_STATEPATH_COMMENT

Wert: -13
Datentyp: VT_BSTR

Attributwert: Kommentar

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


296 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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

Attributwert: Areas, unter denen der Statepathalarm aufgezählt wird.

3.1.6 Projektierung von Meldetexten, Source und Area

Welche Meldungen werden unterstützt?


Der OPC-Alarm&Event-Server unterstützt folgende Alarme:
● Symbolbezogene Meldungen (SCANs)
Ermöglichen asynchron zum SPS-Anwenderprogramm die Überwachung von Bits in den
Bereichen E, A, M und DB der CPU.
● Bausteinbezogene Meldungen (Alarm-SFB, Alarm-SFC)
Quittierbare Alarm-SFBs sind: ALARM (SFB 33), ALARM_8 (SFB 34) und
ALARM_8P (SFB 35)
Nicht quittierbar sind die SDBs: NOTIFY (SFB 36) und NOTIFY_8P (SFB 31)
Quittierbare Alarm-SFCs sind: ALARM_SQ (SFC 17) und ALARM_DQ (SFC 107)
Nicht quittierbar sind die SFCs: ALARM_S (SFC 18) und ALARM_D (SFC 108)
● Diagnosemeldungen
Systemdiagnose (ID 0x1000-0x79FF, 0xC000-0xEFFF, 0xF900-0xF9FF)
Anwenderdiagnose (ID 0x8000-0xB9FF) mit WR_USMSG (SFC 52)
● Statepath-Alarm
Wird vom OPC Alarm&Event-Server erzeugt, wenn sich der Verbindungszustand ändert.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 297
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

Was kann je Meldung angegeben werden?


In diesem Abschnitt werden auszugsweise die Einstellungen für Meldetexte, Sourcen und
Areas in der Projektierung gezeigt.
Projektierte Meldetexte
● Eingabe für programmierte bausteinbezogene Meldungen (Alarm-SFBs-SFCs):
Der Meldetext wird in STEP 7 beim zugehörigen Instanzdatenbaustein unter ... "Spezielle
Objekteigenschaften" > "Meldung ..." erfasst.
Im Dialog wird der Meldetext in der Spalte "Meldetext" eingetragen. Begleitwerte können
in den Text integriert werden.

Bild 3-3 Projektierungs-Dialog eines Alarm-SFCs mit dem ALARM_SQ (SFC17), der im FB1
aufgerufen wurde, Instanz-DB ist DB1.

● Eingabe für symbolbezogene Meldungen (SCANs):


Der Meldetext wird in STEP 7 im Symboleditor Kontextmenü "Spezielle
Objekteigenschaften" > "Meldung ..." eines Meldesymbols erfasst. Bei diesen Symbolen
ist die Checkbox "Meldung" gesetzt.
Im Dialog wird der Meldetext in der Spalte "Meldetext" eingetragen.

Bild 3-4 Projektierungs-Dialog eines symbolbezogenen Alarms für das Merkerbit 3.1

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


298 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

● Eingabe für Diagnosemeldungen:


Kommende und Gehende Meldetexte zu einer Anwenderdiagnosemeldung WR_UMSG
(SFC52) werden im Dialog in den Spalten "Meldetext kommend" und "Meldetext gehend"
eingegeben.
Der Eingabe-Dialog wird im SIMATIC Manager im Kontextmenü von S7-Programmen von
SIMATIC S7-Stationen "Spezielle Objekteigenschaften" > "Meldung ..." angeboten

Bild 3-5 Beispiel für die Projektierung einer Anwenderdiagnosemeldung zum WR_UMSG
(SFC52)

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 299
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

● 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.

Bild 3-6 1. Zusatztext (Source) und 2. Zusatztext (Area)

Wie werden Begleitwerte in Meldungen eingebettet?


Melde- und Infotexte können formale Parameter enthalten. Diese Parameter können
teilweise durch formatierte Begleitwerte der Meldung ersetzt werden.
Der Aufbau und die Bedeutung der möglichen formalen Parameter können Sie in STEP 7
unter "Hilfe" > "Begleitwerte in Meldungen einfügen" nachlesen.
Abweichend dazu unterstützt der OPC-Server für S7-Kommunikation weitere
Formatangaben, die in der nachfolgenden Auflistung, mit *) gekennzeichnet sind. Die
formalen Parameter werden nur in Melde- und im Infotexten durch formatierte Begleitwerte
ersetzt. Bei den OPC-Servern für S7-Kommunikation werden in den Zusatztexten die
formalen Parameter nicht ersetzt.
Die formalen Parameter haben den Aufbau: @<Nummer><Typ><Format>@

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


300 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

<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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 301
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

Die nachfolgenden Zeichenfolgen werden außerhalb von formalen Parametern wie folgt
ersetzt:

\n Wird ersetzt durch das Zeichen <neue Zeile> (0x0a).


\r Wird ersetzt durch das Zeichen <CR> (0x0d).
\t Wird ersetzt durch das Tabulatorzeichen (0x09).
\" Wird ersetzt durch das doppelte Anführungszeichen (0x22).
\@ Wird ersetzt durch das @-Zeichen (0x64). Das Zeichen leitet damit keine formalen
Parameter ein.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


302 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

3.1.7 Wie können Herkunftsangaben, Quellen und Bedingungen im Namensraum


durchsucht und gefiltert werden?
Die Schnittstelle "IOPC EventAreaBrowser" bietet Methoden zum Suchen von
Herkunftsbereichen, Quellen und Bedingungen (Conditions). Mit den zugehörigen
Filterfunktionen kann nach Teilbereichen gefiltert werden.

Bild 3-7 Filter-Dialog im OPC-Scout V10

Um auch unterlagerte Bereiche mit einbeziehen zu können, muss in der Filterzeichenkette


ein "*"-Zeichen angehängt werden.
z. B. alle Alarme einer CPU 416 erhält den Filter "SIMATIC 400(1)"/CPU 416-3DP*"

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 303
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

Bild 3-8 Herkunfts-Namensraum einer CPU 416. Über den 1. Zusatztext kann die Herkunft
spezifisch projektiert werden.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


304 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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:

Projektierte Parameter OPC-Wert Bedeutung


EventID ⇒ Condition "HIHI" Zustand "HIHI"
⇒ projektierte EventID wird auf Condition "HI" (Default) Zustand "HI"
abgebildet
"LO" Zustand "LO"
EVENTCATEGORY_CAT_LEVEL
"LOLO" Zustand "LOLO"
EVENTCATEGORY_CAT_DEVIATION
Eine anwenderseitig projektierte EventID darf
EVENTCATEGORY_CAT_ROC nur einen der vier möglichen Werte annehmen.
EventID ⇒ Condition "CFN" Zustand "CFN"
EVENTCATEGORY_CAT_OFFNORMAL
EventID ⇒ Condition "TRIP" Zustand "TRIP"
EVENTCATEGORY_CAT_TRIP
EventID ⇒ Condition "COS" Zustand "COS"
EVENTCATEGORY_CAT_COS
EventID ⇒ Condition "FAILURE" Zustand "FAILURE"
EVENTCATEGORY_CAT_DEVICEFAILURE
EVENTCATEGORY_CAT_SYSTEMFAILURE
Herkunft ⇒ Source <Verbindungsname>" Eindeutige Kombination aus Verbindungsname
/ und EventID bzw. STATEPATH
ALARM"<Event-ID>
{,<Subevent-ID>} Alternativ: Projektierte Source, sprachabhängig.
Oder Source muss eindeutig sein!
<Verbindungsname>"
/
STATEPATH
z.B.
"s7_verb1/ALARM10,
5"
z.B.
"s7_verb1/STATEPA
TH"
Meldungsgewicht ⇒ Severity 1 ... 1000 Severity aus der Projektierung oder aus den
siehe folgende Alarmdaten
Tabelle

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 305
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

Projektierte Parameter OPC-Wert Bedeutung


Meldeklasse ⇒ Category 40 Kategorie CAT_LEVEL
41 Kategorie CAT_DEVIATION
42 Kategorie CAT_ROC
43 Kategorie CAT_OFFNORMAL
44 Kategorie CAT_TRIP
45 Kategorie CAT_COS
46 Kategorie CAT_DEVICEFAILURE
47 Kategorie CAT_SYSTEMFAILURE
Projektierte Herkunft des Zeitstempels ⇒ 00.00.0000 Zeitstempel (CPU, CPU + OFFSET, PCZeit)
TimeStamp [Link].0000

Priorität: Die Priorität wird in eine OPC Alarmseverity nach dieser Tabelle umgewandelt
werden:

S7-Priorität OPC Alarmseverity


0 1
1 63
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

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


306 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.1 Event-Server für S7-Kommunikation

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.

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10 307
OPC-Alarms-&-Events-Server für SIMATIC NET
3.2 Simple Event-Server für SNMP-Kommunikation

3.2 Simple Event-Server für SNMP-Kommunikation

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.

Weiterleitung der Traps


Die Traps werden als sogenannte "Simple Events" zum OPC A&E-Server weitergereicht.
Daneben wird die Häufigkeit des Auftretens und die Beschreibung eines Traps als OPC DA-
Item bereitgestellt.
Voraussetzungen:

Industrielle Kommunikation mit PG/PC Band 2 - Schnittstellen


308 Programmierhandbuch, Ausgabe 06/2011, C79000-G8900-C197-10
OPC-Alarms-&-Events-Server für SIMATIC NET
3.2 Simple Event-Server für SNMP-Kommunikation

● 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.

OPC Alarm Server Name: [Link]

Alarms & Events Kategorien


Für SNMP Geräte werden folgende Alarms & Events Kategorien bereitgestellt, die
nachfolgend näher beschrieben werden:

Kategorie- Bezeichnung Beschreibung


Nummer
20 EVENTCATEGORY_SNMP_ SNMP Trap Event (Generischer Trap)
GENERICTRAP
21 EVENTCATEGORY_SNMP_ SNMP Trap Event (Spezifischer Trap)
SPECIFICTRAP

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