CANOPEN通俗易懂非正规解析

CANOPEN通俗易懂非正规解析

什么是canopen

一句话全说了,就是通过can传输信息的一个软件层的开源协议,其中,canopen又有很多子标准,满足不同行业不同产品的需求,举一个例子:下图中,DS401是通用IO模块、DS402是运动控制设备、DS404是闭环测控仪器、DS405是可编程逻辑控制器、DS406是编码器等,这些就是canopen的小的细分的标准
在这里插入图片描述

基础介绍

这里不多介绍can协议,大家都知道,can协议传输时帧ID+个数据位的,因为can是没有节点ID这个概念的,但是canopen把帧ID分成了两部,即:帧ID = 功能码 + 节点ID,这里的功能码类使用MODBUS的功能码的概念,在canopen里面就把帧ID叫做COB-ID。然后每一帧数据都包含COB-ID和帧数据,COB-ID包含了节点ID和功能码,帧数据包含了要传输的内容,不同的COB-ID的帧数据里面的数据含义不一样。

canopen的报文类型

这个就是控制节点状态的,控制节点启动,停止,复位的。
例如,要启动某个节点,那么:COB-ID=0x000+节点ID,帧数据就只需一个:如0x01启动、0x82复位。

配置与参数管理报文(SDO)

读写对象字典参数,例如修改从站的目标速度,或者心跳报文周期等,能修改任何RW权限的数据。
COB-ID分两个:
一个是发起请求的COB-ID:0x600+节点ID
一个是响应请求的COB-ID:0x580+节点ID
帧数据:(这里看不懂正常,后面有机会再介绍)
命令字(1字节)+索引(2字节)+子索引(1字节)+数据(4字节)

系统同步与时间报文

主要是同步报文同步报文有什么作用呢,顾名思义就是让从站和主站进行数据同步的,举个例子:主站需要知道从站电机当前的转速,并且是一直需要知道,那就可以通过这个同步报文进行同步数据了。
那么如何进行同步,两个步骤:
主站,他很轻松,他只需要发送:COB-ID=0x080(广播)帧数据为0即可。那么这里的广播是什么意思呢,也就是无需带节点ID,因为当节点接收到COB-ID=0x080的帧ID后,就会看自己有没有需要同步数据(这个是从站提前设置好的)如果需要同步,那就依次把数据发送出去即可,当然这里面还有比较多的其它帧同步的设置参数,这里就不描述了。
从站,这个就需要提前设定好需要同步哪些数据,当收到COB-ID=0x080的同步帧后,就把设定好的数据发送出去即可,这里发送的格式就是PDO报文格式了,主站收到后,会按照对应的格式解析数据的。

实时数据传输报文(PDO)

上面讲了同步帧,传输数据的帧是PDO,现在接收一下PDO,上面介绍同步帧的时候,举了一个例子,就是主站需要同步从站的数据,但是有没有一种可能,从站也需要同步主站的数据呢,当然有啊,例如主站需要控制从站的速度(一直控制,例如100HZ的控制频率),那么也可以通过PDO同步。这里就产生了两种不同传输方向的PDO,如下:
TPDO(发送PDO):从设备→主设备(如电机位置反馈)
RPDO(接收PDO):主设备→从设备(如速度设定值)
那么现在描述一下同步的流程:
TPDO就是从设备→主设备,第一步是主站发送同步帧COB-ID=0x080进行同步请求,然后从站回复TPDO1(COB-ID: 0x180+节点ID) + 帧数据。帧数据就是需要同步的数据
RPDO就是主设备→从设备,这个就不需要发送同步帧了,主站直接发送 RPDO1 (COB-ID: 0x202+节点ID)+帧数据,帧数据就是需要同步的数据

异常与状态报文

心跳报文,这个比较重要,主站可以检测从站的心跳报文,确定从站是否正常。
COB-ID=0x700+节点ID。
紧急报文
COB-ID=0x080+节点ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值