我们在电机控制器采用机器人项目的CANopen通信。 我需要与使用主微控制器这些电动机控制器进行通信。 问题是,我需要开发在这个微控制器的CANopen层,但我只知道如何发送和低电平(CAN)接收。
我不知道很多有关的CANopen(PDO,SDO,心跳,对象字典等)。 我试图读取中情局的规格,但它是非常复杂的。 我将不胜感激,如果有人可以点我在正确的方向,或给我一个很好的教程编程简单的CANopen层。
我们在电机控制器采用机器人项目的CANopen通信。 我需要与使用主微控制器这些电动机控制器进行通信。 问题是,我需要开发在这个微控制器的CANopen层,但我只知道如何发送和低电平(CAN)接收。
我不知道很多有关的CANopen(PDO,SDO,心跳,对象字典等)。 我试图读取中情局的规格,但它是非常复杂的。 我将不胜感激,如果有人可以点我在正确的方向,或给我一个很好的教程编程简单的CANopen层。
由于这似乎是普遍关心的话题 - 我同意,了解完整的原始规格可以是一个有点痛苦的经历。 因此,这里是一个建议的“让你的车去”,而不是“实现整个事情”:
请检查您的CANopen驱动器可以通过中央情报局402标准的对象进行操作和性能方面的原因这将是完美的罚款不配置和使用的PDO,你真的不需要心跳,ASO它通常切换驱动的状态机(对象6040h控制字),设置操作模式(对象6060h)和设定如“轮廓位置速度”的附加参数。
然后只实现加急SDO传输 。 (见http://en.wikipedia.org/wiki/CANopen 。)SDO下载写/在你的驱动器改变的对象。 SDO上传是用于读取对象。
我建议采取的PC软件,可以读取和写入SDO和具有CAN总线监控。 (我们Kickdrive零免费软件可以做到这一点,但实际上,用于CANopen任何其他PC工具应该工作。)做一些例如读取和写入的数据类型和对象的需要。 看看如何转换在CAN等级的帧。 对于基本整数数据类型,它总是为请求,一个用于答案只是一个框架。
现在建立在微控制器上的简单协议栈可以发送SDO的下载/上传请求和处理问题的答案。
免责声明 - 上面甚至没有接近“实施的CANopen”或“支持CANopen的”,甚至是“兼容的CANopen”。 这是关于“让你的驱动器ASAP和无第三方代码移动”。 这有时是做正确的事。
我们从头两个嵌入式ARM和Windows PC设备中实现我们的CANopen层。 这不是不可能的,不像以前的答案可能会让你想起。 如果你只需要CANopen总线的基本功能,并可以快速学习协议的概念,你可以得到的东西了,相当快速运行。
你将要读的CiA规范,有没有办法避免,但起初它可能会变成有点势不可挡。 我建议你阅读“启动嵌入式网络与CAN和CANopen通过菲佛,艾尔和Keydel”。 它解释了基本概念很好,这反过来又有助于理解说明书更好。
尝试使用CanFestival栈 - 它是免费的,它很容易港口从如Linux操作系统下到裸机,只是有一个节拍定时器。
4-6个月似乎有点过分了 - 你可能只需要一个主机或从机,和我们做了C ++在3-4周主单独实施。
我们使用的MicroCANopen堆栈管理器插件,从这里开始: http://www.canopenstore.com/pip/microcanopen.html
相对于其他栈这是比较便宜的,虽然我们使用的时候我们的网络中的所有节点上,所以我不能提供一个证明它是如何与其他标准的CANopen的设备进行操作。
不幸的是,没有简单的CANopen层。 为了支持CANopen,则需要实现整个事情。
我建议你从第三方供应商购买的CANopen库。 通常他们是不便宜,但考虑到你需要自己实现它比你的工资该时间更便宜的时间。
我们一直在使用PORT有限公司的ANSI-C的CANopen库库,它价格适中,有极少数的错误,相对于我们尝试过其他的库。
如果这是商业的东西我不会考虑实施的CANopen。 这将带你(即使是一个子集),四至六月份之间的某个地方(如果你真的想要的工作)。 我不知道是什么每小时的薪水是和上市时间的要求是什么。 你需要自己做的数学。
我曾与另一个商业解决方案是IXXAT的CANopen的软件 。 他们提供很多不同的平台端口。
前面已经说过:你不明白它是免费的,也不是便宜。 但什么是几千USDS相比数月的开发时间?