CAN OPEN协议--学以致用


最近项目上用到了CAN OPEN协议的电机驱动器,结合驱动器手册研究一下CAN OPEN协议。学以致用,记录一下。

协议介绍

CAN OPEN协议在ISO 7层网络模型中处于应用层,CAN现场总线处于物理层,CAN OPEN协议是建立在CAN物理层基础上,对器帧ID和数据内容的含义进行重新定义。
CAN OPEN协议通常分为:

  • 应用层:用户根据实际应用编写的应用对象。
  • 对象字典:描述了应用对象和CAN OPEN报文之间的关系。
  • 通讯:数据交互部分,本文重点。
    在这里插入图片描述

CAN OPEN协议特点

小网络,控制信号的实时通讯协议。可以突发发送数据。

  • 报文采用CAN标准帧,有11bit的ID域。
  • 网络控制报文均采用数据最小字节数。比如心跳报文,只有 1 个字节数据。
  • 需要接收方确认的配置参数一般都是采用快速单字传输。即 1 个报文最多传送 1 个 32 字节的参数变量,避免了分帧引起的实时性降低。

网络管理(NMT)与特殊协议(Special protocols)报文 ID 分类

为了稳定可靠可控,都需要设置一个网络管理主机,所有节点的启动、停止都是由他进行指挥。又称为 CANopen 主站。
NMT 主机和 NMT 从机之间通讯的报文就称为 NMT 网络管理报文。管理报文负责层管理、网络管理和 ID 分配服务。例如,初始化、配置和网络管理(其中包括节点保护)。网络管理中,同一个网络中只允许有一个主节点、一个或多个从节点,并遵循主从模式。
为了协调各个节点的同步、心跳、时间、错误提示等通讯控制,CANopen 还定义了一系列特殊协议(Special protocols)报文。

在这里插入图片描述

NMT网络管理命令

CANopen 主节点通过发送 NMT 报文控制从节点的启动、停止、运行等状态切换,主节点发送 NMT 控制命令功能码为 000。
在这里插入图片描述

  • demo
ID: 0x0000		数据:01 01 00 00 00 00 00 00		//启动1号子节点

报文ID分类

CANopen 协议中的各种通讯对象通过 11 位标识符中的功能码部分(10-7 位)进行分别,CAN 网络中各个从节点的 ID 用 Node-ID(6-0 位)表示,最多可以有 127 个从节点。
在这里插入图片描述
在这里插入图片描述

过程数据对象(PDO)和服务数据对象(SDO)

用户应用 CANopen 时,需要传递的配置信息和应用信息都是放在过程数据对象 PDO(Process data object)和服务数据对象 SDO (Service data object)里面。

PDO 和 SDO 的通讯区别:

  • PDO 属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型。
  • 而 SDO 属于服务数据,有指定被接收节点的地址(Node-ID),并且需要指定的接收节点回应 CAN 报文来确认已经接收,如果超时没有确认,则发送节点将会重新发送原报文。这种通讯方式属于常见的“服务器客户端”的通信模型,即我们通常所说的轮询式。

过程数据对象(PDO)

PDO 分为 TPDO(发送 PDO)和(接收 RPDO),发送和接收是以 CANopen 节点自身为参考(如果 CAN 主站或者其他从站就相反)。

PDO传输形式
  • 同步传输
  • 异步传输

服务数据对象(SDO)

SDO 用来访问一个设备的对象字典。访问者被称作客户(client),对象字典被访问且提供所请求服务的 CANopen 设备被称作服务器(server)。客户的 CAN 报文和服务器的应答 CAN 报文总是包含 8 字节数据(尽管不是所有的数据字节都一定有意义)。一个客户的请求一定有来自服务器的应答。

通讯原则

SDO 的通讯原则非常单一,发送方(客户端)发送 CAN-ID 为 600h+Node-ID 的报文,其中 Node-ID 为接收方(服务器)的节点地址,数据长度均为 8 字节;
接收方(服务器)成功接收后,回应 CAN-ID 为 580h+Node-ID 的报文。这里的 Node-ID依然是接收方(服务器)的节点地址,数据长度均为 8 字节。

  • 报文基本格式
byte0byte1byte2byte4~7
SDO命令字索引子索引数据
快速SDO协议

SDO中最常见的就是快速SDO模式。所谓快速,就是 1 次来回就搞定。前提是读取和写入的值不能大于 32 位。如图 8.3 所示,为快速 SDO 协议的示意图。命令中直接包含了 要读写的索引、子索引、数据。
在这里插入图片描述

  • demo
    设备子节点ID:0x01,对象字典如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ID			数据
601		2F 60 60 00 01 00 00 00		//设置驱动为位置模式,1:位置模式	3:速度模式		4:力矩模式
601		2B 40 60 00 06 00 00 00		//驱动器切换至 ready to switch on 状态
601		2B 40 60 00 07 00 00 00		//驱动器切换至switch on 状态
601		2B 40 60 00 0F 00 00 00		//驱动器切换至 operation enable 电机伺服使能
601		23 81 60 00 88 13 00 00		//设置位置模式下速度 500r/min,单位0.1r/min。
601		23 7A 60 00 FF 7F 0F 00		//设置电机转动15.5圈,65535个脉冲转一圈。1015807
601		23 83 60 00 F4 01 00 00		//设置加减速时间500ms
601		2B 40 60 00 1F 00 00 00		//驱动器执行指令
普通SDO协议
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值