feat: add VCU status feedback and map DEBUG safety inputs
This commit is contained in:
+19
-9
@@ -1,14 +1,16 @@
|
||||
# AMI 仪表通讯交接文档
|
||||
|
||||
屏幕接口 1.2;MCU CAN 协议 2.2(CAN1 500K / CAN2 250K) | 2026-10-03
|
||||
屏幕接口 1.4;MCU CAN 协议 2.4(CAN1 500K / CAN2 250K) | 2026-10-03
|
||||
|
||||
适用工程:AMI.HMI;屏幕 TJC4827X543_011,480 × 272;编辑器 USART HMI 1.68.1.3037。本文以随附的精简指令版工程为准。
|
||||
|
||||
v2.4 新增 VCU 标准状态反馈 `0x183 / DLC 8`,建议周期 100 ms,独立超时 500 ms。只有 VCU 反馈更新当前任务、锁定和 EBS,确认发送不会改写实际任务。字节定义、颜色及样例见 [VCU 状态反馈](AMI_CAN_DBC说明.md#vcu-状态反馈-0x183),验证见 [反馈测试报告](VCU状态反馈测试报告.md)。
|
||||
|
||||
v2.2 新增标准 CAN `0x182 / DLC 8`,分别设置 `dash.mct`(扭矩千分)、`dash.djwd`(电机温度)、`dash.mcuwd`(MCU 温度)。数据 `F4 01 C2 01 90 01 07 01` 对应 500‰ / 45℃ / 40℃;建议每 100 ms 发一次。CAN1 500K / CAN2 250K 均可接收,三个字段各有有效标志,帧源独立超时 2000 ms。完整布局、有符号温度和异常处理见 [DBC 说明](AMI_CAN_DBC说明.md),实测范围见 [v2.2 报告](AMI自定义显示CAN测试报告.md)。
|
||||
|
||||
v2.1 已烧录并通过 CAN1 500K(SDC)与 CAN2 250K(BMS)分别到官方 HMI 调试器的测试,含两路各六个任务确认/取消;见 [双 CAN 测试报告](CAN1_CAN2_v2.1测试报告.md)。下文的旧模拟器及 v2.0 测试描述属于历史记录,物理串口屏、真实节点和两路同时接入仍待实测。
|
||||
|
||||
2026-10-03 补充:dash 增加全局虚拟浮点控件 `lvbat`,两位小数,`dash.lvbat.val=1230` 显示 12.30 V,来源为 SDC ADC。当前 MCU CAN 输入见 [SDC_BMS协议.md](SDC_BMS协议.md);原整数高压电压/电流控件四舍五入为 1 V / 1 A。灰色数值表示未知或失效。SDC GPIO 尚无具名安全状态映射,当前 MCU 不生成正常/故障判断。
|
||||
2026-10-03 补充:dash 增加全局虚拟浮点控件 `lvbat`,两位小数,`dash.lvbat.val=1230` 显示 12.30 V,来源为 SDC ADC。当前 MCU CAN 输入见 [SDC_BMS协议.md](SDC_BMS协议.md);原整数高压电压/电流控件四舍五入为 1 V / 1 A。灰色数值表示未知或失效。v2.3 SDC GPIO 按用户接线表顺序映射:PD0..PD14 对应 d0,d5,d2,d6,d7,d1,d3,d4,d8..d14;全部低电平正常、高电平故障,d15 无来源未知。完整映射及超时规则见 [SDC / BMS 协议](SDC_BMS协议.md)。
|
||||
|
||||
## 1. 接手先看这三点
|
||||
|
||||
@@ -55,7 +57,7 @@ page debug
|
||||
| d2 | Safe_Ba_BOX | 电池箱安全回路 |
|
||||
| d3 | Safe_RSTOP | 右急停和驾驶舱急停 |
|
||||
| d4 | Safe_LAST | 安全回路末端 |
|
||||
| d5 | Safe_S | 左右后悬安全回路 |
|
||||
| d5 | Safe_S | 左电机互锁(PD1,按用户最新纠正) |
|
||||
| d6 | Safe_RES1 | RES 安全回路 |
|
||||
| d7 | Safe_Control | 主控盒安全回路 |
|
||||
| d8 | EBS_BE | 制动舵机电源 |
|
||||
@@ -71,7 +73,7 @@ page debug
|
||||
|
||||
0 → 灰色“未知”(33840);1 → 绿色“正常”(2016);2 → 红色“故障”(63488)。其他数值显示未知,但主控应限制为 0~2。颜色由工程脚本处理。
|
||||
|
||||
d1 同时更新左急停及行程/惯性两个位置;一次发送即可同步。后悬、RES、主控盒在原图中未标出接入点,独立显示;连线表示原图的示意顺序,不能据此推断具体断点。
|
||||
d1 同时更新左急停及行程/惯性两个位置;一次发送即可同步。用户已纠正 Safe_S / PD1 为左电机互锁,d5 更新顶行第二格;原左后悬项已被替换。BSPD/TSMS 及“返回支路”框已删除。RES 和主控盒独立显示;连线只表示示意顺序,不能据此推断具体断点。
|
||||
|
||||
d0~d15 为全局变量,任何页面均可更新,切页保留,断电重置。debug 后初始化立即绘制状态,tm0 每 250 ms 刷新;离开 debug 后定时器停止,但全局变量仍可接收更新。
|
||||
|
||||
@@ -104,7 +106,7 @@ d0~d15 为全局变量,任何页面均可更新,切页保留,断电重
|
||||
|
||||
按连续字节流解析,不能假定一次 UART/DMA 回调正好收到一帧。维护接收缓冲,搜索 AA 55,等待至少 6 字节,检查类型=01、编号=1~6、帧尾=0D 0A。合法则交给任务状态机并消费 6 字节;非法则丢弃首字节重新搜索。
|
||||
|
||||
当前帧没有长度字段、序列号、校验和或 CRC;屏幕也没有 ACK 等待、自动重发机制。主控自行决定忙碌时如何处理新任务和重复请求。确认发送后,仪表仅把“当前任务”更新为用户选择,不证明主控已接受或车辆正在执行。
|
||||
当前串口帧没有长度字段、序列号、校验和或 CRC;屏幕也没有 ACK 等待、自动重发机制。VCU 自行决定忙碌时如何处理新任务和重复请求。确认发送后仅清 pending_task 并返回 dash,保留 VCU 上次反馈的实际任务;只有 CAN 0x183 更新 current_task。反馈不是与请求序号逐条关联的 ACK。
|
||||
|
||||
## 上电与其他返回帧
|
||||
|
||||
@@ -126,13 +128,13 @@ Program.s 上电通过 printh 发出 00 00 00 FF FF FF 88 FF FF FF。该启动
|
||||
| 高压电压 | dash.ts.val=300 | 整数 V;BMS 原始 0.1 V 四舍五入 |
|
||||
| 扭矩千分 | dash.mct.val=500 | 保留界面“扭矩千分”定义 |
|
||||
| 高压电流 | dash.dl.val=20 | 整数 A;BMS 原始偏置 uint16 换算后四舍五入 |
|
||||
| 电机温度 | dash.djwd.val=45 | 控件支持整数 ℃;当前 MCU 无来源,保持无效 |
|
||||
| MCU 温度 | dash.mcuwd.val=40 | 控件支持整数 ℃;当前 MCU 无来源,保持无效 |
|
||||
| 电机温度 | dash.djwd.val=45 | 来自 0x182 的小端 int16 × 0.1 ℃,四舍五入为整数 ℃ |
|
||||
| MCU 温度 | dash.mcuwd.val=40 | 来自 0x182 的电机控制器 MCU 温度,整数 ℃;不是 AMI 芯片测温 |
|
||||
| 最高单体 | dash.dtwd.val=50 | BMS 最高有效实际温度,整数 ℃ |
|
||||
|
||||
低压电池电压放在车速上方,保留两位小数。主控若采集为 mV,应先换算为 0.01 V 整数(例如 12600 mV → 1260)。指令 dash.lvbat.val=1260 后仍追加 FF FF FF。该值为全局,切页保留,上电设计初值 0.00 V;初值和断线后的旧值不代表有效测量,也没有自动低压告警。
|
||||
|
||||
数值 val 按有符号 32 位整数使用。当前 CAN 来源、单位、缩放、独立超时和有效颜色已在 [AMI_CAN_DBC说明.md](AMI_CAN_DBC说明.md) 定义。车速、扭矩、电机/逆变器温度尚缺来源或标定,不能把示例值当作测量结果。
|
||||
数值 val 按有符号 32 位整数使用。当前 CAN 来源、单位、缩放、独立超时和有效颜色已在 [AMI_CAN_DBC说明.md](AMI_CAN_DBC说明.md) 定义。扭矩、电机与 MCU 温度由 VCU/适配节点通过自定义 0x182 提供;实际电机控制器原生协议及车速标定仍需上游定义。
|
||||
|
||||
## 页面指令
|
||||
|
||||
@@ -147,7 +149,15 @@ page debug
|
||||
|
||||
## 其他文本与安全动作
|
||||
|
||||
dash 的 sd(锁定显示)、EBS 文本为私有控件;只在 dash 当前显示时用 sd.txt="已锁定" 或 EBS.txt="EBS 正常" 更新,中文需 GB2312。切页后会恢复设计初值。debug 的 d8 不会自动驱动主页面 EBS 文本。
|
||||
dash 的 rw、sd、EBS 文本仍为私有控件,由后初始化事件和 100 ms 定时器读取全局变量更新。主控发送 `current_task=0..6`(7 未知)、`lock_state=0/1/2`、`ebs_state=0/1/2`(0 未知、1 绿、2 红),各命令末尾追加真实 FF FF FF;MCU 根据 VCU 0x183 自动转换。切页后重新渲染,不丢失反馈;上电三项均未知。直接修改文本会被状态渲染覆盖。
|
||||
|
||||
当前任务 1~6 为绿字、0“无”为红字;锁定为绿字、解锁为红字;EBS 正常为绿底白字、故障为红底白字。无反馈、无效或超时为灰色未知。debug 的 d8~d11 不自动决定主页面 EBS 汇总状态,由 VCU 独立反馈。
|
||||
|
||||
### VCU 控制当前任务
|
||||
|
||||
VCU 发送标准 ID 0x183、DLC 8、周期 100 ms,任务号放 byte0。0 无,1 八字绕环,2 直线加速,3 高速循迹,4 车检测试,5 EBS 测试,6 手动驾驶。完整样例 `02 01 01 07 00 00 00 01` 显示直线加速、已锁定、EBS 正常。byte1/2 填写实际锁定和 EBS 状态,byte3 的 bit0/1/2 是各项有效标志,byte5/6 必须为 0,byte7 固定 1。
|
||||
|
||||
每帧是三项状态的完整快照。任务未知应清 byte3 的 bit0,不发送任务号 7;清锁定或 EBS 有效位会将对应项置未知。确认任务只产生 0x300 请求,VCU 完成裁决后自行反馈实际任务;反馈停止超过 500 ms 后三项均未知。发送对照表和发送工具命令见 [当前任务发送对照](AMI_CAN_DBC说明.md#当前任务发送对照)。
|
||||
|
||||
按用户提供的状态表:EBS 舵机、电磁阀、气压、油压检测故障时的 VCU 通知、EBS 灯供地及 ECUBACK 断开,由主控实现;无人驾驶 INS/WSS/Camera 故障的 VCU 通知与 ECUBACK 断开也由主控实现,其 EBS 灯逻辑与前四项不同。屏幕工程不包含这些安全输出,也不把检测电平自动解释为正常/故障。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user