CANopen 是一个开放式工业标准通讯协议和设备协议规范 (EN 50325-4),它基于 Controller Area Network (CAN) 协议。“第 7 层”协议专为嵌入式网络应用而开发,为基于 CAN 的系统定义通讯和设备功能。
CANopen 支持循环和事件驱动型通讯,让您能够最大程度降低总线负载,同时仍保持较短的响应时间。
PDO 是可以为通讯接口提供过程数据并使这些数据进行实时交换的对象。CANopen 设备上的 PDO 集合描述此设备与其在网络上的通讯合作伙伴之间的隐式交换。PDO 的交换在设备处于“OPERATIONAL”模式得到授权。
PDO 分为两种不同的类型:
传输 PDO (TPDO):设备传输的 PDO
接收 PDO (RPDO):设备接收的 PDO
TM3 CANopen 总线耦合器 支持三种 PDO 传输模式:
传输代码类型 |
传输模式 |
描述 |
---|---|---|
0 |
非循环 - 同步 |
在事件发生后的第一条 消息时发送 PDO |
1-240 |
循环 - 同步 |
每 x 条 消息发送 PDO,其中 x 可配置为 1 至 240 |
255(缺省) |
异步 |
事件发生时,发送 PDO |
另有两个选项与事件触发的 PDO 相关:
Inhibit Time:Inhibit Time 实用程序用于定义传输新 PDO 前的最小时间延迟。在连续快速发生大量事件的情况下,这能够避免总线过载。Inhibit Time 以 100 微秒的倍数表示。
此功能可用于类型 255(异步)传输。
下表显示了值的示例:
值(十进制) |
定时(毫秒) |
---|---|
0 |
0 |
10 |
1 |
100 |
10 |
1000 |
100 |
10000 |
1000 |
65535 |
6553.5 |
: 用于定义到期时间延迟,在达到这个延迟后,即使状态没有变化,也会强制传输 PDO。 以毫秒表示。
此功能可用于类型 255(异步)传输。
下表显示了值的示例:
值(十进制) |
定时(毫秒) |
---|---|
0 |
0(禁用定时器) |
10 |
10 |
100 |
100 |
1000 |
1000 |
10000 |
10000 |
65535 |
65535 |
SDO 允许使用显式请求访问设备数据。当设备处于“OPERATIONAL”或“PRE-OPERATIONAL”状态时,SDO 服务可用。
SDO 分为两种不同的类型:
读取 SDO(下载 SDO)
写入 SDO(上传 SDO)
SDO 协议基于“客户端/服务器”模型。对于下载 SDO,客户端(通常是控制器)发送指示要读取的对象的请求。服务器(在这里是总线耦合器)返回对象中包含的数据。对于上传 SDO,客户端(通常是控制器)发送指示要写入的对象及其期望值的请求。上传了对象之后,服务器(在这里是总线耦合器)返回确认消息。
如果 SDO 无法被服务器(总线耦合器)处理,服务器会返回错误代码(中止代码)。这同时适用于下载 SDO 和上传 SDO。如果服务器未在预先配置的时间期限(SDO 超时)内做出响应,客户端将下发 SDO 超时中止代码。
错误控制协议用于检测网络上的通讯错误。这包括两种协议:节点保护和 heartbeat。这两种监控机制在 CANopen 系统中尤其重要。连接到总线的设备不会定期指示它们的运行模式,尤其是当通过 来控制时。
在这个协议中,NMT 主站(通常是控制器)以定期的时间间隔轮询每个 NMT 设备(比如,总线耦合器),这个时间间隔被称为1029H 中配置的状态,并生成 life guarding 事件。如果是总线耦合器,则会切换至对象 中配置的状态(如果对象 保持缺省设置),且会启用故障预置管理并生成保护事件。 的定义如下: = x 。对象 包含以毫秒表示的保护时间参数。对象 包含 参数。不同设备的 和 配置可不相同。
。设备以其 NMT 状态做出响应。如果在规定时长(被称为 )后设备未接收到轮询,此设备切换至对象当两个参数中的任一者(
或 )被设置为 0(缺省配置)时,设备不执行监控。要激活随时监控,您必须至少在对象 中输入值(最小为 2),并在对象 中指定时间(以毫秒计)。参数的典型值介于 200 毫秒与 2 秒之间。
为了帮助保持更可靠更安全的操作,输入的
(对象 )必须不小于 2。如果使用值 1,并且如果因处理高优先级消息或因节点保护主站上的内部处理导致出现延迟,设备可能意外切换至对象 中配置的状态。警告 | |
---|---|
监视可以按以下方式执行:
相位 |
说明 |
---|---|
1 |
主站设置要监控的设备 Guarding-CobID 上的 (或 请求消息)。 |
2 |
相关设备通过发送 消息来响应。此消息包含设备的 以及在发送每个消息后改变的 。 |
3 |
NMT(网络管理电报)主站将 与 信息进行比较:如果它们不是预期的状态,或者如果未接收到响应,则 NMT 主站认为在设备上检测到错误。 |
设备的网络状态由其余七个位来指示:
网络状态 |
响应(十六进制) |
---|---|
‘STOPPED’ |
04H 或 84H |
‘PRE-OPERATIONAL’ |
7FH 或 FFH |
‘OPERATIONAL’ |
05H 或 85H |
在这个协议中,生产者根据对象 CANopen 状态,且会启用故障预置管理并生成 事件。
中配置的 参数(毫秒)定期传输 消息。负责监控此消息的设备拥有在对象 中配置的 参数(毫秒)。如果在消费者设备的配置时间内未接收到生产者 消息,设备会生成 事件。如果是总线耦合器,则会切换至对象 1029H 中配置的消息以字节来指示设备状态,该字节由以下元素组成:
最高有效位,其被保留且值始终为 0
7 个最低有效位,其提供生成
消息的设备的状态可能的值如下:
生产者的状态 |
值(十进制) |
---|---|
BOOT-UP |
0 |
STOPPED |
4 |
OPERATIONAL |
5 |
PRE-OPERATIONAL |
127 |