打印
[应用相关]

canopen 简单的入门

[复制链接]
楼主: stm32jy
手机看帖
扫描二维码
随时随地手机跟帖
21
stm32jy|  楼主 | 2018-11-30 22:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
CANopen 对象字典(OD: Object Dictionary) 是 CANopen 协议最为核心的概念。所谓的
对象字典就是一个有序的对象组, 描述了对应 CANopen 节点的所有参数, 包括通讯数据的
存放位置也列入其索引, 这个表变成可以传递形式就叫做 EDS 文件(电子数据文档
Electronic Data Sheet) 。对象字典,就像体检表,具备这个人每个功能的参数,便于用人
单位(主站)进行合理分配工作。

使用特权

评论回复
22
stm32jy|  楼主 | 2018-11-30 22:46 | 只看该作者
每个对象采用一个 16 位的索引值来寻址,这个索引值通常被称为索引,其范围在 0x0000
到 0xFFFF 之间。为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个 8 位
的索引值,这个索引值通常被称为子索引,其范围是 0x00 到 0xFF 之间。

使用特权

评论回复
23
stm32jy|  楼主 | 2018-11-30 22:46 | 只看该作者
每个 CANopen 设备都有一个对象字典,使用电子数据文档(EDS 文件)来记录这些参
数,而不需要把这些参数记录在纸上。对于 CANopen 网络中的主节点来说,不需要对
CANopen 从节点的每个对象字典项都访问。

使用特权

评论回复
24
stm32jy|  楼主 | 2018-11-30 22:47 | 只看该作者
CANopen 对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都
描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等,
这样可保证不同厂商的同类型设备兼容。

使用特权

评论回复
25
stm32jy|  楼主 | 2018-11-30 22:52 | 只看该作者
CANopen 协议的核心描述子协议是 DS301,其包括了 CANopen 协议应用层及通信结构
描述,其它的协议子协议都是对 DS301 协议描述文本的补充与扩展。在不同的应用行业都
会起草一份 CANopen 设备子协议,子协议编号一般是 DS4xx 。

使用特权

评论回复
26
stm32jy|  楼主 | 2018-11-30 22:52 | 只看该作者
标准化设备子协议(Standardized profile area)
标准化设备子协议,为各种行业不同类型的标准设备定义对象字典中的对象。目前已有
十几种为不同类型的设备定义的子协议,例如 DS401、 DS402、 DS406 等,其索引值范围
为 0x6000~0x9FFF。 同样,这个区域对于不同的标准化设备子协议来说,相同的对象字典
项其定义不一定相同。

使用特权

评论回复
27
stm32jy|  楼主 | 2018-11-30 22:53 | 只看该作者
每个 CANopen 从节点的 CANopen 协议栈中,必须具备 NMT 管理的相应代码,这是节点具备 CANopen 协议的最基本的要素。

使用特权

评论回复
28
stm32jy|  楼主 | 2018-11-30 22:53 | 只看该作者
NMT 节点状态
NMT 管理涉及到一个 CANopen 节点从上电开始的 6 钟状态,包括:
 初始化(Initializing):节点上电后对功能部件包括 CAN 控制器进行初始化;
 应用层复位(Application Reset):节点中的应用程序复位(开始),比如开关量输
出、模拟量输出的初始值;
 通讯复位(Communication reset):节点中的CANopen通讯复位(开始),从这个时
刻起,此节点就可以进行CANopen通讯了。
 预操作状态(Pre-operational):节点的CANopen通讯处于操作就绪状态,此时此节
点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作;
 操作状态(operational):节点收到NMT主机发来的启动命令后, CANopen通讯被
激活, PDO通信启动后, 按照对象字典里面规定的规则进行传输,同样SDO也可以
对节点进行数据传输和参数修改;
 停止状态(Stopped): 节点收到NMT主机发来的停止命令后,节点的PDO通信被
停止,但SDO和NMT网络管理依然可以对节点进行操作;

使用特权

评论回复
29
stm32jy|  楼主 | 2018-11-30 22:55 | 只看该作者
NMT 节点上线报文
任何一个 CANopen 从站上线后,为了提示主站它已经加入网络(便于热插拔),或者
避免与其他从站 Node-ID 冲突。这个从站必须发出节点上线报文(boot-up),如图 6.3 所示,
节点上线报文的 ID 为 700h+Node-ID, 数据为 1 个字节 0。 生产者为 CANopen 从站。

使用特权

评论回复
30
stm32jy|  楼主 | 2018-11-30 22:57 | 只看该作者
NMT 节点状态与心跳报文
为了监控 CANopen 节点是否在线与目前的节点状态。 CANopen 应用中通常都要求在线
上电的从站定时发送状态报文(心跳报文),以便于主站确认从站是否故障、是否脱离网络。
为心跳报文发送的格式,CANID与节点上线报文相同为 700h+Node-ID,数据为 1 个字节,
代表节点目前的状态, 04h为停止状态, 05h为操作状态, 7Fh为预操作状态。

使用特权

评论回复
31
stm32jy|  楼主 | 2018-11-30 22:57 | 只看该作者
CANopen 从站按其对象字典中 1017h 中填写的心跳生产时间(ms)进行心跳报文的发
送,而 CANopen 主站(NMT 主站)则会按其 1016h 中填写的心跳消费时间进行检查,假设
超过诺干次心跳消费时间没有收到从站的心跳报文,则认为从站已经离线或者损坏。

使用特权

评论回复
32
stm32jy|  楼主 | 2018-11-30 23:10 | 只看该作者
NMT 节点状态切换命令
NMT 网络管理中,最核心的就是 NMT 节点状态切换命令,这是 NMT 主站所进行网
络管理的“命令”报文。 使用者必须牢记这些命令。
CANID 均为 000h,具备最高的 CAN 优先级。数据为 2 个字节:
 第 1 个字节代表命令类型:
01h为启动命令(让节点进入操作状态);
02h为停止命令(让节点进入停止状态);
80h为进入预操作状态(让节点进入预操作状态);
81h为复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态);
82h为复位节点通讯(让节点的 CAN 和 CANopen 通讯重新初始化,一般用于总线收到
干扰,导致节点总线错误被动,或者总线关闭时)。

使用特权

评论回复
33
stm32jy|  楼主 | 2018-11-30 23:11 | 只看该作者
CANopen 主站设备
通常 NMT 主站也称为 CANoepn 主站, 上文所述为 CANopen 最基本的 NMT 操作,而
作为一个完整的 CANopen 主站设备

使用特权

评论回复
34
stm32jy|  楼主 | 2018-11-30 23:11 | 只看该作者
为了满足管理整个 CANopen
网络的从站设备,需要具备以下功能:
 支持 PDO、 SDO 发送与接收;
 支持 NMT 网络管理;
 支持 PDO 通信类型并能够支持监控每一个 PDO 目标;
 LSS 层设置功能:从站波特率设置、从站节点编号设置;
 支持从站管理功能:类型与名称读取、对象字典读写;
 紧急报文发送功能;
 扩展 CANopen 标准指示灯功能。

使用特权

评论回复
35
stm32jy|  楼主 | 2018-11-30 23:12 | 只看该作者
目前有二种形式的主站,一种是可编程控制器(PLC) 中的一个单元,它的内部集成了
CANopen 的主站功能,这个单元能连接到 CANopen 总线,同时因为它是 PLC 中的一个单
元,它能与 PLC 的 CPU 交换数据,因此通过编写 PLC 程序对它所连接的 CANopen 从站进
行管理和控制。

使用特权

评论回复
36
stm32jy|  楼主 | 2018-11-30 23:12 | 只看该作者
过程数据对象 PDO(Process data object)
如前文所述 PDO 属于过程数据用来传输实时数据,即单向传输,无需接收节点回应
CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型 PDO,

使用特权

评论回复
37
stm32jy|  楼主 | 2018-11-30 23:12 | 只看该作者
PDO 通信比较灵活,广义上只要符合 PDO 范围内的所有 CANID 都可以作为节点自身
的 TPDO 或者 RPDO 使用,也称为 COB-ID,不受功能码和 Node-ID 限制

使用特权

评论回复
38
stm32jy|  楼主 | 2018-11-30 23:13 | 只看该作者
PDO 的 CAN-ID 定义

使用特权

评论回复
39
stm32jy|  楼主 | 2018-11-30 23:13 | 只看该作者
PDO 分为 TPDO(发送 PDO)和(接收 RPDO),发送和接收是以 CANopen 节点自身
为参考(如果 CAN 主站或者其他从站就相反)。 TPDO 和 RPDO 分别有 4 个数据对象,每
种数据对象就是 1 条 CAN 报文封装

使用特权

评论回复
40
stm32jy|  楼主 | 2018-11-30 23:14 | 只看该作者
PDO 的传输形式
PDO 的两种传输方式:同步传输和异步传输。 如图 所示, 1、 2 为异步传输, 3、 4为同步传输。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则