FP_MODBUS_MASTER

Daten in Slave schreiben oder Daten von Slave lesen

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.

Parameter

Eingang

Port (WORD, INT, UINT)

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

SlaveAddress (WORD, INT, UINT)

Teilnehmeradresse des Slaves

  • Nur für FP7:

    • Funktionscodes 05, 06, 15, 16: 0–247

      Wenn SCU verwendet wird und für die Nummer des Slave-Moduls „0“ angegeben ist, wird eine globale Übertragung durchgeführt. In diesem Fall gibt es keine Antwort vom Slave-Modul.

    • Funktionscodes 01, 02, 03, 04: 1- 247

  • Für andere SPS:

    • Funktionscodes 05, 06, 15, 16: 0–99

      Wenn für die Nummer des Slave-Moduls „0“ angegeben ist, wird eine globale Übertragung durchgeführt. In diesem Fall gibt es keine Antwort vom Slave-Modul.

    • Funktionscodes 01, 02, 03, 04: 1- 99

Einstellen auf 1, wenn ein SYS_ETHERNET_USER_CONNECTION_xx auf Eingang Port angewandt wird

FunctionCode* (WORD, INT, UINT)

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

StartRegister (WORD, INT, UINT)

Anfangsadresse (0–65535). Der Adresstyp hängt vom Befehl ab, der durch FunctionCode* angegeben ist.

NumberOfRegisters* (WORD, INT, UINT)

Anzahl der Übertragungs-Bits oder -Worte.

  • 1 für Funktionscodes 05, 06

  • 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

MasterData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Quelladresse auf dem Master für die Daten, die in den Slave geschrieben werden sollen.

Ausgang

Result (WORD, INT, UINT)

Nur für FP7: Eine Beschreibung aller Fehlercodes finden Sie in der Tabelle der Modbus/MEWTOCOL-Kommunikationsfehler-Codes.

Für andere SPS: auf 0 gesetzt

Zeitdiagramm

  1.  (1) Merker Master-Kommunikations-Sendebereitschaft, z.B. sys_bIsEthernetUserConnection1MasterCommunication
  2.  (2) Prüfen Sie, ob der Merker Master-Kommunikations-Sendebereitschaft TRUE ist, und prüfen Sie, ob der Sendemerker Master-Kommunikation FALSE ist
  3.  (3) Sendemerker Master-Kommunikation, z.B. sys_bIsEthernetUserConnection1MasterCommunicationActive

    Beim Senden: Sendemerker Master-Kommunikation ist TRUE

    Senden abgeschlossen: Sendemerker Master-Kommunikation ist FALSE

  4.  (4) Diesen Befehl ausführen
  5.  (5) Merker Master-Kommunikation senden abgeschlossen, z.B. sys_bIsEthernetUserConnection1CommunicationError

    Normaler Abschluss: FALSE

    Abschluss mit Fehler: TRUE

  6.  (6) Daten senden
  7.  (7) Verarbeitung der empfangenen Antwort

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

  • 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.
sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

  • 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.

Beispiel

SYS_MODBUS_01_READ_COIL

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)

Beispiel

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

SYS_MODBUS_02_READ_INPUT

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:

  • X (Eingang)

Beispiel

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

SYS_MODBUS_03_READ_HOLDING_REGISTER

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:

  • DT (Datenregister)

Beispiel

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 DT100.

Maximale Registeranzahl: 127.

SYS_MODBUS_04_READ_INPUT_REGISTERS

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)

Beispiel

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.

SYS_MODBUS_05_FORCE_COIL

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)

Beispiel

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

SYS_MODBUS_06_PRESET_REGISTER

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:

  • DT (Datenregister)

Beispiel

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

SYS_MODBUS_15_FORCE_COILS

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)

Beispiel

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

SYS_MODBUS_16_PRESET_REGISTERS

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:

  • DT (Datenregister)

Beispiel

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 DT100.

Maximale Registeranzahl: 127.

Letzte Änderung: 2024-12-19Feedback zu dieser SeitePanasonic Hotline