朱飛宇, 徐志宇, 黃國輝
(1.同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804; 2.博洛尼亞大學(xué) 電氣電子與信息工程學(xué)院,博洛尼亞 40136;3.杭州電子科技大學(xué) 能量利用系統(tǒng)與自動化研究所,杭州 310018)
基于MatlabGUI的三容水箱液位實時監(jiān)控系統(tǒng)設(shè)計
朱飛宇1,2, 徐志宇1, 黃國輝3
(1.同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804; 2.博洛尼亞大學(xué) 電氣電子與信息工程學(xué)院,博洛尼亞 40136;3.杭州電子科技大學(xué) 能量利用系統(tǒng)與自動化研究所,杭州 310018)
為了實現(xiàn)三容水箱教學(xué)實驗平臺中液位控制算法的多樣化和可移植性,設(shè)計了基于Matlab圖形用戶界面(Graphic User Interface,GUI)的計算機(jī)監(jiān)控系統(tǒng)。利用Matlab的串口通信API,通過RS-485/RS-232數(shù)據(jù)通信接口實現(xiàn)對三容水箱液位的數(shù)據(jù)采集和控制。通信采用Modbus RTU協(xié)議確保數(shù)據(jù)的可靠傳輸。系統(tǒng)軟件界面友好、編程方便、操作簡單,同時用戶可以植入算法使系統(tǒng)運(yùn)行于多種模式下。結(jié)果表明,基于Matlab GUI設(shè)計的計算機(jī)監(jiān)控系統(tǒng)能夠快速、準(zhǔn)確地繪制出液位響應(yīng)曲線,F(xiàn)lash動畫能夠?qū)崟r模擬出實驗進(jìn)度。
三容水箱; Matlab GUI; 計算機(jī)監(jiān)控; 通信協(xié)議; 響應(yīng)曲線
自動化學(xué)科作為當(dāng)今信息時代最重要的學(xué)科之一,其教學(xué)方式中,實驗教學(xué)成為不可或缺的重要部分?!坝嬎銠C(jī)控制技術(shù)”是自動控制、電子技術(shù)、電氣技術(shù)等專業(yè)教學(xué)中一門重要的專業(yè)課,實驗在該課程教學(xué)方式中更是扮演了舉足輕重的作用。計算機(jī)控制實驗成功的關(guān)鍵在于計算機(jī)與實驗臺的通信效率以及控制算法的選擇。
近年來,國內(nèi)外研究學(xué)者分別通過不同的平臺開發(fā)計算機(jī)控制軟件,包括Delphi、組態(tài)王和C#.NET等[1-5],都取得了一定的成果,但基于Matlab GUI進(jìn)行上位機(jī)開發(fā)卻并不常見。
Matlab在數(shù)據(jù)分析、矩陣運(yùn)算、算法設(shè)計等方面具有明顯優(yōu)勢,非常適合于對復(fù)雜算法的研究;軟件集成了串口通信API為實現(xiàn)計算機(jī)與實驗臺通信提供便利。Matlab中的GUI模塊提供了圖形用戶界面的設(shè)計向?qū)?,開發(fā)者利用該向?qū)Э梢苑奖?、快捷地設(shè)計出一個界面。文獻(xiàn)[6]中針對數(shù)字信號處理課程中概念抽象、不易理解的教學(xué)難題,利用Matlab GUI開發(fā)了一個教學(xué)軟件,包括信號采集模塊、信號分析模塊、線性系統(tǒng)分析、濾波器設(shè)計模塊和信號處理技術(shù)應(yīng)用模塊[6]。文獻(xiàn)[7]中利用Matlab豐富的工具箱和直觀的GUI界面,設(shè)計并完成了運(yùn)動控制系統(tǒng)課程的可視化虛擬實驗平臺的構(gòu)建[7]。
然而,目前實驗教學(xué)中關(guān)于Matlab GUI的應(yīng)用研究大多集中于仿真虛擬方面,很少涉及控制軟件平臺的開發(fā)。鑒于串口通信和控制算法在計算機(jī)控制系統(tǒng)中的核心地位,以及Matlab GUI模塊在這兩方面具備的獨特優(yōu)勢,本文設(shè)計了基于Matlab GUI的三容水箱實時液位監(jiān)控系統(tǒng):選擇三容水箱作為下位機(jī)采集控制平臺,在Matlab GUI平臺上實現(xiàn)了計算機(jī)與三容水箱實驗臺的串口通信,通過PID等控制算法控制水箱液位,對計算機(jī)控制實驗的發(fā)展具有重要的意義。
計算機(jī)監(jiān)控系統(tǒng)的總體設(shè)計如圖1所示。系統(tǒng)主要由兩部分組成:①下位機(jī)實現(xiàn)對三容水箱液位的數(shù)據(jù)采集和控制;②上位機(jī)利用Matlab GUI模塊實現(xiàn)對液位的控制操作,實時數(shù)據(jù)曲線的顯示和實驗裝置狀態(tài)的Flash動畫模擬。
圖1 計算機(jī)監(jiān)控系統(tǒng)總體結(jié)構(gòu)
1.1系統(tǒng)下位機(jī)
系統(tǒng)下位機(jī)為三容水箱物理實驗平臺,其由3個水箱、1個方形水槽、水泵、進(jìn)水閥門和球閥等部件組成,結(jié)構(gòu)原理圖如圖2所示。該實驗平臺以ADuC834數(shù)據(jù)采集單片機(jī)[8-9]為主控芯片,該芯片基于8051為內(nèi)核,片內(nèi)集成了兩路高分辨率的ADC轉(zhuǎn)換通道及兩路獨立的DAC轉(zhuǎn)換通道,非常適用于多模擬量采集的系統(tǒng)。本系統(tǒng)單片機(jī)實現(xiàn)對水箱液位、溫度和流量的采集,并通過RS-485/RS-232數(shù)據(jù)通信接口與上位機(jī)進(jìn)行數(shù)據(jù)的交互,根據(jù)上位機(jī)發(fā)送過來的指令控制水泵、加熱管進(jìn)水閥和放水球閥等執(zhí)行部件。
圖2 三容水箱結(jié)構(gòu)原理圖
本文下位機(jī)主要負(fù)責(zé)對三容水箱液位的信號采集和控制:通過單片硅壓力傳感器實現(xiàn)。隨著液位的上升,容器底部受到的壓力相應(yīng)增大[10],壓力傳感器將采集到的模擬信號通過16位高精度AD轉(zhuǎn)換成數(shù)字信號并通過RS-232/RS-485串口發(fā)送給上位機(jī)。液位控制是通過控制水泵電壓來實現(xiàn)。上位機(jī)通過串口給下位機(jī)發(fā)送控制指令,通過DAC輸入0~5 V電壓信號,并間接控制可調(diào)開關(guān)電源直流電壓輸出,調(diào)整水泵轉(zhuǎn)速,實現(xiàn)對液位的控制。
1.2系統(tǒng)上位機(jī)
上位機(jī)軟件是一套基于Matlab GUI界面、動畫仿真、M控制算法文件以及標(biāo)準(zhǔn)通訊模塊為一體的實驗環(huán)境,主要分為以下模塊:
(1) 串口通信。完成與下位機(jī)的數(shù)據(jù)交互。
(2) 控制策略。采用增量式PID控制算法,根據(jù)采集到的液位信息,計算并發(fā)送控制指令。算法獨立編寫在M文件中,用戶可以根據(jù)實驗要求導(dǎo)入自定義算法。
(3) 人機(jī)界面。液位的參數(shù)設(shè)置,PID控制算法的參數(shù)設(shè)置及液位標(biāo)定,繪制液位的實時數(shù)據(jù)曲線,同時以Flash動畫的形式模擬實驗過程。
下位機(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)建串口對象,用戶定義好串口的通信屬性(主要是波特率、起始位、數(shù)據(jù)位、校驗位、停止位和輸入輸出緩沖大小等)即能實現(xiàn)上位機(jī)與下位機(jī)的通信,主要函數(shù)如下:
s=serial(‘COM1’); %創(chuàng)建串口對象s,串口號為COM1
set(s,‘BaudRate’,9600,‘StopBits’,1,‘Parity’,‘none’,‘DataBits’,8); %設(shè)置波特率為9600;8位數(shù)據(jù)傳送,一位停止位,無奇偶校驗位;
另外,通信協(xié)議采用Modbus RTU協(xié)議確保數(shù)據(jù)傳輸?shù)木_。
3.2控制算法
PID控制器有著技術(shù)成熟、魯棒性好、容易理解和掌握等優(yōu)點[13-15],通過合理的Kp,Ki,Kd整定可以完成對系統(tǒng)的較好控制。PID控制可通過位置式和增量式兩種方式實現(xiàn)。前者在計算時要對偏差量逐一累加,導(dǎo)致在編程時占用大量的存儲單元,因此,本系統(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后,只需要存儲前3次的測量值,即可求出Δu(k),具有誤差影響小的優(yōu)點。
3.3MatlabGUI界面設(shè)計
Matlab GUI界面主要包括:①數(shù)據(jù)顯示面板,包括3個水箱的液位高度顯示和進(jìn)行水溫控制實驗時的溫度顯示;②參數(shù)設(shè)置面板,包括液位參數(shù)、溫度實驗的溫度參數(shù)、控制算法參數(shù)及數(shù)據(jù)采集頻率參數(shù)設(shè)置等;③實驗的開始、結(jié)束等控制指令;④實時數(shù)據(jù)曲線顯示和Flash動畫模擬,另外控制界面還添加了液位標(biāo)定等輔助功能。
界面設(shè)計遵循可視化程度高、操作簡潔、布局合理的原則,現(xiàn)設(shè)計如圖4所示。
(1)系統(tǒng)數(shù)據(jù)顯示與參數(shù)設(shè)置模塊。數(shù)據(jù)顯示面板主要是將上位機(jī)采集到的液位信息直觀地顯示在界面中,便于實驗者觀測;參數(shù)設(shè)置面板是整個人機(jī)界面中最重要的部分,該部分包含了液位的設(shè)定及溫度的設(shè)定,可用于溫度控制實驗,數(shù)據(jù)采集頻率的設(shè)定以及控制液位和溫度的兩組PID參數(shù)的調(diào)整。實驗時可以根據(jù)數(shù)據(jù)顯示面板顯示的數(shù)據(jù)和自己觀察到的實驗現(xiàn)象及時地調(diào)整控制參數(shù)。參數(shù)設(shè)置面板設(shè)計完成效果見圖4(右側(cè)欄綠色線框)。
(2)實時曲線繪制模塊。系統(tǒng)采用基于axes控件完成實時曲線繪制[16-17]。在Matlab GUI界面添加axes控件,并開辟一個2B長度的數(shù)組分別存放目標(biāo)液位和實時液位值。通過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è)計效果見圖4(左下方藍(lán)色線框)。
(3)Flash動畫演示模塊。考慮到在Matlab GUI中實現(xiàn)一個具有立體效果的水箱顯示難度較大,且并不十分必要,故在該系統(tǒng)中采用合適的矩形來代替水箱的效果。實驗過程中,通過向空白矩形中填充以液位為高的藍(lán)色矩形來動態(tài)地模擬液位的變化過程。設(shè)計效果見圖4(左上方紅色線框)。
圖4 三容水箱計算機(jī)監(jiān)控系統(tǒng)的Matlab GUI界面設(shè)計效果及液位控制實驗結(jié)果
根據(jù)Matlab GUI界面設(shè)計,在實驗室環(huán)境下進(jìn)行液位控制實驗,實驗系統(tǒng)搭建如圖5(a)所示,其液位控制過程可抽象為如圖5(b)所示結(jié)構(gòu)。首先設(shè)定好水箱球閥的開口度為30%,設(shè)置目標(biāo)液位為200 mL,根據(jù)經(jīng)驗確定P、I、D控制參數(shù)Kp,Ki,Kd值,配置定時器模式,以1 s的采樣頻率讀取當(dāng)前液位,并繪制實時曲線。PID控制算法計算出當(dāng)前水泵控制電壓,根據(jù)Modbus RTU協(xié)議格式向下位機(jī)發(fā)送報文數(shù)據(jù),調(diào)節(jié)水泵轉(zhuǎn)速,實現(xiàn)液位對設(shè)定值的跟隨。液位的階躍響應(yīng)曲線見圖4(左下方藍(lán)色線框內(nèi))。
(a)實驗系統(tǒng)樣機(jī)(b)液位控制結(jié)構(gòu)圖
圖5 液位控制系統(tǒng)樣機(jī)及控制原理結(jié)構(gòu)簡圖
結(jié)果表明,通過Matlab GUI模塊設(shè)計的計算機(jī)監(jiān)控系統(tǒng)能夠?qū)崿F(xiàn)對液位的控制且實驗過程穩(wěn)定可靠。上位機(jī)采用PID控制算法,以1 s的頻率發(fā)送采集控制指令,使得水位在到達(dá)目標(biāo)液位附近后能夠快速地達(dá)到動態(tài)平衡,驗證了基于Matlab GUI模塊的計算機(jī)監(jiān)控系統(tǒng)具有數(shù)據(jù)傳輸準(zhǔn)確和操作界面友好的特點。
本文利用Matlab GUI,開發(fā)計算機(jī)監(jiān)控系統(tǒng),實現(xiàn)了對三容水箱液位的實時控制。不同于常用的開發(fā)軟件Delphi、組態(tài)王和C#.NET,本系統(tǒng)的控制算法獨立寫在M文件中,便于實驗者修改和添加其他算法,且GUI組件編程簡單,實驗數(shù)據(jù)處理快速方便,極大地提高了開發(fā)效率。實驗過程也證明了系統(tǒng)的準(zhǔn)確性和穩(wěn)定性,并且系統(tǒng)軟件執(zhí)行效率高,界面功能豐富,對于計算機(jī)監(jiān)控系統(tǒng)的開發(fā)具有重要的借鑒意義。
[1] 鄭榮進(jìn),王邵伯,郭謀發(fā).基于Delphi的變配電所監(jiān)控軟件設(shè)計[J].電氣應(yīng)用,2006,25(3):71-74.
[2] 林 晶,王 強(qiáng).基于組態(tài)軟件的智能家居監(jiān)控系統(tǒng)研究[J]. 吉林建筑大學(xué)學(xué)報,2015,32(6):56-58.
[3] 楊 寧,李 彥,路 寬.基于C#.NET的海洋能發(fā)電裝置室內(nèi)定型測試數(shù)據(jù)監(jiān)控管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 海洋技術(shù)學(xué)報,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)動控制系統(tǒng)虛擬實驗平臺設(shè)計[J].實驗室研究與探索,2010,29(6):66-71.
[8] 陳燦旭,姜周曙,黃國輝.基于ADuc834的低溫測量儀表設(shè)計[J].工業(yè)儀表與自動化裝置,2009(2):96-98.
[9] 徐躍飛,黃國輝,姜周曙.全自動三容水箱液位控制實驗系統(tǒng)的研發(fā)[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ī)與智能車的兩種實時通信[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(12):27-30.
[13] 張亞飛,陳紅波,馮小華.PID控制算法及其積分項的改進(jìn)[J].科技創(chuàng)新與應(yīng)用,2013(24):66.
[14] 文 波,孟令軍,張曉春.基于增量式PID算法的水溫自動控制器設(shè)計[J].儀表技術(shù)與傳感器,2015(12):113-116.
[15] 宋和平,胡成全,王力風(fēng).新型雙溫度反饋增量式PID控制器的設(shè)計[J].自動化與儀表,2012,27(4):40-42.
[16] 宗節(jié)保,段柳云,王 瑩.基于Matlab GUI軟件制作方法的研究與實現(xiàn)[D].武漢:武漢大學(xué),2010.
[17] 薛 飛,楊友良,孟凡偉,等.基于Matlab GUI串口通信的實時溫度監(jiān)控系統(tǒng)設(shè)計[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
國家自然科學(xué)基金項目(71401125);教育部博士點科研基金(20130072110045);同濟(jì)大學(xué)實驗教改項目(0800104150)
朱飛宇(1993-),男,浙江臺州人,碩士生,主要研究方向為智能控制。Tel.:15988993821;E-mail:zhufy2015@163.com
徐志宇(1982-),男,山西太原人,博士,高級工程師,碩士生導(dǎo)師,現(xiàn)從事智能自動化應(yīng)用研究。Tel.: 021-69584663;E-mail: xuzhiyu@#edu.cn