微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > RS-485总线在汽车地衡计量系统中的应用

RS-485总线在汽车地衡计量系统中的应用

时间:11-20 来源:互联网 点击:

管理子模块。实现计算机与测控仪通信,定时采集工作参数,并直观显示所测试数据,同时向测控仪发送控制命令,并实现系统故障诊断及处理。

③浏览打印子模块。用于查询和打印测试参数,便于进行分析和统计。

④帮助子模块。介绍软件的使用方法、步骤和注意事项。

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 键扫描和显示处理模块

测控仪的人机接口主要体现在键盘、显示和报警输出方面。在自检阶段,对于不同检测模块的不同情况,分别显示不同的字符信息;在实时监控正常工作状态时,其显示内容为所测试参数的大小;在键盘操作时,显示其键盘操作内容,如出现报警,其显示器输出相应报警项的提示信号。

键盘按键包括数字键和功能键,数字键主要用来校正时间、

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top