问题标签 [can-bus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2730 浏览

can-bus - 单节点 CAN 网络(CAN 协议)

我是 CAN 协议的新手,正在阅读 Robert Bosch 的 CAN 规范 ver2.0 Part B。我无法理解第 63 页的以下几行

" 注意:启动/唤醒:如果在启动过程中只有一个节点在线,并且如果该节点发送了一些消息,它将没有得到确认,检测到错误并重复消息。它可以变成'错误被动'但不是'由于这个原因,公共汽车关闭。”

据我了解,当发送器检测到错误(如确认错误)时,它会重新发送消息并将发送错误计数(TEC)增加 8。因此,如果只有一个节点,则其 TEC 每次发送时都应增加 8一条消息,一旦 TEC 超过 255,应该进入“总线关闭”状态。

有人可以解释为什么规范说它只能去“错误被动”而不是“总线关闭”吗?

0 投票
2 回答
6415 浏览

command - elm327 CAN 命令打开大灯附件

我想发送 AT 命令来在 Nissan Leaf 中打开我的前灯附件。

它位于 ID 625

如何通过终端发送命令来改变这一点你能一步一步地帮忙吗?

0 投票
1 回答
488 浏览

network-protocols - 使用 Anybus Compactcom 通过 CANopen 进行 PDO 映射和循环数据传输

我最近通过更换 Anybus Compactcom 并进行一些小的固件更新,将我的设备从 ModbusRTU 切换到CANopen 。该设备现在似乎可以作为 CANopen 节点正常运行,但我在映射 PDO 以进行循环数据传输时遇到了一些麻烦。

主机应用程序由 117 个 Anybus ADI 组成,每个 ADI 都是一个 UINT16。根据 Anybus 文档,ADI 对应于 CANopen 节点的对象字典中从 2001h 到 5fffh (ADI 1-3fff) 的对象。

当我尝试使用我的主模拟器直接从 CANopen 节点读取对象时,我每次都得到预期值,但在映射我的 PDO 后,当我尝试循环数据读取时,我只得到第一个 ADI(然后全为零)。

在我的 EDS 文件中,我像这样映射每个 ADI:

在我的主配置程序中,我将需要的 ADI 映射到 PDO 并将配置下载到主控。当我开始数据传输时,我得到的只是第一个 ADI——即使我没有映射它。只要映射了任何对象,我就从第一个 ADI 获取数据,然后再全为零。

我知道这是一个复杂的设置,这可能不足以得到一个好的答案,但我是 CANopen 新手,所以任何有 CANopen 经验的人(尤其是使用 Anybus-CC)请给我一些建议或让我知道您还需要了解有关设置的其他信息。

0 投票
1 回答
5765 浏览

can-bus - CAN_High 和 CAN_Low 短路的 CAN 总线关闭

众所周知,CAN 总线上的 CAN_High 和 CAN_Low 短路会导致总线关闭状态。

对于物理层,这种情况如何导致总线关闭状态?

0 投票
2 回答
15783 浏览

android - CAN总线与Android通讯建议

我想获得有关与 Android 平板电脑进行 CAN 总线通信的建议。

我正在与一位同事开展电动汽车项目。我们在 BMS、逆变器和控制逻辑之间进行 CAN 总线通信。我需要获取数据,比如集群的速度。该集群将是一个 Android 平板电脑。我有一个用于 CAN 和蓝牙适配器的 Arduino 扩展板,可以将数据发送到平板电脑。我对Android相当陌生。

  • 我应该开始寻找什么?
  • 这些OBD-II代码会起作用吗,因为我也需要发送数据。

  • 在您看来,我应该在 Arduino 上解码还是将 CAN 数据传递到 Android 并在那里处理?数据为 COB ID/编号。字节/数据。(601/ 8/ 22 98 60 00 22 00 00 00) 我想知道要处理它。例如,如果前两个字节是灯,第二个字节是速度,依此类推。或者我应该通过分隔符''和字节来分割它们到int?
  • 我能够从 Android 向 CAN 总线发送数据。我有 CAN 分析仪,控制器接受它。
0 投票
0 回答
69 浏览

microcontroller - canbus,一台主机收不到

我有一个包含三个主机的小型 Canbus 网络:两个已终止的 Fujitsu MB90342 微控制器,以及一个连接到我的笔记本电脑的 CAN-USB 转换器,没有终止。三台主机通过扁平电缆连接。问题是其中一个 MB90342 没有从另一个接收。当我用笔记本电脑发送消息时,它会发送、接收,但不会接收来自其他微控制器的消息。另一个 MB90342 工作得很好,可以接收所有消息。使用的波特率为 250K。有人知道出了什么问题吗?

0 投票
2 回答
4365 浏览

microcontroller - CAN协议中的消息对象是什么?

CAN 协议 - 消息对象 (MObs)

据我所知,这些缓冲区将包含最新消息。

互联网上提供的信息非常少。

请谁能详细解释一下消息对象到底是什么?这些如何在程序中使用?

期待中的感谢

0 投票
1 回答
910 浏览

can-bus - 是否需要启动 CAN 总线设备才能开始发送消息?

我是一个完整的CAN 总线新手。我希望有 CAN 经验的人能指出我正确的方向。我得到了一个 Vector VN1610 USB 到 CAN 适配器和一个 Continental ARS-308 雷达传感器。目标是从传感器读取一些速度和距离信息。现在我只是想查看任何数据,但我得到的只是 id 为 0 或 0x80000000 的消息。数据有效载荷全部报告为 8 个字节的 0。

什么有效

我已经能够使用提供的示例 .NET 代码并设置 VN1610。ARS-308 有一个 CAN 通道,因此在我的应用程序的矢量硬件配置中,我只需将“CAN 1”映射到 VN16101 通道 1。(我未分配 CAN 2)然后我假设我使用该通道进行发送和接收. 代码报告通道设置了激活并且没有报告错误。然后我有一个线程来寻找传入的消息。如果我不调试上面提到的两个 ID,我实际上可以处理所有这些 ID,然后我会收到 XL_ERR_QUEUE_IS_EMPTY 消息。所以看起来一切正常,我只是没有得到任何真实数据。

什么没有

我认为大陆 ARS 设备会收到大量 0x200 - 0x702 范围内的数据消息。现在我更习惯于以太网类型的协议,我会在其中发送命令然后读取响应。我的文档都没有谈论 CAN 的工作原理,所以我假设在 CAN 中设备只是发送数据。我当然找不到任何命令告诉设备向我发送我感兴趣的特定 msg ID。我是否缺少一些基本的 CAN 配置步骤来通知设备它应该开始发送数据?任何建议都将不胜感激。
如果重要的话,我在 VS2013 中编写,.NET 在 Win 7 64 Ultimate 机器上。

0 投票
1 回答
315 浏览

can-bus - 在 mbed LPC1768 上将模拟输入转换为 CAN 的数字输入

我需要代码帮助,将 mbed LPC1768 上的 AnalogIn 输入转换为 CAN 控制器使用的数字。我使用的示例语法是

其中“ counter”是要传输的数据,我将其定义为带符号的 int(但示例将其定义为 char)。但我不断收到一条错误消息

控制器 CANMessage 语法是

我真的不明白控制器语法以及如何应用它。任何解释方面的帮助将不胜感激。谢谢

0 投票
1 回答
4843 浏览

arm - 如何消除 CAN 中的 ACK 插槽错误?

我正在使用 CAN 总线连接两个 LPC2129 微控制器。立即从发送器发送消息,但在接收器侧,接收中断正在连续执行。

我在开始时收到 ACK 错误,因为它是接收中断的优先级较低的中断,但稍后接收中断将连续发生,并且即使我只从发送器发送一次,数据也将被正确接收。

更多细节是:

如何消除此 ACK 错误?