基于Matlab CAN通信的汽车转向模拟器实时监控系统设计
2016-06-20陈小兵赵慧勇邓召文汽车动力传动与电子控制湖北省重点实验室湖北汽车工业学院湖北十堰442002
陈小兵,赵慧勇,邓召文(汽车动力传动与电子控制湖北省重点实验室,湖北汽车工业学院,湖北 十堰 442002)
基于Matlab CAN通信的汽车转向模拟器实时监控系统设计
陈小兵,赵慧勇,邓召文
(汽车动力传动与电子控制湖北省重点实验室,湖北汽车工业学院,湖北 十堰 442002)
摘要:汽车转向模拟器是实现人-车硬件/软件在环仿真试验的关键装置。文章基于Matlab 图形化用户界面(GUI)设计了转向模拟器监控系统,利用Matlab的车载网络工具箱,通过CAN通信协议实现转向模拟器与PC机之间的实时通讯。系统界面简单,操纵方便,通过参数配置实现转向模拟器不同的工作模式。实验结果表明,系统运行快速稳定,以100Hz的频率收发报文和10Hz的频率更新界面显示,能够精准的控制转向模拟器在不同的工作模式下运行。
关键词:Matlab GUI;CAN通信;实时监控;转向模拟器
10.16638/j.cnki.1671-7988.2016.05.033
CLC NO.: U463.61Document Code: AArticle ID: 1671-7988 (2016)05-110-04
引言
汽车转向模拟器由方向盘、路感电机、电控单元以及相关传感器组成,是一种实现车辆转向动作,并准确的模拟出实际转向力感的装置。在汽车产品开发设计试验证阶段,将转向模拟器接入ETAS、dSPCAE、RT-Lab、Ni等半实物仿真平台,实现驾驶员与虚拟实时车辆模型交互,进行测试分析评价整车性能。由于种基于“人-车”闭环半实物仿真测试手段大大降低了成本,提高了系统的研制质量,因而在越来越多的汽车企业和高校得到应用。
转向模拟器有多种工作模式与运行状态,在进行半实物仿真测试过程中,需要通过计算机进行实时监控。目前,计算机与下位机之间大多采用传统的RS-232[1,2]和RS-485[3~5]串口通信技术。这些通信技术已非常成熟,但存在传输效率低、距离短、网络调试困难。且没有容错机制,容易出现数据覆盖或丢失等问题,不适应于大数据传输。CAN总线与串口通信相比,具有连线简单、实时性强、可靠性高且可以网络调试的优点[6,7],已成为汽车电控系统和嵌入式工业控制的标准总线。
Matlab软件有强大的数据处理和信号处理功能,与VB、Dephi、PLC以及C++相比,MATLAB GUI提供了一种低成本的人机交互和高效率的在线数据处理方式[8],是开发监控系统的最佳选择。Matlab软件的车载网络工具箱(Vehicle Network Toolbox)提供了CAN通信模块,支持Vector,Kvaser以及Ni公司的多种CAN硬件接口设备。
目前,虽然Matlab在动力学系统仿真与静态数据处理方面的应用研究已非常成熟,但在汽车行业中,利用Matlab CAN通信开发监控系统的研究尚比较少见。鉴于以上情况,本文基于MATLAB/GUI CAN总线通信开发设计转向模拟器监控系统,并进行了测试,结果满足转向模拟器工作可靠、稳定的要求。
1、系统总体方案设计
汽车转向模拟器监控系统的总体结构如图1所示。系统利用Vector公司的USABCAN卡实现PC机与转向模拟器之间的实时通信,并通过GUI界面实现对转向模拟器的实时监控、图像显示与数据处理。
图1 监控系统总体结构
系统的下位机是转向模拟器控制单元,负责控制路感电机产生转向反馈力矩。ECU解析上位机发送的CAN报文,根据报文信息设置转向模式、运行状态以及方向盘的最大转角等相关参数,同时实时采集转向模拟器的工作状态、转向盘实际的转矩、转角以及转速,并回传给上位机。
系统的上位机部分根据实际试验需求监控转向模拟器控制,并进行数据处理。通过利用Matlab内置的CAN通信类以及相关函数实现与转向模拟器之间的通信,并利用GUI界面操作实现下位机控制参数的设置。系统对返回的数据进行实时处理并在界面中显示。便于后期的数据处理分析,监控系统还具有文件存储功能。
此外,该系统可以用于线控转向路感模拟算法研究。其它电控单元接入CAN总线中,并向转向模拟器发送计算期望转矩的相关参数,监控系统只监控转向模式与运行状态,转向模拟器采集并发送实际的转向力矩、转角以及角速度等信号。
2、CAN通信实现
Matlab软件通过调用车载网络工具箱的CAN类和相关函数创建CAN接口设备对象,得到设备的文件句柄并配置CAN通道的波特率,从而实现以报文为单位进行信息传送。
利用Matlab软件实现CAN通信的流程如图2所示。在创建CAN通道前,需利用canHWInfo函数检测CAN接口信息,确保创建的CAN通道与硬件接口相匹配。
图2 CAN通信流程
为了实现CAN通信操作,建立的函数如下:
(1)创建CAN通道与设置通道属性
canch=canChannel('vendor', 'device', devicechannelindex) %创建通道
configBusSpeed(canch, 250000)%设置波特率。
(2)开启与关闭CAN通道
Start (canch)%启动通道。
Stop (canch)%关闭通道。
(3)载入CAN通信协议文件
为了便于发送报文的封装与接受报文的解析,可以先将定好好的CAN通信报文协议存储为扩展为dbc的文件中,通过canDatabase函数载入。
channel.Database=canDatabase ('C:Database.dbc') %加载C盘内的dbc文件。
(4)发送报文
发送报文可以通过利用载入的dbc文件进行封装,也可以直接自定义报文。
发送自定义报文的过程:
msgout=canMessage(500, false, 8)%自定义发送报文id号为500,扩展帧,数据长度8字节
pack(msgout, 25, 0, 16, 'LittleEndian')%封装自定义报文msgout信号,信号在数据帧占第1/2两个字节,信号值为25,且低端为终端。
transmit(canch, msgout)%发送报文。
发送dbc文件定义报文的过程:
msgout=canMessage(database, messagename) %利用dbc文件定义发送报文。
msgout.Signals.SignalName=25;%设置报文msgout中信号SignalName的信号值为25
transmit(canch, msgout)%发送报文。
(5)接受报文
接收报文可以利用dbc文件进行解析,也可以自定义解析。
解析dbc文件定义报文的过程:
message=receive(canch,5)%接收5个报文
[msgOut, remainder]=extractAll(message, 'msg1')%提取报文msg1
value=msgOut.Signals.SignalName%获取msg1报文的信号值。
解析自定义报文的过程。
message=receive(canch,5)%接收5个报文
[msgOut, remainder]=extractAll(message, 3000, true)%提取id为3000的报文
value=unpack(msgOut, 0, 16, 'LittlegEndian', 'int16') %按位解析信号值,信号数据帧的占0~15位,16位整型。
利用matlab中的定时器对象可以实现定周期的重复(5) 和(6)操作进行定时发送与接收,也可以通过判断函数进行触发发送与接收。
3、MATLAB GUI设计
转向模拟器有3种独立的工作模式(正常模式、基本模式和参考模式)和4种工作状态(运行状态、等待状态、停止状态、错误状态)。每种工作模式都需设置相关的参数,此外还需设置方向盘最大转角和最大反馈力矩等。因此,监控系统需定义4个发送报文:报文1用于控制工作模式、工作状态、方向盘最大转角与最大反馈力矩等基本参数,其余3个报文用于设置3种不同工作模式下的相关参数。此外,还需定义4个接收报监视转向模拟器的运行。
根据以上要求,本文设计的 GUI监控程序运行分三个阶段:启动程序、界面操作、关闭程序,具体流程如图3所示。
启动程序,首先初始化GUI界面的操作空间与显示控件,检测CAN硬件接口并初始化CAN通信通道。为了提高通信效率,设置波特率为1mkbps。完成之后,初始化定时器对象,用于定时发送/接收报文和实时更新界面中的数据显示。为了提高监控的可靠性,设计报文收发周期为10ms,界面更新周期为100ms。
图3 GUI监控程序运行流程图
GUI程序启动完成之后,启动CAN通道和定时器,定时器自动定时发送/接收报文。由图3可知,程序中有4个发送报文和4个接收报文。从上到下,第一个报文用于控制工作模式、工作状态以及基本参数,该报文与其它任何一个报文进行组合。GUI程序默认控制转向模拟器为参考模式、停止状态。用户通过界面操作选择模式与工作状态,GUI程序根据用于操作确定发送与接收报文。例如用户选择正常模式时,GUI程序自动发送报文1和3。
当关闭GUI程序时,依次关闭、删除定时器与CAN通道,完成之后退出GUI程序。
系统GUI设计方便用户操作应、布局合理且清楚直观[9]。转向模拟装置监控界面设计如图4所示。该界面由5个模块组成:
(1)控制状态设置模块:用户在非参考模式下用于控制转向模拟器的运行状态。
(2)参数设置模块:用户可以选择不同的运行模式、设置方向盘最大转角。此外,用户可以通过滚动条控件调节力矩T、摩擦力矩F、阻尼系数D以及刚度K。该四个参数用于计算期望转向反馈力矩。
在正常模式下期望的反馈力矩为:
在基本模式下,期望的反馈力矩为:
在参考模式下,通过设置偏移量调整转向盘的零位置。
(3)辅助功能模块:用户可以通过两个复选框控件分别用于设置CAN总线看门狗是否工作和当方向盘转角超过预定的最大转角时电机是否产生振动;在参考模式下,可以对方向盘初始角位置进行修正。
(4)方向盘模块:为了便于用户监视方向盘转角,利用动画形象实时更新显示方向盘的位置;同时数值显示方向盘的转角、角速度以及实际反馈力矩。
(5)状态显示模块,利用多个指示灯控件组合,实时显示当前电机的工作状态信息。便于用户直观地了解转向模拟器的运行状态。
图4 GUI界面
4、实验测试
为了测试GUI界面的监控能力,分别在GUI中选择不同的模式,设置不同的控制参数进行测试。通过转动方向盘,观察GUI界面中方向盘动画显示、运行状态显示以及方向盘转角、转矩与角速度的数值变化情况。其调试过程如图5所示。
图5 调试过程
图6 GUI测试显示
为了方便观察与分析,进行了向左右慢打方向至最大转角后撒手试验,GUI界面的参数设置如图6所示。从图中可以看出是正常模式,方向盘最大转角为450deg,力矩T为0Nm,摩擦力矩F为0.004Nm,阻尼系数为0.007Nm/rmp;刚度为0.005Nm/deg。
图7是通过公式(1)计算的理想力矩和测试的实际反馈力矩。从图中可以看出:当转向盘转角超过450deg时反馈力矩急剧增大,提示方向盘已转到最大位置;在转向时实际反馈值与期望值非常吻合且与方向盘转角近似呈线性关系;当撒手后,由于阻尼系数设置值非常小,方向盘快速回到中间位置且在中间出现了振动。
图7 测试结果
5、结束语
本文基于Matlab/GUI 的CAN 通信方法设计了一种转向模拟器监控系统。开发过程简单快捷,整个程序源文件只有80kb,与其他编程环境相比开发成本较小。从测试结果来看满足满足高效性和稳定性要求。此外界面简单、功能完备,硬件在环仿真测试中,便于用户调试监控。本文方法扩展了Maltab的实际应用范围,对基于CAN通信的监控系统的开发具有借鉴意义。
参考文献
[1]赵震,刘志刚,刁利军.基于Matlab的船用螺旋桨计算机实时仿真及GUI设计[J]. 计算机应用与软件. 2008,25(03):129-131.
[2]吕向锋,高洪林,马亮,王新华.基于LabVIEW串口通信的研究[J]. 国外电子测量技术. 2009,28(12):27-31.
[3]聂可富.基于RS-485总线的抄表系统设计[D]. 南京航空航天大学,2012.
[4]何永辉, 李凯.基于RS-485串口通信的软件测试方法研究[J]软件测试 ,2010,1(6):27-29.
[5]Reduce Power In your RS-485 Network, Electronic design, 2010,Vol. 58,No.13,58~61.
[6]Tao Zhao, Qunjing Wang, Weidong Jiang etc. System Design and Development of Parallel-Hybrid Electric Vehicle Based on CAN Bus. Electrical Machines and Systems,2005(1):823-831.
[7]饶运涛,邹继军,王进宏,郑勇芸.现场总线CAN原理与应用技术.北京:北京航空航天大学出版社,2007:20-35.
[8]薛飞,杨友良,孟凡伟,董福涛.基于Matlab GUI 串口通信的实时温度监控系统设计[J].计算机应用,2014,34(1):292-296.
[9]罗华飞.Matlab GUI设计学习手记[M].第2 版.北京航空航天大学出版社,2011:87- 673.
A real-time monitoring system ofvehicle steering simulator design based on Matlab CAN communication
Chen Xiaobing, Zhao Huiyong, Deng Zhaowen
( Hubei Key Laboratory of Automotive Power Train and Electronic Control, Hubei University of Automotive Technology, Hubei Shiyan 442002 )
Abstract:Vehicle steering simulator is the key device to realize driver-vehicle hardware/softwarein the loop simulation experiments . This paper, the monitoring system of the steering simulator was designed based on Matlab GUI. Vehicle Network Toolbox in Matlab and CAN communication protocol were used to realize the real-time communication between steering simulator and PC. The interface of the system is simple and easy to operation. Variety work models were achieved by setting different parameters. The test results show that, the system runs stability and fast , and can accurately control steering simulator workingin different models with transmitting message at 100 Hz and updating interface display at 10 Hz.
keywords:Matlab GUI; CAN communication; real-time monitor; steering simulator
中图分类号:U463.61
文献标识码:A文章编码:1671-7988(2016) 05-110-04
作者简介:陈小兵,湖北十堰人,主要从事汽车动力学仿真与控制方向研究。基金项目:国家自然科学基金(51175155),湖北省自然科学基金(2012FKC14801)。