跳转到内容

LIN 通信:主从调度与 LDF 信号解析

BMCLI 可以根据 LDF 组织 LIN 主从通信,将调度表、节点响应和信号解析连接起来。本篇通过一次零部件联调,介绍怎样让 AI 帮助您搭建通信环境、观察交互结果。

LIN 网络像一场有主持人的对话:主节点按调度表发出 Header,发布该帧的节点再给出数据。把顺序、角色和响应准备好,两端就能按约定交谈起来。

例如,车门上的 LIN 开关或执行器已经到样,而车身主控制器尚未准备好。工程师可以让 BUSMUST 分析仪代替主节点,按 LDF 发出命令并读取状态;反过来调试主控制器时,也可以用分析仪提供从机响应。

准备支持 LIN 的端口、符合模块要求的供电与上拉、线束和 LDF,即可围绕真实零部件开展联调。本篇用双端口和一份小型 LDF 展示其中的主从交互;Command/Status 是教学字段,换成项目的按键、位置或故障信号后,交互方式仍然适用。AI 负责配置和结果整理,BMCLI 负责 LDF 解析、主从角色、响应表与调度执行。

让 LDF 驱动 LIN 通信

图 8-1 主节点安排时隙,各发布节点在对应 Header 后响应。工程关系示意。

给 AI 的输入:描述这条 LIN 网络

Section titled “给 AI 的输入:描述这条 LIN 网络”

输入为 ux-cluster.ldf 与已确认的主从端口、供电和上拉配置。下面的设备号属于双分析仪教学台架,接真实零部件时按实际连接替换。

请使用 BMCLI,根据 ux-cluster.ldf 配置我的隔离 LIN 台架。10356/4 作为 Master,使用已确认的 1 kΩ 上拉和 LIN 电源;10357/4 作为 Slave,上拉和电源关闭。按 LDF 的 NormalTable 运行,Command 为 0x5A,Status 为 0xC3。请先检查并展示帧载荷、角色和调度配置,再启动这两个通道的通信。观察 5 秒后,交付配置与报告,说明帧数、校验结果和实际周期,并停止本次调度。

AI 会先解析 LDF,展示初始载荷,再准备从机响应,最后按表名启动调度。随文 LDF可用于离线检查,物理通信则需要完成相应接线与供电。

成品与效果:两个帧组成的最小网络

Section titled “成品与效果:两个帧组成的最小网络”

本次交付目标是一套主从通信配置和五秒观察报告。下面以教学 LDF 的 Command、Status 展示载荷与调度效果。

示例 LDF 包含 UXMaster、UXSlave 和 NormalTable。一次完整循环如下:

调度位置 数据含义 到下一项的间隔
第一项 MasterFrame,0x10 主节点发布 Command=0x5A 20 ms
第二项 SlaveFrame,0x11 主节点请求,从节点回复 Status=0xC3 20 ms

因此,表循环为 40 ms,同一个帧每轮出现一次。示例还为从节点定义了独立的 1 位 ResponseError,便于将响应错误状态与业务 Status 区分开。

运行后,接收摘要应展示两类帧的数量、校验结果和实测周期。看到 0x5A 发出、0xC3 返回,就完成了一次清楚可见的主从交互。

实现解析:BMCLI 在成品中承担的工作

Section titled “实现解析:BMCLI 在成品中承担的工作”

下面结合关键调用说明应用的实现方式。AI 生成的程序将这些调用组织成完整流程,并处理返回结果与任务收尾。

Terminal window
# 检查数据库文件的结构与定义,先发现输入资料中的问题。
bmcli database validate --file=ux-cluster.ldf --format=json
# 加载数据库并登记资源名,供后续解析或协议操作复用。
bmcli database load --file=ux-cluster.ldf --name=ux-cluster
# 查看 NormalTable 的帧顺序与时间槽,尚不启动通信。
bmcli ldf schedule show NormalTable --database=ux-cluster --format=json
# 查看帧定义和初始载荷,核对 Command 的编码结果。
bmcli ldf frame show MasterFrame --database=ux-cluster --format=json
# 打开 LIN 主通道,并采用已确认的速率、上拉与供电配置。
bmcli channel open --channel=10356/4 --mode=master `
--bitrate=19200 --pullup=1k --power=on --lin-version=2.1
# 打开 LIN 从通道,关闭该端口的上拉和电源输出。
bmcli channel open --channel=10357/4 --mode=slave `
--bitrate=19200 --pullup=off --power=off --lin-version=2.1
# 为从节点准备响应数据;收到相应 Header 后返回载荷与校验。
bmcli lin response set --channel=10357/4 --id=0x11 `
--data="C3 00 00 00 00 00 00 00" --checksum=enhanced
# 将已确认的 LDF 调度表交给主节点执行。
bmcli ldf schedule activate NormalTable `
--database=ux-cluster --channel=10356/4 --format=json
# 停止本次 LIN 调度,结束周期性的 Header 请求。
bmcli ldf schedule deactivate --channel=10356/4 --format=json

LDF 已经说明发布节点、长度、信号位置和调度间隔。BMCLI 根据这些定义生成主发帧初始载荷,执行主读与主写,并处理 LIN 的 PID 和校验。

从机的 response set 接受原始字节,示例的 C3 00… 来自 LDF 中的 Status 初值。项目修改信号位置后,AI 可以依据 ldf frame show 重新生成响应字节,让解释与发送保持一致。

主节点负责调度,通常也负责主上拉和总线供电;真实线束按项目电气设计配置。本例速率为 19.2 kbit/s,两端保持一致,从机响应先就绪,再激活主节点调度。

预览整张表时,使用 ldf schedule show;确认后使用 activate。逐项 lin schedule add 会修改运行时的系统调度表,适合需要调整调度项的场合;单纯查看 LDF 时使用 show 即可。

本例按 NormalTable 执行两个无条件帧。结束时按“停止调度、清理本次响应、关闭本次通道”的顺序收尾即可。

LIN master-read 的从站响应可通过 tx_complete 事件中的状态、长度和 data 读取。分析程序结合 rx_frametx_complete 组织完整的交互记录。

进一步探索:从 LIN 联调到零部件工具

Section titled “进一步探索:从 LIN 联调到零部件工具”

这个案例还可以继续完善,也可以延伸到更多工作中。您可以从感兴趣的一项出发,与 AI 讨论下一步的实现。

有了主从通信,可以请 AI 将 LDF 中的控制和反馈信号做成滑块、状态灯与曲线。例如操作一个位置请求,同时显示执行器返回的位置和故障状态,BMCLI 负责信号编码、调度与接收。参考实现是由页面修改目标值,后台更新对应响应数据,调度仍按 LDF 运行。这样,同事可以围绕零部件的动作调试,而不必反复查找帧 ID 和原始字节。

主控制器到位而部分从节点尚未到样时,可以反过来让分析仪提供这些节点的响应。尝试时,请将 LDF、节点分工和几组状态值交给 AI,由它配置从机响应表,主控制器继续负责发起 Header。再按实验阶段更新反馈值,并采集主控制器后续请求,观察它是否按预期处理。这个方向复用了同一份网络定义,也为后续真实零部件接入提供了可对照的通信记录。

以下文档介绍本篇涉及的接口;具体参数可通过本机 JSON Help 查询。

下载本篇配套示例 ZIP


上一篇 · 系列目录 · 下一篇