Siemens-S7-Adressierung
Bei Geräten vom Typ Siemens S7 TCP wird in das Feld Adresse des Tags die absolute S7-Adresse in der SPS eingetragen. Die Geräte- und Kanaleinstellungen finden Sie auf der Seite Siemens S7 TCP.
Adresssyntax
Die Adresse gibt den Speicherbereich und das Anfangsbyte an (bei Bool zusätzlich die Bitnummer). Adressen werden in Großbuchstaben und ohne Leerzeichen geschrieben.
DB-Adressen (Datenbaustein)
DB<db>.DBX<Byte>.<Bit>
DB<db>.DBB<Byte>
DB<db>.DBW<Byte>
DB<db>.DBD<Byte>Zwischen DB-Nummer und Bereich steht ein Punkt (.); eine Schreibweise mit Komma wie DB1,DBW0 wird nicht akzeptiert.
Adressen für Eingänge (I), Ausgänge (Q) und Merker (M)
I<Byte>.<Bit> IB<Byte> IW<Byte> ID<Byte>
Q<Byte>.<Bit> QB<Byte> QW<Byte> QD<Byte>
M<Byte>.<Bit> MB<Byte> MW<Byte> MD<Byte>Die deutschen Kürzel werden ebenfalls akzeptiert: E für Eingänge (E0.0, EW2), A oder O für Ausgänge (A0.1, AB1).
Adressen für Timer (T) und Zähler (C)
T<Nummer>
C<Nummer>Für Zähler wird auch die deutsche Schreibweise Z<Nummer> akzeptiert.
Adressbestandteile
| Bestandteil | Bedeutung |
|---|---|
DB<db> | Nummer des Datenbausteins, z. B. DB10 |
I, Q, M | Bereiche Eingänge, Ausgänge und Merker |
T, C | Bereiche Timer und Zähler |
X + .<Bit> | Bitzugriff; Bitnummer 0–7 |
B | Byte (1 Byte) |
W | Wort (2 Byte) |
D | Doppelwort (4 Byte) |
<Byte> | Anfangsbyte im Bereich; höchstens 2097151 |
DB-, Timer- und Zählernummern dürfen höchstens 65535 sein.
TIP
Die Buchstaben B, W und D geben nur das Anfangsbyte an. Die Anzahl der gelesenen Bytes und die Dekodierung des Werts bestimmt der Datentyp des Tags. Um Verwechslungen zu vermeiden, wählen Sie den Buchstaben passend zur Größe des Datentyps: W für 2-Byte-Typen, D für 4-Byte-Typen.
Datentyp und Adressformat
- Bool-Tags erfordern eine Bitadresse:
DB<db>.DBX<Byte>.<Bit>oderI/Q/M+<Byte>.<Bit>(z. B.DB1.DBX0.0,M0.1). - Bitadressen werden nur bei Bool-Tags verwendet. Die anderen Typen verwenden Byte-, Wort- oder Doppelwortadressen (z. B.
DB1.DBW0,MW10). - Timer- und Zähleradressen enthalten kein Bit; bei diesen Adressen wird Bool nicht verwendet.
Zum Beispiel werden ein Bool-Tag auf MW10 oder ein Int-Tag auf M0.1 nicht gespeichert.
Nicht unterstützte Schreibweisen (werden in der Tag-Tabelle und auf dem Server abgelehnt):
- Bitadressen für Eingänge/Ausgänge/Merker mit dem Präfix
XwieIX0.0,MX10.1: Verwenden Sie die FormI0.0,M10.1. - Bitadressen ohne Bitnummer (z. B.
DB1.DBX0), DB-Adressen ohne Bereich (z. B.DB1) und Bitnummern größer als 7. - Adressen in Kleinbuchstaben (z. B.
db1.dbw0). - Peripherieadressen (
P).
Wird das Speichern eines Tags abgelehnt, nennt die Fehlermeldung den Grund.
Datentypen
| SPS-Typ | Datentyp | Gelesene Größe | Beispieladresse |
|---|---|---|---|
| BOOL | Bool | 1 Bit | DB1.DBX0.0, I0.0, Q0.1, M10.3 |
| BYTE, USINT | Byte | 1 Byte | DB1.DBB1, IB0, QB1, MB5 |
| INT | Int | 2 Byte, mit Vorzeichen | DB1.DBW2, IW64, MW20 |
| WORD, UINT | Word | 2 Byte, ohne Vorzeichen | DB1.DBW4, QW2, MW22 |
| DINT | DInt | 4 Byte, mit Vorzeichen | DB1.DBD6, MD40 |
| DWORD, UDINT | DWord | 4 Byte, ohne Vorzeichen | DB1.DBD10, ID4 |
| REAL | Real | 4 Byte, Gleitkomma | DB1.DBD14, MD44 |
| LREAL | LReal | 8 Byte, Gleitkomma | DB1.DBD18 |
| STRING[n] | String | n + 2 Byte | DB1.DBB26 (Länge = n) |
Regeln:
- String: Die Adresse zeigt auf das Anfangsbyte der STRING-Variablen. In das Feld Länge wird die in der SPS definierte maximale Zeichenzahl eingetragen (z. B. 20 für
STRING[20]). Nur S7-STRING wird unterstützt; WSTRING und CHAR-Arrays werden nicht unterstützt. - Länge: Muss bei allen Typen außer String 1 sein; das Lesen von Arrays wird nicht unterstützt. Definieren Sie für jedes Array-Element ein eigenes Tag.
- Sbyte: Wird bei Siemens-Geräten nicht unterstützt. Übertragen Sie SINT-Variablen im SPS-Programm in eine INT-Variable und lesen Sie diese als Int.
- LInt, ULInt und LWord: Werden in 2.10 nicht unterstützt; sie können bei Siemens-Geräten in der Liste nicht ausgewählt werden, und der Server lehnt das Speichern ab. Übertragen Sie LINT-, ULINT- und LWORD-Variablen im SPS-Programm in eine DINT-, DWORD- oder LREAL-Variable und lesen Sie diese.
- Automatisch: Wird bei Siemens-Geräten nicht unterstützt; wählen Sie den Datentyp ausdrücklich aus.
Tags aus älteren Versionen
In einer älteren Version gespeicherte Tags vom Typ LInt, ULInt oder LWord oder mit einer Adresse, die nicht zum Datentyp passt (siehe Datentyp und Adressformat), werden nicht gelöscht. Sie werden zur Laufzeit nicht gelesen, bleiben in der Qualität Bad, und der Grund wird in das Dienstprotokoll geschrieben; auch Schreibzugriffe auf diese Tags werden abgelehnt. Zur Korrektur ändern Sie Adresse oder Datentyp des Tags und speichern es; ein Speichern, bei dem nur die Beschreibung geändert wurde, wird abgelehnt.
Timer und Zähler
Die Adressen T<Nummer> und C<Nummer> lesen den 16-Bit-Rohwert des Timers oder Zählers mit dem Datentyp Word oder Int. Der Wert wird nicht in Sekunden oder eine Dezimalzahl umgerechnet; bei Timern kommen Zeitbasis und BCD-codierter Wert zusammen. Wird ein lesbarer Wert benötigt, übertragen Sie den Timer- oder Zählerwert im SPS-Programm in einen DB oder ein Merkerwort (z. B. MW100) und lesen diese Adresse. Greifen Sie auf Timer- und Zähleradressen nur lesend zu.
Beispiele
| Adresse | Datentyp | Länge | Bedeutung |
|---|---|---|---|
DB1.DBX0.0 | Bool | 1 | DB1, Byte 0, Bit 0 |
DB1.DBX0.7 | Bool | 1 | DB1, Byte 0, Bit 7 |
DB1.DBB1 | Byte | 1 | DB1, Byte 1 |
DB1.DBW2 | Int | 1 | DB1, Byte 2–3 |
DB1.DBD6 | DInt | 1 | DB1, Byte 6–9 |
DB1.DBD14 | Real | 1 | DB1, Byte 14–17 |
DB1.DBB26 | String | 20 | STRING[20] ab Byte 26 in DB1 |
I0.0 | Bool | 1 | Eingangsbyte 0, Bit 0 |
IW64 | Int | 1 | Eingangsbyte 64–65 |
Q0.1 | Bool | 1 | Ausgangsbyte 0, Bit 1 |
QB1 | Byte | 1 | Ausgangsbyte 1 |
M10.3 | Bool | 1 | Merkerbyte 10, Bit 3 |
MW20 | Word | 1 | Merkerbyte 20–21 |
MD44 | Real | 1 | Merkerbyte 44–47 |
T5 | Word | 1 | Rohwert von Timer 5 |
C3 | Word | 1 | Rohwert von Zähler 3 |
Das Schreiben auf Eingänge (I) wird nicht empfohlen; die SPS füllt den Eingangsbereich in jedem Zyklus neu aus den physischen Eingängen.