畢業(yè)設(shè)計(論文)遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計_第1頁
畢業(yè)設(shè)計(論文)遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計_第2頁
畢業(yè)設(shè)計(論文)遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計_第3頁
畢業(yè)設(shè)計(論文)遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計_第4頁
畢業(yè)設(shè)計(論文)遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 摘 要本論文對遠(yuǎn)程溫度數(shù)據(jù)的采集與控制溫度進(jìn)行了詳細(xì)的闡述。主要講述了一個在計算機(jī)遠(yuǎn)程控制下,利用單片機(jī)對遠(yuǎn)程溫度進(jìn)行采集顯示并控制溫度的增長。同時通過pc機(jī)對pwm波輸出進(jìn)行pid調(diào)整。并給出其軟硬件設(shè)計及調(diào)試。在論文完成過程中,主要進(jìn)行了以下工作:1 對系統(tǒng)要求進(jìn)行分析,并設(shè)計系統(tǒng)的整體結(jié)構(gòu)2 把整體細(xì)分化,對每個模塊進(jìn)行詳細(xì)設(shè)計3 繪制原理圖和pcb圖,并制成實(shí)驗(yàn)板4 按照硬件電路,編寫軟件程序5 調(diào)試階段,調(diào)試各軟、硬件模塊,編寫測試程序,驗(yàn)證系統(tǒng)的可用性,最后制成系統(tǒng)樣機(jī)。 本論文主要對遠(yuǎn)程溫度采集與控制系統(tǒng)進(jìn)行了較詳細(xì)的闡述。軟件的三大模塊:采集模塊、pid控制、上下位機(jī)通訊,并

2、對主要芯片的使用做了說明。對硬件電路的數(shù)據(jù)采集、數(shù)據(jù)設(shè)定及顯示部分作較詳細(xì)的闡述。介紹了整體硬件的實(shí)現(xiàn)方案。另外,在本文中,還介紹了在繪制原理圖和pcb圖時所用的工具及需要注意的問題。例如,電源線、地線等問題,及檢查pcb圖時所用的高亮度顯示的方法。 關(guān)鍵詞:溫度采集 pid控制 上下位機(jī)通信 abstract : this study will discuss how to gather three temperature data .this system use the temperature sensor of 7109 .it could gather and keep temper

3、ature data . the computer sets temperature by communicating with scm.after gathering the temperature date ,it can display the data on the computer . in the completion of the thesis, i mainly carry through hereinafter job:1. analyze the requirement of the system, and design the whole structure of the

4、 system.2. subdivide the whole, and design each module in particular3. protract schematic plot and pcb plot, and crank out experiment board4. write software procedure according to hardware circuit5. in debugging moment, debug each software and hardware module, write testing procedure, validate the u

5、sability of the system, and finally crank out the system samplethis thesis will discuss the part of long-distance temperature s gathering and contron. the software is set by three part :1.the part of temperature gatering 2.the pid contron munication between computer andscm in addition, in the text,

6、it also introduces the tools used in protracting schematic plot and pcb plot and the problems required attendant. such as, power supply wire、ground wire and so on, and the way of highlight display in examining the pcb plot. i hope everybody can present criticisms and point out mistakes so that i can

7、 correct in the thesis, hereon, thank especially the tutor who help me accomplish my graduate design.keywords: temperature gather pid contron communication between compuer and scm 目 錄中英文摘要 (1)第一章 概述(3)1.1 本課題研究背景及意義.(4)1.2 本課題的可行性分析 .(4)1.3 設(shè)計要求.(5)1.4 預(yù)期研究成果 .(5)第二章 系統(tǒng)簡介 .(6) 2.1 系統(tǒng)總體方案設(shè)計.(6) 2.2 硬

8、件各模塊的設(shè)計 .(6) 第三章 軟件開發(fā)與調(diào)試 .(9)3.1 軟件設(shè)計.(9)3.2 測量模塊程序及框圖.(9) 3.2.1 數(shù)據(jù)采集子程序 .(11) 3.2.2 溫度參數(shù)計算子程序 .(12)3.2.3 pwm波生 .(15)3.2.4 下位機(jī)通信子程序 .(16)3.2.5 狀態(tài)子程序.(18) 3.3 上位機(jī)程序設(shè)計 (20)第四章 調(diào)試中出現(xiàn)的問題 .(26)結(jié)束語.(27)注釋、參考文獻(xiàn).(28)附錄.(29) 第一章 概 述1.1 本課題研究背景及意義現(xiàn)代工業(yè)設(shè)計、工程建設(shè)及日常生活中常常需要用到溫度控制,早期溫度控制主要應(yīng)用于工廠中,例如鋼鐵的水溶溫度,不同等級的鋼鐵要通過

9、不同溫度的鐵水來實(shí)現(xiàn),這樣就可能有效的利用溫度控制來掌握所需要的產(chǎn)品了。在現(xiàn)代社會中,溫度控制不僅應(yīng)用在工廠生產(chǎn)方面,其作用也體現(xiàn)到了各個方面,隨著人們生活質(zhì)量的提高,酒店廠房及家庭生活中都會見到溫度控制的影子,溫度控制將更好的服務(wù)于社會。 在電子產(chǎn)品廣泛應(yīng)用的時代。傳統(tǒng)的溫度控制系統(tǒng)目前發(fā)展到了電子智能溫度控制系統(tǒng)。它在一定程度上提高了溫度控制的精度,減低了現(xiàn)場工作人員的工作強(qiáng)度,提高了工作效率。此外電子智能溫度控制系統(tǒng)還可以與微機(jī)組成通訊系統(tǒng)。極大的方便的現(xiàn)場工作人員對系統(tǒng)的管理。本文詳細(xì)地介紹遠(yuǎn)程溫度控制的整個過程。1.2本課題的可行性分析溫度是工業(yè)生產(chǎn)中常見的工藝參數(shù)之一,任何物理變化

10、和化學(xué)反應(yīng)過程都與溫度密切相關(guān),因此溫度控制是生產(chǎn)自動化的重要任務(wù)。對于不同生產(chǎn)情況和工藝要求下的溫度控制,所采用的加熱方式,燃料,控制方案也有所不同。例如冶金、機(jī)械、食品、化工等各類工業(yè)生產(chǎn)中廣泛使用的各種加熱爐、熱處理爐、反應(yīng)爐等;燃料有煤氣、天然氣、油、電等;控制方案有pid控制,直接數(shù)字控制(ddc),推斷控制,預(yù)測控制,模糊控制(fuzzy),專家控制(expert control),魯棒控制(robust control),推理控制等。 本文介紹了一種pid水溫控制系統(tǒng)。該系統(tǒng)利用單片機(jī)可以方使地實(shí)現(xiàn)對pid參數(shù)的選擇與設(shè)定;也可以通過計算機(jī)與單片機(jī)的串行通訊,實(shí)現(xiàn)工業(yè)過程中的交互

11、式pid控制。它是用溫度傳感器將檢測到的實(shí)際爐溫a/d轉(zhuǎn)換,送入計算機(jī)中,與設(shè)定值進(jìn)行比較,得出偏差。對此偏差按pid算法進(jìn)行修正,求得對應(yīng)的控制量控制可控硅驅(qū)動器,調(diào)節(jié)電爐的加熱功率,從而實(shí)現(xiàn)對爐溫的控制。因此采集的爐溫數(shù)據(jù)精度至關(guān)重要。利用at89c51單片機(jī)實(shí)現(xiàn)溫度智能控制,能自動完成數(shù)據(jù)采集、處理、緩沖、轉(zhuǎn)換、并進(jìn)行pid實(shí)施控制和鍵盤終端處理及顯示,因個人設(shè)計的重點(diǎn)不同,我將在軟件上有詳細(xì)的論述,由于實(shí)驗(yàn)條件和器材的限制,本系統(tǒng)只能實(shí)現(xiàn)對單點(diǎn)溫度控制。1.3 設(shè)計要求以計算機(jī)為控制器,以單片機(jī)為采集器,完成對遠(yuǎn)程的溫度量的檢測,并對該信號有控制的作用。 技術(shù)指標(biāo):1)實(shí)現(xiàn)對遠(yuǎn)程溫度量

12、的采集,遠(yuǎn)程距離在50米;2)采集溫度量的精度在0.2;3) 實(shí)現(xiàn)對溫度量的控制;4)溫度量的控制精度在0.55)編制軟件調(diào)試完成上述功能1.4 預(yù)期研究成果以單片機(jī)為控制器,完成對遠(yuǎn)程的溫度量的檢測,并對該信號有控制的作用。 技術(shù)指標(biāo):1)實(shí)現(xiàn)對遠(yuǎn)程溫度量的采集,遠(yuǎn)程距離在50米;2)采集溫度量的精度在0.2;3) 實(shí)現(xiàn)對溫度量的控制;4)溫度量的控制精度在0.55)編制軟件調(diào)試完成上述功能第二章 系 統(tǒng) 簡 介2.1系統(tǒng)總體方案設(shè)計該系統(tǒng)主要由五大部分組成:測溫電路、a/d轉(zhuǎn)換電路,測量模塊(單片機(jī)),pwm輸出控制電路和以pc機(jī)為核心的上位機(jī).其中測量模塊是以at89c51單片機(jī)為核心進(jìn)

13、行設(shè)計的,這里充分利用了單片機(jī)的數(shù)據(jù)處理及實(shí)時檢測能力,并結(jié)合可編程控制器的邏輯控制能力,對爐溫信號進(jìn)行實(shí)時檢測.電爐溫度信號是由靈敏度高、測量準(zhǔn)確、性能可靠的熱敏型測溫電纜提供的,通過測量模塊處理后的信號,由上位機(jī)選通后經(jīng)信號轉(zhuǎn)換器傳輸給上位機(jī).上位機(jī)采用vb語言進(jìn)行編程,將其所接收的信號轉(zhuǎn)換成直觀的立體圖形、曲線、表格,清晰明了地顯示出電爐水溫狀況,操作人員可以調(diào)整pid參數(shù)來控制水溫加熱狀況,使操作人員的工作方式得到改進(jìn),提高了水溫控制的管理水平。此系統(tǒng)可以擴(kuò)展到多路溫度控制,通過上位機(jī)可以多路控制,并急時的調(diào)整各個設(shè)備的溫度控制情況。對出現(xiàn)的異常情況會發(fā)出警告,讓操作人員可以及早的發(fā)現(xiàn)

14、在問題解決問題。此系統(tǒng)還可以根據(jù)實(shí)際需要對此系統(tǒng)進(jìn)行適當(dāng)?shù)臄U(kuò)展,如加入測煙度、測濕度等其他功能,以更好地客戶的需要.2.2 硬件各模塊的設(shè)計 系統(tǒng)的硬件電路包括主機(jī)(8051)、溫度檢測、溫度控制、人機(jī)對話(鍵盤/顯示/報警)4個主要部分。圖2.1為系統(tǒng)的結(jié)構(gòu)圖。溫度顯示鍵盤主機(jī)a/d轉(zhuǎn)換器變送器傳感器光耦驅(qū)動器可控硅調(diào)功器電爐溫度檢測部分溫度控制部分 圖2.1 系統(tǒng)的結(jié)構(gòu)模塊圖下面對各部分電路分述如下: 1)主機(jī)課題通過單片機(jī)來實(shí)現(xiàn)對溫度的采集與控制,由于單片機(jī)是按工業(yè)測控環(huán)境要求設(shè)計的,抗干擾能力強(qiáng),環(huán)境要求不高,可適應(yīng)的溫度范圍寬,靈活性好,體積輕,可以降低系統(tǒng)的成本獲得較好的性能。89

15、c51是一個低功耗、高性能的含有4k字節(jié)快擦寫可編程/擦除只讀存儲器的8位cmos單片機(jī),時鐘頻率可達(dá)20mhz,與8031的指令和引腳完全兼容。芯片上的eeprom允許在線(+5v)電擦除、電寫入或采用通用的非易失存儲編程器對程序存儲器重復(fù)編程。一般專為 atmel at89cx 做的編程器均帶有這些功能,種單片機(jī)對開發(fā)設(shè)備的要求很低,開發(fā)時間也大大縮短。寫入單片機(jī)內(nèi)的程序還可以進(jìn)行加密。這些都是其他機(jī)種不能擬的,所以我們選用89c51。 2)溫度檢測這部分包括溫度傳感器、變送器和a/d轉(zhuǎn)換器三部分。傳感器可采用電流型傳感器,其隨著溫度的變化輸出響應(yīng)的線形變化的電流,該電流通過一定的電阻轉(zhuǎn)換

16、成響應(yīng)的電壓送入變送器。變送器可采用一定放大倍數(shù)的放大器,放大倍數(shù)以能輸出適合單片機(jī)處理的信號為宜。然后變送器輸出信號進(jìn)入a/d轉(zhuǎn)換器,因?yàn)橄到y(tǒng)控制精度在0.5 ,所以采用雙積分型a/d轉(zhuǎn)換器。 3)人機(jī)對話這部分包括鍵盤、顯示、和報警三部分電路。本系統(tǒng)設(shè)有3位led數(shù)碼顯示器,停止加熱時顯示設(shè)定溫度,啟動加熱時顯示當(dāng)前加熱爐溫度。采用串行口擴(kuò)展的動態(tài)顯示電路作為顯示接口電路。鍵盤設(shè)12個功能鍵,分別是09、復(fù)位鍵、啟動鍵。輸入的數(shù)字順序分別為為十位,個位,小數(shù)位,按復(fù)位鍵使顯示器清零,按啟動鍵使加熱爐按輸入的溫度工作。報警功能由蜂鳴器實(shí)現(xiàn)。當(dāng)由于意外原因?qū)е录訜釥t溫度高于設(shè)置溫度時,p1.6

17、口送出的低電平經(jīng)反向器驅(qū)動蜂鳴器鳴叫報警。4)溫度控制執(zhí)行輸出通道 電爐控制采用可控硅來實(shí)現(xiàn),雙向可控硅和電爐電阻絲串接在交流220v市電回路中。為了簡化通道的硬件結(jié)構(gòu),考慮到加熱系統(tǒng)具有較大的熱慣性,本系統(tǒng)采用脈沖寬度調(diào)制的控制方法。單片機(jī)的p1.7口通過光電隔離器和驅(qū)動器送到可控硅的控制端,輸出高電平時,使雙向可控硅導(dǎo)通,電熱絲通電;輸出低電平時,雙向可控硅截止,電熱絲斷電5)其它可擴(kuò)展電路對于要求更高的系統(tǒng),在現(xiàn)有電路的基礎(chǔ)上,我們還可以視需要自行擴(kuò)展以下接口電路:(1) 時時鐘電路:連接實(shí)時時鐘芯片ds12887可以獲得長的采樣周期,顯示年、日、時、分、秒,而起片內(nèi)帶有的114b非易失

18、性ram,可以來存入需長期保存但有時也需變更的數(shù)據(jù)。如采樣周期、pid控制算法的系數(shù)kp、ki、kd等。(2) “看門狗”電路:連接集成監(jiān)控芯片max705可實(shí)現(xiàn)對主電源vcc的監(jiān)控,提高系統(tǒng)的可靠性。第三章 軟件設(shè)計3.1軟件設(shè)計 軟件設(shè)計的成功與否關(guān)系到整個系統(tǒng)能否具有使用靈活。操作簡便,可靠性強(qiáng)等優(yōu)點(diǎn),而設(shè)計良好胡軟件能夠做到在較少地改變硬件電路的情況下,方便地改進(jìn)系統(tǒng)的功能,這就對軟件的設(shè)計提供了較高的要求。 遵循“自頂向下,逐步求精“的結(jié)構(gòu)化設(shè)計原則,先將任務(wù)層次化,然后對每一層再逐步細(xì)化,每一層實(shí)現(xiàn)的功能盡量是獨(dú)立的,彼此之間互相影響應(yīng)該較少,然后按照與劃分相反的過程編寫,調(diào)試程序

19、,待所有子程序都編寫設(shè)計通過后,依它們之間的邏輯順序組合起來,構(gòu)成完整的程序軟件。采用這種方法,不僅使軟件可讀性好,維護(hù)方便且易于修改移植。如用戶有特殊要求需要改動軟件時,則只需修改或替換某子任務(wù)所對應(yīng)的子程序即可,從而加快了系統(tǒng)研制進(jìn)度,縮短了軟件開發(fā)周期。 本系統(tǒng)要完成的任務(wù)有兩大部分:測量模塊任務(wù)和上位機(jī)監(jiān)管任務(wù)。測量模塊任務(wù)又分為數(shù)據(jù)采集,數(shù)據(jù)計算,串行通訊等子任務(wù):上位機(jī)監(jiān)管任務(wù)分為實(shí)時顯示,曲線瀏覽,串行通訊及pid參數(shù)調(diào)整等任務(wù)。系統(tǒng)軟件設(shè)計任務(wù)如圖3-1所示。3.2 測量模塊程序框圖 測量模塊任務(wù)又包括數(shù)據(jù)采樣,數(shù)據(jù)計算,串行通信,pwm輸出等子任務(wù)。測量模塊的主程序流程框圖3

20、-2所示 。測量模塊程序是一個閉環(huán)程序,除初始化程序外,程序在采樣,計算,串行數(shù)據(jù)發(fā)送pwm輸出四個過程之間循環(huán)運(yùn)行。測量模塊對輸入溫度信號同時數(shù)據(jù)采集,采樣5個周期(100ms)。利用平均算法對采樣數(shù)據(jù)進(jìn)行處理,得到溫度測量結(jié)果,此后通過串行口將測量結(jié)果以一定的格式發(fā)送給信號轉(zhuǎn)換器.總?cè)蝿?wù)上位監(jiān)督任務(wù)測量模塊任務(wù)實(shí)時顯示曲線瀏覽串行通訊串行通訊數(shù)據(jù)計算數(shù)據(jù)采集 圖 3.1 系統(tǒng)軟件實(shí)現(xiàn)下位機(jī)主程序框圖:初始化返回調(diào)用led顯示子程序調(diào)用bcd碼轉(zhuǎn)化子程序調(diào)用溫度檢測子程序開t0,t1,外部中斷,串行中斷 圖 3.2主程序框圖 在本程序中總共使用了t0,t1中斷,外部中斷0及串口中斷,t0中斷

21、用產(chǎn)生pwm波,t1用于產(chǎn)生波特率為9600hz,外部中斷0用鍵盤輸入,串口中斷用于接收上位機(jī)數(shù)據(jù). 3.2.1數(shù)據(jù)采集子程序流程框圖 數(shù)據(jù)處理采集子程序框圖如 圖3-3所示.1. 采樣前首先對采樣保持器發(fā)出保持信號,然后等待a/d轉(zhuǎn).換完結(jié)束標(biāo)志2. 讀取ad12位數(shù)據(jù),存入內(nèi)存.程序中變量定義:j7109l #9fffh 7109低位數(shù)據(jù)地址j7109h #0afffh 7109 高位數(shù)據(jù)地址temptestl #3ah 溫度低八位數(shù)據(jù)temptesth #3bh 溫度高四位數(shù)據(jù)a/d溫度檢測子程序:等待a/d轉(zhuǎn)換標(biāo)志位dptr指向低位地址讀取低位數(shù)據(jù)dptr指向高位地址讀取高位數(shù)據(jù)結(jié) 束

22、 圖3.3數(shù)據(jù)采集子程序流程框圖程序代碼: temptest: movdptr,#j7109l;取7109低位數(shù)據(jù)地址 here:jnbie0,here;等待ad轉(zhuǎn)換完畢 movxa,dptr ;讀低8位數(shù)據(jù)結(jié)果 movtemptestl,a;存入temptestl內(nèi)存地址(3ah) nop nop movdptr,#j7109h;取7109高位數(shù)據(jù)地址 movxa,dptr;讀高8位數(shù)據(jù)結(jié)果 movtemptesth,a;存入temptesth內(nèi)存地址(3bh) ret;結(jié)束 3.2.2溫度參數(shù)計算子程序流程框圖 溫度參數(shù)計算子程序框圖如圖3-4所示.1. 測溫點(diǎn)溫度信號經(jīng)過三運(yùn)放電路把信號

23、放大傳給 xxxxx的a/d轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換.2. cpu經(jīng)過計算后將所得溫度數(shù)字結(jié)果傳給上位機(jī).3. 程序詢問是否結(jié)束,如結(jié)束則返回和程序. 程序中變量定義: led0 #30h led數(shù)據(jù)顯示0位 led1 #31h led數(shù)據(jù)顯示1位 led2 #32h led數(shù)據(jù)顯示2位bcd碼轉(zhuǎn)換子程序:讀取低位數(shù)據(jù)轉(zhuǎn)化為相應(yīng)溫度值讀取高位數(shù)據(jù)轉(zhuǎn)化為相應(yīng)溫度值結(jié)束 圖3-4溫度參數(shù)計算 程序代碼:bcd: mov led0,#00h;清顯示數(shù)據(jù)為0mov led1,#00hmov led2,#00hmov a,temptestl;先轉(zhuǎn)低八位數(shù)據(jù)mov b,#29h ;1度的十六進(jìn)制值29h div a

24、bmov led1,a;得到溫度個位值mov a,#04h;0.1度的十六進(jìn)制值04hxch a,bdiv abmov led0,a;得到溫度小數(shù)值mov a,bclr csubb a,#02h;四舍五入jc temph;轉(zhuǎn)化完轉(zhuǎn)入轉(zhuǎn)換高四位mov a,led0;四舍五入inc amov led0,atemph: ;高位不為0相當(dāng)于100h,轉(zhuǎn)換為溫度6.2度,有多少個子就只要加6.2度即可mov a,temptesthmov r1,amov b,#02h;小數(shù)位加2div abmov b,amov a,led0add a,bmov b,asubb a,#0ah;判斷大于10,大于則清零,高一

25、位加一jc goonmov led0,amov a,led1inc asubb a,#0ahjz incled2mov led1,ajmp goon1incled2:mov a,led2inc amov led2,asjmp goon1goon:mov a,bmov led0,agoon1:cjne a,#00h,temlprettemlp: ;高位不為0相當(dāng)于100h,轉(zhuǎn)換為溫度6.2度,有多少個子就只要加6.2度即可mov a,#02h add a,led0mov b,aclr csubb a,#0ahjc llrmov led0,amov a,#01hadd a,led1mov b,as

26、ubb a,#0ah jz inc1mov a,bmov led1,asjmp add6inc1:mov led1,#00hmov a,led2inc amov led2,asjmp add6llr:mov a,bmov led0,a clr cadd6: ;個位加6mov a,#06hadd a,led1mov b,asubb a,#0ah;大于10否,大于則清零,高一位加1jc rrhmov led1,amov a,led2inc amov led2,asjmp toutrrh:mov a,bmov led1,atout:djnz r1,temlp ;轉(zhuǎn)換完否,是則結(jié)事,否則繼續(xù) ret

27、3.2.3 內(nèi)部時鐘t0產(chǎn)生pwm波框圖pwm波產(chǎn)生器框圖如圖3-41.pwm波用于后向通道,控制溫度加熱程度.通過t0的定時器中斷來產(chǎn)生一定占空比的pwm波,此pwm波可通過上位機(jī)的pid計算產(chǎn)生pwm波參數(shù).2. pwm周期一般選擇一個足夠小的采樣周期,通常應(yīng)小于對象的純延遲時間t的十分之一.估算可知:用1kw電爐加熱1l水并使水溫上升1度所需時間大于4s,因此可取t=0.4s.gate c/t m1 m0 gate c/t m1 m03. at89c52單片機(jī)內(nèi)有三個可編程的定時計數(shù)器,它們具有兩種工作模式(計數(shù)模式和定時模式)及4種工作方式(方式0,方式1,方式2和方式3)。其工作方式

28、控制寄存器格式如下:t1方式字段 t0方式字段程序中變量定義: pwml #45h pwm波低位參數(shù) 既tl0 pwmh #46hpwm波高位參數(shù) 既th0 t0中斷子程序框圖:關(guān)中斷,入堆棧p3.5(pwm輸出口) 取反取出pwm波參數(shù),送th0,tl0開中斷,出堆棧結(jié)束圖3-4 t0中斷 程序代碼:intt0: clr ea;關(guān)總中斷,clr tr0;關(guān)t0clr et0mov b,apush psw;入堆棧push dplpush dphpush bcpl p3.5;pwm口反mov a,pwmlmov b,amov a,#0ffh;產(chǎn)生pwm波的占空比subb a,bmov pwml,

29、a;占空比由pwml,和pwmh決定mov a,#0ffhsubb a,pwmhmov pwmh,amov tl0,pwmlmov th0,pwmhpop b出堆棧pop dphpop dplpop pswmov a,bsetb ea;開中斷setb tr0setb et0reti3.2.4 下位機(jī)通信子程序串行接收子程序如圖3.51. 此程序用于接收上位機(jī)發(fā)送的數(shù)據(jù),主要是pwm參數(shù)2. mcs-51單片機(jī)內(nèi)部的串行口,有兩個物理上獨(dú)立地接收,發(fā)送緩沖器sbuf,可同時發(fā)送,接收數(shù)據(jù),發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,兩個緩沖器共用一個子節(jié)地址(99h).3. 串行口控

30、制寄存器scon sm0 sm1 sm2 ren tb8 rb8 ti ri 位地址 9fh 9eh 9dh 9ch 9bh 9ah 99h 98h串行中斷子程序框圖:程序變量定義:buff #50h sbuf 暫存數(shù)據(jù)地址關(guān)中斷,入堆棧從sbuf讀出數(shù)據(jù)調(diào)用狀態(tài)判斷子程序開中斷,出堆棧結(jié) 束圖3.5下位機(jī)通信此串口通信的波特率是9600hz,由t1產(chǎn)生,方式1,公式:波特率=2smod/32*定時器1的溢出率,計算得,tl1:fah,th1:fah程序代碼:comm: clr ea;關(guān)中斷clr esclr ripush acc;入堆棧push pswpush dplpush dphmov

31、a,sbuf;從sbuf取數(shù)據(jù)mov buff,a;放入暫存器clr esmov sbuf,a ;收到上位機(jī)的信息后發(fā)送反饋信確定收到數(shù)據(jù)?wait:jnb ti,waitclr tisetb eslcall judger;判斷當(dāng)前通信狀態(tài)既接收數(shù)據(jù)還是命令字pop dph;出堆棧pop dplpop pswpop accseb es;重新開中斷setb eareti3.2.5通信時判斷當(dāng)前狀態(tài)子程序通信時判斷當(dāng)前狀態(tài)子程序如圖3.6 1. 此子程序在下位機(jī)接收到數(shù)據(jù)時,判斷當(dāng)前接收數(shù)據(jù)的狀態(tài)2. 確定當(dāng)前數(shù)據(jù)是接收pwm的低位還是高位程序變量定義: point #25h 高低位數(shù)據(jù)標(biāo)志位通信

32、時判斷當(dāng)前狀態(tài)子程序:讀取狀態(tài)標(biāo)志接收數(shù)據(jù)?yyyyyesys 低位數(shù)據(jù)?yes yes數(shù)據(jù)存入pwml退 出數(shù)據(jù)存入pwmh退 出圖3.6通信時判斷當(dāng)前狀態(tài)程序代碼:judger:mov a,#55h;判斷當(dāng)前是否接收cjnea,state,next;mova,buff;movstate,aret next:movdptr,#station mova,state;當(dāng)前接收狀態(tài) movb,a rla adda,b mova,#00h ; jmpa+dptr station: ljmp stab0;pwm參數(shù)接收 ljmp stab1 ljmp stab2 ;. stab0:;pwm參數(shù)接收 m

33、ovc,point;判斷是高位數(shù)據(jù)還是低位數(shù)據(jù) jcthll mova,buff movpwmh,a sjmpout0 thll: movpwml,a out0: cplpoint;取完一組數(shù)據(jù)高低位標(biāo)志位取反 ret stab1: ret stab2: ret ;結(jié)束 3.3 上位機(jī)程序設(shè)計 隨著計算機(jī)的日益發(fā)展,微機(jī)圖形監(jiān)控在各種系統(tǒng)及其自動化方面得到了廣泛的應(yīng)用.用圖形來顯示被控對象(鍋爐,發(fā)電廠,調(diào)度所)在操作過程中的狀態(tài),清晰明了,形象直觀,使操作人員的工作方式得到改進(jìn),效率得到很大提高.microsoft公司的visual basic 提供了開發(fā)windows 應(yīng)用程序的最迅速,最

34、簡捷的方法,利用visual basic 開發(fā)應(yīng)用程序.根據(jù)遠(yuǎn)程溫度測控實(shí)際情況,為實(shí)現(xiàn)其功能,直觀立體地顯示溫度測控的情況,確定上位機(jī)軟件具體任務(wù)圖如圖3-6所示.上位機(jī)的程序是采用vb語言編寫的. 上位機(jī)控制數(shù)據(jù)發(fā)送pid參數(shù)修正曲線顯示數(shù)據(jù)實(shí)時顯示 圖3.7上位機(jī)程序設(shè)計3.3.1 數(shù)據(jù)實(shí)時顯示 實(shí)時顯示是進(jìn)入監(jiān)控系統(tǒng)出現(xiàn)的第一個界面,可以完成對所有測量點(diǎn)的溫度顯示.就是實(shí)時顯示圖形功能,是根據(jù)上位機(jī)軟件任務(wù)要示進(jìn)行設(shè)計的,用戶可以清楚看到所測溫度變化.可以對溫度加熱過程中出現(xiàn)問題用閃爍變紅報警,溫度上限的報警值,用戶可自行設(shè)定.3.3.2 曲線瀏覽 曲線瀏覽可以清楚看到溫度變化趨勢,對

35、出現(xiàn)異常情況,可提醒操作員采取措施,可以針對性的做出調(diào)整.必免出現(xiàn)災(zāi)難性的后果 .3.3.3報表及統(tǒng)計表格 是為了特殊要求所設(shè)計的,如果需要分析溫度加熱過程各時段,或?qū)Ω鼽c(diǎn)溫度變化做分析(此系統(tǒng)也可做為多路數(shù)據(jù)采集系統(tǒng))3.3.4 串行通信管理在上位機(jī)監(jiān)控程序中,串行通信是實(shí)現(xiàn)所有功能的前提.vc利用mscomm控件可以實(shí)現(xiàn)串行口通信功能. mscomm控件提供了一毓標(biāo)準(zhǔn)通信命令的使用界面,使用它可以建立與串行口的連接,發(fā)出命令并交換數(shù)據(jù),以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯誤.3.3.4.1 串行通信 計算機(jī)通過自身的串行口與外部設(shè)備進(jìn)行數(shù)據(jù)傳輸.當(dāng)數(shù)據(jù)從cpu經(jīng)過串行口發(fā)送出去時,字節(jié)數(shù)

36、據(jù)被轉(zhuǎn)換為串行的位.在接收數(shù)據(jù)時,串行的位將轉(zhuǎn)換為字節(jié)數(shù)據(jù). 要完成 數(shù)據(jù)的傳輸,在上位機(jī)一邊,windows使用了通信驅(qū)動程序 comm.drv,以便使用標(biāo)隹的windows api 函數(shù)發(fā)送和接收數(shù)據(jù).驅(qū)動程序通常由串行設(shè)備制造商提供.在使用mscomm 控件,實(shí)際上使用了api函數(shù),api函數(shù)將被comm.drv解釋并傳輸給設(shè)備驅(qū)動程序,作為vb程序員,只需要關(guān)心communications 控件提供的對windows 通信驅(qū)動程序的api 函數(shù)的接口,即只需設(shè)置和監(jiān)視mscomm控件的屬性和事件.3.3.4.2 建立串行口連接 使用 mscomm控件 的第一步是建立與串行口的連接,建立

37、串行端口連接使用的屬性有:1. commport設(shè)置或返回通信端口號。利用此屬性打開革個串口,但若將該值設(shè)置為系統(tǒng)中并在不存在的com端品,將會產(chǎn)生錯誤。2. settings 以字符串形式設(shè)置或返回波特率,奇偶校驗(yàn)指定是否進(jìn)行數(shù)據(jù)校驗(yàn),數(shù)據(jù)位指定了一個數(shù)據(jù)塊的比特數(shù),停止位指出何時才能接收到一個數(shù)據(jù)塊。3. portopen 設(shè)置或返回通信端口的狀態(tài),以及打開和關(guān)閉端口。在指定要打開的端口,以及如何進(jìn)行數(shù)據(jù)通信之后,就可以使用portopen屬性建立連接了。它是一個布爾值(取值范圍為true或false).3.3.4.3 設(shè)置管理接收和發(fā)送緩沖區(qū)在端口被打開后,就創(chuàng)建了接收和發(fā)送緩沖區(qū).為了

38、管理這些緩沖區(qū), mscomm控件提供了一系列屬性.1.inbuffersize和outbuffersizeinbuffersize和outbuffersize屬性指定了為接收和發(fā)送緩沖區(qū)分 的內(nèi)存數(shù),缺省值為1024。這兩個值越大,程序中可用的內(nèi)在就越少,但緩沖區(qū)太小,緩沖區(qū)容易溢出。2. rthreshold和sthreshold rthreshold和sthreshold屬性表示在oncomm事件發(fā)生之前,接收緩沖區(qū)或發(fā)送緩沖區(qū)中可以接收的字符數(shù)。omcomm事件用來監(jiān)視和響應(yīng)通信狀態(tài)的變化。如果將屬性的值設(shè)置為0,就可以避免發(fā)生oncomm事件。3.inputlen inputlen屬

39、性為0,那么在使用input屬性時,communication控件將讀出接收緩沖區(qū)中的所有內(nèi)容。如果讀取以定長的數(shù)據(jù)塊的形式格式化了的數(shù)據(jù)時,則需要將該屬性設(shè)置為合適的值。4.input和output input屬性用來保存和接收緩沖區(qū)獲取的數(shù)據(jù)。output屬性用來向發(fā)送緩沖區(qū)發(fā)出命令和數(shù)據(jù)。5.inputmode inputmode 置為如下常數(shù): cominputmodetext或cominpoutmodebinary,即可分別以文本或二進(jìn)制格式接收傳入的數(shù)據(jù)。對ansi字符集的數(shù)據(jù)應(yīng)使用文本格式;面對其它數(shù)據(jù)使用二進(jìn)制。 6.inbuffercount和outbuffercount i

40、nbuffercount 屬性可用 于獲得接收緩沖區(qū)中字節(jié)的數(shù)目,可用oubuffercount屬性監(jiān)視發(fā)送緩沖區(qū)中的字節(jié)數(shù)日。將這兩個屬性值設(shè)置為0可分別將接收和發(fā)送緩沖區(qū)清空。7.oncomm事件和commevent屬性 可以使用oncomm事件和commevent屬性捕捉并檢查通信事件和錯誤的值。在發(fā)生通信事件時,將觸發(fā)oncomm事件,commevent屬性的值將被改變。因此在發(fā)生oncomm事件的時候,可以檢查commevent屬性的值。由于通信是不可預(yù)料的,捕捉這此事件和錯誤將有助于使應(yīng)用程序?qū)@些情況作出相應(yīng)的反應(yīng)。3.4 pid計算一個經(jīng)典的控制系統(tǒng)是一個反饋控制系統(tǒng),通常由一

41、個被控對象,一個控制器,一個給定信號,還有傳感器組成,通常給定信號要和傳感器反饋過來的反饋信號進(jìn)行比較得到誤差作為控制器的輸入,而控制器的輸出用來控制被控對象,它是被控對象的輸入。下面是它的結(jié)構(gòu)簡圖: 圖3.8 一個控制系統(tǒng)的結(jié)構(gòu)簡圖 而控制器又以 pid 控制器最為經(jīng)典,一個 pid 控制器的結(jié)構(gòu)圖如下: 圖3.9 一個控制系統(tǒng)的結(jié)構(gòu)簡圖 誤差信號 = 給定信號 - 反饋信號(對于一個負(fù)反饋的系統(tǒng)) 通常給定信號為系統(tǒng)自己產(chǎn)生的,可以是一個常值,或者是正弦等,通常可以用一個函數(shù)來獲取給定信號, double getdemandsignal(); 反饋信號通常上通過數(shù)據(jù)采集器采集到的數(shù)字信號,

42、然后通過一個比例把它換算成實(shí)際對應(yīng)的數(shù)值,同理,可以定義一個函數(shù)來獲取反饋信號, double getfeedbacksignal(); 這兩個函數(shù)具體實(shí)現(xiàn)根據(jù)系統(tǒng)不同而不同,這里不再給出其實(shí)現(xiàn)代碼了。 增量式pid控制表達(dá)式為: u(k)=u(k)-u(k-1)=kce(k)-e(k-1)+kie(k)+kde(k)-2e(k-1)+e(k-2)=kce(k)+kie(k)+kde(k)2而u(k)=u(k-1)+u(k)下面主要講下 pid 控制的數(shù)字算法的偽代碼 const double dtimeinterval =0.001;/采樣間隔為0.001秒/pid參數(shù),實(shí)際使用時根據(jù)系統(tǒng)調(diào)

43、試double kp =2.5;double ki =5.0;double kd = 1.2;void callback pidcontrol(uint uid,uint umsg,dword dwuser,dword dw1,dword dw2)static double dvalue3;static double dolderror;double doutsignal;/pid控制的輸出double derror;double ddemandsignal = getdemandsignal();double dfeedbacksignal = getfeedbacksignal();der

44、ror = ddemandsignal dfeedbacksignal;dvalue0=kp* derror;比例dvalue1= dvalue1+ki* derror*dtimeinterval;/積分dvalue2=kd * (derror-dolderror)/ dtimeinterval;/微分doutsignal = dvalue0+ dvalue1+ dvalue2;sendcontrolsignal(doutsignal);/這個函數(shù)是把控制量輸出到d/a,然后傳送到以后的環(huán)節(jié)進(jìn)行控制 第四章 調(diào)試中出現(xiàn)的問題 軟件的調(diào)試在仿真器super ice51s上調(diào)試,仿真器提供的單步,斷點(diǎn),跟蹤和夭折等功能的支持下對各子程序分別進(jìn)行調(diào)試,將調(diào)試完的子程序連接起來再調(diào)試,逐步擴(kuò)大調(diào)試范圍.調(diào)試的過程一般是: 測試程序輸入條件或設(shè)定程序輸入條件 以單步,斷點(diǎn)或跟蹤方式運(yùn)行

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論