ADDMADDM: Konvertieren einer Zeichenkette in eine Adresse
Der Funktionsbaustein ADDM konvertiert eine als Zeichenkette dargestellte Zieladresse in eine ADDRESS-Struktur. Sie können die ADDRESS-Struktur als Eingang für einen Kommunikationsfunktionsbaustein verwenden.
Beschreibung der ADDM-spezifischen Parameter
Ein-/Ausgang |
Typ |
Kommentar |
---|---|---|
AddrTable |
ADDRESS |
Dies ist die vom Funktionsbaustein zu füllende ADDRESS-Struktur. |
Eingang |
Typ |
Kommentar |
---|---|---|
Execute |
BOOL |
Führt die Funktion an der steigenden Flanke aus. |
Addr |
STRING |
Adresse des Typs STRING, die in den Typ ADDRESS konvertiert werden soll (Details siehe unten). |
Ausgang |
Typ |
Kommentar |
---|---|---|
Done |
BOOL |
Done wird auf TRUE gesetzt, wenn die Funktion erfolgreich abgeschlossen wurde. HINWEIS: Bei Abbruch des Vorgangs durch den Eingang Abort wird Done nicht auf 1 gesetzt (nur Aborted). |
Error |
BOOL |
Error wird auf TRUE gesetzt, wenn die Funktionsausführung aufgrund einer Fehlererkennung angehalten wird. Wenn ein Fehler erkannt wird, enthalten CommError und OperError Informationen über den erkannten Fehler. |
CommError |
BYTE |
CommError enthält Kommunikationsfehlercodes. |
HINWEIS: Bei einer steigenden Flanke am Eingang Execute wird die Konvertierung ausgeführt und die sofortige Aktualisierung von AddrTable zurückgegeben. AddrTable behält jedoch den letzten Wert bei, wenn ein Fehler erkannt wird (d. h. wenn die Zeichenkette Addr nicht richtig ist).
Zur Initialisierung von Funktionsbausteinen ist eine steigende Flanke erforderlich. Der Funktionsbaustein muss zunächst den Eingang Execute als FALSE ansehen, um eine nachfolgende steigende Flanke zu erkennen.
|
UNBEABSICHTIGTER BETRIEBSZUSTAND DES GERÄTS |
Führen Sie den ersten Aufruf eines Funktionsbausteins immer durch, während sein Eingang Execute auf FALSE gesetzt ist, sodass er eine nachfolgende steigende Flanke erkennen kann. |
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben. |
Addr-STRING für das ASCII-Adressformat
Bei einer ASCII-Adressierung wird nur die Nummer des Kommunikationsports angefordert:
'<communication port number>'
Wenn Sie z. B. eine benutzerdefinierte Nachricht über die serielle Verbindung 2 senden möchten, verwenden Sie den String '2'.
In dieser Tabelle werden die Felder des ADDM-Ausgangs für das ASCII-Adressformat definiert:
Feld |
Typ |
Wert |
Beispiel |
---|---|---|---|
_Type |
BYTE |
Reserviert |
Nicht verwendet |
_CliID |
BYTE |
Reserviert |
Nicht verwendet |
Rack |
BYTE |
Racknummer (immer 0) |
0 |
Module |
BYTE |
Modulnummer (immer 0) |
0 |
Link |
<communication port number> |
2 |
|
_ProtId |
BYTE |
Nicht verwendet |
Nicht verwendet |
AddrLen |
BYTE |
0 |
0 |
UnitId |
BYTE |
Nicht verwendet |
Nicht verwendet |
AddrExt |
ADDR_EXT |
Nicht verwendet |
Nicht verwendet |
Addr STRING für das Modbus-TCP-Adressformat
Adresse eines Modbus-TCP-Standard-Slaves
Für das Adressformat von Modbus TCP-Standard-Slaves werden die Nummer des Kommunikationsports (3 für den integrierten Ethernet-Port) und die Ziel-IP-Adresse angefordert:
'<communication port number>{<IP address>}'
HINWEIS: Ein Modbus-TCP-Standard-Slave verwendet die Modbus-Adresse 255 (den Standardwert von UnitId). Ein Modbus-TCP-Gerät kann jedoch einen anderen Wert haben (ein TeSys hat z. B. die Modbus-Adresse 1). Fügen Sie in diesem Fall den UnitId-Wert hinzu:
'<communication port number>{<IP address>}<UnitId>'
TCP-Port 502 wird standardmäßig verwendet. Es besteht die Möglichkeit, einen Nicht-Standardport zu verwenden. In diesem Fall muss die angeforderte Portnummer der IP-Adresse hinzugefügt werden:
'<communication port number>{<IP address>:<port>}'
Wenn Sie z. B. eine Nachricht an den Modbus-TCP-Slave mit der IP-Adresse 192.168.1.2 über den TCP-Standardport 502 senden möchten, verwenden Sie diese Zeichenkette: '3{192.168.1.2}'
Die Funktion ADDM füllt den Eingang/Ausgang AddrTable mit folgenden Werten:
Feld |
Typ |
Wert |
Beispiel |
---|---|---|---|
_Type |
BYTE |
Reserviert |
Nicht verwendet |
_CliID |
BYTE |
Reserviert |
Nicht verwendet |
Rack |
BYTE |
Racknummer |
0 |
Module |
BYTE |
Modulnummer |
0 |
Link |
<communication port number> |
3 |
|
_ProtId |
BYTE |
0 für Modbus |
0 |
AddrLen |
BYTE |
UnitID + AdrExt-Länge in Byte |
7 |
UnitId |
BYTE |
Modbus-Adresse (standardmäßig 255) |
255 |
AddrExt |
TCP_ADDR_EXT |
A |
192 |
B |
168 |
||
C |
1 |
||
D |
2 |
||
<Port> (Standard = 502) |
502 |
Adresse eines seriellen Modbus-Slaves über ein Ethernet-/SL-Gateway
Ein Modbus-Slave kann auch über ein Ethernet-/serielles Verbindungs-Gateway adressiert werden:
Der Request umfasst die Nummer des Kommunikationsports, die IP-Adresse des Gateways (mit oder ohne TCP-Port) sowie die Adresse des seriellen Modbus-Slaves (UnitId-Parameter):
'<communication port number>{<IP address>}<slave address>'
Wenn Sie z. B. eine Nachricht an einen seriellen Modbus-Slave mit der Adresse 5 über ein Ethernet-/SL-Gateway an IP-Adresse 192.168.1.2 über den TCP-Standardport 502 senden möchten, verwenden Sie folgende Zeichenkette: '3{192.168.1.2}5'
Die Funktion ADDM füllt den Eingang/Ausgang AddrTable mit folgenden Werten:
Feld |
Größe |
Wert |
Beispiel |
---|---|---|---|
_Type |
BYTE |
Reserviert |
Nicht verwendet |
_CliID |
BYTE |
Reserviert |
Nicht verwendet |
Rack |
BYTE |
Racknummer |
0 |
Module |
BYTE |
Modulnummer |
0 |
Link |
<communication port number> |
3 |
|
_ProtId |
BYTE |
0 für Modbus |
0 |
AddrLen |
BYTE |
UnitID + AdrExt-Länge in Byte |
7 |
UnitId |
BYTE |
<Slave-Adresse> |
5 |
AddrExt |
TCP_ADDR_EXT |
A |
192 |
B |
168 |
||
C |
1 |
||
D |
2 |
||
TCP-Portnummer (Standard = 502) |
502 |
Dieses Beispiel zeigt die Implementierung des Funktionsbausteins ADDM in Verbindung mit dem Funktionsbaustein SINGLE_WRITE. Der Funktionsbaustein ADDM konvertiert den angegebenen STRING '1.8' in die Variable stSlave8OnSL1 des Typs ADDRESS. Bei einer erfolgreichen Konvertierung wrid der Eingang Execute des nachfolgenden Funktionsbausteins SINGLE_WRITE ausgelöst.