CN111078661B - 一种轨道交通综合监控系统数据预处理的方法 - Google Patents
一种轨道交通综合监控系统数据预处理的方法 Download PDFInfo
- Publication number
- CN111078661B CN111078661B CN201911125875.3A CN201911125875A CN111078661B CN 111078661 B CN111078661 B CN 111078661B CN 201911125875 A CN201911125875 A CN 201911125875A CN 111078661 B CN111078661 B CN 111078661B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- data object
- calculation
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/01—Detecting movement of traffic to be counted or controlled
- G08G1/0104—Measuring and analyzing of parameters relative to traffic conditions
- G08G1/0125—Traffic data processing
- G08G1/0133—Traffic data processing for classifying traffic situation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种轨道交通综合监控系统数据预处理的方法,其特征在于,包括以下步骤:步骤1、数据建模;步骤2、数据产生;步骤3、数据对象的计算;步骤4、数据比较;步骤5、条件判断;步骤6、状态判断;步骤7、数据分发。本发明提供了一种轨道交通综合监控系统数据预处理方法,通过此方法减少数据处理的节点,降低数据传送的频率,提高数据采样的精度,使系统高内聚低耦合。
Description
技术领域
本发明涉及一种轨道交通综合监控系统数据预处理的方法。
背景技术
作为解决城市交通拥堵、提高人民出行效率及安全性的有效途径,轨道交通成为了城市交通建设的重要部分。轨道交通综合监控系统作为高度集成的计算机系统,在轨道交通中占据着重要地位。综合监控系统(ISCS)将各个分散系统进行集成,实现各专业子系统信息互联互通,提高城市轨道交通的自动化水平,和应对各种突发事件的能力,增强人民群众的出行安全与舒适度。综合监控系统作为轨道交通运营管理的重要工具,具有数据采集与处理、监视控制、报警事件、系统联动、设备冗余切换等功能。
发明内容
本发明要解决的技术问题是:由于综合监控系统集中的专业系统众多、数据量巨大,所以存在处理数据节点繁多,数据重复查询处理,模块功能内聚不足,应用服务高度依赖实时库等不足。
为了解决上述技术问题,本发明的技术方案是提供了一种轨道交通综合监控系统数据预处理的方法,其特征在于,包括以下步骤:
步骤1、数据建模
为每个需要采集的数据建立数据对象,该数据对象包含了数据的相关属性,数据对象的集合称为数据对象列表,根据数据对象列表在本地缓存中生成数据对象,所有数据对象均具有通用属性;所述通用属性包括序号、标识、类型、数据类型、值、所属设备标识、更新时间,其中,序号表示数据对象在内部的索引;标识表示数据对象在外部的索引;类型包括数字量、模拟量、累积量,累积量是针对需要计算累积值的数据类型;数据类型包括bool、uint8、int8、uint16、int16、uint32、int32、uint64、int64、float以及double类型;值表示经过计算的数据值;所属设备标识表示该数据所属设备的外部索引;更新时间表示值属性被更新的时间;
步骤2、数据产生
采集模块读取所有采集数据的信息,将这些数据信息序列化并以序号和值的形式推送到数据预处理模块,数据预处理模块根据数据对象类型的不同,建立统一的数据模型属性,并将这些数据对象缓存在本地内存中,在处理这些不同类型的数据对象时使用数据对象中不同的属性进行运算和判断,数据预处理模块包括:数据计算、数据结果比较、条件判断、状态判断和数据分发5个子模块,所有数据将按顺序执行数据计算、结果比较数据比较、条件判断、状态判断和数据分发5个步骤;
当数据对象的类型为数字量时,所述数据预处理模块除了使用通用属性,还使用的属性包括:是否取反、是否防抖动、防抖动时限、是否采样,其中,是否取反:值取反;是否防抖动:防抖动;防抖动时限:在时限内数字量变位无效;是否采样:是否存入历史库;
当数据对象的类型为模拟量时,所述数据预处理模块除了使用通用属性,还使用的属性包括零点嵌位、采样死区、是否过滤遥测突变、突变百分比、基值,系数、工程上下限、是否采样,其中,零点嵌位:防止零点飘移;死区:在死区范围内不采样;是否过滤遥测突变:是否过滤;突变百分比:值的百分比;基值:相加的值;系数:相乘的值;工程上下限:对值的限制;是否采样:是否存入历史库;
当数据对象的类型为累积量时,所述数据预处理模块除了使用通用属性,还使用的属性包括零点嵌位、采样死区、基值、系数、是否采样,其中,零点嵌位:防止零点飘移;死区:在死区范围内不采样;基值:相加的值;系数:相乘的值;是否采样:是否存入历史库
步骤3、数据对象的计算
根据获取的数据,以序号作为索引号,从对象列表中检索出数据对象,根据数据对象的类型进行相应计算,并将计算的结果传递给数据比较模块进行数据比较;数据对象的计算包括以下步骤:
当数据对象类型为数字量时,根据是否取反进行取反计算,若进行取反时,当值=0时,值取1,当值=1时,值取0;若不进行取反时,值不变;计算结束后将计算值传递给数据比较模块进行数据比较;
当数据对象类型为模拟量时,首先进行零点嵌位值计算,若|值|<=零点嵌位值,值取0;若|值|>零点嵌位值,值不变;其次进行系数计算,新的值=值*系数;再次进行基值计算,新的值=值+基值;最后进行工程上下限计算,若值<工程下限,值取工程下限;若值>工程上限,值取工程上限;若值<工程上限并且值>工程下限,值不变;计算结束后将计算值传递给数据比较模块进行数据比较;
当数据对象类型为累积量时,首先进行零点嵌位值计算,若|值|<=零点嵌位值,值取0;若|值|>零点嵌位值,值不变;其次进行系数计算,新的值=值*系数;最后进行基值计算,新的值=值+基值;计算结束后将计算值传递给数据比较模块进行数据比较
步骤4、数据比较
根据数据对象的类型采用不同的比较方法将数据计算模块的计算结果与本地缓存的数据对象的值进行比较,当相等且本地缓存的数据对象的更新时间不为0时,该计算结果不参与后续处理流程,不相等时计算结果传递给条件判断模块进行条件判断;
步骤5、条件判断
接收满足数据比较的数据,根据该数据模型的相关属性以及计算结果判断该数据属于非法值还是合法值,当计算结果属于非法值时该数据的计算结果不参与后续处理流程,合法时数据的计算结果传递给状态判断模块;
步骤6、状态判断
接收满足条件判断的数据,根据该数据对象的标识属性从实时库Redis中获取该数据对象所属设备的挂牌状态以及该数据对象的操作状态,更新数据对象的缓存数据并且判断计算结果是否需要分发以及需要分发的对象;
步骤7、数据分发
数据分发的对象包括报警服务、实时库Redis以及历史库Influxdb;
当数据满足分发条件,分发至实时库Redis时,数据以hash key value的形式进行序列化分发;
分发至报警服务时,数据以timestamp key value的形式进行序列化分发;
分发至历史库Influxdb时,数据以table timestamp tag field的形式进行序列化分发。
优选地,步骤4中,所述比较方法包括以下步骤:
当数据对象类型为数字量时:
若计算值与缓存值不相等,将数据计算模块的计算值进行后续处理;
若计算值与缓存值相等,且本地缓存数据对象的更新时间不为0,数据计算模块的计算值不进行后续处理;
若计算值与缓存值相等,且本地缓存数据对象的更新时间为0,这是一次初始化比较,将数据计算模块的计算值进行后续处理;
当数据对象类型为模拟量时:
若|缓存值| - |计算值| <= 死区,且本地缓存数据对象的更新时间不为0,数据计算模块的计算值不进行后续处理;
若|缓存值| - |计算值| <= 死区,且本地缓存数据对象的更新时间为0,这是一次初始化比较,将数据计算模块的计算值进行后续处理;
若|缓存值| - |计算值| >死区,将数据计算模块的计算值进行后续处理。
当数据对象类型为累积量时:
若|缓存值| - |计算值| <= 死区,且本地缓存数据对象的更新时间不为0,数据计算模块的计算值不进行后续处理;
若|缓存值| - |计算值| <= 死区,且本地缓存数据对象的更新时间为0,这是一次初始化比较,将数据计算模块的计算值进行后续处理;
若|缓存值| - |计算值| >死区,将数据计算模块的计算值进行后续处理。
优选地,步骤5中,条件判断子模块根据数据对象的不同类型进行不同条件判断流程,包括以下步骤:
当数据对象类型为数字量时,进行是否防抖动判断:
防抖动时,当目前时间>(本地缓存对象的更新时间+防抖动时间),数据比较模块的计算值为合法值,进行后续处理;当目前时间<(本地缓存对象的更新时间+防抖动时间),数据比较模块的计算值不进行后续处理;
不防抖动时,将数据比较模块的计算值进行后续处理;
当数据对象类型为模拟量时,进行是否过滤遥测突变判断:
过滤遥测突变时,当突变百分比>(缓存值/计算值),数据比较模块的计算值为合法值,进行后续处理;当突变百分比<(缓存值/计算值),数据比较模块的计算值不进行后续处理;
不过滤遥测突变时,将数据比较模块的计算值进行后续处理;
当数据类型为累积量,不进行条件判断,将数据比较模块的计算值进行后续处理。
优选地,步骤6中,数据对象的状态判断含以下步骤:
从上一个处理流程接收满足条件判断的计算值,根据该数据对象的外部索引标识从实时库Redis中获取该数据对象所属设备的挂牌状态信息进行判断:
若数据对象所属设备有挂牌状态
当设备挂牌状态为控制禁止时,将计算值保存到本地缓存数据对象的值,并且将当前时间保存为本地缓存数据对象的更新时间,并将计算值的数据对象推送到实时分发队列以及报警服务分发队列;再对该数据对象是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
当设备挂牌状态为刷新禁止时,该数据对象不会保存到本地缓存,也不会推送到任何分发队列;
当设备挂牌状态为报警禁止时,将计算值保存到本地缓存数据对象的值,并且将当前时间保存为本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列;再对该数据对象是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
若数据对象所属设备没有挂牌状态
根据该数据对象的外部索引标识从实时库Redis中获取该数据对象的操作状态信息进行判断:
若数据对象没有操作状态
将计算值保存到本地缓存数据对象的值,并且将当前时间保存为本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列以及报警服务分发队列,再判断该数据对象是否采样,若是采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
若数据对象有操作状态
当操作状态为禁止控制时,将计算值保存到本地缓存数据对象的值,并且将目前时间保存到本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列以及报警服务分发队列,再根据该数据对象的是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
当操作状态为禁止刷新时,该数据对象不会保存到本地缓存,也不会推送到任何分发队列;
当操作状态为禁止报警时,将计算值保存到本地缓存数据对象的值,并且将目前时间保存到本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列,再根据该数据对象的是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
当操作状态为人工置数时,将操作状态信息中的人工置数值保存到本地缓存数据对象的值,并且将人工操作时间保存到本地缓存数据对象的更新时间,将本地缓存的数据对象仅推送到实时分发队列。
优选地,步骤7中,数据对象的分发含以下步骤:
实时库数据分发,将实时库分发队列中的数据对象取出,将数据序列化,根据数据对象的类型为hash赋值,当类型为数字量时,hash赋值为DI;当类型为模拟量时,hash赋值为AI;当类型为累积量时,hash赋值为ACC;将数据对象的标识赋值给key,将数据对象的值赋值给value;数据序列化后,通过hiredis将数据发送到实时库;
报警服务数据分发,将报警服务分发队列中的数据对象取出,将数据序列化,将数据对象的更新时间赋值给timestamp,将数据对象的标识赋值给key,将数据对象的值赋值给value,通过mq将数据发送到报警服务;
历时库数据分发,将历时库分发队列中的数据对象取出,当类型为数字量时,table赋值为DI;当类型为模拟量时,table赋值为AI;当类型为累积量时,table赋值为ACC;将数据序列化,根将数据对象的更新时间赋值给timestamp,将数据对象的标识赋值给tag,将数据对象的值赋值给value,通过数据接口将数据发送到历史库。
本发明提供了一种轨道交通综合监控系统数据预处理方法,通过此方法减少数据处理的节点,降低数据传送的频率,提高数据采样的精度,使系统高内聚低耦合。
在本发明提供的方法中,预处理的数据对象模型是根据类型,设备,状态,值等进行抽象建立统一的数据模型,采集模块的数据对象与预处理模块的数据对象通过序号(内部索引号)进行关联。实时库,历史库和报警服务中的数据对象通过标识(外部索引号)与预处理模块的数据对象进行关联。本发明将所有满足条件的数据对象进行变位分发,并且根据数据对象是否采样判断是否存入历史库中。数据预处理是整个综合监控系统数据处理的最前置部分,在这个模块采用变位分发的优点如下:1.大大减少了数据的传送,杜绝了非法值和没有变位的数据进行传送。2.提高了采样数据的准确性和精度,相较于定时采样策略,为其他服务应用提供了准确有效的信息。本发明在数据预处理模块进行分发工作,1.减少了需要消费实时变位数据的模块重复查询的工作量。2.减少系统模块之间的耦合性,使系统各模块之间更加独立。3.分散实时库数据过于集中的风险。
附图说明
图1为本发明的流程图;
图2为系统图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明提供的一种轨道交通综合监控系统数据预处理方法的流程图如图1所示,包括以下几个方面:数据建模,数据产生,数据计算,数据比较,条件判断,状态判断,数据分发。该预处理方法相关的系统图如图2所示。本实施案例中在应用服务器中部署数据库包括实时库(redis),历史库(influxdb),配置库(mysql),报警服务应用,在前置服务器中部署数据采集应用和预处理应用。
(1)配置MySql配置库
在配置库中配置与数据采集和预处理相关的属性,和预处理数据相关的通用属性包括序号,标识,类型,数据类型,值,所属设备标识,更新时间,根据类型不同再配置各类型相关的特殊属性,无论何种类型的数据对象其数据模型是一致的,根据不同的类型,使用不同的属性进行不同的处理流程。
其中预处理相关的配置表为define_point_tbl,数字量类型的数据配置为:序号:1;标识:jhl_pscada_35kv1hdlb_gzzxh;类型:1(数字量);数据类型:1(布尔);值:0;设备标识:jhl_pscada_35kv1hdlb;更新时间:0;是否取反:true;是否防抖动:false;防抖动时限:0;零点嵌位:0;采样死区:0;是否过滤遥测突变:false;突变百分比:0;基值:0;系数:0;工程上限:0;工程下限:0;是否采样:false。
模拟类型的数据配置为:序号:2;标识:jhl_pscada_35kv1hdlb_Ia;类型:1(模拟量);数据类型:4(整型);值:0;设备标识:jhl_pscada_35kv1hdlb;更新时间:0;是否取反:false;是否防抖动:false;防抖动时限:0;零点嵌位:1;采样死区:1;是否过滤遥测突变:false;突变百分比:0;基值:1;系数:10;工程上限:1000;工程下限:-1000;是否采样:true。
累积类型的数据配置为:序号:3;标识:jhl_pscada_35kv1hdlb_Kwh;类型:3(累积量);数据类型:6(双精度);值:0;设备标识:jhl_pscada_35kv1hdlb;更新时间:0;是否取反:false;是否防抖动:false;防抖动时限:0;零点嵌位:1;采样死区:1;是否过滤遥测突变:false;突变百分比:0;基值:0;系数:1;工程上限:99999999;工程下限:0;是否采样:true。
对应的在数据采集表中配置三条数据与预处理数据相对应,数字量采集数据配置modbus/tcp协议,功能码0x01,寄存器地址0x00,位偏移0,序号1。模拟量采集数据配置modbus/tcp协议,功能码0x03,寄存器地址0x0,序号2。累积量采集数据配置modbus/tcp协议,功能码0x03,寄存器地址0x01,序号3。
预处理模块和采集模块通过MySql提供的SDK和API读取配置库中的配置,为每个数据建立本地缓存。
(2)产生数据
数据采集模块发送modbus/tcp报文轮询设备获取实时值,本实例中设备回复功能码0x01,寄存器地址为0x00的值为0x00 01,根据协议解析可知,数字量采集序号1的值为true。数据采集模块将采集的数据序列化为(1,1)传递给预处理模块。
本实例中设备回复功能码0x03,寄存器地址为0x00的值为0x00 01,根据协议解析可知,模拟量采集序号2的值为1。寄存器地址为0x01的值为0x00 0A,根据协议解析可知,累积量采集序号3的值为10,数据采集模块将采集的数据序列化为(2,1),(3,10)传递给预处理模块。
(3)数据预处理
预处理模块接收数据采集传递的数据,本实例中收到(1,1)的序列化数据时,通过解析数据获取序号1,值为1。预处理模块通过序号1从本地缓存中检索出数据对象,首先判断该数据对象的类型为数字量,进行数字量的预处理计算。根据数据对象的是否取反将值进行取反,计算后值为0。将计算结果0与本地缓存中数据对象的值进行比较,两值相等,由于本地缓存中数据对象的更新时间为0,判断得出这是一次初始化预处理,进行条件判断,条件判断该值为合法值。进行状态判断,由于没有设备状态信息和操作状态信息,该值和目前时间保存到本地缓存的数据对象的值和更新时间属性中,最后由于数据对象为不采样,数据对象序列化后分发到实时分发队列和报警分发队列。实时库序列化后的数据为(DI,jhl_pscada_35kv1hdlb_gzzxh,0),报警序列化后的数据为(1569404463000,jhl_pscada_35kv1hdlb_gzzxh,0)。
本实例中收到(2,1)的序列化数据时,通过解析数据获取序号2,值为1。预处理模块通过序号2从本地缓存中检索出数据对象,首先判断该数据对象的类型为模拟量,进行模拟量的预处理计算,首先根据数据对象的零点嵌位为1进行计算,得出值为0,其次根据数据对象的系数为10进行计算,得出值为0,再次根据数据对象的基值为1进行计算,得出值为1,最后根据数据对象的工程上下限进行计算,得出值为1。将计算结果1,本地缓存中数据对象的值以及本地缓存中数据对象的死区进行运算比较,值的变化范围在死区内,由于本地缓存中数据对象的更新时间为0,判断得出这是一次初始化预处理,进行条件判断,条件判断为合法值。进行状态判断,由于没有设备状态信息和操作状态信息,该值和目前时间保存到本地缓存的数据对象的值和更新时间属性中,最后由于数据对象为采样,数据对象序列化后分发到实时分发队列,历史分发队列和报警分发队列。实时库序列化后的数据为(AI,jhl_pscada_35kv1hdlb_Ia,1),历史库序列化后的数据为(AI,1569404463000000000,jhl_pscada_35kv1hdlb_Ia,1),报警序列化后的数据为(1569404463000,jhl_pscada_35kv1hdlb_Ia,1)。
实例中收到(3,10)的序列化数据时,通过解析数据获取序号3,值为10。预处理模块通过序号3从本地缓存中检索出数据对象,首先判断该数据对象的类型为累积量,进行累积量的预处理计算,根据数据对象的零点嵌位为1进行计算,得出值为10,其次根据数据对象的系数为1进行计算,得出值为0,其次再根据数据对象的基值为0进行计算,得出值为10。将计算结果10,本地缓存中数据对象的值以及本地缓存中数据对象的死区进行运算比较,值的变化范围不在在死区内,进行条件判断,条件判断为合法值。进行状态判断,由于没有设备状态信息和操作状态信息,该值和目前时间保存到本地缓存的数据对象的值和更新时间属性中,最后由于数据对象为采样,数据对象序列化后分发到实时分发队列,历史分发队列和报警分发队列。实时库序列化后的数据为(ACC,jhl_pscada_35kv1hdlb_Kwh,10),历史库序列化后的数据为(ACC,1569404463000000000,jhl_pscada_35kv1hdlb_Kwh,10),报警序列化后的数据为(1569404463000,hl_pscada_35kv1hdlb_Kwh,10)。
(4)数据分发
预处理模块将实时分发队列中的数据通过hiredis的hset接口进行分发,本实例中共有三条需要分发的数据分别是(DI,jhl_pscada_35kv1hdlb_gzzxh,0),(AI,jhl_pscada_35kv1hdlb_Ia,1),(ACC,jhl_pscada_35kv1hdlb_Kwh,10)。三条数据通过hset接口进行分发写入redis实时库中,其中hash值为DI的表中,有一条field为jhl_pscada_35kv1hdlb_gzzxh,value为0的数据。hash值为AI的表中,有一条field为jhl_pscada_35kv1hdlb_Ia,value为1的数据。hash值为ACC的表中,有一条field为jhl_pscada_35kv1hdlb_Kwh,value为10的数据。
预处理模块将历史分发队列中的数据通过influxdb的sdk接口进行分发,本实例中共有两条需要分发的数据分别是(1569404463000000000,jhl_pscada_35kv1hdlb_Ia,1),(1569404463000000000,jhl_pscada_35kv1hdlb_Kwh,10)。
两条数据通过sdk接口进行分发写入influxdb历史库中,其中measurement为AI的表中,有一条timestamp为1569404463000000000,tag为jhl_pscada_35kv1hdlb_Ia,field为1的数据。其中measurement为ACC的表中,有一条timestamp为1569404463000000000,tag为jhl_pscada_35kv1hdlb_Kwh,field为10的数据。
预处理模块将报警分发队列中的数据通过mq进行分发,本实例中共有三条需要分发的数据分别是(1569404463000,jhl_pscada_35kv1hdlb_gzzxh,0),(1569404463000,jhl_pscada_35kv1hdlb_Ia,1),(1569404463000,hl_pscada_35kv1hdlb_Kwh,10)。
三条数据通过sdk接口进行分发写入mq中,通过报警服务应用从mq中读取这些数据进行解序列化后,这些数据分别为(1569404463000,jhl_pscada_35kv1hdlb_gzzxh,0),(1569404463000,jhl_pscada_35kv1hdlb_Ia,1),(1569404463000,hl_pscada_35kv1hdlb_Kwh,10)。
上述内容按步骤可以描述为:
第一步:部署mysql配置库,redis实时库,influxdb历史库,rabbitmq报警分发队列,报警服务应用,预处理应用,数据采集应用。
第二步:配置mysql配置库中的数据属性。
第三步:依次启动报警服务应用,预处理应用,数据采集应用。
第四步:对比实时库中数据的正确性。
第五步:对比历史库中数据的正确性。
第六步:对比报警分发队列中数据的正确性。
若第六步检测均正常,则实施部署成功。
Claims (5)
1.一种轨道交通综合监控系统数据预处理的方法,其特征在于,包括以下步骤:
步骤1、数据建模
为每个需要采集的数据建立数据对象,该数据对象包含了数据的相关属性,数据对象的集合称为数据对象列表,根据数据对象列表在本地缓存中生成数据对象,所有数据对象均具有通用属性;所述通用属性包括序号、标识、类型、数据类型、值、所属设备标识、更新时间,其中,序号表示数据对象在内部的索引;标识表示数据对象在外部的索引;类型包括数字量、模拟量、累积量,累积量是针对需要计算累积值的数据类型;数据类型包括bool、uint8、int8、uint16、int16、uint32、int32、uint64、int64、float以及double类型;值表示经过计算的数据值;所属设备标识表示该数据所属设备的外部索引;更新时间表示值属性被更新的时间;
步骤2、数据产生
采集模块读取所有采集数据的信息,将这些数据信息序列化并以序号和值的形式推送到数据预处理模块,数据预处理模块根据数据对象类型的不同,建立统一的数据模型属性,并将这些数据对象缓存在本地内存中,在处理这些不同类型的数据对象时使用数据对象中不同的属性进行运算和判断,数据预处理模块包括:数据计算、数据结果比较、条件判断、状态判断和数据分发5个子模块,所有数据将按顺序执行数据计算、结果比较数据比较、条件判断、状态判断和数据分发5个步骤;
当数据对象的类型为数字量时,所述数据预处理模块除了使用通用属性,还使用的属性包括:是否取反、是否防抖动、防抖动时限、是否采样,其中,是否取反:值取反;是否防抖动:防抖动;防抖动时限:在时限内数字量变位无效;是否采样:是否存入历史库;
当数据对象的类型为模拟量时,所述数据预处理模块除了使用通用属性,还使用的属性包括零点嵌位、采样死区、是否过滤遥测突变、突变百分比、基值,系数、工程上下限、是否采样,其中,零点嵌位:防止零点飘移;死区:在死区范围内不采样;是否过滤遥测突变:是否过滤;突变百分比:值的百分比;基值:相加的值;系数:相乘的值;工程上下限:对值的限制;是否采样:是否存入历史库;
当数据对象的类型为累积量时,所述数据预处理模块除了使用通用属性,还使用的属性包括零点嵌位、采样死区、基值、系数、是否采样,其中,零点嵌位:防止零点飘移;死区:在死区范围内不采样;基值:相加的值;系数:相乘的值;是否采样:是否存入历史库;
步骤3、数据对象的计算
根据获取的数据,以序号作为索引号,从对象列表中检索出数据对象,根据数据对象的类型进行相应计算,并将计算的结果传递给数据比较模块进行数据比较;数据对象的计算包括以下步骤:
当数据对象类型为数字量时,根据是否取反进行取反计算,若进行取反时,当值=0时,值取1,当值=1时,值取0;若不进行取反时,值不变;计算结束后将计算值传递给数据比较模块进行数据比较;
当数据对象类型为模拟量时,首先进行零点嵌位值计算,若|值|<=零点嵌位值,值取0;若|值|>零点嵌位值,值不变;其次进行系数计算,新的值=值*系数;再次进行基值计算,新的值=值+基值;最后进行工程上下限计算,若值<工程下限,值取工程下限;若值>工程上限,值取工程上限;若值<工程上限并且值>工程下限,值不变;计算结束后将计算值传递给数据比较模块进行数据比较;
当数据对象类型为累积量时,首先进行零点嵌位值计算,若|值|<=零点嵌位值,值取0;若|值|>零点嵌位值,值不变;其次进行系数计算,新的值=值*系数;最后进行基值计算,新的值=值+基值;计算结束后将计算值传递给数据比较模块进行数据比较;
步骤4、数据比较
根据数据对象的类型采用不同的比较方法将数据计算模块的计算结果与本地缓存的数据对象的值进行比较,当相等且本地缓存的数据对象的更新时间不为0时,该计算结果不参与后续处理流程,不相等时计算结果传递给条件判断模块进行条件判断;
步骤5、条件判断
接收满足数据比较的数据,根据该数据模型的相关属性以及计算结果判断该数据属于非法值还是合法值,当计算结果属于非法值时该数据的计算结果不参与后续处理流程,合法时数据的计算结果传递给状态判断模块;
步骤6、状态判断
接收满足条件判断的数据,根据该数据对象的标识属性从实时库Redis中获取该数据对象所属设备的挂牌状态以及该数据对象的操作状态,更新数据对象的缓存数据并且判断计算结果是否需要分发以及需要分发的对象;
步骤7、数据分发
数据分发的对象包括报警服务、实时库Redis以及历史库Influxdb;
当数据满足分发条件,分发至实时库Redis时,数据以hash key value的形式进行序列化分发;
分发至报警服务时,数据以timestamp key value的形式进行序列化分发;
分发至历史库Influxdb时,数据以table timestamp tag field的形式进行序列化分发。
2.如权利要求1所述的一种轨道交通综合监控系统数据预处理的方法,其特征在于,步骤4中,所述比较方法包括以下步骤:
当数据对象类型为数字量时:
若计算值与缓存值不相等,将数据计算模块的计算值进行后续处理;
若计算值与缓存值相等,且本地缓存数据对象的更新时间不为0,数据计算模块的计算值不进行后续处理;
若计算值与缓存值相等,且本地缓存数据对象的更新时间为0,这是一次初始化比较,将数据计算模块的计算值进行后续处理;
当数据对象类型为模拟量时:
若|缓存值|-|计算值|<=死区,且本地缓存数据对象的更新时间不为0,数据计算模块的计算值不进行后续处理;
若|缓存值|-|计算值|<=死区,且本地缓存数据对象的更新时间为0,这是一次初始化比较,将数据计算模块的计算值进行后续处理;
若|缓存值|-|计算值|>死区,将数据计算模块的计算值进行后续处理;
当数据对象类型为累积量时:
若|缓存值|-|计算值|<=死区,且本地缓存数据对象的更新时间不为0,数据计算模块的计算值不进行后续处理;
若|缓存值|-|计算值|<=死区,且本地缓存数据对象的更新时间为0,这是一次初始化比较,将数据计算模块的计算值进行后续处理;
若|缓存值|-|计算值|>死区,将数据计算模块的计算值进行后续处理。
3.如权利要求2所述的一种轨道交通综合监控系统数据预处理的方法,其特征在于,步骤5中,条件判断子模块根据数据对象的不同类型进行不同条件判断流程,包括以下步骤:
当数据对象类型为数字量时,进行是否防抖动判断:
防抖动时,当目前时间>(本地缓存对象的更新时间+防抖动时间),数据比较模块的计算值为合法值,进行后续处理;当目前时间<(本地缓存对象的更新时间+防抖动时间),数据比较模块的计算值不进行后续处理;
不防抖动时,将数据比较模块的计算值进行后续处理;
当数据对象类型为模拟量时,进行是否过滤遥测突变判断:
过滤遥测突变时,当突变百分比>(缓存值/计算值),数据比较模块的计算值为合法值,进行后续处理;当突变百分比<(缓存值/计算值),数据比较模块的计算值不进行后续处理;
不过滤遥测突变时,将数据比较模块的计算值进行后续处理;
当数据类型为累积量,不进行条件判断,将数据比较模块的计算值进行后续处理。
4.如权利要求3所述的一种轨道交通综合监控系统数据预处理的方法,其特征在于,步骤6中,数据对象的状态判断含以下步骤:
从上一个处理流程接收满足条件判断的计算值,根据该数据对象的外部索引标识从实时库Redis中获取该数据对象所属设备的挂牌状态信息进行判断:
若数据对象所属设备有挂牌状态
当设备挂牌状态为控制禁止时,将计算值保存到本地缓存数据对象的值,并且将当前时间保存为本地缓存数据对象的更新时间,并将计算值的数据对象推送到实时分发队列以及报警服务分发队列;再对该数据对象是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
当设备挂牌状态为刷新禁止时,该数据对象不会保存到本地缓存,也不会推送到任何分发队列;
当设备挂牌状态为报警禁止时,将计算值保存到本地缓存数据对象的值,并且将当前时间保存为本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列;再对该数据对象是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
若数据对象所属设备没有挂牌状态
根据该数据对象的外部索引标识从实时库Redis中获取该数据对象的操作状态信息进行判断:
若数据对象没有操作状态
将计算值保存到本地缓存数据对象的值,并且将当前时间保存为本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列以及报警服务分发队列,再判断该数据对象是否采样,若是采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
若数据对象有操作状态
当操作状态为禁止控制时,将计算值保存到本地缓存数据对象的值,并且将目前时间保存到本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列以及报警服务分发队列,再根据该数据对象的是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
当操作状态为禁止刷新时,该数据对象不会保存到本地缓存,也不会推送到任何分发队列;
当操作状态为禁止报警时,将计算值保存到本地缓存数据对象的值,并且将目前时间保存到本地缓存数据对象的更新时间,将计算值的数据对象推送到实时分发队列,再根据该数据对象的是否采样进行判断,若采样,将该数据对象推送到历史分发队列;若不采样,该数据对象将不会推送到历史分发队列;
当操作状态为人工置数时,将操作状态信息中的人工置数值保存到本地缓存数据对象的值,并且将人工操作时间保存到本地缓存数据对象的更新时间,将本地缓存的数据对象仅推送到实时分发队列。
5.如权利要求4所述的一种轨道交通综合监控系统数据预处理的方法,其特征在于,步骤7中,数据对象的分发含以下步骤:
实时库数据分发,将实时库分发队列中的数据对象取出,将数据序列化,根据数据对象的类型为hash赋值,当类型为数字量时,hash赋值为DI;当类型为模拟量时,hash赋值为AI;当类型为累积量时,hash赋值为ACC;将数据对象的标识赋值给key,将数据对象的值赋值给value;数据序列化后,通过hiredis将数据发送到实时库;
报警服务数据分发,将报警服务分发队列中的数据对象取出,将数据序列化,将数据对象的更新时间赋值给timestamp,将数据对象的标识赋值给key,将数据对象的值赋值给value,通过mq将数据发送到报警服务;
历时库数据分发,将历时库分发队列中的数据对象取出,当类型为数字量时,table赋值为DI;当类型为模拟量时,table赋值为AI;当类型为累积量时,table赋值为ACC;将数据序列化,根将数据对象的更新时间赋值给timestamp,将数据对象的标识赋值给tag,将数据对象的值赋值给value,通过数据接口将数据发送到历史库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911125875.3A CN111078661B (zh) | 2019-11-18 | 2019-11-18 | 一种轨道交通综合监控系统数据预处理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911125875.3A CN111078661B (zh) | 2019-11-18 | 2019-11-18 | 一种轨道交通综合监控系统数据预处理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078661A CN111078661A (zh) | 2020-04-28 |
CN111078661B true CN111078661B (zh) | 2023-08-01 |
Family
ID=70311218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911125875.3A Active CN111078661B (zh) | 2019-11-18 | 2019-11-18 | 一种轨道交通综合监控系统数据预处理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078661B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751023A (zh) * | 2008-12-12 | 2010-06-23 | 北京航空航天大学 | 用于多参数实时测量与控制系统的主控部分及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683445A (zh) * | 2015-01-26 | 2015-06-03 | 北京邮电大学 | 分布式实时数据融合系统 |
US10126736B2 (en) * | 2016-04-25 | 2018-11-13 | Rockwell Automation Technologies, Inc. | Industrial process historian time synchronization of source based timestamp event data |
CN109739816B (zh) * | 2018-10-12 | 2020-06-19 | 比亚迪股份有限公司 | 基于轨道交通的综合监控系统的数据存储方法和装置 |
CN109391629B (zh) * | 2018-11-23 | 2022-01-14 | 上海电科智能系统股份有限公司 | 轨道交通综合监控系统数据处理方法 |
-
2019
- 2019-11-18 CN CN201911125875.3A patent/CN111078661B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751023A (zh) * | 2008-12-12 | 2010-06-23 | 北京航空航天大学 | 用于多参数实时测量与控制系统的主控部分及方法 |
Non-Patent Citations (1)
Title |
---|
基于实时数据库的城市轨道交通综合监控系统实时数据压缩子系统研究;谢君;;上海电气技术(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111078661A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11470462B2 (en) | System, method and apparatus for building operations management | |
CN109951463A (zh) | 一种基于流计算和新型列式存储的物联网大数据分析方法 | |
CN112559475B (zh) | 数据实时捕获和传输方法及系统 | |
CN101090337A (zh) | 用于语义网更新的可伸缩分发的系统和方法 | |
CN111159189A (zh) | 一种车辆行驶轨迹查询方法、装置、设备和存储介质 | |
CN113420195B (zh) | 智能电表故障类型确定方法及系统 | |
CN114567650A (zh) | 一种数据处理方法及物联网平台系统 | |
CN106452815B (zh) | 一种信息化管理方法、装置及系统 | |
CN114500644A (zh) | 一种市政设施监测系统中的物联数据管理方法 | |
CN111078661B (zh) | 一种轨道交通综合监控系统数据预处理的方法 | |
CN114793250A (zh) | 一种可配置化的can数据解析方法 | |
CN110532313A (zh) | 数据交换装置 | |
US20100325244A1 (en) | Real time data network | |
CN110517493B (zh) | 一种跨区域机动车综合信息获取方法及系统 | |
CN112330209A (zh) | 一种基于大数据的信息系统风险预警系统 | |
CN111241101A (zh) | 一种分布式水利rtu数据采集系统及方法 | |
US20030115197A1 (en) | SNMP to CIM data mapper | |
CN114143224A (zh) | 数据传输质量监控方法及系统 | |
CN117857647B (zh) | 基于mqtt面向工业物联网的联邦学习通信方法和系统 | |
CN102063802B (zh) | 停车导航方法及系统 | |
CN114896232B (zh) | 一种支持多类型定位硬件数据采集及清洗的方法 | |
Wahl et al. | A CAN application layer for an experimental real time obstacle detection study | |
CN115842814B (zh) | 基于指令关联推送的物联网网关数据处理方法及装置 | |
CN118612280A (zh) | 用于业务数据的处理方法、装置及业务系统 | |
CN117033952B (zh) | 一种基于分布式的多数据源采集实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |