铁路雨量监测系统中的远程通信
摘要:给出一种用于远程通信的分布式计算机和单片机网络结构。重点介绍单片机及计算机远程通信的MODEM软件处理方法,并给出部分应用程序供读者参考。本系统成功应用于铁路部门的雨量监测。
关键词:单片机 MODEM 远程通信 监测系统 VB
引言
铁路部门的雨量监测是有关铁路安全的一个重要环节。由雨量过多引起的洪水会影响铁路路基,引发列车交通事故。因此,为了确保交通命脉的安全,应及时将铁路沿线的雨量反馈至铁路管理部门。过去雨量监测是由各站点人工抄记雨量监测仪表数据,再汇总铁路管理部门。显然信息传送不及时,且存在人为因素,备案困难。
微型计算机的发展和计算机通信技术的提高,使得各种信息采集的自动化、实时性变为可能。作者成功地运用微型计算机和单片机组成主从式微机网络,将铁路雨量监测构成一个分布式雨量监测系统。该系统将单片机雨量监测仪采集的数据,自动地由MODEM汇集到系统主计算机,从而使几百公里长的远程通信既经济又可靠,大大提高了铁路部门抗灾的能力。
一、系统结构设计
雨量监测系统是由微型计算机和单片机组成的主从式微机网络。以单片机为核心的雨量监测仪分布在铁路各站点。该仪器功能有采集雨量、存储雨量信息、雨量报警、现场雨量曲线打印以及通信。管理部门以个人计算机为系统主机。雨量监测系统结构如图1所示。javascript:window.open(this.src);" style="cursor:pointer;"/>
从图1中看出系统主机直接与单片机建立通信联系。由于各站点远离系统主机,在不附加外部连线等硬件设施基础上,利用单片机加MODEM方式以及电话线实现单片机远程。系统主机可对各站部的单片机雨量监测仪进行各种设置及数据采集,单片机雨量监测仪根据雨量情况也可自动向系统主机发送当前雨量数据,这样就可做到及时提供现场的雨量情况。
二、单片机雨量监测仪及其远程通信
各站点的雨量监测仪以8051系列单片机为CPU,辅以定制的液晶显示器、SRAM、热敏式绘图仪、雨量传感器等,其原理框图如图2所示。图中W87E58是MCU,它兼容MCS-51单片机并具有32KB片内EEPROM。
单片机远程通信由ST16C450连接MODEM实现。ST16C450是一种通用异步接收发送器,内部有10个寄存器,其中有MODEM控制寄存器和MODEM状态寄存器。MCU通过这2个寄存器的操作实现对MODEM的控制并了解MODEM的工作状态,从而顺利进行数据通信。ST16C450进行通信前首先要对其进行初始化,即设置波特率、通信数据格式、是否使用中断等。ST16C450初始化后可采用程序查询或中断方式进行通信。
MODEM的使用主要有以下4个操作:
①初始化MODEM;
②拨号;
③应答到来的呼叫;
④挂断线路,使MODEM回到AT命令状态。
MODEM的控制由Hayes AT命令集完成,程序可直接发送(以AT字符开始再加命令和参)数给MODEM。但是,AT命令无法完成系统间的文件传送,发送或接收文件必须由通信软件按预先规定的通信协议完成。
MODEM初始化命令串"AT&FS0=3","&F"重置MODEM,"S0=3"表示应答铃响3次。雨量监测仪MODEM初始化子程序如下:
MSTR:MOV R4,#0
MST0:MOV DPTR,#P3FE ;MODEM状态寄存器地址
MST1:MOVX A,@DPTR
ANL A,#30H
CJNE A,#30H,MST1
MOV DPTR,#P3FD ;通信线状态寄存器
MST2:MOVX A,@DPTR
JNB ACC.5,MST2
MOV DPTR,#MTAB
MOV A,R4
MOVC A,@A+DPTR
JZ MST3
MOV DPTR,#P3F3 ;数据发送保持寄存器
MOVX @DPTR,A
INC R4
SJMP MST0
MST3:RET
MTAB:DB 41H,54H,26H,53H,30H,3DH,33H
DB 0DH,0 ;AT&FS0=3
子程序执行后MODEM应答"OK",表示初始化完成。
MODEM拨号命令串"ATDTxxxxx",xxxxx是电话号码;拨号成功时MODEM将应答以"CONNECT"字符开始的字符串。单睡机与系统主机连接完成后,按通信协议所规定的数据串通信交换数据。数据通信结束后,程序发送挂断线路命令串"+++ATH0",MODEM自动断线,从而完成1次通信。
javascript:window.open(this.src);" style="cursor:pointer;"/>
三、系统主机与雨量监测仪的通信
系统主机软件用VB5.0编制,运行于Windows 95环境。整个软件由通信、日报表、月报表、年报表、设定、曲线图、报警等模块组成,操作平台如图3所示。主机可与30个站点的雨量监测仪连接。
程序中使用MSComm控件,通过向连接在串行口上的MODEM发送AT命令来控制。主机通信状况分为2类:主动通信和被动通信。下面分别加以介绍。
1.主动通信
主机向站点雨量监测仪传送报警设定值及收集当天或前天的雨量数据时称为主动通信。电话图标表示各站点的雨量监测仪,一旦被选中,程序就发出"ATDTxxxxx"拨号命令,雨量监测仪MDOEM处于自动应答方式被连接。MODEM连接成功后,主机会收到"CONNECT 4800"信息,此时,主机就可以向站点发送命令和数据串。如果站点接收到正确数据,根据命令代码(由通信协议规定)就可知道主机是要设定参数还是要收集当天或前天的雨量数据。若是收集雨量数据,站点雨量监测仪将雨量数据传送给主机;主机收到站点正确的雨量数据后,向MODEM发送"+++ATH0"离线挂机命令,结束本次通信。
主站发送的数据串里包括站点号、通信代码、当前日期和时间、警戒值及校验和等信息。用@K和@J作为开始和结束标志。
下面是主动通信的主要源程序:
Private Sub 主动通信(发送代码)