一种算法库处理方法、装置、设备及可读存储介质与流程

文档序号:30494866发布日期:2022-06-22 03:46阅读:87来源:国知局
一种算法库处理方法、装置、设备及可读存储介质与流程

1.本技术涉及工业控制技术领域,更具体地说,涉及一种算法库处理方法、装置、设备及可读存储介质。


背景技术:

2.随着工业现场自动化、智能化的发展,业务上位机组态对dcs(distributed control system,分布式控制系统)等组态软件提出了更高的要求,尤其是组态软件中的控制逻辑算法,其是整个控制系统的核心,同时也是算法开发者最需要保护的资源。但随着社会发展,工业控制领域也越来越开放,如何保证这些核心资源既可以复用又可以保证安全,越来越成为一个突出的问题。
3.目前,对于包含控制逻辑算法的算法库而言,一般是采用两种方式实现使用和安全性:一种是通过加密方式,包含各种提升密码复杂度以及各种不可逆的加密算法等保护算法库的安全性,但由于软件开发商知道用户加密的密码,因此,无法完全保障算法库的安全性;另一种是算法开发者让工控软件开发商提供编译环境,自己去现场和集成商一起部署、调试这些算法,最终在现场运行的是一个二进制的算法逻辑,这种办法从算法层面考虑是安全的,但实施起来太麻烦,无法大量推广而更好地实现算法库的复用。
4.综上所述,如何既保证算法库的安全性,又能更好地实现算法库的复用,是目前本领域技术人员亟待解决的技术问题。


技术实现要素:

5.有鉴于此,本技术的目的是提供一种算法库处理方法、装置、设备及可读存储介质,用于既保证算法库的安全性,又能更好地实现算法库的复用。
6.为了实现上述目的,本技术提供如下技术方案:
7.一种算法库处理方法,包括:
8.获取源算法库,将所述源算法库中的逻辑算法编译成二进制文件,得到所述源算法库对应的发布包;所述发布包中包含所述逻辑算法对应的功能块及引脚信息;
9.将所述发布包导入到现场侧的上位机中,由所述现场侧的上位机对所述发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据所述引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
10.优选的,将所述发布包导入到现场侧的上位机中,包括:
11.接收选定指令集,根据所述选定指令集将所述发布包导入到现场侧的上位机中。
12.优选的,获取源算法库,包括:
13.获取内部逻辑算法调试成功的源算法库。
14.优选的,所述发布包还包括有c语言编译所需的头文件信息。
15.优选的,所述现场侧的上位机对所述发布包中相应的二进制文件进行组态,包括:
16.所述现场侧的上位机在iec中对所述发布包中相应的二进制文件进行组态。
17.一种算法库处理装置,包括:
18.编译模块,用于获取源算法库,将所述源算法库中的逻辑算法编译成二进制文件,得到所述源算法库对应的发布包;所述发布包中包含所述逻辑算法对应的功能块及引脚信息;
19.导入模块,用于将所述发布包导入到现场侧的上位机中,由所述现场侧的上位机对所述发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据所述引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
20.优选的,所述导入模块包括:
21.接收单元,用于接收选定指令集,根据所述选定指令集将所述发布包导入到现场侧的上位机中。
22.优选的,所述编译模块包括:
23.获取单元,用于获取内部逻辑算法调试成功的源算法库。
24.一种算法库处理设备,包括:
25.存储器,用于存储计算机程序;
26.处理器,用于执行所述计算机程序时实现如上述任一项所述的算法库处理方法的步骤。
27.一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的算法库处理方法的步骤。
28.本技术提供了一种算法库处理方法、装置、设备及可读存储介质,其中,该方法包括:获取源算法库,将源算法库中的逻辑算法编译成二进制文件,得到源算法库对应的发布包;发布包中包含逻辑算法对应的功能块及引脚信息;将发布包导入到现场侧的上位机中,由现场侧的上位机对发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
29.本技术公开的上述技术方案,将源算法库中的逻辑算法编译成二进制文件形式,得到源算法对应的发布包,且将发布包导入到现场侧的上位机中,以使得现场侧的上位机对二进制文件进行组态、编译和运行,由于二进制文件并非是源码级别,且基于二进制文件并无法进行破解,因此,则可以保证算法库的安全性。而且由于发布包中包含有功能块和引脚信息,且现场侧的上位机可以基于组态后的二进制文件所包含的这些信息而动态地获取对应的引脚地址,以基于引脚地址进行相应数据的获取并进行后续的编译和运行,因此,则能够保证源算法库可以实现远程编译及现场侧端的正常使用,而并不需要到现场进行算法库的部署,从而可以使得算法库可以更好地实现推广和复用,并可以降低算法库的使用成本和复杂度。
附图说明
30.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
31.图1为本技术实施例提供的一种算法库处理方法的流程图;
32.图2为本技术实施例提供的源算法库的发布包导入现场的上位机后的接口显示图;
33.图3为本技术实施例提供的接口参与iec组态的示意图;
34.图4为本技术实施例提供的一种算法库处理装置的结构示意图;
35.图5为本技术实施例提供的一种算法库处理设备的结构示意图。
具体实施方式
36.本技术的核心是提供一种算法库处理方法、装置、设备及可读存储介质,用于既保证算法库的安全性,又能更好地实现算法库的复用。
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.参见图1,其示出了本技术实施例提供的一种算法库处理方法的流程图,本技术实施例提供的一种算法库处理方法,可以包括:
39.s11:获取源算法库,将源算法库中的逻辑算法编译成二进制文件,得到源算法库对应的发布包;发布包中包含逻辑算法对应的功能块及引脚信息。
40.首先,算法开发者可以使用逻辑组态软件进行逻辑算法组态,以得到包含有逻辑算法的源数据库,也即源数据库中所包含的逻辑算法均为由算法开发者开发、设计的源码形式的算法。之后,后台可以获取前述源算法库,并可以将源算法库中所有的逻辑算法均编译成二进制文件,从而得到与源算法库对应且包含的是二进制文件的发布包。
41.考虑到源算法库最终是要在现场侧(也即工业现场侧)中的控制器进行运行,但是,与现有技术中采用去现场进行部署和编译不同,源算法库在后台进行编译的时候还无法确定运行的控制器,也就是变量地址信息不能确定,为此,后台在将源算法库中的逻辑算法编译成二进制文件的过程中,可以添加数据信息,具体地,可以添加逻辑算法对应功能块(具体可以包括功能块的名称等)、功能块中包含的引脚信息,以使得编译得到的发布包中包含有逻辑算法对应的功能块及功能块包含的引脚信息,其中,这里提及的引脚信息具体包含引脚名称、引脚类型及引脚顺序等,也即本技术在进行逻辑算法编译时无需关心所需数据在哪里,只是需要关心使用什么数据。另外,需要说明的是,发布包中还可以包含有逻辑算法对应的函数名称等,且功能块、引脚信息、函数名称等均属于逻辑算法对应的接口信息,并且发布包中可以包含一个或多个接口信息对应的功能块、引脚信息、函数名称等。
42.例如:假设有一个fb(功能块),定义如下,实现两个输入引脚相加后赋值给输出引脚:
43.√fb块名称:fb_type_01
44.√输入引脚1定义:名称p1,类型word
45.√输入引脚2定义:名称p2,类型int
46.√输出引脚定义:名称out,类型word
47.fb_type_01在算法库编译时引脚需要处理为以下方式,参考c代码的逻辑:
[0048][0049]
这样定义的fb、fun等功能块就能够直接以二进制的方式发布,且不依赖于任何实质的变量地址,变量地址都是将现场工程定义的变量分配的地址在运行时动态传入的。
[0050]
通过上述过程可知,发布包中包含的并非是源码级别的逻辑算法,而是无法破解的二进制文件形式,从而有效地保证源数据库中逻辑算法的安全性。
[0051]
s12:将发布包导入到现场侧的上位机中,由现场侧的上位机对发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
[0052]
后台在得到源算法库对应的发布包之后,可以将发布包导入到现场侧的上位机中,也即本技术通过后台实现自动将源算法库中的逻辑算法编译成二进制文件,自动在编译得到的发布包中添加功能块及引脚信息,自动且远程地将发布包导入到现场侧的上位机中,而并不需要由人工到现场进行逻辑算法的部署、编译等,因此,则可以降低源算法库部署的复杂度,降低成本,并可以满足大量复用的场景,从而更好地实现源算法库的复用。需要说明的是,根据源算法库对应的发布包的接口信息,导入到现场侧的上位机之后,会自动生成虚拟的fb、fun信息,从现场工程的组态使用来看,和使用其他系统库是一致的。比如如果一个二进制库如果包含function01、function02两个接口,导入后逻辑组态软件显示以及组态如图2所示,其示出了源算法库的发布包导入现场的上位机后的接口显示图。
[0053]
现场侧的上位机在接收到所导入的发布包之后,可以对发布包中相应的(具体即为现场侧所需使用的)二进制文件进行组态,以得到组态后二进制文件。而且现场侧的上位机可以根据使用需求而获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,实现对功能块的实例化,并对实例化的功能化进行调用。例如:与步骤s11中的举例相对应,现场侧也是以c语言为例进行说明,假如在现场侧中使用fb_type_01定义了两个实例化块点,分别为fb_01、fb_02,两个都进行调用,使用方式如下:
[0054]
//调用fb_01实例
[0055]
struct struct_fb_type fb_01_param={fb_01引脚p1地址,fb_01引脚p2地址,
fb_01引脚out地址};
[0056]
fb_type(fb_01_param);
[0057]
//调用fb_02实例
[0058]
struct struct_fb_type fb_02_param={fb_02引脚p1地址,fb_02引脚p2地址,fb_02引脚out地址};
[0059]
fb_type(fb_02_param);
[0060]
需要说明的是,fun的处理方式参考fb,两个实现机制一致。
[0061]
在获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址之后,可以根据所获取的引脚地址获取相应的数据,并可以对获取数据后的组态后二进制文件进行编译和运行,从而实现相应的逻辑控制和/或数据处理等功能。
[0062]
通过上述过程可知,源算法库在编译时将变量的地址由编译时绑定变为运行时绑定,以实现动态绑定,也即fb、fun功能块调用实现变量地址运行时动态绑定,从而使得现场侧能够正常运行相应的逻辑算法。其中,为了解决编译源算法库时除了逻辑确定,所有变量的真实运行地址都是不确定的问题,可在控制器中定义一个用户自定义栈,源算法库运行时所需要的所有引脚信息通过自定义栈在运行时将变量地址传递给源算法库中的接口,本质上就是源算法库在编译时将变量的地址由编译时绑定变为运行时绑定。
[0063]
通过上述过程可知,能够很好的满足工业控制组态中对高级算法复用的需要,也能满足算法开发者对于算法保密性的要求。在使用上,源算法库的开发和现场使用基本一致,不需要额外的学习以及操作所有差异性都在后台处理。对于现场使用来讲,源码提供的算法以及二进制提供的算法没有差异,组态方式完全一致。现场侧运行来讲,也基本没有额外的空间以及时间消耗,满足现场侧资源紧缺以及实时性要求高的特性。
[0064]
本技术公开的上述技术方案,将源算法库中的逻辑算法编译成二进制文件形式,得到源算法对应的发布包,且将发布包导入到现场侧的上位机中,以使得现场侧的上位机对二进制文件进行组态、编译和运行,由于二进制文件并非是源码级别,且基于二进制文件并无法进行破解,因此,则可以保证算法库的安全性。而且由于发布包中包含有功能块和引脚信息,且现场侧的上位机可以基于组态后的二进制文件所包含的这些信息而动态地获取对应的引脚地址,以基于引脚地址进行相应数据的获取并进行后续的编译和运行,因此,则能够保证源算法库可以实现远程编译及现场侧端的正常使用,而并不需要到现场进行算法库的部署,从而可以使得算法库可以更好地实现推广和复用,并可以降低算法库的使用成本和复杂度。
[0065]
本技术实施例提供的一种算法库处理方法,将发布包导入到现场侧的上位机中,可以包括:
[0066]
接收选定指令集,根据选定指令集将发布包导入到现场侧的上位机中。
[0067]
在本技术中,后台在将发布包导入到现场侧的上位机中时,可以接收现场侧的用户根据现场侧情况以及后台所支持的指令集(后台可以支持多种指令集,例如:x86、arm、mips、risc等)而向后台发送选定指令集。后台在接收到选定指令集后,可以根据选定指令集将发布包导入到现场侧的上位机中,以更好地适配现场侧的上位机,从而保证现场侧能够正常进行发布包的组态及其中二进制文件的运行。
[0068]
本技术实施例提供的一种算法库处理方法,获取源算法库,可以包括:
[0069]
获取内部逻辑算法调试成功的源算法库。
[0070]
在本技术中,算法开发者在使用逻辑组态软件进行逻辑算法组态,以得到相应的逻辑算法之后,可以对逻辑算法进行调试,并判断调试是否成功,若否,则表明所设计的逻辑算法可能存在问题,因此,则根据调试结果进行逻辑算法调整,并继续对调整后的逻辑算法进行调试,若是,则表明所设计的逻辑算法是正常的,因此,则可以将调试成功的逻辑算法构成的源算法库发送至后台或者后台进行主动获取,以使后台获取到内部逻辑算法调试成功的源算法库中,从而保证源算法库中的逻辑算法能够正常运行。
[0071]
本技术实施例提供的一种算法库处理方法,发布包还可以包括有c语言编译所需的头文件信息。
[0072]
在本技术中,后台对源算法库进行编译所得到的发布包中还可以包含有c语言编译所需的头文件信息,以便于后续可以基于c语言编译所需的头文件信息来进行编译,从而提高编译的效率,并更好地实现变量地址的动态绑定。
[0073]
本技术实施例提供的一种算法库处理方法,现场侧的上位机对发布包中相应的二进制文件进行组态,可以包括:
[0074]
现场侧的上位机在iec中对发布包中相应的二进制文件进行组态。
[0075]
在本技术中,现场侧的上位机对发布包中相应的二进制文件进行组态时,具体可以在iec中对发布包中相应的二进制文件进行组态,以基于iec实现标准化组态。具体可以参见图3,其示出了本技术实施例提供的接口参与iec组态的示意图。
[0076]
本技术实施例还提供了一种算法库处理装置,参见图4,其示出了本技术实施例提供的一种算法库处理装置的结构示意图,可以包括:
[0077]
编译模块41,用于获取源算法库,将源算法库中的逻辑算法编译成二进制文件,得到源算法库对应的发布包;发布包中包含逻辑算法对应的功能块及引脚信息;
[0078]
导入模块42,用于将发布包导入到现场侧的上位机中,由现场侧的上位机对发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
[0079]
本技术实施例提供的一种算法库处理装置,导入模块42可以包括:
[0080]
接收单元,用于接收选定指令集,根据选定指令集将发布包导入到现场侧的上位机中。
[0081]
本技术实施例提供的一种算法库处理装置,编译模块41可以包括:
[0082]
获取单元,用于获取内部逻辑算法调试成功的源算法库。
[0083]
本技术实施例提供的一种算法库处理装置,发布包还可以包括有c语言编译所需的头文件信息。
[0084]
本技术实施例还提供了一种算法库处理设备,参见图5,其示出了本技术实施例提供的一种算法库处理设备的结构示意图,可以包括:
[0085]
存储器51,用于存储计算机程序;
[0086]
处理器52,用于执行存储器51存储的计算机程序时可实现如下步骤:
[0087]
获取源算法库,将源算法库中的逻辑算法编译成二进制文件,得到源算法库对应的发布包;发布包中包含逻辑算法对应的功能块及引脚信息;将发布包导入到现场侧的上
位机中,由现场侧的上位机对发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
[0088]
本技术实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
[0089]
获取源算法库,将源算法库中的逻辑算法编译成二进制文件,得到源算法库对应的发布包;发布包中包含逻辑算法对应的功能块及引脚信息;将发布包导入到现场侧的上位机中,由现场侧的上位机对发布包中相应的二进制文件进行组态,获取与组态后二进制文件中的功能块中的引脚信息对应的引脚地址,并根据引脚地址获取相应数据且对获取数据后的组态后二进制文件进行编译和运行。
[0090]
该可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(randomaccess memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0091]
本技术提供的一种算法库处理装置、设备及可读存储介质中相关部分的说明可以参见本技术实施例提供的一种算法库处理方法中对应部分的详细说明,在此不再赘述。
[0092]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
[0093]
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1