如何解决与CAN协议相关的问题?我需要使用 CAN 吗?
我们正在为Formula学生比赛建造电动汽车,模块之间的通信协议我们必须使用CAN方法。我们是否需要每个模块都知道来自其他模块的数据。例如。我们正在使用微控制器树莓派 Pico 从传感器收集数据,并根据数据由同一微控制器本身执行操作。但是CAN方法说数据应该在其他接收器收集的网络中路由和共享。所以我们想到的一件事是使用一个微控制器从所有传感器收集数据,并与 CAN 控制器共享数据到另一个微控制器以执行操作。但它增加了复杂性,CAN 旨在降低复杂性。所以我很困惑如何应用CAN协议。我不知道何时可以使用收集到的某些数据,那么为什么我们必须共享。或者可能是我出错了,所以请帮助澄清这个概念。谢谢。
解决方法
CAN 总线和基于它的上层协议(如 CANopen)通常为发布者和订阅者模式提供消息传递媒介。
-
发布者节点:它们产生数据并将这些数据发布到总线。 传感器节点是发布者节点的好例子。
-
订阅者节点:他们订阅一个或多个数据包 总线并消耗这些数据。例如,汽车司机可能订阅 到一些速度命令并相应地驱动电机。
一个节点既可以生产数据,也可以消费数据,同时充当发布者和订阅者。例如,汽车中的主控单元可以从总线上读取各种传感器数据,对其进行处理并发布执行器节点(如电机驱动器)的命令数据。
在使用 CAN 总线时,与其发明自己的协议,不如使用现有的协议,例如 CANopen。我建议您阅读 CiA 301 文档,其中解释了 CANopen 的基本原理。即使你不使用它,它也会给你一些想法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。