1. 引言
在我室研制的某型測(cè)控系統(tǒng)中,遇到一彈丸狀物體的初速測(cè)量要求,速度范圍在0~150m/s,要求測(cè)速模塊實(shí)現(xiàn)成本低、可靠性高,測(cè)速數(shù)據(jù)送上位機(jī)顯示。
目前科研生產(chǎn)中采用的速度測(cè)量方法可分為兩類;直接測(cè)量法和間接測(cè)量法兩大類。直接測(cè)量法是通過某種測(cè)量原理或效應(yīng)直接獲得速度量, 如多普勒測(cè)速儀、空間濾波測(cè)速等。這種方法的最大優(yōu)點(diǎn)是反應(yīng)快、可測(cè)量瞬時(shí)速度,但設(shè)備成本高,且受到大氣物理環(huán)境的限制。間接測(cè)量法是測(cè)量目標(biāo)的移動(dòng)距離和時(shí)間, 通過計(jì)算得到速度量, 如光電測(cè)速、光柵測(cè)速、磁柵測(cè)速和圖像測(cè)速等,用于測(cè)量小型彈丸的天幕法和光幕法測(cè)速系統(tǒng)、用于車輛測(cè)速的激光測(cè)速儀,以及用于生產(chǎn)流水線上的光電脈沖測(cè)速方法等等。
根據(jù)本系統(tǒng)的特點(diǎn),我室采用了基于光電脈沖的間接測(cè)量方法,構(gòu)建了基于AT89C51單片機(jī)測(cè)速系統(tǒng),并采用DDE技術(shù)、VB和組態(tài)王實(shí)現(xiàn)速度信息的上位機(jī)顯示,滿足了成本低、可靠性好的測(cè)速要求;此外本文提出的單片機(jī)與上位機(jī)數(shù)據(jù)通信方法為多種工控軟件和非通用性設(shè)備的數(shù)據(jù)交換問題提供了思路。
2. 單片機(jī)測(cè)速模塊的實(shí)現(xiàn)
a) 測(cè)速原理
在本系統(tǒng)中,兩對(duì)光電對(duì)射管布置在彈丸的通過路徑上,光電對(duì)射管間距為S,當(dāng)彈丸經(jīng)過遮蔽光電管1,2時(shí),光電管1,2產(chǎn)生一個(gè)上升沿或下降沿,以光電管1的上升沿或下降沿作為單片機(jī)計(jì)數(shù)器的啟動(dòng)脈沖,啟動(dòng)計(jì)數(shù)器開始記時(shí),光電管2的上升沿或下降沿作為單片機(jī)計(jì)數(shù)器的停止脈沖,計(jì)數(shù)器停止記時(shí)。此時(shí),得到計(jì)數(shù)器的記時(shí)值n。將值n傳送至上位機(jī),已知單片機(jī)的機(jī)器周期為T,則,可在上位機(jī)內(nèi)計(jì)算出彈丸在定距s內(nèi)的平均速度V,為V=S/nT。見如下圖1。
b) 測(cè)速部分硬件實(shí)現(xiàn)
如下圖2硬件原理示意圖,光電對(duì)射管Q1和Q2分別接入AT89C51的外部中斷0和1引腳相聯(lián),Q1和Q2均為遮斷式對(duì)射管(無遮斷時(shí)導(dǎo)通,遮斷時(shí)截止)。INT0和INT1均設(shè)置為下降沿觸發(fā)。在INT0中斷處理程序中,啟動(dòng)AT89C51內(nèi)計(jì)數(shù)器T0開始計(jì)數(shù),在INT1中斷處理程序中,計(jì)數(shù)器T0停止計(jì)數(shù)。計(jì)數(shù)值暫存于單片機(jī)寄存器內(nèi)。當(dāng)單片機(jī)接收到上位機(jī)發(fā)出的取數(shù)指令時(shí),單片機(jī)通過串口將寄存器內(nèi)計(jì)數(shù)值發(fā)送至上位機(jī)進(jìn)行處理。
3. 單片機(jī)與上位機(jī)通信
本例上位機(jī)控制程序采用組態(tài)王組態(tài)軟件(Kingview 6.5版)編寫,但其為數(shù)據(jù)采集和控制提供的底層硬件設(shè)備的驅(qū)動(dòng)僅是針對(duì)知名廠商的板卡和模塊。因此,針對(duì)自行開發(fā)的數(shù)據(jù)采集模塊,需要編寫組態(tài)王與單片機(jī)串口通信驅(qū)動(dòng)程序。在本例中,應(yīng)用DDE方式實(shí)現(xiàn)組態(tài)王和VB進(jìn)行數(shù)據(jù)交換,通過編寫串口通信程序?qū)崿F(xiàn)VB和單片機(jī)的通信,完成整個(gè)通信流程。
a) 系統(tǒng)數(shù)據(jù)流程
動(dòng)態(tài)數(shù)據(jù)交換(dynamic data exchange ,簡(jiǎn)稱DDE),它是Windows 提供的一種基于消息的進(jìn)程間通信技術(shù)協(xié)議[2]。其實(shí)質(zhì)是在兩個(gè)應(yīng)用程序之間建立一個(gè)數(shù)據(jù)通道(channel),通過特定的會(huì)話過程,由windows作中介,實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。DDE應(yīng)用程序以對(duì)話(conversations)的方式實(shí)現(xiàn)數(shù)據(jù)共享,會(huì)話采用客戶/ 服務(wù)器模式,啟動(dòng)會(huì)話并要求接收數(shù)據(jù)的進(jìn)程是客戶進(jìn)程(client),而響應(yīng)客戶請(qǐng)求提供數(shù)據(jù)的進(jìn)程是服務(wù)器進(jìn)程( server)。組態(tài)王采用DDE方式和VB進(jìn)行數(shù)據(jù)交換,同時(shí)通過編寫串口通信程序?qū)崿F(xiàn)VB和單片機(jī)的通信。整個(gè)系統(tǒng)的數(shù)據(jù)交換流程如圖3所示。