




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第一章 緒論1.1 引言球磨機是建材、選礦、化工等重工業(yè)中最廣泛采用的粉磨機械。運用在大規(guī)模的粉磨場合。在水泥生產(chǎn)中,經(jīng)過粉碎的原料、熟料、煤及其他混合材料都要在球磨機中進行粉磨。 球磨機是生產(chǎn)水泥的重要主機設(shè)備。但是在使用過程中,主軸瓦過熱問題時常影響著生產(chǎn),尤其出現(xiàn)在采用球磨機粉磨熟料生產(chǎn)成品水泥中,主軸瓦過熱,嚴重的甚至燒瓦,造成停機降溫,甚至停產(chǎn)搶修。這個問題的出現(xiàn),不同程度地影響設(shè)備運轉(zhuǎn)率,影響生產(chǎn)的正常進行,給企業(yè)造成一定的經(jīng)濟損失。因此,對球磨機進行實時故障檢測,對保障安全生產(chǎn)、提高生產(chǎn)效率都有著重大的實際意義。1.2 球磨機故障分析1.2.1 主軸瓦作用球磨機是一個水平裝在兩個
2、主軸上的低速回轉(zhuǎn)筒體,回轉(zhuǎn)部分的重量全部由主軸承負擔,而主軸承由主軸瓦、軸承座和潤滑系統(tǒng)組成。主軸瓦是主軸承最重要的零件,它呈球面形,裝在軸承底座的凹球面上,瓦面多用鉛基軸承合金制成。這種主軸瓦具有較好的強度、塑性、距合性、減摩性、耐磨性、潤滑性、傳熱性,而且更換簡單、方便。能夠滿足主軸承良好潤滑要求,適應(yīng)球磨機低速、重載的工作環(huán)境。1.2.2 主軸瓦潤滑原理主軸瓦的潤滑有油圈帶油式和油泵供油式等幾種形式,目前常用的是油圈帶油式。油圈隨球磨機中空軸一起運轉(zhuǎn)帶油,由刮油體將油圈帶來的油刮到布油器上,再由布油器將油均勻地撒到中空軸上,在中空軸和主軸瓦接觸的表面之間形成一層油膜,把摩擦表面隔開,獲得
3、液體動壓潤滑,從而減小中空軸與主軸瓦之間的磨損,保證球磨機正常運轉(zhuǎn)。1.2.3 主軸瓦過熱原因分析 主軸瓦過熱根本原因在于主軸承內(nèi)有大量熱量,不能及時散發(fā)出去,積存下來導(dǎo)致溫度不斷升高,主軸瓦過熱,當溫度進一步升高,主軸瓦表面的巴氏合金將熔化,造成燒瓦,導(dǎo)致球磨機無法正常運轉(zhuǎn)。因此,這類問題在生產(chǎn)中要高度重視,我們可以從以下幾個方面來分析主軸瓦過熱原因。(l)主軸瓦刮研不良,中空軸與主軸瓦接觸達不到規(guī)定要求,造成主軸瓦過度磨損,產(chǎn)生大量熱量,導(dǎo)致主軸瓦過熱,甚至燒瓦。(2)潤滑油種類選擇不當,油質(zhì)不好,損壞中空軸與主軸瓦,油粘度小,難以形成潤滑油膜。(3)潤滑系統(tǒng)有問題,如油圈帶油不好,刮油體
4、、布油器安裝不正確,沒有油過濾器,管道不暢通等。(4)球磨機工的責任心不強,沒有隨時掌握油位、油質(zhì),不能及時加油,不能及時更換潤滑油造成缺油、油質(zhì)差。主軸瓦得不到良好的潤滑,導(dǎo)致主軸瓦過熱。(5)中空軸與螺旋筒隔熱不好,筒體內(nèi)熱量直接傳遞給主軸瓦。(6)長時間喂入過熱物料,主要是出窯熟料散熱不充分,導(dǎo)致入磨物料溫度過高,直接反映在主軸瓦上溫度偏高,這在夏天6-8月表現(xiàn)更明顯。(7)球磨機通風不良,磨內(nèi)熱量難以排出直接傳到主軸瓦上。(8)外部冷卻不充分,球磨機采用水冷卻,循環(huán)水一方面冷卻主軸瓦,一方面冷卻磨機筒體表面,冷卻水停止或冷卻水不足,造成冷卻不充分,主軸瓦過熱。(9)主軸承有裂縫,軸承內(nèi)
5、冷卻水穿過裂縫滲到瓦面,破壞了良好的潤滑,導(dǎo)致主軸瓦過熱。通過上面分析,我們可以看到,球磨機的各種故障最終都引起主軸瓦的溫度升高,造成主軸瓦過熱甚至燒瓦。因此我們可以通過實時檢測主軸瓦的溫度,發(fā)現(xiàn)球磨機的故障。當主軸瓦溫度異常時,給出報警信號,及時地進行檢測,避免燒瓦等嚴重事故,保障了設(shè)備的安全運行。1.3 解決方案球磨機的軸承在故障情況下,引起溫度升高而燒壞,從而造成直接和間接的巨大的經(jīng)濟損失。我們設(shè)計了一套多點溫度檢測系統(tǒng),實時檢測主軸承的溫度,系統(tǒng)結(jié)構(gòu)圖如圖1-1所示。本系統(tǒng)由下位機和上位機組成,下位機由AT89C51單片機、鍵盤顯示電路、報警電路、數(shù)字溫度傳感器、E2ROM和看門狗電路
6、組成。完成對球磨機軸承溫度的檢測、顯示、報警。并把檢測值通過RS-485總線傳送給控制室的上位機(微機)。由上位機進行數(shù)據(jù)存儲、顯示??蓪v史數(shù)據(jù)進行查詢。通過圖形顯示,直觀的反映球磨機的溫度變化趨勢可早期預(yù)報球磨機故障。微機RS232/485數(shù)字溫度 傳感器3#球磨機數(shù)字溫度 傳感器1#球磨機數(shù)字溫度 傳感器2#球磨機數(shù)字溫度 傳感器4#球磨機單片機串口/RS485 AT89C51單片機看門狗電路E2ROM報 警鍵盤顯示RS485總線圖1-1 系統(tǒng)結(jié)構(gòu)圖 1.4 論文主要內(nèi)容本文為多點溫度巡檢系統(tǒng)的一個子課題,設(shè)計與開發(fā)上位機監(jiān)控系統(tǒng)軟件,本文詳細介紹了如何在windows 98操作系統(tǒng)上用
7、Visual Basic編程。設(shè)計并開發(fā)了數(shù)據(jù)采集、數(shù)據(jù)處理與存儲、系統(tǒng)參數(shù)初始化、數(shù)據(jù)顯示、查詢、超溫報警等功能模塊。第二章 RS-232與RS-485標準及應(yīng)用2.1 RS-232、RS-422與RS-485的由來 RS-232、RS-422與RS-485都是串行數(shù)據(jù)接口標準,最初都是由電子工業(yè)協(xié)會(EIA)制訂并發(fā)布的,RS-232在1962年發(fā)布,命名為EIA-232-E,作為工業(yè)標準,以保證不同廠家產(chǎn)品之間的兼容。RS-422由RS-232發(fā)展而來,它是為彌補RS-232之不足而提出的。為改進RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到1
8、0Mb/s,傳輸距離延長到4000英尺(速率低于100kb/s時),并允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范,被命名為TIA/EIA-422-A標準。為擴展應(yīng)用范圍,EIA又于1983年在RS-422基礎(chǔ)上制定了RS-485標準,增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護特性,擴展了總線共模范圍,后命名為TIA/EIA-485-A標準。由于EIA提出的建議標準都是以“RS”作為前綴,所以在通訊工業(yè)領(lǐng)域,仍然習慣將上述標準以RS作前綴稱謂。 RS-232、RS-422與RS-485
9、標準只對接口的電氣特性做出規(guī)定,而不涉及接插件、電纜或協(xié)議,在此基礎(chǔ)上用戶可以建立自己的高層通信協(xié)議。因此在視頻界的應(yīng)用,許多廠家都建立了一套高層通信協(xié)議,或公開或廠家獨家使用。如錄像機廠家中的Sony與松下對錄像機的RS-422控制協(xié)議是有差異的,視頻服務(wù)器上的控制協(xié)議則更多了,如Louth、Odetis協(xié)議是公開的,而ProLINK則是基于Profile上的。2.2 RS-232串行接口標準 EIA RS-232C是美國電子工業(yè)協(xié)會正式公布的串行總線標準,也是目前最常用的串行接口標準,用來實現(xiàn)計算機與計算機之間、計算機與外設(shè)之間的數(shù)據(jù)通訊。RS-232C串行接口總線適用于:設(shè)備之間的通訊距
10、離不大于15m,傳輸速率最大為20KB/S。一、接口信號一個完整的RS-232C接口有22根線,采用標準的25芯插頭座。表21給出了RS-232C串行接口信號的定義以及信號的分類。21 RS-232C接口信號引腳號縮寫符信號方向說 明1屏蔽(保護)地2TXD從終端到調(diào)制解調(diào)器發(fā)送數(shù)據(jù)3RXD從調(diào)制解調(diào)器到終端接收數(shù)據(jù)4RTS從終端到調(diào)制解調(diào)器請求發(fā)送5CTS從調(diào)制解調(diào)器到終端清除發(fā)送6DSR從調(diào)制解調(diào)器到終端數(shù)據(jù)裝置就緒7 信號地8DCD從調(diào)制解調(diào)器到終端接收線信號檢出(載波檢測)9 保留供測試用10 保留供測試用11 未定義12DCD從調(diào)制解調(diào)器到終端輔信道接收線信號檢測13CTS從調(diào)制解調(diào)
11、器到終端輔信道清除發(fā)送14TXD從終端到調(diào)制解調(diào)器輔信道發(fā)送數(shù)據(jù)15從調(diào)制解調(diào)器到終端發(fā)送器信號定時16RXD從調(diào)制解調(diào)器到終端輔信道接收數(shù)據(jù)17從調(diào)制解調(diào)器到終端接收器信號定時18 未定義19RTS從終端到調(diào)制解調(diào)器輔信道請求發(fā)送20DTR從終端到調(diào)制解調(diào)器數(shù)據(jù)終端就緒21從調(diào)制解調(diào)器到終端信號質(zhì)量檢測22從調(diào)制解調(diào)器到終端振鈴指示23從終端到調(diào)制解調(diào)器從調(diào)制解調(diào)器到終端數(shù)據(jù)信號速率選擇器24從終端到調(diào)制解調(diào)器發(fā)送器信號定時25 未定義二、 電氣特性RS-232C采用負邏輯,即:邏輯“1” :-5V-15V邏輯“0” :+5V+15VRS-232C的電氣特性如表22所示。表22 RS-232
12、 、RS-485、RS-422有關(guān)電氣參數(shù)規(guī)定RS-232RS-422RS-485工作方式單端差分差分節(jié)點數(shù)1收、1發(fā)1發(fā)10收1發(fā)32收最大傳輸電纜長度50英尺400英尺400英尺最大傳輸速率20Kb/s10Mb/s10Mb/s最大驅(qū)動輸出電壓+/-25V-0.25V+6V-7V+12V驅(qū)動器輸出信號電平(負載最小值)負載+/-5V+/-15V+/-2.0V+/-1.5V驅(qū)動器輸出信號電平(空載最大值)空載+/-25V+/-6V+/-6V驅(qū)動器負載阻抗()3K7K10054擺率(最大值)30V/usN/AN/A接收器輸入電壓范圍+/-15V-10V+10V-7V+12V接收器輸入門限+/-3
13、V+/-200mV+/-200mV接收器輸入電阻()3K7K4K(最小)12K驅(qū)動器共模電壓-3V+3V-1V+3V接收器共模電壓-7V+7V-7V+12V2.3 RS-485與RS-422串行接口標準 2.3.1 平衡傳輸 RS-485、RS-422與RS-232不一樣,數(shù)據(jù)信號采用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為A,另一線定義為B,如圖22所示。 通常情況下,發(fā)送驅(qū)動器A、B之間的正電平在+2+6V,是一個邏輯狀態(tài),負電平在-2-6V,是另一個邏輯狀態(tài)。另有一個信號地C,在RS-485中還有一“使能”端,而在RS-422中這是可用可不用的?!笆鼓堋倍耸怯糜诳?/p>
14、制發(fā)送驅(qū)動器與傳輸線的切斷與連接。當“使能”端起作用時,發(fā)送驅(qū)動器處于高阻狀態(tài),稱作“第三態(tài)”,即它是有別于邏輯“1”與“0”的第三態(tài)。圖22 RS-422、RS-485傳輸線定義 接收器也作與發(fā)送端相對的規(guī)定,收、發(fā)端通過平衡雙絞線將AA與BB對應(yīng)相連,當在收端AB之間有大于+200mV的電平時,輸出正邏輯電平,小于-200mV時,輸出負邏輯電平。接收器接收平衡線上的電平范圍通常在200mV至6V之間。如圖23所示。 圖23 RS-485/RS-422接收器接收平衡線上的電平2.4 握手協(xié)議計算機在與單片機通信時,為了確定所收的數(shù)據(jù)是單片機發(fā)出的溫度值就要設(shè)計握手協(xié)議。我們采用在發(fā)送每路溫度
15、數(shù)據(jù)前發(fā)送一個數(shù)AAH作為數(shù)據(jù)報頭,接著發(fā)送溫度值所對應(yīng)的序號、該路溫度值的整數(shù)部分、該路溫度值的小數(shù)部分,每次發(fā)送之間延時6mS。用這樣的一組發(fā)送序列將一路溫度數(shù)據(jù)發(fā)送給上位機。每組發(fā)送序列間隔大于450mS。第三章 軟件功能與結(jié)構(gòu)設(shè)計3.1數(shù)據(jù)采集模塊上位機通過電纜與下位機相連。下位機進行數(shù)據(jù)預(yù)處理,組成一定的數(shù)據(jù)格式,通過RS-232串行口,將數(shù)據(jù)送到上位機,上位機采用串口中斷方式接收數(shù)據(jù),保證采集數(shù)據(jù)的實時處理。數(shù)據(jù)采集模塊負責設(shè)置串口,監(jiān)聽串口,當串口有數(shù)據(jù)傳入時判斷是否是所要接收的溫度數(shù)據(jù)。如果所接收到的數(shù)據(jù)正確則將數(shù)據(jù)傳給數(shù)據(jù)處理和數(shù)據(jù)顯示模塊。3.2 數(shù)據(jù)處理與存儲該模塊實現(xiàn)數(shù)
16、據(jù)處理與存儲。當此模塊收到數(shù)據(jù)采集模塊傳來的數(shù)據(jù)后ASC函數(shù)將數(shù)據(jù)轉(zhuǎn)化為String型。然后判斷此溫度是否超過所設(shè)的最高溫度。如果沒有超過報警值,則將數(shù)據(jù)交給顯示模塊。如果超過則報警,提示用戶溫度過高。在完成數(shù)據(jù)的處理和顯示后,用WriteLine函數(shù)將數(shù)據(jù)寫入系統(tǒng)日志保存在硬盤上,至此就完成了數(shù)據(jù)處理與存儲。3.3系統(tǒng)參數(shù)初始化本程序可以對一些參數(shù)進行設(shè)置。包括高溫報警值,低溫報警值,串口波特率,串行端口號選擇。參數(shù)被設(shè)置后將會被保存,以便系統(tǒng)在運行時使用。用戶可以根據(jù)需要隨時更改參數(shù)。3.4數(shù)據(jù)顯示數(shù)據(jù)顯示采用了模擬LCD顯示的ActiveX控件。并使用了4組顯示模塊可以同時顯示4路不同的
17、溫度數(shù)據(jù)。該顯示控件以黑色為底色,用天藍色來顯示溫度值,這樣的配色很醒目。而且當溫度過高時背景色會變成紅色以提醒用戶溫度過高了。3.5圖形顯示本程序可以根據(jù)用戶選擇的數(shù)據(jù)源將數(shù)據(jù)以圖形的形式顯示在繪圖區(qū)中,直觀的體現(xiàn)溫度的變化情況。此模塊先將用戶選擇的數(shù)據(jù)讀入到一個動態(tài)數(shù)組中然后繪圖。用戶可以清楚的看到溫度的變化。3.6查詢本程序?qū)⑹盏降臄?shù)據(jù)以文本的形式保存在一個以當天日期為文件名的文本文件中。用戶可以通過打開日志文件來查看某天的溫度記錄。3.7超溫報警本軟件設(shè)計了報警模塊,當數(shù)據(jù)處理模塊發(fā)現(xiàn)所收到的數(shù)據(jù)值大于最高溫度時就觸發(fā)報警模塊。報警模塊會彈出用戶溫度過高的警告,并將當前溫度以醒目的紅色
18、為背景色顯示,并控制計算機的小喇叭發(fā)出蜂鳴聲。這時用戶可以選擇“確定”來關(guān)閉報警對話框或者選擇“忽略”,此時系統(tǒng)會自動打開設(shè)置對話框,用戶可以重新設(shè)置高溫報警值。第四章 系統(tǒng)軟件開發(fā)4.1軟件開發(fā)平臺和編程語言的選擇本軟件在微軟Windows98平臺上開發(fā)。經(jīng)過測試其在最新的Windows2000及WindowsXP上均可正常運行。本軟件使用微軟基于Basic語言的Visual Basic軟件開發(fā)。之所以選擇Visual Basic是因為其提供了大量的控件,為程序的初期界面開發(fā)提供了便利。而且本程序?qū)\行速度沒有過高的要求,因為相對于當今CPU的處理速度,串口的傳輸速率不可能超過CPU的處理速
19、度。4.2軟件界面設(shè)計為使界面美觀我是用了XP界面控件,界面美觀醒目,格式統(tǒng)一。4.2.1系統(tǒng)主界面 在程序啟動時先有一個Loading界面(見圖41)。 Loading界面會自動關(guān)閉,然后系統(tǒng)主界面會彈出(見圖42)。圖 41 系統(tǒng)Loading界面圖42 系統(tǒng)主界面4.2.2應(yīng)用系統(tǒng)子界面 本系統(tǒng)子界面包括:設(shè)置窗口,高溫報警窗口,溫度提示窗口,時間顯示窗口,數(shù)值選擇判斷窗口,數(shù)值輸入錯誤提示窗口,選擇繪圖數(shù)據(jù)源窗口。4.3主要模塊的實現(xiàn)4.3.1數(shù)據(jù)采集模塊的實現(xiàn)一、MSComm控件介紹在數(shù)據(jù)采集模塊中使用MSComm 控件通過串行端口接收數(shù)據(jù),為應(yīng) 圖43 數(shù)值輸入錯誤提示窗口用程序提
20、供串行通訊功能。MSComm控件在串口編程時非常方便,程序員不必去花時間去了解較為復(fù)雜的API函數(shù),而且在VC、VB、Delphi等語言中均可使用。Microsoft Communications Control(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅(qū)動(Eventdriven)方法,一是查詢法。二、串行通信的兩種格式進行串行通信時有以下的兩種傳輸方式:(1)字符形式:通常以小于ASC的字符碼來傳輸,通常用于傳送指令(2)二
21、進制形式:將數(shù)據(jù)以二進制編碼的方式傳送,他可能含有ASC128以上的字符碼,通常用來傳送數(shù)據(jù),以節(jié)省時間。進行串行通信的雙方,一般說來是利用字符串(也就是我們在鍵盤上可以找到的可見字符,他們通常在ASC碼128以內(nèi))來進行數(shù)據(jù)的交換,由于傳輸一般的命令,使用這種可見字符是相當恰當?shù)?;不過,在某些需要考慮傳輸?shù)脑O(shè)計上會用以二進制的方式來傳輸數(shù)據(jù)。如當要傳輸一個100的數(shù)值出去,如果使用字符的方式傳輸?shù)脑?將會使用到4個字節(jié);由于1000這個數(shù)值,在計算機上可以用一個整數(shù)來表示,所以將他改成二進制的方式的話,只要兩個字節(jié)就可以了,兩者之間相差了50%的傳輸時間。由于串行傳輸?shù)乃俣仍谖覀兛磥磉€是很快
22、的,這種差異在小量的10組,20組數(shù)據(jù)傳輸時可能還沒有關(guān)系;可是如果這樣的數(shù)據(jù)我們要傳送200組,500組時,時間上的差異就非常明顯,這種明顯的差異表現(xiàn)出來就是系統(tǒng)效能的降低。因此在考慮傳輸方式時,要特別想到數(shù)據(jù)量的對少和系統(tǒng)效能之間的關(guān)系。三、 MSComm控件兩種處理通訊的方式MSComm控件提供下列兩種處理通訊的方式:事件驅(qū)動方式和查詢方式,定時器自動驅(qū)動方式。(1)時間驅(qū)動方式:事件驅(qū)動通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時需要得到通知,例如:在串口接收緩沖區(qū)中有字符,或者 Carrier Detect (CD) 或 Request To Send
23、(RTS) 線上一個字符到達或一個變化發(fā)生時。在這些情況下,可以利用 MSComm 控件的OnComm 事件捕獲并處理這些通訊件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。在編程過程中,就可以在OnComm事件處理函數(shù)中加入自己的處理代碼。這種方法的優(yōu)點是程序響應(yīng)及時,可靠性高。每個MSComm 控件對應(yīng)著一個串行端口。如果應(yīng)用程序需要訪問多個串行端口,必須使用多個 MSComm 控件。本程序采用了事件驅(qū)動方式,沒有采用延時控制,因為本程序要同時接受4路溫度數(shù)據(jù),延時所帶來的誤差即不確定性會導(dǎo)致程序無法正確的接受并顯示數(shù)據(jù)。在MS
24、Comm1_OnComm()方法中我采用Select Case 語句來為接受到的數(shù)據(jù)選擇顯示地址。以下對 MSComm1_OnComm() 的源代碼進行說明:temp = MSComm1.Input 接受串口數(shù)據(jù)并存入字符串temp中sel = Left$(temp, 1) 取temp中的第一個字符First = Mid(temp, 2, 2) 取temp中的的2,3個字符Second = Right(temp, 1) 取temp中的最后一個字符temping = Val(First + . + Second) 為了顯示小數(shù)在第2,3字符與最后一個符之間加點Select Case sel 判斷
25、讀入的數(shù)據(jù)應(yīng)在哪塊模擬LCD上顯示 Case A LCDShower1.Temperature = temping If temping = CDbl(OptionForm.HighTempText.Text) Then 判斷溫度是否超過警戒溫度 LCDShower1.BackColor = &HFF&使LCD顯示背景色變?yōu)榧t色 frmmsg.Show End If Case B LCDShower2.Temperature = temping If temping = CDbl(OptionForm.HighTempText.Text) Then LCDShower1.BackColor =
26、 &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.Show End If Case C LCDShower3.Temperature = temping If temping = CDbl(OptionForm.HighTempText.Text) Then LCDShower1.BackColor = &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.ShowEnd If Case D LCDShower4.Temperature = temping If temping = CDbl(OptionForm.HighTempText.Text) Then LCDShower1.Ba
27、ckColor = &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.ShowEnd If End Select temp = 清空緩沖區(qū) End Sub(2)查詢方式查詢方式實質(zhì)上還是事件驅(qū)動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關(guān)鍵功能之后,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。(3)定時器自動驅(qū)動方式定時器控件在控制系統(tǒng)中經(jīng)常被用來執(zhí)行固定且周期性的工作,該控件中的Interval屬性用于設(shè)置每次執(zhí)行的間隔時間,只要間隔時間一到,馬上就會執(zhí)行Timer時間內(nèi)的程序代碼,這樣就達到了不斷執(zhí)行的目的。如果希望每隔100秒執(zhí)行一次程序代碼取得設(shè)備數(shù)據(jù),最
28、直接的做法就是設(shè)置定時器的Intertal屬性值為100,表面上看這樣可以每隔100秒去一次數(shù)據(jù)了。但每一次向設(shè)備要求數(shù)據(jù)傳送時,會執(zhí)行一段代碼,這一段代碼所費的時間依代碼的大小而不同,以現(xiàn)在的計算機CPU來說,這些時間真的微不足道:可是經(jīng)實驗發(fā)現(xiàn)每一次的數(shù)據(jù)傳輸盡管使用了最優(yōu)化設(shè)計,還會花上100毫秒左右的時間才能得到一組數(shù)據(jù),這個時間還和所傳輸?shù)臄?shù)據(jù)量的大小有關(guān)。如果數(shù)據(jù)量一大,這個等待時間還必須再拉長。問題出在傳輸線上,即使現(xiàn)在的CPU進步神速,也只能看到數(shù)據(jù)在計算機內(nèi)部處理時的速度加快;連上單片機設(shè)備后,一個完整的傳輸系統(tǒng)中的傳輸效能就必須看速度最慢的環(huán)節(jié)-顯然這就是傳輸線本身了,因為
29、他的速率無法無限制的往上提升。所以我把串口通信速度設(shè)為1200,這樣才可保證數(shù)據(jù)準確無誤的被傳送和接收。四、MSComm 控件的常用屬性MSComm 控件有很多重要的屬性,現(xiàn)在對程序中所用的幾個重要的屬性進行說明:CommPort 設(shè)置并返回通訊端口號。Settings 以字符串的形式設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。PortOpen 設(shè)置并返回通訊端口的狀態(tài)。也可以打開和關(guān)閉端口。Input 從接收緩沖區(qū)返回和刪除字符。Output 向傳輸緩沖區(qū)寫一個字符串。下面分別描述:CommPort屬性 設(shè)置并返回通訊端口號。語法 object.CommPortvalue (value 一整
30、型值,說明端口號。)說明 在設(shè)計時,value 可以設(shè)置成從 1 到 16 的任何數(shù)(缺省值為 1)。但是如果用 PortOpen 屬性打開一個并不存在的端口時,MSComm 控件會產(chǎn)生錯誤 68(設(shè)備無效)。注意:必須在打開端口之前設(shè)置 CommPort 屬性。本程序在端口初始化時設(shè)置端口為1即OmmPort=1,用戶也可以點擊Option按鈕在彈出對話框?qū)Υ趯傩赃M行設(shè)置。用戶更改設(shè)置,點擊確定后系統(tǒng)會自動將串口初始值保存。以下是Option窗口創(chuàng)建時對下拉框組件的初始化Public Sub Form_Load()Combo1.AddItem (1200) 對串口速率的設(shè)置Combo1.A
31、ddItem (1800)Combo1.AddItem (2400)Combo1.AddItem (4800)Combo1.AddItem (7200)Combo1.AddItem (9600)Combo1.ItemData(0) = 1200Combo1.ItemData(0) = 1800Combo1.ItemData(0) = 2400Combo1.ItemData(0) = 4800Combo1.ItemData(0) = 7200Combo1.ItemData(0) = 9600Combo2.AddItem (Com1) 對串行端口的號的設(shè)置Combo2.AddItem (Com2)
32、Combo2.ItemData(0) = 1Combo2.ItemData(1) = 2End Sub并設(shè)置PortOpen為TRUE: MSComm1.PortOpen = TrueRThreshold 屬性:在 MSComm 控件設(shè)置 CommEvent 屬性為 comEvReceive 并產(chǎn)生 OnComm 之前,設(shè)置并返回的要接收的字符數(shù)。語法:object.Rthreshold = value (value 整型表達式,說明在產(chǎn)生 OnComm 事件之前要接收的字符數(shù)。 )說明:當接收字符后,若 Rthreshold 屬性設(shè)置為 0(缺省值)則不產(chǎn)生 OnComm 事件。例如,設(shè)置
33、Rthreshold 為 1,接收緩沖區(qū)收到每一個字符都會使 MSComm 控件產(chǎn)生 OnComm 事件。本程序使用MScomm1.hreshold=4,即當串口收到4個字符后觸發(fā)顯示溫度的事件 。Settings 屬性:設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位參數(shù)。語法::object.Settings = value說明:當端口打開時,如果 value 非法,則 MSComm 控件產(chǎn)生錯誤 380(非法屬性值)。Value 由四個設(shè)置值組成,有如下的格式:“BBBB,P,D,S”BBBB 為波特率,P 為奇偶校驗,D 為數(shù)據(jù)位數(shù),S 為停止位數(shù)。value 的缺省值是:“9600,N,8
34、,1”本程序在端口初始化時對此屬性進行設(shè)置,設(shè)置為“1200,n,8,1”:MSComm1.Settings = 1200,n,8,1用戶也可以點擊Option,在彈出的窗口中修改組合框中的端口設(shè)置來設(shè)定,主程序通過語句:MSComm1.Settings = OptionForm.Item + ,n,8,1 來在初始化是讀取設(shè)置InputLen 屬性:設(shè)置并返回 Input 屬性從接收緩沖區(qū)讀取的字符數(shù)。語法 object.InputLen = valueInputLen 屬性語法包括下列部分:value 整型表達式,說明 Input 屬性從接收緩沖區(qū)中讀取的字符數(shù)。說明:InputLen 屬
35、性的缺省值是 0。設(shè)置 InputLen 為 0 時,使用 Input 將使 MSComm 控件讀取接收緩沖區(qū)中全部的內(nèi)容。若接收緩沖區(qū)中 InputLen 字符無效,Input 屬性返回一個零長度字符串 ()。在使用 Input 前,用戶可以選擇檢查 InBufferCount 屬性來確定緩沖區(qū)中是否已有需要數(shù)目的字符。該屬性在從輸出格式為定長數(shù)據(jù)的機器讀取數(shù)據(jù)時非常有用。4.3.2數(shù)據(jù)處理與存儲模塊的實現(xiàn)當串口收到數(shù)據(jù)時會自動觸發(fā)數(shù)據(jù)處理與存儲模塊,此模塊主要是使用Windows提供的串口通信控件MSComm來實現(xiàn)的。此模塊先將數(shù)據(jù)保存到一個字符串變量中然后程序判斷所收數(shù)據(jù)屬于那一路,并將
36、數(shù)據(jù)取出。具體實現(xiàn)代碼說明:temp = MSComm1.Input 從串口取出數(shù)據(jù)存于字符串變量temp中sel = Left$(temp, 1) 取temp的左邊第一個字符First = Mid(temp, 2, 2) 取temp的從左邊第一個字符開始取兩個Second = Right(temp, 1) 取temp的右邊第一個字符Num1 = Asc(First) 返回字符串的ANSI碼Num2 = Asc(Second)Sum = Num1 + Num2 * 0.1 得到小數(shù)temping = Str(Sum) 將數(shù)字變?yōu)樽址當?shù)據(jù)取出并進行轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)顯示在LCD上具體實現(xiàn)代碼
37、說明: Select Case sel Case A 如果收到的時A路數(shù)據(jù) LCDShower1.Temperature = temping就將數(shù)據(jù)顯示在第一塊LCD上 If temping = CDbl(OptionForm.HighTempText.Text) Then LCDShower1.BackColor = &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.Show TextStreamA.WriteLine (A/ + temping)將數(shù)據(jù)寫入日志保存 End If Case B LCDShower2.Temperature = temping If temping = C
38、Dbl(OptionForm.HighTempText.Text) Then LCDShower1.BackColor = &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.Show TextStreamB.WriteLine (B/ + temping) End If Case C LCDShower3.Temperature = temping If temping = CDbl(OptionForm.HighTempText.Text) Then LCDShower1.BackColor = &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.Show TextStreamC.Wr
39、iteLine (C/ + temping) End If Case D LCDShower4.Temperature = temping If temping = CDbl(OptionForm.HighTempText.Text) Then LCDShower1.BackColor = &HFF& 使LCD顯示背景色變?yōu)榧t色 frmmsg.ShowTextStreamD.WriteLine (D/ + temping) End If End Select temp = 4.3.3系統(tǒng)參數(shù)初始化模塊的實現(xiàn)在系統(tǒng)參數(shù)初始化模塊中可以對系統(tǒng)參數(shù)進行設(shè)置(見圖44)。可設(shè)置的系統(tǒng)參數(shù)包括:高溫報警
40、值,低溫報警值,波特率,端口號。本模塊使用了TextBox和ComboBox兩種控件。其中對于波特率和端口號的選擇是用了復(fù)選框控件。 圖44 系統(tǒng)設(shè)置模塊界面Private Sub Combo1_Click()Item = Combo1.ItemData(Combo1.ListIndex) 取得用戶所選相的值End SubPrivate Sub Combo2_Click()Combo2.Text = Combo2.ItemData(Combo2.ListIndex) End SubPublic Sub Form_Load()Combo1.AddItem (1200) 設(shè)置復(fù)選框各項的顯示值Co
41、mbo1.AddItem (1800)Combo1.AddItem (2400)Combo1.AddItem (4800)Combo1.AddItem (7200)Combo1.AddItem (9600)Combo1.ItemData(0) = 1200 定義復(fù)選框中選項所對應(yīng)的值Combo1.ItemData(0) = 1800Combo1.ItemData(0) = 2400Combo1.ItemData(0) = 4800Combo1.ItemData(0) = 7200Combo1.ItemData(0) = 9600Combo2.AddItem (Com1)Combo2.AddIt
42、em (Com2)Combo2.ItemData(0) = 1 Com1選項所對應(yīng)的值為整數(shù)1Combo2.ItemData(1) = 2End Sub本模塊還要對用戶所輸入的值進行判斷,防止用戶因輸入無意義或相互矛盾的值而導(dǎo)致系統(tǒng)出現(xiàn)邏輯錯誤。具體代碼如下:HighTemp = CDbl(HighTempText.Text) 將TextBox中的數(shù)據(jù)轉(zhuǎn)換為Double型LowTemp = CDbl(LowTempText.Text)If HighTempText.Text = Null Or LowTempText.Text = Null Then frmmsg1.Show 如果TextBo
43、x中為空則報錯,彈出對話框 ElseIf HighTemp = 99.9 Then frmmsg2.Show 如果最高溫度高于99.9度則報錯,彈出對話框 ElseIf LowTemp (Count - 1) * 2 If Chr(Buf(i) = / And i (Count - 1) * 2 Then i = i + 2 Do Until Chr(Buf(i) = A Or Chr(Buf(i) = B Or Chr(Buf(i) = C Or Chr(Buf(i) = D Or i = Count * 2 If Chr(Buf(i) = . Then Number = Number +
44、. Else: Number = Number + Chr(Buf(i) End If i = i + 2 If i (Count - 1) * 2 Then Exit Do Loop 將數(shù)據(jù)重新組合 GraphTemp = Number If k = 80 Then Graph1.Cls 清空繪圖區(qū) k = 0 End If If GraphTemp = Then MsgBox 所選數(shù)據(jù)源中不包含指定地溫度數(shù)據(jù) End If ReceiveData(k) = Val(Number) 區(qū)緩沖區(qū)中數(shù)值的前4位.因為LCD顯示位最多為4 即最大值為99.9度. GraphTemp = 清空緩沖區(qū) x(k) = k Y(k) = ReceiveData(k) If k = 0 Then Graph1.PSet (k, Y(k) 指定原點 Else Grap
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股權(quán)轉(zhuǎn)讓合同爭議焦點探討
- 學(xué)生網(wǎng)絡(luò)安全使用合同協(xié)議書范本
- 個人租房合同標準格式文件
- 宿舍租賃合同書
- 倉儲租賃合同范本中英文
- 2025年啤酒品牌授權(quán)合同范文
- 2025年房地產(chǎn)經(jīng)紀合作伙伴銷售合同模版
- 2025年住房公積金互助合同范本
- 2025年戶外廣告租用合同格式
- 2025年腸類制品項目合作計劃書
- 二甲雙胍格列齊特片
- 護理工作搶救制度
- 2023年教師招聘面試高中政治《堅持以人民為中心》試講稿 統(tǒng)編版 必修三
- “雙減”背景下初中英語作業(yè)優(yōu)化設(shè)計的實踐研究
- Barrett食管醫(yī)學(xué)知識講解
- DB3302T 1016-2018城市綠地養(yǎng)護質(zhì)量等級標準
- 2023年寧波財經(jīng)學(xué)院單招面試題庫及答案解析
- 數(shù)獨課件完整版
- 西師大版六年級數(shù)學(xué)下冊全冊知識點匯總
- 江西2023年分宜九銀村鎮(zhèn)銀行社會招聘上岸提分題庫3套【500題帶答案含詳解】
- 2023年知識產(chǎn)權(quán)保護公需課試題答案
評論
0/150
提交評論