




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文利用單片機(jī)結(jié)合傳感器技術(shù)而開(kāi)發(fā)設(shè)計(jì)了這一溫度數(shù)據(jù)采集監(jiān)控系統(tǒng)。文中傳感器理論單片機(jī)實(shí)際應(yīng)用有機(jī)結(jié)合,詳細(xì)地講述了利用熱敏電阻作為熱敏傳感器探測(cè)環(huán)境溫度的過(guò)程,以及實(shí)現(xiàn)熱電轉(zhuǎn)換的原理過(guò)程。數(shù)據(jù)采集系統(tǒng)正由傳統(tǒng)的順序控制采集系統(tǒng)進(jìn)入到過(guò)程控制數(shù)據(jù)采集系統(tǒng),這種采集系統(tǒng)由硬件和軟件兩部分構(gòu)成,它的采集數(shù)據(jù)存放在存儲(chǔ)器中,根據(jù)各種不同的數(shù)據(jù)采集任務(wù),通過(guò)編程改變系統(tǒng)的路數(shù)、采樣率和信號(hào)幀格式等性能,以滿(mǎn)足各種采集任務(wù)的需要。在過(guò)程控制數(shù)據(jù)采集系統(tǒng)中,通??梢愿淖兊南到y(tǒng)參數(shù)有:采集點(diǎn);采樣率;數(shù)據(jù)字長(zhǎng);增益;幀格式。該系統(tǒng)可以具有多個(gè)遠(yuǎn)程控制采集單元,采用分散遠(yuǎn)置的方法,將各個(gè)遠(yuǎn)控采集單元放置在各個(gè)
2、被采集部位。本設(shè)計(jì)應(yīng)用性比較強(qiáng),設(shè)計(jì)系統(tǒng)可以作為生物培養(yǎng)液溫度監(jiān)控系統(tǒng),如果稍微改裝可以做熱水器溫度調(diào)節(jié)系統(tǒng)、實(shí)驗(yàn)室溫度監(jiān)控系統(tǒng)等等。課題主要任務(wù)是完成環(huán)境溫度數(shù)據(jù)檢測(cè),利用單片機(jī)實(shí)現(xiàn)溫度調(diào)節(jié)并通過(guò)計(jì)算機(jī)實(shí)施溫度監(jiān)控。設(shè)計(jì)后的系統(tǒng)具有操作方便,控制靈活等優(yōu)點(diǎn)關(guān)鍵詞:數(shù)據(jù)采集單片機(jī)溫度摘要i.目錄ii第1章前言1.1.1 背景和意義1.1.2 目的和內(nèi)容1.1.3 發(fā)展前景2.1.4 設(shè)計(jì)思想2.第2章設(shè)計(jì)要求4.2.1 控制要求4.2.2 受控對(duì)象的數(shù)學(xué)模型4.第3章系統(tǒng)的硬件配置.5.3.1 單片機(jī)和系統(tǒng)總線(xiàn).5.3.2 硬件介紹5.3.2.1 溫度傳感器5.3.2.2 核心處理單元Micr
3、oChipPIC16F877A單片機(jī)63.2.3 RS-232-C接口電路83.2.4 繼電器9.3.2.5 半導(dǎo)體降溫片及電阻加熱絲103.3 溫度控制系統(tǒng)的組成框圖113.4 溫度控制系統(tǒng)結(jié)構(gòu)圖及總述12第4章溫度控制系統(tǒng)軟件設(shè)計(jì)144.1 軟件設(shè)計(jì).144.2 MicrochipPIC16F877A單片機(jī)溫度控制系統(tǒng)軟件結(jié)構(gòu)圖144.3 單片機(jī)控制流程圖154.4 溫度變換程序模塊164.5 溫度非線(xiàn)性轉(zhuǎn)換程序模塊.164.6 通信協(xié)議的設(shè)計(jì)174.6.1 通信協(xié)議概述184.7 通信協(xié)議說(shuō)明194.7.1 信號(hào)幀分類(lèi)194.7.2 信號(hào)幀格式194.7.3 通信協(xié)議處理流程204.8
4、PC上位機(jī)的軟件設(shè)計(jì)224.8.1 PC軟件設(shè)計(jì)方法的選擇224.8.2 PC軟件通信方式的選擇234.8.3 具體實(shí)現(xiàn)方法254.9 單片機(jī)軟件設(shè)計(jì)294.9.1 波特率294.10 通信協(xié)議設(shè)計(jì)結(jié)論394.10.1 通信可靠性分析394.10.2 通信速度分析39第5章結(jié)論41致謝43參考文獻(xiàn)44iii第1章前言1.1 背景和意義為了確知某一測(cè)試對(duì)象的各項(xiàng)特性,我們常常要借助各種儀表和各種手段(直接測(cè)量或遙測(cè))來(lái)獲得各種各樣的測(cè)量結(jié)果(數(shù)據(jù))。但這些數(shù)據(jù)中包含有變換誤差、設(shè)備誤差以及在傳輸過(guò)程中(當(dāng)采用遙測(cè)方式時(shí))引入的各種干擾所造成的誤差等。而且這些數(shù)據(jù)量通常都很大,有意義的部分和無(wú)意義
5、的部分混雜在一起,如果不加取舍的直接應(yīng)用,必然會(huì)造成極大不便。傳統(tǒng)靠人工控制的溫度、濕度、液位等信號(hào)的測(cè)壓、力控系統(tǒng),外圍電路比較復(fù)雜,測(cè)量精度較低,分辨力不高,需進(jìn)行溫度校準(zhǔn)(非線(xiàn)性校準(zhǔn)、溫度補(bǔ)償、傳感器標(biāo)定等);且它們的體積較大、使用不夠方便,更重要的是參數(shù)的設(shè)定需要有其它儀表的參與,外界設(shè)備多,成本高,因而越來(lái)越適應(yīng)不了社會(huì)的要求。在對(duì)多類(lèi)型、多通道信號(hào)同時(shí)進(jìn)行檢測(cè)和控制中,傳統(tǒng)的測(cè)控系統(tǒng)能力有限。如何將計(jì)算機(jī)與各種設(shè)施、設(shè)備結(jié)合,簡(jiǎn)化人工操作并實(shí)現(xiàn)自動(dòng)控制,滿(mǎn)足社會(huì)的需求,成為一個(gè)很迫切的問(wèn)題.溫度控制是現(xiàn)代檢測(cè)技術(shù)的重要組成部分,在保證產(chǎn)品質(zhì)量、節(jié)約能源和安全生產(chǎn)等方面起著關(guān)鍵的作用
6、。隨著科學(xué)技術(shù)的發(fā)展,由單片集成電路構(gòu)成的溫度傳感器的種類(lèi)越來(lái)越多,測(cè)量的精度越來(lái)越高,響應(yīng)時(shí)間越來(lái)越短,因其使用方便、無(wú)需變換電路等特點(diǎn)已經(jīng)得到了廣泛的應(yīng)用,例如:以前常用的AD590和LM35等,以及現(xiàn)在得到廣泛應(yīng)用的DS1820、DS1821和DS1620等。本次畢業(yè)設(shè)計(jì)正是為了完成溫度數(shù)據(jù)的采集和控制而設(shè)計(jì)。1.2 目的和內(nèi)容新型數(shù)字化、網(wǎng)絡(luò)化傳感器在工程中的應(yīng)用具有極其重要的意義。這類(lèi)傳感器是各種參量送入計(jì)算機(jī)系統(tǒng),進(jìn)行智能監(jiān)測(cè)、控制的最前端。隨著科技的發(fā)展,數(shù)字化、網(wǎng)絡(luò)化傳感器應(yīng)用日益廣泛,以其傳統(tǒng)方式不可比擬的優(yōu)勢(shì)漸漸成為技術(shù)的趨勢(shì)和主流。由于傳感器能將各種物理量、化學(xué)量和生物量
7、等信號(hào)轉(zhuǎn)變?yōu)殡娦盘?hào),使得人們可以利用計(jì)算機(jī)實(shí)現(xiàn)自動(dòng)測(cè)量、信息處理和自動(dòng)控制,但是它們都不同程度地存在溫漂和非線(xiàn)性等影響因素。傳感器主要用于測(cè)量和控制系統(tǒng),它的性能好壞直接影響系統(tǒng)的性能。因此,不僅必須掌握各類(lèi)傳感器的結(jié)構(gòu)、原理及其性能指標(biāo),還必須懂得傳感器經(jīng)過(guò)適當(dāng)?shù)慕涌陔娐氛{(diào)整才能滿(mǎn)足信號(hào)的處理、顯示和控制的要求,而且只有通過(guò)對(duì)傳感器應(yīng)用實(shí)例的原理和智能傳感器實(shí)例的分析了解,才能將傳感器和信息通信和信息處理結(jié)合起來(lái),適應(yīng)傳感器的生產(chǎn)、研制、開(kāi)發(fā)和應(yīng)用。另一方面,傳感器的被測(cè)信號(hào)來(lái)自于各個(gè)應(yīng)用領(lǐng)域,每個(gè)領(lǐng)域都為了改革生產(chǎn)力、提高工效和時(shí)效,各自都在開(kāi)發(fā)研制適合應(yīng)用的傳感器,于是種類(lèi)繁多的新型傳感
8、器及傳感器系統(tǒng)不斷涌現(xiàn)。溫度傳感器是其中重要的一類(lèi)傳感器。其發(fā)展速度之快,以及其應(yīng)用之廣,并且還有很大潛力。1.3 發(fā)展前景近年來(lái),利用智能化數(shù)字式溫度傳感器以實(shí)現(xiàn)溫度信息的在線(xiàn)檢測(cè)已成為溫度檢測(cè)技術(shù)的一種發(fā)展趨勢(shì)。其應(yīng)用領(lǐng)域越來(lái)越廣泛,對(duì)其要求越來(lái)越高,需求越來(lái)越迫切。傳感器技術(shù)已成為衡量一個(gè)國(guó)家科學(xué)技術(shù)發(fā)展水平的重要標(biāo)志之一。數(shù)字化技術(shù)推動(dòng)了信息化的革命,在傳感器的器件結(jié)構(gòu)上采用數(shù)字化技術(shù),使信息的采集更加方便。1.4 設(shè)計(jì)思想為了提高對(duì)傳感器的認(rèn)識(shí)和了解,尤其是對(duì)溫度傳感器的深入研究以及其用法與用途,基于實(shí)用、廣泛和典型的原則而設(shè)計(jì)了本系統(tǒng)。本文利用單片機(jī)結(jié)合傳感器技術(shù)而開(kāi)發(fā)設(shè)計(jì)了這一溫
9、度數(shù)據(jù)采集監(jiān)控系統(tǒng)。文中傳感器理論單片機(jī)實(shí)際應(yīng)用有機(jī)結(jié)合,詳細(xì)地講述了利用熱敏電阻作為熱敏傳感器探測(cè)環(huán)境溫度的過(guò)程,以及實(shí)現(xiàn)熱電轉(zhuǎn)換的原理過(guò)程。本設(shè)計(jì)應(yīng)用性比較強(qiáng),設(shè)計(jì)系統(tǒng)可以作為生物培養(yǎng)液溫度監(jiān)控系統(tǒng),如果稍微改裝可以做熱水器溫度調(diào)節(jié)系統(tǒng)、實(shí)驗(yàn)室溫度監(jiān)控系統(tǒng)等等。課題主要任務(wù)是完成環(huán)境溫度檢測(cè),利用單片機(jī)實(shí)現(xiàn)溫度調(diào)節(jié)并通過(guò)計(jì)算機(jī)實(shí)施溫度監(jiān)控。設(shè)計(jì)后的系統(tǒng)具有操作方便,控制靈活等優(yōu)點(diǎn)。本設(shè)計(jì)系統(tǒng)包括溫度傳感器,A/D轉(zhuǎn)換模塊,輸出控制模塊,數(shù)據(jù)傳輸模塊,溫度顯示模塊和溫度調(diào)節(jié)驅(qū)動(dòng)電路六個(gè)部分。文中對(duì)每個(gè)部分功能、實(shí)現(xiàn)過(guò)程作了詳細(xì)介紹。整個(gè)系統(tǒng)的核心是進(jìn)行溫度監(jiān)控,完成了課題所有要求。第2章設(shè)計(jì)
10、要求2.1控制要求1生物繁殖培養(yǎng)液的溫度要保證在適于細(xì)胞繁殖的溫度內(nèi),這主要在控制程序設(shè)計(jì)中考慮。溫度控制范圍為1525,升溫、降溫階段的溫度控制精度要求為0.5度,保溫階段溫度控制精度為0.5度。溫度¥圖2-1溫度控制曲線(xiàn)2微機(jī)自動(dòng)調(diào)節(jié)正常情況下,系統(tǒng)投入自動(dòng)。3模擬手動(dòng)操作當(dāng)系統(tǒng)發(fā)生異常,投入手動(dòng)操作。4微機(jī)監(jiān)控功能顯示當(dāng)前被控量的設(shè)定值、實(shí)際值,控制量的輸出。2.2受控對(duì)象的數(shù)學(xué)模型生物繁殖的培養(yǎng)液主要用于生物的繁殖研究,而溫度是影響生物繁殖的重要因素。本系統(tǒng)要求長(zhǎng)時(shí)間監(jiān)視培養(yǎng)液的溫度,并對(duì)當(dāng)前的溫度進(jìn)行控制。本控制對(duì)象為生物繁殖用培養(yǎng)液,采用繼電器進(jìn)行控制。第3章系統(tǒng)的硬件配
11、置3.1 單片機(jī)和系統(tǒng)總線(xiàn)單片機(jī):PIC16F877A(PIC16F877A為美國(guó)MICORCHIP公司生產(chǎn)的帶A/D轉(zhuǎn)換的8位單片機(jī))。顯示系統(tǒng):商用計(jì)算機(jī)。用戶(hù)內(nèi)存:256MRAM。系統(tǒng)總線(xiàn):RS-232-C接口(又稱(chēng)EIARS-232-C)RS232C有25條線(xiàn),分為5個(gè)功能組,包括4條數(shù)據(jù)線(xiàn),11條控制線(xiàn),3條定時(shí)線(xiàn),7條備用線(xiàn)和未定義線(xiàn)。操作系統(tǒng):Windows2000/XP。3.2 硬件介紹計(jì)算機(jī),及計(jì)算機(jī)工作的外圍電路設(shè)備3.2.1 溫度傳感器溫度傳感器采用補(bǔ)償型NTC熱敏電阻其主要性能如下:1補(bǔ)償型NTC熱敏電阻B值誤差范圍小,對(duì)于阻值誤差范圍在5%的產(chǎn)品,其一致性、互換性良好
12、。適合于一般精度的溫度測(cè)量和計(jì)量設(shè)備。2外型結(jié)構(gòu)和尺寸:圖3-1溫度傳感器結(jié)構(gòu)尺寸圖3主要技術(shù)參數(shù):時(shí)間常數(shù)030S測(cè)量功率0.1mW使用溫度范圍-55+125C耗散系數(shù)6mW。額定功率0.5W4降功耗曲線(xiàn):圖3-2溫度傳感器功耗曲線(xiàn)圖3.2.2 核心處理單元MicroChipPIC16F877A單片機(jī)MicroChipPCI16F877A單片機(jī)主要性能:具有高性能RISCCPU僅有35條單字指令。除程序指令為兩個(gè)周期外,其余的均為單周期指令。運(yùn)行速度:DC-20M時(shí)鐘輸入。DC-200ns指令周期。8K*14個(gè)FLASH程序存儲(chǔ)器。368*8個(gè)數(shù)據(jù)存儲(chǔ)器(RAM)字節(jié)。引腳輸出和PIC16C
13、73B/74B/76/77兼容。中斷能力(達(dá)到14個(gè)中斷源)。8級(jí)深度的硬件堆棧。直接,間接和相對(duì)尋址方式上電復(fù)位(POR)。上電定時(shí)器(PWRT)和震動(dòng)啟動(dòng)定時(shí)器。監(jiān)視定時(shí)器(WDT),它帶有片內(nèi)可靠運(yùn)行的RC振蕩器??删幊痰拇a保護(hù)。低功耗睡眠方式。可選擇的振蕩器。低功耗,高速CMOSFLASH/EEPROM工藝。全靜態(tài)設(shè)計(jì)。在線(xiàn)串行編程(ICSP)。單獨(dú)5v的內(nèi)部電路用行編程(ICSP)能力。處理機(jī)讀/寫(xiě)訪(fǎng)問(wèn)程序存儲(chǔ)器。運(yùn)行電壓范圍2.0v到5v。高輸入/輸出電流25mA0商用,工業(yè)用溫度范圍。低功耗:在5v,4MHz時(shí)典型值小于2mA。在3v,32KHz時(shí)典型值小于20uAo典型的靜態(tài)
14、電流值小于1uA0外圍特征:Timer0:帶有預(yù)分頻的8位定時(shí)器/計(jì)數(shù)器。Timer1:帶有預(yù)分頻的16位定時(shí)器/計(jì)數(shù)器,在使用外部晶體時(shí)鐘時(shí)在SLEEP期間仍能工作。Timer2:帶有8位周期寄存器,預(yù)分頻和后分頻器的8位定時(shí)器/計(jì)數(shù)器2個(gè)捕捉器,比較器和PWM模塊。其中:捕捉器是16位的,最大分辨率為12.5nS。比較器是16位的,最大分辨率為200nSoPWM最大分辨率為是10位。10位多通道模/數(shù)轉(zhuǎn)換器。帶有SPI(主模式)和I2C(主/從)模式的SSP帶有9位地址探測(cè)的通用同步異步接收/發(fā)送(USART/RCI)。帶有RD,WR和CS控制(只40/44引腳)8位字寬的并行從端口。帶有
15、降壓的復(fù)位檢測(cè)電路。3.2.3 RS-232-C接口電路計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊二種方式。由于串行通訊方式具有使用線(xiàn)路少、成本低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線(xiàn)路特性的不一致而被廣泛采用。在申行通訊時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來(lái)進(jìn)行通訊。RS-232-C接口(又稱(chēng)EIARS-232-C)是目前最常用的一種串行通訊接口。它是在1970年由美國(guó)電子工業(yè)協(xié)會(huì)(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠(chǎng)家及計(jì)算機(jī)終端生產(chǎn)廠(chǎng)家共同制定的用于串行通訊的標(biāo)準(zhǔn)。它的全名是數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交
16、換接口技術(shù)標(biāo)準(zhǔn)”該標(biāo)準(zhǔn)規(guī)定采用一個(gè)25個(gè)腳的DB25連接器,對(duì)連接器的每個(gè)引腳的信號(hào)內(nèi)容加以規(guī)定,還對(duì)各種信號(hào)的電平加以規(guī)定。1 .接口的信號(hào)內(nèi)容:實(shí)際上RS-232-C的25條引線(xiàn)中有許多是很少使用的,在計(jì)算機(jī)通訊中一般只使用3-9條引線(xiàn)。RS-232-C最常用的9條引線(xiàn)的信號(hào)。2 .接口的電氣特性:在RS-232-C中任何一條信號(hào)線(xiàn)的電壓均為負(fù)邏輯關(guān)系。即:邏輯。“1;'-5-15V;邏輯“0'+5+15V。噪聲容限為2V。即要求接收器能識(shí)別低至+3V的信號(hào)作為邏輯“0;高到-3V的信號(hào)作為邏輯“1”。3 .接口的物理結(jié)構(gòu):RS-232-C接口連接器一般使用型號(hào)為DB-25
17、的25芯插頭座,通常插頭在DCE端插座在DTE端.一些設(shè)備與PC機(jī)連接的RS-232-C接口,因?yàn)椴皇褂脤?duì)方的傳送控制信號(hào),只需三條接口線(xiàn),即發(fā)送數(shù)據(jù)”、接收數(shù)據(jù)”和信號(hào)地”。所以采用DB-9的9芯插頭座,傳輸線(xiàn)采用屏蔽雙絞線(xiàn)。4 .傳輸電纜長(zhǎng)度:由RS-232C標(biāo)準(zhǔn)規(guī)定在碼元畸變小于4%的情況下,傳輸電纜長(zhǎng)度應(yīng)為50英尺,其實(shí)這個(gè)4%的碼元畸變是很保守的,在實(shí)際應(yīng)用中,約有99%的用戶(hù)是按碼元畸變1020%的范圍工作的,所以實(shí)際使用中最大距離會(huì)遠(yuǎn)超過(guò)50英尺其工作電路如下圖所示:曲IN加TOP愀卜,AUX1AI”磔泗儂AE叵B回E區(qū)0近司Rin.2麗611曲I的H除加崎雙恥R禍岫口疑v-Ci
18、-加陽(yáng)岫ER曲>.;Um_:曲6-10VDIP/S0CAPMWICE|iF|DEVICE置C2瓦口區(qū)幽豆尤10也復(fù)服圖21:訕詢(xún)后KmsuiiQ.imo.i0.1TILTMO,;訓(xùn)PIE敞rIC-232崎圖3-3RS-232-C接口電路3.2.4 繼電器繼電器是具有隔離功能的自動(dòng)開(kāi)關(guān),廣泛用于遙控,遙測(cè),通信,自動(dòng)控制,機(jī)電一體化及電力電子設(shè)備中,是最重要的控制元件之一。繼電器是在自動(dòng)控制電路中起控制與隔離作用的執(zhí)行部件,它實(shí)際上是一種可以用低電壓、小電流來(lái)控制大電流、高電壓的自動(dòng)開(kāi)關(guān)。在本系統(tǒng)中,繼電器控制的自動(dòng)溫度調(diào)節(jié)電路和PCI16F877A單片機(jī)中程序構(gòu)成溫度自動(dòng)監(jiān)測(cè)電路,實(shí)現(xiàn)對(duì)
19、生物培養(yǎng)液溫度的監(jiān)測(cè)和自動(dòng)控制。3.2.5 半導(dǎo)體降溫片及電阻加熱絲1.半導(dǎo)體制冷器是根據(jù)熱電效應(yīng)技術(shù)的特點(diǎn),采用特殊半導(dǎo)體材料熱電堆來(lái)制冷,能夠?qū)㈦娔苤苯愚D(zhuǎn)換為熱能,效率較高。其工作原理如圖3-4圖3-4半導(dǎo)體降溫片工作原理圖半導(dǎo)體制冷片由許多N型和P型半導(dǎo)體之顆?;ハ嗯帕卸桑鳱P之間以一般的導(dǎo)體相連接而成一完整線(xiàn)路,通常是銅、鋁或其他金屬導(dǎo)體,最彳爰由兩片陶瓷片像夾心餅乾一樣夾起來(lái),陶瓷片必須絕緣且導(dǎo)熱良好,通上電源之彳爰,冷端的熱量被移到熱端,導(dǎo)致冷端溫度降低,熱端溫度升高。2本控制系統(tǒng)是對(duì)生物培養(yǎng)液進(jìn)行溫度監(jiān)控,過(guò)快的溫度變化對(duì)生物繁殖顯然是不利的,因此在本系統(tǒng)中采用的是高阻抗小功
20、率加熱電阻絲進(jìn)行溫度的小范圍調(diào)節(jié)。103.3 溫度控制系統(tǒng)的組成框圖采用典型的反饋式溫度控制系統(tǒng),組成部分見(jiàn)圖3-5o其中數(shù)字控制器的功能由單片機(jī)實(shí)現(xiàn)。圖3-5溫度控制系統(tǒng)的組成框圖培養(yǎng)皿的傳遞函數(shù)為GMs)=KeT/«1s+1),a=LT,其中予為電阻加熱的時(shí)間常數(shù),e為電阻加熱的純滯后時(shí)間,6T為采樣周期。A/D轉(zhuǎn)換器可劃歸為零階保持器內(nèi),所以廣義對(duì)象的傳遞函數(shù)為G1(s)=Ke氏/(工1s+1)父(1-e-Ts)/s(3.1)廣義對(duì)象的Z傳遞函數(shù)為G(z)=ZKe”s/1s1)(1"不)/5i/-L_1/a_TT/it/t1(3.2)=Kz(1-e1)/1-eT/1z
21、)所以系統(tǒng)的閉環(huán)z傳遞函數(shù)為中(z)=Z(1-eJrs)/se、s1)=z-L4(1-e/)/(1-e/)(3.3)系統(tǒng)的數(shù)字控制器為11U(z)/E(z)=D(z)=:,(z)/Gi(z)(1_eTz)(1-eJ/")/K(1-eJ/e1)1-eJ/TzJ_(1_e二/日z,(3.4)寫(xiě)成差分方程即為u(k).eu(k-1)(1-ea)u(k-1-L)(1-e/)e(k)/K(1e,1)-(1-e/*'1e(k1)/K(1一e,1)(3令ao=(1-e1/)/K(1-e1)a1=(1-eJ/)eJ/1/K(1-eJ/1)T/b1-e,T/b2=1-e,得u(k)=aoe(k
22、)1ale(k-1)b|U(k-1)b2u(k-1-L)(3.6)式中e(k)第k次采樣時(shí)的偏差;e(k-1)第k-1次采樣時(shí)的偏差;u(k-1)第k-1次采樣時(shí)的偏差;3.4 溫度控制系統(tǒng)結(jié)構(gòu)圖及總述圖3-7溫度控制系統(tǒng)結(jié)構(gòu)圖圖3-7中溫度傳感器和MicroChipPIC16F877A單片機(jī)中的A/D轉(zhuǎn)12換器構(gòu)成輸入通道,用于采集培養(yǎng)皿內(nèi)的溫度信號(hào)。溫度傳感器輸出電壓經(jīng)過(guò)A/D轉(zhuǎn)換后的數(shù)字量與培養(yǎng)皿內(nèi)的溫度給定值數(shù)字化后進(jìn)行比較,即可得到實(shí)際溫度和給定溫度的偏差。培養(yǎng)皿內(nèi)的溫度設(shè)定值由MicroChipPIC16F877A單片機(jī)中程序設(shè)定。由MicroChipPIC16F877A單片機(jī)構(gòu)成
23、的數(shù)字控制器進(jìn)行比較運(yùn)算,經(jīng)過(guò)比較后輸出控制量控制由加熱和降溫電路構(gòu)成的溫度調(diào)節(jié)電路對(duì)培養(yǎng)皿中的培養(yǎng)液溫度進(jìn)行調(diào)節(jié)。同時(shí)通過(guò)電平轉(zhuǎn)換電路把當(dāng)前溫度傳輸?shù)缴逃糜?jì)算機(jī)的用口中,由計(jì)算機(jī)動(dòng)態(tài)的顯示培養(yǎng)皿中的溫度,正常情況下溫度控制由MicroChipPIC16F877A單片機(jī)自動(dòng)控制。必要時(shí),計(jì)算機(jī)也可以通過(guò)軟件來(lái)強(qiáng)制改變培養(yǎng)皿中溫度。13第4章溫度控制系統(tǒng)軟件設(shè)計(jì)4.1 軟件設(shè)計(jì)在進(jìn)行數(shù)據(jù)通信的軟件設(shè)計(jì)時(shí),必須解決好兩個(gè)方面的問(wèn)題:一是可靠性,二是速度。而這兩方面的問(wèn)題,可靠性是第一位的,速度只能是在可靠的基礎(chǔ)上的速度??煽靠焖俎D(zhuǎn)輸?shù)膶?shí)現(xiàn),需要PC-單片機(jī)軟件以及通信協(xié)議等各個(gè)環(huán)節(jié)的可靠和其間的相
24、互配合。4.2 MicrochipPIC16F877A單片機(jī)溫度控制系統(tǒng)軟件結(jié)構(gòu)圖圖4-1單片機(jī)溫度控制系統(tǒng)軟件結(jié)構(gòu)圖144.3單片機(jī)控制流程圖圖4-2單片機(jī)控制流程圖154.4 溫度變換程序模塊溫度傳感器在12c至ij60c輸出2.52V-1.02V,溫度起點(diǎn)為12C,滿(mǎn)量程為48CoMicroChipPIC16F877A單片機(jī)內(nèi)嵌的10位A/D轉(zhuǎn)換器對(duì)應(yīng)輸出的數(shù)字量為0000000000B1111111111R05V),應(yīng)用以下變換公式進(jìn)行變換:Ax=A0+(Am-A0)(Nx-No)/(Nm-N0)式中,Ao為一次測(cè)量?jī)x表的下限。Am為一次測(cè)量?jī)x表的上限。Ax實(shí)際測(cè)量值。No儀表下限對(duì)應(yīng)
25、的數(shù)字量。Nm儀表上限對(duì)應(yīng)的數(shù)字量。Nx測(cè)量值對(duì)應(yīng)的數(shù)字量。4.5 溫度非線(xiàn)性轉(zhuǎn)換程序模塊采用折線(xiàn)擬合法進(jìn)行線(xiàn)性化處理如表4-1所示,分為以下幾段:當(dāng)1.73V&Ax<2.52V時(shí),TC=0.06*WN+12當(dāng)1.40VWWN<1.73V時(shí),TC=0.03*WN+25當(dāng)1.24VWWN<1.40V時(shí),TC=0.016*WN+40當(dāng)1.06VWWN<1.24V時(shí),TC=0.018WN+50表4-1溫度曲線(xiàn)實(shí)際測(cè)量數(shù)據(jù)溫度(C)12131415161718電壓(V)2.522.482.472.442.402.392.37溫度(C)19202122232425電壓(V
26、)2.322.282.222.152.091.831.73溫度(C)26272829303132電壓(V)1.701.661.641.611.581.561.5416溫度(C)33343536373839電壓(V)1.531.501.481.461.451.431.41溫度(C)40414243444546電壓(V)1.401.381.371.351.321.301.29溫度(C)47484950515253電壓(V)1.271.261.251.241.221.201.19溫度(C)54555657585960電壓(V)1.171.161.121.111.091.071.06圖4-3溫度分段線(xiàn)
27、限等效圖4.6 通信協(xié)議的設(shè)計(jì)由于溫度采集和實(shí)施控制是通過(guò)單片機(jī)控制系統(tǒng)實(shí)現(xiàn),而微機(jī)完成溫度監(jiān)控,所以需要采用單片機(jī)和微機(jī)之間的通信協(xié)議。本設(shè)計(jì)應(yīng)用條件為傳輸距離不超過(guò)15米的短距離數(shù)據(jù)傳輸,且傳輸數(shù)據(jù)量較小,所以采用在控制領(lǐng)域里應(yīng)用較廣泛RS232C串行通信方式。針對(duì)近程小批量的數(shù)據(jù)通信,設(shè)計(jì)時(shí)采用3線(xiàn)制(RXD,TXD,17GND)軟握手的零MODEM方式。即:將PCM和單片機(jī)的發(fā)送數(shù)據(jù)線(xiàn)(TXD)”與接收數(shù)據(jù)(RXD)”交叉連接,二者的地線(xiàn)(GND)直接相連而其它信號(hào)線(xiàn)如握手信號(hào)線(xiàn)均不用,而采用軟件握手。這樣即可以實(shí)現(xiàn)預(yù)定的任務(wù),又可以簡(jiǎn)化電路設(shè)計(jì)節(jié)約了成本。由于RS232C是早期為促進(jìn)
28、公用電話(huà)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信而制定的標(biāo)準(zhǔn),其邏輯電平與TTL,MOS邏輯電平不同。邏輯0電平規(guī)定為+5+15V之間,邏輯1是電平為-5-15V之間。因此在將PC機(jī)和單片機(jī)的RXD和TXD交叉連接時(shí),必須進(jìn)行電平轉(zhuǎn)換。4.6.1 通信協(xié)議概述在設(shè)計(jì)PC單片機(jī)通信協(xié)議時(shí),需說(shuō)明一點(diǎn):在本系統(tǒng)的實(shí)際通信中,PC機(jī)是主控者單片機(jī)只是被動(dòng)接收者。采用這種通信協(xié)議較雙方互為主控者時(shí)簡(jiǎn)單。本通信協(xié)議的設(shè)計(jì)思想是基于幀傳輸方式。即在向RS232串口發(fā)送命令信號(hào),應(yīng)答信號(hào)及數(shù)據(jù)信號(hào)時(shí),是一幀一幀地發(fā)送的。為了使數(shù)據(jù)快速可靠地傳輸,將每一幀數(shù)據(jù)唯一對(duì)應(yīng)一命令幀。此時(shí)傳輸數(shù)據(jù)即執(zhí)行命令具體如下:1在PC讀數(shù)據(jù)時(shí),遵循饃
29、命令-等數(shù)據(jù)-報(bào)告”,即PC下達(dá)一命令,等待接收數(shù)據(jù),根據(jù)所接收數(shù)據(jù)的正誤向應(yīng)用程序報(bào)告此命令的執(zhí)行情況。2在PC寫(xiě)數(shù)據(jù)時(shí),遵循寫(xiě)命令-等回應(yīng)-報(bào)告”,即PC下達(dá)一寫(xiě)命令(此時(shí)所要寫(xiě)的數(shù)據(jù)含于此命令中),等待單片機(jī)發(fā)來(lái)的巴正確接收”的回應(yīng)信號(hào),并向應(yīng)用程序報(bào)告此命令執(zhí)行完畢。3如果在轉(zhuǎn)輸過(guò)程中,其間PC或MCU所接收任何一幀信號(hào)出現(xiàn)錯(cuò)誤時(shí),均會(huì)向?qū)Ψ桨l(fā)送重發(fā)此幀信號(hào)的請(qǐng)求。如果連續(xù)三次轉(zhuǎn)輸失敗,則退出通信并向應(yīng)用程序報(bào)告。184.7 通信協(xié)議說(shuō)明4.7.1 信號(hào)幀分類(lèi)1讀命令幀:當(dāng)PC讀數(shù)據(jù)時(shí),PC向PIC16F877A發(fā)送的命令信號(hào)。2寫(xiě)命令幀:當(dāng)PC寫(xiě)數(shù)據(jù)時(shí),PC向PIC16F877A發(fā)送
30、的命令信號(hào)(內(nèi)含所要寫(xiě)的數(shù)據(jù))o3數(shù)據(jù)幀:當(dāng)PC讀數(shù)據(jù)時(shí),PIC16F877A向PC發(fā)送的內(nèi)含數(shù)據(jù)信息的信號(hào)。4正回應(yīng)幀:當(dāng)PC寫(xiě)數(shù)據(jù)時(shí),PIC16F877A向PC報(bào)告數(shù)據(jù)已正確接收的信號(hào)。5重發(fā)命令幀:當(dāng)PC讀/寫(xiě)數(shù)據(jù)時(shí),PIC16F877A所接收的信號(hào)幀(讀/寫(xiě)命令幀)有誤時(shí)向PC發(fā)出的請(qǐng)求重發(fā)信號(hào)。6放棄命令幀:當(dāng)PC讀/寫(xiě)數(shù)據(jù)時(shí)出現(xiàn)了使程序無(wú)法正常執(zhí)行時(shí)PC或PIC16F877A向?qū)Ψ桨l(fā)出的退出通信的通知信號(hào)。4.7.2 信號(hào)幀格式1讀命令幀格式幀頭標(biāo)志器件地址起始地址長(zhǎng)度校驗(yàn)和幀尾標(biāo)志幀頭標(biāo)志(1Bit):表示此數(shù)據(jù)包屬于本串口通信協(xié)議,并為是否接收此包數(shù)據(jù)的標(biāo)志。幀類(lèi)型(1Bit)
31、:所用信號(hào)幀白識(shí)別標(biāo)志,即1.2.1信號(hào)幀分類(lèi)中的各類(lèi)型信號(hào)的標(biāo)志字節(jié)。器件地址(1Byte):PC所要訪(fǎng)問(wèn)的外部器件的地址即是哪一個(gè)外部器件。起始地址(2Byte):PC所要訪(fǎng)問(wèn)的器件的存貯器起始地址。長(zhǎng)度(1Byte):一次命令所轉(zhuǎn)輸?shù)臄?shù)據(jù)長(zhǎng)度。校驗(yàn)和(1Byte):此幀信號(hào)的校驗(yàn)字節(jié),為異或校驗(yàn)。19幀尾標(biāo)志(IByte):此幀信號(hào)的結(jié)束標(biāo)志。2寫(xiě)命令幀幀頭標(biāo)志器件地址起始地址長(zhǎng)度數(shù)據(jù)區(qū)校驗(yàn)和幀尾標(biāo)志數(shù)據(jù)區(qū):所要寫(xiě)的數(shù)據(jù)信息。其它分析同上3數(shù)據(jù)幀幀頭標(biāo)志巾長(zhǎng)度數(shù)據(jù)區(qū)校驗(yàn)字幀尾標(biāo)志長(zhǎng)度:所轉(zhuǎn)輸數(shù)據(jù)的長(zhǎng)度。數(shù)據(jù)區(qū):所轉(zhuǎn)輸?shù)臄?shù)據(jù)信息。其它分析同上4正響應(yīng)幀幀頭標(biāo)志空校驗(yàn)字幀尾標(biāo)志空無(wú)意義:為了
32、PIC16F877A編程的方便而加入。其它分析同上5重發(fā)幀幀頭標(biāo)志空校驗(yàn)字幀尾標(biāo)志其它分析同上6放棄幀幀頭標(biāo)志錯(cuò)誤碼校驗(yàn)字幀尾標(biāo)志錯(cuò)誤碼:00H執(zhí)行PC命令發(fā)放棄幀回應(yīng)被動(dòng)退出通訊。01HPIC16F877A單片機(jī)方寫(xiě)入芯片發(fā)生錯(cuò)誤主動(dòng)通知PC退出通訊。4.7.3 通信協(xié)議處理流程1數(shù)據(jù)分幀與數(shù)據(jù)重組20圖4-4串口數(shù)據(jù)發(fā)送過(guò)程圖4-5串口數(shù)據(jù)接受過(guò)程將應(yīng)用程序發(fā)送過(guò)來(lái)的數(shù)據(jù)作為一個(gè)數(shù)據(jù)流放在發(fā)送緩沖區(qū)中,通過(guò)通信協(xié)議進(jìn)行分幀一切割一發(fā)送。在接收端,分幀的數(shù)據(jù)去掉幀頭重新組合到接收緩沖區(qū)中,交給應(yīng)用程序處理,發(fā)送過(guò)程的示意如圖4.4,接收過(guò)程的示意圖如圖4.5。單片機(jī)用口通信軟件設(shè)計(jì)流程圖如下
33、:圖4-6單片機(jī)串口通信軟件流程圖4.8 PC上位機(jī)的軟件設(shè)計(jì)4.8.1 PC軟件設(shè)計(jì)方法的選擇在開(kāi)發(fā)PC上位機(jī)的通信程序中,人們常用的編程語(yǔ)言可分為3類(lèi):(1)直接面向底層硬件的匯編語(yǔ)言。(2)DOS環(huán)境下的高級(jí)編程語(yǔ)言,如:C語(yǔ)言等。(3)Windows環(huán)境下的高級(jí)編程語(yǔ)言,如:C+等。而在這3種方式22中Windows環(huán)境下的串口編程以其設(shè)備無(wú)關(guān)性,可移植性以及界面友好等特征而得到廣泛應(yīng)用。同時(shí)在Windows操作系統(tǒng)已經(jīng)占據(jù)統(tǒng)治地位的情況下,欲開(kāi)發(fā)良好的通信程序,利用Windows環(huán)境下的高級(jí)語(yǔ)言已漸成為必然的選擇。開(kāi)發(fā)Windows環(huán)境下的串口通信程序主要有以下2種方法:1利用Win
34、dowsAPI(ApplicationProgramInterface)用戶(hù)程序接口函數(shù);2.利用ActiveX控件;后者的主要特點(diǎn)是簡(jiǎn)單易學(xué),但前者的功能更為強(qiáng)大控制手段更為靈活。4.8.2 PC軟件通信方式的選擇在Win32環(huán)境下串行通信有兩種:主要方式即同步方式,異步方式兩種方式有各自的特點(diǎn)。在軟件設(shè)計(jì)時(shí)應(yīng)根據(jù)實(shí)際情況選擇合適的方式。1 .同步方式在同步方式中,讀用口的函數(shù)試圖在串口的接收緩沖區(qū)中讀取規(guī)定數(shù)目的數(shù)據(jù),直到規(guī)定數(shù)目的數(shù)據(jù)全部被讀出或設(shè)定的超時(shí)時(shí)間已到時(shí)才返回。例如:(以C+Builder編程語(yǔ)言為例下同)COMMTIMEOUTScto;inttimeConstant,tim
35、eMutiplier;cto.ReadTotalTimeoutConstant=timeConstant;/£置總超時(shí)常數(shù)cto.ReadTotalTimeoutMultiplier=timeMutiplier;/設(shè)置總超時(shí)系數(shù)SetCommTimeouts(m_hFile,&cto);/超時(shí)設(shè)置ReadFile(hComport,inBuffer,nWantRead,&nRealRead,NULL);/讀用口COMMTIMEOUTS結(jié)構(gòu)用于設(shè)置超時(shí),指定讀寫(xiě)函數(shù)的等待時(shí)間在ReadFile函數(shù)中hComport為待讀用口句柄;inBuffer為輸入緩沖區(qū)大小;nWa
36、ntRead為每次調(diào)用ReadFile時(shí),函數(shù)試圖讀出的字節(jié)數(shù);nRealRead為實(shí)際讀出的字節(jié)數(shù);最后一個(gè)參數(shù)值NULL代表23ReadFile#采用同步文件讀寫(xiě)方式。2 .異步方式異步方式中,利用Win32的多線(xiàn)程結(jié)構(gòu),可以讓串口的讀寫(xiě)操作在后臺(tái)進(jìn)行,而應(yīng)用程序的其它部分在前臺(tái)執(zhí)行例如:CreateFile(lpszPort,/打開(kāi)用口GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,/允許異步操作0);OVERLAPPEDlpOverlapped;COMMTIMEOUTScto;inttimeConsta
37、nt,timeMutiplier;cto.ReadTotalTimeoutConstant=timeConstant;股置總超時(shí)常數(shù)cto.ReadTotalTimeoutMultiplier=timeMutiplier;/設(shè)置總超時(shí)系數(shù)SetCommTimeouts(m_hFile,&cto);/超時(shí)設(shè)置lpOverlappedhEvent=CreateEvent(NULL.TRUE,FALSE,NULL);ReadFile(hComport,inBuffer,nWantRead,&nRealRead,&lpOverlapped);/讀用口lpOverlapped是1
38、個(gè)OVERLAPPED結(jié)構(gòu)變量,OVERLAPPED結(jié)構(gòu)用于指出讀寫(xiě)操作與其它操作的重疊為了實(shí)現(xiàn)線(xiàn)程間同步與通信,上面的代碼中用CreateEvent函數(shù)產(chǎn)生1個(gè)人工復(fù)位事件,并將其句柄賦予lpOverlapped白hEven城員這樣,在異步讀寫(xiě)完成時(shí),Windows95發(fā)送該事件信號(hào)。3 .兩種方式的比較異步方式利用多線(xiàn)程結(jié)構(gòu)來(lái)監(jiān)視通信設(shè)備,其最大優(yōu)點(diǎn)是程序?qū)?4收數(shù)據(jù)具有自主覺(jué)察能力。一旦通信線(xiàn)程查詢(xún)到數(shù)據(jù)已發(fā)送到用口上,線(xiàn)程自動(dòng)向應(yīng)用程序發(fā)送一個(gè)數(shù)據(jù)接收到的消息,應(yīng)用程序可用該消息來(lái)讀取通信設(shè)備傳來(lái)的數(shù)據(jù)。并且使用通信線(xiàn)程還不占用CPU時(shí)間,這樣系統(tǒng)實(shí)際上具有了同時(shí)控制多個(gè)通信設(shè)備(如
39、MODEM)的能力。因此在對(duì)系統(tǒng)強(qiáng)壯性要求較高的場(chǎng)合下應(yīng)采用異步方式。異步方式的優(yōu)點(diǎn)也恰是同步方式的缺點(diǎn)。使用同步方式時(shí)容易發(fā)生線(xiàn)程阻塞,從而使系統(tǒng)性能下降。但在某些場(chǎng)合下,該缺點(diǎn)可以通過(guò)一些措施盡可能地減小,而其簡(jiǎn)單易用的優(yōu)點(diǎn)卻是很好地體現(xiàn)出來(lái)。如果不考慮Win95的進(jìn)程和線(xiàn)程的問(wèn)題,僅在串口有數(shù)據(jù)時(shí),去讀用口緩沖區(qū)就可以了。此時(shí)確定串口讀取的時(shí)機(jī),握手協(xié)議及軟件糾錯(cuò)的實(shí)現(xiàn)是程序員應(yīng)考慮的主要問(wèn)題,也是減小線(xiàn)程阻塞所帶來(lái)的負(fù)面影響的主要措施??梢圆捎猛睫D(zhuǎn)輸方式的場(chǎng)合有如下一些特點(diǎn):1何時(shí)轉(zhuǎn)輸數(shù)據(jù)由PC機(jī)來(lái)決定,下位機(jī)只是被動(dòng)接收并執(zhí)行命令。2有限時(shí)間內(nèi),PC機(jī)命令可以執(zhí)行完畢并返回結(jié)果。而
40、不會(huì)使PC機(jī)處于長(zhǎng)時(shí)間等待。3每次所轉(zhuǎn)輸?shù)臄?shù)據(jù)的長(zhǎng)度是已知的,所轉(zhuǎn)輸?shù)臄?shù)據(jù)量是有限且比較小。我們?cè)陂_(kāi)發(fā)串行通信程序時(shí),分別應(yīng)用這兩種方式開(kāi)發(fā)都獲得了成功。鑒于應(yīng)用異步方式的安全性和普遍性4.8.3 具體實(shí)現(xiàn)方法下面以C+Builder為例,敘述PC機(jī)通信軟件的實(shí)現(xiàn)過(guò)程:1 .用口在Win32中,串口和其他通信設(shè)備是作為文件處理的。串口的打開(kāi)并閉讀取以及寫(xiě)入所用的函數(shù)與操作文件的函數(shù)相同。通信會(huì)話(huà)由調(diào)用CreateFile函數(shù)打開(kāi)串口開(kāi)始,CreateFile以讀訪(fǎng)問(wèn)權(quán)限,寫(xiě)訪(fǎng)問(wèn)權(quán)限或讀寫(xiě)訪(fǎng)問(wèn)權(quán)限打開(kāi)申口”并設(shè)定了對(duì)其是異步操作25方式。還是同步操作方式調(diào)用該函數(shù)打開(kāi)用口進(jìn)行讀寫(xiě)操作的例子如下:
41、mHandle=CreateFile(lpszPort,伸口名GENERIC_READ|GENERIC_WRITE,允許讀/寫(xiě)0,/獨(dú)占方式串口不能共享NULL,安全性屬性一般設(shè)為0OPEN_EXISTING,串口是已存在的不能建新端口lpOverlapped,/#步方式0/用口無(wú)模板文件應(yīng)設(shè)為0);如果調(diào)用成功函數(shù)返回串口的句柄賦給Handle,如果調(diào)用失敗則函數(shù)返回INVALID_HANDLE_VALUE。2 .用口對(duì)串口的初始化工作包括對(duì)波特率,數(shù)據(jù)位,停止位,奇偶校驗(yàn)位I/O緩沖大小以及超時(shí)等參數(shù)的設(shè)置。在調(diào)用API函數(shù)進(jìn)行串口初始化時(shí),波特率,數(shù)據(jù)位,奇偶校驗(yàn)停止位的信息包含于一個(gè)D
42、CB結(jié)構(gòu)中,而超時(shí)方面的信息則包含于COMMTIMEOUTS結(jié)構(gòu)中,一般在用CreateFile打開(kāi)串行口后,可以調(diào)用GetCommState函數(shù)來(lái)獲取用行口的初始配置。要修改用行口的配置應(yīng)該先修改DCB結(jié)構(gòu),然后再調(diào)用SetCommStateS數(shù)用指定的DCB結(jié)構(gòu)來(lái)設(shè)置用行口。例如:DCBdcb;GetCommState(mHandle,&dcb)/犢取DCB結(jié)構(gòu)dcb.BaudRate=9600/設(shè)置波特率為9600b/sdcb.ByteSize=8;/每個(gè)字符有8位dcb.Parity=NOPARITY;/無(wú)校驗(yàn)dcb.StopBits=ONESTOPBIT;/一個(gè)停止位SetC
43、ommState(hCom,&dcb)/保存至DCB結(jié)構(gòu)使設(shè)置值生效調(diào)用SetupComm函數(shù)可以設(shè)置用行口的輸入和輸出緩沖區(qū)的大小。26如果通信的速率較高則應(yīng)該設(shè)置較大的緩沖區(qū)。例如:SetupComm(mHandle,1024*2,1024*2)昨俞入輸出緩沖區(qū)的大小均為2K在用ReadFile和WriteFile讀寫(xiě)用行口時(shí),需要考慮超時(shí)問(wèn)題。如果在指定的時(shí)間內(nèi)沒(méi)有讀出或?qū)懭胫付〝?shù)量的字符,那么ReadFile或WriteFile的操作就會(huì)結(jié)束。要查詢(xún)當(dāng)前的超時(shí)設(shè)置應(yīng)調(diào)用GetCommTimeouts函數(shù)。該函數(shù)會(huì)填充一個(gè)COMMTIMEOUTS結(jié)構(gòu)調(diào)用SetCommTimeou
44、ts可以用某一個(gè)COMMTIMEOUTS結(jié)構(gòu)的內(nèi)容來(lái)設(shè)置超時(shí)。TimeOuts.ReadIntervalTimeout=0/犢間隔超時(shí)TimeOuts.ReadTotalTimeoutMultiplier=10讀時(shí)間系數(shù)TimeOuts.ReadTotalTimeoutConstant=100戚時(shí)間常量TimeOuts.WriteTotalTimeoutMultiplier=10/寫(xiě)時(shí)間系數(shù)TimeOuts.WriteTotalTimeoutConstant=100/后時(shí)間常數(shù)SetCommTimeouts(hCom,&TimeOuts);/保存設(shè)置值生效COMMTIMEOUTS結(jié)構(gòu)的
45、成員都以毫秒為單位??偝瑫r(shí)的計(jì)算公式是:總超時(shí)二時(shí)間系數(shù)及求讀/寫(xiě)的字符數(shù)十時(shí)間常數(shù)異步方式讀寫(xiě)用行口時(shí)雖然ReadFile()和WhteFile()在完成操作以前就可能返回但超時(shí)仍然是起作用的。這種情況下,超時(shí)規(guī)定的是操作的完成時(shí)間而不是ReadFile(刖W(wǎng)riteFile()的返回時(shí)間。3 .讀寫(xiě)串口初始化工作完成以后便可以根據(jù)通信協(xié)議合理安排讀/寫(xiě)函數(shù)ReadFile()和WriteFile()以讀寫(xiě)各種握手信息和數(shù)據(jù)信息等。其中何時(shí)讀取單片機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù)信息及應(yīng)答信息是重要的。此時(shí)采取的是事件驅(qū)動(dòng)法,即:設(shè)置通信資源上的事件掩碼為EV_RXCHAR。當(dāng)接收到一個(gè)字符并放入緩沖區(qū)后即
46、通知應(yīng)用程序例。27/PC發(fā)送一組命令至單片機(jī)WhteFile(mHandle,串口句柄pDataBuff,/存放數(shù)據(jù)緩種區(qū)iLen,/所寫(xiě)數(shù)據(jù)的長(zhǎng)度pdwWritten,/已寫(xiě)長(zhǎng)度操作前應(yīng)置為0lpOverlapped)/#步方式/設(shè)置通信事件掩碼DWORDdwMask=EV_RXCHAR;SetCommMask(m_hFile,dwMask)設(shè)置通信事件掩碼/等待通信事件的發(fā)生OVERLAPPEDos;memset(&os,0,sizeof(OVERLAPPED);os.hEvent=CreateEvent(NULLTRUEFALSENULL)if(!WaitCommEvent(m
47、_hFile,&dwEvtMask,&os)/重疊操作if(GetLastError()=ERROR_IO_PENDING)/無(wú)限等待重疊操作結(jié)果GetOverlappedResult(mHandle,&os,&dwTrans,true);/事件已發(fā)生安排讀操作ReadFile(mHandle,/用口句柄pDataBuff,/存放數(shù)據(jù)緩種區(qū)iLen,/所讀數(shù)據(jù)的長(zhǎng)度pdwRead,/儀際所讀長(zhǎng)度lpOverlapped)/#步方式在上例中,我們無(wú)限等待通信事件的發(fā)生。如果通信事件一直沒(méi)有發(fā)生則系統(tǒng)將不會(huì)繼續(xù)執(zhí)行。在實(shí)際程序設(shè)計(jì)中我們可以設(shè)置一時(shí)限,28超過(guò)此時(shí)限
48、通信事件未到則執(zhí)行相應(yīng)錯(cuò)誤處理此時(shí),只需將GetOverlappedResul函數(shù)替換為Wa計(jì)ForSingleObject函數(shù)此函數(shù)的聲明形式如下:WaitForSingleObject(HANDLEhEvent,事件句柄unsignedlongmTimeOuts/超時(shí)設(shè)置)4 關(guān)閉串口通信完畢調(diào)用CloseHandle()函數(shù)關(guān)閉串口例如CloseHandle(mHandle);/質(zhì)閉mHandle為打開(kāi)用口時(shí)返回的句柄4.9單片機(jī)軟件設(shè)計(jì)我們知道影響數(shù)據(jù)轉(zhuǎn)輸產(chǎn)生錯(cuò)誤的因素有:轉(zhuǎn)輸線(xiàn)分布參數(shù)上下位機(jī)間的波特率誤差現(xiàn)場(chǎng)干擾等。而針對(duì)近程小批量數(shù)據(jù)的通信,下位機(jī)的波特率誤差性是影響可靠通信的最
49、主要因素。所以在單片機(jī)軟件的設(shè)計(jì)時(shí)應(yīng)重點(diǎn)考慮并設(shè)置好波特率。4.9.1 波特率(1)波特率誤差來(lái)源分析1單片機(jī)的振蕩電路是由晶體及電容C1和C2構(gòu)成。晶振頻率主要由晶體的因有頻率決定,同時(shí)也與電容C1、C2及外界溫度有一定的關(guān)系。另外,晶體頻率的標(biāo)稱(chēng)值與實(shí)際值也不可能完全一致。2波特率最大允許誤差分析在異步串行通信方式1中單片機(jī)以16倍波特率的采樣速率對(duì)接收數(shù)據(jù)(RXD)不斷采樣,一旦檢測(cè)到由1到0的負(fù)跳變,16分頻計(jì)數(shù)器立刻復(fù)位,使之滿(mǎn)度翻轉(zhuǎn)的時(shí)刻恰好與輸入位的邊沿對(duì)準(zhǔn)。16分頻計(jì)數(shù)器把每個(gè)接收位的時(shí)間分為16份,在中間三位即7,8,9,狀態(tài)時(shí)位檢測(cè)器對(duì)RXD端的值采樣,并以3取2的表決方式
50、確定所接收的數(shù)據(jù)位。由此可見(jiàn),當(dāng)波特率的誤差使得在接收某位數(shù)據(jù)位時(shí),采樣點(diǎn)離該位的中點(diǎn)29半位間隔時(shí)將會(huì)對(duì)該位采樣兩次。即:欲使接收的第N位為正確位時(shí),須滿(mǎn)足下式成立:所允許的波特率誤差N>0,54故當(dāng)所傳輸?shù)囊粠瑪?shù)據(jù)為10位時(shí),所允許的最大的波特率允許誤差為5%對(duì)于其它常用的8位,9位,11位,一幀的串行傳輸,其最大的波特率允許誤差分別為6.25%,5.56%,和4.5%。3.減小波特率誤差的措施我們知道使用離散度小的晶振是減小波特率誤差的關(guān)鍵。如果,晶振的離散度已超過(guò)所允許的范圍,此時(shí)不宜用其標(biāo)稱(chēng)值,可以采用測(cè)量其波特率的方法來(lái)得出實(shí)際的晶振波特率值。(2)單片機(jī)軟件的實(shí)現(xiàn)1,設(shè)置通
51、信方式和波特率的值例MOVSCON,#50H初始化串口設(shè)為方式1MOVTMOD,#20H利用定時(shí)器1為波特率發(fā)生器并設(shè)為模式2MOVPCON,#XXH設(shè)置SMOD值MOVTH1,#XXH設(shè)置定時(shí)器初始值SETBTR1啟動(dòng)定時(shí)器12,等待接收PC機(jī)發(fā)來(lái)的信號(hào)幀并按通信協(xié)議作出相應(yīng)響應(yīng)。(1)本設(shè)計(jì)使用的單片機(jī)程序如下:#include<pic.h>H*voidINIT()(ADCON1=0X07;TRISC=0X80;TRISB=0X00;TRISD=0X00;30RD1=0;RD0=0;TRISA=0X0f;TRISE=0X00;)H*#include<pic.h>#i
52、nclude"init.h"#include"proc.h/*unsignedchari;unsignedintdelay;externunsignedchara;externunsignedchartemph;externunsignedchartempl;/*voidmain()/初始化INIT();for(delay=65536;delay>0;delay-)asm("clrwdt");temph=0x35;templ=0x30;doasm("clrwdt");PROCDIANPIN();31RC0=0;RC1=
53、0;while(1);)#include<pic.h>#include"tranpc.h"H*unionadresinty1;unsignedcharadre2;adresult;externunsignedintdelay;unsignedinttemp;unsignedinty;unsignedcharreceive;unsignedchara;externunsignedcharrxbuf;unsignedchartemph;unsignedchartempl;externunsignedchari;*voidPROCDIANPIN()ADCON0=0X8
54、9;ADCON1=0X84;ADIF=0;32ADGO=1;for(delay=0x8ff;delay>0;delay-)asm("nop");while(ADIF=0)asm("clrwdt");asm("clrwdt");ADIF=0;adresult.adre0=ADRESL;adresult.adre1=ADRESH;if(adresult.y1<=0x204)&&(adresult.y1>=0xD9)temp=0x10;for(y=0x204;adresult.y1<=y;adresult.y1=adresult.y1+0x07)temp+;if(temp=0x1a)temp=0x20;if(temp=0x2a)temp=0x30;if(temp=0x3a)temp=0x40;if(temp=0x4a)temp=0x50;if(temp=0x5a)temp=0x60;if(temp=0x6a)temp=0x70;if(temp=0x7a)temp=0x80;if(temp=0x8a)temp=0x90;if(temp=0x9a)temp=0x100;33TXPC(temp);RC0=1;RXDATAS();if(rxbu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 快遞員工培訓(xùn)課件
- 寵物養(yǎng)殖租賃合同范本
- 金屬橋架合同范本
- 小學(xué)生食品安全課件
- 高低壓配電工程施工承包合同
- 檢驗(yàn)滅火器合同書(shū)
- 關(guān)于采購(gòu)辦公用品的申請(qǐng)報(bào)告與審批流程說(shuō)明
- 民族局離婚協(xié)議書(shū)
- 中學(xué)生課外閱讀指南觀(guān)后感
- 法律咨詢(xún)行業(yè)法律建議免責(zé)
- 甲狀腺術(shù)后出血搶救流程
- 個(gè)人購(gòu)買(mǎi)家具合同
- 國(guó)際救生設(shè)備規(guī)則
- 第三方檢查應(yīng)對(duì)措施方案
- 2020年財(cái)產(chǎn)保險(xiǎn)公司部門(mén)職責(zé)和崗位說(shuō)明書(shū)
- 抽水臺(tái)班記錄表
- TBA19利樂(lè)灌裝機(jī)操作手冊(cè)
- 人力資源管理咨詢(xún)實(shí)務(wù)人力資源總監(jiān)手冊(cè)
- ESC指導(dǎo)心包疾病最全
- 自考本科學(xué)士學(xué)位英語(yǔ)詞匯
- (完整版)建筑模型設(shè)計(jì)與制作
評(píng)論
0/150
提交評(píng)論