CANopen Scaime
CANopen Scaime
CANopen®
communication protocol
Document revisions
1 INSTALLATION .................................................................................................. 5
1.1 Switching to CANopen® communication protocol ........................................ 5
1.2 Bus length and bit rate ................................................................................. 5
1.3 Line terminations .......................................................................................... 6
2 CANOPEN® PROTOCOL DESCRIPTION ......................................................... 7
2.1 CAN 2.0A frame format ................................................................................ 7
2.2 General information ...................................................................................... 7
2.3 eNod3-D state management ........................................................................ 8
2.3.1 NMT state commands ........................................................................... 9
2.3.2 Synchronization messages ................................................................. 10
2.3.3 Emergency messages ......................................................................... 10
2.4 Error control services ................................................................................. 11
2.4.1 Heartbeat and Boot-up ........................................................................ 11
2.4.2 Node guarding..................................................................................... 11
2.5 Access to the object dictionary ................................................................... 12
2.5.1 SDO communications.......................................................................... 13
2.5.2 PDO communications.......................................................................... 14
3 CANOPEN® OBJECTS DICTIONARY: COMMUNICATION OBJECTS.......... 16
3.1 Device identification ................................................................................... 16
3.1.1 0x1000: Device profile......................................................................... 16
3.1.2 0x1008: Device name ......................................................................... 17
3.1.3 0x1009: Hardware version .................................................................. 17
3.1.4 0x100A: Software version ................................................................... 17
3.1.5 0x1018: Product identifier.................................................................... 17
3.2 CANopen® settings .................................................................................... 17
3.2.1 0x1001: Error register.......................................................................... 17
3.2.2 0x1003: Pre-defined error field ............................................................ 18
3.2.3 0x1005: Synchronization messages COB-ID ...................................... 18
3.2.4 0x100C: Life guard .............................................................................. 18
3.2.5 0x100D: Life time factor ...................................................................... 18
3.2.6 0x1010: Store parameters ................................................................... 19
3.2.7 0x1014: Emergency COB-ID ............................................................... 19
3.2.8 0x1017: Producer heartbeat time ........................................................ 19
3.2.9 0x1400: RPDO1 communication parameters ...................................... 19
3.2.10 RPDO1 mapping parameters .............................................................. 20
3.2.11 0x1800: TPDO1 communication parameters ...................................... 21
3.2.12 0x1A00: TPDO1 mapping parameters ................................................ 21
3.2.13 0x1801/0x1802: TPDO2/TPDO3 communication parameters ............. 21
3.2.14 0x1A01: TPDO2 mapping ................................................................... 22
3.2.15 0x1A02: TPDO3 mapping ................................................................... 22
4 ENOD3-D SPECIFIC OBJECTS ....................................................................... 23
4.1 Communication parameters ....................................................................... 24
4.1.1 0x2000: Functioning mode .................................................................. 24
4.1.2 0x2001: CAN bus baud rate ................................................................ 24
4.1.3 0x2002: d’eNod3-D identifier (ID) ........................................................ 25
4.1.4 0x2003/0x2004: Command/state register............................................ 25
4.2 Calibration settings ..................................................................................... 25
4.2.1 0x3000: Number of calibration segments ............................................ 25
By default, the baud rate for CAN communication is 125 kbauds. It can be modified during eNod3-D
setting up phase with eNodView software.
OFF: CANopen
ON: RS485/422
1 Mbit/s 25 m 1 µs
800 kbit/s 50 m 1.25 µs
500 kbit/s 100 m 2 µs
250 kbit/s 250 m 4 µs
125 kbit/s 500 m 8 µs
50 kbit/s 1000 m 20 µs
20 kbit/s 2500 m 50 µs
The baud rate used by eNod3-D can be selected and modified either by writing a specific code in the
appropriate entry of the object dictionary (see § 3.2.2), either by modifying the appropriate register in
ModBus-RTU or SCMBus protocols (using eNodView makes this operation easy)
A « bit Timing » adapted to each baud rate is also specified by CANopen® specification. A bit is
composed of time quanta and is characterized by the Sample point, which corresponds to the
moment at which the bit state is taken into account.
Thus, the data transfers have to respect the following values, according to CANopen® specification:
1 Mbit/s 125 ns 6 tQ
800 kbit/s 125 ns 8 tQ
500 kbit/s 125 ns 14 tQ
250 kbit/s 250 ns 14 tQ
125 kbit/s 500 ns 14 tQ
50 kbit/s 1.25 µs 14 tQ
20 kbit/s 3.125 µs 14 tQ
node 1 node n
CAN H
120 Ω 120 Ω
CAN L
The CANopen® layer defines particularly the content of the arbitration and the control fields and the
data field structure.
NMT 0
SYNC 80
EMCY 81-FF
TPDO1 181 – 1FF
RPDO1 201 – 280
TPDO2 281 – 2FF
TPDO3 381 – 3FF
SDO (Tx) 581 – 3FF
SDO (Rx) 601 – 67F
Heartbeat/Boot-up/Node guarding 701 – 77F
eNod3-D can be put into one of the four existing states, allowing or forbidding the reception/emission
of CAN messages.
These four states constitute the following NMT state machine:
Initialisation
6
2 6
Pre-operational Stopped
3 5
3 4
operational
eNod-D communication capacities for each state are given in the following table:
SDO X X
PDO X
SYNC X X
Emergency X X
NMT X X X
Boot-up X
Heartbeat X X X
Note: The stopped state can be configured (cf §4.7.1) so as to set eNod3-D into a safety
mode in case of a device failure.
2.3.2 Synchronization messages
SYNC messages are emitted on the bus by a producer node. This service is unconfirmed so the
consumer nodes do not have to respond to SYNC messages. A SYNC message does not carry any
data (DLC = 0). eNod3-D is only seen as a SYNC messages consumer whose COB-ID is equal to 80H
as it is indicated at index 1005H, sub-index 00H of the object dictionary.
2.3.3 Emergency messages
eNod3-D internal errors are reported via emergency frames. Three types of errors can trigger the
transmission of an emergency message:
communication errors
A/D converter input signal range exceeded
dosing cycle failure
COB-ID DLC byte 0 byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7
80H emergency error register
8 additional information
+ ID eNod3-D code content
Emergency messages are an unconfirmed service. A frame is emitted when a new error occurs and
when it is acknowledged. The table below describes the emergency standard codes supported by
eNod3-D and the translation of the additional information bytes (in ASCII):
0 error acknowledged
3200 voltage error
8120 CAN bus communication error
8130 life guard error
FF01 dosing cycle failure
4B4F no error
474C life time has elapsed
564F sensor signal outside of the input signal range
5054 CAN transmitter in error passive state
5052 CAN receiver in error passive state
4546 flow rate failure / cycle starting error
Heartbeat: if a Heartbeat period (in ms) different from 0 is set in the entry
«Producer heartbeat time» of the object dictionary, eNod3-D generates at his
period a frame containing its state coded on one byte. The corresponding frame is
similar to the Boot-up mechanism frame :
The eNod3-D NMT state byte can take the different following values:
Using Heartbeat protocol allows a NMT master to check that all nodes connected to the bus are
working.
This frame is similar to Heartbeat frame but there is an important difference. Most significant bit of the
state byte is a toggle-bit. The value of this bit must alternate between two consecutive responses from
the NMT slave. The value of the toggle-bit of the first response after the Guarding Protocol becomes
active is 0. It is only resetted to 0 when a ‘reset communications’ or a ‘reset node’ command is
received.
If two consecutive responses have the same value of the toggle-bit, then the new response should be
handled as if it was not received by the NMT master.
Two parameters of the object dictionary are necessary to set and define node guarding protocol:
the ‘guard time’ and the ‘life time factor’:
Node guarding activation is effective when guard time has been set (and if Heartbeat protocol is not
used) and after reception of the first remote transmit request. If life time factor is also configured and if
no remote transmit request is handled within the node life time, eNod3-D sends an emergency
telegram then switches to stopped state. The life guarding error is acknowledged when the state is
changed by a NMT command and after reception of a new remote transmit request.
Node guard
time b7 b6 ......... b0
confirm response
eNod3-D
toggle-bit
state
Switching to the stopped NMT state because of a node guarding error may cause eNod3-D to be set
into a configurable safety mode where parts of its functioning are inhibited (cf. §4.6.8).
Only the greyed elements of the table are accessible through eNod3-D OD.
The whole object dictionary is accessible and can be configured from usual CANopen® configuration
tools. This can be done using eNod3-D available EDS file (eNod3D_EDS_165768.eds).
request indication
data frame 1
8 bytes
Client Server
confirmation response
data frame 2
8 bytes
The node that sends the request is the client application whereas eNod3-D only behaves as the
server application. There are two types of requests, write and read requests. Both have the same
architecture:
COB-ID DLC byte 0 byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7
1 Command
11 bits Index sub-index Data
byte byte
580H or 600H
8 see table LSB MSB / LSB - - MSB
+ eNod3-D ID
The client request uses the SDO (Rx) COB-ID (600H + ID eNod3-D) and the server uses the SDO
(TX) COB-ID (580H + ID eNod3-D).
The command byte depends on the requested data length:
For a read request, the value of the four last bytes of the frame (data) does not matter.
If an error occurs during a SDO communication, eNod3-D responds with the command byte 80h and
the four data bytes contain one of the following SDO abort codes. The data transfer is aborted.
The PDO transmission mode can be set in the corresponding object with the following attributes:
- on remote transmit request: PDO is sent after the first SYNC message
following a remote transmit request frame with the PDO COB-ID.
The following table recaps the trigger modes that can be chosen by entering the hexadecimal code in
the PDO communication parameter.
remote
Code acyclic
cyclic synchronous asynchronous transmit Effect
(hex) (event)
request
PDO transmission after a SYNC
message following one of these
events :
00 X X - activation of a logical input
assigned to « send TPDO »
- mapped object variation superior
to +/- delta
F1 - FB reserved
largest mappable
Index Description Access Type
sub-index (PDO)?
0x1000 0 device profile RO N unsigned32
0x1001 0 error register RO N unsigned8
0x1003 1 pre-defined error field variable N /
0x1005 0 SYNC messages COB-ID RO N unsigned32
0x1008 0 device name CO N visible string
0x1009 0 hardware version CO N visible string
0x100A 0 software version CO N visible string
0x100C 0 guard time R/W N unsigned16
0x100D 0 life time factor R/W N unsigned8
0x1010 1 store parameters variable N /
0x1017 0 producer heartbeat time R/W N unsigned16
0x1018 1 device identity RO N /
0x1400 2 RPDO1 communication parameter RO N /
0x1600 1 RPDO1 mapping parameter RO N /
0x1800 2 TPDO1 communication parameter RO N /
0x1801 5 TPDO2 communication parameter variable N /
0x1802 5 TPDO3 communication parameter variable N /
0x1A00 1 TPDO1 mapping parameter RO N /
0x1A01 3 TPDO2 mapping parameter R/W N /
0x1A02 3 TPDO3 mapping parameter R/W N /
R/W : read/write
RO : read only
CO : constant value
Y : yes
N : No
/ : the sub-index of the entry have different sizes
MSB LSB
0x0342 0x0000
MSB LSB
0x646F 0x4E65
- 0x64 ⇒ d
- 0x6F ⇒ o
- 0x4E ⇒ N
- 0x65 ⇒ e
MSB LSB
0x3531 0x2E31
- 0x33 ⇒ 5
- 0x30 ⇒ 1
- 0x2E ⇒ .
- 0x31 ⇒ 1
mappable
Sub-index Description Access Default value Type
(PDO)?
largest sub-
0x00 RO 0x01 N unsigned8
index
Mappable
Sub-index Description Access Default value Type
(PDO)?
reported errors
0x00 R/W 0 N unsigned8
counter
The reported errors counter (sub-index 00H) is accessible through write or read request but 0 is the
only allowed value for writing transactions. By writing a zero to this sub-index, the error counter is
resetted and the last reported error (sub-index 01H) is erased.
Attempts to write any other value is aborted with the 0x06090030 SDO abort code.
Mappable
Sub-index Description Access Default value Type
(PDO)?
largest sub-
0x00 RO 0x01 N unsigned8
index
save all
0x01 R/W 0x01 N unsigned32
parameters
Storing all settings in EEPROM requires writing the ASCII string « save » (65766173H) to sub-index
01H.
- 0x65 ⇒ e
- 0x76 ⇒ v
- 0x61 ⇒ a
- 0x73 ⇒ s
When accessing to sub-index 1 with a read request, eNod3-D responds with value of 1 that means
that parameters are stored in non-volatile memory only on request.
Mappable
Sub-index Description Access Default value Size
(PDO)?
number of
0x00 mapped RO 0x01 N unsigned8
objects
st
1 object
0x01 RO 0x20030008 N unsigned32
mapping
Mappable
Sub-index Description Access Default value Type
(PDO)?
largest sub-
0x00 RO 0x02 N unsigned8
index
COB-ID 0x00000180+
0x01 RO N unsigned32
TPDO1 eNod3-D ID
transmission
0x02 RO 0xFE N unsigned8
type
This transmit PDO is sent by eNod3-D to indicate the current state of the last functional command
received (in progress, complete or error)
Mappable
Sub-index Description Access Default value Type
(PDO)?
number of
0x00 mapped RO 0x01 N unsigned8
objects
st
1 object
0x01 RO 0x20040008 N unsigned32
mapping
TPDO2 and TPDO3 COB-ID are automatically updated when eNod3-D identifier
is modified.
Both TPDO can be activated by setting to 0 bit 31 of their COB-ID (sub-index
01H).
The transmission type and the timer event duration can be chosen according to the table in §2.5.2.
Mappable
Sub-index Description Access Default value Type
(PDO)?
largest sub-
0x00 RO 0x05 N unsigned8
index
TPDO2 0x80000280
or or
0x01 R/W N unsigned32
TPDO3 0x80000380
COB-ID + eNod-3D ID
transmission
0x02 R/W 0x01 N unsigned8
type
Note: TPDO2 mapping can only be modified in pre-operational state. First, it is necessary to
switch to 1 bit b31 of its COB-ID (cf. 3.2.13) and to force sub-index 0 to 0.
Note: All the bits that are not mentioned in the description of the settings below are reserved
(= 0).
00 transmitter
validation after an EEPROM
01 dosing by filling
storage followed by a reset
10 dosing by unloading
Mappable
Sub-index Description Access Default value Type
(PDO)?
000 500
001 250
010 124
011 62
100 31
101 15
default value. recommended for strain
110 7.8
gauges load cells
bit b3 Analog signal type
0 unipolar by default
The coefficients have specific values. Each of them is expressed with its own unit:
E-12
the unit for coefficient A is 1 ; that means 1 000 000 000 000d = 1.
the unit for coefficient B is 1E-9; that means 100 000 0000d = 1.
coefficient C is directly expressed as A/D converter points.
The coefficients are easily calculated using eNodView software calculation tool.
Mappable
Sub-index Description Access Default value Type
(PDO)?
largest sub-
0x00 RO 0x03 N unsigned8
index
001 0.25d
010 0.5d
1d = 1 division
011 1d
100 2d
6,.25 7.5 1
12.5 15 2
25 30 3
50 60 5
100 120 9
200 240 17
400 480 33
800 960 65
Mappable
Sub-index Description Access Default value Type
(PDO)?
The different admitted frequencies and their corresponding binary codes are listed in the following
table.
bit b0 Rejection
1 50 Hz rejection
0 60 Hz rejection
A/D conversion rate (meas/s)
bits b4 b3 b2 b1
50 Hz rejection 60Hz rejection
0001 50 60
010 25 30
0011 12.5 15
b0 Note
Access: Read/write
Default value: 0H
By default, the low-pass filter is enabled and set for a 100 Hz sampling frequency and a 10 Hz cut-off
rd
frequency. It is a 3 order filter.
Mappable
Sub-index Description Access Default value Type
(PDO)?
largest sub-
0x00 RO 0x09 N unsigned8
index
0x01 filter order R/W 0x03 N unsigned16
0x3C88CD6D
0x02 1/A coefficient R/W N real32
( = 0.0166995171)
0xC2D74E27
0x03 B coefficient R/W N real32
(= -107.652641)
0x42923F93
0x04 C coefficient R/W N real32
(= 73.1241684)
0xC18AD3F5
0x05 D coefficient R/W N real32
(= -17.3534946)
0x06 E coefficient R/W 0 N real32
0x3F6DCC83
0x07 X coefficient R/W N real32
(= 0,92890471)
0xBEDBB2BD
0x08 Y coefficient R/W N real 32
(= -1,7163921)
0x3F5B995F
0x09 Z coefficient R/W N real 32
(= 0,857809)
001 tare
limited to a ±10% range of the
010 zero
maximum capacity
in transmitter functioning mode, triggers
send TPDO2 (IN 1)
011 the emission of a TPDO if it is event-
send TPDO3 (IN 2)
triggered
- in transmitter functioning mode,
erases last tare value
- in dosing mode (by filling or by
101 cancel tare / suspend cycle
unloading), suspends temporarily or
stops current dosing cycle (depending
on the cycle recovery option)
in dosing mode (by filling or by
110 start / restart dosing cycle unloading), starts a new cycle or
restarts a previously suspended cycle
in dosing mode (by filling or by
111 stop current cycle unloading), stops current cycle,
inhibiting the different outputs involved
0 negative
1 positive
Minimal holding time concerns both logical inputs and is expressed in milliseconds. It corresponds to
the minimal stabilization time of the inputs.
Mappable
Sub-index Description Access Default value Type
(PDO)?
minimal holding
0x01 R/W 0x50 N unsigned16
time (ms)
Mappable
Sub-index Description Access Default value Type
(PDO)?
Mappable
Sub-index Description Access Default value Type
(PDO)?
If the result is inferior to the default limit and if the ‘restart fine feed’ (cf. §4.6.6) option is enabled, then
the fine feed output is restarted.
- reloading at the end of the cycle: an output assigned to the ‘reloading’ function is automatically set
if after the result determination the gross measurement is inferior to the ‘reloading min level’. The
output remains active until the end of the ‘reloading holding time’ that begins immediately after that the
‘reloading max level’ has been exceeded.
- reloading at the start of the cycle: at every cycle start, eNod3-D checks that there are enough
products to reach the dosing target weight. Else if the reloading mode is set to ‘at the start of the
cycle’, an output assigned to the ‘reloading’ function is automatically set active until the gross
measurement gets superior to the ‘reloading max level’. It remains then active during the ‘reloading
holding time’.
After the reloading phase end, the dosing cycle begins normally.
Mappable
Sub-index Description Access Default value Type
(PDO)?
reloading max
0x01 R/W 0x00004E20 N unsigned32
level
reloading min
0x02 R/W 0x000003E8 N unsigned32
level
4.6.5 0x4704: Dosing levels
This object contains all the levels that are monitored during a dosing cycle.
Mappable
Sub-index Description Access Default value Type
(PDO)?
end of emptying
0x02 R/W 0x000000C8 N unsigned32
level
0x03 in-flight weight value R/W 0x000000FA N integer32
Mappable
Sub-index Description Access Default value Type
(PDO)?
0x00 largest sub-index RO 0x07 N unsigned8
automatic taring at
0x01 R/W 0x01 N unsigned8
start / cycle recovery
reloading mode /
0x02 R/W 0x01 N unsiged8
emptying phase
in-flight weight
0x03 automatic correction / R/W 0x02 N unsigned8
fine feed restarting
b0 Effect Notes
weighted by the correction
coefficient at sub-index 04H
1 automatic correction enabled see dosing cycle descriptions in
user’s instructions document ref.
165752
0 automatic correction disabled
b1
fine feed is restarted if the see dosing cycle descriptions in
1 dosing result is inferior to the low user’s instructions document ref.
tolerance 165752
fine feed is not restarted if the
0
result is out of tolerances
b2
00 CF then FF
see dosing cycle descriptions in
01 CF + FF user’s instructions document ref.
165752
10 CF only
0x06/07 : Max/Min in-flight weight values :
when the ‘in-flight automatic correction’ option is enabled, at the end of a dosing cycle, the in-flight
value is modified. The new value has to respond to the following condition:
Min in-flight value < in-flight value < Max in-flight value
Note: the above condition is available only if Max and Min in-flight values are ≠ zero.
4.6.7 0x4706: Flow rate control
eNod3-D includes a flow rate control system. It makes possible to check that the flow rate during
the cycle is sufficient. The device controls that the flow rate remains equal or superior to a minimal
value. If it is not the case, an output assigned to ‘dosing failure’ or ‘flow rate failure’ is set and the
cycle is suspended if the cycle recovery option is active else it is stopped.
The flow rate control is defined by two parameters:
0x01 : time interval (if = 0, the flow rate control is not used)
Mappable
Sub-index Description Access Default value Type
(PDO)?
0x00 largest sub-index RO 0x02 N unsigned8
minimal weight
0x01 R/W 0x03E8 N unsigned16
variation
0x02 time interval R/W 0x0000 N unsigned16
b0 Effect Notes
0 safety mode disabled
only valid in stopped state
1 safety mode enabled
b1
0 output 1 inhibited depending on the chosen logic
1 output 1 set active (cf. §4.5.2)
b2
0 output 2 inhibited depending on the chosen logic
1 output 2 set active (cf. §4.5.2)
b4
0 output 4 inhibited depending on the chosen logic
1 output 4 set active (cf. §4.5.2)
4.8 Measures
4.8.1 0x5000/0x5001/0x5002: Current measurement
These three entries contain the current measurement value (net, gross and A/D converter points). All
these variables can be mapped into a PDO.
Access: Read only
Default value: /
0x5000 : Net measurement :
Mappable
Sub-index Description Access Default value Type
(PDO)?
Mappable
Sub-index Description Access Default value Type
(PDO)?
current
0x00 measurement RO / Y unsigned16
status
b1, b0
XX non-significant
b3,b2
00 measurement within the admissible range
01 negative overloading causes an output assigned to
the ‘defective measurement’
10 positive overloading function to be set active
11 analog signal out of range
bit b4
0 motion causes an output assigned to
the ‘motion’ function to be set
1 no motion active
bit b5
0 measurement out of the ¼ of division
1 zero in the ¼ of division
bit b6
0 EEPROM OK
1 EEPROM failure
bit b7
1 reserved
bit b8
0
input 1 logical state
1
bit b9
0
input 2 logical state
1
bit b10
0
output 1 logical state
1
bit b11
0
output 2 logical state
1
bit b12
0
output 3 logical state
1
bit b13
0
output 4 logical state
1
bit b14
0 no tare the tare can be cancelled by
1 at least a tare has been processed an input or by a command
bit b15
1 reserved
Mappable
Sub-index Description Access Default value Type
(PDO)?
Mappable
Sub-index Description Access Default value Type
(PDO)?
logical inputs
0x00 RO / Y unsigned8
state
Mappable
Sub-index Description Access Default value Type
(PDO)?
logical outputs
0x00 RO / Y unsigned8
state