The CANopen Bootup Message is sent by a CANopen device when it starts. This is done to indicate to all other devices in the network that it is ready to communicate by other CANopen services. Although it may sound simple, there are preconditions that need to be met before a bootup message can be sent. The CAN-ID of the bootup messages depends on the CANopen node-ID of the device. That is why the device must have a valid node-ID between 1 and 127 in order to transmit a bootup message. Therefore, devices without a defined node-ID or without any switches to set the node-ID must use a dynamic Node-ID configuration by Layer Setting Services (LSS).
CAN-ID and CAN data
Anyway, we only discuss the case with a valid node-ID for now.
The CAN-ID of a bootup message is 0x700 + node-ID. That means that the CAN-IDs are located in the range between 0x701 and 0x77f. Each CANopen bootup message has a length of 1 byte. The value of this one byte is always 0x00. The same CAN-ID but different data are used by CANopen Heartbeat or Node Guarding messages.
Bootup of isolated CANopen device
The screenshot below shows the bootup of an isolated CANopen device which is alone on the CAN. To capture the logging the listen-only mode of the CANopen DeviceExplorer has been used.
The device starts and tries to send its bootup message. Anyway, the CAN message is not acknowledged because no other device is connected. So the CAN message is destroyed again by an CAN error active frame. We see 16 Error Active frames until the Transmit Error Counter of the CAN controller in the device reaches 128. Then device enters the CAN state error passive and does not send Error Active frames anymore. Nevertheless, it continues to transmit its bootup message which is not destroyed anymore now. It will continue trying to transmit it until another device acknowledges it.
Bootup of CANopen device with other devices in network
If there is another CAN or CANopen device in the network, it will acknowledge the bootup message of the device. Thus the bootup message is only sent once and the device is ready to communicate.
Triggering CANopen bootup messages
Beside a power-on there are also other ways to trigger a bootup message. A CANopen NMT master may send the NMT command ‘reset application’ or ‘reset communication’ to the device. In both cases the device will send a CANopen bootup message after the reset has been completed and when the device is ready to communicate again.
In order to interpret the messages and the behavior properly it is recommend to use a CAN/CANopen tool that both supports CAN Error Frames and Listen-Only mode and is also able to interpret the CAN messages according to the CANopen specification.
The CANinterpreter or CANopen DeviceExplorer from emotas support all required features.
It can also send CANopen NMT commands to trigger a reset or NMT state change.
CANopen Stack support
The bootup message is supported by nearly all CANopen Slave stacks including the CANopen slave stack from emotas. If the device has a valid node-ID is automatically sends the bootup message after power-on or after having received an NMT command that requests a reset of any kind. Of course, the application is informed about the event by callback functions, so that the application programmer is able to react on it properly.