最近在做直流充电方面的工作,要分析BMS和充电机的通信报文,所以就做了一个27930协议的在线解析工具,除基本的协议解析功能外,做了额外的分析和处理,具体如下。
- 解析协议同时对报文做了基础校验(校验可能不完整,欢迎提供当前解析工具还没校验的数据),不符合27930标准的报文会被明确标出,在解析工具中体现为红色背景条目,备注中描述了错误原因。
- 解析库同时支持27930协议基础上的其他自定义协议的解析,如BMS和充电机所在的CAN总线中存在其他设备的通讯协议。
- 对于非27930协议中的报文,如果没有自定义解析器,或自定义解析器标记无法解析的,在解析工具中体现为黄色背景条目。
- 本解析库还提供了27930协议中的流程校验功能,在解析工具中[流程]列,绿色圆点表示正确,红色圆点表示错误,黄色圆点表示跳过(非27930协议)。
注意:流程校验现在仅提供不严格校验,即有些不严格符合协议的报文可能会被忽略,但校验流程错误的报文一定错误。
解析工具:http://www.tt-site.com/parser/can27930parser.html
使用方法:将cantest工具读取报文保存为csv格式,点击工具中上传按钮,选择报文文件即可。如果使用其他工具导出的报文,只要csv文件符合下方格式即可("|"表示tab分隔符)
序号 | 传输方向 | 时间标识 | 帧ID | 帧格式 | 帧类型 | 数据长度 | 数据(HEX)
解析库可用方法 :
// 报文解析
Can27930Parser.parse(data: FrameUnit[], unknownFrameParser?: ((unit: FrameUnit, error: Error)=>ParsedResultUnit)): ParsedResultUnit[]
// 流程校验
Can27930Parser.flowCheck(parsedResultUnits: ParsedResultUnit[], process?: (result: 0 | 1 | 2, message: string, index: number)=>void)
- ParsedResultUnit说明
ParsedResultUnit.errorCode: 0-报文正确 1-报文无法解析 2-报文错误
解析库和解析工具最近几天会持续优化,如果发现有bug或其他问题,请留言给我,谢谢。