Datenzugriff Reading Input Registers / Read Holding Registers (FC03 / FC04) Mit diesem Funktionscode kann ein 16-Bit Wert oder mehrere 16-Bit Werte ausgelesen werden. Die Funktion kann auf die NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (min. 4Byte Ausrichtung, siehe Prozessdatenobjekte (PDO)) angewendet werden. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h / 04h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 1 bis (7Dh) CRC 2 Bytes Response ("M" entspricht der Anzahl der zu lesenden Register) Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h / 04h Anzahl Bytes 1 Byte 2 * M Registerwert 2 Bytes CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 83h / 84h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Lese-Request und Response des Registers 5000 (1388h) und das folgende Registers (=2 Register): Request Response Write Single Register (FC06) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert geschrieben werden. Die Funktion kann auf Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 06h Registeradresse 2 Bytes 0000h bis FFFFh Registerwert 2 Bytes 0000h bis FFFFh CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 06h Registeradresse 2 Bytes 0000h bis FFFFh Registerwert 2 Bytes 0000h bis FFFFh CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 86h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ist ein Beispiel eines Write-Request und Response in das Register 6000 (1770h) mit dem Wert "0001h": Request Response Write Multiple Registers (FC16) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert oder mehrere 16-Bit Werte geschrieben werden. Die Funktion kann auf NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request ("N" ist die Anzahl der zu schreibenden Register) Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 10h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 0001h bis 007Bh Anzahl Bytes 1 Byte 2 * N Registerwert N * 2 Bytes CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 10h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 0001h bis 007Bh CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 90h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Mehrfach-Schreibens der Werte "0102h" und "0304h" startend ab Registeradresse 6000 (1770h), Anzahl der Register ist 2, Länge der Daten 4: Request Response Report server ID (FC17) Mit diesem Funktionscode kann man die Beschreibung des Type, der gegenwärtigen Status und andere Informationen des Geräts auslesen. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 11h CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h Anzahl Bytes 1 Byte 01h Run Indicator Status 1 Byte 00h = OFF, FFh = ON Zusatzdaten CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 91h Ausnahmecode 1 Byte 01 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Request/Response für ID und Status: Request Response Read/Write Multiple registers (FC23) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert oder mehrere 16-Bit Werte gleichzeitig gelesen und geschrieben werden. Die Funktion kann auf NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request ("N" ist die Anzahl der zu lesenden Register): Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 17h Lesen: Startadresse 2 Bytes 0000h bis FFFFh Lesen: Anzahl Register 2 Bytes 0001h bis 0079h Schreiben: Startadresse 2 Bytes 0000h bis FFFFh Schreiben: Anzahl Register 2 Bytes 0001h bis 0079h Schreiben: Anzahl Bytes 1 Byte 2 * N Schreiben: Registerwert N * 2 Bytes CRC 2 Bytes Response ("M" entspricht der Anzahl der zu schreibenden Bytes): Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 17h Anzahl Bytes 1 Byte 2 * M Gelesene Register M * 2 Bytes CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 97h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Lesens von zwei Registern ab Register 5000 (1388h) und einem Schreiben von zwei Registern ab Register 6000 (1770h) mit 4 Bytes und den Daten "0102h" und "0304h": Request Response
Datenzugriff Reading Input Registers / Read Holding Registers (FC03 / FC04) Mit diesem Funktionscode kann ein 16-Bit Wert oder mehrere 16-Bit Werte ausgelesen werden. Die Funktion kann auf die NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (min. 4Byte Ausrichtung, siehe Prozessdatenobjekte (PDO)) angewendet werden. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h / 04h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 1 bis (7Dh) CRC 2 Bytes Response ("M" entspricht der Anzahl der zu lesenden Register) Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h / 04h Anzahl Bytes 1 Byte 2 * M Registerwert 2 Bytes CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 83h / 84h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Lese-Request und Response des Registers 5000 (1388h) und das folgende Registers (=2 Register): Request Response Write Single Register (FC06) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert geschrieben werden. Die Funktion kann auf Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 06h Registeradresse 2 Bytes 0000h bis FFFFh Registerwert 2 Bytes 0000h bis FFFFh CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 06h Registeradresse 2 Bytes 0000h bis FFFFh Registerwert 2 Bytes 0000h bis FFFFh CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 86h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ist ein Beispiel eines Write-Request und Response in das Register 6000 (1770h) mit dem Wert "0001h": Request Response Write Multiple Registers (FC16) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert oder mehrere 16-Bit Werte geschrieben werden. Die Funktion kann auf NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request ("N" ist die Anzahl der zu schreibenden Register) Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 10h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 0001h bis 007Bh Anzahl Bytes 1 Byte 2 * N Registerwert N * 2 Bytes CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 10h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 0001h bis 007Bh CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 90h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Mehrfach-Schreibens der Werte "0102h" und "0304h" startend ab Registeradresse 6000 (1770h), Anzahl der Register ist 2, Länge der Daten 4: Request Response Report server ID (FC17) Mit diesem Funktionscode kann man die Beschreibung des Type, der gegenwärtigen Status und andere Informationen des Geräts auslesen. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 11h CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h Anzahl Bytes 1 Byte 01h Run Indicator Status 1 Byte 00h = OFF, FFh = ON Zusatzdaten CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 91h Ausnahmecode 1 Byte 01 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Request/Response für ID und Status: Request Response Read/Write Multiple registers (FC23) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert oder mehrere 16-Bit Werte gleichzeitig gelesen und geschrieben werden. Die Funktion kann auf NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request ("N" ist die Anzahl der zu lesenden Register): Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 17h Lesen: Startadresse 2 Bytes 0000h bis FFFFh Lesen: Anzahl Register 2 Bytes 0001h bis 0079h Schreiben: Startadresse 2 Bytes 0000h bis FFFFh Schreiben: Anzahl Register 2 Bytes 0001h bis 0079h Schreiben: Anzahl Bytes 1 Byte 2 * N Schreiben: Registerwert N * 2 Bytes CRC 2 Bytes Response ("M" entspricht der Anzahl der zu schreibenden Bytes): Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 17h Anzahl Bytes 1 Byte 2 * M Gelesene Register M * 2 Bytes CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 97h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Lesens von zwei Registern ab Register 5000 (1388h) und einem Schreiben von zwei Registern ab Register 6000 (1770h) mit 4 Bytes und den Daten "0102h" und "0304h": Request Response
Reading Input Registers / Read Holding Registers (FC03 / FC04) Mit diesem Funktionscode kann ein 16-Bit Wert oder mehrere 16-Bit Werte ausgelesen werden. Die Funktion kann auf die NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (min. 4Byte Ausrichtung, siehe Prozessdatenobjekte (PDO)) angewendet werden. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h / 04h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 1 bis (7Dh) CRC 2 Bytes Response ("M" entspricht der Anzahl der zu lesenden Register) Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h / 04h Anzahl Bytes 1 Byte 2 * M Registerwert 2 Bytes CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 83h / 84h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Lese-Request und Response des Registers 5000 (1388h) und das folgende Registers (=2 Register): Request Response
Write Single Register (FC06) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert geschrieben werden. Die Funktion kann auf Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 06h Registeradresse 2 Bytes 0000h bis FFFFh Registerwert 2 Bytes 0000h bis FFFFh CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 06h Registeradresse 2 Bytes 0000h bis FFFFh Registerwert 2 Bytes 0000h bis FFFFh CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 86h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ist ein Beispiel eines Write-Request und Response in das Register 6000 (1770h) mit dem Wert "0001h": Request Response
Write Multiple Registers (FC16) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert oder mehrere 16-Bit Werte geschrieben werden. Die Funktion kann auf NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request ("N" ist die Anzahl der zu schreibenden Register) Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 10h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 0001h bis 007Bh Anzahl Bytes 1 Byte 2 * N Registerwert N * 2 Bytes CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 10h Startadresse 2 Bytes 0000h bis FFFFh Anzahl der Register 2 Bytes 0001h bis 007Bh CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 90h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Mehrfach-Schreibens der Werte "0102h" und "0304h" startend ab Registeradresse 6000 (1770h), Anzahl der Register ist 2, Länge der Daten 4: Request Response
Report server ID (FC17) Mit diesem Funktionscode kann man die Beschreibung des Type, der gegenwärtigen Status und andere Informationen des Geräts auslesen. Request Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 11h CRC 2 Bytes Response Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 03h Anzahl Bytes 1 Byte 01h Run Indicator Status 1 Byte 00h = OFF, FFh = ON Zusatzdaten CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 91h Ausnahmecode 1 Byte 01 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Request/Response für ID und Status: Request Response
Read/Write Multiple registers (FC23) Mit diesem Funktionscode kann ein einzelner 16-Bit Wert oder mehrere 16-Bit Werte gleichzeitig gelesen und geschrieben werden. Die Funktion kann auf NanoJ-Objekte (siehe "NanoJ Objekte") oder Prozessdatenobjekte (siehe Prozessdatenobjekte (PDO)) angewendet werden. Request ("N" ist die Anzahl der zu lesenden Register): Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 17h Lesen: Startadresse 2 Bytes 0000h bis FFFFh Lesen: Anzahl Register 2 Bytes 0001h bis 0079h Schreiben: Startadresse 2 Bytes 0000h bis FFFFh Schreiben: Anzahl Register 2 Bytes 0001h bis 0079h Schreiben: Anzahl Bytes 1 Byte 2 * N Schreiben: Registerwert N * 2 Bytes CRC 2 Bytes Response ("M" entspricht der Anzahl der zu schreibenden Bytes): Name Länge Wert Slave Adresse 1 Byte Funktionscode 1 Byte 17h Anzahl Bytes 1 Byte 2 * M Gelesene Register M * 2 Bytes CRC 2 Bytes Fehler Name Länge Wert Slave Adresse 1 Byte Fehlercode 1 Byte 97h Ausnahmecode 1 Byte 01, 02, 03 oder 04 CRC 2 Bytes Beispiel Hier ein Beispiel eines Lesens von zwei Registern ab Register 5000 (1388h) und einem Schreiben von zwei Registern ab Register 6000 (1770h) mit 4 Bytes und den Daten "0102h" und "0304h": Request Response