Lese vollständiges Array oder Record (FC102) Dieser Funktionscode wird zum Auslesen eines gesamten Arrays oder Records vom Objektverzeichnis verwendet. Um das Auslesen des Arrays zu starten oder neu zu starten muss der Unterfunktionscode 55h versendet werden. Dieser Code setzt das Auslesen auf das Objekt mit Subindex 00h zurück. Alle nachfolgenden Requests müssen dann den Unterfunktionscode AAh enthalten. Zum Ende, wenn alle Objekte ausgelesen wurden, wird eine "Error Response" generiert. Das Format jedes "Objekt lesen" ist folgendermaßen: Request: Name Länge Wert / Bemerkung Slave Address 1 Byte Funktionscode 1 Byte 66h Unterfunktionscode 1 Byte 55h oder AAh Länge der Daten 1 Byte 00h Index des zu lesenden Arrays 2 Bytes CRC 2 Bytes Response: Name Länge Wert / Bemerkung Slave Address 1 Byte 65h Funktionscode 1 Byte Unterfunktionscode 1 Byte Länge der Daten 1 Byte n mal Objektverzeichnis-Frame 1 - 252 Bytes CRC 2 Bytes Ein Objektverzeichnis-Frame besteht aus den folgenden Bytes: Name Wert / Bemerkung Index Low Byte 1 Byte Index High Byte 1 Byte Subindex 1 Byte Anzahl der Bytes 1 Byte Anzahl m der validen Daten im Datenfeld Daten Byte m-1 Byte Beispiel Alle folgenden Zahlenwerte sind in Hexadezimal notiert, der Index des zu lesenden Objektes ist 2400h. Die Adresse des Slaves ist "5"h. Start des Auslesens des Arrays mit dem Request: Die Response ist: Fehlerreaktion Im Falle eines Fehlers wird die folgende Fehlernachricht gesendet: Name Länge Beispielwert Slave Adresse 1 Byte Funktionscode 1 Byte 2Bh +80h (171d = 43d + 128d) (zeigt Fehler an) Modbus exception code 1 Byte FFh ("extended exception") Extended exception Länge 2 Bytes 6 MEI type 1 Byte 0Dh Exception code 1 Byte CEh Fehlercode 4 Bytes CANopen Fehlercode CRC 2 Bytes Im Falle, dass das nicht unterstütztes Kontrolloptionsbit gesetzt ist, wird folgende Fehlernachricht gesendet: Name Länge Beispielwert Slave Adresse 1 Byte Funktionscode 1 Byte 2Bh +80h (171d = 43d + 128d) (zeigt Fehler an) Modbus exception code 1 Byte FFh ("extended exception") Extended exception length 2 Bytes 2 + Länge von "Supported protocol control" MEI type 1 Byte 0Dh Exception code 1 Byte AEh Supported protocol control 1 oder 2 Bytes Siehe nachfolgende Tabelle CRC 2 Bytes Bit Name Beschreibung 0 Merker "Verlängerung" Dieses Bit wird genutzt, wenn das Objektverzeichnis Datenset größer ist, als in ein Modbus Kommando passen würde. Das Datenset wird dann über mehrere Modbus Nachrichten gestreckt, jede Nachricht enthält einen Teil des Datensets. "0" = Keine mehrfache Nachrichtentransaktion ("multiple message transaction") oder das Ende der mehrfachen Nachrichtentransaktion. "1" = Teil einer mehrfachen Nachrichtentransaktion 1 Erweiterte Protokoll Kontrolle Länge der Protokoll Kontrolle, der Wert "0" zeigt eine Länge von 1 Byte an, der Wert "1" eine Länge von 2 Byte 2 Zähler Byte Option Dieses Bit ist auf "1" um anzuzeigen, dass das Feld "counter byte" in dieser Nachricht genutzt wird. Ist dieses Bit auf "0" gesetzt, existiert das Feld "counter byte" nicht in dieser Nachricht. 3 und 4 Reserviert 0 5 Network ID Option Nicht unterstützt, muss "0" sein. 6 Encodierte Datenoption Nicht unterstützt, muss "0" sein. 7 Zugriffsmerker Dieses Bit zeigt die Zugriffsmethode des angeforderten Kommandos an. "0" = lesen, "1" = schreiben 8 to 15 Reserviert 0 Das nachfolgende Beispiel zeit einen Fehler im Falle einer fehlerhaften Anfrage. Der Request liest das 6061h:00 mit der Länge von 2 Byte, das Objekt ist aber nur 1 Byte groß: Request Response
Lese vollständiges Array oder Record (FC102) Dieser Funktionscode wird zum Auslesen eines gesamten Arrays oder Records vom Objektverzeichnis verwendet. Um das Auslesen des Arrays zu starten oder neu zu starten muss der Unterfunktionscode 55h versendet werden. Dieser Code setzt das Auslesen auf das Objekt mit Subindex 00h zurück. Alle nachfolgenden Requests müssen dann den Unterfunktionscode AAh enthalten. Zum Ende, wenn alle Objekte ausgelesen wurden, wird eine "Error Response" generiert. Das Format jedes "Objekt lesen" ist folgendermaßen: Request: Name Länge Wert / Bemerkung Slave Address 1 Byte Funktionscode 1 Byte 66h Unterfunktionscode 1 Byte 55h oder AAh Länge der Daten 1 Byte 00h Index des zu lesenden Arrays 2 Bytes CRC 2 Bytes Response: Name Länge Wert / Bemerkung Slave Address 1 Byte 65h Funktionscode 1 Byte Unterfunktionscode 1 Byte Länge der Daten 1 Byte n mal Objektverzeichnis-Frame 1 - 252 Bytes CRC 2 Bytes Ein Objektverzeichnis-Frame besteht aus den folgenden Bytes: Name Wert / Bemerkung Index Low Byte 1 Byte Index High Byte 1 Byte Subindex 1 Byte Anzahl der Bytes 1 Byte Anzahl m der validen Daten im Datenfeld Daten Byte m-1 Byte Beispiel Alle folgenden Zahlenwerte sind in Hexadezimal notiert, der Index des zu lesenden Objektes ist 2400h. Die Adresse des Slaves ist "5"h. Start des Auslesens des Arrays mit dem Request: Die Response ist: Fehlerreaktion Im Falle eines Fehlers wird die folgende Fehlernachricht gesendet: Name Länge Beispielwert Slave Adresse 1 Byte Funktionscode 1 Byte 2Bh +80h (171d = 43d + 128d) (zeigt Fehler an) Modbus exception code 1 Byte FFh ("extended exception") Extended exception Länge 2 Bytes 6 MEI type 1 Byte 0Dh Exception code 1 Byte CEh Fehlercode 4 Bytes CANopen Fehlercode CRC 2 Bytes Im Falle, dass das nicht unterstütztes Kontrolloptionsbit gesetzt ist, wird folgende Fehlernachricht gesendet: Name Länge Beispielwert Slave Adresse 1 Byte Funktionscode 1 Byte 2Bh +80h (171d = 43d + 128d) (zeigt Fehler an) Modbus exception code 1 Byte FFh ("extended exception") Extended exception length 2 Bytes 2 + Länge von "Supported protocol control" MEI type 1 Byte 0Dh Exception code 1 Byte AEh Supported protocol control 1 oder 2 Bytes Siehe nachfolgende Tabelle CRC 2 Bytes Bit Name Beschreibung 0 Merker "Verlängerung" Dieses Bit wird genutzt, wenn das Objektverzeichnis Datenset größer ist, als in ein Modbus Kommando passen würde. Das Datenset wird dann über mehrere Modbus Nachrichten gestreckt, jede Nachricht enthält einen Teil des Datensets. "0" = Keine mehrfache Nachrichtentransaktion ("multiple message transaction") oder das Ende der mehrfachen Nachrichtentransaktion. "1" = Teil einer mehrfachen Nachrichtentransaktion 1 Erweiterte Protokoll Kontrolle Länge der Protokoll Kontrolle, der Wert "0" zeigt eine Länge von 1 Byte an, der Wert "1" eine Länge von 2 Byte 2 Zähler Byte Option Dieses Bit ist auf "1" um anzuzeigen, dass das Feld "counter byte" in dieser Nachricht genutzt wird. Ist dieses Bit auf "0" gesetzt, existiert das Feld "counter byte" nicht in dieser Nachricht. 3 und 4 Reserviert 0 5 Network ID Option Nicht unterstützt, muss "0" sein. 6 Encodierte Datenoption Nicht unterstützt, muss "0" sein. 7 Zugriffsmerker Dieses Bit zeigt die Zugriffsmethode des angeforderten Kommandos an. "0" = lesen, "1" = schreiben 8 to 15 Reserviert 0 Das nachfolgende Beispiel zeit einen Fehler im Falle einer fehlerhaften Anfrage. Der Request liest das 6061h:00 mit der Länge von 2 Byte, das Objekt ist aber nur 1 Byte groß: Request Response
Fehlerreaktion Im Falle eines Fehlers wird die folgende Fehlernachricht gesendet: Name Länge Beispielwert Slave Adresse 1 Byte Funktionscode 1 Byte 2Bh +80h (171d = 43d + 128d) (zeigt Fehler an) Modbus exception code 1 Byte FFh ("extended exception") Extended exception Länge 2 Bytes 6 MEI type 1 Byte 0Dh Exception code 1 Byte CEh Fehlercode 4 Bytes CANopen Fehlercode CRC 2 Bytes Im Falle, dass das nicht unterstütztes Kontrolloptionsbit gesetzt ist, wird folgende Fehlernachricht gesendet: Name Länge Beispielwert Slave Adresse 1 Byte Funktionscode 1 Byte 2Bh +80h (171d = 43d + 128d) (zeigt Fehler an) Modbus exception code 1 Byte FFh ("extended exception") Extended exception length 2 Bytes 2 + Länge von "Supported protocol control" MEI type 1 Byte 0Dh Exception code 1 Byte AEh Supported protocol control 1 oder 2 Bytes Siehe nachfolgende Tabelle CRC 2 Bytes Bit Name Beschreibung 0 Merker "Verlängerung" Dieses Bit wird genutzt, wenn das Objektverzeichnis Datenset größer ist, als in ein Modbus Kommando passen würde. Das Datenset wird dann über mehrere Modbus Nachrichten gestreckt, jede Nachricht enthält einen Teil des Datensets. "0" = Keine mehrfache Nachrichtentransaktion ("multiple message transaction") oder das Ende der mehrfachen Nachrichtentransaktion. "1" = Teil einer mehrfachen Nachrichtentransaktion 1 Erweiterte Protokoll Kontrolle Länge der Protokoll Kontrolle, der Wert "0" zeigt eine Länge von 1 Byte an, der Wert "1" eine Länge von 2 Byte 2 Zähler Byte Option Dieses Bit ist auf "1" um anzuzeigen, dass das Feld "counter byte" in dieser Nachricht genutzt wird. Ist dieses Bit auf "0" gesetzt, existiert das Feld "counter byte" nicht in dieser Nachricht. 3 und 4 Reserviert 0 5 Network ID Option Nicht unterstützt, muss "0" sein. 6 Encodierte Datenoption Nicht unterstützt, muss "0" sein. 7 Zugriffsmerker Dieses Bit zeigt die Zugriffsmethode des angeforderten Kommandos an. "0" = lesen, "1" = schreiben 8 to 15 Reserviert 0 Das nachfolgende Beispiel zeit einen Fehler im Falle einer fehlerhaften Anfrage. Der Request liest das 6061h:00 mit der Länge von 2 Byte, das Objekt ist aber nur 1 Byte groß: Request Response