热度 6
2022-8-31 10:15
2169 次阅读|
0 个评论
目前, CANopen 通讯协议已经在工业领域得到了广泛的使用,由于其面向对象的设计思路, CANopen 协议已成为欧洲等国家的自动化公司标配的通讯接口之一。在本系列文章中,我们将介绍 CANopen 协议的基础内容,包括对象字典、服务、 SDO 、 PDO 和主 / 从站节点等。 一、对象字典 在 7 个 CANopen 服务中, PDO 和 SDO 服务特别重要,因为它们构成了大多数 CANopen 通信的基础。下面我们将进行详细介绍,但在此之前我们需要了解 CANopen 的一个核心概念:对象字典。 所有的 CANopen 节点必须有一个对象字典( OD ),对象字典是一个标准化结构,包含描述 CANopen 节点行为的所有参数。 OD 条目通过一个 16 位的索引和 8 位的子索引进行查询。例如,符合 CANopen 标准的节点 OD 的索引 1008 (子索引 0 )包含节点设备名称。 具体来说,对象字典中的条目由属性定义的: 索引:对象的 16 位地址 对象名称:制造商的设备名称 对象代码:数组、变量或记录 数据类型:例如 VISIBLE_STRING 、 UNSIGNED32 或记录名称 访问: “ rw ”(读 / 写),“ ro ”(只读)或 “ wo ”(只写) 类别:这表明参数是强制性的还是可选的 OD 标准化部分 在对象字典被分成标准化的部分中,有一些条目是强制性的,而另一些是完全可定制的。重要的是,一个设备(例如一个从站设备)的 OD 条目可以被另一个设备(例如一个主设备)通过 CAN 访问,例如使用 SDO 。 这可以让主站改变从站节点是否通过特定的输入传感器记录数据,或改变从站发送心跳的频率。阅读电子数据表和设备配置文件可以帮助理解 OD 。 电子数据表 (EDS) 在实践中,配置 / 管理复杂的 CANopen 网络将会用到一些合适的软件工具。为了简化这一点, CiA 306 标准定义了一种人类可读且和机器友好的 INI 文件格式,作为设备 OD 的“模板” -- 例如 “ ServoMotor3000 ”。此 EDS 通常由供应商提供,包含所有设备对象(但不包括值)的信息。 设备配置文件( DCF ) 假设一家工厂购买了一台 ServoMotor3000 ,以整合到他们的传送带上。在操作过程中,操作员编辑了设备的 EDS ,并在 EDS 中添加了特定的参数值或改变了每个对象的描述名称。这样一来,操作者就有效地创建了所谓的设备配置文件( DCF )。有了这个文件, ServoMotor3000 便能够集成到现场的特定 CANopen 网络中。 查看真实的 EDS/DCF 示例是理解 CANopen 对象字典的最佳方法之一,在下图中,您可以留意 EDS 和 DCF 对象条目之间的区别以及 DCF 如何包含特定的参数值。 此外,我们建议到官网上查看 CiA 306 标准,通过实际的例子对 OD 、 EDS 和 DCF 有更深入的了解。 如前文所述, DCF 通常在设备集成时创建。然而,经常需要在初始配置后读取或改变一个节点的对象值——这就是 SDO 服务的作用所在。 二、SDO——配置CANopen网络 SDO 服务允许 CANopen 节点通过 CAN 网络读取 / 编辑另一个节点的对象字典的值。正如在“通信模型”中提到的, SDO 服务使用“客户端 / 服务器”模式。具体来说,一个 SDO “客户端”与一个专门的 SDO “服务器”发起通信。其目的可以是更新一个 OD 条目(称为“ SDO 下载”)或读取一个条目(“ SDO 上传”)。在简单的主 / 从网络中,具有 NMT 主站功能的节点充当所有 NMT 从站节点读取或写入其 OD 的客户端。 示例:客户端节点 SDO 下载 客户端节点可以通过在 CAN 帧下方的广播来启动到节点 5 的 SDO 下载 - 这将触发节点 5 (并被其他节点忽略,见上图)。 SDO “接收”(即请求) CAN 帧如下所示: SDO 消息变量解释 首先, COB-ID 605 反映了“ SDO 接收”的使用( COB-ID 600 + 节点 ID ) CCS (客户端命令指定符)是传输类型(例如, 1 :下载, 2 :上传) n 是字节区 4-7 中不包含的字节数(如果 e 和 s 被设置为有效) e 表示“加速传输”,且所有数据都在单个 CAN 帧中(如果有设置) s 表示数据大小显示为 n (如果有设置) 索引( 16 位)和子索引( 8 位)反映了要访问的 OD 地址 最后,节点 5 将相应字节 4-7 中包含的相关数据 一旦主站节点(客户端)发送 CAN 帧,从站节点 5 (服务器)通过 COB-ID 585 的“ SDO 传输”进行响应。响应包含索引 / 子索引和 4 个空数据字节。自然,如果客户端节点请求上传(即从节点 5OD 读取数据),节点 5 将响应字节 4-7 中包含的相关数据。此外,对于更大的数据场景,可以使用 SDO 分段 / 块进行传输。 一般来说, SDO 很灵活,但也会带来较高的成本,这使得 SDO 不太适合实时操作数据。这就是 PDO 的用武之地。 三、PDO——操作CANopen网络 CANopen 的 PDO 服务用于在 CANopen 节点之间有效地共享实时操作数据。例如, PDO 将携带来自压力传感器的压力数据或来自温度传感器的温度数据。原则上, SDO 服务也能实现共享实时操作数据,但由于单个 SDO 响应只能携带 4 个数据字节,出于成本原因,我们不建议这么做。 此外,假设一个主站节点需要来自节点 5 的两个参数值(例如“ SensTemp2 ”和“ Torque5 ”)。如果通过 SDO 来实现,需要 4 个完整的 CAN 帧( 2 个请求和 2 个响应)。相比之下,一个 PDO 消息可以包含 8 个完整的数据字节,而且它可以在一个帧内包含多个对象参数值。因此,在 SDO 服务中至少需要 4 个报文,而在 PDO 服务中则可能只需要 1 个报文就可以完成。 PDO 通常被看作是最重要的 CANopen 协议,因为它承载了大量的信息。下面我们将介绍 CANopen 的 PDO 服务是如何工作的。 PDO 服务使用的是“消费者 / 生产者”模型。因此,生产者 " 生产数据 " ,它使用发送 PDO ( TPDO )将其传送给“消费者”(主站)。反之,它可以通过“接收 PDO ”( RPDO )从消费者那里接收数据。 例如,生产者节点可以被配置为对应的同步触发,例如每隔 100ms 广播给消费者。然后,节点 5 可以在传输带有 COB-ID 185 的 PDO 下广播: 请注意这里的数据字节是如何装入 3 个参数值的。这些值反映了节点 5 的特定 OD 条目的实时数据。使用这些信息的节点(消费者)需要知道如何解释 PDO 数据字节。 在某种程度上, PDO 服务有点像 J1939 PGN 和 SPN ,这类似于特定 J1939 参数组 (PG) 如何在 8 个数据字节中包含多个 SPN/ 信号(也称为数据参数)。 J1939 CAN 帧不需要在“解码”信息上浪费数据字节,因为相关节点(以及外部工具通过例如 J1939 DBC 文件或 J1939 PDF 标准)知道这一点。问题在于,在 CANopen 中,这些“ PDO 映射”通常是可配置的,并且可以在创建 DCF 或通过 SDO 服务期间进行更改。 四、虹科 CANopen 解决方案 1. 虹科 CANopen 数据记录仪—— CANedge2 CANopen 经常被用于仓库中的电动叉车或自动导引车中,对 CANopen 数据进行监测和分析有利于改善管理,比如监测充电状态有助于减少故障和改善电池寿命,并且工业机械可以通过云端的物联网 CAN 记录器进行监控,根据 CANopen 数据预测和避免故障。此外, CAN 记录器可以作为工业机械的“黑匣子”,提供数据用于解决 OEM 和用户之间的纠纷,或作为罕见问题诊断的一部分。 2. 虹科 CANopen IO 模块 虹科 HK-CIO 系列是支持 CANopen 协议的远程 IO 模块, IO 类型包含数字量,模拟量,高速计数器,脉冲输出, PWM , PT100/1000 等,紧凑型设计,支持 DIN 导轨安装, IO 与 CANopen 通讯之间相互电气隔离。 3. 虹科 CANopen 协议开发方案 虹科 CANopen 源代码实施全功能符合 CiA 301 标准草案,支持快速且标准地开发你的 CANopen 主站或从站设备,包括 NMT 主站(网络管理)、 LSS 主站(层设置服务)或 SDO 客户端。