首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于J1939标准的长帧数据应用

作者:董建业 刘子龙 来源:电子技术与软件工程

阐述了一种基于CAN总线的车辆网络通信协议SAEJ1939,并以SAEJ1939-21协议为基础,在VC6.0环境下设计并实现了CAN总线长帧数据的拆装和重组,很好的解决了基于CAN总线的大数据包可靠、高速传输的问题。

【关键词】SAEJ1939 CAN总线 长帧数据

SAEJ1939协议是目前在大型汽车中最广泛的应用层协议,由美国SAE(Society of Automotive Engineer)组织维护和推广,通信速率为250Kbps,主要应用于载货车和客车上。J1939协议以CAN2.0B协议为基础,主要包括:网络层协议(SAEJ1939-31)、应用层协议(SAEJ1939-71)、诊断应用层(SAEJ1939-73)、网络管理层协议(SAEJ1939-81)、数据链路层协议(SAEJ1939-21)。

本文主要介绍基于数据链路层协议(SAEJ1939-21)的长帧数据应用开发。

1 J1939协议概述

1.1 协议数据单元PDU

SAEJ1939协议对CAN2.0B协议扩展帧的29位ID进行了重新定义,并与数据区域组成了SAEJ1939的协议数据单元(PDU)。协议数据单元由P(优先级3位),R(保留位1位),DP(数据页1位),PF(PDU格式域8位),PS(特定PDU 8位),SA(源地址8位)字段和数据段(0~64位)组成。

在CAN数据帧的数据域中需要指明参数群时,PGN是表示24位。PGN是一个24位的值,包括以下要素:保留位、数据页位、PDU格式域(8位)和群扩展域(8位)。

PS是一个8位域,它的定义取决于PDU格式,根据PDU格式它可能是目标地址或者群扩展, 若PDU格式(PF)段的值小于240,特定PDU段是目标地址,若PF段的值在240和255之间,特定PDU包含群扩展(GE)值。

1.2 传输协议

当传输数据不多于8 字节时,单帧数据便可完成数据发送;当传输数据多余8字节时,长度大于8 字节的消息无法用一个单独的CAN 数据帧来装载,因此,它们必须被拆分为若干个小的数据包,然后使用单独的数据帧对其逐一传送。而接收方必须能够接收这些单独的数据帧,然后解析各个数据包并重组成原始的信息,最多可发送1785个字节,典型传输过程如图1所示。

本文的只介绍点对点模式的工程应用,广播模式可在点对点模式基础上进行类推。

2 软件设计

2.1 数据流

围绕数据传输实现过程进行软件设计,并基于VC++6.0开发环境进行软件设计,基于数据流的软件总体结构设计如图2所示。

2.2 程序设计

程序设计包括发送端和接收端软件设计,发送端主要包括CAN卡初始化,数据选取、数据拆装和传输控制等过程;接收端主要包括CAN卡初始化、传输控制、数据接收组装等过程,程序流程图设计见图3。

工程应用中数据设置界面实现见图4。

3 系统调试环境

搭建系统调试环境需要两台试验终端(带CPCI插槽),两块CPCI接口的CAN采集卡,两台终端采用点对点调试模式,将CAN卡设置为终端模式(带120Ω匹配电阻)。

终端1作为发送终端,终端2作为接收终端,在VC6.0调试环境下综合运用断点、TRACE语句,内存查看等调试手段完成调试过程,由于开发和运行环境为非实时操作系统,收发过程延时控制和收发握手过程是程序设计的重点和难点。

4 结语

本文的设计将CAN总线和面向对象的设计相结合,既充分发挥了CAN总线传输可靠性高和抗干扰性强的优势,又充分发挥了面向对象设计软件在界面设计方面的优势,可应用与基于车辆平台的数据采集、控制、导航等工程应用。

参考文献

[1]SAE J1939-21:Data Link Layer[S].2001.

[2]罗峰,孙泽昌.汽车CAN总线系统原理、设计与应用[M].北京:电子工业出版社,2010.

[3]张涛,李珍珍.SAE J1939协议的研究及其协议栈的实现.湖北汽车工业学院学报,2011(25):25-29.

[4]张大庆,张凤登.基于SAE J1939协议的发动机通信控制器仿真与设计.工业控制计算机,2013(26):96-99.

作者单位

中国电波传播研究所 山东省青岛市 266107