Persistent configurationΒΆ
The binary format for the EtherCAT Subdevice persistent configuration file is specified below in Extended Backus-Naur Form (EBNF) notation.
configuration = header, objects, crc ;
header = magic-word, total-size, format-version, user-version ;
magic-word = Uint32 ; (* value = 0xcafebabe *)
total-size = Uint32 ; (* total size of binary including the CRC and header *)
format-version = Uint8 ;
user-version = Uint32 ;
objects = { object } ;
object = index, subindex, reserved, object-datatype, object-size, object-value ;
index = Uint16 ;
subindex = Uint8 ;
reserved = Uint8 ;
object-datatype = type_Float32 | type_Float64 | type_Int8 | type_Int16 | type_Int32 | type_Int40 | type_Int48 | type_Uint8 | type_Uint16 | type_Uint32 | type_Int64 | type_Uint64 | type_Uint40 | type_Uint48 | type_Int56 | type_Uint56 | type_Boolean | type_Uint24 | type_Int24 | type_VisibleString | type_OctetString | type_UnicodeString | type_Bit1 | type_Bit2 | type_Bit3 | type_Bit4 | type_Bit5 | type_Bit6 | type_Bit7
object-size = Uint8 ;
object-value = Float32 | Float64 | Int8 | Int16 | Int32 | Int40 | Int48 | Uint8 | Uint16 | Uint32 | Int64 | Uint64 | Uint40 | Uint48 | Int56 | Uint56 | Boolean | Uint24 | Int24 | VisibleString | OctetString | UnicodeString | Bit1 | Bit2 | Bit3 | Bit4 | Bit5 | Bit6 | Bit7
crc = uint32 ; (* CRC32 value of both the header and register specific binary data *)
Uint8 = ? 1 octet containing 8-bit unsigned integer, little-endian ?;
Uint16 = ? 2 octets containing 16-bit unsigned integer, little-endian ?;
Uint24 = ? 3 octets containing 24-bit unsigned integer, little-endian ?;
Uint32 = ? 4 octets containing 32-bit unsigned integer, little-endian ?;
Uint40 = ? 5 octets containing 40-bit unsigned integer, little-endian ?;
Uint48 = ? 6 octets containing 48-bit unsigned integer, little-endian ?;
Uint56 = ? 7 octets containing 56-bit unsigned integer, little-endian ?;
Uint64 = ? 8 octets containing 64-bit unsigned integer, little-endian ?;
Int8 = ? 1 octet containing 8-bit signed integer, little-endian ?;
Int16 = ? 2 octets containing 16-bit signed integer, little-endian ?;
Int24 = ? 3 octets containing 24-bit signed integer, little-endian ?;
Int32 = ? 4 octets containing 32-bit signed integer, little-endian ?;
Int40 = ? 5 octets containing 40-bit signed integer, little-endian ?;
Int48 = ? 6 octets containing 48-bit signed integer, little-endian ?;
Int56 = ? 7 octets containing 56-bit signed integer, little-endian ?;
Int64 = ? 8 octets containing 64-bit signed integer, little-endian ?;
Float32 = ? 4 octets containing single precision floating point number in IEEE 754 format, little-endian ? ;
Float64 = ? 8 octets containing double precision floating point number in IEEE 754 format, little-endian ? ;
Boolean = ? 1 octet containing 8-bit boolean value 0 or 1, little-endian ?;
Bit1 = ? 1 octet containing 1-bit value, little-endian ?;
Bit2 = ? 1 octet containing 2-bit value, little-endian ?;
Bit3 = ? 1 octet containing 3-bit value, little-endian ?;
Bit4 = ? 1 octet containing 4-bit value, little-endian ?;
Bit5 = ? 1 octet containing 5-bit value, little-endian ?;
Bit6 = ? 1 octet containing 6-bit value, little-endian ?;
Bit7 = ? 1 octet containing 7-bit value, little-endian ?;
VisibleString = ? textual character strings including ASCII codes ?;
OctetString = ? character strings of 8-bit unsigned integer ?;
UnicodeString = ? textual character strings including UNICODE characters ?;
type_Float32 = Uint32 ; (* value = 0 *)
type_Float64 = Uint32 ; (* value = 1 *)
type_Int8 = Uint32 ; (* value = 2 *)
type_Int16 = Uint32 ; (* value = 3 *)
type_Int32 = Uint32 ; (* value = 4 *)
type_Int40 = Uint32 ; (* value = 5 *)
type_Int48 = Uint32 ; (* value = 6 *)
type_Uint8 = Uint32 ; (* value = 7 *)
type_Uint16 = Uint32 ; (* value = 8 *)
type_Uint32 = Uint32 ; (* value = 9 *)
type_Int64 = Uint32 ; (* value = 10 *)
type_Uint64 = Uint32 ; (* value = 11 *)
type_Uint40 = Uint32 ; (* value = 12 *)
type_Uint48 = Uint32 ; (* value = 13 *)
type_Int56 = Uint32 ; (* value = 14 *)
type_Uint56 = Uint32 ; (* value = 15 *)
type_Boolean = Uint32 ; (* value = 16 *)
type_Uint24 = Uint32 ; (* value = 17 *)
type_Int24 = Uint32 ; (* value = 18 *)
type_VisibleString = Uint32 ; (* value = 19 *)
type_OctetString = Uint32 ; (* value = 20 *)
type_UnicodeString = Uint32 ; (* value = 21 *)
type_Bit1 = Uint32 ; (* value = 22 *)
type_Bit2 = Uint32 ; (* value = 23 *)
type_Bit3 = Uint32 ; (* value = 24 *)
type_Bit4 = Uint32 ; (* value = 25 *)
type_Bit5 = Uint32 ; (* value = 26 *)
type_Bit6 = Uint32 ; (* value = 27 *)
type_Bit7 = Uint32 ; (* value = 28 *)
Additional details which cannot be expressed in EBNF notation:
For the actual format-version see Interface version numbers.