学习CAN总线基础知识时,会遇到很多不懂的问题,其中CANopen协议作为CAN总线的高层协议,往往是CAN总线入门学习的门槛,涉及的基本概念比较多,也比较抽象,今天凭借广成的CANopen主从站设备,为大家介绍下CANopen协议。
工具/原料
广成CANopen主从站设备
CANopen基本概念
1、CANopen 是在 CAL 基础上开发的, 使用了 CAL 通讯和服务协议子集, 提供了分布式控制系统的一种实现方案。 CANopen 在保证网络节点互用性的同时允许节点的功能随意扩展:或简单或复杂
2、CANopen 的核心概念是设备对象字典 ( OD: Object Dictionary), 在其它现场总线 ( Profibus, Interbus-S)。系统中也使用这种设备描述形式。注意:对象字典不是 CAL 的一部分,而是在 CANopen 中实现的。
CANopen协议-对象字典OD
1、对象字典( OD: Object Dictionary)是一个有序的对象组;每个对象采用一个 16 位的索引值来寻址,为了允许访问数据结构中的单个元素, 同时定义了一个 8 位的子索引。
2、CANopen 网络中每个节点都有一个对拇峨镅贪象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。一个节点的对象字典是在电子数据文档( EDS: Electron足毂忍珩ic Data Sheet)中描述或者记录在纸上。不必要也不需要通过 CAN-bus“ 审问”一个节点的对象字典中的所有参数。如果一个节点严格按照在纸上的对象字典进行描述其行为,也是可以的。节点本身只需要能够提供对象字典中必需的对象(而在 CANopen规定中必需的项实际上是很少的),以及其它可选择的、构成节点部分可配置功能的对象。
CANopen协议-子协议
1、通讯子协议( communication profile),描述对象字典的主要形式和对象字典中的通讯子协议区域中的对象,通讯参数。同时描述 CANopen 通讯对象。这个子协议适用于所有的 CANopen 设备。
2、还有各种设备子协议( device profile), 为各种不同类型设备定义对象字典中的对象。 目前已有 5 种不 同的设备子协议,并有几种正在发展。 设备子协议为对象字典中的每个对象描述了它的功能、 名字、 索引和子索引、 数据类型, 以及这个对象是必需的还是可选的,这个对象是只读、只写或者可读写等等。
CANopen协议-CANopen通讯
1、CANopen 通讯模型定义了 4 种报文(通讯对象): 1. 管理报文 2. 服务数据对象 SDO(Service Data Object) 3. 过程数据对象 PDO( Process Data Object) 4. 预定义报文或者特殊功能对象
CANopen协议-CANopen 预定义连接集
1、为了减小简单网络的组态工作量, CANopen 定义了强制性的缺省标识符( CAN-ID)分配表。这些标志符在预操作状态下可用, 通过动态分配还可修改他们。 CANopen 设备必须向它所支持的通讯对象的提供相应的标识符。缺省 ID 分配表是基于 11 位 CAN-ID,包含一个 4 位的功能码部分和一个 7 位的节点 ID(Node-ID)部分。
2、Node-ID 由系统集成商定义, 例如通过设备上的拨码开关设醅呓择锗置。 Node-ID 范围是 1~127( 0 不允许被使用)。预定义的连接集定义了 4 个接收 PDO( Receive-PDO), 4 个发送 PDO( Transmit-PDO), 1 个 SDO(占用 2 个 CAN-ID), 1 个紧急对象和 1 个节点错误控制(Node-Error-Control)ID。也支持不需确认的NMT-Module-Control 服务, SYNC 和 Time Stamp 对象的广播。缺省 ID 分配表如表 3-3 所示。
CANopen协议-CANopen标识符分配
1、ID 地址分配表与预定义的主从连接集( set) 相对应, 因为所有的对等 ID 是不同的, 所以实际上只有一个主设备(知道所有连接的节点 ID)能和连接的每个从节点(最多 127 个)以对等方式通讯。两个连接在一起的从节点不能够通讯,因为它们彼此不知道对方的节点 ID。比较上表的 ID 映射和 CAL 的映射, 显示了具有特定功能的 CANopen 对象如何映射到 CAL 中一般的CMS 对象。
2、CANopen 网络中 CAN 标识符(巡綮碣褂或 COB-ID)分配 3 种不同方法: 1.使用预定义的主从连接集。 ID 是缺省的, 不需要配置。 如果节点支持, PDO 数据内容也可以配置。2.上电后修改 PDO 的 ID(在预操作状态), 使用(预定义的) SDO 在节点的对象字典中适当位置进行修改。3. 使用 CAL DBT 服务: 节点或从节点最初由它们的配置 ID 指称。 节点 ID 可以由设备上的拨码开关配置, 或使用 CAL LMT 服务进行配置。 当网络初始化完毕, 并且启动后, 主节点首先通过”Connect_Remote_Node”报文(是一个 CAL NMT 服务) 和每个连接的从设备建立一个对话。一旦这个对话建立, CAN 通讯 ID( SDO 和 PDO)用 CAL DBT 服务分配好, 这需要节点支持扩展的 boot-up