APP下载

基于J1939协议的LabVIEW平台发动机通信研究

2016-05-30潘运平张松乔

现代机械 2016年2期
关键词:油温字节报文

潘运平,李 畅,张 俊,汪 洋,张松乔

(武汉理工大学机电工程学院,湖北武汉430070)



基于J1939协议的LabVIEW平台发动机通信研究

潘运平,李畅,张俊,汪洋,张松乔

(武汉理工大学机电工程学院,湖北武汉430070)

摘要:随着CAN总线在车载通信上使用的普及及发展, J1939通信协议在汽车领域得到了广泛的应用。然而现阶段在对J1939协议的解析及NI硬件平台、LabVIEW软件平台上的开发、应用存在许多不足,系统性、可读性、通讯稳定性、精度欠缺。针对以上问题,以NI公司CAN通讯硬件为硬件基础,以LabVIEW为软件开发平台,重点研究了J1939传输协议,解析了J1939协议下的数据帧结构及通讯规则,以J1939协议下以道依茨(Deutz_can_spec_emr2_5_engl)柴油发动机组报文接收为例,对其通信的硬件平台进行了搭建,并且可读性高,对便于维护的LabVIEW软件及NI—J1939工具包进行软件系统的编写。通过以上工作和对程序的调试,实现了CAN通讯数据的自发送和自接收,并且稳定性和精度得到了提升。实现了J1939协议在LabVIEW平台上的系统实验通讯,并为以后LabVIEW车载系统的开发、实现奠定基础。

关键词:J1939LabVIEW发动机通讯

汽车行业,作为从21世纪最庞大、最具有现代化气息的工业部门,格外受到人们的关注。随着我国人民的生活越发富裕,有更多的人会选择拥有自己的交通工具,也越来越多的人关注汽车的性能与稳定性。

实现发动机的油温油压还有发动机转速的实时传输以及可视化控制是改善发动机状态性能的基本途径。例如:当发动机的油温超过预警值,不但耗油量会增加,而且对机油的品质也存在很大的影响,导致各零件的接触表面不容易形成油膜,或者形成的油膜易遭到破坏导致干摩擦,促使了接触表面的磨损,影响汽车零部件的寿命,严重降低了发动机的安全性和稳定性。发动机性能参数监测对整车性能来说至关重要[1]。

J1939协议是目前汽车行业常用的CAN应用层协议。LabVIEW是美国国家仪器公司(NI)研发的图形化编程G语言[2]。本文以NI公司CAN通讯硬件为硬件基础,以道依茨柴油发动机组通讯协议为目标(Deutz_can_spec_emr2_5_engl)[3],深入研究了J1939协议,解析了J1939协议下的数据帧结构及通讯规则,并以LabVIEW为软件平台,对发动机通信平台进行了探究。

1J 1939协议解析

1.1J 1939简介

J1939是美国汽车工程协会SAE(Society of Automotive Engineer)发布的以CAN总线为基础、以CAN2.0B作为网络核心协议的车辆网络串行通信和控制协议, 可达到250 kbps的通讯速率, 广泛应用于货车、客车、商用车辆、舰船、轨道机车、农业机械和大型发动机中。SAE J1939协议是在CAN2.0B的基础上,对仲裁场部分的29位扩展标识符(ID)的重新定义,控制场、数据场、ACK场等其他部分的定义与CAN2.0B协议基本相同,是一种高级的CAN协议标准。同时J1939协议也对汽车ECU内部的地址分配、通讯手段以及报文的优先级都做了详细的定义。在通讯方式上,SAE J1939定义的网络是可以使用节点地址发送CAN报文,以达到每个节点对应的CAN标识符的唯一性,相比于使用通信数据块编码的CAN 2.0B具有很大的优势。

1.2仲裁场分析

表1

仲裁场的位关系

下面对J1939协议的29位仲裁场进行详细分析:

(1)3位的优先级P

优先级P共有8级,传递控制信号的帧P值系统默认为3,传输数据的帧P值系统默认为6,与CAN2.0B中用于驱动系统的高速CAN相对应,实时性要求较高的控制单元优先级最高,最高优先级P值为000,但是可以使用OEM根据实际需要对优先级进行编程调整。

(2)1位的保留位R

保留位R目前未明确定义,当前值均设为0,SAE委员会在将来需要的时候,可根据实际情况定义保留位R为PDUF场、扩展优先级场P或者定义更多的PDUF等。

(3)1位的Data Page数据页DP

可用于扩展参数组PG,目前实际使用的参数组都在0页,当0页已经使用完了之后,页1将可用来拓展。同时,数据页的选择也需要根据PF的具体数值确定。

(4)8位的帧格式PDUF、帧扩展PDUS

PDUF可简写为PF,能够根据PF的数值大小判断数据场DF中的参数组编号PGN。在J1939协议中,根据PF的值的不同分为不同的协议数据单元PDU1和PDU2两种格式。

当PF<240时,消息格式为PDU1,表示消息采用点对点方式发送到目标地址,PS即为目标地址;当240<=PF<255时,消息格式为PDU2,表示消息采用广播的方式发送。PS为扩展地址,该PS扩展地址上的值足够标志数据帧,以使这些数据帧能够广播至所有的ECU。

(5)8位的源地址SA

在同一个网络中,每个网络上的ECU都有唯一的对应的源地址,在网络管理层(SAE J1939-81)中对所有的源地址详细分配进行了说明[4]。

1.3参数组编号(PGN)

报文的识别基本可以用参数组编号(PGN)来完成,可以形象的解释PGN为在定义了“批次”之后的一个“生产编号”。

报文的PGN由保留位R,数据页表示位DP,PDU标识符(PF)和PDU特定标识符(PS)组成。R、DP、PF构成了PGN的组位,而PS则是该组位中的特定一个参数组编号。

J1939的这种设置最大化的利用了CAN总线物理层并行ECU的特点,ECU对报文的识别不需要PS,而是进入特定部位ECU之后进行再分配,提高了数据传输效率[5]。

1.4报文传输分析

数据链路层由PGN定义了请求报文、命令报文、广播/相应报文、确认报文和组功能报文五种类型的报文传输。

(1)请求报文

请求报文具备了从某一个特定的目标地址或者全部范围请求报文数据的能力。从某一个特定的目标地址请求报文数据称为目的地指定请求。当目标地址支持请求的参数组编号时,相应节点就会将被请求的数据发送到目标地址,则在数据场中的控制字节的值为非1的数(在0、2、3选择);当目标地址不支持请求的参数组编号时,则在目标地址中会发送否定信号NACK至原地址,同时在数据场中的控制字节的值为1。同理,对于非点对点的请求报文的全局请求,当某个节点不支持请求的参数组编号时,它不会反馈否定请求的NACK响应。

(2)命令报文

命令报文主要是指从某个源地址采用点对点的方式发送到目标地址或者全局地址发出的命令PG(Parameter Group),若干个地址或者单独是特定地址接收到命令报文,PDU 1(PF<240)和PDU 2(PF>=240)都是命令报文格式。如发动机转速控制、车窗动作控制或者地址请求,采取命令报文中包含的数据命令,而采取相应的动作。

(3)广播/响应报文

广播/响应报文是在CAN报文中最常见的消息类型,可以是某个节点主动往CAN总线上发出的广播消息也可以是对命令报文或者请求报文的响应,在CAN2.0B协议总线上,如TCU以某个特定的周期广播参数组,或者某个ECU接收其他的电控单元的PGN请求的响应。

(4)确认报文

确认报文能够提供对数据发送方与数据接收方之间的“握手机制”。确认报文有两种机制:一种是由CAN 协议规定,判断在J1939数据帧的ACK场中的ACK位确定消息是否被某个或者若干个节点接收;另一种对于特定的命令报文或请求报文的NACK响应,由应用层规定确认报文的形式。在64位即8个字节的数据场中,字节1是控制字节,当控制字节为0时,表示肯定确认ACK;当控制字节为1时,表示否定确认NACK;当控制字节为2时,表示拒绝访问;当控制字节为3时,表示无法响应;当控制字节为3-255时,保留待CATARC分配[6]。

(5)特别注意

组功能报文可用于特殊功能组的传输(如专用功能、网络、管理功能、多包传输功能等),多包传输功能是指当报文数据长度大于8 Byte时,组功能报文之一的“连接管理”报文,能够实现多包传输功能,长度大于8 Byte的报文拆分为若干字节长度小于8的小数据包,每个小数据包当中数据域的首字节定义为数据包的序列编号,然后通过单个数据帧传输至目标地址,目标地址根据每个帧的PGN 来识别具体是哪个组功能,识别之后根据每个数据场中的首字节将接收到的小数据包重组还原为原始数据帧,这样能够实现多包传输的功能,并且保证数据帧不丢失。

1.5信号的拆分重组和连接

当所传输的报文数据场长度大于8 bytes时(如发动机配置的报文PGN65251总共有28 bytes),传输协议功能能够根据报文的实际将该报文分成若干个子报文形式进行传送。传输协议功能主要由两部分组成:信号的拆分重组和连接管理。

(1)信号的拆分重组

协议数据单元PDU包含了仲裁场、控制场、数据场的内容,实现了报文的拆分打包封装,再通过物理层发送到总线上的其他设备节点或者特定的节点,而进行报文消息重组。

(2)连接管理

连接管理针对的是节点之间通信的建立和关闭等功能,实现“多包传输功能”的功能报文称为“连接管理”报文。它用于报文数据场长度大于8 bytes的数据帧的传输,速率由PGN定义,数据长度依旧为8 bytes,数据页标识为“0”,PDUF为236,PDUS为目标地址发送,缺省优先级7,PGN参数组编号60416(00EC0016),第一字节为控制字节。

1.6总结

对基于J1939协议的CAN报文的解析从一定程度来说其本质就是对PDU的解析。各个拆分开的数据帧具有相同的PGN,能够被目标地址识别,同时数据场中的第一个字节被用作消息的序列编号,因此编号的范围为1-255,后面的七个字节存储了所要携带的数据,因此每一个拆分开的数据帧最大长度只能是255*7=1 785,特别是未使用的位应该默认其填充“1”补齐。报文在接收的过程中,按照数据场中的序号重组信号。重构成一个完整的PDU数据包后,再从该PDU中提取参数组列表PGN和特定的参数编号SPN,然后通过查看相对应的J1939应用层中的PGN的数据位,就能推导出信息数据。

2道依茨报文发送协议解析

上文介绍了如何在J1939协议下的数据帧中提取出所需的数据。本研究是在道依茨柴油发动机组作为数据发出源的基础上进行的。下面对道依茨发出的数据帧的所需数据位置进行定位。

2.1油温参数组解析

根据《道依茨Deutz EMR 3 CAN BUS Specification》发动机的油温解析,数据长度为8字节,参考字节 3, 字节4即为发动机的油温。分辨率为每位0.031 25℃/bit,偏移量为-273℃。PGN为65 262(00FEEE H) 则相对应的PDUF=254(11111110 B),PDUS=238(11101110 B),数据长度Data Length=8,使用的数据页Data Page=0,优先级Priority=6。源地址Source Address: EMR3 sends Device Nr. EMR3

字节定义如下:

EMR3

receives External Device Nr.

2.2油压参数组解析

根据《道依茨Deutz EMR 3 CAN BUS Specification》发动机的油压解析,数据长度为8字节,参考字节4即为发动机油压。分辨率为每位4 kPa/Bit或者0.04 bar/Bit。参数组编号PGN为65 263(00FEEF H) ,则相对应的PDUF=254(11111110 B),PDUS=239(11101111 B),数据长度Data Length=8,使用的数据页Data Page=0,优先级Priority=6。

源地址Source Address: EMR3 sends Device Nr. EMR3

字节定义如下:

EMR3

receives External Device Nr.

2.3转速参数组解析

根据《道依茨Deutz EMR 3 CAN BUS Specification》发动机的转速解析,数据长度为8字节,参考字节4和字节5即为发动机的转速。分辨率为每位0.125 rpm/Bit。参数组编号PGN为61 444(00F004 H) ,则相对应的PDUF=240(11110000 B),PDUS=4(00000100 B),数据长度Data Length=8,使用的数据页Data Page=0,优先级Priority=3。

源地址Source Address: Device -Nr. EMR3

字节定义如下:

EMR3

receives External Device Nr.

3通信系统硬件

汽车发动机监测技术正在向高精尖的方向快速发展。监测系统具备的基本性能要求,主要包括:实时性、稳定性、可操作性、可维护性、可扩展性。实时性主要针对能够将CAN总线中高速采集到的数据精确地、完整地上传至接口卡,并且反映到上位机。系统的稳定性是根本,杜绝系统自身内存冲突程序运行不稳定等原因,处理结果的稳定性也是非常关键的因素,其应具有数据的可重复性[7]。

本研究中发动机通信平台是直接通过发动机上的CAN接口作为数据输出接口,通过CAN-PXI接口卡将CAN中的数据帧解析,最后将解析的数据上传至上位机及软件系统。

研究建立直接给出项目名称硬件基础上,通讯板卡为PXI转CAN接口8513通讯卡,工控机为PXI-1082机箱(图1)。

图1

3.1工业控制计算机

PXIe-1082机箱,该机箱使用PXIe混合总线,总线带宽高达6 GB/s,PXIe机箱实现了与PCI和PCI Express模块的通信,同时兼容CompactPCI和CompactPCI Express模块, PCI 和PCI Express都是采用总线拓扑的结构,实现机箱中的每台设备都能通信。借助于机箱的系统参考时钟以及触发总线,生成具有高稳定性的参考时钟PXI恒温晶体振荡器(Oven Controlled Crystal Oscillator),也可以通过设置组成高精度、高分辨率的直接数字式频率合成器时钟(Direct Digital Synthesizer),PXIe-1082机箱可以实现多设备(GPIB、VXI和其它仪器)的同步,也可以在同步各个设备的基础上将其作为一台设备同步运行。

3.2PXI-CAN接口卡

NI PXI-8513/2CAN通讯卡,是一款2端口高速CAN接口,与高速CAN设备进行达1 Mb/s的高速通信,两个端口既可以作为报文接收的端口,又可以作为报文发送端口(图2)。

图2

NI PXI-8513/2能够支持CAN2.0标准数据帧、2.0B数据帧。选用PXI-8513/2,适合于具有大量数据交换、快速反应时间、精确时间同步和时间戳的高端应用场合。

NI PXI-8513/2板卡的特点是:

(1)收发器

能够实现自收自发的同时,还能对测试系统进行单独监听,能够基本满足滤波需求,同时还提供了休眠/唤醒模式支持。

(2)同步性

可使用PXI触发总线同步CAN、DAQ、视觉和运动板卡。同时,正在申请专利的NI-XNET设备内置驱动型DMA引擎能够耦合CAN总线和主机内存,使得PC的CAN接口系统延迟缩短到微秒,极大地提高了PC主机的响应能力[8]。

4LabVIEW上位机软件

LabVIEW能够提供更加友好、直接、简洁的人机交互界面。本课题中的CAN的数据帧完成通信和解析之后,存储在固定的硬盘位置,储存方式采用LabVIEW中的TDMS文件,TDMS具有独特的三层逻辑结构,能够实现数据的高速读写、易存取、方便快捷等优势,而且在LabVIEW中提供了大量的API函数用于数据处理。

4.1登陆界面

系统的第一部分对系统登陆界面进行了设计,并对登陆系统设置了密码。设管理员密码,防非专业系统使用,对系统内部程序进行了修改。

图3 check用户名密码

图4 主程序调入

PXI-8513板卡具有自发自收功能,板卡上的两个CAN1口和CAN2口具备既可以作为报文接收的端口,又可以作为报文发送端口的能力。课题中用模拟CAN数据报文的发送进行实验,以实现CAN数据报文的解析以及实时显示。

4.2数据解析流程(图5)

图5

4.3报文生成和发送程序

CAN报文生成和发送是基于LabVIEW的生产者-消费者的模式进行,它在数据发送方和数据接收方之间提供了缓冲区间,采用“先进先出”的方式,解决了程序并行运行的问题,能够实现将多个循环的数据进行交互和共享,而不使数据丢失或重复。

(1)报文初始化

首先,对CAN报文进行初始化操作,定义当前设备地址,输出簇形式的队列消息,同时,需要创建NI-XNET域,并且在NI-XNET域配置波特率。

图6 报文初始化

(2)处理数据帧

用NI-XNET模块中的CAN数据解析工具,能够快速地解析发动机的油温油压和转速。借助NI-XNET可以非常快捷地实现CAN报文的转换,发送,接收以及解析等功能。

程序初始化后,使用“XNET Read”控件对输入的数据进行读操作,对所得的数据帧进行格式转化,最后将J1939格式的CAN帧发送到其他循环。

图7 报文格式转化

(3)生产者队列发报文

当接收到J1939协议CAN帧之后,按照名称解除捆绑,得到“Processed Incoming”队列。将发动机的油温(FEEE00)、油压(FEEF00)和转速(F00400)入队列的操作。当Send Message为真时,随机的发动机的参数入队列,方式为“先入先出”,即在队列后端添加元素。当Send Message为假时,选择结构不执行任何操作。

图8 生产者队列

(4)输出报文

在通过元素出队列之后,需要将已经处理好的数据帧进行格式转换:J1939协议的CAN报文转换成NI-XNET的CAN报文的格式。将转换好的数据帧发送至PXI-8513板卡的接口1,通过串口总线将报文发送到板卡的接口2,实现CAN报文的模拟发送。

4.4报文接收程序

收报程序的初始化和报文格式转化与发报程序类似,此处不再赘述。

首先在程序循环结构的外部定义发动机的油温、油压、转速的名称,以供波形显示程序引用。在循环结构内部分为两个结构部分:1)根据PF和PS对CAN报文进行解析并发送通知;2)另一部分的目的是确保整个循环的连续运行,即对“processed incoming”的队列中的最大值判定是否大于零,为真时即将发动机字符串通知发送,以供后面的程序调用。

对报文的解析主要是通过“J1939parse”实现的,从“parse”控件中输出的PF和PS值通过条件结构判断之后,将得到的数值乘以分辨率加上偏移量即可得到实际的油温,最后通知器将数据发送。

图9 报文接收与通知

图10 报文信息匹配

最后CAN报文显示模块能够将报文解析模块中所得到的数据发送到波形图中显示。通知器引用控件能通过已命名的通知器在程序框图的两部分之间或两个VI之间传递数据。本程序实现了油温、油压、转速的实时显示。

4.5数据储存

数据存储模块的设计主要是采用文本文件的格式记录数据和存储数据。在LabVIEW中文本文件读操作和写操作分别采用的控件是“Write To Text File”和“Read From Text File”,以上的两个函数的输入可以是File Refnum,也可以为File Path。

图11 报文实时波形显示

图12 数据储存

5总结

本文对J1939协议的深入剖析,对道依茨柴油发动机发报规则进行了解读,对LabVIEW平台进行通信系统上位机软件编写。实现了以道依茨发动机为例的,发动机油温,油压,转速的CAN报文的自发自收通信。一定程度上弥补了在J1939协议上用LabVIEW平台进行开发的空白。

然而,由于实验时间和条件有限,此次开发的系统并未在实验室以外道路上的车辆进行实测,路试可能会存在跟实验环境有所不同的地方,对软件的稳定性和处理数据的能力方面有较大的要求。本文

只对发动机的油温,油压,转速三个数据进行了采集,在实际应用中,这只是一个缩版,真正汽车上CAN总线传输的数据量巨大,对设备系统性能又是一个巨大挑战,此方面值得继续深入研究。

参考文献

[1]曾志斌,桂江一.发动机的分类及各大系统结构[J].汽车维护和保养,2007(2)58-60.

[2]赵金星.基于LabVIEW的磨浆机综合参数检测系统的研究[D].天津科技大学,2010.

[3]Deutz CAN-Specification for EMR2[Z]. Cologne:Deutz,2014.

[4]戴西槐,杨林,张毅,邱国茂,刘欣伟,卓斌.EV电控系统的CAN总线通信研究与开发[J].计算机工程及应用,2005,41(5):200-203.

[5]周涛.ISO15765协议的研究与实现[D].合肥工业大学,2011.

[6]刘永木,刘望生,李洪泽.SAE J1939标准下的汽车CAN通讯报文/帧格式[J].长春工业大学学报(自然科学版),2003,24(1):53-55.

[7]YANG Q H, CAI Y F, LAN B,et al. Development of high speed acquisition module based on FPGA[C]//2014 International Conference on Electrical, Control and Automation. Shanghai:ICECA ,2014:121-125.

[8]http://china.ni.com/?nipkw=NI&nicam=China-Others&nigrp=NIChina&nisrc=baidu[Z].

李畅,男,23岁,河北辛集市人,现为武汉理工大学机电工程学院机械工程专业研究生,研究方向为机电一体化。

Study on the engine communication system based on J1939 and LabVIEW

PAN Yunping, LI Chang, ZHANG Jun, WANG Yang, ZHANG Songqiao

Abstract:With the popularization and development of CAN in vehicle communication, SAE J1939 has been widely used in automotive field. However, there are many deficiencies in the parsing of SAE J1939 and in its application on NI hardware platform and LabVIEW software platform, such as lack of systematicness, readability, stability and accuracy. To solve these problems, we parsed the data frame structure and communication rules of SAE J1939 based on CAN hardware and LabVIEW development environment. Taking the message reception of Deutz diesel engines under SAE J1939 as example, we established its communicational hardware platform, and developed its software system using LabVIEW and NI-J1939 kit. After debugging, we realized the functions of self-transmission and self-reception of CAN communicational data, and improved its stability and accuracy. Through this study, we realized experimental communication under SAE J1939 on LabVIEW platform, and layed foundation for further development of vehicle systems by LabVIEW.

Keywords:J1939; LabVIEW; engine communication

收稿日期:2015-07-30

作者简介:潘运平,男,42岁,湖北公安人,现为武汉理工大学机电工程学院副教授,研究方向为机电一体化。

中图分类号:TP311

文献标识码:B

文章编号:1002-6886(2016)02-0062-08

猜你喜欢

油温字节报文
基于J1939 协议多包报文的时序研究及应用
No.8 字节跳动将推出独立出口电商APP
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
No.10 “字节跳动手机”要来了?
基于MSP430的四旋翼飞行器的S-BUS通信协议的设计与实现
一根筷子辨别油温
液压系统油温过高现象原因分析及改进
ATS与列车通信报文分析
如何判断油温?