朱飛宇, 徐志宇, 黃國(guó)輝
(1.同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804; 2.博洛尼亞大學(xué) 電氣電子與信息工程學(xué)院,博洛尼亞 40136;3.杭州電子科技大學(xué) 能量利用系統(tǒng)與自動(dòng)化研究所,杭州 310018)
基于MatlabGUI的三容水箱液位實(shí)時(shí)監(jiān)控系統(tǒng)設(shè)計(jì)
朱飛宇1,2, 徐志宇1, 黃國(guó)輝3
(1.同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804; 2.博洛尼亞大學(xué) 電氣電子與信息工程學(xué)院,博洛尼亞 40136;3.杭州電子科技大學(xué) 能量利用系統(tǒng)與自動(dòng)化研究所,杭州 310018)
為了實(shí)現(xiàn)三容水箱教學(xué)實(shí)驗(yàn)平臺(tái)中液位控制算法的多樣化和可移植性,設(shè)計(jì)了基于Matlab圖形用戶界面(Graphic User Interface,GUI)的計(jì)算機(jī)監(jiān)控系統(tǒng)。利用Matlab的串口通信API,通過RS-485/RS-232數(shù)據(jù)通信接口實(shí)現(xiàn)對(duì)三容水箱液位的數(shù)據(jù)采集和控制。通信采用Modbus RTU協(xié)議確保數(shù)據(jù)的可靠傳輸。系統(tǒng)軟件界面友好、編程方便、操作簡(jiǎn)單,同時(shí)用戶可以植入算法使系統(tǒng)運(yùn)行于多種模式下。結(jié)果表明,基于Matlab GUI設(shè)計(jì)的計(jì)算機(jī)監(jiān)控系統(tǒng)能夠快速、準(zhǔn)確地繪制出液位響應(yīng)曲線,F(xiàn)lash動(dòng)畫能夠?qū)崟r(shí)模擬出實(shí)驗(yàn)進(jìn)度。
三容水箱; Matlab GUI; 計(jì)算機(jī)監(jiān)控; 通信協(xié)議; 響應(yīng)曲線
自動(dòng)化學(xué)科作為當(dāng)今信息時(shí)代最重要的學(xué)科之一,其教學(xué)方式中,實(shí)驗(yàn)教學(xué)成為不可或缺的重要部分?!坝?jì)算機(jī)控制技術(shù)”是自動(dòng)控制、電子技術(shù)、電氣技術(shù)等專業(yè)教學(xué)中一門重要的專業(yè)課,實(shí)驗(yàn)在該課程教學(xué)方式中更是扮演了舉足輕重的作用。計(jì)算機(jī)控制實(shí)驗(yàn)成功的關(guān)鍵在于計(jì)算機(jī)與實(shí)驗(yàn)臺(tái)的通信效率以及控制算法的選擇。
近年來(lái),國(guó)內(nèi)外研究學(xué)者分別通過不同的平臺(tái)開發(fā)計(jì)算機(jī)控制軟件,包括Delphi、組態(tài)王和C#.NET等[1-5],都取得了一定的成果,但基于Matlab GUI進(jìn)行上位機(jī)開發(fā)卻并不常見。
Matlab在數(shù)據(jù)分析、矩陣運(yùn)算、算法設(shè)計(jì)等方面具有明顯優(yōu)勢(shì),非常適合于對(duì)復(fù)雜算法的研究;軟件集成了串口通信API為實(shí)現(xiàn)計(jì)算機(jī)與實(shí)驗(yàn)臺(tái)通信提供便利。Matlab中的GUI模塊提供了圖形用戶界面的設(shè)計(jì)向?qū)?,開發(fā)者利用該向?qū)Э梢苑奖?、快捷地設(shè)計(jì)出一個(gè)界面。文獻(xiàn)[6]中針對(duì)數(shù)字信號(hào)處理課程中概念抽象、不易理解的教學(xué)難題,利用Matlab GUI開發(fā)了一個(gè)教學(xué)軟件,包括信號(hào)采集模塊、信號(hào)分析模塊、線性系統(tǒng)分析、濾波器設(shè)計(jì)模塊和信號(hào)處理技術(shù)應(yīng)用模塊[6]。文獻(xiàn)[7]中利用Matlab豐富的工具箱和直觀的GUI界面,設(shè)計(jì)并完成了運(yùn)動(dòng)控制系統(tǒng)課程的可視化虛擬實(shí)驗(yàn)平臺(tái)的構(gòu)建[7]。
然而,目前實(shí)驗(yàn)教學(xué)中關(guān)于Matlab GUI的應(yīng)用研究大多集中于仿真虛擬方面,很少涉及控制軟件平臺(tái)的開發(fā)。鑒于串口通信和控制算法在計(jì)算機(jī)控制系統(tǒng)中的核心地位,以及Matlab GUI模塊在這兩方面具備的獨(dú)特優(yōu)勢(shì),本文設(shè)計(jì)了基于Matlab GUI的三容水箱實(shí)時(shí)液位監(jiān)控系統(tǒng):選擇三容水箱作為下位機(jī)采集控制平臺(tái),在Matlab GUI平臺(tái)上實(shí)現(xiàn)了計(jì)算機(jī)與三容水箱實(shí)驗(yàn)臺(tái)的串口通信,通過PID等控制算法控制水箱液位,對(duì)計(jì)算機(jī)控制實(shí)驗(yàn)的發(fā)展具有重要的意義。
計(jì)算機(jī)監(jiān)控系統(tǒng)的總體設(shè)計(jì)如圖1所示。系統(tǒng)主要由兩部分組成:①下位機(jī)實(shí)現(xiàn)對(duì)三容水箱液位的數(shù)據(jù)采集和控制;②上位機(jī)利用Matlab GUI模塊實(shí)現(xiàn)對(duì)液位的控制操作,實(shí)時(shí)數(shù)據(jù)曲線的顯示和實(shí)驗(yàn)裝置狀態(tài)的Flash動(dòng)畫模擬。
圖1 計(jì)算機(jī)監(jiān)控系統(tǒng)總體結(jié)構(gòu)
1.1系統(tǒng)下位機(jī)
系統(tǒng)下位機(jī)為三容水箱物理實(shí)驗(yàn)平臺(tái),其由3個(gè)水箱、1個(gè)方形水槽、水泵、進(jìn)水閥門和球閥等部件組成,結(jié)構(gòu)原理圖如圖2所示。該實(shí)驗(yàn)平臺(tái)以ADuC834數(shù)據(jù)采集單片機(jī)[8-9]為主控芯片,該芯片基于8051為內(nèi)核,片內(nèi)集成了兩路高分辨率的ADC轉(zhuǎn)換通道及兩路獨(dú)立的DAC轉(zhuǎn)換通道,非常適用于多模擬量采集的系統(tǒng)。本系統(tǒng)單片機(jī)實(shí)現(xiàn)對(duì)水箱液位、溫度和流量的采集,并通過RS-485/RS-232數(shù)據(jù)通信接口與上位機(jī)進(jìn)行數(shù)據(jù)的交互,根據(jù)上位機(jī)發(fā)送過來(lái)的指令控制水泵、加熱管進(jìn)水閥和放水球閥等執(zhí)行部件。
圖2 三容水箱結(jié)構(gòu)原理圖
本文下位機(jī)主要負(fù)責(zé)對(duì)三容水箱液位的信號(hào)采集和控制:通過單片硅壓力傳感器實(shí)現(xiàn)。隨著液位的上升,容器底部受到的壓力相應(yīng)增大[10],壓力傳感器將采集到的模擬信號(hào)通過16位高精度AD轉(zhuǎn)換成數(shù)字信號(hào)并通過RS-232/RS-485串口發(fā)送給上位機(jī)。液位控制是通過控制水泵電壓來(lái)實(shí)現(xiàn)。上位機(jī)通過串口給下位機(jī)發(fā)送控制指令,通過DAC輸入0~5 V電壓信號(hào),并間接控制可調(diào)開關(guān)電源直流電壓輸出,調(diào)整水泵轉(zhuǎn)速,實(shí)現(xiàn)對(duì)液位的控制。
1.2系統(tǒng)上位機(jī)
上位機(jī)軟件是一套基于Matlab GUI界面、動(dòng)畫仿真、M控制算法文件以及標(biāo)準(zhǔn)通訊模塊為一體的實(shí)驗(yàn)環(huán)境,主要分為以下模塊:
(1) 串口通信。完成與下位機(jī)的數(shù)據(jù)交互。
(2) 控制策略。采用增量式PID控制算法,根據(jù)采集到的液位信息,計(jì)算并發(fā)送控制指令。算法獨(dú)立編寫在M文件中,用戶可以根據(jù)實(shí)驗(yàn)要求導(dǎo)入自定義算法。
(3) 人機(jī)界面。液位的參數(shù)設(shè)置,PID控制算法的參數(shù)設(shè)置及液位標(biāo)定,繪制液位的實(shí)時(shí)數(shù)據(jù)曲線,同時(shí)以Flash動(dòng)畫的形式模擬實(shí)驗(yàn)過程。
下位機(jī)程序采用Keil μVision5集成開發(fā)環(huán)境進(jìn)行開發(fā)。編寫各功能函數(shù),經(jīng)過調(diào)試、編譯、生成hex文件,再通過WSD軟件將程序下載到ADuC834單片機(jī)中。程序功能函數(shù)如圖3所示。
圖3 下位機(jī)程序架構(gòu)
3.1串口通信
Matlab GUI模塊配置了串口通信API,支持RS-485/RS-232串口通信[11-12]。只需通過調(diào)用其中的serial類及相關(guān)函數(shù)就能創(chuàng)建串口對(duì)象,用戶定義好串口的通信屬性(主要是波特率、起始位、數(shù)據(jù)位、校驗(yàn)位、停止位和輸入輸出緩沖大小等)即能實(shí)現(xiàn)上位機(jī)與下位機(jī)的通信,主要函數(shù)如下:
s=serial(‘COM1’); %創(chuàng)建串口對(duì)象s,串口號(hào)為COM1
set(s,‘BaudRate’,9600,‘StopBits’,1,‘Parity’,‘none’,‘DataBits’,8); %設(shè)置波特率為9600;8位數(shù)據(jù)傳送,一位停止位,無(wú)奇偶校驗(yàn)位;
另外,通信協(xié)議采用Modbus RTU協(xié)議確保數(shù)據(jù)傳輸?shù)木_。
3.2控制算法
PID控制器有著技術(shù)成熟、魯棒性好、容易理解和掌握等優(yōu)點(diǎn)[13-15],通過合理的Kp,Ki,Kd整定可以完成對(duì)系統(tǒng)的較好控制。PID控制可通過位置式和增量式兩種方式實(shí)現(xiàn)。前者在計(jì)算時(shí)要對(duì)偏差量逐一累加,導(dǎo)致在編程時(shí)占用大量的存儲(chǔ)單元,因此,本系統(tǒng)選用后者,即增量式PID控制算法。
式中:u(k)和e(k)分別為控制量與偏差量,
Δu(k)=u(k)-u(k-1)
Δe(k)=e(k)-e(k-1)
分別為控制量與偏差量的增量;Kp=1/δ為比例增益;Ki=KpT/Ti為積分系數(shù);Kd=KpTd/T為微分系數(shù)。當(dāng)確定好Kp、Ki、Kd后,只需要存儲(chǔ)前3次的測(cè)量值,即可求出Δu(k),具有誤差影響小的優(yōu)點(diǎn)。
3.3MatlabGUI界面設(shè)計(jì)
Matlab GUI界面主要包括:①數(shù)據(jù)顯示面板,包括3個(gè)水箱的液位高度顯示和進(jìn)行水溫控制實(shí)驗(yàn)時(shí)的溫度顯示;②參數(shù)設(shè)置面板,包括液位參數(shù)、溫度實(shí)驗(yàn)的溫度參數(shù)、控制算法參數(shù)及數(shù)據(jù)采集頻率參數(shù)設(shè)置等;③實(shí)驗(yàn)的開始、結(jié)束等控制指令;④實(shí)時(shí)數(shù)據(jù)曲線顯示和Flash動(dòng)畫模擬,另外控制界面還添加了液位標(biāo)定等輔助功能。
界面設(shè)計(jì)遵循可視化程度高、操作簡(jiǎn)潔、布局合理的原則,現(xiàn)設(shè)計(jì)如圖4所示。
(1)系統(tǒng)數(shù)據(jù)顯示與參數(shù)設(shè)置模塊。數(shù)據(jù)顯示面板主要是將上位機(jī)采集到的液位信息直觀地顯示在界面中,便于實(shí)驗(yàn)者觀測(cè);參數(shù)設(shè)置面板是整個(gè)人機(jī)界面中最重要的部分,該部分包含了液位的設(shè)定及溫度的設(shè)定,可用于溫度控制實(shí)驗(yàn),數(shù)據(jù)采集頻率的設(shè)定以及控制液位和溫度的兩組PID參數(shù)的調(diào)整。實(shí)驗(yàn)時(shí)可以根據(jù)數(shù)據(jù)顯示面板顯示的數(shù)據(jù)和自己觀察到的實(shí)驗(yàn)現(xiàn)象及時(shí)地調(diào)整控制參數(shù)。參數(shù)設(shè)置面板設(shè)計(jì)完成效果見圖4(右側(cè)欄綠色線框)。
(2)實(shí)時(shí)曲線繪制模塊。系統(tǒng)采用基于axes控件完成實(shí)時(shí)曲線繪制[16-17]。在Matlab GUI界面添加axes控件,并開辟一個(gè)2B長(zhǎng)度的數(shù)組分別存放目標(biāo)液位和實(shí)時(shí)液位值。通過axes()函數(shù)設(shè)置當(dāng)前曲線繪制坐標(biāo),再調(diào)用set()函數(shù)完成曲線的繪制。
曲線繪制相關(guān)函數(shù)如下:
m=[m [Real-yewei;val]];
axes(handles.quxian);
axis([x,x+10,-5,300]);
set(p(1),‘XData’,t,‘YData’,m(1,:));
set(p(2),‘XData’,t,‘YData’,m(2,:));
設(shè)計(jì)效果見圖4(左下方藍(lán)色線框)。
(3)Flash動(dòng)畫演示模塊??紤]到在Matlab GUI中實(shí)現(xiàn)一個(gè)具有立體效果的水箱顯示難度較大,且并不十分必要,故在該系統(tǒng)中采用合適的矩形來(lái)代替水箱的效果。實(shí)驗(yàn)過程中,通過向空白矩形中填充以液位為高的藍(lán)色矩形來(lái)動(dòng)態(tài)地模擬液位的變化過程。設(shè)計(jì)效果見圖4(左上方紅色線框)。
圖4 三容水箱計(jì)算機(jī)監(jiān)控系統(tǒng)的Matlab GUI界面設(shè)計(jì)效果及液位控制實(shí)驗(yàn)結(jié)果
根據(jù)Matlab GUI界面設(shè)計(jì),在實(shí)驗(yàn)室環(huán)境下進(jìn)行液位控制實(shí)驗(yàn),實(shí)驗(yàn)系統(tǒng)搭建如圖5(a)所示,其液位控制過程可抽象為如圖5(b)所示結(jié)構(gòu)。首先設(shè)定好水箱球閥的開口度為30%,設(shè)置目標(biāo)液位為200 mL,根據(jù)經(jīng)驗(yàn)確定P、I、D控制參數(shù)Kp,Ki,Kd值,配置定時(shí)器模式,以1 s的采樣頻率讀取當(dāng)前液位,并繪制實(shí)時(shí)曲線。PID控制算法計(jì)算出當(dāng)前水泵控制電壓,根據(jù)Modbus RTU協(xié)議格式向下位機(jī)發(fā)送報(bào)文數(shù)據(jù),調(diào)節(jié)水泵轉(zhuǎn)速,實(shí)現(xiàn)液位對(duì)設(shè)定值的跟隨。液位的階躍響應(yīng)曲線見圖4(左下方藍(lán)色線框內(nèi))。
(a)實(shí)驗(yàn)系統(tǒng)樣機(jī)(b)液位控制結(jié)構(gòu)圖
圖5 液位控制系統(tǒng)樣機(jī)及控制原理結(jié)構(gòu)簡(jiǎn)圖
結(jié)果表明,通過Matlab GUI模塊設(shè)計(jì)的計(jì)算機(jī)監(jiān)控系統(tǒng)能夠?qū)崿F(xiàn)對(duì)液位的控制且實(shí)驗(yàn)過程穩(wěn)定可靠。上位機(jī)采用PID控制算法,以1 s的頻率發(fā)送采集控制指令,使得水位在到達(dá)目標(biāo)液位附近后能夠快速地達(dá)到動(dòng)態(tài)平衡,驗(yàn)證了基于Matlab GUI模塊的計(jì)算機(jī)監(jiān)控系統(tǒng)具有數(shù)據(jù)傳輸準(zhǔn)確和操作界面友好的特點(diǎn)。
本文利用Matlab GUI,開發(fā)計(jì)算機(jī)監(jiān)控系統(tǒng),實(shí)現(xiàn)了對(duì)三容水箱液位的實(shí)時(shí)控制。不同于常用的開發(fā)軟件Delphi、組態(tài)王和C#.NET,本系統(tǒng)的控制算法獨(dú)立寫在M文件中,便于實(shí)驗(yàn)者修改和添加其他算法,且GUI組件編程簡(jiǎn)單,實(shí)驗(yàn)數(shù)據(jù)處理快速方便,極大地提高了開發(fā)效率。實(shí)驗(yàn)過程也證明了系統(tǒng)的準(zhǔn)確性和穩(wěn)定性,并且系統(tǒng)軟件執(zhí)行效率高,界面功能豐富,對(duì)于計(jì)算機(jī)監(jiān)控系統(tǒng)的開發(fā)具有重要的借鑒意義。
[1] 鄭榮進(jìn),王邵伯,郭謀發(fā).基于Delphi的變配電所監(jiān)控軟件設(shè)計(jì)[J].電氣應(yīng)用,2006,25(3):71-74.
[2] 林 晶,王 強(qiáng).基于組態(tài)軟件的智能家居監(jiān)控系統(tǒng)研究[J]. 吉林建筑大學(xué)學(xué)報(bào),2015,32(6):56-58.
[3] 楊 寧,李 彥,路 寬.基于C#.NET的海洋能發(fā)電裝置室內(nèi)定型測(cè)試數(shù)據(jù)監(jiān)控管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 海洋技術(shù)學(xué)報(bào),2015,34(6):83-86.
[4] Farah Helúe Villa-López, Jesús García-Guzmán. Electropneumatic system for industrial automation: A remote experiment within a web-based learning environment[J].Procedia Technology, 2013,7:198-207.
[5] Ahmet Tekin, Fikret Ata, Muammer Gkbulut. Remote control laboratory for DSP-controlled induction motor drives[J]. Computer Applications in Engineering Education, 2012,20(4):702-712.
[6] Han Ping, He Weikun, Shi Qingyan,etal. An educational tool design for the course of signal processing based on MATLAB GUI[D]. Tianjin: Civil Aviation University of China, 2014.
[7] 尚 麗,淮文軍.基于Matlab/Simulink和GUI的運(yùn)動(dòng)控制系統(tǒng)虛擬實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2010,29(6):66-71.
[8] 陳燦旭,姜周曙,黃國(guó)輝.基于ADuc834的低溫測(cè)量?jī)x表設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2009(2):96-98.
[9] 徐躍飛,黃國(guó)輝,姜周曙.全自動(dòng)三容水箱液位控制實(shí)驗(yàn)系統(tǒng)的研發(fā)[J].計(jì)算機(jī)與應(yīng)用化學(xué),2013,30(10):1203-1206.
[10] 林 軼.飛思卡爾典型傳感器的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(5):78-79.
[11] 吳 侃,于明禮,李 明.基于Matlab GUI的超聲電機(jī)控制系統(tǒng)串口通信研究[J].機(jī)電工程,2015,32(11):1471-1476.
[12] 蔣 超,劉 新,曾義和.Matlab GUI的上位機(jī)與智能車的兩種實(shí)時(shí)通信[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(12):27-30.
[13] 張亞飛,陳紅波,馮小華.PID控制算法及其積分項(xiàng)的改進(jìn)[J].科技創(chuàng)新與應(yīng)用,2013(24):66.
[14] 文 波,孟令軍,張曉春.基于增量式PID算法的水溫自動(dòng)控制器設(shè)計(jì)[J].儀表技術(shù)與傳感器,2015(12):113-116.
[15] 宋和平,胡成全,王力風(fēng).新型雙溫度反饋增量式PID控制器的設(shè)計(jì)[J].自動(dòng)化與儀表,2012,27(4):40-42.
[16] 宗節(jié)保,段柳云,王 瑩.基于Matlab GUI軟件制作方法的研究與實(shí)現(xiàn)[D].武漢:武漢大學(xué),2010.
[17] 薛 飛,楊友良,孟凡偉,等.基于Matlab GUI串口通信的實(shí)時(shí)溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2014,34(1):292-296.
ADesignfortheReal-timeLiquidLevelMonitoringSystemBasedonMatlabGUI
ZHUFeiyu1,2,XUZhiyu1,HUANGGuohui3
(1. School of Electronics and Information Engineering, Tongji University, Shanghai 201804, China;2. College of Electrical, Electronic and Information Engineering, University of Bologna, Bologna 40136, Italy; 3. Institute of Energy Utilization & Automation, Hangzhou Dianzi University, Hangzhou 310018, China)
In order to achieve the algorithm diversification portability of the computer monitoring system in the liquid level control, the paper designed a computer monitoring system based on Matlab graphical user interface (GUI). The system uses Matlab’s serial communication API, and uses the RS-485/RS-232 data communication interface to achieve data collection and controlling for the three-tank. Modbus RTU protocol is applied for communication to ensure the accuracy of data transmission. System software has a friendly interface, easy programming, simple operation and other features, users can implant the algorithm to run the system in a variety of modes. Experimental result shows that design of the computer monitoring system can quickly and accurately draw the level response curve, Flash animation can simulate real-time experimental progress based on Matlab GUI.
three-tank water; Matlab GUI; computer monitoring; communication protocol; response curve
TP 273.5
A
1006-7167(2017)09-0083-04
2016-11-20
國(guó)家自然科學(xué)基金項(xiàng)目(71401125);教育部博士點(diǎn)科研基金(20130072110045);同濟(jì)大學(xué)實(shí)驗(yàn)教改項(xiàng)目(0800104150)
朱飛宇(1993-),男,浙江臺(tái)州人,碩士生,主要研究方向?yàn)橹悄芸刂?。Tel.:15988993821;E-mail:zhufy2015@163.com
徐志宇(1982-),男,山西太原人,博士,高級(jí)工程師,碩士生導(dǎo)師,現(xiàn)從事智能自動(dòng)化應(yīng)用研究。Tel.: 021-69584663;E-mail: xuzhiyu@#edu.cn