原创 CANOpen的几种操作以及数据

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

1.心跳
CANOpen节点会以一个固定的频率发送心跳报文。用于告诉主机,偶还活着。。。心跳报文的格式很简单,COB-ID为0x700+Node_ID,数据为一字节的状态数据:
点击看大图
图中,ID为706,表示06号节点的心跳,状态是0x7F,表示Pre-Operational状态(节点初始化完成后,进入Pre-Operational状态)。查看时间,每个心跳报文时间间隔大概1秒。

2.NMT
NMT是管理报文,用于实现一些管理操作,比如,节点重启、进入Operational状态等等。NMT报文格式很简单,ID为000,数据为一字节命令+一节节点号(0表示广播)。
点击看大图
第2号报文就是让06号节点,进入Operational状态,运行完成后,节点心跳报文中的节点状态也变为Operational状态。
点击看大图
同上,发送stop remote node命令,进入Stopped状态,当然,心跳还是有的,只是节点不干活了。
点击看大图
这个是reset node命令,用于让节点复位。复位之后,会首先进入Initializing状态(对于于心跳报文中的0x00),初始化完成后,进入Pre-Operational状态(对应心跳报文中的0x7F)。

3.SDO
SDO主要用来访问节点的对象字典(OD),CANOpen的节点至少需要支持SDO_Server。对象字典是CANOpen节点的数据组织形式,包含了CANOpen节点的各个参数和数据,比如,心跳报文的发送频率、系统启动次数、节点的通信参数等等等等。可以说,SDO是用来设置CANOpen节点的各个运行参数的。
点击看大图
图中,1号报文0606: 40 17 10 00 00 00 00 00就是一个SDO_Read报文,告诉节点,要读取的OD索引和子索引,包括数据长度。然后节点会发送对应的数据(后面的那个8字节报文)。第一个字节是一些命令的设定包括参数的设定,后2个字节是OD的索引,再后面一个字节是OD的子索引,最后4个字节是数据。上图中,主机发送的是一个读取OD中1017:00位置的数据命令,这个位置存放的是心跳频率,读取的结果是0x03EB(1000ms)。
点击看大图
9号报文就是SDO_Write,写OD中1017:00位置的数据,也就是修改心跳频率。收到完成应答后,心跳频率就变了(查看时间)。

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

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

待续。。。。。。
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户131114 2009-3-3 01:43

呵呵,今天收到3条

用户75050 2009-3-2 22:12

本想通过站内短信联系你,老出错。
相关推荐阅读
用户131114 2010-12-25 22:43
征集各种单片机/存储器的支持
先随便列几个:Actel FPGA,Renesas R8C,Nuvoton Cortex。当然,Versaloon已经支持的就不需要了。当然,一些简单的比如SPI Flash,可以都可以。合作(或者交...
用户131114 2010-12-11 17:06
STM32F207 demo板原理图
这个硬件是VersaloonHandy平台的第一个测试评估硬件。资源:1. usb device + host, LTC41602. 3路可控电压,分别用于SD供电、TFT背光、对外供电,IIC接口控...
用户131114 2010-09-13 15:13
Versaloon 平台硬件规划
按照计划,几个平台都进行的非常顺利。第二批的生产也在进行中。 抽空规划了一下Versaloon平台的下一个硬件。1。使用120M STM32F203系列100脚芯片,USB 2.0 HS OTG2。2...
用户131114 2010-09-11 01:04
USBDM也成为浮云了。。。。。
HSC08/HCS12(X)的调试支持也基本按时完成了。。。。。。碰到的困难比预想的多,8过仍旧只是浮云。。。。。。coldfireV1应该也可以支持,不过需要有demo板测试并做相应的调整。 上图:...
用户131114 2010-09-02 02:28
Versaloon平台发展规划
最近发布的Versaloon调试仿真平台计划,相信很快就能完成第一阶段,有人怀疑不? Versaloon在实现的理念上,有其先进性,在同一个简单的硬件上,能够实现这么多种芯片的支持,并且具备不错的性能...
用户131114 2010-09-01 17:40
STLink简单的像浮云一样
原来计划花2天时间,没想到一天就搞定了。。。。。。在STM8S103F2上测试通过。STVP在下载STM8S103F2的速度并不是一般的慢啊,每次64字节。。。。。。OMG。。。。 下一步准备OSBD...
EE直播间
更多
我要评论
2
5
关闭 站长推荐上一条 /3 下一条