RS-485总线在汽车地衡计量系统中的应用
管理子模块。实现计算机与测控仪通信,定时采集工作参数,并直观显示所测试数据,同时向测控仪发送控制命令,并实现系统故障诊断及处理。
③浏览打印子模块。用于查询和打印测试参数,便于进行分析和统计。
④帮助子模块。介绍软件的使用方法、步骤和注意事项。
2.1.2 上位机与测控仪通信模块
上位机与测控仪通信是RS-485总线型分布式测控系统的关健,利用AT89S52的串行通信口及MAX487芯片的接口电路实现与IPC通信。AT89S52单片机提供与计算机或其他串行设备连接的异步通信口,而VB提供便于图形化接口的串口操作控件———Mscomm[6],并配合VB中的TIMER控件的定时功能,周期性地从串行口上取数据,并进行数据处理。
由AT89S52所组成单片机应用系统,即测控仪需要把工作参数和工作状态及时传递到上位机中,同时,上位机利用其友好的界面,对测控仪进行初始化等工作,以实现两者双向通信。通信除了硬件电路外,还需统一两者的通信协议。由于RS-485是一种半双工通信协议,发送数据和接收数据共用同一物理通道,在任意时刻只允许一台网络终端设备处于工作状态,若有一台以上的设备同时发送数据,则会产生总线冲突,使整个系统通信瘫痪。本系统采用主从式查询方式,即工控机给出某一下位机的地址码,向所有下位机都发出询问,当某一下位机接到的地址码与本机地址码相符时,响应指令,发送数据,工控机接收数据,否则不响应也不发送数据。其通信数据格式包括呼叫数据帧、发送数据帧、接收数据命令帧和应答帧[7]。如图4所示即为计算机从AT89S52单片机接收数据过程示意图。
上位机读取某测控仪数据主要程序模块如下:
Private FunctionRD_cky(String zh)
Dmi CMD, ADR, CO, znwkS1, SN, TXD AS String
Dmi LENS, BCC, BCC1, I As Integer
Dmi ckcs_sz(10) AsSingle
∥用于存放从测控仪中读回参数值
CMD=“0F1H” ∥通信申请
ADR=zh∥zh=01第1台测控仪的站号地址
CO=EOT+ADR+ENQ∥连接01站号的字符串
MSComm1.Output=CO
∥向测控仪发送连接命令字符串
Do
DUMMY=DoEvents()
∥等待接收测控仪回答的字符串
LoopUntilMSComm1. InBufferCount>=26
RS=MSComm1. input∥读取接收缓冲区数据
cky_ydc=Mid$ (RS,2,2)∥取测控仪应答字符串
If cky_ydc=187 Then∥判断通信是否正确
x=MsgBox(“通信连接错误!”,16):ExitFunction
else
CMD= CMD+ETX: LENS=LEN(CMD): BCC=0
∥生成BCC校验和
FOR I=1 TO LENS
SN=MID$ (CMD, I,1):BCC=BCC+ASC(SN)
NEXT
BCC=BCCMOD 128: BCC=CHR$ (BCC)
TXD=STX+CMD+BCC
∥发送包含校验和的新命令字符串
MSComm1.Output=TXD
∥向测控仪发送连接命令字符串
Do
DUMMY=DoEvents()
∥等待接收测控仪回答的字符串
LoopUntilMSComm1. InBufferCount>=26
RS=MSComm1. input∥读取接收缓冲区数据
LENS=LEN(RS): BCC1=0
FOR I=2 TO LENS
SN=MID$ (RS, I,1):BCC1=BCC1+ASC(SN)
NEXT
IF BCC<>BCC1 THEN
x=MsgBox(“通信连接错误!”,16):ExitFunction
End If
FOR I=5 TO LENS
∥分解读回的字符串,提取所需参数值到数组
ckcs_sz(I-4)=MID$ (RS, I,1)
∥ckcs_sz数组存放从测控仪中读回的参数值
NEXT
End If
CallDisplay()∥调用显示模块,把提取的有效
数据,显示于上位相的工作界面中
End Function
上述程序段主要包括定义所需的变量、拼接发送字符串、通信的建立、数据校验码的产生以及有效数据的提取,为后续进一步处理和应用奠定了基础。
2.2 测控仪软件开发
测控仪软件开发采用结构化和模块化设计方法,分为系统监控程序和中断服务程序两大部分。其中每一部分又由许多功能子模块构成。监控程序主要包括初始化模块、测试与诊断模块、显示模块和键盘扫描与处理等模块。为提高系统工作的实时性,将A/D转换、数据处理和串口通信等工作均安排在中断服务中执行,下面对测控系统主要模块作简要说明。
2.2.1 故障诊断程序模块
为确保测控仪正常可靠地工作,在测控仪上电时,运行开机自诊断程序,检测AT89S52中功能部件和应用系统外围电路工作情况;主要包括ROM自检、RAM自检、定时器、A/D通道、FM24C32、DSN307、ZLG7290等模块的自检工作。利用自检程序模块,输出直观的工作状态信息,为系统维护奠定良好基础。
2.2.2 键扫描和显示处理模块
测控仪的人机接口主要体现在键盘、显示和报警输出方面。在自检阶段,对于不同检测模块的不同情况,分别显示不同的字符信息;在实时监控正常工作状态时,其显示内容为所测试参数的大小;在键盘操作时,显示其键盘操作内容,如出现报警,其显示器输出相应报警项的提示信号。
键盘按键包括数字键和功能键,数字键主要用来校正时间、
RS-485总线汽车地衡计量系统AT89S5 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)