搜索
- 葡萄酒 | 威士忌 | 白兰地 | 啤酒 -
- 葡萄酒 | 威士忌 | 白兰地 | 啤酒 -

去年,在为一家物流公司建立车队管理系统时,客户希望对每辆卡车的油耗、发动机转速和冷却液温度进行实时监控。他们不仅希望将数据存储在本地,还希望将所有数据流传输到云平台,以便调度人员监控车辆状态。.
听起来很简单。但是,一旦我们开始动手,从车辆内部提取数据就会发现比想象中复杂得多。所有车辆信息都通过 CAN 总线传输,但不同车型的报文格式千差万别。从一汽卡车和东风卡车上读取发动机转速意味着要处理完全不同的 CAN 报文 ID、数据字段位置和转换系数。.
我们最终使用双 5G 车辆网关来解决这个问题。网关通过 CAN 接口连接到车辆总线,解析所有信息,然后通过 5G 网络将所有信息上传到云端。整个项目让我深刻体会到车辆网关和 CAN 总线需要如何协同工作。.
让我们先来了解一下 CAN 总线到底是什么。CAN 是 Controller Area Network(控制器区域网络)的缩写。早在 20 世纪 80 年代,博世就设计了这种用于汽车的通信总线。.
为什么需要 CAN 总线?现代汽车包含数十甚至数百个电子控制单元。发动机 ECU、变速箱 ECU、防抱死制动系统 ECU、仪表盘 ECU、车身控制 ECU,不胜枚举。这些 ECU 需要进行通信。如果在每对 ECU 之间都单独布线,线束将是一场噩梦。.
CAN 总线将所有 ECU 连接到一条共享总线上。把它想象成一条地铁线路 - 所有车站都位于同一条线路上。任何 ECU 都可以发送信息,其他所有 ECU 都可以接收。每个 ECU 选择性地处理与其功能相关的信息。.
商用车辆通常运行 2-3 条独立的 CAN 总线。动力总成 CAN 连接发动机、变速箱、防抱死制动系统和其他动力总成 ECU,通常以 500 kbps 或 250 kbps 的速度运行。车身 CAN 处理车灯、车锁、气候控制和舒适系统,速度通常为 125 kbps。还可能有专用的诊断 CAN 总线。.
车辆网关需要接入这些 CAN 总线来读取数据。以 SV910 为例,它配备了 3 个 CAN 端口,可同时连接多个车辆 CAN 总线。.

具体如何读取这些数据?让我们以读取发动机转速为例。.
第一步是物理连接. .将网关的 CAN 接口连接到车辆的 OBD 诊断端口或直接连接到 CAN 总线。商用车一般都有标准的 OBD 端口,通常位于仪表板下方或驾驶员座位旁边。连接器为梯形,有 16 个针脚。.
CAN 总线使用两根线的差分信号:CAN_H 和 CAN_L。在 OBD 连接器上,第 6 针是 CAN_H,第 14 针是 CAN_L。网关的 CAN 接口也有相应的导线,只需将它们匹配起来即可。重要提示:CAN 总线末端需要 120 欧姆的终端电阻,以防止信号反射。有些网关内部集成了终端电阻器,可通过软件进行配置。.
第二步是配置波特率. .CAN 总线通信速度必须匹配,否则无法接收任何数据。商用车动力总成 CAN 的运行速度通常为 250 kbps 或 500 kbps - 您需要先进行验证。请查阅车辆维修手册或使用专业 CAN 分析仪进行测试。.
将网关的 CAN 接口配置为相同的波特率。SV910 等网关支持多种波特率,可通过配置文件或管理界面进行调整。.
第三步是监控和解析 CAN 报文. .CAN 总线数据以帧的形式传输。每个帧包含几个部分:报文 ID、数据长度、数据内容、校验和。.
信息 ID 是识别每条信息内容的关键。对于发动机转速,GB/T 27930 和 SAE J1939 等标准定义了 ID。J1939 是商用车辆的通用标准,发动机转速使用 ID 0x0CF00400,数据位于第 4 和第 5 字节。.
网关持续监控 CAN 总线,捕捉具有特定 ID 的帧,然后从数据字节中提取转速值。提取的值是原始数据,需要通过公式转换为实际转速。在 J1939 标准中,发动机转速分辨率为 0.125 rpm/bit,因此将原始值乘以 0.125 即为实际转速。.
第四步是打包和上传数据. .解析 RPM 值后,网关会将其打包成适当的格式,以便通过 5G 网络上传到云端。常见格式包括 JSON、Protobuf 和 MQTT 消息。.
上传频率取决于需求。实时监控可能需要每秒更新一次,而一般的车队管理可以使用 10 或 30 秒的间隔。频率越高,数据成本越高。.

理论上听起来很简单。现实情况是,适应不同车型最令人头疼。.
国家标准 GB/T 32960 定义了新能源汽车的数据格式,但只涵盖电动汽车。传统燃油动力商用车大多遵循 SAE J1939 标准,但具体实施仍有差异。.
更棘手的是,许多汽车制造商在标准定义之外还使用专有的 CAN 信息。一些品牌将故障代码和维护提醒放在私人信息中,格式没有记录。读取这些数据需要逆向工程或从汽车制造商处获取技术文档。.
在项目实施过程中,我们对每种车型进行单独调整。首先收集该车型的 CAN 协议文档。如果没有文档,则使用 CAN 分析仪记录总线数据并手动分析报文格式。然后在网关中配置相应的解析规则。.
SV910 等网关支持灵活的配置。您可以定义自定义解析规则,指定信息 ID 中的哪些字节代表哪些数据以及应用哪些转换公式。不同车型只需不同的配置文件,无需修改代码。.
我们建立了一个车型数据库,存储不同品牌和车型的 CAN 协议配置。新项目开始时,我们会检查配置是否已经存在。如果不存在,我们会进行一次调整,然后将其添加到数据库中。现在,该数据库已拥有四五十种车型的配置。.
使用车辆网关读取 CAN 数据需要良好的实时性能。特别是在自动驾驶或 ADAS 场景中,数据延迟会影响安全。.
CAN 总线本身的延迟非常低,以微秒为单位。但网关处理、打包和上传会增加额外的延迟。如何控制这种情况?
首先,尽量减少处理步骤. .接收 CAN 帧后,立即在中断处理程序或高优先级任务中进行解析,而不是排队。解析完成后,直接放入传输缓冲区并通过 5G 网络发送。.
第二,使用硬件加速. .一些先进的车辆网关集成了带有硬件过滤功能的 CAN 控制器。在硬件层面配置过滤规则,只接受感兴趣的报文 ID,而丢弃其他报文。这样可以减少 CPU 负载,提高处理速度。.
第三,谨慎管理时间戳. .每个 CAN 帧都应在网关接收后立即获得一个时间戳。该时间戳需要微秒级的精度。上传到云端的数据应带有该时间戳,以便云端知道数据的采集时间。.
SV910 支持 PTP/GPTP 时间同步协议,确保网关与其他设备之间的高精度时钟同步。这对于需要多设备协调的场景至关重要。.
数据的准确性也必须得到保证。尽管 CAN 总线具有内置的错误检查功能,但偶尔还是会出现损坏的数据。网关需要二次验证。就发动机转速而言,正常操作不可能从 1000 转/分突然跳到 5000 转/分,然后再跳回来。将此类异常数据标记为可疑数据,而不是直接使用。.
还能处理总线静默情况。如果长时间没有收到某条信息,相应的 ECU 可能发生故障或总线断开。网关必须检测到这种情况并报告异常。.
SV910 采用双 5G 架构,配备两个 5G 模块。为什么是双 5G?
第一个原因是冗余备份. .长途运输的商用车辆可能会经过信号较差的地区。使用单 5G 时,信号丢失意味着无法传输数据。双 5G 使用不同运营商(中国电信和中国联通,或中国移动和中国联通)的 SIM 卡。当其中一个信号变差时,就切换到另一个。.
可以自动切换。网关实时监控两条 5G 链路上的信号强度和延迟,哪个质量更好就使用哪个。或者同时使用两条链路进行链路聚合,使带宽翻倍。.
第二个原因是流量分布. .车辆应用通常涉及多个数据流 - CAN 总线数据、摄像头视频、定位数据和 V2X 通信。这些数据类型具有不同的特性和不同的带宽/延迟要求。.
通过一条 5G 链路传输关键控制数据,通过另一条链路传输大流量视频。这样既能防止干扰,又能确保关键数据的实时传输。.
第三个原因是安全隔离. .一些车队管理平台要求在车辆控制通道和数据收集通道之间进行物理隔离,以确保安全。双 5G 完全满足这一要求。控制命令使用专用链路,收集的数据使用另一条链路。即使黑客破坏了数据通道,也无法篡改控制指令。.

收集数据后,车辆网关上传到车队管理平台。平台通常是云服务,提供车辆监控、路线回放、统计报告、故障警告等功能。.
数据上传有多种协议可供选择。. 最常见的是 MQTT. .这是一种专为物联网设计的轻量级消息队列协议。网关充当 MQTT 客户端,连接到云 MQTT 服务器并定期发布消息。.
MQTT 支持不同的 QoS(服务质量)级别。QoS 0 最多为一次--"点火即忘",可能会丢失。QoS 1 至少一次 - 保证传送,但可能出现重复。QoS 2 恰好一次--保证传输,无重复。根据数据的重要性选择适当的 QoS。.
HTTP/HTTPS 也被广泛使用. .网关定期将收集到的数据打包,并通过 HTTP POST 请求上传到云 API。这种方法简单直接,兼容性好。缺点是 HTTP 开销超过 MQTT,不太适合高频率的小数据传输。.
也有一些专门的协议. .例如,JT/T 808 是交通部为公路运输车辆卫星定位系统终端制定的标准通信协议。许多商用车队管理平台都使用这一标准。支持 JT/T 808 需要实施完整的协议栈。.
数据格式需要与平台达成一致。JSON 很常见--人类可读,易于调试。但 JSON 会占用空间,因此如果对数据成本比较敏感,应使用 Protobuf 等二进制格式或自定义紧凑格式。.
除了读取实时数据外,车辆网关还能进行诊断。.
汽车 ECU 会生成故障诊断代码(DTC)。发动机出现故障时,会产生 P0001、P0002 等代码。这些代码存储在 ECU 中,可通过 CAN 总线读取。.
标准诊断协议为 ISO 14229(UDS - 统一诊断服务)和 SAE J1939-73。网关充当诊断客户端,向 ECU 发送诊断请求,ECU 返回故障代码和相关信息。.
读取故障代码后,将其转换为可读描述。P0001 表示什么意思?燃油量调节器控制电路/开路。这种翻译需要一个故障代码数据库。网关可在内部存储常见代码的描述,或上传到云端进行翻译。.
通过故障代码,车队管理平台可以提供预警。例如,检测到冷却液温度过高代码时,可立即通知驾驶员和维护部门,防止发动机过热损坏。.
先进的应用程序可执行预测性维护。分析各种车辆参数的趋势,预测潜在故障。例如,发动机机油压力逐渐下降尚未触发故障代码,但却显示出警告信号--提示驾驶员检查机油。.
在众多项目中,我们遇到了很多挫折。.
第一课:正确保护 CAN 总线. .车辆 CAN 总线至关重要。如果网关故障将总线拉低或传输错误信息,车辆的正常运行就会受到影响。.
网关 CAN 接口需要电气隔离,以防止故障传播。总线保护电路应在过压或过流时自动断开。软件也需要保护机制--在检测到异常时停止传输,以避免总线干扰。.
第二课:车辆改装必须符合规定. .在商用车辆上安装车载网关构成车辆改装。必须满足国家和地方法规要求,同时不影响车辆安全性能。有些地区要求在改装后向车辆管理部门登记。.
第三课:数据安全和隐私保护至关重要. .车辆行驶路线和行为涉及隐私。加密数据传输,匿名存储。云平台访问需要权限控制--不能随意泄露给第三方。.
总体而言,通过 CAN 总线和车辆网关读取车辆数据是互联车辆应用的基础。这项技术本身并不复杂,但要做好它需要注意许多细节。适应不同车型、确保实时性能、数据准确性、通信可靠性--每一个方面都需要仔细推敲,才能提供稳定可靠的服务。.
莫