灵动微电子 · 2023年08月10日

CAN总线开发一本全(8) - CANopen调试用例(1)

  • 一个CANopen的应用样例
  • 上线和心跳消息

一个CANopen的应用样例

在基本的运行CANopen框架的演示项目中,除了一个已经运行CANopenNode组件程序的CANopen节点,还需要一台运行PCAN-View软件的PC机和USB-CAN转换器PEAK-CAN,模拟一个接入CAN总线的CANopen主站设备节点。在运行演示项目时,可以使用PCAN-View软件,通过CAN总线发现运行了CANopen设备节点,并接收来自CANopen节点发出的心跳消息包,然后发送一系列网络管理命令,控制CANopen从站节点对本机的CANopen协议栈程序停止、启动、复位等操作。

image.png
figure-can-connection-between-pc-and-mcu
图x PC模拟的CAN主站同CAN从站之间的连接

之后,开发者可以试着通过PCAN-View软件接入CAN总线的CANopen节点发送控制命令,并观察CAN总线上的消息。

这里用到了一个PEAK-CAN转接设备,如图x所示。

image.png
PCAN-CAN转接设备实物

务必先将PEAK-CAN转接设备接入电脑后,再启动PCAN-View软件。在刚启动PCAN-View时,会弹出配置连接的对话框,其中显示已经识别到的PEAK-CAN设备,以及配置通信速率的对话框。在本例中,使用 500kbit/s,同刚移植的canopen_demo工程配置保持移植。配置连接对话框的界面如图x所示。

image.png
figure-pcan-view-connect
图x PCAN-View识别到的PEAK-CAN设备以及配置通信速率

确认之后,启动PCAN-View软件,即可在界面中看到CANopen节点已经在CAN总线上发送的消息帧了。如图x所示。

image.png
figure-pcan-view-startup
图x 运行PCAN-View软件

这里需要注意的是,在Receive/Transmit标签页中看到的消息帧是以CAN-ID分类的,总会显示当前已经出现的CAN-ID消息帧的最新状态。如果想看每一帧按照时间顺序排列的历史信息,可在Trace标签页中,启动记录后查看。

上线和心跳消息

CANopen节点上电后接入CAN总线,会向总线发送上线消息。PCAN-View软件将会收到上线消息如下:

image.png

之后,该CANopen从站节点将以1000ms为时间间隔,持续向CAN网络发送节点心跳报文。此时,PCAN-View软件将以1000ms的时间间隔收到心跳报文如下:

image.png

image.png
figure-canopen-msg-heartbeat-at-power-up
图x CANopen节点发送上线报文和心跳包

至此,可验证该CANopen节点成功启动,并开始正常运行。

此处对心跳消息展开解释一下。在本例中使用的心跳消息使用CAN-ID的值为0x70A,二进制码为0b11100001010,按照CANopen协议对COB-ID的规定,11位的CAN标准帧被拆分为前4位的功能码(FUNCTION CODE)和后7位的节点地址码(NODE ID CODE)。如图x所示。此处心跳消息的功能码对应0b1110,与图x中表格列出的值一致。

image.png
figure-canopen-cob-id
图x CANopen中的COB-ID

本例中的节点地址码0b001010,即0xA,则来自于canopen_demo工程CO_OD.c文件中对对象字典的配置。

/***** Definition for ROM variables *******************************************/  
struct sCO_OD_ROM CO_OD_ROM = {    //constant variables, stored in flash  
           CO_OD_FIRST_LAST_WORD,  
...  
/*2101*/ 0x0A,  /* local NODE-ID. */  
/*2102*/ 0x1F4, /* local bitrate. */  
...  
           CO_OD_FIRST_LAST_WORD  
};  

其实对象字典里还配置了更多有用的属性,例如,本节点的CAN总线通信的位速率就在对象字典中索引号为2102的元素上,0x1F4对应十进制数500,表示500kbit/s

(未完待续。。。)

作者:安德鲁苏
文章来源:安德鲁的设计笔记本

推荐阅读

更多MM32F5系列资料请关注灵动MM32 MCU专栏。如想进行MM32相关芯片技术交流,请添加极术小姐姐微信(id:aijishu20)加入微信群。
推荐阅读
关注数
6143
内容数
276
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息