基于Honeywell PKS的语音报警软件设计

来源 :网友世界 | 被引量 : 0次 | 上传用户:f360358188
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】随着油气田行业自动化水平的普及,美国Honeywell公司的PKS软件得到了广泛的应用。但它是一套成熟的软件,有时无法满足用户特殊的功能需求。语音报警软件作为PKS软件的辅助软件,可协助PKS软件实现更多的功能,包括数据异常分析判断、自定义语音及文字报警、报警点信息维护记录日志、定时语音播报、报警信息的查询和统计等等。
  【关键词】Honeywell PKS;语音报警;VB编程
  1.引言
  随着油气田行业自动化水平的普及,越来越多的油气田场站采用了SCADA系统来保证现场安全、平稳、经济的运行。SCADA是Supervisory Control And Data Acquisition的缩写,即数据采集与监控系统。它是以计算机为基础的生产过程控制与调度自动化系统,对现场的运行设备进行监视和控制,实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功能。目前美国Honeywell公司的PKS软件作为业内优秀的SCADA系统上位机软件被广泛的应用于油气田场站、长输管线、阀室,并取得了巨大的成果。但是由于PKS软件是一套成熟的软件,因此有时无法满足用户特殊的功能需求。语音报警软件作为PKS软件的辅助软件,可以从PKS软件中实时读取生产运行数据,并对其进行分析判断,若数据异常则产生报警,并根据报警级别及事前设定的声音或文字要求进行语音播报报警;完成报点信息的维护,对报警点信息维护记录实现日志;完成定时语音播报的设置、播报;实现报警信息的查询、统计。
  2.软件的总体设计与实现
  软件架构采用模块化结构设计,将所实现的各种功能分模块研发,最后汇总至统一程序中。根据设计要求,语音报警软件包含主要功能如下:读取PKS软件数据;语音报警;参数配置;系统/报警日志历史;用户权限。由于软件主要通过人机界面和用户交流,故采用Microsoft Visio Basic作为程序设计语言。窗体结构采用MDI窗体嵌套技术,分为如下窗体:
  2.1 MDI父窗体
  MDI父窗体负责软件整体框架、菜单栏显示、工具栏显示,以及部分通用代码的执行。主界面、状态栏、系统/报警日志历史画面等均嵌入到MDI父窗体内,而系统配置、登录等窗体均采用弹出的形式实现。
  2.2 主画面
  主画面主要用于显示报警点信息、报警状态信息、系统日志及报警日志,主要包含如下内容:
  报警点显示。这里的位号、参数要匹配PKS软件,采集上来的数据放在采样值一栏中,描述、低低报警、低报警、高报警、高高报警栏由用户自由组态,即软件可设置四条报警限。当软件运行后会根据组态数值判断是否产生报警,若产生报警,则会通过语音朗读在报警内容一栏中的内容,同时报警状态会显示出现新的报警信息,报警日志中会记录报警信息。若已达到报警状态,之后再采集到的数据仍然的该报警状态内,则不会产生新的报警,旧的报警也不会被清除。当现场条件恢复,采样值回到报警限以下时,报警清除,体现在报警状态栏中对应的报警信息将自动清除,并且下次再升到报警限上时重新产生报警。
  报警状态显示。显示当前有哪些数据已触发了报警,以及它们的触发时间、报警状态和触发报警值。启动报警后,若产生报警,则该栏会有相应的信息出现,停止报警时表格将会被清空,再次启动报警后若产生报警则该栏会继续出现相应的信息。
  系统日志栏中显示系统的运行情况,如系统启动、报警开启、进入配置界面等等,用户可根据系统日志中显示的内容判断目前系统的运行情况。报警日志栏中显示被触发的报警信息。与报警状态表格不同的是,这里的报警信息并不会因为报警的清除而被清除,用户可以在这里看到相应的报警情况。当然,这里的系统日志及报警日志显示的均为本次系统运行后所产生的日志,若用户需要查询之前的日志,可通过系统/报警日志历史界面查询。
  2.3 报警点配置画面
  在报警点配置画面中,用户可针对报警点进行组态。这里主要实现各种参数修改的功能,比如增加行按钮可增加一新行,删除行按钮可删除当前行;数据源IP地址可修改PKS服务器的IP地址;语音测试功能可点击“朗读”按钮测试当前行的报警内容,可帮助用户检验组态结果;报警次数下拉菜单中可选择报警产生后的播报次数等等。
  2.4 状态栏
  状态栏主要显示公司标识、系统时间、系统状态、目标PKS服务器计算机名称、用户权限等信息,它与主界面同时显示。
  2.5 系统/报警日志历史画面
  系统日志历史和报警日志历史的画面非常类似,区别仅在于各自储存的数据不同,用户在此可以看到全部的日志历史,但不包括已经归档的数据。这里主要实现的功能还包括:
  自动保存历史记录周期选项用于设置系统多长时间将收集的记录保存到日志中,自动归档周期用来实现将日志中的内容归档到txt文件中,文件路径由下面的归档路径指定。当运行归档后,日志里面的内容将被清空,同时生成相应的txt文件,之后日志将重新记录新信息。用户也可以通过点击“手动归档”按钮直接归档。
  2.6 其他画面
  除了以上主要的嵌入窗体外,另有部分弹出页面,如参数配置画面等,在此不做过多的叙述。
  3.读取PKS软件数据的设计与实现
  HONEYWELL PKS软件提供了相应的API函数[1]可以读取PKS软件中的数据,可采用调用该API函数的方法将数据读取过来,并做成全局变量交由其他模块使用。当用户点击“启动报警”按钮后,数据采集程序在后台运行,在软件初始化的时候报警点组态表格中的参数已经被赋给了相应的变量,这里将这些变量作为参数,并使用API函数读取PKS实时数据并填入报警点组态表格中,具体逻辑如下:
  (1)若没有报警点组态,采集程序直接停止;   (2)初始化数据,并利用rgetpnt函数查询是否报警点数据在PKS中存在;
  (3)若查询数据成功,则开启数据扫描定时器(Timer)和报警扫描定时器(Timer),可设定数据扫描间隔(并可通过人机界面配置)、报警扫描间隔(并可通过人机界面配置),若查询数据不成功,则采集程序停止,并报具体错误提示用户检查报警点组态;
  (4)开启数据扫描定时器(Timer)后,Timer内的程序将以固定时间循环运行,采用rGetval_Numb函数采集PKS的数据,并将数据放入至采样值一栏中,之后由报警扫描定时器(Timer)对数据进行分析判断,若数据超过报警线则产生相应报警。
  4.语音报警的设计与实现
  读取PKS软件数据成功后,程序开启报警扫描定时器(Timer)。Timer内的程序将以固定时间循环运行,从而实现每隔一段时间挨个对读取的数据进行分析判断,与设置的报警限比对,如果超过报警限则发出一条设置好的语音报警并在报警状态栏中产生一条报警状态,同时将该条报警信息记录到报警日志中。语音报警采用TTS技术实现语音朗读[2]。对于报警状态,采取的策略是当报警产生,在报警状态栏中会产生该条报警状态,用户只可查看不可消除。程序会继续循环判断,若产生报警的条件依然满足,则该条报警状态持续存在,若产生报警的条件不再满足,则删除该条报警状态。这样,我们就可以通过报警状态栏从而看到目前有多少报警点处于超限状态。而在报警日志中,由于只会记录不会清除,故我们可以通过查看日志的方式来了解到曾经发生的报警情况。同时,产生的日志会在可设置的周期内保存到日志历史中。
  5.参数配置的设计与实现
  整个软件需要设置与保存的参数,包括:(1)通讯参数,如PKS服务器名,连接周期等等;(2)报警点参数,如位号,描述,采样值,报警限,报警内容,报警次数等等;(3)日志参数,如日志归档路径、归档周期等等;(4)其他参数,如系统配置参数等等。
  语音报警系统采用最简单的txt文件来保存这些参数,程序启动时采用Open FileName For Input As #1语句读取txt文件,将各个参数读出来并赋予相应的全局变量,从而实现在程序中应用这些变量。若需要实现参数修改及保存,可先做相应的窗体和TextBox用于填写可修改的参数,然后设置一个保存按钮,当用户点击按钮时,产生一个事件,将修改后的参数利用Open FileName For Output As #1语句写入到相应txt文件中。这样,我们就可以实现参数配置了。
  6.系统/报警日志历史的设计与实现
  作为一套成熟的软件,日志功能是必不可少的,用户可以通过查看日志的方式来了解到之前究竟发生了什么。语音报警软件设计了两套日志,分别为系统日志和报警日志。其中,系统日志中记录了有关于系统运行的内容,比如何时系统启动,是否成功与PKS连接,如不成功错误代码是什么等等,报警日志中记录了有关报警的内容,比如何时何数据产生了什么级别的报警等等。在主界面中我们可以看到报警日志和历史日志,但是如果关闭了软件,那些日志就没有了。那么,我们就需要将当前的日志保存至日志历史中,这样才能在任何时候都可以查看到。我们依然采用了将当前日志写入txt文件的方式用来保存日志历史。为此,我们设置了一个自动保存历史记录周期的参数,该参数用于产生一个Timer,当Timer触发时将该周期收集到的最新日志加入到之前txt文件的末尾,这样,就实现了日志历史记录的保存。同时,为了防止txt文件过于庞大,设置了一个自动归档周期的参数,该参数同样的产生一个Timer,当Timer触发时将当前的txt文件复制保存至指定的路径中,同时清空当前的txt文件,这样用户可以通过在windows系统中查看归档文件的方式来查看之前的日志。
  为了便于用户查看系统/报警日志历史,语音报警系统专门设计了一个页面用于查看当前txt文件中的日志记录。页面内放置TextBox用于显示日志历史记录,读入txt文件的函数如下:
  Public Function openfile(ByVal FileName As String)As String
  Dim a As String
  Dim b
  Open FileName For Input As #1
  While Not EOF(1)
  Line Input #1,b
  If a=""Then
  a=b
  Else
  a=a & vbCrLf & b
  End If
  Wend
  Close #1
  openfile=a
  End Function
  7.用户权限的设计与实现
  为了保证用户使用起来更加安全可靠,需要对用户权限进行设置。语音报警软件采用了两级权限的方式,分别设置了oper和admin两个权限。其中oper用户仅仅可以进行浏览,查找日志等一般性操作,而admin权限则可以进行对组态的修改,包括报警点的添加和删除、报警限的修改、通讯参数的修改、归档的周期或者归档路径的修改等等。这个功能实现起来也非常容易,可以设置全局变量UserPermission。软件启动时默认为oper权限,用户可以通过登录窗口将oper权限改为admin权限,此时UserPermission赋值为admin。用户所有涉及到权限的操作,在执行前均会查看一下UserPermission的值,若该值为admin则操作继续执行,若该值为oper则当前操作停止执行,同时提示用户权限不足。同时,还需要提供修改密码窗口,可供用户修改admin密码,修改密码可以当时生效。
  参考文献:
  [1]Honeywell PKS knowledge builder CD.
  [2]赵文东,寇海洲.在VB中使用TTS技术实现语音的编辑和播放[J].洛阳工业高等专科学校学报,2003,02.
  作者简介:张世君(1982—),男,工程师,主要从事石油、天然气行业自动化控制系统的研究工作。
其他文献
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
在临床工作中,目前所应用的输液器上的过滤器的位置在输液管的下方,穿刺成功后,在松调节器时,常常会从过滤器中出现小气泡,由于离血管很近,在排气过程中不易将过滤器的小气泡
目的 探讨后路减压侧块钢板内固定治疗颈椎前、中柱完整的中央管型脊髓损伤的疗效.方法颈椎前、中柱完整的中央管型脊髓损伤患者98例,其中42例采用后路减压侧块钢板内固定治疗,其余56例采用非手术治疗,记录患者ASIA运动功能评分(AMS),并对入院时、治疗后1个月、6个月以及24个月时AMS评分进行比较.结果治疗后随访6个月至7年(平均28个月).手术组随访39例,失访3例,4例患者出现并发症,无死亡
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
听同学说凤岭水世界有很多让人“毛骨悚然”的项目,我对此一直满腹狐疑,心里既有一丝丝的恐惧,又有一丝丝的好奇与期待。今天,我就在老爸的带领下,前往大名鼎鼎的“凤岭水世界”一探究竟。  到了那里,果然让我“后悔莫及”,因为那些项目确实令人骨寒毛竖。瞧,那一座座高耸的滑梯,让人心惊胆颤,那一个个起伏的座椅,更让人心生惊惧,那一条条旋转的轨道,更是让人怕到连头皮都凉了三分。就在我犹豫不决时,爸爸鼓励我:“
期刊
我科在静脉输液中观察到1例注射用乳酸左氧氟沙星水针与穿琥宁针发生配伍反应,因发现及时,经更换输液管及液体后患者未出现不良反应,现报道如下.rn
以实例介绍了4种计算出粉率的方法,用此方法可清楚地反应一个时期面粉厂的经济效益、制粉效果、小麦性状,并且简便易行,易于操作,同时,指出了“无形”损失的几种原因.
目的了解深圳市某油墨制造企业存在的职业危害因素及其程度。方法采用职业卫生调查、现场检测和实验室检测相结合的方法进行调查。结果苯、萘、丙烯酸甲酯各设5个检测点,合格
叙述了出粉率、产量、电耗这3项经济指标对粉厂生产管理的重要性,提出了综合这3项经济指标的考评办法,并列举实例进行了分析,得出实行经济指标的考评后,使出粉率比规定基数平
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥