OPCServer:Variablen Syntax: Unterschied zwischen den Versionen

Aus IBHsoftec Wiki
Wechseln zu: Navigation, Suche
(Syntax bei S7:)
(Variablen Syntax)
 
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:
  
  
Die Adressierung von nicht symbolisch adressierten Variablen mit dem '''''IBH OPC Server''''' erfolgt in Simatic<sup>®</sup> Step<sup>®</sup>7 bzw Simatic<sup>®</sup> Step<sup>®</sup>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 &quot;echte&quot; Real Variable kümmern.
+
Die Adressierung von nicht symbolisch adressierten Variablen mit dem '''''IBH OPC Server''''' erfolgt in Simatic<sup></sup> Step<sup></sup>7 bzw Simatic<sup></sup> Step<sup></sup>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 &quot;echte&quot; Real Variable kümmern.
  
  
Zeile 13: Zeile 13:
  
 
* Symbolisch aus dem SPS Projekt (Variablen über '''''IBH OPCEditor''''' ausgewählt)
 
* Symbolisch aus dem SPS Projekt (Variablen über '''''IBH OPCEditor''''' ausgewählt)
* SIMATIC<sup>®</sup> S7 Schreibweise
+
* SIMATIC<sup></sup> S7 Schreibweise
* SIMATIC<sup>®</sup> S5 Schreibweise
+
* SIMATIC<sup></sup> S5 Schreibweise
  
  
Zeile 24: Zeile 24:
  
 
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.
 
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.
 
<br />
 
 
  
 
== Gemeinsame Syntax für S5 und S7: ==
 
== Gemeinsame Syntax für S5 und S7: ==
  
<table>
+
{|class="wikitable"
 
+
|-
{| border="1"
+
! Operand !! Bereich !! Datentyp
<tr class="odd">
+
|-
<td align="left">'''Operand'''</td>
+
| En.n|| Eingangsbits (2) || Bool (VT_BOOL)
<td align="left">'''Bereich'''</td>
+
|-
<td align="left">'''Datentyp'''</td>
+
| EBn || Eingangsbytes (1) || Unsigned Byte (VT_UI1)
</tr>
+
|-
<tr class="even">
+
| EWn || Eingangsworte(1) || Unsigned Word (VT_UI2)
<td align="left">En.n</td>
+
|-
<td align="left">Eingangsbits **</td>
+
| EDn || Eingangsdoppelworte (1) || Unsigned DWord (VT_UI4)
<td align="left">Bool (VT_BOOL)</td>
+
|-
</tr>
+
| ETn[Stringlänge] || Text aus dem Eingangsbereich (3) || Character Array (VT_BSTR)
<tr class="odd">
+
|-
<td align="left">EBn</td>
+
| An.n || Ausgangsbits (2) || Bool(VT_BOOL)
<td align="left">Eingangsbytes *</td>
+
|-
<td align="left">Unsigned Byte (VT_UI1)</td>
+
| ABn || Ausgangsbytes (1) || Unsigned Byte (VT_UI1)
</tr>
+
|-
<tr class="even">
+
| AWn || Ausgangsworte (1) || Unsigned Word (VT_UI2)
<td align="left">EWn</td>
+
|-
<td align="left">Eingangsworte*</td>
+
| ADn || Ausgangsdoppelworte (1) || Unsigned DWord (VT_UI4)
<td align="left">Unsigned Word (VT_UI2)</td>
+
|-
</tr>
+
| ATn[Stringlänge] || Text aus dem Ausgangsbereich (3) || Character Array (VT_BSTR)
<tr class="odd">
+
|-
<td align="left">EDn</td>
+
| Mn.n || Merkerbits (2) || Bool(VT_BOOL)
<td align="left">Eingangsdoppelworte *</td>
+
|-
<td align="left">Unsigned DWord (VT_UI4)</td>
+
| MBn || Merkerbytes (1) || Unsigned Byte (VT_UI1)
</tr>
+
|-
<tr class="even">
+
| MWn || Merkerworte (1) || Unsigned Word (VT_UI2)
<td align="left">ETn[Stringlänge]</td>
+
|-
<td align="left">Text aus dem Eingangsbereich ***</td>
+
| MDn || Merkerdoppelworte (1) || Unsigned DWord (VT_UI4)
<td align="left">Character Array (VT_BSTR)</td>
+
|-
</tr>
+
| MTn[Stringlänge] || Text aus dem Merkerbereich (3) || Character Array (VT_BSTR)
<tr class="odd">
+
|-
<td align="left">An.n</td>
+
|}
<td align="left">Ausgangsbits **</td>
+
<td align="left">Bool(VT_BOOL)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">ABn</td>
+
<td align="left">Ausgangsbytes *</td>
+
<td align="left">Unsigned Byte (VT_UI1)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">AWn</td>
+
<td align="left">Ausgangsworte *</td>
+
<td align="left">Unsigned Word (VT_UI2)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">ADn</td>
+
<td align="left">Ausgangsdoppelworte *</td>
+
<td align="left">Unsigned DWord (VT_UI4)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">ATn[Stringlänge]</td>
+
<td align="left">Text aus dem Ausgangsbereich ***</td>
+
<td align="left">Character Array (VT_BSTR)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">Mn.n</td>
+
<td align="left">Merkerbits **</td>
+
<td align="left">Bool(VT_BOOL)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">MBn</td>
+
<td align="left">Merkerbytes *</td>
+
<td align="left">Unsigned Byte (VT_UI1)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">MWn</td>
+
<td align="left">Merkerworte *</td>
+
<td align="left">Unsigned Word (VT_UI2)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">MDn</td>
+
<td align="left">Merkerdoppelworte *</td>
+
<td align="left">Unsigned DWord (VT_UI4)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">MTn[Stringlänge]</td>
+
<td align="left">Text aus dem Merkerbereich ***</td>
+
<td align="left">Character Array (VT_BSTR)</td>
+
</tr>
+
</table>
+
 
+
<br />
+
  
 
== Syntax bei S5: ==
 
== Syntax bei S5: ==
  
<table>
+
{| class="wikitable"
{| border="1"
+
|-
<tr class="odd">
+
! Operand !! Bereich !! Datentyp
<td align="left">'''Operand'''</td>
+
|-
<td align="left">'''Bereich'''</td>
+
| Dn.n,nr || Datenbits, DB || Bool (VT_BOOL)
<td align="left">'''Datentyp'''</td>
+
|-
</tr>
+
| DRn,nr || Rechtes Datenbyte, DB || Unsigned Byte (VT_UI1)
<tr class="even">
+
|-
<td align="left">Dn.n,nr</td>
+
| DLn,nr || Linkes Datenbyte, DB || Unsigned Byte (VT_UI1)
<td align="left">Datenbits, DB</td>
+
|-
<td align="left">Bool (VT_BOOL)</td>
+
| DWn,nr || Datenwort, DB (1) || Unsigned Word (VT_UI2)
</tr>
+
|-
<tr class="odd">
+
| DSn,nr || Datenwort, DB (1) || Signed short Integer (VT_I2)
<td align="left">DRn,nr</td>
+
|-
<td align="left">Rechtes Datenbyte, DB</td>
+
| DDn,nr || Datendoppelwort, DB (1) || Unsigned DWord (VT_UI4)
<td align="left">Unsigned Byte (VT_UI1)</td>
+
|-
</tr>
+
| DVn,nr || Datendoppelwort, DB (1) || Signed long integer (VT_I4)
<tr class="even">
+
|-
<td align="left">DLn,nr</td>
+
| DFn,nr || Datendoppelwort, DB (1) || Float (VT_R4)
<td align="left">Linkes Datenbyte, DB</td>
+
|-
<td align="left">Unsigned Byte (VT_UI1</td>
+
| DTn[Stringlänge] || Text aus Datenbaustein (3) || Character Array (VT_BSTR)
</tr>
+
|-
<tr class="odd">
+
| DXn.n,nr || Datenbits, DX || Bool (VT_BOOL)
<td align="left">DWn,nr</td>
+
|-
<td align="left">Datenwort, DB *</td>
+
| DXRn,nr || Rechtes Datenbyte, DX || Unsigned Byte (VT_UI1)
<td align="left">Unsigned Word (VT_UI2)</td>
+
|-
</tr>
+
| DXLn,nr || Linkes Datenbyte, DX || Unsigned Byte (VT_UI1)
<tr class="even">
+
|-
<td align="left">DSn,nr</td>
+
| DXWn,nr || Datenwort, DX (1) || Unsigned Word (VT_UI2)
<td align="left">Datenwort, DB *</td>
+
|-
<td align="left">Signed short Integer (VT_I2)</td>
+
| DXSn,nr || Datenwort, DX (1) || Signed short Integer (VT_I2)
</tr>
+
|-
<tr class="odd">
+
| DXDn,nr || Datendoppelwort, DX (1) || Unsigned DWord (VT_UI4)
<td align="left">DDn,nr</td>
+
|-
<td align="left">Datendoppelwort, DB *</td>
+
| DXVn,nr || Datendoppelwort, DX (1) || Signed long integer (VT_I4)
<td align="left">Unsigned DWord (VT_UI4)</td>
+
|-
</tr>
+
| DXFn,nr || Datendoppelwort, DX (1) || Float (VT_R4)
<tr class="even">
+
|-
<td align="left">DVn,nr</td>
+
| DXTn[Stringlänge] || Text aus DX Datenbaustein (3) || Character Array (VT_BSTR)
<td align="left">Datendoppelwort, DB *</td>
+
|-
<td align="left">Signed long integer (VT_I4)</td>
+
| Sn.n || S-Merkerbits (2) || Bool (VT_BOOL)
</tr>
+
|-
<tr class="odd">
+
| SYn || S-Merkerbytes (1) || Unsigned Byte (VT_UI1)
<td align="left">DFn,nr</td>
+
|-
<td align="left">Datendoppelwort, DB *</td>
+
| SWn || S-Merkerworte (1) || Unsigned Word (VT_UI2)
<td align="left">Float (VT_R4)</td>
+
|-
</tr>
+
| SSn || S-Merkerworte (1) || Signed short Integer (VT_I2)
<tr class="even">
+
|-
<td align="left">DTn[Stringlänge]</td>
+
| SDn || S-Merkerdoppelworte (1) || Unsigned DWord (VT_UI4)
<td align="left">Text aus Datenbaustein ***</td>
+
|-
<td align="left">Character Array (VT_BSTR)</td>
+
| SVn || S-Merkerdoppelworte (1) || Signed long integer (VT_I4)
</tr>
+
|-
<tr class="odd">
+
| SFn || S-Merkerdoppelworte (1) || Float (VT_R4)
<td align="left">DXn.n,nr</td>
+
|-
<td align="left">Datenbits, DX</td>
+
| STn[Stringlänge] || Text aus dem S-Merkerbereich (3) || Character Array (VT_BSTR)
<td align="left">Bool (VT_BOOL)</td>
+
|-
</tr>
+
|}
<tr class="even">
+
<td align="left">DXRn,nr</td>
+
<td align="left">Rechtes Datenbyte, DX</td>
+
<td align="left">Unsigned Byte (VT_UI1)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">DXLn,n</td>
+
<td align="left">Linkes Datenbyt, DX</td>
+
<td align="left">Unsigned Byte (VT_UI1)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">DXWn,nr</td>
+
<td align="left">Datenwort, DX *</td>
+
<td align="left">Unsigned Word (VT_UI2)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">DXSn,nr</td>
+
<td align="left">Datenwort, DX *</td>
+
<td align="left">Signed short Integer (VT_I2)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">DXDn,nr</td>
+
<td align="left">Datendoppelwort, DX *</td>
+
<td align="left">Unsigned DWord (VT_UI4)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">DXVn,nr</td>
+
<td align="left">Datendoppelwort, DX *</td>
+
<td align="left">Signed long integer (VT_I4)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">DXFn,nr</td>
+
<td align="left">Datendoppelwort, DX *</td>
+
<td align="left">Float (VT_R4)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">DXTn[Stringlänge]</td>
+
<td align="left">Text aus DX Datenbaustein ***</td>
+
<td align="left">Character Array (VT_BSTR)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">Sn.n</td>
+
<td align="left">S-Merkerbits **</td>
+
<td align="left">Bool (VT_BOOL)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">SYn</td>
+
<td align="left">S-Merkerbytes *</td>
+
<td align="left">Unsigned Byte (VT_UI1)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">SWn</td>
+
<td align="left">S-Merkerworte *</td>
+
<td align="left">Unsigned Word (VT_UI2)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">SSn</td>
+
<td align="left">S-Merkerworte *</td>
+
<td align="left">Signed short Integer (VT_I2)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">SDn</td>
+
<td align="left">S-Merkerdoppelworte *</td>
+
<td align="left">Unsigned DWord (VT_UI4)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">SVn</td>
+
<td align="left">S-Merkerdoppelworte *</td>
+
<td align="left">Signed long integer (VT_I4)</td>
+
</tr>
+
<tr class="even">
+
<td align="left">SFn</td>
+
<td align="left">S-Merkerdoppelworte *</td>
+
<td align="left">Float (VT_R4)</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">STn[Stringlänge]</td>
+
<td align="left">Text aus dem S-Merkerbereich ***</td>
+
<td align="left">Character Array (VT_BSTR)</td>
+
</tr>
+
</table>
+
  
<br />
+
== Syntax bei S7: ==
  
== Syntax bei S7: ==
+
{| class="wikitable"
 +
|-
 +
! 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)
 +
|}
  
<table>
 
{| border="1"
 
<tr class="odd">
 
<td align="left">'''Operand'''</td>
 
<td align="left">'''Bereich'''</td>
 
<td align="left">'''Datentyp'''</td>
 
</tr>
 
<tr class="even">
 
<td align="left">DBn.DBXn.n</td>
 
<td align="left">DB, Datenbits (2)</td>
 
<td align="left">Bool (VT_BOOL</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">DBn.DBBn</td>
 
<td align="left">DB, Datenbyte (1)</td>
 
<td align="left">Unsigned Byte (VT_UI1)</td>
 
</tr>
 
<tr class="even">
 
<td align="left">DBn.DBCn</td>
 
<td align="left">DB, Datenbyte (1)</td>
 
<td align="left">Signed Char (VT_I1)</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">DBn.DBWn</td>
 
<td align="left">DB, Datenwort (1)</td>
 
<td align="left">Unsigned Word (VT_UI2)</td>
 
</tr>
 
<tr class="even">
 
<td align="left">DBn.DBSn</td>
 
<td align="left">DB, Datenwort (1)</td>
 
<td align="left">Signed Int (VT_I2)</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">DBn.DBDn</td>
 
<td align="left">DB, Datendoppelwort (1)</td>
 
<td align="left">Unsigned DWord (VT_UI4)</td>
 
</tr>
 
<tr class="even">
 
<td align="left">DBn.DBVn</td>
 
<td align="left">DB, Datendoppelwort (1)</td>
 
<td align="left">Signed DWord (VT_I4)</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">DBn.DBRn</td>
 
<td align="left">DB, Real (1)</td>
 
<td align="left">Real (VT_R4)</td>
 
</tr>
 
<tr class="even">
 
<td align="left">DBn.DBLn</td>
 
<td align="left">DB, LongLong (64 Bit) (1)</td>
 
<td align="left">LONGLONG (VT_I8)</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">DBn.DBUn</td>
 
<td align="left">DB, ULongLong (64 Bit) (1)</td>
 
<td align="left">ULONGLONG (VT_UI8)</td>
 
</tr>
 
<tr class="even">
 
<td align="left">DBn.DBZn</td>
 
<td align="left">DB, S7 - DATE_AND_TIME (1)</td>
 
<td align="left">Date (VT_DATE)</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">DBn.DBTn[Stringlänge]</td>
 
<td align="left">Text aus Datenbaustein (3)</td>
 
<td align="left">Character Array (VT_BSTR)</td>
 
</tr>
 
</table>
 
  
  
Zeile 345: Zeile 169:
 
<br />
 
<br />
  
=== Adressierung des DB einer S7-200: ===
+
== 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).
 
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).

Aktuelle Version vom 18. September 2013, 12:49 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 Step7 bzw Simatic Step5 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 (1) Unsigned Word (VT_UI2)
DSn,nr Datenwort, DB (1) Signed short Integer (VT_I2)
DDn,nr Datendoppelwort, DB (1) Unsigned DWord (VT_UI4)
DVn,nr Datendoppelwort, DB (1) Signed long integer (VT_I4)
DFn,nr Datendoppelwort, DB (1) Float (VT_R4)
DTn[Stringlänge] Text aus Datenbaustein (3) Character Array (VT_BSTR)
DXn.n,nr Datenbits, DX Bool (VT_BOOL)
DXRn,nr Rechtes Datenbyte, DX Unsigned Byte (VT_UI1)
DXLn,nr Linkes Datenbyte, DX Unsigned Byte (VT_UI1)
DXWn,nr Datenwort, DX (1) Unsigned Word (VT_UI2)
DXSn,nr Datenwort, DX (1) Signed short Integer (VT_I2)
DXDn,nr Datendoppelwort, DX (1) Unsigned DWord (VT_UI4)
DXVn,nr Datendoppelwort, DX (1) Signed long integer (VT_I4)
DXFn,nr Datendoppelwort, DX (1) Float (VT_R4)
DXTn[Stringlänge] Text aus DX Datenbaustein (3) Character Array (VT_BSTR)
Sn.n S-Merkerbits (2) Bool (VT_BOOL)
SYn S-Merkerbytes (1) Unsigned Byte (VT_UI1)
SWn S-Merkerworte (1) Unsigned Word (VT_UI2)
SSn S-Merkerworte (1) Signed short Integer (VT_I2)
SDn S-Merkerdoppelworte (1) Unsigned DWord (VT_UI4)
SVn S-Merkerdoppelworte (1) Signed long integer (VT_I4)
SFn S-Merkerdoppelworte (1) Float (VT_R4)
STn[Stringlänge] Text aus dem S-Merkerbereich (3) 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).