SRDO的定义
SRDO服务
什么是SRDO?
SRDO(Safety-relevant data object-安全相关数据对象),其实就是在总线中传输的CANopen数据,这些数据要高度安全。SRDO的传输严格遵循CiA 301规范的生产者/消费者关系,一条数据由两个CAN数据帧组成(第2条数据根据第1条数据按位取反)。
SRDO的属性:
SRDO编号 | 本地设备上每种用户类型的SRDO编号[1-64] |
用户类型 | 取值为{生产者、消费者} |
数据类型 | 根据SRDO映射 |
刷新时间 | n毫秒,n>0 |
验证时间 | n毫秒,n>0 |
写入SRDO
写入SRDO服务为推送服务,该过程中SRDO的生产者应该向消费者发送映射的应用对象的数据。
读入SRDO
不允许使用读取 SRDO 服务。
SRDO协议
写入SRDO协议
SRDO 写入请求的服务应该是未确认的。SRDO 生产者应该将过程数据发送到一个 SRDO 中,通过网络传输。可能有 1 到多个 SRDO 消费者。在 SRDO 消费者处,应该指示接收到一个有效的 SRDO。
数据处理:根据SRDO映射,L(0<L<8)字节的数据。
if L>n consumer consume first n Bytes
if L<n consumer ignores or generate Emergency message 8210h
SRDO协议的传输过程是一个实时的、可靠的双向通信协议(类似于TCP),用于在工业自动化系统中传输数据。其典型的传输过程如下(也是对上图协议流程的解释):
- 通信周期设置:系统首先需要配置SRDO通信的周期,即确定数据传输的时间间隔。这个周期可以根据实际需求进行设置,通常是毫秒级别。设备在这个周期内进行数据的周期性传输。
- 数据对象定义:在通信的开始阶段,需要定义要传输的数据对象。这可以包括开关量、模拟量、状态信息等。每个数据对象都会有一个唯一的标识符。
- 发送方准备数据:在每个通信周期内,发送方设备(例如传感器、执行器)准备要传输的数据。这些数据可能是传感器的测量值、设备的状态等。
- 数据封装和打包:发送方将要传输的数据封装成SRDO数据包。数据包通常包括数据对象的标识符、数据值、时间戳、错误检测码等。
- 数据传输:在SRDO通信周期的特定时间点,发送方将封装好的数据包发送到总线上。这可以通过CAN总线等通信媒介实现。
- 接收方接收数据:接收方设备(例如控制器、监控系统)在相同的周期内监听总线,接收发送方发送的数据包。
- 数据解析和处理:接收方解析接收到的数据包,提取出数据对象的值和其他信息。然后,根据数据对象的类型,可能会执行相应的控制操作,或者将数据存储供后续分析使用。
- 错误检测和纠正:在数据传输过程中,接收方会检测数据包中的错误,例如循环冗余校验(CRC)来确保数据的完整性。如果发现错误,接收方可能会尝试纠正错误,或者向发送方请求重新传输。
周期性重复:以上步骤会在每个通信周期内重复进行,以实现周期性的数据传输。上图中的流程是一次数据传输的流程。
注意:SRDO不能通过RTR(Remote transmission request)传输。
全局故障安全命令GFC
GFC的作用
GFC是为了加速系统的反应时间,如果消费者至少已经接收到了一次有效的传输,则GFC命令生效,它在CAN网络中仅允许一次反应。因此,GFC的使用是可选的,它基于事件驱动,并不安全(没有周期性时间预期)。
写入GFC
GFC仍然遵循CiA 301中规定的生产者-消费者推送模型,该服务是未确认的,SRDO将随着GFC传输。
GFC属性:
用户类型 | {生产者,消费者} |
数据类型 | nil(无特定数据类型) |
GFC协议
网络初始化与系统启动
网络安全的初始化流程
网络初始化流程由NMT主站应用程序或者配置应用程序来进行控制,在网络中NMT主站只有一台。
在步骤1中设备处于NMT预运行状态,该状态在上电后自动进入。在此状态下,通过默认的SDO可以访问设备,使用的CAN-ID是根据预定义的连接集分配的。在这一步中,对所有支持参数配置的设备进行参数配置,其中一些配置数据是与安全相关的。因此,应采取额外的措施来确保网络中的安全功能。
这是通过保存在默认SDO客户端设备上的配置应用程序或工具完成的。对于支持这些功能的设备,可以通过默认的SDO对象执行PDO的选择或配置、应用对象的映射(PDO映射)、SRDO的选择和配置、应用对象的映射(SRDO映射)、额外SDO的配置,并且可选择通过默认的SDO对象进行COB-ID的设置。
在许多情况下,配置是不必要的,因为所有应用和通信参数都已定义为默认值。
如果应用程序需要在网络中同步所有或部分节点,可以在可选的步骤2中启动适当的机制。它可以用于确保在进入步骤5中的NMT状态操作之前,除了安全节点外的所有设备都通过SYNC对象进行同步。在进入NMT状态预运行后的第一个SYNC对象传输在1个同步周期内开始。
设备安全的NMT状态
设备的安全状态不是CANopen通信状态。
预操作
在 NMT 预运行状态中,通过 SDO 进行通信是可能的,但 SRDO 和 PDO 通信是不允许的。配置 SRDO、PDO、设备参数以及分配应用对象(PDO 映射)可以由配置应用程序执行。可以通过发送 Start_Remote_Node 请求直接将设备切换到 NMT 状态操作。在 NMT 预运行状态中,应用程序处于安全状态。
操作
在 NMT 预操作状态中,SRDO 和 PDO 通信是活动的,但 SDO 写访问是不可能的。对于安全应用来说,这是唯一的工作状态(例如,电机打开)。只有在这种状态下才支持安全通信。
停止
将安全设备切换到 NMT 停止状态会将通信限制为 NMT 消息,应用程序应处于安全状态。
NMT状态与COB的关系
下表总结了NMT状态与COB之间的关系,列出的COB上的服务只有在设备处于适当的NMT状态之一时才会被执行。
初始化 | 预操作 | 操作 | 停止 | |
PDO(过程数据对象) | 允许 | |||
SDO(服务数据对象) | 允许 | 允许 | ||
SRDO(安全数据对象) | 允许 | |||
SYNC(同步对象) | 允许 | 允许 | ||
Time Stamp(时间戳对象) | 允许 | 允许 | ||
紧急对象(Emergency) | 允许 | 允许 | ||
Boot-up对象 | 允许 | |||
NMT对象 | 允许 | 允许 | 允许 |
预定义连接集
在CANopen协议中,预定义连接集(Predefined Connection Set)是一种用于配置和管理CANopen设备之间通信的机制,用于定义设备之间的数据传输关系。预定义连接集的作用在于实现设备间的实时数据交换和协同操作,使得不同设备能够有效地共享信息并协调工作,预定义连接集是一种强制性的默认标识符分配方案。
广播对象GFC的预定义连接集:
对象 | 功能码 | CAN-IDs |
GFC(Global fail-safe command) | 0000b | 1(001h) |
点对点对象的连接集:
对象 | 功能码 | CAN-IDs | 通讯参数的索引 | 通道方向 | |
普通数据 | 补充数据 | ||||
SRDO(nmode-ID 1-32) | 0010b | 101h-13Fh | 102h-140h | 1301h-1340h | TX |
SRDO(node-ID 33-64) | 0010b | 141h-17Fh | 142h-180h | 1301h-1340h | RX |
对象字典
CANopen协议的对象字典(Object Dictionary)是一种重要的数据结构,用于描述和存储CANopen设备的参数、配置、状态信息以及其他相关数据。对象字典在通信系统中主要有以下几个作用:
- 数据存储和管理:对象字典用于存储设备的各种参数、配置和状态信息。这些信息可以包括设备的标识、通信参数、工作模式、状态指示等。
- 数据交换:设备之间可以通过对象字典交换数据。例如,一个设备可以将其状态信息存储在对象字典中,其他设备可以读取这些信息来了解该设备的状态。
- 通信配置:对象字典中可以定义通信参数,如节点ID、波特率等。这些参数可以影响设备在CAN总线上的通信方式。
- 数据交互:对象字典中可以定义用于数据交换的各种对象。这些对象可以是实际的过程数据,如传感器测量值,也可以是配置参数,如控制器的设定值。
- 标准化和互操作性:CANopen协议规定了一套标准的对象字典结构和对象类型,这有助于不同供应商的设备能够共同工作,实现互操作性。
- 设备识别和配置:对象字典中的一些参数和标识符可以用于设备的识别和配置。通过读取对象字典,其他设备或系统可以了解设备的特性和能力。
- 数据表示:对象字典中定义了不同数据对象的类型、单位、范围等信息,从而确保数据的正确解释和使用。
- 运行时访问:通过对象字典,设备可以在运行时读取和写入参数,实现实时的配置和控制。