打印
[应用相关]

CANOPEN资料之CANFestival

[复制链接]
5927|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前些天看到兄弟移植了CANFestival,正好发现另一个开源的canopen项目,CanOpenNode,貌似代码和结构更紧凑,拿来做了个移植和实验,效果还行,而且这家还提供了基于xml的字典文件编辑器,直接用火狐浏览器就能玩起来(但仅限于<16版本的老板的火狐,还要装个插件,可参考这个帖子),使用起来很方便,把移植的项目上传之,希望能起到抛砖引玉的作用,总线绝对是将来工控应用的核心,大家一起努力把RTT应用到越来越多的工控项目中。
评论
EDA设计爱好者 2020-9-19 15:29 回复TA
@xinjimin :您好!我找找啊! 
xinjimin 2020-5-14 10:35 回复TA
你好,最近在搞CANOPEN协议,你的基于xml的字典文件编辑器能发一下吗?谢谢,1024982212@qq.com 
沙发
EDA设计爱好者|  楼主 | 2018-8-28 16:34 | 只看该作者
这次移植里面已经实现了和CanOpen的伺服驱动器的PDO和SDO,NMT等的通讯。
PDO同步传输周期为1ms,连续运行稳定不掉线,测试过几个小时,因为办公室不能通宵通电,所以测试了有6小时左右,有兴趣的朋友欢迎一起测试这个协议栈。

另外也可以上SF去看和提问,作者很热心,一般都是有问必答的,呵呵,

使用特权

评论回复
板凳
EDA设计爱好者|  楼主 | 2018-8-28 16:36 | 只看该作者
用canpro测试的时候选择协议canopen,在里面收到的第一个报文是boot up就算成功了

1.png (73.18 KB )

1.png

使用特权

评论回复
地板
EDA设计爱好者|  楼主 | 2018-8-28 16:37 | 只看该作者
图片资料2 测试,使用周立功的canpro 软件!

2.jpg (166.31 KB )

2.jpg

使用特权

评论回复
5
EDA设计爱好者|  楼主 | 2018-8-28 16:37 | 只看该作者
基于stm32的canfestival主机canopen协议栈移植PDO处理方式

proceedNODE_GUARD()包括内容如下:
TestMaster_post_SlaveBootup();//的回调
ConfigureSlaveNode();-->配置当前bootup的节点;(包括配置当前slave的通讯参数的SDO成功与否状态,依次按照init_step++,
直到masterSendNMTstateChange (d, nodeId, NMT_Start_Node)—>开启Slave;
setState(d, Operational);配置当前主机为Operational
注意:主机CAN接收控制必须在从机之前上电,接收Slave的bootup报文或,如果后上电的话,需发送NMT报文,主机才会执行proceedNODE_GUARD();
canfestival基本可以实现master对Slave的配置等操作;
在slave被设置为Start后,slave会按照设定的周期行发送同步心跳报文,具体通过proceedSYNC()的  (*d->post_TPDO)(d);回调TestMaster_post_TPDO(CO_Data* d);来实现TPDO和OD内容进行交互;

使用特权

评论回复
6
EDA设计爱好者|  楼主 | 2018-8-28 16:38 | 只看该作者
UproceedNODE_GUARD()包括内容如下:
TestMaster_post_SlaveBootup();//的回调
ConfigureSlaveNode();-->配置当前bootup的节点;(包括配置当前slave的通讯参数的SDO成功与否状态,依次按照init_step++,
直到masterSendNMTstateChange (d, nodeId, NMT_Start_Node)—>开启Slave;
setState(d, Operational);配置当前主机为Operational
注意:主机CAN接收控制必须在从机之前上电,接收Slave的bootup报文或,如果后上电的话,需发送NMT报文,主机才会执行proceedNODE_GUARD();
canfestival基本可以实现master对Slave的配置等操作;
在slave被设置为Start后,slave会按照设定的周期行发送同步心跳报文,具体通过proceedSYNC()的  (*d->post_TPDO)(d);回调TestMaster_post_TPDO(CO_Data* d);来实现TPDO和OD内容进行交互;

使用特权

评论回复
7
EDA设计爱好者|  楼主 | 2018-8-28 16:40 | 只看该作者

void InitCommunicationCallBack(void){
        //************************Communication and nodeid ***************************
        RegisterSetODentryCallBack(&mbed_slave_Data,0x21b0,0x00,&Save21b0_call_back);
        RegisterSetODentryCallBack(&mbed_slave_Data,0x2100,0x00,&Save2100_call_back);
        //RegisterSetODentryCallBack(&mbed_slave_Data,0x1010,0x01,&SaveAllParameters_call_back);
        RegisterSetODentryCallBack(&mbed_slave_Data,0x1010,0x02,&SaveCommunicationParameters_call_back);
        RegisterSetODentryCallBack(&mbed_slave_Data,0x1010,0x04,&SaveManufacturerParameters_call_back);

        RegisterSetODentryCallBack(&mbed_slave_Data,0x1011,0x02,&RestoreCommunicationParameters_call_back);
        RegisterSetODentryCallBack(&mbed_slave_Data,0x1011,0x04,&RestoreManufacturerParameters_call_back);
        RegisterSetODentryCallBack(&mbed_slave_Data,0x1013,0x00,&HighResolutionTimeStamp_call_back);
        //****************************************************************************
}

使用特权

评论回复
8
余流漂| | 2018-12-21 20:46 | 只看该作者
我最近也在移植CANFstival协议, 协议移植基本成功,但是想进一步在其基础上试下CIA401协议中的相关报警事件, 在CANFestival协议中如何自主化定义相关事件 楼主可否提供些这方面的经验??

使用特权

评论回复
9
stm32jy| | 2018-12-21 21:53 | 只看该作者
很好,这个canfestival 带操作系统吗?

使用特权

评论回复
10
stm32jy| | 2018-12-21 21:54 | 只看该作者
楼主用的是什么can分析仪?

使用特权

评论回复
11
EDA设计爱好者|  楼主 | 2020-1-9 15:58 | 只看该作者
stm32jy 发表于 2018-12-21 21:54
楼主用的是什么can分析仪?

周立功的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

245

帖子

1

粉丝