问题标签 [j1939]
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.
can-bus - 哪个 SAE J1939 PGN 编号可以删除 CAN 总线网络中的 ECU?
我在 SAE J1939 标准中寻找可以删除 ECU 地址的 PGN 编号,或者至少说 CAN 总线网络中不再使用该 ECU 地址或 ECU 单元。
我最近用纯 C 代码编写了一个开源 SAE J1939 库。但我需要一个 PGN 号码。可以使用示例。
matlab - J1939 CAN 通讯,J1939 协议栈
我需要一些有关如何将 J1939 库用于 Simulink 实时工具箱的指导。我使用的是以前的版本 6.7 (R2017b)。关于它的文档或示例很少。
我想要实现的是在通道 1 上发送 CAN 消息并在通道 2 上接收它。任何人都可以分享如何发送帧的步骤,以及不同块的设置。
在我的模型中,我考虑了这些块:
- 我添加了 dbc 的 J1939 数据库,它很好
- J1939 控制器应用程序:我刚刚使用了常规选项卡。我不是关于网络管理选项卡的内容,我在其中放置了 Arbitrary Address Capable
- J1939 协议栈:不确定我可以将什么连接到模块的输入或输出:CAN Msg 和 N?
- J1939 发送消息,我添加了框架,它似乎没问题
- J1939 接收消息,我也添加了相同的帧,并且该块似乎也可以
- 设置块 CAN-AC2-PCI B1 FIFO: CAN1 / CAN2 用于管理 CAN 板,这似乎也可以
目前以我配置它们的方式,我看到总线上发送的任何帧。
谁能与我分享如何配置块?
非常感谢您的支持。
can-bus - CAN J1939 设备在通信超时后停止响应
我是一个更高层次的人,我不知道也不想知道太多关于can-bus、j1939甚至特定 ECU 的知识。我只是不喜欢软件解决方案,所以我想问一下,客户的要求是否合法。
- 如果特定 ECU 在通电后 300 毫秒超时内未接收到 CAN 帧,它将停止响应任何进一步的帧并且必须重新上电。这是来自客户技术人员的信息,我只能相信它。
- 可以在 CAN 驱动线程准备好后给 ECU 上电,但最终客户需要一些额外的接线。
- 软件解决方案都不好或更糟,例如在重要检查之前运行 FreeRTOS,将 CAN 驱动程序代码放入与其他产品通用的代码中,或者在引导加载程序中启动 CAN 外围设备并在没有软件控制的情况下继续运行,直到驱动程序启动。
- 敏感的部分是,我们在规范中没有明确要求在如此短的时间内启动 CAN 驱动程序。客户说,这是 J1939 规范的一部分。
有人可以确认或反驳,J1939 允许设备在 300 毫秒静默后不可恢复地停止接收,或者要求设备在通电后 300 毫秒内开始发送吗?或者至少引导我了解 J1939 标准的部分内容,这可能会考虑到这一点?
谢谢
python - Python-CAN 脚本接收一半的预期 CAN 消息
我使用 Python-CAN 库编写了一个 Python 脚本,该库以 1 秒的速率记录接收到的 CAN 消息 5 分钟,然后将所有消息记录到文件中并退出。计算机有一个连接到 CAN 总线的 CAN 模块。(总线上的另一个设备是引擎)我使用 SocketCAN 接口与它通信。
这台计算机连接的测试引擎系统正在以我认为 250kb 的波特率发送大约 114 条消息。我预计每 1 秒会在文件中记录 114 条消息,但我看到的却是大约一半。(约 65 条消息)
引擎的 ECU 是否有可能设置为 500kb 波特率,这就是为什么我没有得到我期望的计数?如果波特率不匹配,我认为不会有通信,但我没有对系统的物理访问权限,因为我是通过 OTA 更新远程发送脚本而不是自己运行它。(该设备是无头的,但设置为在启动时运行脚本)我只看到生成的日志文件。
这是python代码:
(注意,我有代码将接收到的消息解析为包含的信号,但我没有在此处包含此代码,因为它发生在最后,并且不相关)
我感谢您的任何想法或意见。谢谢
obd-ii - 寻找 OBD-II 完整数据框的示例
我正在开发一个 OBD-II 阅读器,我想在其中查询请求以使用 stm32 处理器读取 PID 参数。我已经明白数据字段应该做什么了,但是 ID 让我很头疼。正如我所读到的,必须发送0x7DF
广播请求,每个 ECU 都会用自己的 ID 响应。但是,我被要求在 SAE J1939 协议中执行此操作,该协议使用 29 位扩展标识符,我不知道我需要在这个 ID 中添加什么。
正如我在标题中所说,有人可以使用这种方法向我展示一些来自公共汽车的实际数据吗?我一直在互联网上搜索真正的框架,但到目前为止没有任何运气。
如果 OBD-II 通信需要一些确认才能正常工作,如果有人能解释一下,我也将不胜感激。
谢谢
python-3.x - Scapy 中的分层数据包
我正在尝试为 J1939 CAN ID 创建一个数据包类。因为我想把 PGN 分成更多的领域;我想把它做成一个包。
这是 CAN ID 格式和布局。
这是我拥有的代码和一条注释,用于填写 PGN 数据包/对象的去向。
j1939 - 关于SAE J1939总线地址的问题
我正在开发一个程序来使用 J1939 从总线读取和请求参数。我知道为了请求 PGN,我需要一个地址,该地址在地址声明程序中声明。我对此有一些疑问。
首先,节点地址是经常变化还是静态的?
第二,我的程序作为外部测试设备应用程序,是否需要在每次总线打开时都进行地址声明程序,或者我可以将我从地址声明程序中获得的ID永久存储为我的应用程序?
至于地址声明程序,什么是适合我的申请的 NAME 字段?我想要做的是建立一个总线不同参数的监控系统,比如速度、燃料、踏板位置等。我的猜测是没有足够的 ECU 来填充所有 255 个可用地址,但我可以' t 确认有多少,所以我可能需要一个名字。它不是产品,因此不会批量生产,只能在我们的设施中使用。