基于MatlabGUI串口通信的实时温度监控系统设计

时间:2022-08-26 02:39:52

基于MatlabGUI串口通信的实时温度监控系统设计

摘要:为提高温度监控系统中数据处理速度和软件开发效率,设计了基于Matlab图形用户界面(GUI)的温度实时监控系统。系统利用Matlab串口工具箱,以Modbus协议为通信协议,通过计算机控制岛电SRS13A型温控器,实现了在金属加热过程中对其表面温度值的实时监控。系统软件界面简洁,操作方便,内存占用小,通过参数配置可实现多种工作方式。实验测试结果表明,系统运行稳定,以1s的采样间隔和0.1℃的测量精度,快速准确地绘制了系统在不同参数配置下的温度响应曲线。

关键词: Matlab图形用户界面; Modbus协议; 串口通信; 温度测量; 实时监控

中图分类号: TP302.1; TP277.2 文献标志码: A

0引言

温度的稳定控制是冶金生产过程中的重要环节。温度控制器作为温控系统中常用的智能设备,通常以串口通信实现与计算机之间的信息传递。它的通信效率不仅决定了温控过程中温控器的响应速度和温控精度,也直接影响着整个生产过程的运行效果和产品质量[1]。

近年来,国内外研究学者分别在不同软件平台上实现了计算机与温控器的串口通信,并在研究温控系统性能方面取得了一定成果。Popovic等[2]利用ABB公司的可编程逻辑控制器(ProgrammableLogicController,PLC)以一种简便的方式实现了上位机软件与温控器之间的数据通信,保证了温控系统性能指标的同时简化了软件开发程序。梁秀霞等[3]鉴于组态软件与串行温控器无法直接串行通信的问题,提出一种以VB控件为媒介的串口通信控制方法,并在实际生产中得到了理想的控制效果。王海涛等[4]在Delphi环境下利用VB中的MSComm控件不仅实现了计算机与温控器之间的串口通信,也提高了程序的执行效率。

然而这些方法都有一定的局限性。PLC的体系结构封闭,不同厂商硬件体系互不兼容,开放性不足,且PLC在与计算机进行多通信点同时收发信息时,容易出现数据覆盖、丢失等问题;在串口通信设计时,通用的组态软件并不能满足用户在某些方面的特定需求,需要进行二次开发,以致这种通信控制方法成本高且缺乏灵活性;由于Delphi环境下没有专门用于串口开发的控件,而借助MSComm控件完成的串口通信设计,也并非想象的那样完美和容易控制。

Matlab作为MathWorks公司出品的一款商业数学软件,具有强大的数据处理能力,因此,以它作为温控系统的开发软件,在运算效率和数据分析方面更具优势[5-6]。Cardoso等[7]用Matlab开发出的嵌入式系统,能更加高效地支持底层硬件,并通过实验验证了系统的稳定性。Gupta等[8]利用MatlabGUI提出了一种低成本的在线信息存储和处理方法,展现了Matlab出色的数据处理能力,也为其在实际生产中的应用提供了现实可靠的依据。

目前,虽然Matlab在实验室仿真和静态数据处理方面的应用研究已比较成熟,但在冶金工业生产中,利用Matlab对温控系统的开发研究尚比较少见。鉴于以上情况,本文设计了一种基于MatlabGUI串口通信的温度监控系统,扩展了Matlab在实际生产中的应用范围,满足了生产过程中温控系统对串口通信快速性、高效性以及稳定性的要求。

系统的下位机部分负责温度数据的采集工作,并通过串行通信实时地将数据传送回上位机并进行处理。其中,温控器选用日本岛电SHIMADEN公司生产的SRS13A型温控器,以实现温度的定值调节、程序调节等功能。温控器的测温模块外接热电偶,并将采集到的热能转换成电能,经模数转换器A/D转换,得到被控对象温度的数字信息;温控器的控制模块外接固态继电器(SolidStateRelay,SSR),能够经D/A转换器将设定温度的数字信号转换成电压信号,通过调节加热器元件的负载电压,实现控制温度的目的。PC与温控器的RS485串口通过RS232/485接口转换器相连,经RS232与RS485的电平转换,完成PC与温控器之间的数据传输。

系统的上位机部分负责温度数据的处理和分析。它通过调用内置于Matlab设备控制箱的serial类,操作RS232串口,用Modbus协议在温控器与PC串口之间进行实时通信。系统下位机的温控器参数设置可通过温控系统的GUI界面操作完成。对返回的温度数据,可充分利用Matlab的科学计算功能,进行分析和处理。

2串行通信实现

2.1Matlab串口通信

Matlab软件的设备控制箱(InstrumentControlToolbox,ICT),提供了对RS232与RS485串口通信的正式支持。Matlab通过调用设备控制工具箱的serial类以及相关函数,来创建串口设备对象,得到设备的文件句柄,从而以操作文件的方式实现对PC串行口的读写操作[9]。

3MatlabGUI设计

MatlabGUI主要通三个阶段来实现对温控系统的操作:第一阶段是对控制参数设置阶段,第二阶段为下位机温度信号的采集阶段,第三阶段为温控指令的执行和温控曲线绘制阶段。除此之外,GUI还具有相应的文件处理功能。

系统的界面设计应遵循清楚直观,布局合理,方便用户操作等原则[15],由此界面设计如图7所示。温控系统GUI界面由4个模块组成:

1)控制参数设置模块:温控器采用比例积分微分(ProportionIntegralDifferential,PID)控制方式,用户可选择设置3个控制端:SV1、SV2和SV3,并调节其PID控制器参数,其中P为比例带、I为积分时间、D为微分时间。通过设定控制温度以及输出值的上、下限设置,选择两个输出端(OUT1、OUT2)中的一个或两个来进行控制操作。

2)系统操作模块:用户除了可以控制通信串口的开闭功能外,也可自主选择系统报警类型,当系统在运行过程中出现温度值超限或者加热器断路的情况时,界面上会给出相应的报警提示。

3)温控操作模块:“SV”显示框中能够实时地显示系统运行过程中的温度控制值,“PV”框中实时显示系统检测到的温度测量值,“Time”框中显示了系统的运行时间。根据模块中设置的采样时间间隔和测量时长,系统将采样时间点的温度测量值绘制成相对应温控曲线并实时显示在图像窗口中,也可根据需要选择将温度控制值同时显示在窗口中,方便用户比较观察。

4)菜单和工具栏:用户可以在文件菜单中,保存温控曲线的绘制窗口,也可将实验中的温控数据导成Excel文件进行存储;在编辑菜单中,能够将已有的温控测试数据导入到当前的窗口中,也可将数据作曲线拟合处理;工具栏中的放大、缩小工具可对坐标中的曲线进行缩放,也可利用抓手工具拖动坐标轴,方便用户清楚地观察和分析温控曲线。

4实验测试

实验室条件下,系统通过温控器调节固态继电器SSR的输出来控制加热炉,加热5kg的铸铁,铸铁的初始温度为26℃。在系统软件界面上,设置控制温度为200℃,并以1s的采样间隔对铸铁的表面温度进行实时监测,测试时间上限为30min。

为测试系统的实时监控能力,进行6组温控实验,并通过观察实时温度响应曲线来整定PID控制参数。为方便观察分析,将每组实验中得到的温度曲线保留,并同时显示在窗口中,经放大显示后如图8所示。记录每组实验中的PID控制参数以及相应温值曲线的上升时间和最大偏差值,如表1所示。其中,参数P、I、D分别代表设定温控器的比例带系数、积分时间、微分时间;T为设定的控制温度,腡为设定温度与测量温度的最大偏差值;t为在加热过程中,金属块温度到达设定值的上升时间。

结合图8和表1可看出:减小系统的比例带系数P后,系统比例调节作用增强,温度上升时间缩短,同时也导致最大偏差值的增加;增大积分时间I后,系统积分调节作用减弱,最大偏差值有所减小,但温度响应曲线上升时间也相应变长;随着微分时间D的增加,微分调节作用加强,在保持偏差值稳定的同时,温度上升时间一定程度缩短。最终根据实验结果,可得到以下结论:当控制温度为200℃时,设置系统的比例带系数为20%,积分时间为200s,微分时间为60s,此时温控系统的控制效果最为理想。

分析结果表明,实验测试结果符合PID控制参数的作用特性,在实验测试过程中,系统运行良好,以1s的采样间隔和0.1℃的测量精度,快速、准确地绘制出了监控温度随时间变化的温度响应曲线,有效还原了测试过程中温度值的变化趋势,验证了本文温控系统的Matlab串口通信设计在数据传输方面所具有的良好时效性和准确度。

5结语

本文基于MatlabGUI的串口通信方法,以Modbus为基础通信协议,设计了一种温度实时监控系统。与文献[2-6]中采用的组态软件、VB、Delphi等开发环境相比,本文程序内存占用小,温控系统软件的源文件大小仅为304KB,以更小的开发成本实现了高频率、高精度的温度实时监控,满足了对系统稳定性和高效性的需求,提高了程序执行效率。除此之外,系统软件界面简洁,功能丰富,实时绘制的温控响应曲线清晰准确,给用户提供了分析系统性能的可靠依据,方便用户随时查看并根据温度变化趋势调整控制参数。本文方法扩展了Matlab在实际生产中的应用范围,对于串口通信的温度监控系统的设计开发,具有实用的借鉴意义。

参考文献:

[1]WEND,ZENGH,KEL.PIDparamenteroptimizationoftheresistanceheatedfurnacecontrolsystembasedongeneticalgorithm[J].ElectricalAutomation,2008,30(4):6-8.

[2]POPOVICD,POPOVICIO.AstudyregardingtheconfigurationoftasksatABBPLCsprogramming[J].JournalofComputerScienceandControlSystems,2010,3(1):191.

[3]LIANGX,municationrealizationbasedonInTouchandserialdevices[J].InstrumentTechniqueandSensor,2012(3):62-66.

[4]WANGH,ZHANGS.ThedevelopmentofRS232serialcommunicationsoftwarebyusingMSCOMMunderthecircumstanceofDELPHI[J].JournalofChangchunUniversity,2012,22(2):160-162.

[5]ROBERTSJJ,BESTBD,DUNNDC,etal.Marinegeospatialecologytools:anintegratedframeworkforecologicalgeoprocessingwithArcGIS,Python,R,Matlab,andC++[J].EnvironmentalModellingandSoftware,2010,25(10):1197-1207.

[6]VANAGSJ,GALYANAUSKASV,GRIGSO,etal.OnlinemodelbasedoptimizationandcontroloffedbatchprocessesusingMatlabcode,OPCserver,SCADA,andPLC[J].NewBiotechnology,2012,29:S163.

[7]CARDOSOAJMP,FERNANDESBJM,MONTEIROCMP,etal.RicardonobreaenrichingMatlabwithaspectorientedfeaturesfordevelopingembeddedsystems[J].JournalofSystemsArchitecture,2013,59(7):412-428.

[8]GUPTAR,BERAJN,MITRAM.DevelopmentofanembeddedsystemandMatlabbasedGUIforonlineacquisitionandanalysisofECGsignal[J].Measurement,2010,43(9):1119-1126.

[9]LUOH.StudynotesofMatlabGUIdesign[M].2nded.Beijing:BeijingUniversityofAeronauticsandAstronauticsPress,2011:87-673.

[10]QIAOH,XUET.ApplicationofModbusprotocolintemperaturecontrolsystemofhotroll[J].MicrocomputerApplications,2009,30(1):52-56.

[11]LIUX,LIJ.DesignofamultiaxiscontrolsystembasedonMODBUSprotocol[J].MachineryDesign&Manufacture,2013(2):1-3.

[12]YUTTHANAK,UTHENK,VIBOONC.TheparalleloperationcontrolofamodularACtoDCconverterviaserialcommunicationbus[J].IEEJTransactionsonElectricalandElectronicEngineering,2013,8(1):78-86.

[13]DONGM,SUNW,CHENZ,etal.SoftwaredesignofdatacollectionandtransmissionlayeraboutremotemeasurementandcontrolsysteminoilwellbasedonRTU[J].InternetofThingsTechnologies,2012,2(2):25-32.

[14]PAVELA,VASILIEVICIA.AccessingstructureofmegacontroltypeRTUunits[J].JournalofComputerScienceandControlSystems,2008,1(1):194.

[15]WANGZ,SHENM.SerialcommunicationprogramdevelopmentbasedonMatlabGUI[J].ModernElectronicsTechnique,2010(9):38-41.

上一篇:OPTICS算法在雷电临近预报中的应用 下一篇:罗里?麦克罗伊 澳大利亚公开赛