组态王报警例程文档讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
报警系统应用例程
说明文档
此文档由北京亚控公司提供,仅作为KingSCADA3.0报警系统应用的使用参考,其中涉及内容的详细说明请参考KingSCADA3.0的使用说明或咨询技术支持工程师。
目录
1. 概述 (1)
2. 例程 (1)
2.1 定义变量的报警属性 (1)
2.2 报警配置 (3)
2.3 报警显示 (6)
2.4 报警查询 (12)
2.5 报警窗的方法应用 (17)
3. 注意事项 (18)
1. 概述
在工业控制系统中,当现场的数据超出正常范围时,系统应以报警的方式将其通知相关工作人员,工作人员接收到报警信息后会对报警做出相应的处理,所以报警系统在工业控制系统中是一个非常重要的组成部分。
KingSCADA3.0提供了强大的报警操作功能:包括报警存储功能、报警打印功能、报警显示功能、报警转发功能等等,下面将具体介绍每种功能的操作过程。
2. 例程
2.1定义变量的报警属性
在使用报警功能前,必须先要对变量的报警属性进行定义。
在开发系统“数据词典”中新建变量,本工程中我们以模拟量为例。
●变量名:temperature
●变量类型:基本变量
●数据类型:Mem Float
●变量描述:温度
●初始值:0
●灵敏度:0
●最小值:0
●最大值:100
变量temperature的报警属性如图1所示。
图1 变量temperatrue报警属性
●变量名:pressure
●变量类型:基本变量
●数据类型:Mem Float
●变量描述:压力
●初始值:0
●灵敏度:0
●最小值:0
●最大值:5
变量pressure的报警属性如图2所示。
图2 变量temperatrue报警属性
●变量名:alarmctrl
●变量类型:基本变量
●数据类型:内存离散
●变量描述:报警约束
●初始值:false
报警约束是对变量报警的一种条件控制,可以通过关联一个离散变量对变量报警做一定的限制,当连接的离散量为1时,约束条件成立,即不产生报警事件;当连接的离散量为0时,约束条件不成立,即产生报警事件。
但要注意:报警约束是在报警使能域开的情况下,发生作用。
2.2报警配置
在KingSCADA3.0 开发系统树型目录中双击“系统设置”→“报警/事件设置”选
项,弹出配置对话框,如图3所示:
图3 报警与事件配置对话框
2.2.1存储设置
存储设置置主要是用来配置报警信息的存储方式,设置对话框如上图10所示。
记录内容选择:选择将哪些事件记录到KingSCADA3.0报警库中,包括:
✧记录报警事件:报警事件包括:报警信息、恢复信息和确认信息。
单击此项前面
的复选框,该框中出现‘√’表示选中,此时后面的“保存项”变为可编辑状态,选择哪种报警事件产生时会记录到报警数据库中。
如:“保存项”中只选中了“恢
复信息”选项,那么只有报警恢复信息产生时,才保存到报警数据库中,其它两
种报警事件产生后不会记录到报警数据库中。
✧记录操作事件:单击此项前面的复选框,该框中出现‘√’表示选中,当
KingSCADA3.0进入运行系统,发生操作事件时,系统会自动将该事件信息记录
到报警数据库中。
✧记录登陆事件:单击此项前面的复选框,该框中出现‘√’表示选中,当
KingSCADA3.0进入运行系统,发生用户登录事件时,系统会自动将该事件信息
记录到报警数据库中。
✧记录站点事件:单击此项前面的复选框,该框中出现‘√’表示选中,当
KingSCADA3.0进入运行系统,发生站点启动或退出事件时,系统会自动将该事
件信息记录到报警数据库中。
注:关于操作事件、登陆事件及站点事件的介绍请详见事件一节。
高级设置中的“磁盘缓存”和“内存缓存”主要是用来设置文件存储空间的,默认即可。
2.2.2报警库设置
报警库设置主要是用来配置报警数据库相关信息的,可以配置使用KingSCADA3.0默认的报警数据库或者是自己建立的数据库。
对于默认的报警数据库不需要用户建立(默认是Access数据库),是系统自动生成的并生成四个表格文件,保存在工程目录下:
Alarm:报警事件表格,记录所有的报警事件。
Operate:操作事件,记录所有的操作事件。
Enter:登录事件,记录所有的登录事件。
Station:工作站事件。
记录所有的工作站事件。
对于自己建立的数据库只需要用户手动建立数据库和ODBC数据源即可,数据库表格和表格中的字段由系统自动生成。
报警数据库配置对话框,如图4所示:
图4 报警数据库配置对话框
数据库选择:单击“默认DSN”项前的复选框,该框中出现‘√’表示选中,此时报警与事件信息被记录到KingSCADA3.0默认数据库中。
也可以单击按钮选择自己建立的数据库,并输入在建立数据源时设置的用户名和密码。
报警缓冲区:设置报警缓冲区的大小。
报警缓冲区是系统在内存中开辟的用户暂时存放系统产生的报警信息的空间,其大小是可以设置的,值的范围是1-3000,缓冲区大小的设置直接影响着报警窗显示的信息条数。
报警记录时间:设置报警库中记录保存的天数,超过天数的报警记录将被系统自动删除,保存天数为:1-999。
报警移除模式:报警信息移除模式分三种:
当确认后报警人工删除:当发生的报警信息被确认且恢复后,再次被确认后的信息将被系统自动从缓冲区中删除。
当确认后报警自动删除:当发生的报警信息被确认且恢复后将被系统自动从缓冲区中删除。
报警恢复后自动删除:当发生的报警信息恢复后,不论该信息是否被确认都会被系统自动从缓冲区中删除。
2.3报警显示
KingSCADA3.0工程在运行时产生的报警信息是通过报警窗口来显示的,KingSCADA3.0提供的报警窗口可以实现如下功能:
1)显示变量的当前报警状态,同一个变量的报警记录只显示最新记录。
2)显示当前缓存区中的所有历史报警记录,包括报警、恢复、确认三种记录。
注:当系统退出后,当前缓存中的报警记录将随之消失,重新运行后将新生成的报警记录存入缓存区。
3)可以按照条件查询报警库中的报警记录。
下面我们分别实现上述的三种功能。
2.3.1实时报警
新建画面“报警显示”,在图形开发系统中,执行“对象”菜单→“扩展图素”
→“报警窗”命令或者单击工具箱中的图标→鼠标移到画面中,光标呈‘+’状,按住鼠标左键并拖动绘出一报警窗口,如图5所示。
图5 报警窗口
选中报警窗口,在属性窗口中显示的是整个报警窗口的属性,如图6所示:
图6 报警窗口属性对话框
设置“WindowType”属性为“实时”,即该报警窗口是实时报警窗口,显示实时报警信息。
设置“WindowStyle”属性,显示标题、显示树、显示状态、显示工具栏。
设置“WindowStyle”属性,显示所有记录、显示记录、显示滚动类型、显示排序类型。
选中报警窗口→单击鼠标右键,在弹出的右键菜单中执行“编辑”命令→单击显示区,弹出显示区属性对话框,如图7所示:
图7 显示区属性对话框
找到“Columns”属性,单击该属性中的按钮,弹出对话框,如图8所示:
图8 列属性选择对话框
在该对话框中选择报警窗中显示的列项,通过“添加”按钮增加列项,通过“移除”按钮减少列项,如下图9所示。
图9 报警窗中显示的列项
2.3.2历史报警
在画面“报警显示”再添加一个报警窗,选中报警窗,在属性窗口中设置“WindowType”属性为“历史”,即该报警窗口是历史报警窗口,显示历史报警信息,包括以往的历史报警信息、报警确认信息和恢复信息,报警事件的来源是报警缓存区。
其他设置与实时报警窗类似。
2.3.3报警使能
在画面“报警显示”上面添加四个按钮,分别是“Button1”、“Button2”、“Button3”、“Button4”。
1)选择按钮“Button1”,在“鼠标”-“左键按下”添加如下脚本(如图10所示):if (\\local\pressure.AlarmEnable==true)
{
\\local\pressure.AlarmEnable=false;
Button1.Caption="AlarmEnable";
}
else
{
\\local\pressure.AlarmEnable=true;
Button1.Caption="AlarmDisable";
}
控制变量\\local\pressure的报警使能状态。
当该域置false时,变量即使满足报警条件也不会产生报警,只有将该域置true,变量才会产生报警,默认为true状态。
图10 按钮“Button1”脚本
2)选择按钮“Button2”,在“鼠标”-“左键按下”添加如下脚本:
if (\\local\pressure.HiEnable==true)
{
\\local\pressure.HiEnable=false;
Button2.Caption="HiAlarmEnable";
}
else
{
\\local\pressure.HiEnable=true;
Button2.Caption="HiAlarmDisable";
}
控制变量\\local\pressure的高限报警使能状态。
当该域置false时,变量即使满足报警条件也不会产生报警,只有将该域置true,变量才会产生报警,默认为true状态。
注意:高限报警使能是在报警使能域开的情况下,发生作用。
3)选择按钮“Button3”,在“鼠标”-“左键按下”添加如下脚本:
if (\\local\pressure.LoEnable==true)
{
\\local\pressure.LoEnable=false;
Button3.Caption="LoAlarmEnable";
}
else
{
\\local\pressure.LoEnable=true;
Button3.Caption="LoAlarmDisable";
}
控制变量\\local\pressure的低限报警使能状态。
当该域置false时,变量即使满足报警条件也不会产生报警,只有将该域置true,变量才会产生报警,默认为true状态。
注意:低限报警使能是在报警使能域开的情况下,发生作用。
4)选择按钮“Button4”,在“值输入”-“按钮输入”关联变量\\local\alarmctrl,如图11所示。
在定义变量时,我们在变量\\local\pressure报警约束里关联了变量\\local\alarmctrl,因此,当变量\\local\alarmctrl为true时,约束条件成立,即变量\\local\pressure不产生报警事件;当变量\\local\alarmctrl为false时,约束条件不成立,即变量\\local\pressure 产生报警事件。
注意:报警约束是在报警使能域开的情况下,发生作用。
图11 按钮“Button4”动画连接
2.4报警查询
2.4.1设置报警窗属性
新建画面“报警查询”,在画面上添加一个报警窗,选中报警窗口,设置“WindowType”属性为“查询”,即该报警窗是查询窗口,查询报警库中的报警事件,报警事件来源是报警库。
其他设置与上面的报警窗类似。
2.4.2设置查询条件
选中报警窗→单击鼠标右键→在弹出的菜单中执行“编辑”命令→鼠标单击左侧树型区→单击鼠标右键→在弹出的右键菜单中执行“新建条件”命令→弹出对话框,如图12所示:
图12 查询条件设置对话框
查询条件适用于查询窗口,在开发环境中您可以设置多种查询条件,可以设置按时间查询、按报警类型查询、按事件类型查询等等,同时还支持SQL查询,下面我们分别举例说明。
1)条件名称:查询历史报警
查询当前缓存区中在开始日期、开始时间和结束结束、结束时间内的所有历史报警
记录,如图13所示。
图13 查询条件-查询历史报警
2)条件名称:查询报警数据库
在“SQL查询”处打勾,在该对话框中输入SQL查询条件,如图14所示:
图14 查询条件-查询报警数据库
2.4.3运行时报警窗口的操作
1)工具栏的使用
在KingSCADA3.0运行环境中,用户可以通过工具栏中的工具对报警信息进行一系列操作,工具栏如图15所示:
图15 工具栏
确认:单击此命令对选定的报警信息进行确认操作,也可以双击报警信息进行确认。
过滤条件:单击此命令弹出过滤条件对话框,设置报警窗口中显示报警记录的条件。
打印:单击此命令,打印当前报警窗口。
查询条件:是否显示左边的查询树。
图例:是否显示图例。
刷新:单击此命令可以获得最新的报警信息。
滚动:是否进行实时报警的滚动,即自动刷新。
2)右键菜单
进入KingSCADA3.0运行系统,在实时报警窗显示区中选中报警信息,单击鼠标右键弹出右键菜单,如图16所示:
图16 运行中的右键菜单
确认:确认选中的报警记录
确认当前所有报警:确认报警窗口中的所有报警记录
隐藏选中记录:隐藏选中的报警记录
隐藏当前所有报警:隐藏报警窗口中的所有报警记录
删除:删除选中的报警记录
删除当前所有报警:删除报警窗口中的所有报警记录
在历史报警窗显示区中选中报警信息,单击鼠标右键弹出右键菜单,如图17所示:
图18 运行中的右键菜单
对于查询窗口,右键菜单如图19所示:
图19 查询窗口运行右键菜单
排序:单击此命令弹出排序设置对话框,您可以选择按某一字段列升序或降序排列(或者鼠标单击显示区中的任一字段列),如图20所示:
图20 排序设置对话框
3)查询操作
查询操作只对报警库查询窗口有效,双击图19中的“查询历史数据”,即可对报警事件进行查询。
您还可以在报警窗口的树型区中新建查询条件、编辑查询条件和删除查询条件,如图21所示:方法与开发环境中的操作方法一致。
图21运行中查询编辑查询条件
2.5报警窗的方法应用
报警窗在画面中是以对象存在的,可以提供一些方法属性来操作报警窗,我们在画面“报警查询”上面新建9个按钮,在按钮命令语言中写相应脚本,分别实现如下功能。
(1)打印预览
AlarmWindow1.Preview();//打印预览报警窗口
(2)打印报警窗口
AlarmWindow1.Print();//打印报警窗口
(3)查询报警记录
添加一个日期时间控件,功能是实现查询某天的报警记录。
在“查询报警记录”按钮里写如下脚本:
string whe;
string m;
long year;
long month;
long day;
year=UIDateTime1.Year;
month=UIDateTime1.Month;
day=UIDateTime1.Day;
if (month<10)
m="0"+StrFromInt(month, 10);
else
m=StrFromInt(month, 10);
\\local\where="Alarm"+StrFromInt(year, 10)+m+" where
AlarmTime>=#"+StrFromInt(year, 10)+"-"+
StrFromInt(month, 10)+"-"+StrFromInt(day, 10)+" "+"00:00:00"+"#"+" and AlarmTime<=#"+StrFromInt(year, 10)+"-"+
StrFromInt(month, 10)+"-"+StrFromInt(day, 10)+" "+"23:59:59"+"#";
AlarmWindow1.Query(\\local\where);
(4)降序
AlarmWindow1.SortBy("报警时间",1);//查询记录按“报警时间”降序排列
(5)升序
AlarmWindow1.SortBy("报警时间",0);//查询记录按“报警时间”升序排列
(6)分页状态下进行上下翻页的方法
AlarmWindow1.FirstPage();
stPage();
AlarmWindow1.PreviousPage();
AlarmWindow1.NextPage();
3. 注意事项
本演示工程只是简单的趋势曲线的应用例程,更深一步的学习使用请参考KingSCADA3.0的使用手册以及函数手册,或者参加北京亚控的培训班。
如有问题请致电亚控公司技术部。