一种配置和调度虚拟i/o模块的方法和装置
技术领域
本发明涉及自动控制领域,特别是涉及一种配置和调度虚拟I/O模块的方法和装置。
背景技术
在自动控制领域,为了便于生产管理和差异化定价,I/O(Input/Output,输入/输出)模块的硬件与软件通常绑定,一个硬件通常只完成一个专用功能,不通用。但该绑定模式对用户而言,造成了性能和接口的浪费,特别是计算机技术发展带来元器件性能大幅度提升的当下。对于那些想提升生产制造自动化水平又苦于自动控制系统构建成本的用户而言,能否在复用现有硬件资源基础上,实现不同I/O功能的扩展,成为用户对设备厂商对提高资源利用率的新要求。
发明内容
由于硬件开发周期普遍较长,一旦功能的修改涉及到硬件,造成硬件设计方案迭代,则极易引起设备厂家投入过高,甚至与产出不成正比。对设备厂家而言,也需要寻求一种方式降低对硬件开发的要求,尽可能从软件方面实现用户需求的变化,并为在不改变现有软硬件体系的情况下,为后续升级扩展留有足够的余量。
在现有技术中,以处理器模块为例,处理器模块的性能在完成逻辑运算之外,运算能力完全有富余,其正常工作的时候自带的以太网口数据报文量也留有足够裕量,那么完全可以通过软件和配置在现有的处理器模块上虚拟一个或多个通信I/O模块,在不影响逻辑运算功能的前提下由其实现多个连接、不同的第三方通信规约的以太网通信功能。
为此,我们提出一种配置和调度虚拟I/O模块的方法和装置,实现在同一组态软件框架内在同一物理硬件上支持不同的信号处理、输入和输出功能。
根据本发明的第一个方面,提供一种配置和调度虚拟I/O模块的方法,其包括:
基于同一物理硬件,配置一个或多个虚拟I/O模块并设置预定的参数,以生成配置文件;
根据所述配置文件生成一个或多个虚拟I/O模块实例;
根据所述配置文件将所述一个或多个虚拟I/O模块实例进行排序,形成执行队列;以及
按照周期方式对所述执行队列中的所述虚拟I/O模块实例进行调度。
根据本发明的第二个方面,提供一种配置和调度虚拟I/O模块的装置,其包括:
配置单元,用于基于同一物理硬件,配置一个或多个虚拟I/O模块并设置预定的参数,以生成配置文件;
生成单元,用于根据所述配置文件生成一个或多个虚拟I/O模块实例;
形成单元,用于根据所述配置文件将所述一个或多个虚拟I/O模块实例进行排序,形成执行队列;以及
调度单元,用于按照周期方式对所述执行队列中的所述虚拟I/O模块实例进行调度。
通过本发明的配置和调度虚拟I/O模块的方法和装置,通过软件配置在同一个物理硬件上虚拟一个或多个通信I/O模块,在不影响该物理硬件自身运算功能的前提下,由该物理硬件实现多个连接、不同的第三方通信规约的通信功能。通过本发明的方法和装置,在复用现有硬件资源的基础上,实现不同I/O功能的扩展,获得更好的硬件资源利用率。
附图说明
为进一步清楚解释本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,然而所提供的附图仅用于提供参考与说明,并非用来对本发明加以限制。
在下面的附图中:
图1是虚拟I/O模块系统组成示意图。
图2是根据本发明实施例的配置和调度虚拟I/O模块的方法的流程图。
图3是根据本发明实施例的配置和调度虚拟I/O模块的装置的示意图。
具体实施方式
以下通过特定的具体实施例来说明本发明所公开的实施方式,本领域技术人员可由本说明书所公开的内容了解本发明的优点与效果。本发明可通过其他不同的具体实施例加以施行或应用,本说明书中的各项细节也可基于不同观点与应用,在不悖离本发明的构思下进行各种修改与变更。另外,本发明的附图仅为简单示意说明,并非依实际尺寸的描绘。以下的实施方式将进一步详细说明本发明的相关技术内容,但所公开的内容并非用以限制本发明的保护范围。
图1是虚拟I/O模块系统组成示意图。如图1所示,该系统包括组件101、组件102和组件103。组件101为一种物理硬件,具体为为带处理器功能的物理硬件,所有软件功能基于该硬件实现。在一个具体的实施例中,该物理硬件是一种处理器模块。该物理硬件需具备足够的性能和资源容量以满足一个以上虚拟I/O模块实例的运行要求。
组件102为虚拟I/O模块,该模块复用组件101的硬件资源和软件资源,没有硬件实体,作为一个逻辑上的存在位于组件101内。该虚拟I/O模块根据需求实现不同的I/O功能,包括外部输入信号获取、信号的预处理及诊断以及信号处理结果的输出。虚拟I/O模块在组件101内可有多个不同的类型和数量,但其类型和数量受限于组件101的硬件资源和软件资源。在一个具体实施例中,硬件资源包括物理硬件的处理器(例如,CPU)的处理能力以及内存空间,软件资源包括该物理硬件对上通讯的信号量上限等。
组件103为硬件接口,位于组件101内,属于其硬件组成。所有虚拟I/O模块共享此硬件接口,因此虚拟I/O模块的功能实现受限于该硬件接口类型。外部输入信号获取以及信号处理结果的输出均通过此硬件接口实现。
在上述虚拟I/O模块系统描述的基础上,根据一个方面,本发明提供一种基于该虚拟I/O模块系统的配置和调度虚拟I/O模块的方法。
图2是根据本发明实施例的配置和调度虚拟I/O模块的方法的流程图。如图2所示,该方法包括如下步骤。
步骤S201,基于同一物理硬件,配置一个或多个虚拟I/O模块并设置预定的参数,以生成配置文件。
存在一种控制器或控制单元,通过控制组态软件对一个物理硬件进行配置,形成配置文件。其中,该物理硬件可以是一种处理器模块。需要说明的是,组态软件对虚拟IO模块的配置方式与其对普通IO模块的配置方式类似或相同,所形成的配置文件的格式也类似或相同。基于组态软件对物理硬件的配置过程,包括配置了哪些虚拟I/O模块(包括虚拟I/O模块的类型和数量),这些虚拟I/O模块在什么地方(即占用哪些槽位),为各个虚拟I/O模块配置哪些功能以及为实现这些功能设置正确的运行参数等,然后,根据对物理硬件的配置过程形成配置文件。
根据本发明的一个实施例,配置一个或多个虚拟I/O模块并设置预定的参数包括根据所述物理硬件的资源限制,配置一种类型或多种不同类型以及不同数量的虚拟I/O模块。其中,所述资源包括硬件资源和软件资源。具体来说,一个物理硬件有硬件资源和软件资源,如上所述,硬件资源包括物理硬件的处理器(例如,CPU)的处理能力以及内存空间,软件资源包括该物理硬件对上通讯的信号量上限等。控制组态软件对物理硬件进行虚拟I/O模块,需要考虑物理硬件本身的资源限制,当配置的虚拟I/O模块所需的资源超过物理硬件的资源限制时,就停止配置虚拟I/O模块。另外,虚拟I/O模块的类型是根据实际功能需求而确定的,不同实际功能需对应不同应用功能,也就是说,虚拟I/O模块的类型是根据应用功能而确定的。例如,希望物理硬件上实现MobusTCP通讯功能,那么就在该物理硬件上配置对应的虚拟IO模块;再如,希望物理硬件上实现GOOSE通讯功能,那么就在该物理硬件上配置对应的虚拟IO模块。另外,配置文件中设置的参数与应用功能有关,针对不同的应用功能设置不同的参数。例如,对于MobusTCP这种应用功能,需要设置的参数包括访问对象的IP地址、访问对象数据存放的地址等;而对于GOOSE这种应用功能,需要设置的参数包括访问对象的MAC地址,访问数据COID编号等。
步骤S202,根据所述配置文件生成一个或多个虚拟I/O模块实例。
在控制器或控制模块的控制下,物理硬件读取通过组态软件生成并下载的配置文件,然后校验配置文件的完整性和有效性。具体来说,所述根据所述配置文件生成一个或多个虚拟I/O模块实例包括:解析所述配置文件;以及根据从所解析的配置文件所获取的参数生成虚拟I/O模块实例。其中,解析所述配置文件的过程包括:通过组态软件生成的配置文件校验码以及配置文件内的参数区域校验码对配置文件校验,校验的时候先校验配置文件的,通过读取整个配置文件进行校验码计算和比对,通不过报错停止;然后读取参数区的校验码,对参数进行校验,通不过报错,停止解析。
根据一个具体实施例,所述解析所述配置文件包括:将从所述配置文件中获取的配置信息进行匹配,所述配置信息包括:虚拟I/O模块的型号、版本、输入信息、输出信息和预定的参数。
解析过程中会对配置文件中虚拟I/O模块的型号、版本以及输入、输出及参数等信息进行匹配校验,避免配置不匹配(比如版本升级)引起的实例化失败及运行异常。例如,当前物理硬件支持2种虚拟IO型号,但整个系统可以支持5种,如果配置的其他类型,则与当前物理硬件不匹配,因此需校验,确保错误的配置不被执行;版本、输入、输出和参数这个主要是防止升级后同一型号不匹配,该不匹配可能带来功能上的错误。
步骤S203,根据所述配置文件将所述一个或多个虚拟I/O模块实例进行排序,形成执行队列。
如上所述,配置文件中记录了虚拟I/O模块在什么地方(即占用哪些槽位),现在物理硬件中的管理进程需要根据配置文件,将虚拟I/O模块实例放置在对应的槽位上,并且虚拟I/O模块实例所放置的槽位的位置不会重复。例如,配置文件在同一硬件上配置了2种虚拟IO模块,第一种包括2个虚拟IO模块,分别在#1、#3槽,第二种包括3个虚拟IO模块,分别在#2、#4、#5槽。那么,在该步骤中,物理硬件中的管理进程可以将对应的这5个虚拟IO模块实例根据配置文件的配置放置在#1、#2、#3、#4、#5槽,所形成的执行队列可以是按照这#1、#2、#3、#4、#5槽的顺序依次执行。
根据一个优选的是实施例,可以根据虚拟I/O模块的优先级将所述虚拟I/O模块加入执行队列。具体来说,所述根据所述配置文件将所述虚拟I/O模块实例进行排序,形成执行队列包括:根据所述配置文件获取所述一个或多个虚拟I/O模块的运算调度周期;根据所述运算调度周期确定对应的各个虚拟I/O模块实例的优先级,其中,所述运算调度周期越短的虚拟I/O模块相对应的虚拟I/O模块实例的优先级越高;以及根据所述优先级将所述虚拟I/O模块实例进行排序,形成执行队列。
其中,运算调度周期是根据虚拟I/O模块功能及输入、输出刷新率的要求确定,也就是解析配置文件时从配置文件可以获取到当前配置的虚拟IO模块的运算调度周期。
为确保各虚拟I/O模块充分利用现有的软硬件资源,运算调度周期越短(即运算速度越快)的虚拟I/O模块对应的任务优先级越高,即对应的虚拟I/O模块实例的优先级越高。根据本发明的一个实施例,可以将优先级相同的虚拟I/O模块实例放在一起,具体来说,根据配置文件可以获知各个虚拟I/O模块的槽位号,将具有相同运算调度周期(即具有相同运算速度)的虚拟I/O模块实例各自的槽位号放置在同一优先级任务队列形成执行队列,然后依次执行。如上面记载的例子,配置文件在同一硬件上配置了2种虚拟IO模块,第一种包括2个虚拟IO模块,运算调度周期为10ms,将其优先级设为1,分别在#1、#3槽,第二种包括3个虚拟IO模块,运算调度周期为50ms,将其优先级设为2,分别在#2、#4、#5槽。那么,第一种虚拟IO模块实例的优先级就高于第二种的,最后可以有两个任务队列,一个对应10ms运算调度周期的,按#1、#3的顺序执行;一个对应50ms运算调度周期的,按#2、#4、#5的顺序执行。在一个优选的实施例中,优先级越高的虚拟I/O模块实例对应的任务队列越早执行。那么,在上面的例子中,优先执行10ms运算调度周期对应的任务队列,然后执行50ms运算调度周期对应的任务队列,所形成的执行顺序是#1、#3、#2、#4、#5。
步骤S204,按照周期方式对所述执行队列中的所述虚拟I/O模块实例进行调度。
如上所述,解析配置文件时从配置文件可以获取到当前配置的虚拟IO模块的运算调度周期,即每个虚拟IO模块都有对应的运算调度周期。那么,物理硬件中的管理进程对加入执行队列的所述虚拟I/O模块实例进行调度就要按照周期的方式进行。所以,所述按照周期方式对所述执行队列中的所述虚拟I/O模块实例进行调度包括:根据所述运算调度周期对所述执行队列中的所述虚拟I/O模块实例进行调度。如上文所述,运算调度周期是根据虚拟I/O模块功能及输入、输出刷新率的要求确定。
通过本发明的配置和调度虚拟I/O模块的方法,通过软件配置在同一个物理硬件上虚拟一个或多个通信I/O模块,在不影响该物理硬件自身运算功能的前提下,由该物理硬件实现多个连接、不同的第三方通信规约的通信功能。通过本发明的方法,在复用现有硬件资源的基础上,实现不同I/O功能的扩展,获得更好的硬件资源利用率。
根据另一个方面,本发明还提供一种基于该虚拟I/O模块系统的配置和调度虚拟I/O模块的装置。
图3是根据本发明实施例的配置和调度虚拟I/O模块的装置的示意图。如图3所示,该装置包括如下单元。
配置单元301,用于基于同一物理硬件,配置一个或多个虚拟I/O模块并设置预定的参数,以生成配置文件。
存在一种控制器或控制单元,通过控制组态软件对一个物理硬件进行配置,形成配置文件。其中,该物理硬件可以是一种处理器模块。需要说明的是,组态软件对虚拟IO模块的配置方式与其对普通IO模块的配置方式类似或相同,所形成的配置文件的格式也类似或相同。基于组态软件对物理硬件的配置过程,包括配置了哪些虚拟I/O模块(包括虚拟I/O模块的类型和数量),这些虚拟I/O模块在什么地方(即占用哪些槽位),为各个虚拟I/O模块配置哪些功能以及为实现这些功能设置正确的运行参数等,然后,根据对物理硬件的配置过程形成配置文件。
根据本发明的一个实施例,配置单元301包括:配置子单元,用于根据所述物理硬件的资源限制,配置一种类型或多种不同类型以及不同数量的虚拟I/O模块。其中,所述资源包括硬件资源和软件资源。具体来说,一个物理硬件有硬件资源和软件资源,如上所述,硬件资源包括物理硬件的处理器(例如,CPU)的处理能力以及内存空间,软件资源包括该物理硬件对上通讯的信号量上限等。控制组态软件对物理硬件进行虚拟I/O模块,需要考虑物理硬件本身的资源限制,当配置的虚拟I/O模块所需的资源超过物理硬件的资源限制时,就停止配置虚拟I/O模块。另外,虚拟I/O模块的类型是根据实际功能需求而确定的,不同实际功能需对应不同应用功能,也就是说,虚拟I/O模块的类型是根据应用功能而确定的。例如,希望物理硬件上实现MobusTCP通讯功能,那么就在该物理硬件上配置对应的虚拟IO模块;再如,希望物理硬件上实现GOOSE通讯功能,那么就在该物理硬件上配置对应的虚拟IO模块。另外,配置文件中设置的参数与应用功能有关,针对不同的应用功能设置不同的参数。例如,对于MobusTCP这种应用功能,需要设置的参数包括访问对象的IP地址、访问对象数据存放的地址等;而对于GOOSE这种应用功能,需要设置的参数包括访问对象的MAC地址,访问数据COID编号等。
生成单元302,用于根据所述配置文件生成一个或多个虚拟I/O模块实例。
在控制器或控制模块的控制下,物理硬件读取通过组态软件生成并下载的配置文件,然后校验配置文件的完整性和有效性。具体来说,生成单元302包括:解析子单元,用于解析所述配置文件;以及生成子单元,用于根据从所解析的配置文件所获取的参数生成虚拟I/O模块实例。其中,解析所述配置文件的过程包括:通过组态软件生成的配置文件校验码以及配置文件内的参数区域校验码对配置文件校验,校验的时候先校验配置文件的,通过读取整个配置文件进行校验码计算和比对,通不过报错停止;然后读取参数区的校验码,对参数进行校验,通不过报错,停止解析。
根据一个具体实施例,所述解析子单元包括:匹配次单元,用于将从所述配置文件中获取的配置信息进行匹配,所述配置信息包括:虚拟I/O模块的型号、版本、输入信息、输出信息和预定的参数。
解析过程中会对配置文件中虚拟I/O模块的型号、版本以及输入、输出及参数等信息进行匹配校验,避免配置不匹配(比如版本升级)引起的实例化失败及运行异常。例如,当前物理硬件支持2种虚拟IO型号,但整个系统可以支持5种,如果配置的其他类型,则与当前物理硬件不匹配,因此需校验,确保错误的配置不被执行;版本、输入、输出和参数这个主要是防止升级后同一型号不匹配,该不匹配可能带来功能上的错误。
形成单元303,用于根据所述配置文件将所述一个或多个虚拟I/O模块实例进行排序,形成执行队列。
如上所述,配置文件中记录了虚拟I/O模块在什么地方(即占用哪些槽位),现在物理硬件中的管理进程需要根据配置文件,将虚拟I/O模块实例放置在对应的槽位上,并且虚拟I/O模块实例所放置的槽位的位置不会重复。例如,配置文件在同一硬件上配置了2种虚拟IO模块,第一种包括2个虚拟IO模块,分别在#1、#3槽,第二种包括3个虚拟IO模块,分别在#2、#4、#5槽。那么,在该步骤中,物理硬件中的管理进程可以将对应的这5个虚拟IO模块实例根据配置文件的配置放置在#1、#2、#3、#4、#5槽,所形成的执行队列可以是按照这#1、#2、#3、#4、#5槽的顺序依次执行。
根据一个优选的是实施例,可以根据虚拟I/O模块的优先级将所述虚拟I/O模块加入执行队列。具体来说,所述形成单元303包括:获取子单元,用于根据所述配置文件获取所述一个或多个虚拟I/O模块的运算调度周期;确定子单元,用于根据所述运算调度周期确定对应的各个虚拟I/O模块实例的优先级,其中,所述运算调度周期越短的虚拟I/O模块相对应的虚拟I/O模块实例的优先级越高;以及形成子单元,用于根据所述优先级将所述虚拟I/O模块实例进行排序,形成执行队列。
其中,运算调度周期是根据虚拟I/O模块功能及输入、输出刷新率的要求确定,也就是解析配置文件时从配置文件可以获取到当前配置的虚拟IO模块的运算调度周期。
为确保各虚拟I/O模块充分利用现有的软硬件资源,运算调度周期越短(即运算速度越快)的虚拟I/O模块对应的任务优先级越高,即对应的虚拟I/O模块实例的优先级越高。根据本发明的一个实施例,可以将优先级相同的虚拟I/O模块实例放在一起,具体来说,根据配置文件可以获知各个虚拟I/O模块的槽位号,将具有相同运算调度周期(即具有相同运算速度)的虚拟I/O模块实例各自的槽位号放置在同一优先级任务队列形成执行队列,然后依次执行。如上面记载的例子,配置文件在同一硬件上配置了2种虚拟IO模块,第一种包括2个虚拟IO模块,运算调度周期为10ms,将其优先级设为1,分别在#1、#3槽,第二种包括3个虚拟IO模块,运算调度周期为50ms,将其优先级设为2,分别在#2、#4、#5槽。那么,第一种虚拟IO模块实例的优先级就高于第二种的,最后可以有两个任务队列,一个对应10ms运算调度周期的,按#1、#3的顺序执行;一个对应50ms运算调度周期的,按#2、#4、#5的顺序执行。在一个优选的实施例中,优先级越高的虚拟I/O模块实例对应的任务队列越早执行。那么,在上面的例子中,优先执行10ms运算调度周期对应的任务队列,然后执行50ms运算调度周期对应的任务队列,所形成的执行顺序是#1、#3、#2、#4、#5。
调度单元304,用于按照周期方式对所述执行队列中的所述虚拟I/O模块实例进行调度。
如上所述,解析配置文件时从配置文件可以获取到当前配置的虚拟IO模块的运算调度周期,即每个虚拟IO模块都有对应的运算调度周期。那么,物理硬件中的管理进程对加入执行队列的所述虚拟I/O模块实例进行调度就要按照周期的方式进行。所以,所述调度单元304包括:调度子单元,用于根据所述运算调度周期对所述执行队列中的所述虚拟I/O模块实例进行调度。如上文所述,运算调度周期是根据虚拟I/O模块功能及输入、输出刷新率的要求确定。
通过本发明的配置和调度虚拟I/O模块的装置,通过软件配置在同一个物理硬件上虚拟一个或多个通信I/O模块,在不影响该物理硬件自身运算功能的前提下,由该物理硬件实现多个连接、不同的第三方通信规约的通信功能。通过本发明的装置,在复用现有硬件资源的基础上,实现不同I/O功能的扩展,获得更好的硬件资源利用率。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。