相关申请的交叉应用
本申请要求于2018年11月13日提交的美国临时申请序列第62/760,568号,其全部内容通过引用并入本文中。
本文公开的主题涉及将外部处理资源集成到工业控制系统中,并且尤其涉及管理内部处理例程与外部处理例程之间的共享资源的方法和系统。
背景技术:
工业控制器是用于例如在工厂环境下的工业处理或机械的控制的专用计算机系统。通常,工业控制器执行存储的控制程序,该控制程序从与受控处理或机器相关联并且感测处理或机器的状况的各种传感器读取输入,并且工业控制器基于这些输入和存储的控制程序来计算用于控制对处理或机器进行控制的致动器的一组输出。通常使用专用控制语言例如“继电器梯形逻辑图(relayladderlogic)”以便于对装置进行编程。在存储的程序的指示下,工业控制器的处理器周期性地检查输入装置的状态并且更新输出装置的状态。为了确保对机器或处理的可预测的控制,控制程序必须是高度可靠和确定性的,即在精确限定的时间段执行。
工业控制器在许多方面不同于常规的计算机。在物理上,工业控制器被构造成明显地比常规计算机更加鲁棒地抵抗冲击和损坏以及更好地抵抗外部污染物和极端环境条件。处理器和操作系统针对实时控制被优化,并且利用被设计为允许快速开发控制程序的语言进行编程,该控制程序针对不断变化的一组机器控制或处理控制应用而定制。
工业控制器能够根据应用要求进行定制。通常,工业控制器包括具有多个插槽的机箱,模块可以插入该机箱中。这些模块提供工业控制器的各种功能和/或连接,包括例如网络通信、模拟或数字输入和输出、计数器模块等。这些模块接收来自受控机器或处理上的传感器、触点、开关和其他装置的输入信号,并且将输入信号传递给处理器模块。处理器模块执行控制程序,其中,处理器模块接收输入信号并且响应于接收到的输入来设置其他模块上的输出信号,以控制受控机器或处理上的致动器、阀门、螺线管等。程序员生成用于实现受控机器或处理的期望操作的控制程序。
在某些应用中,编程要求可能会超出处理器模块的计算能力,因此有必要提供外部计算装置。在其他应用中,编程要求可以落在处理器模块的计算能力之内,但是在控制系统中可能存在比处理器模块更适合执行控制程序的一部分的其他计算装置。在任一应用中,可以使用一个或更多个外部计算装置来执行期望的计算,并且将计算的结果提供给工业控制器。然而,使用外部计算装置并非没有某些缺点。工业控制器和外部计算装置各自基于其自身的内部时钟彼此异步地执行。外部计算装置需要诸如内部状态标志、某些输入或输出的状态等的信息并且可以共享工业控制器和外部计算装置二者都可以访问的某些标签。必须管理写入共享标签或从共享标签读取的数据,使得一个控制器不会无意地覆盖另一控制器的数据。
因此,期望提供一种用于管理控制程序在多个处理装置上的执行的改进的系统。
还期望整体地管理控制程序的各部分在每个处理装置上的执行,其中,控制程序的各部分在每个处理装置上的执行的细节对于程序员是透明的。
技术实现要素:
本文公开的主题描述了一种用于管理控制程序在多个处理装置上的执行的改进的系统。控制程序存储在存储器中,并且能够在工业控制器中的第一处理器上执行。控制程序包括仅在第一处理器上执行的控制指令以及被配置成启动功能在外部处理装置上的执行的代理指令。可以想到,外部处理装置可以是与工业控制器物理上分开的计算单元,或者可选地,外部处理单元可以是插入工业控制器的机箱内的专用模块。根据又一实施方式,外部处理单元可以是在同一处理器中但在与控制程序并行的单独的线程或核心上执行的专用功能。
处理器间接口被配置成管理在每个处理装置上执行的控制程序的各部分的执行,使得控制程序的各部分在每个处理装置上的执行的细节对于程序员是透明的。处理器间接口建立处理器与外部处理装置之间的通信连接。连接的细节可以例如存储在限定与工业控制器连接的外部处理装置的表中。该表可以包括元数据,该元数据例如限定用于通信的协议、端口分配、地址等。处理器间接口还可以将来自工业控制器的存储器中的数据表的数据发送至外部处理装置,以供在代理指令的执行期间使用。处理器间接口还被配置成根据需要管理代理指令的状态位,并且接收从外部处理装置返回的数据并根据需要更新数据表中的数据。还可以想到,如果需要的话,处理器间接口可以管理在执行代理指令期间根据控制程序中的其他控制指令对数据的访问。因此,代理指令的执行与控制程序中的其他控制指令的执行集成在一起,并且执行的细节对程序员是透明的。确切地说,程序员仅标识功能、功能所需的数据以及旨在其上执行功能的外部处理装置。
根据本发明的一个实施方式,公开了一种工业控制器,该工业控制器被配置成协调外部处理装置与工业控制器的执行。工业控制器包括存储器装置、处理器和处理器间接口。存储器装置被操作成存储控制程序和至少一个数据结构,并且处理器被操作成执行控制程序。控制程序包括要在外部处理装置上执行的至少一个代理指令。处理器间接口被操作成集成所述至少一个代理指令在外部处理装置上的执行与控制程序在处理器上的执行。所述至少一个代理指令根据所述至少一个数据结构限定执行对应的代理指令所需的数据。处理器间接口从所述至少一个数据结构中读取该数据并且将该数据发送至外部处理装置。处理器间接口从外部处理装置接收指示处理所述至少一个代理指令的状态的响应。
根据本发明的另一实施方式,公开了一种协调外部处理装置与工业控制器的执行的方法。在工业控制器的处理器上执行多个控制指令,其中,控制指令访问来自存储在工业控制器的存储器中的至少一个数据结构的数据。在工业控制器的处理器上执行至少一个代理指令,并且所述至少一个代理指令限定要在外部处理装置上执行的至少一个功能。所述至少一条代理指令根据所述至少一个数据结构限定共享数据,并且共享数据由控制指令中的至少一个控制指令访问,并且是执行所述至少一个代理指令所需要的。利用在工业控制器上执行的处理器间接口读取共享数据,并且利用处理器间接口将共享数据发送至外部处理装置。在处理器间接口处接收来自外部处理装置的响应,该响应指示执行由所述至少一个代理指令限定的所述至少一个功能的状态。
根据本发明的又一实施方式,公开了一种用于工业控制器的处理器模块,被配置成协调外部处理装置与工业控制器的执行。处理器模块包括存储器和处理器。存储器被操作成存储控制程序和至少一个数据结构,并且处理器被操作成执行控制程序。控制程序包括多个控制指令和至少一个代理指令,其中,所述至少一个代理指令根据所述至少一个数据结构限定执行对应的代理指令所需的数据,并且所述至少一个代理指令限定要在外部处理装置上执行的至少一个功能。处理器还被操作成从所述至少一个数据结构中读取数据,将数据发送至外部处理装置,并且从外部处理装置接收指示处理所述至少一个代理指令的状态的响应。
根据详细的描述和附图,本发明的这些和其他优点及特征对于本领域技术人员将变得明显。然而,应当理解,尽管详细描述和附图指示本发明的优选实施方式,但详细描述和附图通过说明的方式给出并且是非限制性的。在不脱离本发明精神的情况下,可以在本发明的范围内进行许多改变和修改,并且本发明包括所有这些修改。
附图说明
在附图中示出了本文所公开的主题的各种示例性实施方式,在附图中自始至终相同附图标记表示相同部件,并且在附图中:
图1是具有通过通信网络与多个外部处理装置进行通信的工业控制器的示例性工业控制系统的简化立体图;
图2是图1的工业控制系统的部件的框图,示出了以分布式方式执行存储的程序的各种部件的多个交互处理器;
图3是由图1的工业控制器使用的控制程序和数据结构的框图表示;
图4是由图3的控制程序执行的示例性代理执行指令;
图5是用作由图3的控制程序执行的示例性代理执行指令的示例性运动指令;
图6是示出在工业控制器中针对受控机器或处理的一个轴实现的示例性状态机的流程图;以及
图7是根据本发明的一个实施方式的工业控制器和一个马达驱动器的框图表示,其示出了外部运动规划器和运动指令。
在描述附图所示的本发明的各种实施方式时,为了清楚起见,将采用特定的术语。然而,并不旨在将本发明限制于如此选择的特定术语,并且应当理解,每个特定术语包括以类似方式操作以实现类似目的的所有技术等同物。例如,经常使用“连接”、“附接”或与其类似的术语。它们不限于直接连接,而是包括通过其他元件进行的连接,而这样的连接被本领域技术人员认为是等同的。
具体实施方式
参考在下文描述中详细描述的非限制性实施方式来对本文中所公开的主题的各种特征和有利细节进行更充分地说明。
首先转到图1,工业控制系统10可以包括工业控制器12,该工业控制器12通常提供具有总线16(例如,背板)的机箱14,该总线16提供安装在机箱14中的多个模块18之间的相互通信。例如,模块可以包括电源模块20、处理器模块22、一个或更多个i/o模块24和网络模块26。网络模块26或处理器模块22可以在工业控制网络28(例如,controlnet或ethernet/ip)上通信,该类型的工业控制网络28为连接的消息传递提供对消息完成时间、低延迟和丢失消息检测的保证。
工业控制网络28可以将工业控制器12连接至远程i/o模块(未示出)、一个或更多个远程马达驱动器30或附加的工业处理装置35。每个马达驱动器30可以与对应的电动马达32和位置传感器34通信,以提供对电动马达32的受控运动,从而控制一部分相关联的工业机器或处理36。受控机器或处理36的每个运动在本文中也称为运动轴。例如,在三个方向(例如,上/下、向前/反向和左/右)上移动的机器具有三个轴。通常在控制机器或处理36的坐标系中引用轴。因此,对于在笛卡尔坐标系中控制的机器或处理,这些轴可以称为“x”轴、“y”轴和“z”轴。也可以存在辅助轴用于与主轴交互的装置,例如工具更换器、托盘更换器、心轴等。此外,每个轴可以由单个马达32或串联运行的多个马达驱动。每个马达32通常由单个马达驱动器30控制。然而,可以想到,单个马达驱动器30可以控制由多个电力部供电的多个马达32或单个马达32。每个工业处理装置35可以是被配置成控制受控处理的特定部分的专用处理器,例如监视安全门、安全垫、光幕等并且被操作成在安全装置指示有操作员存在于受限区域中时移除对一部分相关联的机器或处理的供电的安全控制器。网络28还可以与受控机器或处理36上的其他装置31(例如,生成工业控制器12的与受控机器或处理的当前状态对应的输入的传感器、开关、换能器等,或由来自工业控制器12的输出控制以实现受控机器或处理的期望操作的致动器、受控阀、状态指示器等)连接。
配置计算机40可以通过工业控制网络28或经由例如与处理器模块22连接的专用通信通道42与处理器模块22和/或马达驱动器30通信。配置计算机40可以是标准的桌上型或膝上型计算机,并且包括键盘44、显示屏46等,以允许人类操作员输入和显示数据以及配置程序的操作,如将在下面描述的。可选地,配置计算机40可以是具有被集成到单个壳体中并被配置成例如安装在控制柜中的显示器46、用户接口和处理部的工业计算机。
示出了通过工业控制网络28经由网络模块26与工业控制器12进行通信的外部处理装置200。外部处理装置200还可以通过工业控制网络28与处理器模块22进行通信或经由专用通信通道与任何一个模块通信。外部处理装置200可以是诸如标准的桌上型计算机、膝上型计算机、工业计算机等的通用计算平台,并且包括处理单元202、诸如键盘、鼠标、触摸板、触摸屏等的用户接口204以及显示屏206,以允许人类操作员输入和显示数据以及外部处理装置200的操作,如将在下面描述的。
根据本发明的另一实施方式,外部处理装置200可以被实现为程序,例如链接至在处理器模块22中执行的控制程序54的动态链接库。动态链接库存储在处理器模块22的存储器50中并且在被控制程序54调用时由处理器48执行。根据本发明的又一实施方式,可以提供插入工业控制器12的一个插槽中的专用模块18。专用模块18包括存储有外部处理例程的存储器以及用于执行外部处理例程的处理器。专用模块18被配置成经由背板16与处理器模块22通信。
现在参照图2,处理器模块22包括与存储用存储器50通信以执行操作系统程序52和控制程序54的处理器48,该操作系统程序52通常控制处理器模块22的操作,该控制程序54描述工业机械或处理36的期望控制并且通常对于工业控制系统10的给定应用是唯一的。存储器50还可以包括由控制程序54使用并且将在下面描述的数据表(例如,参见图3中的硬件表88、连接表90、标签关联92和i/o表94)。
处理器模块22还包括处理器间接口51,该处理器间接口51用于集成工业控制器12与诸如外部处理装置200或附加工业处理装置35的外部计算装置之间的通信。尽管处理器间接口51被示出为单独的模块,但处理器间接口51也可以是专用控制电路,可以被集成为存储在存储器50内并由处理器模块22的处理器48执行的一系列指令,或以上两种情况的组合。处理器间接口51与存储器50和处理器48通信,以标识必须由外部计算装置200之一执行的代理执行指令87,并且从对应的外部计算装置接收返回数据,该对应的外部计算装置必须与工业控制器12的数据表(参见图3)集成。将在下面更详细地讨论处理器间接口51的操作。
处理器模块22可以通过背板或处理器间通信总线16与网络模块26通信,该网络模块26包括操作电路55(例如,操作电路55是处理器和存储程序和/或专用电路,例如现场可编程门阵列)。操作电路55可以与网络接口电路56通信,该网络接口电路56提供用于在工业控制网络28上对低层级的电气协议的执行。
可以在马达驱动器30中设置类似的网络接口电路56,以与内部马达控制处理器58通信,该内部马达控制处理器58例如可以执行伺服控制器或频率控制算法。内部处理器58还可以与开关电路60和i/o电路62通信。根据本领域公知的方法,该开关电路60可以提供脉冲宽度控制或类似输出,以向马达32的驱动线圈提供电力。开关电路60通常包括连接至马达绕组(向马达提供控制马达位置、扭矩、速度等的电力)的马达控制功能,该马达控制功能确定马达以及合成电压(例如,一个或多个ac电压波形)的固态装置和驱动器的控制参数。i/o电路62接收来自马达32上的传感器34(例如,来自编码器等)的反馈信号64,并且还可以接收来自其他基于机器的传感器66(例如,提供配准传感器、限位开关、光学中断器等)的其他输入。处理器58还可以与保存固件(例如,操作系统程序70或控制程序54的下载的程序元素72)的存储器68通信。
如上所述,配置计算机40可以是具有与存储器76通信的处理器74的标准的桌上型计算机,该存储器76保存操作系统程序78以及各种数据结构和程序80,包括用于配置工业控制系统10的程序82。根据本领域公知的方法,计算机40还可以提供例如在处理器74与工业网络28之间进行通信的接口电路,或者提供到处理器模块22的单独通信通道42,以及具有屏幕46和键盘44。
外部处理装置200可以是具有与存储器212进行通信的处理器210的标准的桌上型计算机,该存储器212保存操作系统程序以及用于在处理器上执行的各种数据结构和程序214,包括用于生成由受控机器或处理36使用的数据的程序。根据本领域公知的方法,外部处理装置200还可以提供例如在处理器210与工业网络28之间进行通信的接口电路,或者提供到处理器模块22的单独通信通道,以及具有显示屏206和键盘204。
每个附加的工业处理装置35包括通信接口37,该通信接口37经由工业网络28将装置连接至工业控制器12。每个附加的工业处理装置35还包括与存储器39通信的处理器38,该存储器39保存用于在处理器38上执行的各种数据结构和程序,包括接收来自受控机器或处理36的数据或生成由受控机器或处理36使用的数据的程序。根据本领域公知的方法,工业处理装置35还可以提供与显示屏或用户接口进行通信的接口电路。
现在参照图3,处理器模块22的存储器50可以包括数据结构88、90、92、94和程序,包括要在处理器模块22上执行的控制程序54的副本。数据结构可以包括描述工业控制系统10的各个部件的能力的硬件表88,例如,包括每个马达驱动器30、i/o模块24和处理器模块22的能力。
数据结构还可以包括连接列表90,该连接列表90根据连接消息传送的约定描述工业控制系统10的装置(例如,包括每个马达驱动器30、控制器模块18和i/o装置31)之间的连接。通常,每个连接表示工业控制网络28的预分配部。这些连接通常基于用户输入的数据,该数据指示每个连接的发起方和目标。连接列表90还可以描述连接的期望带宽,例如,限定通过连接发送的数据的更新速率。
数据结构还可以包括关联列表92,该关联列表92将控制程序54中的输入和输出标签(表示控制程序54中使用的变量,该变量由从传感器接收到的数据反映,并且输出至致动器和马达)与由用户指定的特定硬件元件相关联。可以类似地限定标签以标识诸如代理执行指令87的特定指令和/或与该指令相关联的状态位。因此,例如,与传感器66(图2中所示)相关联的标签还可以与物理连接至传感器66的马达驱动器30相关联。
数据结构还可以包括用于执行控制程序54的指令的各种功能、任务或服务96。这些功能、任务或服务96通常存储在处理器模块22中的固件中,并且包括实现控制程序54的指令86的功能101以及由这些功能调用的服务。例如,运动规划器100可以是被调用的功能101之一。运动规划器100在被功能101调用时,生成运动数据(例如,位置、速度等)的时间序列的运动规划。其他功能、任务或服务96包括处理控制器与各种装置之间的通信的通信服务108。这些功能、任务或服务96通常是处理器模块22的本机环境的一部分,但是可以在开发控制程序的正常处理之外周期性地更新这些功能、任务或服务96。
根据本发明的一方面,数据结构包括限定外部计算装置的元数据。为了方便起见,本申请将讨论外部处理装置200作为特定的外部计算装置。然而,应当理解,该实施方式并非旨在进行限制。更确切地,外部计算装置可以是连接至工业网络28的附加工业处理装置35、马达驱动器30或其他处理装置。此外,可以想到,多个外部计算装置可以连接至工业网络28,其中每个外部计算装置响应于单独的代理指令87而执行。
存储在数据结构中的元数据标识或限定外部处理装置200、外部处理装置200的能力以及工业控制器12如何与外部处理装置200通信。元数据限定了外部处理装置200的哪个实施方式存在于受控系统中。如果外部处理装置200是独立的处理单元或在单独的处理单元中实现,则元数据限定例如通过其工业控制器连接至规划器的网络28、通信协议、网络地址等。如果将外部处理装置200嵌入处理器模块22中,则元数据限定执行外部处理装置200所需的功能调用,并且限定外部处理装置200所需的处理器模块的资源,例如存储器范围、处理时间等。如果将外部处理装置200作为专用模块18插入机箱中,则元数据可以标识模块所连接的背板、模块18所在的插槽编号、专用模块可以与处理器模块通信的专用通信间隔等。此外,元数据还可以限定外部处理装置200的处理能力以及将利用这些处理能力中的哪个。例如,元数据可以限定在外部处理装置200上存在的多个例程以及在工业控制器12与外部处理装置200之间传递什么数据。通常,元数据提供工业控制器12与外部处理装置200通信所需的配置信息。
在工业控制器12内限定一个或更多个代理执行指令87。参照图4,示出了示例性代理执行指令180。示例性代理执行指令180的标题为代理执行。代理执行指令180包括由用户配置的多个字段181,以限定期望的指令。每个字段181包括描述该字段的标记182和用户接口184,用户通过该用户接口184设置字段181的一个或更多个值。可以想到,用户接口184可以采用多种不同形式中的一种。例如,下拉菜单可以向用户提供字段181的选择列表。可选地,用户接口184可以提供文本框以接收经由键盘输入的用户限定的设置。根据又一选项,位于用户接口184上方的选择按钮或鼠标检测可以启动单独的配置窗口,在该配置窗口中可以输入针对字段181的多个配置参数。
代理执行指令180中示出的字段181在本文中将被描述为一个示例性指令。为了方便起见,在本文中参考代理执行指令180,但是并不旨在对其进行限制。优选地,工业控制器12可以提供一个代理执行指令87以允许与外部处理装置200的统一接口。然而,可以想到,某些外部处理装置200可以包括对于在外部处理装置200上执行的例程而言唯一的附加字段。在不脱离本发明的范围的情况下,可以在工业控制器12内提供具有不同字段的各种其他代理执行指令87,以实现期望的计算。所示的代理执行指令180包括处理装置字段181a,在该处理装置字段181a中,结构限定例如外部处理装置的类型、通信协议、通信地址、数据字段等。此外,如果在受控机器或处理36中提供多于一个的外部处理装置200,则处理装置字段181a可以用于选择多个外部处理装置200之一。
所示的代理执行指令180还包括连接类别字段181b,该连接类别字段181b限定要在工业控制器12与外部处理装置200之间建立的连接的类别。连接的类别可以根据外部处理装置200的需求来选择。类别1连接提供了工业控制器12与外部处理装置200之间的连续通信。例如,类别可以限制为每个连接最大1000字节的数据,以限制工业网络28进行连续通信所需的带宽。以预定间隔重复连续通信,其中,可以以等于或大于利用由外部处理装置200提供的数据的调度任务的速率来选择间隔。
类别3连接提供了工业控制器12与外部处理装置200之间的按需通信。类别3连接可以是例如远程过程调用(rpc)。不以预定间隔重复类别3连接,而是在代理执行指令87指示需要连接时建立类别3连接。必须维护连接资源,直到要传送的数据和/或外部处理和返回数据完成。类别3连接可以被限制为例如每个建立的连接上要发送的数据最多四千字节(4kb)。可以在数据在发送期间需要分段和重组或压缩和解压缩时使用类别3连接。
所示的代理执行指令180还包括例程字段181c和数据字段181d。例程字段181c可以用于标识要通过指令执行的存在于外部处理装置200上的外部处理能力。在某些应用中,外部处理装置200可以是具有单个处理功能的专用装置。在其他应用中,外部处理装置200可以包括多个处理功能,并且例程字段181c标识要执行哪个功能。数据字段181d可以用于标识标签、存储器地址、表等,在该数据字段181d中或根据该数据字段181d,在工业控制器12与外部处理装置200之间共享数据。
可以想到,外部处理装置200配置的一部分或全部可以在调试期间发生,其中,限定要在控制程序之外访问每个外部处理装置200的结构中的各种信息被存储在控制程序54的执行期间访问的配置参数中。
所示的代理执行指令180还包括多个状态位186。根据所示的指令,状态位186包括使能状态位(en)、完成状态位(dn)、错误状态位(er)、进行中状态位(ip)和活动状态位(ac)。向代理执行指令180分配标签,该标签标识被存储在标签关联表92中的指令。类似地,每个状态位包括与代理执行指令180相关联并标识每个状态位的标签,其中状态位的标签也存储在标签关联表92中。
在操作中,代理执行指令87无缝地集成外部计算装置200上的执行与对工业控制器12内部的处理的执行。在执行控制程序54期间,如图3所示,执行一系列控制指令86。当执行与代理执行指令不同的控制指令86时,这些控制指令根据需要访问存储器50内的数据结构88、90、92、94以执行期望的操作。指令的执行发生在处理器模块22内。
当根据应用需求而需要代理执行指令87时,将代理执行指令87插入控制程序54中以用于执行。代理执行指令87还可以根据需要访问存储器50内的数据结构88、90、92、94以执行期望的操作。在执行代理执行指令87期间,由在处理器模块22的硬件中实现代理执行指令87的功能101进行调用,以在外部处理装置200上执行该指令。外部处理装置200的存在和类型可以在工业控制器12的调试期间被输入到配置参数中并且存储在存储器50中。可选地,可以在指令的用户限定的字段181之一中限定外部处理装置200的存在和类型。根据本发明的又一方面,受控机器或处理36可以包括多个外部处理装置200。表可以存储在存储器50中,其中该表包括外部处理装置中的每一个。该表还可以包括与每个外部处理装置对应的元数据(将在下面进行更详细地讨论)。每个代理执行指令87可以被配置成从表中选择外部处理装置之一。
如先前所讨论的,外部处理装置200可以采用若干形式中的一种。根据第一实施方式,外部处理装置200是单独的独立处理装置。根据第二实施方式,外部处理装置200在工业控制器12的处理器模块22内。根据第三实施方式,外部处理装置200是专用模块18,其可插入在工业控制器12的机箱14的插槽中。外部处理装置200引用不同于执行控制程序的处理器模块22的主线程的处理单元,其中,该外部处理装置专用于执行一个或更多个任务。外部处理装置200可以由工业控制器12的制造商提供,或者可选地,外部处理装置200可以由第三方提供。
因此,处理器模块22的存储器50存储元数据,该元数据限定外部处理装置200、外部处理装置的能力以及工业控制器与外部处理装置通信的方式。元数据限定了外部处理装置200的哪个实施方式存在于受控系统中。如果外部处理装置是独立处理单元或在物理上在工业控制器12外部的单独处理单元中实现,则元数据限定例如通过其工业控制器连接至外部处理装置的网络28、通信协议、网络地址等。如果外部处理装置被嵌入在处理器模块22内并且例如在与执行控制程序的处理线程或核心并行的处理线程或核心上执行,则元数据限定执行外部处理装置所需的功能调用并且限定处理器模块的资源,例如外部处理装置200所需的存储器范围、处理时间等。如果将外部处理装置作为专用模块18插入机箱中,则元数据可以标识模块所连接的背板、专用模块18可以与处理器模块通信的专用通信间隔等。此外,元数据还可以限定外部处理装置200的处理能力以及将利用这些处理能力中的哪个。例如,元数据可以限定在外部处理装置上存在的可用计算功能。此外,元数据可以限定机器数据,例如由外部处理装置控制的机器所利用的坐标系或存在于该机器上的几何形状。通常,元数据提供工业控制器12与外部处理装置200进行通信所需的配置信息以及外部处理装置执行代理指令87所需的数据。
根据本发明的一个实施方式,代理执行指令180可以被配置成与外部运动规划器对接。控制程序54包括包含运动指令的多个控制指令86。通常,控制指令可以是例如以各种不同语言表达的实现计时器、逻辑门、触发器、计数器、算术运算等的指令,各种不同语言包括在本领域中都是公知的继电器梯形图语言、功能块语言和结构化文本语言。控制指令还可以包括一个或更多个运动指令。运动指令可以包括:控制马达32在诸如最大速度、加速度和加加速度(jerk)的约束下在第一位置与第二位置之间的运动的命令;点动指令,其使马达以预定速度运动;以及协调运动指令,其提供马达32的与第二马达同步地或以预定比率或以其他功能关系的运动(如由凸轮指令或齿轮指令确定的)。通常,这些指令中的每一个实现了限定由运动规划器生成的一系列运动位置和时间的运动规划。
接下来参照图5,示出了示例性运动指令141作为代理执行指令87的特定示例。示例性运动指令141的标题为协调移动。协调移动指令141限定了受控机器或处理36中的至少两个轴的运动规划,所述至少两个轴串联移动例如,使工件与夹具上的作用在工件上的工具串联地行进经过夹具。类似地,两个或更多个轴可以使机械臂沿多个轴在第一位置与第二位置之间移动。协调移动指令包括由用户配置以限定期望运动的多个字段140。每个字段140包括描述该字段的标记142和用户接口144,用户通过该用户接口144设置字段140的一个或更多个值。可以想到,用户接口144可以采用多种不同形式中的一种。例如,下拉菜单可以向用户提供字段140的选择列表。可选地,用户接口144可以提供文本框以接收经由键盘输入的用户限定的设置。根据又一选项,位于用户接口144上方的选择按钮或鼠标检测可以启动单独的配置窗口,在该配置窗口中可以输入针对字段140的多个配置参数。
协调移动指令141中示出的字段140在本文中将被描述为一个示例性指令。为了方便起见,在本文中将协调移动指令141称为一个示例性代理执行指令87,但是并不旨在进行限制。在不脱离本发明的范围的情况下,可以在工业控制器12内提供具有不同字段的各种其他代理执行指令以实现期望的功能。所示的协调移动指令141包括其中要操作多个轴的坐标系字段140a。例如,可以相对于参考点限定坐标系的原点的位置,使得随后的运动命令以彼此已知的关系作用在每个轴上。选择运动控制字段140b以返回协调移动指令141的状态和状况。路径字段140c可以用于限定期望运动的起始点和终点。路径字段140c还可以包括运动的细节,例如,运动是否在起始点与终点之间的最短点中处发生、是否在排除区域附近等。动力学字段140e包括限定加速率、减速率、加速度跳动率、减速度跳动率、最大速度等的结构。提供锁定字段140f(即,锁定位置和锁定方向)以指定相对于主轴位置的运动事件。规划器字段140d可以用于限定是经由工业控制器12内的内部运动规划器100还是经由与工业控制器12通信的外部处理装置200来执行运动指令。规划器字段140d可以包括限定例如外部处理装置的类型、通信协议、通信地址、数据字段等的结构。此外,如果在受控机器或处理36中提供多于一个的外部处理装置200,则规划器字段140d可以用于选择多个外部处理装置200之一。可选地,可以想到,外部处理装置200配置可以在调试期间进行,其中限定每个外部处理装置200的结构中的各种信息可以在控制程序之外被访问并且存储在控制程序54的执行期间访问的配置参数中。
所示的协调移动指令141还包括多个状态位146。根据所示的指令,状态位146包括使能状态位(en)、完成状态位(dn)、错误状态位(er)、处理中状态位(ip)、活动状态位(ac)和处理完成状态位(pc)。协调移动指令141被分配有标识存储在标签关联表92中的指令的标签。类似地,状态位中的每一个包括与协调移动指令141相关联并且标识每个状态位的标签,其中状态位的标签也存储在标签关联表92中。
还参照图7,外部处理装置200可以是如在协调移动指令141的规划器字段140d中限定的外部运动规划器。协调移动指令141在工业控制器12上执行功能101,经由处理器间接口51将运动规划120发送至外部运动规划器200。运动规划120表示受控机器或处理中的一个或更多个轴的期望移动命令。处理器间接口51还可以将执行移动命令所需的数据(例如,存储在工业控制器的存储器50中的参数)发送至外部运动规划器200。外部运动规划器200基于从处理器间接口51传送的参数和分布120来处理运动规划120并且根据在外部规划器上执行的运动规划例程生成一系列运动数据110。由外部运动规划器200生成的一系列运动数据110被发送回至工业控制器12。工业控制器12和在工业控制器上执行的内部运动规划器100利用来自外部运动规划器200的一系列运动数据110作为每个轴的运动命令的多个潜在源之一并且将该一系列运动数据110与针对轴存在的任何附加系列的运动数据110结合,以控制轴的操作。处理器模块22又将从内部运动规划器100输出的组合的一系列运动数据110通过工业网络28发送至与进行期望运动的轴(多个轴)对应的马达驱动器30。因此,可以将外部运动规划器与内部运动规划器集成,以实现受控轴的期望操作。
随着协调移动指令141的执行,工业控制器12可以针对每个轴维持与轴的当前操作状态对应的运动状态机300。还参照图6,示出了一个轴的示例性运动状态机300。运动状态机300包括初始状态(状态0)302,在该初始状态302期间,例如当在工业控制器12或与该轴对应的马达驱动器30上循环电力时,状态机300被初始化。在初始化之后,状态机300转换至等待状态(状态1)304。当控制程序54执行用于对应的轴的运动指令时,状态机300可以在命令的运动期间转换通过几种不同的状态。例如,简单的运动规划可以命令轴,并且因此命令与该轴相关联的马达32从停止状况加速到恒定速度,以恒定速度行进,以及减速回到停止状况。当执行运动规划时,状态机300转换通过加速状态(状态2)306、运行状态(状态3)308和减速状态(状态4)。在更复杂的运动规划中,可能需要轴在移动期间改变速度并且在加速、运行和/或减速状态之间来回转换。在命令的运动完成后,轴返回到等待状态304。
如果在命令的运动期间发生故障,则状态机300转换至故障状态(状态7)316。工业控制器12可以被配置成在状态机进入故障状态316时执行轴的故障处理例程。故障处理例程可以确定是立即停止、受控停止还是向操作员发布消息同时允许运动继续进行。如果故障处理例程提供故障之后的恢复,则状态机300可以返回到加速状态306、运行状态308或减速状态310。可选地,如果故障处理例程提供立即停止或受控的停止,则该状态机器300保持处于故障状态316,直到发生故障复位,从而使状态机300返回到等待状态304。
本发明的另一方面是集成外部运动规划器在外部处理装置200上的执行与由工业控制器12管理的内部运动规划器100和状态机300。在由外部处理装置200执行代理执行指令87期间,可以想到,可以由控制程序54执行第二运动指令,其中第二运动指令旨在由内部运动规划器100(参见图7)来实现。还可以想到,工业控制器12可以在i/o模块24处接收输入信号,其中,输入信号指示应当改变或覆盖协调移动指令141。外部处理装置200上的功能与在工业控制器12上执行的状态机300的集成允许在第一运动指令仍在执行的同时,处理请求轴的运动的后续运动命令和/或输入信号,从而增加了对每个轴的控制的灵活性。
如果第二运动指令或输入信号要求第一运动指令停止,则状态机300可以进入中止状态(状态5)312。中止状态312可以包括一个或更多个例程,以处理轴的立即停止或受控停止。中止状态312可以响应于输入或第二运动命令而使经修改的运动规划被发送至外部处理装置200,使得实现立即停止或受控停止。例如,如果控制程序54在初始协调移动指令141的执行期间检测到工件的问题,则可能需要这样的操作。控制程序可以要求将工件移动到检查站而不是继续在其原始轨迹上,并且向外部处理装置200发出新的协调移动指令141。根据又一示例,工业控制器12可以接收指示通道闸(accessgate)已打开或光幕已被打破——指示在受保护区域内存在技术人员或操作员——的输入信号。工业控制器12可以发出立即停止或受控停止,这中止原始的协调移动指令141。
状态机300也可以禁止原始指令,而不是中止原始的协调移动指令141。禁止状态(状态6)314允许状态机300暂时覆盖原始的协调移动指令141。第二运动指令可以例如从按钮或其他操作员接口命令轴的点动。内部运动规划器100可以生成与命令的点动对应的用于马达驱动器30的一系列运动数据110。内部运动规划器100又可以禁止由外部处理装置200生成的一系列运动数据110,直到移除点动命令。一旦移除了点动命令,内部运动规划器100可以使到外部处理装置200的运动规划被更新。替选地,外部处理装置200可以监测来自轴的位置反馈信号并且在轴的点动命令到达原始期望位置期间连续更新一系列运动数据110。在移除了点动命令时,状态机300离开禁止状态314并且根据来自外部处理装置200的命令运动,返回到加速状态306、运行状态308或减速状态310。
以上描述的状态机300是示例性的,并且不旨在进行限制。可以想到,状态机300可以包括比所示出的状态更少的状态或附加状态,并且可以类似地根据应用需求包括状态之间更少的或附加的转换。
再次参照图5,协调移动指令141包括多个状态位146。当由内部运动规划器100处理类似的运动指令时,状态位146根据要由协调移动指令141控制的轴或多个轴的当前操作进行更新。例如,当控制与每个受控轴对应的马达32的操作的马达驱动器30被开启时,设置使能状态位(en)。当马达驱动器30向马达32提供输出电压以控制马达32的操作时,设置活动状态位(ac)。可以通过以下操作在同一任务的其他梯级中或在控制程序54的其他任务中利用这些状态位:读取与对应于状态位的每个标签相关联的值,以执行附加步骤或启动受控机器或处理36中的其他动作。
为了进一步将外部处理装置200与工业控制器12集成,当外部处理装置200正在执行代理执行指令87时,类似地设置协调移动指令141的状态位146。参照图7,外部处理装置200在外部处理装置200中的处理器210上执行一个或更多个运动控制例程220。运动控制例程生成与在协调移动指令141中设置的状态位相似的状态位。除了发送由外部处理装置200生成的运动数据110的时间序列之外,由外部处理装置200生成的各种状态位类似地从外部处理装置200被发送至工业控制器12。
处理器间接口51接收由外部处理装置200生成的状态位并且设置协调移动指令141的对应状态位。如先前所讨论的,将标签分配给协调移动指令141的每个状态位146并且存储在标签关联表92中。标签关联表92还可以包括与由外部处理装置200生成的每个状态位相关联的标签和/或由外部处理装置200生成的状态位与协调移动指令141的状态位之间的关联。当处理装置200发送由外部运动控制例程220生成的状态位时,处理器间接口51经由标签关联表92中的限定来标识协调移动指令141的对应状态位。然后,处理器间接口51根据由外部处理装置200生成的对应状态位的值来设置或重置运动指令的状态位146。
通过由工业控制器12的处理器48串流来自外部处理装置200的状态位和运动数据110的时间序列,协调运动指令141在控制程序54中执行,如同内部运动规划器100而不是外部处理装置200正在处理运动规划。工业控制器12能够针对每个轴将外部运动控制例程220集成在状态机300中并且在执行期望运动规划期间完全了解受控轴。工业控制器12例如具有轴的当前位置、命令位置和当前操作状态的知识。相比之下,现有技术的系统仅将移动命令传送给外部处理装置200,并且等待预期完成移动的预限定时间或者等待来自外部运动规划器的、指示运动完成的响应。外部运动规划器的集成还允许将已经在工业控制器12内实现的其他系统(例如,安全系统、点动功能、引导器/跟随器功能、齿轮功能、轴偏移等)容易地应用于外部处理装置200。这些内部功能由针对每个轴生成运动数据的第一时间序列的内部运动规划器100执行,而运动规划由生成运动数据的第二时间序列的外部处理装置200处理,其中将运动数据的两个时间序列相加在一起,以产生修改的或组合的运动数据的时间序列,以输出至每个轴的马达驱动器30。
某些术语在本文中仅用于参考的目的,并且因此不旨在是限制性的。例如,术语如“上”、“下”、“上面”和“下面”是指在附图中作出参考的方向。术语如“前”、“后”、“背部”、“底部”和“侧部”描述部件的各部分在一致但任意参考系内的取向,其通过参考描述讨论中的部件的文本和相关联的附图是清楚的。这样的术语可以包括上文特别提到的词语、它们的衍生物以及类似引入的词语。类似地,除非上下文清楚地指出,否则涉及结构的术语“第一”、“第二”以及其他这样的数值术语不暗示顺序或次序。
当介绍本公开内容和示例性实施方式的元件或特征时,“单数形式”、“该”和“所述”旨在指存在一个或更多个这样的元件或特征。术语“包括”、“包含”和“具有”旨在是包容性的,并且意指可能存在附加的元件或特征(除了那些具体指出的之外)。还应当理解的是,本文所描述的方法步骤、处理和操作不应被解释为必须要求它们以所论述或所示出的特定顺序来执行,除非特别地被标识为执行的顺序。还应当理解,可以采用附加步骤或替选步骤。
对“微处理器”和“处理器”或“所述微处理器”以及“所述处理器”的引用可以理解为包括以下一个或更多个微处理器:所述一个或更多个微处理器可以在独立的和/或(一个或更多个)分布式环境中通信,并且因此可以被配置成经由有线或无线通信与其他处理器通信,其中,这样的一个或更多个处理器可以被配置成在可以是类似装置或不同装置的一个或更多个处理器控制的装置上操作。此外,除非另有说明,否则对存储器的引用可以包括一个或更多个处理器可读和可访问的存储器元件和/或部件,所述存储器元件和/或部件可以处于处理器控制的装置的内部、可以处于处理器控制的装置的外部以及可以经由有线或无线网络被访问。
应当理解,本发明在其应用中不限于本文所阐述的部件的构造和布置的细节。本发明能够具有其他实施方式并且能够以各种方式实践或执行。以上内容的变型和修改落入本发明的范围内。还应当理解的是,本文中公开和限定的本发明扩展到从文本和/或附图提及或显而易见的各特征中的两个或更多个的所有替选组合。所有这些不同组合构成本发明的各种替选的方面。本文中描述的实施方式解释了用于实施本发明的已知的最佳模式,并且将使得本领域的其他技术人员能够利用本发明。
1.一种工业控制器,被配置成协调所述工业控制器与外部处理装置的执行,所述工业控制器包括:
存储器装置,被操作成存储控制程序和至少一个数据结构;
处理器,被操作成执行所述控制程序,其中,所述控制程序包括要在外部处理装置上执行的至少一个代理指令;以及
处理器间接口,被操作成集成所述至少一个代理指令在所述外部处理装置上的执行与所述控制程序在所述处理器上的执行,其中:
所述至少一个代理指令根据所述至少一个数据结构限定执行对应的代理指令所需的数据,
所述处理器间接口从所述至少一个数据结构中读取所述数据并且将所述数据发送至所述外部处理装置,以及
所述处理器间接口从所述外部处理装置接收指示处理所述至少一个代理指令的状态的响应。
2.根据权利要求1所述的工业控制器,其中,所述存储器装置还被操作成存储外部处理装置的表,其中,所述表限定与所述表中的所述外部处理装置中的每一个对应的元数据。
3.根据权利要求2所述的工业控制器,其中:
所述至少一个代理指令中的每一个标识所述表中的所述外部处理装置中的要在其上执行所述对应的代理指令的一个外部处理装置,
所述处理器间接口在所述控制程序执行所述代理指令时,从所述表中读取与所述代理指令对应的元数据,以及
所述处理器间接口根据所述元数据建立所述处理器与所述外部处理装置之间的连接,以将所述数据发送至所述外部处理装置。
4.根据权利要求1所述的工业控制器,其中,所述至少一个代理指令包括处理中状态位和完成状态位。
5.根据权利要求4所述的工业控制器,其中,所述处理器间接口被操作成根据从所述外部处理装置接收到的响应来设置和重置每个代理指令的处理中状态位和完成状态位。
6.根据权利要求1所述的工业控制器,其中:
所述外部处理装置被操作成在所述至少一个代理指令的执行期间改变来自所述至少一个数据结构的所述数据,
所述处理器间接口还被配置成从所述外部处理装置接收经改变的数据,以及
所述处理器间接口将经改变的数据写入所述工业控制器的所述存储器装置中的所述数据结构。
7.根据权利要求1所述的工业控制器,其中,所述至少一个代理指令包括至少一个用户可限定字段,其中,当开发所述控制程序时,配置所述至少一个用户可限定字段。
8.根据权利要求1所述的工业控制器,其中,所述外部处理装置选自以下中的一个:物理上在所述工业控制器外部的处理装置、在所述处理器上与执行所述控制程序的线程并行执行的处理线程以及能够插入所述工业控制器的机箱中的模块。
9.一种协调工业控制器与外部处理装置的执行的方法,所述方法包括以下步骤:
在工业控制器的处理器上执行多个控制指令,其中,所述多个控制指令访问来自存储在所述工业控制器的存储器中的至少一个数据结构的数据;
在所述工业控制器的所述处理器上执行至少一个代理指令,其中:
所述至少一个代理指令限定要在外部处理装置上执行的至少一个功能,
所述至少一个代理指令根据所述至少一个数据结构限定共享数据,以及
所述共享数据由所述多个控制指令中的至少一个控制指令访问并且是执行所述至少一个代理指令所需要的;利用在所述工业控制器上执行的处理器间接口读取所述共享数据;利用所述处理器间接口将所述共享数据发送至所述外部处理装置;以及
在所述处理器间接口处接收来自所述外部处理装置的响应,所述响应指示执行由所述至少一个代理指令限定的所述至少一个功能的状态。
10.根据权利要求9所述的方法,还包括将外部处理装置的表存储在所述工业控制器的所述存储器中的初始步骤,其中,所述表限定与所述表中的所述外部处理装置中的每一个对应的元数据。
11.根据权利要求10所述的方法,还包括以下步骤:
从所述表中读取与存储在所述表中的所述外部处理装置中的并且在所述至少一个代理指令中限定的一个外部处理装置对应的元数据;以及
根据所述元数据建立所述处理器与所述外部处理装置之间的连接,以将所述共享数据发送至所述外部处理装置。
12.根据权利要求9所述的方法,其中,所述至少一个代理指令包括处理中状态位和完成状态位。
13.根据权利要求12所述的方法,还包括以下步骤:响应于从所述外部处理装置接收到的响应,设置所述处理中状态位的值和所述完成状态位的值。
14.根据权利要求9所述的方法,其中,所述处理器间接口将所述共享数据的初始值发送至所述外部处理装置,所述方法还包括以下步骤:
在所述处理器间接口处接收来自所述外部处理装置的所述共享数据的经改变的值;以及
利用所述处理器间接口将所述共享数据的经改变的值写入所述工业控制器的所述存储器中的所述至少一个数据结构。
15.根据权利要求9所述的方法,其中,所述至少一个代理指令包括在开发所述控制程序时配置的至少一个用户可限定字段。
16.根据权利要求9所述的方法,其中,所述外部处理装置选自以下中的一个:物理上在所述工业控制器外部的处理装置、在所述工业控制器的所述处理器上与执行所述多个控制指令的线程并行执行的处理线程以及能够插入所述工业控制器的机箱中的模块。
17.一种用于工业控制器的处理器模块,被配置成协调所述工业控制器与外部处理装置的执行,所述处理器模块包括:
存储器,被操作成存储控制程序和至少一个数据结构;以及
处理器,被操作成执行所述控制程序,其中:
所述控制程序包括多个控制指令和至少一个代理指令,
所述至少一个代理指令根据所述至少一个数据结构限定执行对应的代理指令所需的数据,
所述至少一个代理指令限定要在外部处理装置上执行的至少一个功能,并且
所述处理器还被操作成:
从所述至少一个数据结构读取所述数据;
将所述数据发送至所述外部处理装置;以及
从所述外部处理装置接收指示处理所述至少一个代理指令的状态的响应。
18.根据权利要求17所述的处理器模块,其中:
所述存储器还被操作成存储外部处理装置的表,
所述表限定与所述表中的所述外部处理装置中的每一个对应的元数据,
所述至少一个代理指令中的每一个标识所述表中的所述外部处理装置中的要在其上执行所述对应的代理指令的一个外部处理装置,并且
所述处理器还被操作成:
当所述控制程序执行所述代理指令时,从所述表中读取与所述至少一个代理指令对应的元数据,以及
根据所述元数据建立所述处理器与所述外部处理装置之间的连接,以将所述数据发送至所述外部处理装置。
19.根据权利要求17所述的处理器模块,其中:
所述至少一个代理指令包括处理中状态位和完成状态位,并且
所述处理器还被操作成根据从所述外部处理装置接收到的响应来设置和重置每个代理指令的所述处理中状态位和所述完成状态位。
20.根据权利要求17所述的处理器模块,其中:
所述外部处理装置被操作成在所述至少一个代理指令的执行期间改变来自所述至少一个数据结构的所述数据,并且
所述处理器还被操作成:
从所述外部处理装置接收经改变的数据;以及
将经改变的数据写入所述至少一个数据结构。
技术总结