EDS文件 (Electronic Data Sheet)是用于描述和配置CANopen设备 的文件格式。它是CANopen协议中的一种标准化文件,用于存储关于设备的详细信息,包括其硬件特性、功能、对象字典、通信配置等内容。EDS文件通常由设备制造商提供,目的是使得上位机(如CODESYS 、PC-based control systems或其他CANopen主站软件)能够识别和配置设备。
关键点
- EDS文件是CANopen协议的标准 :它由 CiA(CAN in Automation) 组织定义,并遵循CANopen协议的规范。EDS文件用于描述CANopen设备的对象字典、通信参数和配置等。
- CODESYS支持使用EDS文件:CODESYS作为一种自动化开发工具,支持通过导入EDS文件来配置和管理CANopen设备。它使用EDS文件中的信息来配置从站设备,例如映射PDO(Process Data Object)、设置通信参数等。
EDS文件的来源
EDS文件标准由**CiA(CAN in Automation)**组织定义,并且已经成为CANopen协议的必需组成部分。所有符合CANopen协议的设备都需要提供EDS文件,方便主站(如CODESYS)进行设备配置和管理。
EDS文件的主要内容
EDS文件主要包含以下几类信息:
-
设备信息:
- 设备类型(例如,从站设备、传感器、执行器等)
- 厂家信息
- 设备型号、版本号、序列号等
-
对象字典(Object Dictionary):
- 对象字典 是CANopen通信的核心部分,包含了设备的所有参数、对象(如输入、输出、状态寄存器等)及其数据类型、访问权限等。EDS文件定义了对象字典的结构,描述每个对象的属性,包括:
- 对象标识符(如对象的索引、子索引)
- 对象类型(例如,变量、数组、命令)
- 数据类型(如布尔值、整型、浮点型)
- 访问权限(如读取、写入)
- 对象字典 是CANopen通信的核心部分,包含了设备的所有参数、对象(如输入、输出、状态寄存器等)及其数据类型、访问权限等。EDS文件定义了对象字典的结构,描述每个对象的属性,包括:
-
设备配置和通信:
- 支持的通信参数,如波特率、同步方式、PDO(Process Data Object)映射等。
- 特定的设备功能,如设备启动模式、诊断信息等。
-
设备描述:
- 功能描述,定义了设备的输入和输出、控制功能、状态报告等。
- 每个对象如何在网络中传输数据的详细描述,帮助主站设备正确地与从站设备通信。
EDS文件的格式
EDS文件通常采用ASCII文本格式,以特定的语法编写。标准的EDS文件结构包括头部信息、设备描述、对象字典以及详细的通信配置。
EDS文件的作用
- 设备配置:EDS文件帮助主站(如CODESYS)识别设备并配置其通信参数、对象字典和数据映射。
- 自动化:设备可以根据EDS文件自动加载配置,无需手动输入所有参数,简化了集成过程。
- 跨平台支持:不同厂家、不同品牌的CANopen设备可以通过相同格式的EDS文件进行配置和管理,从而实现设备间的互操作性。
EDS中的定义
ObjectType
-
0x01 - Variable(变量)
- 表示一个普通的变量对象。它可以是一个输入或输出值,或者是用于存储数据的对象。
- 这些对象通常与设备的功能相关,例如传感器值、控制信号等。
-
0x02 - Array(数组)
- 表示一个数组对象。该对象包含多个元素,通常用于表示同一类型的数据集合。
-
0x03 - Record(记录)
- 代表一个记录类型的对象。记录通常包含多个不同类型的变量(可能是不同数据类型的字段),并且这些字段一起作为一个逻辑单元处理。
-
0x04 - Domain(领域)
- 用于表示一块存储区域(通常是内存或地址空间),可以用于存储较为复杂的数据类型。
-
0x05 - Function(功能)
- 用于表示一个函数对象,它可以执行一些特定的操作或功能,通常与设备的控制相关。
-
0x06 - Object Group(对象组)
- 表示一组对象,用来组织相关的对象。通常用于将多个对象组合在一起进行管理。
-
0x07 - Event(事件)
- 表示事件对象。这些对象用于表示设备在某些条件下触发的事件,例如状态变化、错误等。
-
0x08 - Service(服务)
- 用于表示一个服务对象,通常涉及设备间的服务请求和响应,如 SDO(Service Data Object)通讯。
-
0x09 - Command(命令)
- 用于表示命令对象,这些对象通常用于设备间的控制指令,指示某些操作或状态变更。
-
0x0A - State(状态)
- 代表一个状态对象,用于表示设备或某个子系统的状态信息,通常与设备的运行状态相关。
DataType
在 EDS 文件 中,DataType
的值是用数字表示的,每个数字对应一个特定的数据类型。以下是一些常见的 DataType
值及其对应的数据类型:
-
0x01 - Boolean(布尔类型)
- 只有两个值:
TRUE
或FALSE
。通常用于开关或状态指示。 - 例如:设备的启停状态。
- 只有两个值:
-
0x02 - Integer8(8 位有符号整数)
- 范围:
-128
到127
。适用于小范围整数。
- 范围:
-
0x03 - Integer16(16 位有符号整数)
- 范围:
-32,768
到32,767
。
- 范围:
-
0x04 - Integer32(32 位有符号整数)
- 范围:
-2,147,483,648
到2,147,483,647
。
- 范围:
-
0x05 - Unsigned8(8 位无符号整数)
- 范围:
0
到255
。
- 范围:
-
0x06 - Unsigned16(16 位无符号整数)
- 范围:
0
到65,535
。
- 范围:
-
0x07 - Unsigned32(32 位无符号整数)
- 范围:
0
到4,294,967,295
。
- 范围:
-
0x08 - Real32(32 位浮点数)
- 范围:
-3.4028235E+38
到3.4028235E+38
。通常用于表示带小数点的数值。
- 范围:
-
0x09 - Real64(64 位浮点数)
- 范围:
-1.7976931348623157E+308
到1.7976931348623157E+308
。适用于需要更高精度和更大范围的数值。
- 范围:
-
0x0A - String(字符串)
- 用于表示一串字符。通常用于描述设备的名称、状态或其他文本信息。
-
0x0B - OctetString(字节串)
- 用于存储原始字节数据,适用于二进制数据或不特定格式的数据。
-
0x0C - UnicodeString(Unicode 字符串)
- 用于表示Unicode编码的字符串,通常用于多语言支持。
-
0x0F - Domain(域)
- 用于表示一块内存区域,通常包含一些特定的数据,可能涉及多种数据类型。
-
0x10 - Array of basic types(基本类型的数组)
- 用于表示一个元素为基本数据类型的数组,如整数数组、浮点数组等。
-
0x11 - Record(记录)
- 用于表示一个结构体(记录),包含多个不同数据类型的字段。记录类似于 C 语言中的
struct
。
- 用于表示一个结构体(记录),包含多个不同数据类型的字段。记录类似于 C 语言中的
总结
EDS文件是CANopen协议中定义设备特性和配置的标准文件格式,通过该文件,CANopen设备的硬件和软件配置、通信方式、对象字典等可以被上位机识别和配置。在软件开发和调试CANopen网络时,EDS文件是非常重要的配置文件。