張玉葉,張小青
(咸陽(yáng)師范學(xué)院 物理與電子工程學(xué)院,陜西 咸陽(yáng) 712000)
PID控制器實(shí)現(xiàn):VB和Matlab混合編程
張玉葉,張小青
(咸陽(yáng)師范學(xué)院 物理與電子工程學(xué)院,陜西 咸陽(yáng) 712000)
以小型燃?xì)鉄崴疇t爐溫控制系統(tǒng)為研究對(duì)象,采用VB進(jìn)行人機(jī)界面設(shè)計(jì),Matlab完成系統(tǒng)PID控制算法的計(jì)算。以VB與Matlab接口混合編程技術(shù)為基礎(chǔ),在VB中調(diào)用Matlab的Active X部件實(shí)現(xiàn)VB與Matlab之間的鏈接,并將計(jì)算結(jié)果返回至VB,由VB完成系統(tǒng)關(guān)鍵曲線(xiàn)的顯示。利用Matlab的強(qiáng)大數(shù)值計(jì)算的能力,又結(jié)合VB的可視化友好界面,實(shí)現(xiàn)了小型燃?xì)鉄崴疇t爐溫控制的PID仿真分析,也可進(jìn)一步實(shí)現(xiàn)相關(guān)軟件的開(kāi)發(fā)和設(shè)計(jì)。
Matlab;Visual Basic;PID算法;Active X部件
實(shí)際工程應(yīng)用中,通常采用VB可視化高級(jí)語(yǔ)言來(lái)編寫(xiě)應(yīng)用程序的界面,而用Matlab軟件來(lái)進(jìn)行數(shù)值分析、矩陣運(yùn)算、信號(hào)處理和圖形圖像的顯示。如果把這兩種軟件結(jié)合起來(lái)使用既可回避VB軟件在程序編寫(xiě)過(guò)程中過(guò)分繁瑣和抽象的缺點(diǎn),又能夠克服軟件本身數(shù)據(jù)結(jié)構(gòu)單一、數(shù)值計(jì)算和處理能力弱的缺陷,從而方便地實(shí)現(xiàn)了可視化交互界面的操作。另外,Matlab本身的GUI界面設(shè)計(jì)是基于句柄的編程背景,句柄編程是基于界面底層的編程,編程十分繁瑣。因此,Matlab與VB接口編程技術(shù),是將Matlab軟件和VB軟件各自的優(yōu)勢(shì)結(jié)合起來(lái),實(shí)現(xiàn)VB與Matlab的無(wú)縫鏈接,將提高軟件的開(kāi)發(fā)效率,對(duì)解決工程實(shí)際應(yīng)用問(wèn)題有重要意義。本設(shè)計(jì)以一個(gè)工程實(shí)際問(wèn)題——小型燃?xì)鉄崴疇t的爐溫控制系統(tǒng)為例,基于ActiveX技術(shù)實(shí)現(xiàn)VB與Matlab的數(shù)據(jù)交換。根據(jù)被控對(duì)象的參數(shù)和PID控制器的參數(shù),由Matlab軟件進(jìn)行PID算法的計(jì)算,由VB應(yīng)用程序進(jìn)行分析界面設(shè)計(jì)和接口編程,最終在VB界面實(shí)現(xiàn)關(guān)鍵曲線(xiàn)的顯示。從而達(dá)到結(jié)果直觀,分析方便的目的[1]。本文以Visual Basic進(jìn)行人機(jī)界面的開(kāi)發(fā),而以Matlab作為運(yùn)算模塊,進(jìn)行PID控制算法的設(shè)計(jì),從而進(jìn)行VB與Matlab之間雙向的數(shù)據(jù)交換。
1.1控制對(duì)象的數(shù)學(xué)模型
自動(dòng)控制系統(tǒng)的設(shè)計(jì),首要考慮建立被控對(duì)象的數(shù)學(xué)模型。本文以小型燃?xì)鉄崴疇t控制系統(tǒng)為例。被控對(duì)象是熱水鍋爐,控制量是水溫。影響熱水溫度的因素有很多,如進(jìn)水流量和溫度、燃?xì)饬髁康???紤]到本文所采用的控制算法并不要求被控對(duì)象模型十分精確,所以采用了一個(gè)近似模型作為設(shè)計(jì)的參考對(duì)象[2]。通常,溫度控制系統(tǒng)的模型可近似為一階延遲系統(tǒng)或者二階延遲系統(tǒng)。燃?xì)鉄崴仩t是一個(gè)非線(xiàn)性、具有大滯后的系統(tǒng),本文選擇被控對(duì)象的模型形式為:
其中K0為鍋爐正常運(yùn)行的開(kāi)環(huán)增益,τ為延遲時(shí)間,T1、T2為時(shí)間常數(shù)。被控對(duì)象模型的參數(shù)獲得是通過(guò)對(duì)樣品鍋爐的實(shí)驗(yàn)測(cè)試得到。實(shí)驗(yàn)的環(huán)境溫度18oC,每5 s采樣一個(gè)數(shù)據(jù)點(diǎn)??刂茍?zhí)行機(jī)構(gòu),將燃?xì)庹{(diào)節(jié)閥調(diào)開(kāi)度由0快速增加至50%,記錄整個(gè)溫升過(guò)程中的溫度變化數(shù)據(jù),用Matlab軟件將溫度數(shù)據(jù)畫(huà)成溫升曲線(xiàn)如圖1所示。
圖1 燃?xì)鉄崴疇t溫度曲線(xiàn)
得到了溫升曲線(xiàn)之后,可以利用經(jīng)驗(yàn)公式對(duì)系統(tǒng)進(jìn)行辨識(shí),經(jīng)辨識(shí)得到控制系統(tǒng)近似模型:
1.2PID控制原理
PID調(diào)節(jié)技術(shù)是一種有效而實(shí)用的經(jīng)典控制策略,在工業(yè)控制領(lǐng)域應(yīng)用非常廣泛。PID控制的特點(diǎn)是在被控對(duì)象數(shù)學(xué)模型未知或者不精確的前提下,只需對(duì)控制器參數(shù),即比例系數(shù)KP、積分系數(shù)KI和微分系數(shù)KD進(jìn)行調(diào)整,就可獲得滿(mǎn)意的控制效果,PID控制的原理圖如圖2所示。PID控制系統(tǒng)由PID控制器和被控對(duì)象組成,根據(jù)設(shè)定目標(biāo)值r(t)與實(shí)際輸出值y(t)構(gòu)成的控制偏差e(t),將此偏差e(t)的比例,積分和微分通過(guò)線(xiàn)性組合構(gòu)成控制量,對(duì)受控對(duì)象進(jìn)行控制[3]。
控制器的控制量為偏差信號(hào)e(t),表達(dá)式為:
控制器時(shí)域輸出u(t)方程為:
PID控制器的參數(shù)整定是控制系統(tǒng)設(shè)計(jì)的核心內(nèi)容。PID參數(shù)整定依賴(lài)一定的經(jīng)驗(yàn),通常有固有的規(guī)律可循。
圖2 PID控制原理圖
1.3PID控制器各參數(shù)對(duì)系統(tǒng)動(dòng)態(tài)性能的影響
單獨(dú)調(diào)節(jié)參數(shù)P(另外兩個(gè)參數(shù)為常數(shù)):當(dāng)KP增大,系統(tǒng)靈敏度增大,在穩(wěn)定的前提下,穩(wěn)態(tài)誤差減小,而KP過(guò)大,系統(tǒng)振蕩次數(shù)將會(huì)太多。
單獨(dú)調(diào)節(jié)參數(shù)I:系統(tǒng)控制精度會(huì)提高,可以消除穩(wěn)態(tài)誤差,會(huì)使系統(tǒng)穩(wěn)定性下降,KI過(guò)大系統(tǒng)將不穩(wěn)定[4]。
微分控制不單獨(dú)使用,經(jīng)常與積分控制或者比例控制聯(lián)合使用,引入微分控制往往會(huì)改善系統(tǒng)動(dòng)態(tài)性能,當(dāng)KD偏小,超調(diào)量較大,調(diào)節(jié)時(shí)間也較長(zhǎng),當(dāng)KD合適,不僅可以提高系統(tǒng)響應(yīng)速度,也可以提高穩(wěn)定性[5]。
當(dāng)KP、KI和KD在調(diào)節(jié)系統(tǒng)動(dòng)態(tài)性能指標(biāo)方面,往往根據(jù)實(shí)際情況兼顧各方面性能,在實(shí)際系統(tǒng)的參數(shù)調(diào)節(jié)過(guò)程中,可以參閱文獻(xiàn)[5]所給的參數(shù)經(jīng)驗(yàn)法,給出基本的湊法范圍,可選定綜合性良好的參數(shù)。
2.1Active X技術(shù)
Active X技術(shù)是Microsoft面向?qū)ο蟪绦蚣夹g(shù)的模塊集成的新協(xié)議,最主要的技術(shù)是組件對(duì)象模型COM。它允許應(yīng)用程序或組件控制另一個(gè)應(yīng)用程序或組件的運(yùn)行。在程序中加入Active X部件后,它將成為開(kāi)發(fā)和運(yùn)行環(huán)境的一部分,并為應(yīng)用程序提供新的功能。Active X部件保留了一些普通VB控制的屬性、事件和方法。Active X部件特有的方法和屬性大大地增強(qiáng)了程序設(shè)計(jì)者的能力和靈活性,Active X實(shí)際上是在調(diào)用一種部件,而無(wú)需要求該部件對(duì)應(yīng)的程序正在運(yùn)行,這會(huì)使得其功能更加強(qiáng)大。在VB中創(chuàng)建Matlab的Active X對(duì)象后,就可以使用這個(gè)對(duì)象所包含的各種方法,實(shí)現(xiàn)對(duì)MATLAB的調(diào)用[6]。在VB中創(chuàng)建Matlab Active X的方法如下:
Dim MatlabAs Object
Set Matlab=CreatObject(“matlab application”)
在創(chuàng)建Matlab Active X對(duì)象后。就可以利用該對(duì)象所包含的各種方法實(shí)現(xiàn)對(duì)Matlab的調(diào)用。
2.2VB與Matlab接口實(shí)現(xiàn)
實(shí)現(xiàn)VB應(yīng)用程序與Matlab的接口,也就是說(shuō)實(shí)現(xiàn)VB應(yīng)用程序與Matlab之間的數(shù)據(jù)交換的關(guān)鍵步驟為[7]:
(1)新建項(xiàng)目。
(2)添加控件,根據(jù)實(shí)際情況在當(dāng)前窗口添加控件,例如Button按鈕控件、Text文本控件等。
(3)設(shè)置屬性,將Label與Command按鈕的Text屬性設(shè)置為與界面一致。
(4)添加代碼,代碼提前在Matlab環(huán)境下編輯好,以備調(diào)用。
(5)運(yùn)行。點(diǎn)擊VB環(huán)境下的運(yùn)行按鈕,則實(shí)現(xiàn)VB對(duì)Matlab的直接調(diào)用結(jié)果,顯示在VB界面下。
2.3若干接口界面及控制效果對(duì)比分析
采用時(shí)域分析法分析燃?xì)鉄崴疇t爐溫控制系統(tǒng),在Matlab環(huán)境下,提前在Matlab環(huán)境下編寫(xiě)好時(shí)域分析程序段。在VB環(huán)境下,設(shè)計(jì)好用戶(hù)界面,利用接口鏈接語(yǔ)句達(dá)到VB環(huán)境下調(diào)用Matlab運(yùn)算結(jié)果。圖3即是Matlab的分析結(jié)果在VB用戶(hù)界面下的呈現(xiàn)。從繪圖結(jié)果來(lái)看時(shí)域分析效果,系統(tǒng)調(diào)節(jié)時(shí)間較長(zhǎng),超調(diào)量較大,指標(biāo)不理想。
燃?xì)鉄崴疇t爐溫控制系統(tǒng)的單位階躍響應(yīng)參數(shù)整定效果如圖4示。界面設(shè)計(jì)了PD、PI、PID 3種整定方案,圖4運(yùn)行的效果是選定參數(shù)為:
P=0.608 4;I=6.126 9;D=0.145 0。
PID控制算法提前由Matlab編程并存儲(chǔ),VB調(diào)用Matlab的繪圖函數(shù)即可生成校正曲線(xiàn)。由圖4可知,給系統(tǒng)加PID校正后性能指標(biāo)得到一定的改善,在圖4的界面下,可以方便地修改參數(shù),觀察P、I、D 3種參數(shù)的變化對(duì)系統(tǒng)性能的影響以及改善情況[8],從而選擇相對(duì)合適的參數(shù),以滿(mǎn)足實(shí)時(shí)控制系統(tǒng)動(dòng)態(tài)性能指標(biāo)得要求。
圖3 VB界面下調(diào)用Matlab時(shí)域分析結(jié)果
圖4 VB界面下顯示加PID參數(shù)校正后的曲線(xiàn)
2.4若干接口鏈接代碼
VB是可視化編程軟件,首先進(jìn)行窗體設(shè)計(jì),將所需要的空間在窗體下進(jìn)行排列,屬性設(shè)置,然后以圖4為例,在圖4所示的窗體下編寫(xiě)的接口實(shí)現(xiàn)代碼如下:
1:private sub command1_click()//聲明一個(gè)點(diǎn)擊事件
2:Dim Matlab as Object//聲明要調(diào)用Matlab的Active X
3:Dim result as string
4:SetMatlab=CreatObject(“Matlab.application”)//建立聯(lián)系
5:Call Matlab.minimizecommandwindow
If Label12.Caption=""Then
num=Text10.Text
den=Text11.Text
Else
num=Label12.Caption
den=Label13.Caption
End If
6:result=Matlab.execute("sim('mlmx',5,[])")
7:result=Matlab.execute("set_param('mlmx/PID Controller','P','"&Text1.Text&"','I','"&Text2.Text &"','D','"&Text3.Text&"')")
8:result=Matlab.execute("set_param('mlmx/Transfer Fcn','Numerator','["&num&"]','Denominator','[" &den&"]')")
9:result=Matlab.execute("set_param('mlmx/Transfer Fcn1','Numerator','["&num&"]','Denominator',' ["&den&"]')")
10:result=Matlab.execute("clear")
11:result=Matlab.execute("sim('mlmx',5,[])")
12:result=Matlab.execute("plot(t,y1)")
13:result=Matlab.execute("grid;")
14:result=Matlab.execute("title('Mutil-loopSystem Step Response')")
15:result=Matlab.execute("print-f1-dbitmap c: stepphoto.bmp")
16:Picture1.Picture=LoadPicture("c:stepphoto. bmp")
17:Call Matlab.quit
最后點(diǎn)擊運(yùn)行,代碼無(wú)誤的前提下,運(yùn)行結(jié)果正如圖4所示。認(rèn)真理解吃透一個(gè)窗體下的程序代碼,其他界面的代碼編寫(xiě)也是相類(lèi)似的,這樣可以進(jìn)行其他控制系統(tǒng)的性能分析。
能力。應(yīng)用Matlab進(jìn)行自動(dòng)控制系統(tǒng)分析或者設(shè)計(jì)大大提高了工作效率。若將Matlab與VB結(jié)合,既可以利用Matlab的運(yùn)算能力,將其作為后臺(tái)運(yùn)行軟件,又可以利用VB強(qiáng)大的界面設(shè)計(jì)能力,將它作為前臺(tái)界面設(shè)計(jì)軟件。這樣,以一個(gè)實(shí)際的PID控制器在工程上的應(yīng)用(小型燃?xì)鉄崴疇t溫度控制)為例,可以做成一個(gè)軟件系統(tǒng),系統(tǒng)界面整潔、便利,參數(shù)可調(diào),只需要按相關(guān)控件即可。這樣的設(shè)計(jì)方法一方面,VB應(yīng)用程序?qū)ID的整定參數(shù)通過(guò)COM傳遞到Matlab,由Matlab應(yīng)用程序完成控制算法的計(jì)算。另一方面,將計(jì)算結(jié)果通過(guò)COM傳遞到VB,這樣的一種混合編程方法是兼顧了VB和Matlab各自的優(yōu)點(diǎn),大大提高了代碼執(zhí)行的效率,這在工程中有廣泛的應(yīng)用性。
[1]歐陽(yáng)明,李玉清,曾海霞,等.VB與MATLAB混合編程在工程中的應(yīng)用[J].電子技術(shù),2009,15(7):45-47.
[2]楊長(zhǎng)亮.基于模糊PID控制的燃?xì)鉄崴仩t燃燒控制系統(tǒng)的研究[D].成都:電子科技大學(xué),2010(5):13-18.
[3]王朝暉,宋軍.自整定PID控制策略在溫度控制中的應(yīng)用[J].計(jì)算技術(shù)與現(xiàn)代化,2006,25(4):45-47.
[4]吳春,龐洪,陳明,等.一種自整定模糊PID控制仿真[J].桂林航天工業(yè)高等專(zhuān)科學(xué)校學(xué)報(bào),2008(4):17-19.
[5]許輝,桂波,楊敏.某鍋爐減溫水調(diào)節(jié)方案優(yōu)化與實(shí)施[J].化工自動(dòng)化及儀表,2012,39(6):792-794.
[6]閆斐,柴茂.ActiveX技術(shù)綜述[J].山西煤炭管理干部學(xué)院學(xué)報(bào),2005,29(4):45-46.
[7]湯紅梅,張軍.基于ActiveX的Matlab與VB接口技術(shù)在仿真軟件設(shè)計(jì)中的應(yīng)用[J].煤礦機(jī)械,2004,45(12):86-87.
[8]周慕遜,王正初.基于VB與MATLAB接口的PID控制器實(shí)現(xiàn)[J].測(cè)控技術(shù),2010,29(3):46-47.
Matlab具有強(qiáng)大的數(shù)據(jù)處理能力和方便的繪圖
Realization of PID Controller Based on the Interface Programming Technique Between Matlab and VB
ZHANG Yuye,ZHANG Xiaoqing
(School of Physics and Electronics Engineering,Xianyang Normal University,Xianyang 712000,Shaanxi,China)
In this dissertation,the furnace temperature control system of a minitype gas-fired hot water boiler as the study object is mainly focused on.VB is used to build man-machine interface (MMI)of the given system.And the PID control algorithm is carried out by Matlab.Combining programming technology of VB and Matlab,the link of VB and Matlab can be realized by the callback function of ActiveX components of Matlab.And you can have execution results or drowned curve.In this way,integration of the friendly human-machine interfaces of VB and the strong analysis ability of Matlab can be achieved.And the PID simulation and analysis of the furnace temperature control system of a boiler thus can be done.And highly effective application and development of this method help to further develop related softwares.
Matlab;Visual Basic;PID algorithm;Active X components
TP31
A
1672-2914(2016)04-0038-04
2016-05-01
咸陽(yáng)師范學(xué)院大學(xué)生創(chuàng)新訓(xùn)練項(xiàng)目(2015045);咸陽(yáng)師范學(xué)院教改項(xiàng)目(2015Z006)。
張玉葉(1979—),女,陜西禮泉縣人,咸陽(yáng)師范學(xué)院物理與電子工程學(xué)院講師,碩士,研究方向?yàn)榭刂评碚撆c控制工程。