CAN bus can be used to transmit high speed data over various nodes connected on the same bus.



The two main data types of CAN open that can be used to exchange data are:


  • SDOs (Service data objects)
  • PDOs (Process data objects)



SDOs


SDOs are data that can be sent irregularly in a request/response format. For example a SDO can be sent to give a motor command to one of the two channels and the controller will respond with an aknowledgment message. The data frames will have the following simplified format:



The message indentifier will declare what the transmitted message is. It can be a SDO or a SDO response. The command and channel field will declare the parameter and the channel that will be accessed. This can be the request to writte a parameter, for example to give a motor command for channel 1 or to read a parameter, for example to read the motor current of channel 2. The data field will have the data to write (if it is a write request) or the data that the cotnroller sends back (if it is a read request).


Example:


Write request SDO

SDO response


The data field of the SDO response will be empty since it is a positive acknlowledgment and there are not any data expected from the controller.


 Following is an example for a read request:


Read request SDO


Here the data field is empty since it is a read request


SDO response


In the SDO response, the data field will have the data requested ny the master.


PDOs


SDOs are not ideal for parameters that will be accessed regularly because of the increased network traffic. In such cases PDOs can be used instead. PDOs can be transmitted in a cycled way without the need to send first a request. So for example, the controller can regularly report its motor current over a time interval and the master can regularly send the motor command. PDOs also have the advantage that it is not necessary to declare what the exchanged data are. The controller and master will already know which data correspond to specific parameters because a default mapping will exist.


The PDOs are separated to the following categories:


  • TPDOs (Transmit Process Data Objects)


These are the data that the controller is regularly sending through the bus. For example, the controller can be regulalry sending with different TPDOs the motor current, motor speed, power consumption etc.


  • RPDOs (Receive Process Data Objects) 


These are the data that the controller is regularly reading through the bus and is assigning them to its internal parameters. The controller can get from a RPDO its motor command, the acceleration/deceleration settings etc.


Example:


Below its the simplified format of a PDO:


PDO



The message identifier will declare if it is a TPDO or RPDO. The Roboteq controller or the master will know by their default mapping to what parameters they should assign the received data



RPDO


The Roboteq controller will receive the incoming data and assign them to its internal parameters


TPDO

The master will get the transmitted data by the controller and assign them to its internal parameters.


PDO Mapping


By default the controller will store the data receiving in the RPDOs to 13 of its internal variables. Also the data stored in 13 other variables of the controller will be sent automatically trhough the TPDOs. These variables can be accessed by the scripting language of the controller to be modified. So by using scripting one can get the value of variable 9 and write it to the motor command parameter. In a similar way, the motor current of the controller can be read and stored to variable 1 that will be automatically sent in one of the TPDOs.



To avoid using scripting, the default PDO mapping of the controller can be changed and instead of writting the incoming data to the internal variables, the data can be used for specific actions (as motor command, to initialize encoder, to set digital outputs etc). Also specific operational parameters of the controller can be sent through TPDOs (motor current, analog inputs, status flags etc). The mapping of the controller can be changed by the master with a process called PDO mapping. The latest firmware versions also allow to change the default PDO mapping through the controller's utility.