大纲
前沿:以问题为导向学习是最高效的,本文主要讲述在学习Canopen协议中的一些疑惑点,
分享一些学习心得,不讲协议本身的内容。
1.主机和从机的概念?
2.PDO和SDO的区别是什么?
3.OD存在的意义是什么?
4.心跳检测的意义?0x00、0x05、0x7f?
5.COB-ID和PDO的ID有关系吗?SDO的ID是主机的ID还是从机的ID?
COB-ID = Function code+node_id
6. PDO,SDO 数据存在几个字节,心跳节点 数据存在几个字节?
7.PDO主要关系的几点? 触发方式+通讯参数和映射参数
8.SDO传输的三种方式?
9.通讯模型 : 服务器到客户端、消费者和生产者等。
10.CANOPEN 与CAN的不同点
1. 通讯模型
(1)服务器到客户端 :客户端发送数据,服务器需要回传数据 (SDO)
(2)消费者和生产者 :生产者发送数据,消费者不需要返回数据(PDO)
(3)主机和从机 Canopen协议中NMT模式控制节点的状态,启动状态、预准备状态、
工作状态、停止状态
2. 主机和从机的概念
对于从站而言发送消息给主站就是TPDO模式,其中TPDO总共有4个。
对于从站接收主站的消息就是RPDO模式,其中RPDO总共有4个。
3. PDO 和SDO、NMT区别
做出一些列相应。
模型:生产者(producter)和消费者(comsumer)模式,接收方不会返回数据值
,如改变波特率,心跳的时间以及对于模式选择的切换,通过SDO_Handle进行处理即可。
模型:客户端(client) 和服务器(service)模型
状态(4个):节点上线(boot up)、预准备节点(pre-operational)、节点运行(operational)、节点停止(stoped)
模型:主机(host)和从机(slave)
4.OD存在的意义是什么?
作为用户预先定义的数据库,实现参数的赋值给函数中的一些变量。通过功能码SDO命令修改。
通过SDO模式可以修改对象字典中的一些值。主索引,子索引相当于书的目录,上位机通过发送CS命令读写
其中的数据,实现对于全局变量的修改,如对波特率的修改、心跳时间间隔的修改等
5.心跳检测的意义?0x00、0x05、0x7f?
1.是主机检测从机的方式,从机发送心跳包,主机接收到心跳包后,才会向从机发送消息
否则主机就认为从机存在故障。
0x00 boot up 节点上线
0x7f 节点在准备状态
0x05 节点在工作状态
0x04 节点停止状态
通过这个的设置,上位机可以通过NMT命令控制节点的状态,其命令中运行的参数主要就是心跳报文的状态
=========================在编写接收函数的时候需要考虑以下设计内容============================
1.NMT mode 主机通过命令管理从机的状态,如节点的上线,预先准备状态,工作状态,停止状态,复位状态等等
1.首先通过功能模式进入NMT管理模式 COB-ID=000
2.buf[1]是节点地址,buf[0]是命令码,为什么要存在buf[1],存放的是节点的ID,判断是不是我想控制的ID即可。
通过switch方式,可以控制节点的工作状态。
2.SDO mode 主机通过命令修改相关参数实现相应的功能(节点不工作在停止状态 0x7f)(这个描述的很抽象)
特别的,SDO和PDO将节点地址放在COB-ID中,主机发送命令给从机,判断是否是相同的ID,就可以操作
相应的功能。SDO传输数据是8个字节(CS(1byte)+主索引(2byte)+子索引(1byte)+数据4byte)
3.RPDO mode 前提: (heartbeat.buf[ 0 ] = 0x05),
1. 如果主机发送消息,下位机接收到消息
2. 复制接收到的消息给一个全局变量(为了进行数据比较,不同变量之间才可以比较)
2. 从站自己做出相应的命令,如通过数据对一个引脚控制另一个引脚等等作用
6.COB-ID和PDO的ID有关系吗?SDO的ID是主机的ID还是从机的ID?
COB-ID = 功能码(7bit)+节点ID(4bit)
NMT :功能码000
SDO 功能码 581和601
PDO 功能码 181和其他总共有8个
Heartbeat 701
7. PDO,SDO 数据存在几个字节,心跳节点 数据存在几个字节?
PDO :1~8个字节长度
SDO存在8个字节 (CS+主索引+子索引+date)
HEARTBEAT心跳节点存在1个字节 (存放节点状态)
NMT模式存在2个字节 (存放控制状态与控制从机的ID)
8.PDO配置主要考虑那几点? 触发方式+通讯参数和映射参数
1)触发方式:
1.时间触发+事件触发
2.同步(sync)和异步方式
2)通讯参数 + 映射参数 :
3)同步传输和异步传输的区别:
9.SDO传输的三种方式?
SDO传输方式主要有两种,快速传输方式和普通传输方式
10.CANOPEN 与CAN的不同点
不同点的角度:从OSI 7层网络模型
普通的CAN只需要关系收发以及收发的标志位即可,收发的速度(波特率)等。
CANopen协议规范文本经过多次修改,CiA在CiA301基础上,对各个行业退出设备子协议
关于设备子协议,就是对不同行业的应用对象,对CANopen内部的数据含义进行重新定义,
或添加新的控制逻辑。
下图是描述不同协议的编号:
下图是CANopen协议的框架