Daten in Slave schreiben oder Daten von Slave lesen
Verfügbare Funktionscodes (mit Programmierbeispielen)
SYS_MODBUS_03_READ_HOLDING_REGISTER
SYS_MODBUS_04_READ_INPUT_REGISTERS
SYS_MODBUS_16_PRESET_REGISTERS
Verwenden Sie diesen Befehl zum Schreiben von Daten von einem Master zu einem Slave oder zum Lesen von Daten von einem Slave über den Kommunikationsanschluss unter Verwendung des Modbus-RTU-Protokolls, wie in den Systemregistern des verwendeten Anschlusses definiert. Stellen Sie sicher, dass für Master und Slave das gleiche Protokoll eingestellt ist.
Eingang
Legt die Kommunikationsschnittstellen fest (je nach SPS-Typ):
COM-Schnittstelle z.B. SYS_COM0_PORT
Ethernet-Schnittstelle z.B. SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU z.B. 16#xx01 (xx = Steckplatznummer) in COM01
Teilnehmeradresse des Slaves (0–255).
Einstellen auf 1, wenn ein SYS_ETHERNET_USER_CONNECTION_xx auf Eingang Port angewandt wird
SYS_MODBUS_01_READ_COIL
SYS_MODBUS_02_READ_INPUT
SYS_MODBUS_03_READ_HOLDING_REGISTER
SYS_MODBUS_04_READ_INPUT_REGISTERS
SYS_MODBUS_05_FORCE_COIL
SYS_MODBUS_06_PRESET_REGISTER
SYS_MODBUS_15_FORCE_COILS
SYS_MODBUS_16_PRESET_REGISTERS
Anfangsadresse (0–65535). Der Adresstyp hängt vom Befehl ab, der durch FunctionCode* angegeben ist.
Anzahl der Übertragungs-Bits oder -Worte.
1–2040 für Funktionscodes 01, 02
2–2040 für Funktionscode 15
1–127 für Funktionscodes 03, 04
2–127 für Funktionscode 16
Quelladresse auf dem Master für die Daten, die in den Slave geschrieben werden sollen.
Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_MODBUS_MASTER
Im Gegensatz zu den anderen F145- oder F146-Funktionen, kann der erforderliche Modbus-Befehl direkt durch den Parameter FunctionCode* angegeben werden.
Die F145 oder F146-Befehle können nur ausgeführt werden, wenn keine der Befehle aktiv ist. Verwenden Sie den Merker "F145/F146 nicht aktiv" in Ihrem Programm, um den Status der Befehle zu prüfen.
Der Befehl F145 beauftragt nur, dass Daten an den Slave gesendet werden. Der tatsächliche Verarbeitung erfolgt am Ende des SPS-Zyklus.
Prüfen Sie anhand des Merkers "Kommunikationsfehler mit F145/F146“, ob die Übertragung erfolgreich war oder zu einem Fehler geführt hat.
Beim Rundruf (SlaveAddress auf 0 einstellen) stellen Sie sicher, dass die Übertragung erst nach Ablauf der maximalen SPS-Zykluszeit erfolgt.
Die Befehle F145 oder F146 können nicht ausgeführt werden, wenn die Zieladresse ein spezieller interner Merker (ab R9000), ein spezielles Datenregister (ab DT9000/DT90000) oder ein Dateiregister FL ist.
Vom Master unterstützte Befehle:
Funktionscode |
Systemkonstante |
Anfangsadresse |
Anzahl der Register |
Referenznummern (abhängig vom Modbus-Slave) |
---|---|---|---|---|
01 |
SYS_MODBUS_01_ READ_COIL |
0–65535 |
1–2040 |
000001–065536 |
02 |
SYS_MODBUS_02_ READ_INPUT |
0–65535 |
1–2040 |
100001–165536 |
03 |
SYS_MODBUS_03_ READ_HOLDING_ REGISTER |
0–65535 |
1–127 |
400001–465536 |
04 |
SYS_MODBUS_04_ READ_INPUT_ REGISTERS |
0–65535 |
1–127 |
300001–365536 |
5 |
SYS_MODBUS_05_ FORCE_COIL |
0–65535 |
1 |
000001–065536 |
6 |
SYS_MODBUS_06_ PRESET_REGISTER |
0–65535 |
1 |
400001–465536 |
15 |
SYS_MODBUS_15_ FORCE_COILS |
0–65535 |
2–2040 |
000001–065536 |
16 |
SYS_MODBUS_16_ PRESET_REGISTERS |
0–65535 |
2–127 |
400001–465536 |
Modbus-Spezifikationen für Panasonic Steuerungen:
Modbus-Bereichsadresse |
Modbus-Speichername |
Speichertyp |
Panasonic SPS-Adresse |
---|---|---|---|
000001 … |
COIL |
1-bit |
Y0 … |
002049 … |
R0 … |
||
100001 … |
INPUT |
1-bit |
X0 … |
400001 … |
HOLDING_REGISTER |
16-bit |
DT0 … |
300001 … |
INPUT_REGISTERS |
16-bit |
WL0 … |
302001 … |
LD0 … |
Weitere Informationen zu den Referenznummern und eingeschränkten Adressbereichen der Panasonic Steuerungen finden Sie im Benutzerhandbuch der SPS. Wenn die Referenznummer außerhalb des unterstützten Bereichs liegt, wird ein Fehler zurückgegeben.
FP-X0, MCU-Modul: Bitte lesen Sie das dazugehörige Handbuch, das Sie in unserem Downloadcenter im Internet finden.
Wenn Slave-Daten oder Master-Daten den verfügbaren Adressbereich überschreiten.
Wenn als Kommunikationsart nicht MEWTOCOL-COM Master/Slave oder Modbus-RTU-Master/Slave eingestellt ist.
Wenn der ausgewählte COM-Port eine Kommunikationskassette erfordert, die nicht installiert ist.
Wenn Slave-Daten oder Master-Daten den verfügbaren Adressbereich überschreiten.
Wenn als Kommunikationsart nicht MEWTOCOL-COM Master/Slave oder Modbus-RTU-Master/Slave eingestellt ist.
Wenn der ausgewählte COM-Port eine Kommunikationskassette erfordert, die nicht installiert ist.
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS handelt, die im Systemregister als Modbus-RTU-Slave konfiguriert ist, werden eines oder mehrere Bits gelesen von:
Y (Ausgang)
R (Interne Merker)
Modbus-Befehl 01 ausführen: Es wird 1 Bit von einem Modbus-Slave gelesen, beginnend bei Anfangsadresse 56, eingestellt durch die Variable StartRegister. Der Befehl speichert das 1 Bit im Master beginnend mit der durch die Variable bBool2 eingestellten Adresse. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Anfangsadresse 56 dem Ausgang Y38 (3*16+8=56).
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS handelt, die im Systemregister als Modbus-RTU-Slave konfiguriert ist, werden eines oder mehrere Bits gelesen von:
Modbus-Befehl 02 ausführen: Es wird 1 Bit von einem Modbus-Slave gelesen, beginnend bei Anfangsadresse 66, eingestellt durch die Variable StartRegister. Der Befehl speichert das 1 Bit im Master beginnend mit der durch die Variable bBool2 eingestellten Adresse. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Anfangsadresse 66 dem Eingang X42 (4*16+2=66).
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS handelt, die im Systemregister als Modbus-RTU-Slave konfiguriert ist, werden eines oder mehrere Bits gelesen von:
Modbus-Befehl 03 ausführen: Es werden 2 Worte von einem Modbus-Slave gelesen, beginnend bei Anfangsadresse 100, eingestellt durch die Variable StartRegister. Der Befehl speichert diese 2 Worte im Modbus-Master 2, beginnend bei der mit der Variable rCount2 eingestellten Adresse. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Anfangsadresse 100 dem Datenregister DDT100.
Maximale Registeranzahl: 127.
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS handelt, die im Systemregister als Modbus-RTU-Slave konfiguriert ist, werden eines oder mehrere Bits gelesen von:
WL0–WL127 (Koppelmerker)
LD0–LD256 (Koppeldatenregister)
Modbus-Befehl 04 ausführen: Es werden 7 Worte von einem Modbus-Slave gelesen, beginnend bei Anfangsadresse 2018, eingestellt durch die Variable StartRegister. Der Befehl speichert diese 7 Worte im Master, beginnend bei LD25, das durch die Variable MasterData eingestellt wurde. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Anfangsadresse 2018 dem Koppeldatenregister LD18.
Maximale Registeranzahl: 127.
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS in der Kommunikationsart Modbus RTU handelt, werden eines oder mehrere Bits geschrieben in:
Y (Ausgang)
R (Interne Merker)
Modbus-Befehl 05 ausführen: Es wird 1 Bit in einen Modbus-Slave geschrieben, beginnend bei Adresse WY1, eingestellt durch die Variable MasterData. Der Befehl speichert dieses 1 Bit in einem Modbus-Slave, beginnend bei der Anfangsadresse 35, eingestellt durch die Variable StartRegister. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Adresse 35 dem Ausgang Y23 (2*16+3=35).
Zum Schreiben mehrerer Datenbits verwenden Sie die Konstante SYS_MODBUS_15_FORCE_COILS
Maximale Registeranzahl: 1
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS in der Kommunikationsart Modbus RTU handelt, werden eines oder mehrere Bits geschrieben in:
Modbus-Befehl 06 ausführen: Es wird 1 Wort in einen Modbus-Slave geschrieben, beginnend bei Adresse DT14, eingestellt durch die Variable MasterData. Der Befehl speichert dann das 1 Wort im Modbus-Slave, beginnend bei der durch die Variable StartRegister eingestellten Anfangsadresse 21. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Anfangsadresse 21 dem Datenregister DT21.
Zum Schreiben mehrerer Datenbits verwenden Sie die Konstante SYS_MODBUS_15_FORCE_COILS
Maximale Registeranzahl: 1
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS in der Kommunikationsart Modbus RTU handelt, werden eines oder mehrere Bits geschrieben in:
Y (Ausgang)
R (Interne Merker)
Modbus-Befehl 15 ausführen: Es werden 64 Bits in einen Modbus-Slave geschrieben, beginnend bei Adresse WY1, eingestellt durch die Variable MasterData. Der Befehl speichert diese 64 Bits im Modbus-Slave, beginnend bei der Anfangsadresse 48, die durch die Variable StartRegister eingestellt wurde. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Adresse 48 dem Ausgang Y30 (3*16=48).
Wenn Sie diese Konstante dem Eingangsparameter FunctionCode* zuweisen, wird der entsprechende Modbus-Befehl ausgeführt.
Falls es sich bei dem angeschlossenen Slave um eine Panasonic SPS in der Kommunikationsart Modbus RTU handelt, werden eines oder mehrere Bits geschrieben in:
Modbus-Befehl 16 ausführen: Es werden Daten in einen Modbus-Slave geschrieben, beginnend bei der mit rCount1 eingestellten Adresse. Der Befehl speichert diese Daten in den Modbus-Slave 2, beginnend bei der durch die Variable StartRegister eingestellten Anfangsadresse 100. Die Adresse des Slaves wird in eine gerätespezifische Adresse konvertiert, die auf den Modbus-Spezifikationen des Geräts basiert.
Falls der angeschlossene Slave eine Panasonic Steuerung ist, entspricht die Anfangsadresse 100 dem Datenregister DDT100.
Maximale Registeranzahl: 127.