




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 1 / 17 用VB開發(fā)多通道儀表數(shù)據(jù)采集程序 ( xxxx) 1前言 實(shí)時數(shù)據(jù)采集系統(tǒng)過去在DOS操作系統(tǒng)下一般是采用匯編語言開發(fā)制作。隨著Windows操作系統(tǒng)的普及應(yīng)用,數(shù)據(jù)采集及工業(yè)控制等軟件的開發(fā)也上升到Windows環(huán)境下??梢暬浖_發(fā)平臺的出現(xiàn),為軟件開發(fā)提供了強(qiáng)大的圖形界面功能,使得開發(fā)出來的各種應(yīng)用軟件具有良好的人機(jī)交互功能。匯編語言的特點(diǎn)是功能強(qiáng)、運(yùn)行速度快,但編程復(fù)雜、調(diào)試難,而高級語言具有良好的可讀性及方便的調(diào)試手段。 Visual Basic是Windows環(huán)境下簡單、易學(xué)、高效的可視化編程語言開發(fā)系統(tǒng),以其所見即所得的可視化界面設(shè)計風(fēng)格和32位面向?qū)ο蟮某绦蛟O(shè)計
2、等特點(diǎn),已廣泛地應(yīng)用于各個領(lǐng)域,是很多計算機(jī)軟件開發(fā)人員采用的開發(fā)工具。VB不但提供了良好的界面設(shè)計能力,而且在微機(jī)串口通信方面也有很強(qiáng)的功能。采用VB開發(fā)Winodws下的數(shù)據(jù)采集和工業(yè)控制應(yīng)用軟件十分方便,尤其軟件界面設(shè)計非常便捷,編程工作量較小,開發(fā)周期短,特別適合非計算機(jī)專業(yè)的工程技術(shù)人員掌握和使用。 2MSComm控件特點(diǎn) MSComm控件是Microsoft提供的擴(kuò)展控件,用于支持VB程序?qū)Υ诘脑L問,該控制“隱藏”了大部分串口通訊的底層運(yùn)行過程和許多煩瑣的處理過程,同時支持查詢方法和事件驅(qū)動通訊的機(jī)制,事件驅(qū)動通訊是交互方式處理串口事務(wù)的一種非常有效的方法,特別適合Windows
3、程序的編寫。在串口通訊過程中,當(dāng)發(fā)送數(shù)據(jù)、收到數(shù)據(jù)或產(chǎn)生傳輸錯誤時,觸發(fā)MSComm控件的OnComm事件,然后可以通過判斷CommEvent屬性值獲得事件類型,再根據(jù)事件類型進(jìn)行相應(yīng)數(shù)據(jù)處理。 因此用其實(shí)現(xiàn)微機(jī)串口的數(shù)據(jù)通訊相當(dāng)簡單,以很少的程序代碼就可以輕松實(shí)現(xiàn)串口的訪問和數(shù)據(jù)通訊。 2 / 17 3實(shí)時數(shù)據(jù)采集示例程序 下面給出的應(yīng)用實(shí)例,通過對一臺工業(yè)八通道實(shí)時檢測儀表數(shù)據(jù)通訊協(xié)議進(jìn)行分析,利用V B6.0開發(fā)微機(jī)通過串口對多通道工業(yè)儀表進(jìn)行實(shí)時數(shù)據(jù)采集的編程技術(shù)。給出的程序代碼具有通用性,并有詳示,可以直接或稍加改動后用于其它數(shù)據(jù)采集或?qū)崟r控制程序中。 31儀表及其數(shù)據(jù)通訊協(xié)議 這臺
4、工業(yè)用八通道實(shí)時檢測儀表,最多可同時接八路高精度位移傳感器,用于測量多點(diǎn)微小形變或微量位移,儀表測量精度為 0.01毫米,測量范圍最大值為50毫米。該儀表帶有一個9針的RS232C串口,能與微機(jī)進(jìn)行串口數(shù)據(jù)通訊,實(shí)時傳送檢測數(shù)據(jù),通過微機(jī)軟件處理可實(shí)現(xiàn)工業(yè)實(shí)時監(jiān)控。該儀表的串口數(shù)據(jù)通訊協(xié)議是: 數(shù)據(jù)傳輸速率為9600bps,1位開始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)位。儀表每秒通過串口發(fā)送200個字節(jié)數(shù)據(jù),由于接入的位移傳感器數(shù)量在18路可調(diào),所以發(fā)送的每幀數(shù)據(jù)長度不定長,隨傳感器數(shù)量多少而變化。儀表數(shù)據(jù)傳輸首先發(fā)送每幀數(shù)據(jù)的開始標(biāo)志字節(jié),該字節(jié)定義為二進(jìn)制常數(shù)0FAH;然后發(fā)送1個字節(jié)的
5、通道狀態(tài)字節(jié),該字節(jié)按位順序每位代表相應(yīng)的一路通道狀態(tài),某位是1則代表該通道接有位移傳感器,某位是0則代表該通道未接位移傳感器;從第三個字節(jié)開始按位移傳感器接通的通道順序發(fā)送采集數(shù)據(jù)字節(jié),每道數(shù)據(jù)有三個字節(jié),前2個數(shù)據(jù)字節(jié)采用壓縮的BCD碼編碼方式,第1個數(shù)據(jù)字節(jié)是高位,第2個數(shù)據(jù)字節(jié)是低位,即一個字節(jié)表示兩位十進(jìn)制數(shù),則兩個字節(jié)表示四位十進(jìn)制數(shù),小數(shù)點(diǎn)采用固定形式,定義在兩字節(jié)中間;第3個數(shù)據(jù)字節(jié)為符號字節(jié),該字節(jié)第八位為1,即1xxxx則為負(fù)數(shù),第八位為0,即0xxxx則為正數(shù)。 例如發(fā)送的字節(jié)數(shù)據(jù)為:0FAH 0B1H 26H 87H 8H 34H 62H 00H 37H 76H 0H
6、42H 53H 80H0FAH為幀開始標(biāo)志字節(jié),第一道,第五道,第六道,第八道接有位移傳感器,表示 3 / 17 26.87 34.62 37.76 42.53。 32部分參數(shù)的技術(shù)分析 321儀表通訊傳輸速率為9600bps,則最快速度為 1.0417ms發(fā)送一個字節(jié);儀表每秒發(fā)送200個字節(jié),平均 5.0ms發(fā)送一個字節(jié),在查詢方式或連續(xù)讀取串口數(shù)據(jù)時要在程序中添加循環(huán)等待程序,等待接收緩沖區(qū)收到足夠的字節(jié)才能進(jìn)行數(shù)據(jù)處理。 322儀表發(fā)送每幀數(shù)據(jù)長度不定長,為了實(shí)現(xiàn)實(shí)時監(jiān)測功能,接收數(shù)據(jù)的讀取要盡可能的快速,則在程序開始運(yùn)行時設(shè)置MSComm1的屬性 RThreshold = 26接收緩
7、沖區(qū)收到26個字節(jié)產(chǎn)生OnComm事件 InputLen = 1 Input每次讀取一個字節(jié) 等到程序接收到一幀完整數(shù)據(jù)后,計算出當(dāng)前幀數(shù)據(jù)長度,再將Rthreshold屬性修改為幀長度,則接收緩沖區(qū)在收到一幀數(shù)據(jù)后,MSComm控件才會觸發(fā)一個OnComm事件,這樣就會有更多的時間進(jìn)行數(shù)據(jù)的計算和處理。 323儀表每秒發(fā)送200個字節(jié)數(shù)據(jù),微機(jī)收到一完整幀數(shù)據(jù)至少需要t(ms)時間(只接一道傳感器t=25ms;接八道傳感器t=130ms),然后再進(jìn)行數(shù)據(jù)處理。如果微機(jī)在下一幀數(shù)據(jù)接收前即t ms內(nèi)能將數(shù)據(jù)計算處理完畢,則接收緩沖區(qū)內(nèi)只會保存有一幀數(shù)據(jù),不會存有兩幀以上數(shù)據(jù),接收緩沖區(qū)的大小不
8、會影響實(shí)時監(jiān)測效果(接收緩沖區(qū)>=一完整幀長度),這時完全可以實(shí)現(xiàn)實(shí)時監(jiān)測或?qū)崟r控制;如果微機(jī)在t ms內(nèi)不能將數(shù)據(jù)計算處理完畢,接收緩沖區(qū)設(shè)置的又很大,在數(shù)據(jù)計算處理完畢前,接收緩沖區(qū)內(nèi)就會保存有兩幀以上數(shù)據(jù),而且一次工作時間越長,緩沖區(qū)內(nèi)滯留數(shù)據(jù)幀就越多,數(shù)據(jù)采集和數(shù)據(jù)處理之間產(chǎn)生逐漸增大的額外時間差,當(dāng)接收緩沖區(qū)充滿后,時間差不再增大, 4 / 17 固定在某一值,部分?jǐn)?shù)據(jù)因不能及時采集到接收緩沖區(qū)中,數(shù)據(jù)產(chǎn)生丟失現(xiàn)象,真實(shí)工作情況就會和微機(jī)處理結(jié)果產(chǎn)生較大的時間差,對實(shí)時監(jiān)測和實(shí)時控制很不利,這種情況下接收緩沖區(qū)的大小就會影響實(shí)時監(jiān)測效果,所以接收緩沖區(qū)設(shè)置不能過大,讓部分?jǐn)?shù)據(jù)丟
9、失,以保證數(shù)據(jù)處理的實(shí)時性。 324設(shè)置MSComm控件的接收數(shù)據(jù)模式采用二進(jìn)制方式,即 325VB中有Byte類型變量,但沒有字節(jié)的位處理語句。通道狀態(tài)字節(jié)的位處理要通過對該字節(jié)的值運(yùn)算進(jìn)行判斷,符號字節(jié)的位處理則要判斷符號字節(jié)的值是否大于127,大于127則為負(fù)數(shù);壓縮的BCD碼存入Byte類型變量,VB系統(tǒng)只按十進(jìn)制數(shù)處理,這要通過一個簡單算法換算,解壓BCD碼才能還原成十進(jìn)制表示數(shù)值。假如a是Byte類型變量,是Single類型變量,將一個壓縮的BCD碼存入a中,則算法是: =(a16)*10 + a-(a16)*16 則=a-(a16)*6 33程序代碼 在(通用)(聲明)中定義程序
10、所用變量: Dim ab (4) As Byte注釋: 字節(jié)數(shù)據(jù)類型數(shù)組,用來存貯接收到的一組字節(jié)數(shù)據(jù)Dim av As Variant注釋: 用來從接收緩沖區(qū)讀取數(shù)據(jù) Dim i As Integer Dim j As Integer Dim w As Integer注釋: 5 / 17 接收數(shù)據(jù)個數(shù)計數(shù)器 Dim b1 As Single Dim b2 As Single Dim WW As Single注釋: 十進(jìn)制檢測值 Dim TD (8) as Boolean注釋: 通道狀態(tài)數(shù)組 Dim Wmax (8) As Single注釋: 最大值數(shù)組 Dim Wmin (8) As Sin
11、gle注釋: 最小值數(shù)組 在窗體中添加名為Command1的開始按鈕和名為MSComm1的MSComm控件。 開始按鈕的Click事件處理程序主要是對MSComm1控制的參數(shù)初始化設(shè)置,程序中大部分參數(shù)在設(shè)計時可在MSComm1控制的屬性窗口中設(shè)置: Private Sub Command1_Click()注釋: 開始按鈕 With MSComm1 .CommPort=2注釋: 6 / 17 使用COM2 .Setting=9600,N,8,1注釋: 設(shè)置通信口參數(shù) .InBufferSize=40注釋: 設(shè)置MSComm1接收緩沖區(qū)為40字節(jié) .OutBufferSize=2注釋: 設(shè)置MS
12、Comm1發(fā)送緩沖區(qū)為2字節(jié) 設(shè)置接收數(shù)據(jù)模式為二進(jìn)制形式.InputLen = 1注釋: 設(shè)置Input一次從接收緩沖讀取字節(jié)數(shù)為 1.SThreshold = 1注釋: 設(shè)置Output一次從發(fā)送緩沖讀取字節(jié)數(shù)為1 .InBufferCount = 0注釋: 清除接收緩沖區(qū) .OutBufferCount = 0注釋: 清除發(fā)送緩沖區(qū) For i=1 to 8 Wmax(i) = -99注釋: 最大值賦初值 Wmin(i) = 99注釋: 最小值賦初值 Next i 7 / 17 w = 0注釋: 數(shù)據(jù)個數(shù)計數(shù)器清零 .RThreshold = 1注釋: 設(shè)置接收一個字節(jié)產(chǎn)生OnComm事
13、件 On Error Resume Next注釋: 改變錯誤處理的方式。 Err.Clear If .PortOpen = False Then注釋: 判斷通信口是否打開 .PortOpen = True注釋: 打開通信口 If Err Then注釋: 錯誤處理 MsgBox 串口通信無效 Exit Sub End If End If End With End Sub 為了達(dá)到實(shí)時數(shù)據(jù)采集目的,實(shí)時數(shù)據(jù)采集處理程序采用MSComm事件驅(qū)動方式。 8 / 17 Private Sub MSComm1_OnComm() With MSComm1 Select Case .CommEvent注釋:
14、判斷MSComm1通訊事件 收到Rthreshold個字節(jié)產(chǎn)生的接收事件 av = .Input注釋: 讀取一個接收字節(jié) ab (1) = av (0)注釋: 轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組 If ab (1) = 170 Then注釋: 判斷是否為數(shù)據(jù)開始標(biāo)志,0FAH=170 .RThreshold = 0注釋: 關(guān)閉OnComm事件接收 W=W+1注釋: 計數(shù)器加1 av = .Input注釋: 讀取通道狀態(tài)字節(jié) ab 9 / 17 (0) = av (0)注釋: 轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù) For i = 1 To 8注釋: 通道狀態(tài)數(shù)組復(fù)位 TD(i) = False Next i 幀長度
15、賦初值,一個開始字,一個狀態(tài)字If ab (0) >= 128 Then注釋: 判斷第八通狀態(tài) TD (8) = True ab (0) = ab (0) - 128 End If If ab (0) >= 64 Then TD (7) = True ab 10 / 17 (0) = ab (0) - 64 End If If ab (0) >= 32 Then TD (6) = True ab (0) = ab (0) - 32 End If If ab (0) >= 16 Then TD (5) = True ab (0) = ab (0) - 16注釋: 第八道是
16、真 注釋: 第7位置零 11 / 17 注釋: 幀xx加3個字節(jié) 注釋: 判斷第七通狀態(tài) 注釋: 第七道是真 注釋: 第6位置零 注釋: 幀xx加3個字節(jié) 注釋: 判斷第六通狀態(tài) 注釋: 第六道是真 注釋: 第5位置零 注釋: 幀xx加3個字節(jié) 注釋: 判斷第五通狀態(tài) 注釋: 12 / 17 第五道是真 注釋: 第4位置零 幀xx加3個字節(jié) End If If ab (0) >= 8 Then注釋: 判斷第四通狀態(tài) TD (4) = True注釋: 第四道是真 ab (0) = ab (0) - 8注釋: 第3位置零 End If If ab (0) >= 4 Then TD (3
17、) = True ab 13 / 17 (0) = ab (0) - 4 End If If ab (0) >= 2 Then TD (2) = True ab (0) = ab (0) - 2 End If If ab (0) >= 1 Then TD (1) = True End If For i = 1 To 8注釋: 注釋: 幀xx加3個字節(jié) 注釋: 判斷第三通狀態(tài) 14 / 17 注釋: 第三道是真 注釋: 第2位置零 注釋: 幀xx加3個字節(jié) 注釋: 判斷第二通狀態(tài) 注釋: 第二道是真 注釋: 第0位置零 注釋: 幀xx加3個字節(jié) 注釋: 判斷第一通狀態(tài) 注釋: 第一道
18、是真 注釋: 幀xx加3個字節(jié) If TD(i) = True Then 15 / 17 av = .Input注釋: 讀取第一個數(shù)據(jù)字節(jié)(BCD碼高位字節(jié)) ab (2) = av (0)注釋: 轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組 av = .Input注釋: 讀取第二個數(shù)據(jù)字節(jié)(BCD碼低位字節(jié)) ab (3) = av (0)注釋: 轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組 av = .Input注釋: 讀取第三個接收字節(jié)(符號位字節(jié)) ab (4) = av (0)注釋: 轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組 b1 = ab (2) - 6 * (ab (2) 16)注釋: 16 / 17 高位字節(jié)壓縮BCD碼轉(zhuǎn)換為實(shí)數(shù)b2 = ab (3) - 6 * (ab (3) 16)注釋: 低位字節(jié)壓縮BCD碼轉(zhuǎn)換為實(shí)數(shù)注釋: 數(shù)值組合,標(biāo)定小數(shù)點(diǎn) If ab (4) > 127 Then WW = -WW注釋: 判斷數(shù)據(jù)符號位 Label1(i-1) = Format(WW, 0.00)注釋: 顯示毫米單位數(shù)值,2位小數(shù)If WW>Wmax(i) And WW<51 Then注釋: 判斷最大值,儀表在剛開始工作時有干擾,會傳導(dǎo)一些亂碼,位移傳感器有參數(shù)偏差,最大值一般都略大于50毫米,所以取
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Starter Unit 1 Section B 1a-1e 教學(xué)設(shè)計 2024-2025學(xué)年人教版英語七年級上冊
- Unit 2 What time is it Part A Let's learn(教學(xué)設(shè)計)-2023-2024學(xué)年人教PEP版英語四年級下冊
- 常州幼兒師范高等??茖W(xué)?!夺t(yī)學(xué)遺傳學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- Unit 6 My week Lesson 2 Activities in a week(教學(xué)設(shè)計)-2024-2025學(xué)年人教新起點(diǎn)版英語二年級下冊
- 滄州2025年河北滄州市人民醫(yī)院第一批招聘119人筆試歷年參考題庫附帶答案詳解
- ★試題:決策過程及其思維特點(diǎn)、科學(xué)決策與科學(xué)思維的關(guān)系
- 《第九課 比比誰打字快:中文整句輸入》教學(xué)設(shè)計-2023-2024學(xué)年新世紀(jì)版(2023)三年級上冊
- 合租廚房合同范本
- Unit 3 Amazing animals (教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- Module6 Unit 2 There is a small monster (教學(xué)設(shè)計)-2023-2024學(xué)年外研版(一起)英語三年級下冊
- 中班美工區(qū)角活動教案10篇
- 304不銹鋼管材質(zhì)證明書
- DBJ 46-027-2013 海南省建筑塔式起重機(jī)安裝使用安全評定規(guī)程
- SJG 103-2021 無障礙設(shè)計標(biāo)準(zhǔn)-高清現(xiàn)行
- 皇冠假日酒店智能化系統(tǒng)安裝工程施工合同范本
- 港口集裝箱物流系統(tǒng)建模與仿真技術(shù)研究-教學(xué)平臺課件
- 合肥市城市大腦·數(shù)字底座白皮書2020
- 杭州灣跨海大橋項(xiàng)目案例ppt課件
- (完整版)光榮榜25張模板
- 工業(yè)催化劑作用原理—金屬氧化物催化劑
- 優(yōu)秀教材推薦意見(真實(shí)的專家意見)
評論
0/150
提交評論