CL3-E CANopen/USB Technisches Handbuch

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
▶   weiter

Inhalt