早在1994年,美国移动源商用车中动力系统与ECU之间的通讯采用了SAEJ1587/J1708,由于这两种协议使用微处理器的串行通讯,因而数据质量较低。速锐得在大量现有车型测试中,涉及国六OBD排放移动源的动力系统和ECU之间的通讯都更新到了SAE J1939,有的采用的是ISO15765,也有部分采用的是 ISO-14229。这些类型的通讯协议大多用于卡车、大客车、建筑机械、农业机械等CAN通讯领域。
SAE J1939 和他们的前身相比,主要区别在于SAEJ1708/1587是一种广泛用于B类网络的协议,他主要提供简单的信息交换,其中包括电子控制单元的诊断数据。而SAE J1939是基于CAN总线的协议,波特率可达250kb/s,一种传输速率较高的C类通讯网络协议,那么在J1939里不仅可以实现J1708所有网络功能,还可支持分布在整个车辆中的电子控制系统之间的实时性闭环控制和通信。
国六OBD排放在线检测,就需要在这个原有的闭环通讯采集到相应的排放数据,那么在SAE J1939的物理层和数据链路层可以参考 CAN2.0B协议为基础,它也和普通的CAN网络结构一样,任何节点在CAN总线空闲时可向总线上传输报文,每个报文都包涵标识符,采用CSMA/CD非破坏仲裁机制解决数据冲.突。
我们知道,CAN协议在OSI模型中只定义了物理层和数据链路层的MAC层,SAE J1939以 CAN2.0B为基础,它还定义了网络层和应用层的协议,SAE J1939为传输层、会话层和表示层预留了位置,以便将来扩展。
J1939的物理层都可以用做主网或子网物理层,可以采集到的数据除了发动机以外,还可以采集刹车系统、减速器、灯光、仪表、加热及音响控制、车窗及锁、发动机防盗,通过4G或者5G网络通讯,实现明确的需求目的。针对智能交通系统ITS在移动源在车辆中的应用中,商用车辆制造商也愿意将某些辅助设备连接到车辆网络上,整个车辆能够被经常看作辅助设备的集合体,那么也反映了横向的整合能力,但是商用车辆为ITS提供单独的协议是没有好处的,基于这个原因,SAE在考虑最初开发阶段就已经将ITS应用放进了考虑之内,为此,我们所看到的ITS应用都可能使用的J1939。
SAE J1939和ITS数据总线之间,就需要有网关提供一个接口将其连接,商用车制造商有权决定是否将这样的附加网络及相关的网关功能添加到车辆上,网关比桥接器复杂得多,也更昂贵。在乘用车中,目前带网关的车辆已经很多了,很多车型采集CAN总线数据都需要绕过网关,这里不赘述了。
速锐得在适配和采集SAE J1939这些国六OBD排放的移动源车型中实践结论得出,物理介质、传输速率250kb/s、同一网络上最大子系统数为30个、最大传输线长度算的约为40米(一般都用不到40M)等,总之,物理层可实现的功能是:位表示、位定时、同步、总线故障检测、物理媒介及其附属装置之间的机械和电气接口,这些都是通过CAN来实现的。
商用车实际网络通讯,距离都比较长,一般采用为屏蔽的双绞线,CAN总线通讯线由一条CAN H、一条CAN L 、一条CAN SHLD组成,CAN H一般为黄色、CAN L为绿色,实测两根信号线之间以1MHz速度传输。信号线总电阻由每个ECU的总线标准参数决定。连接CAN网络中的通信线缆,一般有三芯、九芯,现在都直接采用OBD2标准接口了。
SAE J1939数据链路上是以CAN 2.0为基础,通过CAN总线进行数据通讯的。它的数据链路层定义了信息帧的数据结构、编码规则、包括通讯优先权、传输方式、通信要求、总线仲裁、错误检测及处理,它负责将CAN 扩展帧的29位标识符重新分组定义,使报文的标志服就能够描述报文的全部特征,包括目标地址、源地址等内容。目前支持五种类型消息,分别为命令、请求、广播/响应、确认和群扩展。对于出现在CAN数据帧换种数据场的多字节参数,一般存放在最低字节。
应该注意的几个问题:
1、高速数据更新
当遇到数据更新速度很高,要求在很短的时间作出反应时,如果可能的话,允许使用硬件的消息过滤。
2、请求调度
如果正准备请求发送的信息在请求之前已经被接收到了,那么这个请求调度应该被取消。转换说,如果在请求调度之前50ms信息已经被接收了,那么就不要再发出请求。被推荐用于广播的参数群不应该被提出请求,但在超过推荐使用的广播时间的特殊情况以外。这个和乘用车及其类似,之前作过一篇《速锐得破解宝马奥迪大众捷豹路虎CAN总线访问控制经验》可吸收进来。
3、设备响应时间和默认超时
所有设备在被要求做出响应时,必须要在200毫秒内做出响应。所有等待响应的设备必须在放弃和重试前,至少等待1.25s,这个时间确保了所有由于总线访问或消息传输经过桥接器的等待时间不会导致不必要的超时。需要时,可以特定的应用使用不同的时间值。
发送至指定目标地址的多组消息中,数据之间的时间间隔是0-200毫秒,这意味着当标志符相同时可能产生背对背消息。使用CTS机制可以确保数据包之间有指定的时间间隔。在多组广播消息中,数据包之间所需要的时间间隔是50-200毫秒。50毫秒的最短时间可以保证响应者有时间从CAN硬件中收取数据。这时,响应者应使用250毫秒的超时(为200毫秒的时间间隔提供了余量)。
国六OBD排放移动源(商用车)的J1939消息格式参数中每一个都可以用ASCII码表达,或者由两个或两个以上的字位组成功能状态,字母数字字符将首先作为最高有效字节进行传送。对每个参数都应该确定他的类型,数据的类型一般是状态值或者测量值。状态类型表示一个多状态参数的目前状态,或者传输节点在执行操作后所产生的结果。这个操作是根据本地或者网络的测量值或者状态信息进行计算的结果。
要注意的是这个操作不需要有特定的信息,例如,状态数据表示有一个电池线圈被激活了,但不需要对他进行测试来确认这个电磁线圈已经实现了它的功能。状态类型数据有发动机启动、PTO速度控制运行、巡航控制运行、整车工况、故障码情况、转矩等等,测试值类型数据表示了传输节点对某个参数测量后得到当前值,这样可以确定已定义参数的状态。属于测量值类型的数据有进气压力、点火开关、巡航设置开关打开、最大巡航速度、巡航设置速度、发动机速度以及当前负载等等。
通常由几个参数组成一个参数群,一个参数群的定义包括了他们的属性,例如刷新周期、数据长度、数据页PG、PDU格式PF、PDU的扩展场、默认优先级、参数组数PGN、参数列表。如果一个参数的数据长度大于8字节,比如车架号,就必须按照分帧传输协议进行。如果现有已有参数群不允许包含新的参数,那么就会重新定义一个新的参数群,例如,按照实现功能(汽油、冷却液、燃料等),而不按照类型(温度、压力、速度等),具备相近的更新数据,按照通用的子系统用于测量和发送数据的设备。
作者: lauguo2013, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3901940.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
curton 2020-1-21 16:05