iFix报警记录
- 格式:doc
- 大小:360.00 KB
- 文档页数:13
创建IFIX历史报警图解一、创建ODBC数据库:利用控制面板中的数据库(ODBC)创建一个Access数据库DCC.mdb,并存于C盘根目录下,具体步骤如图1,2所示:图1图2二、IFIX历史报警配置:在SCU的报警配置中启用相关选项,如图3;选中“报警ODBC服务”项后“修改”,弹出图4后选择“配置”,配置的参数具体如图5。
在配置完IFIX 历史报警与ODBC中创建的数据库的关联后,创建表FIXALARMS。
图3图4图5选择“报警配置”中的“高级”,并设置“操作员消息”和“配方消息”为“不发送”,如图6、图7(这一步很重要,否则IFIX将区分不开报警与消息)。
图6图7三、画面配置及代码:1、在报警历史画面中创建如下图8所示控件,时间提取控件需要选择菜单栏的“插入”菜单,然后选择“插入OLE”,从中添加“Microsoft Date and Time Picker”控件。
图82、画面中的控件名如图9所示:图93、画面中的VXData1.vxData属性如图10所示。
图104、画面中的VXGrid1. ADORecords属性如图11所示。
图115、画面中控件的具体代码如图12。
图126、附代码:Private Sub CFixPicture_Close()vxData1.DBDisconnectEnd SubPrivate Sub CFixPicture_Initialize()Me.DTp1 = DateAdd("d", -1, Now)Me.DTp2 = NowMe.DTp3 = NowMe.DTp4 = NowtimerDPT.Interval = 10000timerDPT.EnableEndTime = TruevxData1.DBConnectEnd SubPrivate Sub CommandButton1_Click()vxData1.QP1 = Format(DTp1.Value, "yyyy-mm-dd" & " " & Format(DTp2.Value, "HH:mm:ss"))vxData1.QP2 = Format(DTp3.Value, "yyyy-mm-dd" & " " & Format(DTp4.Value, "HH:mm:ss"))vxData1.AutoRefresh = TruevxData1.SQLCommand = " SELECT * FROM FIXALARMS WHERE (FIXALARMS.ALM_NATIVETIMEIN " _& "BETWEEN {ts 'QP1'} AND {ts 'QP2'}) ORDER BY FIXALARMS.ALM_NATIVETIMEIN DESC"vxData1.RefreshvxGrid1.RefreshEnd SubPrivate Sub timerDPT_OnTimeOut(ByVal lTimerId As Long)Me.DTp1 = DateAdd("d", -1, Now)Me.DTp2 = NowMe.DTp3 = NowMe.DTp4 = NowEnd Sub四、设置系统时间:在控制面板中选择区域和语言选项,将系统时间显示方式按图13所示配置。
iFIX使用手册iFIX使用手册目录1、概述1.1 介绍1.2 系统要求1.3 安装iFIX2、iFIX界面2.1 主界面2.2 工作区域2.3 菜单栏2.4 工具栏3、创建项目3.1 新建项目3.2 添加设备驱动3.3 配置通信3.4 导入标签4、设备连接4.1 创建设备4.2 配置设备参数4.3 设备连接状态5、图形化编辑5.1 新建画面5.2 添加控件5.3 编辑控件属性5.4 设定动画效果6、组件库6.1 控件库6.2 字库6.3 符号库7、运行与调试7.1 运行画面7.2 监视标签值7.3 调试功能8、报警与事件8.1 设置报警条件 8.2 定义报警消息8.3 报警处理9、数据存储9.1 历史数据记录 9.2 手动数据录入9.3 数据备份与恢复10、安全与权限控制10.1 用户与用户组10.2 权限设置11、监控与诊断11.1 故障诊断11.2 监控性能12、高级功能12.1 定时任务12.2 脚本编程12.3 接口与对接附件:本文档没有附件。
法律名词及注释:1、设备驱动:用于与外部设备进行通信的软件模块。
2、通信:指计算机之间或计算机与外部设备之间进行数据交换的过程。
3、标签:在iFIX中用于显示变量值的标识符。
4、画面:iFIX中可视化界面的一个页面,用于显示相关设备状态或操作控制界面。
5、控件:用于iFIX画面中显示数据、接受操作或显示系统相关信息的元素。
6、动画效果:在iFIX中实现数据显示动态效果的功能。
7、报警条件:用于设定在某一条件满足时触发报警。
8、报警消息:触发报警时显示的相关信息。
9、权限控制:用于设定用户或用户组对系统功能与数据的访问权限。
10、故障诊断:通过对系统运行状态的监控,快速诊断并解决故障。
11、性能监控:用于监测系统运行状态、性能指标的功能。
图1 报警信息、报警区域和报警服务的关系
1.2.3 报警缓存与分发
相对于SAC对数据块的扫描与处理并产生报警信息,报警分发传送时间“很长”。
为了提高SAC的性能,IFIX 利用缓存技术实现报警的异步处理,即SAC的扫描线程将扫描PDB过程中产生的存放在队列(先进先出的内存缓冲区)里的报警信息,供报警路由程序负责分发。
图2展示了IFIX 报警信息分发传递的过程。
说明如下:
①SAC从驱动程序或OPC Server中获取数据块的实
②报警路由程序(RoutingDLL)轮询将报警信息分发
SCADA上已启用的服务的报警队列中。
图2假设SCU 中启用了报警打印服务、报警文件服务、报警历史服务和报警网络服务,没有启用报警ODBC服务。
因此,报警路由程序将报警信息分发给对应的“AlarmPrinterQueues”、中的信息进行判断,且该报警的报警区域与文件服务的报警区域匹配,则将报警信息写入报警文件,否则删除该报警。
④对于网络报警服务,报警信息经过网络报警客户端传递给网络报警管理器,由网络报警管理器负责分发给不同客户端。
网络报警管理器根据ALMFilter.ini文件中的配置分发
图2 IFIX报警信息分发传递过程。
当过程值超过所定义的限值时,iFIX 将发送报警来通知操作员。
能使用SCU 的报警配置功能来启用和配置报警服务。
要配置报警,在SCU 工具箱中单击报警按钮。
有关如何配置报警功能,以下章节有详细的描述。
z启用报警服务 z自定义报警服务 z高级报警配置 z编辑报警区域数据库 z配置自动报警管理器 z 配置报警音响报警服务将提供自定义报警配置工具。
能很方便的启用任意一个或所有的报警服务,并且也能为每个服务定义设置来帮助实现报警策略。
下面是在报警配置对话框中可利用的报警服务:z报警打印机1,2,3,4 z报警一览服务 z报警文件服务 z报警历史服务 z报警网络服务(只在网络方式下激活) z报警启动队列(只在配置网络SCADA 服务器下激活) z 报警ODBC 服务要启用和配置服务,只需要双击它。
关于报警服务的更详细信息,请参阅实现报警和消息 手册。
下面部分将详细介绍如何使用SCU 来自定义报警服务。
通过自定义配置修改每个报警服务的一些设置。
每个报警服务都包含各自的配置对话框,并可以修改它。
您也可以从配置对话框中访问报警区域对话框。
有关每个报警服务对话框如何工作的详细信息请参阅实现报警和消息指南。
配置报警区域 配置报警区域对话框将控制哪些报警和应用消息能接收。
在配置对话框上通过单击区域按钮,能访问已配置配置报警启用报警服务自定义报警服务的任务对话框。
注意:也能执行高级报警区域配置功能。
更详细的信息请参阅高级报警配置部分。
更多有关报警区域信息请参阅实现报警和消息指南。
下面部分简要的描述了配置报警区域时如何使用配置报警区域对话框。
如何使用配置报警区域对话框SCU允许您从以下几个位置中来访问配置报警区域对话框:报警服务.在报警配置对话框中双击一个报警服务并单击区域。
出现一个启用特殊服务的已配置报警“区域”对话框。
公共报警区域.在报警配置对话框中,单击“高级”并单击“公共区域”。
出现一个为公共区域的已配置报警区域对话框。
定期删除IFIX报警记录的三种解决办法一、使用Sql server 代理实现定期删除。
说明:Sql Server Express 版本没有Sql Server 代理功能,因此不能使用此方法。
1)打开Sql Server配置管理器右键单击SQL Server 代理属性,在【服务】选项卡中将启动模式设置为“自动”。
2)打开【SQL Server Management Stuido】,右键单击Sql Server 代理选择“新建”→“作业”。
在名称输入框中输入自定义名称。
然后在“选择页”选择栏中点击“步骤”。
单击“新建”按钮。
步骤名称中输入自定义名称。
“数据库“下拉框中选择报警数据库。
在”命令(M)”文本框中输入删除报警记录的SQL 语句。
例如:删除30天前的历史报警记录。
DELETE FROM [dbo].[FIXALARMS] where ALM_NATIVETIMEIN <= DATEADD(d, -30, getdate());输入完成后点击确定按钮。
在“选择页“选项栏中点击计划【按钮】,然后点击新建。
在作业中输入计划名称,选择要执行的频率。
使用都根据实际需要进行设置。
最后点击“确定“按钮。
完成设置。
二、使用Windows 任务计划程序实现历史报警定期删除。
说明:SQL SERVER EXPRESS 版本可使用此方法。
1)打开【SQL Server Management Stuido】,新建查询。
在新建查询中输入定期删除报警记录的SQL语句。
例如:删除30天前的历史报警use IFIXAlarmgoDELETE FROM [dbo].[FIXALARMS] where ALM_NATIVETIMEIN <= DATEADD(d, -30, getdate())go最后另存为”DelData1.Sql”。
2)创建一个执行SQL语句的批处理文件。
然后输入以下语句。
sqlcmd -S 127.0.0.1 -U sa -P wang1982 -i e:\Deldata1.sql 最后另存为Test.bat3)创建一个VBS文件,用于隐藏执行BAT文件。
报警历史查询
数据库的创建(基于XP系统):
第一步:创建数据库
“控制面板”→“性能和维护”→“管理工具”→“数据源(ODBC)”
按“添加”生成以下画面
按“完成”
按“确定”跳出以下菜单框
数据库创建成功。
第二步:在IFIX建立“报警ODBC配置”“系统配置”→“报警配置”
按“修改”生成
按“配置”生成
数据库类型(Y)选择“ACCESS”
数据库标识符(I)选择“SHUJUYUAN”
表名(T):“SJY”按“现在创建表”生成
表示“成功创建表“。
注:SQL列表名可以写中文
第三步:在画面中显示历史数据
需要2个V isiconX数据控件、1个V isiconX复选框控件、1个V isiconX网格控件
对vxData1属性配置:
双击vxData1生成以下菜单框,选择“Microsoft Jet 4.0 OLE DB Provider”
在“数据库文件路径和名”里找到“SHUJUYUAN”的路径
按“Run SQL Wizard”对具体要求进行选择
对vxData2属性配置:
前一步同上,再加上一步,右单击选择“动画”进入“高级动画配置”做雷同以下的设置即可。
对vxCombo1属性配置:做雷同以下的设置即可
对vxGrid1属性配置:做雷同以下的设置即可
报表
注意事项:
1.Microsoft ActiveX Data Objects 2.1 Library 必须被引用(Office 2000) 2.Microsoft Excel 9.0 object libraries 必须被引用(Office 2000)
3.点名一定要是大写,因为IFIX自动生成的点名就是大写。
Intouchifix关于语⾳报警的⼀种设置思路⼯控项⽬最近升级改造,需要使⽤Intouch/ifix提供⼀个语⾳报警功能。
这个不像先前提供的单⼀的声⾳报警,业主⽅要求能详细的提供某某⽔泵或者是某某设备故障报警,这就要求我们这边对语⾳解析或者基础控件知识有⼀定的掌握了。
在实现上,⼀般有两种⽅法:第⼀种使⽤微软集成的Microsoft Speech SDK(TTS),这种开发成本⽐较⾼,需要⾃⼰对微软语⾳进⾏⼆次开发。
第⼆种就是直接使⽤成熟的轮⼦啦。
经过寻找(北京捷通)版本完美解决了这个问题。
它直接就封装成了OCX控件的形式,在intouch调⽤即可。
下⾯简单的介绍⼀下使⽤过程:1.安装jTTS Desktop5.0版本的软件(或者安装⾦⼭词霸2009 ⽜津版本)。
2.在intouch向导/控件安装查看,选择JTTS ActiveX Control进⾏安装。
3.在向导选择中进⾏调⽤,直接将相应的图标拖⼊到想要导⼊的画⾯中去。
4.编写脚本,对控件进⾏调⽤即可。
上述脚本,实现对⽔泵的三次重复告警,然后,将content内容数据写⼊数据库中,实现报警记录。
注:此⽅法有个令⼈⽆法解决的bug,因为是使⽤OCX控件的⽅式进⾏语⾳报警,所以该报警只对该画⾯有效果。
也就是说,实现上述的功能只能当viewer 在特定的画⾯中才能实现。
(不完美的⽅法,需要等抽空使⽤第⼀种⽅法进⾏开发试试)补充:在ifix下设置语⾳报警的基本思路:(完善上⾯所提bug,使⽤专门的故障报警弹窗即可)1.对需要报警的点进⾏事件调度编写:编写脚本,对触发事件进⾏数据库写⼊,以及弹窗显⽰:Dim conODBC As ADODB.ConnectionDim StrD As StringDim userid As StringDim username As StringDim groupname As StringSystem.FixGetUserInfo userid, username, groupnameStrD = Format(Now, "yyyy-mm-dd hh:mm:ss")Set conODBC = New ADODB.ConnectionconODBC.ConnectionString = "DSN=QPWS;UID=sa;PWD=;"conODBC.Open "QPWS", "sa", ""conODBC.Execute "insert into kaitingshijian (DateTimee,mingcheng,neirong,operator) values ('" + StrD + "','⼆期粗格栅污⽔泵1', '故障', '" + username + "')" conODBC.CloseOpenTGDPicture "故障报警.grf", "", "", "", "⼆期粗格栅1号污⽔泵.TGD"2.在故障报警.grf画⾯中,编写脚本:Private Sub CFixPicture_Initialize()playSound ("D:\alarm.wav")JTTS_ActiveX1.Play (Text2.Caption + Text1.Caption + Text2.Caption + Text1.Caption + Text2.Caption + Text1.Caption)playSound ("D:\alarm.wav")End Sub注:PlaySound()⽅法,使⽤的是user下⾃编写模块实现:Public Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" (ByVal IpszSoundName As String, ByVal uFlags As Long) As Long'flag uitzettenPublic Const SND_SYNC = &H0Public Const SNC_ASYNC = &H1Public Const SND_NODEFAULT = &H2Public Const SND_MEMORY = &H4Public Const SND_LOOP = &H8Public Const SND_NOSTOP = &H10Public Sub PlaySound(strSound As String)sndPlaySound strSound, SND_ASYNC Or SND_NODEFAULTEnd Sub⾄此,⼀个简单的ifix下的语⾳报警已经实现。
iFix监控系统中实现报警记录的存储和查询引言 2#联合泵站供水控制系统主要包括铸机供水控制系统、LF炉及RH炉供水控制系统、4300轧机供水控制系统和平流池控制系统。
采用上位机+PLC网络监控的方式,由上位机、施耐德昆腾系列PLC根据生产工艺组成控制网络系统,监控软件采用Intellution的Ifix。
iFIX提供的图形化的过程信息包括原始数据、计算数据、实时报警、变量字符串、点信息、实时趋势图、历史趋势图和变量状态等大量生产信息,操作人员根据这些信息进行分析和管理,并通过操作界面向数据库写数据,从而实现对现场生产工艺及设备的调节控制。
1 应用背景2#联合泵站铸机供水控制系统采用IFIX软件的报警系统,原设计报警信号只能实时显示,报警和操作记录不能保存,不便于优化操作和故障分析。
系统中由于数据采集量大,运行过程中可能出现大量的报警信息,运行人员不易发现真正的故障点,有时还可能出现忽略、丢失重要报警信息的情况。
因此良好的报警管理系统能及时发现和迅速排除故障,能准确查找故障原因,是系统安全稳定运行的有力保障。
2 解决方法对报警系统进行改造,将开关量变位、模拟量越限等数据变化存入到历史数据库中,然后再通过编写程序查询报警历史。
同时对报警信息进行分类优化,便于运行人员快捷的定位故障,及时采取措施,保证安全稳定生产。
下面就改造中的设计思想和方案进行介绍,并讨论具体实现中的关键技术问题。
2.1 报警记录的存储和查询由于iFIX的“报警历史”功能只能存储实时报警信息,要实现报警信息的存储,需要借助其它工具。
IFIX系统的报警信息可以记录到文本文件中,也可以通过ODBC记录到开放式数据库中,如ACCESS、SQL Server 等。
本次改造选用数据库的方式存储报警记录、运行记录,记录可以长期保存,随时查询并可打印。
2.1.1 IFIX数据库中配置报警信号及报警类型在IFIX 数据库中对需要报警的数据和信号进行配置,设置模拟量的报警值、报警类型,如上限、上上限、下限、下下限、变化率、最小偏差和最大偏差等;设置数字量的报警类型,如变位、闭合和打开等。
建立Ifix报警记录步骤说明1、在计算机D盘建立一Access文件,命名为IfixALM.mdb。
2、在计算机控制面板中选择“管理工具”,打开“数据源(ODBC)选择添加,选择下图蓝色部分,
出现下图,数据源名输入:IfixALMDB,
选择数据库,选择D盘上面建立的Access文件名:
3、建立一画面,取名almtest(可任意)
4、建立“查询设备号设定”OLE控件,步骤为:
在菜单栏选择“插入(I)”→OLE对象(0)…后出现“插入对象”对话框,这时选择Microsoft Forms 2.0 TextBox控制(此控件在计算机安装Microsoft Office后在此才可选择)。
此OLE对象的属性对象名为TextBox1.
5、用相同办法建立“查询报警描述”OLE控件,其属性对象名为TextBox2。
6、插入“日历”,步骤为:
在菜单栏选择“插入(I)”→OLE对象(0)…后出现“插入对象”对话框,这时选择
日历控件11.0,(此控件在计算机安装Microsoft Office后在此才可选择)。
这时出现:
右击日历,右击选择“编辑脚本”,输入“Calendar1.Visible = False”,使日历平时处于隐藏状态。
5、建立一“选择日期“按钮,右击选择“编辑脚本”,输入“Calendar1.Visible = True”,
这样当点击按钮时使日历可视。
6、用步骤2建立“查询日期设定”OLE控件,其属性对象名为TextBox3,右击点“动画…”,
这时出现:
:
点击“高级动动画”后出现:
点击“数据”,并且“数据转换”选择“对象”(因为日历为一对象),出现:点击“数据源”,出现“表达式编辑器”,选择数据源:
这样可将日历“Calendar1”的日期赋给“选择日期”OLE对象。
此时,下列已完成:
7、建立一“查询”按钮,其脚本为:
vxData1.DBDisconnect
vxData1.SQLCommand = "SELECT * FROM FIXALARMS WHERE (FIXALARMS.结束日期= " + "'" + TextBox3.Text + "'" + ") AND (FIXALARMS.标签名Like '%" + TextBox1.Text + "%') AND ((FIXALARMS.报警区域= 'G')or(FIXALARMS.报警区域= 'F') or (FIXALARMS.报警区域= 'E')) AND (FIXALARMS.消息描述Like '%" + TextBox2.Text + "%') ORDER BY FIXALARMS.结束日期DESC, FIXALARMS.结束时间DESC"
vxData1.DBConnect。
8、在ifix工具箱中选择“VisiconX数据控件”,插入此控件,
右击VisiconX数据控件,选择属性,
此时在“提供者”中选择下图中蓝色部分:
在“数据库”中,输入DNS名,这个地方为IfixALMDB.(参考步骤2)
在“记录源”中输入脚本:
SELECT
*
FROM
FIXALARMS
WHERE
(FIXALARMS.结束日期= 'QP1') AND (FIXALARMS.标签名Like '%QP2%') AND (FIXALARMS.报警区域= 'QP3') AND (FIXALARMS.消息描述Like '%QP4%') ORDER BY
FIXALARMS.结束日期DESC, FIXALARMS.结束时间DESC
插入按钮,,其脚本加入下例语句:Private Sub CommandButton1_Click() ShanChuBaoJing System.CurrentDate, 5
End Sub
9、在ifix工具栏中选择“VisiconX”控件
此时出现:
右击VisiconX控件,选择“动画”,出现下图,选择“高级动画”
此时出现:
数据转换选择“对象”
点击“数据源”:
点“确定”后,一切OK!
10、点击脚本中加入下列初始化语句:
Private Sub CFixPicture_Initialize()
Me.Calendar1.Value = System.CurrentDate
Calendar1.Visible = False
vxData1.DBDisconnect
End Sub
Sub ShanChuBaoJing(ShiJian As Date, BaoCunTianShu As Integer)
Dim rs As ADODB.Recordset
On Error GoTo CuoWu
Set rs = New ADODB.Recordset
rs.ActiveConnection = "Provider=MSDASQL.1;Extended Properties=" & "DSN=IFixALMDB;DBQ=D:\IfixALM.mdb;DriverId=25;FIL=MS
Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
rs.Source = "delete * from FIXALARMS where DateDiff( " & "'" & "D" & "'" & ",结束日期," & "'" & ShiJian & "'" & ") > " & BaoCunTianShu & " AND (FIXALARMS.报警区域='E' )"
If MsgBox("是否确定要删除" & BaoCunTianShu & "天前的报警历史记录", vbYesNo) = vbYes Then
rs.Open
Set rs = Nothing
End If
CuoWu:
Exit Sub
End Sub。