赞
踩
CanFestival是一个CANOpen的开源C库,本文讲述如何在Linux下使用CanFestival,代码来自https://github.com/happybruce/CanFestival,已经经过本人优化。
使用git下载CanFestival,
git clone https://github.com/happybruce/CanFestival.git
下载完毕后,出现CanFestival目录,cd进入并创建build目录,然后执行下面语句,
cmake .. && make
这样就可以编译出master和slave,
PS:该例子源码位于CanFestival/examples/linux/dcf/下
接着执行下面语句创建vcan0
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
创建好后开启三个终端,一个运行candump观察vcan0上的CAN报文,一个运行slave,一个运行master,,
运行candump
candump -t A vcan0
运行一个slave,
./slave vcan0 1 # 最后一个数字是模拟CAN设备(也就是slave)的的Node id,这里范围是[1,2,3]
运行master,
./master vcan0 # 这个master只检测CAN Node id为1,2,3的CAN设备
主要功能是:
上节的例子中使用的对象字典文件位于CanFestival/examples/linux/dcf/od/下,即masterdic.od和slavedic.od,这2个文件需要使用对象字典编辑器打开。
本人把对象字典编辑器变成CanFestival子模块,所以下载好CanFestival后,再下载其子模块即可,
cd CanFestival
git submodule update --init --recursive
PS: 关于对象字典编辑器,可以看下这篇文章
下载完后可以在CanFestival目录下找到objdictgen目录,这个就是对象字典编辑器的源码,进入objdictgen后运行python objdictedit.py
点击File->Open,然后在CanFestival/examples/linux/dcf/od目录下找到masterdic.od和slavedic.od,选择并打开,
PS:可以在masterdic和slavedic之间来回切换,另外注意不是CanFestival/examples/linux/dcf下的od文件,那个是老的
打开后可以查看master和slave的对象字典的配置,同时也可以根据需要自行修改。改好后需要点击File下的Build Dictionary生成对应的.c/h文件,最后重新编译程序。
masterdic.od里的内容如下,
master有TPDO1,TPDO2,TPDO3,RPDO1,RPDO2,RPDO3,具体配置如下,
另外,master是CANopen client,所以需要0x1280
slavedic.od的内容如下,
slave有TPDO1和RPDO1,具体配置如下,
0x180+slave的Node Id
0x200+slave的Node Id
另外,由于slave是CANopen server,所以需要0x1200
本文讲述在Linux下如何使用CanFestival,经过本人修改,可以直接编译生成对应的可执行文件,同时用户可以根据需要使用对象字典编辑器来修改对象字典。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。