基于J1939的车载CAN总线模拟系统设计

2015-05-15 06:57秦亚军康维新
应用科技 2015年3期
关键词:图形化界面设计上位

秦亚军,康维新

哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨 150001

基于J1939的车载CAN总线模拟系统设计

秦亚军,康维新

哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨 150001

针对机动车联网终端对于测试环境的需求,应用SAE J1939协议进行了车载CAN总线仿真环境的设计。系统由PC端上位机软件和CAN总线模块下位机组成。PC端上位机界面由跨平台特性优良的Qt Craetor设计开发,用于设定、显示仿真环境的车辆参数以及串口的通信;下位机方面通过MCU完成与上位机的串口通信以及通过CAN总线模块将仿真环境的车辆参数的传输到CAN总线上。经过测试,该系统工作稳定,满足本项目对于测试环境的要求,同时可以模拟普通的车载网络,具有一定的应用价值。

CAN总线;SAE J1939协议;Qt;车联网终端

随着机动车保有量的增加,产生了交通堵塞、事故频发等一系列问题。车联网的研究引起各国政府和相关机构的高度重视。为了公路运输进行信息化的管理,提出了车联网关键技术的研究课题,主要涉及车联网终端的研究,课题中同时需要考虑到测试环境的搭建、以及进行车联网终端系统测试。SAE J1939协议基于Bosch公司开发的CAN(controller area network),作为描述重型车辆现场总线的一种网络应用,被广泛应用于商用车辆,如大型客车和重型货车。现在大部分的测试环境大都是基于CAN- Pro协议分析平台和CAN总线分析仪组合搭建[1],而其存在的主要问题是现有的CAN总线分析仪的价格较高。考虑到研究课题的现实需求,本系统通过MCU控制CAN收发器替代CAN总线分析仪,很好地降低了项目成本。

1 系统整体结构

该系统由主要由PC端上位机和CAN节点收发端2部分组成,系统的整体结构图如图1所示。

图1 系统总体结构框图

上位机方面,考虑到上位机的应用范围,该系统采用Qt这样一款跨平台C++图形化界面库开发。Qt良好的跨平台性、丰富的API以及对于第3方类的支持使得开发更为方便,同时Qt的良好封装机制,较好的可重用性,大量的开发文档,使其非常便于用户开发[2]。由于在Qt库中没有具体的串口控制类,在系统中这里使用的是第3方的qextserialport类来实现串口通信,将上位机车辆仿真环境数据发送到MCU。下位机方面,系统采用MCU、MCP2515控制器及TJA1050高速CAN收发器组合的设计,进行与上位机的通信和CAN报文的发送[3]。

2 系统硬件设计

系统采用STC89C52RC作为主控芯片,其作为一种低功耗、高性能CMOS 8位微控制器,具有8KB系统可编程Flash存储器,很好地满足系统编程的需求。主控芯片通过RS-232串口芯片接收串口数据并通过CAN模块进行报文发送,CAN总线模块采用Microchip的MCP2515独立CAN协议控制器芯片和Philips的CAN高速收发器TJA1050进行组合。MCP2515完全支持CANV2.0B技术规范,并能进行标准帧和扩展帧的收发,其自带2个验收屏蔽寄存器和6个滤波寄存器,可以进行报文有效性过滤[4]。MCU通过SPI接口与该器件进行连接,使用标准的SPI读/写指令以及专门的SPI命令来读/写所有的寄存器[5]。TJA1050作为物理媒体连接子层连接于协议控制器和物理传输媒体之间,具有较好的电磁兼容性,电磁辐射极低,电磁抗干扰性极高,同时不上电的节点总线呈现无源特性。TJA1050可以为总线提供差动发送性能,为CAN控制器提供差动接收性能;同时TJA1050具有保护总线引脚,可防止汽车环境中的瞬态干扰,更好的应用于汽车CAN总线的环境中[6]。具体硬件电路如图2所示。

图2 系统硬件电路图

3 系统软件设计

系统软件由上位机软件和下位机软件2部分组成。上位机主要包括基于Qt的串口通信程序和基于Qt的图像化界面设计。由于在Qt中并没有特定的串口控制类,所以基于Qt的串口通信程序使用第3方写的qextserialport类进行开发,通信分为手动发送和自动发送。Qt的图形化界面的设计主要是基于qwt控件进行仪表盘的设计,并完成发送数据的实时调整。下位机设计主要是以MCU作为控制芯片,完成串口数据的接收、解码,并提取发送到CAN总线上。

3.1 上位机程序设计

上位机程序主要包括串口通信程序和图形化界面设计2部分。

3.1.1 串口通信程序设计

为了实现Qt下串口通信的实现,这里基于第3方qextserialport类进行开发[7],下面将关键步骤介绍如下:

1)由于Qt库没有特定的串口控制类,所以首先要下载qextserialport-1.2win-alpha.zip,并进行解压。由于该上位机是运行在Windows下,这里需要将相应的文件拷贝到工程当中,在Windows下只需要使用其中的6个文件:qextserialbase.cpp和qextserial-base.h,qextserialport.cpp和qextserialport.h,

win_qextserialport.cpp和win_qextserialport.h。

2)打开QtCreator,新建工程,将上述6个文件复制到工程文件夹中,并在工程中添加这6个文件。此时,串口通信的开发环境搭建完成。

3)接下来进行串口的设置的界面设计,包括串口号、波特率、数据位、校验位和停止位。

4)通过信号/槽机制编写各个按钮函数,如打开串口按钮、关闭串口按钮,自动发送按钮对应的函数的编写。

5)串口读写数据函数的编写,为了方便并有效地发送数据,这里通过自定义报文进行发送并增加校验位,减少误码率。

串口通信图像化界面如图3所示。

图3 串口通信图形化界面

3.1.2 图形化界面设计

在图形化界面设计上,为了更直观地显示参数,这里采用基于qwt的仪表盘设计,下面将图形化界面设计关键步骤介绍如下[8]。

1)下载最新的qwt,这里下的是qwt-6.1.0.zip,并解压后编译,配置。

2)注意在使用时,需要设置一下pro文件,在pro文件下加入如下语句:

include(C:/Qt/qwt-6.1.0/qwtfunctions.pri)

DEFINES∗=QWT_DLL

CONFIG+=qwt

INCLUDEPATH+=C:/Qt/qwt-6.1.0/src

DEPENDPATH+=C:/Qt/qwt-6.1.0/src

qwtAddLibrary(qwt)

3)这里通过对QwtDial控件参数的配置获取合适的仪表盘,如车速表、转速表、油量表和油压表等。并且通过QwtWheel控件进行数据的调整。

3.2 下位机软件设计

下面主要针对下位机软件的设计流程进行分析[9]。如图4所示,当函数从主函数开始运行时首先进行初始化程序,其包括串口初始化init_serial()来完成串口工作方式、波特率、数据位的设置,CAN模块初始化Init_Can()来完成Mcp2515工作方式、通信速率、采用中断方式的设置,采用串口中断方式进行上位机发送数据的接收,主函数对接收的报文数据进行解析,并将解析后的CAN信息按相应节点发送到CAN总线上[10]。

图4 软件流程

4 系统测试

将所有硬件模块连接好,各CAN节点的CAN_H端接在一起,CAN_L端接在一起,将车联网系统连接本系统进行测试。

首先如图5所示,发送的数据为车速60 km/h、转速3 988 r/min、油量60%、油温120℃、油压600 kPa。将这些数据处理成相应的格式进行串口发送,其格式为“$,油温,油压,油量,油量,转速,∗”,对应的数据格式为“$,120,0600,060,060,3988,∗”。

图5 上位机发送数据显示界面

MCU通过串口接收到数据后进行解析,并以对应的SAE J1939节点进行发送,发送的相应节点信息如表1所示。

表1 模拟汽车节点信息

这里用项目中车联网系统进行接收本系统发送的CAN数据进行测试,车联网系统基于嵌入式系统开发,用MCP2515模块接收数据,并显示在Qt界面上,显示结果如图6所示。同时进行了自动发送测试,在上位机修改数据可以实时地显示在车辆网系统上,通过长时间车联网终端的显示,可以很直观地测试了系统的准确性、稳定性和可靠性。

图6 车联网系统显示界面

5 结束语

本系统模拟了基于SAE J1939的车载CAN总线,充分利用Qt的图形化界面编程的良好封装机制,结合signals/slots机制和丰富的API,降低了用户开发难度,更简单快捷完成串口通信和图形化界面的开发。同时其丰富的可扩展性使得图形化界面更加直观。本系统的工作较为直观,并在充分满足功能的同时大大的降低了研发成本,经过测试该系统性能可靠稳定,很好地满足车联网系统对于测试环境的要求,另外对该系统软件进行包装,能够在window系统下良好运行。

本系统设计在满足项目需要的同时,还可以应用于简单汽车网络的模拟和CAN总线培训教学。在整个系统的开发过程中,可以很好地了解并熟悉车辆仪表盘的设计和基于J1939的车辆CAN通信。

[1]吴伟斌,李礼夫,刘落实,等.基于J1939的汽车CAN总线教学实验系统[J].微计算机信息,2008,6(2):274-276.

[2]吴迪.零基础学Qt4编程[M].北京:北京航空航天大学出版社,2010:10-28.

[3]许勇,廖爽,赵检群,等.基于SAE J1939协议的发动机数据采集显示系统[J].桂林电子科技大学学报,2013,33(3):205-209.

[4]龚文,张辉,陈超.基于CAN总线的电动汽车车载监控终端[J].计算机与现代化,2013(11):192-195.

[5]谢桂波.基于SPI的CAN总线控制器与MCS-51单片机的接口设计[J].电子设计应用,2010(1):50-52.

[6]邢洋,李立伟,张洪伟.基于STM32单片机的CAN总线分析仪的设计[J].青岛大学学报:工程技术版,2013,28(1):19-21.

[7]霍亚飞.Qt编写串口通信程序全程图文讲解[EB/OL].[2014-05-08].http://blog.csdn.net/yafeilinux/article/de-tails/4717706.

[8]王旭峰.基于嵌入式技术的风机运行状态在线监测系统开发[D].北京:北京工业大学,2012:45-46.

[9]陈云芳.基于ARM-Linux的车联网终端技术研究[D].哈尔滨:哈尔滨工程大学,2013:61-65.

[10]SAE J1939-71,Vehicle Application Layer[S].

Design of CANBus simulation environment for vehicles based on J1939

QINYajun,KANGWeixin
College of Information and Communication Engineering,Harbin Engineering University,Harbin 150001,China

Aiming at the demand of Internet of vehicles terminal for the test environment,a simulation environment of vehicle CANbusbased on SAE J1939 protocolwas designed.The system is composed of upper computer software on PC and lower computer of CANbusmodule.The upper computer software interface is designed by QtCreatorwith excellent cross-platform features,it sets and displays vehicle parameters of simulation system and communicates with a serial port.The lower computer platform communicates with the PC through serial ports by MCU and sends the vehicle parameters by CANbusmodule.The test results show that the system can work stably,meeting the re-quirements of the project for the testenvironment very well,and can simulate normal on-board network at the same time.The system has a certain application value in the vehicle communication system.

CANBus;SAE J1939 protocol;Qt;Internetof vehicles terminal

TP368.5

A

1009-671X(2015)03-013-04

10.3969/j.issn.1009-671X.201404015

2014-07-07.

日期:2015-04-20.

黑龙江省交通运输厅基金资助项目(G084812068).作者简介:秦亚军(1990-),男,硕士研究生;康维新(1963-),男,教授,博士生导师.

康维新,E-mail:kangweixin@hrbeu.edu.cn.

http://www.cnki.net/kcms/detail/23.1191.U.20150420.1012.006.html

猜你喜欢
图形化界面设计上位
中医养生APP界面设计
“共享员工”平台界面设计
基于Arduino图形化编程的教学应用研究
中国传统元素在界面设计中的应用
面向智能手机的UI界面设计
特斯拉 风云之老阿姨上位
LKJ自动化测试系统图形化技术研究
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
网络图形化界面在高速公路机电设施养护管理系统中的应用