OPCServer:Variablen Syntax
Inhaltsverzeichnis
Variablen Syntax
Das Besondere des IBH OPC Servers ist, dass ohne Deklaration von Variablen sofort eine absolute Adressierung aller SPS Variablen möglich ist. Zusätzlich wird auch die Möglichkeit der symbolischen Adressierung - wie im SPS Programm definiert - erlaubt. Sogar Variablen aus S7 Datenbausteinen können unter Ihrem symbolischen Namen via OPC angesprochen werden. Dadurch kann ein großer Teil von Doppeldokumentation vermieden werden.
Um dies zu ermöglichen, wird über den IBH OPCEditor dem Steuerungsnamen einfach das passende SPS Programm zugeordnet und die betreffenden Variablen ausgewählt.
Die Adressierung von nicht symbolisch adressierten Variablen mit dem IBH OPC Server erfolgt in Simatic® Step®7 bzw Simatic® Step®5 Schreibweise. Beachten Sie bitte, das Realzahlen bei S7 zwingend symbolisch deklariert sein müssen, um diese korrekt als Realzahlen an die Visualisierung weiterzumelden. Ist diese Voraussetzung nicht gegeben, muss sich die Visualisierung um die Wandlung einer im Real Format vorliegenden Long Variable in eine "echte" Real Variable kümmern.
Der IBH OPC Server unterstützt 3 Schreibweisen für Variablen.
- Symbolisch aus dem SPS Projekt (Variablen über IBH OPCEditor ausgewählt)
- SIMATIC® S7 Schreibweise
- SIMATIC® S5 Schreibweise
Bei absoluter Adressierung aus dem Client ist auch eine gemischte S5/S7 Schreibweise möglich.
Die Syntax lautet immer Steuerungsname.Variablenname bzw. Steuerungsname.Datenbaustein.Strukturelement.Variablenname, wobei immer der Steuerungsname vorangestellt werden muss. Wurden die Variablen über den IBH OPCEditor individuell zusammengestellt, so können die Variablen auch komfortabel aus dem Client heraus ausgewählt werden (Browsing).
Die Konfiguration der Steuerung muss, egal ob symbolisch oder absolut gearbeitet werden soll, immer über den IBH OPCEditor vorgenommen werden. Dieser wird im Startmenü Ihres Rechners installiert.
Gemeinsame Syntax für S5 und S7:
Operand | Bereich | Datentyp |
En.n | Eingangsbits ** | Bool (VT_BOOL) |
EBn | Eingangsbytes * | Unsigned Byte (VT_UI1) |
EWn | Eingangsworte* | Unsigned Word (VT_UI2) |
EDn | Eingangsdoppelworte * | Unsigned DWord (VT_UI4) |
ETn[Stringlänge] | Text aus dem Eingangsbereich *** | Character Array (VT_BSTR) |
An.n | Ausgangsbits ** | Bool(VT_BOOL) |
ABn | Ausgangsbytes * | Unsigned Byte (VT_UI1) |
AWn | Ausgangsworte * | Unsigned Word (VT_UI2) |
ADn | Ausgangsdoppelworte * | Unsigned DWord (VT_UI4) |
ATn[Stringlänge] | Text aus dem Ausgangsbereich *** | Character Array (VT_BSTR) |
Mn.n | Merkerbits ** | Bool(VT_BOOL) |
MBn | Merkerbytes * | Unsigned Byte (VT_UI1) |
MWn | Merkerworte * | Unsigned Word (VT_UI2) |
MDn | Merkerdoppelworte * | Unsigned DWord (VT_UI4) |
MTn[Stringlänge] | Text aus dem Merkerbereich *** | Character Array (VT_BSTR) |
Syntax bei S5:
Operand | Bereich | Datentyp |
Dn.n,nr | Datenbits, DB | Bool (VT_BOOL) |
DRn,nr | Rechtes Datenbyte, DB | Unsigned Byte (VT_UI1) |
DLn,nr | Linkes Datenbyte, DB | Unsigned Byte (VT_UI1 |
DWn,nr | Datenwort, DB * | Unsigned Word (VT_UI2) |
DSn,nr | Datenwort, DB * | Signed short Integer (VT_I2) |
DDn,nr | Datendoppelwort, DB * | Unsigned DWord (VT_UI4) |
DVn,nr | Datendoppelwort, DB * | Signed long integer (VT_I4) |
DFn,nr | Datendoppelwort, DB * | Float (VT_R4) |
DTn[Stringlänge] | Text aus Datenbaustein *** | Character Array (VT_BSTR) |
DXn.n,nr | Datenbits, DX | Bool (VT_BOOL) |
DXRn,nr | Rechtes Datenbyte, DX | Unsigned Byte (VT_UI1) |
DXLn,n | Linkes Datenbyt, DX | Unsigned Byte (VT_UI1) |
DXWn,nr | Datenwort, DX * | Unsigned Word (VT_UI2) |
DXSn,nr | Datenwort, DX * | Signed short Integer (VT_I2) |
DXDn,nr | Datendoppelwort, DX * | Unsigned DWord (VT_UI4) |
DXVn,nr | Datendoppelwort, DX * | Signed long integer (VT_I4) |
DXFn,nr | Datendoppelwort, DX * | Float (VT_R4) |
DXTn[Stringlänge] | Text aus DX Datenbaustein *** | Character Array (VT_BSTR) |
Sn.n | S-Merkerbits ** | Bool (VT_BOOL) |
SYn | S-Merkerbytes * | Unsigned Byte (VT_UI1) |
SWn | S-Merkerworte * | Unsigned Word (VT_UI2) |
SSn | S-Merkerworte * | Signed short Integer (VT_I2) |
SDn | S-Merkerdoppelworte * | Unsigned DWord (VT_UI4) |
SVn | S-Merkerdoppelworte * | Signed long integer (VT_I4) |
SFn | S-Merkerdoppelworte * | Float (VT_R4) |
STn[Stringlänge] | Text aus dem S-Merkerbereich *** | Character Array (VT_BSTR) |
Syntax bei S7:
Operand | Bereich | Datentyp |
DBn.DBXn.n | DB, Datenbits ** | Bool (VT_BOOL |
DBn.DBBn | DB, Datenbyte * | Unsigned Byte (VT_UI1) |
DBn.DBCn | DB, Datenbyte * | Signed Char (VT_I1) |
DBn.DBWn | DB, Datenwort * | Unsigned Word (VT_UI2) |
DBn.DBSn | DB, Datenwort * | Signed Int (VT_I2) |
DBn.DBDn | DB, Datendoppelwort * | Unsigned DWord (VT_UI4) |
DBn.DBVn | DB, Datendoppelwort * | Signed DWord (VT_I4) |
DBn.DBRn | DB, Real * | Real (VT_R4) |
DBn.DBLn | DB, LongLong (64 Bit) * | LONGLONG (VT_I8) |
DBn.DBUn | DB, ULongLong (64 Bit) * | ULONGLONG (VT_UI8) |
DBn.DBZn | DB, S7 - DATE_AND_TIME * | Date (VT_DATE) |
DBn.DBTn[Stringlänge] | Text aus Datenbaustein *** | Character Array (VT_BSTR) |
-> *Bei diesen Operanden kann das Suffix [Anzahl] angehängt werden, um Arrays zu lesen/schreiben. Beispiel: Steuerungsname.DB10.DBB2[5] liest 5 Bytes ab dem DBB2. Steuerungsname.MW4[7] liest 7 Worte ab dem MW4.
-> ** Bei Bitoperanden kann ebenfalls das Suffix [Anzahl] angehängt werden, um Arrays zu lesen/schreiben. Arrays of Bool müssen immer mit dem Bit 0 beginnen. Beispiel: Steuerungsname.DB10.DBX2.0[5] liest 5 Bits ab dem DBX2.0. Steuerungsname.M4.0[7] liest 7 Bits ab dem M4.0. Die Zeichenfolge Steuerungsname. M4.3[4] hingegen ist nicht erlaubt. Beim Schreiben wird immer das gesamte Byte beschrieben.
-> *** Werden Strings absolut angegeben, so kann keine Überprüfung stattfinden, ob es sich um deklarierte Strings handelt. Bei S7 Steuerungen haben Strings 2 Byte mit führenden Informationen über den String, die deklarierte Länge und die derzeitige Länge. Da diese Informationen bei absoluter Angabe fehlen, werden die Strings als reine Zeichenketten der mit [Stringlänge] angegebenen Länge behandelt. Ist beim Schreiben, der Text kürzer als die über [Stringlänge] angegebenen Länge, so wird der Rest mitNullen aufgefüllt.
Die 'signed' Datentypen sind auch bei absoluter Adressierung für die S7 vorhanden. Normalerweise wird jedoch davon ausgegangen, dass dies über die Konfigurationsoberfläche IBH OPCEditor eingestellt wird.
Adressierung des DB einer S7-200:
Die Schreibweise entspricht der S7-300 Schreibweise. Auf ein Variablenbyte des Datenbausteins kann in S7-300 Schreibweise folgendermaßen zugegriffen werden: VB 2 (S7-200) = DB1.DBB2 (S7-300). Der Datenbaustein ist immer der DB1. Ein Variablenwort VW 2 (S7-200) = DB1.DBW2 (S7-300). Ein Variablendoppelwort VD 2 (S7-200) = DB1.DBD2 (S7-300).