CANopen协议理解

  • 网络管理(NMT)

  • NMT管理涉及到一个CANopen节点从上电开始的6种状态:

  • 初始化:节点上电后,对功能部件包括CAN控制器进行初始化;

  • 应用层复位:节点中的应用程序复位(开始),比如开关量输出,模拟量输出的初始值;

  • 通讯复位:节点中的CANopen通讯复位(开始),从这个时刻起,此节点就可以进行CANopen通讯了。

  • 预操作状态:节点的CANopen通讯处于操作就绪状态,此时此节点不能进行PDO通信,而可以进行SDO,进行SDO参数配置以及NMT网络管理操作。

  • 操作状态:节点收到NMT主机发来的启动命令后,CANopen通讯被激活。PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以对节点进行数据传输和参数修改。

  • 停止状态:节点收到NMT主机发来的停止命令后,节点的PDO通信被停止,但SDO和NMT网络管理依然可以对节点进行操作。

  • NMT节点状态切换命令

  • 格式:CANID------》000h,具备最高的CAN优先级。数据为2个字节

  • 第一个字节------》命令类型

  • 01h为启动命令(让节点进入操作状态)

  • 02h为停止命令(让节点进入停止状态)

  • 80h为进入预操作状态(让节点进入预操作状态)

  • 81h为复位节点应用层(让节点的应用恢复初始状态,比如列车车门都恢复打开状态)

  • 82h为复位节点通讯(让节点的CAN 和CANopen通讯重新初始化,一般用于总线受到干扰,导致节点总线错误,或者总线关闭)

  • 第二个字节-------》被控制的节点Node-ID

  • 如果要对整个网络所有节点同时进行控制,则这个数值为0即可。

  • 过程数据对象PDO(Process data object)

  • PDO属于过程数据,用来传输实时数据,即单向传输,无需接收节点回应CAN报文来确认,从通信术语上来说是属于“生产消费”模型。

  • PDO的CAN-ID(COB-ID)范围

  • PDO通信比较灵活,广义上只要符合PDO范围内的所有CANID都可以作为节点自身的TPDO或者RPDO使用,也称为COB-ID,不受功能码和Node-ID限制。

  • PDO传输形式

  • 同步传输

  • 通过同步报文让所有节点能在同一时刻进行上传数据或者执行下达的应用指令。

  • 周期传输:通过接收同步对象(SYNC)来实现,可以设置1~240个同步对象触发。

  • 非周期传输:由远程帧预测触发或者由设备子协议中规定的特定事件预触发传送。

  • 异步传输(由特定事件触发,目前均采用第一种)

  • 第一种:由设备子协议中规定的对象特定事件来触发。

  • 第二种:通过发送与PDO的COB-ID相同的远程帧来触发PDO的发送。

  • PDO的通信参数

  • 定义了该设备所使用的COB-ID、传输类型和定时周期等。RPDO通讯参数位于对象字典索引的1400h to 15FFh,TPDO通信参数位于对象字典索引的1800h to 19FFh。

  • PDO的映射参数

  • RPDO通信参数1400h to 15FFh,映射参数1600h to 17FFh,数据存放在2000h 之后厂商自定义区域;TPDO通讯参数1800h to 19FFh,映射参数1A00h to 1BFFh,数据存放在2000h之后厂商定义区域。

  • 服务数据对象SDO(Service data object)

  • SDO主要用于CANopen主站对从节点的参数配置,服务确认是SDO最大的特点,为每一个消息都生成一个应答,确保数据传输的准确性。在一个CANopen系统中,通常CANopen从节点作为SDO服务器,CANopen主节点作为客户端(称为CS通讯)。

  • 通讯原则

  • 发送方(客户端)发送CAN-ID为600h + Node-ID的报文,其中Node-ID为接收方(服务器)的节点地址,数据长度均未8字节

  • 接收方(服务器)成功接收后,回应CAN-ID为580h+Node-ID的报文。这里的Node-ID依然是接收方(服务器)的节点地址,数据长度均为8字节。

  • 快速SDO协议

  • 所谓快速就是1次来回搞定,前提是读取和写入的值不能大于32位。命令中直接包含了要读写的索引、子索引、数据。

  • CS命令符:

  • 写命令符

  • 2Fh:写一个字节

  • 2Bh:写两个字节

  • 27h:写三个字节

  • 23h:写四个字节

  • 60h:写成功应答

  • 读命令符

  • 40h:读取

  • 4Fh:读响应一个字节

  • 4Bh:读响应两个字节

  • 47h:读响应三个字节

  • 43h:读响应四个字节

  • 80h错误响应

  • 普通SDO协议

  • 同步协议

  • 同步(SYNC),该报文对象主要实现整个网络的同步传输。每个节点都以该同步报文作为PDO触发参数,因此该同步报文的COB-ID具有比较高的优先级以及最短的传输时间。一般选用80h作为同步报文的CAN-ID。

  • 约束条件

  • 同步窗口时间:索引1007h约束了同步帧发送后,从节点发送PDO的时效,即在这个时间内发送的PDO才有效,超过时间的PDO将被丢弃。

  • 通信循环周期:索引1006h规定了同步帧的循环周期。

  • 时间戳协议应答

  • 时间戳协议采用广播方式,无需节点,CAN-ID为100h,数据长度为6,数据为当前时刻与1984年1月1日0时的时间差。节点收到后,将此时间存储到对象字典1012h的索引中。

  • 紧急报文协议

  • 紧急事件对象(Emergency),是当设备内部发送错误,触发该对象,发送设备内部错误代码,提示NMT主站。紧急报文属于诊断性报文,一般不会影响CANopen通信,其CAN-ID存储在1014h的索引中,一般会定义为080h+node-ID,数据包含8个字节。

  • 与PDO的生产禁止时间类似,紧急报文也有生产禁止时间,存储在对象字典的1015h中,为了限制节点不断发送紧急报文,导致总线负载过大。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CANopen协议文档是描述CANopen协议的一份文件,用于指导CANopen网络的设计、配置和实施。CANopen协议是基于CAN总线的开放式通信协议,用于在工业自动化和机器控制系统中实现设备之间的通信。 CANopen协议文档主要包括以下内容: 1. 协议介绍:文档会对CANopen协议的发展背景、目的和重要性进行介绍,以便读者理解协议的应用领域和价值。 2. 协议结构:文档会详细描述CANopen协议的结构和层次,包括物理层、数据链路层、网络层和应用层。每个层级的功能和特点会被解释和说明,以便读者了解协议的组成部分和通信流程。 3. 对象字典:文档会列出CANopen协议中使用的对象字典,并解释每个对象的作用和属性。对象字典是CANopen协议中的核心概念,用于定义设备的功能和参数,读者可以根据文档中的说明进行对象字典的配置和应用。 4. 通信机制:文档会介绍CANopen协议中的通信机制,包括消息传输、节点控制和网络管理等方面。读者可以通过文档了解CANopen协议的通信规则和操作方法。 5. 应用示例:文档会提供一些实际应用场景的示例,以便读者理解CANopen协议在不同领域的应用方式和效果。 总之,CANopen协议文档是一份详细的指南,用于向读者介绍CANopen协议的基本概念、实现方法和应用技巧。通过阅读和理解这份文档,读者可以更好地使用和应用CANopen协议,实现设备之间的高效通信和协同工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值