一种多源实时数据协议高速转换方法及装置与流程

阅读: 评论:0



1.本发明涉及一种多源实时数据协议高速转换方法及转换装置,属于工业互联网技术领域。


背景技术:



2.随着工业互联网技术的迅猛发展,设备运行的实时数据在工业互联网大数据的应用中起到了巨大作用。
3.长期以来,ot与it(operation technology and information technology)相互隔离,数据不能互通,大量工业现场的数据沉淀在车间、设备和传感器里,无法使用。
4.早期企业热衷于扎堆上平台,做功能,建模型,但随着时间推移,越来越多的企业认识到,没有鲜活数据的平台,不过是空中楼阁,无法产生效益,而工业现场的数据才是工业企业最值得重视的资产。然而,在数据接入环节,由于不同行业的工艺、设备差异巨大,如电力、矿产开采、石化、钢铁、有冶金、制药、电子、汽车、装备制造、机床、物流、包装等等,数据几乎没有可比性;即使在一个行业内,也存在多个环节、不同工艺。还由于产线内设备采购时间可能不同,有时前道设备和后道相隔几年,设备自动化、信息化程度产生隔代,较先进设备和落后设备同线生产,导致同一产线的多台设备不能连通现场总线,只能采取传统的电信号传递信息。
5.总而言之,接入的物联网硬件设备和数量日益增多,不同类别的设备运行环境不同,通信协议也不同,而上层应用需要通过从这些设备获取信息和对这些设备进行控制来实现统一和智能的管理。这需要相应的支撑平台可以适配各种异构环境,并且有接入海量硬件设备的能力。就提供大量的计算和存储能力而言,使用云计算技术是目前的主要方式。
6.但是,当设备采集的数据由设备直接传输给应用层时,海量原始数据会使得应用系统在处理过程中不堪重负。同时底层设备的变更也会牵动上层应用,导致应用层代码的频繁变动。物联网边缘设备的采用能够为上层应用开发屏蔽底层网络的复杂性,在边缘分析数据,并为云平台提供通用的数据源。数据协议转换正是物联网边缘设备的重要组成部分。
7.对于一般的物联网应用,例如自动抄表、环境监测、农业植保等等,虽然节点海量,但传感器采集的信息种类单一,所传信息量有限,往往要数分钟甚至数小时才发送一次信息,分析控制也相对简单,用于此类边缘设备的数据转换器目前有相应的解决方案,如以one m2m架构为背景,通过数据交互管道,将原始数据发送给资源虚拟化中间件,通过数据转换形成资源数据(参见文献:分布式异构无人系统资源虚拟化技术研究与验证,[d].电子科技大学,2021.doi:10.27005/dki.gdzku.2021.002997.),但并没有提及实时性的优化措施和性能分析以及结果。以物联网数据协议转换为主题的技术方案虽然提及实时需求(参见文献:面向工业物联网的消息中间件设计与实现[d].华中科技大学,2019.doi:10.27157/dki.ghzku.2019.003844.),但是对应的是每隔1小时才发送一帧的水表数据,不涉及“高速”实时。中国发明专利cn113242248b公开了一种工业异构网络高速协议转
换装置及并行处理单元,通过大页内存、高速缓存、数据包队列预取和宏编程等技术,完成工业现场与ipv6骨干网的协议转换;一方面,该设计专为ipv6定向转化,存在输出限制;另一方面对于提及的高速转化水平,缺少相应数据体现。中国发明专利cn111930666a公开了一种高速可配置的工业协议转换器,采用fpga芯片技术,通过提取协议帧的设备地址、功能码等信息,写入目标协议帧,完成对现场总线类数据的转换;该方法一方面存在输入仅支持“总线型数据”的限制,对于其他如以太网、无线数据不提供支持,另一方面对于原始数据的实时性和频度,以及“抽取+写入协议帧”的优化方法所能达到的高速水平,均未给出数据说明。
[0008]
对于无时无刻都需要输出的高速采样的工业现场数据,如对应电力系统、装备制造、钢铁冶炼、过程控制,视频监控等的物理量,则有不同于一般物联网应用的更高要求。主要有以下三点:一是输入信息源种类繁杂,不同设备和系统具有不同的采集方法,使用不同的协议和通信方式;二是实时处理要求高,因而对此类边缘设备中的数据转换装置提出了高速传输低时延的要求;三是由于市场上有多种商用平台存在,如果企业有不同的业务需求,需要将底层数据送往不同的应用平台,又需要转换器的输出能够适配多种云平台。


技术实现要素:



[0009]
本发明针对现有技术存在的不足,提供一种多源实时数据协议高速转换方法及转换装置,有效提升运行速度和系统吞吐量,实现多种实时数据传输协议之间的相互转换,转换时延达毫秒级别。
[0010]
实现本发明目的的技术方案是提供一种多源实时数据协议高速转换装置,它包括共享内存单元,多源实时数据产生单元,数据实时调度单元和多源实时数据消费单元;所述的共享内存单元包括静态信息区和动态信息区;静态信息区用于在装置启动后,存储从外部配置获取并加载采集点位的静态信息,为动态信息分配地址;动态信息区用于后续实时数据的存储、更新;所述的多源实时数据产生单元包括数据采集接口、内置输入通信协议库、数据生产模块;数据生产模块用于将接收的各类数据协议的数据包快速解封,高速入栈至共享内存单元,并向数据实时调度单元下发变化事件;所述的数据实时调度单元包括消费注册管理模块、变化事件管理模块;用于变化事件接收和变化事件调度,将经协议转换后的多源输入的实时数据的变化快速通知多源实时数据消费单元;所述的多源实时数据消费单元包括数据输出接口、内置输出通信协议库、数据消费模块;数据消费模块用于实现消费信息注册、监听变化事件、获取实时数据、经协议转换后分发给相应的输出应用平台。
[0011]
本发明技术方案还提供一种多源实时数据协议高速转换方法,包括如下步骤:实时数据高速入栈、实时数据高速调度和实时数据高速消费;所述的实时数据高速入栈包括如下步骤:(1)构建采集表在磁盘上构建一张采集表,包括4个属性:点位唯一标识pid、采集地址collectadress,采集类型parsetype、动态信息共享内存地址valueadress;
(2)采集点位信息预定义装置启动后,数据生产模块发起与设备的连接,由磁盘预加载采集表中的点位唯一标识pid、采集地址collectadress,采集类型parsetype至进程内存区;采用fnv算法,基于点位唯一标识pid定位静态信息区相应点位、获取动态信息共享内存地址valueaddress,完成内存采集表加载;(3)获取实时数据数据生产模块根据“采集地址collectadress + 采集类型parsetype”向设备发送数据请求,设备返回数据,经由内置于多源实时数据产生单元的输入通信协议库完成数据格式转换;(4)更新动态信息依据内存采集表中的动态信息共享内存地址valueaddress更新动态信息数据,完成点位的动态信息更新;所述的实时数据高速调度包括如下步骤:(1)消费点位信息预定义消费注册管理模块构建一张消费注册表,包含3个字段:点位唯一标识pid、消费状态status、钩子方法hook;其中,消费状态status为16bit,支持16路消费者订阅,从低位起,每bit按序表示一路消费者的消费状态,并与相应的钩子方法hook触发关联;(2)变化事件接收数据生产模块将本次完成动态信息更新的点位唯一标识pid列表的变化事件发出通知,由变化事件管理模块接收变化事件通知后,通过fnv算法定位至消费注册表中的相应记录中;(3)点位变化事件调度变化事件管理模块得到定位至消费注册表中的记录后,将消费状态status已注册的位置为1,触发相应的钩子方法hook,向消费模块发送钩子调用请求;(4)消费结果记录消费模块向变化事件管理模块返回取值结果,变化事件管理模块将消费成功的消费状态status相应位置为0,用于后续查询本次消费结果;所述的实时数据高速消费包括如下步骤:(1)构建消费表在磁盘上构建一张消费表,包括5个字段:消费者唯一标识cid、订阅点位唯一标识pid、动态信息共享内存地址valueaddress、上传地址uploadaddress、上传类型uploadtype;(2)消费点位预定义装置启动后,消费模块先发起与应用平台的连接,由磁盘预加载消费者唯一标识cid、订阅点位唯一标识pid、上传地址uploadaddress、上传类型uploadtype至进程内存区;再采用fnv算法,基于订阅点位pid定位静态信息区的点位、获取动态信息内存地址valueaddress并加载至内存消费表;基于消费表的每条记录,定义消费者唯一钩子方法hook,完成消费点位的预定义;所述的消费者唯一钩子方法hook用于后续变化事件管理模块触发消费模块对变化事件的接收和取值;
(3)消费信息注册经预定义后的消费点位主动向消费注册管理模块进行注册,发送订阅点位唯一标识pid和消费者唯一钩子方法hook,消费注册管理模块根据订阅点位唯一标识pid和钩子方法hook形成消费注册表;(4)钩子触发变化事件管理模块根据收到的由数据生产模块发出的变化事件通知,将已注册点位的状态位置1后,触发钩子方法hook的调用请求;(5)消费模块获取实时数据消费模块收到变化事件管理模块的钩子方法(hook)调用请求后,根据内存消费表中的动态信息共享内存地址valueaddress取值,获取实时数据,并向变化事件管理模块反馈取值结果,消费注册表状态位置0;(6)实时数据消费消费模块获取到实时数据后,经由内置于多源实时数据消费单元的输出通信协议库,根据内存消费表中的上传地址uploadaddress和上传类型uploadtype进行格式转换,并向应用平台主动推送变化数据。
[0012]
与现有技术相比,本发明的有益效果在于:1.本发明采用了自定义实时数据结构和共享内存方案,大大减少程序对数据的拷贝和对设备软硬件资源的占用,提升了运行速度和系统吞吐量。
[0013]
2.本发明对点位唯一标识pid采用了基于单向散列的fnv算法,与现有的树搜索相比可更快速准确定位共享内存地址,获取数据信息,并对数据记录进行查插入删除等操作。
[0014]
3.本发明在数据调度时采用了钩子方法,消费者一旦收到钩子触发,就可从自身当前任务中跳出来,直接执行钩子线程,与现有技术采用持续请求查询方式相比,能更快捕获到数据更新通知,从而提升了变化事件的调度速度。
[0015]
4.本发明提供的多源实时数据协议高速转换装置有机嵌入了共享内存单元,多源实时数据产生单元,数据实时调度单元和多源实时数据消费单元,可提供多种实时数据传输协议之间的相互转换,且转换时延仅为毫秒级别。
附图说明
[0016]
图1 是本发明实施例提供的多源实时数据协议高速转换装置的硬件结构示意图;图2是本发明实施例提供的多源实时数据协议高速转换装置的单元及模块结构示意图;图3是本发明实施例提供的多源实时数据协议高速转换方法中的自定义实时数据结构;图4是本发明实施例提供的多源实时数据协议高速转换装置数据生产单元的工作流程图;图5是本发明实施例提供的多源实时数据协议高速转换方法中采集表的结构;图6是本发明实施例提供的多源实时数据协议高速转换装置实时调度单元的工作流程图;
图7本发明实施例提供的多源实时数据协议高速转换方法中消费注册表的结构;图8是本发明实施例提供的多源实时数据协议高速转换方法中消费表的结构;图9是本发明实施例提供的多源实时数据协议高速转换装置数据消费单元的工作流程图;图10是本发明实施例提供的多源实时数据协议高速转换方法的工作流程图。
具体实施方式
[0017]
下面结合附图和实施例对本发明技术方案作进一步的阐述。
[0018]
实施例1在本实施例中,通过rj45接口分别与南向的电力系统a和电力系统b连接。采集如a相电流、b相电流、发电机保护装置报警、有功功率、无功功率、励磁电流、励磁电压等点位的实时信息,约每1ms产生1条数据。电力系统的数据经本实施例提供的装置转换后,分别发送至北向的消费者x(某集团大数据平台)和消费者y(某能源管理平台)。其中,数据生产和消费具体指:(1)南向数据生产者(a)电力系统a采用自定义m协议;采集200点,pid为1001~1200。
[0019]
1)“励磁电流”:点名=励磁电流;点位唯一标识pid=1100;采集地址=11.zb_excitationcurrent;采集类型=float64;点的类型=模拟量;点位上下限=120~150;2)“励磁电压”:点名=励磁电压;点位唯一标识pid=1200,采集地址=11.zb_excitationvoltage;采集类型=float32;点的类型=模拟量;点位上下限为30~36;(b)电力系统b采用modbus协议;采集300点,pid为1201~1500;1)“1f发电机保护1_机端a相电流”:点名=1f发电机保护1_机端a相电流;点位唯一标识pid=1400,采集地址=1.40001;采集类型=float32;点的类型=模拟量;点位上下限=30~36;2)“发电机a套保护装置闭锁”:点名=发电机a套保护装置闭锁;点位唯一标识pid=1500;采集地址=1.1;采集类型=bool;点的类型=开关量;(2)北向数据消费者:(a)消费者x某集团大数据平台采用kafka协议,消费点位包含:1)“励磁电流”:上传类型=float64;上传地址=16525;2)“励磁电压”:上传类型=float64;上传地址=16526;3)“1f发电机保护1_机端a相电流”:上传类型=float64;上传地址=18724;(b)消费者y某能源管理平台采用自定义协议n,消费点位包含:1)“励磁电流”:上传类型=float64;上传地址= fbha_huyh__as21;2)“1f发电机保护1_机端a相电流”:上传类型=float32;上传地址= fbha_devb__qh21;3)“发电机a套保护装置闭锁”:上传类型=bool;上传地址= fbha_devb__di41。
[0020]
本实施例选用的服务器配置为:128核 /2.3ghz/hygon c86 7291 32-core processor。
[0021]
参见附图1,它是本实施例提供的多源实时数据协议高速转化装置的硬件结构示
意图,它包括工业物联网输入输出接口、磁盘存储器、内存、运算器和控制器。
[0022]
参见附图2,为本实施例提供的多源实时数据协议高速转换装置的单元及模块结构示意图;它包括共享内存单元,多源实时数据产生单元,数据实时调度单元和多源实时数据消费单元。
[0023]
数据产生单元用于支持通过ai、di、rs232、rs485、rj45、can、plc总线等信号接口接收实时数据,内置包括450+主流控制系统协议的协议库,包括传统控制网络协议、工业以太网协议、工业无线网协议、现场总线协议、控制系统通信协议,如:siemens、ab、schneider、mitsubishi、omron、abb、fanuc、opc-da、opc-ua、ethernet/ip、iec-61850、iec60870-5-101/103/104、mqtt、kafka、http 等,可以快速将接收的各类数据协议的数据包输入至数据高速转换单元。
[0024]
实时调度单元用于提供一套数据高速转换的优化方法,将多源输入的实时数据进行协议转换后快速分发给相应的输出对象。
[0025]
数据消费单元用于支持通过rs232、rs485、rj45、wifi等信号接口发送实时数据;由内置协议库完成对如opc-ua、iec104、hj212、mqtt、http、kafka等的数据协议格式转换,支持多通道快速将各类协议的数据包分发至第三方消费者。
[0026]
本实施例提供的多源实时数据协议高速转换装置,采用自定义实时数据结构的方法,将采集点位信息分为静态信息及动态信息。静态信息指点位基本信息,静态信息包括动态信息共享内存地址valueaddress、偏移量offset、长度length、点位类型type,动态信息指随时间推移发生变化的属性信息,包括时间(4byte)、值(4byte)、状态(2byte)信息。本实施例将所有采集点位信息以这种自定义数据结构形式加载至共享内存单元。
[0027]
参见附图3,它是本实施例提供的自定义实时数据结构的示意图。
[0028]
在本实施例中,静态信息经过外部配置后是确定不变的,这将大大减少数据的流动量。同时,通过采用共享内存方式,不需要通过系统调用或其它需要切入内核的过程来完成,与访问进程独有的内存区域一样快。采用共享内存也可大大减少程序对数据的拷贝和资源占用,有利于提升运行速度和系统吞吐量。
[0029]
本实施例各单元的工作流程如下:1.数据产生单元本实施例中,静态信息经外部配置后存储在磁盘。装置启动后,将所有静态信息加载到内存。同时,为动态信息申请固定大小动态内存,用于存储点位实时动态信息,并将申请地址赋值共享内存静态信息区中的动态信息内存地址相关字段,从而使得后续的数据生产单元更新实时数据、数据消费单元获取实时数据,均能通过共享内存实现。
[0030]
参见附图4,为本实施例数据产生单元的工作流程图;数据产生单元完成对实时数据的高速入栈;具体步骤如下:(1)数据产生单元定义一张采集表,其结构如附图5所示,包括4个属性:点位唯一标识pid、采集地址collectadress,采集类型parsetype、动态信息共享内存地址valueadress。
[0031]
(2)采集点位预定义,包括2部分;第一,装置启动后数据产生单元首先发起与设备的连接,由磁盘预加载点位唯一标识pid、采集地址collectadress,采集类型parsetype至进程内存区的采集表。第二,通过fnv(fowler-noll-vo)算法,基于点位唯一标识pid定位静
态信息区相应点位,获取动态信息共享内存地址valueaddress等并加载至采集表。
[0032]
(3)获取实时数据:数据生产单元发送“采集地址collectadress + 采集类型parsetype”的列表至设备,设备返回数据,经由协议库完成数据格式转换。
[0033]
(4)更新动态信息区:根据采集表中的动态信息共享内存地址valueaddress等更新数据。
[0034]
2.实时调度单元数据消费单元预先定义消费点位信息,并向调度单元进行注册。由调度单元基于点位唯一标识pid进行统一管理。装置启动后,调度单元收到来自数据产生单元的数据变化事件通知,结合变化事件和注册表,记录点位更新状态,触发数据消费单元后续更新事件。
[0035]
参见附图6,它是本实施例实时调度单元的工作流程图;具体步骤如下:(1)调度单元的消费注册管理模块定义一张消费注册表如附图7所示,包含3个字段:点位唯一标识pid、消费状态status、钩子方法hook。其中,消费状态为2byte即16bit,即支持16路消费者订阅,从低位起,每bit按序表示一路消费者的消费状态,并关联至相应的hook触发。消费者主动注册。指消费者向消费注册管理模块主动发送订阅点位唯一标识pid和唯一钩子方法hook,消费注册管理模块根据pid加载至消费注册表。
[0036]
(2)点位变化事件接收。数据生产单元下发变化事件,内容为本次完成动态信息更新的点位唯一标识pid列表,由变化事件管理模块接收并通过fnv算法定位至消费注册表中的相应记录。
[0037]
(3)点位变化事件调度。变化事件管理模块定位至消费注册表中的记录后,将status已注册的位均置为1,即触发相应的钩子方法,向消费单元发送钩子调用请求。
[0038]
(4)消费结果记录。消费单元向调度单元返回取值结果,变化事件管理模块将消费成功的status相应位置为0,后续可查询本次消费结果。
[0039]
3.数据消费单元消费者预定义消费点位,并主动向调度单元完成点位订阅注册。装置启动后,消费者预定义的钩子函数随时待触发,当接收到来自调度单元的钩子调用请求,即执行钩子方法,根据预定义中的动态信息共享内存地址获取数据。完成数据获取后,再向调度单元反馈钩子执行结果,更新点位消费状态,并将实时数据交由协议库进行转换,上传至第三方数据库/系统。
[0040]
钩子方法可在系统进行消息处理的时候进行截获,当特定消息发出,在未达到窗口前就捕获该消息,触发钩子函数的执行。相较于持续请求查询的方式,可以在系统层面更早的捕获到数据更新通知,且由系统直接触发钩子函数的执行,无需单元间额外的消息传递,进而提升变化事件的调度速度。
[0041]
参见附图9,它是本实施例数据消费单元的工作流程图;具体步骤如下:(1)消费单元定义一张消费表,如附图8所示,包括5个字段:消费者唯一标识cid、订阅点位唯一标识pid、动态信息共享内存地址valueaddress、上传地址uploadaddress、上传类型uploadtype。
[0042]
(2)消费点位预定义,包括3部分:第一,装置启动后消费单元首先发起与设备的连接,由磁盘预加载消费者唯一标识cid、订阅点位唯一标识pid、上传地址uploadaddress、上传类型uploadtype至进程内存中的消费表;第二,通过fnv算法,基于pid定位静态信息区的
点位,获取动态信息内存地址valueaddress并加载至消费表;第三,基于消费表的每条记录,定义钩子方法,用于触发后续的变化事件接收和取值。
[0043]
(3)消费信息注册。消费点位经过预定义后,主动向调度单元进行注册,发送订阅点位唯一标识pid和消费者唯一钩子方法hook。
[0044]
(4)钩子触发。调度单元根据收到的数据产生单元的点位变化通知,将已注册点位的状态位置1后,触发钩子方法的调用请求。
[0045]
(5)消费者获取实时数据。消费者收到调度单元的钩子方法hook调用请求后,即根据预定义中的动态信息共享内存地址valueaddress取值,并向调度单元反馈取值结果。
[0046]
(6)实时数据消费。消费者获取到实时数据后,根据预定义的上传地址uploadaddress和上传类型uploadtype发送至协议库进行格式转换,并向北向数据库系统主动推送变化数据。
[0047]
本实施例中,hook钩子函数的实现包括由实时数据高速消费单元对钩子函数进行定义,实时数据高速调度单元进行钩子函数触发;具体实施过程包括:(1)实时数据高速消费单元预加载消费点位唯一标识pid,为每个点位动态绑定钩子函数f(),生成当前消费模块消费表;(2)实时数据高速消费单元将需消费点位唯一标识pid及关联钩子函数f()地址注册到实时数据高速调度单元;(3)实时数据高速调度单元在消费注册表为每个消费输出单元分配相关消费记录;(4)实时数据高速调度单元监听实时数据更新通知,当收到指定pid点位实时数据更新通知事件后,遍历消费注册表,获取相关消费数据单元钩子函数f()地址,触发钩子函数f()调用;(5)实时数据高速消费单元已定义钩子函数f()触发后,从共享内存区获取最新数据,并以输出协议库消息格式推送数据到北向应用平台,并将消费情况以钩子函数f()返回值形式通知实时数据高速调度单元;(6)重复步骤4~5完成实时数据异步通知。
[0048]
本实施例采用fnv算法 hash(pid),定义如下:输入:点位唯一标识pid(n);输出:静态信息区相应点位地址static_area_address;动态共享内存地址valueaddress;常量:fnv初始值 offset_bisis;fnv散列质数 fnv_prime;哈希长度 n byte;算法(以golang语言表示)如下:func hash(pid string) (result uint32) {result=offset_basisfor i := 0; i 《 n; i++ {result*=fnv_primeresult^=uint32(pid(n))}return result
}static_area_address=hash(pid)valueaddress=hash(pid)+ n本实施例中的具体方法为:输入:pid字符数组(点位唯一标识);输出: 点位静态信息起始地址(static_area_address)、点位动态信息起始地址(valueaddress);常量:初始哈希值offset_bisis=2166136261、fnv散列质数 fnv_prime=16777619,哈希长度n=32字节,pid字节数据组下标idx(0);具体过程为:(1)offset_bisis乘以fnv散列质数fnv_prime,结果赋值offset_bisis;(2)offset_bisis与字符数组idx下标字符异或,结果赋值offset_bisis,idx下标加1;(3)重复步骤(1)、(2),直到idx等于字节数组长度减1;(4)经过以上步骤,offset_bisis值为点位静态信息起始地址,static_area_address= offset_bisis;(5)根据共享内存区静态信息结构,点位动态信息起始地址valueaddress=静态信息地址static_area_address+32个字节偏移量(在本实施例中,pid占位固定32字节)。
[0049]
参见附图10,是本实施例提供的多源实时数据高速协议转换方法的工作流程图;实施步骤如下:1.装置启动后,所有采集点位的静态信息由磁盘加载至内存,申请固定大小的动态内存空间,并将地址赋值静态信息中的动态信息共享内存地址字段,从而使后续数据交互仅通过共享内存就能实现。
[0050]
2.数据产生单元、实时调度单元、消费单元分别完成采集表、消费注册表、消费表的预加载。具体为:数据生产模块由磁盘预加载点位唯一标识pid、采集地址collectadress,采集类型parsetype至进程内存区的采集表;再通过fnv算法,基于点位唯一标识pid定位静态信息区中的记录,获取动态信息内存地址valueaddress等并加载至采集表;消费模块由磁盘预加载消费者唯一标识cid、订阅点位唯一标识pid、上传地址uploadaddress、上传类型uploadtype至消费表,并通过fnv算法,基于pid定位静态信息区的点位,获取动态信息内存地址valueaddress等并加载至消费表。再基于消费表的每条记录,定义唯一钩子方法,用于触发后续的变化事件接收和取值。消费模块完成预加载后,向调度模块发送消费者订阅点位的唯一标识pid和钩子方法hook的列表进行主动注册,由调度模块生成消费注册表。
[0051]
3.数据生产模块根据点位“励磁电流”和“励磁电压”的采集地址和采集类型“11.zb_excitationcurrent,float64;11.zb_excitationvoltagefloat32;”生成报文向电力系统a请求数据;根据点位“1f发电机保护1_机端a相电流”和“发电机a套保护装置闭锁”的采集地址和采集类型“1.40001,float32;1.1,bool;”的报文至电力系统b请求数据。
[0052]
4.协议库根据电力系统a的自定义协议m转换其返回的数据,根据电力系统b的modbus协议转换其返回的数据。
[0053]
5.数据生产模块收到数据后,根据采集表中的动态信息共享内存地址等更新数据。
[0054]
6.变化事件下发:完成以上点位的动态信息更新后,数据生产模块向调度单元下发变化事件,即点位唯一标识列表pid,即1100、1200、1400、1500。
[0055]
7.变化事件接收:调度单元变化事件管理模块接收点位唯一标识列表。然后通过fnv算法,根据点位唯一标识pid定位至消费注册表中相应的4条点位记录。
[0056]
8.点位变化事件调度:变化事件管理模块根据相应点位的注册情况,改变消费状态位status。
[0057]
pid=1100的点位,status低2位被注册,由0置1,触发消费者x和y相应钩子方法。
[0058]
pid=1200的点位,status低1位被注册,由0置1,触发消费者x相应钩子方法。
[0059]
pid=1400的点位,status低2位被注册,由0置1,触发消费者x和y相应钩子方法。
[0060]
pid=1500的点位,status低1位被注册,由0置1,触发消费者y相应钩子方法。
[0061]
9.钩子触发:消费者x和消费者y收到调度单元触发的相应钩子方法调用请求(即收到数据变化通知),则根据消费表中预定义的动态信息共享内存地址valueaddress等从共享内存的动态信息区取值,并向调度单元反馈取值结果,成功状态位则置为0。
[0062]
10.实时数据消费:获取实时数据后,消费模块发送“励磁电流、励磁电压、1f发电机保护1_机端a相电流”的“数据+上传类型+上传地址”的列表,经由协议库转换为kafka格式后推送至消费者x;发送“励磁电流、1f发电机保护1_机端a相电流、发电机a套保护装置闭锁”的“数据+上传类型+上传地址”的列表,经由协议库转换为自定义协议n后推送至消费者y。
[0063]
对本实施例提供的装置和方法进行测试,具体如下:根据执行单位不同,整体分为解析和转换入库两个步骤。其中,解析每秒执行5组,每组100点。转换入库每秒执行10组,每组5万条数据。由于入库规则各异,本测试中日志以每2s为一组解读,由上,每统计组完成100万条数据的解析和转换入库。为保证数据可信度,抽取5组日志数据。以接收到数据包时刻为起始时间t0,分发数据入库为结束时间t1,计算转换耗时t=t1-t0,五组数据如下:组1:t=t1-t0= 09:43:45.476634829
‑ꢀ
09:43:43.782360688= 1694.274141(ms);组2:t=t1-t0= 09:43:47.456741172
‑ꢀ
09:43:45.803925048= 1652.816124(ms);组3:t=t1-t0= 09:43:49.452204161
‑ꢀ
09:43:47.787241430= 1664.962731(ms);组4:t=t1-t0= 09:43:51.478590585
‑ꢀ
09:43:49.793214582= 1685.376003(ms);组5:t=t1-t0= 09:43:53.445374087
‑ꢀ
09:43:51.793744437= 1651.629650(ms);平均每点位耗时= 处理总耗时/处理点次= sum(t)/(500*2*5)=(1694.274141+1652.816124+1664.962731+1685.376003+1651.629650)/5000=1.6698117298≈1.67ms 。
[0064]
测试结果表明,在每点位每1ms产生1条实时数据的条件下,5000点次的解析转换入库耗时8349ms,即每条数据耗时约1.67ms。

技术特征:


1.一种多源实时数据协议高速转换装置,其特征在于:它包括共享内存单元,多源实时数据产生单元,数据实时调度单元和多源实时数据消费单元;所述的共享内存单元包括静态信息区和动态信息区;静态信息区用于在装置启动后,存储从外部配置获取并加载采集点位的静态信息,为动态信息分配地址;动态信息区用于后续实时数据的存储、更新;所述的多源实时数据产生单元包括数据采集接口、内置输入通信协议库、数据生产模块;数据生产模块用于将接收的各类数据协议的数据包快速解封,高速入栈至共享内存单元,并向数据实时调度单元下发变化事件;所述的数据实时调度单元包括消费注册管理模块、变化事件管理模块;用于变化事件接收和变化事件调度,将经协议转换后的多源输入的实时数据的变化快速通知多源实时数据消费单元;所述的多源实时数据消费单元包括数据输出接口、内置输出通信协议库、数据消费模块;数据消费模块用于实现消费信息注册、监听变化事件、获取实时数据、经协议转换后分发给相应的输出应用平台。2.一种多源实时数据协议高速转换方法,其特征在于包括如下步骤:实时数据高速入栈、实时数据高速调度和实时数据高速消费;所述的实时数据高速入栈包括如下步骤:(1)构建采集表在磁盘上构建一张采集表,包括4个属性:点位唯一标识pid、采集地址collectadress,采集类型parsetype、动态信息共享内存地址valueadress;(2)采集点位信息预定义装置启动后,数据生产模块发起与设备的连接,由磁盘预加载采集表中的点位唯一标识pid、采集地址collectadress,采集类型parsetype至进程内存区;采用fnv算法,基于点位唯一标识pid定位静态信息区相应点位、获取动态信息共享内存地址valueaddress,完成内存采集表加载;(3)获取实时数据数据生产模块根据“采集地址collectadress+采集类型parsetype”向设备发送数据请求,设备返回数据,经由内置于多源实时数据产生单元的输入通信协议库完成数据格式转换;(4)更新动态信息依据内存采集表中的动态信息共享内存地址valueaddress更新动态信息数据,完成点位的动态信息更新;所述的实时数据高速调度包括如下步骤:(1)消费点位信息预定义消费注册管理模块构建一张消费注册表,包含3个字段:点位唯一标识pid、消费状态status、钩子方法hook;其中,消费状态status为16bit,支持16路消费者订阅,从低位起,每bit按序表示一路消费者的消费状态,并与相应的钩子方法hook触发关联;(2)变化事件接收数据生产模块将本次完成动态信息更新的点位唯一标识pid列表的变化事件发出通
知,由变化事件管理模块接收变化事件通知后,通过fnv算法定位至消费注册表中的相应记录中;(3)点位变化事件调度变化事件管理模块得到定位至消费注册表中的记录后,将消费状态status已注册的位置为1,触发相应的钩子方法hook,向消费模块发送钩子调用请求;(4)消费结果记录消费模块向变化事件管理模块返回取值结果,变化事件管理模块将消费成功的消费状态status相应位置为0,用于后续查询本次消费结果;所述的实时数据高速消费包括如下步骤:(1)构建消费表在磁盘上构建一张消费表,包括5个字段:消费者唯一标识cid、订阅点位唯一标识pid、动态信息共享内存地址valueaddress、上传地址uploadaddress、上传类型uploadtype;(2)消费点位预定义装置启动后,消费模块先发起与应用平台的连接,由磁盘预加载消费者唯一标识cid、订阅点位唯一标识pid、上传地址uploadaddress、上传类型uploadtype至进程内存区;再采用fnv算法,基于订阅点位pid定位静态信息区的点位、获取动态信息内存地址valueaddress并加载至内存消费表;基于消费表的每条记录,定义消费者唯一钩子方法hook,完成消费点位的预定义;所述的消费者唯一钩子方法hook用于后续变化事件管理模块触发消费模块对变化事件的接收和取值;(3)消费信息注册经预定义后的消费点位主动向消费注册管理模块进行注册,发送订阅点位唯一标识pid和消费者唯一钩子方法hook,消费注册管理模块根据订阅点位唯一标识pid和钩子方法hook形成消费注册表;(4)钩子触发变化事件管理模块根据收到的由数据生产模块发出的变化事件通知,将已注册点位的状态位置1后,触发钩子方法hook的调用请求;(5)消费模块获取实时数据消费模块收到变化事件管理模块的钩子方法hook调用请求后,根据内存消费表中的动态信息共享内存地址valueaddress取值,获取实时数据,并向变化事件管理模块反馈取值结果,消费注册表状态位置0;(6)实时数据消费消费模块获取到实时数据后,经由内置于多源实时数据消费单元的输出通信协议库,根据内存消费表中的上传地址uploadaddress和上传类型uploadtype进行格式转换,并向应用平台主动推送变化数据。

技术总结


本发明涉及一种多源实时数据协议高速转换方法及装置。转换装置包括自定义的共享内存单元,多源实时数据产生单元,数据实时调度单元和多源实时数据消费单元。共享内存单元将实时数据结构自定义,减少数据检索和流动;多源实时数据输入单元通过多种信号接收方式快速接收各类协议的数据包;数据实时调度单元对实时数据结构、实时数据高速入栈、高速调度及消费的主要过程进行优化设计,实现数据高速转换和分发;多源实时数据消费单元通过协议库提供信号发送方式,快速分发各类协议的数据包。本发明可提供多种实时数据传输协议之间的相互转换,具有转换时延达毫秒级别的特点。具有转换时延达毫秒级别的特点。具有转换时延达毫秒级别的特点。


技术研发人员:

陈艳垒 黄伟韬 王旭辉

受保护的技术使用者:

苏州麦杰工业大数据产业研究院有限公司

技术研发日:

2022.08.28

技术公布日:

2022/11/25

本文发布于:2022-11-28 09:51:25,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/9924.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   实时   点位   单元
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图