本公开一般地涉及工业过程控制和自动化系统。更具体地说,本公开涉及在工业过程控制和自动化系统中使用功能块进行高级控制的方法和装置。
背景技术:
工业过程控制和自动化系统通常用于使大型和复杂的工业过程自动化。许多控制和自动化系统包括执行不同功能的多层控制器。例如,较低层可以包括接收来自传感器的测量并为致动器生成控制信号的控制器,并且较高层可以包括提供全厂(plantwide)优化解决方案或其他更高级别功能的控制器。较低级别控制器中的功能性常常使用功能块来实现。功能块表示可由控制器执行的代码的离散部分。可以以各种方式定义、连接和执行功能块的组以在控制器内提供所需的功能性。
技术实现要素:
本公开提供了一种在工业过程控制和自动化系统中使用功能块进行高级控制的方法和装置。
在第一实施例中,一种方法包括执行第一功能块,所述第一功能块被配置为(i)接收与工业过程控制和自动化系统相关联的多个输入数据值、(ii)对所述输入数据值进行预处理以及(iii)将预处理的输入数据值存储在共享存储器中。该方法还包括执行第二功能块,所述第二功能块被配置为(i)接收对所述共享存储器中的所述预处理的输入数据值的引用、(ii)调用一个或多个核心功能的执行以实现过程控制算法以及(iii)将输出数据值存储在共享存储器中。该方法还包括执行第三功能块,所述第三功能块被配置为(i)接收对所述共享存储器中的所述输出数据值的引用、(ii)对所述输出数据值进行后处理以及(iii)输出包含后处理的输出数据值的多个输出信号。
在第二实施例中,一种装置包括具有共享存储器的至少一个存储器设备。所述装置还包括至少一个处理设备,其在执行第一功能块期间被配置为(i)接收与工业过程控制和自动化系统相关联的多个输入数据值、(ii)对所述输入数据值进行预处理以及(iii)将预处理的输入数据值存储在共享存储器中。至少一个处理设备在执行第二功能块期间被配置为(i)接收对所述共享存储器中的所述预处理的输入数据值的引用、(ii)调用一个或多个核心功能的执行以实现过程控制算法以及(iii)将输出数据值存储在共享存储器中。至少一个处理设备在执行第三功能块期间进一步被配置为(i)接收对所述共享存储器中的所述输出数据值的引用、(ii)对所述输出数据值进行后处理以及(iii)输出包含后处理的输出数据值的多个输出信号。
在第三实施例中,非暂时性计算机可读介质体现至少一个计算机程序。所述至少一个计算机程序包括定义第一功能块的计算机可读程序代码,所述第一功能块被配置为(i)接收与工业过程控制和自动化系统相关联的多个输入数据值、(ii)对所述输入数据值进行预处理以及(iii)将预处理的输入数据值存储在共享存储器中。所述至少一个计算机程序还包括定义第二功能块的计算机可读程序代码,所述第二功能块被配置为(i)接收对共享存储器中的预处理的输入数据值的引用、(ii)调用一个或多个核心功能的执行以实现过程控制算法以及(iii)将输出数据值存储在共享存储器中。所述至少一个计算机程序还包括定义第三功能块的计算机可读程序代码,所述第三功能块被配置为(i)接收对共享存储器中的输出数据值的引用、(ii)对所述输出数据值进行后处理以及(iii)输出包含后处理的输出数据值的多个输出信号。
本领域技术人员根据以下附图、描述和权利要求中容易清楚其他技术特征。
附图说明
为了更完整地理解本公开,现在结合附图对以下描述进行参考,其中:
图1图示了根据本公开的示例工业过程控制和自动化系统;
图2图示了根据本公开的控制器中的高级控制功能性的示例功能块实现;
图3图示了根据本公开的由高级控制功能块使用的示例数据模型;
图4至图9图示了根据本公开的前台和后台任务执行高级控制功能性的示例使用;和
图10图示了根据本公开的工业过程控制和自动化系统中的高级控制的示例方法。
具体实施方式
在该专利文档中,下面讨论的图1到图10以及用于描述本发明原理的各种实施例仅作为说明,并且不应以任何方式被解释为限制本发明的范围。本领域技术人员将理解,本发明的原理可以以任何类型的适当布置的设备或系统来实现。
图1图示了根据本公开的示例工业过程控制和自动化系统100。如图1中所示,系统100包括促进至少一个产品或其他材料的生产或处理的各种部件。例如,系统100在这里用于促进对在一个或多个工厂101a-101n中的部件的控制。每个工厂101a-101n代表一个或多个处理设施(或其一个或多个部分),诸如用于生产至少一个产品或其他材料的一个或多个制造设施。通常,每个工厂101a-101n可以实现一个或多个过程,并且可以单独地或统称为处理系统。处理系统通常代表任何系统或其部分,被配置为以某方式处理一个或多个产品或其他材料。
在图1中,使用过程控制的普渡(purdue)模型来实现系统100。在普渡模型中,“级别0”可以包括一个或多个传感器102a和一个或多个致动器102b。传感器102a和致动器102b代表处理系统中的可以执行各种功能中的任何功能的部件。例如,传感器102a可以测量处理系统中的各种特性,诸如温度、压力或流率。此外,致动器102b可以改变处理系统中的各种特性。传感器102a和致动器102b可以代表任何合适的处理系统中的任何其他或附加部件。每个传感器102a包括用于测量处理系统中的一个或多个特性的任何合适的结构。每个致动器102b包括用于关于处理系统中的一个或多个状况操作或影响处理系统中的一个或多个状况的任何合适的结构。
至少一个网络104耦合到传感器102a和致动器102b。网络104促进与传感器102a和致动器102b的交互。例如,网络104可以传送来自传感器102a的测量数据,并向致动器102b提供控制信号。网络104可以代表任何合适的网络或网络的组合。作为特定示例,网络104可以代表以太网、电信号网络(诸如hart或foundationfieldbus网络)、气动控制信号网络或任何其他或附加的(一个或多个)类型的(一个或多个)网络。
在普渡模型中,“级别1”可以包括耦合到网络104的一个或多个控制器106。除其他之外,每个控制器106还可以使用来自一个或多个传感器102a的测量来控制一个或多个致动器102b的操作。例如,控制器106可以接收来自一个或多个传感器102a的测量数据,并使用测量数据来生成用于一个或多个致动器102b的控制信号。多个控制器106还可以操作在冗余配置中,诸如当一个控制器106作为主控制器操作时,而另一个控制器106作为备用控制器操作(其与主控制器同步,并且可以在在主控制器故障的情况下接管主控制器)。每个控制器106包括用于与一个或多个传感器102a进行交互并控制一个或多个致动器102b的任何合适的结构。每个控制器106可以例如代表多变量(multivariable)控制器,诸如鲁棒多变量预测控制技术(rmpct)控制器或实现模型预测控制(mpc)或其他高级预测控制(apc)的其他类型的控制器。作为特定示例,每个控制器106可以代表运行实时操作系统的计算设备。
两个网络108耦合到控制器106。网络108促进与控制器106的交互,诸如通过将数据传送到控制器106以及从控制器106传送数据。网络108可以代表任何合适的网络或网络的组合。作为特定示例,网络108可以代表一对以太网或一冗余对以太网,诸如来自honeywellinternationalinc的faulttolerantethernet(fte)网络。
至少一个交换机/防火墙110将网络108耦合到两个网络112。交换机/防火墙110可以将业务从一个网络传送到另一个网络。交换机/防火墙110还可以阻止一个网络上的业务到达另一个网络。交换机/防火墙110包括用于在网络之间提供通信的任何合适的结构,诸如honeywellcontrolfirewall(cf9)设备。网络112可以代表任何合适的网络,诸如一对以太网或fte网络。
在普渡模型中,“级别2”可以包括耦合到网络112的一个或多个机器级控制器114。机器级控制器114执行各种功能以支持控制器106、传感器102a以及致动器102b的操作和控制,其可以与特定件工业装备(例如锅炉或其他机器)相关联。例如,机器级控制器114可以记录由控制器106收集或生成的信息,诸如来自传感器102a的测量数据或用于致动器102b的控制信号。机器级控制器114还可以执行对控制器106的操作进行控制的应用,从而控制致动器102b的操作。此外,机器级控制器114可以提供对控制器106的安全访问。机器级控制器114中的每一个包括用于提供对机器或其他个别件装备的访问、控制或与之相关的操作的任何合适的结构。机器级控制器114中的每一个可以例如代表运行microsoftwindows操作系统的服务器计算设备。尽管未示出,但是可以使用不同的机器级控制器114来控制处理系统中的不同件装备(其中每件装备与一个或多个控制器106、传感器102a和致动器102b相关联)。
一个或多个操作员站116耦合到网络112。操作员站116代表提供对机器级控制器114的用户访问的计算或通信设备,其然后可以提供对控制器106(并且可能地提供对传感器102a和致动器102b)的用户访问。作为特定示例,操作员站116可以允许用户使用由控制器106和/或机器级控制器114收集的信息来审核传感器102a和致动器102b的操作历史。操作员站116还可以允许用户调整传感器102a、致动器102b、控制器106或机器级控制器114的操作。此外,操作员站116可以接收并显示由控制器106或机器级控制器114生成的警告、警报或其他消息或显示。操作员站116中的每一个包括用于支持系统100中的一个或多个部件的用户访问和控制的任何合适的结构。操作员站116中的每一个可以例如代表运行microsoftwindows操作系统的计算设备。
至少一个路由器/防火墙118将网络112耦合到两个网络120。路由器/防火墙118包括用于在网络之间提供通信的任何合适的结构,诸如安全路由器或组合路由器/防火墙。网络120可以代表任何合适的网络,诸如一对以太网或fte网络。
在普渡模型中,“级别3”可以包括耦合到网络120的一个或多个单元级(unit-level)控制器122。每个单元级控制器122通常与处理系统中的单元相关联,其代表一起操作以实施过程的至少一部分的不同机器的集合。单元级控制器122执行各种功能以支持较低级别中的部件的操作和控制。例如,单元级控制器122可以记录由较低级别中的部件收集或生成的信息、执行对较低级别中的部件进行控制的应用并提供对较低级别中的部件的安全访问。单元级控制器122中的每一个包括用于提供对处理单元中的一个或多个机器或其他件装备的访问、控制或与之相关的操作的任何合适的结构。单元级控制器122中的每一个可以例如代表运行microsoftwindows操作系统的服务器计算设备。虽然未示出,但是可以使用不同的单元级控制器122来控制处理系统中的不同单元(其中每个单元与一个或多个机器级控制器114、控制器106、传感器102a和致动器102b相关联)。
可以由一个或多个操作员站124提供对单元级控制器122的访问。操作员站124中的每一个包括用于支持系统100中的一个或多个部件的用户访问和控制的任何适当的结构。操作员站124中的每一个可以例如代表运行microsoftwindows操作系统的计算设备。
至少一个路由器/防火墙126将网络120耦合到两个网络128。路由器/防火墙126包括用于在网络之间提供通信的任何合适的结构,诸如安全路由器或组合路由器/防火墙。网络128可以代表任何合适的网络,诸如一对以太网或fte网络。
在普渡模型中,“级别4”可以包括耦合到网络128的一个或多个工厂级控制器130。每个工厂级控制器130通常与工厂101a-101n之一相关联,其可以包括实现相同、相似或不同的过程的一个或多个处理单元。工厂级控制器130执行各种功能以支持较低级别中的部件的操作和控制。作为特定示例,工厂级控制器130可以执行一个或多个制造执行系统(mes)应用、调度应用或其他或附加的工厂或过程控制应用。工厂级控制器130中的每一个包括用于提供对处理工厂中的一个或多个处理单元的访问、控制或与之相关的操作的任何合适的结构。工厂级控制器130中的每一个可以例如代表运行microsoftwindows操作系统的服务器计算设备。
可以由一个或多个操作员站132提供对工厂级控制器130的访问。操作员站132中的每一个包括用于支持系统100中的一个或多个部件的用户访问和控制的任何合适的结构。操作员站132中的每一个可以例如代表运行microsoftwindows操作系统的计算设备。
至少一个路由器/防火墙134将网络128耦合到一个或多个网络136。路由器/防火墙134包括用于在网络之间提供通信的任何合适的结构,诸如安全路由器或组合路由器/防火墙。网络136可以代表任何合适的网络,诸如企业范围的以太网或其他网络,或较大网络(诸如因特网)的全部或一部分。
在普渡模型中,“级别5”可以包括耦合到网络136的一个或多个企业级控制器138。每个企业级控制器138通常能够执行针对多个工厂101a-101n的计划操作并且控制工厂101a-101n的各个方面。企业级控制器138还可以执行各种功能以支持工厂101a-101n中的部件的操作和控制。作为特定示例,企业级控制器138可以执行一个或多个订单(order)处理应用、企业资源规划(erp)应用、高级计划和调度(aps)应用或任何其他或附加的企业控制应用。企业级控制器138中的每一个包括用于提供对一个或多个工厂的控制的访问、控制或与之相关的操作的任何合适的结构。每个企业级控制器138可以例如代表运行microsoftwindows操作系统的服务器计算设备。在本文中,术语“企业”是指具有要管理的一个或多个工厂或其他处理设施的组织。注意,如果要管理单个工厂101a,则可以将企业级控制器138的功能性并入工厂级控制器130中。
可以由一个或多个操作员站140提供对企业级控制器138的访问。操作员站140中的每一个包括用于支持系统100中的一个或多个部件的用户访问和控制的任何合适的结构。操作员站140中的每一个可以例如代表运行microsoftwindows操作系统的计算设备。
普渡模型的各种级别可以包括诸如一个或多个数据库之类的其他部件。与每个级别相关联的数据库可以存储与该级别或系统100的一个或多个其他级别相关联的任何合适的信息。例如,历史学家(historian)141可以耦合到网络136。历史学家141可以代表存储关于系统100的各种信息的部件。历史学家141可以例如存储在生产调度和优化期间使用的信息。历史学家141代表用于存储和促进信息的检索的任何合适的结构。尽管将历史学家141示出为耦合到网络136的单个集中化部件,但是历史学家141可以位于系统100中的其他位置,或者多个历史学家可以分布在系统100中的不同位置。
在特定实施例中,图1中的各种控制器和操作员站可以代表计算设备。例如,每个控制器可以包括一个或多个处理设备142和用于存储由(一个或多个)处理设备142使用、生成或收集的指令和数据的一个或多个存储器144。每个控制器还可以包括至少一个网络接口146,诸如一个或多个以太网接口或无线收发器。此外,每个操作员站可以包括一个或多个处理设备148和用于存储由(一个或多个)处理设备148使用、生成或收集的指令和数据的一个或多个存储器150。每个操作员站还可以包括至少一个网络接口152,诸如一个或多个以太网接口或无线收发器。
如上所述,代表代码的离散部分的功能块可以由控制器执行。可以以各种方式定义、连接和执行功能块组以在控制器内提供所期望的功能性。诸如多输入多输出(mimo)模型预测控制(mpc)之类的高级控制算法比像比例积分微分(pid)控制块的标准调节控制算法提供更佳的过程控制。与相同的控制算法在级别2或级别3控制环境中执行的情况相比,在冗余过程连接的级别1控制器中支持mimompc或其他高级控制算法可以大大改进控制算法的可用性和鲁棒性。
本公开提供了mimompc算法或其他高级mimo控制算法的有效实现,其适用于在冗余过程连接的控制器中进行托管。将控制算法分为三个不同的功能块,即:
∙收集多个输入的输入功能块;
∙执行或发起mpc或其他高级控制算法的执行的算法功能块;和
∙发布多个输出值并管理控制级联输出连接的输出功能块。
可以使用至少一个共享存储器空间在功能块之间共享数据。输入和输出功能块可以在前台处理任务(也称为“预算任务”)中以规则的间隔执行。算法功能块也可以在前台处理任务中执行,但是可以发起在后台处理任务中执行的各种功能。在一些实施例中,前台处理任务可以表示需要以严格定时要求在单个处理周期内完成执行并且经常是较不处理器密集型的任务。相比之下,后台处理任务可以表示可能需要多个处理周期来完成并且经常是更加处理器密集型的任务。
除了其他之外,该方法还跨三个功能块划分与mpc控制逻辑或其他控制逻辑相关联的责任或功能。取决于情况,可以对一个功能块进行改变而不需要对其他功能块进行改变。例如,这个方法提供了可扩展性来支持算法功能块中的替代高级控制算法,而不需要在输入和输出功能块中的改变。此外,在前台任务中执行算法功能块而在后台任务中调用功能允许在前台任务中的规则调度执行中间在后台任务中执行密集型计算。这允许执行否则在对前台任务放置的严格约束下可能不被允许的各种功能。以下提供有关使用多功能块来实现mpc或其他高级控制功能性的附加细节。
注意,在下面讨论的一些实施例中,这个方法被描述为在控制执行环境(cee)中使用。执行环境通常表示由一个或多个程序创建的环境,其支持由环境中所执行的其他程序使用的基本特征。控制执行环境表示在其中可以执行过程控制算法(包括使用功能块实现的那些算法)以控制工业过程的环境。控制执行环境还可以强制执行对前台和后台任务所放置的定时和其他要求、控制前台和后台任务的调度以及控制前台和后台任务的存储器使用。美国专利第8,245,239号中描述了一个示例控制执行环境,其全部内容通过引用并入本文中。
尽管图1图示了工业过程控制和自动化系统100的一个示例,但是可以对图1进行各种改变。例如,控制系统可以包括任何数量的传感器、致动器、控制器、服务器、操作员站和网络。此外,图1中的系统100的构成和布置仅用于说明。可以根据特定需要将部件添加、省略、组合或放置在任何其他合适的配置中。此外,特定功能已被描述为由系统100的特定部件执行。这仅用于说明。通常,过程控制系统是高度可配置的,并且可以根据特定需要以任何合适的方式进行配置。另外,虽然图1图示了在其中可以使用功能块来实现mpc或其他高级控制功能性的一个示例环境,但是这个功能性可以在任何其他合适的设备或系统中使用。
图2图示了根据本公开的控制器中的高级控制功能性的示例功能块实现。功能块实现可以例如在图1的控制器106中实现,但是这个功能性可以在任何其他合适的设备中以及在任何其他合适的系统中实现。
在下面的讨论中,使用以下首字母缩略词:
ceeb-控制cee的前台内的功能的执行的cee预算任务;
ceem-控制cee的后台内的功能的执行的cee后台任务;和
ceeu-每当时间和计算资源允许时发生的cee未经预算(un-budgeted)的任务。
在一些实施例中,除这三个类型的任务之外,ceeb任务可以具有最高优先级,ceem任务可以具有较低优先级,并且ceeu任务可以具有最低优先级。
下面还讨论以下类型的过程变量:
cv-控制变量,其表示其值被控制在或接近设定点或在期望范围内的变量;
mv–操纵变量,其表示被调整以便改变至少一个cv的值的变量;和
dv-干扰变量,其表示其值可以被考虑但不被控制或调整的变量。
作为示例,控制变量可以表示材料的流率,操纵变量可以表示改变流率的阀的位置,并且干扰变量可以表示影响流率但不能被改变或控制的环境温度。
如图2中所示,使用三个功能块202-206来实现控制器中的高级控制功能性。功能块202表示负责接收诸如多个cv和/或dv输入值的多个输入值并且对输入值进行预处理的输入功能块。例如作为ceeb任务的一部分,在执行环境的前台内执行输入功能块202。除其他之外,输入功能块202还可以读取各种输入值并将值保存在共享存储器中以供下游块访问。示例预处理可以包括范围检查(确定输入值是否在指定范围内)、改变率检查(确定输入值是否正在高于或低于指定速率改变)以及冻结检查(确定输入值是否尚未改变指定的时间长度)。预处理还可以包括检验mv以验证对mv的改变被实施或者执行极限斜坡(ramping)(确定mv的值是否正在至少以指定的速率朝着违反极限移动)。可以由输入功能块202执行任何其他或附加的预处理。
功能块204表示用于执行或发起mpc或其他高级控制算法的执行的算法功能块。控制算法可以执行任何期望的高级控制功能,诸如使用输入值和工业过程的模型来生成用于调整工业过程的控制信号。模型预测控制是一种公知的控制技术,其使用模型来预测工业过程中的一个或多个cv将在将来响应于对一个或多个mv和/或一个或多个dv的改变而如何进行动作。通常使用步骤测试、历史数据或其他方法来生成该模型。输入功能块202可以将对共享存储器中的输入值的引用(reference)传递给算法功能块204,允许算法功能块204访问和使用那些输入值。如上所指出的那样,实际的mpc或其他控制算法可以部分地在前台任务内执行(如作为ceeb任务的一部分),并且部分地在后台任务内执行(如作为ceem任务的一部分)。这里的核心208表示在后台任务内执行的控制算法的部分。由于在前台任务中执行功能块204并且使用功能块204来调用后台任务中的核心208的功能,所以功能块204有时可被称为用于控制算法的“面板(faceplate)功能块”。
功能块206表示负责用于获得诸如多个mv值之类的多个输出值并对多个输出值进行后处理的输出功能块。输出功能块206将后处理的输出值作为多个输出信号进行提供。输出功能块206在执行环境的前台内执行,如作为ceeb任务的一部分。除其他之外,输出功能块206还可以获得由算法功能块204生成并由算法功能块204存储在共享存储器中的各种输出值。算法功能块204可以将对共享存储器中的输出值的引用传递给输出功能块206,允许输出功能块206访问和使用那些输出值。示例后处理可以包括分辨率处理(确保mv值具有针对致动器的适当的分辨率)以及处理控制破碎(shredding)和控制启动问题。输出功能块206可以执行任何其他或附加的后处理。
图2中的数据连接210-212表示功能块202-206之间的逻辑数据流。如上所指出并在下面更详细地描述的,功能块202-206可以使用共享存储器来交换数据,因此可以沿着功能块之间的数据连接210-212传递对共享存储器中的数据值的引用。数据连接212还支持控制级联行为,因为输出功能块206可以位于辅助调节控制(regctl)功能块的控制级联链中。例如,输入功能块202可以主要接收来自模拟输入(ai)信道处理变量(pv)或来自数据获取(dataacq)pv的数据,并且输出功能块206可以提供数据至regct1设定点(sp)或输出(op)值(在直接控制期间)。
在一些实施例中,功能块202-206中的至少两个功能块的集合驻留在被称为部件块214的较大逻辑结构内。取决于实现,控制器(诸如控制器106)可以包括单个部件块214或多个部件块214。在特定实施例中,每个部件块214可以包括定义部件块214的特性的多个配置参数。配置参数可以包括名为orderincm的参数,其指示部件块214中的功能块的执行序列。期待的执行序列通常将是输入功能块202、算法功能块204和输出功能块206。另一个配置参数可以定义与部件块214相关联的cv、dv和mv的数量,并且这个值可以帮助定义要由部件块214使用的共享存储器的大小。一旦将特定存储器空间指派为部件块214的共享存储器,就可以使得对该共享存储器空间的引用对于部件块214中的所有功能块202-206可用,诸如在加载功能块期间。
尽管图2图示了控制器中的高级控制功能性的功能块实现的一个示例,但是可以对图2进行各种改变。例如,这个方法不限于与mpc一起使用,并且可以与任何合适的高级过程控制功能性一起使用。此外,两个功能块之间或功能块与核心之间不需要一对一关联。
图3图示了根据本公开的由高级控制功能块使用的示例数据模型300。例如,数据模型300可以用于支持过程控制器106中的功能块202-206之间的交互和数据传送。然而,功能块202-206可以使用任何其他合适的数据模型,并且数据模型300可用在任何其他合适的设备或系统中。
如图3中所示,数据模型300包括共享存储器302,其用于支持功能块202-206和核心208之间的cv、mv和dv数据值或其他控制相关或状态相关的数据的传送。因此,共享存储器302支持以下二者:(i)功能块之间的数据的传送和(ii)前台和后台任务之间的数据的传送。在这个示例中,共享存储器302包括支持与单个部件块214相关联的功能块202-206和单个核心208之间的数据传送的存储器空间304。多个存储器空间304也可以存在于共享存储器302中,诸如用于不同部件块214的存储器空间304(其可以或可以不调用相同的核心208)。共享存储器302包括任何合适的记忆装置和(一个或多个)检索设备。
经由共享存储器接口306访问共享存储器302。尽管共享存储器接口306的多个实例在图3中示出,但是这仅是为了便于说明,并且可以支持单个共享存储器接口306来访问共享存储器302。共享存储器接口306被功能块202-206和核心208使用来访问共享存储器302。诸如通过执行完整性检查来验证数据访问并验证尝试数据访问的部件,共享存储器接口306可以执行各种功能以支持对共享存储器的访问。
共享存储器的使用可以是有益的,因为它有助于减少或最小化部件之间的共享数据的重复。还可以执行各种功能以帮助确保共享存储器的正确使用。例如,可以使用一个或多个信号量(semaphore)来帮助确保在给定时间只有一个部件访问特定存储器位置。此外,可以用指定的优先级方案以及通过使ceem任务保持休眠直到被ceeb任务触发来保证任务之间的互斥。例如,可以通过提高ceem任务的优先级以匹配ceeb任务的优先级(其通常具有比ceem任务更高的优先级)来保护ceem任务对共享存储器302的单独写入。这可以帮助确保不存在ceem的部分写入。注意,针对提高的优先级的粒度可以在参数写入之上。
尽管图3图示了由高级控制功能块202-206使用的数据模型300的一个示例,但是可以对图3进行各种改变。例如,虽然在这里示出了单个部件块214和单个核心208,但是相同的共享存储器302可被多个部件块或核心使用。
图4至图9图示了根据本公开的执行高级控制功能的前台和后台任务的示例使用。如图4中所示,图示了cee内的单个执行周期400。执行周期400包括具有多达三个时间段404-408的基本周期402。第一时间段404用于执行ceeb任务,并且第二时间段406用于执行ceem任务。第三时间段408可以用于ceeb结束周期处理,其可以支持诸如ceeb超限(overrun)检测、cee基本周期统计的更新以及通信协议的周期性执行的触发之类的功能。在基本周期402之后,可以可选地为未经预算的ceeu任务或其他任务提供时间段410。
在一些实施例中,ceeb任务可以代表针对新基本周期的开始的操作系统(os)定时事件。ceeb任务执行功能块202-206连同各种其他功能。ceeb任务还可以触发ceem任务的执行,使得ceem任务保持休眠,直到被ceeb任务发信号通知。只要在执行周期400中有足够的时间,ceem任务就执行核心208和其他功能。ceeb任务在图4中可以具有最高优先级,而ceem任务可以具有较低优先级,除了它的优先级被提高时在它的执行期间之外。未经预算的ceeu和其他任务在图4中可以具有最低优先级并且只要在执行周期400中有足够的时间就可以被执行。
图5图示了可以在cee内执行的执行周期502-506的示例系列500。如上所指出,ceem任务可以在执行周期的基本周期402内被执行或可以不被执行,并且ceeu或其他任务可以在执行周期内被执行或可以不被执行。是否执行ceem/ceeu任务的决定可以基于一个或多个因素,诸如cee内的当前处理负载。在图5中,例如,从执行周期506省略了ceem和ceeu任务。而且,在所有执行周期中可以不需要ceeb结束周期处理,并且从执行周期504省略ceeb结束周期处理。另外,专用于ceeb执行的时间长度可以从执行周期到执行周期而变化。这显示cee可以在执行周期中支持各种不同类型的执行。
在特定实施例中,ceem处理时间可以跨基本周期变化,并且可以取决于基本周期的处理周期使用。例如,如果基本周期已经具有高于阈值(诸如基本周期的至少70%)的处理负载,则ceem任务可以不接收处理时间。在执行周期506中示出了这一点的一个实例,其中不执行ceem任务,因为其他任务至少消耗了处理时间/资源的阈值量。如果基本周期针对其他任务只有10%的处理负载,则ceem任务可以在基本周期中被提供60%的处理时间。如果处理在其分配时间到期之前完成,则ceem任务也可以早点退出。如果执行ceem任务,则可以提供至少用于执行的最小时间,例如2ms。在执行周期504中示出了此的一个示例,其中仅给予ceem任务2ms以进行执行。
图6至图9图示了用于控制ceeb和ceem任务的执行的信令图。在下面的讨论中,两个信号量有助于确保共享存储器302的正确使用:semceemcyclestart和semceemcycleend。ceeb任务拥有semceemcyclestart信号量,并且ceem任务拥有semceemcycleend信号量。在这些信令图中,“操作系统”表示执行ceeb、ceem、ceeu和其他任务的设备的操作系统。
图6图示了可以在控制器的启动期间使用的示例信令图600。如图6中所示,ceeb任务在步骤602处发出针对semceemcyclestart信号量的等待信号量命令,并将“新周期”标志设置为真,以便在步骤604处指示新的ceem周期的开始。步骤606中的两个调用被用于通知完整性单元:ceem任务的执行正在启动并且ceeb任务的执行正在停止。ceem任务在步骤608处发出针对semceemcycleend信号量的等待信号量命令,并在步骤610处指示ceeb任务的执行正在恢复。控制在步骤612处返回到ceeb任务,并且ceem任务在步骤614处发出针对semceemcycleend信号量的另一个等待信号量命令。该过程有助于初始化ceeb和ceem任务之间的二进制信号量的期待的所有权。
图7图示了当ceeb处理时间到期时可以用来在轻负载期间发起ceem任务的执行的示例信令图700。如图7中所示,ceeb任务在步骤702处将“新周期”标志设置为假,并在步骤704处发出针对semceemcyclestart信号量的释放信号量命令。ceeb任务在步骤706处计算用于ceem任务的可允许执行时间量(其可以基于基本周期402的长度和ceeb任务的执行时间),并且在步骤708处以此时间将高分辨率时钟初始化。在步骤710中的调用被用来通知完整性单元:ceem任务的执行正在开始,并且ceeb任务在步骤712处等待来自完整性单元的活动指示符。在步骤714处的阻止调用之后,ceem在步骤716处发出针对semceemcycleend信号量的等待信号量命令,并且另外一个mimompc或其他控制算法在步骤718处作为ceem任务的一部分被执行。一旦时钟在步骤720处超时,则ceeb任务在步骤722处停止ceem任务的执行。
图8图示了当ceeb处理时间到期时可以用于在轻负载期间继续执行ceem任务的示例信令图800。如图8中所示,在步骤802中的调用用来通知完整性单元:ceem任务的执行正在开始。在步骤804处,ceeb任务计算用于ceem任务的可允许执行时间量,并且在步骤806处以此时间将高分辨率时钟初始化。在步骤808处,ceeb任务等待来自完整性单元的活动指示符。在阻止调用810之后,ceem任务在步骤812处继续执行作为ceem任务一部分的另外一个mimompc或其他控制算法。一旦时钟在步骤814处超时,则ceeb任务在步骤816处停止ceem任务的执行。
图9图示了当ceeb处理时间到期时可以用于在轻负载期间继续并完成ceem任务的执行的示例信令图900。在这个示例中,ceem任务在所分配的时间到期之前完成执行,尽管这不必是该情况。如图9中所示,步骤902中的调用用来通知完整性单元:ceem任务的执行正在恢复。在步骤904处,ceeb任务计算用于ceem任务的可允许执行时间量,并且在步骤906处,以此时间将高分辨率时钟初始化。ceeb任务在步骤908处等待来自完整性单元的活动指示符。在步骤910处,ceem任务继续并完成作为ceem任务一部分的另外一个mimompc或其他控制算法的执行。在步骤912处,ceem任务发出针对semceemcycleend信号量的释放信号量命令。在阻止调用914之后,ceem任务在步骤916处发出针对semceemcycleend信号量的等待信号量命令,并且完整性单元向ceeb任务指示:ceem处理在步骤918处完成。ceeb任务在步骤920处发出针对semceemcyclestart信号量的等待信号量命令,在步骤922处发出针对semceemcycleend信号量的等待信号量命令,并且在步骤924处设置“新周期”标志以指示下一个ceem周期的开始。
尽管图4至图9图示了执行高级控制功能性的前台和后台任务的示例使用,但是可以对图4至图9进行各种改变。例如,各种任务的执行可以以任何其他合适的方式发生。此外,任何其他合适的信令可以用于调用和控制ceeb和ceem任务的执行。
图10图示了根据本公开的针对工业过程控制和自动化系统中的高级控制的示例方法1000。为了便于解释,方法1000被描述为使用图2的功能块202-206和核心208、图3的数据模型300以及图4至图9的ceeb/ceem任务。然而,方法1000可以涉及使用任何合适的功能块、数据模型和前台/后台任务。此外,方法1000被描述为由控制器106执行,但是可以使用任何其他合适的设备。
如图10中所示,在步骤1002处发起在前台任务中的输入功能块的执行。这可以包括例如控制器106的(一个或多个)处理设备142发起ceeb任务内的输入功能块202的执行。除其他之外,输入功能块还在步骤1004处收集多个输入值。这可以包括例如输入功能块202读取多个cv/dv数据值、执行任何指定的预处理操作并将预处理的输入值存储在共享存储器302的存储器空间304中(诸如在控制器106的存储器144中)。
在步骤1006处发起前台任务中的算法功能块的执行。这可以包括例如控制器106的(一个或多个)处理设备142发起ceeb任务内的算法功能块204的执行。除其他之外,算法功能块还接收对共享存储器中的输入值的引用,并且在步骤1008处算法功能块调用在后台任务中要被执行的一个或多个功能。这可以包括例如算法功能块204调用核心208的执行或核心208的一个或多个功能的执行。当允许时,在步骤1010处在后台任务中执行功能。这可以包括例如触发ceem任务的ceeb任务,其执行核心208。在步骤1012处完成算法功能块的执行。这可以包括例如使用后台任务的结果来完成控制算法的执行。
在步骤1014处发起在前台任务中的输出功能块的执行。这可以包括例如控制器106的(一个或多个)处理设备142发起ceeb任务内的输出功能块206的执行。除其他之外,输出功能块还接收对共享存储器中的数据值的引用,并且输出功能块在步骤1016处提供多个输出值。这可以包括例如输出功能块206读取来自共享存储器302的多个mv数据值、执行任何指定的后处理操作并输出后处理的数据值。
尽管图10图示了用于工业过程控制和自动化系统中的高级控制的方法1000的一个示例,但是可以对图10进行各种改变。例如,图10中所示的各种步骤可以重叠、并行发生、以不同的顺序发生、或发生任何次数。作为特定示例,取决于各种因素(诸如前台任务的处理负载),在特定执行周期期间可以或可以不发生后台任务的执行,因此可以在后台任务的执行完成之前多次执行输入功能块。
在一些实施例中,在该专利文档中描述的各种功能由计算机程序实现或支持,所述计算机程序从计算机可读程序代码形成并且体现在计算机可读介质中。短语“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。短语“计算机可读介质”包括能够由计算机访问的任何类型的介质、诸如只读存储器(rom)、随机存取存储器(ram)、硬盘驱动器、光盘(cd)、数字视频盘(dvd)或任何其他类型的存储器。“非暂时性”计算机可读介质排除传输暂时性电或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括其中可以永久存储数据的介质以及其中可以存储和稍后被重写的数据的介质,诸如可重写光盘或可擦除存储器设备。
阐述遍及本专利文档中使用的某些词语和短语的定义可能是有利的。术语“应用”和“程序”是指一个或多个计算机程序、软件部件、指令集、过程、功能、对象、类、实例、相关数据或其适于在合适的计算机代码中实现的部分(包括源代码、目标代码或可执行代码)。术语“通信”及其衍生词包含直接和间接通信两者。术语“包括”和“包含”及其衍生词意指包括但不限于此。术语“或”是包含性的,意指和/或。短语“与……相关联”及其衍生词可以意指包括、被包括在内、与……互连、包含、被包含在内、连接到或与……相连,耦合或与……耦合、与……可通信、与……协作、交织、并列、与……邻近、绑定到或与……绑定、具有、具有……属性、具有与……的关系或与……有关系等。短语“其中至少一个”当与项目列表一起使用时,意指可以使用所列出的项目中的一个或多个的不同组合,并且可以仅需要列表中的一个项目。例如,“a、b和c中的至少一个”包括以下任何组合:a、b、c、a和b、a和c、b和c、以及a和b和c。
虽然本公开已经描述了某些实施例和一般相关联的方法,但是对于本领域技术人员来说,这些实施例和方法的改变和排列将是清楚的。因此,示例实施例的上述描述没有限定或约束本公开。在不脱离如由所附权利要求限定的本公开的精神和范围的情况下,其他改变、替换和改变也是可能的。