一种实现功能库的动态引用的方法和装置制造方法

文档序号:6628576阅读:182来源:国知局
一种实现功能库的动态引用的方法和装置制造方法
【专利摘要】本申请提供了一种实现功能库的动态引用的方法和装置,该方法包括:将功能库按照预设划分规则划分为至少两个子功能库;对所述至少两个子功能库和调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系。在本申请实施例中,可以从一定程度上减少工程组态时需要编译和下载的内容,从而提高了组态效率,也在一定程度上加快了工程实施进程。并且,在功能库中的功能内部逻辑修改时不会对调用程序产生影响,不需要对调用程序重新编译下载,这样在功能库升级过程中能有效提高工程组态升级实施效率。
【专利说明】一种实现功能库的动态引用的方法和装置

【技术领域】
[0001]本申请涉及工业控制【技术领域】,特别涉及一种实现功能库的动态引用的方法和装置。

【背景技术】
[0002]在工业控制系统中,系统功能库由常用的一些完成特定功能的功能块和函数构成。例如:常用的与功能块、或功能块和非功能块,还有工业控制系统常用的PID功能块、点击控制功能块等。功能库提供的各功能模块是构成控制逻辑的基础,使用库中提供的功能方便工程人员快速地组织控制逻辑。功能库是工程人员快速高效完成组态任务的基础,实现功能库的动态扩展和引用,可以最大限度地降低功能库改动引起的对现有组态的影响,并可便于功能库的开发人员持续地开发和调整功能库。
[0003]其中,功能库是指功能的集合,所指功能为:与调用程序相对独立的,实现一些完整特定功能的代码逻辑块,包括功能块、函数等。而调用程序是指调用功能库中的某个或某些具体功能去实现特定需求功能的逻辑程序,包括用户程序、自定义功能块、自定义函数坐寸ο
[0004]在现有技术中,功能库的引用是这样实现的:现有技术中的所有功能集中在一个功能库中,在控制器中为功能库划分一片固定的内存区域,库中所有功能块和函数预先编译生成绝对入口地址。触发调用程序第一次引用功能库时,需要将功能库的所有信息下载至控制器,并固化在控制器中。以后调用程序调用功能库中的功能时,直接使用绝对地址即可。


【发明内容】

[0005]但是发明人在研究过程中发现,在现有技术中的所有系统功能块和函数集中在一个库中,用户无法对系统功能库操作,且在组态只使用了一个系统功能块或函数的情况下也需要下载全部的系统功能库信息。而控制系统升级需要增加新的系统功能块或函数时,也需要重新修改整个系统功能块库及其配置文件,运用到已有现场组态升级时,需要离线下载造成现场停车影响工业生产。
[0006]本申请所要解决的技术问题是提供一种实现功能库的动态引用的方法,用以尽量避免现有技术在引用功能库时组态软件需要下载全部的系统功能库信息从而导致的组态效率较低的问题。
[0007]本申请还提供了一种实现功能库的动态引用的装置,用以保证上述方法在实际中的实现及应用。
[0008]为了解决上述问题,本申请公开了一种实现功能库的动态引用的方法,该方法包括:
[0009]将功能库按照预设划分规则划分为至少两个子功能库;所述子功能库为实现一个或多个独立功能的代码逻辑块,包括:一份内部接口表、一份外部接口表和一片功能代码区;所述内部接口表的表项保存所引用的其他子功能库中的功能的对外调用接口信息,所述外部接口表的表项为本子功能库中的功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体;所述功能库包括:子功能库索引表和子功能库,所述子功能库索引表用于保存当前功能库中所有有效子功能库的标识和地址;
[0010]在子功能库索引表中新增、修改或者删除子功能库索引项,并新增、修改或者删除与所述子功能库索引项对应的子功能库;
[0011]对所述至少两个子功能库和调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系。
[0012]可选的,所述对所述至少两个子功能库和调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系,包括:
[0013]对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接口信息;
[0014]对调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
[0015]可选的,所述对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接口信息,包括:
[0016]确定所述调用程序调用的所述子功能库的外部接口表项,以便调用程序获得所述子功能库中的功能的对外调用接口信息,并通过所述子功能库中的功能的对外调用接口信息访问所述子功能库中的功能;
[0017]确定所述调用程序调用的所述子功能库的内部接口表项,以便子功能库获得所引用的其他子功能库中的功能的对外调用接口信息,并通过所述其他子功能库中的功能的对外调用接口信息访问其他子功能库中的功能。
[0018]可选的,还包括:
[0019]响应于用户触发的请求,触发相应的调用程序依据所述对应关系引用对应的子功能库。
[0020]本申请还提供了一种实现功能库的动态引用的装置,包括:
[0021]划分模块,用于将功能库按照预设划分规则划分为至少两个子功能库;所述子功能库为实现一个或多个独立功能的代码逻辑块,包括:一份内部接口表、一份外部接口表和一片功能代码区;所述内部接口表的表项保存所引用的其他子功能库中的功能的对外调用接口信息,所述外部接口表的表项为本子功能库中的功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体;所述功能库包括:子功能库索引表和子功能库,所述子功能库索引表用于保存当前功能库中所有有效子功能库的标识和地址;
[0022]更新索引项模块,用于在子功能库索引表中新增、修改或者删除子功能库索引项;
[0023]更新子功能库模块,用于新增、修改或者删除与所述子功能库索引项对应的子功能库;
[0024]编译模块,用于对所述至少两个子功能库和引用所述子功能库的调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系。
[0025]可选的,所述编译模块,包括:
[0026]子功能库编译模块,用于对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接Π f目息;
[0027]调用程序编译模块,用于对调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
[0028]可选的,所述子功能库编译模块包括:
[0029]第一确定子模块,用于确定所述调用程序调用的所述子功能库的外部接口表项,以便调用程序获得所述子功能库中的功能的对外调用接口信息,并通过所述子功能库中的功能的对外调用接口信息访问所述子功能库中的功能;
[0030]第二确定子模块,用于确定所述调用程序引用的所述子功能库中的内部接口表的表项,以便子功能库获得所引用的其他子功能库中的功能的对外调用接口信息,并通过所述其他子功能库中的功能的对外调用接口信息访问其他子功能库中的功能。
[0031]可选的,还包括:
[0032]触发模块,用于响应于用户触发的请求,触发相应的调用程序依据所述对应关系引用对应的子功能库。
[0033]与现有技术相比,本申请包括以下优点:
[0034]在本申请实施例中,通过将功能库划分为不同的子功能库,若在实际工业控制系统中只需要使用一个子功能库,那么组态软件就只需要编译和下载一个子功能库的信息即可,若不需要使用任何系统功能块和函数,就不需要编译和下载任何系统功能库的信息。因此,本申请实施例在一定程度上减少了编译和下载内容,从而提高了组态效率,也在一定程度上加快了工程实施进程。并且,在功能库中的功能内部逻辑修改时不会对调用程序产生影响,不需要对调用程序重新编译下载,这样在功能库升级过程中能有效提高组态升级实施效率。
[0035]进一步的,在子功能库中子功能的代码逻辑发生变化时,内部接口表和外部接口表都不需要改动,用户程序对子功能库中动能的调用也不需要改动。
[0036]进一步的,由于本申请中对功能库的扩展和引用以子功能库为单位,一方面使得调用子功能库和被调用子功能库相对独立,被调用子功能库的改动对调用子功能库不产生影响,另一方面使得调用程序和被调用子功能库相对独立,而且增加和修改子功能库对未涉及的调用程序没有任何影响。这也使得功能库的扩展和局部修改很方便、安全且实用。
[0037]进一步的,在控制系统使用过程中,若增加新的子功能库,不需要对已有子功能库做任何改动,只需要提供新的子功能库即可实现。若已有现场运行组态在升级过程中不需要增加对新的子功能库的使用,则增加子功能库的系统升级情况就不会对现场已稳定的程序运行和生产控制产生任何扰动。并且,在子功能库中新增功能、调整功能代码、删除未使用到的功能均不会对已有的调用程序产生影响,从而保证了功能库的扩展和局部修改的方便、安全且实用。
[0038]当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

【专利附图】

【附图说明】
[0039]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0040]图1是本申请中子功能库的基本结构示意图;
[0041]图2是本申请中实现功能库的动态引用的方法实施例的流程图;
[0042]图3是本申请中建立子功能库索引关系的不意图;
[0043]图4是为本申请中通过子功能库的外部接口实现调用程序引用子功能库的内部功能的不意图;
[0044]图5是本申请中通过内部接口表实现子功能库之间功能调用的示意图;
[0045]图6是本申请的实现功能库的动态引用的装置实施例的结构示意图。

【具体实施方式】
[0046]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0047]在本申请实施例中,需要预先将功能库按照预设划分规则划分为至少两个子功能库,例如参考工控行业基本需求和用户特殊需求等对功能库进行划分,即将功能库划分为若干独立的子功能库,而功能库的开发和管理以子功能库为单位。其中,子功能库具体可以包括:一份内部接口表、一份外部接口表和一片功能代码区。内部接口表的内部接口表项保存所引用的外部功能的对外调用接口信息,所述外部接口表的外部接口表项为内部功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体。
[0048]参考图1所示,为本申请中子功能库的基本构成示意图。其中,每个原始子功能库至少包括一份内部接口表、一份外部接口表和一片功能代码区。内部接口表中,每个内部接口表项登记了所引用的外部功能的对外调用接口信息。在生成原始子功能库时将各内部功能所引用的所有的外部功能登记到该内部接口表,并建立内部功能与这些内部接口表项的引用关系,从而使内部功能通过这些内部接口表项间接访问外部功能。外部接口表中,每个外部接口表项作为内部功能的对外调用接口,均一一与内部功能关联。调用程序只能通过调用这些外部接口表项访问内部功能。功能代码区:存放当前子功能库所有功能的代码逻辑实体。
[0049]其中,子功能库的内部接口表可以直接存放当前子功能库调用的其他子库或系统提供的功能的对外调用接口地址。外部接口表则存放了跳转到当前子功能库中所有功能的代码入口地址的跳转指令。在原始子功能库中,内部接口表中外部功能的对外调用接口地址为空地址,外部接口表中存放的入口地址是该功能在本子功能库的相对地址。
[0050]参考图2所示,为本申请的一种实现功能库的动态引用的方法实施例的流程图,本实施例具体可以包括:
[0051]步骤201:将功能库按照预设划分规则划分为至少两个子功能库。
[0052]首先将功能库按照预设划分规则划分为至少两个子功能库,具体可以参考图1所示。该子功能库为实现一个或多个独立功能的代码逻辑块,该子功能库例如可以包括:一份内部接口表、一份外部接口表和一片功能代码区;所述内部接口表的表项保存所引用的其他子功能库中的功能的对外调用接口信息,所述外部接口表的表项为本子功能库中的功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体。
[0053]在本申请实施例中,功能库可以包括:子功能库索引表和子功能库,该子功能库索引表用于保存当前功能库中所有有效子功能库的标识和地址,这样通过子功能库索引表可以实现对子功能库的记录和管理。
[0054]步骤202:在子功能库索引表中新增、修改或者删除子功能库索引项,并新增、修改或者删除与所述子功能库索引项对应的子功能库。
[0055]参考图3所示,为本申请中建立子功能库索引关系的示意图。对于新增的子功能库,首先,在功能库索引表中分配相应的索引项,只有在索引表中有对应索引项的子功能库才是有效的,并允许被调用程序所引用。然后,添加原始的子功能库到存储子功能库区域的空闲区域。对于更新的子功能库,如图3,首先,在功能库索引表中更新相应的索引项,然后,将更新后的原始子功能库更新到子功能库区域的相应位置。而对于删除子功能库,则需要在功能库索引表中删除相应的索引项,同时在子功能库区域中对应删除存储的子功能库。
[0056]在本申请实施例中,对于添加子功能库来讲,在功能库索引表中申请一个子功能库索引项和占用空间后,在子功能库索引项中登记该子功能库的库信息,可以包括子功能库名称、ID、在子功能库区域的占用地址和长度等。申请成功后,在子功能库区域中的对应位置添加该原始子功能库即可。而对于更新子功能库来讲,在功能库索引表中查询对应的索引项,并更新该子功能库的库信息。如果该子功能库的长度变长,则需要重新申请占用空间,并更新对应的索引项。如果该子功能库的长度变短,则保持该子功能库的基地址不变,并减少其占用空间,更新该子功能库对应的索引项。
[0057]步骤203:对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接口信息。
[0058]在每次添加、更新或删除子功能库后,将所引用的功能的对外调用接口的真实地址存储在该内部接口表中,从而建立内部功能与外部功能的引用关系。并且,在外部接口表中也对这些功能的对外调用接口进行重定位。即,重定位子功能库的内部接口表中表项的内容和外部接口表中每个表项记录的功能的对外调用接口信息。在本步骤的实现过程中,具体的编译过程可以包括:
[0059]步骤Al:确定所述调用程序调用的所述子功能库的外部接口表项,以便调用程序获得所述子功能库中的功能的对外调用接口信息,并通过所述子功能库中的功能的对外调用接口信息访问所述子功能库中的功能。
[0060]在原始子功能库中,外部接口表登记了内部功能的入口跳转指令。参考图4所示,为本申请中通过子功能库的外部接口实现调用程序引用内部功能的示意图。假设功能Al在子功能库A中的入口相对地址为0x1000,这时外部接口表项Wl的内容为“JUMP TO0x1000”,即表示跳转到相对地址0x1000处。
[0061]具体在重定位外部接口表时,根据当前子功能库在子功能库区域中的绝对基地址,将各外部接口表项中的入口相对地址改为绝对地址。再参考图4所示,假设外部接口表项Wl的内容为“JUMP TO 0x1000”,子功能库A的绝对基地址为0x10000,那么Wl的内容改为“JUMP TO 0x11000”。
[0062]需要说明的是,调用程序在引用子功能库的时候,如果由于子功能库更新导致功能在外部接口表中的位置发生变动,则需要更新所有被调用程序的引用关系,调用程序通过访问外部接口表项即可调用相应的功能,否则无需更改调用程序和子功能库的引用关系。再参考图4所示,假如调用程序需要调用Al,只需访问外部接口表项W1,从而间接跳转到功能Al的绝对入口地址,从而实现对Al的引用。如果由于子功能库的更新导致功能在外部接口表中的位置发生变动,则需要更新所有相关的调用程序的引用关系,但不需修改未影响的调用程序。假设子功能库A发生修改更新,功能Al的外部接口表项从Wl移到W2,则调用程序应访问外部接口表项W2来引用Al。
[0063]步骤A2:确定所述调用程序所引用的所述子功能库的内部接口表的表项,以便子功能库获得所引用的其他子功能库中的功能的对外调用接口信息,并通过所述其他子功能库中的功能的对外调用接口信息访问其他子功能库中的功能。
[0064]在子功能库中,通过访问内部接口表获取其他子功能库的功能的对外调用接口地址,从而间接访问外部功能。参考图5所示,为本申请中通过内部接口实现子功能库之间调用的示意图。在子功能库A的功能Al中需要访问外部功能BI,将BI登记在内部接口表项NI中,功能I通过访问NI间接调用BI。在原始子功能库中尚未建立与BI的引用关系,NI的值为空。
[0065]具体在重定位内部接口表时,可以依次根据子功能库的内部接口表中登记的外部功能,从当前的子功能库区域中寻找对应的外部功能的外部调用接口的真实地址,并填写到内部接口表中。再参考图5所示,假设外部功能BI的实际调用接口地址为0x20100,那么内部接口表项NI的内容改为0x20100。
[0066]可以理解的是,在当前子功能对应的外部接口表项发生变化的情况下,在本申请实施例中,需要将变化后的外部接口表项确定为调用程序引用当前子功能库以实现当前子功能的调用接口。
[0067]步骤204:对调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
[0068]对子功能库编译完毕之后再对调用程序进行编译,从而生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
[0069]可见在本申请实施例中,通过将功能库划分为不同的子功能库,从而将子功能库作为调用程序引用的对象,若在工业控制系统中只需要使用一个子功能库,那么组态软件就只需要编译和下载一个子功能库的信息即可,若不需要使用任何系统功能块和函数,就不需要编译和下载任何系统功能库的信息。因此,本申请实施例在一定程度上减少了编译和下载内容,从而提高了组态效率,也在一定程度上加快了工程实施进程。并且,在功能库中的功能内部逻辑修改时不会对调用程序产生影响,不需要对调用程序重新编译下载,这样也能提高工程组态效率。
[0070]进一步的,由于本申请中对功能库的扩展和引用以子功能库为单位,一方面使得调用子功能库和被调用子功能库相对独立,被调用子功能库的改动对调用子功能库不产生影响,另一方面使得调用程序和被调用子功能库相对独立,而且增加和修改子功能库对未涉及的调用程序没有任何影响。这也使得功能库的扩展和局部修改很方便、安全且实用。
[0071]可见,在本申请实施例中,在控制系统使用过程中,若增加新的子功能库,不需要对已有子功能库做任何改动,只需要提供新的子功能库即可实现。若已有现场运行组态在升级过程中不需要增加对新的子功能库的使用,则增加子功能库的系统升级情况就不会对现场已稳定的程序运行和生产控制产生任何扰动。并且,在子功能库中新增功能、调整功能代码、删除未使用到的功能均不会对已有的调用程序产生影响,从而保证了功能库的扩展和局部修改的方便、安全且实用。
[0072]随着计算机技术、通信技术和控制技术的发展,传统的工业控制领域正经历着一场前所未有的变革,开始向网络化方向发展。在工业控制系统中,控制器可以通过执行计算机程序来实现对工业控制系统中各个部件或者设置的使用。
[0073]如果在实际应用中用户触发了某个请求,例如,通过执行相应的调用程序来关闭阀门等。当用户触发请求时,控制器首先需要依据当前请求来确定与当前请求对应的调用程序。例如当用户请求关闭阀门时,则确定出对应实现关闭阀门的功能的调用程序,触发关闭阀门的调用程序依据确定的对应关系调用对应的子功能库中的功能即可。在实际应用中,各个请求的功能由工业控制系统中的控制器执行对应的调用程序实现,而调用程序所引用的子功能库中的功能则是由各个子功能库提供的。
[0074]对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0075]与上述本申请一种基于功能库响应用户请求的方法实施例所提供的方法相对应,参见图6,本申请还提供了一种功能库的动态引用装置实施例,在本实施例中,该装置可以包括:
[0076]划分模块601,用于将功能库按照预设划分规则划分为至少两个子功能库;所述子功能库为实现一个或多个独立功能的代码逻辑块,包括:一份内部接口表、一份外部接口表和一片功能代码区;所述内部接口表的表项保存所引用的其他子功能库中的功能的对外调用接口信息,所述外部接口表的表项为本子功能库中的功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体;所述功能库包括:子功能库索引表和子功能库,所述子功能库索引表用于保存当前功能库中所有有效子功能库的标识和地址;
[0077]更新索引项模块602,用于在子功能库索引表中新增、修改或者删除子功能库索引项。
[0078]更新子功能库模块603,用于新增、修改或者删除与所述子功能库索引项对应的子功能库。
[0079]编译模块604,用于对所述至少两个子功能库进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系。其中,所述编译模块604,具体可以包括:
[0080]子功能库编译模块,用于对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接Π f目息;
[0081]调用程序编译模块,用于对调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
[0082]其中,所述子功能库编译模块具体包括:
[0083]第一确定子模块,用于确定所述调用程序调用的所述子功能库的外部接口表项,以便调用程序获得所述子功能库中的功能的对外调用接口信息,并通过所述子功能库中的功能的对外调用接口信息访问所述子功能库中的功能;以及,第二确定子模块,用于确定所述调用程序访问所述子功能库中的功能时内部接口表的表项,以便子功能库获得所引用的其他子功能库中的功能的对外调用接口信息,并通过所述其他子功能库中的功能的对外调用接口信息访问其他子功能库中的功能。
[0084]可选的,在不同的实施例中,该装置还可以包括:
[0085]触发模块,用于响应于用户触发的请求,触发相应的调用程序依据所述对应关系引用对应的子功能库。
[0086]可见,在本申请实施例中,在控制系统使用过程中,若增加新的子功能库,不需要对已有子功能库做任何改动,只需要提供新的子功能库即可实现。若已有现场运行组态在升级过程中不需要增加对新的子功能库的使用,则增加子功能库的系统升级情况就不会对现场已稳定的程序运行和生产控制产生任何扰动。并且,在子功能库中新增功能、调整功能代码、删除未使用到的功能均不会对已有的调用程序产生影响,从而保证了功能库的扩展和局部修改的方便、安全且实用。
[0087]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0088]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0089]以上对本申请所提供的实现功能库的动态引用的方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种实现功能库的动态引用的方法,其特征在于,该方法包括: 将功能库按照预设划分规则划分为至少两个子功能库;所述子功能库为实现一个或多个独立功能的代码逻辑块,包括:一份内部接口表、一份外部接口表和一片功能代码区;所述内部接口表的表项保存所引用的其他子功能库中的功能的对外调用接口信息,所述外部接口表的表项为本子功能库中的功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体;所述功能库包括:子功能库索引表和子功能库,所述子功能库索引表用于保存当前功能库中所有有效子功能库的标识和地址; 在子功能库索引表中新增、修改或者删除子功能库索引项,并新增、修改或者删除与所述子功能库索引项对应的子功能库; 对所述至少两个子功能库和调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系。
2.根据权利要求1所述的方法,其特征在于,所述对所述至少两个子功能库和调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系,包括: 对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接口信息; 对调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
3.根据权利要求2所述的方法,其特征在于,所述对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接口信息,包括: 确定所述调用程序调用的所述子功能库的外部接口表项,以便调用程序获得所述子功能库中的功能的对外调用接口信息,并通过所述子功能库中的功能的对外调用接口信息访问所述子功能库中的功能; 确定所述调用程序调用的所述子功能库的内部接口表项,以便子功能库获得所引用的其他子功能库中的功能的对外调用接口信息,并通过所述其他子功能库中的功能的对外调用接口信息访问其他子功能库中的功能。
4.根据权利要求1?3任一项所述的方法,其特征在于,还包括: 响应于用户触发的请求,触发相应的调用程序依据所述对应关系引用对应的子功能库。
5.一种实现功能库的动态引用的装置,其特征在于,包括: 划分模块,用于将功能库按照预设划分规则划分为至少两个子功能库;所述子功能库为实现一个或多个独立功能的代码逻辑块,包括:一份内部接口表、一份外部接口表和一片功能代码区;所述内部接口表的表项保存所引用的其他子功能库中的功能的对外调用接口信息,所述外部接口表的表项为本子功能库中的功能的对外调用接口信息,所述功能代码区用于保存子功能库所有功能的代码逻辑实体;所述功能库包括:子功能库索引表和子功能库,所述子功能库索引表用于保存当前功能库中所有有效子功能库的标识和地址; 更新索引项模块,用于在子功能库索引表中新增、修改或者删除子功能库索引项; 更新子功能库模块,用于新增、修改或者删除与所述子功能库索引项对应的子功能库; 编译模块,用于对所述至少两个子功能库和引用所述子功能库的调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库之间的引用关系。
6.根据权利要求5所述的装置,其特征在于,所述编译模块,包括: 子功能库编译模块,用于对所述子功能库索引项中列出的子功能库进行编译,重定位所述每个子功能库的内部接口表和外部接口表中的每个表项记录的功能的对外调用接口信息; 调用程序编译模块,用于对调用程序进行编译,以分别生成各个调用程序与其引用的各个子功能库中的功能之间的引用关系。
7.根据权利要求6所述的装置,其特征在于,所述子功能库编译模块包括: 第一确定子模块,用于确定所述调用程序调用的所述子功能库的外部接口表项,以便调用程序获得所述子功能库中的功能的对外调用接口信息,并通过所述子功能库中的功能的对外调用接口信息访问所述子功能库中的功能; 第二确定子模块,用于确定所述调用程序引用的所述子功能库中的内部接口表的表项,以便子功能库获得所引用的其他子功能库中的功能的对外调用接口信息,并通过所述其他子功能库中的功能的对外调用接口信息访问其他子功能库中的功能。
8.根据权利要求5?7任一项所述的装置,其特征在于,还包括: 触发模块,用于响应于用户触发的请求,触发相应的调用程序依据所述对应关系引用对应的子功能库。
【文档编号】G06F17/30GK104199984SQ201410503255
【公开日】2014年12月10日 申请日期:2014年9月26日 优先权日:2014年9月26日
【发明者】刘志勇, 平志明, 陈岚岚, 吴洁芸, 周曼 申请人:浙江中控技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1