news 2026/11/2 18:57:41

工业车辆BMS通信协议分析实战(一):RS485抓包、Modbus解析与CAN适配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工业车辆BMS通信协议分析实战(一):RS485抓包、Modbus解析与CAN适配

文章目录

  • 一、项目背景:从两根未知通信线开始
  • 二、通信协议分析
    • 串口参数(⭐)
    • 主要寄存器定义
      • 读取主参数的标准命令
      • 读取时钟字段组(0x06D6)
  • 三、485转换CAN
  • 四、免责声明

一、项目背景:从两根未知通信线开始

近期在一个工业车辆项目中,遇到了一套益佳通电池管理系统(BMS)。

车辆原有的电量显示屏通过两根通信线直接连接电池,可以实时显示SOC、电池电压、电流以及温度等信息。

由于项目需要将电池数据接入整车控制器(VCU),而现场缺少完整的通信协议资料,因此尝试通过通信分析的方式完成电池数据读取与适配。

二、通信协议分析

初期无法确定两根通信线采用的具体协议,需要从硬件接口、电气特性以及实际通信数据入手进行排查。

经过多次测试,最终确认该电池采用RS485通信接口,应用层使用Modbus RTU协议。

在此基础上,通过分析设备正常运行时的通信数据,逐步完成了电池核心参数的识别与解析。

串口参数(⭐)

项目实测参数
物理层两线半双工 RS485(A/B)
波特率9600 bit/s
数据位8
校验位无(none)
停止位1
从站地址0x01
功能码0x04 读取输入寄存器;0x02 读取离散输入
CRC校验CRC-16/Modbus;初值0xFFFF,多项式0xA001;CRC低字节先发送
通信拓扑显示屏为主站,电池BMS为从站

主要寄存器定义

寄存器含义数据格式换算系数抓包例子
0x041A总电压uint160.103 33 → 819 → 81.9 V
0x041B总电流int160.1FF FA → -6 → -0.6 A
0x041CSOCuint160.101 58 → 344 → 34.4 %

读取主参数的标准命令

主站请求: 01 04 04 1A 00 06 50 FF
BMS应答 : 01 04 0C 03 33 FF FA 01 58 03 E8 80 00 00 00 7F 4D

寄存器数据依次为:03 33 | FF FA | 01 58 | 03 E8 | 80 00 | 00 00。

0x041A = 0x0333 = 819,电压 = 81.9 V。

0x041B = 0xFFFA = -6(int16),电流 = -0.6 A;本次实测负值对应放电,正值充电符号尚未专门实测。

0x041C = 0x0158 = 344,SOC = 34.4%。

读取时钟字段组(0x06D6)

查询:01 04 06 D6 00 06 91 78
应答:01 04 0C 07 EA 00 0A 00 18 00 0D 00 30 00 1C DC C1

年月日时分秒
该应答前六个寄存器依次为2026(07 EA)、(00 0A)10、(00 18)24、(00 0D)13、(00 30)48、(00 1C)28。

三、485转换CAN

有两个方案

  1. 购买485-CAN设备进行数据透传。(简单但是自由度低)
  2. ECU支持485和CAN自己通过代码实现(复杂但自由度高)

四、免责声明

本文仅用于技术研究、工程经验分享及技术交流,不代表相关设备制造商的官方立场或授权。

文中涉及的通信协议分析结果均基于实际测试,不代表设备厂商发布的官方技术规范。相关品牌名称及商标归其合法权利人所有。

本文不提供完整通信协议、设备专有技术资料及具体工程源码。

涉及BMS、整车控制及其他安全相关设备的开发,应在合法授权及符合电气安全要求的前提下进行,并经过充分测试验证。

未经充分验证的技术方案,不应直接应用于量产车辆或安全关键控制系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 18:52:02

如何 15 分钟生成 OpenCore EFI:OpCore-Simplify 新手完整指南

如何 15 分钟生成 OpenCore EFI:OpCore-Simplify 新手完整指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 手工编辑 config.plist&…

作者头像 李华
网站建设 2026/11/2 18:34:30

PLFM_RADAR:开源相控阵雷达全栈实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 18:30:40

FPGA实现PLFM雷达系统:相控阵+高速ADC实时信号处理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 18:30:33

PLFM_RADAR:多平台数据监测与异常告警雷达实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 18:27:44

选择排序算法原理与优化实践

1. 选择排序算法概述选择排序(Selection Sort)是我在初学数据结构时接触的第一个排序算法,也是理解排序思想的最佳入门案例。这个算法的核心思想简单到令人惊讶——每次从待排序序列中"选择"最小(或最大)的元…

作者头像 李华