鐵路雨量監測系統中的遠程通信
關(guān)鍵詞:單片機 MODEM 遠程通信 監測系統 VB
引言
鐵路部門(mén)的雨量監測是有關(guān)鐵路安全的一個(gè)重要環(huán)節。由雨量過(guò)多引起的洪水會(huì )影響鐵路路基,引發(fā)列車(chē)交通事故。因此,為了確保交通命脈的安全,應及時(shí)將鐵路沿線(xiàn)的雨量反饋至鐵路管理部門(mén)。過(guò)去雨量監測是由各站點(diǎn)人工抄記雨量監測儀表數據,再匯總鐵路管理部門(mén)。顯然信息傳送不及時(shí),且存在人為因素,備案困難。
微型計算機的發(fā)展和計算機通信技術(shù)的提高,使得各種信息采集的自動(dòng)化、實(shí)時(shí)性變?yōu)榭赡?。作者成功地運用微型計算機和單片機組成主從式微機網(wǎng)絡(luò ),將鐵路雨量監測構成一個(gè)分布式雨量監測系統。該系統將單片機雨量監測儀采集的數據,自動(dòng)地由MODEM匯集到系統主計算機,從而使幾百公里長(cháng)的遠程通信既經(jīng)濟又可靠,大大提高了鐵路部門(mén)抗災的能力。
一、系統結構設計
雨量監測系統是由微型計算機和單片機組成的主從式微機網(wǎng)絡(luò )。以單片機為核心的雨量監測儀分布在鐵路各站點(diǎn)。該儀器功能有采集雨量、存儲雨量信息、雨量報警、現場(chǎng)雨量曲線(xiàn)打印以及通信。管理部門(mén)以個(gè)人計算機為系統主機。雨量監測系統結構如圖1所示。
從圖1中看出系統主機直接與單片機建立通信聯(lián)系。由于各站點(diǎn)遠離系統主機,在不附加外部連線(xiàn)等硬件設施基礎上,利用單片機加MODEM方式以及電話(huà)線(xiàn)實(shí)現單片機遠程。系統主機可對各站部的單片機雨量監測儀進(jìn)行各種設置及數據采集,單片機雨量監測儀根據雨量情況也可自動(dòng)向系統主機發(fā)送當前雨量數據,這樣就可做到及時(shí)提供現場(chǎng)的雨量情況。
二、單片機雨量監測儀及其遠程通信
各站點(diǎn)的雨量監測儀以8051系列單片機為CPU,輔以定制的液晶顯示器、SRAM、熱敏式繪圖儀、雨量傳感器等,其原理框圖如圖2所示。圖中W87E58是MCU,它兼容MCS-51單片機并具有32KB片內EEPROM。
單片機遠程通信由ST16C450連接MODEM實(shí)現。ST16C450是一種通用異步接收發(fā)送器,內部有10個(gè)寄存器,其中有MODEM控制寄存器和MODEM狀態(tài)寄存器。MCU通過(guò)這2個(gè)寄存器的操作實(shí)現對MODEM的控制并了解MODEM的工作狀態(tài),從而順利進(jìn)行數據通信。ST16C450進(jìn)行通信前首先要對其進(jìn)行初始化,即設置波特率、通信數據格式、是否使用中斷等。ST16C450初始化后可采用程序查詢(xún)或中斷方式進(jìn)行通信。
MODEM的使用主要有以下4個(gè)操作:
①初始化MODEM;
②撥號;
③應答到來(lái)的呼叫;
④掛斷線(xiàn)路,使MODEM回到AT命令狀態(tài)。
MODEM的控制由Hayes AT命令集完成,程序可直接發(fā)送(以AT字符開(kāi)始再加命令和參)數給MODEM。但是,AT命令無(wú)法完成系統間的文件傳送,發(fā)送或接收文件必須由通信軟件按預先規定的通信協(xié)議完成。
MODEM初始化命令串"ATFS0=3","F"重置MODEM,"S0=3"表示應答鈴響3次。雨量監測儀MODEM初始化子程序如下:
MSTR:MOV R4,#0
MST0:MOV DPTR,#P3FE ;MODEM狀態(tài)寄存器地址
MST1:MOVX A,@DPTR
ANL A,#30H
CJNE A,#30H,MST1
MOV DPTR,#P3FD ;通信線(xiàn)狀態(tài)寄存器
MST2:MOVX A,@DPTR
JNB ACC.5,MST2
MOV DPTR,#MTAB
MOV A,R4
MOVC A,@A+DPTR
JZ MST3
MOV DPTR,#P3F3 ;數據發(fā)送保持寄存器
MOVX @DPTR,A
INC R4
SJMP MST0
MST3:RET
MTAB:DB 41H,54H,26H,53H,30H,3DH,33H
DB 0DH,0 ;ATFS0=3
子程序執行后MODEM應答"OK",表示初始化完成。
MODEM撥號命令串"ATDTxxxxx",xxxxx是電話(huà)號碼;撥號成功時(shí)MODEM將應答以"CONNECT"字符開(kāi)始的字符串。單睡機與系統主機連接完成后,按通信協(xié)議所規定的數據串通信交換數據。數據通信結束后,程序發(fā)送掛斷線(xiàn)路命令串"+++ATH0",MODEM自動(dòng)斷線(xiàn),從而完成1次通信。
三、系統主機與雨量監測儀的通信
系統主機軟件用VB5.0編制,運行于Windows 95環(huán)境。整個(gè)軟件由通信、日報表、月報表、年報表、設定、曲線(xiàn)圖、報警等模塊組成,操作平臺如圖3所示。主機可與30個(gè)站點(diǎn)的雨量監測儀連接。
程序中使用MSComm控件,通過(guò)向連接在串行口上的MODEM發(fā)送AT命令來(lái)控制。主機通信狀況分為2類(lèi):主動(dòng)通信和被動(dòng)通信。下面分別加以介紹。
1.主動(dòng)通信
主機向站點(diǎn)雨量監測儀傳送報警設定值及收集當天或前天的雨量數據時(shí)稱(chēng)為主動(dòng)通信。電話(huà)圖標表示各站點(diǎn)的雨量監測儀,一旦被選中,程序就發(fā)出"ATDTxxxxx"撥號命令,雨量監測儀MDOEM處于自動(dòng)應答方式被連接。MODEM連接成功后,主機會(huì )收到"CONNECT 4800"信息,此時(shí),主機就可以向站點(diǎn)發(fā)送命令和數據串。如果站點(diǎn)接收到正確數據,根據命令代碼(由通信協(xié)議規定)就可知道主機是要設定參數還是要收集當天或前天的雨量數據。若是收集雨量數據,站點(diǎn)雨量監測儀將雨量數據傳送給主機;主機收到站點(diǎn)正確的雨量數據后,向MODEM發(fā)送"+++ATH0"離線(xiàn)掛機命令,結束本次通信。
主站發(fā)送的數據串里包括站點(diǎn)號、通信代碼、當前日期和時(shí)間、警戒值及校驗和等信息。用@K和@J作為開(kāi)始和結束標志。
下面是主動(dòng)通信的主要源程序:
Private Sub 主動(dòng)通信(發(fā)送代碼)
Dim i,j,ss,FsStr,ret
設置充許通信False
For i=0 T0 29 '工區數
If工區選中(i)Then
顯示信息"撥號到"+工區名(i)+"..."
FsStr="ATDT"+電話(huà)號碼(i)+vbCr
'撥號的AT命令
ret=發(fā)送AT命令(FsStr,"CONNECT",60000)
'發(fā)送撥號命令,限時(shí)60s
If ret="正常"Then
FsStr=Format(i,"00")+發(fā)送代碼
'發(fā)送字符串組合
FsStr=FsStr+Format(Now,"yymmddhhmmss")
FsStr=FsStr+設定值
FsStr=FsStr+計算累加和(FsStr)
FsStr="@K"+FsStr+"@J"
ret=發(fā)送AT命令(FsStr,"@J",5000)
'發(fā)送數據,等待接收串結束符@J
If InStr(接收串,"@KCUO@J")Then
'收到下位機的返回是"錯"
顯示"返回有錯."信息處理
Else
處理接收串 '下位機接收正確
End If
顯示"掛機..."信息處理
ret=發(fā)送AT命令("+++","OK",3000)
'掛機,等待OK,限時(shí)3S
ret=發(fā)送AT命令("ATH0"+vbCrLf,"OK",3000)
End If
End If
Next i
End Sub
2.被動(dòng)通信
當站點(diǎn)監測到雨量超過(guò)警戒值時(shí),就主動(dòng)撥號給主機,對主機而言就是被動(dòng)通信。平時(shí)主機MODEM也處于自動(dòng)應答狀態(tài),隨時(shí)可以接收站點(diǎn)呼叫。主機程序接收到正確數據串后,將數據記錄到相應文件中保存,點(diǎn)亮操作平臺上該站點(diǎn)的報警指示燈提醒用戶(hù),同時(shí)向站點(diǎn)發(fā)送"接收正確"的信息。站點(diǎn)收到主機正確信息后向MODEM發(fā)送"+++ATH0"離線(xiàn)掛機命令,結束本次通信。站點(diǎn)發(fā)來(lái)的數據串里包括站點(diǎn)號、通信代碼、各種雨量數據、報警數據及校驗和等信息。用@K和@J作為開(kāi)始和結束標志。
被動(dòng)通信部分的主要源程序如下:
Private Sub MSComm1_OnComm()
Dim strSh,Shc
Shc=MSComm1.InBufferCount '取接收字符個(gè)數
If Shc>0 Then
strSh=MSComm1,Input '取本次接收串
接收串=接收串+strSh
If InStr(接收串,"RING")Then '若是電話(huà)鈴響
顯示"接收數據..."信息算是 '顯示接收數據信息
接收串=""
End If
If InStr(接收串,"@J")Then '收到接收串結束答@J
處理接收串 '處理接收串
End If
End If
End Sub
結束語(yǔ)
本系統已成功應用于鐵路部門(mén)。它具有實(shí)時(shí)性好、信息傳送距離遠、可靠性高、電路簡(jiǎn)單、投資少等優(yōu)點(diǎn)。它可推廣用于其他需要信息采集及遠程通信的部門(mén),如氣象部門(mén)溫度和風(fēng)速收集、水文部門(mén)水位和雨量監測;電力部門(mén)電網(wǎng)監測等。
評論