王常力 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
SHI, Bo (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
施波 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
SONG, Xiaoyu (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
杭州和利时自动化有限公司 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
WANG, Changli (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
王常力 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
SHI, Bo (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
施波 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
| 权 利 要 求 1、 一种分布式控制系统的事件处理方法, 其特征在于, 所述方法包括: 分布式控制系统 DCS服务器接收控制站上传的变量数据; 所述 DCS服务器判断所述变量数据是否产生新的事件, 如果是, 则 DCS 服务器根据预置事件处理规则, 对所述事件进行相应处理。 2、根据权利要求 1所述的分布式控制系统的事件处理方法, 其特征在于, 所述 DCS服务器在对所述事件进行相应处理之后, 所述方法还包括: 所述 DCS服务器存储对所述事件进行处理时所产生的实时数据。 3、根据权利要求 1所述的分布式控制系统的事件处理方法, 其特征在于, 所述 DCS服务器判断所述变量数据是否产生新的事件, 包括: 所述 DCS服务器比较所述变量数据对应的当前项值与已存储的项值是否 相同, 如果否, 则确定产生新的事件。 4、根据权利要求 1所述的分布式控制系统的事件处理方法, 其特征在于, 所述 DCS服务器根据预置事件处理规则, 对所述事件进行相应处理, 包括: 所述 DCS服务器获得当前事件对应的标识信息; 所述 DCS服务器根据所述标识信息, 获得预置的事件处理规则中对应所 述标识信息的处理规则; 所述 DCS服务器根据所述处理规则, 对当前数据进行相应处理。 5、根据权利要求 4所述的分布式控制系统的事件处理方法, 其特征在于, 所述预置的事件处理规则以配置文件的方式进行设置。 6、 根据权利要求 2-5 中任一项所述的分布式控制系统的事件处理方法, 其特征在于, 所述方法还包括: 所述 DCS服务器检测已存储的实时数据中对于同一事件是否存在重复写 入的数据, 如果是, 则将所述重复写入的数据进行删除。 7、 一种分布式控制系统的事件处理系统, 所述系统包括 DCS服务器和控 制站, 所述控制站用于向所述 DCS服务器上传变量数据, 其特征在于, 所述 DCS服务器包括: 接收模块, 用于接收控制站上传的变量数据; 判断模块, 用于判断所述变量数据是否产生新的事件; 事件处理模块, 用于如果确定产生新的事件, 则根据预置事件处理规则, 对所述事件进行相应处理。 8、根据权利要求 7所述的分布式控制系统的事件处理系统, 其特征在于, 所述 DCS服务器还包括: 实时数据存储模块, 用于在对所述事件进行相应处理之后,存储对所述事 件进行处理时所产生的实时数据。 9、根据权利要求 7所述的分布式控制系统的事件处理系统, 其特征在于, 所述判断模块进一步包括: 当前项值获取子模块, 用于获取所述变量数据对应的当前项值; 比较子模块, 用于通过比较所述当前项值与已存储的项值是否相同,如果 否, 则确定产生新的事件。 10、根据权利要求 7所述的分布式控制系统的事件处理系统,其特征在于, 所述事件处理模块进一步包括: 标识信息获取子模块, 用于获得当前事件对应的标识信息; 规则获取子模块, 用于根据所述标识信息, 获得预置的事件处理规则中对 应所述标识信息的处理规则; 执行处理子模块, 用于根据所述处理规则, 对当前数据进行相应处理。 11、根据权利要求 8-10中任一项所述的分布式控制系统的事件处理系统, 其特征在于, 所述系统还包括: 检验模块,用于检测已存储的实时数据中对于同一事件是否存在重复写入 的数据; 删除模块, 用于当确定存在重复写入的数据时,将所述重复写入的数据进 行删除。 |
本申请要求于 2010 年 4 月 20 日提交中国专利局、 申请号为 201010153089.7、 发明名称为 "一种分布式控制系统的事件处理方法及系统" 的中国专利申请的优先权, 其全部内容通过引用结合在本申请中。 技术领域 本发明涉及工业自动化控制技术领域, 更具体地说, 涉及一种分布式控制 系统的事件处理方法及系统。
背景技术
目前, DCS ( Distributed Control System , 分布式控制系统) 已经广泛应 用于核电、 火电、 化工等领域, 在这些领域中, 实时、 准确地上4艮"¾警事件能 及时通知工作人员赶到现场处理问题、排除隐 患,避免安全事故的发生。同时, 详细、 规范地记录各种事件, 可以有利于操作员清晰、 明了地监视系统的运行 情况, 快速分辨各种事件。 诸如此类, 不难看出, 提供实时、 高效、 稳定、 功 能完善的事件处理技术是 DCS系统中数据和事件实时处理的中心环节,其 所能 达到的技术指标和运行效果对工控现场安全具 有举足轻重的作用。
事件处理技术主要是根据控制站上传的现场采 集数据、算法运算结果以及 工程组态数据来判断产生的事件类型, 比如: 开关量的报警或变位、模拟量的 限值报警、 现场模块和通道的仪控故障。 同时, 也将提供事件的存储、 查询和 报警的确认等功能。
目前国内外大多 DCS系统都具有事件处理过程,但是其实现机制 和达到的 技术指标各不相同。 和本发明比较相近的实现方案如图 1所示, 在事件的产生 和处理过程中, DCS控制站程序根据采集到的现场数据以及工程 组态数据, 产 生相应的事件, 之后将事件号和变量数据发送给实时 DCS服务器。 实时 DCS服 务器在接收到事件号之后,调用事件处理函数 产生并记录事件, 同时响应操作 员站对事件的访问和操作。
控制站要将采集的现场数据、算法运算结果和 事件号一起上传给 DCS实时 处理任务。 虽然控制站的处理速度^艮高, 但是在控制站上进行事件判断, 无疑 降^ 了其处理效率。 同时, 事件号的上传增大了网络数据包, 这必然增加网络 负荷、 提高通信出错率。 此外, 实时处理任务在接收到上传数据后, 一方面要 处理变量数据并将其更新到数据库中,另一方 面要对事件进行处理和存储等操 作。 同时, 实时处理任务还要响应操作员对实时数据和事 件等请求。 这种将数 据管理和事件处理合二为一的设计模式严重影 响系统的性能, 无法满足 DCS 系统对实时处理、 稳定运行、 吞吐高效等性能要求。
发明内容
有鉴于此, 本发明实施例提供一种分布式控制系统的事件 处理方法及系统, 以 便提高分布式控制系统对于事件处理的效率。
本发明实施例提供一种分布式控制系统的事件 处理方法, 所述方法包括: 分布式控制系统 DCS服务器接收控制站上传的变量数据;
所述 DCS服务器判断所述变量数据是否产生新的事件 , 如果是, 则 DCS 服务器根据预置事件处理规则, 对所述事件进行相应处理。
优选的, 所述 DCS服务器在对所述事件进行相应处理之后, 所述方法还 包括:
所述 DCS服务器存储对所述事件进行处理时所产生的 实时数据。
优选的, 所述 DCS服务器判断所述变量数据是否产生新的事件 , 包括: 所述 DCS服务器比较所述变量数据对应的当前项值与 已存储的项值是否 相同, 如果否, 则确定产生新的事件。
优选的, 所述 DCS服务器根据预置事件处理规则, 对所述事件进行相应 处理, 包括:
所述 DCS服务器获得当前事件对应的标识信息;
所述 DCS服务器根据所述标识信息, 获得预置的事件处理规则中对应所 述标识信息的处理规则;
所述 DCS服务器根据所述处理规则, 对当前数据进行相应处理。
优选的, 所述预置的事件处理规则以配置文件的方式进 行设置。
优选的, 所述方法还包括:
所述 DCS服务器检测已存储的实时数据中对于同一事 件是否存在重复写 入的数据, 如果是, 则将所述重复写入的历史数据进行删除。
一种分布式控制系统的事件处理系统, 所述系统包括 DCS服务器和控制 站,所述控制站用于向所述 DCS服务器上传变量数据,所述 DCS服务器包括: 接收模块, 用于接收控制站上传的变量数据;
判断模块, 用于判断所述变量数据是否产生新的事件;
事件处理模块, 用于如果确定产生新的事件, 则根据预置事件处理规则, 对所述事件进行相应处理。
优选的, 所述 DCS服务器还包括:
实时数据存储模块, 用于在对所述事件进行相应处理之后,存储对 所述事 件进行处理时所产生的实时数据。
优选的, 所述判断模块进一步包括:
当前项值获取子模块, 用于获取所述变量数据对应的当前项值;
比较子模块, 用于通过比较所述当前项值与已存储的项值是 否相同,如果 否, 则确定产生新的事件。
优选的, 所述事件处理模块进一步包括:
标识信息获取子模块, 用于获得当前事件对应的标识信息;
规则获取子模块, 用于根据所述标识信息, 获得预置的事件处理规则中对 应所述标识信息的处理规则;
执行处理子模块, 用于根据所述处理规则, 对当前数据进行相应处理。 优选的, 所述系统还包括:
检验模块,用于检测所述已存储的数据中对于 同一事件是否存在重复写入 的数据;
删除模块, 用于当确定存在重复写入的数据时,将所述重 复写入的数据进 行删除。
同现有技术相比,本发明提供的技术方案通过 将判断事件的过程由传统的 控制站中移植到 DCS中的上层 DCS服务器中,从而能够减小控制站上传的网 络数据包, 提高网络传输的效率; 此外, DCS 服务器将实时变量数据管理和 事件处理功能进行合理划分,能够达到降低模 块间耦合、提高系统性能的目的。 附图说明 为了更清楚地说明本发明实施例的技术方案 ,下面将对实施例或现有技术 描述中所需要使用的附图作筒单地介绍,显而 易见地, 下面描述中的附图仅仅 是本发明的一些实施例,对于本领域普通技术 人员来讲,在不付出创造性劳动 的前提下, 还可以根据这些附图获得其他的附图。
图 1为现有技术中的提供的一种 DCS系统事件处理示过程示意图; 图 2为本发明实施例提供的一种 DCS的事件处理方法流程示意图; 图 3 为本发明实施例提供的一种事件产生以及事件 处理的整体流程示意 图;
图 4为本发明实施例提供的一种 DCS系统事件处理系统结构示意图; 图 5为本发明实施例提供的另一种 DCS系统事件处理系统结构示意图; 图 6为本发明实施例提供的又一种 DCS系统事件处理系统结构示意图。
具体实施方式 下面将结合本发明实施例中的附图,对本发明 实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是 全部的实施例。基于本发明中的实施例, 本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
现有技术中所述的事件处理实现流程中,控制 站要将采集的现场数据、算 法运算结果和事件号一起上传给 DCS实时处理任务。虽然控制站的处理速度很 高, 但是在控制站上进行事件判断, 无疑降低了其处理效率。 同时, 事件号的 上传增大了网络数据包, 这必然增加网络负荷、 提高通信出错率。 此外, 实时 处理任务在接收到上传数据后, 一方面要处理变量数据并将其更新到数据库 中, 另一方面要对事件进行处理和存储等操作。 同时, 实时处理任务还要响应 操作员对实时数据和事件等请求。这种将数据 管理和事件处理合二为一的设计 模式严重影响系统的性能, 无法满足 DCS系统对实时处理、 稳定运行、 吞吐高 效等性能要求。
为了解决现有技术中存在的上述缺陷,本发明 将判断事件的过程移植到上 层 DCS服务器处理, 这样可以减小控制站上传的网络数据包,提高 网络传输的 效率; 同时, DCS服务器将实时变量数据管理和事件处理功能 合理划分, 以求 达到降低模块间耦合、 提高系统性能的目的。
下面首先对本发明提供的 DCS的事件处理方法进行说明, 参照图 2所示, 为该方法的步骤流程示意图, 主要包括以下步骤:
步骤 201、 DCS服务器接收控制站上传的变量数据;
本发明技术方案中,控制站接收到实时的变量 数据后, 并不进行是否产生 新事件的判断处理, 而是将变量数据直接发送至 DCS服务器, 这样, 可以大 大减小控制站上传的网络数据包, 提高网络传输的效率, 因此, 能够缩短对变 量数据进行处理的时间。
步骤 202、所述 DCS服务器判断所述变量数据是否产生新的事件 , 如果是, 则 DCS服务器根据预置事件处理规则, 对所述事件进行相应处理。
可见, 根据实时的变量数据判断是否产生新的事件由 DCS服务器处理, 当 产生新的事件时,服务器会自动根据预置的事 件处理规则, 进行正确的事件处 理。 由于在判断是否产生新的事件的过程中, 需要结合具体的变量数据, 而实 时的变量数据正是存储在 DCS服务器中, 因此, 可以避免现有技术中的 DCS服 务器同控制站之间的变量数据访问, 从而, 依据高内聚低耦合的原则, 不仅能 减少进程间的通信, 而且, 事件处理效率大大提高。
在 DCS服务器在对所述事件进行相应处理之后,可 以根据具体应用场景需 要, 由 DCS服务器存储在所述事件处理过程中产生的历 史数据,存储方式可以 采用常用的日志形式。同时, DCS服务器能够响应外界对事件数据的查询请求 。
本发明实施例中, DCS 服务器判断所述变量数据是否产生新的事件的 实 现方式为: DCS 服务器比较所述变量数据对应的当前项值与已 存储的项值是 否相同, 如果否, 则确定产生新的事件。
为了便于系统数据管理,通常对系统运行过程 中的变量数据进行定义, 不 同变量数据属于不同的变量类型且对应不同的 项值, 不同项值对应不同的事 件。 因此, DCS服务器接收到控制站上传的变量数据后, 能够根据变量数据获 得其对应的当前项值, 同时比较当前项值与已存储的项值是否相同, 如果两者 不同, 则可以确定产生了新的事件。 此外, DCS服务器根据预置事件处理规则, 对所述事件进行相应处理的实 现方式可以为:
DCS服务器获得当前事件对应的标识信息;
DCS 服务器根据所述标识信息, 获得预置的事件处理规则中对应所述标 识信息的处理规则;
DCS服务器根据所述处理规则, 对当前数据进行相应处理。
这里所述的标识信息是为了区分不同的事件而 预置的,可以有不同的表示 方式, 例如: 传统的事件号, 对此, 本发明不做具体限定。
通常, 对应不同的事件, 具有不同的事件处理规则。 当 DCS服务器获得事 件的标识信息之后,便可根据预置的事件处理 规则中相应该标识信息的处理规 贝' J , 从而对当前事件进行相应的处理。
本发明实施例中的事件处理规则主要采用配置 文件的方式,可根据不用的 项目需求编写配置文件,避免程序的改动。这 种方式 4艮好的体现了软件的平台 性、 开放性、 扩展性。
当然, 在由 DCS服务器存储在所述事件处理过程中产生的实 时数据过程 中, 为了避免 DCS服务器对同一事件进行重复的历史数据记录 , 可以设置相应 的检测机制, 当确定存在重复写入的历史数据时,将所述重 复写入的历史数据 进行自动删除, 从而避免重复数据对 DCS服务器内存资源的浪费。
为了便于对本发明进一步的理解,下面结合本 发明的具体实施方式对本发 明进行详细描述。
根据采集信号的不同, 需要设定不同的变量类型 (比如开关量输入 /输出 类型、 模拟量输入 /输出类型等) 。 每一种变量类型包含多个项, 项也具有多 种数据类型, 比如: 开关量的当前值项为 bool类型、 模拟量的当前值项为 float 类型、 开关量的报警项为 bool类型、 模拟量的报警项为 BYTE类型。 定义为某 一变量类型的变量点可能代表一个现场设备, 该点的某一项可能代表设备的某 个数字信号或属性(比如温度、 报警属性等)。 表 1给出了 AVI4的变量类型以 及包含的部分项。
表 1 、 AVI4的变量类型
变量类 项名 数据类型 项说明 型
PN string 点名
SN BYTE 站号
DS string 点说明
AV float 当前值
MU float 量程上限
MD float 量程下限
AVI4 类
H2L float 高 2限值
型(模拟
H1L float 高 1限值
量 4 限
L1L float 低 1限值
值输入
L2L float 低 2限值
类型)
H2 BYTE 高 2限报警级
HI BYTE 高 1限报警级
L1 BYTE 低 1限报警级
L2 BYTE 低 2限报警级
ASS BYTE 限值报警状态
, , , , , , , , ,
DCS服务器负责接收控制站上传的变量数据, 将变量数据更新到数据库 中, 同时判断当前变量数据对应的新项值和已有的 原项值是否相同。如果项值 发生了变化, 则确定产生新的事件。
针对项值类型的不同, 判断事件产生的过程中将参照不同的项名事件 表: 例如: BOOL类型项名事件表和 BYTE类型项名事件表。 表 2给出了项值类型为 BOOL的事件示例, 此表定义的事件是项值在 0和 1 之间变化的事件。 如果 DCS服务器判断项值是 BOOL类型, 首先在 BOOL类型 项名事件表中查找该项所属变量点的类型。如 果存在, 判断该变量点类型是否 配置了此项的事件。 如果配置了, 则根据新项值获得对应的事件号。 比如: DCS服务器判断接收到的变量点的类型为 DVI2类型、 项名为 DVJLDV值由
0- >1 , 对照表 2即可以获得事件号为 21 (开关量 0->1变位事件); 如果 DV值由
1- >0, 对照表 1即可以获得事件号为 22 (开关量 1->0变位事件) 。 如果是 DVI2 类型的点的项 ALM由 0->1 ,对照表 2即可以获得事件号为 3 (开关量报警事件); 如果 ALM值由 1->0, 对照表 2即可以获得事件号为 4 (开关量报警恢复事件) 表 2 、 BOOL类型项名事件表示例
示例 说明
[Type_l]
TypeName=DVI2 ; DVI2变量类型
TypeNo=6 ;类型号
ItemNum=8 ;项个数。 表示 DVI2类型有 8个项发生变化会产 生事件
Iteml=DV
Iteml_0=22 ;项名。 该项是开关量的当前值输出项
Iteml_l=21 ;该项值发生变化, 并且由 1->0 时产生的事件号 为 22
Item2=ALM ;该项值发生变化, 并且由 0->1 时产生的事件号
Item2_0=4 为 21
Item2_l=3 ;项名。 该项是 警状态字项
• . . ;该项值由 1->0时产生的事件号为 4
;该项值由 0->1时产生的事件号为 3
表 3给出了项值类型为 BYTE的事件示例。 项的 BYTE数据中的每一位变化 ( 0和1 )都可以代表一类事件。 如果实时库管理任务判断项值是 BYTE类型, 首先在 BYTE类型项名事件表中查找是否配置了此项的 件。 如果配置了, 判 断 BYTE数据中的哪几位发生了变化, 然后根据变化位所对应的十六进制数和 变化值(0->1或 1->0 )获得事件号。 比如: 项 ASS是模拟量报警的状态字项, Vall=0xl表示 ASS的最低位发生变化, 当最低位由 0变为 1时, 将触发 19号事件 (模拟量低 4限报警) ; 当最低位由 1变为 0时, 将触发 20号事件 (模拟量低 4 限报警恢复) 。
BYTE类型项名事件表示例
示例 说明
[Item_l]
ItemName=ASS ;项名。 该项是模拟量报警状态字项, BYTE类
ValNum=8 型 (8位)
;项值个数。 表示 ASS项可以产生 8个事件
Vall=0xl
Vall_0=20 ; ASS项值的最低一位发生变化
Vall」=19 ;该位发生变化, 由 1->0时产生的事件号为 20
;该位发生变化, 由 0->1时产生的事件号为 19 \Ά\2-- =0x2 ; ASS项值的末二 -位发生变化
Val2_ —0=16 ;该位发生变化, 由 1->0时产生的事件号为 16
Val2_ —1=15 ;该位发生变化, 由 0->1时产生的事件号为 15
Val3: =0x4 ; ASS项值的末三 -位发生变化
Val3_ —0=12 ;该位发生变化, 由 1->0时产生的事件号为 12
Val3_ —1=11 ;该位发生变化, 由 0->1时产生的事件号为 11
BOOL类型项名事件表和 BYTE类型项名事件表都以配置文件的形式提 供。 由于各个项目的变量类型不同, 以及每一项的变化所代表的含义不同, 因 此每一个项目都可以根据自己的需求对项名事 件表进行配置,而不用修改程序 代码。
在获得事件号后, 需要在事件定义列表中查找对应的事件定义。 事件定义 列表定义了每一类事件的产生前提条件、事件 描述的输出内容及格式、事件进 入曰志 /表格的标识以及事件特殊处理标识等。 事件进入日志 /表格的标识以及 事件特殊处理标识是事件处理任务在处理事件 中所用到的。
表 4列出了开关量报警事件的定义和开关量变位 件的定义。 其中: 事件的产生前提条件可以规定此类事件触发的 条件范围。 比如: 开关量的 报警事件在没有报警级的情况下是不需要产生 的,通过判断这个前提条件, 在 生成事件的过程中就可以对报警事件起到屏蔽 限制作用;
事件描述的输出内容和格式是为了使事件的内 容统一规范,方便操作员清 晰明了地查看事件内容。 输出格式包括输出偏移、 输出长度以及输出方式。 输 出偏移规定了内容在事件描述的第几位开始输 出,输出长度规定了内容占多少 字节长度,输出方式是程序化的,程序中已事 先对所有规定的格式做好了处理; 事件进入日志 /表格的标识可以方便事件处理任务将该类事 写入哪类曰 志和表格的; 此处, 日志和表格均是用于记录事件处理过程中产生 的数据。
由于一些事件可能需要特殊处理,所以在事件 规范中加入特殊处理标识可 以为处理事件提供极大的方便。
表 4 事件定义列表示例
示例 说明
[EVENT_3]
EventName=Digital Alarm Begin ;3号事件定义
EventNo=3 ;事件名
ItemNum=2 ;事件号
Item_l=ItemName:DAT,OutOffset:0,OutWidth:0,OutForma ;处理的项个数 t:26,ShowCondition:-l ;报警级限制
Item_2=ItemName:KAPN,OutOffset:0,OutWidth:32,OutFor ; KA点名的输出定 mat: 8,ShowCondition:- 1 义
Format— ******************************** 才艮^^ ;描述的输出
EnterLog=0x8200 ;进入日志的标识
EnterTable=0x4000 ;进入表格的标识
SpecProc=0 ;特殊处理标志
AlarmLevelIName=DAT ;报警级项名
ItemName=ALM ;事件对应的项名
[EVENT_21] ;21号事件定义
EventName=Digital Change 0->l ;事件名 EventNo=21 ;事件号
ItemNum=3 ;处理的项个数
Item_l=ItemName:INLOG,OutOffset:0,OutWidth:0,OutFor ;产生日志限制 mat:36,ShowCondition:-l ;抖动对事件的限
Item— 2=ItemName:BC,OutOffset:0,OutWidth:0,OutFormat: 制
27,ShowCondition:- 1 ;描述的内容、格式
Item_3=ItemName:El,OutOffset:0,OutWidth:8,OutFormat: ;描述的输出
8,ShowCondition:-l ;进入日志的标识
Format^** ****** ;进入表格的标识
EnterLog=0x8000 ;特殊处理标志
EnterTable=0 ;事件对应的项名
SpecProc=0 • . .
ItemName=DV
事件定义列表也是以配置文件的形式提供的 。
现以表 3中的示例说明该表的使用方法。 假如: 当获得了事件号 3后, 步骤 1 : 在事件定义列表中查找事件号为 3的事件, 将事件号 3、 变量点名、 项名 (ALM ) 以及时间写入记录中;
步骤 2: 判断需要处理的数据库项的个数(ItemNum )是否不为 0, 如果不 为 0 , 逐项处理。 首先从数据库中读取每一项的值, 之后根据输出格式 ( OutFormat )进行处理。 第一项报警级 DAT的输出偏移和长度都为 0, 表示该 项的内容是不需要在事件描述中显示的。 输出方式 26在程序中已经做了处理, 26输出方式的处理含义是当从数据库读取的项 为 0时自动丟弃此事件。 其他 项处理类似。 第二项 KA点名 KAPN的输出偏移为 0、 输出长度为 32, 表示该项 的内容在事件描述(Format ) 的第 0位开始输出且占 32个字节的长度。 输出方 式 8也在程序中做了处理, 8输出方式的处理含义是读取的项值以字符串 格式 输出;
步骤 3: 由于该事件定义了报警级项 AlarmLevellName , 因此读取报警级 DAT的值, 将其写入事件记录中;
步骤 4: 根据变量点名从数据库中读取每一个事件都应 包括的信息: 点说 明、 点类型、 工艺系统名、 区域号、 站号等。 到此就产生了一条完整的事件记 录(事件记录的格式如表 5所示) 。
根据实际需要, 可以按照此事件定义的规范对事件进行拼接、 整理, 最后 得出一条完整的事件信息记录。
表 5 事件记录结构
DCS实时服务器的主要功能在于实时数据管理和 事件处理, 当实时数据管 理任务中产生事件后, 在将事件发送给事件处理任务的过程中, , 舍弃了方便 筒单的共享内存方式而采用了网络传输方式, 目的是减小模块间的耦合、提高 模块的独立性、 降低相互干扰的风险。
事件处理任务支持多种日志和表格, 根据项目的实际需求可配置日志 /报 警的种类、 数量以及每种日志 /报警的最大信息条数, 详见表 6。 在日志的种类 中必须存在一种类型一一 "全日志" 类型, 所有的事件必须进入此日志。 全日 志采用了 hash索引算法检测写入事件是否已经存在以防 重复写入,这大大提 高了系统的处理能力(系统规定 1秒可处理 1500个事件)。 由于报警的特殊性: 只能记录点的一个同类事件(一个点的报警和 报警恢复就是同类事件), 新事 件将替换该点的同类事件,因此报警表采用双 索引结构:时序索引和点名索引, 有利于报警的快速写入和报警的时序读取。 日志和报警表都支持循环写入事 件, 当达到满容量时, 新的事件记录将覆盖老的记录。 此外报警表写入还可以 配置成另一种方式: 表满容量时, 新事件将被丟弃。
表 6 日志和表格配置表
示例 说明
[fix]
lognum=6 ;曰志个数 tablenum=8 ;表格个数
[log_l]
logno=l ;曰志号 logname=CompleteLog ;日志名 (全日志) logrecnum=30000 ;曰志条数
[log_2]
logno=2
logname=SOE日志 logrecnum=4000
[table_l]
tableno=l ;表格号 tablename=艮警总列表 ;表格名 (报警总列表) tablerecnum=4000 ;表格条数
[table_2]
tableno=2
tablename^ 验报警列表 tablerecnum=600
事件处理任务在接收到事件数据后,对事件 进行处理。 首先根据事件记录 中的事件号, 在事件定义列表中获得进入日志 /表格的标识以及特殊处理的标 识。 进入日志 /表格的标识是十六进制数, 从高位开始判断, 如果此位为 1表示 事件将进入第几号日志 /表格。 比如: EnterLog=0x8200 , 从高位开始, 第 1位 和第 7位不为 0, 则事件将进入 1号和 7号日志。 在将事件写入日志 /表格后,事件 处理任务将对此事件的特殊要求做特殊处理。
图 3即是上述事件产生以及事件处理的整体流程 , 主要包括:
步骤 301、 控制站向 DCS服务器上传实时变量数据;
步骤 302、 DCS服务器获取所述变量数据对应的项值;
步骤 303、 DCS服务器判断所述变量数据对应的项值是否与 已存储的历史 项值相同, 如果否, 则继续步骤 304;
步骤 304、 DCS服务器根据所述项值查找项名事件表;
步骤 305、 DCS服务器判断是否产生新的事件, 如果是, 则继续步骤 306; 步骤 306、 DCS服务器根据事件定义列表确定产生何事件;
步骤 307、 DCS服务器进行事件记录;
步骤 308、 DCS服务器根据相应事件记录, 从事件定义列表中获得进入曰 志 /表格的标识和特殊处理标识;
步骤 309、 DCS服务器将所述事件写入制定的日志 /表格; 步骤 310、 DCS服务器根据特殊处理标识判断是否需要对所 述事件进行特 殊处理, 如果是, 则继续步骤 311 ; 如果否, 则继续步骤 312;
步骤 311、 DCS服务器对所述事件进行特定的特殊处理;
步骤 312、 DCS服务器对所述事件进行相应处理。
可见, 本发明实施例中的事件产生的判断在 DCS服务器中完成, 而不是在 控制器中,使得控制站不用上传事件号, 减小了控制站和服务器间传输的数据 包, 因此, 减少了控制站和服务器的数据通信, 降低了网络负荷。 由于在事件 产生过程中要向数据库读取实时变量数据, 因此将事件产生的处理放在 DCS 服务器中完成, 也减少了模块间的数据访问, 降低任务处理的复杂度, 同时也 降低了模块间的耦合度。 此外, 事件产生机制主要采用配置文件的方式, 可根 据不用的项目需求编写配置文件, 而不必对每一个项目都重写一个处理程序, 避免程序的改动, 这种方式提高了代码的重用性, 减小了开发周期, 很好的体 现了软件的平台性、 开放性、 扩展性。 相应本发明上述分布式控制系统的事件处理方 法实施例,该实施例提供了 一种分布式控制系统的事件处理系统, 如图 4所示, 为该系统的结构示意图, 该系统主要包括: DCS服务器 40和控制站 41 ,所述控制站 41用于向所述 DCS 服务器 40上传变量数据, 其特征在于, 所述 DCS服务器 40包括:
接收模块 401 , 用于接收控制站 41上传的变量数据;
判断模块 402, 用于判断所述变量数据是否产生新的事件;
事件处理模块 403 , 用于如果确定产生新的事件, 则根据预置事件处理规 贝' J , 对所述事件进行相应处理。
可见, 根据实时的变量数据判断是否产生新的事件由 DCS服务器处理, 当产生新的事件时,服务器会自动根据预置的 事件处理规则, 进行正确的事件 处理。 由于在判断是否产生新的事件的过程中, 需要结合具体的变量数据, 而 实时的变量数据正是存储在 DCS服务器中的 DCS实时数据库中, 因此, 可以 避免现有技术中的 DCS服务器同控制站之间的变量数据访问, 从而, 依据高 内聚低耦合的原则,不仅能减少进程间的通信 ,而且,事件处理效率大大提高。
优选的, 所述判断模块进一步包括: 当前项值获取子模块, 用于获取所述变量数据对应的当前项值; 比较子模块, 用于通过比较所述当前项值与已存储的项值是 否相同,如果 否, 则确定产生新的事件。
本发明实施例中, DCS 服务器判断所述变量数据是否产生新的事件的 实 现方式为: DCS 服务器比较所述变量数据对应的当前项值与已 存储的项值是 否相同, 如果否, 则确定产生新的事件。
为了便于系统数据管理,通常对系统运行过程 中的变量数据进行定义, 不 同变量数据对应不同的项值, 不同项值对应不同的事件。 因此, DCS服务器接 收到控制站上传的变量数据后, 能够根据变量数据获得其对应的当前项值, 同 时比较当前项值与已存储的历史项值是否相同 ,如果两者不同, 则可以确定产 生了新的事件。
所述事件处理模块进一步包括:
标识信息获取子模块, 用于获得当前事件对应的标识信息;
规则获取子模块, 用于根据所述标识信息, 获得预置的事件处理规则中对 应所述标识信息的处理规则;
执行处理子模块, 用于根据所述处理规则, 对当前数据进行相应处理。 通常, 对应不同的事件, 具有不同的事件处理规则。 当 DCS服务器获得事 件的标识信息之后,便可根据预置的事件处理 规则中相应该标识信息的处理规 贝' J , 从而对当前事件进行相应的处理。
优选的, 在本发明的另一个实施例中, 如图 5所示, 所述 DCS服务器还 可以包括: 实时数据存储模块 404, 用于在对所述事件进行相应处理之后, 存 储对所述事件进行处理时所产生的实时数据。
在 DCS服务器在对所述事件进行相应处理之后,可 以根据具体应用场景需 要,由 DCS服务器中的历史数据存储模块存储在所述事 件处理过程中产生的历 史数据, 存储方式可以采用常用的日志形式。
除此之外, 如图 6所示, 所述系统还可以包括:
检验模块 405 , 用于检测已存储的实时数据中对于同一事件是 否存在重复 写入的数据; 删除模块 406, 用于当确定存在重复写入的数据时, 将所述重复写入的数 据进行删除。
在由 DCS服务器存储在所述事件处理过程中产生的实 时数据过程中,为了 避免 DCS服务器对同一事件进行重复的数据记录, 可以设置相应的检测机制, 当确定存在重复写入的数据时,将所述重复写 入的数据进行自动删除,从而避 免重复数据对 DCS服务器内存资源的浪费。 对于系统实施例而言, 由于其基本相应于方法实施例, 所以描述得比较筒 单,相关之处参见方法实施例的部分说明即可 。 以上所描述的装置实施例仅仅 是示意性的,其中所述作为分离部件说明的单 元可以是或者也可以不是物理上 分开的,作为单元显示的部件可以是或者也可 以不是物理单元, 即可以位于一 个地方, 或者也可以分布到多个网络单元上。可以根据 实际的需要选择其中的 部分或者全部模块来实现本实施例方案的目的 。本领域普通技术人员在不付出 创造性劳动的情况下, 即可以理解并实施。
本领域普通技术人员可以理解实现上述实施例 方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完 成,所述的程序可存储于计算机 可读取存储介质中, 该程序在执行时, 可包括如上述各方法的实施例的流程。 其中,所述的存储介质可为磁碟、光盘、只读 存储记忆体(Read-Only Memory, ROM )或随机存储记忆体(Random Access Memory, RAM )等。
对所公开的实施例的上述说明,使本领域专业 技术人员能够实现或使用本 发明。 对这些实施例的多种修改对本领域的专业技术 人员来说将是显而易见 的,本文中所定义的一般原理可以在不脱离本 发明实施例的精神或范围的情况 下, 在其它实施例中实现。 因此, 本发明实施例将不会被限制于本文所示的这 些实施例, 而是要符合与本文所公开的原理和新颖特点相 一致的最宽的范围。
