我们有一个机器人项目,其中电机控制器使用CANopen进行通信。我需要使用主微控制器与这些电机控制器进行通信。问题是,我需要在这个微控制器中开发一个CANopen层,但我只知道如何在低层(CAN)发送和接收。
我不太了解CANopen (PDO、SDO、心跳、对象字典等)。我试图阅读CiA规范,但它非常复杂。如果有人能给我指出正确的方向,或者给我一个很好的教程来编写一个简单的CANopen层,我将不胜感激。
发布于 2013-07-23 21:38:12
由于这似乎是一个普遍感兴趣的话题-我同意理解完整的原始规范可能是一种痛苦的经历。因此,这里有一个关于“让你的驱动前进”的建议,而不是“实现整个事情”:
免责声明-上面的声明甚至没有接近“实现CANopen",或”支持CANopen",甚至“符合CANopen”。这是关于“让你的驱动器尽快移动,没有第三方代码”。这有时是正确的做法。
发布于 2012-06-22 06:03:57
我们从头开始为嵌入式ARM和Windows PC设备实现了我们的CANopen层。这并不是不可能的,不像之前的答案可能会让你思考。如果您只需要CANopen的基本功能,并且可以快速了解该协议的概念,那么您可以相当快地启动并运行它。
您将不得不阅读CiA规范,没有办法避免它,但一开始它可能会变得有些不堪重负。我建议你从阅读Pfeiffer,Ayre和Keydel的"Embedded Networking with CAN and CANopen“开始。它很好地解释了基本概念,这反过来有助于更好地理解规范。
发布于 2014-10-04 11:09:42
尝试使用CanFestival堆栈-它是免费的,并且可以很容易地从OSes移植到只有滴答计时器的裸机上。
4-6个月看起来有点牵强--你可能只需要一个主服务器或一个从服务器,我们在3-4周内用C++完成了一个仅主服务器的实现。
https://stackoverflow.com/questions/1232624
复制相似问题