當(dāng)前位置:首頁(yè) > 測(cè)試測(cè)量 > 測(cè)試測(cè)量
[導(dǎo)讀]介紹一種基于單片機(jī)中低速物體速度測(cè)量方法,并介紹了基于DDE利用VB和組態(tài)王實(shí)現(xiàn)的上位機(jī)與單片機(jī)的串口通訊方式。

1. 引言
 在我室研制的某型測(cè)控系統(tǒng)中,遇到一彈丸狀物體的初速測(cè)量要求,速度范圍在0~150m/s,要求測(cè)速模塊實(shí)現(xiàn)成本低、可靠性高,測(cè)速數(shù)據(jù)送上位機(jī)顯示。
目前科研生產(chǎn)中采用的速度測(cè)量方法可分為兩類(lèi);直接測(cè)量法和間接測(cè)量法兩大類(lèi)。直接測(cè)量法是通過(guò)某種測(cè)量原理或效應(yīng)直接獲得速度量, 如多普勒測(cè)速儀、空間濾波測(cè)速等。這種方法的最大優(yōu)點(diǎn)是反應(yīng)快、可測(cè)量瞬時(shí)速度,但設(shè)備成本高,且受到大氣物理環(huán)境的限制。間接測(cè)量法是測(cè)量目標(biāo)的移動(dòng)距離和時(shí)間, 通過(guò)計(jì)算得到速度量, 如光電測(cè)速、光柵測(cè)速、磁柵測(cè)速和圖像測(cè)速等,用于測(cè)量小型彈丸的天幕法和光幕法測(cè)速系統(tǒng)、用于車(chē)輛測(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ī)顯示,滿(mǎn)足了成本低、可靠性好的測(cè)速要求;此外本文提出的單片機(jī)與上位機(jī)數(shù)據(jù)通信方法為多種工控軟件和非通用性設(shè)備的數(shù)據(jù)交換問(wèn)題提供了思路。
2. 單片機(jī)測(cè)速模塊的實(shí)現(xiàn)
a) 測(cè)速原理
在本系統(tǒng)中,兩對(duì)光電對(duì)射管布置在彈丸的通過(guò)路徑上,光電對(duì)射管間距為S,當(dāng)彈丸經(jīng)過(guò)遮蔽光電管1,2時(shí),光電管1,2產(chǎn)生一個(gè)上升沿或下降沿,以光電管1的上升沿或下降沿作為單片機(jī)計(jì)數(shù)器的啟動(dòng)脈沖,啟動(dòng)計(jì)數(shù)器開(kāi)始記時(shí),光電管2的上升沿或下降沿作為單片機(jī)計(jì)數(shù)器的停止脈沖,計(jì)數(shù)器停止記時(shí)。此時(shí),得到計(jì)數(shù)器的記時(shí)值n。將值n傳送至上位機(jī),已知單片機(jī)的機(jī)器周期為T(mén),則,可在上位機(jī)內(nèi)計(jì)算出彈丸在定距s內(nèi)的平均速度V,為V=S/nT。見(jiàn)如下圖1。

500)this.style.width=500;" border="0" />

b) 測(cè)速部分硬件實(shí)現(xiàn)
如下圖2硬件原理示意圖,光電對(duì)射管Q1和Q2分別接入AT89C51的外部中斷0和1引腳相聯(lián),Q1和Q2均為遮斷式對(duì)射管(無(wú)遮斷時(shí)導(dǎo)通,遮斷時(shí)截止)。INT0和INT1均設(shè)置為下降沿觸發(fā)。在INT0中斷處理程序中,啟動(dòng)AT89C51內(nèi)計(jì)數(shù)器T0開(kāi)始計(jì)數(shù),在INT1中斷處理程序中,計(jì)數(shù)器T0停止計(jì)數(shù)。計(jì)數(shù)值暫存于單片機(jī)寄存器內(nèi)。當(dāng)單片機(jī)接收到上位機(jī)發(fā)出的取數(shù)指令時(shí),單片機(jī)通過(guò)串口將寄存器內(nèi)計(jì)數(shù)值發(fā)送至上位機(jī)進(jìn)行處理。
                     500)this.style.width=500;" border="0" />

3. 單片機(jī)與上位機(jī)通信
本例上位機(jī)控制程序采用組態(tài)王組態(tài)軟件(Kingview 6.5版)編寫(xiě),但其為數(shù)據(jù)采集和控制提供的底層硬件設(shè)備的驅(qū)動(dòng)僅是針對(duì)知名廠商的板卡和模塊。因此,針對(duì)自行開(kāi)發(fā)的數(shù)據(jù)采集模塊,需要編寫(xiě)組態(tài)王與單片機(jī)串口通信驅(qū)動(dòng)程序。在本例中,應(yīng)用DDE方式實(shí)現(xiàn)組態(tài)王和VB進(jìn)行數(shù)據(jù)交換,通過(guò)編寫(xiě)串口通信程序?qū)崿F(xiàn)VB和單片機(jī)的通信,完成整個(gè)通信流程。
a) 系統(tǒng)數(shù)據(jù)流程
動(dòng)態(tài)數(shù)據(jù)交換(dynamic data exchange ,簡(jiǎn)稱(chēng)DDE),它是Windows 提供的一種基于消息的進(jìn)程間通信技術(shù)協(xié)議[2]。其實(shí)質(zhì)是在兩個(gè)應(yīng)用程序之間建立一個(gè)數(shù)據(jù)通道(channel),通過(guò)特定的會(huì)話過(guò)程,由windows作中介,實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。DDE應(yīng)用程序以對(duì)話(conversations)的方式實(shí)現(xiàn)數(shù)據(jù)共享,會(huì)話采用客戶(hù)/ 服務(wù)器模式,啟動(dòng)會(huì)話并要求接收數(shù)據(jù)的進(jìn)程是客戶(hù)進(jìn)程(client),而響應(yīng)客戶(hù)請(qǐng)求提供數(shù)據(jù)的進(jìn)程是服務(wù)器進(jìn)程( server)。組態(tài)王采用DDE方式和VB進(jìn)行數(shù)據(jù)交換,同時(shí)通過(guò)編寫(xiě)串口通信程序?qū)崿F(xiàn)VB和單片機(jī)的通信。整個(gè)系統(tǒng)的數(shù)據(jù)交換流程如圖3所示。
500)this.style.width=500;" border="0" />


b) 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)分為兩個(gè)部分:VB與組態(tài)王的數(shù)據(jù)交換以及單片機(jī)與VB的數(shù)據(jù)交換。
i. VB與組態(tài)王通過(guò)DDE鏈接的數(shù)據(jù)交換
DDE對(duì)話的內(nèi)容是通過(guò)應(yīng)用程序名(application)、主題( topic)和項(xiàng)目(item) 3 個(gè)標(biāo)示名來(lái)約定的。其中,應(yīng)用程序名是進(jìn)行DDE對(duì)話的雙方的名稱(chēng),組態(tài)王運(yùn)行系統(tǒng)的程序名是“VIEW”,VB程序使用的是可執(zhí)行文件的名稱(chēng)。主題是指被討論的數(shù)據(jù)域(domain)。對(duì)于組態(tài)王來(lái)說(shuō),主題規(guī)定為“tagname”,VB程序的主題由窗體的LinkTopic屬性值指定。項(xiàng)目是指被討論的特定數(shù)據(jù)對(duì)象,在組態(tài)王的數(shù)據(jù)辭典中定義I/O變量的同時(shí),也定義項(xiàng)目名稱(chēng)。對(duì)VB程序而言,項(xiàng)目是具有文本屬性控件的名稱(chēng)[3]。
VB作為客戶(hù)端程序從組態(tài)王中得到數(shù)據(jù)時(shí),首先需要在組態(tài)王中定義DDE設(shè)備,然后在組態(tài)王的數(shù)據(jù)庫(kù)(數(shù)據(jù)辭典)中按照預(yù)先需要通訊的變量點(diǎn)數(shù)和變量類(lèi)型建立I/O變量,定義變量的初始值、最大值、連接設(shè)備和項(xiàng)目名,還需要在VB中定義控件的屬性和方法。一般的設(shè)置如下:
Control.LinkTopic=服務(wù)器程序名|主題名
Control.LinkItem=項(xiàng)目名
Control.LinkMode=0,1,2,3 (其中0=關(guān)閉DDE,1=熱鏈接,2=冷鏈接,3=通告鏈接)
Control為VB應(yīng)用程序中特定的文本框、標(biāo)簽框或圖片框的名稱(chēng)。
VB作為服務(wù)器程序向組態(tài)王提供數(shù)據(jù)時(shí),首先要在組態(tài)王中設(shè)置服務(wù)器程序的3個(gè)標(biāo)志名,然后把VB 應(yīng)用程序中提供數(shù)據(jù)的窗體的LinkMode屬性設(shè)置為1。例如,將VB中的txt to Speed 文本框控件中的數(shù)據(jù)傳給組態(tài)王中的I/O變量Speed ,其實(shí)現(xiàn)方法如下:
在組態(tài)王中建立一個(gè)名為VBDDE的DDE設(shè)備,服務(wù)程序名為vbdde,話題名為FormTopic,數(shù)據(jù)交換方式為標(biāo)準(zhǔn)Windows DDE交換。新建一個(gè)I/O變量Speed,將其連接設(shè)備名定義為VBDDE,項(xiàng)目名設(shè)為txt to Speed。在VB中,將窗體VBDDE的LinkMode屬性設(shè)置為1(source),LinkTopic屬性設(shè)置為FormTopic,然后編譯為可執(zhí)行文件vbdde.exe,即可實(shí)現(xiàn)與組態(tài)王的通信。
ii. VB與單片機(jī)的數(shù)據(jù)交換
本例采用MSComm控件實(shí)現(xiàn)VB與單片機(jī)之間的數(shù)據(jù)交換,具有程序?qū)崿F(xiàn)簡(jiǎn)便、程序模塊化、工作可靠等優(yōu)點(diǎn),并能滿(mǎn)足多數(shù)情況下的工控要求。使用MSComm控件主要是通過(guò)事件來(lái)處理串行口的交互??丶腛nComm事件負(fù)責(zé)捕獲或處理這些通訊事件和通訊錯(cuò)誤。在實(shí)際應(yīng)用中,一個(gè)MSComm控件和一個(gè)串行口一一對(duì)應(yīng),所以如果要處理多個(gè)串行口的話,必須有相應(yīng)數(shù)量的控件與之對(duì)應(yīng)。
利用MSComm控件進(jìn)行串口通信的具體操作和具體的程序代碼已經(jīng)有很多論述,在這里強(qiáng)調(diào)兩點(diǎn):
1. 無(wú)論發(fā)送或者接收,都需要用一個(gè)Variant變量作中介;
2. 使用MSComm控件的Input及Output屬性來(lái)接收或者傳輸文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)的方法不同:如果發(fā)送一個(gè)ANSI字符串到串口,可以以文本數(shù)據(jù)的形式發(fā)送;當(dāng)要傳輸二進(jìn)制數(shù)據(jù)時(shí),由于Output屬性支持的變量類(lèi)型為Variant類(lèi)型,所以發(fā)送二進(jìn)制數(shù)據(jù)時(shí)必須傳遞一個(gè)包含字節(jié)數(shù)組的Variant到Output屬性。使用MSComm控件的Input屬性讀取數(shù)據(jù)時(shí),如果接收的數(shù)據(jù)類(lèi)型為文本數(shù)據(jù),Input屬性通過(guò)一個(gè)Variant返回文本數(shù)據(jù);如果接收的數(shù)據(jù)模式采用二進(jìn)制形式,用Input屬性讀取數(shù)據(jù)時(shí),不能直接賦值給Byte類(lèi)型變量,只能通過(guò)先賦值給一個(gè)Variant類(lèi)型變量,返回一個(gè)二進(jìn)制數(shù)據(jù)的數(shù)組,再轉(zhuǎn)換保存到Byte類(lèi)型數(shù)組變量中。
4. 結(jié)束語(yǔ)
本文論述的基于單片機(jī)的速度測(cè)量方法已在工程測(cè)控系統(tǒng)中得到了應(yīng)用,適用于中低速物體的測(cè)量,具有良好的使用效果,具有實(shí)現(xiàn)成本低、可靠性好、精度良好的優(yōu)點(diǎn)。此外,本文提出的單片機(jī)與上位機(jī)數(shù)據(jù)通信方法為多種工控軟件和非通用性設(shè)備的數(shù)據(jù)交換問(wèn)題提供了思路。還需注意的一點(diǎn)是:通過(guò)控件MSCOMM控件的input和out2put屬性可以很方便地接受和發(fā)送串口緩沖區(qū)的數(shù)據(jù),但要編制比較完善的通訊應(yīng)用程序,還需要進(jìn)行更深入的研究,比如通過(guò)使用“握手”的機(jī)制來(lái)增強(qiáng)通訊的安全性和穩(wěn)定性,另外通過(guò)數(shù)據(jù)的重復(fù)發(fā)送達(dá)到收發(fā)數(shù)據(jù)的準(zhǔn)確性等等.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉