Engbug
Engbug是一款支持CAN的CAN报文接收发送、诊断、标定功能的软件。功能持续开发中。
安装密码:fzxhub
计划中功能
- 支持更多CAN设备。
- 增加报文接收支持字节折线图显示,或BDC做数据分析。
- 增加标定观测折线图显示,支持数据分析; 增加DQA观测。
功能托盘
本程序是一个托盘程序,关闭单个功能模块窗口时,程序不退出。在电脑右下角托盘中右键Engbug图标来选择功能窗口。需要整个程序退出时使用托盘图标来退出

设备连接
运行Engbug后,可在托盘中选择Device来连接CAN设置,或者任意模块窗口右上角选择Device图标来连接CAN。当前支持4路CAN独立连接。选择参数后点击连接。

最下方是时间戳类型选择,
Vector硬件时间戳是连接时触发开始计时,因此多个通道独立连接会导致不同通道的起始时间不同步。Peak硬件时间戳不支持发送。因此只有接收帧有时间戳。软件时钟精确度不如硬件时间戳。
基于以上原因,建议:
- 单通道使用VectorCAN时使用硬件时间戳。
- 多通道使用时或者单通道使用PeakCAN时使用软件时间戳。
窗口简介
每个窗口左上角都有项目文件打开、保存、保存为的快捷键;右上角有设备管理、系统日志、模块设置快捷键。注意:每个模块窗口的设置只对当前模块有效。
日志窗口
日志窗口主要显示相关关键操作打印,可用于排错等。该窗口支持将特定ID转为字符串显示在日志窗口,支持多帧,如下方法设置

诊断窗口
诊断窗口暂时支持UDS协议解析与发送,点击设置可以设置发送接收ID、周期发送帧数据。
诊断条目支持Run/Check两种,Run是发送诊断报文发送、执行任务;Check主要是检测接收的诊断报文。
所有条目可单独执行流程或者全部流程链式执行。
诊断发送与分析
发送UDS报文增加条目即可,服务可下拉选择,如无需要的服务可手动输入服务的Hex,两项item和data可分别输入子服务和数据,自动追加在报文中。
如图发送10 03、10 01UDS报文可如上操作。可选择每条使用功能ID或者物理ID。
诊断发送与校验
新增条目后在条目上右键选择切换即可在Run/Check切换,或者选中后使用左上角功能。
如图解析:发送10 01,检查回复是否为50 01,如是将第3,4字节数据保存为UInt16的变量(小端),变量名字为time,后续可以直接使用time来获取数据。
点击左上角Start按钮可以执行全部诊断项。
诊断特殊执行
X1 Delay
当遇到流程中需要等待时可以增加X1 Delay,单位ms,最小分辨率100ms。
X2 Print
用于打印数据,一般用于打印用户变量。调试变量是否符合预期。
X3 SaveUserVar
用于存储数据到用户变量,第一Item输入变量名字,第二item根据选择类型输入数据,数据将按照该类型存储到内存,后使用UserVar即可取出数据。
如果变量在使用之前没有存储过,一般拿出数据为0,不会报错。变量名字理论可以任意组合,但建议按照C命名变量规则。特殊字符不要使用。
X4 PlugDll
用于载入dll执行,dll可以使用VS或者QT来编辑生成,提供示例。item只能是变量,第一item是Dll中函数的输入,可以多个变量;第二item是Dll中函数的输出,只能有一个输出。输出会存入变量中,变量类型由PlugDll中函数返回值决定。
File项需要加入Dll文件,路径可以是相对路径和绝对路径。相对路径是相对项目文件的路径,移动文件时请保持相对性。
可以用于解锁算法、CRC算法、用户交互等等个性算法实现。
X5 LoadeFile
用于载入文件,例如UDS升级时,将固件先用该指令载入PC内存,用变量存储文件,方便后续处理。
只有第一item可用,以“,”给到三个变量,分别时文件内容、文件起始地址、文件长度。File项需要加入要处理的文件路径,路径可以是相对路径和绝对路径。相对路径是相对项目文件的路径,移动文件时请保持相对性。
暂时只支持bin,由于bin文件无地址,因此文件起始地址获取始终为0。
后续支持hex,s19文件可完整支持获取文件内容、文件起始地址、文件长度。
X6 [3637]TransferFile
用于发送文件,是UDS指令36 37的集合,会自动将存储在内存变量中的文件全部根据规则发送出去
第一item是文件变量,第二item是Block(块大小),就是单个36块发送有效数据大小。
X7 SwitchByteOrder
用于切换变量的大小端,由于PC为小端模式,一般变量保存都是小端,以及收到保重存储的数据也是默认LSB(低字节先发),如果UDS发送序列需要MSB(高字节先发),可以先用X7来转换一下。后续可能优化存储变量时可选择大小端类型。
诊断流程窗口
在诊断窗口下编辑的流程编辑调试完成后,可以保存成流程,后续可以使用诊断流程窗口直接执行,暂不支持诊断流程退回再修改。
在诊断窗口下点击右上角图标即可输入Process的名称。
UDS使用中常用的dll文件有SeedKey、CheckSum,用于27解锁、和CRC校验。
UDS使用中常用的内容文件有Firmware、FlDriver,是固件和Flash驱动程序。
因为该流程包含两个文件引用,会连续弹出两个消息框,选择文件类型,文件类型选择后,该文件路径将标签化,在流程执行窗口执行该流程前需要重新择文件,这样项目文件和引用文件可以分开保存和移动。
如果在选择文件类型时选择忽略,如果引用文件是绝对路径,执行流程时需要确保绝对路径无误;如果是相对路径,再移动项目文件时需要保持引用文件和项目文件的相对性。
选择文件类型时也可以输入新的标签(不属于SeedKey、CheckSum、Firmware、FlDriver),用于在流程窗口可以根据标签选择新的路径。
导入流程成功后,如果需要保存到项目文件记得点击保存。
来到流程窗口,process可看到所有流程。如果没有点击右边刷新。
例如当前“fzx”流程是一个升级流程,其他文件如SeedKey等文件都选择了忽略,使用源流程中的文件引用,保证执行时可以找到文件即可,只需要选择固件即可执行流程。
例如“123”流程需要选择SeedKey、CheckSum、FlDriver、Firmware的路径,除了需要这些,还需要一个MySeedKey标签的文件需要选择好后才能开启流程。
Firmware可选择多个文件候补,打开周期执行流程时,自动轮询切换Firmware执行流程。
报文窗口
报文支持显示总线上的帧数据。
- 支持单帧、折叠显示
- 支持ID过滤,过滤器可通过、阻止、以及过滤器无效,默认过滤器无效。
- 支持将报文保存为asc格式,方便其他工具来分析。
- 发送支持手动、周期发送;暂时最小周期支持10ms发送,更小周期后续支持。
- 支持在报文数据某个字节自增发送,可用于分析丢帧。
- 支持错误帧显示
标定窗口
该功能需要被标定设备支持CCP协议。XCP后续支持。
暂时只支持轮询模式观测数据,DAQ模式后续支持。
添加变量前请确保选择了elf文件。
elf文件中无变量类型信息。添加好了变量后确保选择正确的数据类型Unsigned、Signed、Float,正确的数据类型才能正确显示数据。
参数模块Data输入后需要点击Download才能发送给控制器。