TBox

[TOC]

参考文档

Tbox 是汽车上的一个盒子,指Telematics Box,远程通信终端,集成车身网络和无线通讯功能的产品,可提供 Telematics 业务,一般安装在仪表盘下方。Tbox 是一个基于 Android、Linux 操作系统的带通讯功能的盒子,内含一张 SIM 卡,一般是中国联通和移动的 SIM 卡,与这个盒子配套硬件还有 GPS 天线,4G 天线等。车机要联网必须有 Tbox 设备才能实现。

1、TBox 基本功能

TBOX 的功能模块主要包括 4G 模块、GPS 模块、蓝牙模块、以太网模块、CAN 通信模块、电话语言模块、电源模块、Airbag 模块、E/B-call 模块等,每个模块之间紧密联系在一起,形成一个完整的远程通信终端。我们可以通过 Tbox 实现什么功能呢?

1.1 联网

联网是 Tbox 最重要的功能之一,可以支持移动、联通、电信三大运营商的网络,但是我们在汽车上所有的上网体验都来自于车机(就是我们驾驶室里的控制屏),其实车机并没有联网功能,他的作用就像似没有 SIM 卡的手机,Tbox 相当于 SIM 卡。Tbox 与车机之间采用车用以太网通信,组成局域网,分享 Tbox 的 4G 和 wifi 热点上网通道。

1.2 车辆信息实时上传

Tbox 不仅可以上网而且还是车辆信息化的核心控制器,通过 CAN 以及以太网与整车进行通信,实时获取车辆信息包括实时油耗,发动机水温,发动机转速,车辆行驶里程,当前车速,电瓶电压,进气压力,冷却液温度,氧传感器电压发动机负载,节气门开度,空气流量,GPS 车辆位置信息等等。实现了对车辆行驶数据的实时监控。

1.3 远程控制

当车辆静止的时候,可以对车辆进行远程控制等功能。可以通过手机 APP,和 TSP 后台网页,输入我们车辆唯一的身份证号 VIN,就可以获取到车辆现在的实时状态,比如:车窗是否关好、车门是否上锁、剩余油量电量、总里程、驾驶室温度等等车辆信息,我们可以根据这些信息进行相应的远程控制,比如:远程开车门,远程开车窗、远程打开后备箱、远程打开空调等等操作,极大的方便了驾驶员的使用体验。也是现在车联网的重要应用,很多新能源汽车现在都可以实现远程控制的功能。

1.4 远程诊断、本地诊断

汽车远程故障诊断系统是指汽车在启动时,Tbox 获知汽车的故障信息,并把故障码上传至数据处理中心。系统在不打扰车主的情况下复检故障信息。在确定故障后,并实施远程自动消除故障,无法消除的故障以短信方式发送给车主,使车主提前知道汽车存在的故障信息,防范于未然。其基本原理的是 TBox 通过 CAN 收发器直接连接**网关**与整车网络进行通信,能够获取娱乐 CAN、诊断 CAN 的数据,并可以对 BCM、VCU 等进行控制,或下发诊断命令。

1.5 车辆异常告警上传

当车辆上的一些部件出现一些异常或者是严重故障的时候,比如:发动机温度过高、车门入侵、水温过高、油量较少等等,Tbox 会第一时间获取到出现故障或者异常的信息,并把这些信息传输给用户,提醒用户要及时处理这些问题。极大的提高了用户的驾驶安全。

1.6 E/B-call 服务

首先 Ecall(汽车紧急呼叫系统)是拯救生命的重要环节,当车辆发生碰撞,安全气囊弹出的情况下触发了 Ecall,Tbox 迅速传递车辆的位置信息等基本信息给客服,客服中心则会根据的车辆的位置信息,在第一时间与当地的 4S 汽车维修店、医疗救护中心、警察局等相关机构进行联系,确保第一时间到达事故现场进行救援。Bcall(一键电话救援),主要是道路救援,按下后可以获得道路拖车等服务。

1.7 OTA 功能

汽车的 ota 功能是指空中下载技术,通过移动通信实现对汽车软件版本的远程升级,相比之前到 4S 店通过整车 OBD 对相应的汽车部件进行软件升级。OTA 技术极大的提高了便利性,让车主随时随地可以对自己爱车的电子部件进行软件升级,使其有更好的驾驶体验。下图是整个 OTA 升级的系统图。

1.8 V2X

V2X(合作式智能运输车用通信系统)是通过人、车、路信息交互,实现三者之间的智能协同与配合的一种智能运输系统体系,能够实现道路交通安全、通行效率的提升,以及信息服务等不同应用。是现在车联网未来发展的一种趋势,这个技术的实现也是离不开 Tbox,详细介绍后续更新。

1.9 案例

2、国标 GB/T 32960 解读

2.1 国家平台功能主要功能

国家平台功能要求主要是四块内容

1、安全和质量的监测

2、数据的信息服务

3、车辆数据的统计以及给政府的政策支持

4、数据对接测试的能力验证。

从车辆的安全监管来说,标准里也明确规定了有 61 项加 12 项;正常的过程当中,实际上只要求左边的 61 项,右下角这个是在车辆出现故障之后,能够把车辆更详细的数据进行监测,进行故障数据的回溯,来便于故障之后的技术数据分析。

国家平台的建设技术基础源于北理工建设的北京市监管平台

2.2 gbt32960

|<-- Terminal -->|<----------- Broker Side ---------->|<--- Others --->|
|<- Side ->| |<-- Side -->|
+---+ PUB +-----------+
| D | INCOMING +-------------+ PUB +---------+ -->| subscriber|
| E |----------->| |----------->| |--/ +-----------+
| V | |MQTT-gbt32960| | MQTT |
| I |<-----------| |<-----------| |<-- +-----------+
| C | OUTGOING +-------------+ PUB +---------+ \--| publisher |
| E | PUB +-----------+
+---+
  1. 终端侧:通过 GB/T 32960 协议进行交换数据,实现不同类型的数据的上报,或者发送下行的消息到终端。
  2. 平台侧:MQTT-gbt32960 将报文解码后执行 注册/鉴权、或将数据报文 PUBLISH 到特定的主题上;代理订阅下行主题,将下行的 PUBLISH 消息转化为 GB/T 32960 协议的报文结构,下发到终端。
  3. 其它侧,可以对 2 中出现的上行的 PUBLISH 消息的主题进行订阅,以接收上行消息。或对发布消息到具体的下行的主题,以发送数据到终端侧。

数据流向: Terminal -> gbt32960 网关 -> Mqtt

车辆登入

Topic: gbt32960/${vin}/upstream/vlogin

{
"Cmd": 1,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"ICCID": "12345678901234567890",
"Id": "C",
"Length": 1,
"Num": 1,
"Seq": 1,
"Time": {
"Day": 29,
"Hour": 12,
"Minute": 19,
"Month": 12,
"Second": 20,
"Year": 12
}
}
}
Copied!

车辆登出

Topic: gbt32960/${vin}/upstream/vlogout

{
"Cmd": 4,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Seq": 1,
"Time": {
"Day": 1,
"Hour": 2,
"Minute": 59,
"Month": 1,
"Second": 0,
"Year": 16
}
}
}
Copied!

信息上报

Topic: gbt32960/${vin}/upstream/info

不同信息类型上报,格式上只有 Infos 里面的对象属性不同,通过 Type 进行区分 Infos 为数组,代表车载终端每次报文可以上报多个信息

整车数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"AcceleratorPedal": 90,
"BrakePedal": 0,
"Charging": 1,
"Current": 15000,
"DC": 1,
"Gear": 5,
"Mileage": 999999,
"Mode": 1,
"Resistance": 6000,
"SOC": 50,
"Speed": 2000,
"Status": 1,
"Type": "Vehicle",
"Voltage": 5000
}
],
"Time": {
"Day": 1,
"Hour": 2,
"Minute": 59,
"Month": 1,
"Second": 0,
"Year": 16
}
}
}
驱动电机数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"Motors": [
{
"CtrlTemp": 125,
"DCBusCurrent": 31203,
"InputVoltage": 30012,
"MotorTemp": 125,
"No": 1,
"Rotating": 30000,
"Status": 1,
"Torque": 25000
},
{
"CtrlTemp": 125,
"DCBusCurrent": 30200,
"InputVoltage": 32000,
"MotorTemp": 145,
"No": 2,
"Rotating": 30200,
"Status": 1,
"Torque": 25300
}
],
"Number": 2,
"Type": "DriveMotor"
}
],
"Time": {
"Day": 1,
"Hour": 2,
"Minute": 59,
"Month": 1,
"Second": 0,
"Year": 16
}
}
}
燃料电池数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"CellCurrent": 12000,
"CellVoltage": 10000,
"DCStatus": 1,
"FuelConsumption": 45000,
"H_ConcSensorCode": 11,
"H_MaxConc": 35000,
"H_MaxPress": 500,
"H_MaxTemp": 12500,
"H_PressSensorCode": 12,
"H_TempProbeCode": 10,
"ProbeNum": 2,
"ProbeTemps": [120, 121],
"Type": "FuelCell"
}
],
"Time": {
"Day": 1,
"Hour": 2,
"Minute": 59,
"Month": 1,
"Second": 0,
"Year": 16
}
}
}
发动机数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"CrankshaftSpeed": 2000,
"FuelConsumption": 200,
"Status": 1,
"Type": "Engine"
}
],
"Time": {
"Day": 1,
"Hour": 22,
"Minute": 59,
"Month": 10,
"Second": 0,
"Year": 16
}
}
}
车辆位置数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"Latitude": 100,
"Longitude": 10,
"Status": 0,
"Type": "Location"
}
],
"Time": {
"Day": 1,
"Hour": 22,
"Minute": 59,
"Month": 10,
"Second": 0,
"Year": 16
}
}
}
极值数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"MaxBatteryVoltage": 7500,
"MaxTemp": 120,
"MaxTempProbeNo": 12,
"MaxTempSubsysNo": 14,
"MaxVoltageBatteryCode": 10,
"MaxVoltageBatterySubsysNo": 12,
"MinBatteryVoltage": 2000,
"MinTemp": 40,
"MinTempProbeNo": 13,
"MinTempSubsysNo": 15,
"MinVoltageBatteryCode": 11,
"MinVoltageBatterySubsysNo": 13,
"Type": "Extreme"
}
],
"Time": {
"Day": 30,
"Hour": 12,
"Minute": 22,
"Month": 5,
"Second": 59,
"Year": 17
}
}
}
报警数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"FaultChargeableDeviceNum": 1,
"FaultChargeableDeviceList": ["00C8"],
"FaultDriveMotorNum": 0,
"FaultDriveMotorList": [],
"FaultEngineNum": 1,
"FaultEngineList": ["006F"],
"FaultOthersNum": 0,
"FaultOthersList": [],
"GeneralAlarmFlag": 3,
"MaxAlarmLevel": 1,
"Type": "Alarm"
}
],
"Time": {
"Day": 20,
"Hour": 22,
"Minute": 23,
"Month": 12,
"Second": 59,
"Year": 17
}
}
}
可充电储能装置电压数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"Number": 2,
"SubSystems": [
{
"CellsTotal": 2,
"CellsVoltage": [5000],
"ChargeableCurrent": 10000,
"ChargeableSubsysNo": 1,
"ChargeableVoltage": 5000,
"FrameCellsCount": 1,
"FrameCellsIndex": 0
},
{
"CellsTotal": 2,
"CellsVoltage": [5001],
"ChargeableCurrent": 10001,
"ChargeableSubsysNo": 2,
"ChargeableVoltage": 5001,
"FrameCellsCount": 1,
"FrameCellsIndex": 1
}
],
"Type": "ChargeableVoltage"
}
],
"Time": {
"Day": 1,
"Hour": 22,
"Minute": 59,
"Month": 10,
"Second": 0,
"Year": 16
}
}
}
可充电储能装置温度数据
{
"Cmd": 2,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Infos": [
{
"Number": 2,
"SubSystems": [
{
"ChargeableSubsysNo": 1,
"ProbeNum": 10,
"ProbesTemp": [0, 0, 0, 0, 0, 0, 0, 0, 19, 136]
},
{
"ChargeableSubsysNo": 2,
"ProbeNum": 1,
"ProbesTemp": [100]
}
],
"Type": "ChargeableTemp"
}
],
"Time": {
"Day": 1,
"Hour": 22,
"Minute": 59,
"Month": 10,
"Second": 0,
"Year": 16
}
}
}

数据补发

Topic: gbt32960/${vin}/upstream/reinfo

数据格式: 略 (与实时数据上报相同)

数据下发流程

请求数据流向: MQTT -> MQTT_gbt32960 -> Terminal

应答数据流向: Terminal -> MQTT_gbt32960 -> MQTT

下行主题: gbt32960/{vin}/upstream/response

参数查询

Req:

{
"Action": "Query",
"Total": 2,
"Ids": ["0x01", "0x02"]
}

Response:

{
"Cmd": 128,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Total": 2,
"Params": [{ "0x01": 6000 }, { "0x02": 10 }],
"Time": {
"Day": 2,
"Hour": 11,
"Minute": 12,
"Month": 2,
"Second": 12,
"Year": 17
}
}
}
参数设置

Req:

{
"Action": "Setting",
"Total": 2,
"Params": [{ "0x01": 5000 }, { "0x02": 200 }]
}

Response:

// fixme? 终端是按照这种方式返回?
{
"Cmd": 129,
"Encrypt": 1,
"Vin": "1G1BL52P7TR115520",
"Data": {
"Total": 2,
"Params": [{ "0x01": 5000 }, { "0x02": 200 }],
"Time": {
"Day": 2,
"Hour": 11,
"Minute": 12,
"Month": 2,
"Second": 12,
"Year": 17
}
}
}

终端控制

命令的不同, 参数不同; 无参数时为空

远程升级

Req:

{
"Action": "Control",
"Command": "0x01",
"Param": {
"DialingName": "hz203",
"Username": "user001",
"Password": "password01",
"Ip": "192.168.199.1",
"Port": 8080,
"ManufacturerId": "BMWA",
"HardwareVer": "1.0.0",
"SoftwareVer": "1.0.0",
"UpgradeUrl": "ftp://emqtt.io/ftp/server",
"Timeout": 10
}
}
车载终端关机
{
"Action": "Control",
"Command": "0x02"
}
车载终端报警
{
"Action": "Control",
"Command": "0x06",
"Param": { "Level": 0, "Message": "alarm message" }
}

3、农机盒子

农机盒子除了满足农机网络化自动化的要求,还要满足政府补贴监管的要求。

  • 农机终端生产企业,提供农机终端以及企业平台,供购买农机终端的消费者使用。
    • 农机终端生产企业 向农机消费者收取购买费用,以及年服务费。
  • 地方平台收集农机终端提供的数据,并把传递给业务平台。
    • 地方平台负责建设相关的平台。提供网络带宽服务与数据存储服务。
  • 农机作业平台:由政府各个管理部门负责建设。
  • 国家平台,负责收集响应的的数据。

3.1 网络化、智能化、大型复合农机、高效节能是趋势

智慧农机、大型复合农机以及高效节能产品成为发展趋势

3.2 农业靠补贴赚钱不容易

农业是我国立国的根本,一直以来都受到国家和政府的重视。为了提升我国农业现代化水平,我国政府机构出台了一系列政策措施提升农业机械化水平。2019 年以来重点政策汇总如下:

3.3 一拖是龙头企业

4、发展策略

定位:农机设备网络化与智能化标准制定者与服务提供商。

  • 占领制高点
    • 联合一拖等农机企业向政府申请建立《农机远程服务与管理系统技术规范》国家标准。
    • 申请建立农机盒子国家检测实验室。
  • 占领桥头堡:农机大数据平台,为农业补贴提供技术支持。
    • 建立国家农机大数据平台
    • 为各地方政府提供农机大数据采集平台。
    • 与合作伙伴一起建设农机应用平台。
  • 向农机制造商提供农机网络化与智能化的解决方案
    • 农机盒子及农业传感器。
    • 农机通讯网关
    • 农机大数据存储与数据分析平台。