CL3-E CANopen/USB Technical Manual

Data Access

Reading Input Registers / Read Holding Registers (FC03 / FC04)

With this function code one or more 16-bit values can be read. This function can be used with the NanoJ objects (see "NanoJ Objects") or process data objects (minimum 4 byte alignment, see Process data objects (PDO) for details).


Request
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 03h
Starting Address 2 Bytes 0000h to FFFFh
Quantity of Registers 2 Bytes 1 to 7Dh (125d)
CRC 2 Bytes  


Response ("M" being the number of registers to read)
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 03h
Byte count 1 Byte 2 * M
Register value 2 Bytes  
CRC 2 Bytes  


Error
Name Length Value
Slave Address 1 Byte  
Error code 1 Byte 83h
Exception code 1 Byte 01, 02, 03 or 04
CRC 2 Bytes  

Example

 

Here is an example of a request to read register 5000 (1388h) and the following register (=2 registers):

Request
Response

Write Single Register (FC06)

With this function code one 16-bit value can be written. This function can be used with the PDO area (see Process data objects (PDO)).


Request
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 06h
Register Address 2 Bytes 0000h to FFFFh
Register Value 2 Bytes 0000h to FFFFh
CRC 2 Bytes  


Response
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 06h
Register Address 2 Bytes 0000h to FFFFh
Register Value 2 Bytes 0000h to FFFFh
CRC 2 Bytes  


Error
Name Length Value
Slave Address 1 Byte  
Error code 1 Byte 86h
Exception code 1 Byte 01, 02, 03 or 04
CRC 2 Bytes  

Example

 

Here is an example of a request/response to write the value "0001" to register 6000 (1770h):

Request
Response

Write Multiple Registers (FC16)

With this function code one or more 16-bit values can be written. This function can be used with the NanoJ objects (see "NanoJ Objects") or process data objects (see Process data objects (PDO) for details).


Request ("N" being the number of registers to write)
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 10h
Starting Address 2 Bytes 0000h to FFFFh
Quantity of Registers 2 Bytes 0001h to 007Bh
Byte Count 1 Byte 2 * N
Registers Value N * 2 Bytes  
CRC 2 Bytes  


Response
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 10h
Starting Address 2 Bytes 0000h to FFFFh
Quantity of Registers 2 Bytes 0001h to 007Bh
CRC 2 Bytes  


Error
Name Length Value
Slave Address 1 Byte  
Error code 1 Byte 90h
Exception code 1 Byte 01, 02, 03 or 04
CRC 2 Bytes  

Example

 

Here is an example of a request to write the values "0102h" and "0304h" starting at the register 6000 (1770h), number of registers is 2, length of the data 4:

Request
Response

Report server ID (FC17)

With this function code the description of the type, status and other information of the device can be read.


Request
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 11h
CRC 2 Bytes  


Response
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 03h
Byte count 1 Byte 01h
Run Indicator Status 1 Byte 00h = OFF, FFh = ON
Additional Data    
CRC 2 Bytes  


Error
Name Length Value
Slave Address 1 Byte  
Error code 1 Byte 91h
Exception code 1 Byte 01 or 04
CRC 2 Bytes  

Example

 

Here is an example of a request and response to report the ID and status:

Request
Response

Read/Write Multiple registers (FC23)

With this function code one or more 16-bit values can be read and written at the same time. This function can be used with the NanoJ objects (see "NanoJ Objects") or process data objects (see Process data objects (PDO) for details).


Request ("N" being the number of registers to write)
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 17h
Read Starting Address 2 Bytes 0000h to FFFFh
Quantity to Read 2 Bytes 0001h to 0079h
Write Starting Address 2 Bytes 0000h to FFFFh
Quantity to Write 2 Bytes 0001h to 0079h
Write Byte Count 1 Byte 2 * N
Write Registers Value N * 2 Bytes  
CRC 2 Bytes  


Response ("M" being the number of registers to write)
Name Length Value
Slave Address 1 Byte  
Function code 1 Byte 17h
Byte count 1 Byte 2 * M
Read Registers value M * 2 Bytes  
CRC 2 Bytes  


Error
Name Length Value
Slave Address 1 Byte  
Error code 1 Byte 97h
Exception code 1 Byte 01, 02, 03 or 04
CRC 2 Bytes  

Example

 

Here is an example of a request to read six registers starting at register 4, and to write three registers starting at register 15:

Here is an example of a request to read two registers starting at 5000 (1388h) and a write to two registers at 6000 (1770h) with 4 bytes and the data "0102h" and "0304h":

Request
Response
▶   next

Contents