基于STM32為主控的溫度單反饋控制系統(tǒng)
設(shè)計(jì)選用STM32單片機(jī)作控制器,設(shè)計(jì)溫度單反饋的控制系統(tǒng),對(duì)電加熱水器內(nèi)水的溫度進(jìn)行控制。通過(guò)PT100溫度傳感器實(shí)現(xiàn)對(duì)水溫信號(hào)的采集,并利用模擬量前向通道來(lái)對(duì)水溫信號(hào)進(jìn)行處理。利用STM32單片機(jī)進(jìn)行控制輸出PWM信號(hào),用此信號(hào)控制接觸器進(jìn)而控制電加熱水器的電源通斷,最終實(shí)現(xiàn)對(duì)水溫的控制。同時(shí)用組態(tài)軟件設(shè)計(jì)監(jiān)控界面來(lái)實(shí)現(xiàn)對(duì)水溫的控制顯示。通過(guò)對(duì)此課題的設(shè)計(jì),能夠使自動(dòng)化的學(xué)生對(duì)工業(yè)過(guò)程控制對(duì)象具有更進(jìn)一步的了解,同時(shí)熟練掌握自動(dòng)化控制系統(tǒng)的設(shè)計(jì)流程,為以后的工作學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ)。
本文引用地址:http://cafeforensic.com/article/201802/375293.htm一、控制系統(tǒng)硬件設(shè)計(jì)
1、控制系統(tǒng)硬件總體設(shè)計(jì)
溫度是一個(gè)很重要的變量,需要對(duì)其進(jìn)行準(zhǔn)確地控制。溫度控制系統(tǒng)常用來(lái)保持溫度恒定或者使溫度按照某種規(guī)定的規(guī)律變化。閉環(huán)控制是溫度控制系統(tǒng)中最為常見(jiàn)類型,本設(shè)計(jì)即為閉環(huán)溫度控制系統(tǒng),閉環(huán)溫度控制方框圖如圖1所示。
溫度控制系統(tǒng)由被控對(duì)象、測(cè)量裝置、調(diào)節(jié)器和執(zhí)行機(jī)構(gòu)組成。測(cè)量裝置對(duì)被控電加熱水器中水溫進(jìn)行測(cè)量,控制器將測(cè)量值與給定值進(jìn)行比較,若存在偏差便由控制器對(duì)偏差信號(hào)進(jìn)行處理,輸出控制信號(hào)給執(zhí)行機(jī)構(gòu)來(lái)啟動(dòng)或停止電加熱水器工作,最終將溫度調(diào)節(jié)到設(shè)定值。被控對(duì)象是電加熱水器內(nèi)水的溫度。
基于上述理論設(shè)計(jì)出本控制系統(tǒng),本系統(tǒng)硬件主要有:STM32單片機(jī)、PT100溫度傳感器、開(kāi)關(guān)電源、模擬量前向通道、繼電器輸出模塊、HH52P型固態(tài)繼電器、CJ20-10型接觸器、電加熱水器,控制系統(tǒng)硬件結(jié)構(gòu)圖如圖2所示。
2、STM32單片機(jī)介紹
STM32單片機(jī)是整個(gè)溫度控制系統(tǒng)的核心部分。因?yàn)閷?duì)溫度控制器具有較高的要求,例如高執(zhí)行速度,高控制精度,高穩(wěn)定性以及高靈敏度等,所以選擇一個(gè)具有較高性能而又經(jīng)濟(jì)的單片機(jī)就成為必然。本設(shè)計(jì)選用屬于STM32系列的STM32F103VET6單片機(jī)作為控制電路的核心部件,該單片機(jī)屬于ST意法半導(dǎo)體公司生產(chǎn)的32位高性能、低成本、低功耗的增強(qiáng)型系列單片機(jī),它的內(nèi)核采用的是ARM公司最新研發(fā)的Cortex-M3架構(gòu),該內(nèi)核是專門設(shè)計(jì)于滿足用戶對(duì)高性能、低功耗和經(jīng)濟(jì)實(shí)用的要求。ARM Cortex-M3處理器的架構(gòu)在系統(tǒng)結(jié)構(gòu)上的增強(qiáng),使得STM32增強(qiáng)型系列單片機(jī)受益無(wú)窮,其采用的THUMB-2指令集使得其指令效率更高和而且性能更強(qiáng)。
STM32F103VET6采用薄型四方扁平式封裝技術(shù)(LQFP)具有100管腳,片內(nèi)具有512KB的FLASH,64KB的RAM(片上集成12Bit A/D、D/A、PWM、CAN、USB、安全數(shù)字輸入輸出卡SDIO、可變靜態(tài)存儲(chǔ)控制器FSMC等資源)。1個(gè)串行外設(shè)接口(SPI)總線控制的M25P16(16MB容量的串行FLASH),用于存儲(chǔ)數(shù)據(jù)、代碼、字庫(kù)及圖相等等。1個(gè)2.8寸26萬(wàn)色顯示屏(TFT 240X320(帶觸摸屏))接口,利用MCU的FSMC的16位數(shù)據(jù)接口模式,觸摸屏采用ADS7843(4線電阻觸摸屏轉(zhuǎn)換接口芯片)芯片用硬SPI接口控制。STM32單片機(jī)采用2.0~3.6V的供電電壓,可以工作在-40℃~85℃的溫度范圍內(nèi),其最高的工作頻率是72MHz,其引腳分布如圖3所示。
STM32F103VET6單片機(jī)有3個(gè)不同的時(shí)鐘源可供選擇用以驅(qū)動(dòng)系統(tǒng)時(shí)鐘,分別為HIS振蕩器時(shí)鐘、HSE振蕩器時(shí)鐘和PLL時(shí)鐘。這些設(shè)備還具有2個(gè)二級(jí)時(shí)鐘源,分別是40KHz的低速內(nèi)部RC和32.768KHz的低速外部時(shí)鐘源,可以用來(lái)驅(qū)動(dòng)看門狗時(shí)鐘和RTC。任何一個(gè)時(shí)鐘源在不被使用時(shí),都可以被獨(dú)立的關(guān)閉或者開(kāi)啟,以實(shí)現(xiàn)對(duì)系統(tǒng)功耗的優(yōu)化。
單片機(jī)由AMS1117-3.3芯片電路供電,輸入+5V,提供3.3V的固定電壓輸出,為了降低電磁干擾,需要經(jīng)C7-C10濾波后再為CPU供電,R8為DGND與AGND的連接電阻,R9和D5 LED和電源指示連接電阻,電源電路如圖4所示。
RTC的備份電源采用VBAT 3.3V 鋰離子片狀電池,RTC的備份電源如圖5所示。
單片機(jī)的外部晶體/陶瓷諧振器(HSE)(P12、P13),Y1是8MHz晶體諧振器,C22、C23 是諧振電容,大小選擇22P。系統(tǒng)的時(shí)鐘經(jīng)過(guò)PLL模塊將時(shí)鐘提高到72MHz。單片機(jī)的低速外部時(shí)鐘源(LSE)(P8、P9),Y2為32.768KHz的晶體諧振器,C20、C21 諧振電容選擇22PF。要注意的是根據(jù)ST公司的推薦,Y2要采用電容負(fù)載為6PF的晶振,否則有可能會(huì)出現(xiàn)停振的現(xiàn)象,時(shí)鐘電路如圖6所示
目前,STM32單片機(jī)已經(jīng)在很多場(chǎng)合得到應(yīng)用,研制出了很多性能優(yōu)良的產(chǎn)品,例如可編程邏輯控制器,打印機(jī),掃描儀,電機(jī)控制以及一些數(shù)碼產(chǎn)品,STM32已成為非常成熟的可應(yīng)用控制器件,本次設(shè)計(jì)選用的開(kāi)發(fā)板如圖7所示。
3、硬件接線及其原理介紹
溫度控制系統(tǒng)在正常工作的時(shí)候,首先由PT100溫度傳感器檢測(cè)被控對(duì)象電加熱水器內(nèi)水的當(dāng)前溫度信號(hào),將PT100溫度傳感器的電阻值變化在模擬量前向通道中作變換放大、冷端溫度補(bǔ)償、線性化。然后將模擬量前向通道輸出的模擬電壓信號(hào)送給主控模塊的STM32單片機(jī)進(jìn)行處理,經(jīng)數(shù)字化處理后與給定的溫度值的數(shù)字量進(jìn)行比較。單片機(jī)根據(jù)預(yù)定的PID控制算法對(duì)數(shù)據(jù)進(jìn)行處理,并通過(guò)顯示屏顯示當(dāng)前溫度和設(shè)定值,程序自動(dòng)確定系統(tǒng)是否存在異常,如果系統(tǒng)運(yùn)行正常,將PID運(yùn)算結(jié)果作為輸出控制量控制PWM波形的輸出,控制執(zhí)行器的動(dòng)作,從而達(dá)到接通或者斷開(kāi)電阻爐主電路的目的,實(shí)現(xiàn)對(duì)電加熱水器的控制。單片機(jī)控制水溫的同時(shí)可選擇連接上位機(jī)進(jìn)行組態(tài)監(jiān)控,將變量的信息傳給上位機(jī)使用,并將上位機(jī)設(shè)定的參數(shù)下載到控制器STM32,從而達(dá)到上位機(jī)組態(tài)應(yīng)有的效果。本次設(shè)計(jì)系統(tǒng)控制回路接線如圖8所示
模擬量前向通道使用公司生產(chǎn)的TLC7135(也可稱為ICL7135)芯片,加上前級(jí)模擬信號(hào)運(yùn)算放大器的特殊處理, 以及一些其它的基本元器件成功地實(shí)現(xiàn)了微弱信號(hào)的測(cè)量。TLC7135具有以下特性:輸入阻抗高,對(duì)被測(cè)電路幾乎沒(méi)有影響;能夠自動(dòng)校零;有精確的差分輸入電路;自動(dòng)判別信號(hào)極性;有超、欠壓輸出信號(hào);采用位掃描(共5位)與BCD碼輸出。本次設(shè)計(jì)應(yīng)用PT100作為溫度傳感器,需要接三根信號(hào)線,其中兩線內(nèi)部短接,信號(hào)經(jīng)單8通道數(shù)字控制模擬電子開(kāi)關(guān)CD4051選通后,經(jīng)運(yùn)算放大器后得到溫度信號(hào)對(duì)應(yīng)的模擬電壓值,本次設(shè)計(jì)選擇的處理方法是經(jīng)運(yùn)算放大器的6管腳引出此模擬電壓信號(hào),直接用單片機(jī)實(shí)現(xiàn)數(shù)字化處理,模擬量前向通道如圖9所示[6]。
繼電器輸出模塊主要用來(lái)執(zhí)行STM32輸出的PWM控制信號(hào),及時(shí)的接通或者斷開(kāi)后邊的固態(tài)繼電器HH52P和交流接觸器CJ20-10,進(jìn)而實(shí)現(xiàn)對(duì)加熱器主電路的控制。由于單片機(jī)輸出的PWM信號(hào)3.3V左右電壓較低,不能直接用來(lái)驅(qū)動(dòng)24V的固態(tài)繼電器HH52P,因此需要在其中間加用繼電器輸出模塊,繼電器輸出模塊供電電壓12V,只要有輸入信號(hào)便可以控制線圈的吸合與斷開(kāi),繼電器輸出模塊如圖10所示。
PT100是鉑熱電阻器,它的阻值會(huì)隨著溫度的變化而改變。PT后的100即表示它在0℃時(shí)阻值為100歐姆,在100℃時(shí)它的阻值約為138.5歐姆。常見(jiàn)的PT100感溫元件有陶瓷元件,玻璃元件,云母元件,它們是由鉑絲分別繞在陶瓷骨架,玻璃骨架,云母骨架上再經(jīng)過(guò)復(fù)雜的工藝加工而成[7]。PT100的工作原理:當(dāng)PT100在0℃的時(shí)候他的阻值為100歐姆,它的阻值會(huì)隨著溫度上升而成近似勻速的增長(zhǎng)。但他們之間的關(guān)系并不是簡(jiǎn)單的正比的關(guān)系,而更應(yīng)該趨近于一條拋物線。
鉑電阻的阻值隨溫度的變化而變化的計(jì)算公式如公式(1)和公式(2)所示。
公式中的A,B,系數(shù)為實(shí)驗(yàn)測(cè)定。PT100鉑電阻的RT曲線圖如圖11所示
PT100電阻隨溫度變化表見(jiàn)表1
本次設(shè)計(jì)的系統(tǒng)硬件電路實(shí)物圖如圖12所示。
二、控制系統(tǒng)軟件設(shè)計(jì)
1、軟件開(kāi)發(fā)環(huán)境及其工具
C語(yǔ)言編程
C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序,因此,它的應(yīng)用范圍廣泛,C程序設(shè)計(jì)語(yǔ)言是一種在國(guó)內(nèi)外被廣泛使用的計(jì)算機(jī)編程語(yǔ)言。C語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言,它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。C語(yǔ)言作為一種高級(jí)程序設(shè)計(jì)語(yǔ)言得到了廣泛的應(yīng)用,采用C語(yǔ)言編寫的軟件程序不針對(duì)特定的硬件系統(tǒng),可以根據(jù)不同的單片機(jī) 做移植,基于C語(yǔ)言的以上諸多特點(diǎn)及優(yōu)點(diǎn),本設(shè)計(jì)的軟件程序設(shè)計(jì),采用C程序設(shè)計(jì)語(yǔ)言[9]。
軟件開(kāi)發(fā)工具介紹
編程軟件使用源自德國(guó)Keil公司的 RealView MDK,這一款編程軟件被全球超過(guò)十萬(wàn)的嵌入式工程師或者學(xué)者驗(yàn)證和使用,是ARM公司最新推出的針對(duì)各種嵌入式處理器的軟件開(kāi)發(fā)工具。它集成了業(yè)界最領(lǐng)先的技術(shù),融合了中國(guó)多數(shù)軟件工程師所需要的特點(diǎn)和功能,uVision4集成開(kāi)發(fā)環(huán)境支持ARM7、ARM9和最新的Cortex-M3內(nèi)核處理器,自動(dòng)配置啟動(dòng)代碼,集成Flash少些模塊,強(qiáng)大的性能分析功能。其集成開(kāi)發(fā)環(huán)境如圖13所示。
uVision4集成開(kāi)發(fā)環(huán)境主要的性能:
(1) 源代碼編輯器的功能非常強(qiáng)大。
(2) 設(shè)備數(shù)據(jù)庫(kù)可以根據(jù)開(kāi)發(fā)工具進(jìn)行配置。
(3) 工程管理器可以用于創(chuàng)建和維護(hù)工程。
(4) 編譯工具集匯編、編譯、連接過(guò)程于一體。
(5) 用于設(shè)置開(kāi)發(fā)工具配置的對(duì)話框。
(6) 真正集成高速CPU及片上外設(shè)模擬器的源碼級(jí)調(diào)試器。
(7) 高級(jí)GDI接口,可用于目標(biāo)硬件的軟件調(diào)試和ULINK2仿真器的連接。
(8) 用于下載應(yīng)用程序到Flash ROM中的Flash編程器。
(9) 完善的開(kāi)發(fā)工具手冊(cè)、設(shè)備數(shù)據(jù)手冊(cè)和用戶向?qū)А?/p>
2、STM32工程創(chuàng)建與配置
經(jīng)過(guò)學(xué)習(xí)軟件的編程,對(duì)STM32程序編寫有初步的認(rèn)識(shí),下面就是創(chuàng)建與配置工程的全部過(guò)程。
(1)新建一個(gè)文件夾(以后編的每一個(gè)工程都放進(jìn)這個(gè)文件夾里,自己命名,此處所有文件都可以自己命名,例如:STM32 file)。此處所用到的庫(kù)函數(shù)版本為V3.5庫(kù)函數(shù)版本。
(2)創(chuàng)建一個(gè)文件夾(名字可以根據(jù)你編寫的程序來(lái)命名,如:Demo)。 新建子文件夾User,用于存放用戶源程序。新建子文件夾Project,用戶KEIL工程文件。在Project下依次創(chuàng)建Obj和List子文件夾,存放編譯過(guò)程中產(chǎn)生的中間文件。將main.cstm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 、system_stm32f10x.c等文件復(fù)制到User文件下。
(3)復(fù)制源代碼到Demo文件夾。
將stm32f10x_stdperiph_lib3.5 / Libraries文件夾整體復(fù)制到Demo文件夾下 這就是ST的標(biāo)準(zhǔn)庫(kù),是以源代碼形式提供的。也可將Libraries文件夾直接復(fù)制到STM32 file文件夾下,使其與以后創(chuàng)建的其他工程同在一個(gè)目錄下,這樣可使在該目錄在的工程共享Libraries。免得以后創(chuàng)建一個(gè)工程就得復(fù)制一次Libraries。
(4)新建一個(gè)Keil MDK工程
啟動(dòng)Keil MDK,點(diǎn)擊菜單New uVision Project,然后按向?qū)нM(jìn)行操作。選擇CPU類型為STM32F103VE。當(dāng)提示是否復(fù)制啟動(dòng)代碼時(shí),選擇否。為了延長(zhǎng)芯片使用壽命以及加快仿真速度,可以在ram中直接仿真(ram仿真速度快),用ram仿真 在斷電之后數(shù)據(jù)就全部丟失了,修改Target名字, 添加兩個(gè),一個(gè)Flash,一個(gè)Ram。
為了便于代碼管理,在這個(gè)Project下創(chuàng)建幾個(gè)Group,User:存放用戶自己寫的源代碼;RVMDK:存放啟動(dòng)文件(匯編文件);StdPeriph_Driver:存放ST標(biāo)準(zhǔn)庫(kù)文件;CMSIS :存放CMSIS接口文件(這也是庫(kù)的一部分);創(chuàng)建好Group后,我們開(kāi)始依次添加文件。添加User:如main.c stm32f 10x_it.c添加RVMDK:statup_stm32f 10x_hd.x;添加StdPeriph_Driver :我們用到的STM32溫度控制系統(tǒng)設(shè)計(jì)
一些.C文件。如:misc.c stm32f 10x_rcc.c stm32f 10x_gpio.c等;添加CMSIS :core_cm3.c system_stm32f 10x.c。
(5)配置工程, 點(diǎn)擊“Opons”按鈕。
打開(kāi)Flash 調(diào)整Flash設(shè)置,切換到Output,然后選擇Object文件夾,在CreateHex File 前打鉤,并將Name Executable修改為output。
切換到Lisng,選擇Lisngs文件夾。切換到C/C++,添加兩個(gè)預(yù)編譯宏STM32F10X_HD,
USE_STDPERIPH_DRIVER (這是ST庫(kù)用到了這兩個(gè)宏),修改Includes路徑。切換到Debug,選擇硬件調(diào)試器,我們選擇ST-Link Debugger,在Run to main前打鉤。切換到Utilities,選擇調(diào)試器類型,我們選擇ST-Link Debugger。
? 打開(kāi)Ram,調(diào)整Ram設(shè)置。切換到target,切換到Output。選擇Object文件夾,在Create Hex File 前打鉤。將Name Executable修改為output。切換到Listing,選擇Listings文件夾。切換到C/C++,選中One ELF Section per Function,添加兩個(gè)預(yù)編譯宏STM32F10X_HD, USE_STDPERIPH_DRIVER(這是ST庫(kù)用到了這兩個(gè)宏),修改Includes路徑。這樣就新建一個(gè)工程,我們可以根據(jù)需要自己所要實(shí)現(xiàn)的功能編輯程序。
三、軟件系統(tǒng)總體設(shè)計(jì)
1、軟件程序結(jié)構(gòu)
在深入學(xué)習(xí)STM32編程、PID控制算法、組態(tài)王軟件的基礎(chǔ)上進(jìn)行溫度控制系統(tǒng)的軟件設(shè)計(jì)。軟件設(shè)計(jì)主要包括溫度數(shù)據(jù)的采集變換、PID算法的設(shè)計(jì)、PWM輸出信號(hào)控制以及觸摸屏顯示設(shè)計(jì)、上位機(jī)監(jiān)控畫面的設(shè)計(jì)。上位機(jī)監(jiān)控畫面的設(shè)計(jì)主要包括設(shè)計(jì)監(jiān)控主畫面、設(shè)計(jì)報(bào)警畫面等。整個(gè)程序系統(tǒng)主要有主控程序、初始化程序、溫度設(shè)定程序、PID設(shè)置程序、溫度采集程序、溫度顯示程序、PID控制算法程序、PWM控制信號(hào)輸出程序和串口通信程序組成,其結(jié)構(gòu)如圖14所示。
3.2.2 主程序設(shè)計(jì)
主程序是整個(gè)軟件系統(tǒng)的主干,處在程序的最頂一層,引導(dǎo)系統(tǒng)進(jìn)入正常的工作狀態(tài),并且協(xié)調(diào)著各個(gè)程序塊之間的調(diào)用關(guān)系,使硬件系統(tǒng)能正常的工作以完成溫度控制系統(tǒng)任務(wù),其流程如圖15所示。
3.2.3 初始化程序設(shè)計(jì)
系統(tǒng)初始化程序在系統(tǒng)上電啟動(dòng)或者復(fù)位時(shí),對(duì)溫度控制器的硬件和軟件進(jìn)行初始化,完成系統(tǒng)的配置工作,初始化程序主要包括:顯示屏初始化、系統(tǒng)時(shí)鐘初始化、I/O 端口的配置、定時(shí)器初始化。
2、溫度采集程序設(shè)計(jì)
溫度檢測(cè)電路是由PT100溫度傳感器和模擬量前向通道組成的,溫度的檢測(cè)由二者直接完成。利用溫度檢測(cè)電路得到溫度變化對(duì)應(yīng)的模擬電壓信號(hào),該信號(hào)直接由STM32進(jìn)行A/D轉(zhuǎn)換,由于轉(zhuǎn)化的數(shù)值與實(shí)際的溫度值之間不是線性關(guān)系,要用DS18B20采集對(duì)應(yīng)溫度值,該溫度值用來(lái)校驗(yàn)當(dāng)前溫度是否正確,并用此溫度值對(duì)應(yīng)前向通道輸出的模擬電壓值以擬合數(shù)值與溫度值的曲線,得到他們之間的函數(shù)關(guān)系,本次擬合曲線如圖16所示。
曲線直線化是曲線擬合的重要手段之一。對(duì)于某些非線性的資料可以通過(guò)簡(jiǎn)單的變量變換使之直線化,這樣就可以按最小二乘法原理求出變換后變量的直線方程,在實(shí)際工作中常利用此直線方程繪制資料的標(biāo)準(zhǔn)工作曲線,同時(shí)根據(jù)需要可將此直線方程還原為曲線方程,實(shí)現(xiàn)對(duì)資料的曲線擬合。最終經(jīng)MATLAB得到曲線公式如公式(3)所示。
溫度采集相關(guān)的程序核心代碼如下所示:
void filter(void) //模擬量前向通道溫度采集
{
int sum = 0;
u8 count,i;
for(i=0;i《12;i++)
{
for(count=0;count《Sampling_Number;count++)
{
sum += Conv_AD_Value[count][i];
}
After_filter[i]=sum/Sampling_Number;
sum=0;
}
}
此程序用來(lái)獲取當(dāng)前溫度對(duì)應(yīng)的模擬量信號(hào),并將其轉(zhuǎn)化為數(shù)字量信號(hào),經(jīng)由擬合公式計(jì)算出對(duì)應(yīng)的溫度值。
3、位置式PID控制算法設(shè)計(jì)
工業(yè)生產(chǎn)過(guò)程中,對(duì)于生產(chǎn)裝置的溫度、壓力、流量、液位等工藝變量常常要求維持在一定的數(shù)值上,或按一定的規(guī)律變化,以滿足生產(chǎn)工藝的要求。PID控制算法的原理是對(duì)整個(gè)控制系統(tǒng)進(jìn)行按偏差進(jìn)行調(diào)節(jié),從而使被控量的實(shí)際值與工藝要求的預(yù)定值一致。因?yàn)镻ID控制算法具有:技術(shù)成熟、容易被人們熟悉和掌握、不需要建立數(shù)學(xué)模型、控制效果好、魯棒性等優(yōu)點(diǎn),所以PID控制算法成為應(yīng)用最廣泛的控制算法。
單片機(jī)控制是一種采樣控制,它只能根據(jù)采樣時(shí)刻的偏差值計(jì)算控制量。因此連續(xù)PID控制算法不能直接使用,需要采用離散化方法。由于工業(yè)生產(chǎn)過(guò)程大多數(shù)是緩慢變化的過(guò)程,因此只要控制機(jī)的采樣周期T取得足夠短,斷續(xù)控制形式就趨于連續(xù)控制形式。數(shù)字PID控制算法又分增量式PID控制算法和位置式PID控制算法,由于位置式PID控制算法控制精度比較高,而增量式PID控制算法有:積分截?cái)嘈?yīng)大、有靜態(tài)誤差、溢出的影響大等缺點(diǎn),所以本設(shè)計(jì)選用的控制算法是位置式PID控制算法。
位置式PID控制算式如公式(4)所示。
PID控制算法的參數(shù)整定與采樣周期的選取
PID控制算法參數(shù)整定的方法很多,概括起來(lái)有如下兩大類:
(1)理論計(jì)算整定法。它主要依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過(guò)理論計(jì)算確定控制器參數(shù)。這種方法所得到的計(jì)算數(shù)據(jù)未必可以直接使用,還必須通過(guò)工程實(shí)際進(jìn)行調(diào)整和修改。
(2)工程整定法。它主要依賴于工程經(jīng)驗(yàn),直接在控制系統(tǒng)的試驗(yàn)中進(jìn)行,且方法簡(jiǎn)單、易于掌握,在工程實(shí)際中被廣泛采用。PID控制算法參數(shù)的工程整定方法,主要有臨界比例法、反應(yīng)曲線法和衰減法。這三種方法各有其特點(diǎn),其共同點(diǎn)都是通過(guò)試驗(yàn),然后按照工程經(jīng)驗(yàn)公式對(duì)控制器參數(shù)進(jìn)行整定。但無(wú)論采用哪一種方法所得到的控制器參數(shù),都需要在實(shí)際運(yùn)行中進(jìn)行最后的調(diào)整與完善。
本文采用經(jīng)驗(yàn)法整定PID控制算法參數(shù),下面具體說(shuō)明經(jīng)驗(yàn)法的整定步驟:
(1)讓調(diào)節(jié)器參數(shù)的積分系數(shù)I=0,微分系數(shù)D=0,控制系統(tǒng)投入閉環(huán)運(yùn)行,由小到大改變比例系數(shù)P,讓擾動(dòng)信號(hào)作階躍變化,觀察控制過(guò)程,直到獲得滿意的控制過(guò)程為止。
(2)取比例系數(shù)P為當(dāng)前的值乘以0.83,由小到大增加積分系數(shù)I,同樣讓擾動(dòng)信號(hào)作階躍變化,直至得到滿意的控制過(guò)程。
(3)積分系數(shù)I保持不變,改變比例系數(shù)P,觀察控制過(guò)程有無(wú)改善,如有改善則繼續(xù)調(diào)整,直到滿意為止。否則,將原比例系數(shù)P增大一些,再調(diào)整積分系數(shù)I,力求改善控制過(guò)程。如此反復(fù)試湊,直到找到滿意的比例系數(shù)P和積分系數(shù)I為止。
(4)引入適當(dāng)?shù)奈⒎窒禂?shù)D,此時(shí)可適當(dāng)增大比例系數(shù)P和積分系數(shù)I。和前述步驟相同,微分系數(shù)的整定也需反復(fù)調(diào)整,直到控制過(guò)程滿意為止。
經(jīng)驗(yàn)法簡(jiǎn)單可靠,但需要有一定的現(xiàn)場(chǎng)運(yùn)行經(jīng)驗(yàn),整定時(shí)易帶有主觀片面性。當(dāng)采用PID控制算法時(shí),由于有多個(gè)整定參數(shù),反復(fù)試湊的次數(shù)增多,因此增加了得到最佳整定參數(shù)的難度。
需要注意的是:本設(shè)計(jì)所用到PID控制算法的參數(shù)與的工業(yè)上PID控制算法的參數(shù)有所不同,工業(yè)中由于對(duì)象的體積大、容量大、控制室距離現(xiàn)場(chǎng)較遠(yuǎn)等因素,所以其PID控制算法的參數(shù)普遍比本設(shè)計(jì)的大。
書上、參考資料上的的PID控制算法的參數(shù)多數(shù)都是從工業(yè)生產(chǎn)過(guò)程中得來(lái)的,因此此經(jīng)驗(yàn)數(shù)據(jù)不適應(yīng)作本設(shè)計(jì)PID控制算法的參數(shù)。
采樣周期的選取,按一定的時(shí)間間隔T,把時(shí)間上連續(xù)和幅值上也連續(xù)的信號(hào),轉(zhuǎn)變成在時(shí)刻0、T2、…、kT的一連串脈沖輸出信號(hào)的過(guò)程稱為采樣過(guò)程。執(zhí)行采樣動(dòng)作的開(kāi)關(guān)S稱為采樣開(kāi)關(guān)或采樣器采樣后的脈沖序列??ty*稱為采樣信號(hào),采樣器的輸入信號(hào)??ty稱為原始信號(hào),采樣開(kāi)關(guān)每次通斷的時(shí)間間隔T稱為采樣周期。采樣信號(hào)??ty在時(shí)間上是離散的,但在幅值上仍是連續(xù)的,所以采樣信號(hào)是一個(gè)離散的模擬信號(hào)。信號(hào)采樣過(guò)程如圖18所示。
從信號(hào)的采樣過(guò)程可知,經(jīng)過(guò)采樣不是取全部時(shí)間上的信號(hào)值,而是取某些時(shí)間上的值。這樣處理會(huì)不會(huì)造成信號(hào)丟失呢?香農(nóng)采樣定理指出:如果模擬信號(hào)(包括干擾在內(nèi))頻譜最高頻率為maxf,只要按照采樣頻率max2ff?進(jìn)行采樣,那么采樣信號(hào)??ty*就能惟一的復(fù)觀??ty。采樣定理給出了??ty*能惟一的復(fù)觀??ty所必需的最低采樣頻率。實(shí)際應(yīng)用中,常取??max105ff??,甚至更高。
4、采樣周期的確定需要注意以下事項(xiàng):
(1)從執(zhí)行機(jī)構(gòu)的特性要求來(lái)看,有時(shí)需要輸出信號(hào)保持一定的寬度。采樣周期必須大于這一時(shí)間。
(2)從控制系統(tǒng)的隨動(dòng)和抗干擾的性能來(lái)看,要求采樣周期短些。
(3)從單片機(jī)的工作量和每個(gè)調(diào)節(jié)回路的計(jì)算來(lái)看,一般要求采樣周期大些。
(4)從單片機(jī)的精度看,過(guò)短的采樣周期是不合適的。
經(jīng)過(guò)多次調(diào)試設(shè)置,采樣周期T選為1s采樣效果最好,且信號(hào)采樣不失真。
5、 PWM輸出程序設(shè)計(jì)
脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫,簡(jiǎn)稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中[14]。PWM控制技術(shù)以其控制簡(jiǎn)單,靈活和動(dòng)態(tài)響應(yīng)好的優(yōu)點(diǎn)而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式。
通過(guò)單片機(jī)輸出的PWM信號(hào)控制固態(tài)繼電器的通斷,通過(guò)改變一定時(shí)間內(nèi)通過(guò)的交流波頭數(shù)實(shí)現(xiàn)對(duì)電加熱水器內(nèi)水溫的控制,我國(guó)公共電力網(wǎng)的頻率均為50HZ,周期也就是0.02秒,設(shè)置 PWM 信號(hào)的輸出周期為4秒,即STM32單片機(jī)以0.25Hz的頻率輸出PWM,改變PWM的占空比,在4秒的周期內(nèi),當(dāng)PID算法的控制量大于100時(shí),通過(guò)交流電源的最大周期波數(shù)是100,當(dāng) PID 算法的控制量小于0時(shí),最小周期波數(shù)是0,當(dāng)控制量在0~100之間時(shí),就按比例換算進(jìn)行確定PWM輸出信號(hào)的占空比。STM32單片機(jī)具有多個(gè)定時(shí)器/計(jì)數(shù)器,每個(gè)定時(shí)器/計(jì)數(shù)器都可以獨(dú)立的輸出PWM信號(hào),本設(shè)計(jì)采用單片機(jī)的TIM3定時(shí)器/計(jì)數(shù)器在PB5 引腳輸出PWM,PWM輸出流程如圖19所示。
四、上位機(jī)監(jiān)控界面設(shè)計(jì)
1、上位機(jī)監(jiān)控軟件的選取
組態(tài)王(Kingview)由北京亞控自動(dòng)化軟件有限公司開(kāi)發(fā)的,該軟件由中國(guó)科技大學(xué)學(xué)士、清華大學(xué)碩士林偉總設(shè)計(jì),經(jīng)數(shù)十位工程師歷時(shí)五年開(kāi)發(fā)成功,是最優(yōu)秀的國(guó)產(chǎn)組態(tài)軟件,居全國(guó)同類軟件產(chǎn)銷量第一。組態(tài)王是一個(gè)具有易用性、開(kāi)放性和集成能力的通用組態(tài)軟件。應(yīng)用組態(tài)王可以使工程師把精力放在控制對(duì)象上,而不是形形色色的通信協(xié)議、復(fù)雜的圖形處理、枯燥的數(shù)字統(tǒng)計(jì)。只需要進(jìn)行填表操作,即可生成適合于用戶的監(jiān)控和數(shù)據(jù)采集系統(tǒng)??梢栽谡麄€(gè)生產(chǎn)企業(yè)內(nèi)部將各種系統(tǒng)和應(yīng)用集成在一起,實(shí)現(xiàn)“廠際自動(dòng)化”的最終目標(biāo)。組態(tài)王開(kāi)發(fā)監(jiān)控系統(tǒng)軟件是新型的工業(yè)自動(dòng)控制系統(tǒng)正以標(biāo)準(zhǔn)的工業(yè)計(jì)算機(jī)軟、硬件平臺(tái)構(gòu)成的集成系統(tǒng)取代傳統(tǒng)的封閉式系統(tǒng),具有適應(yīng)性強(qiáng)、開(kāi)放性好、易于擴(kuò)展、經(jīng)濟(jì)、開(kāi)發(fā)周期短等優(yōu)點(diǎn)。組態(tài)軟件以其可靠性高、抗干擾能力強(qiáng)、界面簡(jiǎn)單、功能強(qiáng)大、性價(jià)比高等顯著特點(diǎn)廣泛應(yīng)用于現(xiàn)代工業(yè)的自動(dòng)控制之中。
2、 組態(tài)王軟件組態(tài)監(jiān)控界面設(shè)計(jì)
使用組態(tài)王實(shí)現(xiàn)控制系統(tǒng)實(shí)驗(yàn)仿真的基本方法:
(1)圖形界面的設(shè)計(jì);
(2)構(gòu)造數(shù)據(jù)庫(kù);
(3)建立動(dòng)畫連接;
(4)運(yùn)行和調(diào)試。
根據(jù)以上控制方案的確定,本次設(shè)計(jì)組態(tài)王監(jiān)控界面如圖20所示
定義數(shù)據(jù)變量見(jiàn)表2。
選擇設(shè)備的相關(guān)配置如下:
設(shè)備名稱:通用單片機(jī)ASCII;
通信描述:串口;
邏輯名稱:STM32;
選擇串口號(hào):COM4;
設(shè)備地址:1.0。
動(dòng)態(tài)連接,參數(shù)動(dòng)態(tài)連接設(shè)置見(jiàn)表3。
3、報(bào)警和事件窗口設(shè)計(jì)
運(yùn)行報(bào)警時(shí)間記錄是監(jiān)控軟件必不可少的功能,“組態(tài)王”提供了強(qiáng)有力的支持和簡(jiǎn)單的控制運(yùn)行報(bào)警和時(shí)間記錄方法。
組態(tài)王中的報(bào)警和事件主要包括變量報(bào)警事件、操作事件、用戶登陸事件和工作站事件。通過(guò)這些報(bào)警和事件,用戶可以方便地記錄和查看系統(tǒng)的報(bào)警、操作和各個(gè)工作站的運(yùn)行情況。當(dāng)報(bào)警和事件發(fā)生時(shí),在報(bào)警窗中會(huì)按照設(shè)置的過(guò)濾條件實(shí)時(shí)的顯示出來(lái)[16]。定義報(bào)警組,本次建立報(bào)警畫面如圖21所示。
五、系統(tǒng)的運(yùn)行結(jié)果及問(wèn)題分析
1、運(yùn)行結(jié)果及分析
經(jīng)過(guò)多次的參數(shù)設(shè)置的調(diào)試,對(duì)比各組設(shè)置參數(shù)的調(diào)節(jié)效果得出:當(dāng)程序中PID設(shè)置參數(shù)如表4所示參數(shù)時(shí)控制效果最好。
總結(jié):本系統(tǒng)的控制核心算法是PID控制算法,難點(diǎn)是PID參數(shù)整定。圖22為系統(tǒng)運(yùn)行曲線的初始溫度50℃,設(shè)定溫度60℃時(shí)的結(jié)果,經(jīng)過(guò)9分鐘的調(diào)節(jié)系統(tǒng)達(dá)到穩(wěn)定,實(shí)際溫度達(dá)到設(shè)定溫度,穩(wěn)態(tài)誤差為0.4℃,超調(diào)量幾乎為零。本設(shè)計(jì)中溫度能達(dá)到設(shè)定溫度,而且超調(diào)量較小,穩(wěn)態(tài)效果很好。
2、出現(xiàn)的問(wèn)題及解決方法
在長(zhǎng)達(dá)十六周的畢業(yè)設(shè)計(jì)中,自己碰到了不少問(wèn)題。曾經(jīng),為了解決這些問(wèn)題也花費(fèi)了較多的時(shí)間。當(dāng)然,這也使自己對(duì)實(shí)際工程中所遇到或者可能遇到的問(wèn)題有了個(gè)提前認(rèn)知。
(1)上位機(jī)采集不到現(xiàn)場(chǎng)的數(shù)據(jù)
解決方法:原因是溫度傳感器與模擬量前向通道接線有錯(cuò)誤、松動(dòng),串口使用的通道設(shè)置錯(cuò)誤,在利用組態(tài)王軟件進(jìn)行I/O設(shè)備組態(tài)的時(shí)候應(yīng)選設(shè)備名稱通用單片機(jī)ASCII。
(2)上位機(jī)的輸出控制信號(hào)控制不了電加熱水器
解決方法:上位機(jī)組態(tài)軟件中查看數(shù)字量輸出通道的設(shè)置與當(dāng)前連線的通道不一致。
(3)系統(tǒng)穩(wěn)定后誤差比較大
解決方法:誤差產(chǎn)生的原因有:溫度對(duì)象是大慣性對(duì)象、單片機(jī)控制信號(hào)從發(fā)出到固態(tài)繼電器的吸合,再到加熱絲停止加熱,這過(guò)程中存在時(shí)間誤差、硬件靈敏度不夠精確等問(wèn)題。
評(píng)論