我对此也有类似的问题。 How to program a simple CANopen layer。
我读了答案,但我必须自己编写一个CANopen层,但我无法获得商业层。那么编写CANopen堆栈是否有任何基础知识(或者我不确定其中的区别)?我什至不知道从哪里开始。
如果需要,这里有一些信息:
我的主设备是带有QNX的小猎犬黑。我认为QNX有一个通用的CAN库,但不是特定于CANopen的。我的奴隶是一个军事化的无刷电机 Controller 。我正在用C++编写。
我有关于系统一般要求的文档。
有2个RPDO和4个TPDO,传输是同步的,没有停止模式(因此没有心跳和节点保护),并且陈述了所有消息信息(大小,格式,相关节点ID等)
最佳答案
实际上,至少有4个实现CANopen的开源项目:
我会发布链接,但是显然我没有足够的“声誉”。
openCANopen还包括一些实用程序,例如用于通过TCP转发流量的守护程序,以及一个将CANopen流量解释并转储到标准输出的程序。
Lely CANopen实际上具有相当不错的代码质量,如果我开始编写自己的实现时可以使用它,我可能会使用它。但是,我还没有尝试使用它,所以我不能真正说出哪个实现更好。我只能说它们是不同的,并且其中一个可能更适合您的需求。
现在,我怀疑这些实现中的任何一种都不能在QNX上直接使用。它们要么必须进行修改,要么您可以将代码的各个部分复制到自己的实现中。至少那应该为您节省一些时间。
关于c++ - 如何编写一个CanOpen堆栈?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46096883/