摘要: 汽车四轮定位仪为一分布式计算机测控系统,本文介绍了通过RS-485总线并利用VB 6.0 ActiveX控件的MSComm通讯控件,实现了汽车四轮定位仪中单台PC机与多台单片机的通讯功能。
关键词:RS-485;串行通讯;四轮定位;VB;检测
1、引言
汽车在正常行驶过程中,应具有转向操纵轻便和自动保持直线行驶的能力,同时转向轮应尽可能为纯滚动,以减轻轮胎的磨损及降低燃油消耗。上述要求的实现通常是通过转向轮定位的4个参数(主销后倾角、主销内倾角、车轮外倾角和前束)来保证的。由于目前汽车多数采用前轮转向,所以转向轮定位通常称为前轮定位。现代汽车不仅前轮具有定位参数,目前许多轿车后轮也设定了前束、外倾和推力角三项定位参数,其目的是使前、后轮在路面上的运动轨迹尽可能重合,既保证了轿车高速行驶的稳定性和安全性,又有助于减轻轮胎及悬架各零件的磨损。
汽车运行一定时间或更换某些零件后,四轮定位参数会发生变化,因此需要及时或定期对车辆定位参数进行检测,若超过厂家给定的标准值,便应进行调整,以恢复车辆的行驶稳定性、安全性、燃油经济性,减低轮胎和有关机件的磨损。
车轮
目前国内四轮定位仪的形式主要有三种,即拉线式、无线测量有线传输式和全无线式。拉线式四轮定位仪因操作不方便,影响测量精度的因素较多,目前已基本上被淘汰。全无线式的特点是采用光学非接触式测量,主机与传感器之间采用无线信息传输,测量精度高,使用方便。无线测量有线传输式同全无线式的主要区别是采用信号电缆来传递检测数据,尽管在使用方面不如全无线式方便,但具有信息传递和检测速度快、可靠,不存在更换电池、电池充电,使用成本低等优点,目前应用同样较广泛。
现代四轮定位仪全部采用微机控制,负责控制和管理任务的上位机(PC机)通过现场总线与负责数据采集任务的若干个下位机(单片机)相连,二者组成了一分布式计算机控制和测量系统。通讯系统软硬件的设计和选择是四轮定位仪设计的关键技术之一,对系统的整体性能影响较大。RS-232C 串行通讯接口是PC机的标准配置,接口简单,编程方便,但只能用于两台微机之间的连接,不能满足多接点连接的需要。我们采用了目前在工业测控系统中比较流行的RS-485 通讯接口,并通过VB 6.0的通讯控件MSComm方便的实现了多台单片机的集中控制和数据采集,较好的解决了四轮定位仪中的通讯问题。
2、四轮定位仪的系统构成
四轮定位仪的系统的构成如图1所示。 整个系统由一个上位机和四个下位机组成。上位机为PC微型计算机,负责对测量过程的控制、读取下位机的检测数据、数据处理与计算以及结果显示、存储、打印及管理等。四个下位机均由单片机系统组成,单片机采用AT89C51, 用于实现各车轮定位角度的测量控制及数据上传功能。单片机分别位于左前、左后、右前和右后机头的壳体内,机头与卡具相连,测量时机头通过卡具分别固定到汽车四个车轮的轮辋上。整个系统共采用了十四个传感器,其中垂直平面内角度(包括主销后倾角、主销内倾角和车轮外倾角)的测量由六个精密倾角传感器实现(其中前机头各两个,后机头各一个),八个PSD(Position Sensitive Detector)光学传感器(前后机头各两组)用于测量水平平面内车轮各定位角度。
图1 四轮定位仪的系统构成
3、系统通讯功能硬件的实现
标准的RS-232接口只能用于两台计算机之间的连接,PC机的两个RS-232接口COM1和COM2最多也只能连接两个单片机,若再扩展一块串行通讯卡,使得四个串口分别与四个下位机相连,则不但价格高,而且结构也较复杂。为此采用了目前在分布式工业测控系统中比较流行的RS-485总线。与RS-232相比RS-485接口具有以下特点:
(1)接口电平比RS-232 C接口低,不易损坏接口电路的芯片,且电平与TTL电平兼
容,可方便与TTL电路连接。
(2)数据传送速率高,波特率高达10Mbps。
(3)采用平衡驱动器和差分接收器,抗共模干扰能力强,即抗噪声干扰性好。
(4)传输距离远,最大传输距离为4000英尺。
(5)总线上可以连接多达256个收发器,即具有多站能力,用户可以利用单一的RS-485接口方便的建立起通讯网络。
在本系统中PC机通过RS-232接口,经RS-232/R
S-485转换模块与四个机头相连,每个机头的单片机也经RS-485接口模块挂在总线上,并都被赋于各自的通讯地址码以识别身份。单片机所用的RS-485收发器为美信公司的MAX3082,这是一种高速,具有失效保护和限摆率功能的收发器芯片。这样上位PC机便能通过RS-485总线与每个机头的单片机进行通讯,实现对定位参数的数据采集与过程控制。 4、系统通讯功能软件的实现
4.1 系统的通讯方式
PC计算机与各机头之间的通讯采用半双工方式,通讯波特率为9600bps,通讯格式为:1位起始位,8位数据位,无奇偶校验,1位停止位,每个机头被赋予唯一的本机地址。主机通过发送命令帧启动一次通讯和数据采集,从机接收到命令帧后,判断呼叫地址是否和本机地址相同,若相同,则根据命令字执行相应的数据采集并将检测结果通过数据帧传给主机;若不同,则根据地址和命令字判断是否发射红外测量光。命令帧的格式如下:
第一项为帧头(STX),用以标志一帧的开始;第二项为从机地址码(ADDR);第三项命令字表示机头回传的数据内容或本次检测内容,第四项FCS为异或校验,为前面数据的异或校验和用于通讯校错。
数据帧与命令帧除第三项外,其它意义相同,数据帧的第三部内容是从机根据主机发出的命令帧向主机发出的定位参数检测数据。
4.2 VB6.0的MSComm控件及串行通讯控制的实现
VB6.0提供了一个ActiveX控件——Microsoft Communication Control,Version 6.0,称为MSComm控件,利用它可以方便地进行计算机串口的通讯管理。MSComm控件有许多与串口有关的属性,这里不再做详细介绍。
串口接收到信息时MSComm 控件提供两种处理方法,一种为查询方式,另一种为事件响应方式,即利用SetCommEvent()函数设置串口响应事件。当响应事件发生时,系统会激活OnComm()事件。在OnComm()事件中添加用户处理代码,则可实现类似中断的串口事件处理,本系统采用了事件响应方式。
PC机通讯软件的任务是控制检测过程并读取和处理车轮定位参数实时数据。接收和发送数据采用文本格式,主机呼叫从机无应答时,设有报警提示功能。以下给出了控件初始化和发送命令的部分源代码。
(1)控件的初始化:
MSComm1.CommPort=2 ’选用COM2口通讯
MSComm1.Setting=“9600,N,8,1 ” ’设置通讯参数
MSComm1.Inputlen=0 ’读取缓冲区全部内容
MSComm1.InBufferSize=50 ’设置接收缓冲区大小
MSComm1.OutBufferSize=20 ’设置发送缓冲区大小
MSComm1.InputMode=comInputModeText ’以文本形式接收数据
MSComm1.PortOpen=True ’打开通讯端口
MSComm1.InBufferCount=0 ’清除接收缓冲区
MSComm1.OutbufferCount=0 ’清除发送缓冲区
(2)命令的发送(以前轮前束为例):
Dim Command, node, c, f As string
Dim i, fcs As integer
node=”01” ’节点号,表示右前机头
Command=”FT” ’ 前轮前束检测
c=”@”+node+Command
fcs=0
For i="1" To Len(c)
fcs=fcs Xor Asc(Mid$(c,i,1)) ’ 帧校验码FCS
Next i
f=Hex$(fcs)
if Len(f)=1 Then f=”0”+f
MSComm1.Output=c+f
5、结论
通过RS-485总线并利用VB6.0下的ActiveX控件实现了汽车四轮定位仪中主机PC机与多个从机之间的通讯,实践证明本系统的通讯功能运行可靠,设计合理。
参考文献
[1] 精英科技译. 串行端口大全[M]. 中国电力出版社. 2001
[2] 龚沛曾, 陆慰民, 扬志强. Visual Basic 程序设计教程(6.0版)[M]. 高等教育出版社. 2000
[3] 邹宗峰, 裴仁清. 用VB实现OMRON系列PLC与微机的通讯[J