CN109634198A - 用于监视和/或生成动态环境的方法、装置和系统 - Google Patents
用于监视和/或生成动态环境的方法、装置和系统 Download PDFInfo
- Publication number
- CN109634198A CN109634198A CN201811233180.2A CN201811233180A CN109634198A CN 109634198 A CN109634198 A CN 109634198A CN 201811233180 A CN201811233180 A CN 201811233180A CN 109634198 A CN109634198 A CN 109634198A
- Authority
- CN
- China
- Prior art keywords
- condition
- action
- coprocessor
- monitoring
- dynamic environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0421—Multiprocessor system
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B13/00—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
- G05B13/02—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
- G05B13/0205—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric not using a model or a simulator of the controlled system
- G05B13/021—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric not using a model or a simulator of the controlled system in which a variable is automatically adjusted to optimise the performance
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0426—Programming the control sequence
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0428—Safety, monitoring
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/052—Linking several PLC's
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2005—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/11—Plc I-O input output
- G05B2219/1153—Scan only some I-O registers, use flags
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/22—Pc multi processor system
- G05B2219/2214—Multicontrollers, multimicrocomputers, multiprocessing
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/22—Pc multi processor system
- G05B2219/2231—Master slave
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Artificial Intelligence (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Programmable Controllers (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Testing And Monitoring For Control Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了用于监视和/或生成动态环境的方法、装置和系统。动态环境具有多个条件,响应于多个条件需要对应动作,并且包括各种装备、用于控制装备的控制设备和用于生成代表环境的监视的条件的输入信号的一个或者多个传感器。用于环境的控制系统包括主处理器和一个或者多个协处理器,其中主处理器配置给定的协处理器以仅评估预计在指定的时间段内在环境中出现的第一条件子集并且提供代表如果满足第一子集的特定条件则将采取的动作的第一控制信息。协处理器接收代表监视的条件的输入信号、处理输入信号以便确定是否满足第一子集的特定条件并且向控制设备提供第一控制信息以便控制装备。
Description
本申请是基于申请号为201280059760.9、申请日为2012年10月5日、发明名称为“用于监视和/或生成动态环境的方法、装置和系统”的专利申请的分案申请。
背景技术
可编程逻辑控制器(PLC)是通常被运用于控制自动化工业机电过程中的装备、机器和/或仪器的基于计算机的特殊控制器形式。这样的自动化工业机电过程的常见示例由工厂组装线的操作给出。在工厂组装线的动态环境中,可以有与零件/部件的制作、组装和/或封装以及零件/部件在各种制作、组装和/或封装级之中的传送关联的多件工业装备、机器和/或仪器(为了简化而统称为“装备”)。
图1结合自动化工业过程10、比如工业组装线的操作提供常规PLC 50的典型作用的一般图示。除了多件装备20之外,工厂组装线的动态环境通常还包括用于操作多件装备20的若干控制设备30(例如,执行器)以及用于提供装备状态和/或与零件/部件的制作、组装、封装和/或传送关联的各种条件的指示的多个输入设备40(例如,传感器)。输入设备40提供的这样的指示常称为动态环境的“状态”或者“条件”。用来操作装备20的控制设备30的一些示例包括磁继电器、螺线管、电马达和气动或者液压缸。输入设备40的一些示例包括限制开关、定位传感器、模拟传感器(例如,压力或者温度传感器)和成像设备(例如,相机)。
通常,PLC 50被运用于监视输入设备40提供的输入信号66。这些输入信号分别或者在各种实施例中代表动态环境随时间的不同状态(条件)。响应于在给定的时间存在的输入信号,PLC 50生成向用于操作工业装备20的控制设备30的输出信号68以保证高效和可预测地实施自动化过程10。为此,PLC 50一般被运用于协调将由实施过程100的装备20采取的动作的预定序列,其中相应动作可能需要在视输入设备40(经由输入信号66)提供的信息而定的某个时间窗内出现。
通常,PLC包括用于存储处理器可执行指令的可编程存储器并且运用各种其它电子部件以实施功能、比如逻辑、定序、定时、计数和算术。在一般架构和各种功能方面,PC在许多方面与通用计算机)—例如台式计算机或者膝上型个人计算机)相似;然而通用计算机却通常被优化用于计算和显示任务,PLC一般被优化用于动态环境、比如自动化工业过程中的控制任务。因而,PLC一般视为用于受控动态环境的专用控制部件。由于经常在自动化工业过程的高要求条件中运用PLC,所以从封装设计观点来看,常规PLC经常往往被强健地设计以便耐受高要求环境,在这些环境中,PLC可能暴露于物理变化、有挑战性的温度和湿度条件、灰尘或者潜在地有损坏性的材料和电噪声环境中的一项或者多项。
图2图示构成图1的常规PLC 50的典型电部件/电路装置(例如“硬件”)的广义化框图。如图2中所示,PLC 50的基本功能部件包括都相互通信地和/或电耦合到的处理器单元52、存储器54、电源56、输入接口58、输出接口60和一个或者多个通信接口62。图2也示出通信地耦合到PLC 50并且被运用于对PLC进行变成的编程设备64。
在图2中,处理器单元52包括用于解译输入接口58接收的输入信号66并且又经由输出接口60提供输出信号68以便根据在存储器54中存储的程序(例如,系列处理器可执行指令)实施控制动作的微处理器。具体地,存储器54存储包含代表将由微处理器实施的控制动作的指令的程序以及涉及微处理器在它执行各种指令时的输入信号、输出信号和操作的各种数据。输入接口58经由从外部输入设备(例如,传感器、开关、计量器、计数器等)接收的输入信号66向处理器单元52提供信息。处理器单元52又经由输出信号68向外部输出设备(例如,阀、马达等)传达控制动作。
在图2中,构成相应输入和输出接口的部件的示例可以包括模数转换器、光耦合器/光隔离器、缓冲器、锁存器和驱动器以便与受控动态环境关联的各种外部输入和输出设备适当接口。虽然在图2中出于示例的目的而示出四个输入信号和四个输出信号,但是应当理解不同类型的常规可用PLC可以被配置用于接受不同数目的输入信号(某个数目N的输入信号)并且提供不同数目的输出信号(某个数目X的输出信号)并且输入信号和输出信号数目无需必然相同。通常,输入信号数目N和输出信号数目X至少部分取决于被运用于监视图1的自动化过程10的输入设备40的数目和被运用于控制装备20的控制设备30的数目。
在图2中所示PLC 50中,通信接口62用来经由一个或者多个通信网络从或者向一个或者多个基于网络的外部输入/输出设备和/或其它远程PLC接收和传输各种信号(这些信号可以涉及用于由处理器单元52执行的程序、将由处理器单元52在执行程序时利用的输入信号、输出信号或者其它数据等中的一项或者多项)。通常,通信接口62实施比如设备验证、数据获取、在用户应用之间同步和连接管理这样的功能。电源56将AC电压转换成PLC中的各种电路装置为了操作而需要的低DC电压(例如,5伏特)。最后,编程设备64(该编程设备在一些示例实施例中可以经由通信接口62耦合到PLC 50)被运用于向存储器54中录入将由处理单元52执行的程序;通常在编程设备64中开发/编写、然后向PLC 50的存储器54传送程序。
图3具体结合处理器单元、各种存储器单元、输入/输出接口和用于有助于信息传送的总线提供图2中所示PLC 50的内部架构的附加细节。例如,图3图示处理器单元52(在图2中表示为CPU)与时钟52A关联,该时钟的频率确定PLC的操作速度并且为PLC中的各种单元提供定时和同步。在处理器单元、各种存储器单元之中以及经由多个总线向和从输入/输出接口58和60输送在PLC内的信息;具体地,PLC运用用于向和从PLC的构成单元传送数据的数据总线、用于发送用于访问存储的数据的位置的地址的地址总线以及用于涉及内部控制动作的信号的控制总线。PLC架构也可以包括用于在输入/输出接口58、60(从这些在输入/输出接口分别从外部输入设备接收输入信号66和向外部输出设备提供输出信号68)与被配置用于在I/O系统总线与PLC的数据总线之间传送输入/输出信息的输入/输出单元55之间的通信的I/O系统总线。
通常,图3中所示架构的处理器单元52(CPU)包括负责数据操纵和执行算术运算(例如,加法、减法、乘法、除法)和树脂逻辑运算(例如,AND、OR、NOT和EXCLUSIVE-OR)的算术和逻辑单元(ALU)、用来存储参加程序执行的信息的内部存储器寄存器以及用于接收时钟52A的输出并且控制操作的定时的内部控制的那样。构成存储器54的各种存储器单元可以包括用于为处理器单元使用的操作系统和固定数据提供持久存储的只读存储器(ROM)54A、被运用于将由PLC执行的程序的用户程序随机存取存储器54B(用户程序RAM)以及用于数据(关于输入和输出信号的状态、定时器和计数器以及其它内部设备的值等的信息)的数据随机存取存储器54C(数据RAM)。将由PLC执行的程序也可以存储于非易失性存储器中。
从图3中所示PLC架构可以理解虽然常规PLC经常视为专用计算机而不是通用计算机,但是PLC和通用计算机二者共享“Von Neumann”计算机架构的许多方面。在Von Neumann计算机架构中,通过公共总线架构(即,经由图3中所示地址、数据和控制总线)从各种存储器单元访问计算机指令(在用户程序RAM 54A中存储的“用户程序”)以及程序执行所需要的任何数据(例如,存储于数据RAM 54C中)。虽然常规PLC尝试通过作为实施与特定自动化工业过程对应的具体功能的专用计算设备来定制计算机性能,但是常规PLC的架构却施加对它们的性能的根本限制,因为它们串行地执行指令、因此在效果上无用于并行执行的能力。
PLC的编程主要涉及指定数字逻辑功能,这些数字逻辑功能处理与各种装备在给定的时间实施的自动化过程关联的感测的条件(“状态”)的一个或者多个输入信号。作用于自动化过程的监视的条件的数字逻辑功能响应于监视的条件生成一个或者多个控制信号。如上所述,向控制设备施加这些控制信号,这些控制设备又控制各种装备以采取参加进一步实施自动化过程的某个动作。在高级别,PLC程序一般随时间响应于监视的条件实施一个或者多个动作的序列(例如,如果A或者B出现则执行C;如果A和B出现则执行D)。自动化过程在执行器控制设备以将过程驱动到新条件时随时间演变。因此,如上所述,自动化过程构成动态环境,在该动态环境中,条件的演变由PLC监视,并且其中PLC做出判决并且基于相应监视的条件更新向执行器的控制信号以将环境驱动到新条件。
经由“梯形逻辑”对许多常规PLC进行编程以代码化用来评估代表监视的条件的输入信号的数字逻辑。常见提醒逻辑编程语言通常运用与梯的“梯级”类似的图形图,其中相应梯级代表用于机电继电器(这些机电继电器在更旧逻辑控制系统中被使用)的电路图以有助于控制系统工程师的直观编程。梯形逻辑最好地适合用于实施控制解决方案,在这些控制解决方案中涉及到主要为二进制的变量(例如,在动态环境中的监视的条件可以各自被表示为TRUE、即,逻辑一或者FALSE、即,逻辑零)。
然而在多种自动化过程环境中,传感器的输出可以是模拟信号。因而在一些实例中,如果给定的输入设备/传感器的直接输出不是以二进制信号的形式,则可以在某些方面预调输入设备/传感器的输出以提供二进制形式的输入信号66。例如,可以首先向比较器电路施加温度感测设备的模拟输出,该比较器电路以温度设置点电压作为另一输入以便提供监视的温度是否在特定温度设置点以上或者以下的二进制指示作为输入信号66之一。备选地,可以将模拟值转换成定量值,该定量值被编码成由系统用来执行数学运算和/或做出判决的多位数字字。相似地,可以比较用作输入设备的计数器的多位输出与预定计数以又提供计数器输出是否在预定计数以上或者以下的二进制指示作为输入信号66之一(备选地,可以直接提供计数器的具有某个位数B的输出作为数目为B的输入信号66)。更多其它类型的输入设备可以生成高度地瞬态信号;对于这样的设备,锁存器可以被运用于有助于检测信号边沿或者瞬态以便向PLC提供指示出现边沿/瞬态的适当持续时间的输入信号。在其它示例中,输入设备可以包括各种联网的设备,对于这些联网的设备,一个或者多个通信状态信号(例如,传输/接收的数据分组)可以用作输入信号66之一。
用于对常规PLC进行编程的梯形逻辑和其它语言一般视为基于规则的编程语言。通常PLC程序可以由系列规则构成,其中每个规则由代表自动化过程的监视的条件的一个或者多个二进制输入信号(例如,A、B、C、D)和响应于评估输入信号的特定数字逻辑而生成的对应控制信号(例如,X)。因而在一些方面中,可以用与“IF/THEN”语句(例如,If(A ANDNOT B)AND(C OR D),THEN X)相似的方式看待PLC程序中的规则。PLC程序包括为了实施响应于输入信号的不同组合而需要的所有动作而必需的所有规则,这些输入信号的不同组合代表自动化过程的可以经由可用输入信号的集合监视的所有不同可能条件。
再次参照图2,编程设备64(该编程设备可以是手持编程设备、桌面型控制台或者个人计算机、比如膝上型计算机或者平板计算机)通常被运用于创建、存储和向PLC下载包括规则集的可执行程序。在程序由PLC执行时,通常从第一到最后依次执行、然后重复规则,其中依次遍历规则集的每次通过称为“扫描”或者“控制回路”。因此,扫描或者控制循环的连续重复代表PLC读取输入信号、使用在程序规则中编码的逻辑来检查输入信号、然后在适当时改变PLC输出的控制信号的连续循环。
更具体地,关于包括各种内务活动和执行扫描或者控制回路的一般操作,常规PLC通常以循环方式工作。例如,在初始地向PLC施加功率时,PLC可以执行自校验或者诊断例程以保证各种硬件部件其当工作。再次参照图2和图3,如果未检测到故障或者错误条件,则PLC控制输入接口58和存储器54以便依次读取输入信号66中的每个输入信号并且在专用存储器位置存储给定的输入信号的每个读取实例。PLC然后通过依次测试每个规则(即,依次取读、解码和执行程序指令)并且求解在规则中编码的逻辑来执行它的程序。
具体地,对于每个规则,从存储器取回如在规则中指定的某些输入信号的存储的实例,基于取回的输入信号评估规则,并且如果满足规则(即,满足在规则中指定的所有前提条件),则生成与满足规则对应的控制信号。如果生成这样的控制信号,则在专用存储器位置中存储它。给定规则的评估可以涉及到在求解在规则中代码化的数字逻辑时从和向不同存储器位置(例如,寄存器)的多个读取操作和写入操作。如上所述,在PLC执行梯形逻辑程序时依次评估相应规则;因而,在PLC评估特定规则之时,它未看管在程序中代码化的其它规则。
如果PLC响应于规则的评估来生成任何控制信号,则它可以提供这些用于作为更新的控制信号68的集合输出。又向将结合自动化过程控制的一个或者多个执行器或者其它装备传输这些控制信号。PLC然后返回到执行自校验、读取输入信号中的每个输入信号并且向存储器存储它们、执行程序规则以完成控制回路、更新控制信号用于输出(如果有)并且迭代地重复这一循环。
PLC为了完成以上描述的循环而需要的时间段常称为“循环时间”或者“扫描时间”。常规PLC的典型循环时间为近似10毫秒至数百毫秒级。循环时间一般由在处理器单元中使用的特定CPU、将扫描的程序的大小(例如,构成程序的规则数目,该数目又至少部分依赖于将读取的输入信号数目、需要独立评估的输入信号组合数目和将生成的控制信号数目)以及按照程序的执行而使用的系统功能确定。因此,程序越复杂,循环时间就将越长。
应当理解在常规PLC中,未满足在给定的循环中评估时的规则的绝大多数(即,未按照规则的执行来生成控制信号);如果未满足规则,则程序仅移向用于评估的下一规则。通过此方式,在常规PLC中普遍将给定的循环的大量部分花费在评估相继规则而未生成任何控制信号上。
虽然与被编程用于实施相似功能的通用计算机比较相对快,但是PLC的循环时间不是瞬时的。因此,PLC未所有时间“注视”它的输入信号,但是取而代之,PLC根据循环时间定期地对输入信号的状态进行采样。另外,循环时间构成在更新PLC响应于采样的输入信号而输出的(如果按照满足的规则而生成的)控制信号时的最小延迟。通过此方式,循环时间也可以视为PLC对特定监视的条件(即,由用于输入信号中的一个或者多个输入信号的特定值代表)的最少响应时间(“反应时间”)并且常称为PLC的“延时”。因此应当理解由于这一延时,持续比循环时间更短的持续时间的输入信号可能被程序遗漏(通常,任何输入信号必须存在比循环时间更长)。在一些实例中,外部电路装置可以被运用于锁存瞬态信号,从而它们不会被PLC完全遗漏。然而即使由于锁存而未“遗漏”特定输入信号,将响应于输入信号而生成的控制信号仍然可能被PLC太晚生成以至于对于控制的装备的正确操作无效。
由于其中常规PLC执行程序的循环性质,必须在程序的控制回路中设想输入信号的所有可能组合(这些输入信号的可能组合代表控制的自动化过程的需要某个动作的所有可能条件)。换言之,如上所述,只要一个或者多个输入信号代表的监视的条件以某种方式参加使某个动作在自动化过程的持续时间期间的某个点出现(经由一个或者多个控制信号),就需要程序中的评估特定监视的条件的一个或者多个规则。如上所述,常规PLC的延时随程序复杂性而伸缩;因此,随着过程的需要动作的可能条件数目增加,程序变得更大并且延时变得更大。另外,在许多自动化过程中,一些条件比其它条件更频繁出现,并且在一些实例中,可能很少出现的条件可能与需要评估的代表复杂化逻辑的规则(该规则需要更多处理时间)关联。因而,循环时间的显著部分可能由于执行一个或者多个规则以评估很少出现的一个或者多个监视的条件而被“用尽”(并且加剧延时)。
发明内容
发明人已经认识和理解与常规可编程逻辑控制器(PLC)关联的典型延时可能对于监视和/或控制一些类型的动态环境(例如,这些动态环境涉及到自动化系统和/或过程)而言过长。更通常,常规PLC已经其它更都通用计算机经常不适合用于涉及到监视和/或控制动态环境的应用,在这些动态环境中,结合响应或者反映时间(例如,响应于一个或者多个监视的条件采取某个动作、比如控制装备、机器和/或一起)需要显著速度和/或精确度。
具体地,运用通用计算机架构(或者具有通用处理器的小型和有限集合的有关计算机架构),并且执行依次或者循环执行程序的基于处理器的控制设备未充分地快速以在动态环境中实施控制功能,这些动态环境需要响应于环境的演变条件的反射式动作,这些动态环境可以从实质上同时评估多个可能条件并且基于该同时评估来采取立即动作中受益。需要反射式动作的动态环境的示例包括但不限于飞机控制、复杂化学过程控制和机器视觉应用(例如,分析图像以提取用于控制各种过程、比如自动检查和机器人向导的数据)。
鉴于前文,这里描述的各种发明实施例涉及用于监视和/或控制动态环境的方法、装置和系统,在这些动态环境中,可以用比常规PLC和/或其它常规计算设备可能有的延时显著更低的延时和/或可能有可变性延时显著更低的可变性延时提供对环境的演变条件的反应。
出于本公开内容的目的,“动态环境”是指物理和/或虚拟实施(例如,用于仿真)的过程和/或系统,其中可以随时间监视过程和/或系统的条件(这里也被称为环境的“状态”),并且可以响应于特定条件或者条件演变来采取一个或者多个动作(例如,以向过程和/或系统施加的控制刺激的形式)。在以下更具体讨论的示例实现方式中,响应于动态环境的特定条件或者条件演变而采取的动作可以在性质上为“反射式”,因为它们由于这里公开的发明方法、装置和系统实现的明显低的延时而接近瞬时。尽管例如对于自动化工业控制过程和系统的物理实现方式设想这里公开的概念的许多实际应用,但是应当理解这里公开的发明概念就这一点而言不受限制并且可以在多种物理和/或虚拟动态环境中被有利地应用。
结合实现用于控制动态环境的明显低的延时,发明人已经认识和理解对于给定的动态环境,需要动作的不同条件可以在不同时间标度上和/或在不同时间期限内出现(例如,一些条件可以比其它条件更经常出现和/或与某些其它条件在时间上接近邻近出现)。另外,一些条件可以在特定序列中更经常出现和/或由于先前已经采取一个或者多个特定动作而出现。因而,在这里描述的一些发明实施例的一个方面中,取代作为整体考虑整个动态环境并且设想动态环境在所有时间内可能需要动作的所有可能条件,发明人已经认识和理解通过基于多种标准(例如,时间标度/时间期限、特定条件演变或者改变模式)将动态环境分解成多个子环境(例如,子过程和/或子系统),可以用显著低的延时实施一种控制方法。换言之,发明人已经认识通过标识可能在动态环境中出现的特定条件类别和可以采取的对应所需动作(例如,可能都在某个时间段内出现的条件子集、可能仅在采取特定动作之后出现的条件子集等),可以细分并且在多个评价和控制资源之中共享控制解决方案以显著减少延时。
谨记前文,本发明的一些实施例涉及一种用于动态环境的控制系统(例如,作为用于图1中所示常规PLC 50的替换),其中控制系统运用“主控”处理器(这里也被称为“内务”处理器)和一个或者多个独立(即,异步)“从属”协处理器(这里也被称为“响应”协处理器),每个协处理器专用于评估一个或者多个条件,该一个或者多个条件构成需要在给定的动态环境中评估的所有可能条件的子集。在控制系统中的给定的协处理器被分配任务以评估的条件子集可以基于如以上指出的多个不同标准(例如,时间标度/时间期限、特定条件演变或者改变模式)。出于本公开内容的目的,“评估”条件是指确定条件的存在(“满足”条件,例如,通过比较在给定的时间的某个数目N的监视的输入信号与代表条件的特定输入信号值)并且响应于条件来生成适当动作(例如,生成一个或者多个对应控制信号或者用于生成一个或者多个对应控制信号的特定指令)。
这样的包括主控“内务”处理器和分别专用于评估动态环境中的某个条件子集的一个或者多个从属“响应”协处理器的控制系统可以视为采取一种用于监视和控制动态环境的“分而治之”方式。具体地,取代运用单个处理器以评估环境的需要动作的所有可能条件,主处理器可以向一个或者多个协处理器分派任务以仅评估需要动作的可能条件的某个子集、由此向主处理器减轻显著处理负担。通过此方式,整个控制系统的延时是协处理器延时的函数(例如,如果运用多个协处理器,则控制系统作为整体的延时可以是最大协处理器延时的函数)。
通过以前述方式在多个协处理器之中分布用于动态环境的条件评估过程,控制系统作为整体的延时与运用单个PLC和/或通用计算机的常规控制方式比较可以显著减少(例如,在一些情况下减少若干数量级)。在以下更具体讨论的各种实现方式中,这样的“分而治之”方式不仅实现明显低的控制系统延时,而且可以用示例控制系统和/或协处理器架构实现可预测和可重复延时。低延时和低可变性延时中的一项或者两项可以在一些机器视觉应用中特别有利,在这些机器视觉应用中,包括与机器和照明系统操作正确同步的图像获取的可靠/可预测机器行为是重要的。低延时和低可变性延时也可以对于协调如以上指示的控制活动与可以在不同时域中发生的计算机分析所产生的判决而言是重要的。
在根据本发明的控制系统的一个实施例中,主处理器(例如,该主处理器在一些情况下可以实施为通用计算机)通信地耦合到各或者多个从属协处理器。每个从属协处理器包括它自己的专用存储器(即,如果其它协处理器存在则未与它们共享并且仅可由协处理器本身和主处理器访问)以及用于作用于专用存储器的内容的关联硬件(例如,处理和/或逻辑电路装置)。给定的协处理器的专用存储器的内容可以由主处理器提供(将向协处理器中加载)。在以下更具体讨论的示例系统架构中,在一些方面中,给定的从属协处理器也具有对代表动态环境的不同条件的输入信号以及(例如,与主处理器和动态环境的)通信路径的基本上无束缚访问,从而多个协处理器能够在相同时间监视相同输入信号集合并且基于相同输入信号集合评估它们的关联条件。
在一个示例实施例中,协处理器的专用存储器的内容包括涉及动态环境的单个条件的评估的信息(例如,程序);因此,在这样的实现方式中,给定的协处理器被配置(例如,通过执行在专用存储器中存储的程序或者对存储器内容另外实施特定数字逻辑功能)用于按照在协处理器的专用存储器中存储的特定信息仅评估动态环境的单个条件(在以下讨论的其它实施例中,协处理器可以被配置用于评估多个条件)。在从属协处理器确定它的条件存在时,它根据协处理器的程序/逻辑采取对应规定的动作(例如协处理器提供某个输出,该某个输出又在适当时生成一个或者多个控制信号),并且向主控协处理器满足它的条件。在其它实现方式中,取代协处理器本身采取对应规定的动作,协处理器可以仅向主处理器通知满足它的条件(例如,通过生成向主处理器的中断),并且主控协处理器又可以被适当配置用于采取对应规定的动作。在任一情形中,通过从主处理器至少“分流”条件的评估,协处理器显著提高控制系统作为整体的响应时间。
在以下进一步具体讨论的一些实施例中,响应于来自协处理器的满足它的条件的通知,主处理器可以通过向协处理器的专用存储器中加载涉及将评估的新条件(以及如果满足新条件则将采取的对应动作)的信息来向协处理器“重新分派任务”。通过此方式,主处理器通过向控制系统的一个或者多个协处理器动态重新分派任务(以评估新条件和/或采取新/不同动作)来有助于动态环境的随着它随时间演变的有效控制。
在根据本发明的控制系统的一些实现方式中,如果有将在给定的时间期限内在动态环境中评估的多个条件,则可以运用多个从属协处理器,从而相应协处理器被配置用于评估不同可能条件并且在适当时采取动作。在这样的实现方式的一个方面中,代表动态环境的不同可能条件的N个可用输入信号的集合可以被(例如,经由总线架构并行)相同地提供并且同时可用于所有协处理器用于评估。因而,相应协处理器独立(即,异步)可以监视N个可用输入信号的集合、评估它们的相应条件、如果适当则/在适当时采取动作并且在满足它们的条件适通知主处理器。通过此方式,如上所述,控制系统的延时是给定的协处理器的延时的函数。在其中协处理器被配置用于评估单个条件的情形中,不仅协处理器的延时明显低而且延时变化也明显低(并且出于许多实际目的而基本上为零)。
根据本发明的各种实施例设想多种协处理器实现方式。例如在一个实施例中,可以实施协处理器为全特征处理器,该全特征处理器运行向它的专用存储器中加载的明显短的程序(例如,在用于评估特定条件的回路以内的单个IF THEN语句)。在这一类型的协处理器实现方式中,用于协处理器(基于评估代表IF THEN回路的相对少量指令的常规处理器)的典型延时可以在约一微秒级。然而对于其中空间和/或硬件成本可能是重要实际考虑的应用,实施协处理器为全特征处理器特别是如果动态环境的控制需要评估许多条件并且牵连控制系统中的多个处理器则可能在一些实例中不切实际(例如,花费在评估单个条件上的处理资源可能大于必需并且可能占用过量芯片空间)。
鉴于前文,在根据本发明的各种实施例的其它协处理器实现方式中,显著流线化专用协处理器包括用于专门基于协处理器的专用存储器的内容和监视的输入信号实施比较器功能(例如,与IF THEN语句等效的功能)的削减数字逻辑;实质上,经由显著硬件减少将协处理器的功能能力减少至单个条件的特定评估。这样的协处理器实现方式实现一种低成本、空间节省、低延时解决方案的目标。在示例实现方式中,可以例如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或者全定制电路中低成本实施若干这样的协处理器。
在如以上讨论的流线化协处理器实现方式的一个方面中,取代或者进一步有助于低延时,运用特定存储器结构用于协处理器的专用存储器以用“条件/动作对”的形式存储信息。在这样的存储器结构的一个示例中,条件/动作对可以包括在存储器位置(例如,单个存储器寄存器或者多个相邻存储器寄存器)中存储的特定数据,该数据被布置为代表将评估的条件的第一数目的位和代表如果满足条件则将采取的动作的第二数目的位。这样的存储器结构有助于简单直接和相对简单的数字逻辑实现方式,该数字逻辑实现方式用于比较监视的输入信号与代表将评估的条件的第一数目的位并且如果有匹配(即,满足条件)则提供代表将采取的对应动作的第二数目的位作为协处理器的门控输出。因而,基于构成“条件/动作对”的结构化存储器内容以及实施比较器和门以提供门控输出的相对简单的数字逻辑,可以实现有效的低延时、低占用面积和低成本协处理器。
控制系统的如下配置可以视为用于控制系统的最小延时的“退化”情况,在该配置中,向每个协处理器分派任务为仅评估用于动态环境的所有可能条件中的单个条件(即,最小子集)。更通常,用于控制系统的延时取决于控制系统中的给定的协处理器的物理实现方式(例如,全特征微处理器比对削减简化的数字逻辑实现方式)和/或协处理器实施的功能(例如,编程的逻辑功能)。如以下讨论的那样,在一些实施例中,具体涉及协处理器的物理实现方式和/或协处理器实施的功能,从而对协处理器的延时的上界在用于协处理器评估的条件的所需响应时间以下。在一些情况下,满足这样的要求可能要求协处理器仅被配置用于评估单个条件,而在其它情况下,协处理器可以被配置用于评估某个预定数目的条件的子集(例如,依次而不是“同时”、但是对有意地限制数目的条件)。通常,通过有意地限制协处理器的功能(例如,协处理器执行的程序的大小和/或将处理的信息),而可以实质上确保对延时的上界。
基于有意地限制给定的协处理器的功能的前述前提,根据本发明的各种实施例的控制系统的一些实现方式可以至少部分基于在控制特定动态环境的情境中适当平衡以下设计约束:1)保证协处理器被配置用于按照某个标准(例如,在特定时间期限内、在特定序列中、按照采取的先前特定动作等)评估可以在动态环境中存在的充分全面的条件子集;2)保证协处理器具有充分低(但是未必最小可实现)的延时以在适当时间期限中响应于满足的条件采取动作(即,保证有对协处理器的延时的可预测和充分低的上界);以及3)保证协处理器的实现需要合理低的硬件成本和/或空间要求。
鉴于前文,本发明的一些实施例涉及一种包括“动作引擎”的控制系统,该动作引擎可以包括一个或者多个协处理器,其中动作引擎的给定的协处理器可以被配置用于评估可以在动态环境中出现的多个条件的特定子集。在包括多个协处理器的动作引擎的一个实现方式中,每个协处理器可以自治地工作并且在任何给定的时间同时评估由动作引擎的所有协处理器在相同时间监视的某个数目N的输入信号代表的一个或者多个特定条件。
在根据一个实施例的动作引擎的另一实现方式中,动作引擎被配置用于评估上至某个固定最大数目的条件以便建立对延时的上界并且保证充分低的延时变化。为此,在一个示例中,动作引擎包括存储器结构实现的“事件表”,该存储器结构包括各自具有特定大小的某个数目的多个依次编索引的存储器位置(例如,寄存器或者连续寄存器组)。在一个方面中,每个这样的存储器位置被配置用于以如以上讨论的“条件/动作”对的形式存储信息,例如,某个第一数目的位代表将评估的条件,并且某个第二数目的位代表如果满足条件则将采取的动作。在另一方面中,事件表的相应存储器位置存储不同条件/动作对,从而在事件表上的给定的存储器位置“专用”于评估可以由N个输入信号代表的特定条件。
在前述示例中,动作引擎还可以包括“扫描器”,该扫描器通信地耦合到事件表并且被配置用于接收N个输入信号、依次评估由在事件表的相应存储器位置中存储的条件/动作对代表的条件。为此,扫描器包括用于读取给定的存储器位置的内容并且比较条件/动作对的条件部分与N个输入信号的相应值的适当数字逻辑电路装置(例如,用于实施比较器和门控输出的逻辑门)。在一个实施例中,条件/动作对的条件部分包括在给定的存储器位置中存储的全部信息的N位,从而有在条件/动作对的条件部分与N个输入信号之间的一到一对应。无论是否满足特定条件(即,N个输入信号的相应值与条件/动作对的条件部分匹配或者未匹配),扫描器都继续读取在事件表中的下一存储器位置的内容以便比较在下一存储器位置中存储的条件/动作对的条件部分与N个输入信号的相应值。
如果满足在事件表的给定的存储器位置中存储的条件/动作对的条件部分代表的特定条件(即,N个输入信号的相应值与条件/动作对的条件部分匹配),则扫描器提供条件/动作对的动作部分作为输出(例如,作为比较器在匹配时启用的门控输出)。这一输出本身可以构成用于控制动态环境中的装备的一个或者多个控制信号或者可以代表指令,该指令又生成控制动态环境中的装备的一个或者多个控制信号。扫描器然后继续读取在事件表中的下一存储器位置的内容以便比较在下一存储器位置中存储的条件/动作对的条件部分与N个输入信号的相应值,并且如果有匹配,则扫描器提供条件/动作对的动作部分作为门控输出。一旦扫描器到达事件表的最后存储器位置并且适当处理在这一最后存储器位置中存储的条件/动作对,扫描器就向事件表中的第一存储器位置返回并且重复依次处理事件表的相应存储器位置的内容的循环。
在一些实施例中,如以上描述的包括事件表和动作扫描器的动作引擎可以通信地耦合到主控(或者“内务”)处理器,该主处理器提供事件表的内容(例如,条件/动作对和可能其它信息)并且监督特定条件/动作对到事件表的特定存储器位置的适当映射(例如,基于主处理器想要动作引擎处理条件/动作对的特定顺序或者序列)。在一个方面中,主处理器可以通过向动作引擎的事件表中加载一个或者多个新条件/动作对用于由动作引擎的扫描器处理来偶尔或者定期地向它“重新分派任务”。为此,扫描器可以向主处理器提供满足与处理的特定条件/动作对对应的条件的指示,响应于该指示,主处理器可以向事件表中加载一个或者多个新条件/动作对。满足的条件的这样的指示可以通过生成输出来构成,该输出本身代表将采取的动作(该输出可以由主处理器监视),或者以动作引擎生成并且主处理器监视的分离状态信号或者中断的形式来构成。附加地(或者备选地),扫描器可以向主处理器提供事件表的全扫描完成的指示(例如,在处理在事件表的最后存储器位置中存储的条件/动作对之后),在这一点,主处理器可以向事件表重新加载一个或者多个新条件/动作对或者全新条件/动作对集合用于在扫描器对事件表的后续扫描期间处理。
在如以上描述的包括主处理器和动作引擎的根据本发明的控制系统的实施例中,在一个方面中,主处理器实现的内务和“重新分派任务”功能有助于如更早讨论的用于控制动态环境的“分而治之”方式。具体地,在一些实现方式中,给定可能在动态环境中可能需要对应动作的某个总数T的可能条件,主处理器被配置(例如,编程)用于仅选择总数T的可能条件的特定子集并且在给定时间向动作引擎分派任务以仅评估这一特定任务之间。如上所述,主处理器可以被编程用于基于各种标准进行特定条件子集的选择用于由处理器评估。在一个示例中,主处理器至少部分基于预计条件子集在动态环境中出现的时间段并且并且考虑主处理器本身在看管它的各种职责(例如,监视和/或控制主处理器本身可以在动态环境的整个情境中被分派任务的功能)时的响应时间(例如,最长或者“最坏情况”响应时间)选择条件子集用于由动作引擎评估。
例如,在给定的动态环境的情境中执行它自己的职责时,主处理器本身具有对它的用于在某个时间段内接收、处理信息和响应对信息做出响应的能力的限制。具体地,用作主处理器的通用计算机受制于各种调度约束(例如,按照调度和派发软件),这些调度约束支配需要由处理器看管的多个过程被指派执行的方式。给定需要调度过程的串行性质,必然有主处理器的某个滞后时间或者“响应时间”,该滞后时间或者“响应时间”代表在请求发起给定的过程与按照该过程的执行提供某个响应之间的时间量。主处理器的响应时间通常至少部分基于为了主处理器在动态环境中看管它的所需功能而需要调度的这样的过程的数目。以及调度的响应过程的复杂性。在一些方面中,这一情形与常规PLC的情形相似,在该常规PLC中,PLC的扫描时间或者循环时间基于在PLC程序中编码的规则的数目和复杂性,该PC程序施加对PLC的用于响应于监视的条件在特定时间期限内提供控制信号的能力的根本限制。
主处理器的响应时间可以至少部分基于需要调度的相应过程的数目和那些近程的复杂性(该复杂性又至少部分取决于监视和控制的动态环境的要求以及手边的控制任务的复杂性)具有某个标称预计或者典型值。然而,给定主处理器在给定的动态环境中潜在地执行的功能的可变性,通常有主处理器可能在处理信息时受制于的最长潜在响应时间或者“最坏情况”响应时间。如果有动态环境的可以在比主处理器的最坏情况响应时间更短的时间段内出现的(可能需要动作的)条件,则主处理器本身在效果上将不能可靠地对这些条件做出响应。因而,主处理器在给定的动态环境的境况中的最长潜在响应时间或者“最坏情况”响应时间可以用作标准的一个示例,主处理器可以按照该标准选择条件子集用于由动作引擎评估。通过此方式,主处理器实质上让动作引擎承担“关注”于在主处理器在效果上不能自行监视动态环境的某些条件的时间段期间这样做。
换言之,至少基于可以在动态环境中在其中预计某些条件的时间标度/时间期限的标准,主处理器选择可能在与主处理器的最坏情况响应时间对应的时间段期间在动态环境中出现的条件子集并且向动作引擎中加载条件/动作对用于在该时间段期间处理。在该时间段期间,动作引擎可以在标识满足在动作引擎的事件表中表示的特定条件之前完成数以百计或者甚至数以千计的扫描循环。一旦评估条件,如果必需/在适当时采取适当动作,并且主处理器再次能够与动作引擎对应(即,在主处理器的最坏情况响应时间内),主处理器可以向动作引擎的事件表中加载一个或者多个新条件/动作对用于在主处理器可能被其它任务(或者其它调度的过程)预先占据的下一时间段期间评估。在一个方面中,新加载的条件/动作对可以至少部分基于如果有的先前评估的条件和采取的动作。通过此方式,主处理器负责评估在动态环境中的条件并且通过向动作引擎反复地重新分派任务以在任何给定的时间仅评估预计在(例如,与主处理器的响应时间对应的)特定时间段内出现的条件子集来向动作引擎分流显著处理负担。
在动作引擎的前述示例中,应当理解在一个方面中,存储特定条件/动作对的事件表的专用存储器位置在耦合到扫描器的用于评估条件(并且如果满足则提供代表将采取的动作的输出)的数字逻辑电路装置时的组合在功能上等效于如以上讨论的专用于评估单个条件的协处理器。然而取代仅评估单个条件,扫描器的配置允许执行评估的数字逻辑电路装置在事件表的相应存储器位置之中被“共享”(例如,以扫描或者时分复用方式),从而动作引擎的扫描器和事件表的组合实质上构成被配置用于评估多个条件并且在适当时采取动作的协处理器。这样的部件布置有助于硬件资源的高效和节约使用。
在各种方面中,指定在动作引擎的事件表中的相应存储器位置的大小(例如,位数)、在事件表中的专用存储器位置的总数和扫描器本身的配置(例如,扫描器实施的数字逻辑)以便实现用于控制特定动态环境的希望延时,其中该延时具有充分低的上界和/或充分可预测(并且在一些情况下为非实质)的变化。在以下更具体讨论的一个具体实现方式中,基于事件表和扫描器的适当配置的动作引擎实现在每条件/动作对为10纳秒级(例如,基于驱动扫描器的逻辑功能的100MHz时钟)的用于动作引擎的延时;因而例如对于具有分别存储128个条件/动作对的128个存储器位置的事件表,可以实现在近似1.28微秒(128x10纳秒)级的动作引擎延时。这样的延时度量比在常规PLC中观测的数十至数百毫秒的通常延时低若干数量级。
应当理解设想以下更具体讨论的前述概念和附加概念的所有组合(假设这样的概念未互不一致)作为这里公开的发明主题内容的部分。具体地,设想在本公开内容的结束出现的要求保护的主题内容的所有组合作为这里公开的发明主题内容的部分。
附图说明
本领域技术人员将理解附图主要用于示例目的而未旨在于限制这里描述的发明主题内容的范围。附图未必按比例;在一些实例中,可以在附图中夸大或者放大示出这里公开的发明主题内容的各种方面以有助于理解不同特征。在附图中,相似标号一般指代相似特征(例如,功能相似和/或结构相似的单元)。
图1是结合自动化工业过程的常规可编程逻辑控制器(PLC)的典型作用的一般图示。
图2是构成图1的常规PLC的典型电部件/电路装置(例如,“硬件”)的广义化框图。
图3是具体结合处理器单元、存储器和输入/输出接口示出图2中所示常规PLC的内部架构的附加细节的框图。
图4是图示根据本发明的一个实施例的用于监视和控制动态环境的控制系统的框图,其中控制系统包括通信地耦合到包括一个或者多个协处理器的动作引擎的主处理器。
图5是根据本发明的一个实施例的包括多个协处理器的动作引擎的框图,这些协处理器并行操作以监视、同步和/或控制动态环境的至少一个方面。
图6是根据本发明的一个实施例的包括事件表和扫描器的动作引擎的框图,该事件表和该扫描器操作用于监视、同步和/或控制动态环境的至少一个方面。
图7是根据本发明的一个实施例的适合用于在图6的动作引擎中使用的扫描器的框图。
图8是图示根据本发明的一个实施例的在图6的事件表中使用链接的寄存器的示图。
图9是根据本发明的一个实施例的包括多个协处理器的动作引擎的框图,这些协处理器中的每个协处理器包括事件表和扫描器,这些这些协处理器被配置用于做出相应以并行操作从而控制动态环境的至少一个方面。
图10是其中运用机器视觉技术和装备的动态环境以及用于监视和控制该动态环境的根据本发明的一个实施例的控制系统的框图。
具体实施方式
以下是与用于监视和/或控制动态环境的发明系统、方法和装置有关的各种概念以及这些发明系统、方法和装置的实施例的更具体描述。应当理解可以用许多方式中的任何方式实施以上介绍并且以下更具体讨论的各种概念,因为公开的概念不限于任何特定实施方式。提供具体实现方式和应用的示例主要用于示例目的。
图4是图示根据本发明的一个实施例的用于监视和控制动态环境的控制系统100a的框图。再次参照其中示出常规可编程逻辑控制器(PLC)50为监视和控制自动化过程10的图1,在以下更具体讨论的示例实现方式中,同配置图4的控制系统作为图1中所示PLC 50的替换。然而,应当理解图4的控制系统就这一点而言不受限制,并且根据本发明的实施例的各种控制系统及其构成单元可以具有用于监视和/或控制多种动态环境、特别是需要低延时(即显著快速的响应时间)和/或低可变性延时的动态环境的广泛适用性。根据本发明的控制系统的一个示例应用由如以下结合图10更具体讨论的其中运用机器视觉技术和/或装备的动态环境给出。
如图4中所示,这一实施例的控制系统100a包括通信地耦合到动作引擎110a的主处理器190(也被称为“内务CPU”)。动作引擎110a可以包括一个或者多个响应协处理器(在图4中分别指示为协处理器120a-1和协处理器120a-2;共同指示为协处理器120a)。每个协处理器120a包括耦合到协处理器逻辑(分别指示为控制器130a-1和控制器130a-2;共同指示为控制器130a)的输入接口158a和输出接口160a。示例输入接口158a和输出接口160a可以包括但不限于RS232接口、以太网接口、通用串行总线(USB)和/或任何其它适当并行或者串行通信接口。每个协处理器控制器130a通信地耦合到专用存储器(分别指示为存储器140a-1和存储器140a-2;共同指示为存储器140a),该专用存储器存储一个或者多个条件(分别指示为条件142a-1和条件142a-2;共同指示为条件142a)和与在相同存储器140a中存储的条件142a对应的至少一个预定动作(分别指示为动作144a-1和动作144a-2;共同指示为动作144a)。虽然图4中所示动作引擎110a仅包括两个协处理器120a,但是应当理解根据其它实施例的动作引擎就这一点而言不受限制并且可以包括仅一个协处理器或者多于两个协处理器。
在图4中所示控制系统100a的一个方面中,控制系统100a通过使用动作引擎110a以评估在相对快的时间标度上出现的条件并且通过使用内务CPU 190以评估在相对更慢的时间标度上出现的条件来监视、控制和/或同步动态环境。通常,如上文所述,在一些实施例中,内务CPU 190实质上向动作引擎分派任务为“关注”于在内务CPU190在效果上不能自行监视动态环境的某些条件的期间这样做。在一个方面中,在一个方面中,动作引擎110a被具体分派任务为监视某些条件(并且如果必需则响应于这些条件采取动作)的时间段至少部分基于内务CPU 190的“响应时间”(也被称为“延时”)(该响应时间由对内务CPU的用于在给定内务CPU本身需要看管的不同任务或者过程的数目时处理信息的能力施加的限制而产生)。在以下描述的一些示例中,内务CPU向动作引擎委派某些监视和控制任务的时间段基于内务CPU的可以在控制的特定动态环境的境况中预计的最长或者最坏情况响应时间。
鉴于前文,在图4中所示控制系统的一个示例实现方式中,动作引擎110a通过按照从反射式响应、即比内务CPU 190的延时更快执行的响应中受益的条件142a评估代表动态环境的输入信号66来筛选快速出现的事件。示例输入信号66包括但不限于:离散输入、比如数字值(位)、模拟值或者模拟输入的数字表示;离散输入的实时版本;离散输入的锁存版本;离散输入的推导版本、比如从正交钟控的计数器对推导的计数器值;以及从一个或者多个通信端口接收的消息(例如,分组)的解码内容。输入信号66可以代表构成动态环境的条件的单个参数(例如,温度、压力、定位)或者代表动态环境的条件的这样的参数的汇集。
为了实现这一反射式行为,在动作引擎110a中的每个协处理器120a的控制器130a比较输入信号110a与特定条件142a(或者条件142a的集合)。不同于通用处理器,每个协处理器120a仅评估在它的存储器上存储的特定条件142a(或者条件142a的集合),这使协处理器120a能够用低(和可预测)延时操作。如果控制器130a确定输入信号66与特定条件142a匹配,则控制器130a执行对应动作144a。例如对应动作144a的执行可以包括向其它设备和/或系统传输一个或者多个输出信号68。备选地,动作144a可以包括向内务CPU 190传输中断以实施响应。
在相同时间,内务CPU 190通过分析输入信号66和输出信号68来监视动态环境的演变。在某些境况中(例如对于动态环境的缓慢演变),内务CPU 190可以通过传输它自己的输出信号来对特定输入信号66直接做出响应。在其它境况中,内务CPU 190通过向协处理器120a重新分派任务、例如通过更新和/或替换在存储器140a中存储的条件142a和/或(预定)动作144a中的一些或者所有条件和/或动作来直接对动态环境的演变间接做出响应。如果动态环境例如是组装线,则一旦第一零件已经从组装线移开,内务CPU 190可以向原先专用于跟踪第一零件的协处理器120a重新分派任务以代之以跟踪第二零件。
在内务CPU 190与动作引擎110a之间划分责任允许内务CPU 190在动作引擎110a上施加用于由条件142a代表的事件子集(例如,可能在给定动态环境的特定演变时出现的快速出现的事件)的处理负担。在相同时间,内务CPU 190可以继续处理与动态环境的更慢演变关联的条件。这一分而治之方式可以减少系统对输入信号66代表的事件的响应的总延时和/或抖动(延时变化)。在一些情况下,转移用于快速出现的事件的处理负担也可以使整个控制系统100a的延时基本上为协处理器延时的函数。
具有比较器逻辑的动作引擎
图5示出用于监视、同步和/或控制动态环境的至少一个方面的另一示例动作引擎110b。可以与之应用图5中所示系统并且具体为动作引擎110b的这样的环境的示例包括但不限于组装线、检查线、自治或者半自治车辆(或者车辆护送)、功率管理系统(例如,智能电网)、仓库、工业空间、停车设施、机场、航运港口、监控系统、娱乐乘骑和/或通信网络。例如,动作引擎110b可以用于机器控制和/或图像触发。
动作引擎110b包括多个协处理器(在图5中分别指示为协处理器120b-1至协处理器120b-n;共同指示为协处理器120b)。每个协处理器120b是在高速度、即比可以用通用计算机或者CPU、例如内务CPU 190来执行相同操作而实现的速度更高的速度执行有限数目的操作的专用计算机处理器。可以在FPGA、ASIC和/或本领域已知的任何其它适当实现方式来实施示例协处理器120b。
在动作引擎110b中的每个协处理器120b包括耦合到输入总线102的相应输入端口(在图5中分别指示为输入端口158b-1至输入端口158b-n;共同指示为输入端口158),该输入总线可操作地被耦合用于从传感器、执行器、接收队列(例如以太网接收队列)和关于动态环境的信息的其它来源接收数据。虽然图5描绘n个条目,但是本领域技术人员将容易理解示例动作引擎可以具有任何数目的协处理器120b、例如,1、2、4、8、16、32、64、128、256、512或者1024个协处理器120b。
每个协处理器120b包括相应寄存器(在图5中分别指示为寄存器140b-1至寄存器140b-n;共同指示为寄存器140b),该寄存器存储如以下描述的一个或者多个状态或者条件(分别指示为条件142b-1至条件140b-n;共同指示为条件142b)的表示以及协处理器120b将执行的一个或者多个动作(分别指示为动作144b-1至动作144b-n;共同指示为条件144b)的表示。每个条件142b可以独立于动作引擎寄存器140b中的其它条件142b(并且可能与其它条件重叠)。条件142b也可以基于满足动作引擎110b中的一个或者多个其它条件142b——例如它们可以如以下更具体所述被一起逻辑“AND”超集。
可以在任何适当类型的存储器、包括但不限于计算机可读存储介质、比如易失性或者非易失性计算机存储器、闪存、紧致盘、光盘、磁带、一个或者多个软盘、在FPGA或者其它半导体器件中的电路配置或者其它非瞬态介质或者有形计算机存储介质中实施寄存器140b。每个寄存器140b专用于它的相应协处理器120b;也就是说,协处理器120b未共享存储器。使寄存器140b专用于每个协处理器有助于减少或者消除争用问题。
每个协处理器120b也包括比较器(分别指示为比较器130b-1至比较器130b-n;共同指示为比较器130b)或者其它逻辑元件,该比较器或者其它逻辑元件比较经由输入总线102和输入端口158接收的输入信号66与条件142b。由于协处理器120b具有它们自己的比较器130b并且经由输入总线102同时接收输入101,所以协处理器120b可以同时比较输入101与它们的相应条件142b。因此,动作引擎110b中的协处理器120b的数目未影响执行比较的速度。
如果输入信号66与条件142b匹配,则比较器130b发射指示匹配的输出(分别指示为输出132-1至输出132-n;共同指示为输出132)。有可能协处理器120b中的一个、多于一个或者无协处理器120b包括与输入信号66匹配的条件142b。每个协处理器120b可以经由输出端口(分别指示为输出端口160b-1至输出端口160b-n;共同指示为输出端口160b)将它的输出132耦合到输出总线103。
每个协处理器120b也在检测到与它的相应条件142b匹配的输入101时执行在它的相应寄存器140b中存储的动作144b。动作144b耦合到由比较器130b的输出132控制的逻辑元件(分别指示为逻辑元件134-1至逻辑元件134-n;共同指示为逻辑元件134)。在逻辑元件134接收指示在输入101与条件142b之间的匹配的输出132,逻辑元件134执行由动作144b代表的动作。在一些情况下,逻辑元件134可以经由输出端口160b和输出总线104向其它设备、比如传感器、制动器和与动态环境关联的其它设备传输这里示出为输出信号68的附加信息或者指令。示例输出信号68包括但不限于:离散输出、比如数字值、模拟值和/或模拟值的数字表示;离散输出的锁存版本;和/或在经由一个或者多个通信端口(例如,输出端口160b)发送的消息分组中编码的输出数据和机器操作命令。在其它情况下,动作144b可以是其中协处理器120b未执行任何动作的“no-op”指令。
动作引擎110b也经由输入总线102、输出总线104和与寄存器140b的附加连接来耦合到内务CPU 190。(在其它实施例中,动作引擎110b中的一个或者多个寄存器140b可以经由输入端口158和输入总线102可操作地耦合到内务CPU 190。)内务CPU 190执行一般内务任务并且在协处理器寄存器140b中加载和维护条件142b和/或动作144b。例如,内务CPU190可以响应于动作引擎对动态环境的特定状态的标识、操作码过期的指示、来自动作引擎的指令、来自用户和/或其它设备的指等替换或者更新一个或者多个协处理器120b中的条件/动作对。由于动作引擎110b可以对来自动态环境的输入“直接”做出响应而未必需要来自内务CPU 190的资源,内务CPU 190因此保持基本上无与对相继输入状态做出响应有关的任何处理负担(即,内务CPU 190保持基本上“无负荷”);因而内务CPU 190在需要时可用于执行可能让动作引擎110b自行执行而不可能或者实际的测试和动作。此外,内务CPU 190未在用于对动态环境的演变做出响应的关键路径中,因此它未延迟动作引擎的响应。
具有事件表和扫描器的动作引擎
图6示出各种部件的系统配置,这些部件包括用于监视、同步和/或控制动态环境的至少一个方面的示例动作引擎110c。可以与之运用图6中所示系统并且具体为动作引擎110c的这样的环境的示例包括但不限于组装线、检查线、自治或者半自治车辆(或者车辆护送)、功率管理系统(例如,智能电网)、仓库、工业空间、停车设施、机场、航运港口、监控系统、娱乐乘骑和/或通信网络。例如动作引擎110c可以用于机器控制和/或图像触发。
动作引擎110c包括事件表112,该事件表又包括事件表寄存器(共同指示为事件表寄存器140c;分别指示为寄存器140c-1至寄存器140c-5),这些事件寄存器中的每个事件寄存器存储一个或者多个条件(在图6中共同指示为条件142c;在图8中分别指示为条件142c-1至条件142c-5)的表示。每个事件表寄存器140c也存储与在寄存器140c中存储的条件对应的一个或者多个动作(在图6中共同指示为指令144c;在图8中分别指示为指令144c-1至指令144c-5)的表示。事件表112和事件表寄存器140c。可以在任何适当类型的存储器、包括但不限于计算机可读存储介质、比如易失性或者非易失性计算机存储器、闪存、紧致盘、光盘、磁带、一个或者多个软盘、在现场可编程门阵列或者其它半导体器件中的电路配置或者其它非瞬态介质或者有形计算机存储介质中实施事件表112和事件表寄存器140c。
每个事件表寄存器140c存储独立条件142c。总而言之,事件表寄存器140c可以存储代表动态环境的每个可能状态的条件142c,该每个可能状态可以由耦合到输入总线110的传感器140之一测量。然而在许多情况下,事件表寄存器140c可以保持条件142c的可重新编程子集、例如仅保持从比内务CPU 190的延时更快执行的动作144c中受益的那些条件142c。在一些情况下,条件142c可以重叠;例如条件142c-1可以包括温度和压力门限,并且条件142c-2可以包括温度和定位门限。虽然图6仅示出五个事件表寄存器140c用于示例目的,但是应当理解在其它实施例中,事件表112可以具有更多或者更少寄存器140c、例如十个、数以百计或者甚至数以千计的条目。通常,可以在事件表112中表示可能需要一些响应/动作的与特定环境有关的实质上任何数目的条件142c为事件表寄存器140c。
除了条件142c的表示之外,每个事件表寄存器140c也包括如果状态输入与条件144c匹配这将执行的一个或者多个动作144c的表示。因而,如果动作引擎110c的扫描器130c确定输入信号66与在事件表寄存器140c中存储的给定的条件142c匹配,则扫描器130c访问在事件表寄存器140c中存储的对应动作144c并且执行动作144c以便控制动态环境的一个或者多个方面。为此,动作引擎110c也包括输入端口158c、输出端口160c和/或用于向一个或者多个外部设备传达在事件表中访问的指令的一个或者多个其它通信接口(例如,输入/输出总线、以太网端口)以及从这样的信息的一个或者多个来源接收状态输入以及与动态环境相关的其它信息。
如图6中所示,动作引擎10c还包括扫描器130c。输入端口158c提供从事件表112和扫描器130c到输入总线102的连接。图6也图示动作引擎110c的输入总线102耦合到包括(但不限于)CPU 190的多种外部设备以及信号量寄存器150、计数器42、一个或者多个传感器40和形式为接收队列44(例如,以太网接收队列)的通信接口。也连接到输入总线102的扫描器130c包括数字逻辑(在图6中未示出),该数字逻辑比较每个事件表寄存器140c中的条件142c的集合与从内务CPU 190、计数器42、传感器40、接收队列44和/或任何其它适当数据元耦合到输入总线102的输入信号66。在一些情况下,输入信号66可以包括一个或者多个嵌入式应用系统、比如处理器从动态环境推导的数据,该处理器评估来自相机的图像数据、来自机器人控制器的定位信息和/或来自连续过程化学反应器中的混合器或者流量控制系统的流量信息。在一些实现方式中,预调或者预处理原始数据可以减少为了表示数据而需要的位数,这又使得有可能减少寄存器140c的大小。
图7是更具体示出扫描器130c的一个可能实施例的框图。扫描器130c包括耦合到动作逻辑132、定序逻辑133和一个或者多个标志寄存器135的比较器逻辑131。比较器逻辑131相对于来自事件表112的代表条件142c的数据评估输入信号66、包括但不限于计数器42值、传感器40值、状态改变输入和标志状态以确定是否满足条件142c。向动作引擎132传递这一“满足条件”状态。
再次参照图7,扫描器130c也包括动作逻辑132,该动作逻辑与与从事件表112接收代表指令144c的数据一起从比较器逻辑131接收“满足条件”状态。动作逻辑132也耦合到一个或者多个标志寄存器135、信号量寄存器150(图6)、输出寄存器136、通信逻辑(未示出)、计数器和数据输入电路装置。根据“满足条件”状态的状态和代表指令144c的数据,动作逻辑132可以执行如以下更具体描绘的操作,这些操作影响标志寄存器135、信号量寄存器150、耦合到输出端口160b的输出寄存器136、通信逻辑34和数据输入电路装置的状态。此外,动作逻辑132耦合到事件表写入仲裁逻辑134,该事件表写入仲裁逻辑有助于例如在已经执行动作并且将禁止条件/动作对的进一步评估时改变事件表112中的条件142c和/或指令144c。
扫描器130c中的定序逻辑133(图7)同步比较器逻辑131、动作逻辑132和事件表112(图6)的活动。其向事件表112提供读取地址,该读取地址确定将评估事件表112中的哪个寄存器140c。定序逻辑133也在动作引擎110c确定将修改事件表112中的条件142c和/或指令144c时向事件表写入仲裁逻辑134提供写入地址。事件表写入仲裁逻辑134从内务CPU190以及从在扫描器130c内的用于支配向事件表112的写入活动的其它逻辑接收输入。在争用在来自CPU 190的写入操作与来自在扫描器130c内的其它逻辑的写入操作之间出现时,而可以向在扫描器130c内的逻辑给予优先级,从而扫描器操作可以无中断继续。在这一争用情况下,向内务CPU 190确立等待信号,从而中止CPU写入操作直至事件表写入仲裁逻辑134确定事件表112可用于接受来自CPU190的写入数据。在扫描器130c的一个实施例中,定序逻辑133使新条件/动作对在主时钟(未示出)的每个周期上被评估。
在各种方面中,可以在单个协处理器中、例如在使用工作硬件描述语言(HDL)代码的FPGA中实施扫描器130c和事件表112。也可以实施扫描器130c为耦合到其中存储事件表的一个或者多个存储介质的单一数字逻辑结构。备选地,也可以实施扫描器130c为通信地耦合到事件表的多个分布式逻辑部件。例如,在一个实施例中,可以实施扫描器130c为分别专用于一个事件表寄存器140c的多个数字逻辑部件,从而有在事件表条目与用于比较输入信号与在给定的事件表寄存器中的一个或者多个条件并且在适当时访问一个或者多个对应指令的专用数字逻辑之间的一到一对应。在更多其它实施例中,构成扫描器的部分的数字逻辑部件可以专用于或者被指派给多个事件表寄存器的特定组。因而应当理解可以根据本发明的各种实施例以许多方式中的任何方式实施动作引擎的扫描器和构成扫描器的数字逻辑电路。
在一个示例实施例中,动作引擎的扫描器基本上同时(例如,并行)比较状态输入与事件表中的多个条件集合,从而可以用明显高的速度访问(并且又向一个或者多个外部设备传达)用于对状态输入做出响应/做出反应的适当指令。因此,动作引擎关于处理涉及动态环境的相应状态的信息并且响应于该信息采取动作表现显著低的延时。
例如,可以实施扫描器130c为每两个时钟周期处理单个寄存器140c的状态机。在第一时钟周期期间,扫描器130c读取条件142c。如果满足条件142c,则扫描器130c在第二时钟周期期间执行对应动作144c。第二时钟周期可以涉及到向事件表112中的动作的回写以指示已经对于下一扫描完成适当操作。涉及到尤其复杂条件和/或大量输入级的实现方式可以使用多于两个时钟周期以处理单个寄存器。在使用多周期执行的扫描器130c中,可以实施具有并行读取和写入周期的双端口存储器,其中写入周期向在先前读取周期期间处理的寄存器140c回写。(如以下描述的)状态机流水线寄存器结合双端口存储器的并行读取和写入周期将允许每个周期处理新寄存器从而显著减少延时。
再次参照图6,应当理解在动作引擎110c的输入总线102上提供的一个或者多个输入信号66的集合可以从耦合到输入总线102的多种来源(例如,内务CPU 190、计数器42、传感器40等)获得并且可以在给定的时间由单个来源提供或者在给定的时间由多个来源提供。这样的一个或者多个输入信号66的集合可以至少部分代表在给定的时间点的动态环境,并且(例如,扫描器130c)可以比较这些输入信号66与在相应事件表寄存器140c中存储的条件142c的集合中的每个集合。
持续地评估输入信号66以检测状态改变(上升沿或者下降沿)。在事件表112的每个扫描的开始,向扫描器逻辑呈现在先前扫描期间发现的任何输入状态改变作为锁存的输入(未示出)。这意味着穿过输入滤波器的任何信号无论它们的持续时间多么短都将被检测到。因此,可以向扫描器逻辑呈现用于任何输入信号的任何状态改变,即使状态改变的它们的持续时间比扫描的持续时间更短。
在图6中所示动作引擎110c的一个示例实现方式中,如果在输入总线102上提供的输入信号66的集合与用于特定事件表寄存器140c的条件142c匹配,则扫描器130c执行来自该事件表寄存器140c的对应动作144c。在一些情况下,这些动作144c可以包括获取或者释放信号量或者设置或者清除耦合到扫描器130c的标志,该扫描器如以下更具体所述使用信号量或者标志以评估条件142c。扫描器130c又经由输出总线104向动态环境、内务CPU 190和传输队列34(例如,以太网传输队列)传输与匹配的条件集合对应的输出信号68。
备选地或者附加地,扫描器130c可以可操作地耦合到各种外设。例如扫描器130c可以重置或者锁存计数器、锁存输入寄存器、设置或者清除输出寄存器或者向传输队列34中加载条目。在多个扫描器的情况下,可以运用各种处置争用的方式。例如,重置/锁存/设置/清除输入争用可以由OR门处置。传输队列34可以专用于扫描器130c并且具有它自己的用于管理数据的电路过程。扫描器130c可以备选地(可能与其它扫描器130c)共享传输队列34,并且电路过程可以管理队列34的权属。
在一些情况下,向在动作引擎110c外部的一个或者多个设备执行动作144c(例如,经由动作引擎的一个或者多个通信接口)作为数据分组(如在各种分组模式计算机网络中运用的数据分组、比如TCP/IP分组)。在其中运用数据分组以传输涉及动作144c的指令的实现方式中,在一些实施例中,这样的分组的内容可以不仅包括指令本身而且包括在一些实施例中涉及指令、与指令对应的条件集合和/或动态环境的一个或者多个其它方面的附加数据(例如,元数据)。附加数据可以包括但不限于地址信息(例如,以太网介质访问控制(MAC)地址首部)和/或可以由内务CPU 190在事件表寄存器140c中存储的索引引用的位置中填充的净荷缓冲器。
在一些实现方式中,动作引擎110c选择或者生成这样的数据用于包含于分组净荷中(例如,基于监视耦合到输入总线102的各种信息源和/或基于除了事件表112之外还可以在存储器中存储的各种信息)。例如,在满足给定的条件142c时,扫描器130c可以基于在对应寄存器140c中存储的索引选择对应净荷缓冲器、然后向传输队列34复制对应净荷缓冲器。在其它情况下,数据可以包括通过组件或者检查线跟踪的零件的编号。备选地,数据可以包括关于一个或者多个数据元的信息(例如,用作传感器40并且提供图像信息用于评估的相机的位置和/或定向)和/或数据可以与(与在事件表中存储的条件集合比较的)状态输入本身的某个方面关联和/或代表该某个方面。
主处理器(“内务CPU”)-编程和操作
在比如图6中所示运用动作引擎110c和各种其它部件的系统配置的实施例中,内务CPU 190在事件表112a中加载和维护条件142c和指令144c。在一些情况下,内务CPU 190可以响应于动态环境的演变(即,随时间的可变条件)替换事件表112中的条件142c和指令144c中的一些或者所有条件和事件。由于动作引擎110c可以“直接”(例如,自治地而无CPU190的干预)对代表动态环境的条件的输入信号做出响应而未必需要来自内务CPU 190的资源(例如,在委托动作引擎评估额定条件的时间段期间),内务CPU 190因此保持基本上无与评估这些特定条件有关的任何处理负担;因而,内务CPU 190可用于看管其它过程(例如,执行可能让动作引擎110c自行执行而不可能后者实际的测试和动作)。
关于委托动作引擎110c在给定的时间段评估特定条件(或者更通常,向一个或者多个协处理器分派任务为评估一个或者多个条件),在一个实施例中,内务CPU 190被配置用于通过将专用机器协调算法分割成相异(例如,正交)过程步骤来向协处理器分配任务,这些过程步骤通过它们以时间流逝(例如,已知时间段或者未知时间段,该未知时间段可以在给定它以将来外部输入的汇集或者监视的条件的特定序列为条件时出现)为条件来区分。为此并且再次参照图6,内务CPU或者主处理器190包括用于一个或者多个通信接口192和/或接收代表动态环境的(随时间的)条件的输入信号66的一个或者多个输入/输出(I/O)端口以及一个或者多个处理单元194和用于存储处理器可执行指令以及在必需时存储各种程序数据的存储器196,这些程序数据用于处理单元194实施用于控制动作引擎(或者根据各种实施例更一般为一个或者多个协处理器)的过程步骤。
如这里公开的过程步骤可以在满足它们的条件时完全并行和按照任何顺序相互独立执行(例如,由主处理器190的处理单元194执行)(例如,特定条件由主处理器190或者动作引擎110c评估以发起给定的过程步骤)。每个过程步骤可以包括以下各项中的一项或者多项:1)开始一个或者多个过程或者一个或者多个过程的实例;2)停止一个或者多个过程或者一个或者多个过程的实例;3)执行一个或者多个数学变换;4)呈现一个或者多个输出;5)例如在内务处理器190与一个或者多个动作引擎110c、在动作引擎110c之间、向在动态环境中的设备和任何其它指定的目的地传输一个或者多个消息;6)获取或者释放二进制信号量以允许多个过程保障从希望的程序代码段互斥;7)锁存外设、比如输入和计数器的状态;以及8)设置或者清除用于过程间同步和通信的“标志”变量。(标志变量可以是由事件表扫描器具有访问的寄存器外设实施的布尔变量而不是在主处理器的存储器中存储的变量。)
在本发明的一个实施例中,在主处理器190可访问的非易失性、非瞬态计算机可读介质上编码的(例如用SCORETM编程语言编写的)计算机可实施指令描述专属于每个现实应用的机器协调任务(例如,从一个或者多个协处理器/动作引擎生成输出信号以最终控制动态环境中的各种装备)。这些指令使主处理器190可能使用一个或者多个引擎110c和/或一个或者多个协处理器来实施一个或者多个过程或者状态机。每个过程可以由相同系统并行、依次或者二者实施多次。给定的过程的并行执行的副本称为过程的“实例”而每个实例在动作引擎110c或者不同协处理器中按照不同时隙140或者时隙集合执行。
每个过程可以视为状态机而在状态机中的每个状态对应于动态环境的特定条件。过程(状态机)包括执行一次的一次性过程和无中断执行(例如,反复地)的连续过程。可以在完成之前例如响应于来自主处理器190或者其它来源的命令或者在达到计算机可执行指令序列中的预定点时暂停或者终止一次性和连续过程二者。
每个状态机包括由动作引擎/协处理器执行的一个或者多个状态,该一个或者多个状态中的每个状态可以被实施为“等待”语句,在该一个或者多个状态期间,动作引擎/协处理器对于特定条件的出现监视动态环境。在一个显著方面中,计算机可执行指令包括“等待”语句的特定定义,该语句以动态环境的一个或者多个条件作为变元,该一个或者多个条件在被满足时除法执行一个或者多个动作斌七个向主处理器通知已经满足条件。“等待”语句实质上指定将在满足一个或者多个现实条件时执行一个或者多个动作。内务处理器190可以向向动作引擎分流与动作引擎的操作兼容的等待状态条件和关联动作。按照一旦被编译以由处理单元194和主处理器190执行的编程语言,在等待语句之间的指令块由动作引擎/协处理器和/或主处理器190执行直至下一等待语句。例如动作引擎可以在等待语句之后直接执行一个或者多个动作,假设那些动作与协处理器的动作操作码兼容。
在至少一个实现方式中,等待语句使过程的进度停顿直至满足条件子句。这使主处理器190能够通过查询每个过程的当前等待语句条件并且在满足过程的条件时继续它来调度过程。等待语句可以具有格式“wait for<Boolean-expression>”,其中<Boolean-expression>代表动态环境的条件。可以在希望时进行子例程调用以评估语句的条件。例如条件可以涉及到布尔计数器条件的评估。计数器变量按照名称来访问,可选地让关键词计数器在计数器名称之前。可以从初始值、比如在生成零件检测信号时的带(belt)定位进行计数器比较。自动声明的计数器时间也可以用来精确(例如,用微秒精确度)比较持续时间。一些示例包括(井号“#”指示备注):
wait for total>2;
wait for canContinue();#子例程canContinue返回布尔
wait for computeTotal()>99
wait for counter position>=100from detectLocation
wait for time>=l00us from detectTime;#包括“from”关键词
wait for flagA and flagB or booleanC
“from”关键词让开发者对于其中不希望计数器重置的应用无需担心计数器翻转。
等待语句也可以用来通过使用变元“wait for<duration-expression>”来等待特定时间段流逝。可以表达这一时间段为绝对值、比如以毫秒为单位的时间;相对时段、比如另一过程需要的时间段;或者表达为变量的时间。如果表达式涉及到调用子例程或者评估变量值,则仅在第一次处理等待语句时评估那些变量值。一些示例包括:
wait for 1ms;
wait for pauseDuration;#其中变量是type timespan
wait for computeWaitTime();#将调用子例程一次
等待语句也可以用来等待特定输入的上升或者下降沿:“wait for<edge>ofinput<input>”。给定的输入可以是输入索引或者将先前声明的命名的输入。可以在多个输入中的任何输入满足条件时向它们给予边沿。可以在输入的OR列表中混合命名和编索引的输入。多个输入可以由OR关键词或者逗号分离。输入索引始于0。一些示例包括:
wait for rising edge of input 0
wait for falling edge of inputs PartDetect,DisableSwitch
wait for rising edge of input 1,2,3or 4or DisableSwitch
等待语句也可以用来等待一个或者多个输入改变成希望的状态(例如,设置状态或者清除状态):“wait for<state>input(s)<input-list>”。“AND”关键词可以用来指示要求所有输入在希望的状态中以满足条件。相似地,“OR”关键词可以指示如果输入中的任何输入达到希望的状态则满足条件。一些示例包括:
wait for set input 3
wait for set input 3,12and Enable
wait for set inputs 3and 12and Enable
wait for clear inputs inProgress or Abort
等待语句可以用来等待设置或者清除一个或者多个标志:“wait for<state>flag(s)<flag-list>”。这与如以上那样等待设置或者清除一个或者多个输入类似。可以给予多个标志,并且为了可读性而可以用复数形式使用“flag”关键词。标志由声明的标志变量指示。一些示例包括:
wait for set flag goAhead;
wait for set flags doneA,doneB and doneC
wait for set flag finished set or finished clear
wait for cleared flag available[i]
等待语句可以用来等待一个或者多个触发梯激发:“wait for trigger ladder<integer-expression>”。触发梯可以由它的索引指定而触发梯索引始于0。示例包括:
wait for trigger ladder 1
wait for trigger ladders 1or 3
wait for trigger ladders 0,1,2or 3
其它类型的等待语句包括但不限于:
·等待正交编码器计数器减少:“wait for decreasing counter<counter>”。这可以与另一条件、比如零件检测输入的上升沿使用;
·等待正交编码器计数器增加:“wait for increasing counter<counter>”。这也可以与另一条件、比如零件检测输入的上升沿使用;
·等待相同过程中的先前发送语句完成传输“wait for send(sender)tofinish”。例如它可以用来等待以太网SureSyncTM事件传输在过程修改净荷以便避免破坏用于进行中的传输的净荷之前完成;
·等待消息到达协处理器或者动作引擎中的事件分组接收器端口:“wait formessage”。发送设备的设备ID可以在配置时存储于功率中或者在运行时间由主机计算机配置。如果事件发送器相关,则等待语句可以跟随有接通消息端口值的“if-else if”语句。在某些实施例中,等待消息的过程不会等待别的任何信息。这使过程能够连续运行或者等待消息,这又使调度器能够向过程给予接收的消息。然而如果调度器从接收器外设读取消息并且无过程等待消息,则可以丢弃消息。
可以一起组合多个条件,从而必须在完成等待语句之前在相同时间满足所有条件。这可以通过组合等待语句中的“for”子句与“AND”关键词来完成。示例包括:
wait for set flag goAhead and for set input Enabled;
wait for set input Enabled and for counter ticker>100;
在一些实例中,动作引擎/协处理器直至已经完成未完成消息发送才可以执行等待语句。对于与可以在执行消息确认/无确认握手时具有高延时的1×1设备通信,这可能造成毫秒以上的延迟。如果这是不希望的,则分离一次性过程可以用来发送消息从而从过程去除这一延时。
通常,主处理器190向动作引擎110c和/或协处理器委派尽可能多的条件。通常,主处理器190向在动作引擎110c的事件表112中的每个时隙140和/或向每个协处理器指派一个条件。它可以基于指令的初始编译、希望的延时、动作引擎110c和协处理器的能力、条件本身和/或它自己的能力向相应时隙140和/或协处理器指派条件。例如,主处理器190可以基于以下各项中的至少一项确定第一条件子集用于由特定协处理器评估:预计多个条件的第一子集在动态环境中出现的时间段;预计多个条件在动态环境中出现的特定序列;在动态环境中采取的至少一个先前动作;动态环境的当前状态;主处理器的响应时间;以及至少一个协处理器的至少一个属性(例如,工作状态、处理速度、存储器大小、输入信号数目、输入信号类型、输出信号数目和输出信号类型)。在一些示例中,协处理器被配置用于评估数目比可以至少部分基于在动态环境中的所需响应时间定义的最大允许延时的某个固定的最大条件数目更小的条件。
主处理器也可以动态地、例如响应于动态环境的评估、新指令和/或先前存储的指令重新指派条件。通过向动作引擎110c和/或协处理器委派条件,主处理器190可以执行其它处理任务而不是以串行方式监视条件。例如,主处理器可以在第一时间配置给定的协处理器以仅评估第一条件子集并且如果满足第一条件子集则提供代表多个动作中的第一动作的控制信息。以后在第二时间,主处理器重新配置协处理器以仅评估第二条件子集并且如果满足第二条件子集则提供代表另一动作的附加控制信息。在一些情况下,主处理器可以至少部分基于是否满足第一条件子集来确定第二条件子集。在这些情况中的至少一个情况下,主处理器至少部分基于以下各项中的至少一项确定第二条件子集:预计第二条件子集在动态环境中出现的时间段;预计条件在动态环境中出现的特定序列;动态环境的当前状态;在动态环境中采取的至少一个先前动作;以及主处理器的响应时间。主处理器可以至少部分基于处理器的属性中的至少一个属性确定第二条件子集,这些属性包括但不限于:协处理器的工作状态(例如,空闲、活跃等);协处理器处理的输入信号的第一数目;协处理器处理的输入信号的第一类型;协处理器处理的输出信号的第二数目;以及协处理器处理的输出信号的第二类型。
在一个方面中,主处理器190根据来自优化编译器(未示出)的编译的计算机可实施指令确定如何委派条件(并且也可能委派动作)。本领域技术人员容易理解,编译器将用户编写的源代码(例如,在SCORETM编程语言中)变换成可以由主处理器、动作引擎和/或协处理器执行的目标语言、比如对象代码。在执行这一变换时,编译器可以按照在源代码中呈现的顺序编译源代码并且用相似或者粗略地类似的排序产生对象代码。
编译器也可以例如通过沿着连接状态(等待语句/条件)的边沿(动作)从状态到状态来分析通过编译源代码而生成的状态机。在一个示例中,用户例如通过向编译器提供命令行变元来向编译器供应可用动作引擎和/或协处理器的简档。编译器使用这一简档以在编译的对象代码内指明某些条件和某些动作为在可用动作引擎和/或协处理器的能力内。主处理器可以向在编译的对象代码中指明的动作引擎或者协处理器指派这些条件(并且也可能指派动作)。在一些实施例中,编译器在编译时间确定动作引擎/协处理器资源向指明的条件(和动作)的这样的分配,并且这些分配保持静态。
在其它实施例中,主处理器可以用动态方式、例如响应于动态环境的演变或者系统或者部件状态的改变向指明的条件(和动作)分配或者重新分配动作引擎/协处理器资源。在这样的动态环境中,主处理器可以创建和/或维护可用动作引擎/协处理器资源的简档。例如主处理器可以通过轮询可操作地耦合的动作引擎/协处理器设备、通过从可操作地耦合的设备接收状态更新和/或通过经由命令行变元或者任何其它适当接口从用户接收简档来获得关于可用动作引擎/协处理器资源的信息。
主处理器190也可以创建和维护过程(状态机)列表,该列表包括完全或者部分向动作引擎110c委派的过程(状态机)和它为本身保留的过程(状态机)的状态。在操作期间,主处理器190使用这一列表以推进由系统实施的状态机中的每个状态机。例如可以向给定的协处理器分派任务为对于特定条件(例如,零件到达在组装线中的指明的点)监视动态环境。在协处理器确定已经满足条件(例如,零件到达指明的点)时,过程退出等待状态以执行预定动作(例如它指令相机拍摄零件的图片)。协处理器也通过向主处理器190传输通知信号(简称为“通知”)来向主处理器190通知已经满足它的条件。例如,如果动态环境的特定条件与协处理器监视的条件匹配并且向主处理器提供匹配信号作为通知信号,则协处理器可以生成匹配信号。
在从协处理器接收已经满足条件的通知信号(匹配信号)时,主处理器190在它的状态机列表上等待通知的那些状态机,这些状态机包括协处理器实施的状态机。根据状态机,主处理器190可以指出已经满足条件并且允许协处理器继续实施过程,或者它可以暂停协处理器实施的状态机(过程)并且使协处理器实施另一状态机。它也可以使用通知以开始、暂停或者推进系统实施的其它状态机。
概括而言,在一些实施例中,协处理器对于单个处理器评估的等待语句条件可以让与布尔逻辑组合的若干子条件跟随有将在满足作为整体的条件和/或满足子条件时采取的一个或者多个过程步骤;这是委托协调处理器在任何给定的时间对于单个过程实例完成的操作。在满足条件并且完成动作时,协处理器通知主处理器,该主处理器可以对于过程中的下一等待语句重新委托协处理器。
每个语句(条件)可以让至少一个特定动作与它关联。如果可能,则主处理器190也向被指派用于监视特定条件的相同时隙140或者协处理器委派与特定条件关联的动作。在一些实施例中,主处理器190向动作引擎110c和/或协处理器140委托涉及到输入和输出的动作。这些动作可以包括但不限于:发送分组、设置输出、清除输出、添加输出、锁存计数器、设置标志、清除标志、获取信号量、释放信号量和误操作(no-op)。在一些情况下,主处理器190基于被指派用于监视关联条件的时隙140或者协处理器的能力委派动作。它也可以基于关联动作和时隙140或者协处理器的用于执行关联动作的能力向时隙140或者协处理器指派条件。
主处理器190也可以向时隙140或者协处理器委派条件而向本身保留关联动作的执行。例如,主处理器190可以执行与访问存储器中的信息有关的所有动作,这些动作包括但不限于:在存储器中存储信息;从存储器取回信息;递增存储器中的变量;以及涉及到在存储器中存储的数的算术。主处理器190也可以在按照需要或者按照希望的基础上执行其它类型的动作。
以下是适合用于使用这里公开的系统和方法、包括图6中所示系统而实施的过程(状态机)和子过程的若干伪代码示例。井号(#)指示每个示例中的备注。
示例1:一个状态的连续过程
示例1是称为“send_on_edge”的连续过程,在该连续过程中向协处理器分派人为为等待输入i的上升沿(条件)并且在满足条件时向另一设备发送分组(动作)。协处理器也在检测到上升沿时向主处理器通知已经满足它的条件。在这一示例中,一旦协处理器已经发送分组,协处理器在协处理器的存储器中重新加载相同条件和动作操作对。协处理器继续监视输入i的上升沿直至例如主处理器190暂停或者中断协处理器。实施八次(i=0…7)这一过程而每个实例在动作引擎中的分离时隙中或者在对应协处理器上运行。
示例2:两个状态的连续过程
示例2是称为“send_on_pulse”的连续过程,在该连续过程中,协处理器根据动态环境的演变在两个状态之间交替。在第一状态中,协处理器如在示例1中那样等待上升沿在输入i上出现(这是这一过程的第一条件)。一旦协处理器检测到输入,它就如以上那样向另一设备发送分组并且向主处理器通知已经满足第一条件。它也在继续它的第二状态(“waitfor 100ms”)之前执行另一动作——它设置输出i+8。在这一第二状态中,协处理器等待100ms流逝这一第二条件出现。一旦满足这一条件(即100ms已经流逝),协同各处理器执行它的第二动作——清除输出i+8——并且向主处理器通知已经满足第二条件。它然后向第一状态转变回以等待第一条件再次出现。如同示例1中的过程,示例2的过程继续直至它例如由主处理器190暂停或者中断。它也被实施八次(i=0…7),每个实例在动作引擎中的分离时隙对中或者在对应协处理器上运行。
用动作引擎中的至少两个时隙执行示例2,因为它涉及到与一个条件关联的两个动作——满足“rising edge on input i”(条件1)触发“send sender i”(动作1a)和“setoutput i+8”(动作1b)二者。向第一时隙中加载条件1和动作1a,并且向链接到第一时隙的第二时隙中加载动作1b。也向第二时隙加载总是条件“do always”,该条件被实施为“counter[0]>=0”并且无论何时满足条件1都使它执行(对于将时隙“链接”在一起的更具体讨论见下文)。
示例3:具有主处理器动作的连续过程
示例3是标题为“send_sequence”的另一连续过程,在该连续过程中,协处理器监视条件并且协处理器和主处理器各自响应于检测到条件来执行动作。在这一情况下,过程始于声明名称为“sequence”的静态变量(“static unsigned integer sequence”)和随着每个事件分组而用完的16字节净荷p。一旦已经初始化这些,主处理器将净荷中的字“p.dword”设置成“sequence”变量的值。协处理器然后进入等待状态,在该等待状态中,它对于在输入i上的上升沿监视动态环境。在它检测到上升沿时,它向主处理器通知已经满足它的条件并且发送净荷,这可以触发接收净荷的相机或者其它设备。
在接收已经满足条件的通知时,主处理器递增变量“sequence”。主处理器执行这一动作,因为变量涉及到访问存储器中的信息,这经常超出动作引擎或者协处理器的能力。主处理器也将状态机推进至它的下一状态,在该状态中,协处理器等待发送器完成它的动作。如果协处理器检测到满足这一条件,则它执行对应动作。在这一情况下,对应动作为“无操作”或者“no-op”,因此代码未包括具体命令。协处理器也向主处理器通知已经满足条件,并且主处理器响应于通知将状态机推进至它的下一状态(这里为回到“wait for risingedge of input i”状态)。如同在示例1和2中的过程,示例3过程运行直至它被暂停或者中断并且在八个分离实例中被实施。
在示例3中,条件2(“wait for sender to finish”)旨在于防止过程语句改写净荷缓冲器(在示例3中为p)直至完成发送,这在非确定性的时间段中由于网络争用和通信协议延时变化而发生。这是因为协处理器可能不能在使用发送动作时获得对希望的物理网络资源的访问。有用于应对访问问题的若干可能方式,这些方式包括但不限于:(a)添加用于保存净荷和端口号用于在处理之前存储的队列;(b)保持向主处理器的通知直至已经完成发送;以及(c)向主处理器添加发送已经完成的另一通知并且向主处理器立即通知条件满足和动作完成。选项(a)可能由于FPGA资源限制而在现场可编程门阵列(FPGA)实现方式中不是最优的。选项(b)可能引入额外延迟,因为发送完成可能由于在事件消息协议中与非实时对等体(例如,运行MS的主机计算机)的缓慢握手速度而花费上至1ms。选项(c)允许主处理器在等待语句之后立即运行非协处理器兼容动作、但是防止主处理器修改事件表时隙直至发送已经完成。在一些实现方式中,每个等待语句具有隐式“wait forsend to finish”,因为直至已经完成在等待语句前面的所有发送语句才可以改写时隙。
在包括以下示例4中所示情况的一些情况下,主处理器评估“流量控制语句”、比如“if”语句以确定如何推进状态机。例如评估可以产生使主处理器将一个或者多个状态机推进至特定第一状态的第一结果或者使主处理器将一个或者多个状态机推进至特定第二状态的第二结果。流量控制语句也可以用来判决中断、停顿或者暂停进行中的过程并且启动其它过程。
示例4:流量控制语句
示例4是包括流量控制语句的子过程。示例4的子过程包括四个状态,这些状态中的每个状态由“wait”语句和现实环境的特定条件指、例如是比从零件的当前位置的预定值更大或者相等的零件定位计数器(“counter partPosition>=rejectDistance fromposition”)。如同在示例1至示例3中,那样动作引擎或者协处理器评估每个条件并且如果满足条件则通知主处理器并且执行适当动作、比如no-op、清除输出或者设置输出。主处理器响应于通知来推进状态机器并且可选地动作。
在示例4中,主处理器通过评估流量语句(“if votes<2OR input DoReject isset”)来控制状态机的流量,该流量语句涉及零件是否已经通过在两个不同检查站的检查。在整个过程的另一部分(以上未列举)中,检查站对零件的质量“投票”,并且主处理器响应于检查站的输出来递增变量“votes”。在相同时间,协处理器监视零件的定位。如果协处理器感测到零件已经到达特定定位,则它通知主处理器,该主处理器响应于通知来评估流量控制语句。如果主处理器确定零件已经检查失败(例如,由于“votes”变量小于2或者设置“DoReject”输入),则主处理器递增故障计数(“failure_count”)并且通过设置“reject”输出来使或者允许协处理器拒绝零件。状态机然后推进至如下状态,在该状态中,协处理器等待计数器时间等于或者超过指定的时间段(“rejectDuration”)。如果零件尚未检查失败,则主处理器将状态机推进至如下状态,在该状态中,协处理器等待零件定位计数器等于或者超过另一变量(“acceptDistance”)。
示例3和示例4也图示使用声明语句以设置变量并且配置外围设备、例如,相机等。声明可以用来设置在主处理器的存储器中存储的变量、比如示例3中的“sequence”变量或者示例4中的(隐式地)声明的“rejectDistance”和“position”变量。它们也可以设置计数器值、比如示例4中的“partPosition”计数器,该计数器被声明为输入0和1上的正交计数器“partPosition”。它也可以被声明为输入2的上升沿上的脉冲计数器“partPosition”。
其它声明可以设置包括输入和输出变量的外设变量。输入可以被声明为具有脉冲滤波器。输出可以被声明为具有脉冲宽度和极性反转。计数器和其它外设变量声明获得编译成由主处理器执行的指令,该主处理器加载外围设备的配置寄存器。当在程序中使用计数器时,事件表条件和动作访问编译器分配的计数器。
示例5:设置过程
示例5是设置过程,主处理器使用该设置过程以向哦引擎/协处理器分派任务为特定过程的不同实例。不同于示例1-4中的过程,示例5过程未涉及到任何条件。取而代之,它是创建另一过程(这里为来自图3的“send_on_sequence”过程)的八个实例的简单一次性过程。这些实例中的每个实例在动作引擎中的对应时隙上或者在分离协处理器上运行。
在各种实施例中,可以在内务CPU 190上执行任何语言语句(计算机可实施指令),但是更大或者更小语言语句集合也可以由这里描述的一个或者多个动作引擎执行。可以在内务CPU 190上运行不能在本发明的一个具体实施例的动作引擎上执行的任何语句。通常,可以在一个具体实施例的动作引擎上运行的任何语句可以由内务CPU 190向动作引擎分配。语句或者语句组可以在它们的执行之前的任何时间被取消。
在一个实施例中,计算机可实施指令允许可以同时运行在适当计算机语言(例如,SCORETM)中描述的任何过程并且也可以同时运行给定的过程的多个实例。在一个方面中,将语言编译成以上更具体描述的条件/动作对;在示例实现方式中,将这样的条件/动作对汇编成可以在高和固定速率扫描的事件表(例如,如以上结合图6的事件表112和动作引擎110c讨论的那样)。也可以如以下更具体所述链接条件/动作对。
参照图6,在一个实施例中,内务CPU 190可以向动作引擎110c的事件表112添加和去除条目而未影响或者中断动作引擎110c的操作。如果由于内务CPU字大小(该内务CPU字大小可以例如是32位)小于事件表寄存器140c的宽度(该宽度可以例如是64位)而必需,则可以部分通过先将输入条件写入成零、然后其次写入动作来写入给定的寄存器140c。当前未使用的寄存器140c可以具有零第一字,该字指示从来不能满足的“未使用”条件操作。扫描器130c不会在它的扫描中考虑具有“未使用”条件的任何事件表条件142c,因此不会在内务CPU 190完成写入部分写入的事件表寄存器140c之前执行行在部分地写入的事件表寄存器140c中的指令144c。
在另一方面中,内务CPU 190可以向动作引擎110c分配的任何语句或者链接的寄存器140c组将完全或者完全未运行。具体地,通过从第一到最后(相对于扫描方向)用零、然后从最后到第一(同样相对于扫描方向)用新条件142c和动作144c向连续事件表寄存器140c写入链接的组,除非处理所有条件/动作对才会处理它们(例如,由动作引擎110c的扫描器130c处理),即使扫描器130c在内务CPU 190写入链接的组之时多次通过对应存储器段的地址;扫描器的规则使得它不会执行在链接的组中的事件表寄存器140c的动作,即使满足该事件表寄存器自己的输入条件,除非也满足上至并且包括链位未被设置的下一先前事件表寄存器140c的所有先前事件表寄存器140c的所有输入条件。由于在设置成零的事件表寄存器140c段中写入每个新事件表寄存器140c,所以在先事件表寄存器140c不会具有有效输入条件,因此它和刚才写入的事件表寄存器140c都不会被执行。
相似地,通过从第一到最后清除链接的事件表寄存器140c的集合(例如,通过向寄存器140c填充全零或者全一),并且对于每个事件表寄存器140c通过先清除用于每个事件表寄存器140c的输入条件来开始,在与扫描器130c对事件表寄存器140c进行寻址的速率相等或者更慢的速率,内务CPU 190可以对于尚未以将执行链接的事件表寄存器140c的整个集合或者不会执行任何事件表寄存器140c这样的方式向特定协处理器/动作引擎分配的过程步骤替换或者甚至清除寄存器140c的链。
用于对主处理器190进行变成从而高效地编译程序语言以提供可执行代码(例如,用于处理单元194和主处理器190)并且所得过程由主处理器190实施用于更新动作引擎110c的事件表112(或者更一般地“对”一个或者多个协处理器“进行编程”以评估特定条件)的前述技术产生若干独特优点优点。这一方法产生可以在任何通用处理器(有或者无一个或者多个动作引擎或者其它协处理器)上很快运行的仅为紧凑的代码集。然而,在结合图6中所示动作引擎110c并且具体结合扫描器130c运用时,这些技术即使在动态环境中的条件演变将要求代码执行分支和/或为常规系统进行和/或取消函数调用时仍然产生完全确定性的操作。事实上,可以进行这些转变而未重新布置动作引擎110c中的存储器指针,因为以上描述的发明技术允许多个例程(例如,事件表寄存器140c的链)运行至完成而未向(主处理器190中的)调用过程发回信号。无任何回路或者跳转的指令集的简化保持协处理器/动作引擎程序空间的运行时间有确定性。
也指出内务CPU 190无需专用于对于动作引擎的内务。内务可以由通用操作系统、比如Linux或者Windows上的过程和/或设备驱动器完成。动作引擎可以与计数器、数字和/或模拟I/O接口等一起在外围卡(比如PCI)上从而允许通用计算机在与这里描述的动作引擎串接工作时实现与专用嵌入式计算机相同的事件处置精确度。也可以在一个或者多个现场可编程门阵列(FPGA)中或者作为其它适当处理器的汇集实施动作引擎和/或分离协处理器。
流水线化、延时和抖动
在图6中所示动作引擎110c的一个示例实现方式中,扫描器130c被配置用于实施“流水线化”技术以进行输入信号66与条件142c的比较。本领域技术人员容易理解,“流水线化”是一种通过将计算拆分成被连接形成计算“流水线”的系列级来增加吞吐量的计算技术。流水线的每级与其它级并行执行计算的它的部分(例如,比较输入信号66与条件142c的集合),这很像组装线上的工人。流水线化加速扫描器130c的动作,从而无论比较输入信号66与给定的条件142c可能需要多久,在每个寄存器140c上花费的时间限于一个时钟周期。
关于计算动作引擎的“延时”、即为了比较动态环境在给定的时间的特定输入状态与在事件表中包含的多个条件集合并且响应于输入状态传输一个或者多个指令而需要的时间段,在一些示例实施例中,可以考虑动作引擎110c实施的流水线化技术来推导这样的延时。例如动作引擎110c比较输入信号66和/或发现的状态改变(见以上段落89)与条件142c的特定集合并且作为响应传输一个或者多个指令而需要的时间等于扫描器130到达对应事件表寄存器140c而需要的时间加上依赖于流水线中的级数的经过流水线的传播时间。对于具有128个寄存器140c的事件表112和具有三级流水线的在100MHz钟控的扫描器130,从输入到输出的最长可能时间为1.31μs,这对应于在遍历事件表112的扫描的恰好开始就出现、但是直至遍历事件表112的扫描的恰好结束加上经过流水线的0.03μs传播时间(即,三个时钟周期)才使用的条件142c。从输入到输出的最短可能时间为0.030μs。因此,动作引擎110c用延时或者时间延迟比较输入信号66和/或发现的状态改变与条件142c的集合,该延时或者时间延迟由事件表112中的寄存器140c的数目、流水线中的级数和时钟频率界定。
使用事件表寄存器140c以很快评估少量条件142c的附加优点是延时变化很小。可以定义抖动为在最长延时与最短延时之间的差值。对于评估单个条件142c的事件表寄存器142c,延时变化最小并且根据如何传输传入和传出数据可以近似为零。在以上示例中,最长可能延时为1.31μs,并且最短可能延时约为0.3μs,这对应于1.28μs或者一个扫描时间的抖动。(应用输入滤波器、发现输入状态改变或者经由以太网分组接收和传输数据可能引入与动作引擎110c独立的可变延迟。)
低抖动在如下应用——例如触发图像——中尤其有用,在这些应用中,只要延时完全可重复,长的响应延迟就理想地可接受,并且在这些应用中,如果个别延时高度地可变,则甚至短得多的最大延时仍然不可接受。例如,在机器视觉应用中,减少抖动使得有可能减少传感器视野,这又允许兴趣景物的更高分辨率图像。考虑如下情形,在该情形中,用于对快速移动零件进行成像的时间窗约为10μs,但是抖动如它将与PLC那样比100μs大得多。捕获零件的图像需要通过增加视野以适当在零件本身的大小的十一倍以上来扩展时间窗以明显大于110μs,这又按照多于十的倍率减少在专用于对零件进行成像的传感器上的像素数目。对照而言,具有约为2.5μs的抖动的动作引擎110c可以用来用专用于对零件本身进行成像的传感器的有效面积的约80%获取相同零件的图像。
条件/动作对存储器结构和执行
本发明的实施例可以包括用于存储一个或者多个“条件/动作对”的特定存储器结构。例如,在图6中所示动作引擎110c中,事件表112以多个寄存器140c的形式提供专用存储器,这些寄存器中的每个寄存器存储条件/动作对为特定位序列(在图6中一般由条件142c和动作或者“指令”144c代表)。通常,一个或者多个寄存器140c可以包括多个相邻存储器寄存器,这些存储器寄存器被布置为代表将评估的条件的第一数目的位和代表如果满足条件则将采取的动作的第二数目的位。通常,各种实施例、比如图5和6中所示实施例可以包括形式为一个或者多个寄存器(例如,图5中的寄存器140b;图6中的寄存器140c)的存储器结构,该一个或者多个寄存器保持相应条件/动作对为给定的寄存器中的某个位布置。
应当理解在一些实例中,与满足的特定条件对应的给定的动作可以是未采取动作,该动作涉及动态环境中的一个或者多个设备的控制。换言之,用于给定的条件/动作对的一个可能动作是在动态环境中未采取肯定动作,这里也被称为“no-op”。在no-op的一些实例中,如下文具体所述,动作引擎如果评估的特定条件被满足则却可以通知主处理器和/或继续评估如在事件表的后续寄存器中指定的一个或者多个其它条件。
也应当理解可以根据这里公开的各种实施例以多种方式实施“条件/动作对”的概念。例如,在一些实现方式中,代表特定条件/动作对的条件部分的存储器内容可以包括在给定的寄存器内的某个数目的相邻位和/或可以包括在给定的寄存器中分散的某个数目的位而居间寄存器内容未必涉及条件部分。相似地,代表特定条件/动作对的动作部分的存储器内容可以包括在给定的寄存器内的某个数目的相邻位和/或可以包括在给定的寄存器中分散的某个数目的位而居间寄存器内容未必涉及动作部分。因而,根据这里公开的发明概念设想在给定的存储器位置/寄存器内的代表给定的条件/动作对的广泛多种内容组织。
在以下具体讨论的一个示例中,用于包含条件/动作对的存储器结构可以包括64位字大小的寄存器(例如,该寄存器可以在单个时钟周期中被访问和读取),该寄存器的某个数目的位代表或者涉及将评估的条件142c,并且该寄存器的另一数目的位代表或者涉及如果满足条件则将采取的动作144c。在一个非限制示例中,将64位寄存器分割成三个部分,并且在这些三个不同部分中将条件142c和动作144c分别编码为:1)16位无符号寄存器代表的“操作码”;2)16位“动作参数”;以及3)32位“条件操作数”,其中在动作参数和条件操作数中包含的信息可以有助于实施在操作码中的操作。下表1举例说明这样的64位寄存器的一般格式,其中在48-63位中代表操作码部分,在位32-47中代表动作参数,并且在位0-31中代表条件操作数。
表1:条件/动作对的示例编码
63-48 | 47-32 | 31-0 |
Op-code | Action Parameter | Condition Operand |
Op-code:操作码
Action Parameter:动作参数
Condition Operand:条件操作数
关于表1中所示64位寄存器的操作码部分,下表2提供用于16位操作码的不同字段的示例格式:
表2:条件/动作操作码的示例编码
在以上示例中,操作码的四个最高有效位(位15-12,在表2中分别标注为“F”、“E”、“D”和“C”)指定用于将评估的条件142c的条件类型代码(标注为“OP”)。四个次最高有效位(位11-8,在表2中分别标注为“B”、“A”、“9”和“8”)代表用于动作144c的动作操作数(标注为“ACT”)。操作码的其余位包括链位C、XOR位X、通知位N、满足位S、最后条件位L和一个或者多个计数器值CTR,以下更具体轮流描述这些位中的每个位。
在当前示例中,再次参照表1,在64位寄存器的位0-31中的32位“条件操作数”可以与在操作码的OP字段中指定的条件类型代码一起用来确定是否已经满足特定条件。此外,在64位寄存器的位32-47中的16位“动作参数”可以与在操作码的ACT字段中指定的动作操作数一起用来指定如果满足特定条件则将采取的对应动作。另外,操作码字段C(连)、X(XOR)和CTR(计数器)可以被运用于评估特定条件,并且操作码字段N(通知)、S(满足)和L(最后条件)可以被用于指定对应动作。因此,如下文具体所述,表1中所示64位寄存器的第一位/字段集合、即OP、C、X、CTR和“条件操作数”可以共同地定义在64位寄存器中代表的条件/动作对的条件142c;相似地,64位寄存器的第二位置/字段集合、即ACT、N、S、L和“动作参数”可以共同地定义在64位寄存器中代表的条件/动作对的动作144c。
更具体地,表2中所示操作码的条件类型代码OP指定将监视的条件类型、将监视的一个或者多个输入信号和/或满足条件的任何监视的输入信号的状态。对于一些条件类型代码OP,条件的满足至少部分依赖于在64位寄存器的位0-31中代表的32位“条件操作数”的一个或者多个值(参照上表1)。可以在操作码的OP字段中存在的示例条件类型代码包括但不限于:
0-未使用寄存器
1-在计数器#CTR小于或者等于操作数时的动作
2-在计数器#CTR大于或者等于操作数时的动作
3-在操作数[0..15]中设置的任何输入上检测到上升沿时的动作
4-在操作数[0..15]中设置的任何输入上检测到下降沿时的动作
5-在触发梯在操作数[0..15]中设置的任何剃上激发时的动作
6-在高信号在操作数[0..15]中设置的任何输入上存在时的动作
7-在低信号在操作数[0..15]中设置的任何输入上存在时的动作
8-在高信号在操作数[0..15]中设置的所有输入上存在时的动作
9-在低信号在操作数[0..15]中设置的所有输入上存在时的动作
10-在设置状态在操作数[0..31]中设置的任何标志上存在时的动作
11-在清除状态在操作数[0..31]中设置的任何标志上存在时的动作
12-在设置状态在操作数[0..31]中设置的所有标志上存在时的动作
13-在清除状态在操作数[0..31]中设置的所有标志上存在时的动作
14-在计数器#方向(条件[bit 0]:1->inc,0->dec)时的动作
15-未定义
可以使用以下讨论的X位来定义在操作码的OP字段中指定的附加条件类型代码(例如,可以使用X位来重新定义以上条件类型代码3-15)。在这一非限制示例中,CTR位用于条件类型代码1、2和14;在其它示例中,CTR位可以在非零时用来重新定义其它条件类型代码。
上表2中所示操作码的动作操作数ACT指定将在满足条件类型代码和条件操作数(并且在以下情况下64位寄存器的其它字段)指定的条件时采取的对应动作。对于一些动作操作数ACT,将采取的动作至少部分依赖于在64位寄存器的位32-47中代表的16位“动作参数”的一个或者多个值(参照上表1)。可以在操作码的ACT字段中存在的示例动作操作数代码包括但不限于:
0-No-op–无操作(例如,如果设置N则提出中断完成)
1-队列消息传输
将动作参数解释为在位0-3中的描述符#、在位5中的在消息确认时通知内务CPU的标志、在位12-6中的净荷索引。
2-设置输出:在动作参数中设置的位指示输出是设置。
3-清除输出:在动作参数中设置的位指示输出是清除。
4-锁存数据输入。(无动作参数)
5-锁存计数器值:在动作参数中设置的位指示计数器将被锁存。
6-零计数器:在动作参数中设置的位指示计数器将被归零。.
7-设置标志MSW:在动作参数中设置的位指示标志将被设置。
8-设置标志LSW:在动作参数中设置的位指标志将被设置。
9-清除标志MSW:在动作参数中设置的位指示标志将被清除。
10-清除标志LSW:在动作参数中设置的位指示标志将被清除。
11-得到信号量:在动作参数中给予信号量索引。
12-释放信号量:在动作参数中给予信号量索引。
13-15-保留。
动作15可以是扩展动作而动作参数的某个数目的位用来指示动作、减少数目的位用来指示动作操作数。
结合以上指定的动作操作数中的一些动作操作数使用的16位动作参数可以包括但不限于:描述符#(例如,位0-3)、通知ack(例如,位4)、通知exh(例如,位5)、净荷#(例如,位6-12)或者位字段(例如,位13-15)。
如以上所述,在代表条件/动作对的64位寄存器的位48-63中包含的16位操作码的其它位可以包括来自先前寄存器的链位C。如果设置链位C,则在先前事件表寄存器140c中的条件142c必须在可以考虑事件表寄存器140c中的条件142c之前为真。它们也可以包括:实施阴影寄存器的XOR位X,从而比较无需应对上溢或者下溢;在设置成1时在满足输入条件时使完成消息向内务CPU 190转发的通知位N;以及在满足条件142c时设置的满足位S。
其它位也可以包括用来在满足条件142c时使扫描器将条件操作数OP重置成零的最后条件位L。换言之,最后条件位L防止来自事件表112的下一扫描重新满足条件。在将满足多个条件142c(例如,如以下所述使用链位C)时,在将执行动作144c时,以前寄存器不会让L位设置成使得可以重新评估操作。与do-always条件链接在一起的事件表寄存器可以让最后位被设置成以防止动作重新发生。
可以使用SCORETM编程语言对动作引擎110c进行编程。具体地,如上文所述,可以根据本发明的一个实施例经由发明编程语言对内务CPU(主处理器)190进行编程,该编程语言在编译时使主处理器能够轮流提供指令以用条件/动作对的形式向动作引擎分派任务。以下给出SCORETM语句和所得事件表设置的示例。格式化SCORETM语句,从而每个SCORETM代码行与单个条件/动作对匹配:
用于监视更复杂条件的链位
在一些情况下,图6中所示事件表112的寄存器140c可能未宽到足以描述更复杂条件/动作对。在这样的情况下,动作引擎110c、事件表112和扫描器130c可以被配置用于使用链位(在图6中表示为“C”)来评估更复杂化的输入条件集合(例如,多个条件,在满足这些条件时断言一个或者多个动作)。每个链位在逻辑上是条件142c的对应集合的部分,因为它包括满足在先前事件表寄存器140c中代表的特定条件142c。在效果上,链位可以用来通过链接一组连续事件表寄存器140c以形成单个“超寄存器”用于定义输入条件组来增加单个事件表寄存器140c的有效(和有限)大小,必须满足所有这些输入条件组以便采取在这一链接的事件表条目组中描述的动作。将事件表寄存器140c的连续块链接在一起在逻辑上将链接的寄存器140c“AND”在一起、即它通过发出特定指令集(可能按照预定顺序)来使它们对输入信号66的特定组合做出反应。
图8图示链接的事件表寄存器140c如何标识已经链接在一起的一组条件142c并且对该组条件做出反应。(为了简化,图8仅示出用于每个寄存器140c的条件142c和输出144c的集合。)每个事件表寄存器140c对传感器输入A-C和当前计数器值CT(在图8中未示出)以及标志寄存器值和在链接的事件表寄存器的集合中更早的信号量请求是否成功的不同组合做出反应、按照约定,在链接的组140c-1中的第一事件表条目不会让它的链位被设置。在这一示例中,事件表寄存器140c-2至140c-4都让链位C设置成1。事件表寄存器140c-5具有低链位C、因此与事件表寄存器140c-1至140c-4独立地操作。
链接的寄存器140c-1和140c-2各自包括相应条件142c-1和142c-2以及无操作(no-op)动作144c-1和144c-2、继而为“关键寄存器”——这里为具有“有用”条件142c-3和除了no-op之外的动作144c-3的单个寄存器140c-3。这样的“关键寄存器”可以并且在这一情况下跟随有另一寄存器140c-4,该另一寄存器具有也应当在满足链接的组的输入条件时采取的附加动作。为了保证在执行关键条目的有用动作时也立即采取有用动作144c-4,将输入条件142c-4设置成同义反复地为真的条件、即counter[0]>=0(no XOR)。这不会引起过早执行在这一事件表条目中的动作,因为作为链接的一组事件表条目的部分,也必须满足在这一链接的组中的所有先前输入条件。在寄存器140c-2中设置最后条件位L,该意味着必须在关键寄存器140c-3上设置满足位S之前在单个表扫描中满足寄存器140c-1和140c-2。一旦在关键寄存器140c-3上设置满足位S,先前寄存器140c-1和140c-2的状态无关紧要,因为将在每个扫描时重试关键寄存器140c-4中的动作144c-4(假设它是信号量或者发送动作,因为所有其它动作在第一尝试时完成)。在链中的在关键寄存器144c-3之后的寄存器140c-4将让最后条件位L被设置从而指示满足位S可以由扫描器130c设置。
用于跟踪动态环境的演变的信号量
图6中所示动作引擎110c也可以响应于现实系统的演变来发出系列指令。对于比最大CPU响应时间(例如,10μs至1000μs)更慢出现的演变,扫描器130c可以向内务CPU 190报告匹配(满足的条件),该内务CPU如以上所述通过发出指令和/或更新事件表寄存器140c中的一个或者多个事件表寄存器来做出响应。对于更快演变(即,可以比最大CPU响应时间更快出现的演变),动作引擎110c可以使用一个或者多个信号量以使条件142c相互连续和/或防止在相应条件142c至少部分被相同输入信号66满足的不同寄存器140c之间的争用(冲突)而无内务CPU 190的干预。通常,信号量有助于管理资源争用并且可以由动作引擎获取和释放以保证一个或者多个条件的评估依赖于的一个或者多个资源可用。
在一些实例中,在链接的一组事件表寄存器140c中的事件表寄存器140c-1可以尝试获取信号量的汇集中的信号量,这些信号量由扫描器管理、但是通常将响应于在以后事件表条目中的信号量释放动作而由扫描器释放或者可以由内务CPU 190单边释放。与它们的其它输入条件一起,信号量的成功获取将自动是用于执行在这样的链接的事件表寄存器汇集中存在的任何后续响应动作的必需条件。
在示例实施例中,信号量处置是基于测试和设置操作。信号量可以视为R/S触发器。设置操作涉及到与钟控R/S触发器的S输入同时读取触发器的输出Q。如果先前未设置信号量(R/S触发器的输出的同时读取的结果为逻辑低),则设置操作视为完成。如果先前设置信号量,则设置操作未视为成功并且不会采取依赖于设置的成功信号量的动作。不同于其它动作,信号量取得动作使在这一链中的任何后续寄存器140c被忽略直至信号量取得成功(在将来扫描时)。通过钟控向触发器的R输入来实现信号量的释放。这些信号量的仲裁版本可以用来协调多个事件表扫描器130c的操作(如关于图9所述)。例如,具有多个扫描器130c的动作引擎可以使用简单轮循仲裁方案。
为了了解事件表112如何使用信号量,考虑参加设置钟控的输出(在输出0上的时钟、在输出1-7上的数据)的三个并行过程:(a)负责等待触发事件、获取信号量、设置时钟输出为低、设置1-7上的输出值以及启用第二和第三过程的第一过程;(b)包括等待设置时间、设置时钟输出为高和启用第三过程的第二过程;以及(c)包括等待组合的设置和保持时间、释放信号量以及通知内务CPU 190的第三过程。三个过程中的每个过程由在事件表112中的一组链接的寄存器140c代表。(信号量可以由任何过程使用,该过程想要操控输出0-7、counter[1]和flag[0]从而允许这些过程在事件表12上的多个集合发送钟控的输出而未相互干扰。)还假设计数器counter[1]已经被设置用于对微秒刻度进行计数并且用于对输出信号进行定时。在这一示例中,设置和保持时间在输出信号上均为1ms。
作为开始,第一过程获取信号量。一旦它已经获取信号量,它清除输出0和2-7、设置输出1、重置被配置用于对时基脉冲、在这一情况下为1MHz时基进行计数的计数器(counter[1])并且使用链接在一起的系列五个寄存器来设置标志(flag[0])。可以使用以下SCORETM语句(具有备注)和条件/动作对(如以上那样并且在十六进制格式中编码)来表达第一过程:
第二过程一旦设置标志就开始。它然后在给定的计数器值设置输出。用于第二过程的对应SCORETM语句(具有备注)和条件/动作对(如以上那样并且在十六进制格式中编码)是:
第三过程一旦设置标志就开始。一旦给定的计数器达到第二值,它就清除第一标志并且释放信号量。用于第二过程的对应SCORETM语句(具有备注)和条件/动作对(如以上那样并且在十六进制格式中编码)是:
注意仅一个标志用来启用第二过程(b)和第三过程(c),因为第三过程(c)等待计数器流逝组合的设置和保持时间。信号量保护计数器和标志的使用,从而所有过程组可以使用相同计数器和标志。
备选地,可以编写这些三个分离、并行运行的过程为单个SCORETM语句,因为设置和保持时间的定时要求为1ms,这多于用于内务CPU 190动作的时间:
内务CPU 190可以在完成时用单寄存器链替换第一个四寄存器链。在该第二链完成时,将写入另一单个链条目以执行第三等待和信号量释放。
具有多个事件表/扫描器协处理器的动作引擎
图9示出动作引擎110c,该动作引擎包括经由输入端口(分别指示为输入端口158c-1至输入端口158c-n;共同指示为输入端口158c)耦合到输入总线102的多个并行协处理器(分别指示为协处理器120c-1至协处理器120c-n;共同指示为协处理器120c)。每个协处理器120c包括耦合到相应扫描器(分别为扫描器130c-1至扫描器130c-n;共同指示为扫描器130c)的相应事件表(分别为事件表110c-1至事件表110c-n;共同指示为事件表110c)。如以上那样,每个事件表112包括多个条目,这些条目中的每个条目代表独立条件和对应动作的一个或者多个集合。
协处理器120c并行操作以用很低延时、例如约为1.6μs或者更少的延时执行在事件表110c中存储的条件/动作对。在并行执行期间,每个扫描器130c如关于图6至图8所述比较事件表112中的条件与经由输入总线102和输入端口158c接收的输入信号66并且在匹配的情况下执行指令。如果适当,则扫描器130c经由相应输出端口(分别指示为输出端口160c-1至160c-n;共同指示为输出端口160c)向输出总线102传输输出信号68。动作引擎110c也可以包括如以上关于图6描述的计数器、标志寄存器和/或信号量寄存器。
可以在具有大到足以保持144c操作码或者“条件/动作”对的存储器的单个FPGA(例如,使用HDL代码)上实施以上描述的动作引擎的示例为单个事件表扫描器。扫描器通过依次评估条件来执行事件表。在扫描器发现满足的条件链时,它执行动作并且通知可以在相同FPGA上实施的主控CPU关于事件表中的哪些寄存器用于满足的条件。主控CPU在过程跟随现实条件的演变时向讨论的寄存器重新加载新操作码。备选地,可以实施动作引擎为:在外围部件接口PCI卡中嵌入的并且在通用计算机中使用的包含事件表寄存器和扫描器的专用芯片;用于对事件表进行解码并且运行原生指令而不是在协处理器存储器中放置原生操作码的嵌入式处理器;以及多个FPGA,这些FPGA中的每个FPGA具有用于在很低延时评估条件的分离FPGA程序。
运用机器视觉技术/装备的动态环境
如更早指出的那样,根据本发明的各种实施例的控制系统及其构成单元可以具有用于监视和/或控制多种动态环境、特别是需要低延时(即显著快速的响应时间)和/或低可变性延时的动态环境的广泛适用性。根据本发明的控制系统的一个示例应用由其中运用机器视觉技术和/或装备的动态环境给出。
图10是其中运用机器视觉技术和装备的动态环境以及用于监视和控制该动态环境的根据本发明的实施例的控制系统的框图。图10中所示动态环境主要地涉及自动化过程10,在该自动化过程中,可以运用各种机器人装备22以及机器视觉装备(统称为装备20)以有助于实施自动化过程10,其中机器视觉装备可以包括一个或者多个图像获取设备42和照明装备44。这里讨论的控制概念适用于的自动化过程10的示例包括但不限于跟踪、排序和/或操纵在(例如,用于汽车、消费者商品制造和/或农业应用的)组装线上的零件、结合制造过程的质量控制功能(例如,对于缺陷的自动化检查)、测量用于由机器人装备操控的零件的定位和/或定向以及从成批材料(例如,食材、农产品等)去除不希望的非自然成分。
在图10中,动态环境也包括(以与图1中所示方式相似的方式)用于控制机器人装备22、照明装备24和/或图像获取设备42的各种执行器或者控制设备30。环境也包括用于监视自动化过程10并且提供信息(一个或者多个输入信号66)的各种传感器或者输入设备40,该信息代表环境在给定的时间的监视的条件。如图10中所示,传感器可以包括用于获取涉及自动化过程的图像的一个或者多个图像获取设备42以及用于提供代表监视的条件的输入信号一个或者多个其它传感器44(例如,温度、湿度、压力、光和/或其它环境传感器;计数器;用于信息分组的接收队列,这些信息分组中的一些信息分组可以由一个或者多个图像获取设备或者其它设备提供,等等)。
图10也示出包括如以上结合各种实施例描述的主处理器190和动作引擎110的控制系统100,该控制系统用于接收和处理代表随时间的监视的条件的一个或者多个输入信号66以便向控制设备30提供一个或者多个输出信号68(该控制设备又控制机器人装备、照明装备和图像获取设备中的一项或者多项)。此外,图10中所示动态环境也可以包括通信地耦合到控制系统100用于处理一个或者多个图像获取设备获取的图像信息并且控制照明设备的图像处理计算机200。在包括图像处理计算机200的实施例中,由代表动态环境的监视的条件的一个或者多个输入信号66另外提供的信息中的至少一些信息可以具体结合从一个或者多个图像获取设备获取的图像推导的信息由图像处理计算机200向控制系统100提供。
在图10中所示动态环境中,图像获取设备42和照明设备24可以被具体运用于结合自动化过程10的监视和控制来实施机器视觉技术。术语“机器视觉”很一般地是指分析图像以提取数据用于控制过程。机器视觉技术通常包括系列操作,这些操作涉及到使用多种图像获取设备(例如,数字静止或者视频相机)中的任何图像获取设备并且在一些情况下使用透镜和各种照明装备(这些透镜和各种照明装备在一些实例中可以被具体设计和配置用于提供来自一般环境的某些对象的各种差别化以有助于后续图像处理)来获取图像。一个或者多个图像获取设备提供的图像数据可以是多种格式(例如,视频序列、来自多个相机的视图或者如来自医疗扫描器的多维数据)。然后(例如,经由可操作地耦合到机器视觉装备20和控制系统100的成像处理计算机200和/或一个或者多个其它独立/外部计算设备执行各种图像处理软件)处理获取的图像以便从图像提取各种信息,该提取的信息然后用来结合控制自动化过程做出判决。
关于可以被运用于机器视觉的各种照明装备和技术,最普遍采用(使用单色或者彩色光源的)二维可见光成像技术。然而,其它适当成像技术包括但不限于其中可以运用红外线照明装备(例如,源和/或滤波器)的选择性红外线成像、线扫描成像、表面三维成像和X射线成像。关于图像获取设备,可以在这样的设备中运用多个外形规格、功能和通信协议;例如,在一些实例中,图像获取设备可能无任何特定图像处理能力,而在其它实例中,可以实施图像获取设备具有某个程度的图像处理功能(例如,“智能”相机或者传感器)。各种商业上可用图像获取设备也可以被配置用于经由多种接口、比如以太网、USB或者火线连接中的任何即可传达数据。
关于可以由控制系统100的主处理器190、图像处理计算机200和/或一个或者多个其它计算/处理设备实施的示例图像处理技术,典型技术的示例包括但不限于门限化(将灰度图像转换成黑和白或者使用基于灰度值的分离)、分割、斑点提取、模式识别、条形码和数据矩阵代码读取、光学字符识别、计量(测量对象尺度)、定位、变元检测、颜色分析、滤波(例如,形态滤波)和模板匹配(发现、匹配和/或计数具体模式)。
在图10中,可以包括作为使用以上指出的图像处理技术中的任何一种多种图像处理技术的结果而从获取的图像提取的各种图像信息可以作为由控制系统100从一个或者多个传感器/输入设备接收的和/或图像处理计算机200向控制系统100提供的一个或者多个输入信号66代表的全部信息的部分。例如,这样的提取的图像信息可以指示特定对象(例如,在组装线上的零件)在特定时间获取的一个或者多个图像中存在、在一个或者多个图像中检测到对象的特定定位和/或定向、在一个或者多个图像中存在的对象中观测到特定缺陷等。从图像提取的这样的信息可以单独或者与来自一个或者多个传感器的其它信息组合用来代表自动化过程在给定的时间的监视的条件,控制系统可以被配置用于基于该条件规定将结合自动化过程10采取的一个或者多个特定对应动作。
结论
尽管这里已经描述和图示各种发明实施例,但是本领域普通技术人员将容易设想用于执行这里描述的功能和/或获得这里描述的结果和/或这里描述的优点中的一个或者多个优点的多种其它手段和/或结构并且这样的变化和/或修改中的变化和/或修改视为在这里描述的发明实施例的范围内。通常,本领域技术人员将容易理解这里描述的所有参数、尺度、材料和配置是为了举例,并且实际参数、尺度、材料和/或配置将依赖于本发明教导被运用于的一个或者多个具体应用。本领域技术人员将认识或者能够仅使用例行实验来确立这里描述的具体发明实施例的许多等效实施例。因此将理解仅通过例示例呈现前述实施例并且在所附权利要求书及其等效含义的范围内可以用除了具体描述并且要求保护的方式之外的方式实现发明实施例。本公开内容的发明实施例涉及这里描述的每个个别特征、系统、产品、材料、工具包和/或方法。此外,如果两个或者更多这样的特征、系统、产品、材料、工具包和/或方法未互不一致,则在本公开内容的发明范围内包括这样的特征、系统、产品、材料、工具包和/或方法的任何组合。
可以用许多方式中的任何方式实施以上描述的实施例。例如实施例可以使用硬件、软件或者其组合来实施。当在软件中实施时,可以在任何适当处理器或者无论是否在单个计算机中提供或者在多个计算机之中分布的处理器汇集上执行软件代码。
另外,应当理解可以用多个形式、比如架装式计算机、台式计算机、膝上型计算机或者平板计算机中的任何形式体现计算机。此外,可以在一般未视为计算机、但是具有多个处理能力的设备中嵌入计算机,该设备包括个人数字助理(PDA)、智能电话或者任何其它适当便携或者固定电子设备。
计算机也可以具有一个或者多个输入和输出设备。这些设备可以用来呈现用户接口以及用于其它功能。可以用来提供用户接口的输出设备的示例包括用于可视呈现输出的打印机或者显示屏和用于可听呈现输出的扬声器或者其它声音生成设备。可以用于用户接口的输入设备的示例包括键盘以及指示设备、比如鼠标、触板和数字化写字板。作为另一示例,计算机可以通过话音识别或者以其它可听格式接收输入信息。
这样的计算机可以由任何适当形式的一个或者多个网络互连,该网络包括局域网或者广域网、比如企业网和智能网(IN)或者因特网。这样的网络可以基于任何适当计数并且可以根据任何适当协议操作并且可以包括无线网络、有线网络或者光纤网络。
也可以将这里概述的各种方法或者过程编码为在运用多种操作系统或者平台中的任何操作系统或者平台的一个或者多个处理器上可执行的软件。此外,可以使用多个适当编程语言和/或编程或者脚本工具中的任何编程语言和/或编程或者脚本工具来编写这样的软件,并且也可以编译这样的软件为在框架或者虚拟机上执行的可执行机器语言代码或者中间代码。
就这一点而言,可以体现各种发明概念为用一个或者多个程序编码的一个计算机可读介质(或者多个计算机可读介质)(例如,计算机存储器、一个或者多个软盘、紧致盘、光谱、磁带、闪存、在现场可编程门阵列或者其它半导体器件中的电路配置或者其它非有形介质或者有形计算机存储介质),该程序在一个或者多个计算机或者其它处理器上执行时执行方法,这些方法实施以上讨论的本发明的各种实施例的至少部分。一个或者多个计算机可读介质可以是可移植的,从而可以向一个或者多个不同计算机或者其它处理器上加载其上存储的一个或者多个程序以实施如以上讨论的本发明的各种方面。
术语“程序”或者“软件”这里在通用意义上用来指代任何类型的计算机代码或者计算机可执行指令集,该计算机代码或者计算机可执行指令集可以用来对计算机或者其它处理器进行编程以实施如以上讨论的本发明的各种方面。此外,应当理解根据一个方面,在被执行时执行本发明的方法的一个或者多个计算机程序无需驻留于单个计算机或者处理器上、但是可以用模块方式分布于多个不同计算机或者处理器之中以实施本发明的各种方面。
计算机可执行指令可以是以一个或者多个计算机或者其它设备执行的许多形式、比如程序模块。通常,程序模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常可以在各种实施例中如希望的那样组合或者分布程序模块的功能。
也可以用任何适当形式在计算机可读介质中存储数据结构。为了简化示例,可以示出数据结构具有通过在数据结构中的位置而相关的字段。可以通过向用于字段的存储之中指派计算机可读介质中的传达字段之间关系的位置来实现这样的关系。然而任何适当机制可以用来建立在数据结构的字段中的信息之间的关系、包括通过使用指针、标签或者其它建立数据元之间关系的机制。
也可以体现各种发明概念为一种或者多种方法,已经提供该一种或者多种方法的示例。可以用任何适当方式对作为方法的部分而执行的动作进行排序。因而可以构造实施例,在这些实施例中按照与所示顺序不同的顺序执行动作,该顺序包括同时执行一些动作,即使在示例实施例中示出这些动作为依次动作。
如这里定义和使用的所有定义应当理解为支配词典定义、在通过引用而结合的文献中的定义和/或定义的术语的普通含义。
如这里在说明书中和在权利要求中使用的不定冠词“一个/一种”除非清楚地相反指明则应当理解为意味着“至少一个/一种”。
应当理解如这里在说明书中和在权利要求中使用的短语“和/或”意味着这样连结的要素中的“任一个或者两个要素”、即在一些情况下联合存在而在其它情况下分开存在的要素。应当以相同方式解释用“和/或”列举的多个要素、即这样连结的要素中的“一个或者多个要素”。除了“和/或”子句具体标识的要素之外的其它要素无论是否与具体标识的那些要素有关还是无关都可以可选地存在。因此,作为非限制示例,对“A和/或B”的引用在与开放式言语、比如“包括”结合使用时可以在一个实施例中仅指代A(可选地包括除了B之外的要素);在另一实施例中仅指代B(可选地包括除了A之外的要素);在更多另一实施例中指代A和B二者(可选地包括其它要素);等等。
如这里在说明书中和在权利要求中所用,应当理解“或者”具有与如以上定义的“和/或”相同的含义。例如在分离列表中的项目时,应当理解“或者”和“和/或”为包含意义、即包括多个要素或者要素列表中的至少一个要素、但是也包括多于一个要素并且可选地包括附加的未列举的项目。仅清楚地相反指示的术语、比如“……中的仅一个”或者“……中的确切一个”或者在权利要求中使用时“由……构成”将指代包括多个要素或者要素列表中的确切一个要素。通常,应当仅解释如这里所用术语“或者”为在前置有排他性术语、比如“……中的任一个”、“……中的一个”、“……中的仅一个”或者“……中的确切一个”时指示排他备选(即“一个或者另一个、但是并非二者”)、“实质上由……构成”在权利要求中使用时应当具有如它在专利法中使用的普通含义。
如这里在说明书中和在权利要求中所用,短语“至少一个”在引用一个或者多个要素的列表时应当理解为意味着从要素列表中的要素中的任何一个或者多个要素中选择的至少一个要素、但是未必包括在要素列表内具体列举的每一个要素中的至少一个要素并且未排除要素列表中的要素的任何组合。这一定义也允许可以可选地存在除了在短语“至少一个”引用的要素列表内具体标识的要素之外的、无论是与具体标识的那些要素有关还是无关的要素。因此作为非限制示例,“A和B中的至少一个”(或者等效为“A或者B中的至少一个”或者等效为“A和/或B中的至少一个”)可以在一个实施例中指代至少一个A、可选地包括多个A而无B存在(并且可选地包括除了B之外的要素);在另一实施例中指代至少一个B、可选地包括多个B而无A存在(并且可选地包括除了A之外的要素);在又一实施例中指代至少一个A、可选地包括多个A和至少一个B、可选地包括多个B(并且可选地包括其它要素);等等。
在权利要求中以及在以上说明书中,诸如“包括”、“携带”、“具有”、“包含”、“涉及到”、“保持”、“由……组成”等所有过渡短语将理解为开放式、即意味着包括但不限于。如在美国专利局专利审查程序手册第2111.03节中阐述的那样,仅过渡短语“由……构成”或者“实质上由……构成”应当分别是封闭或者半封闭过渡短语。
Claims (54)
1.一种用于评估动态环境的多个条件的动作引擎,所述动作引擎包括:
用于存储至少一个事件表的存储器,所述至少一个事件表被构造为多个相继连续存储器位置,其中所述多个相继连续存储器位置中的每个存储器位置被配置用于存储内容,所述内容代表所述多个条件中的将由所述动作引擎评估的特定条件和如果满足所述特定条件则将采取的对应动作;以及
通信地耦合到所述存储器以便访问所述至少一个事件表的至少一个扫描器,所述至少一个扫描器包括处理电路装置,所述处理电路装置被配置用于:
依次处理所述至少一个事件表的所述相应存储器位置的所述内容以评估在所述内容中代表的所述多个条件;
生成用于所述多个条件中的在评估时满足的每个条件的通知信号;以及
生成代表如果在评估时满足所述多个条件中的任何条件则将在所述动态环境中采取的至少一个动作的控制信息。
2.根据权利要求1所述的动作引擎,其中:
A)所述动态环境包括:
A1)用于实施自动化过程的装备;
A2)用于响应于至少一个控制信号控制所述装备的至少一个控制设备;以及
A3)用于监视所述自动化过程并且生成代表所述多个条件中的监视的条件的至少一个输入信号的至少一个传感器;以及
B)所述动作引擎的所述至少一个扫描器:
B1)接收代表所述监视的条件的所述至少一个输入信号;
B2)处理所述至少一个输入信号以便确定是否满足所述事件表的至少第一存储器位置的所述内容代表的至少一个第一条件;以及
B3)提供代表如果所述监视的条件与所述至少一个第一条件匹配则将采取的与所述至少一个第一条件对应的至少一个第一动作的至少第一控制信息。
3.一种控制系统,包括:
根据权利要求2所述的动作引擎;以及
通信地耦合到所述动作引擎的主处理器,所述主处理器被配置用于在执行在所述主处理器中存储的处理器可执行指令时:
向所述动作引擎提供所述至少一个事件表的所述相应存储器位置的所述内容;以及
从所述动作引擎接收用于所述多个条件中的在评估时满足的每个条件的通知信号。
4.一种机器视觉系统,包括:
根据权利要求2所述的动作引擎;以及
用于实施A1)中的所述自动化过程的所述装备;
在A2)中用于控制所述装备的所述至少一个控制设备;以及
用于监视所述自动化过程的所述至少一个传感器,
其中:
用于实施所述自动化过程的所述装备包括:
机器人装备;以及
用于提供用于所述自动化过程的受控环境照明的照明装备;
所述至少一个控制设备包括耦合到所述机器人装备和/或所述照明装备用于控制所述机器人装备和/或所述照明装备的多个执行器;
所述至少一个传感器包括用于获取所述自动化过程的至少一部分的至少一个图像的至少一个图像获取设备;以及
所述动作引擎通信地耦合到所述至少一个控制设备和所述至少一个传感器用于接收所述至少一个传感器生成的所述至少一个输入信号并且至少部分基于在B3)中生成的至少所述第一控制信息控制所述多个执行器和/或所述至少一个图像获取设备。
5.根据权利要求1所述的动作引擎,还包括:
至少一个输入接口,通信地耦合到所述至少一个扫描器以接收代表所述动态环境的所述多个条件中的监视的条件的至少一个输入信号,
其中:
所述至少一个扫描器的所述处理电路装置比较所述至少一个输入信号的值与所述至少一个事件表的至少一个存储器位置的所述内容的至少第一部分,其中每个存储器位置的所述内容的所述第一部分代表将评估的所述特定条件;以及
如果所述至少一个输入信号的所述值与所述至少一个存储器位置的所述内容的并且代表将评估的所述特定条件的至少所述第一部分匹配,则所述至少一个扫描器的所述处理电路装置处理所述至少一个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的第二部分以便提供所述控制信息中的至少一些信息。
6.根据权利要求5所述的动作引擎,其中:
所述至少一个事件表包括固定最大数目的相继连续存储器位置;以及
所述最大数目的存储器位置至少部分基于用于如果满足所述多个条件中的任何条件则在所述动态环境中提供所述控制信息的所需响应时间定义的最大允许延时。
7.根据权利要求5所述的动作引擎,其中所述扫描器的所述处理电路装置包括:
比较器逻辑电路装置,用于比较所述至少一个输入信号的所述值与所述至少一个存储器位置的所述内容的至少所述第一部分;
动作逻辑电路装置,用于处理所述至少一个存储器位置的所述内容的并且代表将采取的所述对应动作的所述第二部分,并且提供所述控制信息中的所述至少一些控制信息;
定序逻辑电路装置,用于控制所述至少一个事件表以向所述比较器逻辑电路装置和所述动作逻辑电路装置依次提供所述相应存储器位置的所述内容;以及
事件表写入仲裁逻辑电路装置,用于控制所述至少一个事件表以便向所述至少一个事件表的至少一个存储器寄存器写入新内容。
8.根据权利要求5所述的动作引擎,其中
所述多个相继连续存储器位置中的每个存储器位置的所述内容包括条件/动作对,所述条件/动作对包括构成所述第一部分并且具有代表所述多个条件中的将评估的特定条件的相应值的第一数目的位以及构成所述第二部分并且具有代表如果满足所述特定条件则将采取的所述对应动作的相应值的第二数目的位;以及
所述扫描器的所述处理电路装置包括:
比较器,耦合到所述至少一个存储器位置以比较代表所述特定条件的所述第一数目的位的所述相应值和代表所述多个条件中的所述监视的条件的所述至少一个输入信号的所述值,所述比较器还被配置用于如果所述特定条件与所述监视的条件匹配则生成匹配信号;以及
门,耦合到所述至少一个存储器位置并且耦合到所述比较器以便接收所述匹配信号用于如果所述匹配信号由所述比较器确立则输出具有代表将采取的所述对应动作的相应值的所述第二数目的位。
9.根据权利要求5所述的动作引擎,还包括通信地耦合到所述至少一个扫描器用于存储至少一个信号量的至少一个信号量寄存器,其中:
所述至少一个信号量有助于管理资源争用;以及
所述至少一个扫描器获取和释放所述至少一个信号量以保证所述多个条件中的至少一个条件的评估依赖于的至少一个资源可用。
10.根据权利要求5所述的动作引擎,其中:
所述至少一个输入信号包括多个输入信号,其中所述多个输入信号在给定的时间的相应值代表所述多个条件中的所述监视的条件;以及
所述至少一个输入接口被配置用于接收所述多个输入信号。
11.根据权利要求10所述的动作引擎,其中所述多个输入信号的所述相应值包括以下各项中的至少一项:
代表所述监视的条件的多个实时值;
代表所述监视的条件的多个锁存值;
代表所述监视的条件的至少一个多位数字值;
分别代表构成所述监视的条件的不同感测的参数的多个二进制值;以及
代表至少一个信号量的至少一个二进制值。
12.根据权利要求5所述的动作引擎,其中所述至少一个输入接口还被配置用于从接收所述至少一个扫描器的所述处理电路装置生成的所述通知信号的外部设备接收所述事件表的每个存储器位置的所述内容。
13.根据权利要求5所述的动作引擎,还包括:
通信地耦合到所述至少一个扫描器的至少一个输出接口,用于提供用于所述多个条件中的在评估时满足的每个条件的所述通知信号并且还至少部分基于所述至少一个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的所述第二部分提供所述控制信息中的所述至少一些控制信息。
14.根据权利要求13所述的动作引擎,其中如所述控制信息中的所述至少一些控制信息代表的将在所述动态环境中采取的所述对应动作包括以下各项中的至少一项:
向所述动态环境中的至少一个控制设备发送至少一个数据分组;
设置和/或清除至少一个标志位;
设置和/或清除至少一个输出位;
设置和/或清除至少一个信号量;以及
锁存和/或重置至少一个计数器。
15.根据权利要求5所述的动作引擎,其中:
所述至少一个事件表的每个存储器位置包括具有第一数目的位的至少一个存储器寄存器;以及
每个存储器位置的所述内容的代表将评估的所述特定条件的所述第一部分包括小于所述第一数目的第二数目的位,其中所述第二数目的位中的至少一些位是所述至少一个存储器寄存器中的非相邻位。
16.根据权利要求15所述的动作引擎,其中:
每个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的所述第二部分包括小于所述第一数目的第三数目的位,其中所述第三数目的位中的至少一些位是所述至少一个存储器寄存器中的非相邻位。
17.根据权利要求5所述的动作引擎,其中:
所述多个相继连续存储器位置中的第一存储器位置的所述内容的所述第一部分包括用于将所述第一存储器位置链接到所述多个相继连续存储器位置中的下一存储器位置的链位,所述第一存储器位置的所述内容的所述第一部分代表将评估的第一条件;
所述第一存储器位置的所述内容的代表将在所述动态环境中采取的第一对应动作的所述第二部分包括指示将在所述动态环境中未采取动作的第一动作操作数;
所述下一存储器位置的所述内容的所述第一部分代表将评估的第二条件;以及
所述下一存储器位置的所述内容的所述第二部分包括代表如果满足所述第一条件和所述第二条件二者则将在所述动态环境中采取的至少一个动作的第二动作操作数。
18.根据权利要求5所述的动作引擎,其中:
所述至少一个事件表的每个存储器位置包括具有第一数目的位的至少一个存储器寄存器;
所述第一数目的位被分割为操作码、动作参数和条件操作数;以及
所述操作码包括至少条件类型代码和动作操作数,
其中:
所述条件类型代码和所述条件操作数构成每个存储器位置的所述内容的代表将评估的所述特定条件的所述第一部分的至少一部分;以及
所述动作操作数和所述动作参数构成每个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的所述第二部分的至少一部分。
19.根据权利要求18所述的动作引擎,其中:
用于所述至少一个存储器寄存器的所述第一数目的位为64位;
所述操作码为16位;
所述动作参数为16位;以及
所述条件操作数为32位。
20.根据权利要求19所述的动作引擎,其中所述至少一个事件表包括128个存储器位置。
21.根据权利要求18所述的动作引擎,其中所述操作码还包括:
计数器字段;以及
涉及所述条件类型代码的处理的至少一个位。
22.根据权利要求21所述的动作引擎,其中涉及所述条件类型代码的处理的所述至少一个位包括以下位中的至少一个位:
链位;
XOR位;
通知位;
满足位;以及
最后条件位。
23.一种用于评估动态环境的多个条件的方法,所述方法包括:
A)依次处理在存储器中存储的至少一个事件表的相应存储器位置的内容,所述至少一个事件表被构造为多个相继连续存储器位置,其中所述多个相继连续存储器位置中的每个存储器位置被配置用于存储条件/动作对,所述条件/动作对代表所述多个条件中的将评估的特定条件和如果满足所述特定条件则将采取的对应动作;
B)生成用于所述多个条件中的在A)中评估时满足的每个条件的通知信号;以及
C)向至少一个控制设备传输代表如果在A)中评估时满足所述多个条件中的任何条件则将在所述动态环境中采取的至少一个动作的控制信息以便控制所述动态环境中的至少一件装备。
24.根据权利要求23所述的方法,其中A)包括:
A1)接收代表所述动态环境的所述多个条件中的监视的条件的至少一个输入信号;
A2)比较所述至少一个输入信号的值与所述至少一个事件表的至少一个存储器位置的所述内容的至少第一部分,其中每个存储器位置的所述内容的所述第一部分代表将评估的所述特定条件;以及A3)如果所述至少一个输入信号的所述值与所述至少一个存储器位置的所述内容的并且代表将评估的所述特定条件的至少所述第一部分匹配,则处理所述至少一个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的第二部分以便提供在C)中传输的所述控制信息的至少一些控制信息。
25.根据权利要求24所述的方法,还包括:
获取和释放至少一个信号量以保证A)依赖于的至少一个资源可用,其中所述至少一个信号量有助于管理资源争用。
26.根据权利要求24所述的方法,其中:
所述至少一个输入信号包括多个输入信号,其中所述多个输入信号在给定的时间的相应值代表所述多个条件中的所述监视的条件。
27.根据权利要求26所述的方法,其中所述多个输入信号的所述相应值包括以下各项中的至少一项:
代表所述监视的条件的多个实时值;
代表所述监视的条件的多个锁存值;
代表所述监视的条件的至少一个多位数字值;
分别代表构成所述监视的条件的不同感测的参数的多个二进制值;以及
代表至少一个信号量的至少一个二进制值。
28.根据权利要求23所述的方法,还包括:
从接收在B)中生成的所述通知信号的外部设备接收所述事件表的每个存储器位置的所述内容。
29.根据权利要求23所述的方法,其中C)包括以下各项中的至少一项:
向所述至少一个控制设备发送至少一个数据分组;
设置和/或清除至少一个标志位;
设置和/或清除至少一个输出位;
设置和/或清除至少一个信号量;以及
锁存和/或重置至少一个计数器。
30.根据权利要求23所述的方法,其中:
所述至少一个事件表的每个存储器位置包括具有第一数目的位的至少一个存储器寄存器;以及
每个存储器位置的所述内容的代表将评估的所述特定条件的所述第一部分包括小于所述第一数目的第二数目的位,其中所述第二数目的位中的至少一些位是所述至少一个存储器寄存器中的非相邻位。
31.根据权利要求30所述的方法,其中:
每个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的所述第二部分包括小于所述第一数目的第三数目的位,其中所述第三数目的位中的至少一些位是所述至少一个存储器寄存器中的非相邻位。
32.根据权利要求23所述的方法,其中:
所述多个相继连续存储器位置中的第一存储器位置的所述内容的所述第一部分包括用于将所述第一存储器位置链接到所述多个相继连续存储器位置中的下一存储器位置的链位,所述第一存储器位置的所述内容的所述第一部分代表将评估的第一条件;
所述第一存储器位置的所述内容的代表将在所述动态环境中采取的第一对应动作的所述第二部分包括指示将在所述动态环境中未采取动作的第一动作操作数;
所述下一存储器位置的所述内容的所述第一部分代表将评估的第二条件;以及
所述下一存储器位置的所述内容的所述第二部分包括代表如果满足所述第一条件和所述第二条件二者则将在所述动态环境中采取的至少一个动作的第二动作操作数。
33.根据权利要求23所述的方法,其中:
所述至少一个事件表的每个存储器位置包括具有第一数目的位的至少一个存储器寄存器;
所述第一数目的位被分割为操作码、动作参数和条件操作数;以及
所述操作码包括至少条件类型代码和动作操作数,
其中:
所述条件类型代码和所述条件操作数构成每个存储器位置的所述内容的代表将评估的所述特定条件的所述第一部分的至少一部分;以及
所述动作操作数和所述动作参数构成每个存储器位置的所述内容的代表将在所述动态环境中采取的所述对应动作的所述第二部分的至少一部分。
34.一种用于评估动态环境的多个条件并且生成代表如果满足所述多个条件中的任何条件则将在所述动态环境中采取的至少一个动作的控制信息的动作引擎,所述动作引擎包括:
多个协处理器,每个协处理器包括:
用于存储条件/动作对的存储器寄存器,所述条件/动作对包括具有代表将评估的所述多个条件中的一个条件的相应值的第一数目的位和具有代表如果满足所述一个条件则将采取的对应动作的相应值的第二数目的位;
耦合到所述存储器寄存器的比较器,用于比较代表所述一个条件的所述第一数目的位的所述相应值和代表所述多个条件中的监视的条件的至少一个值,所述比较器还被配置用于如果所述一个条件与所述监视的条件匹配则生成匹配信号;以及
耦合到所述存储器寄存器并且耦合到所述比较器以便接收所述匹配信号的门,用于如果所述匹配信号由所述比较器确立则输出具有代表将采取的所述对应动作的相应值的所述第二数目的位作为所述动作引擎生成的所述控制信息中的至少一些控制信息。
35.一种用于监视和控制具有多个条件的动态环境的控制系统,响应于所述多个条件需要多个动作,所述控制系统包括:
主处理器;以及
至少一个协处理器,通信地耦合到所述主处理器并且包括协处理器存储器,
其中在操作中所述主处理器将内容加载至所述协处理器存储器中以从所述主处理器分流并且配置所述至少一个协处理器以:
通过接收代表所述多个条件中的至少一个监视的条件的至少一个输入信号并且处理所述至少一个输入信号以便确定是否满足所述多个条件的第一子集中的至少一个条件来仅评估所述第一子集;以及
如果满足所述第一子集中的所述至少一个条件则提供代表所述多个动作中的至少一个第一动作的第一控制信息。
36.根据权利要求35所述的控制系统,其中:
A)所述动态环境包括:
A1)用于实施自动化过程的装备;
A2)用于响应于至少一个控制信号控制所述装备的至少一个控制设备;以及
A3)用于监视所述自动化过程并且生成代表所述多个条件中的所述至少一个监视的条件的所述至少一个输入信号的至少一个传感器;以及
B)所述至少一个协处理器:
B1)接收代表所述至少一个监视的条件的所述至少一个输入信号;
B2)处理所述至少一个输入信号以便确定是否满足所述第一子集中的所述至少一个条件;以及
B3)如果所述至少一个监视的条件与所述第一子集中的所述至少一个条件匹配,则提供所述第一控制信息以便生成用于所述至少一个控制设备的所述至少一个控制信号。
37.根据权利要求36所述的控制系统,其中在B)中,所述至少一个协处理器还:
B4)如果满足所述第一子集中的所述至少一个条件则向所述主处理器传输通知信号。
38.根据权利要求36所述的控制系统,其中:
用于实施所述自动化过程的所述装备包括:
机器人装备;以及
用于提供用于所述自动化过程的受控环境照明的照明装备;
所述至少一个控制设备包括耦合到所述机器人装备和/或所述照明装备用于控制所述机器人装备和/或所述照明装备的多个执行器;
所述至少一个传感器包括用于获取所述自动化过程的至少一部分的至少一个图像的至少一个图像获取设备;以及
所述控制系统通信地耦合到所述至少一个控制设备和所述至少一个传感器,用于接收所述至少一个传感器生成的所述至少一个输入信号并且至少部分基于在B3)中生成的所述至少一个控制信号控制所述多个执行器和/或所述至少一个图像获取设备。
39.根据权利要求35所述的控制系统,其中所述多个条件的由所述主处理器配置用于由所述至少一个协处理器评估的所述第一子集仅包括一个条件。
40.根据权利要求35所述的控制系统,其中所述主处理器基于以下各项中的至少一项确定所述多个条件的所述第一子集用于由所述至少一个协处理器评估:
预计所述多个条件的所述第一子集在所述动态环境中出现的时间段;
预计所述多个条件在所述动态环境中出现的特定序列;
在所述动态环境中采取的至少一个先前动作;
所述动态环境的当前状态;
所述主处理器的响应时间;以及
所述至少一个协处理器的至少一个属性。
41.根据权利要求35所述的控制系统,其中所述至少一个协处理器包括:
用于接收代表所述至少一个监视的条件的所述至少一个输入信号和/或来自所述主处理器的涉及条件的所述第一子集的评估的第一配置信息的至少一个输入接口;
用于至少存储从所述主处理器接收的所述第一配置信息的专用存储器;
用于提供代表所述多个动作中的所述至少一个第一动作的所述第一控制信息的至少一个输出接口;以及
通信地耦合到所述至少一个输入接口、所述专用存储器和所述至少一个输出接口的至少一个控制器,其中所述至少一个控制器被配置用于:
至少部分基于从所述主处理器接收的所述第一配置信息处理所述至少一个输入信号以便确定是否满足所述第一子集的所述至少一个条件;以及
如果满足所述第一子集的所述至少一个条件则控制所述至少一个输出接口以便提供所述第一控制信息。
42.根据权利要求41所述的控制系统,其中所述至少一个协处理器的所述至少一个控制器还被配置用于如果满足所述第一子集的所述至少一个条件则控制所述至少一个输出接口以便向所述主处理器传输通知信号。
43.根据权利要求41所述的控制系统,其中:
所述至少一个输入信号包括多个输入信号,其中所述多个输入信号在给定的时间的相应值代表所述多个条件中的所述至少一个监视的条件;以及
所述至少一个协处理器的所述至少一个输入接口被配置用于接收所述多个输入信号。
44.根据权利要求43所述的控制系统,其中所述多个输入信号的所述相应值包括以下各项中的至少一项:
代表所述监视的条件的多个实时值;
代表所述监视的条件的多个锁存值;
代表所述监视的条件的至少一个多位数字值;以及
分别代表构成所述监视的条件的不同感测的参数的多个二进制值。
45.根据权利要求41所述的控制系统,其中:
由所述至少一个协处理器从所述主控制器接收的所述第一配置信息包括代码化用于由所述至少一个协处理器评估的条件的所述第一子集的第一可执行程序;
所述至少一个协处理器的所述至少一个输入接口被配置用于接收所述第一可执行程序;
所述至少一个协处理器的所述专用存储器在所述第一可执行程序由所述至少一个输入接口接收到时存储所述第一可执行程序;以及
所述至少一个协处理器的所述至少一个控制器包括用于执行所述第一可执行程序以便至少部分基于代表所述监视的条件的所述至少一个输入信号评估条件的所述第一子集的中央处理单元。
46.一种在包括主处理器和通信地耦合到所述主处理器的至少一个协处理器的系统中用于监视和控制具有多个条件的动态环境的方法,响应于所述多个条件需要多个动作,所述方法包括:
A)经由所述主处理器确定所述多个条件的预计在所述动态环境中出现的第一子集,并且将代表所述多个条件的所述第一子集的内容加载至所述协处理器的存储器中;以及
B)经由所述至少一个协处理器基于由所述主处理器加载至所述协处理器的存储器中的内容评估所述多个条件的在A)中确定的所述第一子集,以便如果满足所述第一子集的至少一个条件则提供代表所述多个动作中的至少一个第一动作的第一控制信息。
47.根据权利要求46所述的方法,还包括:
如果满足所述第一子集的所述至少一个条件,则从所述至少一个协处理器向所述主处理器传输通知信号。
48.根据权利要求46所述的方法,其中在A)中,所述多个条件的所述第一子集仅包括一个条件。
49.根据权利要求46所述的方法,其中在A)中,所述多个条件的所述第一子集包括预计在指定的时间段内在所述动态环境中出现的多个条件。
50.根据权利要求49所述的方法,其中在A)中,预计所述多个条件在所述动态环境中出现的所述指定的时间段小于所述主处理器的响应时间。
51.根据权利要求46所述的方法,其中在A)中,所述指定的时间段小于所述主处理器的最坏情况响应时间。
52.根据权利要求46所述的方法,其中A)包括基于以下各项中的至少一项确定所述多个条件的所述第一子集:
预计所述多个条件的所述第一子集在所述动态环境中出现的时间段;
预计所述多个条件在所述动态环境中出现的特定序列;
在所述动态环境中采取的至少一个先前动作;
所述动态环境的当前状态;以及
所述至少一个协处理器的至少一个属性。
53.根据权利要求46所述的方法,其中:
所述多个条件中的监视的条件由多个输入信号代表,其中所述多个输入信号在给定的时间的相应值代表所述多个条件中的所述监视的条件;以及
所述多个输入信号的所述相应值包括以下各项中的至少一项:
代表所述监视的条件的多个实时值;
代表所述监视的条件的多个锁存值;
代表所述监视的条件的至少一个多位数字值;以及
分别代表构成所述监视的条件的不同感测的参数的多个二进制值。
54.一种用于监视和控制具有多个条件的动态环境的控制系统,响应于所述多个条件需要多个动作,所述动态环境包括用于实施自动化过程的装备、用于响应于至少一个控制信号控制所述装备的至少一个控制设备以及用于监视所述自动化过程并且生成代表所述多个条件中的监视的条件的至少一个输入信号的至少一个传感器,所述控制系统包括:
主处理器;以及
通信地耦合到所述主处理器的至少一个协处理器,
其中:
所述主处理器配置所述至少一个协处理器以:
仅评估所述多个条件的预计在小于所述主处理器的响应时间的指定的时间段内在所述动态环境中出现的第一子集;以及
如果满足所述第一子集的至少一个条件则提供代表所述多个动作中的至少一个第一动作的第一控制信息;以及
所述至少一个协处理器:
接收代表所述监视的条件的所述至少一个输入信号;
处理所述至少一个输入信号以便确定是否满足所述第一子集的所述至少一个条件;以及
如果所述监视的条件与所述第一子集的所述至少一个条件匹配,则提供所述第一控制信息以便生成用于所述至少一个控制设备的所述至少一个控制信号。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161543680P | 2011-10-05 | 2011-10-05 | |
US61/543,680 | 2011-10-05 | ||
CN201280059760.9A CN104025095B (zh) | 2011-10-05 | 2012-10-05 | 用于监视和/或生成动态环境的方法、装置和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280059760.9A Division CN104025095B (zh) | 2011-10-05 | 2012-10-05 | 用于监视和/或生成动态环境的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634198A true CN109634198A (zh) | 2019-04-16 |
CN109634198B CN109634198B (zh) | 2021-06-22 |
Family
ID=48042577
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811233180.2A Active CN109634198B (zh) | 2011-10-05 | 2012-10-05 | 用于监视和/或生成动态环境的方法、装置和系统 |
CN201280059760.9A Active CN104025095B (zh) | 2011-10-05 | 2012-10-05 | 用于监视和/或生成动态环境的方法、装置和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280059760.9A Active CN104025095B (zh) | 2011-10-05 | 2012-10-05 | 用于监视和/或生成动态环境的方法、装置和系统 |
Country Status (7)
Country | Link |
---|---|
US (6) | US9494926B2 (zh) |
EP (1) | EP2764455B1 (zh) |
JP (5) | JP2015501025A (zh) |
CN (2) | CN109634198B (zh) |
CA (1) | CA2857355C (zh) |
HK (1) | HK1201097A1 (zh) |
WO (1) | WO2013052894A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113253664A (zh) * | 2021-07-02 | 2021-08-13 | 峰岹科技(深圳)股份有限公司 | 协处理器、协处理器控制方法、终端及存储介质 |
CN113924195A (zh) * | 2019-05-29 | 2022-01-11 | 优傲机器人公司 | 多用途机器人臂的控制 |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8600556B2 (en) | 2009-06-22 | 2013-12-03 | Johnson Controls Technology Company | Smart building manager |
DE102011006989A1 (de) * | 2011-04-07 | 2012-10-11 | Endress + Hauser Gmbh + Co. Kg | Vorrichtung und System zur Bestimmung, Optimierung oder Überwachung zumindest einer Prozessgröße |
CN109634198B (zh) | 2011-10-05 | 2021-06-22 | 奥普唐公司 | 用于监视和/或生成动态环境的方法、装置和系统 |
FI125393B (en) * | 2012-07-17 | 2015-09-30 | Arm Finland Oy | Procedure, device and system for use in a web service |
US9070057B2 (en) * | 2012-10-30 | 2015-06-30 | General Electric Company | Method and system for identification of assets |
US10215434B2 (en) | 2012-11-07 | 2019-02-26 | Think Automatic, LLC | Adaptive trigger sequencing for site control automation |
US9971345B2 (en) * | 2012-11-15 | 2018-05-15 | Osg Corporation | Manufacturing process management support device |
US10360316B2 (en) * | 2012-12-21 | 2019-07-23 | Rockwell Automation Technologies, Inc. | Integration of simulation of a machine for industrial automation |
US9448547B2 (en) * | 2013-04-16 | 2016-09-20 | Brian S. Messenger | Sensor and power coordinator for vehicles and production lines that hosts removable computing and messaging devices |
US10189220B2 (en) | 2013-04-29 | 2019-01-29 | Essilor International | Calculation system for manufacturing an ophthalmic lens |
US20150316919A1 (en) * | 2013-05-16 | 2015-11-05 | HYTORC Division Unex Corporation | Multifunctional Hydraulic Drive Unit |
EP2816424A1 (en) * | 2013-06-20 | 2014-12-24 | Gefran S.p.A. | Method and apparatus for controlling an industrial process |
US9880529B2 (en) * | 2013-08-28 | 2018-01-30 | James Ward Girardeau, Jr. | Recreating machine operation parameters for distribution to one or more remote terminals |
CN103606064A (zh) * | 2013-12-09 | 2014-02-26 | 国家电网公司 | 一种输配电线路巡视记录系统 |
KR101552783B1 (ko) * | 2014-01-10 | 2015-09-11 | 엘에스산전 주식회사 | Plc의 위치결정펄스 출력방법 |
US20160091912A1 (en) * | 2014-09-30 | 2016-03-31 | Schneider Electric Usa Inc. | Demand-side grid-level load balancing aggregation system |
US10250464B2 (en) * | 2014-10-15 | 2019-04-02 | Accedian Networks Inc. | Area efficient traffic generator |
DE102014222508A1 (de) * | 2014-11-04 | 2016-05-04 | Wago Verwaltungsgesellschaft Mbh | Modul für eine prozesstechnische Anlage und Verfahren zur Steuerung einer prozesstechnischen Anlage |
CN104750017B (zh) * | 2015-01-22 | 2018-01-23 | 深圳达实智能股份有限公司 | 一种机场行李监控方法及机场行李监控系统 |
US9626227B2 (en) * | 2015-03-27 | 2017-04-18 | Intel Corporation | Technologies for offloading and on-loading data for processor/coprocessor arrangements |
WO2016206642A1 (zh) * | 2015-06-26 | 2016-12-29 | 北京贝虎机器人技术有限公司 | 机器人的控制数据的生成方法及装置 |
DE102015111753A1 (de) | 2015-07-20 | 2017-01-26 | Infineon Technologies Ag | Verfahren und vorrichtung zur verwendung bei einer akquisition von messdaten |
US9537914B1 (en) * | 2015-12-01 | 2017-01-03 | International Business Machines Corporation | Vehicle domain multi-level parallel buffering and context-based streaming data pre-processing system |
EP3178704A1 (en) | 2015-12-10 | 2017-06-14 | Continental Automotive GmbH | Terminal control device for interfacing a digital processing unit with electric output lines in a motor vehicle |
JP6602684B2 (ja) * | 2016-02-15 | 2019-11-06 | 株式会社東芝 | 制御装置および制御方法 |
DE102016103117A1 (de) * | 2016-02-23 | 2017-08-24 | Krones Ag | Verfahren zum Betreiben einer Behandlungsanlage zum Behandeln von Behältnissen mit Rezepterstellung für die Steuerung |
JP6165286B1 (ja) * | 2016-02-29 | 2017-07-19 | 株式会社安川電機 | モータ制御システム、ロボットシステム、及びモータ制御システムの通信方法 |
GB2549927B (en) | 2016-04-25 | 2018-06-13 | Imagination Tech Ltd | Circuit architecture |
US10713188B2 (en) * | 2016-07-06 | 2020-07-14 | Atmel Corporation | Inter-process signaling system and method |
JP6737018B2 (ja) * | 2016-07-08 | 2020-08-05 | オムロン株式会社 | 光学計測装置 |
KR102376265B1 (ko) * | 2016-09-19 | 2022-03-18 | 엘모스 세미컨덕터 에스이 | 프로세서를 감시하기 위한 와치독 |
WO2018089747A1 (en) * | 2016-11-10 | 2018-05-17 | Bently Nevada, Llc | Equipment monitoring systems and devices |
US10162680B2 (en) * | 2016-12-13 | 2018-12-25 | GM Global Technology Operations LLC | Control of data exchange between a primary core and a secondary core using a freeze process flag and a data frozen flag in real-time |
CN108268239A (zh) * | 2017-01-03 | 2018-07-10 | 胡五生 | 多进制运算器赋意分形算法电路 |
EP3551979B1 (en) * | 2017-01-18 | 2023-06-14 | Starline Holdings, LLC | Systems and methods for continuously monitoring a temperature of an electrical supply system |
JP6870433B2 (ja) * | 2017-03-31 | 2021-05-12 | セイコーエプソン株式会社 | 制御装置、およびロボットシステム |
JP2018171668A (ja) * | 2017-03-31 | 2018-11-08 | セイコーエプソン株式会社 | 制御装置、ロボット、およびロボットシステム |
US11025563B2 (en) | 2017-04-13 | 2021-06-01 | Johnson Controls Technology Company | Space-aware network switch |
US10691081B2 (en) | 2017-04-13 | 2020-06-23 | Johnson Controls Technology Company | Building management system with space and place utilization |
US10742441B2 (en) | 2017-04-13 | 2020-08-11 | Johnson Controls Technology Company | Unified building management system |
US10599115B2 (en) | 2017-04-13 | 2020-03-24 | Johnson Controls Technology Company | Unified building management system with space use case profiles |
US10496647B2 (en) * | 2017-04-18 | 2019-12-03 | Microsoft Technology Licensing, Llc | Delay detection in query processing |
JP6585656B2 (ja) * | 2017-05-10 | 2019-10-02 | 株式会社ソニー・インタラクティブエンタテインメント | 製造ライン用コンピュータシステム及びそのネットワーク設定方法 |
CN110999200B (zh) * | 2017-07-28 | 2023-10-03 | 皇家飞利浦有限公司 | 一种用于评估监测函数以确定是否满足触发条件的方法及系统 |
JP6940365B2 (ja) * | 2017-10-12 | 2021-09-29 | 日立Astemo株式会社 | 情報更新装置 |
US11054811B2 (en) * | 2017-11-03 | 2021-07-06 | Drishti Technologies, Inc. | Systems and methods for line balancing |
EP3539665B1 (de) * | 2018-03-16 | 2022-08-03 | Eppendorf SE | Elektronisches labor-dosiersystem für flüssigkeiten und verfahren zum betrieb eines elektronischen labor-dosiersystems für flüssigkeiten |
GB2572175B (en) * | 2018-03-21 | 2022-10-12 | Emotech Ltd | Processing a command |
CN108536063A (zh) * | 2018-04-10 | 2018-09-14 | 陕西智多搭智能科技有限公司 | 一种基于网络平台的度假村环境监测系统 |
US20190347239A1 (en) * | 2018-05-11 | 2019-11-14 | Qualcomm Incorporated | Generalized configurable trigger |
DE102018111652A1 (de) * | 2018-05-15 | 2019-11-21 | STAHLWILLE Eduard Wille GmbH & Co. KG | Werkzeug und Verfahren zum Betätigen eines Werkzeuges |
US11301349B2 (en) * | 2018-08-07 | 2022-04-12 | Rolls-Royce Corporation | Method and process of cyber security via software imaging |
US10922203B1 (en) * | 2018-09-21 | 2021-02-16 | Nvidia Corporation | Fault injection architecture for resilient GPU computing |
US20200167668A1 (en) * | 2018-11-27 | 2020-05-28 | Sap Se | Dynamic rule execution order |
JP6918849B2 (ja) * | 2019-01-22 | 2021-08-11 | ファナック株式会社 | システム |
US11630679B2 (en) * | 2019-02-19 | 2023-04-18 | Optumsoft, Inc. | Using a lane-structured dynamic environment for rule-based automated control |
US11803168B2 (en) * | 2019-03-08 | 2023-10-31 | General Electric Company | Distributed control modules with cumulating command references |
DE102019107576A1 (de) * | 2019-03-25 | 2020-10-01 | Phoenix Contact Gmbh & Co. Kg | Kombinatorik von digitalen Ausgangsdaten zur autonomen Ermittlung von Prozesszyklen und von einzelnen Prozessschritten |
CN110275804B (zh) * | 2019-05-14 | 2023-08-11 | 芯盟科技有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
US10917740B1 (en) | 2019-07-30 | 2021-02-09 | Johnson Controls Technology Company | Laboratory utilization monitoring and analytics |
US11378934B2 (en) * | 2019-09-09 | 2022-07-05 | Baker Hughes Oilfield Operations Llc | Shadow function for protection monitoring systems |
CA3158770A1 (en) | 2019-11-05 | 2021-05-14 | Opteon Corporation | Input/output apparatus and methods for monitoring and/or controlling dynamic environments |
US11307554B2 (en) * | 2019-11-20 | 2022-04-19 | Younes Faraj | System and method for keyword-based PLC programming |
CN112859660B (zh) * | 2019-11-28 | 2022-06-24 | 上海微电子装备(集团)股份有限公司 | 一种设备同步控制方法、装置、终端及系统 |
EP3876047A1 (de) * | 2020-03-04 | 2021-09-08 | Siemens Aktiengesellschaft | Verfahren und sicherheitsgerichtete steuerungseinrichtung zur ermittlung und/oder auswahl eines sicheren zustands |
JP7452124B2 (ja) | 2020-03-13 | 2024-03-19 | オムロン株式会社 | ロボット制御システムおよび制御方法 |
KR102282850B1 (ko) * | 2020-04-24 | 2021-07-27 | 주식회사 포스코아이씨티 | 로봇 프로세스 자동화를 이용한 입출력장치와 소프트 plc간의 통신 성능 검증 시스템 |
US11536476B2 (en) | 2020-05-12 | 2022-12-27 | Johnson Controls Tyco IP Holdings LLP | Building system with flexible facility operation |
US11276024B2 (en) | 2020-06-25 | 2022-03-15 | Johnson Controls Tyco IP Holdings LLP | Systems and methods for managing a trusted service provider network |
CN112068467B (zh) * | 2020-08-24 | 2022-01-14 | 国微集团(深圳)有限公司 | 数据传输系统、数据存储系统 |
WO2022044279A1 (ja) * | 2020-08-28 | 2022-03-03 | 三菱電機株式会社 | 制御装置及び画像記録方法 |
EP4012517B1 (de) * | 2020-12-10 | 2024-04-10 | Schneider Electric Industries SAS | Ausführungsumgebung zur ausführung eines ereignisorientierten steuerprogramms |
CN113341959B (zh) * | 2021-05-25 | 2022-02-11 | 吉利汽车集团有限公司 | 一种机器人数据统计方法及其系统 |
JP7221463B1 (ja) * | 2021-07-19 | 2023-02-13 | 三菱電機株式会社 | 制御システム及びプログラマブルロジックコントローラ |
CN113681561B (zh) * | 2021-08-27 | 2022-12-06 | 迅立达智能装备制造科技有限公司 | 一种基于物联网的智能工业机器手 |
US20230244204A1 (en) * | 2022-01-25 | 2023-08-03 | Hitachi, Ltd. | Simplified plc programming with mobile device |
CN114978723B (zh) * | 2022-05-26 | 2023-03-17 | 中国电子信息产业集团有限公司第六研究所 | 一种可编程逻辑控制器安全认证方法 |
US20230419220A1 (en) * | 2022-06-28 | 2023-12-28 | Raven Industries, Inc. | Change log processing for chained workflows |
WO2024011147A1 (en) * | 2022-07-05 | 2024-01-11 | Opteon Corporation | Systems and methods for controlling dynamic environments |
EP4369117A1 (de) * | 2022-11-14 | 2024-05-15 | Leuze electronic GmbH + Co. KG | Sicherheitsanordnung |
CN116300681B (zh) * | 2023-05-16 | 2023-08-15 | 深圳华龙讯达信息技术股份有限公司 | 一种用于plc的自动接线监测方法及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002297209A (ja) * | 2001-03-29 | 2002-10-11 | Matsushita Electric Ind Co Ltd | シーケンス制御装置におけるシーケンスプログラム格納方法 |
US20090172223A1 (en) * | 2007-12-31 | 2009-07-02 | Schneider Automation Inc. | Method and Apparatus for Distributing Configuration Files in a Distributed Control System |
US20090234471A1 (en) * | 2008-03-17 | 2009-09-17 | Sundeep Chandhoke | Industrial Control with Integrated Machine Vision |
US7613783B2 (en) * | 2004-08-17 | 2009-11-03 | Schneider Automation Inc. | Gateway having an input/output scanner |
JP2010079355A (ja) * | 2008-09-24 | 2010-04-08 | Koyo Electronics Ind Co Ltd | 複数plc間の協調制御システム |
US20110022192A1 (en) * | 2006-09-29 | 2011-01-27 | Rockwell Automation Technologies, Inc. | Management and development of an industrial environment |
CN201765486U (zh) * | 2010-03-05 | 2011-03-16 | 姜永东 | 基于云计算的设备监控系统 |
US20110077749A1 (en) * | 2009-09-30 | 2011-03-31 | General Electric Company | Multi-processor based programmable logic controller and method for operating the same |
DE102009047024A1 (de) * | 2009-11-23 | 2011-05-26 | Beckhoff Automation Gmbh | Parallelisierte Programmsteuerung |
CN102183939A (zh) * | 2011-05-27 | 2011-09-14 | 江苏凯达电力科技有限公司 | 一种变电站室内环境安全智能控制系统 |
Family Cites Families (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5330876B1 (zh) | 1966-06-14 | 1978-08-30 | ||
JPS5364181A (en) | 1976-11-17 | 1978-06-08 | Toshiba Corp | Matrix type sequence controller |
US4380698A (en) * | 1980-07-25 | 1983-04-19 | Roper Corporation | Multiprocessor control bus |
JPS5864502A (ja) * | 1981-10-15 | 1983-04-16 | Hitachi Ltd | プラント分散制御方法 |
US4517637A (en) * | 1983-04-21 | 1985-05-14 | Inconix Corporation | Distributed measurement and control system for industrial processes |
US4858101A (en) | 1987-08-26 | 1989-08-15 | Allen-Bradley Company, Inc. | Programmable controller with parallel processors |
US4876664A (en) | 1987-08-26 | 1989-10-24 | Allen-Bradley Company, Inc. | Programmable controller with a dual intermodule message system |
US5287548A (en) | 1988-02-29 | 1994-02-15 | Allen-Bradley Company, Inc. | Programmable controller having a stored program with both machine language instructions and source code data |
US5222017A (en) * | 1990-11-23 | 1993-06-22 | The University Of British Columbia | Control system to synchronize slave computers |
EP0664897B1 (en) | 1992-10-19 | 1998-11-25 | Siemens Energy & Automation, Inc. | High speed programmable logic controller |
US5600845A (en) | 1994-07-27 | 1997-02-04 | Metalithic Systems Incorporated | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US5748468A (en) | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
EP0755829B1 (en) | 1995-06-29 | 2004-01-14 | Yazaki Corporation | Multiplex transmission system |
WO1998000809A1 (en) | 1996-06-28 | 1998-01-08 | Hopkins T Eric | Image acquisition system |
CN1180324C (zh) * | 1999-03-15 | 2004-12-15 | 西门子能量及自动化公司 | 具有短持续脉冲检测能力的可编程逻辑控制器 |
CN1202446C (zh) | 1999-03-15 | 2005-05-18 | 西门子能量及自动化公司 | 用于可编程逻辑控制器的输入滤波器和相关的方法 |
ES2263465T3 (es) | 1999-03-30 | 2006-12-16 | SIEMENS ENERGY & AUTOMATION, INC. | Metodo, sistema y aparato, para un controlador logico programable. |
JP3621315B2 (ja) | 1999-11-22 | 2005-02-16 | Necエレクトロニクス株式会社 | マイクロプロセッサシステム |
DE19958825A1 (de) | 1999-12-07 | 2001-06-13 | Zeiss Carl Jena Gmbh | Verfahren zur Kontrolle eines Steuerungssystems |
US6567709B1 (en) | 2000-02-04 | 2003-05-20 | Rem Technology | Integrated monitoring, diagnostics, shut-down and control system |
DE10013541A1 (de) | 2000-03-20 | 2001-10-04 | Univ Halle Wittenberg | System für die prozessadaptive Optimierung von industriellen Kommunikationssystemen |
US6665650B1 (en) | 2000-06-15 | 2003-12-16 | Agilent Technologies, Inc. | Intelligent logic activity resolution |
US6618628B1 (en) | 2000-10-05 | 2003-09-09 | Karl A. Davlin | Distributed input/output control systems and methods |
US6968242B1 (en) | 2000-11-07 | 2005-11-22 | Schneider Automation Inc. | Method and apparatus for an active standby control system on a network |
EP1233346A1 (de) | 2001-02-14 | 2002-08-21 | Micronas GmbH | Netzwerk-Co-Prozessor für Kraftfahrzeuge |
US6646564B1 (en) | 2001-03-07 | 2003-11-11 | L'air Liquide Societe Anonyme A Directoire Et Conseil De Surveillance Pour L'etude Et L'exploitation Des Procedes Georges Claude | System and method for remote management of equipment operating parameters |
JP3748078B2 (ja) | 2001-06-22 | 2006-02-22 | オムロン株式会社 | 安全ネットワークシステム及び安全スレーブ |
WO2003001306A1 (fr) | 2001-06-22 | 2003-01-03 | Omron Corporation | Systeme de reseau securise, esclave securise et controleur securise |
US6944746B2 (en) | 2002-04-01 | 2005-09-13 | Broadcom Corporation | RISC processor supporting one or more uninterruptible co-processors |
US20070013547A1 (en) | 2003-02-14 | 2007-01-18 | Boaz Jon A | Automated meter reading system, communication and control network from automated meter reading, meter data collector, and associated methods |
JP2005129026A (ja) * | 2003-10-02 | 2005-05-19 | Omron Corp | プログラマブルコントローラおよび通信ユニットならびにコントローラシステムおよびデータ処理方法ならびに変数解決方法およびデータ受渡方法 |
US7167971B2 (en) | 2004-06-30 | 2007-01-23 | International Business Machines Corporation | System and method for adaptive run-time reconfiguration for a reconfigurable instruction set co-processor architecture |
WO2006034023A2 (en) | 2004-09-16 | 2006-03-30 | Ip Fabrics, Inc. | Data plane technology including packet processing for network processors |
US7979706B1 (en) | 2004-09-29 | 2011-07-12 | Rockwell Automation Technologies, Inc. | Systems and methods for queuing an action in industrial automation systems |
US7739720B2 (en) * | 2004-10-14 | 2010-06-15 | Microsoft Corporation | Method and system for merging security policies |
JP4386852B2 (ja) | 2005-03-17 | 2009-12-16 | 日本無線株式会社 | 信号処理装置 |
CN1878038A (zh) | 2005-06-07 | 2006-12-13 | 洛克威尔自动控制技术股份有限公司 | 无线模块化监视和保护系统拓扑结构 |
US7469177B2 (en) | 2005-06-17 | 2008-12-23 | Honeywell International Inc. | Distributed control architecture for powertrains |
CA2615659A1 (en) * | 2005-07-22 | 2007-05-10 | Yogesh Chunilal Rathod | Universal knowledge management and desktop search system |
US7522066B2 (en) | 2006-02-23 | 2009-04-21 | Rockwell Automation Technologies, Inc. | Systems and methods that evaluate distance to potential hazards utilizing overlapping sensing zones |
EP2035902B8 (en) | 2006-05-30 | 2012-12-26 | Schneider Electric USA, Inc. | Remote virtual placeholder configuration for distributed input/output modules |
JP4791909B2 (ja) * | 2006-08-21 | 2011-10-12 | 株式会社東芝 | 高速入出力機能を備える制御装置、及びその制御データの制御方法 |
US7912560B2 (en) * | 2006-09-29 | 2011-03-22 | Rockwell Automation Technologies, Inc. | Module and controller operation for industrial control systems |
US7577482B1 (en) | 2007-03-08 | 2009-08-18 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | System comprising interchangeable electronic controllers and corresponding methods |
US8326092B2 (en) | 2007-04-23 | 2012-12-04 | International Business Machines Corporation | Heterogeneous image processing system |
US8195844B2 (en) * | 2007-09-20 | 2012-06-05 | Siemens Aktiengesellschaft | Systems, devices, and/or methods for managing communications |
JP4774029B2 (ja) | 2007-10-17 | 2011-09-14 | 三菱電機株式会社 | 計装制御システム |
WO2009102192A1 (en) | 2008-02-15 | 2009-08-20 | Eldolab Holding B.V. | Illumination system comprising a light source and a control unit and an illumination control system for controlling a light source by multiple user interface surfaces |
US20110018706A1 (en) | 2008-03-27 | 2011-01-27 | Hochiki Corporation | Alarm device and alarm system |
JP5074327B2 (ja) * | 2008-08-21 | 2012-11-14 | 株式会社日立製作所 | 経路制御システム |
CN101498468B (zh) | 2009-02-17 | 2010-06-02 | 中国安全生产科学研究院 | 锅炉及换热站智能监控系统 |
US8321057B2 (en) * | 2009-03-12 | 2012-11-27 | Red Hat, Inc. | Infrastructure for adaptive environmental control for equipment in a bounded area |
US20100281483A1 (en) | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Programmable scheduling co-processor |
US8250343B2 (en) | 2009-07-21 | 2012-08-21 | National Instruments Corporation | Axial motion control processing by multiple cores respectively executing each of a sequence of functions in parallel for respective portions of a motion system |
US8704903B2 (en) | 2009-12-29 | 2014-04-22 | Cognex Corporation | Distributed vision system with multi-phase synchronization |
US20110161538A1 (en) | 2009-12-31 | 2011-06-30 | Schneider Electric USA, Inc. | Method and System for Implementing Redundant Network Interface Modules in a Distributed I/O System |
CN102200786A (zh) | 2010-03-25 | 2011-09-28 | 北新集团建材股份有限公司 | 轻质矿棉吸声板废料系统远距离液位控制装置 |
US8837493B2 (en) * | 2010-07-06 | 2014-09-16 | Nicira, Inc. | Distributed network control apparatus and method |
CN109634198B (zh) | 2011-10-05 | 2021-06-22 | 奥普唐公司 | 用于监视和/或生成动态环境的方法、装置和系统 |
US9092607B2 (en) * | 2012-10-01 | 2015-07-28 | Oracle International Corporation | Dynamic flow control for access managers |
US10966657B2 (en) * | 2019-05-01 | 2021-04-06 | General Electric Company | Sensing system and method |
-
2012
- 2012-10-05 CN CN201811233180.2A patent/CN109634198B/zh active Active
- 2012-10-05 WO PCT/US2012/059097 patent/WO2013052894A1/en active Application Filing
- 2012-10-05 US US13/646,452 patent/US9494926B2/en active Active
- 2012-10-05 JP JP2014534803A patent/JP2015501025A/ja not_active Withdrawn
- 2012-10-05 EP EP12838771.9A patent/EP2764455B1/en active Active
- 2012-10-05 US US13/646,326 patent/US9459607B2/en active Active
- 2012-10-05 CN CN201280059760.9A patent/CN104025095B/zh active Active
- 2012-10-05 CA CA2857355A patent/CA2857355C/en active Active
-
2015
- 2015-02-12 HK HK15101570.9A patent/HK1201097A1/zh unknown
-
2016
- 2016-10-03 US US15/283,980 patent/US10101720B2/en active Active
-
2017
- 2017-03-09 JP JP2017045058A patent/JP6266819B2/ja active Active
- 2017-12-20 JP JP2017243945A patent/JP6467491B2/ja active Active
-
2018
- 2018-10-01 US US16/148,192 patent/US20190041819A1/en not_active Abandoned
-
2019
- 2019-01-11 JP JP2019003559A patent/JP6650056B2/ja active Active
- 2019-06-27 US US16/454,257 patent/US10983493B2/en active Active
-
2020
- 2020-01-17 JP JP2020006040A patent/JP7154240B2/ja active Active
-
2021
- 2021-04-13 US US17/228,912 patent/US20210373520A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002297209A (ja) * | 2001-03-29 | 2002-10-11 | Matsushita Electric Ind Co Ltd | シーケンス制御装置におけるシーケンスプログラム格納方法 |
US7613783B2 (en) * | 2004-08-17 | 2009-11-03 | Schneider Automation Inc. | Gateway having an input/output scanner |
US20110022192A1 (en) * | 2006-09-29 | 2011-01-27 | Rockwell Automation Technologies, Inc. | Management and development of an industrial environment |
US20090172223A1 (en) * | 2007-12-31 | 2009-07-02 | Schneider Automation Inc. | Method and Apparatus for Distributing Configuration Files in a Distributed Control System |
US20090234471A1 (en) * | 2008-03-17 | 2009-09-17 | Sundeep Chandhoke | Industrial Control with Integrated Machine Vision |
JP2010079355A (ja) * | 2008-09-24 | 2010-04-08 | Koyo Electronics Ind Co Ltd | 複数plc間の協調制御システム |
US20110077749A1 (en) * | 2009-09-30 | 2011-03-31 | General Electric Company | Multi-processor based programmable logic controller and method for operating the same |
DE102009047024A1 (de) * | 2009-11-23 | 2011-05-26 | Beckhoff Automation Gmbh | Parallelisierte Programmsteuerung |
CN201765486U (zh) * | 2010-03-05 | 2011-03-16 | 姜永东 | 基于云计算的设备监控系统 |
CN102183939A (zh) * | 2011-05-27 | 2011-09-14 | 江苏凯达电力科技有限公司 | 一种变电站室内环境安全智能控制系统 |
Non-Patent Citations (1)
Title |
---|
吴奉杰: "基于OPC的FCS监控系统的开发与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113924195A (zh) * | 2019-05-29 | 2022-01-11 | 优傲机器人公司 | 多用途机器人臂的控制 |
CN113253664A (zh) * | 2021-07-02 | 2021-08-13 | 峰岹科技(深圳)股份有限公司 | 协处理器、协处理器控制方法、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2013052894A1 (en) | 2013-04-11 |
JP2019075164A (ja) | 2019-05-16 |
EP2764455B1 (en) | 2022-04-20 |
US20190041819A1 (en) | 2019-02-07 |
US9459607B2 (en) | 2016-10-04 |
JP2017142814A (ja) | 2017-08-17 |
CA2857355A1 (en) | 2013-04-11 |
JP6467491B2 (ja) | 2019-02-13 |
CN104025095A (zh) | 2014-09-03 |
JP2015501025A (ja) | 2015-01-08 |
EP2764455A1 (en) | 2014-08-13 |
JP2018077878A (ja) | 2018-05-17 |
US20130096697A1 (en) | 2013-04-18 |
US20130090745A1 (en) | 2013-04-11 |
US9494926B2 (en) | 2016-11-15 |
CA2857355C (en) | 2022-06-14 |
CN104025095B (zh) | 2018-10-19 |
US20170023918A1 (en) | 2017-01-26 |
US10101720B2 (en) | 2018-10-16 |
HK1201097A1 (zh) | 2015-08-21 |
EP2764455A4 (en) | 2015-08-26 |
JP6266819B2 (ja) | 2018-01-24 |
JP7154240B2 (ja) | 2022-10-17 |
US20210373520A1 (en) | 2021-12-02 |
CN109634198B (zh) | 2021-06-22 |
US10983493B2 (en) | 2021-04-20 |
JP6650056B2 (ja) | 2020-02-19 |
JP2020074166A (ja) | 2020-05-14 |
US20200150612A1 (en) | 2020-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104025095B (zh) | 用于监视和/或生成动态环境的方法、装置和系统 | |
Teodoro et al. | Coordinating the use of GPU and CPU for improving performance of compute intensive applications | |
CN109993278A (zh) | 机器学习环境中的有效卷积 | |
CN108694080A (zh) | 高效线程组调度 | |
US20060149582A1 (en) | Acting on a subject system | |
CN110023962A (zh) | 人类体验到机器人和其他自主机器的高效传递 | |
CN106687927A (zh) | 促进在计算装置上的图形处理单元的命令分组的动态并行调度 | |
US20190138373A1 (en) | Multithreaded data flow processing within a reconfigurable fabric | |
CN110326021A (zh) | 用于图形处理器上的加速计算的执行单元共享混合技术 | |
CN108701053A (zh) | 促进针对计算环境中的任务执行的执行感知混合抢占 | |
Artico et al. | The future of artificial intelligence for the BioTech big data landscape | |
Zhang et al. | Cover combinatorial filters and their minimization problem | |
Marcireau et al. | Sepia, tarsier, and chameleon: A modular C++ framework for event-based computer vision | |
Roop et al. | Synchronous neural networks for cyber-physical systems | |
CN109634766A (zh) | 提升数据流机运行效率的方法、装置、设备及存储介质 | |
Rapanotti et al. | Problem reduction: a systematic technique for deriving specifications from requirements | |
Sciammarella et al. | Modelling analysis and implementation of distributed probabilistic timed actors using theatre | |
Rawson et al. | Petri Net Parallel Computing Theory and Applications | |
CN103026332B (zh) | 可编程装置、层次并行机、用于提供状态信息的方法 | |
Švogor | A framework for Allocation of Software Components onto a Heterogeneous Computing System | |
Penczek | Static Guarantees for Coordinated Components: a Statically Typed Composition Model for Stream-Processing Networks | |
Webster | A rapid prototype design methodology for the ESCRO real-time specification language using Java | |
Krishnamurthy | MOLECULAR SENSORS IN INFORMATION FUSION: AGENTS-BASED INTERFACE |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |