2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  學(xué) 號 </b></p><p><b>  畢業(yè)設(shè)計(論文)</b></p><p>  題目:基于VC的模糊PID控制模塊設(shè)計</p><p>  日 </p><p><

2、b>  摘 要</b></p><p>  傳統(tǒng)的PID調(diào)節(jié)算法,不可避免地存在非線性、滯后和時變現(xiàn)象。其中有的參數(shù)未知或緩慢變化;有的帶有延時和隨機(jī)干擾;有的無法獲得較精確的數(shù)學(xué)模型或模型非常粗糙。</p><p>  本系統(tǒng)采用微軟公司的高級編程語言Visual C++6.0作為開發(fā)工具。用戶設(shè)置的參數(shù)經(jīng)過模擬PID算法產(chǎn)生數(shù)據(jù)結(jié)果,模擬PID算法根據(jù)反饋回來的值來確

3、定輸入?yún)?shù),以達(dá)到精確控制的效果。</p><p>  本系統(tǒng)開發(fā)完成后進(jìn)行了測試,并根據(jù)輸出結(jié)果繪制趨勢圖,均達(dá)到了預(yù)定的效果,各模塊和程序代碼均正確。</p><p>  關(guān)鍵詞: 模糊PID,模糊規(guī)則,模糊算法,PID調(diào)節(jié)</p><p><b>  ABSTRACT</b></p><p>  The PID o

4、f algorithm traditional regulation exists nonlinear, slow and time-varying phenomena. Some of these parameters is unknown or slow changes with delay and random interference; Some can not get more accurate mathematical mo

5、del or the model is very rough.</p><p>  The system uses Microsoft's high-level programming language Visual C + +6.0 as a development tool. After users set the parameters, PID algorithm generated simula

6、tion results and analog PID algorithm based on feedback back to determine the value of the input parameters to achieve the precise control of the effect.</p><p>  The system was tested and the mapping tren

7、ds in accordance with output has reached the intended effect . the modules and code are correct .</p><p>  Key words: Fuzzy PID, fuzzy rules, fuzzy algorithm, PID regulator</p><p><b>  

8、目錄</b></p><p><b>  摘 要I</b></p><p>  ABSTRACTII</p><p><b>  1緒論1</b></p><p><b>  1.1 引言1</b></p><p>  1.2 模糊P

9、ID研究的基本形式2</p><p>  1.2 Visual C++ 6.0中文版的簡介4</p><p>  2 模糊控制概述6</p><p><b>  2.1 簡介6</b></p><p>  2.2 基于T-S模型的模糊PID控制7</p><p>  3 軟件設(shè)計

10、7</p><p>  3.1 VC工程文件的建立7</p><p>  3.2 界面設(shè)計8</p><p>  3.3 MSchart控件的加載9</p><p>  3.4 MSchart控件屬性設(shè)置10</p><p>  3.5 MFC類向?qū)гO(shè)置11</p><p>  3.6

11、 菜單欄建立12</p><p>  3.7 Timer控件建立14</p><p>  3.8 “自動運(yùn)行” 按鈕程序段15</p><p>  3.9 “單步運(yùn)行” 按鈕程序段17</p><p>  3.10 “重設(shè)參數(shù)” 按鈕程序段19</p><p>  3.11 “退出系統(tǒng)” 按鈕程序段19&l

12、t;/p><p>  4 軟件打包20</p><p>  4.1 軟件發(fā)布20</p><p>  4.2 生成安裝文件21</p><p>  4.2.1選擇安裝文件21</p><p>  4.2.2生成安裝文件22</p><p><b>  總結(jié)24</b&

13、gt;</p><p><b>  參考文獻(xiàn)25</b></p><p><b>  致謝26</b></p><p><b>  1緒論</b></p><p><b>  1.1 引言</b></p><p>  傳統(tǒng)的PI

14、D(比例proportional,積分integral,微分derivative)控制器雖然以其結(jié)構(gòu)簡單、工作穩(wěn)定、適應(yīng)性、精度高等優(yōu)點(diǎn)成為過程控制中應(yīng)用最為廣泛最基本的一種控制器(據(jù)日本統(tǒng)計,當(dāng)前工業(yè)上使用的控制中,PID控制約占91.3%,而現(xiàn)代控制理論的控制方式只有1.5%),而且PID調(diào)節(jié)規(guī)律特別是對于線性定常系統(tǒng)的控制是非常有效,一般都能夠得到比較滿意的控制效果,其調(diào)節(jié)品質(zhì)取決于PID控制器各個參數(shù)的確定。然而,針對上述的復(fù)雜

15、系統(tǒng),如果使用常規(guī)的PID控制器,其PID參數(shù)不是整定困難就是根本無法整定,因此不能得到滿意的控制效果。為此近年來各種改進(jìn)的PID控制器如自校正、自適應(yīng)PID及智能控制器迅速發(fā)展起來。</p><p>  隨著微型計算機(jī)的飛速發(fā)展,模糊(FUZZY)控制以它全新的控制方式在控制界受到了極大的重視并有了迅速的發(fā)展。1974年,英國科學(xué)家E.H.Mamdani首次將模糊技術(shù)應(yīng)用于汽輪機(jī)的控制,開辟了模糊控制理論應(yīng)用的

16、新領(lǐng)域。隨著技術(shù)的發(fā)展,模糊控制理論和模糊技術(shù)成為最廣泛最有前景的應(yīng)用分支之一。模糊控制器是一種專家控制系統(tǒng),它的優(yōu)點(diǎn)是不需要知道被控對象的數(shù)學(xué)模型而能夠利用專家已有的知識和經(jīng)驗(yàn)。重要的是當(dāng)系統(tǒng)為非線性系統(tǒng)時,模糊控制器還可以產(chǎn)生非線性控制作用。與傳統(tǒng)的PID控制方式相比,它具有特別適合于那些難以建立精確數(shù)學(xué)模型、非線性、大滯后和時變的復(fù)雜過程等特點(diǎn)。但是經(jīng)過深入研究,也會發(fā)現(xiàn)基本模糊控制存在著其控制品質(zhì)粗糙和精度不高等弊病。而且用的最

17、多的二維輸入的模糊控制器不是PI就是PD型,不是過渡過程品質(zhì)不好就是不能消除穩(wěn)態(tài)誤差。因此,在許多情況下,將模糊控制和PID控制兩者結(jié)合起來,揚(yáng)長避短,既具有模糊控制靈活、適應(yīng)性強(qiáng)、快速性好的優(yōu)點(diǎn),又具有PID控制精度高的特點(diǎn)。從模糊技術(shù)應(yīng)用于控制領(lǐng)域開始,許多的學(xué)者就開始著手二者的結(jié)合,以期待對傳統(tǒng)控制的突破。</p><p>  于是,許多模糊和PID相結(jié)合的控制器相繼出現(xiàn),包括基于模糊推理的PID參數(shù)自整定

18、模糊和PID的復(fù)合控制器以及實(shí)現(xiàn)PID功能的模糊PID控制器等。許多的仿真和實(shí)際例子都顯示這些模糊PID控制器具有較好的性能。然而這些模糊PID控制器雖然比傳統(tǒng)的PID控制器有很大的改進(jìn),但模糊規(guī)則的獲取,比例、量化因子和隸屬函數(shù)的確定都具有一定的主觀性,包含著需要人為確定的待尋優(yōu)參數(shù)。對于這些參數(shù),一般來說,可以根據(jù)系統(tǒng)原理和專家經(jīng)驗(yàn)來獲得,但是如果要快速匹配這些參數(shù),提高控制效果,獲得一組最優(yōu)解,則需要用尋優(yōu)的方法來解決。因此需要設(shè)

19、定一個合適的優(yōu)化指標(biāo)使系統(tǒng)具有最優(yōu)的控制性能。但現(xiàn)有的大部分模糊PID控制器都是手工整定或試湊,沒有合適的具體的優(yōu)化指標(biāo),因此一般都不能得到最好的控制性能。</p><p>  1.2 模糊PID研究的基本形式</p><p>  模糊PID控制器主要有以下三種基本形式:</p><p>  (1) 增益調(diào)整型(Gain scheduling)模糊PID控制器<

20、;/p><p>  由于常規(guī)PID調(diào)節(jié)器不具有在線調(diào)整參數(shù)的功能,致使其不能滿足偏差。及偏差變化△。對PID參數(shù)的自整定要求,從而不能滿足要求的性能指標(biāo)或影響了其控制效果的進(jìn)一步提高。為了滿足在不同偏差e和偏差變化率△e對PID參數(shù)自整定的要求,利用模糊控制規(guī)則在線對PID參數(shù)進(jìn)行修改,便構(gòu)成了增益調(diào)整型模糊PID控制器該類 控 制 器中輸出的物理量直接對應(yīng)增益參數(shù),通過應(yīng)用模糊規(guī)則實(shí)現(xiàn)對三個增益參數(shù)的調(diào)整。其有兩種

21、形式:</p><p> ?、倩谛阅鼙O(jiān)督的增益調(diào)整型模糊PID控制器,如:</p><p>  If ("Perform Index" is …) then (△Kp is …) and △Ki is …) </p><p>  有關(guān)性能指標(biāo)(Perform Index)可以是超調(diào)量、穩(wěn)態(tài)誤差或其它靜動態(tài)特性。由于這些性能指標(biāo)需要一個完整控制過

22、程得到,因此該類控制器可以用于自整定或自適應(yīng)方式對增益進(jìn)行動態(tài)調(diào)整。</p><p> ?、?基于誤差驅(qū)動的模糊PID控制器,Zhao等人應(yīng)用了如下的規(guī)則形式:</p><p>  If(e is…) and (△e is…) then (Kp is…) and (Ki is…) and (Kd is…)該控制器的PID增益參數(shù)將是誤差e和誤差變化△e的非線性函數(shù)。如非線性比例增益可以記為

23、:Kp= f(e, △e)。以He 等發(fā)展的模糊PID控制器應(yīng)用二維模糊推理機(jī)計算單因子參數(shù)a,各增益參數(shù)均表現(xiàn)為。(e, △e )的函數(shù),從而達(dá)到了調(diào)整各參數(shù)的目的。</p><p>  對于那些含有對被控過程在線辨識環(huán)節(jié)的Fuzzy-PID控制器,對具有不確定性的對象有較好的控制效果。通常用兩種方式實(shí)現(xiàn)對被控過程的在線辨識。一種是運(yùn)用模糊規(guī)則控制的同時進(jìn)行在線辨識,另一種是利用神經(jīng)網(wǎng)絡(luò)的逼近能力和自學(xué)習(xí)能力,

24、把神經(jīng)網(wǎng)絡(luò)訓(xùn)練成可代替被控對象的逆模型,然后再進(jìn)行控制。</p><p>  (2) 直接控制量型(Direct-action)模糊PID控制器</p><p>  如果模糊推理機(jī)的輸出是PID原理范圍內(nèi)的控制作用量,則該控制器屬于直接控制量型。1987年,H.Ying在模糊控制理論中首次嚴(yán)格地建立了模糊控制器與傳統(tǒng)控制器的分析解關(guān)系,其中特別重要的是證明了Mamdani模糊PI(或PD)

25、型控制器是具有變增益的非線性PID控制器。這些工作為模糊控制理論與傳統(tǒng)PID控制理論相結(jié)合建立了橋梁。隨后這種模糊PID控制算法結(jié)構(gòu)研究的許多新成果不斷涌現(xiàn)。并給出了最為深刻的理論分析,證明了具有最簡單線性控制規(guī)則的二維模糊控制器其輸出可等同于一個非線性PI控制器,在線性對象和非線性對象上的仿真結(jié)果表明了模糊控制器同PI控制器的內(nèi)在聯(lián)系和區(qū)別。并將此方法推廣到具有通常線性控制規(guī)則的二維模糊控制器,證明了其輸出可等同于一個全局多層次線性關(guān)

26、系式和一個局域非線性PI控制器,將結(jié)構(gòu)分析方法推廣到具有線性規(guī)則的三維模糊控制器上,得出了三維模糊控制器的一般解析輸出表達(dá)式,證明了具有一般線性推理規(guī)則的三維模糊控制器可等同于一個全局多層次關(guān)系式和一個局部非線性PID控制器。</p><p>  (3) 混合型(hybrid)模糊PID控制器</p><p>  混合型模糊PID控制器可以有各種形式出現(xiàn):如增益調(diào)整型與直接控制量型的結(jié)合,

27、或傳統(tǒng)線性PID控制器與模糊控制器的結(jié)合。</p><p>  類比傳統(tǒng)的PD、PI、PID控制,模糊控制器亦可分為PD、PI和PID型。人們在1974年Mamdani工作的基礎(chǔ)上,提出了二維模糊控制器結(jié)構(gòu)。這種模糊控制器主要可分為2類:PI型的模糊控制器,由偏差e和偏差的和∑e作為輸入量;PD型的模糊控制器,由偏差e和偏差的變化△e作為輸入量。但二者都有不足,PI型控制由于有積分的作用,在高階系統(tǒng)中過渡過程較差

28、;PD型控制因沒有積分的作用,難以消除穩(wěn)態(tài)誤差,為此在模糊控制器中引入積分作用。</p><p>  雖然以偏差e,偏差和∑e,偏差變化△e以及偏差變化的變化△e2作為輸入構(gòu)成常規(guī)或增量式模糊PID控制器可以實(shí)現(xiàn)PID的控制功能,但因增加了一個輸入量使得模糊控制器的設(shè)計和計算復(fù)雜,規(guī)則繁多,推理運(yùn)算時間變長。</p><p>  傳統(tǒng) PID 控制器與模糊控制器的結(jié)合有兩種結(jié)構(gòu)形式:串聯(lián)結(jié)

29、構(gòu)和并聯(lián)結(jié)構(gòu)。</p><p>  串聯(lián)結(jié)構(gòu):結(jié)構(gòu)原理如圖1-1所示。</p><p>  當(dāng)系統(tǒng)的偏差e大于語言變量值零檔時,即在動態(tài)過程中,e和uf同時用做PID控制器的輸入信號,即e’(t)=e(t)+uf(t),對PID控制器產(chǎn)生較強(qiáng)的控制信號,系統(tǒng)的動態(tài)響應(yīng)較快;而當(dāng)偏差信號e小于語言變量值零檔時,模糊控制器通過開關(guān)K斷開,這時e’(t)=e(t) 只有偏差信號進(jìn)入PID控制器,

30、由于此時系統(tǒng)的輸出和給定值己經(jīng)很接近,所以能很快地趨于給定值,消除穩(wěn)態(tài)誤差。這種結(jié)構(gòu)的模糊控制器產(chǎn)生階梯狀的非線性控制信號作用于PID控制器,依靠調(diào)節(jié)PID輸入的突然變化來提高動態(tài)響應(yīng)速度,往往易造成PID作用的誤調(diào)節(jié)。</p><p>  并聯(lián)結(jié)構(gòu):結(jié)構(gòu)原理如圖1-2所示。</p><p>  它是將模糊控制器和PID控制器并聯(lián)起來對系統(tǒng)進(jìn)行控制,即有模糊和PID兩種模態(tài)。其中模糊控制器

31、采用常規(guī)模糊控制器,輸入變量為偏差e和偏差變化△e,輸出為u,模糊控制規(guī)則采用IF-THEN形式,推理合成采用MAX-MIN算法,反模糊化采用面積重心法。這種模糊控制器本質(zhì)上是一PD控制器,由于缺乏積分環(huán)節(jié)系統(tǒng)有穩(wěn)態(tài)誤差,為此在偏差e小于某一閩值M時,控制器切換至常規(guī)PID控制器,從而使得這種雙??刂破骶哂许憫?yīng)快,穩(wěn)態(tài)精度高的特點(diǎn)。</p><p>  1.2 Visual C++ 6.0中文版的簡介</p

32、><p>  本文介紹了基于Visual C++ 6.0 平臺的VC的模糊PID控制模塊設(shè)計。 而Visual C++ 6.0是在多年使用過程中不斷改進(jìn)的基礎(chǔ)上推出的,它在前一版的Visual C++ 5.0的基礎(chǔ)上做了很大改進(jìn),增添了許多新功能,其主要的功能特點(diǎn)可概括為以下幾個方面。</p><p>  (1)編譯器改進(jìn)了對于ANSI C++標(biāo)準(zhǔn)的支持。Visual C++ 6.0的編

33、譯器不但可以支持ANSI C++標(biāo)準(zhǔn),還增添了對邏輯型數(shù)據(jù)的支持,并且對于模板的支持也得到了相當(dāng)?shù)母纳啤?lt;/p><p>  (2) Developer Studio編輯器得到了很大改進(jìn)。Visual C++ 6.0使用的編輯器Developer</p><p>  Studio具有為用戶自動完成通用語句編輯的功能。使用Developer Studio,不僅可以創(chuàng)建由Visual C++

34、6.0 使用的源文件和其他文檔,而且可以創(chuàng)建,查看和編輯與任何ActiveX部件有關(guān)的文檔。在Developer Studio中,可以在項(xiàng)目工作區(qū)中組織文件、項(xiàng)目和項(xiàng)目配置,可以使用工作區(qū)窗口來查看和訪問項(xiàng)目中的各種元素。</p><p>  (3)最快的集成數(shù)據(jù)庫訪問:Visual C++ 6.0允許用戶建立強(qiáng)有力的數(shù)據(jù)庫應(yīng)用程序,可以使用Windows平臺提供的ODBC類和高性能的32位ODBC驅(qū)動程序來訪問

35、各種數(shù)據(jù)庫管理系統(tǒng),也可以使用DAO(數(shù)據(jù)訪問對象)類通過編程語言來訪問和操縱數(shù)據(jù)庫中的數(shù)據(jù)并管理數(shù)據(jù)庫和數(shù)據(jù)庫對象與結(jié)構(gòu)??梢?,Visual C++ 6.0 提供了最快的集成數(shù)據(jù)庫訪問。</p><p>  (4)包含了對于MFC庫的新改進(jìn)。Visual C++ 6.0增加了用于Internet編程的類,并且支持在Internet Explorer 4.0和Windows 98環(huán)境下編程的新的通用控件。<

36、/p><p>  (5)增強(qiáng)型的聯(lián)機(jī)幫助。Visual C++ 6.0改進(jìn)了在線幫助系統(tǒng),使得訪問Microsoft Developer Network更加容易,只需單擊鼠標(biāo)即可。聯(lián)機(jī)幫助系統(tǒng)將自動使用安裝在計算機(jī)中最新的MSDN庫。</p><p>  Visual C++ 6.0包括三個不同規(guī)模的版本,分別為學(xué)習(xí)版(Learning Edition)、專業(yè)版(Professional Ed

37、ition)和企業(yè)版(Enterprise Edition)。</p><p>  (1)學(xué)習(xí)版是Visual C++ 6.0的基礎(chǔ)版本,是針對初學(xué)者學(xué)習(xí)和使用的。學(xué)習(xí)版提供了一組標(biāo)準(zhǔn)工具,可以創(chuàng)建功能完備的Windows應(yīng)用程序。</p><p> ?。?)專業(yè)版除了具有學(xué)習(xí)版的全部功能外,還包括生成分布式應(yīng)用程序必備的工具。所生成的分布式應(yīng)用程序適用于所有32位PC環(huán)境。</p&

38、gt;<p>  (3)企業(yè)版是Visual C++ 6.0的最完整版本,除了具有學(xué)習(xí)版和專業(yè)版的全部功能外,還包含了一些用于創(chuàng)建客戶/服務(wù)器應(yīng)用程序所需的工具等。</p><p><b>  2 模糊控制概述</b></p><p><b>  2.1 簡介</b></p><p>  在日益復(fù)雜的被控過程

39、面前,由于不可能得到過程的精確數(shù)學(xué)模型,傳統(tǒng)的基于精確模型的控制系統(tǒng)設(shè)計理論(包括古典控制理論及現(xiàn)代控制理論)受到嚴(yán)峻挑戰(zhàn)。智能控制通過在系統(tǒng)控制和決策中引入人工智能,實(shí)現(xiàn)了對這些用傳統(tǒng)控制理論難以控制的過程的有效控制。智能控制理論覆蓋的范疇十分廣泛,其主要分支有模糊控制、學(xué)習(xí)控制、專家控制、神經(jīng)網(wǎng)絡(luò)控制等。</p><p>  圖2-1 所示的模糊控制系統(tǒng)和常見的負(fù)反饋閉環(huán)控制系統(tǒng)相似,唯一不同之處是控制裝置由

40、模糊控制器來實(shí)現(xiàn)。</p><p><b>  模糊控制器的設(shè)計</b></p><p>  在模糊邏輯控制中主要使用Mamdani模糊模型和Takagi-Sugeno模糊模型。</p><p>  Mamdani模糊模型是一種語言模型,利用Mamdani模型構(gòu)成的模糊邏輯系統(tǒng)實(shí)質(zhì)是一組模糊IF-THEN規(guī)則,在這組規(guī)則中前件變量和后件變量均為

41、模糊語言變量,其一般形式如下:</p><p>  Ri:if xi is Ai1 and…and xn is Ain, then y1 is Bi1 and … ym is Aim</p><p>  其中: xi、x2、xn是規(guī)則前件語言變量;</p><p>  yi、y2、yn是規(guī)則后件語言變量,代表了作用于對象的控制量;</p><

42、;p>  Ai1…Ain ,Bi1 …Bin是模糊語言變量</p><p>  Ri表示第i條規(guī)則。</p><p>  Mamdani模糊模型是由英國的E.H .Mamdani提出的,它是最早在實(shí)踐中得到應(yīng)用的一個模型,但本文用的是T-S模擬模型。</p><p>  Takagi-Sugeno模糊模型是1985年由日本的Takagi和Sugeno提出,后來

43、由Sugen和Kang進(jìn)一步完善。這種模型從某種意義上來說與Mamdani模型有類似之處:都是由IF-THEN規(guī)則構(gòu)成;規(guī)則前件含有模糊語言值。然而Takagi-Sugeno模糊模型(簡稱T-S模型)的后件是一線性函數(shù)。T-S模糊模型一般具有如下形式:</p><p>  Ri:if x is Ai,then yi=f(x)</p><p>  其中: x為

44、規(guī)則前件語言變量;</p><p>  yi為第i條規(guī)則的輸出量;</p><p><b>  Ai為模糊語言值;</b></p><p>  Ri表示T-S模糊模型的第i條規(guī)則。</p><p>  T-S模糊模型的后件為線性函數(shù),這就為模糊控制理論與現(xiàn)有的線性系統(tǒng)理論相結(jié)合提供了可能,從而為利用線性系統(tǒng)理論來分析模糊

45、控制系統(tǒng)的特性提供了途徑。近年來應(yīng)用T-S模型進(jìn)行系統(tǒng)的辨識的比較多。</p><p>  2.2 基于T-S模型的模糊PID控制</p><p>  設(shè)連續(xù)PID調(diào)節(jié)器的輸出值VM表示為y(t),則:</p><p>  其中x(t)為偏差信號,等于設(shè)定值Vs與測量值Vp之差;P,Ti,Td分別為比例度和積分、微分時間常數(shù)。</p><p&g

46、t;  數(shù)字調(diào)節(jié)器的特點(diǎn)是斷續(xù)動作。它以采樣周期△T為間隔,對偏差信號x(t)采樣和作模/數(shù)轉(zhuǎn)換后,按一定的調(diào)節(jié)規(guī)律算出輸出值。可以將連續(xù)PID表達(dá)式離散化,用差分方程表示,得出第n次的輸出量Yn為:</p><p>  式中,Xi是偏差信號x(t)的第i次采樣值。</p><p><b>  3 軟件設(shè)計</b></p><p>  3.

47、1 VC工程文件的建立</p><p>  運(yùn)行VC++6.0中文版,新建一個工程文件,如下設(shè)置:</p><p><b>  3.2 界面設(shè)計</b></p><p>  新建好的工程文件界面如下:</p><p>  點(diǎn)擊控件欄,放置玩控件的界面如下:</p><p>  3.3 MSchar

48、t控件的加載</p><p>  MSchart控件為ActiveX控件,控件欄中沒有所以要手工加載,加載前一定要確保PC中裝有完整的Office或VB。</p><p>  加載MSchart控件如圖:</p><p>  3.4 MSchart控件屬性設(shè)置</p><p>  右擊MSchart控件,如圖:</p><

49、p>  3.5 MFC類向?qū)гO(shè)置</p><p>  按CTRL+W鍵,彈出MFC類向?qū)гO(shè)置窗口,并按如下設(shè)置:</p><p><b>  3.6 菜單欄建立</b></p><p>  ”按鈕,點(diǎn)擊“新建創(chuàng)建菜單欄,如圖:</p><p>  3.7 Timer控件建立</p><p>

50、  VC++不像VB有Timer控件,如要使用的話需用戶在zlhDlg.cpp文件中創(chuàng)建:</p><p>  void CZlhDlg::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  CDialog::DoDataExchange(pDX);</p>

51、;<p>  //{{AFX_DATA_MAP(CZlhDlg)</p><p>  DDX_Control(pDX, IDOK, m_my_ok);</p><p>  DDX_Text(pDX, IDC_EDIT1, m_my_p);</p><p>  DDX_Text(pDX, IDC_EDIT2, m_my_ti);</p>&

52、lt;p>  DDX_Text(pDX, IDC_EDIT3, m_my_td);</p><p>  DDX_Text(pDX, IDC_EDIT4, m_my_vs);</p><p>  DDX_Control(pDX, IDC_MSCHART1, m_Chart);</p><p>  DDX_Text(pDX, IDC_EDIT5, m_my_y);

53、</p><p>  //}}AFX_DATA_MAP</p><p><b>  }</b></p><p>  BEGIN_MESSAGE_MAP(CZlhDlg, CDialog)</p><p>  //{{AFX_MSG_MAP(CZlhDlg)</p><p>  ON_WM_SYSC

54、OMMAND()</p><p>  ON_WM_PAINT()</p><p>  ON_WM_QUERYDRAGICON()</p><p>  ON_BN_CLICKED(IDOK, Onstart)</p><p>  ON_BN_CLICKED(IDOK2, OnOk2)</p><p>  ON_WM_TI

55、MER() //定義timer</p><p>  ON_BN_CLICKED(IDOK3, Onpause)</p><p>  ON_BN_CLICKED(IDOK4, Onrand_input)</p><p>  ON_BN_CLICKED(IDC_STATIC1, OnStatic1_pic)</p><p>  ON_COMMAN

56、D(ID_MENUITEM32771, OnMenuitem32771_auto)</p><p>  ON_COMMAND(ID_MENUITEM32772, OnMenuitem32772_step)</p><p>  ON_COMMAND(ID_MENUITEM32773, OnMenuitem32773_pause)</p><p>  ON_COMMAN

57、D(ID_MENUITEM32775, OnMenuitem32775_exit)</p><p>  //}}AFX_MSG_MAP</p><p>  END_MESSAGE_MAP()</p><p>  定義Timer控件時間間隔為0.5秒:</p><p>  void CZlhDlg::Onstart() </p>

58、<p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  //row:6,col:4</p><p>  for(int row = 1; row <= 5; ++row)</p><

59、;p><b>  {</b></p><p>  UpdateData(TRUE);</p><p>  timer1=SetTimer(1,500,0);</p><p>  3.8 “自動運(yùn)行” 按鈕程序段</p><p>  void CZlhDlg::Onstart() </p><p&

60、gt;<b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  //row:6,col:4</p><p>  for(int row = 1; row <= 5; ++row)</p><p>

61、<b>  {</b></p><p>  UpdateData(TRUE);</p><p>  timer1=SetTimer(1,500,0);</p><p>  //產(chǎn)生m_my_p到m_my_p+6之間的隨機(jī)數(shù)隨機(jī)數(shù)</p><p><b>  int vs;</b></p>

62、<p>  srand((unsigned)time(NULL)); </p><p>  vs=rand()%6+m_my_p; </p><p><b>  x1=vs;</b></p><p>  if (flag==1)</p><p><b>  {</b></

63、p><p><b>  //第一次執(zhí)行</b></p><p><b>  flag=2;</b></p><p>  y=(float)1/m_my_p*(x1+1/m_my_ti*x1*jiange+m_my_td*x1/jiange);</p><p>  sum=(float)1/m_my_ti

64、*x1*jiange;</p><p>  //MessageBox("1");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  sum

65、1=(float)1/m_my_ti*x1*jiange;</p><p>  sum=(float)sum+sum1;</p><p>  y=(float)1/m_my_p*(x1+sum+m_my_td*(x1-x2)/jiange);</p><p>  //根據(jù)偏差重新計算p,i,d參數(shù)</p><p>  if (x1-x2>

66、;6 )</p><p>  {m_my_p=m_my_p+(x1-x2);</p><p>  m_my_ti=m_my_ti+(x1-x2);</p><p>  m_my_td=m_my_td+(x1-x2);</p><p><b>  }</b></p><p><b>  

67、else</b></p><p><b>  {</b></p><p>  m_my_p=m_my_p-(x1-x2);</p><p>  m_my_ti=m_my_ti-(x1-x2);</p><p>  m_my_td=m_my_td-(x1-x2);</p><p><

68、;b>  }</b></p><p><b>  }</b></p><p><b>  int yy;</b></p><p>  yy=(int)y;</p><p>  m_my_y=yy;</p><p><b>  if (yy<1

69、)</b></p><p>  CZlhDlg::Onstart() ;</p><p>  CString str; </p><p>  //str.Format("%6.5f", y); </p><p>  str.Format("%d",yy); </p><

70、p><b>  x2=x1;</b></p><p>  CStatic* IDC_STATIC_y =(CStatic*) GetDlgItem(IDC_STATIC1);</p><p>  IDC_STATIC_y->SetWindowText(str);</p><p>  m_my_vs=vs;</p>&l

71、t;p>  UpdateData(FALSE);</p><p>  m_Chart.GetDataGrid().SetData(row, 1, yy, 0);</p><p>  //Sleep (500);</p><p><b>  }</b></p><p>  m_Chart.Refresh(); &

72、lt;/p><p><b>  }</b></p><p>  3.9 “單步運(yùn)行” 按鈕程序段</p><p>  void CZlhDlg::Onrand_input() </p><p><b>  {</b></p><p>  // TODO: Add your con

73、trol notification handler code here</p><p>  for(int row = 1; row <= 5; ++row)</p><p><b>  {</b></p><p>  UpdateData(TRUE);</p><p>  //timer1=SetTimer(1

74、,500,0);</p><p>  //產(chǎn)生m_my_p到m_my_p+6之間的隨機(jī)數(shù)隨機(jī)數(shù)</p><p>  //int vs;</p><p>  //srand((unsigned)time(NULL)); </p><p>  //vs=rand()%6+m_my_p; </p><p>&l

75、t;b>  //x1=vs;</b></p><p>  x1=m_my_vs;</p><p>  if (flag==1)</p><p><b>  {</b></p><p><b>  //第一次執(zhí)行</b></p><p><b>  

76、flag=2;</b></p><p>  y=(float)1/m_my_p*(x1+1/m_my_ti*x1*jiange+m_my_td*x1/jiange);</p><p>  sum=(float)1/m_my_ti*x1*jiange;</p><p>  //MessageBox("1");</p>&l

77、t;p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  sum1=(float)1/m_my_ti*x1*jiange;</p><p>  sum=(float)sum+sum1;<

78、/p><p>  y=(float)1/m_my_p*(x1+sum+m_my_td*(x1-x2)/jiange);</p><p>  //根據(jù)偏差重新計算p,i,d參數(shù)</p><p>  if (x1-x2>6 )</p><p>  {m_my_p=m_my_p+(x1-x2);</p><p>  m_

79、my_ti=m_my_ti+(x1-x2);</p><p>  m_my_td=m_my_td+(x1-x2);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p&g

80、t;  m_my_p=m_my_p-(x1-x2);</p><p>  m_my_ti=m_my_ti-(x1-x2);</p><p>  m_my_td=m_my_td-(x1-x2);</p><p><b>  }</b></p><p><b>  }</b></p>&l

81、t;p><b>  int yy;</b></p><p>  yy=(int)y;</p><p>  m_my_y=yy;</p><p><b>  if (yy<1)</b></p><p>  CZlhDlg::Onstart() ;</p><p> 

82、 CString str; </p><p>  //str.Format("%6.5f", y); </p><p>  str.Format("%d",yy); </p><p><b>  x2=x1;</b></p><p>  CStatic* IDC_STATIC_y

83、 =(CStatic*) GetDlgItem(IDC_STATIC1);</p><p>  IDC_STATIC_y->SetWindowText(str);</p><p>  //m_my_vs=vs;</p><p>  //UpdateData(FALSE);</p><p>  m_Chart.GetDataGri

84、d().SetData(row, 1, yy, 0);</p><p>  UpdateData(FALSE);</p><p>  m_Chart.Refresh(); </p><p>  KillTimer(timer1);</p><p><b>  }</b></p><p>  

85、3.10 “重設(shè)參數(shù)” 按鈕程序段</p><p>  void CZlhDlg::Onpause() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  KillTimer(t

86、imer1);</p><p><b>  }</b></p><p>  3.11 “退出系統(tǒng)” 按鈕程序段</p><p>  void CAboutDlg::OnOK() </p><p><b>  {</b></p><p>  // TODO: Add extra

87、 validation here</p><p>  CDialog::OnOK();</p><p><b>  }</b></p><p><b>  4 軟件打包</b></p><p><b>  4.1 軟件發(fā)布</b></p><p> 

88、 4.2 生成安裝文件</p><p>  4.2.1選擇安裝文件</p><p>  新建一個文件夾,把已經(jīng)選擇的文件夾放入一個新的目錄,到時在Wise Installation System - Professional Edition中選擇。</p><p>  4.2.2生成安裝文件</p><p>  運(yùn)行 Wise Install

89、ation System - Professional Edition, 新建一個“空工程”</p><p>  按左邊欄目的順序填寫安裝文件的各項(xiàng)信息</p><p><b>  總結(jié)</b></p><p>  經(jīng)典 的 PID控制廣泛的應(yīng)用于工業(yè)控制的各個領(lǐng)域,但其也存在著自身的不足。而模糊控制作為智能控制的一個重要研究分支得到了廣泛而深

90、入的研究,為解決具有不確定性、時變非線性以及多變量等特性的復(fù)雜難建模系統(tǒng)提供了一種有效的途徑,彌補(bǔ)了傳統(tǒng)PID控制的不足。因此將二者相結(jié)合既充分發(fā)揮PID控制簡單,精度高又有模糊控制靈活、適應(yīng)性強(qiáng)、快速性好的優(yōu)點(diǎn)。本文就是基于VC的模擬PID設(shè)計,采用的是T-S 模型。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 陳立云,TS型模糊PID

91、控制器設(shè)計的改進(jìn)[M],天津大學(xué)電氣與自動化工程學(xué)院, 天津300072;</p><p>  [2] 謝慶國、萬淑蕓、趙金, 一種T 2S 模糊控制器的設(shè)計方法[M], 華中科技大學(xué)</p><p>  [3] 姜成國,周廣銘.模糊PID控制器結(jié)構(gòu)[J].大慶石油學(xué)院學(xué)報.2000.3</p><p>  [4] 張清華.一種可調(diào)整模糊強(qiáng)度的FUZZY PID控制

92、器[J].自動化與儀表.2000.6</p><p>  [5] 李輝,韓紅,韓崇昭,朱洪艷.基于遺傳算法的模糊邏輯控制器優(yōu)化設(shè)計[J].西安交通大學(xué)學(xué)報 .2002.4.</p><p>  [6] 謝立. 模糊PID控制器設(shè)計[M].南京大學(xué)電氣與自動化工程學(xué)院</p><p>  [7] 張萬國,模糊控制器的設(shè)計方法[M]. 華中科技大學(xué)出版社</p&g

93、t;<p>  [8] 舒懷林, PID神經(jīng)元網(wǎng)絡(luò)及其控制系統(tǒng)[M].國防工業(yè)出版社</p><p>  [9] 孫鑫,余安萍. VC++深入詳解[M].科學(xué)出版社</p><p>  [10] 明日科技,Visual C++程序開發(fā)范例寶典[M].人民郵電出版社</p><p>  [11] 求是科技,Visual C++6.0 程序設(shè)計從入門到精通

94、[M]. 華中科技大學(xué)</p><p>  [12] William H.Press. Numerical Recipes in C++. Beijing:posts & Telecom Press.2006</p><p>  [13] Haibin Zhu,Mengchu Zhou. Object-oriented Programing in C++. Beijing:Tsin

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論