当前位置:  开发笔记 > 人工智能 > 正文

如何编写简单的CANopen层

如何解决《如何编写简单的CANopen层》经验,为你挑选了1个好方法。

我们有一个机器人项目,电机控制器使用CANopen进行通信.我需要使用主微控制器与这些电机控制器进行通信.问题是我需要在这个微控制器中开发CANopen层,但我只知道如何在低级别(CAN)发送和接收.

我不太了解CANopen(PDO,SDO,Heartbeat,对象字典等).我试着阅读CiA规范,但它非常复杂.如果有人能指出我正确的方向,或者给我一个很好的教程来编写一个简单的CANopen层,我将不胜感激.



1> Oliver Hegge..:

由于这似乎是一个普遍感兴趣的话题 - 我同意理解完整的原始规格可能是一种有点痛苦的经历.所以这里有一个建议"让你的车开始",而不是"实现整个事情":

检查您的CANopen驱动器是否可以通过CiA 402标准对象进行操作,出于性能原因,完全没有配置和使用PDO,并且您不需要心跳,因为它通常会切换驱动器的状态机(对象6040h) ,控制字),设置操作模式(对象6060h),以及设置其他参数,如"轮廓位置速度".

然后实施加速SDO传输.(请参阅http://en.wikipedia.org/wiki/CANopen.)SDO下载用于写入/更改驱动器中的对象.SDO上传用于读取对象.

我建议使用一个可以读写SDO的PC软件,并有一个CAN总线监控器.(我们的Kickdrive Zero免费软件可以做到这一点,但实际上,CANopen的任何其他PC工具都可以工作.)为您需要的数据类型和对象做一些示例读写操作.看看它如何转换为CAN级别的帧.对于基本的整数数据类型,它始终只是请求的一个帧,一个用于答案.

现在在您的微控制器上构建一个简单的协议栈,可以发送SDO下载/上传请求并处理答案.

免责声明 - 上述内容甚至不接近"实施CANopen","支持CANopen",甚至"CANopen兼容".这是关于"让你的驱动器尽快移动,没有第三方代码".有时这是正确的做法.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有