我计划在工业自动化应用程序中使用 CAN 总线,但是我很难决定如何实现网络层。这里有没有人对在 CAN 上使用更高层协议有任何建议,该协议提供了如何分配消息 ID 和如何格式化数据包的指南?我应该开发自己的专有网络层还是实施像 CANopen 这样的现有标准?
通过 CAN 总线选择网络层
电器工程
微控制器
图片
沟通
能够
2022-01-21 23:33:23
3个回答
你肯定会想要选择一个标准的网络层。我见过一些人们自己推出的案例,而且协议经常效率低下,最后是在浪费时间。经过验证的网络层提供了基本功能,可以解决您在使用嵌入式设备联网时可能遇到的大多数问题,最终将为您节省宝贵的时间和金钱。
我对 CANopen 很熟悉,所以我会在这里做一些解释,它可能会帮助你决定这是否是你想要的方式。如果它不适合你需要做的,我会看看别的。
CANopen 非常以数据为中心。所有 CANopen 从属节点(您从主节点控制的东西,如传感器或电机驱动器)都提供一个字典,其中包含完成工作所需读取/写入的所有配置、控制和数据采集数据。然后,您可以通过 SDO(服务数据对象)机制单独读取/写入这些对象,或者通过 PDO(生产者数据对象)机制在定时 CAN 消息传输中定期读取/写入这些对象。NMT 服务以及节点 ID 分配服务(如果您希望使用它)提供启动、关闭和重置以及心跳/节点故障检测。要使用嵌入式 CANOpen 库实现设备,您基本上设置了一个对象字典,设置 PDO 以定期发送/接收数据更新,并编写基于这些数据条目行为的用户代码。CANopen 还提供了其他一些东西,但这就是其中的大部分。 阅读本书了解更多信息。
我编写代码来访问通用汽车上的 CAN 总线,该总线使用主要是专有网络层。你研究过 OpenCAN 吗?我会选择一个开放标准,例如 CANOpen 甚至 OpenCAN。这实际上取决于您在自动化环境中想要的控制水平和灵活性。
有很好的答案。我不知道你用的是什么微,但这里有一些来自微芯片的信息的链接。
带有 CAN 的 PIC18 的 DeviceNet™ Group 2 从站固件
它们每个都有代码和基本数据表,让您知道实现它们需要什么。
其它你可能感兴趣的问题