

摘要:针对灌装机的控制需求,设计了一款实现自动灌装监控的上位机软件。系统采用+i语言编写程序,基于0t平台开发,以QSlite为后台数据库,依赖Qt自带的类库QSerialPort实现串口与下位机通信,完成数据的实时传输、显示和存储功能。该软件通过解析数据包提取目标重量信息,利用QCustomPlot控件完成折线图绘制,能够有效提高数据采集与处理的效率。
0引言
自动灌装监测系统的开发与应用,具有显著的经济和社会效益,实现称重数据自动采集与统计,避免人工模式下读数、记录与统计错误等问题,耿志辉等因]人研究了一种工业检测上位机监控系统,能明确清晰地显示工况,存储历史数据为将来的分析作为参考;通过功能的合理分配,下位机完成数据采集、动作控制等与硬件交互的、具有实时性要求的功能,而上位机侧重于数据处理存储以及人机交互,通过可视化编程提供美观的操作界面。针对填充机采用主从式控制架构,实现灌装过程的自动控制,在进行系统监控软件功能需求分析的基础上,完成了上位机监控软件的设计开发。
1总体方案设计
本灌装系统主要由上位机监控系统和底层单片机控制的自动称重单元组成。上位机系统以数据库为支撑,存储系统的相关静态参数及生产过程中的实时数据;完成人机交互、灌装过程监控以及生产数据图像化显示。根据灌装工艺的要求,数据库包含两个核心数据表:工艺参数表和生产数据表。工艺参数表用来存储灌装产品规格的相关参数,如产品代码、产品名称、灌装量及上下偏差等,这类参数是对灌装过程讲行自动控制的依据。生产数据表用于实时记录生产数据,如实际灌装量和已装袋数等信息,以便后续程序调用,进行误差分析以及数据查询、统计等。下位机主要实现灌装重量采集与灌装过程控制,所采集数据经串口上传。
2上位机软件设计
为满足监控系统的工艺需求,上位机软件主要包括系统标定、用户管理、工艺参数管理、实时数据监控以及历史数据查询等功能模块。针对上述功能,本系统使用Ot来设计上位机界面,并采用特有的信号与槽(signals/slots)机制实现对象间信息的传递,类库OSerialPort实现与下位机的串口通信,QtSgl模块提供与平台以及数据库种类无关的数据库接口,实现数据库与用户界面的集成问。基于Ot类库本身,用户可以通过自定义或内建对话框的方式构建操作面板和显示面板问。这些特征使得自动灌装监测系统的软件编程更为容易。上述功能模块中的“用户管理”“工艺参数管理”与一般监控系统类似,本文着重分析实时数据监控模块和历史数据查询模块的实现。
2.1实时数据监控模块设计
该模块实现对生产过程的实时监控,通过可视化图表形式显示当前的灌装状态,便于操作人员实时监控生产过程。
1)数据来源与处理方法
本模块的数据来源于两方面:数据库中的静态数据和实时称重的动态数据。静态数据由“工艺参数表”提供,主要用于选择灌装工艺,并显示在主界面顶部的下拉框和文本框中。下拉框选择产品代码,文本框显示相应的工艺参数。从工艺参数表查找产品代码字段,绑定下拉框,在下拉框中显示全部灌装产品的产品代码。利用下拉框的currentIndexChanged0事件触发数据表查询条件,将相应字段与各OLimeEdit绑定。
动态数据为通过串口获取的实时称重数据,以后台生产数据表为支撑,实现数据解析与存储显示。接收的14字节数据包由包头和A、B两路称重传感器信号值组成,解析数据包得到称量模块采集的电压信号值,转换为相应重量值,相加即可得到实际灌装物料的总重量。
2)折线图绘制
界面中部为灌装重量的实时折线图。为了让用户实时监控生产过程,使用自适应折线图绘制。使用自适应坐标,是因为产品工艺要求高,部分产品具有不对称偏差,为纵轴设置不同的坐标轴显示范围,使其根据工艺参数自适应变化,能让用户更为直观地了解实际重量偏差是否处于给定偏差范围内,从而确定该次生产是否有效。
折线图使用gcustomplot控件进行绘制,通过读取工艺参数表中的额定重量与上下偏差字段,使用yAxis->setRange0设置纵轴坐标系。OCustomPlot类的setData0)函数合两个OVector参数,分别用于接收横轴和纵轴数据。折线图一次绘制的点是有限的,这与横轴点数和横坐标轴的范围相关[8-9因此,当点数超过设定值,进行绘制初始化,回到横坐标轴初始点,开始绘制下一个数据。每装好一袋,将实时灌装重量写入生产数据表中,完成数据表更新,并显示在界面底部;司时在折线图中显示实时灌装重量值。
2.2历史数据查询模块设计
生产过程中的数据一方面以图表等形式实时显示,一方面存储在数据库中,作为历史数据,以便后续程序调用。该模块以生产数据表为支撑,将数据与用户界面互动,利用QSglTableModel类的setTable(函数绑定数据表,进行数据表查询,并将查询结果通过QTableView控件的setModel0方法绑定,实现产品代码、灌装袋数等信息的显示[0-]。主界面顶部为查询条件栏,中部为历史数据表格。查询条件分时间段、产品代码和操作人员3类,能实现3种条件7种组合方式的查询。因篇幅有限,本文只介绍“时间段+产品代码”和“产品代码”两种方式的实现,其余组合方式的查询思路与此类似。因为日历控件输入不为空,增添QCheckBox复选框,根据选中与否决定是否将时间段作为查询条件之一。
针对数据表数据量较大的情况而使用多条件组合查询时,为使查询方便,逐步筛选条件,将筛选后的结果显示在其余查询条件下拉框中。即选定一个条件,如时间段,利用日历控件的dateChanged0事件调用查询函数,查询生产数据表在当前时间段内包含的产品代码与操作人员信息,并与各自下拉框绑定。若需要进一步选择产品代码或操作人员条件,则利用控件的currentIndexChanged0事件,当选择下拉框子项目,则调用该事件,查询当前时间段+产品代码/操作人员字段内所有的操作人员/产品代码信息,并显示在相应下拉框中。随着上一个条件的选择,下一个条件的可选择范围将大幅度减少,且都为当前组合条件下的有效范围值,减少对数据库的无用操作,提高程序的灵活性。
3结语
本文针对自动灌装机设计了基于Ot的上位机监控系统,使用Ot自带模块QSerialPort实现串口通信,使用QSql模块实现数据库操作。该上位机软件提供了良好的用户使用界面,能够用便捷的操作实现对数据的传输、处理、图形展示及数据库查询调用,能够有效提高监控系统的效率。