




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用 VB 進(jìn)行串口實(shí)時(shí)數(shù)據(jù)采集長沙交通學(xué)院信息與計(jì)算科學(xué)系(410077)李湘江- -本文介紹 VB6.0 利用 MSComm 信控件,開發(fā)微機(jī)通過串口對工業(yè)儀表進(jìn)行實(shí)時(shí)數(shù)據(jù)采集的編程技術(shù)。給出的程序代碼具有通用性,并有詳細(xì)的注釋,可以直接或稍加改動(dòng)后用于其他數(shù)據(jù)采集或?qū)崟r(shí)控制程序中。- -一臺工業(yè)專用實(shí)時(shí)檢測儀表,接高精度位移傳感器,用于測量微小形變或微量位移,儀表測量精度為 0.01 毫米,測量范圍最大值為 50 毫米。該儀表帶有一個(gè) 9 針的 RS-232C 串口,能與微機(jī)進(jìn)行串口數(shù)據(jù)通信,實(shí)時(shí)傳送檢測數(shù)據(jù),通過微機(jī)軟件處理可實(shí)現(xiàn)工業(yè)實(shí)時(shí)監(jiān)控。- -該儀表的串口數(shù)據(jù)通信協(xié)議是:數(shù)據(jù)傳輸速
2、率為 9600bps,1 位開始位,8 位數(shù)據(jù)位,1 位停止位,無奇偶校驗(yàn)位。儀表每秒發(fā)送 50 幀檢測數(shù)據(jù),每幀數(shù)據(jù)由 4 個(gè)字節(jié)組成。第一個(gè)字節(jié)定義為二進(jìn)制常數(shù)0F0H,是每幀數(shù)據(jù)開始的標(biāo)志字節(jié);后面連續(xù) 2 個(gè)字節(jié)為數(shù)據(jù)字節(jié),采用壓縮的 BCD 碼編碼方式,高位在前,低位在后,即一個(gè)字節(jié)表示兩位十進(jìn)制數(shù),則兩個(gè)字節(jié)表示四位十進(jìn)制數(shù),小數(shù)點(diǎn)采用固定形式,定義在兩字節(jié)中間;第四個(gè)字節(jié)為符號字節(jié),該字節(jié)第八位為 1,即:1xxx!xxxx1j- -則為負(fù)數(shù);第八位為 0,即:- -則為正數(shù)。- -例如:0F0H26H87H80H0F0H34H62H00H 表示-26.8734.62。- -通信
3、傳輸速率為 9600bps,則最快速度 1.04ms 發(fā)送一個(gè)字節(jié),儀表每秒發(fā)送 50 幀數(shù)據(jù),每幀數(shù)據(jù)有4 個(gè)字節(jié),即每秒發(fā)送 200 個(gè)字節(jié),平均 5.0ms 發(fā)送一個(gè)字節(jié),連續(xù)讀取串口數(shù)據(jù)時(shí)要在程序中添加循環(huán)等待程序。-為了實(shí)現(xiàn)實(shí)時(shí)監(jiān)測功能,接收數(shù)據(jù)的讀取要盡可能的快速,則設(shè)置 MSComm1 屬性如下:RThreshold=1接收緩沖區(qū)收到一個(gè)字節(jié)產(chǎn)生OnComm|:件InputLen=1每次讀取一個(gè)字節(jié)-儀表每秒發(fā)送 50 幀數(shù)據(jù),微機(jī)收到一幀完整數(shù)據(jù)至少需要 20ms 時(shí)間,然后再進(jìn)行數(shù)據(jù)處理。如果微機(jī)在下一幀數(shù)據(jù)接收前即 20ms 內(nèi)能將數(shù)據(jù)計(jì)算處理完畢,則接收緩沖區(qū)內(nèi)只會(huì)保存有
4、一幀數(shù)據(jù),不會(huì)存有兩幀以上數(shù)據(jù),接收緩沖區(qū)的大小不會(huì)影響實(shí)時(shí)監(jiān)測效果(接收緩沖區(qū)4 字節(jié)),這時(shí)完全可以實(shí)現(xiàn)實(shí)時(shí)監(jiān)測或?qū)崟r(shí)控制;如果微機(jī)在 20ms 內(nèi)不能將數(shù)據(jù)計(jì)算處理完畢,接收緩沖區(qū)設(shè)置得又很大,在數(shù)據(jù)計(jì)算處理完畢前,接收緩沖區(qū)內(nèi)就會(huì)保存有兩幀以上數(shù)據(jù),而且一次工作時(shí)間越長,緩沖區(qū)內(nèi)滯留數(shù)據(jù)幀就越多,數(shù)據(jù)采集和數(shù)據(jù)處理之間產(chǎn)生逐漸增大的額外時(shí)間差,當(dāng)接收緩沖區(qū)充滿后,時(shí)間差不再增大,固定在某一值,部分?jǐn)?shù)據(jù)因不能及時(shí)采集到接收緩沖區(qū)中,數(shù)據(jù)產(chǎn)生丟失現(xiàn)象,真實(shí)工作情況就會(huì)和微機(jī)處理結(jié)果產(chǎn)生較大的時(shí)間差,對實(shí)時(shí)監(jiān)測和實(shí)時(shí)控制很不利,這種情況下接收緩沖區(qū)的大小就會(huì)影響實(shí)時(shí)監(jiān)測效果,所以接收緩沖區(qū)設(shè)
5、置不能過大,以保證數(shù)據(jù)處理的實(shí)時(shí)性。-設(shè)置接收數(shù)據(jù)模式采用二進(jìn)制形式,即 InputMode=comInputModeBinary,但用 Input 屬性讀取數(shù)據(jù)時(shí),不能直接賦值給 Byte 類型變量,只能通過先賦值給一個(gè) Variant 類型變量,返回一個(gè)二進(jìn)制數(shù)據(jù)的數(shù)組,再轉(zhuǎn)換保存到 Byte 類型數(shù)變量中。-VB 中有 Byte 類型變量,但沒有字節(jié)的位處理語句,符號字節(jié)的位處理要判斷符號字節(jié)的值是否大于 127,大于127 則為負(fù)數(shù);壓縮的 BCM 存入 Byte 類型變量,VB 系統(tǒng)只按十進(jìn)制數(shù)處理,這要通過一個(gè)簡單算法換算,解壓BCM 才能還原成十進(jìn)制表示數(shù)值。假如 a 是 Byt
6、e 類型變量,D 是 Single 類型變量,將一個(gè)壓縮的 BCD 碼存入 a 中,則算法是:D=(a16)*10+a(a16)*16則口=2(a16)*6程序清單:-在通用聲明中定義程序所用變量:Dimab(4)AsByte字節(jié)數(shù)據(jù)類型數(shù)組,用來存儲接收到的一組字節(jié)數(shù)據(jù)DimavAsVariant用來從接收緩沖區(qū)讀取數(shù)據(jù)DimiAsIntegerDimjAsIntegerDimwAsIntegerDimb1AsSingleDimb2AsSingleDimWWAsSingleDimMaxWAsSingleDimMinWAsSingle-在窗體中添加名為 Command 的 開始按鈕和名為 MS
7、Comm 的 MSCommE 件。-開始按鈕的 Click 事件處理程序主要是對 MSComm1 制的參數(shù)初始化設(shè)置,程序中大部分參數(shù)在設(shè)計(jì)時(shí)可在MSComm1 制的屬性窗口中設(shè)置:接收數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)器十進(jìn)制檢測值最大值最小值PrivateSubCommand1_Click()開始按鈕WithMSComml.InBufferSize=40設(shè)置MSComm接收緩沖區(qū)為40字節(jié).OutBufferSize=2設(shè)置MSComm發(fā)送緩沖區(qū)為2字節(jié).InputMode=comInputModeBinary設(shè)置接收數(shù)據(jù)模式為二進(jìn)制形式.InputLen=1設(shè)置Input一次從接收緩沖讀取字節(jié)數(shù)為1.SThr
8、eshold=1設(shè)置Output一次從發(fā)送緩沖讀取字節(jié)數(shù)為1.InBufferCount=0清除接收緩沖區(qū).OutBufferCount=0清除發(fā)送緩沖區(qū)MaxW=-99最大值賦初值MinW=99最小值賦初值數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)器清零.RThreshold=1設(shè)置接收一個(gè)字節(jié)產(chǎn)生OnComni件If.PortOpen=FalseThen判斷通信口是否打開.PortOpen=True打開通信口IfErrThen錯(cuò)誤處理MsgBox“串口通信無效”ExitSubEndIfEndIfEndWithEndSub-為了達(dá)到實(shí)時(shí)數(shù)據(jù)采集目的,實(shí)時(shí)數(shù)據(jù)采集處理程序采用 MSComm 件驅(qū)動(dòng)方式。-MSComm1_O
9、nCo 的編件處理程序只處理 comEvReceive 事件,首先判斷幀數(shù)據(jù)的開始字節(jié),關(guān)閉OnCommi 收事件,然后接收數(shù)據(jù)字節(jié),將壓縮 BCD行還原轉(zhuǎn)換,再接收符號字節(jié),判斷數(shù)據(jù)符號,判斷數(shù)據(jù)最大最小值,最后打開 OnCommi 收事件,等待下一次 OnComi件產(chǎn)生:PrivateSubMSComm1_OnComm()WithMSComm1SelectCase.CommEvent判斷MSComm通信事件CasecomEvReceive.CommPort=2.Setting=9600,N,8,1”使用COM2設(shè)置通信口參數(shù)收到Rthreshold個(gè)字節(jié)產(chǎn)生的接收事件av=.Input讀取
10、一個(gè)接收字節(jié)ab(1)=av(0)轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組Ifab(1)=&HF0Then判斷是否為數(shù)據(jù)開始標(biāo)志RThreshold=0關(guān)閉OnComri件接收DoDoEventsLoopUntil.InBufferCount=3循環(huán)等待MSComm接收緩沖區(qū)=3個(gè)字節(jié)w=w+1計(jì)數(shù)器累加計(jì)數(shù)av=.Input讀取第二個(gè)數(shù)據(jù)字節(jié)(BC酗高位字節(jié))ab(2)=av(0)轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組av=.Input讀取第三個(gè)數(shù)據(jù)字節(jié)(BC酗低位字節(jié))ab(3)=av(0)轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類型數(shù)組av=.Input讀取第四個(gè)數(shù)據(jù)字節(jié)(符號位字節(jié))ab(4)=av(0)轉(zhuǎn)換保存到字節(jié)數(shù)據(jù)類
11、型數(shù)組bl=ab(2)6*(ab(2)16)高位字節(jié)壓縮BC幽轉(zhuǎn)換為實(shí)數(shù)b2=ab(3)6*(ab(3)16)低位字節(jié)壓縮BC幽轉(zhuǎn)換為實(shí)數(shù)WW=bl+b2/100數(shù)值組合,標(biāo)定小數(shù)點(diǎn)Ifab(4)127ThenWW=WW判斷數(shù)據(jù)符號位Label1(0)=Format(WW,0.00)顯示毫米單位數(shù)值,2位小數(shù)Label1(1)=Format(WW/25.4,0.000)顯示英寸單位數(shù)值,3位小數(shù)IfWWMaxWAndWW51Then-判斷最大值,儀表在剛開始工作時(shí)有干擾,會(huì)傳導(dǎo)一些亂碼,位移傳感器有參數(shù)偏差,最大值一般都略大于 50 毫米,所以取 51 為極限最大值,取51 為極限最小值。MaxW=WWLabel1(2)=Format(MaxW,0.00)顯示毫米單位最大值,2位小數(shù)Label1(3)=Format(MaxW/25.4,0.000)顯示英寸單位最大值,3位小數(shù)En
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中提前考試數(shù)學(xué)試卷
- 福建省質(zhì)檢卷數(shù)學(xué)試卷
- 高一年泉州統(tǒng)考數(shù)學(xué)試卷
- 福州初中五月數(shù)學(xué)試卷
- 甘肅15高考數(shù)學(xué)試卷
- 教師課件的制作培訓(xùn)
- 2025年浙江醫(yī)療衛(wèi)生招聘金華義烏市中醫(yī)醫(yī)院招聘4人筆試歷年專業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 2025年年唐都醫(yī)院住培醫(yī)師招錄筆試歷年專業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 2025至2030城市建設(shè)規(guī)劃發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 二一年高考數(shù)學(xué)試卷
- 滲濾液處理應(yīng)急預(yù)案
- 肺部結(jié)節(jié)病例討論范文
- 整本書閱讀《平凡的世界》中職語文高教版(2023-2024)基礎(chǔ)模塊上冊
- 全冊背記資料-2024-2025學(xué)年七年級地理上學(xué)期湘教版
- 買賣合同法律知識及風(fēng)險(xiǎn)防范培訓(xùn)課件
- 富順縣中醫(yī)醫(yī)院《護(hù)理質(zhì)控手冊》模版
- 《水工建筑物》課件-模塊四:土石壩
- 貴陽市云巖區(qū)2023-2024學(xué)年重點(diǎn)中學(xué)小升初數(shù)學(xué)入學(xué)考試卷含解析
- (完整版)小學(xué)六年級奧數(shù)應(yīng)用題100道附答案
- GB/T 9799-2024金屬及其他無機(jī)覆蓋層鋼鐵上經(jīng)過處理的鋅電鍍層
- 2020年遼寧省普通高中學(xué)業(yè)水平合格性考試地理真題
評論
0/150
提交評論