OPCServer:Variablen Syntax: Unterschied zwischen den Versionen

Aus IBHsoftec Wiki
Wechseln zu: Navigation, Suche
(Adressierung des DB einer S7-200:)
(Gemeinsame Syntax für S5 und S7:)
Zeile 40: Zeile 40:
 
<tr class="even">
 
<tr class="even">
 
<td align="left">En.n</td>
 
<td align="left">En.n</td>
<td align="left">Eingangsbits **</td>
+
<td align="left">Eingangsbits (2)</td>
 
<td align="left">Bool (VT_BOOL)</td>
 
<td align="left">Bool (VT_BOOL)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">EBn</td>
 
<td align="left">EBn</td>
<td align="left">Eingangsbytes *</td>
+
<td align="left">Eingangsbytes (1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">EWn</td>
 
<td align="left">EWn</td>
<td align="left">Eingangsworte*</td>
+
<td align="left">Eingangsworte(1)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">EDn</td>
 
<td align="left">EDn</td>
<td align="left">Eingangsdoppelworte *</td>
+
<td align="left">Eingangsdoppelworte (1)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">ETn[Stringlänge]</td>
 
<td align="left">ETn[Stringlänge]</td>
<td align="left">Text aus dem Eingangsbereich ***</td>
+
<td align="left">Text aus dem Eingangsbereich (3)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">An.n</td>
 
<td align="left">An.n</td>
<td align="left">Ausgangsbits **</td>
+
<td align="left">Ausgangsbits (2)</td>
 
<td align="left">Bool(VT_BOOL)</td>
 
<td align="left">Bool(VT_BOOL)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">ABn</td>
 
<td align="left">ABn</td>
<td align="left">Ausgangsbytes *</td>
+
<td align="left">Ausgangsbytes (1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">AWn</td>
 
<td align="left">AWn</td>
<td align="left">Ausgangsworte *</td>
+
<td align="left">Ausgangsworte (1)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">ADn</td>
 
<td align="left">ADn</td>
<td align="left">Ausgangsdoppelworte *</td>
+
<td align="left">Ausgangsdoppelworte (1)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">ATn[Stringlänge]</td>
 
<td align="left">ATn[Stringlänge]</td>
<td align="left">Text aus dem Ausgangsbereich ***</td>
+
<td align="left">Text aus dem Ausgangsbereich (3)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">Mn.n</td>
 
<td align="left">Mn.n</td>
<td align="left">Merkerbits **</td>
+
<td align="left">Merkerbits (2)</td>
 
<td align="left">Bool(VT_BOOL)</td>
 
<td align="left">Bool(VT_BOOL)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">MBn</td>
 
<td align="left">MBn</td>
<td align="left">Merkerbytes *</td>
+
<td align="left">Merkerbytes (1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">MWn</td>
 
<td align="left">MWn</td>
<td align="left">Merkerworte *</td>
+
<td align="left">Merkerworte (1)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
</tr>
 
</tr>
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">MDn</td>
 
<td align="left">MDn</td>
<td align="left">Merkerdoppelworte *</td>
+
<td align="left">Merkerdoppelworte (1)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
</tr>
 
</tr>
 
<tr class="even">
 
<tr class="even">
 
<td align="left">MTn[Stringlänge]</td>
 
<td align="left">MTn[Stringlänge]</td>
<td align="left">Text aus dem Merkerbereich ***</td>
+
<td align="left">Text aus dem Merkerbereich (3)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
</tr>
 
</tr>

Version vom 21. Mai 2012, 13:55 Uhr

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 (2) Bool (VT_BOOL)
EBn Eingangsbytes (1) Unsigned Byte (VT_UI1)
EWn Eingangsworte(1) Unsigned Word (VT_UI2)
EDn Eingangsdoppelworte (1) Unsigned DWord (VT_UI4)
ETn[Stringlänge] Text aus dem Eingangsbereich (3) Character Array (VT_BSTR)
An.n Ausgangsbits (2) Bool(VT_BOOL)
ABn Ausgangsbytes (1) Unsigned Byte (VT_UI1)
AWn Ausgangsworte (1) Unsigned Word (VT_UI2)
ADn Ausgangsdoppelworte (1) Unsigned DWord (VT_UI4)
ATn[Stringlänge] Text aus dem Ausgangsbereich (3) Character Array (VT_BSTR)
Mn.n Merkerbits (2) Bool(VT_BOOL)
MBn Merkerbytes (1) Unsigned Byte (VT_UI1)
MWn Merkerworte (1) Unsigned Word (VT_UI2)
MDn Merkerdoppelworte (1) Unsigned DWord (VT_UI4)
MTn[Stringlänge] Text aus dem Merkerbereich (3) 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 (2) Bool (VT_BOOL
DBn.DBBn DB, Datenbyte (1) Unsigned Byte (VT_UI1)
DBn.DBCn DB, Datenbyte (1) Signed Char (VT_I1)
DBn.DBWn DB, Datenwort (1) Unsigned Word (VT_UI2)
DBn.DBSn DB, Datenwort (1) Signed Int (VT_I2)
DBn.DBDn DB, Datendoppelwort (1) Unsigned DWord (VT_UI4)
DBn.DBVn DB, Datendoppelwort (1) Signed DWord (VT_I4)
DBn.DBRn DB, Real (1) Real (VT_R4)
DBn.DBLn DB, LongLong (64 Bit) (1) LONGLONG (VT_I8)
DBn.DBUn DB, ULongLong (64 Bit) (1) ULONGLONG (VT_UI8)
DBn.DBZn DB, S7 - DATE_AND_TIME (1) Date (VT_DATE)
DBn.DBTn[Stringlänge] Text aus Datenbaustein (3) Character Array (VT_BSTR)


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


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


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