用于工厂配置系统中的对象的版本控制的制作方法

文档序号:6446172阅读:131来源:国知局
专利名称:用于工厂配置系统中的对象的版本控制的制作方法
技术领域
本发明一般涉及工厂(process plant),更具体地说,本发明涉及与工厂的配置相关的版本控制。
背景技术
分布式过程控制系统,像是在化学制品、石油或其它处理中所使用的那些一样,通常包括一个或多个过程控制器,该一个或多个过程控制器经由模拟、数字或模拟/数字组合的总线可通讯地连接到一个或多个现场设备上。这些现场设备,例如,可以是阀门、阀门定位器、开关和发射机(例如,温度、压力、液位(level)和流速传感器),位于过程环境内并执行诸如打开或关闭阀门、测量过程参数等这样的过程功能。智能现场设备,例如符合众所周知的Fieldbus协议的现场设备,也可以执行控制计算、报警功能以及其它通常在控制器中完成的控制功能。过程控制器,也通常位于工厂环境中,接收用于指示由现场设备做出的过程测量的信号和/或其它关于现场设备的信息,并执行用于运行例如不同的控制模块的控制器应用程序,其中这些控制模块基于所接收的信息来做出过程控制决定,产生控制信号,以及与在诸如HART和Fieldbus现场设备这样的现场设备中正在执行的控制模块或块相协调。控制器中的控制模块将控制信号通过通信线路发送到现场设备,从而控制工厂的运作。
通常通过一条数据高速通道使来自现场设备和控制器的信息对一个或多个其它硬件设备有效,例如操作员工作站、个人电脑、数据历史学家、报告生成器、集中式数据库等,它们通常被放置在控制室或其它远离粗糙的工厂环境的地方。这些硬件设备运行可以,例如,使操作员能够执行有关过程的功能,诸如是改变过程控制例行程序的设置、修改控制器或现场设备中的控制模块的操作、查看过程的当前状态、查看现场设备和控制器生产的警报、为培训员工或测试过程控制软件的目的而模拟过程的操作、保存和更新配置数据库等。
作为一个实例,Fisher Rosemount Systems公司出售的DeltaVTM控制系统,包括存储在工厂中不同位置的不同设备中的,并由这些设备执行的多个应用程序。一个驻留在一个或多个操作员工作站中的配置应用程序能够使用户创建或改变过程控制模块,并经由数据高速通道将这些过程控制模块下载到专用的分布式控制器中。通常,这些控制模块是由可通讯地相互连接的功能块构成的,这些功能块是面向对象的程序设计协议中的对象,该对象基于输入到其那里的输入来执行控制方案内的功能,并将输出提供到控制方案内的其它功能块。该配置应用程序也可以允许配置设计者创建或改变操作者接口,由一个查看应用程序使用这些接口来向操作者显示数据,并使操作者能够改变过程控制例行程序内的设置,例如定点(set point)。每一个专用控制器,以及一些情况中的现场设备,存储并执行用于运行分配并下载到那里的控制模块以便执行实际的过程控制功能的控制器应用程序。可以在一个或多个操作员工作站上运行的查看应用程序,经由数据高速通道接收来自控制器应用程序的数据,并向过程控制系统设计者、操作员、或使用用户接口的用户显示这个数据,并且可以提供许多不同视图中的任何一种视图,例如操作员视图、工程师视图、技术员视图等。数据历史学家应用程序通常被存储在数据历史学家设备中,并由它来执行,其中该数据历史学家设备收集并存储通过数据高速通道提供的数据中的一些或全部,而配置数据库应用程序可以在附加在该数据高速通道上的另外的计算机中运行,以存储当前过程控制例行程序配置以及与其相关联的数据。可选择地,配置数据库可以位于相同的工作站中作为配置应用程序。
现在,配置应用程序可以包括一个例如为功能块模板对象的模板对象的库,以及在一些情况中,控制模块模板对象。这些配置应用程序是用来配置用于工厂的控制策略的。这些模板对象全部都具有默认的属性、设置和与其相关联的方法,并且使用配置应用程序的工程师可以选择这些模板对象,并将所选中的模板对象的副本实质上放置到配置屏幕上,以便开发控制模块。在选择和将模板对象放置到配置屏幕的处理过程期间,工程师使这些对象的输入和输出互相联系,并改变它们的参数、名字、标志和其它属性来创建用于工厂中的具体用途的具体控制模块。在创建一个或多个这样的控制模块之后,接下来工程师能够用具体例子来说明所述控制模块并将其下载到合适的控制器或一些控制器中以及用于工厂的操作过程期间执行的现场设备中。
此后,工程师通常通过在显示创建应用程序中选择和创建显示对象,来为过程工厂中的操作员、维护人员等创建一个或多个显示。这些显示通常在一个或多个工作站中的全系统范围的基础上被实现,并将关于工厂内控制系统或设备的操作状态向操作员或维护人员提供预先配置的显示。通常,这些显示采取如下这些形式用于接收和显示工厂内的控制器或设备产生的警报的警报显示、用于指示工厂内的控制器和其它设备的操作状态的控制显示、用于指示工厂内的设备的功能工作状态的维护显示等。通常预先配置这些显示,以便以已知的方式来显示从工厂内的过程控制模块或设备所接收的信息或数据。在某些已知系统中,通过使用对象来创建显示,其中这些对象具有与物理或逻辑元件相关联的图形,并且可通信地连接到该物理或逻辑元件上以便接收关于该物理或逻辑元件的数据。所述对象可以基于所接收的数据来改变显示屏幕上的图形,以便用图说明,例如水箱是半满的,用图说明由流量传感器测得的流量等。
与控制配置应用程序相类似,显示创建应用程序具有可以以任何希望的配置放置在屏幕上以便创建操作员显示、维护显示等的模板图形显示项目,例如,水箱、阀门、传感器、像滑杆样的操作员控制按钮、开/关切换器等。当放置在屏幕上之后,各个图形项目可以以向不同的用户提供一些工厂内部工作的信息或显示的方式,在屏幕上互相连接(interconnect)。但是,要动画化(animate)这种图形显示,显示创建者必须通过指定图形项目和工厂内的相关数据源之间的通信链路,来手工地将每一个图形项目连接到工厂内所产生的数据上,例如,由传感器测得的数据或指示阀门位置的数据,等。这个过程是冗长的,费时的,并且可能充满了错误。
虽然控制配置应用程序中的控制模板对象和显示创建应用程序中的显示项目是方便的,这是因为它们可以被复制并用来创建许多不同的控制模块和图形显示,但是常常存在着为工厂中的不同装备创建许多相同的控制模块和图形显示的需要。例如,许多到巨大规模的工厂的媒介,具有数目众多的可以使用相同的基本通用控制模块和显示来控制和查看的相同或相似的装备的情况。然而,为了创建这些数目众多的控制模块和显示,创建一个通用控制模块或显示模块,并且接下来为每一个它所适用的装备的不同部分复制这个通用控制或显示模块。当然,在复制之后,必须手工在配置应用程序中改变每一个新的控制或显示模块,以便指定安装它的特定装备,并且然后,必须用具体例子说明所有这些控制和显示模块,并将它们下载到过程控制系统中。
不幸地,上面讨论的控制模块和显示项目不是以任何方式模块化的。因此,在复制后,必须使用合适的配置应用程序来手工地和单独地改变每一个控制模块和显示,以便指定将要与它们相关联的工厂内的设备。在具有许多相同类型的装备(例如,重复的装备)的副本的工厂中,这个过程是冗长的、费时的并充满了操作员所引起的错误。更进一步地,一旦已编程,这些不同的控制模块和显示便彼此不再互相认识。因此,要对已创建的控制模块进行改变,工程师或操作员必须手工地对每个用于不同的重复装备的不同控制模块进行相同的改变,这又是费时和冗长的。相同的问题也存在于为工厂内不同的重复装备组所创建的图形视图。换句话说,一旦创建一个具体控制模块或具体图形视图(单独地或通过从模板对象复制),并接下来将其绑定到(tie to)工厂内的特定设备组上,则这个控制模块或图形视图就作为系统中的单独实体或对象存在,而没有对与它相同或相似的其它控制模块或图形显示的任何自动了解(automatic awareness)。结果是,必须单独地对这些模块和显示做出适合于每一个特定类型的控制模块和图形显示的改变。
更进一步地,因为每一个控制模块和显示是单独的对象,它必须是开放的,也就是必须使它的所有内部参数、视图、功能块以及其它元件对于任何用户来说是可以被改变、查看的等。当前,在这些控制模块和显示中,不存用于控制某些操作员或其它用户可以看到或访问的东西的控制方式,因此,该控制模块和显示的用户没有隐藏这些控制模块和显示的某些元件,例如专用软件和方法、报警活动等的能力。

发明内容
一种版本控制系统有助于了解可以表示或能够表示工厂中的实体的工厂项目的版本。所述工厂项目可以包括,例如,能够专门地表示工厂内的过程实体的模块对象。这些模块对象可从通用地表示该工厂的过程实体的模块类对象中被创建。存储版本数据并将其与模块对象相关联。该版本数据可以包括指示用来创建模块对象的模块类对象的版本的数据。该版本数据还可以包括指示模块对象的版本的数据。配置系统、版本控制系统、查看系统、调试系统、运行期间监视系统、资产管理系统等,可以检查或允许查看与一个项目相关联的版本控制数据。


图1是一个位于工厂内的分布式过程控制网络的方框图,其包括操作者工作站,用来执行使用模块类对象来为工厂配置控制和显示该工厂的活动的配置应用程序;图2是图1中的反应器单元的图;图3是在图2的反应器单元中使用的累加器装备实体的图;图4是在图2的反应器单元中使用的出口阀门系统的图;图5是说明模块类对象和用于模块类对象的单元、装备、控制和显示类型的相关模块对象之间的相互关系的逻辑图;图6是反应器单元模块类对象的逻辑图,该模块类对象可以被用来执行图1的工厂内的反应器的配置活动;图7是累加器装备模块类对象的逻辑图,该模块类对象可以被用来执行图1的工厂内的累加器的配置活动;图8是对第一配置屏幕的描述,配置操作员可以使用该第一配置屏幕来配置使用模块类对象的工厂;图9是对第二配置屏幕的描述,配置操作员可以使用该第二配置屏幕来配置使用模块类对象的工厂;图10是对第三配置屏幕的描述,配置操作员可以使用该第三配置屏幕来配置使用模块类对象的工厂;图11是对第四配置屏幕的描述,配置操作员可以使用该第四配置屏幕来配置使用模块类对象的工厂;图12是对第五配置屏幕的描述,配置操作员可以使用该第五配置屏幕来配置使用模块类对象的工厂;图13是对第六配置屏幕的描述,配置操作员可以使用该第六配置屏幕来配置使用模块类对象的工厂;图14是对第七配置屏幕的描述,配置操作员可以使用该第七配置屏幕来配置使用模块类对象的工厂;图15是对第八配置屏幕的描述,配置操作员可以使用该第八配置屏幕来配置使用模块类对象的工厂;以及图16是对第九配置屏幕的描述,配置操作员可以使用该第九配置屏幕来配置使用模块类对象的工厂;图17是一个用于配置工厂项目来限制对该项目的访问的示例性例行程序的流程图;图18A是示出复合模板的子元件的示例性屏幕显示,其中包括功能块;图18B是示出图18A的复合模板的子元件的示例性屏幕显示,但是其中隐藏了功能块子单元;图19是用于配置一组工厂项目来限制对该组的访问的示例性例行程序的流程图;图20是用于确定是否允许查看与工厂相关联的数据的示例性例行程序的流程图;图21是用于确定是否允许对工厂项目或一组工厂项目进行修改的示例性例行程序的流程图;图22是用于输出一个工厂项目的示例性例行程序的流程图;图23是可以用来提供与工厂相关联的版本控制和审核追踪信息的示例性配置系统的方框图;图24是便利于工厂项目的版本追踪的示例性例行程序的流程图;图25是便利于工厂项目的版本追踪的示例性例行程序的流程图;图26是便利于工厂项目的配置的示例性例行程序的流程图;以及图27是便利于工厂项目的配置的示例性例行程序的流程图;图28是一个用于配置模块类对象的用户接口的示例性屏幕显示;图29是另一个用于配置模块类对象的用户接口的示例性屏幕显示;图30是用于调试模块对象的用户接口的示例性屏幕显示,其中没有隐藏与模块对象相关联的数据;以及图31是图30中的示例性屏幕显示,但是其中隐藏了与模块对象相关联的数据。
具体实施例方式
现在参照图1,工厂10包括一个或多个经由,例如以太网连接或总线15连接到数目众多的工作站14上的过程控制器12。控制器12也经由通信线或总线18的组合连接到工厂10内的设备或装备上,图1中示出了仅有通信线18的组合连接到了控制器12a上。可以通过仅使用由Fisher-RosemountSystems公司出售的DeltaVTM控制器来实现控制器12,该控制器12能够与例如,分布在工厂10中的现场设备和现场设备中的功能块的控制元件进行通信,以便执行一个或多个过程控制例行程序19,从而实现对工厂10的期望的控制。一个或多个配置工程师可以使用工作站14(可以是,例如个人电脑)来设计要由控制器12执行的过程控制例行程序19和要由工作站14或其它计算机执行的显示例行程序,并与控制器12进行通信以便将这样的过程控制例行程序19下载到控制器12中。此外,工作站14可以在工厂10的操作期间,执行用于接收和显示关于工厂10或它的元件的信息的显示例行程序。
每一个工作站14都包括存储器20,用于存储诸如配置设计应用程序和显示或查看应用程序这样的应用程序,并用于存储诸如关于工厂10的配置的配置数据这样的数据。每一个工作站14还都包括处理器21,用于执行这些应用程序以便使配置工程师能设计过程控制例行程序和其它例行程序,并将这些过程控制例行程序下载到控制器12或其它计算机中,或者在工厂10的操作期间采集信息并将该信息显示给用户。
更进一步地,每一个控制器12都包括用于存储控制和通信应用程序的存储器22,和一个用于以任何已知方式执行该控制和通信应用程序的处理器24。在一种情况中,每一个控制器12都存储和执行用于通过使用许多不同的、独立执行的控制模块或块19来实现控制策略的控制器应用程序。每个控制模块19可以由通常称之为功能块的东西组成,其中每一个功能都是一个整体控制例行程序的一部分或子例程,它们结合其它功能块(通过叫做链路的通信)来运行,从而实现工厂10中的过程控制循环。如众所周知的,可以作为面向对象编程协议中的对象的功能块,通常执行输入功能、控制功能、或输出功能中的一个功能,以便执行工厂10中的一些物理功能,其中,所述的输入功能例如是与发射机、传感器或其它过程参数测量设备相关联的输入功能,所述控制功能例如是与执行PID、模糊逻辑等控制的控制例行程序相关联的控制功能,所述输出功能用于控制诸如阀门这样的一些设备的操作。当然,混合的和其它类型的复杂功能块也存在,例如模型预测控制器(MPC)、优化器等。虽然Fieldbus协议和DeltaVTM系统协议使用以面对对象编程协议来设计和实现的控制模块和功能模块,但可以使用任何希望的控制编程方案来设计该控制模块,所述控制编程方案包括例如,顺序功能块、阶梯逻辑(ladder logic)等,并且不限于使用功能块或任何其它特定编程技术来设计该控制模块。
工作站14可以通过示出了过程控制例行程序19内的控制元件的显示屏幕来向用户提供控制器12内的过程控制例行程序19的图形描述以及提供其中配置这些控制元件来提供工厂10的控制的方式。在图1的系统中,配置数据库25连接到以太网总线15,来存储由控制器12和工作站14所使用的配置数据,以及将通过收集和存储工厂10中所产生的数据来用作为数据历史学家,以便为了将来的使用。
在图1中所示的工厂10中,控制器12a通过总线18可通信地连接到三组相似地配置的反应器(为工厂10中的重复装备)上,这里所述反应器被称之为反应器_01、反应器_02和反应器_03。反应器_01包括;反应器容器或箱100;三个连接的输入阀门系统(装备实体)101、102和103,分别用于控制向反应器容器100中提供酸、碱和水的液体入口管道;以及连接的出口阀门系统104,用于控制反应器容器100输出的液体流。能是诸如液位传感器、温度传感器、压力传感器等这样的任何期望类型的传感器的传感器105被安置在反应器容器100中,或在它的附近。为了论述的目的,假定传感器105为液位传感器。另外,将共享的头阀门系统110连接在反应器反应器_01、反应器_02和反应器_03中的每一个的水位线上游上,来提供用于控制流入进那些反应器的每一个中的水流量的总控制。
相似地,反应器_02包括反应器容器200、三个输入阀门系统201、202和203、出口阀门系统204和液位传感器205,而反应器_03包括反应器容器300、三个输入阀门系统301、302和303、出口阀门系统304和液位传感器305。在图1的实例中,与向反应器容器100提供水的共享集水头110相结合,反应器反应器_01、反应器_02和反应器_03可以利用提供酸的输入阀门系统101、201和301,提供碱的输入阀门系统102、202和302以及输入阀门系统103、203和303,来生产盐。可以操作出口阀门系统104、204和304来以指向图1中的右边的流线来输出产品,并且以指向图1中的底端的流线来排出废料或其它不想要的材料。
控制器12a通过总线18可通信地连接到阀门系统101-104、110、201-204和301-304以及传感器105、205和305上,来控制这些元件的操作,以便执行有关反应器单元反应器_01、反应器_02和反应器_03的一个或多个操作。这种操作,通常称为阶段,可以包括例如,装满反应器容器100、200、300;加热反应器容器100、200、300中的材料;倾倒反应器容器100、200、300;清洁反应器容器100、200、300;等。
图1中示出的阀门、传感器和其它装备可以是任何期望的种类或类型的装备,包括,例如,Fieldbus设备、标准4-20ma设备、HART设备等,并且可以使用任何已知或期望的通信协议,例如Fieldbus协议、HART协议、4-20ma模拟协议等与控制器12进行通信。更进一步地,根据这里论述的原理,可以将其它类型的设备连接到控制器12并由其进行控制。同样,可以在工厂10内来连接其它数目和类型的控制器,来控制与工厂10相关联的其它设备或区域,而且可以以任何期望的方式使这种附加控制器的操作与图1中所示的控制器12a的操作相协调。
一般来说,图1的工厂10可以用来执行批处理,其中,例如,工作站14或控制器12a之一执行一个批可执行例行程序(batch executive routine),其为用于指导一个或多个反应器单元(以及其它装备)的操作来执行用于生产诸如为特定类型的盐的产品所需要的一系列不同步骤(通常称为阶段)的高级控制例行程序。要实现不同的阶段,该批可执行例行程序使用通常称为制法(recipe)的东西,其中所述制法指定将要执行的步骤、与该步骤相关联的数量和次数以及这些步骤的顺序。一个制法的步骤可能包括,例如,用适当的材料或成分来装填反应器容器,混合反应器容器内的材料,将反应器容器内的材料加热到一个特定的温度并持续一定时间,清空反应器容器,以及然后清洁该反应器容器以便为下一个批运行做准备。这些步骤中的每一个都定义了批运行的阶段,而控制器12a中的批可执行例行程序将执行用于这些阶段中的每一个的不同控制算法。当然,对于不同的制法,具体材料、材料的数量、加热温度、次数等可以不同,因此,这些参数可以在不同批运行之间变化,这取决于正在制造或生产的产品以及正使用的制法。本领域的技术人员将理解,尽管这里只描述了用于图1中所示的反应器中的批运行的控制例行程序和配置,但也可以将控制例行程序用来控制其它期望的设备,以执行任何其它期望的批处理运行,或执行连续的处理运行,如果想这样做的话。
也将可以这样理解,能以相同或不同的次数,在图1的不同反应器单元的每一个上执行批处理的相同阶段或步骤。另外,因为图1中的反应器单元通常包括相同数目和类型的装备,用于特定阶段的相同的通用阶段控制例行程序可以用来控制不同反应器单元中的每一个,只是必须修改这个通用阶段控制例行程序来控制与不同的反应器单元相关联的不同硬件或装备。例如,要执行用于反应器_01的装填阶段(其中装填该反应器单元),装填控制例行程序将打开一个或多个与输入阀门系统101、102和103相关联的阀门一定量的时间,例如,直到液位计105检测到容器100是满的为止。但是,仅仅通过将输入阀门的指定(designation)改为与阀门系统201、202和203相关联的而不是与阀门系统101、102和103相关联的那些指定(designation),以及将液位计的指定改为液位计205来代替液位计105,这个相同的控制例行程序也可以用来执行用于反应器_02的装填阶段。
图2更详细地说明了图1的一个反应器,特别是反应器_01。与图1中所示的相似,图2中的反应器_01包括反应器箱100、用于向箱100中注入酸、碱和水的输入阀门系统101、102、103和110、用于从箱100移除材料的出口阀门系统104以及液位传感器105。像图2中进一步说明的那样,输入阀门系统101、102和110中的每一个都使用相似的装备实体,称做累加器,它包括两个彼此平行设置的阀门和在这两个阀门的下游设置的流量测量装置。在图3中更详细地示出的用于输入阀门系统101的累加器,包括叫做粗阀门101a的开/关类型阀门、叫做精密阀门101b的开/关类型阀门以及设置在阀门101a和101b的下游的流量计101c。累加器101具有相关联的一个或多个控制模块或例行程序,它们被用来使用流量计101c做出的测量来控制酸的输入。第一如此的控制例行程序可以通过使用了粗阀门101a和精密阀门101b的累加器101来执行快速流量控制,而第二如此的控制例行程序可以通过使用了粗阀门101a和精密阀门101b的累加器101来执行精确的流量控制。
像从图2中理解的那样,碱输入阀门系统102包括具有粗阀门102a、精密阀门102b、和流量计102c的累加器,以及共享水输入阀门系统110包括粗阀门110a、精密阀门110b和流量计110c。每个累加器101、102和110具有相同类型的重复装备,尽管它们用在相同单元,即反应器_01单元上的不同地方。同样,反应器_02和反应器_03也包括在输入阀门系统201、202、301和302中的累加器。
相似地,出口阀门系统104是另一块包括三个阀门的重复装备。像在图4中很好地示出的那样,出口阀门系统104包括主出口阀门104a,其必须对要从箱100释放的任何材料是开启的;产品阀门104b,其必须结合主出口阀门104a来开启以从箱100中输出产品;以及排水阀104c,它将像废品、清洗液等这样的材料从箱100中排出到排水或隐蔽(refuge)系统。当然,一个或多个控制例行程序是与出口阀门系统104相关联的,以便控制阀门104a、104b和104c的状态来关闭箱100、排干箱100或从箱100中清空产品。
过去,为了产生用于控制与图1的反应器反应器_01、反应器_02、反应器_03相关联的不同装备的控制例行程序,配置工程师可以首先创建许多本质上通用的,并存储在例如工作站14之一中的一个库中的模板控制模块。要创建模板控制模块,工程师用图表将不同的控制功能块连接在一起,来提供用于在反应器上执行的不同元件或循环的控制例行程序。一旦创建了通用模板控制模块,通常是在阀门或控制循环的基础上创建的,这些模板控制模块就能被复制,而且可以手动地将该模板控制模块的副本绑定到工厂10内的特定装备上,例如,绑定到反应器反应器_01、反应器_02和反应器_03之内的特定装备上。一旦直接地或使用别名绑定,像在美国专利号为6385496中更专门地描述的那样,将该控制模块的绑定副本下载到一个或多个控制器12中,并用它们来对它们被绑定到其上的反应器执行过程控制活动。但是,从模板控制模块创建的绑定控制模块与一些模板模块之间没有引用或关联,其中,所述绑定控制模块是从所述一些模板模块中创建的,并实际上,当用在过程控制系统中时,它们是独立的控制模块或对象。
而且,在这些系统中,必须在控制模块级别上执行配置,这就意味着,必须为工厂内的每一个不同部分的装备或循环创建单独的控制模块。在控制模块级别上,通常有许多不同类型的控制模块,它们必须为工厂内的每一个过程实体而被创建并将它们绑定到该每一个过程实体上。结果是,配置工程师花费大量的时间只是将各个控制模块复制和绑定到工厂内各个部分的装备上。例如,配置工程师可以不得不为工厂内的反应器单元创建和复制许多的控制模块,并接下来把这些控制模块中的每一个都绑定到那个反应器单元中的特定装备上。当反应器单元是在工厂内重复安装的时候,配置工程师的任务就变得更加冗长,这是因为配置工程师必须执行这种为每一个重复装备的许多控制模块的复制和绑定处理,这是费时的而且充满了由人为引入的错误。
尽管,在过去,配置工程师可以开发单元模块,但这些单元模块仅仅是用于可在单元上运行的阶段的容器(container),而没有包括与该单元相关联的装备指示或用来控制该单元内的装备的基本操作的控制方案。而且,尽管可以为用来控制不同装备的控制元件创建模板,但是没有可以用来指示像装备和单元实体这样的工厂内的更高级别重复实体的控制模块包。换句话说,要创建用于工厂10内的不同重复实体的控制例行程序,配置工程师必须在控制的最低级别为每一个装备的重复部分复制控制模块,并为工厂10内的装备或其它实体的具体或特定部分剪裁这些控制模块中的每一个。在具有许多重复装备的大厂中,这个任务是费时的而且充满了人为引入的配置错误。更进一步地,必须手动地对用于不同装备的每一个不同的控制模块,做出对与重复装备相关联的控制模块的改变,这也是冗长、费时的而且充满了由操作员引入的错误。同样,必须与控制模块单独地并远离地创建用于操作员的显示,类似于控制模块,必须单独地创建、修改所述显示以及将该显示绑到工厂内的装备上。
为了使过程配置的创建和改变更容易且更加不费时,存储在图1的工作站14之一中的配置应用程序50包括供配置过程控制工厂10所使用的一组模块类对象52。当用许多组重复的装备来配置工厂时,该模块类对象就特别有用。一般说来,可以为每一个不同类型的在工厂10中重复的或使用的物理单元或装备、为每一类型的在工厂10中重复的或使用的控制活动、为每一个不同类型的在工厂10中重复的或使用的显示应用程序、等,创建不同的模块类对象52。一旦创建了,模块类对象52可以被用来配置对应于模块类对象的工厂10的元件。
实质上是过程实体的通用版本(generic version)并没有被绑到任何特定的过程实体上的模块类对象52,可以具有与其相关联的较低级别的对象或实例53、54、55和56(这里称为模块对象或模块块)。每一个模块对象是从模块类对象中创建的,并继承与从中创建它的模块类对象相同的结构和属性。然而,每一个模块对象被绑到工厂10中的特定实体。因此,可以创建单独的模块类对象52来表示特定类型的反应器单元(不管在该工厂10中出现了那些反应器单元的多少类型),而对于每一个具有工厂10中实际出现的那种类型的不同反应器单元,可以存在或创建不同的模块对象53。
从模块类对象中创建的模块对象是与该模块类对象相关联的并且为其所拥有。结果是,对该模块类对象做的改变可以自动地被反映在或传播到每一个与那个模块类对象相关联的模块对象中。因此,当已经从特定模块类对象中创建了许多模块对象的时候,利用绑到不同的过程实体上的每一个不同的模块对象,通过简单地改变该模块类对象和自动地将这些改变传播到相关联的模块对象上,可以改变每一个不同的模块对象。
类似地,一旦已经从模块类对象中创建了该模块对象,可以使用批编辑方法,将这些模块对象绑定到工厂10中的特定装备上。特别地,因为特定模块类对象的模块对象全部连接到相同的模块类对象或被其所拥有,所以使用例如电子数据表类型应用程序可以将它们全部配置在一起,其中该电子数据表类型应用程序使模块对象和在工厂10中的与那些模块对象相关联的特定装备之间特定关系的说明(specification)变得更容易而且更加不费时。
图1中的模块类对象52可以是一种在面向对象编程环境或语言中通常被称作对象的东西。结果,这些对象具有拥有或引用其它对象的能力。一般说来,模块类对象52是高级别对象,它可以包括诸如与过程实体相关联的控制例行程序、装备或其它元件这样的独立元件的指示或定义,以及以那些独立的元件彼此之间互相作用的方式的定义或指示,其中,互相作用的方式是诸如物理元件互连的方式或是逻辑元件结合物理元件进行操作的方式这样的方式。换句话说,模块类对象可以是在,例如,提供用于控制和查看工厂10中的特定部分或特定组装备、控制元件、显示器等等的基础的面向对象编程语言中的一个对象,并可以用来创建要用来配置工厂10中不同的重复装备的那个元件的许多实例。
基本上,每一个模块类对象是一个配置容器,包括过程实体的通用定义,该定义是以所有适用于那个实体的并要由控制器12使用来控制那个实体的或者或要由工作站14使用来执行有关那个实体的显示活动的所有不同的控制和/或显示应用程序或例行程序。模块类对象可以表示任何性质的过程实体,如单元、装备、控制实体、显示应用程序等。在工厂10的配置过程中,通过将每一个配置实例(从模块类对象创建的模块对象)相关联到或绑定到不同的实际过程实体上,模块类对象可以被用来为任何数量的不同过程实体创建过程实体的配置实例,其中该任何数量的不同过程实体符合由模块类对象提供的定义。这些不同模块对象包括,在其它事物之间,绑定到如在工厂10内设置的特定过程实体上的控制例行程序和/或显示例行程序,其中这些控制例行程序能够被下载到并在图1的控制器12中使用来执行在过程实体上的实际控制活动,以及该显示例行程序能够被下载到工作站14来执行有关在工厂10的操作过程中的实体的实际显示活动。
不同类型的模块类对象可以反映不同范围的过程实体,因此,可以包含控制和/或显示例行程序,对它们进行配置以对不同范围的过程实体进行操作或相关于不同范围的过程实体进行操作。过程实体的范围越大,诸如单元,通常将关联到模块类对象的控制和/或显示例行程序就越多,同时使用那些模块类对象来配置工厂的各部分也变得更容易。但是,与模块类对象相关联的过程实体的范围越大,在此范围内的过程将包括重复装备的可能性就越小,因此,大规模的使用模块类对象的可能性也变得越小。相反地,与模块类对象相关联的过程实体的范围越小,在工厂的各种不同地点中能够使用模块类对象的可能性就越大,可是当在任何特定的实例中使用模块类对象时所执行的配置量就越少。无论如何,模块类对象允许为不同的重复的装备而在比控制模块级别上更高的抽象(abstraction)的级别上执行配置,这使得当使用模块类对象的时候,它使得以重复单元及其它的装备来配置工厂变得更加容易以及时间消耗更少,特别是对于大规模的模块类对象,如在单元级别上。
在一个实施例中,当配置过程控制系统的时候,配置工程师可以为在工厂内所重复的不同元件而创建单一模块类对象,诸如用于图1的不同的反应器。此后,配置工程师可以为图1的每一个实际的反应器创建模块类对象(模块对象)的实例。每一个这样创建的模块对象都包括由控制器12a使用的控制例行程序,用于操作图1中的反应器之一,并特别地连接到或绑到图1中的反应器之一内的装备上。然后可以将这些控制例行程序下载到控制器12a并在工厂10的操作过程中使用。然而,一旦创建,每一个模块对象仍然连接在模块类对象上,并且可以由模块类对象所控制来进行改变,以提供或拒绝对模块对象进行的访问,等。类似地,可以一起创建或定义来自相同模块类对象的模块对象,例如,可以使用电子数据表程序,将该模块对象绑定到在工厂内部的装备上。
虽然存在许多不同可能类型的模块类对象可以在工厂内创建或使用以在工厂内执行配置活动,但是这里作为例子所讨论的四种特定类型都包括单元模块类对象、装备模块类对象、控制模块类对象以及显示模块类对象。总的来说,每一种不同类型的模块类对象都被设计成或打算用于工厂10内的不同的控制范围或使用范围。单元模块类对象被打算在工厂内用来表示(以及设置)广泛的装备的控制活动。特别地,单元模块类对象被打算模仿或用来配置互相关联的装备集(通常是重复的装备),例如图1的反应器,它具有用某种已知的方法而相互协同工作的独立元件。
打算将装备模块类对象用于表示(以及配置)工厂内较小范围的物理装备的控制活动。与装备模块类对象相关联的装备通常是一个或多个物理实体,诸如阀门、流量计等,它们构成单元的子系统,并且该装备模块类对象可以包括一个或多个命令或算法,它们可以是在部分装备上所执行的命令驱动算法(CDA)、状态驱动算法(SDA)、顺序流程图(SFC)算法、功能框图(FBD)算法、阶段算法等。因此,装备模块类对象是用来配置单元内的多个较低级别的部件或实体的控制,以便在该单元内使用的该装备上提供一组基本的功能。正如已知的那样,当必须通过多重步骤来协调低级别的部件才能实现一个功能的时候,就使用命令驱动算法(命令驱动的控制逻辑)。例如,可能需要将阀门打开特定的时间量,然后关闭,同时另一个阀门被打开并接着关闭。图3的累加器101使用这种命令驱动算法,基于流量计的读数,来首先启动然后操纵粗阀门和精密阀门,以通过累加器提供所需的总流量。状态驱动算法(状态驱动的控制逻辑)可以规定不同低级别部件的状态,其中该部件在单个步骤中就能操作。这样的状态驱动算法可以用在图4的出口阀门系统104中,其中基于出口阀门系统104的所需状态,不同阀门的状态在这里被不同地控制(除了在单个步骤中),以关闭箱100,排干箱100或从箱100中输送产品。
打算将控制模块类对象用于表示(以及配置)工厂内的各个单独的控制元件或控制模块。控制模块类对象提供或规定特定的控制类型,以便使其在如阀门、仪表等的工厂实体、一部分装备或甚至单元上被执行。总的来说,控制模块类对象提供特定类型的控制程序设计,如一组通讯互联的功能块,用来定义某些在控制器中要执行的控制模块,该特定类型的控制程序设计对在工厂内执行重复的控制活动来说是有用的。在大多数情况下,控制模块类对象能提供通用控制策略,来操作单一设备或相关的设备集。
打算将显示模块类对象在工厂10的操作过程中用来表示(以及配置)供用户查看的显示活动,例如显示给控制操作员。因此,显示模块类对象可以规定用来在图1的操作员工作站14内生成某一类型的显示所需的程序设计,以及在一个或多个工作站14(以及在工厂10内的任何其它设备)中运行所需的程序设计,从而启动显示,以便在工厂10的操作过程中从工厂获得适当的信息。显示类模块的类型包括例如,警报显示、配置察看显示、操作察看显示、诊断显示等。当然,显示模块类对象可以提供用来表示或连接到工厂中任何期望的范围内的物理元件或实体的显示。例如,在工厂10内,显示模块类对象可以显示关于整个区域、单元、一部分装备、控制元件、或这些元件的任意组合的信息。
参考图5,一个分级曲线图阐述了在图1的配置应用程序50中使用的不同类型的模块类对象之间的相互连接,以及在模块类对象和从那些模块类对象中开发出来的模块对象之间的相互关系。从图5的曲线图的顶部开始,模块类对象按照模块类类型被分成以下类型之一单元模块类类型400、装备模块类类型402、控制模块类类型404以及显示模块类类型406。当然,也可以提供或使用其它类型的模块类对象,这里阐述的四种类型只是单纯的示意性的模块类类型。各个单独模块类对象(例如它们可以是面向对象编程语言中的高级别对象,并且为了清楚的缘故,在图5中通过双轮廓线来表示)归入每一个不同类型的模块类400、402、404和406中。特别地,在工厂10内,可以存在大量的不同单元模块类对象,用于不同的单元或单元类型。例如,在工厂10内,反应器单元类模块对象410可以表示特定类型的或特定配置的反应器。类似地,在工厂10内,包装机单元模块类对象412可以表示特定类型或特定配置的包装单元,以及干燥器单元类模块对象414可以表示特定类型或特定配置的干燥器单元。当然,可以有多于一个反应器单元模块类对象来表示在物理组成上彼此不同的反应器。而且,没有正做尝试来列出在工厂内的所有不同类型的单元,它们可以利用单元模块类对象来表示或模型化(model),并且本领域技术人员将能认识到在不同类型的工厂内,存在许多不同类型的单元,它们都可以通过单元模块类对象来模型化或表示。
类似地,在工厂10内,可以用许多不同的装备模块类对象来表示、模型化以及配置不同类型的装备。图5中阐述的例子包括累加器装备模块类对象416和出口阀门装备模块类对象418,在工厂10内,它们中的每一个都与不同类型的装备(以及优选的重复装备)相关联。通过相同的方式,可以存在许多不同类型的控制模块类对象,如图5中所阐述的开/关阀门控制模块类对象422、液面传感器控制模块类对象424、以及流量计控制模块类对象426。此外,在图5中阐述了的显示模块类对象为警报显示模块类对象432、查看显示模块类对象434以及诊断显示模块类对象436。当然,任何其它期望的单元、装备、控制和显示模块类对象可以按照这里说明的原理,而在工厂10的配置应用程序50中被创建并使用。
每一个模块类对象可以具有与此相关联的或因此拥有的子对象。这些子对象可以是在它们自己中的模块类对象,或是如图5中所阐述的,可以作为它们所属的模块类对象的实例来创建这些模块对象。图5利用相应于(即绑到)图1中的各个反应器的这些反应器模块对象,阐述了反应器单元模块类对象410具有三个与其相关联的反应器模块对象反应器_01、反应器_02和反应器_03。图5也阐述了累加器装备模块类对象416,它有或拥有五个不同的模块对象命为Water1、Acid1、Acid2、Alkali1以及Alkali2。类似地,开/关阀门控制模块类对象422被描述为包括如下模块对象粗阀门1、粗阀门2、粗阀门3、精密阀门1、精密阀门2和精密阀门3。用类似的方式,图5的每一个其它单元、装备、控制和显示模块类对象都可以具有与其相关联的一个或多个模块对象。然而,为了简明,这些模块对象并没有在图5中阐述。
在图5的曲线图中,反应器_01、反应器_02和反应器_03单元模块对象;Acid1、Acid2、Alkali1、Alkali2以及Water1累加器(装备)模块对象;粗阀门1、粗阀门2、粗阀门3、精密阀门1、精密阀门2和精密阀门3控制模块对象;以及其它单元、装备、控制和显示模块对象中的每一个对象,都是在工厂10内绑定到实际的单元、装备、控制模块或显示应用程序的单独对象。例如,因为存在在工厂10中使用的多个物理酸累加器,所以将会有多个在配置例行程序中创建的酸累加器模块对象,单独的酸累加器模块对象为了每一个在工厂10中存在的单独酸加法器而存在。然而,每一个单独的累加器模块对象都绑定到相同的累加器模块类对象416,或由它所拥有。当然,图5的曲线图只阐述了有限数目的模块类对象以及与其关联的模块对象,并且,将理解,从每一个不同的模块类对象中可以提供其它类型的模块类对象并创建任何期望数目的模块对象。
图5中的每一个模块类对象(以及图5中的每一个模块对象)可以包括,作为对象的一部分的,物理或逻辑过程元件的定义或指示,该元件定义或组成该模块,以及如果需要的话,也包括方式,其中在工厂10内那些过程元件用这种方式在物理上或逻辑上彼此相互作用以执行一些活动。例如,单元模块类对象通常包括所有物理和控制元件的一个指示,这些元件在被定义为所述单元的过程实体内,或组成被定义为所述单元的过程实体。单元模块类对象也可以定义特定的单独部分的组成,以及如何将那些部分物理地连接到一起以作为一个单元来操作。类似地,装备模块类对象将通常包括控制例行程序或控制模块以用来控制被定义为部分装备的实体,以及使用该控制例行程序或控制模块来定义某种方式的命令,以便在在工厂10内设置装备时作为部分装备来操作,其中这些部分以所述方式进行物理或逻辑上的相互作用。类似地,每一个控制模块类对象将通常以某种类别的控制算法的形式来定义控制活动,以便在工厂内执行它。同样,每一个显示模块类对象可以在其它事物中定义显示屏幕配置和要显示的信息,还有要收集的数据以及对所收集的数据要执行的数据操作,如果有的话,还有在工厂10中的具体类型的单元、装备、工厂区域、或其它任何物理或逻辑上的实体。
作为模块类定义的一部分,模块类对象可以指示或定义其中要引入的或使用的其它模块类对象。如果是这种情况,根据在模块类级别中所定义的关系,从那个模块类对象创建的模块对象将引入、引用或包括从其它模块类对象所创建的其它模块对象。虽然不是严格必要的,但是单元模块类对象可以引入其它单元模块类对象、装备模块类对象、控制模块类对象和显示模块类对象,而装备模块类对象可以引入其它装备模块类对象、控制模块类对象和显示模块类对象。控制模块类对象可以引入或引用其它控制模块类对象和显示模块类对象。然而,如果需要,同样可以使用其它模块类对象的相互关系。这些引入关系在图5的曲线图的底端用大箭头来说明,用于指示任意的控制、装备和单元模块类对象可以包括或引用任意的显示模块类对象;任意的装备或单元模块类对象可以包括或引用任意的控制模块类对象;以及任意的单元模块类对象可以包括或引用任意的装备模块类对象。将理解的是,模块类对象可以引入其它相同类型的模块类对象。例如,单元模块类对象可以引入另一个单元模块类对象,作为它的定义的一部分。以类似的方式,装备模块类对象可以包括另一个装备模块类对象,控制模块类对象可以包括另一个控制模块类对象,以及显示模块类对象可以包括另一个显示模块类对象。当然,如果需要,模块类对象可以多次使用或引入另一个模块类对象。例如,反应器单元模块类对象可以引入或使用累加器装备模块类对象许多次,这是因为由反应器单元模块类对象模型化(model)的反应器包括累加器的多个实例。
同样将理解,当第一个模块类对象引入或使用第二个模块类对象时,任何从第一个模块类对象创建的、或是作为第一个模块类对象的实例的模块对象,都将引入或使用从第二个模块类对象创建的、或是作为第二个模块类对象的实例的模块对象。因此,当反应器单元模块类对象410使用累加器模块类对象416作为一个元件或是其中的部分时,反应器_01模块对象将使用或包括累加器模块对象之一,例如Acid1模块对象,作为一个元件或其中的部分。类似地,如果累加器装备模块类对象引入或包括出口阀门装备模块类对象,那么从累加器装备模块类对象中创建的将唯一地命名为例如Totalizer_1的模块对象,将包括从出口阀门装备模块类对象创建的并且唯一地命名为例如Outlet_Valve_2的模块对象。通过这种方式,在模块类对象级别上所定义的模块类对象之间的关系被反映在在从这些模块类对象开发的或创建的模块对象中。在模块类对象(以及模块对象)之间的相互连接或引用使得对象在配置活动的过程中具有强大的可变性以及高转移能力,以便在创建了一组原始的(primitive)、例如控制和装备模块类对象的模块类对象之后,更多复杂的模块类对象,例如单元模块类对象,可以通过引用原始的模块类对象而被轻易地创建。当然,随着模块类对象可以引用或使用其它模块类对象,它们也能或代替定义或使用简单的对象或过程实体,例如没有关联的模块类对象的阀门、传感器等。这些简单对象将在模块类对象自身内,按照为此所使用的控制例行程序而进行全面的定义。
图6说明了一个示例性的反应器单元模块类对象410,以便显示用于说明或定义与单元模块类对象相关联的或当前在单元模块类对象内的实体的一个方式。如图6所说明,反应器单元模块类对象410包括箱500的指示,它是在工厂10内的简单对象或元件,其中没有模块类对象为之存在。箱500用虚线来说明,因为不存在控制或不需要控制低级别活动,或执行与箱有关的输入/输出活动。结果是,包括箱500在内,只是用来说明与反应器单元模块类对象410相关联的其它对象之间的相互连接。反应器单元模块类对象410也包括三个累加器501、502和510,分别叫做Acid(酸)、Alkali(碱)和Water(水),它们是对图5的累加器装备模块类对象416的三个不同的引用。在单元模块类对象410的一部分中说明了Water累加器模块类对象510,其中Water累加器模块类对象410被虚线分隔,以指示这是一个共享的模块类对象,因此,单元模块类对象410与其它单元模块类对象共享对这个对象的控制。图6的出口对象504是图5的出口阀门装备模块类对象418的引用,液面传感器505是图5的液面传感器控制模块类对象424的引用,以及进水阀门503是一个阀门对象的引用,其中该阀门对象可以是简单的阀门单元(并且是在单元模块类对象410内完全定义的)或者可以是阀门控制模块类对象的引用,该阀门控制模块类对象在其它地方用配置策略来定义。为了定义这些不同元件之间的相互连接的缘故,也描述了在不同实体或反应器单元模块类对象410的某些部分之间的物理相互连接。如上所述,单元模块类对象410或其它任何类型的模块类对象,可包括简单元件,这些元件在模块类对象(包括任何与此关联的通用控制例行程序)内完全被定义,和/或可包括模块类对象的引用,其中该引用在该模块类对象外部被定义。
单元模块类对象410也包括两个示例性的显示模块类对象,叫做反应器查看显示器520以及反应器报警显示器522,它们是图5的查看显示模块类对象434和报警显示模块类对象432的引用。这些对象定义类显示活动,用于显示状态(例如,箱的填充面)以及与任何在反应器单元模块类对象410中定义的反应器单元的装备或部分关联的报警。相似地,单元模块类对象410可以包括其它单元,例如,在方框524中作为Dose、Mix、Drain和Flush阶段类对象所示的阶段类对象,每一个阶段类对象定义了一个要在由单元模块类对象410定义的装置上操作的类控制例行程序。该单元模块类对象能够具有零或更多的与阶段类对象的关联。阶段类对象524可在其它地方定义并能够以任何想要的方式导入到单元模块类对象410中。在某种意义上,阶段类524是命令或例行程序,它们在由装置类对象410定义的一个装置上操作来完成不同的功能,例如填充该装置、加热该装置、清空该装置、清洁该装置,等等。
另外,单元模块类对象410可以包括一个存储对模块类对象的引用的存储器或部分526,其中模块类对象是由配置应用程序50(图1)从这个单元模块类对象410中创建的。该部分526实质上是从该模块类对象410创建并由其拥有的模块对象的列表。(当然,可以将这个列表或拥有的模块对象的其它指示存储在工作站中,或是通过配置应用程序50以任何想要的方式将它存储,而不必物理地包含在该单元模块类对象410中)。无论如何,在图6的实施例中,单元模块类对象410拥有单元模块对象反应器_01、反应器_1、反应器_02,等等,其中,它们之中的每一个都已经从反应器单元模块类对象410中创建了。
单元模块类对象410也包括一组可以由单元模块类对象410在配置活动期间或是在其之后执行的方法530。方法530可以包括一个自动地将对该单元模块类对象410所作的变化传播到由该单元模块类对象410所拥有的每一个模块对象526上的变化管理方法或应用程序。其它方法可以包括执行关于该单元模块类对象410和/或关于由此拥有的任何一个单元模块对象526的安全或访问控制的安全控制方法,或使用户或配置工程师能够规定用于该模块类对象或由此创建的任何模块对象的变化参数和/或安全参数的方法。当然不同方法530可以执行任何其它的在该单元模块类对象410上或是有关于它的过程。
如果希望的话,该单元模块类对象410可以控制将对该模块类对象410所做的变化传播到单元模块对象526的方式以及在单元模块对象526中设置安全访问的方式。一种提供这种功能性的方法是在单元模块类对象410中设置一个或多个标志或参数,来规定要将变化传播到和将要在单元模块对象526中管理安全的方式。特别地,可以安排一个或多个变化传播参数,来规定是否将在单元模块类对象410上做的变化自动地传播到一个或多个单元模块对象526。这些变化传播参数可以存储在单元模块对象526中,并可以就整个单元模块对象,或以逐个子单元为基础,规定是否将对单元模块类对象做的变化反映在该单元模块对象中。例如,该单元模块类对象410可以包括全局变化参数534(标记为“C”),这个参数可以设置在每一个从单元模块类对象410中创建的单元模块对象中,以使能够或禁止将对该单元模块类对象410做的变化自动地反映在该单元模块对象中。同样地,每一个子单元或块,例如块501-505、510、520和522,可以包括一个仅为那个块规定的是否将对在单元模块类对象410中那个块所做的变化反映在该单元模块对象中的变化参数536。当然,一个单元模块对象的不同块可以不同地设置,以便,例如,将对单元模块类对象410的Acid块501所做的变化传播到模块对象526中一个特定块的相应的Acid块上,而相反地,以便不将对单元模块类对象410的Alkali块502所做的变化传播到模块对象526中一个特定块的相应的Alkali块上。另外,从一个单元模块类对象创建的不同单元模块对象可以具有彼此不同地设置的变化参数,以便将对单元模块类对象410内的Alkali块502所做的变化传播到单元模块对象526中的第一个块的相应的Alkali块502,而不传播到单元模块对象526中的第二个块的相应的Alkali块502。当然,当在该单元模块类对象410中做出一个变化的时候,该单元模块类对象410的变化管理方法可以访问和使用单元模块对象526的变化参数来在那些对象中做出或不做出变化。
以相似的方式,该单元模块类对象410可以包括一个或多个安全参数,该参数规定在每一个单元模块对象526中控制安全或访问的方式。该单元模块类对象410可以包括一个全局安全参数538(标记为“S”),这个参数可以向从单元模块类对象410创建的整个反应器单元模块对象提供任何想要的级别的安全,和/或可以包括一个用于每一个单元模块类对象410的子单元的不同安全参数540,例如用于块501-505、510、520、522等中的每一个,这在逐块的基础上为那些块中的每一个规定了安全级别。该全局安全参数538可以是一个锁定参数,对除了那些具有预先批准的安全访问级别的用户之外的所有用户锁定该单元模块类对象。当然,该安全参数538和540可以规定许多不同安全级别中的任何一个,例如,拒绝访问、限制访问、访问特定类型用户或标识,等等,而该安全级别可以在不同块中是不同的,也可以在从相同单元模块类对象创建的不同单元模块对象中被设置为不同的。如果希望的话,该安全措施的部分可以包括在与该单元模块类对象关联的一个或多个方法或算法上提供加密。
可以理解,该单元模块类对象410的变化和安全参数可以设置为默认值,而从该单元模块类对象410中创建的每一个单元模块对象526相应的变化和安全参数可以在创建时采用这个默认值。但是,也可以在创建这些单元模块对象之后,在单元模块对象526中单独地改变该默认的变化和安全参数(由用户用适当的安全访问)。尽管这里就反应器单元模块类对象来论述变化和安全参数,但在其它类型的单元模块类对象中和在任何希望的类型的装备模块类对象、控制模块类对象、显示模块类对象等等中,也可以提供相似的变化和安全参数。
如果希望的话,该单元模块类对象410可以包括引用,例如URL或其它为该装置类模块对象而存储或与其相关的文件的引用,该文件包括与关联于该单元模块类对象410的装置或该装置的任何子单元相关的文件。这种引用在图6中作为引用549进行说明。
为了模块类对象的另一个实施例,在图7中说明了累加器装备模块类对象416。该累加器装备模块类对象416包括叫做Coarse_Valve550(粗阀门)和Fine_Valve552(精密阀门)(这两个都是开/关型的控制模块类对象)的控制模块类对象,叫做Flow_Meter554(流量计)的控制模块类对象(它是流量计控制模块类对象),以及这些单元之间的互联的指示。更进一步地,该累加器单元模块类对象416包括对显示模块类对象的引用,包括对一个TotalizerAlarm(累加器警报)显示模块类对象560的引用,和对一个或多个可以在该装备模块类对象416上执行的算法564的引用。尽管这里列出的算法564包括Totalize_Fast命令和Totalize_A ccurate命令、也可以包括或使用任何其它命令或算法。更进一步地,与一个装备模块类对象关联或包括在其中的命令算法564可以采用任何想要的形式,可以是,例如命令驱动算法(CDA)、状态驱动算法(sDA)、连续流程图(SFC)算法、功能框图(FBD)算法、阶段算法,等等。但是,一般说来,所有的算法564都会具有特定的类型,例如,CDAs或SDAs。当然,可以用任何想要的语言或编程环境来写该算法564,例如C++编程环境、任何连续功能图编程环境、一个功能块编程环境,等等。
该累加器装备模块类对象416也包括一个存储指示(而如果必要的话,该通信通路到)一组从该装备模块类对象416中创建的,叫做Acid1、Acid2、Alkali1、Alkali2、Water_Hdr1等拥有的装备模块对象566的列表或存储器。该累加器装备模块类对象416同样包括一组方法570,这一组方法包括一个变化管理方法,用来结合该全局变化参数572和/或基于对象的变化参数574来控制将变化传播到该装备模块对象566上。该累加器装备模块类对象416也包括一个全局安全参数580以及基于对象的安全参数582。该变化和安全参数572、574、580和582通常像对图6的单元模块类对象410的变化和安全参数描述的那样操作,并且可用于该控制模块类对象416的任何单元,包括该指令564。另外可以在该模块类对象内在任何希望的级别上提供该变化和安全参数中的任一个或两个,而不是全局地或在对象或单元级别上,这点在这里特别说明。如果希望的话,模块类对象的变化和安全参数或从其中创建的任何模块对象可以用像电子数据表程序这样的批配置应用程序或程序来安排或配置,以使得配置工程师能够以一种简单而直接的方式来安排或规定用于整个模块类对象或一个模块对象的不同的变化和安全参数。
如果希望的话,该装备模块类对象416可以包括像URLs或其它引用这样的,为该装备模块类对象而存储或与其关联的文件的引用,包括与关联于该装备模块类对象416的装备或该装备的任何于单元相关的文件。这种引用在图7中作为引用599进行说明。同样,该装备模块类对象416的任何算法,例如算法564中的任何一个,可以加密或具有与此相关的安全参数,该参数加密或解密这些算法564。如果这样希望的话,可以由一个方法570来执行这样的加密或解密。
要配置该工厂10,配置工程师在与该配置应用程序50(图1)相关的库内创建必要的装置、装备、控制和显示模块类对象。如果希望的话,该配置工程师可以从较低范围的实体开始,例如控制和显示模块类,然后发展用于较高范围的实体的模块类对象,例如可以使用或引用较低范围的实体的装备和单元模块类对象。其后,对于该工厂内的每一个过程实体,该配置工程师能够选择或规定必要的模块类对象来创建与该选中的模块类对象相应的实际的模块对象。当配置重复装备的时候,配置工程师会从相同的模块类对象中,为该重复装备的每一个实例创建一个模块对象。因此,配置工程师可以为图1的反应器创建一个反应器单元模块类对象(其中包括创建由该反应器单元模块对象引用的其它模块类对象,如果在库内尚不存在这样的其它模块类对象的话)。此后,该配置工程师可以通过为图1的反应器_01、反应器_02和反应器_03中的每一个从该反应器单元模块类对象中创建一个反应器单元模块对象来配置该过程。
在从一个模块类对象创建一个或多个模块对象之后,该配置工程师可以将这些模块对象(包括子对象或引用的对象)绑到该工厂内具体装备上。因为该单元模块对象是与一个单元模块类对象关联的,所以可以使用,例如像电子数据表应用程序这样的批处理程序,来一同规定别名、参数和用于不同单元模块对象的其它变量。当然,通过将该模块对象绑到特定装备,该配置工程师在实际地规定由该控制器12内的控制例行程序或控制模块所使用的控制变量和通信通路名,来在该工厂10的操作期间执行控制活动,或在该工厂的操作期间,显示例如在该工作站14中的显示例行程序所使用的变量。在绑定活动结束之后,该配置工程师可以将该绑定控制例行程序下载到该控制器12并将该绑定显示程序下载到该工作站14。
图8-16描绘了一个在配置工程师创建和使用模块类对象来配置该工厂10的过程中,可以由图1的配置应用程序50创建的屏幕显示。如所理解的那样,图8-16中的屏幕显示中的大多数包括一个在该屏幕的左手边的资源管理器视图,这个视图提供一个描绘该工厂10配置的组织树结构。同样,图8-16的屏幕显示中的大多数包括一个或多个在它的右侧的信息视图。这些信息视图提供关于在该资源管理器视图的单元中选中的单元的进一步信息。可以通过为不同模块类对象或它的子单元设置的图6和7的控制和安全参数534、536、538、540、572、574、580和582,可以决定或控制在该信息视图中能向用户显示或由用户改变的信息。因此,该资源管理器内的一个特定单元可以显示或呈现给用户,用于基于设置在该模块类对象中的并被传播到该资源管理器视图所描绘的模块安全和控制参数进行查看和/或变化。当然,像早些时候说过的那样,信息可能是一直隐藏的,可能只有通过用户输入一个口令或其它安全代码才是可显示的或可改变的,可能一直是可显示的而不是可改变的,可能一直是可显示的和可改变的或这些或其它安全和变化参数的任何其它组合。更进一步地,如果希望的话,可以使用高亮、灰化、彩色或任何其它技术在资源管理器视图中指示一个单元的显示性或可改变性,以便告诉用户哪一个单元能够更具体地显示或改变。
在图8中,屏幕显示600包括一个在显示的左手边描绘的资源管理器配置视图602的一部分。资源管理器视图602的这部分说明了存储包括单元模块类对象604、装备模块类对象606和控制模块类对象608的许多模块类对象的库。反应器单元模块类对象610(它可以对应图6的反应器单元模块类对象410)存储在该装置模块类库604中,包括许多子单元的指示,这些子单元包括Dose、Mix、Drain、Flush阶段类对象,和Acid、Alkali、Water和Outlet装备模块类对象,Water_In(进水)和Level_Meter(液位计)控制模块类对象以及其它所需的对象。因此,像在该装置模块类库604中规定的那样,该反应器单元模块类对象610包括阶段类的指示以及装备模块类对象和控制模块类对象的指示。因为反应器单元模块类对象610是在该屏幕600中选中的,所以在屏幕600的右侧612更具体地描绘它的单元。
更进一步地,该装备模块类库606包括累加器装备模块类对象614(它可以对应于图7的累加器装备模块类对象416)和Reactor_Outlect装备模块类对象616。该累加器装备模块类对象614包括一个算法(例如图7的算法564中的一个)的三个不同部分,叫做Command_00001、Command_00002和Command_00003。该模块类对象614也包括对控制模块对象的引用,叫做Coarse_Valve和Fine_Valve(它们是开/关类型的控制模块类对象)以及Flow_Meter(它是流量计类型的控制模块类对象)。更进一步地,该Reactor_Outlect装备模块类对象616包括具有State_00001、State_00002和State_00003的三个不同状态的状态驱动控制算法,以及Target、Drive、Monitor和Readback模块,及Outlet、Drain和Product阀控制模块对象(它们可以是对具有开/关控制模块类对象类型的模块的指示或引用,并且它们可以叫做Outlet、Drain和Product,或它们可以是简单对象)。与该Totalizer和该Reactor_Outlet模块类对象614和616关联的命令和状态驱动算法可以是任何想要的例行程序,并且可以引用该装备模块类对象内的控制模块对象,以便和那些命令一起使用。特别地,该装备模块类对象的CDA或SDA命令算法可以包括,在执行该算法的时候,通过结合相应于那些模块的模块块的名字,来指示将要操纵装备的哪一部分的引用控制模块(或其它装备模块)的表达式或动作。这些算法内使用的相应于控制模块(或另一装备模块)的模块块名字,规定该装备模块对象引用的或与其关联的控制模块对象,该算法位于该装备模块对象中,并且当从该装备模块类对象中创建该装备模块对象的时候,该具体名字将会被绑定或用具体的例子说明。
图9说明配置屏幕620,其中,将该累加器装备模块类对象614展开来说明与此相关的运行逻辑,该逻辑包括具有Command_00002、Command_00003和Command_00099的命令驱动算法。像在该屏幕620的右侧622中所示的那样,更具体地提供了关于该运行逻辑控制例行程序的信息。特别地,该Command_00002是用来通过该累加器控制精确或精密流量的加精确例行程序。该Command_00003是用来通过该累加器控制或提供快速流量的加快速例行程序,而该Command_00099是复位该累加器的复位例行程序。在该屏幕620中的Monitor块是一个与该运行逻辑相关的功能块,其中,该运行逻辑提供监视活动。如从图8和9中理解的那样,该库604、606和608内的模块类对象中的每一个单元都具有子对象和子单元,并且,在一些或全部情况下,在该工厂10的运行期间,这些子单元引用或包括要由一台计算机例如控制器或工作站执行的控制例行程序或显示例行程序。但是,在该模块类对象内的控制和显示例行程序和其它装备的引用本质上是按类的,以便它们被不连接到或绑到工厂10内实际的各装备上。
图10说明了另一个屏幕显示630,它示出了该累加器装备模块类对象614的运行逻辑中的Command_00002例行程序的细节。如在一个从连续功能图编程编辑器634开发出来的弹出窗口632中所示的那样,Command_00002例行程序包括一系列的步骤,而每一个步骤包括一系列的动作。在该窗口632中仅仅说明了该Command_00002例行程序的第一步骤(S1)的第一动作(A1)。必须注意,该Command_00002例行程序的第一步骤的第一动作将该Flow_Meter控制模块对象参数Reset设置为“True”,然后,基于变量SP的状态来将该Coarse_Valve控制模块对象(或模块块)的Target_State参数置位为“ValveOpen”,并将该Fine_Valve控制模块对象(或模块块)的Target_State参数置位为“ValveOpen”。应该理解,通常在这一点,该Command_00002例行程序的这个部分引用与该累加器装备模块类对象相关的Flow_Meter、Coarse_Valve和Fine_Valve控制模块对象(或模块块),但是从该累加器装备模块类对象中创建的任何实际累加器装备模块对象的Command_00002例行程序都将引用用该累加器装备模块对象创建的或作为其一部分的控制模块对象的实际名字。
图11描述了一个屏幕视图640,它示出了与Dose阶段类642相关的一个控制算法的细节,该阶段类642可以用在或引用到图8的反应器单元模块类对象610中。特别地,该Dose阶段类642包括一组不同的通用控制动作,这些动作包括Abort、Fail、Hold、Restart和Run。与该运行动作相关的逻辑(叫做Run_Logic)包括一系列的步骤,在屏幕部分644中描述为Step1(S1)、Step2(S2)、和Step3(S3)、两个转换T1和T2以及一个终端。一个连续功能图编辑器646以框图的形式图形地示出这些步骤和转换。弹出屏幕648示出了与Step1(S1)的Action1(A1)相关的实际控制逻辑。特别地,在该屏幕648中的运行逻辑是一个逻辑编辑器,它包括获取用于该反应器的共享集水头、打开进水阀门,然后将与该反应器相关的所有累加法器复位的动作。
因为该Dose阶段类是独立地写该反应器,它使用别名来引用那些要在运行期或在其之前规定的但是当然不能在该反应器单元模块类对象中规定的装备。然而,对在该控制算法648内使用的实际设备或其它过程元件的引用,是引用位于相同的单元模块类对象中的那些设备,在这种情况下是反应器单元模块类对象。在控制例行程序648中,别名是用#符号描述的,以便#WATER_IN#是一个用于在相同的模块内,即该模块类对象610内的进水控制模块的别名。同样,#WATER#,#ACID#以及#ALKALI#标记引用该反应器单元模块类对象610内的Water、Acid和Alkali累加器模块块。当然,可以理解,该累加器和反应器出口装备模块类对象和该开/关阀门控制模块类对象是通过相应的累加器和反应器装备模块对象(叫做,例如Alkali1、Acid1,等等)和开/关控制模块对象(叫做,例如,Coarse_Valve1、Fine_Valve1、Outlet1,等等)等等来与该反应器单元模块类对象关联的,因此,成为那个装置类对象的一个逻辑部分。
图12示出了屏幕显示650,在其中,更具体地说明了该Reactor_Outlet装备模块类对象616。在一个屏幕部分652中示出了与该Reactor_Outlet装备模块类对象616相关的Run_Logic,它包括Drive单元、Monitor单元、Readback单元,并更重要地包括一个状态驱动算法,该算法具有用来控制与该Reactor_Outlet装备模块类对象616相关的阀门的四个单独的状态。右侧的屏幕部分654包括有关该Drive项目的细节,包括控制块或控制模块内的驱动项目Drain_SP、Outlet_SP和Product_SP的名字,以及用于在叫做Drain、Outlet和Product的模块块内的每一个控制模块Target_State的通信通路规定,其中该控制块或控制模块是用来开或关实际的阀门的。一个读回通路规定提供了通信通路,该通信通路是用于每个Drain、Outlet和Product模块块中的Current_State的读回参数的,而且也提供了用于该Reactor_Outlet装备的不同状态的阀门的状态。因此,该屏幕部分654中的Drive细节指示,在该Reactor_Outlet616的关状态操作期间,该排水、出口和产品阀门都是关闭的,在排水操作期间,该排水和出口阀门是开的而该产品阀门是关的,在释放产品操作期间,该排水阀门是关的而该出口和产品阀门是开的。可以理解,尽管图12的屏幕显示650示出了一种为一个装备模块类对象规定状态驱动控制逻辑的方式,但也可以使用任何其它希望的方式。
当然如果希望的话,这些或与该屏幕9-12相似的屏幕可以由一个配置工程师用来创建和规定在该Dose或其它阶段类中的控制算法,或为了其它模块中的任何一种,例如单元模块类对象、装备模块类对象以及显示模块类对象,从而创建任何想要的模块类对象。
在创建一个或多个如上所述的模块类对象之后,该配置工程师然后可以使用这些模块类对象来配置该工厂10内的单元。图13说明了一个屏幕显示660,该屏幕显示具有分级视图661,该视图示出该工厂10的一个系统配置662。该系统配置662包括一个称为控制策略664的部分,该策略规定用于该工厂10的控制策略,并且,特别地用于控制该工厂10的过程实体。该控制策略664被分成逻辑组,例如分为该工厂10的物理区域。在该视图661中示出了Area_A665。Area_A665包括叫做Salts的盐制造部分666,该部分可以包括许多用来制造盐的重复装备的部分或实例。
要配置该工厂10的盐制造部分,该配置工程师可以选择图8的装置模块类库604内的反应器单元模块类对象610并拖曳,或相反地在Salts666标题下复制它,以创建具有由该反应器单元模块类对象610规定的形式的一个反应器实例。这个反应器在图13中作为反应器_1单元模块对象668来示出。该配置应用程序50可以基于创建反应器_1单元模块对象668的单元模块类对象的名字,自动地对该反应器_1单元模块对象668进行命名,但是这是以一种在该配置系统内唯一的方式来进行的。像在图13中说明的那样,该反应器_1单元模块对象668包括分别对应于反应器单元模块类对象610中规定的酸、碱和出口模块类对象的Acid_1累加器装备模块对象、Alkali_1累加器装备模块对象以及Outlet_2装备模块对象。更进一步地,该反应器_1单元模块对象668包括由该模块类对象610规定的Dose、Drain、Flush和Mix装置阶段(从阶段类发展的)。一个别名分解表位于一个叫做Aliases的文件夹中,包括关于用在该反应器_01单元模块对象668中任何地方的控制例行程序中的别名的分解列表。反应器_1单元模块对象668内的该别名分解表使得这些控制例行程序可以在运行期之前或期间被分解,以将它们绑到该工厂10内的特定装备上。在编号为6,385,496的美国专利中详细地说明了装置阶段和别名分解表的用途,该申请被转让给了本专利的申请人,这里特别结合它来作为参考。更进一步地,反应器_1单元模块对象668包括分别对应于在反应器单元模块类对象610内指示的Water累加器装备模块类对象和该反应器单元模块类对象610的Water_In开/关阀门控制模块类对象的一个Water_HDR1和一个Water_In模块对象。当然,该配置应用程序50可以基于反应器单元模块类对象610中相应单元的名字,再一次自动地提供用于该反应器_1单元模块对象668的单元的命名方案,其中,是从该反应器单元模块类对象610中创建该反应器_1单元模块对象668的每一个独立单元的,但是这是以一种使这些名字在该配置策略中唯一的方式来进行的。
从对反应器单元模块类对象610的论述中可以理解,该Water_HDR1是一个共享集水头(相应于图1的水入口阀门系统110)。结果,在Salts标题666下的单独的装备模块对象被叫做Water_HDR670。当然,通过将该单元复制或拖曳到屏幕部分661,该配置工程师可以从图8的累加器装备模块类对象614中创建该Water_HDR1 670模块对象。在该情况下可这样认为,将该共享集水头Water_HDR1 670描述为包括特定开/关阀门控制模块对象(叫做Coarse_Valve4和Fine_Valve4)和特定流量计控制模块对象(叫做Flow_Meter4),它们相应于图8的累加器装备模块类对象614的Coarse_Valve、Fine_Valve和Flow_Meter控制模块类对象。另外,该反应器_1模块对象668内的Water_HDR1引用该Water_HDR1装备模块对象670。
当然,在单元模块类对象内可以指定任何一个装备或控制模块作为共享或非共享的模块对象。非共享模块对象是由创建该非共享模块的较高级别模块对象所完全拥有的。共享模块对象是由一个以上的较高级别模块对象所拥有的或与它们相关的。模块对象的共享或非共享属性影响在该资源管理视图中对一个模块对象的描绘。特别地,非共享模块对象的指定产生一个仅在该资源管理视图中较高级别对象中描绘的模块对象,而一个共享模块对象的指定产生在每个较高级别模块对象中描述的共享模块块或模块,其中该较高级别模块对象在该资源管理层次中共享那个单元和一个独立模块对象。
可以理解,通过简单地复制一个反应器单元模块类对象610和创建一个它的(该反应器单元模块对象668)具有在该反应器单元模块类对象610内规定的所有单元的实例,该配置工程师能够在用于整个反应器的配置系统的控制策略部分664内创建一个控制策略。但是,该独立的装置和特别是,该反应器单元模块对象668的控制单元,使用在不同模块对象之间变化的输入/输出指定,并使用一个可以创建来使配置工程师能够规定将模块对象绑定在该工厂中的方式的配置对话框,能够连接到或绑到该工厂10内的特定实体。而且,如上指出的,该已创建的反应器模块对象668依然连接到反应器单元模块类对象610上并由其所拥有,以便在该反应器单元模块类对象610中做出的改变可以自动地传播到和反应在该反应器_1单元模块对象668内,如果希望的话。无论如何,该配置工程师可以改变或独立地裁剪已创建的模块对象,例如该反应器_1单元模块对象668,来接受或拒绝来自在全局(对象广泛)基础上或在逐个单元的基础上的父模块类对象的变化。
屏幕660的右侧部分672说明或列出与该反应器_1单元模块对象668(如在部分661中选中的单元)中的所有单元相关的参数、报警等,和值、过滤以及与此相关的其它信息。当然,该配置工程师可以如所希望的那样改变或规定用于反应器_1单元模块对象668的每一个单元的这个数据,从而以任何希望的方式来裁剪从该模块类对象中创建的独立模块对象。
图14示出了一个屏幕显示680,它示出了该反应器_1单元模块对象668的Acid1装备模块对象682的配置。因为选中了在图14中的Acid1装备模块对象682,所以在该屏幕680的右侧部分684中示出了它的单元。这些单元包括Coarse_Valve1、Fine_Valve1和Flow_Meter1控制模块对象,以及揭示的参数。
弹出屏幕686提供有关与该Acid1装备模块对象关联的子模块对象的信息,以及组织或创建这些子模块对象的模块类。特别地,Acid1装备模块对象属于累加器装备模块类对象,Coarse_Valve1和Fine_Valve1模块对象属于来自图8的库部分608的On_Off_Valve控制模块类对象,以及Flow_Meter1模块对象属于在图8的库部分608中的Flow_Meter控制模块类对象。
该Acid1配置弹出屏幕686的标签显示也包括参数、IO(输入/输出)、警报和Fieldbus(现场总线)指定。该参数标签可以用来规定或填写该反应器_1模块对象668的Acid1累加器的每一个单元的参数。该IO标记可以用来规定在反应器_1模块对象668的Acid1累加器模块对象682的每一个单元之间的输入/输出连接,从而来将那些独立的单元绑到该工厂10内的实际装备上。如果希望的话,可以使用一个像在图15中示出的电子数据表算法或程序来规定这些绑定,以便在全局或批的基础上规定一个模块对象(在任何级别的)的所有单元和该工厂10内的实际单元之间的互连。图15的电子数据表显示688说明了一个使配置工程师同时将来自不同累加器装备模块的粗阀门绑到该工厂10内的装备上的电子数据表视图。在该情况下,该IO_Out路径名和IO_Readback路径名是为叫做VLV-101A、VLV-201A、VLV-301A和VLV-401A的阀门规定的。但是,如果希望的话,可以以批的方式来规定相同模块的不同单元。
再参考图14,该弹出屏幕686的警报标签可以用来规定或配置与Acid1模块对象相关的警报,而一个Fieldbus标签,必要的话,可以用来规定特定的Fieldbus设备连接。当然,相似的配置屏幕可以用于反应器_1模块对象668内的其它模块对象或用于整个反应器_1模块对象668。同样,相同或相似的配置屏幕可以用于其它的模块对象。可以理解,该配置屏幕可以在模块对象的任何级别来显示和使用,包括在装置模块级别、装备模块级别、控制模块级别,等等。
图16示出了屏幕显示690,它包括用于该工厂10的配置系统的资源管理器视图661,在其中,配置工程师已经加入了另一个像从图8的反应器单元模块类对象610中复制或创建的的反应器模块对象692,叫做反应器_1_1。当然,在创建反应器_1_1模块对象692的时候,配置工程师可以规定要用在它的独立子单元中的不同的参数、与不同设备的不同连接、甚至不同的控制例行程序。像在图16中说明的那样,该反应器_1_1模块对象包括用于图8的反应器单元模块类对象610内的每一个装备模块类对象的子对象,包括Acid2、Alkali2和Outlet4装备模块对象。该反应器_1_1模块对象也包括Water_In2、和Level_Meter2控制模块对象、引用共享装备模块对象的Water_HDR1,以及Dose、Drain、Flush和Mix装置阶段。仅与反应器_1_1模块对象692关联的那些子对象被赋予了唯一的名字,而像Water_HDR1模块对象这样的共享装置就用共享集水头的名字来说明。
可以理解,根据这里说明的规则,以相同方式,配置工程师可以使用任何其它的单元模块类对象、装备模块类对象和控制模块类对象以及显示模块类对象为该过程控制环境内的装置、装备、控制单元和显示单元创建配置单元。也可以理解,使用这些实际上可以非常详细的模块类对象,为配置工程师在创建一个配置上提供巨大的便利,因为该工程师不必不得不从一个控制摸板,单独地创建每一个独立控制单元或单独地复制每一个独立控制单元,而是,能够使用在越来越高级别或范围上提供的模块类对象,来创建越来越巨大的供配置该工厂10使用的批配置项目。
更进一步地,在全局的基础上,通过改变一个或多个单元模块类对象并将那些变化传播到从那些单元模块类对象中创建的并与它们相关的每一个模块对象上,该配置工程师可以对不同过程实体的配置的单元做出变化。该特征使得在一个配置已经创建了之后,做出该配置内的变化更容易和更加不费时。而且,通过在模块类对象内设置安全参数,该配置工程师可以规定一个用于该配置系统内的模块对象的不同单元或组件的访问级别。如前所述,该配置工程师可以在任何级别上规定一个以逐个模块为基础的安全,例如在装置模块级别、装备模块级别、控制模块级别和显示模块级别。以这种方式,一个单元模块对象的有些单元可以是可见的,而其它的可能是不可见的。
当然,一旦该配置系统被完成并且将模块对象绑定到该工厂10内的各过程实体上,与这些模块相关的控制和显示模块或单元就可以下载到适合的图1的控制器12和工作站14上,用于在该工厂10的操作期间执行。
图17是用于配置工厂项目来限制对该项目的访问的示例性的例行程序700的流程图。该例行程序700可以由一个或多个计算系统,例如一个或多个图1的工厂10的工作站14和/或控制器12,来执行。该例行程序700也可以由与该工厂10分离的计算系统来执行。例如,第三方供应者可以使用该例行程序700来限制对,例如由第三方供应者开发的模块对象、模块类对象、模块模板、复合模板等的访问。然后,该已开发的模块对象、模块类对象、复合模板等,可以由该第三方的顾客使用,但是该顾客可能不能够,例如,查看该已开发的模块对象、模块类对象、复合模板等的某些或全部的内部项目。通常,该要配置的工厂项目可以例如是模块对象、模块类对象、复合模板。该例行程序700可以作为像配置应用程序50这样的配置应用程序的一部分来执行。例如,使用该配置应用程序50,例行程序700可以在模块对象、模块类对象、复合模板等的配置期间或之后执行。例行程序700也可以由一个与配置应用程序50分离的应用程序来执行。
在块702,接收用户输入,指示对该工厂项目的访问是要受控制的(即,与该工厂项目相关的数据是要受保护的)。例如,一个人配置该项目可以复选一个框、选择一个按钮,等等,这指示与该项目相关的数据是要受保护的。该用户输入也可以可选地指示与该项目关联的哪些数据是要受保护的。例如,用户可以选择保护某些数据而剩下其它的数据不保护。
可选择地,不得允许用户选择要检测那些数据。例如,该用户也许只能够在用于一个项目的保护或不保护之间做出选择。在一个实例中,如果用户选择保护与一个模块对象或模块类对象相关的数据,那么可以保护一组与该模块对象或模块类对象相关的数据,而不保护不在该组中的数据。例如,构成一个模块对象或模块类对象的功能块及它们的互连将受保护,但该模块或模块类对象的参数将不受保护。
图18A和图18B是一个可以由一个像图1的配置应用程序50这样的配置应用程序创建的屏幕显示。相似的屏幕显示可以由其它类型的应用程序创建,例如,用来监视该过程的操作期间的工序的应用程序、用于调试配置的调试应用程序、资产管理应用程序,等等。该屏幕显示720包括资源管理器视图的一个部分722,它具有复合模板的库724。该复合模板中的一个是DYN_FULL复合模板726。该DYN_FULL复合模板726包括各种的子单元,由于已经在资源管理视图722中选择了该DYN_FULL复合模板726,这些子单元在该屏幕显示720的右侧728给出描述。组成该DYN_FULL复合模板726的子单元包括参数和功能块730。
在屏幕显示720中,该DYN_FULL复合模板726还没有被配置为受保护,因此该功能块730在该屏幕显示720的右侧728给出描述。相对地,图18B示出了一个相应于DYN_FULL复合模板726的被配置为受保护的屏幕显示732。这样,在屏幕显示732中,该功能块730没有在右侧728给出描述(即,它们是隐藏的)。尽管DYN_FULL复合模板726已经被配置为受保护,但还是描绘了它的参数。
再次参考图17,在块704,提示用户输入一个口令。例如,窗口、屏幕、音频提示,等等,可以提示用户输入口令。如下所述,该口令可以用在后来的时间点上,来访问受保护的数据和/或用来再配置该项目来删除该保护。在块706,可以接收该口令。例如,该口令可以经由计算系统的键盘、辅助键盘、触摸屏、光笔、鼠标等等来输入。
在块708,一个与要受保护的工厂项目相关的数据的指示,可被存储并与该项目相关联。例如,如果该项目是一个对象,该指示可以作为那个对象的一部分存储。作为另一个实施例,该指示可以与该对象分开存储,并且一个链接到该指示的链接可以作为该对象的一个部分存储。然而作为再一个实施例,如果该工厂项目是一个从模块类对象中创建的项目,那么该指示可以作为该模块类对象的一部分存储。如果不允许该用户选择哪些数据要受保护,那么块708可以省略。
在块710,在块706接收的口令可被存储并与该项目相关联。例如,如果该项目是一个对象,那么该口令可以作为那个对象的一部分存储。作为另一个实施例,该口令可以与该对象分开存储,并且一个链接到该口令的链接可以作为该对象的一个部分存储。然而作为再一个实施例,如果该工厂项目是一个从一个模块类对象中创建的项目,那么该口令可以作为该模块类对象的一部分存储。
可选地,要受保护的数据和/或该口令可以被加密。在这些执行过程中,块708和710可以包括存储并关联该已加密的数据和/或已加密的口令。更进一步地,如果该工厂项目是一个由一个模块类对象创建的项目,那么该受保护的数据或已加密的数据可以作为该模块类对象的一部分存储。
如果该项目是一个模块类对象,该要受保护的数据和该口令的指示可以传播到从该模块类对象中创建的项目上。
一个与例行程序700相似的例行程序可以用来对该工厂项目或与该项目相关的特定数据“解除保护”。也就是,可以接收用户输入,该输入指示了与一个受保护的工厂项目相关的数据要被解除保护的。然后,可以提示该用户输入一个口令。如果该接收的口令与存储的和关联于该例行程序700的块710中的受保护的工厂项目的口令相匹配,就可以提示该用户哪一个受保护的数据(或是全部)是要解除保护的。然后,可以修改存储的和关联于该例行程序700的块708中的项目的指示,来指示该数据中的一些或全部不是受保护的。
图19是用于配置一组工厂项目来限制对该组的访问的示例性例行程序750的流程图。该例行程序750可以由一个或多个计算系统来执行,例如一个或多个图1的工厂10的工作站14和/或控制器12。在该组中的工厂项目可以例如是模块对象、模块类对象、和/或复合模板。该例行程序750可以作为一个配置应用程序的一部分来执行,例如该配置应用程序50。例如,使用该配置应用程序50,该例行程序750可以在配置该组中的项目之后执行。而且,该例行程序750可以由一个与该配置应用程序50分开的应用程序来执行。
在块752,接收用户输入,该输入指示对该组项目的访问是受控制的(即,该工厂项目组是要保护的)。例如,对与该组中每一个项目相关的数据的访问可以是受保护的。另外,不允许将项目添加到该组或从该组中删除项目。该组项目可以包括,例如项目库、项目文件夹、项目类、项目分类,等等。
通过,例如高亮显示该组项目,选择库名、文件夹名、类名、分类名等,一个人配置该组项目可以首先选择组。参考图18A,一个人可以,例如选择子库734、选择分类736、高亮显示分类736中的若干模块,等等。然后,这个人可以,例如,复选一个框、选择一个按钮、选择一个菜单项目,等等,这指示该组是要受保护的。
再次参考图19,在块754,可以提示该用户输入一个口令。例如,一个窗口、屏幕、音频提示,等等,可以提示该用户输入一个口令。如下所述,该口令可以用在后来的时间点上,来访问该受保护的组和/或再配置该组来删除该保护。在块756,可以接收该口令。例如,该口令可以经由一个计算系统的键盘、辅助键盘、触摸屏、光笔、鼠标等等来输入。
在块758,一个指示该组项目是要受保护的指示,可以被存储并与该组项目相关联。例如,如果该组是一个项目的分类,该分类要受保护的指示可以被存储,并且那个指示可以与那个分类相关联,以便如果以后尝试修改该分类,就可以确定出该分类是受保护的。另外,一个指示可以与该组中的每一个项目相关联。例如,如果该项目是对象,则一个指示该项目在一个受保护的组中的指示可以作为每个对象的一部分存储。而且,该指示可以与每个对象分开存储,并且一个链接到该指示的链接可以作为每个对象的一个部分存储。
在块760,在块756接收的口令可被存储并与该组项目相关联。例如,如果该组是一个项目的分类,该口令可被存储而且那个口令可以与该分类相关联。另外,该口令可以与该组中的每一个项目相关。例如,如果该项目是对象,该口令可以作为每一个对象的一个部分存储。该口令可以与每一个对象分开存储,并且一个链接到该口令的链接可以作为每个对象的一个部分存储。
如同图17的例行程序700一样,与例行程序750相似的例行程序可以用来为该工厂项目组“解除保护”。
图20是用于判断是否允许对与受保护或不受保护的工厂项目相关的数据进行查看的示例性例行程序770的流程图。该例行程序770可以由一个或多个计算系统来执行,例如一个或多个图1的该工厂10的工作站14和/或控制器12。例如,该工厂项目可以包括模块对象、模块类对象、复合模板。该例行程序770可以作为配置应用程序的一部分来执行,例如该配置应用程序50。而且,该例行程序770可以作为另一个应用程序的一部分来执行,例如,监视应用程序、调试应用程序、资产管理应用程序,等等。
在块772,可以接收查看与工厂项目相关的数据的请求。例如,用户可以在资源管理器视图中选择一个项目,试图“深入”进入一个模块来看该模块的组件,等等。参考作为一个实施例的图18B,用户已经在该屏幕显示732中的资源管理器视图的部分722中,选择了该DYN_FULL复合模板726。因而,该DYN_FULL复合模板726的子单元将在该屏幕显示732的右侧部分728中显示。
在块774,判断与该项目相关的任何数据是否是受保护的。例如,可以判断是否有一个与该项目相关的指示,像图17中存储在块708中的指示那样的,这指示与该项目相关的数据是受保护的。作为另一个实例,可以判断是否有一个与该项目相关的指示,例如图19中存储在块758中的指示那样的,这指示该项目是一组受保护的项目的一部分。
如果与该项目相关的数据是不受保护的,该流程进入块776,在这里显示与该项目相关的数据。例如,如果该用户已经在一个资源管理器视图中选择该项目,则那个项目的子单元可以在显示屏幕的一个部分中显示。参考作为一个实施例的图18A,用户已经在屏幕显示720的资源管理器视图的部分722中,选择了该DYN_FULL复合模板726。因此,在该屏幕显示720的右侧部分728显示了包括功能块730的DYN_FULL复合模板726的子单元。作为另一个实例,如果该用户请求“深入”进入到一个模块来看该模块的组件,那个模块的组件就可以在显示屏幕或窗口中显示。
如果确定与该项目相关的数据是受保护的,则流程可以进入块786,在这里,与该项目相关的受保护的数据是不显示的,而不受保护的数据可以显示。
可选地,如果在该块774,确定了与该项目相关的数据是受保护的,流程可以进入块778。在块778,可以使用,例如窗口、显示屏幕、音频提示,等等,来提示该用户输入口令。在块780,可以接收由该用户输入的口令。例如,该口令可以经由计算系统的键盘、辅助键盘、触摸屏、光笔、鼠标等等来输入。在块782,可以将在块780接收的口令与存储的并与该项目相关联的口令进行比较。例如,接收的口令可以与在图17的块710中的口令进行比较,或与存储在图19的块760中的口令做比较。
在块784,判断在块780接收的口令是否与存储的并与该项目相关联的口令相匹配。如果该口令匹配,与该口令相关的数据可以在块776显示。如果该口令不匹配,与该项目相关的受保护的数据不显示,而不受保护的数据可以在块786显示。参考图18B,例如,DYN_FULL复合模板726的参数显示在显示屏幕732的右侧部分728,但是该DYN_FULL复合模板726包括的功能块不显示。
可以理解,块778、780、782和784是可选的并是可以省略的。在该情况下,如前所述,如果在块774确定数据是受保护,那么流程可以进入块786。
图21是用于判断是否允许对受保护或不受保护的工厂项目或一组工厂项目进行修改的示例性例行程序800的流程图。该例行程序800可以由一个或多个计算系统来执行,例如一个或多个图1的该工厂10的工作站14和/或控制器12。例如,该工厂项目可以包括模块对象、模块类对象、和/或复合模板。该例行程序800可以作为配置应用程序的一部分来执行,例如配置应用程序50。而且,该例行程序800可以作为另一个应用程序的一部分来执行,例如资产管理应用程序。
在块802,可以接收一个修改工厂项目或一组工厂项目的请求。例如,用户可以在一个关于资源管理器视图中为修改选择一个项目,为修改选择一个项目的一个组件,等等。作为另一个实施例,该用户可以试图从一组项目中删除一个项目,将一个新项目加入到项目组中,等等。
在块804,判断该项目或该组项目是否是受保护的。例如,可以判断是否有一个与该项目相关的指示,像图17中存储在块708中的指示那样的,这指示该项目是受保护的。作为另一个实施例,可以判断是否有一个与该项目相关的指示,例如图19中存储在块758中的指示那样的,这指示该项目是一组受保护的项目的一部分。作为再一个实施例,可以判断是否有一个与该项目组相关的指示,例如图19中存储在块758中的指示那样的,这指示该项目组是受保护的。
如果与该项目或项目组相关的数据是不受保护的,那么流程可以进入块806,在这里修改是允许的。然而,如果确定在块804该项目或项目组是受保护的,流程可以进入块808。在块808,可以生成一个通知(即,一个窗口、显示屏幕、音频提示,等等),指示该用户正试图修改的项目或项目组是受保护的。可选的,该块808可以省略。在该情况下,为了向该用户指示该项目或项目组是受保护的,该项目或项目组可以这样一种方式来显示。例如,在显示屏幕上的该项目或项目组的描绘可以是“灰色”的,包括一个指示该项目或组是受保护的符号等。在另外一个实施例中,可以不给该用户该项目或组是受保护的指示。在该种情况下,可简单地使该用户不能够修改该项目或组。在该块808之后,或省略块808,该例行程序可以结束。
可选地,流程可以进入块810。在该块810,可以使用,例如窗口、显示屏幕、音频提示等,来提示该用户输入口令。在块812,由用户输入的口令可以被接收。例如,该口令可以经由一个计算系统的键盘、辅助键盘、触摸屏、光笔、鼠标等等来输入。在块814,可以将在该块812接收的口令与存储的并与该项目或项目组相关的口令做比较。例如,可以将接收的口令与存储在图17的块710中的口令,或存储在图19的块760中的口令做比较。
在块816,可以判断在块812接收的口令是否与存储的并与该项目或项目组相关的口令相匹配。如果该口令匹配,则在块806允许该修改。如果该口令不匹配,则在块818生成一个通知,不允许该修改。可选择地,或额外地,该通知可以指示,在块812接收的口令不是正确的口令。
如上所述,块810、812、814、816和818是可选的并是可以省略的。在该种情况下,该例行程序可以在该块808之后结束。而且,该块808是可选的并是可以省略的。在该种情况下,如果在块804确定该项目或组是受保护的话,该例行程序可以结束或进入选项块810。
尽管在图17和19-21中论述了用于限制对工厂项目的访问的口令,但可选择地或除了口令之外,也可使用其它用于限制访问的技术。例如,一个预先批准的安全访问级别或指示被批准访问项目的人员的级别,可以使用一个被批准访问项目的特定人、生物测定数据等(即,登陆名字、ID编码,等)的指示的列表。更进一步地,涉及一个保护级别的附加数据也可以与一个项目或项目组相关,例如,是否禁止所有访问、是否允许只读访问、用于不同人的不同保护级别和/或许可的级别,等等。另外,在有的执行过程中,可以允许用户为一个项目的子单元选择不同的安全级别。通常,访问安全数据(即,口令、生物测定数据、预先批准的安全访问级别、一个预先批准的人和/或ID,等等)可被存储并与一个工厂项目相关,而且可以将该访问安全数据与用户安全数据(即,由用户输入的口令、该用户的ID、该用户的登陆ID、从该用户获得的生物测定数据)进行比较,以决定是否允许该用户对该项目和/或该项目的特定子单元进行访问。
参考图17,如果希望的话,块704、706和710可以省略。例如,用户可以指示工厂项目或与要受保护的工厂项目相关的数据。然后,该用户可以使用一个与图19的例行程序750相似的例行程序来保护一组项目,其中该项目组包括该用户希望保护的工厂项目。以这种方式,该用户可以阻止其它人为了查看该受保护的数据而改变该项目的配置。
图22是用于输出一个工厂项目的示例性例行程序830的流程图。该例行程序830可以由一个或多个计算系统来执行,例如一个或多个图1的该工厂10的工作站14和/或控制器12。而且,该例行程序830可以由一个与该工厂分离的计算机系统执行。例如,该例行程序830可以由一个第三方提供者的计算系统或另一个工厂的计算系统执行,以便将一个工厂项目输出给一个顾客或该工厂10。例如,该工厂项目可以包括模块对象、模块类对象、模块摸板、复合摸板。该例行程序830可以作为一个像配置应用程序50这样的配置应用程序的一部分来执行。而且,例行程序830可以作为另一个应用程序的一部分来执行,例如像资产管理应用程序,或第三方提供者使用的应用程序这样的。
在块832,可以接收一个输出工厂项目的请求。例如,用户可以在资源管理器视图中为输出选择一个项目。作为另外一个实施例,该用户可以选择一组用于输出的工厂项目,而且可以为该组中的每一个项目执行例行程序830。
在块834,判断与该项目相关的任何数据是否是受保护的。例如,可以判断是否有一个与该项目相关的指示,像图17中存储在块708中的指示那样的,这指示该项目是受保护的。作为另一个实施例,可以判断是否有一个与该项目相关的指示,例如图19中存储在块758中的指示那样的,这指示该项目是一组受保护的项目的一部分。如果与该项目相关的数据是不受保护的,那么流程可以进入块836,并可以在那里输出该项目。
然而,如果在块834确定与该项目相关的数据是受保护的,流程可以进入块838。在该块838,该受保护的数据是可以受到保护的。然后,在块840,可以加密一个与该项目相关的口令。例如,在图17的块706接收的口令或在图19的块756接收的口令是加密的。
在块842,仅用该加密的受保护的数据替换该受保护的数据并用该加密的口令替换该口令,就可以输出该项目。例如,如果该工厂项目是一个从模块类对象中创建的项目,那么该加密的数据和/或该加密的口令可以作为该模块类对象或该项目的一部分输出。
图23是可以用来提供与工厂相关的版本控制和审计追踪信息的示例性配置系统900的框图。可以使用的该版本控制和审核路径技术的更多方面在标题为“处理控制系统中的版本控制和审计追踪”,编号为6,449,624的转让给了本申请的申请人的美国专利中说明了。可以理解,不需要一定使用在编号为6,449,624的美国专利中描述的技术,也可以使用不同的技术。因此这里结合编号为6,449,624的美国专利的关于所有论题的全部来作为参考。
该配置系统900包括例如可以在工作站14(图1)或某些其它计算设备的一个显示设备上生成的用户接口904。该用户接口904可以使用户能够通过一个或多个配置应用程序906,配置工厂或工厂的一部分。该配置应用程序906可以包括像配置应用程序50(图1)这样的配置应用程序。该用户接口904也与该版本控制和审计追踪系统908交互(下文中的“该VCAT系统”),该系统一般与该配置应用程序906协作,来记录和管理有关配置该工厂或该工厂的这部分的历史信息。该配置应用程序906和该VCAT系统908都访问一个配置数据库912,或换句话说与它通信,其中,该数据库可以存储表示该工厂或该工厂的这部分的当前配置(下文中的“过程配置”)的数据。VCAT系统908也与一个版本控制数据库910通信。
版本控制数据库910可以包括表示该工厂内使用的每一个项目的许多在先版本的配置历史数据。一并考虑,用于这些项目的全部历史数据可以用来重构该过程的以前的配置。更特别地,对于该配置数据库912中的每一个项目(以及不再在该配置数据库912中的那些),以若干版本存储表示那个项目的配置的数据。例如,在一个项目在它创建后也许已经在三个场合下修改了。因此该版本控制数据库910会拥有表示在创建的时候该项目的配置的数据,它可被称为“Version 1”,以及表示在这三次修改中的每一个之后该项目的配置的数据,它们相当于“Version 2”、“Version 3”和“Version 4”。
因此该配置历史数据可以包括表示对该模块对象或模块类对象做的所有修改的数据。这些修改可以是,但不必须是,使用该配置应用程序906做出的。该用户接口904、配置应用程序906和VCAT系统908中的任何一个或全部可以组合成一个独立、集成的系统。但是,为了方便解释,这里会将任务描述为是分别属于用户接口904、配置应用程序906、和VCAT系统908的。
VCAT系统908可以用一个或多个计算设备来执行,例如工作站14(图1),以一种允许对该过程配置的修改进行监视的方式。用户接口904和配置应用程序906可以在与VCAT系统908相同的计算设备(或一些计算设备)上执行,或在与实现VCAT系统908的计算设备(或一些计算设备)通信的不同的计算设备上执行。
在数据库910、912中的一个或两个中的数据可以存储在一个物理地位于该工厂10中任何地方的计算机可读介质中,例如与工作站14关联的易失存储器或磁或光学存储介质。可选择地,数据库910、912中的一个或两个可以存储在一个远程位置,以致于像工作站14这样的计算设备通过像内联网、因特网或其它任何通信媒介这样的网络来访问存储在那里的数据。另外,存储在数据库910、912中的每一个中的数据不必存储在相同的计算机可读介质上,以便于数据库910、912中任何一个的任何部分可以存储在不同于存储其它部分的设备或介质的一个存储设备或介质中。
在图23中示出了VCAT系统908不同于该版本控制数据库910,并与其分离。可选择地,版本控制数据库910可以来自该VCAT系统908的一部分。相似地,配置数据库912和版本控制数据库910可以,但不必须,构成分离和不同的数据结构。更确切地说,数据库910、912可以位于相同的存储介质中,而且实际上可以组成专用于该工厂的公用数据库的一部分。所以,这里使用的“数据库”,应该理解为不限于任何特定的数据结构。
图24是用于促进工厂项目的版本追踪的示例性的例行程序930的流程图。例如,该工厂项目可以包括模块对象和/或模块类对象。例如该例行程序930可以由图23的VCAT系统908来执行,并将参考图23来论述。
在块932,可以检测对工厂项目的修改。例如,使用配置应用程序906,用户可以尝试将新项目加入该工厂配置。作为另一个实施例,在已经修改该项目之后,该用户可以请求将该项目保存到该配置数据库912中。作为再一个实施例,在已经修改该项目之后,该用户可以请求将该项目“检入(check-in)”到配置数据库912中。编号为6,449,624的美国专利说明了与可以使用的“检入(check-in)”和“检出(check-out)”过程相关的技术。
在块934,可以判断,如果有的话,哪些模块类对象是用来创建该修改的项目的。例如,第一模块类对象可能已经用来创建一个第二模块类对象了,其轮流用来创建该项目。如果用一个或多个模块类对象来创建该修改的对象,在块936可以确定使用的每一个模块类对象的版本。
在块938,生成一个用于该修改的对象的版本标识符。该版本标识符可以包括编码、字母、符号,等等。该版本标识符是表现反映了块932检测到的修改的版本的。例如,如果在块932检测到的修改是创建该项目,该版本标识符可以表现出初始版本。作为另一个实施例,如果在块932检测到的修改是对该项目的第一版本进行的修改,那么该版本标识符可以表示第二版本。
在块940,在块938生成的版本标识符可以被存储并与该修改的项目相关联。例如,如果该项目是一个对象,该版本标识符可以作为那个对象的一部分存储。作为另一个实施例,该版本标识符可以与该对象分开存储,而一个链接到该版本标识符的链接可以作为该对象的一部分存储。
在块942,创建该项目的,如果有的话,在该块936缺定的一个或多个模块类对象的版本标识符,可以被存储并与该修改的项目相关联。例如,如果该项目是一个对象,该版本标识符可以作为那个对象的一部分存储。作为另一个实施例,该版本标识符可以与该对象分开存储,而链接到该版本标识符的链接可以作为该对象的一部分存储。在再一个实施例中,使用在块936确定的版本标识符,可以生成在块938生成的版本标识符。例如,在块936确定的版本标识符可以在块938内生成的版本标识符内进行编码。在该种情况下,该块940可以包括该块942。
图25是用于促进工厂项目的版本追踪的示例性的例行程序948的流程图。例如,该工厂项目可以包括模块对象和/或模块类对象。例如该例行程序948可以由图23的VCAT系统908来执行。
在块950,可以判断是否已经创建了一个模块类对象的一个新版本。例如,可以检测什么时候一个新版本模块类对象已经“检入”了。在块952,可以判断用该模块类对象创建的工厂项目。例如,参考图6,可以检查存储器526来判断哪些模块对象是从该模块类对象中创建的。而且,可以检查该存储器526或某些其它存储器或部分来判断哪些其它的模块类对象是从该模块类对象创建的。
在块954,该模块类对象的新版本,或对该模块类对象做的变化,可以传播到在块952确定的项目。然后,在块958,该模块类对象的新版本的版本标识符可以被存储并与在块952确定的项目相关联。在一个实施例中,不更新在块952确定的项目的版本标识符来反映该项目的新版本。可选地,在另一个实施例中,在块959更新在块952确定的项目的版本标识符。然后,该项目的新版本标识符可以被存储并与该项目相关联。
在图24的块940和942以及图25的块958和959中存储的版本标识符,可以帮助用户来追踪,哪些项目的版本、以及从中创建这些项目的模块类对象的版本正在当前配置中被使用。例如,配置应用程序、资产管理应用程序、等等,可以检查该配置数据库912(图23)来确定项目的版本以及从中创建这些项目的模块类对象的版本。作为另一个实施例,调试应用程序、监视应用程序等,例如可以检查控制器12的存储器,来确定项目的版本以及从中创建这些项目的模块类对象的版本。
图26是用于促进工厂项目的配置的示例性的例行程序960的流程图。例如,当工厂项目由配置应用程序在显示屏幕上显示的时候,该例行程序960可以执行。例如,该工厂项目可以包括模块对象和/或模块类对象。例如,该例行程序960可以由图23的配置应用程序906和/或VCAT系统908来执行,并将参考图23来论述它。
在块962,可以判断,如果有的话,哪些模块类对象是用来创建该项目的。例如,第一模块类对象可能已经用来创建一个第二模块类对象了,其轮流用来创建该项目。如果用一个或多个模块类对象来创建该项目,在块964可以确定那些模块类对象中的每一个的当前版本。在块966,可以确定每个用于创建该项目的模块类对象的版本。例如,可以检索在图24的块942存储的并与该项目相关的版本标识符。
在块968,对于每一个用来创建该项目的模块类对象,可以确定该模块类对象的当前版本是否不同于用来创建该项目的模块类对象的版本。如果没有不同,该例行程序可以结束。但是,如果检测到一个或多个不同,在块970可以生成一个通知。该通知通常可以指示,用来创建该项目的一个模块类对象的一个新版本是可利用的。该通知可以包括文本、符号、颜色、一个音频提示等。例如,文本框或窗口可以紧跟在一个该项目的图形表示之后或与其重叠地在一个配置显示屏幕上显示。作为另一个实施例,一个符号可以在该项目表示上或在该项目表示附近显示。作为再一个实施例,可以改变该项目表示的颜色、亮度等。该通知自身可以指示哪些模块类对象具有一个可利用的新版本。可选择地,该通知可以不通知该用户哪些模块类对象具有一个可利用的新版本,但是,例如通过选择一个菜单项目、在一个符号上“双击”、“深入”进入该项目等方式,该用户可以执行附加的步骤来确定那个信息。
可选地,通过用该模块类对象的新版本更新该项目,然后可以向用户提供一个用于开始修改该工厂项目的用户接口机制。例如,可向该用户提供一个按钮,例如来开始这种处理。作为另一个实施例,可以向该用户提供用户接口机制来选择哪些可能具有新版本的若干模块类对象将要用来更新该工厂项目。例如,相应于要用来更新该工厂项目的具有新版本的模块类对象,该用户可以选择复选框、高亮显示图形表示,等等。
图27是用于促进工厂项目的配置的示例性的例行程序980的流程图。例如,当工厂项目正被修改和/或“检入”的时候,可以执行例行程序980。例如,该工厂项目可以包括一个模块类对象。例如,该例行程序980可以由图23的配置应用程序906和/或VCAT系统908来执行,并将参考图23来论述它。
在块982,可以判断是否已经创建了模块类对象的新版本。例如,当一个新版本模块类对象已经“检入”了,它就可以检测到。在块984,可以判断用该模块类对象创建的工厂项目。参考图6,例如,可以检查存储器526来确定哪些模块对象是从该模块类对象中创建的。而且,可以检查该存储器526或其它的一些存储器或部分,来确定哪些其它的模块类对象是从该模块类对象中创建的。
在块986,可以提示该用户是否要将对该模块类对象的变化传播到一个或多个在块984识别的工厂项目上。例如,可以用文本框、窗口、显示屏幕、音频提示等等来提示该用户。
可选地,可以向该用户提供用户接口机制来选择在块984中识别的特定工厂项目,其中,要向该特定的工厂项目传播变化。例如,相应于要向其传播变化的该工厂项目,该用户可以选择复选框、高亮显示图形表示,等等。
在块988,接收对块986生成的提示的用户响应。在块990,可以确定该用户响应是否指示该变化是要传播的。如果该变化不是要传播的,该例行程序可以结束。如果该变化是要传播的,那么在块992,将该变化传播到在块984中识别的工厂项目上。可选地,可以将该变化传播到在块984中识别的一些选择的工厂项目上。
尽管图17、19-22以及24-27关于工厂项目进行了描述,但也可以使用相似的例行程序来限制对要由工厂项目执行的一系列控制步骤的访问、追踪对其做的变化、传播有关它们的变化。例如,可以用与图17、19-22以及24-27的例行程序相似的例行程序来限制对阶段类、装置阶段、和/或阶段类或装置阶段的组的访问、追踪对其做的变化、传播有关它们的变化。
图28是用于配置模块类对象的用户接口的示例性屏幕显示1000。在该屏幕显示1000中,示出了叫做“CALCULATION”的模块类对象的细节。该屏幕显示1000包括一个用于编辑该对象的编辑部分1004。如图28所示,该CALCULATION模块类对象包括乘法器功能块1008和加法器功能块1012。该屏幕显示1000也包括显示该CALCULATION模块类对象的参数的部分1020,其中如果对该CALCULATION模块类对象的访问是受限的,该参数将不会隐藏。不会隐藏的参数包括版本指示符1026以及版本指示符1028,其中,指示符1026指示由该CALCULATION模块类对象创建的模块对象的版本,指示符1028指示一个该CALCULATION模块类对象的版本。
图29是另一个用于确定该CALCULATION模块类对象的参数的用户接口的示例性屏幕显示1030,其中该参数是不会隐藏的。该屏幕显示1030包括分别用于添加或删除参数的按钮1032和1034,其中这些参数来自不会隐藏的参数组。该屏幕显示1030示出了,把MULTIPLIER参数1038加入到不会隐藏的参数组。同样参考图28,该MULTIPLIER参数1038对应于该乘法器块1008的输入“IN2”。
图30是关于调试应用程序的用户接口的示例性屏幕显示1040。在该屏幕显示1040中显示CALCULATION_1模块对象的细节。该CALCULATION_1模块对象已经从该CALCULATION模块类对象中创建。在这个实施例中,尚未限制对该CALCULATION模块类对象的访问。因此,屏幕显示1040通常显示组成该CALCULATION_1模块对象的子单元的细节。例如,部分1044显示,该CALCULATION_1模块对象包括乘法器功能块1008和加法器功能块1012。该屏幕显示1040也包括表示该CALCULATION_1模块对象的参数的部分1048。例如,该CALCULATION_1模块对象包括版本指示符1026和1028和MULTIPLIER参数1038。另外,该屏幕显示1040也包括指示组成该CALCULATION_1模块对象的功能块的部分1050。也就是,该部分1050指示了,该CALCULATION_1模块对象包括加法器功能块和乘法器功能块。
图31是在已经限制了对该CALCULATION模块类对象的访问的情况下的示例性屏幕显示1040。因此,该屏幕显示1040通常不显示组成该CALCULATION_1模块对象的子单元的所有细节。例如,部分1044和1050不显示该CALCULATION_1模块对象包括的乘法器功能块1008和加法器功能块1012。然而,该部分1048仍然指示该CALCULATION_1模块对象的参数。
本领域的普通技术人员会理解,可以采用这里所描述的技术的各种修改。例如,可以改变块的顺序、可以省略块、可以加入新的块,等等。更进一步地,可以组合这里所描述的各种技术。例如可以用一个与图17的例行程序700相似的例行程序来保护某些与一个模块类对象相关的数据。然后,可以从该模块类对象中创建一个模块模板。接下来,可以用与图17的例行程序700相似的例行程序来保护某些与该模块类对象的不受保护的模块模板相关的数据。然后,可以创建该模块模板的特定实例,它包括关于该模块类对象和该模块模板的所规定的保护。
当执行的时候,可以将这里描述的软件中的任何一个存储在任何计算机可读存储器中,例如在磁盘、激光盘或其它存储介质上,在计算机或处理器的RAM或ROM上,等等。同样,使用任何已知或希望的发送方法,例如包括在一个计算机可读磁盘或其它移动式计算机存储机构上或通过一个像电话线、因特网、环球网或任何其它局域网或广域网等等这样的通信信道(其中,发送被看作与经由一个可移动式的存储介质来提供这样的软件相同,或是可互换的),可以将该软件发送给用户、工厂或操作员工作站。而且,该软件可以直接提供而不用调制或加密,或可以在通过一个通信信道传送之前使用任何适合的调制载波和/或加密技术来将它调制和/或加密。
尽管以特定实例来说明了本发明,但这仅是用作说明性的,并不用来限制该发明,对于本领域的普通技术人员来说,在不偏离该发明的精神和范围的情况下,对公开的实施例所做出的改变、增加或删除是显而易见的。
权利要求
1.一种在配置工厂中所使用的对象实体,该对象实体包括计算机可读存储器;存储在该计算机可读存储器上的类对象,该类对象通用地表示所述工厂内的过程实体,并且包括第一存储器,适合于存储一个或多个组成所述过程实体的过程元件的指示;第二存储器,适合于存储对一个或多个模块对象的引用,其中每一个从所述类对象中创建的模块对象都包括一个或多个特定过程元件的指示,该一个或多个特定过程元件与组成所述过程实体的所述一个或多个过程元件相符,并编程连接到在所述工厂的运行期间要执行的所述一个或多个特定过程元件上;以及第三存储器,适合于存储指示所述类对象的版本的数据。
2.根据权利要求1所述的对象实体,还包括第四存储器,适合于存储对一个或多个其它模块类对象的引用,其中从该一个或多个其它模块类对象中创建所述类对象;以及第五存储器,适合于存储指示该一个或多个其它模块类对象的各个版本的数据。
3.根据权利要求1所述的对象实体,其中,所述过程实体包括单元,以及其中所述一个或多个过程元件包括所述单元的一个或多个子元件。
4.根据权利要求1所述的对象实体,其中,所述过程实体包括装备实体,以及其中所述一个或多个过程元件包括所述装备实体的一个或多个子元件。
5.根据权利要求1所述的对象实体,其中,所述过程实体包括控制元件,以及其中所述一个或多个过程元件包括适合用于提供所述工厂内的控制活动的通用控制例行程序。
6.根据权利要求1所述的对象实体,其中,所述过程实体包括显示元件,以及其中,所述一个或多个过程元件包括适合用于向用户提供所述工厂内的显示活动的通用显示例行程序。
7.一种在配置工厂中所使用的对象实体,该对象实体包括计算机可读存储器;存储在该计算机可读存储器上的类对象,该类对象具体表示所述工厂内的过程实体,并且包括第一存储器,适合于存储在所述工厂的运行期间由所述过程实体要执行的一个或多个功能的指示;第二存储器,适合于存储指示所述类对象的版本的数据;第三存储器,适合于存储对一个或多个模块类对象的引用,其中从该一个或多个模块类对象中创建所述类对象;以及第四存储器,适合于存储指示所述一个或多个模块类对象的各个版本的数据。
8.根据权利要求7所述的对象实体,其中,所述过程实体包括单元,以及其中所述一个或多个过程元件包括所述单元的一个或多个子元件。
9.根据权利要求7所述的对象实体,其中,所述过程实体包括装备实体,以及其中所述一个或多个过程元件包括所述装备实体的一个或多个子元件。
10.根据权利要求7所述的对象实体,其中,所述过程实体包括控制元件,以及其中所述一个或多个过程元件包括适合用于提供所述工厂内的控制活动的通用控制例行程序。
11.根据权利要求7所述的对象实体,其中,所述过程实体包括显示元件,以及其中所述一个或多个过程元件包括适合用于向用户提供所述工厂内的显示活动的通用显示例行程序。
12.一种用于监视在工厂的至少一部分的配置中的变化的方法,该方法包括检测对能够通用地表示所述工厂内的过程实体的模块类对象的修改;确定从所述模块类对象中创建的一个或多个模块对象,其中每一个模块类对象能够通用地表示所述工厂内的过程实体;将所述模块类对象的修改传播到所述一个或多个模块对象;生成用于该修改的模块类对象的版本标识符;以及将该用于该修改的模块类对象的版本标识符与所述一个或多个模块对象中的每一个相关联。
13.根据权利要求12所述的方法,还包括生成用于所述一个或多个模块对象的各个版本标识符;以及将用于所述一个或多个模块对象的版本标识符与所述适当的一个或多个模块对象相关联。
14.根据权利要求12所述的方法,其中检测所述模块类对象的修改包括检测该修改的模块类对象是存储到配置数据库的。
15.根据权利要求12所述的方法,其中检测所述模块类对象的修改包括检测该修改的模块类对象是通过版本控制系统检入的。
16.根据权利要求12所述的方法,其中将用于所述修改的模块类对象的版本标识符与所述一个或多个模块对象中的每一个相关联包括将用于所述修改的模块类对象的版本标识符作为所述一个或多个模块对象中的每一个的一部分来存储。
17.根据权利要求12所述的方法,其中将用于所述修改的模块类对象的版本标识符与所述一个或多个模块对象中的每一个相关联包括将所述一个或多个模块对象中的每一个链接到用于该修改的模块类对象的所述版本标识符上。
18.一种用于监视在与工厂相关联的配置中的变化的配置管理系统,包括计算机可读介质;与该计算机可读介质进行通信的处理器;数据库,用于存储第一数据和第二数据,该第一数据表示能够通用地表示所述工厂内的过程实体的模块类对象,该第二数据表示从所述模块类对象中创建的一个或多个工厂项目;存储在所述计算机可读介质上的并被配置来由所述处理器执行的配置和版本控制例行程序,用于完成促进对所述模块类对象的修改,检测对所述模块类对象的修改,确定从所述模块类对象中创建的所述一个或多个工厂项目,基于该修改的模块类对象来修改所述一个或多个工厂项目,生成关于该修改的模块类对象的版本标识符,将用于该修改的模块类对象的所述版本标识符与所述一个或多个工厂项目中的每一个相关联。
19.根据权利要求18所述的配置管理系统,其中,所述配置和版本控制例行程序被配置为由所述处理器来执行,以便生成用于所述一个或多个工厂项目的各个版本标识符,以及将用于所述一个或多个工厂项目的所述版本标识符与所述适当的一个或多个工厂项目相关联。
20.根据权利要求18所述的配置管理系统,其中,所述配置和版本控制例行程序被配置为由所述处理器来执行,以便通过检测该修改的模块类对象被存储到配置数据库,来检测对该模块类对象进行的修改。
21.根据权利要求18所述的配置管理系统,其中,所述配置和版本控制例行程序被配置为由所述处理器来执行,以便允许用户检出所述模块类对象,允许用户检入所述模块类对象,通过检测该修改的模块类对象是检入的,来检测对该模块类对象进行的修改。
22.根据权利要求18所述的配置管理系统,其中,所述配置和版本控制例行程序被配置为由所述处理器来执行,以便将用于该修改的模块类对象的所述版本标识符作为所述一个或多个模块对象中的每一个的一部分来存储。
23.根据权利要求18所述的配置管理系统,其中,所述配置和版本控制例行程序被配置为由所述处理器来执行,以便将所述一个或多个模块对象中的每一个链接到用于该修改的模块类对象的所述版本标识符上。
24.一种用于监视在工厂的至少一部分的配置中的变化的方法,该方法包括检测对工厂项目进行的修改,该工厂项目能够表示所述工厂内的过程实体;确定一个或多个模块类对象,其中从该一个或多个模块类对象中创建该修改的工厂项目,每一个模块类对象能够通用地表示所述工厂内的过程实体;确定与所述一个或多个模块类对象中的每一个相关联的各个版本数据;生成用于该修改的工厂项目的版本标识符;将该版本标识符与该修改的工厂项目相关联;以及将与所述一个或多个模块类对象中的每一个相关联的各个版本数据与该修改的工厂项目相关联。
25.根据权利要求24所述的方法,其中,所述工厂项目包括能够通用地表示所述工厂内的过程实体的模块类对象。
26.根据权利要求24所述的方法,其中,所述工厂项目包括能够特定地表示所述工厂内的过程实体的模块对象。
27.根据权利要求24所述的方法,其中,将与所述一个或多个模块类对象中的每一个相关联的各个版本数据与该修改的工厂项目相关联包括将与所述一个或多个模块类对象中的每一个相关联的各个版本数据作为该修改的工厂项目的一部分来存储。
28.根据权利要求24所述的方法,其中,将与所述一个或多个模块类对象中的每一个相关联的各个版本数据与该修改的工厂项目相关联包括将该修改的工厂项目链接到与该一个或多个模块类对象中的每一个相关的版本数据上。
29.根据权利要求24所述的方法,其中,检测对所述工厂项目进行的修改包括检测对所述一个或多个模块类对象所作的一个或多个修改,其中从该一个或多个模块类对象中创建该修改的工厂项目。
30.根据权利要求24所述的方法,其中,检测对所述工厂项目进行的修改包括检测不会影响所述一个或多个模块类对象的对所述工厂项目进行的修改,其中从该一个或多个模块类对象中创建该修改的工厂项目。
31.一种用于追踪与工厂相关联的配置的配置管理系统,包括计算机可读介质;与该计算机可读介质进行通信的处理器;数据库,用于存储第一数据和第二数据,该第一数据表示能够表示所述工厂内的过程实体的工厂项目,该第二数据表示多个能够通用地表示所述工厂内的过程实体的模块类对象;配置例行程序,被存储在所述计算机可读介质上并被配置来由所述处理器执行以便促进对所述工厂项目进行的修改;版本控制例行程序,被存储在所述计算机可读介质上并被配置来由所述处理器执行,以便用来检测对所述工厂项目进行的修改;确定与一个或多个模块类对象中的每一个相关联的各个版本数据,其中从该一个或多个模块类对象中创建该修改的工厂项目;生成用于该修改的工厂项目的版本标识符;将该版本标识符与该修改的工厂项目相关联;以及将与所述一个或多个模块类对象中的每一个相关联的所述各个版本数据与该修改的工厂项目相关联,其中从该一个或多个模块类对象中创建该修改的工厂项目。
32.根据权利要求31所述的配置管理系统,其中,所述存储的版本控制例行程序被配置为由所述处理器来执行,以便用来检测由所述一个或多个模块类对象的一个或多个修改所导致的对所述工厂项目进行的修改,其中从该一个或多个模块类对象中创建该修改的工厂项目。
33.根据权利要求31所述的配置管理系统,其中,所述存储的版本控制例行程序被配置为由所述处理器来执行,以便用来检测不会影响所述一个或多个模块类对象的对所述工厂项目进行的修改,其中从该一个或多个模块类对象中创建该修改的工厂项目。
34.根据权利要求31所述的配置管理系统,其中,所述工厂项目包括能够特定地表示所述工厂内的过程实体的模块对象。
35.根据权利要求31所述的配置管理系统,其中,所述工厂项目包括能够通用地表示所述工厂内的过程实体的模块对象。
36.一种用于将与工厂的至少一部分相关联的改变的配置通知给用户的方法,该方法包括确定一个或多个模块类对象,从该一个或多个模块类对象中创建工厂项目,其中,该工厂项目能够表示所述工厂内的过程实体,以及其中该一个或多个模块类对象能够通用地表示所述工厂内的过程实体;确定所述一个或多个模块类对象中的每一个的各个当前版本;确定所述一个或多个模块类对象中的每一个的各个版本,其中从该一个或多个模块类对象中创建所述工厂项目;确定从中创建所述工厂项目的所述各个版本和所述各个当前版本是否对于所述一个或多个模块类对象中的每一个来说是不同的;以及如果确定创建所述工厂项目的所述各个版本和所述各个当前版本对于所述一个或多个模块类对象中的至少一个来说是不同的,则生成一个通知,用于指示存在所述一个或多个模块类对象中的至少一个的较新版本,其中从该一个或多个模块类对象中创建所述工厂项目。
37.根据权利要求36所述的方法,其中,所述工厂项目包括能够通用地表示所述工厂内的过程实体的模块类对象。
38.根据权利要求36所述的方法,其中,所述工厂项目包括能够具体地表示所述工厂内的过程实体的模块对象。
39.根据权利要求36所述的方法,还包括提示用户是否基于所述一个或多个模块类对象中的所述至少一个的较新版本来修改所述工厂项目。
40.根据权利要求39所述的方法,基于所述一个或多个模块类对象中的所述至少一个的较新版本来进一步修改所述工厂项目。
41.一种用来配置工厂的至少一部分的配置系统,包括计算机可读介质;与该计算机可读介质进行通信的处理器;数据库,用于存储第一数据和第二数据,该第一数据表示能够表示所述工厂内的过程实体的工厂项目,该第二数据表示能够通用地表示所述工厂内的过程实体的多个模块类对象;配置例行程序,被存储在所述计算机可读介质上并被配置来由所述处理器执行以便促进对所述工厂项目进行的修改;通知例行程序,被存储在所述计算机可读介质上并被配置来由所述处理器执行,以便用来确定一个或多个模块类对象,从该一个或多个模块类对象中创建所述工厂项目;确定所述一个或多个模块类对象中的每一个的各个当前版本;确定所述一个或多个模块类对象中的每一个的各个版本,其中从该一个或多个模块类对象中创建所述工厂项目;确定创建所述工厂项目的所述各个版本和所述各个当前版本是否对于所述一个或多个模块类对象中的每一个来说是不同的;以及如果确定创建所述工厂项目的所述各个版本和所述各个当前版本对于所述一个或多个模块类对象中的至少一个来说是不同的,则生成一个通知,用于指示存在所述一个或多个模块类对象中的至少一个的较新版本,其中从该一个或多个模块类对象中创建所述工厂项目。
42.根据权利要求41所述的配置系统,还包括更新例行程序,被存储在所述计算机可读介质上并被配置为由所述处理器来执行,以便基于所述一个或多个模块类对象中的所述至少一个的更新版本,来更新所述工厂项目,其中从该一个或多个模块类对象中创建所述工厂项目。
43.一种用于将与工厂的至少一部分相关联的改变的配置通知给用户的方法,该方法包括检测能够通用地表示所述工厂内的过程实体的模块类对象的新版本;确定从所述模块类对象的一个或多个较旧版本中创建的一个或多个工厂项目,其中,所述一个或多个工厂项目中的每一个都能够表示所述工厂内的各个过程实体;以及生成一个通知,用于指示所述一个或多个工厂项目是从所述模块类对象的一个或多个较旧版本中创建的。
44.根据权利要求43所述的方法,其中,所述一个或多个工厂项目中的至少一个包括能够通用地表示所述工厂内的过程实体的模块类对象。
45.根据权利要求43所述的方法,其中,所述一个或多个工厂项目中的至少一个包括能够具体地表示所述工厂内的过程实体的模块对象。
46.根据权利要求43所述的方法,还包括提示用户是否基于所述模块类对象的较新版本来修改所述一个或多个工厂项目。
47.一种用于追踪与工厂相关联的配置的配置管理系统,包括计算机可读介质;与该计算机可读介质进行通信的处理器;数据库,用于存储第一数据和第二数据,该第一数据表示能够表示所述工厂内的过程实体的工厂项目,该第二数据表示多个能够通用地表示所述工厂内的过程实体的模块类对象;配置例行程序,被存储在所述计算机可读介质上并被配置来由所述处理器执行以便促进对所述工厂项目进行的修改;版本控制例行程序,被存储在所述计算机可读介质上并被配置来由所述处理器执行,以便用来检测对所述工厂项目进行的修改;确定与一个或多个模块类对象中的每一个相关联的各个版本数据,其中从该一个或多个模块类对象中创建该修改的工厂项目;生成用于该修改的工厂项目的版本标识符;将该版本标识符与该修改的工厂项目相关联;以及将与所述一个或多个模块类对象中的每一个相关联的所述各个版本数据与该修改的工厂项目相关联,其中从该一个或多个模块类对象中创建该修改的工厂项目。
48.根据权利要求47所述的配置管理系统,其中,所述存储的版本控制例行程序被配置为由所述处理器来执行,以便用来检测由所述一个或多个模块类对象的一个或多个修改所导致的对所述工厂项目进行的修改,其中从该一个或多个模块类对象中创建该修改的工厂项目。
49.根据权利要求47所述的配置管理系统,其中,所述存储的版本控制例行程序被配置为由所述处理器来执行,以便用来检测不会影响所述一个或多个模块类对象的对所述工厂项目进行的修改,其中从该一个或多个模块类对象中创建该修改的工厂项目。
50.根据权利要求47所述的配置管理系统,其中,所述工厂项目包括能够具体地表示所述工厂内的过程实体的模块对象。
51.根据权利要求47所述的配置管理系统,其中,所述工厂项目包括能够通用地表示所述工厂内的过程实体的模块对象。
全文摘要
一个有助于跟踪工厂项目的版本的版本控制系统,其中该工厂项目可以表示或能够表示工厂内的实体。该工厂项目可以包括,例如,可以能够具体地表示工厂的过程实体的模块对象。这些模块对象可以从模块类对象中被创建,其中该模块类对象可以能够通用地表示工厂的过程实体。存储版本数据,并将其与模块对象相关联。版本数据可以包括指示用来创建模块对象的模块类对象的版本的数据。版本数据也可以包括指示模块对象的版本的数据。配置系统、版本控制系统、查看系统、调试系统、运行期监视系统、资产管理系统等等,可以检查或允许查看与项目相关联的版本控制数据。
文档编号G06F3/048GK1716137SQ20041010235
公开日2006年1月4日 申请日期2004年8月18日 优先权日2004年5月25日
发明者J·迈克尔·卢卡斯, 阿瑟·韦布, 马克·J·尼克松, 拉里·O·琼特, 李健, 丹尼斯·L·史蒂文森, 迈克尔·G·奥特, 赫谢尔·O·科斯卡第二, 罗伯特·B·哈夫科斯特 申请人:费舍-柔斯芒特系统股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1