canopen 报文格式_CANOpen的几种操作以及数据

其实3年前在21ic就准备做这篇文章了,那时,CANOpen也只是刚刚在国内推广,所以几乎没有项目用到。现在有了实际的项目,完全确认了以前移植和测试的代码,所以列举一些CANOpen的底层操作以及数据。当然,列举的都是一些简单的基本的CANOpen通信,不包括其他CANOpen应用协议中的内容。

1.心跳

CANOpen节点会以一个固定的频率发送心跳报文。用于告诉主机,偶还活着。。。心跳报文的格式很简单,COB-ID为0x700+Node_ID,数据为一字节的状态数据:

0_1329295357Llty.gif

图中,ID为706,表示06号节点的心跳,状态是0x7F,表示Pre-Operational状态(节点初始化完成后,进入Pre-Operational状态)。查看时间,每个心跳报文时间间隔大概1秒。

2.NMT

NMT是管理报文,用于实现一些管理操作,比如,节点重启、进入Operational状态等等。NMT报文格式很简单,ID为000,数据为一字节命令+一节节点号(0表示广播)。

0_1329295382XN0e.gif

第2号报文就是让06号节点,进入Operational状态,运行完成后,节点心跳报文中的节点状态也变为Operational状态

0_1329295469XXQ0.gif

同上,发送stop remote node命令,进入Stopped状态,当然,心跳还是有的,只是节点不干活了

0_1329295529omq5.gif

这个是reset node命令,用于让节点复位。复位之后,会首先进入Initializing状态(对于于心跳报文中的0x00),初始化完成后,进入Pre-Operational状态(对应心跳报文中的0x7F)。

3.SDO

SDO 主要用来访问节点的对象字典(OD),CANOpen的节点至少需要支持SDO_Server。对象字典是CANOpen节点的数据组织形式,包含了 CANOpen节点的各个参数和数据,比如,心跳报文的发送频率、系统启动次数、节点的通信参数等等等等。可以说,SDO是用来设置CANOpen节点的各个运行参数的。

0_1329295561OCr7.gif

图中,1号报文0606: 40 17 10 00 00 00 00 00就是一个SDO_Read报文,告诉节点,要读取的OD索引和子索引,包括数据长度。然后节点会发送对应的数据(后面的那个8字节报文)。第一个字节是一些命令的设定包括参数的设定,后2个字节是OD的索引,再后面一个字节是OD的子索引,最后4个字节是数据。上图中,主机发送的是一个读取OD中 1017:00位置的数据命令,这个位置存放的是心跳频率,读取的结果是0x03EB(1000ms)。

0_1329295590YMRK.gif

9号报文就是SDO_Write,写OD中1017:00位置的数据,也就是修改心跳频率。收到完成应答后,心跳频率就变了(查看时间)。

4.PDO

PDO 是用来发送(TPDO)或者接收(RPDO)数据的,有几种不同的触发方式,比如:事件触发、同步触发等等。数据内容一般有CANOpen的各个应用协议规定,比如401文档中的AI(Analog Input)数据等。PDO的数据内容是通过映射的方式在定义在OD中的,一个节点可以有多个PDO通道。PDO的通信参数也可以通过SDO访问OD的方式来修改。

5.应急报文

应急报文用于返回一个节点上的错误,可以是CANOpen命令解析错误,等等。

待续。。。。。。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CANopen是一种用于控制系统的通信协议,它定义了一套用于设备之间进行数据传输和控制命令的报文格式。CANopen报文格式包括两种基本类型,即通用数据对象(SDO)和紧急数据对象(PDO)。 SDO(Service Data Object)报文格式用于在两个设备之间传输数据和配置参数。它包括两个主要部分:COB-ID(CAN对象标识符)和数据。COB-ID指示了报文的类型和方向,其中包括了设备ID和功能码。数据部分包含了要传输的实际数据或配置参数。此外,SDO报文还包括了附加的控制字节,用于指示传输的状态和错误处理。 PDO(Process Data Object)报文格式用于在实时控制中传输数据。PDO报文包括PDO通信参数,即传输类型、传输周期和映射对象的数量。每个PDO报文中包含了一个或多个映射对象的数据值,这些数据会根据映射关系被传输到不同的设备上。 CANopen报文格式中还包括一些其他的报文类型,如NMT(网络管理)报文、SYNC(同步)报文和EMCY(紧急)报文。NMT报文用于管理设备的状态和通信连接,SYNC报文用于同步多个设备的操作,EMCY报文用于传输设备的故障和警告信息。 总之,CANopen报文格式详细描述了设备之间进行数据传输和控制命令的方式。通过使用SDO、PDO以及其他报文类型,CANopen可以实现灵活的设备通信和控制,并提供了便捷的错误处理和状态管理功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值