本论文主要阐述了如何使用MCGS (Monitor and Control Generated System,通用监控系统)组态软件设计一个液位控制工程体系的全过程。同时本章通过介绍一个水位控制系统的组态过程,详细讲解如何应用MCGS组态软件完成一个工程。本次液位控制工程的内容包括:动画显示,编制控制策略,输出实时曲线、历史曲线、实时数据、历史数据,打印工程报表,操作菜单设计,外部设备连接,工程密码设置,运行测试这几个部分。MCGS工控组态软件是一套32位工控组态软件,由“MCGS组态环境”和“MCGS运行环境”两个系统组成。两部分互相独立,又紧密相关。可稳定运行于Windows95/98/NT操作系统,集动画显示、流程控制、数据采集、设备控制与输出、网络数据传输、双机热备、工程报表、数据与曲线等诸多强大功能于一身,并支持国内外众多数据采集与输出设备。
一 工程简介
本章通过介绍一个水位控制系统的组态过程,详细讲解如何应用MCGS组态软件完成一个工程。本工程中涉及到动画制作、控制流程的编写、模拟设备的连接、报警输出、报表曲线显示等多项组态操作。
1.1工程效果图
工程最终效果图如下:
图1-1-1
图1-1-2
图1-1-3
图1-1-4
1.2工程分析
在开始组态工程之前,先对该工程进行剖析,以便从整体上把握工程的结构、流程、需实现的功能及如何实现这些功能。
1.2.1工程框架
2个用户窗口(水位控制、数据显示)。4个主菜单(系统管理、数据显示、历史数据、报警数据)。4个子菜单(登录用户、退出登录、用户管理、修改密码)。5个策略(启动策略、退出策略、循环策略、报警数据、历史数据)。
1.2.2数据对象
水泵、调节阀、出水阀、液位1、液位2、液位1上限、液位1下限、液位2上限、液位2下限、液位组
1.2.3图形制作
(1)水位控制窗口
水泵、调节阀、出水阀、水罐、报警指示灯由对象元件库引入。管道通过流动块构件实现。水罐水量控制通过滑动输入器实现。水量的显示通过旋转仪表、标签构件实现。报警实时显示通过报警显示构件实现。动态修改报警限值通过输入框构件实现
(2)数据显示窗口
实时数据通过自由表格构件实现;历史数据通过历史表格构件实现;实时曲线通过实时曲线构件实现;历史曲线通过历史曲线构件实现;
二 制作工程画面 2.1工程建立
鼠标单击文件菜单中“新建工程”选项,如果MCGS安装在D:盘根目录下,则会在D:MCGSWORK下自动生成新建工程,默认的工程名为:“新建工程X.MCG”(X表示新建工程的顺序号,如:0、1、2等)选择文件菜单中的“工程另存为”菜单项,弹出文件保存窗口。在文件名一栏内输入“水位控制系统”,点击“保存”按钮,工程创建完毕。
2.2编辑画面
制作一个文字框图“水位控制系统演示工程” ,选中文字框,并进行相应的设置。首先单击绘图工具箱中的(插入元件)图标,弹出对象元件管理对话框,其次从“储藏罐”类中选取两个罐。从“阀”和“泵”类中分别选取2个阀、1个泵。再次将储藏罐、阀、泵调整为适当大小,放到适当位置,参照效果图。最后选中工具箱内的流动块动画构件图标,鼠标的光标呈“十”字形,移动鼠标至窗口的预定位置,点击一下鼠标左键,移动鼠标,在鼠标光标后形成一道虚线,拖动一定距离后,点击鼠标左键,生成一段流动块。整体画面如图2-2-1
图2-2-1
2.3定义数据对象
定义数据对象的内容主要包括两方面,1.指定数据变量的名称、类型、初始值和数值范 2.确定与数据变量存盘相关的参数,如存盘的周期、存盘的时间范围和保存期限等。在开始定义之前,我们先对所有数据对象进行分析。在本样例工程中需要用到以下数据对象:
对象名称 类 型 注 释
水泵 开 关 型 控制水泵“启动”、“停止”的变量
调节阀 开 关 型 控制调节阀“打开”、“关闭”的变量
出水阀 开 关 型 控制出水阀“打开”、“关闭”的变量
液位1 数 值 型 水罐1的水位高度,用来控制1#水罐水位的变化
液位2 数 值 型 水罐2的水位高度,用来控制2#水罐水位的变化
液位1上限 数 值 型 用来在运行环境下设定水罐1的上限报值
液位1下限 数 值 型 用来在运行环境下设定水罐1的下限报警值
液位2上限 数 值 型 用来在运行环境下设定水罐2的上限报警值
液位2下限 数 值 型 用来在运行环境下设定水罐2的下限报警值
液位组 组 对 象 用于历史数据、历史曲线、报表输出等功能构件
2.4动画连接
由图形对象搭制而成的图形画面是静止不动的,需要对这些图形对象进行动画设计,真实地描述外界对象的状态变化,达到过程实时监控的目的。MCGS实现图形动画设计的主要方法是将用户窗口中图形对象与实时数据库中的数据对象建立相关性连接,并设置相应的动画属性。在系统运行过程中,图形对象的外观和状态特征,由数据对象的实时采集值驱动,从而实现了图形的动画效果。水位升降效果:水位升降效果是通过设置数据对象“大小变化”连接类型实现的。
2.4.1水泵、阀门的启停
水泵、阀门的启停动画效果是通过设置连接类型对应的数据对象实现的。
2.4.2水流效果
水流效果是通过设置流动块构件的属性实现的。
2.4.3利用滑动输入器控制水位 2.4.4利用旋转仪表控制水位
在工业现场一般都会大量地使用仪表进行数据显示。MCGS组态软件适应这一要求提供了旋转仪表构件。用户可以利用此构件在动画界面中模拟现场的仪表运行状态。选取“工具箱”中的“旋转仪表”图标,调整大小放在水罐1下面适当位置。双击该构件进行属性设置。按照此方法设置水罐2数据显示对应的旋转仪表。进入运行环境后,可以通过拉动旋转仪表的指针使整个画面动起来。
2.4.5水量显示
为了能够准确地了解水罐1、水罐2的水量,通过设置标签的“显示输出”属性显示其值,绘制两个标签,调整大小位置,将其并列放在水罐1下面。第一个标签用于标注,显示文字为:水罐1。第二个标签用于显示水罐水量。双击第一个标签进行属性设置。
图2-4-5
双击第二个标签,进入动画组态属性设置窗口。将:填充颜色设置为:白色,边线颜色设置为:黑色在输入输出连接域中,选中“显示输出” 选项,在组态属性设置窗口中则会出现“显示输出”标签,如图2-4-5。再单击“显示输出”标签,设置显示输出属性。参数设置如下。输出值类型:数值量输出;输出格式:向中对齐;整数位数:0;小数位数:1。单击“确认”,水罐1水量显示标签制作完毕。水罐2水量显示标签与此相同。
2.5设备连接
我们通过模拟设备的连接,可以使动画不需要手动操作,自动运行起来。通常情况下,在启动MCGS组态软件时,模拟设备都会自动装载到设备工具箱中。如果未被装载,可按照以下步骤将其选入:
(1)在工作台“设备窗口”中双击“设备窗口”图标进入。
(2)点击工具条中的“工具箱”图标,打开“设备工具箱”。
(3)单击“设备工具箱”中的“设备管理”按钮,弹出如图2-5-1所示窗口。
(4)在可选设备列表中,双击“通用设备”。
(5)双击“模拟数据设备”,在下方出现模拟设备图标。
(6)双击模拟设备图标,即可将“模拟设备”添加到右测选定设备列表中。
(7)选中选定设备列表中的“模拟设备”,单击“确认”,“模拟设备”即被添加到“设备工具箱”中。
图2-5-1
下面详细介绍模拟设备的添加及属性设置:
(1)双击“设备工具箱”中的“模拟设备”,模拟设备被添加到设备组态窗口中。
(2)双击“设备0-[模拟设备]”,进入模拟设备属性设置窗口,如图2-5-2。
图2-5-2
(3)点击基本属性页中的“内部属性”选项,该项右侧会出现图标,单击此按钮进入“内部属性”设置。将:通道1、2的最大值分别设置为:10、6
(4)单击“确认”,完成“内部属性”设置。点击通道连接标签,进入通道连接设置。
(5)选中通道0对应数据对象输入框,输入“液位1”或单击鼠标右键,弹出数据对象列表后,选择“液位1”;选中通道1对应数据对象输入框,输入“液位2”。
(6)进入“设备调试”属性页,即可看到通道值中数据在变化。按“确认”按钮,完成设备属性设置。
2.6编写控制流程
下面先对控制流程进行分析:当“水罐1”的液位达到9米时,就要把“水泵”关闭,否则就要自动启动“水泵”;当“水罐2”的液位不足1米时,就要自动关闭“出水阀”,否则自动开启“出水阀”;当“水罐1”的液位大于1米,同时“水罐2”的液位小于6米就要自动开启“调节阀”,否则自动关闭“调节阀”。脚本程序如下:
IF 液位1
水泵=1
ELSE
水泵=0
ENDIF
IF 液位2
出水阀=0
ELSE
出水阀=1
ENDIF
IF 液位1>1 and 液位2
调节阀=1
ELSE
调节阀=0
ENDIF
!SetAlmValue(液位1,液位1上限,3)
!SetAlmValue(液位1,液位1下限,2)
!SetAlmValue(液位2,液位2上限,3)
!SetAlmValue(液位2,液位2下限,2)
三 报警显示
MCGS把报警处理作为数据对象的属性,封装在数据对象内,由实时数据库来自动处理。当数据对象的值或状态发生改变时,实时数据库判断对应的数据对象是否发生了报警或已产生的报警是否已经结束,并把所产生的报警信息通知给系统的其它部分,同时,实时数据库根据用户的组态设定,把报警信息存入指定的存盘数据库文件中。
3.1定义报警
本样例中需设置报警的数据对象包括液位1和液位2定义报警的具体操作如下:
(1)进入实时数据库,双击数据对象“液位1”。选中“报警属性”标签。再选
中“允许进行报警处理”,报警设置域被激活;
(2)选中报警设置域中的“下限报警”,报警值设为:2;报警注释输入:“水罐1没水了!”。选中“上限报警”,报警值设为:9;报警注释输入:“水罐1的水已达上限值!”。
(3)单击“存盘属性”标签,选中报警数据的存盘域中的“自动保存产生的报警信息”。
(4)按“确认”按钮,“液位1”报警设置完毕。
(5)同理设置“液位2”的报警属性。需要改动的设置为,下限报警:报警值设为:1.5;报警注释输入:“水罐2没水了!”;上限报警:报警值设为:4;报警注释输入:“水罐2的水已达上限值!”。
3.2制作报警显示画面
实时数据库只负责关于报警的判断、通知和存储三项工作,而报警产生后所要进行的其它处理操作(即对报警动作的响应),则需要您在组态时实现。具体操作如下:
(1)双击“用户窗口”中的“水位控制”窗口,进入组态画面。选取“工具箱”中的“报警显示”构件。鼠标指针呈“十”后,在适当的位置,拖动鼠标至适当大小。
(2) 选中该图形双击,再双击弹出报警显示构件属性设置窗口,如图3-2-1。
图3-2-1
(3) 在基本属性页中,对应的数据对象的名称设为:液位组;最大记录次数设为:6。
(4) 单击“确认”即可。
3.3报警数据浏览
在对数据对象进行报警定义时,我们已经选择报警产生时,“自动保存产生的报警信息”,我们可以使用“报警信息浏览”构件,浏览数据库中保存下来的报警信息。
具体操作如下:
(1)在“运行策略”窗口中,单击“新建策略”,弹出“选择策略的类型”。
(2)选中“用户策略”,按“确定”。
(3)选中“策略1”,单击“策略属性”按钮,弹出“策略属性设置”窗口。策略名称输入框中输入:报警数据;策略内容注释输入框中输入:水罐的报警数据。
(4)按“确认”。
(5)双击“报警数据”策略,进入策略组态窗口。
(6)单击工具条中的“新增策略行”图标,新增加一个策略行。
(7)从“策略工具箱”中选取“报警信息浏览”,加到策略行上。
(8)双击图标,弹出“报警信息浏览构件属性设置”窗口。
(9)进入基本属性页,将“报警信息来源”中的“对应数据对象”改为:液位组。按“确认”按钮设置完毕。
可按“测试”按钮,进行预览。在该窗口中,您也可以对数据进行编辑。编辑结束,退出时,会弹出如下窗口,按“是”按钮,就可对所做编辑进行保存。
3.4修改报警限值
在“实时数据库”中,对“液位1”、“液位2”的上下限报警值都是已定义好的。如果用户想在运行环境下根据实际情况需要随时改变报警上下限值,又如何实现呢?在MCGS组态软件中,为您提供了大量的函数,可以根据您的需要灵活地运用。
操作步骤包括以下几个部分:设置数据对象、制作交互界面、编写控制流程
3.4.1设置数据对象
在“实时数据库”中,增加四个变量,分别为:液位1上限、液位1下限、液位2上限、液位2下限,参数设置如下:
(1) 基本属性页中,对象名称分别为:液位1上限、液位1下限、液位2上限、液位2下限;对象内容注释分别为:水罐1的上限报警值、水罐1的下限报警值、水罐2的上限报警值、水罐2的下限报警值。 2 对象初值分别为:液位1的上限=9、液位1的下限下限=2、液位2的上限=4、液位2的下限=1.5;
(2) 存盘属性页中,选中“退出时,自动保存数据对象当前值为初始值”。
3.4.2制作交互界面
下面通过对四个输入框设置,实现用户与数据库的交互。需要用到的构件包括:4个标签(用于标注)和4个输入框(用于输入修改值)。具体制作步骤如下:在“水位控制”窗口中,根据上几节学到的知识,按照上图制作4个标签。选中“工具箱”中的“输入框”构件,拖动鼠标,绘制4个输入框。双击图标,进行属性设置。这里只需设置操作属性即可。4个输入框具体设置如下:对应数据对象的名称分别为:液位1上限值、液位1下限值、液位2上限值、液位2下限值。
四 报表输出 4.1实时报表
实时报表是对瞬时量的反映,通常用于将当前时间的数据变量按一定报告格式(用户组态)显示和打印出来。实时报表可以通过MCGS系统的自由表格构件来组态显示实时数据报表如图4-1-1。
图4-1-1
具体制作步骤如下:
(1)在“用户窗口”中,新建一个窗口,窗口名称、窗口标题均设置为“数据显示”。
(2)双击“数据显示”窗口,进入动画组态。
(3)按照效果图,使用“标签”制作一个标题和四个注释。
(4)选取“工具箱”中的“自由表格”图标,在桌面适当位置,绘制一个表格。
(5)双击表格进入编辑状态。
(6)在 A列的五个单元格中分别输入:液位1、液位2、水泵、调节阀、出水阀;在B列的五个单元格中均输入:1|0,表示输出的数据有1位小数,无空格。
(7)在B列中,选中液位1对应的单元格,单击右键。从弹出的下拉菜单中选取“连接”项。,
(8)再次单击右键,弹出数据对象列表,双击数据对象“液位1”,B列1行单元格所显示的数值即为“液位1”的数据。
(9)按照上述操作,将B列的2、3、4、5行分别与数据对象:液位2、水泵、调节阀、出水阀建立连接。
(10)进入“主控窗口”中,单击“菜单组态”,增加一名为“数据显示”的菜单。
按“F5”进入运行环境后,单击菜单项中的“数据显示”,即可打开“数据显示”窗口。
4.2历史报表 4.2.1利用“存盘数据浏览”策略构件实现历史报表
在“运行策略”中新建一用户策略。 策略名称改为“历史数据”;策略内容注释为“水罐的历史数据”。双击“历史数据”策略,进入策略组态窗口。新增一策略行,并添加“存盘数据浏览”策略构件。双击图标,弹出“存盘数据浏览构件属性设置”窗口。在数据来源页中,选中MCGS组对象对应的存盘数据表,并在输入框中输入文字“液位组”。 在显示属性页中,单击“复位”按钮,并在液位1、液位2对应的小数列中输入1,时间显示格式:除毫秒外全部选中。在时间条件页中,设置排序列名:MCGS_TIME,升序; 时间列名:MCGS_TIME; 所有存盘数据。单击“确认”按钮。进入“主控窗口”,新增加一个菜单,参数设置为:菜单属性页中,菜单名设为历史数据;菜单操作属性页中,菜单对应的功能选择执行运行策略块;策略名称为历史数据。
4.2.2利用历史表格动画构件实现历史报表
历史表格构件是基于“Windows下的窗口”和“所见即所得”机制的,用户可以在窗口上利用历史表格构件强大的格式编辑功能配合MCGS的画图功能做出各种精美的报表。
在“数据显示”组态窗口中,选取“工具箱”中的“历史表格”构件,在适当位置绘制一历史表格。双击历史表格进入编辑状态。制作一个5行3列的表格。参照实时报表部分相关内容制作,列表头,分别为:采集时间、液位1、液位2; 数值输出格式,均为:1|0。选中R2、R3、R4、R5,单击右键,选择“连接”选项。点击菜单栏中的“表格”菜单,选择“合并表元”项,所选区域会出现反斜杠。 双击该区域,弹出数据库连接设置对话框如图4-2-2-1。
图4-2-2-1
具体设置如下:
(1)基本属性页中,连接方式选取:在指定的表格单元内,显示满足条件的数据记录;按照从上到下的方式填充数据行;显示多页记录。
(2)数据来源页中,选取组对象对应的存盘数据;组对象名为:液位组。
(3)显示属性页中,点击“复位”按钮。
(4)时间条件页中排序列名:MCGS_TIME;升序; 时间列名MCGS_TIME; 所有存盘数据。
(5)最终效果图如下图所示4-2-2-2。
图4-2-2-2
五 曲线显示 5.1实时曲线
实时曲线构件是用曲线显示一个或多个数据对象数值的动画图形,象笔绘记录仪一样实时记录数据对象值的变化情况如图5-1-1。具体制作步骤如下:先双击进入“数据显示”组态窗口。在实时报表的下方,使用标签构件制作一个标签,输入文字:实时曲线。单击“工具箱”中的“实时曲线”图标,在标签下方绘制一个实时曲线,并调整大小。再双击曲线,弹出“实时曲线构件属性设置”窗口,仅设置:在基本属性页中,Y轴主划线设为:5;其它不变。在标注属性页中,时间单位设为:秒钟;小数位数设为:1;最大值设为:10;其它不变。在画笔属性页中,将:曲线1对应的表达式设为:液位1;颜色为:蓝色;曲线2对应的表达式设为:液位2;颜色为:红色。最后点击“确认”即可。这时,在运行环境中单击“数据显示”菜单,就可看到实时曲线。双击曲线可以将其放大
如图5-1-1。
图5-1-1
5.2历史曲线
历史曲线构件实现了历史数据的曲线浏览功能。运行时,历史曲线构件能够根据需要画出相应历史数据的趋势效果图。历史曲线主要用于事后查看数据和状态变化趋势和总结规律。制作步骤如下:在“数据显示”窗口中,使用标签构件在历史报表下方制作一个标签,输入文字:历史曲线。在标签下方,使用“工具箱”中的“历史曲线”构件,绘制一个一定大小的历史曲线图形。双击该曲线,弹出“历史曲线构件属性设置”窗口,进行相应的设置,制作出历史曲线如图5-2-1。
图5-2-1
六 安全机制
MCGS建立安全机制的要点是:严格规定操作权限,不同类别的操作由不同权限的人员负责,只有获得相应操作权限的人员,才能进行某些功能的操作。
1.以样例工程为例,本系统的安全机制要求:
(1) 只有负责人才能进行用户和用户组管理;
(2) 只有负责人才能进行“打开工程”、“退出系统”的操作;
(3) 只有负责人才能进行水罐水量的控制;
(4) 普通操作人员只能进行基本菜单和按钮的操作。
2.需要设置权限的部分包括: 系统运行权限和水罐水量控制滑动块。
(1)定义用户和用户组。
(2)系统权限管理。
(3)操作权限管理。
(4)运行时进行权限管理。
(5)保护工程文件。为了保护工程开发人员的劳动成果和利益,MCGS组态软件提供了工程运行“安全性”保护措施,工程密码设置。
结 束 语
经过一个多月的努力我的毕业设计终于完成了,但是现在回想起来做毕业设计的整个过程,从开始的软件入门学习,之后的软件运用再到完成设计颇有心得,其中有苦也有甜,艰辛同时又充满乐趣,不过乐趣尽在其中!这次毕业设计,对我来说是崭新的,激动的,因为我的设计内容不同于以往的设计类型,而是利用一个新软件来做一个水位控制的动画。通过这次做毕业设计发现毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。我还清楚的记得在老师在给我装软件时让我看的一些演示文件,那些都由有一些色彩明亮的元器件构成一幅幅逼真而形象的画面,那时候我就对此次设计有了一种强烈的好奇心,也正是由于这种求知欲使我在设计过程中不断学习,不断进步。
在课题分析阶段,由于本次是设计一个水位控制系统,所以对组态软件的熟练运用尤为重要。对指导老师提供的资料必须要吃透。这是关键,从查阅资料、提出问题,到慢慢一一解决问题,老师给了我很大的帮助。在总体设计阶段,由于课题分析做的比较全面,很快就对系统的功能,控制机制有了充分的认识, 最后,系统运行环节。对已完成的程序和硬件系统相结合。调试时,由于脚本程序上出现了一点问题,使得硬件和软件不能完全统一。当时我心里是非常焦急的,这一出错也意味着前功尽弃。然而,在指导老师的分析与鼓励下,我重新纠错找到了错误并改正
今后面临技术员岗位的我,要学习的规范,程序设计语言还有很多。在微型计算机控制领域,要学的实在太多,仅大学生涯所学实在有限。我只有对自己不断提出更高的要求,才能作为动力使自己不断取得新的成绩!
谢 辞
在整个毕业设计中,我得到了指导老师李宁老师的热心指导和帮助,从课题选择、方案论证到具体设计和调试,无不凝聚着老师的心血和汗水,为了能方便我们做实验,老师精心的为我们安排了实验室,此外李老师在忙完一天课后还忍着疲倦来到我们宿舍给我装软件。我很庆幸自己的这次毕业设计由我们李老师来辅导。在3年的专科学习和生活期间,也始终感受着老师的精心指导和无私的关怀,我从中受益匪浅。在此向李老师表示深深的感谢和崇高的敬意。“不积跬步无至千里,不积小流,无以成江河”本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业论文工作顺利完成,在此向西安航空职业技术学院自动化工程系的全体老师表示由衷的谢意。感谢他们3年来的辛勤栽培。
文 献
[1]谭浩强 著《C语言程序设计(第二版)》.北京清华大学出版社,1999
[2]邱小文、汪仁和《基于MCGS组态软件的设备驱动开发》,来源:工业技术/矿业工程收藏文章
[3]余雷生 《电气控制PLC应用》 北京:机械工业出版社,2000.
[4]郑启华 著《PASCAL程序设计》北京:清华大学出版社,1991
[5]Waite,S.Prata著《新编C语言大全》范植花、樊莹译,北京:清华大学出版社,1994
[6]徐金武、杨德斌、徐种编著,《Turboc实用大全》,北京:机械工业出版社,1996
[7]田晓伍 主编《电气控制与PLC应用技术》,北京:机械工业出版社,2008