监 控 组 态 软 件 组 态 王 应 用 教 程
监控组态软件组态王应用教程
实验一 工艺流程图绘制
一、实验目的
熟练掌握工控组态软件的绘图工具
二、实验内容
熟悉工控组态软件的绘图工具,完成反应工段工艺流程绘制以及外部设备和变量的定义。 三、 实验步骤
3.1创建工程
在工程管理器中选择菜单“文件/新建工程”,或者点击工具栏的“新建”按钮,根据 “新建工程向导” 对话框完成工程创建,如图一所示
图一 工程管理器
3.2 组态画面
双击工程管理器中的工程,打开工程浏览器,在工程浏览器中左侧的“工程目录显示区”中选择“画面”,在右侧视图中双击“新建”,弹出新建画面对话框如图一所示。
图二 画面属性设置
素进行监控画面组态,绘制工艺流程图如图三所示。
点击图二确定按钮后,在工具箱和图库中选中相应图
1
监控组态软件组态王应用教程
图三 反应车间监控画面
3.3 定义设备
根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC” 。
3.3 定义变量
在组态王中定义三个变量:原料油液位(IO实数类型)、成品油液位(IO实数类型)、催化剂液位(IO实数类型)。
原料油液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
催化剂液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
成品油液位变量:最小值0,最大值200,最小原始值0,最大原始值200,连接设备PLC,寄存器INCREA200,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。 四、实验报告
实验报告包括实验目的、实验内容、设计说明、实验体会等。
实验二 组态王的动画功能设计 一、实验目的
本次实验通过几个图形显示与动画功能典型实例,来掌握组态软件的图形功能。 二、实验内容
1.填充与自制棒图
2.缩放 3.旋转 4.移动
5.闪烁、隐含和复现 6.屏幕切换
三、实验步骤
(1)填充与自制棒图 选取线属性(表达式取常数0,运行时线的粗细和颜色不随时间而变)、填充属性(动画连接表达式取填充0,事先定义的变量,内存实数,要分段设置画刷和颜色,不妨设:0—红,20—黄,40—绿,
2
监控组态软件组态王应用教程
60—青,80—兰,100—紫色。运行时调节游标,可得变色棒图)和填充(表达式取:填充0),用图库中的游标(表达式取:填充0)控制。
(2)缩放 选取线属性(表达式取0)、填充属性(表达式取0)和缩放(表达式取:缩放0),用游标控制。 (3)旋转0 选取旋转(表达式取:旋转0),用游标控制。
(4)旋转1 选取旋转(表达式取:旋转1),用启动和停止按钮(它们用椭圆和文本制成组合图素)控制。启动和停止按钮弹起时的命令语言分别为:
\\\\本站点\\旋转启停0=1;和 \\\\本站点\\旋转启停0=0; 画面命令语言显示时的代码为:
\\本站点\\旋转1=10;/*刚进入运行时,图形初始转角为36度*/ 存在时的代码为:
if(\\\\本站点\\旋转启停0==1)\\\\本站点\\旋转1=\\\\本站点\\旋转1+1;else \\\\本站点\\旋转1=\\\\本站点\\旋转1;if(\\\\本站点\\旋转1==101)\\\\本站点\\旋转1=0;
(5)水平移动和垂直移动 可以将水平移动连接和垂直移动连接结合使用,选取水平移动(表达式取:水平移动0)和垂直移动(表达式取:垂直移动0),分别用两个游标控制。
(6)自制软按钮和软灯 软灯用椭圆制作,填充属性(表达式取:自制软按钮0),自制软按钮用圆角矩形和文本制成合成单元,应该注意圆角矩形在合成单元前就要动画连接。“按下时”的命令语言:
\\\\本站点\\自制软按钮0=1;/*软灯的填充属性阈值为1。也可用100赋值,这时填充属性阈值为100(默认值)*/
弹起时的命令语言:\\\\本站点\\自制软按钮0=0;
例2 模拟值输入连接。过程控制系统中设定温度(期望值)在线实时运行修改。
模拟输入图形对象为用圆角矩形和文本制成的合成单元,应该注意圆角矩形在合成单元前就要动画连接。运行时,模拟值键盘输入对话框如图一所示。
图一 模拟值键盘输入对话框(运行时)
例3 滑动杆(滑杆、游标)输入连接和文本值输出的简单应用。首先定义变量:水平滑动杆输入坐标X设定0,垂直滑动杆输入坐标Y设定0,内存实数。用合成单元技术建立一个XY坐标系,在原点设置具有水平和垂直两种滑动杆输入连接性能的圆,以此圆作为滑动杆,并设置两个接收文本,以显示XY坐标值,文本值输出取模拟值输出。
例4 特殊动画连接闪烁和隐含的简单应用:灯光的闪烁,位图一棵树及“退出运行系统”按钮的隐含。首先定义变量:闪烁0,隐含0,内存离散。图形画面仍如图1所示。
1)灯光的闪烁 8条光线选择闪烁连接,闪烁条件取“闪烁0==1;”,闪烁速度500ms,其中左上、右上、左下和右下4条光线在组态王开发系统中设置时只能水平放置,故还要进行旋转连接,表达式取12.5(对应45度),同时要考虑顺时针或反时针方向问题。由于工具箱中按钮的字体不能任意放大,故用合成单元技术将按钮与文本建立成一个“闪烁/停止”按钮,其“按下时”的程序码为:
/*若原来不闪烁,则按下“闪烁/停止按钮”就开始闪烁;反之,按下“闪烁/停止按钮”就停止闪烁,如此等等*/ if(\\\\本站点\\闪烁0==0)\\\\本站点\\闪烁0=1;else \\\\本站点\\闪烁0=0;
3
监控组态软件组态王应用教程
(2)位图一棵树及“退出运行系统”按钮的隐含 位图一棵树取自WINDOWS图片/自然界,可通过WORD编辑等方法获取,“退出运行系统”按钮后面要叙述。隐含条件取“隐含0==1;”。用合成单元技术建立一个“隐含/复现”按钮,其“按下时”的命令语言代码为:
/*若原来不隐含,则按下“隐含/复现按钮”就开始隐含;反之,按下“隐含/复现按钮”就停止隐含而复现,如此等等*/
if(\\\\本站点\\隐含0==0) \\\\本站点\\隐含0=1; else
\\\\本站点\\隐含0=0;
例5 组态王图库中的元素称为“图库精灵”。之所以称为“精灵”,是因为它们具有自己的“生命”。图库精灵在外观上类似于组合图素,但内嵌了丰富的动画连接和逻辑控制。用户可以根据自己工程的需要,将一些需要重复使用的复杂图形做成图库精灵,加入到图库管理器中。组态王提供两种方式供用户自制图库。一种是编制程序方式,即用户利用亚控公司提供的图库开发包,自己利用VC开发工具和组态王开发系统中生成的精灵描述文本制作,生成*.dll文件。关于该种方式,详见亚控公司提供的图库开发包。另一种是利用组态王开发系统中建立动画连接并合成图素的方式直接创建图库精灵。在此将对第二种方式做详细说明。现举一个制作图库精灵的例子。画面上一个按钮,代表一个开关,开关打开时按钮为绿色,开关关闭后变为红色,并用这个按钮控制一个软灯。
在设计时,首先要用合成单元技术制作一个绿色按钮(开)和一个红色按钮(关),用一个变量(取为:图库精灵开关0)和它们连接,红色按钮的隐含条件表达式为:“图库精灵开关0==1;”,“弹起时”的命令语言代码;
\\\\本站点\\图库精灵开关0=1;
绿色按钮的隐含条件表达式为:“图库精灵开关0==0;”,“弹起时”的命令语言代码; \\\\本站点\\图库精灵开关0=0;
最后把它们叠在一起,并制成合成单元,红色按钮在上面,这就是“按钮精灵”。由于两个按钮大小相同,叠在一起并制成合成单元较复杂,方法为:叠在一起以后,先将底板(非原始底板)移动到别处,激活红色按钮,将其“图素后移”,按下ctrl键,激活绿色按钮,将绿色按钮“图素后移”,红色按钮又在上面,而后合成单元。松开ctrl键,打开图库,经图库管理器/编辑,创建新图库,取名“自制图库”,关闭图库管理器,激活合成按钮,经标题条图库/创建图库精灵/新的图库图名称,取名“自制按钮0”,确认后,出现图库管理器,选取其中的“自制图库”,将“按钮精灵”放到“自制图库”中。如此,制作“自制图库” 和“按钮精灵”全部完毕。这样工程人员只要把“按钮精灵”从图库拷贝到画面上,它就具有了“打开为绿色,关闭为红色”的按钮功能。
图库中的几乎每个精灵都有类似的已经定义的动画连接,所以使用图库精灵将极大地提高设计界面的效率。例如使用第一种方式即用VC编制程序制作的图库精灵具有自动控制图形外观和进行变量设置等的向导功能。用第二种方式制作的图库精灵放到画面上以后,双击之,出现“内容替换”框,可以根据用户具体需求改变变量名称,替换动画连接属性。这是第二种方式“图库精灵”的使用特点。
图中,软灯用4个矩形块组成,设置“填充”属性,再同大矩形块合成单元。
例6运行系统中三个画面的切换与运行画面的全部退出。设当前画面“图形功能HMTX”与隐含画面“多功能IO卡HMIO”及画面“可编程控制器PLCHMPLC”相互之间要切换,并具有退出“组态王运行系统”功能。
首先用合成单元技术制作4个按钮:退出本画面、IO卡画面、PLC画面和退出运行系统按钮,它们的“弹起时”命令语言代码分别为:
“ClosePicture(\"图形功能\");”,“ ShowPicture(\"多功能IO卡\");”,“ShowPicture(\"可编程三菱PLC\");”,“Exit(0);”。
退出运行系统画面按钮还设置了隐含属性,隐含条件表达式取“隐含0==1;”(见例4)。代码“ Exit(0);”:若改成“ Exit(1);”,表示计算机总安全关机;若改成“ Exit(2);”,表示退出运行系统,Windows重新启动。当退出运行系统按钮被隐含时,鼠标操作失效;但当用别的图形遮盖时,即使合成单元,鼠标操作也不失效。在进行画面安
4
监控组态软件组态王应用教程
全操作性能设计时要考虑这些因素。 四、实验报告
实验报告包括实验目的、实验内容、设计说明、实验体会等。
图二 组态王的动画功能
实验三 历史趋势实现
一、实验目的
掌握历史趋势作用,能够独立实现历史趋势曲线的开发。 二、功能概述
常规需求:很多工业现场都会要求显示采集量的趋势曲线,包括实时曲线、历史曲线。 组态王中的趋势曲线的实现方法:
利用组态王的“工具箱”中的“实时曲线”、“历史曲线”实现。 利用组态王的“插入通用控件”中的“历史趋势曲线”实现。
第一种实现方法的优点在于可以进行WEB的发布,实现通过IE浏览器进行浏览。缺点为支持的曲线笔比较少,许多功能的实现需要通过组态王的函数来实现,使用相对要麻烦。
第二种实现方法的优点在于支持同时绘制16条曲线,功能比较完善,可以在系统运行时动态增加、删除、隐藏曲线,还可以修改曲线属性,实现无级缩放,曲线打印等等。许多功能都不需要通过编写脚本的方法实现,使用比较方便。缺点在于无法进行WEB的发布。
5
监控组态软件组态王应用教程
三、实验步骤
1、历史趋势曲线控件的特点
KVHTrend曲线控件是组态王以Active X控件形式提供的绘制历史曲线和ODBC数据库曲线的功能性工具。该曲线具有以下特点:
1)即可以连接组态王的历史库,也可以通过ODBC数据源连接到其它数据库上,如Access、SQLServer等。 2)连接组态王历史库时,可以定义查询数据的时间间隔,如同在组态王中使用报表查询历史数据时使用查询间隔一样。
3)完全兼容了组态王原有历史曲线的功能。最多可同时绘制16条曲线。 4)可以在系统运行时动态增加、删除、隐藏曲线。还可以修改曲线属性。 5)曲线图表实现无级缩放。
6)可实现某条曲线在某个时间段上的曲线比较。
7)数值轴可以使用工程百分比标识,也可用曲线实际范围标识,二者之间自由切换。 8)可直接打印图表曲线。
9)可以自由选择曲线列表框中的显示内容。 10)可以选择移动游标时是否显示曲线数值。 11)可以在曲线中显示报警区域的背景色 2、创建新的工程 2.1定义设备
根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC” 。
2.2定义变量
在组态王中定义三个变量:原料油液位(IO实数类型)、成品油液位(IO实数类型)、催化剂液位(IO实数类型)。
原料油液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
催化剂液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
成品油液位变量:最小值0,最大值200,最小原始值0,最大原始值200,连接设备PLC,寄存器INCREA200,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
2.3 创建趋势曲线
在组态王开发系统中新建“趋势曲线”画面,在工具箱中单击“插入通用控件”或选择菜单“编辑”下的“插入通用控件”命令,弹出“插入控件”对话框,在列表中选择“历史趋势曲线”,单击“确定”按钮,对话框自动消失,鼠标箭头变为小“十”字型,在画面上选择控件的左上角,按下鼠标左键并拖动,画面上显示出一个虚线的矩形框,该矩形框为创建后的曲线的外框。当达到所需大小时,松开鼠标左键,则历史曲线控件创建成功,画面上显示出该曲线,如图四所示。双击趋势曲线,弹出“动画连接属性”,控件名命名为“HT”。点击确定完成对历史趋势曲线的命名。
6
监控组态软件组态王应用教程
图四 历史趋势曲线
2.4添加曲线变量
选中曲线控件点击右键,弹出菜单,选择“控件属性”,弹出历史趋势曲线控件的属性对话框,在“曲线”选项卡,点击“增加”按钮,选择变量“压力”,选择“线类型”、“线颜色”,点击“确定”完成压力曲线的添加。再点击“增加”按钮,选择变量“流量”,选择“线类型”、
“线颜色”,点击“确定”完成流量曲线的添加。
在趋势曲线控件属性的“坐标系”选项卡中对坐标系进行设置,我们设置Y轴的起始值为0,最大值为200,不按照百分比绘制,而是按照实际值显示。设置时间轴的显示格式为显示年、月、日、时、分、秒。
添加完成后开发画面如图五所示:
图五 历史趋势曲线 3、切换到运行系统
保存画面后,在工程浏览器的“系统配置”-“设置运行系统”中进行“主画面配置”,将“历史曲线”画面设置为主画面。
然后切换到运行系统。运行如下图六所示:
7
监控组态软件组态王应用教程
图六 运行系统
趋势曲线控件自带的工具栏中提供了很多方便实用的控制按钮功能供用户来使用,主要包括:调整跨度设置按钮,设置Y轴标记,曲线图表无级缩放,打印曲线,定义新曲线,更新曲线图表终止时间为当前时间,设置图表数值轴和时间轴参数,隐藏/显示变量列表。
这些工具栏基本可以满足客户的使用了,如果还需要进一步的功能可以通过控件的属性、方法来实现。 四、注意事项
1、变量定义时必须定义为记录,如果定义为“不记录”则无法看到历史曲线。 2、在控件使用时需要注意Y轴坐标的设置要合理。 3、详细的控件的属性、方法的使用请参考帮助或者手册。 五、实验报告
实验报告包括实验目的、实验内容、设计说明、实验体会等。
实验四 报警存储与查询
一、实验目的
掌握报警作用,能够独立实现报警的存储与查询。 二、实验内容
常规需求:很多工业现场要求将变量的报警信息进行存储,并且可以灵活的进行历史报警的查询、打印。 组态王中的实现方法:组态王支持通过ODBC 接口将数据存储到关系数据库中,并且提供KVADODBGrid 控件对存储的历史报警信息进行条件查询,并可以对查询结果进行打印。关系数据库可以为Access 数据库或者SQLServer 数据库。
8
监控组态软件组态王应用教程
我们通过一个简单的例子实现对报警信息的存储以及历史报警信息的查询。历史报警的查询主要根据日期、报警组为条件进行查询。报警信息存储的数据库以Access数据库为例进行。 三、实验步骤
1、定义设备
根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC” 。
2、定义变量
在组态王中定义三个变量:原料油液位(IO实数类型)、成品油液位(IO实数类型)、催化剂液位(IO实数类型)。
原料油液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
催化剂液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
成品油液位变量:最小值0,最大值200,最小原始值0,最大原始值200,连接设备PLC,寄存器INCREA200,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
3、定义报警
首先定义报警组,在报警组处双击进行报警组对话框,点击“增加”定义一个“液位报警”报警组,确认完成报警组的定义,如图一所示:
图一 报警组定义
报警组定义完成后,重新编辑变量定义,在变量定义的“报警定义”选项中我们对三个液位变量进行报警定义。定义报警组名为“液位报警”,设置原料油和催化剂液位的报警限为低、低低限,限值分别为10、5。成品油液位设置报警限为高、高高限报警,报警限值为190,200。定义报警画面如图二、图三所示:
图二 原料油和催化剂液位变量报警定义
9
监控组态软件组态王应用教程
图三 成品油液位变量报警定义
4、实时报警信息
变量的报警就定义完成后,我们新建一个 “实时报警”画面,在工具箱中选择报警窗口,然后在画面上完成报警窗口的制作,双击画面上的报警窗口,为报警窗口命名为“报警”,根据需要可以对报警窗口进行灵活的配置,详细的配置可以参考组态王手册或者组态王帮助,但是必须注意报警窗口的名字一定要填写,如果报警窗口没有名字,则此报警窗口无效。
报警窗口定义完成后,如果此时进入运行系统,则当出现报警后,报警信息会在报警窗口中出现。运行画面如图四所示。
图四 实时报警运行画面
需要注意的是,报警窗口显示的信息在计算机的内存中,如果组态王退出后再进入运行系统则原来的报警并不存在了,也就是说历史的报警信息并没有保存下来。下面我们会详细讲解一下如何将报警信息进行保存以方便以后的查询。
5、报警配置
组态王报警配置主要分为三个配置选项:文件配置、数据库配置、打印配置。文件配置主要是将报警信息存储到文件中,文件格式为 *.al2 ,我们可以通过记事本打开此文件对存储的信息进行浏览,因为此存储格式浏览不是很方便,我们现在不推荐客户使用。数据库配置是将报警信息存储到关系数据库中,如Access,SQLServer 等,此方式浏览、查询比较方便,本文就是以数据库配置作为讲解的重点。打印配置为报警信息的实时打印,需要注意的时打印配置选择的打印机必须为带字库的针式打印机。下面我们主要以Access 数据库为例讲解报警存储到数据库的使用配置。
5.1 建立报警数据库
在Access 中新建一个空数据库,例如建立路径为:F:\\组态王\\实验指导\\报警存储与查询\\报警数据库.mdb 。在
10
监控组态软件组态王应用教程
此数据库中创建一个数据表:表的名称为:Alarm。表的字段名称如下表,字段类型为文本类型。
为了方便同学使用,我们已经有一个已经做好的一个数据库文件,我们可以直接使用。文件名为:报警窗数据库.mdb 。我们可以直接拷贝此文件到计算机的硬盘中直接使用。
组态王通过ODBC 数据源将报警信息存储到数据库中,因此我们必须先建立ODBC数据源。
在“控制面板”-“管理工具”-“ODBC 数据源” 中建立ODBC 数据源,点击“ODBC 数据源”弹出“ODBC 数据源管理器”,如下图五所示:在“用户DSN”中点击“添加”,弹出“选择数据源驱动程序”窗口,如下图六所示:选择“Microsoft Access Driver (*.mdb)”驱动,点击“完成”。弹出如图七所示窗口,填写ODBC 数据源的名称,根据需要对数据源进行命名,如“报警”,点击“选择(S)”,如图八示,选择我们前面定义的数据库文件“F:\\组态王\\实验指导\\报警存储与查询\\报警数据库.mdb”。点击“确定”完成ODBC 数据源的定义,如图九所示。其他数据库如SQLServer 的ODBC定义请参考相关文档。
图五 ODBC数据源管理器
11
监控组态软件组态王应用教程
图六 选择数据源驱动程序
图七 数据源定义
图八 选择数据库
图九 ODBC数据源定义
5.2 报警配置
数据库以及ODBC 数据源定义完成后,我们进行报警配置中的数据库配置。双击组态王工程浏览器的“系统配置”中的“报警配置”,弹出如图十的“报警配置”对话框。选择“数据库配置”选项卡,如图十一所示:我们根据需要将“记录报警事件到数据库”打上勾,点击报警格式,根据实际情况对报警格式进行选择配置,需要注意的是默认的报警格式没有选择报警日期、事件日期,因此必须进行报警格式的配置。
12
监控组态软件组态王应用教程
图十 报警配置
图十一 数据库配置
“报警格式”配置如图十二所示:需要注意的是:在6.52 版本之前的报警格式配置中没有“数据库选项,分月保存报警数据表,以日期时间类型保存日期时间”选项。6.52版本增加了此选项。其中“分月保存报警数据表”选项如果选中,则保存报警信息的数据库中的数据表每月生成一个,并且无需建表,只需要建一个空的数据库即可。采用分月保存的方式的优点在于:如果报警信息数据量比较大,分表存储可以提高查询的速度。
缺点在于:无法进行跨月的查询,在编写脚本进行查询时需要考虑查询的是哪那一个数据表。
本实验中我们还是按照报警信息存储到一个数据表的方式为例进行介绍,也就是说我们不选中“分月保存报警数据表”。其他选项需要注意的就是数据长度要根据实际情况进行设置,并且选中“报警组名”,如果使用描述则“变量描述”也需要选中。
13
监控组态软件组态王应用教程
图十二 数据库配置
报警格式设置完成后,点击“确定”返回“数据库配置”画面,在数据源处选择我们前面定义的数据源“报警”。如图十三所示:点击“确定”完成报警的配置。
图十三 数据库配置
当有报警产生后,会在报警画面中显示当前的报警信息,同时也会将报警信息存储到Access 数据库中。
5.2 历史报警查询
前面我们已经将报警存储到数据库中了,下面我们就介绍一下如何对存储到数据库中的报警进行查询。我们根据日期、报警组为例进行报警的查询。
历史报警的查询主要是利用KVADODBGrid 控件进行查询。 5.2.1 创建KVADODBGrid 控件
14
监控组态软件组态王应用教程
在工程中新建画面“报警查询”,单击工具箱中的“插入通用控件”按钮则弹出“插入控件”对话框。在“插入控件”对话框内选择“KVADODBGrid Class”控件,如图十四所示,在此画面中放入此控件。双击此控件,为控件命名,控件名称可以根据需要确定,我们命名为“KV”。
图十四 插入通用控件
选择控件,单击右键,在弹出的菜单中选择“控件属性”。弹出控件固有属性对话框,如下图十五所示。
图十五 KV控件属性
点击“浏览”按钮弹出“数据链接属性”如图十六所示,选择“连接”选项卡,在“指定数据源”处选择“使用数据源名称”选项,通过下拉列表选择我们前面所定义的ODBC 数据源“报警”,点击“确定”,返回图十五画面,“数据源”与“数据库”连接完成,下面进行数据表的配置。
15
监控组态软件组态王应用教程
图十六 数据链接属性
在“表名称”处选择我们需要查询的数据表“Alarm”。选择完成后,数据表的字段会显示在“有效字段”栏,我们可以将需要的字段添加到右边,在添加过程中可以对标题以及格式等进行相应的修改,如图十七所示:点击“确定”完成对KV 控件的配置。
图十七 KV控件配置
配置完成后,同时按下键盘的“Ctrl”+“Alt”+“O”可以对控件的列宽进行设置,我们可以根据字段内容的多少设置合适的列宽以增加画面的美观程度。设置完成后的画面如图十八所示:
16
监控组态软件组态王应用教程
图十八 运行系统画面
5.2.2 创建日历控件
我们按照日期进行历史报警的查询,使用微软提供的通用控件“Microsoft Date andTime Picker Control ”,此控件在安装VB 或者VC 或者Office2000 后会在通用控件中找到。
插入通过控件,如图十九所示:选择后画到画面上,双击控件,在“常规”选项卡中为控件命名为“ADate”,点击“确定”,保存画面。再次双击日历控件,选择“事件”选项卡,在“事件”选项卡中点击CloseUp 事件,弹出控件事件函数编辑窗口,在函数声明中为此函数命名:CloseUp1();在编辑窗口中编写脚本程序,如图二十所示:
在编写脚本程序之前在数据词典中定义字符串变量“选择日期”。编辑完成后点击“确认”,完成对日历控件的设置。
图十九 日历控件
17
监控组态软件组态王应用教程
图二十 控件事件函数
5.2.3 报警查询
制作一个日期报警查询按钮:按照选择的日期对所选日期的所有报警进行查询,程序如下。 string whe;
whe=\"AlarmDate='\"+\\\\本站点\\选择日期+\"'\"; KV.Where=whe; KV.FetchData(); KV.FetchEnd();
完成画面制作并保存后,切换到运行系统,显示如图十五所示的画面,通过画面切换按钮进行“报警查询”画面,如图二十一所示。
图二十一 历史报警查询
四、注意事项
1)报警数据库的属性,一定要将只读属性去掉。
2)报警配置中的数据库配置的报警格式设置时,各个字段的长度需要根据实际情况 进行设置。
3)报警配置中如果选择“分月保存报警数据表”,则数据库中的报警表会自动生成,如果不选择此项,则“Alarm”
18
监控组态软件组态王应用教程
表需要手动建立。
4)KVADODBGrid 控件的详细使用方式请参考组态王手册或者帮助。
5)报警数据库可以选择SQLServer 或者其他关系数据库,其他数据库的ODBC 数据源的定义请参考相关文档。 五、实验报告
实验报告包括实验目的、实验内容、设计说明、实验体会等。
实验五 报表功能实现
一、实验目的
掌握报表作用,能够独立实现报表编制。 二、实验内容
常规需求:很多工业现场会用到报表功能,而日报是其中最基本的一种报表形式。 日报表一般为每天整点的数据,每一个变量有24个数据。 组态王中的实现方法:
利用组态王内置报表以及报表的函数来实现对日数据的查询生成日报表。
组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。 我们举一个例子来说明日报表的实现方法。在此例程中我们定义三个变量,分别为“原料油液位”、“催化剂液位”、“成品油液位”,运行系统运行后记录历史数据,查询日报表数据时自动从历史数据中查询整点数据生成报表,并可以保存、打印报表。下面就以此为例来演示完成这一要求的具体步骤。 三、实验步骤
1、定义设备
根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC” 。
2、定义变量
在组态王中定义三个变量:原料油液位(IO实数类型)、成品油液位(IO实数类型)、催化剂液位(IO实数类型)。
原料油液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
催化剂液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
成品油液位变量:最小值0,最大值200,最小原始值0,最大原始值200,连接设备PLC,寄存器INCREA200,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
3、制作画面 3.1 创建报表
新建画面,画面名称“日报表”。在组态王工具箱按钮中,用鼠标左键单击“报表窗口”按钮,此时,鼠标箭头变为小“+”字形,在画面上需要加入报表的位置按下鼠标左键,并拖动,画出一个矩形,松开鼠标键,报表窗口创建成功,如图一所示。
19
监控组态软件组态王应用教程
图一 报表
用鼠标双击报表窗口的灰色部分(表格单元格区域外没有单元格的部分),弹出“报表设计”对话框,如图二所示。该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。我们设置报表名称为“Report0”,行数为27,列数为4。
图二 报表设计
我们根据需要对报表的格式进行设置,如报表的表头,标题等。我们选中单元格A1到F1,点击右键弹出快捷菜单,选择“合并单元格”,单元格合并后我们填写标题,如“监控系统日报表”,点击右键在快捷菜单中选择“设置单元格格式”,设置字体、对齐方式、边框等。我们按照此方法设计日报表的格式,如图三所示:
图三 日报表
3.2创建日历控件
我们按照日期进行历史数据的查询生成日报表,使用微软提供的通用控件“Microsoft Date and Time Picker Control ”,此控件在安装VB或者VC或者Office2000后会在通用控件中找到。
插入通过控件,如图四所示:选择后画到画面上,双击控件,在“常规”选项卡中为控件命名为“ADate”,点击“确定”,保存画面。再次双击日历控件,选择“事件”选项卡,点击在“事件”选项卡中点击CloseUp事件,弹出控件事件函数编辑窗口,在函数声明中为此函数命名:CloseUp();在编辑窗口中编写脚本程序,在编写脚本程序之前在数据词典中定义字符串变量“选择日期”,如图五所示:
20
监控组态软件组态王应用教程
图四 日历控件
图五 控件事件函数
脚本程序如下: float Ayear; float Amonth; float Aday; long x; long y; long Row; long StartTime; string temp; Ayear=ADate.Year; Amonth=ADate.Month; Aday=ADate.Day;
temp=StrFromInt( Ayear, 10 ); if(Amonth<10)
21
监控组态软件组态王应用教程
temp=temp+\"-0\"+StrFromInt( Amonth, 10 ); else
temp=temp+\"-\"+StrFromInt( Amonth, 10 ); if(Aday<10)
temp=temp+\"-0\"+StrFromInt( Aday, 10 ); else
temp=temp+\"-\"+StrFromInt( Aday, 10 ); \\\\本站点\\选择日期=temp;
ReportSetCellString2(\"Report0\清空单元格 ReportSetCellString(\"Report0\填写日期 StartTime=HTConvertTime(Ayear,Amonth,Aday,0,0,0);
ReportSetHistData(\"Report0\本站点\\原料油液位\ReportSetHistData(\"Report0\本站点\\催化剂液位\ReportSetHistData(\"Report0\本站点\\成品油液位\x=0;
while(x<24) { row=4+x;
y=StartTime+x*3600; temp=StrFromTime( y, 2 );
ReportSetCellString(\"Report0\ x=x+1; }
编辑完成后点击“确认”,完成对日历控件的设置。下面我们对报表进行保存和打印。
在画面上添加两个按钮,按钮文本分别为“保存”、“打印”。双击“保存”按钮,弹出“动画连接”,点击“命令语言连接”的“弹起时”,编写报表保存的脚本程序。报表保存的格式为“xls”文件,如图六所示:
图六 保存报表
脚本程序如下: string filename;
filename=InfoAppDir()+\\\\本站点\\选择日期+\".xls\"; ReportSaveAs(\"Report0\
22
监控组态软件组态王应用教程
双击“打印”按钮,弹出“动画连接”,点击“命令语言连接”的“弹起时”,编写报表打印的脚本程序。如图七所示:脚本程序如下: ReportPrintSetup(\"Report0\");
图七 打印报表
完成按钮命令语言的编写后,保存画面。画面如下图八所示:
图八 打印报表
4、进入运行系统
画面开发完成后在工程浏览器的“系统设置”中的“设置运行系统”中对“配置主画面”选项卡进行主画面的配置,设置“日报表”画面为主画面。配置完成后点击工程浏览器的“View”按钮切换到运行系统。
系统运行后会将主画面打开,点击日历控件,选择我们要查询的日报表的日期,就可以查询出日报表的数据,如图九所示:
图九 运行系统
23
监控组态软件组态王应用教程
点击“保存”按钮,可以将报表保存为xls格式文件,文件名称为日期,如“2013-11-23.xls”,文件的保存路径为工程所在的路径。
点击“打印”按钮,可以对报表进行打印输出,并且可以进行报表的打印预览,如图十所示:
图十 打印预览
四、注意事项
1、在此例程中所用到的函数请参考相关函数使用手册。
2、日历控件为微软提供,如果无法创建此控件可以考虑安装office2000或者VB、VC软件。
3、本工程只是简单的介绍日报表如何制作的例程,更深一步的学习使用请参考组态王使用手册、组态王帮助文档,或者参加组态王培训班。
24
因篇幅问题不能全部显示,请点此查看更多更全内容