Post

What is CANopen's Electronic Data Sheet (EDS)

The scope of this article is to understand the basics of syntax and tools to work with Electronic Data Sheet (EDS).

What is CANopen's Electronic Data Sheet (EDS)

Table of contents

Definition

An INI file format (since 2007 XML is also valid), acting as the ‘template’ for the Object Dictionary (OD) of a device and contains info on all device objects (PDOs, SDOs, specific objects defined in the device profiles…). The EDS file is a text file with the extension “eds”.

An EDS is supplied by the vendor of a particular device. If a vendor provides no EDS for his CANopen devices a default EDS might be used.

EDS contain:

  • Communication parameters as defined in CiA301.
  • Application parameters as specified in CiA device and application profiles.
  • Manufacturer-specific parameters as defined by the device manufacturer.

File basic syntax

  • The files are ASCII-coded, the /ISO646/ character set shall be used.
  • The lines shall be ended by a LF character or by a CR/LF combination. The total length of a line shall not exceed 255 characters.
  • Section and keyname are not case sensitive.
  • Section and keyname order isn’t relevant.
  • The EDS contains several sections; each consists of a group of related entries. The sections and the entries shall be listed in the following format:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
; -------------------------
; --- This is a comment ---
; -------------------------

[section 1 name]
keyname_1=value
; Leading/trailing spaces in values are ignored
keyname_2= value

[section 2 name]
; Integer numbers shall be written as decimal numbers,
; hexadecimal numbers or octal numbers
; Decimal
keyname=10
; Hexadecimal numbers are preceded by 0x
keyname=0xa
keyname=0x0a
keyname=0xA
keyname=0x000A
; Octal numbers shall start with a leading 0
keyname=012

[section 3 name]
; String values are stored without quotes
keyname=hello
; Bitstrings shall be stored as a sequence of 0 and 1
keyname=0110100001101001

[section 4 name]
; For entries of one of the integer types a formula may be used (e.g. COB-ID)
; The $NODEID shall appear at the beginning of the expression.
; Otherwise the line is interpreted as without a formula.
keyname=$NODEID+number

Standard sections

File information

Section name = [FileInfo]. The EDS contains information about itself. Useful for version control management.

FileNameFile name (according to OS restrictions)
FileVersionActual file version (Unsigned8)
FileRevisionActual file revision (Unsigned8)
EDSVersionVersion of the specification (3 characters) in the format “x.y”.
NOTE: If the entry is missing, this is equal to “3.0”. EDS files written according to this document shall use “4.0”
DescriptionFile description (max 243 characters)
CreationTimeFile creation time (hh:mm(AM|PM))
CreationDateDate of file creation (mm-dd-yyyy)
CreatedByName or description of the file creator (max. 245 characters)
ModificationTimeTime of last modification (hh:mm(AM|PM))
ModificationDateDate of the last file modification (mm-dd-yyyy)
ModifiedByName or a description of the creator (max. 244 characters)

Example:

1
2
3
4
5
6
7
8
9
10
11
12
[FileInfo]
FileName=example name.eds
FileVersion=1
FileRevision=1
EDSVersion=4.0
Description=
CreationTime=20:31PM
CreationDate=26-06-2025
CreatedBy=my name
ModificationTime=21:43PM
ModificationDate=26-06-2025
ModifiedBy=my name

General device information

Section name = [DeviceInfo]. Contain device specific information.

VendorNameVendor name (max. 244 characters)
VendorNumberUnique vendor ID according to identity object sub-index 01h (Unsigned32). Oficial CANopen ventor-ID list
ProductNameProduct name (max. 243 characters)
ProductNumberProduct code according to identity object sub-index 02h (Unsigned32)
RevisionNumberProduct revision number according to identity object sub-index 03h (Unsigned32)
OrderCodeOrder code for this product (max. 245 characters)
BaudRate_10Indicate the supported baud rates (0 = not supported, 1=supported)
BaudRate_20 
BaudRate_500 
BaudRate_125 
BaudRate_250 
BaudRate_500 
BaudRate_800 
BaudRate_1000 
SimpleBootUpMasterIndicate the simple boot-up master functionality (0 = not supported, 1 = supported)
SimpleBootUpSlaveIndicate the simple boot-up slave functionality (0 = not supported, 1 = supported)
GranularityGranularity allowed for the mapping on this device. (Unsigned8; 0 = mapping not modifiable, 1-64 = granularity)
DynamicChannelsSupportedAccording to CiA302, indicate the facility of dynamic variable generation. If the value is unequal to 0, the additional section DynamicChannels exists.
GroupMessagingAccording to CiA301 Annex A, indicate the facility of multiplexed PDOs. (0 = not supported, 1 = supported).
NrOfRXPDONumber of supported receive PDOs (Unsigned16)
NrOfTXPDONumber of supported transmit PDOs (Unsigned16)
LSS_SupportedIndicate if LSS functionality is supported (0 = not supported, 1 = supported)

For compatibility reasons, the entries ProductVersion, ProductRevision, LMT_ManufacturerName, LMT_ProductName, ExtendedBootUpMaster and ExtendedBootUpSlave are reserved.

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[DeviceInfo]
VendorName=company name
VendorNumber=0x00000000
ProductName=Example turbo 3000
ProductNumber=0x00000000
RevisionNumber=0x00000000
BaudRate_50=1
BaudRate_250=1
BaudRate_1000=1
SimpleBootUpMaster=0
SimpleBootUpSlave=1
Granularity=8
DynamicChannelsSupported=0
GroupMessaging=0
NrOfRXPDO=1
NrOfTXPDO=3
LSS_Supported=0
; This is a "Specific flag" to define a specific behaviour for tools how to treat an object.
CompactPDO=0

Mapping of dummy entries

Section name = [DummyUsage]. Contain device specific information. Sometimes it is required to leave gaps in the mapping of a device.

Format = Dummy<data type index (without 0x-prefix)>={0|1}

Example:

1
2
3
4
5
6
7
8
[DummyUsage]
Dummy0001=0
Dummy0002=1
Dummy0003=1
Dummy0004=1
Dummy0005=1
Dummy0006=1
Dummy0007=1

Object dictionary lists

This sections configure the device:

  • Which objects of the object dictionary are supported
  • Limit values for parameters
  • Default values
  • Data types

Object descriptions:

  • [MandatoryObjects] Contain the mandatory objects (1000h, 1001h and 1018h)
  • [OptionalObjects] Contain all other objects of the area (1000h-1FFFh and 6000H-FFFFh).
  • [ManufacturerObjects] Contain all manufacturer specific objects (2000h-5FFFh).
See Object Dictionary overview (0000h - FFFFh).
IndexObject
0000hnot used
0001h – 001FhStatic data types (standard data types, e.g. Boolean, Integer16)
0020h – 003FhComplex data types (predefined structures composed of standard data types, e.g. PDOCommPar, SDOParameter)
0040h – 005FhManufacturer-specific complex data types
0060h – 025FhDevice profile specific data types
0260h – 0FFFhreserved
1000h – 1FFFhCommunication profile area (e.g. Device Type, Error Register, Number of PDOs supported)
2000h – 5FFFhManufacturer-specific profile area
6000h – 9FFFhStandardised Device Profile Area (e.g. "DSP-401 Device Profile for I/0 Modules" [3]: Read State 8 Input Lines, etc.)
A000h – BFFFhStandardized network variable area
C000h – FFFFhreserved
>Don't be confused by all the 'data types' located in the OD at indices below 0FFF; they're there mainly or definition purposes only. The relevant range of a node's OD lies between 1000 and 9FFF.
See Communication profile area (1000h - 1F89h).
Index rangeDescription
1000h - 1029hGeneral communication objects
1200h - 12FFhSDO parameter objects
1300h - 13FFhCANopen safety objects
1400h - 1BFFhPDO parameter objects
1F00h - 1F11hSDO manager objects
1F20h - 1F27hConfiguration manager objects
1F50h - 1F54hProgram control objects
1F80h - 1F89hNMT master objects
See General communication objects (1000h - 1029h).
IndexObjectName
1000hVARDevice type
1001hVARError register
1002hVARManufacturer status register
1003hARRAYPre-defined error field
1005hVARCOB-ID Sync message
1006hVARCommunication cycle period
1007hVARSynchronous window length
1008hVARManufacturer device name
1009hVARManufacturer hardware version
100AhVARManufacturer software version
100ChVARGuard time
100DhVARLife time factor
1010hVARStore parameters
1011hVARRestore default parameters
1012hVARCOB-ID time stamp
1013hVARHigh resolution time stamp
1014hVARCOB-ID emergency
1015hVARInhibit time emergency
1016hARRAYConsumer heartbeat time
1017hVARProducer heartbeat time
1018hRECORDIdentity object
1019hVARSync. counter overflow value
1020hARRAYVerify configuration
1021hVARStore EDS
1022hVARStorage format
1023hRECORDOS command
1024hVAROS command mode
1025hRECORDOS debugger interface
1026hARRAYOS prompt
1027hARRAYModule list
1028hARRAYEmergency consumer
1029hARRAYError behavior

Each of these sections shall contain a list of the supported objects which contains entries for the supported objects. SupportedObjects = Number of entries in the section (Unsigned16).

See an example.
[MandatoryObjects]
SupportedObjects=3
1=0x1000
2=0x1001
3=0x1018

[...]

[OptionalObjects]
SupportedObjects=17
1=0x1008
2=0x1009
3=0x100A
4=0x100C
5=0x100D
6=0x1013
7=0x1016
8=0x1017
9=0x1200
10=0x1400
11=0x1600
12=0x1800
13=0x1801
14=0x1802
15=0x1A00
16=0x1A01
17=0x1A02

[...]

[ManufacturerObjects]
SupportedObjects=20
1=0x2000
2=0x2001
3=0x2002
4=0x2003
5=0x2004
6=0x2005
7=0x2006
8=0x2007
9=0x2008
10=0x2009
11=0x200A
12=0x200B
13=0x200C
14=0x200D
15=0x200E
16=0x200F
17=0x2010
18=0x2011
19=0x2012
20=0x2013

Section’s keynames:

SubNumberNumber of sub-indexes available at this index (Unsigned8)
ParameterNameParameter name (up to 241 characters)
ObjectTypeObject code
DataTypeIndex of the data type of the object in the OD
LowLimit[Only if applicable] Lowest limit of the object value
HighLimit[Only if applicable] Upper limit of the object value
AccessType 
DefaultValueDefault value for this object
PDOMappingIf it is possible to map this object into a PDO (Boolean, 0 = not mappable, 1 = mappable)
ObjFlags[Optional] Assignment of special behavior
See an overview of the obligation of keywords. Table legend: - m = Mandatory - o = Optional. If the entry is missing "( )" says default value - n = Not supported
DEFTYPE
VAR
DEFSTRUCT
ARRAY
RECORD
DEFSTRUCT
ARRAY
RECORD
DOMAIN
ParameterNamemmmm
ObjectTypeo (VAR)mmm
DataTypemnmo (DOMAIN)
AccessTypemnmo (rw)
DefaultValueo ()no ()o ()
PDOMappingo (0)no (0)n
SubNumbernmnn
LowLimito ()no ()n
HighLimito ()no ()n
ObjFlagso (0)o (0)o (0)o (0)
CompactSubObjnnmn
See an example of an EDS's one RPDO definition

[...]

[1402]
ParameterName=Receive PDO Communication Parameter 2
ObjectType=0x9
SubNumber=4

[1402sub0]
ParameterName=Number of entries
ObjectType=0x7
DataType=0x0005
AccessType=ro
DefaultValue=5
PDOMapping=0
LowLimit=0x02
HighLimit=0x05

[1402sub1]
ParameterName=COB ID
ObjectType=0x7
DataType=0x0007
AccessType=rw
DefaultValue=0x400+$NODEID
PDOMapping=0
LowLimit=0x00000001
HighLimit=0xFFFFFFFF

[1402sub2]
ParameterName=Transmission Type
ObjectType=0x7
DataType=0x0005
AccessType=rw
DefaultValue=1
PDOMapping=0

[1402sub5]
ParameterName=Event Timer
ObjectType=0x7
DataType=0x0006
AccessType=rw
DefaultValue=0
PDOMapping=0

[...]

[1602]
ParameterName=Receive PDO Mapping Parameter 2
ObjectType=0x9
SubNumber=5

[1602sub0]
ParameterName=Number of entries
ObjectType=0x7
DataType=0x0005
AccessType=rw
DefaultValue=4
PDOMapping=0
LowLimit=0
HighLimit=8

[1602sub1]
ParameterName=PDO Mapping Entry
ObjectType=0x7
DataType=0x0007
AccessType=rw
DefaultValue=0x20000910
PDOMapping=0

[1602sub2]
ParameterName=PDO Mapping Entry
ObjectType=0x7
DataType=0x0007
AccessType=rw
DefaultValue=0x20000a10
PDOMapping=0

[1602sub3]
ParameterName=PDO Mapping Entry
ObjectType=0x7
DataType=0x0007
AccessType=rw
DefaultValue=0x20010110
PDOMapping=0

[1602sub4]
ParameterName=PDO Mapping Entry
ObjectType=0x7
DataType=0x0007
AccessType=rw
DefaultValue=0x20010210
PDOMapping=0

[...]

[2000]
ParameterName=Reception Element 2
ObjectType=0x9
SubNumber=11

[2000sub0]
ParameterName=NrOfObjects
ObjectType=0x7
DataType=0x0005
AccessType=rww
DefaultValue=10
PDOMapping=0

[...]

[2000sub9]
ParameterName=i_sp_lim_pow
ObjectType=0x7
DataType=0x0006
AccessType=rww
PDOMapping=1

[2000subA]
ParameterName=i_sp_lim_pow_ef
ObjectType=0x7
DataType=0x0006
AccessType=rww
PDOMapping=1

[2001]
ParameterName=Reception Element 3
ObjectType=0x9
SubNumber=11

[2001sub0]
ParameterName=NrOfObjects
ObjectType=0x7
DataType=0x0005
AccessType=rww
DefaultValue=10
PDOMapping=0

[2001sub1]
ParameterName=rcw_gen_10
ObjectType=0x7
DataType=0x0006
AccessType=rww
PDOMapping=1

[2001sub2]
ParameterName=rcw_gen_11
ObjectType=0x7
DataType=0x0006
AccessType=rww
PDOMapping=1

[...]

Optional sections

Comments

Section name = [Comments]. To add comments to the EDS. Example:

1
2
3
4
5
[Comments]
Lines=3
Line1=|-------------|
Line2=| Hello World |
Line3=|-------------|

Tools

Section name = [Tools]. Based on CiA 405, describe some aspects of the usage of the EDS by software packages.

References

Useful tools

This post is licensed under CC BY 4.0 by the author.