基于JMS消息的电力调度实时数据发布系统及方法 |
|||||||
申请号 | CN201510644036.8 | 申请日 | 2015-10-08 | 公开(公告)号 | CN105306345A | 公开(公告)日 | 2016-02-03 |
申请人 | 南京南瑞继保电气有限公司; 南京南瑞继保工程技术有限公司; | 发明人 | 钱锋; 陆鑫; 艾文凯; 周南菁; | ||||
摘要 | 本 发明 提供一种基于JMS消息的电 力 调度实时数据发布系统与方法 数据采集 模 块 采集 电网 运行的实时数据,发送给 数据处理 模块。数据处理模块进行数据分类,将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。数据缓存模块存储采集点当前时刻与上一时刻的实时数据。数据发布模块的第一发布单元将即时型数据序列化后,发送给JMS消息 服务器 ;数据发布模块的第二发布单元周期校验数据缓存模块中的实时数据,将满足条件的数据序列化后,发送给JMS消息服务器。JMS消息服务器将实时数据推送给数据订阅客户端。本发明可以实时发布电力调度各类型采集数据,数据格式简单,解析方便,保证与异构系统间数据交互的方便性和兼容性。 | ||||||
权利要求 | 1.一种基于JMS消息的电力调度实时数据发布系统,其特征在于,包括数据采集模块、数据处理模块、数据缓存模块、数据发布模块与JMS消息服务器;所述数据采集模块用于采集电网运行的实时数据并发送给数据处理模块;数据处理模块用于对收到的实时数据进行数据分类,并将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块;数据缓存模块用于存储采集点当前时刻与上一时刻的实时数据;数据发布模块用于将即时型数据序列化并发送给JMS消息服务器;数据发布模块还用于周期校验数据缓存模块中的实时数据,并将满足条件的实时数据序列化后发送给JMS消息服务器;JMS消息服务器用于将实时数据推送给数据订阅客户端。 |
||||||
说明书全文 | 基于JMS消息的电力调度实时数据发布系统及方法技术领域[0001] 本发明涉及电力自动化技术领域,具体而言涉及基于JMS消息的电力调度实时数据发布系统及方法。 背景技术[0002] 电力调度实时数据是观察电网实时运行状态、进行电力系统高级应用分析和控制的重要数据基础,具体采集点多、类型多样、数据变化快等特点。电力调度实时数据包括开关变位信号、保护动作信号、保护告警信息、母线电压、线路有功功率、发电机有功功率、线路无功功率等各种电气采集量。目前,电力调度实时数据主要是由电力调度主站系统中的数据采集模块从变电站的远动装置中采集得到,提供给其余电力系统模块和电力应用分析系统使用。 [0003] 通常情况下,电力系统高级分析模块及电力应用分析系统获取实时数据的方法包括: [0004] (1)前置转发方式:数据采集模块采用标准的前置规约如IEC80975-104规约、TASE2规约,将实时数据转发给其余模块和系统。缺点在于需要开发复杂的规约解析模块,工程配置量较大。 [0005] (2)文件方式:采数据采集模块采用文本文件的方式,将实时数据按照分钟级周期发送给其余模块和系统。缺点在于难以满足实时性要求。 发明内容[0006] 针对现有技术的缺陷和不足,本发明旨在提供基于JMS消息的电力调度实时数据发布系统及方法,可以实时发布电力调度各类型采集数据,数据格式简单,解析方便,保证与异构系统间数据交互的方便性和兼容性。 [0007] 为达成上述目的,本发明所提出的的技术方案如下:基于JMS消息的电力调度实时数据发布系统,其特征在于,包括数据采集模块、数据处理模块、数据缓存模块、数据发布模块与JMS消息服务器;所述数据采集模块用于采集电网运行的实时数据并发送给数据处理模块;数据处理模块用于对收到的实时数据进行数据分类,并将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块;数据缓存模块用于存储采集点当前时刻与上一时刻的实时数据;数据发布模块用于将即时型数据序列化并发送给JMS消息服务器;数据发布模块还用于周期校验数据缓存模块中的实时数据,并将满足条件的实时数据序列化后发送给JMS消息服务器;JMS消息服务器用于将实时数据推送给数据订阅客户端。 [0008] 进一步的,所述数据采集模块通过基于共享内存的消息队列方式,将采集的实时数据传递给数据处理模块;消息队列的最大长度可以根据当前缓存的消息个数进行动态调整;按照如下方法进行调整: [0009] 队列最大长度=(X0/X1+1)*X1 式(1)[0010] 式(1)中X0为当前缓存的消息个数,X1为常整数,取值范围为100~1000。 [0011] 进一步的,所述数据处理模块根据实时数据的电气类型和发布要求,将接收的实时数据分为两种类型:即时型数据和周期型数据;所述即时型数据包括开关动作信号、保护告警信息、变电站SOE事件;所述周期型数据包括线路有功功率、线路无功功率、母线电压。 [0012] 实时数据分类后,数据处理模块将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。 [0013] 进一步的,所述数据发布模块至少包括两个数据处理子模块:第一发布单元和第二发布单元;所述第一发布单元用于接收和发送即时型实时数据;第二发布单元用于校验和获取数据缓存模块里的实时数据,发送周期型实时数据。 [0014] 进一步的,所述数据发布模块的第一发布单元接收到即时型数据后,使用JSON格式对数据进行序列化,发送给JMS消息服务器; [0015] 序列化后的数据包格式定义如下: [0016] {"Instance":[ [0017] {"ID":"010000001","Name":"5013开关","Value":"Open"}, [0018] {"ID":"010000002","Name":"保护装置A","Value":"保护动作"}[0019] ……… [0020] ]} [0021] 其中,标签“Instance”表示本数据包是即时型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的实时数据值。 [0022] 进一步的,所述数据发布模块的第二发布单元,周期校验数据缓存模块中各个采集点,选出满足检验公式的采集点;检验公式定义如下: [0023] |X0-X1|≥δ 式(2) [0024] 式(1)中X0为采集点的当前实时值,X1为采集点的上一周期实时值,δ为变化阀值,一般取值范围为1.0~0.0001。 [0025] 进一步的,所述数据发布模块的第二发布单元使用JSON格式将满足公式2的采集点的当前实时值进行序列化,发送给JMS消息服务器,发送完毕后更新采集点的上一周期实时值,将上一周期实时值更新为当前实时值; [0026] 序列化后的数据包格式定义如下: [0027] {"Cycle":[ [0028] {"ID":"010000003","Name":"220kV母线电压 [0029] ","Value":"230.1"}, [0030] {"ID":"010000004","Name":"开滦线有功功率 [0031] ","Value":"56.2"} [0032] ……… [0033] ]} [0034] 其中,标签"Cycle"表示本数据包是周期型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的当前实时值。 [0035] 为实现上述技术目的,本发明采取的另一种技术方案为:基于JMS消息的电力调度实时数据发布方法,其特征在于包括以下步骤:包括数据采集模块、数据处理模块、数据缓存模块、数据发布模块与JMS消息服务器;数据采集模块采集电网运行的实时数据并发送给数据处理模块;数据处理模块对收到的实时数据进行数据分类,并将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块;数据缓存模块存储采集点当前时刻与上一时刻的实时数据;数据发布模块将即时型数据序列化并发送给JMS消息服务器;数据发布模块周期校验数据缓存模块中的实时数据,并将满足条件的实时数据序列化后发送给JMS消息服务器;JMS消息服务器将实时数据推送给数据订阅客户端。 [0036] 进一步的,所述数据采集模块通过基于共享内存的消息队列方式,将采集的实时数据传递给数据处理模块;消息队列的最大长度可以根据当前缓存的消息个数进行动态调整;按照如下方法进行调整: [0037] 队列最大长度=(X0/X1+1)*X1式(1) [0038] 式(1)中X0为当前缓存的消息个数,X1为常整数,取值范围为100~1000。 [0039] 进一步的,所述数据处理模块根据实时数据的电气类型和发布要求,将接收的实时数据分为两种类型:即时型数据和周期型数据;所述即时型数据包括开关动作信号、保护告警信息、变电站SOE事件;所述周期型数据包括线路有功功率、线路无功功率、母线电压。 [0040] 实时数据分类后,数据处理模块将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。 [0041] 进一步的,所述数据发布模块至少包括两个数据处理子模块:第一发布单元和第二发布单元;所述第一发布单元用于接收和发送即时型实时数据;第二发布单元用于校验和获取数据缓存模块里的实时数据,发送周期型实时数据。 [0042] 进一步的,所述数据发布模块的第一发布单元接收到即时型数据后,使用JSON格式对数据进行序列化,发送给JMS消息服务器; [0043] 序列化后的数据包格式定义如下: [0044] {"Instance":[ [0045] {"ID":"010000001","Name":"5013开关","Value":"Open"}, [0046] {"ID":"010000002","Name":"保护装置A","Value":"保护动作"}[0047] ……… [0048] ]} [0049] 其中,标签“Instance”表示本数据包是即时型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的实时数据值。 [0050] 进一步的,所述数据发布模块的第二发布单元,周期校验数据缓存模块中各个采集点,选出满足检验公式的采集点;检验公式定义如下: [0051] |X0-X1|≥δ 式(2) [0052] 式(1)中X0为采集点的当前实时值,X1为采集点的上一周期实时值,δ为变化阀值,一般取值范围为1.0~0.0001。 [0053] 进一步的,所述数据发布模块的第二发布单元使用JSON格式将满足公式2的采集点的当前实时值进行序列化,发送给JMS消息服务器,发送完毕后更新采集点的上一周期实时值,将上一周期实时值更新为当前实时值; [0054] 序列化后的数据包格式定义如下: [0055] {"Cycle":[ [0056] {"ID":"010000003","Name":"220kV母线电压 [0057] ","Value":"230.1"}, [0058] {"ID":"010000004","Name":"开滦线有功功率 [0059] ","Value":"56.2"} [0060] ……… [0061] ]} [0062] 其中,标签"Cycle"表示本数据包是周期型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的当前实时值。 [0063] 由以上本发明的技术方案可知,本发明的有益效果在于提供一种基于JMS消息的电力调度实时数据发布系统,可以实现电力调度采集数据的即时发布和周期发布,满足了数据发布的时效性要求。采用JSON格式封装数据包,数据格式简单,解析方便,便于数据接收端的开发和工程配置。同时,该系统采用JMS消息发布数据,保证与异构系统间数据交互的方便性和兼容性。 [0064] 本发明提供基于JMS消息的电力调度实时数据发布系统及方法,可以实现电力调度采集数据的即时发布和周期发布,满足了数据发布的时效性要求。该系统采用JSON格式封装数据包,数据格式简单,解析方便,便于数据接收端的开发和工程配置。同时,该系统采用JMS消息发布数据,保证与异构系统间数据交互的方便性和兼容性。附图说明 [0065] 图1为实现电力调度实时数据发布系统的系统结构图。 [0066] 图2为实现数据处理模块的流程图。 [0067] 图3为实现发布处理模块发布单元1的流程图。 [0068] 图4为实现发布处理模块发布单元2的流程图。 具体实施方式[0069] 下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。 [0070] 实施例1 [0071] 如图1-图4所示,本基于JMS消息的电力调度实时数据发布系统,包括数据采集模块、数据处理模块、数据缓存模块、数据发布模块与JMS消息服务器。所述数据采集模块采集电网运行的实时数据,发送给数据处理模块。数据处理模块进行数据分类,将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。数据缓存模块存储采集点当前时刻与上一时刻的实时数据。数据发布模块的第一发布单元将即时型数据序列化后,发送给JMS消息服务器;数据发布模块的第二发布单元周期校验数据缓存模块中的实时数据,将满足条件的数据序列化后,发送给JMS消息服务器。JMS消息服务器将实时数据推送给数据订阅客户端。 [0072] 参考图1所示,数据采集模块从变电站采集电网运行的实时数据,通过共享内存队列方式发送给数据处理模块。数据处理模块进行数据分类,将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。数据缓存模块存储采集点当前时刻与上一时刻的实时数据。数据发布模块的第一发布单元将即时型数据序列化后,发送给JMS消息服务器;数据发布模块的第二发布单元周期比较数据缓存模块中的实时数据,将满足要求的数据序列化后,发送给JMS消息服务器。JMS消息服务器将实时数据推送给数据订阅客户端。 [0073] 参考图2所示,数据采集模块从变电站采集电网运行的实时数据,通过基于共享内存的消息队列方式,将采集的实时数据传递给数据处理模块。其中,消息队列的最大长度可以根据当前缓存的消息个数进行动态调整。按照如下方法进行调整: [0074] 队列最大长度=(X0/X1+1)*X1 式(1)[0075] 式(1)中X0为当前缓存的消息个数,X1为常整数,取值范围为100~1000。 [0076] 数据处理模块根据实时数据的电气类型和发布要求,将接收的实时数据分为两种类型: [0077] (1)即时型数据,如开关动作信号、保护告警信息、变电站SOE事件等。 [0078] (2)周期型数据,如线路有功功率、线路无功功率、母线电压等。 [0079] 实时数据分类后,数据处理模块将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。 [0080] 参考图3所示,数据发布模块包括两个数据处理子模块:第一发布单元和第二发布单元。其中,第一发布单元用于接收和发送即时型实时数据。 [0081] 当发布单元1接收到即时型数据后,使用JSON格式对数据进行序列化,发送给JMS消息服务器,通过JMS消息服务器将数据包发送给数据订阅客户端。 [0082] 序列化后的数据包格式定义如下: [0083] {"Instance":[ [0084] {"ID":"010000001","Name":"5013开关","Value":"Open"}, [0085] {"ID":"010000002","Name":"保护装置A","Value":"保护动作"}[0086] ……… [0087] ]} [0088] 其中,标签“Instance”表示本数据包是即时型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的实时数据值。 [0089] 参考图4所示,数据发布模块包括两个数据处理子模块:第一发布单元和第二发布单元。其中,数据发布模块的第二发布单元用于发送周期型数据。 [0090] 首先,数据发布模块的第二发布单元周期校验数据缓存模块中各个采集点,选出满足检验公式的采集点。检验公式定义如下: [0091] |X0-X1|≥δ 式(2) [0092] 式(1)中X0为采集点的当前实时值,X1为采集点的上一周期实时值,δ为变化阀值,一般取值范围为1.0~0.0001。 [0093] 然后,数据发布模块的第二发布单元使用JSON格式,将满足公式2的采集点的当前实时值进行序列化,发送给JMS消息服务器,通过JMS消息服务器将数据包发送给数据订阅客户端。 [0094] 序列化后的数据包格式定义如下: [0095] {"Cycle":[ [0096] {"ID":"010000003","Name":"220kV母线电压 [0097] ","Value":"230.1"}, [0098] {"ID":"010000004","Name":"开滦线有功功率 [0099] ","Value":"56.2"} [0100] ……… [0101] ]} [0102] 其中,标签"Cycle"表示本数据包是周期型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的当前实时值。 [0103] 发送完毕后,数据发布模块的第二发布单元更新采集点的上一周期实时值,将上一周期实时值更新为当前实时值。 [0104] 综上所述,本发明的基于JMS消息的电力调度实时数据发布系统及方法,可以实现电力调度采集数据的即时发布和周期发布,满足了数据发布的时效性要求。该系统采用JSON格式封装数据包,数据格式简单,解析方便,便于数据接收端的开发和工程配置。同时,该系统采用JMS消息发布数据,保证与异构系统间数据交互的方便性和兼容性。 [0105] 虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。 [0106] 实施例2 [0107] 如图1-图4所示,本基于JMS消息的电力调度实时数据发布方法,包括以下步骤:包括数据采集模块、数据处理模块、数据缓存模块、数据发布模块与JMS消息服务器;数据采集模块采集电网运行的实时数据并发送给数据处理模块;数据处理模块对收到的实时数据进行数据分类,并将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块;数据缓存模块存储采集点当前时刻与上一时刻的实时数据;数据发布模块将即时型数据序列化并发送给JMS消息服务器;数据发布模块周期校验数据缓存模块中的实时数据,并将满足条件的实时数据序列化后发送给JMS消息服务器;JMS消息服务器将实时数据推送给数据订阅客户端。 [0108] 作为优选方案,所述数据采集模块通过基于共享内存的消息队列方式,将采集的实时数据传递给数据处理模块;消息队列的最大长度可以根据当前缓存的消息个数进行动态调整;按照如下方法进行调整: [0109] 队列最大长度=(X0/X1+1)*X1 式(1) [0110] 式(1)中X0为当前缓存的消息个数,X1为常整数,取值范围为100~1000。 [0111] 所述数据处理模块根据实时数据的电气类型和发布要求,将接收的实时数据分为两种类型:即时型数据和周期型数据;所述即时型数据包括开关动作信号、保护告警信息、变电站SOE事件;所述周期型数据包括线路有功功率、线路无功功率、母线电压。 [0112] 实时数据分类后,数据处理模块将即时型数据发送给数据发布模块,将周期型数据存储到数据缓存模块。 [0113] 所述数据发布模块至少包括两个数据处理子模块:第一发布单元和第二发布单元;所述第一发布单元用于接收和发送即时型实时数据;第二发布单元用于校验和获取数据缓存模块里的实时数据,发送周期型实时数据。 [0114] 所述数据发布模块的第一发布单元接收到即时型数据后,使用JSON格式对数据进行序列化,发送给JMS消息服务器; [0115] 序列化后的数据包格式定义如下: [0116] {"Instance":[ [0117] {"ID":"010000001","Name":"5013开关","Value":"Open"}, [0118] {"ID":"010000002","Name":"保护装置A","Value":"保护动作"}[0119] ……… [0120] ]} [0121] 其中,标签“Instance”表示本数据包是即时型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的实时数据值。 [0122] 所述数据发布模块的第二发布单元,周期校验数据缓存模块中各个采集点,选出满足检验公式的采集点;检验公式定义如下: [0123] |X0-X1|≥δ 式(2) [0124] 式(1)中X0为采集点的当前实时值,X1为采集点的上一周期实时值,δ为变化阀值,一般取值范围为1.0~0.0001。 [0125] 所述数据发布模块的第二发布单元使用JSON格式将满足公式2的采集点的当前实时值进行序列化,发送给JMS消息服务器,发送完毕后更新采集点的上一周期实时值,将上一周期实时值更新为当前实时值; [0126] 序列化后的数据包格式定义如下: [0127] {"Cycle":[ [0128] {"ID":"010000003","Name":"220kV母线电压 [0129] ","Value":"230.1"}, [0130] {"ID":"010000004","Name":"开滦线有功功率 [0131] ","Value":"56.2"} [0132] ……… [0133] ]} [0134] 其中,标签"Cycle"表示本数据包是周期型数据,标签"ID"表示采集点的ID号,标签"Name"表示采集点名称,标签"Value"表示采集点的当前实时值。 |