发明内容
针对上述问题,本发明旨在提供一种可使各种车载模块之间可按照统一的通讯协议进行实时高效的数据交换车辆总线网络通讯控制的方法。
为实现该技术目的,本发明的方案是:一种车辆总线网络通讯控制的方法,包括总线、主机和多个从机,所述主机与从机之间的数据传输由主机发起,数据传输前先发送从机地址,从机被寻址成功后将打开数据接收功能,开始与主机互动;主机采用不断进行通讯循环的方式与各从机互动,每个通讯循环具有从机通讯区、主机广播区以及总线配置区三部分,其中,从机通讯区中,主机同一时间只与一个从机互动,其余从机不向主机发送数据,该区数据主要用于主机与从机之间的数据交换;主机广播区中,所有从机将接收主机广播的数据,主要用于广播主机从车上采集的各从机需要的数据;总线配置区中,所有从机将接收主机广播的数据,此时若有新的节点插入,主机将与新节点互动,并向新节点分配节点地址。
作为优选,主机和从机在访问总线进行数据通讯之前,均与总线同步。
作为优选,主机在与总线进行通讯前,首先设置为接收状态,然后等待一个时间P1,且这段时间内总线为逻辑高状态,若这段时间内有任何节点发送数据,时间P1将重新计算;在时间P1结束后,主机将不断发起总线配置区,直到有至少一个从机与其互动并成功分配从机地址,此时,主机开始发起正常通讯循环,主机与总线同步成功。
作为优选,在主机在与总线成功同步之前,若主机接收到任何其他主机所发出的数据,立即进入睡眠模式,直到重新上电。
作为优选,从机在与总线进行通讯前,首先设置为只接收地址数据,若总线无主机,则不作任何动作;若接收到主机发送的总线配置帧,将验证主机,若验证失败,则不作任何反应或重新进行总线同步;若验证成功,则开始等待时间,若此时间内有任何节点发送数据,则该从机不作任何动作,等待下一个通讯循环的总线配置帧;若在此时间后总线无其他节点发送,该从机即可响应主机的总线配置帧,接受主机分配从机地址后,完成总线同步。
作为优选,若从机在总线配置帧时检测到总线冲突,即立刻或完成当前字节后停止发送,并等到此后通讯循环的总线配置帧再重复同步步骤。
该项发明为所有车辆后装的电子控制模块提供了统一的数据通讯标准,使车辆的实时状态数据能够高效地在不同模块间得到共享。通过本方案,可以为市面上各种各样不同的车辆提供了统一的数据访问接口,以及通用的二次开发平台,使针对车辆数据的产品开发不再需要了解各种不同车型的通讯方式,大大促进该领域的迅速发展。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细说明。
本具体实施例是基于J1708总线的物理层,设计了专用的总线通讯网络,使电子产品之间可以实现动态热插拔式的数据通讯。具体说明如下:
1.1物理层规定
1.1.1电气特性
数据信号采用差分传输方式,采用J1708物理层。使用一对双绞线,其中一线定义为A,另一线定义为B。发送驱动器A、B之间的正电平在+2--+6V,为逻辑高状态,负电平在-2V--6V,为逻辑低状态。
1.1.2使用限制
-总线所有干线、支线总长度在50m以内。
-总线通讯速率为250Kbps。
-总线最多支持32个节点。
-所有总线节点间必须共地。
-网络拓扑采用总线型结构,不支持环形或星形网络。在构建网络时,应注意如下几点:
采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。
应注意总线特性阻抗的连续性,在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性:总线的不同区段采用了不同电缆,或某一段总线上有过多收发器紧靠在一起安装,再者是过长的分支线引出到总线。
1.2数据链路层规定
1.2.1总线通讯方式
如图1所示,通讯方式为一主多从模式,主机与从机之间的数据传输由主机发起,数据传输前先发送从机地址,从机被寻址成功后将打开数据接收功能,开始与主机互动。主机采用不断进行“通讯循环”的方式与各从机互动。每个“通讯循环”具有“从机通讯区”、“主机广播区”以及“总线配置区”三部分。
“从机通讯区”中,主机只与一个从机互动,除主机与该从机外,其余从机将不接受总线数据,也不会被总线数据中断。该区数据主要用于主机向从机发动作指令或从机向主机响应数据。
“主机广播区”中,所有从机将接收主机广播的数据,主要用于广播主机从车上采集的各从机需要的数据。
“总线配置区”中,所有从机将接收主机广播的数据,此时,若有新的节点插入,主机将与新节点互动,并向新节点分配节点地址。把专车专用的诊断数据做成通用的二次开发接口,提供UART、SPI、I2C等通用接口,另外还提供基于模块本身的代码开发API,使针对模块二次开发的程序可以在模块本身执行。
1.2.2总线同步方式
无论是主机还是从机,在访问总线进行数据通讯之前,必须与总线同步。主机、从机与总线同步的方式分别为:
主机在与总线进行通讯前,必须首先设置为接收状态,然后等待一个P1时间(参考2.2.3),且这段时间内总线为逻辑高状态,若这段时间内有任何节点发送数据,P1将重新计算。在P1时间结束后,主机将不断发起“总线配置区”,直到有至少一个从机与其互动并成功分配从机地址。此时,主机开始发起正常“通讯循环”,主机与总线同步成功。在成功同步之前,若主机接收到任何其他主机所发出的数据,立即进入睡眠模式,直到重新上电。
从机在与总线进行通讯前,首先设置为只接收地址数据,若总线无主机,则不作任何动作。若接收到主机发送的总线配置帧,将验证主机ID,若验证失败,则不作任何反应或重新进行总线同步。若验证成功,则开始等待Tb×11×Rn1(随机数1~4)时间,若此时间内有任何节点发送数据,则该从机不作任何动作,等待下一个“通讯循环”的总线配置帧。若在Tb×11×Rn1时间后总线无其他节点发送,该从机即可响应主机的总线配置帧,接受主机分配从机地址后,完成总线同步。如果从机在总线配置帧时检测到总线冲突,即立刻或完成当前字节后停止发送,并等到此后第Rn2(随机数1~4)个“通讯循环”的总线配置帧再重复上述同步步骤。
1.2.3总线时间定义
标记 |
取值定义 |
P1 |
220us(1+3+1=5字节时间) |
P2 |
132us(3字节时间) |
P3 |
88us(2字节时间) |
1.3数据链路层格式定义
1.3.1位时间(Tb)
在总线速率为250Kbps的规定下,位时间为4us。
1.3.2字节格式
字节格式为:起始位1位,数据/地址位8位,地址标志1位,
停止位1位。共11位。
1.3.3帧格式
●地址帧:
从机地址-1字节
当NodeAddr=0xFF时,为广播地址,所有从机将打开接收功能,
接收主机广播数据,直到主机发送广播结束指令。
●数据帧:
帧头-1字节(帧类型:b5~b7;帧长度:b0~b4=n)
帧ID-1字节
帧数据-n-2字节
帧数据校验码-1字节
一个数据帧至少需要有帧头与帧ID。
1.3.4字节间隔时间
数据间隔时间不应大于1个字节时间,即44us
1.4数据链路层具体协议
1.4.1通讯循环
主机在总线同步之后将不断重复发起“通讯循环”。相邻两个“通讯循环”的间隔时间不应小于P3时间。
1.4.2从机通讯区
在该区中,主机采用轮询方式,分别对已同步的从机发起地址通讯(即在总线中发送属于目标从机的地址帧)。若主机在发送某从机地址帧的P2时间后仍无收到该从机的回应,主机将开始发送下一从机的地址帧。主机在任何时候收到不属于当前目标从机的回应时,应丢弃该回应数据,不作任何响应。
当某从机发现当前地址帧与自己的地址吻合时,该从机立即回应地址吻合指令并打开数据接收功能,并准备接收主机马上发送到总线上的数据帧。成功接收主机数据帧后,从机关闭数据接收功能,从机对数据作出分析并在P2时间内发送回应。若从机在打开数据接收功能的P2时间内仍没收到主机数据,从机应关闭数据接收功能,并等待下一个吻合的地址帧。如图2所示。
1.4.3主机广播区
在该区中,主机将连续发送从机所需要的车辆行驶数据,或从某从机中获取的状况数据。主机在发起主机广播区时,立即发送广播地址帧,即0xFF。各从机无需应答,在广播地址帧发送的P3时间后,主机将开始发送广播数据帧,每个广播数据帧将间隔最少P3时间。在所有广播数据发送完成后,主机将发送广播数据结束指令。然后主机将发起“总线配置区”。
当某从机接收到广播地址帧时,该从机立即打开数据接收功能,并准备接收主机马上发送到总线上的广播数据帧。当从机接收到主机发送的广播数据结束指令,或者在任何P2时间没有收到主机的广播数据,从机将结束“主机广播区”状态,并准备进入“总线配置区”状态。如图3所示。
1.4.4总线配置区
在进入该区时,所有从机应仍然保持接收功能打开的状态。主机将在此区向从机发送自己的主机ID让从机进行验证,并查询是否有新从机接入,并为新从机分配从机地址,使从机与总线同步。主机在发起总线配置区时,立即发送总线配置帧(C0N),其中包括主机ID,让各从机进行验证,若从机验证失败,从机可进入睡眠状态,直至重新上电并同步。若从机验证成功,将不作响应并等待进入“从机通讯区”。若主机在发送总线配置帧的P1时间后仍无收到任何新从机的响应,主机发送总线配置结束指令,并在P3时间后进入“从机通讯区”。
主机发送总线配置帧后,总线上若有新的从机接入,该从机将开始等待Tb×11×Rn1(随机数1~4)时间,若此时间内有任何节点发送数据,则该从机不作任何动作,等待下一个“通讯循环”的总线配置帧。若在Tb×11×Rn1时间后总线无其他节点发送,新从机即可响应主机的总线配置帧,向主机发送总线配置帧(CON),并附带自己的从机ID。若在P2时间后仍无接到主机的回应,即同步失败,新从机等待下一个“通讯循环”的总线配置帧。如果新从机在P2时间内接收到主机发出的新从机地址,即同步成功,新从机将保存自己的从机地址,并在P2时间内作出同步成功应答。应答后关闭数据接收功能,开始等待从机地址的吻合。
主机在发出新从机地址的P2时间后无收到从机成功应答,或在P2时间里收到从机的成功应答,将发送总线配置结束指令,并在P3时间后进入“从机通讯区”。无论主机是否收到从机的成功应答,都将任务从机成功同步,并登记新从机地址,把其作为其中一个目标从机。但若连续5个“从机通讯区”中没有得到某从机的回应,则认为该从机已离线,主机将删除该从机地址的登记。如图4所示。
针对车辆数据的特性,为车上的不同模块之间提供统一的数据通讯标准,使用总线(或无线射频)的接口方式,令车上多个不同的模块可以通过总线(或无线射频)连接诊断模块,使车辆状态数据在不同模块间实现实时同步。
根据实时车辆状态数据分析推导出更多的相关数据(如胎压状态、发动机状态、行驶习惯等)
根据车辆实时状态数据的特征,设计定义了迈纬车辆总线(无线)通讯标准,使各种车载模块之间可按照统一的通讯协议进行实时高效的数据交换。该通讯标准的物理层使用J1708的物理层定义,或者RF射频的物理层定义,并在此基础上设计定义了通讯的数据链路层及网络通讯层的标准。基于FreeRTOS操作系统,针对车辆数据通讯的应用特征进行修改定制,增加各种现有车辆总线标准的底层驱动、迈纬车辆总线(无线)通讯标准的底层驱动,以及系统任务的动态加载等功能,形成迈纬总线操作系统。利用上述通讯标准及总线操作系统,设计开发迈纬集线器模块。该模块提供通用的物理接口(UART、SPI、I2C),统一的总线接口(CAN、Kline、LIN、J1850、J1708),以及程序API接口。为用户提供了统一的车辆数据访问接口、通用的二次开发平台,并且使车辆数据在不同模块间以总线方式实现实时的共享。如图5所示。