跨平台数据处理系统的制作方法

文档序号:33620762发布日期:2023-03-25 11:38阅读:53来源:国知局
跨平台数据处理系统的制作方法

1.本发明属于工业数据处理技术领域,尤其是涉及一种跨平台数据处理系统。


背景技术:

2.在工业现场存在大量的数据采集、加工和处理的需求,例如采集0-20ma模拟量数据并通过特定的工业以太网数据传输;采集i/o信号,触发图像采集,并通过显示屏显示实时图像或编码打包存储等等。在此背景下需要不断研发满足不同数据应用场景的工业设备。这些设备的软件开发通常需要针对特定的需求,完成数据链路的搭建,其中存在大量的类似数据转发、数据共用、数据缓存等重复工作量,这些工作量混杂在不同的业务逻辑中,增加了设备研发和测试的复杂度。


技术实现要素:

3.针对现有技术中存在的问题,本发明提供了一种跨平台数据处理系统,至少部分的解决现有技术中存在的设备研发和测试的复杂的问题。
4.第一方面,本公开实施例提供了一种跨平台数据处理系统,包括:设备资源管理模块、数据管理模块和数据链路搭建模块;当建立应用程序时,通过调用数据管理模块的模块创建接口实现相应模块操作;所述设备资源管理模块,用于以统一的结构体描述设备资源,并在建立应用程序时为数据管理模块提供资源设备的操作接口;所述数据链路搭建模块,用于在应用程序使用的模块之间搭建链路。
5.可选的,所述设备资源管理模块,以结构体链表的形式存储全局资源,资源属性包括资源类型、设备数量和设备链表,所述资源类型包括模拟量采集、数字量采集、ethercat从站协议栈、io-link从站协议栈和/或io-link主站协议栈。
6.可选的,所述设备资源管理模块的设备数据包含设备号、设备名称和设备驱动接口,设备驱动接口遵循统一的标准,基于硬件设备的系统软件驱动接口进行软件抽象和封装得到。
7.可选的,所述设备资源管理模块中的设备驱动接口是操作相应设备的函数接口指针,所述设备驱动接口包括设备打开、设备关闭、写设备、读设备和/或按指令操作设备。
8.可选的,所述数据管理模块中每个模块使用统一结构体进行初始化,统一结构体包含模块模型类型、设备操作接口、相连模块结构体指针、模块执行任务入口、事件消息链表和数据池。
9.可选的,所述数据管理模块中的模型类型包括数据的生产者、数据的消费者和数据的生产消费者;数据的生产者表明该模块通过设备产生数据,数据的消费者表明该模块从其他模块获取数据,然后对获取的数据进行加工处理,数据的生产消费者表明该模块从其他模块获取数据并加工处理,然后再将处理后的数据转发给其他模块。
10.可选的,所述数据管理模块包括连接管理,所述连接管理,根据模块模型插入相连模块结构体指针,支持上游模块的接入、下游模块的接入以及上游模块和下游模块的接入,并可分别管理连接数量;连接管理规定了数据流的流向,但不限制相互连接模块之间的事件传送方向。
11.可选的,所述数据管理模块包括任务管理,所述任务管理用于在模块初始化时创建模块线程,在线程中执行模块任务,如果运行环境不支持多线程,则在进入主循环时依次执行各个模块的任务;如运行环境支持多线程,由上层应用调用模块的启停接口控制模块任务的启停,应用程序创建模块时将处理函数赋值给任务管理提供的两个回调接口,回调接口包括事件处理函数接口和通用任务处理函数接口;事件处理函数接口,用于处理其他模块发来的或者本模块产生的事件消息;通用任务处理函数接口用于执行本模块执行的通用任务。
12.可选的,所述数据管理模块包括数据池管理,所述数据池管理为当模块将新产生的数据发送给相连模块时,将数据装入从数据池管理中申请的缓存中,当相连模块接收相应事件并完成数据处理后,由相连模块释放数据缓存给数据池;所述数据池,是在模块初始化的专用内存资源,能通过宏定义将数据池分割成n份。
13.可选的,所述数据管理模块产生并发送通用事件消息,通用事件消息全局定义,发送通用事件消息的方式为将通用事件类型和数据存储指针装入消息体,并将消息体装入接收事件模块的消息链表,如果运行环境支持多线程,则发送一个接收事件模块专属的信号量;如果运行环境不支持多线程,则将接收事件模块专属的标志位加1;当模块接收到信号量或监测到标志位大于1,模块从自身持有的消息链表获取消息并处理。
14.本发明提供的跨平台数据处理系统,通过设备资源管理模块、数据管理模块和数据链路搭建模块,在建立应用程序时,调用数据管理模块的模块,设备资源管理模块基于统一的结构体描述提供操作接口,而数据链路搭建模块搭建链路,从而可以跨平台的进行数据处理,支持在新设备研发中快速搭建纯粹的业务逻辑应用,达到降低产品研发复杂程度和新设备的研发周期的目的。
附图说明
15.通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
16.图1为本公开实施例提供的跨平台数据处理系统架构的结构框图。
具体实施方式
17.下面结合附图对本公开实施例进行详细描述。
18.应当明确,以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅
仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
19.需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
20.还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图示中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
21.另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
22.模块为应用程序使用的各个数据模块。
23.本实施例公开了一种跨平台数据处理系统,包括:设备资源管理模块、数据管理模块和数据链路搭建模块;当建立应用程序时,通过调用数据管理模块的模块创建接口实现相应模块操作;所述设备资源管理模块,用于以统一的结构体描述设备资源,并在建立应用程序时为数据管理模块提供资源设备的操作接口;所述数据链路搭建模块,用于在应用程序使用的模块之间搭建链路。
24.可选的,所述设备资源管理模块,以结构体链表的形式存储全局资源,资源属性包括资源类型、设备数量和设备链表,所述资源类型包括模拟量采集、数字量采集、ethercat从站协议栈、io-link从站协议栈和/或io-link主站协议栈。
25.可选的,所述设备资源管理模块的设备数据包含设备号、设备名称和设备驱动接口,设备驱动接口遵循统一的标准,基于硬件设备的系统软件驱动接口进行软件抽象和封装得到。
26.可选的,所述设备资源管理模块中的设备驱动接口是操作相应设备的函数接口指针,所述设备驱动接口包括设备打开、设备关闭、写设备、读设备和/或按指令操作设备。
27.可选的,所述数据管理模块中每个模块使用统一结构体进行初始化,统一结构体包含模块模型类型、设备操作接口、相连模块结构体指针、模块执行任务入口、事件消息链表和数据池。
28.可选的,所述数据管理模块中的模型类型包括数据的生产者、数据的消费者和数据的生产消费者;数据的生产者表明该模块通过设备产生数据,数据的消费者表明该模块从其他模
块获取数据,然后对获取的数据进行加工处理,数据的生产消费者表明该模块从其他模块获取数据并加工处理,然后再将处理后的数据转发给其他模块。
29.可选的,所述数据管理模块包括连接管理,所述连接管理,根据模块模型插入相连模块结构体指针,支持上游模块的接入、下游模块的接入以及上游模块和下游模块的接入,并可分别管理连接数量;连接管理规定了数据流的流向,但不限制相互连接模块之间的事件传送方向。
30.可选的,所述数据管理模块包括任务管理,所述任务管理用于在模块初始化时创建模块线程,在线程中执行模块任务,如果运行环境不支持多线程,则在进入主循环时依次执行各个模块的任务;如运行环境支持多线程,由上层应用调用模块的启停接口控制模块任务的启停,应用程序创建模块时将处理函数赋值给任务管理提供的两个回调接口,回调接口包括事件处理函数接口和通用任务处理函数接口;事件处理函数接口,用于处理其他模块发来的或者本模块产生的事件消息;通用任务处理函数接口用于执行本模块执行的通用任务。
31.可选的,所述数据管理模块包括数据池管理,所述数据池管理为当模块将新产生的数据发送给相连模块时,将数据装入从数据池管理中申请的缓存中,当相连模块接收相应事件并完成数据处理后,由相连模块释放数据缓存给数据池;所述数据池,是在模块初始化的专用内存资源,能通过宏定义将数据池分割成n份。
32.可选的,所述数据管理模块产生并发送通用事件消息,通用事件消息全局定义,发送通用事件消息的方式为将通用事件类型和数据存储指针装入消息体,并将消息体装入接收事件模块的消息链表,如果运行环境支持多线程,则发送一个接收事件模块专属的信号量;如果运行环境不支持多线程,则将接收事件模块专属的标志位加1;当模块接收到信号量或监测到标志位大于1,模块从自身持有的消息链表获取消息并处理。
33.在一个具体的应用场景中,解决以下技术问题,1.剥离业务逻辑和重复的数据处理逻辑。2.提炼出可在不同设备软件研发过程中重复利用的统一数据管理模型。
34.设备资源管理模块提供设备资源管理机制。数据管理模块进行统一的数据管理模型。数据链路搭建模块具有模块化的数据链路搭建能力。
35.1. 设备资源管理机制,提供标准灵活的设备操作能力,为上层的数据管理模块屏蔽不需要关注的底层硬件细节和算法实现细节,与数据管理模块关注的业务逻辑解耦,资源以统一的结构体进行描述:a. 以结构体链表的形式存储全局资源。资源属性包含:根据需要可穷举的资源类型(模拟量采集、数字量采集、ethercat从站协议栈、io-link从站协议栈、io-link主站协议栈等)、每种资源包含的设备数量、资源中包含设备的设备链表。b.设备与资源的关系为,一个设备属于一种资源,并可提供一个资源数量,一种资源可包含多个设备。c. 设备包含设备号、设备名称和设备驱动接口,设备驱动接口遵循本架构设计的标准,从通用的或者特有的软件方法真实硬件设备的系统软件驱动接口经过进一步的软件抽象和封装而来。d.设备驱动接口是操作该设备的函数接口指针,包括设备打开、设备关闭、写设备、读设备、按指令操作设备。e. 设备资源管理持有设备通用操作接口,可完成设备注
册、设备注销、设备领取、设备回收。f. 设备注册,设备资源管理初始化时调用该接口,将每个设备注册添加到资源链表中对应的资源中的设备链表中,该资源数量加1。g. 设备注销是设备注册的反操作。h. 设备领取,上层数据管理模块通过该接口,获取操作该设备的驱动接口,并标记该设备已使用。i. 设备回收是设备领取的反操作。
36.2. 数据管理模块提供统一的数据管理模型,专注于模块内的业务逻辑的实现。模块通过一个统一结构体进行描述:a. 每个模块都使用这个统一结构体进行初始化,包含模块模型类型、设备操作接口、相连模块结构体指针、模块执行任务入口、事件消息链表、数据池。b. 模型管理,将数据管理模块分为数据的生产者、数据的消费者、数据的生产消费者三种模型类型。生产者表明该模块通过设备产生数据,消费者表明该模块是从其他模块获取数据,然后对数据进行加工处理。生产消费者表明该模块从其他模块获取数据并加工处理,然后再将处理后的数据转发给其他模块。c. 设备操作,通过设备领取接口向资源管理申请资源,获取底层设备的驱动接口。d. 连接管理,根据模块模型插入相连模块结构体指针,支持上游模块的接入(本模块为消费者)、下游模块的接入(本模块为生产者)、上游模块和下游模块的接入(本模块为生产消费者),并可分别限制或者不限制连接数量。连接管理规定了数据流的流向,但不限制相互连接模块之间的事件传送方向。e. 任务管理,模块初始化时创建模块线程,在线程中执行模块任务,如果运行环境不支持多线程(单片机裸跑),则在进入主循环时依次执行各个模块的任务。在支持多线程的运行环境中,由上层应用调用模块的启停接口控制模块任务的启停。创建模块时需要将处理函数赋值给任务管理提供两个回调接口,一个是事件处理函数接口、一个是通用任务处理函数接口。前者处理其他模块发来的或者本模块产生的事件消息,如新数据或模块启停等;后者执行本模块需要一直执行的通用任务,如持续采集模拟量等。 f. 事件管理分为三类,模块自发自收事件;模块间发送接收事件;模块上报给上层应用的自身特有事件。g. 每个模块向上层应用提供起始、停止接口。应用程序调用该接口,可产生需要模块自身处理的启停事件消息。产生事件的方式是将启停事件装入消息体,再将消息体装入本模块的消息链表,然后发送一个本模块专属的信号量。h. 模块可产生发送给相连的模块处理的通用事件消息,如新数据、数据报警等。这类事件是全局定义的,每个模块都具备处理该事件的能力。发送事件的方式为将通用事件类型、数据存储指针等装入消息体,并将消息体装入接收事件模块的消息链表,如果运行环境支持多线程,则发送一个接收事件模块专属的信号量。如果运行环境不支持多线程(单片机裸跑),则将接收事件模块专属的标志位加1。i. 在g、h两种情况中,模块任务中接收到信号量,或监测到标志位大于1,会从自身持有的消息链表获取消息,并处理。j.对于模块特有的事件类型,在模块初始化需要上层应用注册回调函数,通过回调函数将此类事件上报给应用程序,回调函数内是应用程序处理这些事件的业务逻辑。是产生发送给上层应用的模块专属的特殊消息,由上层应用决定如何处理。g.数据池管理,当模块将新产生的数据发送给相连模块时,需要将数据装入从数据池管理中申请的缓存中。当相连模块接收相应事件并完成数据处理后,由相连模块释放这个数据缓存给数据池。k. g中所述数据池,是在模块初始化之处申请的一块专用的内存资源,可通过宏定义将数据池分割成n份。模块需要存储数据的时候就申请一份进行存储。如果数据池已满,则申请失败。l. 此外模块至少还需提供给应用程序模块创建、模块销毁两个接口。
37.3. 数据链路管理:a. 链路搭建,提供帮助应用程序灵活搭建数据链路的接口,将
已创建的模块,根据需要连接起来。b. 将模块连接起来就是根据上下游关系,为每个模块添加上游模块和下游模块。在模块开始运转之后,上游的模块自动向下游的模块通过事件发送需要处理的数据。c. 提供帮助应用程序解绑数据链路的接口,是搭建数据链路接口的反操作。
38.各模块相互连接关系如下: 1. 设备资源管理初始化,将设备添加到对应资源的设备链表中,完成设备的资源注册。2. 应用程序,调用模块创建接口,完成所需模块提供的创建、销毁、启动、停止接口,对模块进行操作。3. 模块按照数据模型完成创建,其中设备操作接口,是按照所需资源的类型向设备资源管理申请资源,完成底层设备的驱动接口获取。4. 应用程序,调用数据链路管理接口,搭建或解绑数据流链路。
39.程序开始运行后,先执行设备资源管理初始化,其运行流程:1.创建描述全局资源的结构体链表。链表中每个结构体实例描述一种资源,其属性包括资源类型、资源数量、每种资源包含的设备数量、资源中包含设备的设备链表。2.调用设备注册接口,将设备添加到对应的资源的结构体实例中,实际动作包括修改设备数量,将描述设备的结构体实例指针添加到设备链表中。设备的结构体实例是以全局变量的形式供设备资源管理使用。
40.上层应用调用模块创建接口进行所需业务模块创建,创建过程:1.创建描述该模块的结构体实例,其属性包含模型类型、设备操作接口、相连模块结构体指针、模块执行任务入口、事件消息链表、数据池。2.按照结构体包含属性,设定模块类型。3.创建模块任务线程、事件消息链表、事件信号量。4. 创建数据池,按照宏定义谁当的块大小初始化数据池。5.按照本模块所需的资源类型,调用设备领取接口,向设备资源管理申请设备驱动接口。
41.上层应用调用数据链路管理接口,创建数据链路,创建过程:1.按照上下游关系,设置每个模块的结构体实例中的相连模块结构体指针。
42.上层应用调用模块的起始接口,启动之前创建的各个模块,启动过程:1.向模块发送启动事件消息。2.模块任务接收到后开始执行事件处理任务和通用任务。3.数据从上游模块向下游模块通过事件的形式传递。4.模块发送数据的时候,申请数据池资源,将存有数据的数据缓存指针通过事件形式,发送给下游模块。下游模块接收到数据释放数据池资源。
43.在图1所示,需要根据业务需要创建所属的业务模块,模块会通过资源管理获取设备的操作接口。针对不同需求搭建起来的不同的数据链路进行实践说明。1.场景:监测数字传感器的输入变化。a.“io数据采集模块”采集数字量数据,通过事件消息将数据发送给下游“数据滤波模块”。b.“数据滤波模块”对采集的数据进行滤波,已保证滤除耦合到设备数字总线中的0/1突变,并将滤波后的数据通过事件消息发送给下游协议模块。c.下游特定的协议,比如“ethercat从站模块”、“iolink从站模块”、“canopen从站模块”等模块,将数据通过工业总线发送给其他设备。2.场景:监测模拟传感器(比如pt100温度传感器)的输入变化。a.“模拟数据采集模块”采集模拟数据,比如温度。当温度升高到特定的阈值,将此消息通过事件消息上报给上层应用。b.上层应用启动“图像数据采集模块”执行数据采集,采集后的图像数据通过事件消息发送给下游模块。c.“数据编解码模块”对接收的原始图像数据进行编码压缩,如h265、h264等。并将编码后的数据发送给下游模块。d.“数据结构化处理模块”将编码后的数据进行格式打包,比如mkv、mp4等。并将打包好的文件数据通过事件消息传送给下游模块。e.下游的“数据存储模块”接收到文件数据后,进行本地磁盘存储工作。f.下游的“数据显示模块”接收文件数据后,可将文件数据放入本地通用播放器中进行画面播
放。
44.图1中,1、资源管理机制。对于不同设备提供一套标准接口模型进行封装,调用这套标准接口实现在复杂环境下对设备的管理。通过对已注册的设备的探测,筛选出可用设备,供模块领取和收回。模块领取成功后,可调用该设备提供的标准接口。
45.2、数据管理模块。模块间可进行数据传输、事件通知。模块内部实现自身特有的模块任务,如数据接收、预处理、缓存、发送等。
46.3、提供类似于连接器的模块链路搭建能力,使得应用层能快速简洁的实现数据流的通路。
47.4、数据链路搭建时,提供通用事件分类,使得应用层可以按照业务需要,组织不同数据模块间的协作。
48.5、架构预设常用滤波模块、常用工业协议栈的结构化处理模块。
49.6、数据池管理,数据区、通用属性区 (使用状态、起止地址、时间戳、校验码等)、自定义属性区。
50.7、将特定的业务单元以模型实例形式管理,程序根据数据管理模型的特性,定义业务单元的数据流向,可接收处理的事件。根据业务单元的业务逻辑组织操作设备和数据池,实现自身特有的程序任务。
51.本实施的有益效果如下,在以往的开发过程中,为满足不同数据应用场景的工业设备,需要针对特定的需求,完成数据链路的搭建,其中存在大量的类似数据转发、数据共用、数据缓存等重复工作量,这些工作量混杂在不同的业务逻辑中,增加了设备研发和测试的复杂度。本实施例支持在新设备研发中快速搭建纯粹的业务逻辑应用,以降低产品研发的复杂程度,提高新设备的研发周期。
52.以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
53.在本公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
54.另外,如在此使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“a、b或c的至少一个”的列举意味着a或b或c,或ab或ac或bc,或abc(即a和b和c)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
55.还需要指出的是,在本公开的系统和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
56.可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种
改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
57.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
58.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1