JP7154240B2 - 動的環境を監視及び/又は制御するためのシステム - Google Patents

動的環境を監視及び/又は制御するためのシステム Download PDF

Info

Publication number
JP7154240B2
JP7154240B2 JP2020006040A JP2020006040A JP7154240B2 JP 7154240 B2 JP7154240 B2 JP 7154240B2 JP 2020006040 A JP2020006040 A JP 2020006040A JP 2020006040 A JP2020006040 A JP 2020006040A JP 7154240 B2 JP7154240 B2 JP 7154240B2
Authority
JP
Japan
Prior art keywords
condition
coprocessor
action
control system
master processor
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.)
Active
Application number
JP2020006040A
Other languages
English (en)
Other versions
JP2020074166A (ja
Inventor
ジェイ. フレイザー,マーク
ホプキンス,ティー.エリック
エヌ. シェーファー,ティモシー
Original Assignee
オプテオン コーポレーション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by オプテオン コーポレーション filed Critical オプテオン コーポレーション
Publication of JP2020074166A publication Critical patent/JP2020074166A/ja
Application granted granted Critical
Publication of JP7154240B2 publication Critical patent/JP7154240B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0205Adaptive 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/021Adaptive 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B15/00Systems controlled by a computer
    • G05B15/02Systems controlled by a computer electric
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0428Safety, monitoring
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/052Linking several PLC's
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2002Error 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/2005Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program 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/126Program 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/11Plc I-O input output
    • G05B2219/1153Scan only some I-O registers, use flags
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/22Pc multi processor system
    • G05B2219/2214Multicontrollers, multimicrocomputers, multiprocessing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/22Pc multi processor system
    • G05B2219/2231Master slave

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Programmable Controllers (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Description

[0001] プログラム可能論理コントローラ(PLC)は、典型的には自動化工業電気機械プロセスにおいて機器、機械、及び/又は器具の制御に使用される、特殊な形のコンピュータベース・コントローラである。こうした自動化工業電気機械プロセスの一般的な例は、工場組み立てラインの作業によって与えられる。工場組み立てラインの動的な環境では、部品/コンポーネントの製造、組み立て、及び/又は梱包、並びに、製造、組み立て、及び/又は梱包の様々な段階における部品/コンポーネントの移送に関連付けられた、複数台の工業機器、機械、及び/又は器具(簡単にするために、まとめて「機器」と呼ぶ)が存在する場合がある。
[0002] 図1は、工場組み立てラインの作業などの、自動化工業プロセス10に関連した従来のPLC50の典型的な役割の一般的な図を提供する。工場組み立てラインの動的環境は、複数台の機器20に加えて、通常、複数台の機器20を動作させるためのいくつかの制御デバイス30(例えばアクチュエータ)、並びに、部品/コンポーネントの製造、組み立て、梱包、及び/又は移送に関連付けられた、機器の状況及び/又は様々な条件の指示を提供するための複数の入力デバイス40(例えばセンサ)を含む。入力デバイス40によって提供されるこうした指示は、しばしば、動的環境の「状態」又は「条件」と呼ばれる。機器20を動作させるために使用される制御デバイス30のいくつかの例は、磁気リレー、ソレノイド、電気モーター、及び、空気圧又は油圧シリンダを含む。入力デバイス40のいくつかの例は、リミット・スイッチ、位置センサ、アナログ・センサ(例えば圧力又は温度センサ)、及びイメージング・デバイス(例えばカメラ)を含む。
[0003] 一般的に言えば、PLC50は、入力デバイス40によって提供される入力信号66を監視するために使用される。これらの入力信号は、それぞれ、又は様々な組み合わせで、時間に応じた動的環境の異なる状態(条件)を表す。所与の時点で存在する入力信号に応答して、PLC50は、自動化プロセス10が効率的かつ予測通りに実施されることを保証するために、工業機器20を動作させるための制御デバイス30への出力信号68を生成する。そのため、PLC50は、一般に、プロセス10を実装する機器20によって実行されるアクションの所定のシーケンスを調整するために使用され、それぞれのアクションは、入力デバイス40によって(入力信号66を介して)提供される情報に左右される、ある一定の時間ウィンドウ内に発生することが必要な場合がある。
[0004] 典型的なPLCは、プロセッサ実行可能命令を記憶するためのプログラム可能メモリを含み、論理、シーケンシング、タイミング、カウンティング、及び演算などの機能を実装するために、様々な他の電子コンポーネントを使用する。一般的なアーキテクチャ及び機能の様々な態様に関して、PLCは、多くの点で汎用コンピュータ(例えばデスクトップ又はラップトップのパーソナル・コンピュータ)に類似しているが、汎用コンピュータは典型的には計算及び表示タスクに対して最適化されているのに対して、PLCは一般に、自動化工業プロセスなどの動的環境におけるタスクの制御に対して最適化されている。したがってPLCは、一般に、被制御動的環境のための特定用途向け制御コンピュータであるとみなされる。PLCはしばしば、自動化工業プロセスの厳しい条件で使用されるため、パッケージ設計の観点からすると、従来のPLCはしばしば、PLCが、物理的な振動、過酷な温度及び湿度条件、ほこり又は潜在的に有害な材料、並びに電気的に雑音の多い環境のうちの、1つ又は複数にさらされる可能性がある、厳しい環境に耐えるように、堅固に設計される傾向がある。
[0005] 図2は、図1の従来のPLC50を構成する典型的な電気コンポーネント/回路(例えば「ハードウェア」)の汎用ブロック図を示す。図2に示されるように、PLC50の基本機能コンポーネントは、プロセッサ・ユニット52、メモリ54、電源56、入力インターフェース58、出力インターフェース60、及び、1つ又は複数の通信インターフェース62を含み、すべてが互いに通信可能に及び/又は電気的に結合されている。図2は、PLC50に通信可能に結合され、PLCをプログラミングするために使用される、プログラミング・デバイス64も示す。
[0006] 図2において、プロセッサ・ユニット52は、入力インターフェース58によって受信される入力信号66を解釈し、次に、メモリ54内に記憶されたプログラム(例えば一連のプロセッサ実行可能命令)に従って制御アクションを実装するように、出力インターフェース60を介して出力信号68を提供するための、マイクロプロセッサを含む。特に、メモリ54は、マイクロプロセッサによって実装されることになる制御アクションを表す命令、並びに、入力信号、出力信号、及び、様々な命令を実行する際のマイクロプロセッサの動作に関する、様々なデータを含む、プログラムを記憶する。入力インターフェース58は、外部入力デバイス(例えばセンサ、スイッチ、メータ、カウンタなど)から受信される入力信号66を介して、プロセッサ・ユニット52に情報を提供する。次にプロセッサ・ユニット52は、出力信号68を介して外部出力デバイス(例えばバルブ、モータなど)に制御アクションを送信する。
[0007] 図2において、それぞれの入力及び出力インターフェースを構成するコンポーネントの例は、被制御動的環境に関連付けられた様々な外部入力及び出力デバイスと適切にインターフェースするように、アナログ-デジタル変換器、オプトカプラ/オプトアイソレータ(optocoupler/optoisolator)、バッファ、ラッチ、及びドライバを含むことができる。図2では、例示の目的で、4つの入力信号及び4つの出力信号が示されているが、異なるタイプの従来から使用可能なPLCが、異なる数の入力信号(ある数Nの入力信号)を受け入れ、異なる数の出力信号(ある数Xの出力信号)を提供するように構成可能であること、並びに、入力信号と出力信号の数が必ずしも同じである必要がないことを理解されたい。一般に、入力信号の数N及び出力信号の数Xは、図1の自動化プロセス10を監視するために使用される入力デバイス40の数及び機器20を制御するために使用される制御デバイス30の数によって、少なくとも部分的に規定される。
[0008] 図2に示されるPLC50において、通信インターフェース62は、様々なデータ(プロセッサ・ユニット52による実行のためのプログラム、入力信号、出力信号、プログラム実行の際にプロセッサ・ユニット52によって使用されることになる他のデータなどのうちの、1つ又は複数に関係する可能性がある)を、1つ又は複数の通信ネットワークを介して、1つ又は複数のネットワークベースの外部入力/出力デバイス及び/又は他のリモートPLCから、又はそれらへ、受信及び送信するために使用される。一般に、通信インターフェース62は、こうした機能をデバイス検証、データ獲得、ユーザ・アプリケーション間の同期化、及び接続管理として実装する。電源56は、AC電圧を、PLC内の様々な回路を動作させるために必要な低いDC電圧(例えば5ボルト)に変換する。最終的に、(いくつかの例において、通信インターフェース62を介してPLC50に結合可能な)プログラミング・デバイス64は、プロセッ・ユニット52によって実行されることになるプログラムをメモリ54内に入力するために使用され、典型的には、このプログラムはプログラミング・デバイス64内で開発/作成された後、PLC50のメモリ54に転送される。
[0009] 図3は、特に、プロセッサ・ユニット、様々なメモリ要素、入力/出力インターフェース、及び情報転送を容易にするためのバスに関連して、図2に示されたPLC50の内部アーキテクチャの追加の細部を提供する。例えば図3は、プロセッサ・ユニット52(図2ではCPUとして示す)がクロック52Aに関連付けられ、その周波数がPLCの動作速度を決定し、PLC内の様々な要素に対してタイミング及び同期を提供することを示す。PLC内の情報は、プロセッサ・ユニット、様々なメモリ要素内で、並びに、複数のバスを介して入力/出力インターフェース58及び60との間で搬送され、特に、PLCは、PLCの構成要素との間でデータを移送するためのデータ・バス、記憶されたデータにアクセスするためにロケーションのアドレスを送信するためのアドレス・バス、及び、内部制御アクションに関する信号のための制御バスを、使用する。PLCアーキテクチャは、入力/出力インターフェース58及び60(それぞれ、ここからの入力信号66は外部入力デバイスから受信され、出力信号68は外部出力デバイスへ提供される)と、I/Oシステム・バスとPLCのデータ・バスとの間で入力/出力情報を転送するように構成された入力/出力ユニット55との間での、通信用のI/Oシステム・バスも含むことができる。
[0010] 一般に、図3に示されたアーキテクチャのプロセッサ・ユニットCPU)52は、データの操作、並びに、算術演算(例えば加算、減算、乗算、除算)及びデジタル論理演算(例えばAND、OR、NOT、及びEXCLUSIVE-OR)の実行に対する責務を負う、算術論理演算ユニット(ALU)と、プログラム実行に関連する情報を記憶するために使用される内部メモリ・レジスタと、クロック52Aの出力を受信し、動作のタイミングを制御するための、内部制御ユニットとを、含む。メモリ54を構成する様々なメモリ要素は、オペレーティング・システム及びプロセッサ・ユニットによって使用される固定データ用の永続ストレージを提供するための読み取り専用メモリ(ROM)54Aと、PLCによって実行されることになるプログラム用に使用されるユーザ・プログラム・ランダム・アクセス・メモリユーザ・プログラムRAM)54Bと、データ(入力及び出力信号の状況、タイマ及びカウンタ並びに他の内部デバイスの値などに関する情報)に使用されるデータ・ランダム・アクセス・メモリデータRAM)54Cとを、含むことができる。PLCによって実行されることになるプログラムは、不揮発性メモリ内にも記憶可能である。
[0011] 図3に示されるPLCアーキテクチャから、従来のPLCはしばしば、汎用コンピュータというよりも特定用途向けコンピュータであるとみなされるが、PLC及び汎用コンピュータはどちらも、「フォン・ノイマン」コンピュータ・アーキテクチャの多くの態様を共有することが理解されよう。フォン・ノイマン・コンピュータ・アーキテクチャにおいて、コンピュータ命令(ユーザ・プログラムRAM54B内に記憶された「ユーザ・プログラム」)並びにプログラム実行に必要な(例えばデータRAM54C内に記憶された)任意のデータには、共通バス・アーキテクチャを介して(すなわち、図3に示されたアドレス、データ、及び制御のバスを介して)、様々なメモリ要素からアクセスされる。従来のPLCは、特定の自動化工業プロセスに対応する特定の機能を実装する特定用途向けコンピューティング・デバイスであることによって、コンピュータ性能を調整するように試行するにもかかわらず、従来のPLCのアーキテクチャは、命令を逐次実行し、並列実行用の容量を事実上有さないため、その性能を基本的に制限する。
[0012] PLCのプログラミングは、主に、所与の時点で様々な機器によって実装されている自動化プロセスに関連付けられた、感知された条件(「状態」)を表す1つ又は複数の入力信号を処理する、デジタル論理機能を指定することに関係している。自動化プロセスの監視された条件で動作するデジタル論理機能は、監視された条件に応答して1つ又は複数の制御信号を生成する。前述のように、これらの制御信号は制御デバイスに適用され、次にこの制御デバイスが、自動化プロセスのさらなる実装に関与する何らかのアクションを実行するために、様々な機器を制御する。高水準のPLCプログラムは、一般に、時間に応じて監視された条件に応答して、1つ又は複数のアクションのシーケンスを実装する(例えば、A又はBが発生した場合にCを作動させる、A及びBが発生した場合にDを作動させる)。自動化プロセスは、アクチュエータがプロセスを新しい条件に向かわせるように機器を制御するのと共に経時的に進化していく。したがって前述のように、自動化プロセスは、条件の進化(evolution)がPLCによって監視される動的環境を構成し、ここでPLCは、監視されたそれぞれの条件に基づいて、アクチュエータが環境を新しい条件に向かわせるように、制御信号を決定及び更新する。
[0013] 多くの従来のPLCは、監視される条件を表す入力信号を評価するために使用されるデジタル論理を成文化するために、「ラダー論理(ladder logic)」プログラミング言語を介してプログラミングされる。一般的なラダー論理プログラミング言語は、通常、ラダーの「横木」に似たグラフィック図を使用し、それぞれの横木は、制御システム・エンジニアによる直観的プログラミングを容易にするための、(旧式の論理制御システムで使用された)電気機械式リレーに関する回路図を表す。ラダー論理は、主にバイナリ変数が含まれる制御ソリューションを実装するのに最適である(例えば、動的環境において監視される条件はそれぞれ、TRUE、すなわち論理1、又はFALSE、すなわち論理0と、表すことができる)。
[0014] しかしながら、様々な自動化プロセス環境において、センサの出力はアナログ信号の場合がある。したがっていくつかのインスタンスでは、所与の入力デバイス/センサの直接出力がバイナリ信号の形でない場合、入力デバイス/センサの出力は、いくつかの点で、バイナリ形式の入力信号66を提供するように事前に条件付けすることができる。例えば、入力信号66のうちの1つとして、監視された温度が特定の温度設定ポイントを上回るか又は下回るかのバイナリ指示を提供するように、温度感知デバイスのアナログ出力を、別の入力として、温度設定ポイント電圧を有する比較器回路に第1に適用することができる。別の方法として、アナログ値を、数学演算及び/又は意思決定を実行するためにシステムによって使用されるマルチビット・デジタル・ワードに符号化された量子化値に、変換することができる。同様に、入力デバイスとして働くカウンタのマルチビット出力を所定のカウントと比較し、入力信号66の1つとして、カウンタ出力が所定のカウントを上回るか又は下回るかのバイナリ指示を提供することができる(別の方法として、ある数Bのビットを有するカウンタの出力を、数Bの入力信号66として直接提供することができる)。更に他のタイプの入力デバイスは、高過渡性信号を生成することが可能であり、こうしたデバイスの場合、エッジ/過渡の発生を示すPLCに好適な持続期間の入力信号を提供するように、ラッチを使用して信号エッジ又は過渡の検出を容易にすることができる。他の例では、入力デバイスは様々なネットワーク化デバイスを含むことが可能であり、これに対して1つ又は複数の通信状況信号(例えば、データ・パケット送信済み/受信済み)は入力信号66の1つとして働くことができる。
[0015] 従来のPLCをプログラミングするためのラダー論理及び他の言語は、一般に、規則ベース・プログラミング言語であるとみなされる。典型的なPLCプログラムは、一連の規則によって構成可能であり、各規則は、自動化プロセスの監視される条件を表す1つ又は複数のバイナリ入力信号(例えばA、B、C、D)、及び、入力信号を評価する特定のデジタル論理に応答して生成される対応する制御信号(例えばX)によって構成される。したがって、いくつかの態様において、PLCプログラム内の規則は、「IF/THEN」ステートメントと同様に見ることができる(例えば、IF(A AND NOT B)AND(C OR D),THEN X)。PLCプログラムは、使用可能な入力信号のセットを介して監視可能な、自動化プロセスのすべての異なる可能な条件を表す異なる組み合わせの入力信号に応答して必要なすべてのアクションを実装するために必要なすべての規則を含む。
[0016] 再度図2を参照すると、プログラミング・デバイス64(ハンドヘルド・プログラミング・デバイス、デスクトップ・コンソール、或いは、ラップトップ又はタブレット・コンピュータなどのパーソナル・コンピュータとすることができる)は、典型的には、規則のセットを含むPLC実行可能プログラムを作成、記憶、及びダウンロードするために使用することができる。プログラムがPLCによって実行される場合、通常、規則は最初から最後へと順次実行された後に繰り返され、規則のセットを順次通過する各パスは、しばしば「スキャン」又は「制御ループ」と呼ばれる。したがって、スキャン又は制御ループの連続する反復は、入力信号を読み取り、プログラム規則内に符号化された論理を使用して入力信号を検査した後、PLCによって出力される制御信号を適宜変更する、PLCの連続サイクルを表す。
[0017] より具体的に言えば、様々なハウスキーピング(housekeeping)作業を含む一般的な動作及びスキャン又は制御ループを実行することに関して、従来のPLCは、通常、循環的に機能する。例えば、電力がPLCに最初に印加された場合、PLCは、様々なハードウエア・コンポーネントが適切に機能していることを保証するために、自己チェック又は診断ルーチンを実行することができる。図2及び図3を再度参照すると、障害又はエラー条件が検出されない場合、PLCは、入力信号66のそれぞれを順次読み取り、所与の入力信号の各読み取りインスタンスを専用のメモリ位置に記憶するように、入力インターフェース58及びメモリ54を制御する。次にPLCは、各規則を順次テストすること(すなわち、プログラム命令を順次フェッチ、復号、及び実行すること)、及び、規則内に符号化された論理を解決することによって、そのプログラムを実行する。
[0018] 特に、各規則について、規則として指定されたある入力信号の記憶済みインスタンスがメモリから取り出され、取り出された入力信号に基づいて規則が評価され、規則を満たしている(すなわち、規則内に指定されたすべての必須条件を満たしている)場合、規則の履行に対応する制御信号が生成される。こうした制御信号が生成された場合、専用のメモリ位置に記憶される。所与の規則の評価は、規則内に成文化されたデジタル論理が解決された場合、異なるメモリ位置(例えばレジスタ)からの複数の読み取り動作、及びメモリ位置への書き込み動作を含むことができる。前述のように、それぞれの規則は、PLCがラダー論理プログラムを実行すると共に順次評価され、したがってPLCは、特定の規則を評価している間、プログラム内に成文化された他の規則には注意を払わない。
[0019] PLCは、規則の評価に応答していずれかの制御信号を生成した場合、これらを更新済みの制御信号68のセットとして出力に提供することができる。次にこれらの制御信号は、自動化プロセスに関連して制御されるように、1つ又は複数のアクチュエータ又は他の機器に送信される。次にPLCは、自己チェックを実行し、それぞれの入力信号を読み取ってそれらをメモリに記憶し、制御ループを完了するためにプログラム規則を実行し、出力用の制御信号(あれば)を更新し、このサイクルを反復的に繰り返すことに戻る。
[0020] PLCが前述のサイクルを完了させるために必要な期間は一般に、「サイクル時間」又は「スキャン時間」と呼ばれる。従来のPLCの典型的なサイクル時間は、およそ10ミリ秒から数100ミリ秒である。サイクル時間は一般に、プロセッサ・ユニットで使用される特定のCPU、スキャンされることになるプログラムのサイズ(例えば、読み取られることになる入力信号の数に少なくとも部分的に依存するプログラムを構成する規則の数、独立した評価が必要な入力信号の組み合わせの数、及び、生成されることになる制御信号の数)、及び、プログラムの実行に従って使用中のシステム機能によって決定される。したがって、プログラムが複雑であるほどサイクル時間は長くなる。
[0021] 従来のPLCにおいて所与のサイクルで評価された場合、大多数の規則は満たされず(すなわち、規則の評価に従って生成される制御信号はない)、規則が満たされない場合、プログラムは単に評価のための次の規則に移動することを理解されたい。このように、従来のPLCでは一般にいずれの制御信号も生成することなく所与のサイクルのかなりの部分が連続する規則の評価に費やされることになる。
[0022] 同様の機能を実装するためにプログラミングされた汎用コンピュータと比較すれば相対的に迅速であるが、PLCのサイクル時間は瞬間的ではない。結果として、PLCは、常にその入力信号を「注視」しているわけではないが、その代わりにPLCは、サイクル時間に応じて定期的に入力信号の状態をサンプリングする。更にサイクル時間は、サンプリングされた入力信号に応答してPLCによって出力される制御信号(満たされた規則に従って生成された場合)を更新する際に、最小遅延を構成する。このように、サイクル時間は、特定の監視される条件(すなわち、1つ又は複数の入力信号に関して特定の値によって表される)に対するPLCの最小応答時間(「反応時間」)として見ることも可能であり、しばしばPLCの「レイテンシー」とも呼ばれる。したがって、このレイテンシーにより、サイクル時間よりも短い期間持続する入力信号は、プログラムによって見逃される可能性がある(一般に、サイクル時間より長い入力信号が存在しなければならない)ことを理解されたい。いくつかのインスタンスでは、外部回路を使用して過渡信号をラッチすることが可能であるため、PLCによって完全に見逃されることはない。しかしながら、ラッチングによって特定の入力信号が「見逃されない」場合であっても、入力信号に応答して生成されることになる制御信号は、制御されている機器の正常動作に対して有効とするには遅すぎるように、PLCによって生成される可能性がある。
[0023] 従来のPLCがプログラムを実行する循環的性質により、入力信号のすべての可能な組み合わせ(何らかのアクションが必要な、制御されている自動化プロセスのすべての可能な条件を表す)は、プログラムの単一制御ループ内で企図されなければならない。言い換えれば、前述のように、1つ又は複数の入力信号によって表される監視される条件が、自動化プロセスの持続期間中の何らかの時点で、(1つ又は複数の制御信号を介して)何らかのアクションを発生させることに何らかの形で関与している限り、特定の監視される条件を評価する1つ又は複数の規則が、プログラム内に存在する必要がある。前述のように、従来のPLCのレイテンシーはプログラムの複雑さに対応するため、アクションが必要なプロセスの可能な条件の数が増加するにつれて、プログラムは大きくなり、レイテンシーは長くなる。更に、多くの自動化プロセスでは、いくつかの条件が他の条件よりも頻繁に発生し、いくつかのインスタンスでは、稀に発生する可能性のある条件が、評価される必要のある複雑な論理を表す規則に関連付けられる場合がある(より多くの処理時間を必要とする)。
したがって、サイクル時間のほとんどの部分は、稀に発生する1つ又は複数の監視される条件を評価するために1つ又は複数の規則を実行することによって、「使い尽くされる」(及びレイテンシーが増幅する)可能性がある。
[0024] 発明者等は、従来のプログラム可能論理コントローラ(PLC)に関連付けられた典型的なレイテンシーが、いくつかのタイプの動的環境(例えば、自動化システム及び/又はプロセスを含む)の監視及び/又は制御にとって、過度に長い可能性があることを認識及び理解した。より一般的に言えば、従来のPLC並びに他の汎用コンピュータは、応答又は反応時間(例えば、1つ又は複数の監視された条件に応答して、機器、機械、及び/又は器具の制御などの何らかのアクションを実行すること)に関連して、著しい速度及び/又は精度が必要な、動的環境の監視及び/又は制御を含む適用例にとって、しばしば適切でない。
[0025] 特に、汎用コンピュータ・アーキテクチャ(又は、汎用プロセッサの小型及び有限のセットを備える関係コンピュータ・アーキテクチャ)を使用し、プログラムを順次又は循環的に実行する、プロセッサベース制御デバイスは、環境の条件の進化に応答して反射的な反応が必要な動的環境において制御機能を実装するには、十分に高速でなく、複数の可能な条件の本質的に同時の評価、及び同様の条件に基づく即時アクションの実行から恩恵を受けることが可能である。反射的な反応を必要とする動的環境の例は、航空機制御、複合化学プロセス制御、及び機械視覚(machine vision)アプリケーション(例えば、自動検査及びロボット誘導などの、様々なプロセスの制御に関するデータを抽出するためのイメージの分析)を含むが、これらに限定されない。
[0026] 上記に鑑み、本明細書で説明される様々な本発明の実施形態は、環境の進化する条件に対する反応が、従来のPLC及び/又は他の従来のコンピューティング・デバイスで可能なよりも著しく低いレイテンシー及び/又は低い変動性レイテンシーを備えることが可能な、動的環境を監視及び/又は制御するための方法、装置、及びシステムを対象とする。
[0027] 本開示では、「動的環境」とは、物理的及び/又は(例えばシミュレーションのために)仮想的のいずれかで実装された、プロセス及び/又はシステムを指し、プロセス及び/又はシステムの条件(本明細書では環境の「状態」とも呼ぶ)は時間に応じて監視可能であり、特定の条件又は条件の進化に応答して、1つ又は複数のアクションを(例えばプロセス及び/又はシステムに適用される制御刺激の形で)実行することができる。以下でより詳細に考察される例示の実装において、動的環境の特定の条件又は条件の進化に応答して実行されるアクションは、本明細書に開示された本発明の方法、装置、及びシステムによって達成されるかなり低いレイテンシーの結果として、ほぼ瞬間的であるという点で、「反射的」性質である。本明細書で開示される概念の多くの実際の適用例は、例えば、自動化工業制御のプロセス及びシステムの物理的実装に関して企図され、本明細書で開示される本発明の概念は、この点で制限されておらず、様々な物理的及び/又は仮想的動的環境において有利に適用可能であることを理解されたい。
[0028] 動的環境の制御についてかなり低いレイテンシーを達成することに関連して、発明者等は、所与の動的環境について、アクションを必要とする異なる条件が異なる時間スケールで、及び/又は異なる時間フレーム内で、発生する可能性がある(例えばいくつかの条件は、他の条件よりも頻繁に、及び/又は、ある他の条件と時間的にごく接近して、発生する可能性がある)ことを認識及び理解した。更にいくつかの条件は、特定の順序で、及び/又は、以前に実行された1つ又は複数の特定のアクションの結果として、より頻繁に発生する可能性がある。したがって、本明細書で説明されるいくつかの本発明の実施形態の一態様では、発明者等は、動的環境全体を全体として考察し、アクションが必要な可能性のある動的環境のすべての時間にわたるすべての可能な条件を企図するのではなく、様々な基準(例えば、時間スケール/時間フレーム、特定パターンの進化、又は条件の変化)に基づいて、動的環境を複数の下位環境(例えばサブプロセス及び/又はサブシステム)に分割することによって、レイテンシーが著しく低い制御方法が実装可能であることを認識及び理解した。言い換えれば発明者等は、発生可能な条件の特定のカテゴリー及び動的環境内で実行可能な対応する必要なアクション(例えば、すべてがある期間内に発生可能な条件のサブセット、特定のアクションが実行された後にのみ発生可能な条件のサブセットなど)を識別することによって、レイテンシーを著しく低減させるために、制御ソリューションを細分化し、複数の査定及び制御リソース間で共有できることを認識した。
[0029] 上記を考慮し、本発明のいくつかの実施形態は(例えば、図1に示された従来のPLCの置換としての)動的環境のための制御システムに関し、制御システムは、「マスタ」プロセッサ(本明細書では「ハウスキーピング」プロセッサとも呼ばれる)と、それぞれが所与の動的環境内で評価される必要のあるすべての可能な条件のサブセットを構成する1つ又は複数の条件の評価に専用の、1つ又は複数の独立した(すなわち非同期の)「スレーブ」コプロセッサ(co-processor)(本明細書では「応答」コプロセッサとも呼ばれる)と、を使用する。制御システム内の所与のコプロセッサが評価するタスクを課せられる条件のサブセットは、前述のようないくつかの異なる基準(例えば、時間スケール/時間フレーム、特定パターンの進化、又は条件の変化)に基づくものとすることができる。本開示では、条件を「評価すること」とは、条件の存在を決定すること(例えば、所与の時点である数Nの監視された入力信号と、条件を表す特定の入力信号値とを比較することによって、条件を「満たすこと」)、及び、条件に応答して適切なアクションを実行すること(1つ又は複数の対応する制御信号、或いは同じ信号を生成するための特定の命令を生成すること)を指す。
[0030] それぞれが動的環境において条件のいくつかのサブセットを評価することに専用の、マスタ「ハウスキーピング」プロセッサ及び1つ又は複数のスレーブ「応答」コプロセッサを含む、こうした制御システムは、動的環境を監視及び制御するために「分割統治(divide and conquer)」法を採用することとみなすことができる。特にマスタ・プロセッサは、アクションが必要な環境のすべての可能な条件を評価するために単一のプロセッサを使用するのではなく、アクションが必要な可能な条件のいくつかのサブセットのみを評価するタスクを1つ又は複数のコプロセッサに課し、それによって、マスタ・プロセッサの著しい処理負担を軽減することができる。このように、制御システム全体のレイテンシーは、コプロセッサ・レイテンシーに依存する(例えば、複数のコプロセッサが使用される場合、制御システム全体としてのレイテンシーは、最大のコプロセッサ・レイテンシーに依存する可能性がある)。
[0031] 前述のように複数のコプロセッサの間で動的環境に関する条件評価プロセスを分配することによって、制御システム全体としてのレイテンシーは、単一のPLC及び/又は汎用コンピュータを使用する従来の制御手法に比べて、大幅に(例えば、いくつかのケースでは桁違いに)軽減される可能性がある。以下でより詳細に考察される様々な実装では、こうした「分割統治」法によって顕著に低い制御システムのレイテンシーが実現されるのみならず、例示の制御システム及び/又はコプロセッサ・アーキテクチャを用いて、予測可能及び反復可能なレイテンシーも実現可能である。低レイテンシー及び低変動性レイテンシーのうちの1つ又は両方は、いくつかの機械視覚アプリケーションにおいて特に有利であり、ここでは機械及び照明システムと正しく同期されたイメージの獲得を含む信頼可能/予測可能な機械挙動が重要である。低レイテンシー及び低変動性レイテンシーは、異なる時間領域内で行われる可能性のあるコンピュータ分析の結果として生じる決定を用いて、上記で示されたように制御アクティビティを調整するためにも重要な可能性がある。
[0032] 本発明に従った制御システムの一実施形態において、(例えばいくつかのケースでは、汎用コンピュータとして実装可能な)マスタ・プロセッサは、1つ又は複数のスレーブ・コプロセッサに通信可能に結合される。各スレーブ・コプロセッサは、その独自の専用メモリ(すなわち、存在する場合は他のコプロセッサと共有しておらず、コプロセッサ自体及びマスタ・プロセッサのみがアクセス可能である)、並びに専用メモリのコンテンツに作用する関連付けられたハードウェア(例えば処理及び/又は論理回路)を含む。所与のコプロセッサの専用メモリのコンテンツは、マスタ・プロセッサによって提供する(すなわち、コプロセッサにロードする)ことが可能である。以下でより詳細に考察される例示のシステム・アーキテクチャにおいて、いくつかの態様では、所与のスレーブ・コプロセッサは、複数のコプロセッサが同時に同じ入力信号のセットを監視すること、及び、同じ入力信号のセットに基づいてそれらの関連付けられた条件を評価することができるように、動的環境の異なる状況を表す入力信号及び(例えばマスタ・プロセッサ及び動的環境との)通信パスへのほぼ自由なアクセスも有する。
[0033] 例示の一実装において、コプロセッサの専用メモリのコンテンツは、動的環境の単一条件の評価に関する情報(例えばプログラム)を含み、したがってこうした実装では、所与のコプロセッサは、コプロセッサの専用メモリに記憶された特定の情報に従って、動的環境の単一の条件のみを評価するように(例えば、専用メモリに記憶されたプログラムを実行するか、或いはメモリ・コンテンツ上に特定のデジタル論理機能を実装するように)構成される(以下で考察される他の実施形態では、コプロセッサは複数の条件を評価するように構成可能である)。スレーブ・コプロセッサは、その条件が存在することを決定した場合、コプロセッサのプログラム/論理に従って対応する規定のアクションを実行し(例えばコプロセッサは、必要に応じて1つ又は複数の制御信号を生成するいくつかの出力を提供する)、その条件が満たされていることをマスタ・プロセッサに通知する。他の実装では、コプロセッサ自体が対応する規定のアクションを実行するのではなく、コプロセッサは、単に、その条件が満たされていることを(例えば、マスタ・プロセッサへの割り込みを生成することによって)マスタ・プロセッサに通知すればよく、これでマスタ・プロセッサは、対応する規定のアクションを実行するように適切に構成可能である。いずれの状況でも、マスタ・プロセッサから少なくとも条件の評価を「オフロード(offload)」することによって、コプロセッサは、制御システム全体としての応答時間を著しく向上させる。
[0034] 以下で更に詳細に考察されるいくつかの実施形態において、その条件が満たされている旨のコプロセッサからの通知に応答して、マスタ・プロセッサは、評価する新しい条件(及び、新しい条件が満たされた場合、実行されることになる対応するアクション)に関する新しい情報を、コプロセッサの専用メモリ内にローディングすることによって、コプロセッサに「再タスク」を課することができる。このように、制御システムの1つ又は複数のコプロセッサに(新しい条件を評価するため、及び/又は新しい/異なるアクションを実行するために)動的に再タスクを課することによって動的環境が経時的に進化するにつれて、マスタ・プロセッサは、動的環境の効果的な制御を容易にする。
[0035] 本発明に従った制御システムのいくつかの実装において、動的環境内に所与の時間フレーム内で評価されることになる複数の条件が存在する場合、それぞれのコプロセッサが異なる可能な条件を評価し、必要に応じて適切なアクションを実行するように構成されるように、複数のスレーブ・コプロセッサを使用することができる。こうした実装の一態様において、動的環境の異なる可能な条件を表すN個の使用可能な入力信号のセットが同一に(例えばバス・アーキテクチャを介して並列に)提供可能であり、評価のためにすべてのコプロセッサが同時に使用可能である。したがって、それぞれのコプロセッサは、独立に(すなわち非同期的に)、N個の使用可能な入力信号のセットを監視し、それらのそれぞれの条件を評価し、適切な場合/必要に応じてアクションを実行し、それらの条件が満たされた場合、マスタ・プロセッサに通知することができる。このようにして、前述のように、制御システムのレイテンシーは所与のコプロセッサのレイテンシーに依存する。コプロセッサが単一の条件を評価するように構成された状況では、コプロセッサのレイテンシーがかなり低いだけでなく、レイテンシーの変動性もかなり低い(また、多くの実用目的では、ほぼゼロである)。
[0036] 本発明の様々な実施形態に従って、様々なコプロセッサの実装が企図される。例えば一実施形態において、コプロセッサは、その専用メモリ内にロードされたかなり短いプログラム(例えば特定の条件を評価するためのループ内部の単一のIF THENステートメント)を実行するフル機能のプロセッサとして実装可能である。このタイプのコプロセッサの実装では、(IF THENループを表す相対的に少ない数の命令を評価する従来のプロセッサに基づく)コプロセッサに関する典型的なレイテンシーは、およそ1マイクロ秒とすることができる。しかしながら、スペース及び/又はハードウェア・コストが重要な実際の考慮事項である適用例の場合、特に、動的環境の制御が多数の条件の評価を必要とし、制御システム内の複数のコプロセッサを関与させる場合、フル機能のプロセッサとしてのコプロセッサの実装は、いくつかのインスタンスにおいて実現困難な可能性がある(例えば、単一の条件の評価に費やされる処理リソースが、必要以上に大きい可能性があり、過度のチップ・スペースを消費する可能性がある)。
[0037] 上記に鑑み、本発明の様々な実施形態に従った他のコプロセッサの実装において、極最新式の特定用途向けコプロセッサは、コプロセッサの専用メモリのコンテンツ及び監視される入力信号に基づいて、比較器機能(例えばIF THENステートメントの機能的等価物)を具体的に実装するための縮小(pared-down)デジタル論理を含み、実質的には、ハードウェア内の大幅な削減を介して、コプロセッサの機能が単一条件の特定の評価へと低減される。こうしたコプロセッサの実装が、低コスト、省スペース、低レイテンシーソリューションの目標を達成する。例示の実装では、例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、又は完全にカスタマイズされた回路において、いくつかのこうしたコプロセッサが安価に実装可能である。
[0038] 前述のような最新式のコプロセッサ実装の一態様において、別の方法として、又は更に低レイテンシーを容易にするために、「条件/アクション・ペア」の形で情報を記憶するための、コプロセッサの専用メモリに対する特定のメモリ構造が使用される。こうしたメモリ構造の一例において、条件/アクション・ペアは、評価されることになる条件を表す第1のビット数、及び、条件が満たされた場合に実行されることになるアクションを表す第2のビット数として配置構成された、メモリ位置(例えば、単一のメモリ・レジスタ、又は複数の隣接するメモリ・レジスタ)に記憶された特定のデータを含む。こうしたメモリ構造が、監視される入力信号と、評価されることになる条件を表す第1のビット数とを比較し、合致している(すなわち条件が満たされている)場合、コプロセッサのゲート出力として実行されることになる対応するアクションを表す第2のビット数を提供するための、簡単かつ相対的に単純なデジタル論理実装を容易にする。したがって、構造化メモリに基づき、比較器及びゲート出力を提供するためのゲートを実装する「条件/アクション・ペア」及び相対的に単純なデジタル論理を構成するコンテンツと、効果的な低レイテンシー、低フットプリント、及び低コストのコプロセッサとが、実現可能である。
[0039] 各コプロセッサに、動的環境に対するすべての可能な条件のうちの単一条件(すなわち最小サブセット)のみを評価するタスクが課せられた、制御システムの構成は、制御システムに関する最低レイテンシーの「退化(degenerate)」ケースと見ることができる。より一般的には、制御システムに関するレイテンシーは、制御システム内の所与のコプロセッサの物理的実装(例えば、フル機能のマイクロプロセッサ対縮小簡略化されたデジタル論理実装)、及び/又は、コプロセッサによって実装されている機能(例えばプログラミングされた論理機能)によって決定される。以下で考察されるように、いくつかの実施形態において、コプロセッサによって実装される物理的実装及び/又は機能は、特に、コプロセッサのレイテンシーの上限がコプロセッサによって評価される条件に必要な応答時間を下回るように、設計される。いくつかのケースでは、こうした要件を満たすには、コプロセッサが単一の条件を評価するようにのみ構成されることが必要であり得るが、他のケースでは、コプロセッサが(例えば、「同時」ではなく順次であるが、意図的に制限された条件数で)いくつかの所定数の条件のサブセットを評価するように構成されることが可能である。一般に、コプロセッサの機能(例えば、コプロセッサによって実行されるプログラム及び/又は処理されることになる情報のサイズ)を意図的に制限することによって、レイテンシーの上限を本質的に保証することができる。
[0040] 所与のコプロセッサの機能を意図的に制限するという前述の前提に基づいて、本発明の様々な実施形態に従った制御システムのいくつかの実装は、特定の動的環境の制御との関連において、以下の設計制約の適切な均衡化に少なくとも部分的に基づくことができる。1)コプロセッサが、何らかの基準に従って(例えば、特定の時間フレーム内で、特定の順序で、以前に実行された特定のアクションに従って)動的環境内に存在することが可能な条件の十分に包括的なサブセットを評価するように構成されることを保証すること、2)コプロセッサが、適切な時間フレーム内で条件が満たされたことに応答してアクションを実行するための、十分低い(が必ずしも達成可能な最低ではない)レイテンシーを有することを保証すること(すなわち、コプロセッサのレイテンシーに予測可能かつ十分に低い上限が存在することを保証すること)、及び、3)コプロセッサの実現が適度に低いハードウェア・コスト及び/又はスペース要件を伴うことを保証すること。
[0041] 上記に鑑み、本発明のいくつかの実施形態は、1つ又は複数のコプロセッサを備えることが可能な「アクション・エンジン」を含む、制御システムを対象とし、アクション・エンジンの所与のコプロセッサは、動的環境内で生じる可能性のある複数の条件の特定のサブセットを評価するように構成可能である。複数のコプロセッサを含むアクション・エンジンの一実装において、各コプロセッサは自律的に機能し、アクション・エンジンのすべてのコプロセッサによって同時に監視されているある数Nの入力信号によって表される1つ又は複数の特定の条件を所与の時点で同時に評価することができる。
[0042] 一実施形態に従ったアクション・エンジンの他の実装において、アクション・エンジンは、レイテンシーの上限を確立し、レイテンシーの十分低い変動性を保証するように、いくつかの固定された最大数の条件まで評価するように構成される。このため、一例では、アクション・エンジンは、それぞれが特定のサイズを有する、ある数の複数の順番にインデックス付けされたメモリ位置(例えばレジスタ又はレジスタの連続するグループ)を含むメモリ構造によって実現される「イベント・テーブル」を備える。一態様において、こうしたメモリ位置のそれぞれは、前述のように「条件/アクション」ペアの形、例えば、評価されることになる条件を表すある第1のビット数、及び、条件が満たされた場合に実行されることになる何らかのアクションを表すある第2のビット数で、情報を記憶するように構成される。他の態様では、イベント・テーブルのそれぞれのメモリ位置は、イベント・テーブル内の所与のメモリ位置がN個の入力信号によって表すことが可能な特定条件の評価「専用」であるように、異なる条件/アクション・ペアを記憶する。
[0043] 前述の例では、アクション・エンジンは、イベント・テーブルに通信可能に結合され、イベント・テーブルのそれぞれのメモリ位置に記憶された条件/アクション・ペアによって表される条件を順次評価するために、N個の入力信号を受信するように構成された、「スキャナ」を更に含むことができる。このため、スキャナは、所与のメモリ位置のコンテンツを読み取り、条件/アクション・ペアの条件部分とN個の入力信号のそれぞれの値とを比較するための、適切なデジタル論理回路(例えば比較器及びゲート出力を実装するための論理ゲート)を含む。一例では、条件/アクション・ペアの条件部分とN個の入力信号との間に1対1の対応が存在するように、条件/アクション・ペアの条件部分は所与のメモリ位置に記憶されたNビットの情報全体を含む。特定の条件が満たされているか否か(すなわち、N個の入力信号のそれぞれの値が条件/アクション・ペアの条件部分と合致しているか否か)にかかわらず、スキャナは、次のメモリ位置に記憶された条件/アクション・ペアのアクション部分とN個の入力信号のそれぞれの値とを比較するように、イベント・テーブル内の次のメモリ位置のコンテンツ読み取りに進む。
[0044] イベント・テーブルの所与のメモリ位置に記憶された条件/アクション・ペアの条件部分によって表される特定の条件が満たされた(すなわち、N個の入力信号のそれぞれの値が条件/アクション・ペアの条件部分と合致している)場合、スキャナは出力として(例えば合致時に比較器によって実行可能とされるゲート出力として)、条件/アクション・ペアのアクション部分を提供する。この出力自体が1つ又は複数の制御信号を構成するか、或いは、動的環境内の機器を制御するために1つ又は複数の制御信号を生成する命令を表すことができる。次にスキャナは、次のメモリ位置に記憶された条件/アクション・ペアの条件部分とN個の入力信号のそれぞれの値とを比較するように、イベント・テーブル内の次のメモリ位置のコンテンツの読み取りに進み、合致が存在する場合、スキャナはゲート出力として、条件/アクション・ペアのアクション部分を提供する。スキャナがイベント・テーブルの最後のメモリ位置に達し、この最後のメモリ位置に記憶された条件/アクション・ペアを適切に処理すると、スキャナはイベント・テーブル内の最初のメモリ位置に戻り、イベント・テーブルの連続するメモリ位置のコンテンツを順次処理するサイクルを反復する。
[0045] いくつかの実施形態において、前述のようなイベント・テーブル及びスキャナを含むアクション・エンジンは、イベント・テーブルのコンテンツ(例えば条件/アクション・ペア、及び場合によっては他の情報)を提供し、イベント・テーブルの特定のメモリ位置への(例えば、マスタ・プロセッサがアクション・エンジンに条件/アクション・ペアを処理させることを希望する特定の順序又はシーケンスに基づく)特定の条件/アクション・ペアの適切なマッピングを監視する、マスタ(又は「ハウスキーピング」)プロセッサに、通信可能に結合することができる。一態様において、マスタ・プロセッサは、アクション・エンジンのスキャナによる処理のために、1つ又は複数の新しい条件/アクション・ペアをそのイベント・テーブル内にロードすることによって、アクション・エンジンに時折又は定期的に「再タスク」を課すことができる。このため、スキャナは、マスタ・プロセッサが1つ又は複数の新しい条件/アクション・ペアをイベント・テーブル内にロード可能である旨の指示に応答して、処理されている特定の条件/アクション・ペアに対応する条件が満たされた旨の指示を、マスタ・プロセッサに提供することができる。こうした満たされた条件の指示は、実行されることになるアクションを表す出力自体の生成(その出力はマスタ・プロセッサによって監視可能である)、又は、アクション・エンジンによって生成されマスタ・プロセッサによって監視される別々の状況信号又は割り込みの形で、構成可能である。更に(又は別の方法として)、スキャナは、イベント・テーブルのフル・スキャンが完了した旨の指示を(例えば、イベント・テーブルの最後のメモリ位置に記憶された条件/アクション・ペアの処理後に)マスタ・プロセッサに提供することが可能であり、その時点でマスタ・プロセッサは、スキャナによるイベント・テーブルの後続スキャン中の処理のために、イベント・テーブルに、1つ又は複数の新しい条件/アクション・ペア、又は条件/アクション・ペアの完全な新しいセットを、再ロードすることができる。
[0046] 前述のようなマスタ・プロセッサ及びアクション・エンジンを含む本発明に従った制御システムの実施形態において、一態様では、マスタ・プロセッサによって達成されるハウスキーピング及び「再タスク」機能は、上記で考察したように、動的環境を制御するための「分割統治」法を容易にする。特に、いくつかの実装において、動的環境内で対応するアクションが必要な場合のある、ある合計数Tの可能な条件が与えられると、マスタ・プロセッサは、合計数Tの可能な条件の特定のサブセットのみを選択し、所与の時点でこの条件の特定のサブセットのみを評価するタスクをアクション・エンジンに課するように、構成(又はプログラミング)される。前述のように、マスタ・プロセッサは、様々な基準に基づくプロセッサによる評価のために、条件の特定のサブセットを選択するようにプログラミングすることができる。一例では、マスタ・プロセッサは、動的環境内で条件のサブセットが発生することが予測される期間に少なくとも部分的に基づいて、及び、様々なデューティ(例えば、動的環境全体との関連においてマスタ・プロセッサ自体にタスクが課せられる監視及び/又は制御機能)に対処する際のマスタ・プロセッサ自体の応答時間(例えば最長又は「最悪」の応答時間)を考慮して、アクション・エンジンによる評価のために条件のサブセットを選択する。
[0047] 例えば所与の動的環境との関連においてそれ独自のデューティを実行している場合、マスタ・プロセッサ自体が、ある期間内に情報を受信、処理、及び応答する機能を制限する。特に、マスタ・プロセッサとして働く汎用コンピュータは、(例えば、スケジューリング及びディスパッチング・ソフトウェアに従って)プロセッサによる対処が必要な複数のプロセスが実行のために割り当てられる方法を管理する、様々なスケジューリング制約を受ける。プロセスがスケジューリングされる際に必要な順次性を考えると、必然的に、所与のプロセスを開始するための要求と、そのプロセスの実行に従った何らかの応答の提供との間の時間を表す、何らかの遅延時間又はマスタ・プロセッサの「応答時間」が存在する。マスタ・プロセッサの応答時間は、通常、少なくとも部分的に、動的環境との関連においてマスタ・プロセッサがその必要な機能に対処するためにスケジューリングが必要なこうしたプロセスの数、並びに、それぞれのプロセスがスケジューリングされる複雑さに基づく。いくつかの点でこの状況は、PLCのスキャン時間又はサイクル時間が、監視される条件に応答して特定の時間フレーム内で制御信号を提供するためのPLCの機能を基本的に制限する、PLCプログラム内に符号化された規則の数及び複雑さに基づくという、従来のPLCの状況に類似している。
[0048] マスタ・プロセッサの応答時間は、スケジューリングが必要なそれぞれのプロセスの数及びそれらプロセスの複雑さ(これは、監視及び制御されている動的環境の要件及び身近な制御タスクの複雑さによって、少なくとも部分的に決定される)に、少なくとも部分的に基づく、何らかの名目上の予測又は標準値を有することが可能である。しかしながら、所与の動的環境においてマスタ・プロセッサによって潜在的に実行される機能の変動性を考えると、通常は、マスタ・プロセッサが情報を処理する際に対処する可能性のある、最長の潜在応答時間、又は「最悪の」応答時間が存在する。マスタ・プロセッサの最悪の応答時間よりも短い期間内に発生する可能性のある動的環境の(それに対するアクションが必要な可能性のある)条件が存在する場合、マスタ・プロセッサ自体は事実上、これらの条件に確実に応答できなくなる。したがって、所与の動的環境との関連におけるマスタ・プロセッサの最長の潜在応答時間又は「最悪の」応答時間は、マスタ・プロセッサがアクション・エンジンによる評価のために条件のサブセットを選択する際の基準の一例としての役目を果たすことができる。このように、マスタ・プロセッサは、事実上マスタ・プロセッサそれ自体がそのように実行できない期間中に、動的環境のある条件を監視することに「留意する」という負荷をアクション・エンジンに負わせる。
[0049] 言い換えれば、動的環境内で条件が予測される可能性のある時間スケール/時間フレームの基準に少なくとも基づいて、マスタ・プロセッサは、マスタ・プロセッサの最悪の応答時間に対応する期間中に、動的環境内で生じる可能性のある条件のサブセットを選択し、その期間中に処理のためにアクション・エンジンに条件/アクション・ペアをロードする。その期間中に、アクション・エンジンは、アクション・エンジンのイベント・テーブル内に表された特定の条件が満たされていることを識別する前に、数百或いは数千のスキャニング・サイクルを完了することができる。条件が評価され、必要な場合/必要に応じて、適切なアクションが実行され、マスタ・プロセッサが再度アクション・エンジンに対応可能になると(すなわち、マスタ・プロセッサの最悪の応答時間内に)、マスタ・プロセッサは、マスタ・プロセッサが他のタスク(他のスケジュールされたプロセス)によって事前に占有され得る次の期間中に、評価のために、1つ又は複数の新しい条件/アクション・ペアをアクション・エンジンのイベント・テーブル内にロードすることができる。一態様では、新しくロードされる条件/アクション・ペアは、以前に評価された条件及び実行されたアクションがあれば、少なくとも部分的にそれらに基づくものとすることができる。このように、マスタ・プロセッサは、動的環境内の条件の進化に対応するものであり、所与の時点で、(例えば、マスタ・プロセッサの応答時間に対応する)特定の期間内に発生することが予測される条件のサブセットのみを評価するように、アション・エンジンに反復的に再タスクを課すことによって、アクション・エンジンに対する著しい処理負荷をオフロードする。
[0050] 前述のアクション・エンジンの例において、一態様では、特定の条件/アクション・ペアを記憶しているイベントの専用メモリ位置の組み合わせは、条件を評価する(及び、満たされた場合、実行されることになるアクションを表す出力を提供する)ために、スキャナのデジタル論理回路に結合された場合、単一の条件の評価に専用の前述のコプロセッサと機能的に等価であることを理解されたい。しかしながらスキャナの構成は、単一の条件を評価するだけでなく、イベント・テーブルのそれぞれのメモリ位置の間で(例えばスキャン又は時分割多重化されるように)「共有される」ことになる評価を、デジタル論理回路が実行できるようにするため、結果として、アクション・エンジンのスキャナ及びイベント・テーブルの組み合わせは、本質的に複数の条件を評価し、必要に応じてアクションを実行するように構成された、コプロセッサを構成することになる。こうしたコンポーネントの配置構成は、ハードウェア・リソースの効率的かつ慎重な使用を容易にする。
[0051] 様々な態様において、アクション・エンジンのイベント・テーブルにおけるそれぞれのメモリ位置のサイズ(例えばビット数)、イベント・テーブル内の専用メモリ位置の合計数、及びスキャナ自体の構成(例えばスキャナによって実装されるデジタル論理)は、特定の動的環境の制御に対して所望のレイテンシーを達成するように指定され、このレイテンシーは、十分低い上限及び/又は十分予測可能な(及び場合によってはごくわずかな)変動性を有する。以下でより詳細に考察される特定の一実装において、イベント・テーブル及びスキャナに基づいて適切に構成されたアクション・エンジンは、(例えば、スキャナの論理機能を駆動している100MHzクロックに基づいて)条件/アクション・ペア当たりおよそ10ナノ秒のアクション・エンジンに関するレイテンシーを達成するため、例えば、それぞれ128の条件/アクション・ペアを記憶している128のメモリ位置を有するイベント・テーブルの場合、およそ1.28マイクロ秒(128×10ナノ秒)のアクション・エンジン・レイテンシーが実現可能である。こうしたレイテンシー・メトリックは、従来のPLCで観察される数十から数百ミリ秒の典型的なレイテンシーに比べて、桁違いに低い。
[0052] 前述の概念及び以下でより詳細に考察される追加の概念のすべての組み合わせは(こうした概念が相互に矛盾しない場合)、本明細書で開示される本発明の主題の一部であるように企図されることを理解されたい。特に、本開示の終わりに記載された特許請求の範囲の主題のすべての組み合わせは、本明細書で開示される本発明の主題の一部であるものとして企図される。
[0053] 当業者であれば、図面は主に例示の目的であり、本明細書で説明される本発明の主題の範囲を限定することは意図されていないことを理解されよう。図面は必ずしも一定の縮尺ではなく、いくつかのインスタンスでは、本明細書で開示される本発明の主題の様々な態様は、異なる特徴を容易に理解できるように、図面内で誇張又は拡大して示されている場合がある。図面内では、同じ参照文字は一般に同じ特徴(例えば、機能的に同様及び/又は構造的に同様の要素)を指す。
[0054] 自動化工業プロセスに関連して、従来のプログラム可能論理コントローラ(PLC)の典型な役割を示す概略図である。 [0055] 図1の従来のPLCを構成する典型的な電気コンポーネント/回路(例えば「ハードウェア」)を示す、概略ブロック図である。 [0056] 特にプロセッサ・ユニット、メモリ、及び入力/出力インターフェースに関連して、図2に示された従来のPLCの内部アーキテクチャの追加の細部を示す、ブロック図である。 [0057] 本発明の一実施形態に従った、動的環境を監視及び制御するための制御システムを示すブロック図であり、制御システムは、1つ又は複数のコプロセッサを備えるアクション・エンジンに通信可能に結合されたマスタ・プロセッサを含む。 [0058] 本発明の一実施形態に従った、動的環境の少なくとも1つの態様を監視、同期化、及び/又は制御するために並列に動作する、複数のコプロセッサを含むアクション・エンジンを示す、ブロック図である。 [0059] 本発明の一実施形態に従った、動的環境の少なくとも1つの態様を監視、同期化、及び/又は制御するために動作する、イベント・テーブル及びスキャナを含むアクション・エンジンを示す、ブロック図である。 [0060] 本発明の一実施形態に従った、図6のアクション・エンジンで使用するのに適したスキャナを示すブロック図である。 [0061] 本発明の一実施形態に従った、図6のイベント・テーブル内での連結レジスタの使用を示す図である。 [0062] 本発明の一実施形態に従った、動的環境の少なくとも1つの態様を制御するために並列に動作するように応答するように構成された、イベント・テーブル及びスキャナをそれぞれが含む、複数のコプロセッサを含むアクション・エンジンを示すブロック図である。 [0063] 機械視覚技法及び機器が使用される動的環境、並びに、動的環境を監視及び制御するための本発明の一実施形態に従った制御システムを示す、ブロック図である。
[0064] 次に、動的環境を監視及び/又は制御するための本発明のシステム、方法、及び装置に関する、及びそれらの実施形態の、様々な概念をより詳細に説明する。上記で紹介され、以下でより詳細に考察される様々な概念は、開示された概念がいずれの特定の実装様式にも限定されないため、任意の多数の方法で実装可能であることを理解されたい。特定の実装及び適用範囲の例は、主に例示の目的で提供される。
[0065] 図4は、本発明の一実施形態に従った、動的環境を監視及び制御するための制御システム100aを示すブロック図である。図1を再度参照すると、従来のプログラム可能論理コントローラ(PLC)50が自動化プロセス10を監視及び制御しているように示されており、以下でより詳細に考察される例示の実装では、図4の制御システムは図1に示されたPLC50の代わりとして構成されている。しかしながら、図4の制御システムはこの点で限定されておらず、本発明の実施形態に従った様々な制御システム並びにその構成要素は、特に低レイテンシー(すなわち著しく速い応答時間)及び/又は低変動性レイテンシーを必要とする、様々な動的環境を監視及び/又は制御するための広範な適用可能性を有することが可能であることを理解されたい。本発明に従った制御システムの例示の一適用例は、図10に関連して以下でより詳細に考察される、機械視覚技法及び/又は機器が使用される動的環境によって与えられる。
[0066] 図4に示されるように、本実施形態の制御システム100aは、アクション・エンジン110aに通信可能に結合されたマスタ・プロセッサ190(「ハウスキーピングCPU」とも呼ばれる)を含む。アクション・エンジン110aは、1つ又は複数の応答コプロセッサ(図4ではそれぞれ、コプロセッサ120a-1及び120a-2と示され、まとめてコプロセッサ120aと示される)を備えることができる。各コプロセッサ120aは、コプロセッサ論理(それぞれコントローラ130a-1及び130a-2、まとめてコントローラ130aと示される)に結合された入力インターフェース158a及び出力インターフェース160aを含む。例示の入力インターフェース158a及び出力インターフェース160aは、RS232インターフェース、イーサネット・インターフェース、ユニバーサル・シリアル・バス(USB)、及び/又は任意の他の適切な並列又は直列通信インターフェースを含むことができるが、それらに限定されない。各コプロセッサ・コントローラ130aは、1つ又は複数の条件(それぞれ条件142a-1及び142a-2、まとめて条件142aと示される)、及び、同じメモリ140aに記憶された条件142aに対応する少なくとも1つの所定のアクション(それぞれアクション144a-1及び144a-2、まとめてアクション144aと示される)を記憶する、専用メモリ(それぞれメモリ140a-1及び140a-2、まとめてメモリ140aと示される)に通信可能に結合される。図4に示されたアクション・エンジン110aは2つのコプロセッサ120aのみを含むが、他の実施形態に従ったアクション・エンジンは、この点で限定されておらず、1つのコプロセッサのみ又は2つより多くのコプロセッサを含むことができることを理解されたい。
[0067] 図4に示された制御システム100aの一態様において、制御システム100aは、相対的に高速な時間スケールで発生する条件を評価するためにアクション・エンジン110aを使用すること、及び、相対的に低速な時間スケールで発生する条件を評価するためにハウスキーピングCPU190を使用することによって、動的環境を監視、制御、及び/又は同期化する。より一般的に言えば、前述のようにいくつかの実施形態では、ハウスキーピングCPU190は、本質的に、ハウスキーピングCPU190それ自体が事実上そのように実行できない期間中に、動的環境のある条件を監視するように「留意する」タスクをアクション・エンジンに課す。一態様において、アクション・エンジン110aが特にある条件を監視する(及び必要であれば同じ条件に応答してアクションを実行する)タスクを課される期間は、ハウスキーピングCPU190の「応答時間」(「レイテンシー」とも呼ばれる)に少なくとも部分的に基づく(この応答時間は、ハウスキーピングCPU自体が対処する必要のある異なるタスク又はプロセスの数が、与えられた情報を処理するハウスキーピングCPUの機能を制限する結果として生じる)。以下で考察されるいくつかの例では、ハウスキーピングCPUがある監視及び制御タスクをアクション・エンジンに委任する期間は、制御されている特定の動的環境との関連において予測可能な、ハウスキーピングCPUの最長又は最悪の応答時間に基づく。
[0068] 上記に鑑み、図4に示された制御システムの例示の一実装では、アクション・エンジン110aは、動的環境を表す入力信号66を評価することによって、高速発生イベントに関して、反射的応答、すなわちハウスキーピングCPU190のレイテンシーよりも高速に実行される応答から恩恵を受ける条件142aに対してスクリーニングする。例示の入力信号66は、デジタル値(ビット)、アナログ値、又はアナログ入力のデジタル表現などの、離散入力と、離散入力のリアルタイム・バージョンと、離散入力のラッチ・バージョンと、直角位相(quadrature)でクロック制御されたカウンタ・ペアから導出されるカウンタ値などの離散入力の導出バージョンと、1つ又は複数の通信ポートから受信したメッセージ(例えばパケット)の復号されたコンテンツと、を含むが、これらに限定されない。入力信号66は、動的環境の条件を構成する単一パラメータ(例えば、温度、圧力、ポジション)、又は、動的環境の条件を構成するこうしたパラメータの集合を表すことができる。
[0069] この反射的挙動を達成するために、アクション・エンジン110a内の各コプロセッサ120aのコントローラ130aは、入力信号66を特定の条件142a(又は条件142aのセット)と比較する。汎用プロセッサとは異なり、各コプロセッサ120aは、そのメモリ内に記憶された特定の条件142aのみを評価するため、コプロセッサ120aを低(及び予測可能)レイテンシーで動作させることができる。コントローラ130aが、入力信号66が特定の条件142aに合致することを決定した場合、コントローラ130aは、対応するアクション144aを実行する。例えば対応するアクション144aの実行は、1つ又は複数の出力信号68を他のデバイス及び/又はシステムに伝送することを含むことができる。別の方法として、アクション144aは、応答を実装するためにハウスキーピングCPU190に割り込みを転送することを含むことができる。
[0070] 同時に、ハウスキーピングCPU190は、入力信号66及び出力信号68の分析を介して、動的環境の進化を監視する。ある状況(例えば動的環境の進化が遅い場合)では、ハウスキーピングCPU190は、それ自体の出力信号を伝送することによって特定の入力信号66に直接応答することができる。他の状況では、ハウスキーピングCPU190は、コプロセッサ120aに再タスクを課すことによって、例えば、メモリ140aに記憶された条件142a及び/又は(所定の)アクション144aのうちのいくつか又はすべてを更新及び/又は置換することによって、動的環境の評価に間接的に応答する。動的環境が組み立てラインである場合、例えばハウスキーピングCPU190は、第1の部品が組み立てラインを離れると、最初は第1の部品を追跡するのに専用であったコプロセッサ120aに、第2の部品を追跡する再タスクを課すことができる。
[0071] ハウスキーピングCPU190とアクション・エンジン110aとの間で責任を分割することによって、ハウスキーピングCPU190は、条件142aによって表されるイベントのサブセット(例えば、動的環境の所与の特定の進化を生じさせる可能性の高い高速発生イベント)に対する処理負担を、アクション・エンジン110aに課すことができる。同時に、ハウスキーピングCPU190は、動的環境のより低速な進化に関連付けられた条件の処理を続行することができる。この分割統治法は、入力信号66によって表されるイベントへのシステムの応答のレイテンシー及び/又はジッタ(jitter)(レイテンシー変動)全体を低減させることができる。いくつかのケースでは、高速発生イベントに関する処理負担の移行は、制御システム100a全体のレイテンシーを、実質的にコプロセッサ・レイテンシーの関数とすることも可能である。
[0072] 比較器論理を用いるアクション・エンジン
[0073] 図5は、動的環境の少なくとも1つの態様を監視、同期化、及び/又は制御するための、他の例示のアクション・エンジン110bを示す。図5に示されたシステム及び特にアクション・エンジン110bが共に使用可能なこうした環境の例は、組み立てライン、検査ライン、自律又は半自律走行車(又は車列)、電力管理システム(例えばスマート・グリッド)、倉庫、産業空間、駐車施設、飛行場、積み出し港、サーベイランス・システム、娯楽用乗り物、及び/又は通信ネットワークを含むが、これらに限定されない。例えばアクション・エンジン110bは、機械制御及び/又はイメージのトリガに使用可能である。
[0074] アクション・エンジン110bは、複数のコプロセッサ(それぞれ図5ではコプロセッサ120b-1から120b-nで示され、まとめてコプロセッサ120bと示される)を含む。各コプロセッサ120bは、高速で、すなわち、汎用コンピュータ又はCPU、例えばハウスキーピングCPU190で同じ動作を実行して達成できるよりも速い速度で、限定数の動作を実行する、特定用途向けコンピュータ・プロセッサである。例示のコプロセッサ120bは、FPGA、ASIC、及び/又は、当分野で知られる任意の他の適切な実装において、実装可能である。
[0075] アクション・エンジン110b内の各コプロセッサ120bは、センサ、アクチュエータ、受信キュー(例えばイーサネット受信キュー)、及び他の動的環境に関する情報ソースから、データを受信するように動作可能に結合される、入力バス102に結合された、それぞれの入力ポート(それぞれ図5では入力ポート158b-1から158b-nと示され、まとめて入力ポート158と示される)を含む。図5はn個のエントリを示すが、当業者であれば、例示のアクション・エンジンは任意数のコプロセッサ120b、例えば1、2、4、8、16、32、64、128、256、512、又は1024個のコプロセッサ120bを有し得ることが容易に理解されよう。
[0076] 各コプロセッサ120bは、1つ又は複数の状態或いは条件の表現(それぞれ条件142b-1から142b-n、まとめて条件142b)、及び、以下で説明されるようにコプロセッサ120bによって実行されることになる1つ又は複数のアクションの表現(それぞれアクション144b-1から144b-n、まとめてアクション144b)を記憶する、それぞれのレジスタ(それぞれ図5ではレジスタ140b-1から140b-nで示され、まとめてレジスタ140bと示される)も含む。各条件142bは、アクション・エンジン・レジスタ140b内の他の条件142bとは独立(及び場合によっては重複)であってよい。条件142bは、アクション・エンジン110b内の1つ又は複数の他の条件142bを満たすことを条件とすることも可能であり、例えば以下でより詳細に説明されるように、まとめてスーパーセット内に論理的に「AND」することができる。
[0077] レジスタ140bは、揮発性又は不揮発性のコンピュータ・メモリなどのコンピュータ読み取り可能記憶媒体、フラッシュ・メモリ、コンパクト・ディスク、光ディスク、磁気テープ、1つ又は複数のフロッピィ・ディスク、FGPA又は他の半導体デバイス内の回路構成、或いは、他の持続性媒体又は有形コンピュータ記憶媒体を含むが、それらに限定されない、任意の適切なタイプのメモリ内に実装可能である。各レジスタ140bはそのそれぞれのコプロセッサ120bに専用であり、すなわちコプロセッサ120bはメモリを共有しない。レジスタ140bをそれぞれのコプロセッサに専用とすることは、競合の問題を低減又は除去するのに役立つ。
[0078] 各コプロセッサ120bは、入力バス102及び入力ポート158を介して受信された入力信号66と条件142bとを比較する、比較器(それぞれ比較器130b-1から130b-n、まとめて比較器130b)又は他の論理要素も含む。すべてのコプロセッサ120bはそれら自体のコンパレータ130bを有し、入力バス102を介して入力信号66を同時に受信するため、コプロセッサ120bは、入力信号66をそれらそれぞれの条件142bと同時に比較することができる。結果として、アクション・エンジン110b内のコプロセッサ120bの数は、比較が実行される速度に影響しない。
[0079] 入力信号66が条件142bと合致する場合、比較器130bは、合致を示す出力(それぞれ出力132-1から132-n、まとめて出力132)を発信する。1つ、複数、又はゼロのコプロセッサ120bにとって、入力信号66に合致する条件142bを含むことが可能である。各コプロセッサ120bは、その出力132を、出力ポート(それぞれ出力ポート160b-1から160b-n、まとめて出力ポート160b)を介して出力バス104に結合することができる。
[0080] 各コプロセッサ120bは、そのそれぞれの条件142bに合致する入力信号66を検出すると、そのそれぞれのレジスタ140b内に記憶されたアクション144bも実行する。アクション144bは、比較器130bの出力132によって制御される論理要素(それぞれ論理要素134-1から134-n、まとめて論理要素134)に結合される。論理要素134が、入力信号66と条件142bとの間の合致を示す出力132を受信すると、論理要素134は、アクション144bによって表されるアクションを実行する。いくつかのケースでは、論理要素134は、ここでは出力信号68として示される追加の情報又は命令を、センサ、アクチュエータ、及び動的環境に関連付けられた他のデバイスなどの他のデバイスに、出力ポート160b及び出力バス104を介して伝送することができる。例示の出力信号68は、デジタル値、アナログ値、及び/又はアナログ値のデジタル表現などの、離散出力、離散出力のラッチ・バージョン、並びに/或いは、1つ又は複数の通信ポート(例えば出力ポート160b)を介して送信されるメッセージ・パッケージ内に符号化される出力データ及び機械動作コマンドを含むが、これらに限定されない。他のケースでは、アクション144bは、コプロセッサ120bがいかなるアクションも実行しない「ノーオペレション(no-op)」命令とすることができる。
[0081] アクション・エンジン110bは、入力バス102、出力バス104、及びレジスタ140bへの追加の接続を介して、ハウスキーピングCPU190にも結合される。(他の実施形態では、アクション・エンジン110b内の1つ又は複数のレジスタ140bは、入力ポート158及び入力バス102を介してハウスキーピングCPU190に動作可能に結合することができる。)ハウスキーピングCPU190は、汎用ハウスキーピング・タスクを実行し、コプロセッサ・レジスタ140b内の条件142b及び/又はアクション144bをロード及び維持する。例えばハウスキーピングCPU190は、アクション・エンジンの動的環境の特定状態の識別、オペレーション・コードが期限切れである旨の指示、アクション・エンジンからの命令、ユーザ及び/又は他のデバイスからの命令などに応答して、1つ又は複数のコプロセッサ120b内の条件/アクション・ペアを置換又は更新することができる。アクション・エンジン110bは、ハウスキーピングCPU190からのリソースを必ずしも必要とせずに、動的環境からの入力に「直接」応答することができるため、ハウスキーピングCPU190は、連続する入力状態への応答に関連したいずれの処理負担も事実上免除されたままであり(すなわちハウスキーピングCPU190は事実上「ロードされない」ままであり)、したがって、アクション・エンジン110bそれ自体が実行することが不可能又は実際的でない可能性があるテスト及びアクションを実行する必要がある場合に、ハウスキーピングCPU190が使用可能である。加えて、ハウスキーピングCPU190は、動的環境の進化に応答するためのクリティカル・パス内にないため、アクション・エンジンの応答を遅延させない。
[0082] イベント・テーブル及びスキャナを用いるアクション・エンジン
[0083] 図6は、動的環境の少なくとも1つの態様を監視、同期化、及び/又は制御するための例示のアクション・エンジン110cを含む、様々なコンポーネントのシステム構成を示す。図6に示されたシステム、及び特にアクション・エンジン110cが共に使用可能なこうした環境の例は、組み立てライン、検査ライン、自律又は半自律走行車(又は車列)、電力管理システム(例えばスマート・グリッド)、倉庫、産業空間、駐車施設、飛行場、積み出し港、サーベイランス・システム、娯楽用乗り物、及び/又は通信ネットワークを含むが、これらに限定されない。例えばアクション・エンジン110は、機械制御及び/又はイメージのトリガに使用可能である。
[0084] アクション・エンジン110cはイベント・テーブル112を含み、これがイベント・テーブル・レジスタ(まとめてイベント・テーブル・レジスタ140c、それぞれはイベント・テーブル・レジスタ140c-1から140c-5)を含み、そのそれぞれが1つ又は複数の条件の表現(図6ではまとめて条件142cと示され、図8ではそれぞれ条件142c-1から142c-5と示される)を記憶する。各イベント・テーブル・レジスタ140cは、イベント・テーブル・レジスタ140c内に記憶された条件に対応する1つ又は複数のアクションの表現(図6ではまとめてアクション144cと示され、図8ではそれぞれアクション144c-1から144c-5として示されるも記憶するイベント・テーブル112及びイベント・テーブル・レジスタ140cは、揮発性又は不揮発性のコンピュータ・メモリなどのコンピュータ読み取り可能記憶媒体、フラッシュ・メモリ、コンパクト・ディスク、光ディスク、磁気テープ、1つ又は複数のフロッピィ・ディスク、フィールド・プログラマブル・ゲート・アレイ又は他の半導体デバイス内の回路構成、或いは、他の持続性媒体又は有形コンピュータ記憶媒体を含むが、それらに限定されない、任意の適切なタイプのメモリ内に実装可能である。
[0085] 各イベント・テーブル・レジスタ140cは、独立条件142cを記憶する。総合すれば、イベント・テーブル・レジスタ140cは、入力バス102に結合された1つ又は複数のセンサ40によって測定可能な動的環境のあらゆる可能な状態を表す条件142cを記憶することができる。しかしながら多くのケースでは、イベント・テーブル・レジスタ140cは、条件142cの再プログラム可能サブセット、例えば、ハウスキーピングCPU190のレイテンシーよりも即時に実行されるアクション144cから恩恵を受ける条件142cのみを、保持することが可能である。いくつかのケースでは、条件142cは重複可能であり、例えば、条件142c-1は温度及び圧力しきい値を含むことが可能であり、条件142c-2は温度及びポジションしきい値を含むことが可能である。図6は例示の目的で5つのイベント・テーブル・レジスタ140cのみを示しているが、他の実施形態では、イベント・テーブル112はより多いか又は少ないイベント・テーブル・レジスタ140c、例えば数十、数百、又は数千のエントリを有することができることを理解されたい。一般に、いずれの応答/反応が必要であり得るかに従って、仮想上は特定の環境に密接に関係する任意数の条件142cを、イベント・テーブル・レジスタ140cとしてイベント・テーブル112内に表すことができる。
[0086] 条件142cの表現に加えて、各イベント・テーブル・レジスタ140cは、状態入力が条件142cに合致した場合に実行されることになる、1つ又は複数のアクション144cの表現も含む。したがって、アクション・エンジン110cのスキャナ130cが、入力信号66がイベント・テーブル・レジスタ140cに記憶された所与の条件142cに合致する旨を決定した場合、スキャナ130cは、イベント・テーブル・レジスタ140cに記憶された対応するアクション144cにアクセスし、動的環境のうちの1つ又は複数の態様を制御するように、アクション144cを実行する。このため、アクション・エンジン110cは、イベント・テーブル内でアクセスされた命令を1つ又は複数の外部デバイスに送信するため、並びに、状態入力及び動的環境に関連する他の情報を、こうした情報の1つ又は複数のソースから受信するための、入力ポート158c、出力ポート160c、及び/又は1つ又は複数の他の通信インターフェース(例えば入力/出力バス、イーサネット・ポート)も含む。
[0087] 図6に示されるように、アクション・エンジン110cは、スキャナ130cを更に備える。入力ポート158cは、イベント・テーブル112及びスキャナ130cから入力バス102への接続を提供する。図6は、アクション・エンジン110cの入力バス102が、CPU190、並びに、セマフォ・レジスタ150、カウンタ42、1つ又は複数のセンサ40、及び受信キュー44(例えばイーサネット受信キュー)の形の通信インターフェースを含む(がこれらに限定されない)、様々な外部デバイスに結合されることも示している。入力バス102にも接続されるスキャナ130cは、各イベント・テーブル・レジスタ140c内の条件142cのセットを、ハウスキーピングCPU190、カウンタ42、センサ40、受信キュー44、及び/又は任意の他の適切なデータ・ソースからの入力バス102に結合された入力信号66と比較する、デジタル論理(図6では図示せず)を含む。いくつかのケースでは、入力信号66は、カメラからのイメージ・データ、ロボット・コントローラからのポジション情報、及び/又は、連続プロセス化学反応器内のミキサ又はフロー制御システムからのフロー情報を評価する、プロセッサなどの、1つ又は複数の埋め込みアプリケーション・システムによって動的環境から導出された、データを含むことができる。いくつかの実装では、生データを事前条件付け又は事前処理することで、データを表すことが必要なビット数を削減することが可能であり、これによってレジスタ140cのサイズを縮小させることができる。
[0088] 図7は、スキャナ130cの可能な一実施形態をより詳細に示すブロック図である。スキャナ130cは、アクション論理132、シーケンシング論理133、及び1つ又は複数のフラグ・レジスタ135に結合された、比較器論理131を含む。カウンタ、状態変化入力、及びフラグ状態を含むがこれらに限定されない、入力信号66は、条件142cに合致しているかどうかを判別するために、イベント・テーブル112からの条件142cを表すデータに関連して、比較器論理131によって評価される。この「条件合致」状況が、アクション論理132に渡される。
[0089] 図7を再度参照すると、スキャナ130cは、比較器論理131からの「条件合致」状況並びにイベント・テーブル112からのアクション144cを表すデータを受信する、アクション論理132も含む。アクション論理132は、1つ又は複数のフラグ・レジスタ135、セマフォ・レジスタ150(図6)、出力レジスタ136、通信論理(図示せず)、カウンタ、及びデータ入力回路にも結合される。「条件合致」状況の状態及びアクション144cを表すデータに依存して、アクション論理132は、以下でより詳細に記述されるように、フラグ・レジスタ135、セマフォ・レジスタ150、出力ポート160に結合された出力レジスタ136、通信論理カウンタ、及びデータ入力回路の状態に影響を与える、動作を実行することができる。加えて、アクション論理132は、例えばアクションが実行され、条件/アクション・ペアの更なる評価が抑止されることになる場合、イベント・テーブル112内の条件142c及び/又はアクション144cの変更を容易にする、イベント・テーブル書き込み調停論理134に結合される。
[0090] スキャナ130c内のシーケンシング論理133(図7)は、比較器論理131、アクション論理132、及びイベント・テーブル112(図6)のアクティビティを同期化する。これによって、イベント・テーブル112内のいずれのイベント・テーブル・レジスタ140cが評価されることになるかを決定する読み取りアドレスが、イベント・テーブル112に提供される。シーケンシング論理133は、アクション・エンジン110cが、イベント・テーブル112内の条件142c及び/又はアクション144cが修正されることになるものと決定した場合、イベント・テーブル書き込み調停論理134に書き込みアドレスも提供する。イベント・テーブル書き込み調停論理134は、イベント・テーブル112への書き込みアクティビティを管理するために、ハウスキーピングCPU190から並びにスキャナ130c内の他の論理から、入力を受信する。CPU190からの書き込み動作とスキャナ130c内の他の論理からの書き込み動作との間に競合が生じた場合、スキャナ動作が割り込まれずに続行できるように、スキャナ130c内の論理に優先権を与えることができる。この競合ケースでは、イベント・テーブル書き込み調停論理134が、CPU190からの書き込みデータを受け入れるためにイベント・テーブル112が使用可能であることを決定するまで、CPU書き込み動作が中断されるように、ハウスキーピングCPU190に待機信号がアサートされる。スキャナ130cの一実施形態において、シーケンシング論理133は、マスタ・クロック(図示せず)のあらゆるサイクルで新しい条件/アクション・ペアが評価されるようにする。
[0091] 様々な態様において、スキャナ130c及びイベント・テーブル112は、単一のコプロセッサ内、例えばFPGA内に、実用ハードウェア記述言語(HDL)コードを使用して実装可能である。スキャナ130cは、イベント・テーブルが記憶されている1つ又は複数の記憶媒体に結合されたユニタリ(unitary)・デジタル論理構造として実装することもできる。別の方法として、スキャナ130cは、イベント・テーブルに通信可能に結合された複数の分散論理コンポーネントとして実装可能である。例えば、一実施形態において、入力信号と所与のイベント・テーブル・レジスタ内の1つ又は複数の条件とを比較し、必要に応じて1つ又は複数の対応する命令にアクセスするために、イベント・テーブル・エントリと専用のデジタル論理との間に1対1の対応が存在するように、それぞれが1つのイベント・テーブル・レジスタ140cに専用の複数のデジタル論理コンポーネントとして、スキャナ130cを実装することが可能である。更に他の実施形態において、スキャナの一部を構成するデジタル論理コンポーネントを、複数のイベント・テーブル・レジスタの特定のグループに専用とするか、又は割り当てることができる。したがって、アクション・エンジンのスキャナ、及びスキャナを構成するデジタル論理回路は、本発明の様々な実施形態に従った多くの方法のいずれかで実装可能であることを理解されたい。
[0092] 例示の一実施形態において、アクション・エンジンのスキャナは、状態に応答/反応するための適切な命令にかなり高速でアクセス(及び、その後1つ又は複数の外部デバイスに送信)できるように、状態入力とイベント・テーブル内の状況の複数のセットとをほぼ同時に(例えば並列に)比較する。その結果、アクション・エンジンは、動的環境のそれぞれの状態に関する情報を処理すること、及びそれに応答してアクションを実行することに関して、著しく低いレイテンシーを示す。
[0093] 例えばスキャナ130cは、単一のレジスタ140cを2クロック・サイクルごとに処理する状態機械として実装可能である。第1のクロック・サイクル中に、スキャナ130cは条件142cを読み取る。条件142cに合致した場合、スキャナ130cは、第2のクロック・サイクル中に対応するアクション144cを実行する。第2のクロック・サイクルは、次のスキャンに対して適切な動作が完了したことを示すためのイベント・テーブル112内のアクション144cへの書き戻しを含むことができる。特に複雑な条件及び/又は多数の入力状態を含む実装は、単一のレジスタを処理するために2つよりも多くのクロック・サイクルを使用することができる。多重サイクル実行を使用するスキャナ130cでは、同時読み取り及び書き込みサイクルを有するデュアル・ポート・メモリが実装可能であり、ここで書き込みサイクルは、前の読み取りサイクル中に処理されたレジスタ140cを書き戻す。デュアル・ポート・メモリの同時読み取り及び書き込みサイクルに関連して、状態機械パイプライン・レジスタ(以下で説明)は、新しいレジスタがあらゆるサイクルで処理されるようにすることが可能であり、レイテンシーを著しく低くする。
[0094] 図6を再度参照すると、アクション・エンジン110cの入力バス102上に提供される1つ又は複数の入力信号66のセットは、入力バス102に結合された様々なソース(例えば、ハウスキーピングCPU190、カウンタ42、センサ40など)から取得可能であり、所与の時点で単一ソースによって、又は所与の時点で複数ソースによって、提供可能であることを理解されたい。こうした1つ又は複数の入力信号66のセットは、所与の時点で少なくとも部分的に動的環境を表すことが可能であり、これらの入力信号66は、それぞれのイベント・テーブル・レジスタ140cに記憶された条件142cのそれぞれと(例えばスキャナ130c)によって比較可能である。
[0095] 入力信号66は、状態の変化(立ち上がり又は立ち下がりエッジ)を検出するために常時評価される。イベント・テーブル112の各スキャンの開始時に、前のスキャン中に発見された任意の入力状態変化は、ラッチ入力(図示せず)としてスキャナ論理に提示される。これは、入力フィルタを通過するいずれの信号も、その持続時間がいかに短いかにかかわらず検出されることを意味する。したがって、たとえ状態変化の持続時間がスキャンの持続時間よりも短い場合であっても、いずれの入力信号に関するいずれの状態変化も、スキャナ論理に提示されることが可能である。
[0096] 図6に示されたアクション・エンジン110cの例示の一実施形態において、入力バス102上に提供された入力信号66のセットが特定のイベント・テーブル・レジスタ140cに関する条件142cに合致する場合、スキャナ130cは、そのイベント・テーブル・レジスタ140cからの対応するアクション144cを実行する。いくつかのケースでは、これらのアクション144cは、セマフォを獲得又は解除すること、或いはスキャナ130cに結合されたフラグを設定又はクリアすることを含むことが可能であり、以下でより詳細に説明されるように、セマフォ又はフラグを使用して条件142cを評価する。次にスキャナ130cは、合致した条件セットに対応する出力信号68を、出力バス104を介して動的環境、ハウスキーピングCPU190、及び送信キュー34(例えばイーサネット送信キュー)に送信する。
[0097] 別の方法として、又は加えて、スキャナ130cを様々な周辺装置に動作可能に結合することができる。例えばスキャナ130cは、カウンタをリセット又はラッチすること、入力レジスタをラッチすること、出力レジスタを設定又はクリアすること、或いはエントリを送信キュー34内にロードすることが可能である。複数スキャナの場合、競合を処理する様々な方法が使用可能である。例えばORゲートによって、入力競合のリセット/ラッチ/設定/クリアが処理可能である。送信キュー34はスキャナ130cに専用とすることが可能であり、データを管理するためのそれ独自の回路プロセスを有することが可能である。スキャナ130cは、別の方法として、送信キュー34を(場合によっては他のスキャナ130cと)共有することが可能であり、回路プロセスはキュー34の所有を管理することが可能である。
[0098] いくつかのケースでは、アクション144cは、アクション・エンジン110cの外部にある1つ又は複数のデバイスに対して、(TCP/IPパケットなどの様々なパケット・モード・コンピュータ・ネットワーク内で使用されるような)データ・パケットとして(例えばアクション・エンジンの1つ又は複数の通信インターフェースを介して)実行される。アクション144cに関する命令を送信するためにデータ・パケットが使用される実装では、いくつかの実施形態において、こうしたパケットのコンテンツは、命令自体のみならず、ある程度命令に関連する追加のデータ(例えばメタデータ)、命令に対応する条件のセット、及び/又は、動的環境の1つ又は複数の他の態様も含むことができる。追加のデータは、イベント・テーブル・レジスタ140cに記憶されたインデックスによって参照される場所で、ハウスキーピングCPU190によって入力可能な、アドレス情報(例えばイーサネット媒体アクセス制御(MAC)アドレス・ヘッダ)及び/又はペイロード・バッファを含むことができるが、これらに限定されない。
[0099] いくつかの実装において、アクション・エンジン110cは、パケット・ペイロードに含めるために(入力バス102に結合された様々な情報ソースの監視に基づいて、及び/又は、イベント・テーブル112に加えてメモリ内に記憶可能な様々な情報に基づいて)こうしたデータを選択又は生成する。例えば、所与の条件142cが満たされた場合、スキャナ130cは、対応するレジスタ140cに記憶されたインデックスに基づいて、対応するペイロード・バッファを選択した後、対応するペイロード・バッファを送信キュー34にコピーすることができる。他のケースでは、データは、組み立て又は検査ラインを通じて追跡されている部品の番号を含むことができる。別の方法として、データは、1つ又は複数のデータ・ソースに関する情報(例えば、センサ40として働き、評価にイメージ情報を提供する、カメラの位置及び/又は向き)を含むことが可能であり、かつ/又は、データは、(イベント・テーブルに記憶された条件のセットと比較される)状態入力自体のいくつかの態様に関連付けられること及び/又はそれらを表すことが可能である。
[0100] マスタ・プロセッサ(「ハウスキーピングCPU」)-プログラミング及び動作
[0101] 図6に示されるような、アクション・エンジン110c及び様々な他のコンポーネントを使用するシステム構成の実施形態では、ハウスキーピングCPU190は、イベント・テーブル112内に条件142c及びアクション144cをロード及び維持する。いくつかのケースでは、ハウスキーピングCPU190は、動的環境の進化(すなわち経時的な条件の変化)に応答して、イベント・テーブル112内の条件142c及びアクション144cのいくつか又はすべてを置換することができる。アクション・エンジン110cは、(例えば、アクション・エンジンが特定の条件の評価を委託されている期間中)必ずしもハウスキーピングCPU190からのリソースを必要とせずに、動的環境の条件を表す入力信号に「直接」(例えば、CPU190の介入なしに、自律的に)応答することができるため、ハウスキーピングCPU190は、これらの特定の条件を評価することに関するいずれの処理負担も事実上免除されたままであり、したがって他のプロセスに対処する(例えば、アクション・エンジン110cにとって、それ自体が実行することが不可能又は実際的でない可能性があるテスト及びアクションを実行する)ためにハウスキーピングCPU190が使用可能である。
[0102] 所与の期間中に、特定の条件を評価することをアクション・エンジン110cに委託すること(又はより一般的には、1つ又は複数の条件を評価するタスクを1つ又は複数のコプロセッサに課すこと)に関して、一実施形態では、ハウスキーピングCPU190は、時間の経過(例えば、既知の期間、又は、今後の外部入力の集合又は監視される条件の特定のシーケンスを条件としている場合に生じる可能性のある未知の期間の、いずれか)を条件としていることによって区別される、別個手続きステップに、特定用途向け機械調整アルゴリズムを分離することによって、タスクをコプロセッサに割り振るように構成される。このため、図6を再度参照すると、ハウスキーピングCPU又はマスタ・プロセッサ190は、動的環境の条件を表す入力信号66を受信するための、1つ又は複数の通信インターフェース192及び/又は1つ又は複数の入力/出力(I/O)ポート、並びに、処理ユニット194がアクション・エンジン(又はより一般的には、様々な実施形態に従った1つ又は複数のコプロセッサ)を制御するための別個の手続きステップを実装するために、プロセッサ実行可能命令、及び必要に応じて様々なプログラム・データを記憶するための、1つ又は複数の処理ユニット194及びメモリ196を、含む。
[0103] 本明細書で開示される手続きステップは、(例えばマスタ・プロセッサ190の処理ユニット194によって)互いに独立して完全に並列に、及び、それらの条件に合致するような(例えば、所与の手続きステップを開始するために、マスタ・プロセッサ190又はアクション・エンジン110cのいずれかによって特定の条件が評価される)任意の順序で、実行可能である。各手続きステップは、以下のうちの1つ又は複数を含むことができる。1)1つ又は複数のプロセス、或いは1つ又は複数のプロセスのインスタンスの開始、2)1つ又は複数のプロセス、或いは1つ又は複数のプロセスのインスタンスの停止、3)1つ又は複数の数学的変換の実行、4)1つ又は複数の出力の提示、5)例えば、ハウスキーピング・プロセッサ190と1つ又は複数のアクション・エンジン110cとの間、アクション・エンジン110c間、動的環境内のデバイスへ、及び任意の他の指定された宛先への、1つ又は複数のメッセージの伝送、6)複数のプロセスがプログラム・コードの所望のセクションからの相互排除を保証できるようにするためのバイナリ・セマフォの獲得又は解除、7)入力及びカウンタ等の周辺装置の状態のラッチ、及び、8)プロセス間の同期及び通信に対する「フラグ」変数の設定又はクリア。(フラグ変数は、マスタ・プロセッサのメモリに記憶された変数とは対照的に、イベント・テーブル・スキャナがアクセスできるレジスタ周辺装置によって実装されるブール変数とすることができる。)
[0104] 本発明の一実施形態において、
マスタ・プロセッサ190によるアクセスが可能な不揮発性、持続性コンピュータ読み取り可能媒体上に符号化された、コンピュータ実装可能命令(例えばSCORE(商標)プログラミング言語で作成)は、各実世界アプリケーションに特有の機械調整タスク(例えば、動的環境における様々な機器を最終的に制御するための、1つ又は複数のコプロセッサ/アクション・エンジンからの出力信号の生成)を記述する。これらの命令が、場合によっては1つ又は複数のアクション・エンジン110c及び/又は1つ又は複数のコプロセッサを使用して、マスタ・プロセッサ190に、1つ又は複数のプロセス、又は状態機械を実装させる。各プロセスは、同じシステムによって、並列に、順番に、又はその両方で、複数回実装されることも可能である。所与のプロセスの同時に実行されるコピーは、プロセスの「インスタンス」と呼ばれ、各インスタンスは、アクション・エンジン110c又は異なるコプロセッサ内の異なるスロット又はスロットのセットによって実行される。
[0105] 各プロセスは状態機械とみなすことが可能であり、状態機械内の各状態は動的環境の特定条件に対応する。プロセス(状態機械)は、1回実行されるワンショット・プロセス、及び、割り込みなしに(例えば反復的に)実行される連続プロセスを含む。ワンショット・プロセス及び連続プロセスはどちらも、例えば、マスタ・プロセッサ190又は他のソースからのコマンドに応答して、或いはコンピュータ実装可能命令のシーケンス内の所定の地点に到達すると、完了前に停止又は終了することができる。
[0106] 各状態機械は1つ又は複数の状態を含み、そのそれぞれがアクション・エンジン/コプロセッサによって実行される「待機」ステートメントとして実装可能であり、その間、アクション・エンジン/コプロセッサは、特定の条件の発生について動的環境を監視する。重要な一態様では、コンピュータ実装可能命令は、満たされた場合、1つ又は複数のアクションの実行と、条件に合致した旨のマスタ・プロセッサへの通知とをトリガする引数としての動的環境の1つ又は複数の条件を有する、「待機」ステートメントの特定の定義を含む。「待機」ステートメントは、本質的には、1つ又は複数の実世界条件に合致した場合に1つ又は複数のアクションが実行されることを指定する。ハウスキーピング・プロセッサ190は、アクション・エンジンに対するアクション・エンジンの動作に適合する、待機ステートメント条件及び関連付けられたアクションをオフロードすることができる。処理ユニット194及びマスタ・プロセッサ190によって実行されるようにコンパイルされたプログラミング言語に従い、待機ステートメント間の命令ブロックは、次の待機ステートメントまで、アクション・エンジン/コプロセッサ及び/又はマスタ・プロセッサ190によって実行される。例えばアクション・エンジンは、それらのアクションがコプロセッサのアクション命令コード(opcode)に適合するという条件で、待機ステートメントに直接従う1つ又は複数のアクションを実行することができる。
[0107] 少なくとも1つの実装において、待機ステートメントは、条件節が満たされるまでプロセスの進行を休止させる。これによってマスタ・プロセッサ190は、各プロセスの現在の待機ステートメント条件を照会すること、及びその条件が満たされた場合にプロセスを続行することによって、プロセスをスケジューリングすることができる。待機ステートメントは「wait for <Boolean-expression>」の形式を有することが可能であり、ここで<Boolean-expression>は動的環境の条件を表す。サブルーチン呼び出しは、ステートメントの条件を評価するために望ましいように作成可能である。例えば、条件はブール・カウンタ条件の評価を含むことができる。カウンタ変数には名前によってアクセス可能であり、オプションでカウンタ名は先行するキーワード・カウンタを伴う。カウンタ比較は、部品検出信号が生成された時のベルト・ポジションなどの、初期値から実行可能である。自動的に宣言されるカウンタ時間を使用して、持続時間を精密に(例えばマイクロ秒の精度で)比較することも可能である。いくつかの例は以下を含む(ハッシュ記号「#」はコメントを示す)。
Figure 0007154240000001

「from」キーワードは、カウンタ・リセットが望ましくない場合に、開発者がアプリケーションに関するカウンタのロールオーバを気にする必要性を除去する。
[0108] 「wait for <duration-expression>」のように引数<duration-expression>を使用することで、特定の期間が経過するまで待機するために待機ステートメントを使用することも可能である。この期間は、ミリ秒単位の時間、他のプロセスが必要とする期間などの相対期間、又は変数として表される時間などの、絶対値として表すことが可能である。式がサブルーチンの呼び出し又は変数値の評価を含む場合、それらの変数値は、待機ステートメントが最初に処理された場合のみ評価される。いくつかの例は以下を含む。
Figure 0007154240000002
[0109] 待機ステートメントは、「wait for <edge> of input <input>」のように、特定の入力の立ち上がりエッジ又は立ち下がりエッジを待機するためにも使用可能である。与えられる入力は、以前に宣言された入力インデックス又は名前付き入力のいずれかとすることができる。複数の入力は、それらのいずれか1つが条件を満たすと、エッジと共に与えることができる。名前付き及びインデックス付き入力は、入力のORリスト内で混合可能である。複数の入力は、ORキーワード又はコンマのいずれかによって分離可能である。入力インデックスは0から始まる。いくつかの例は以下を含む。
Figure 0007154240000003
[0110] 待機ステートメントは、「wait for <state> input(s) <input-list>」のように、1つ又は複数の入力が所望の状態(例えば設定状態又はクリア状態)に変更するのを待機するためにも使用可能である。「AND」キーワードは、条件を満たすためには、すべての入力が所望の状態であることが必要なことを示すために使用可能である。同様に、「OR」キーワードは、入力のうちのいずれかが所望の状態に達した場合に条件が満たされることを示すことができる。いくつかの例は以下を含む。
Figure 0007154240000004
[0111] 待機ステートメントは、「wait for <state> flag(s) <flag-list>」のように、1つ又は複数のフラグが設定又はクリアされるのを待機するために使用可能である。これは、上記のように1つ又は複数の入力が設定又はクリアされるのを待機することに類似している。複数のフラグを与えることが可能であり、「flag」キーワードは、読みやすくするために複数形で使用可能である。フラグは宣言されたフラグ変数で示される。いくつかの例は以下を含む。
Figure 0007154240000005
[0112] 待機ステートメントは、「wait for trigger ladder <integer-expression>」のように、1つ又は複数のトリガ・ラダー(trigger ladder)が発動(fire)するのを待機するために使用可能である。トリガ・ラダーは、そのインデックスで指定可能であり、トリガ・ラダー・インデックスは0で始まる。例は以下を含む。
Figure 0007154240000006
[0113] 他のタイプの待機ステートメントは以下を含むが、これらに限定されない。
・「wait for decreasing counter <counter>」のように直角位相符号器カウンタが減少するのを待機する。これは、部品検出入力の立ち上がりエッジなどの他の条件と共に使用可能である。
・「wait for increasing counter <counter>」のように直角位相符号器カウンタが増加するのを待機する。これも、部品検出入力の立ち上がりエッジなどの他の条件と共に使用可能である。
・「wait for send (sender) to finish」のように、同じプロセス内の前の送信ステートメントが伝送を完了するのを待機する。例えば、進行中の伝送についてペイロードの破損を避けるために、プロセスがペイロードを修正する前にイーサネットSureSync(商標)イベント伝送が終了するのを待機するために使用可能である。
・「wait for message」のように、コプロセッサ又はアクション・エンジン内のイベント・パケット受信器ポートにメッセージが到達するのを待機する。送信側デバイスのデバイスIDは、構成の電力内に記憶するか、又はホスト・コンピュータによってランタイム時に構成することが可能である。イベント送信者が関係する場合、待機ステートメントの後にメッセージ・ポート値をオンに切り換える「if-else if」ステートメントが続くことが可能である。ある実施形態では、メッセージを待機するプロセスは何も待機しない。これにより、プロセスを連続して実行させるか、又はメッセージを待機させることが可能であり、次にスケジューラは、受信したメッセージをプロセスに与えることが可能である。スケジューラが受信器周辺装置からメッセージを読み取ったが、メッセージを待機しているプロセスがない場合、メッセージは破棄することができる。
[0114] 複数の条件を組み合わせて、待機ステートメントが完了するまでにすべてが同時に満たされなければならないようにすることができる。これは、待機ステートメント内の「for」節と「AND」キーワードとを組み合わせることによって実行可能である。例は以下を含む。
Figure 0007154240000007

いくつかのインスタンスにおいて、アクション・エンジン/コプロセッサは、すべての未処理のメッセージ送信が完了するまで、待機ステートメントを実行しない場合がある。メッセージの肯定応答/肯定応答ハンドシェイクなし(no acknowledgement handshake)を実行する際に高レイテンシーを有する可能性のある、1×1デバイスでの通信の場合、この結果、ミリ秒を超える遅延を生じさせる可能性がある。これが望ましくない場合、別々のワンショット・プロセスを使用してメッセージを送信し、主プロセスからこのレイテンシーを除去することができる。
[0115] 一般に、マスタ・プロセッサ190は、可能な限り多くの条件をアクション・エンジン110c及び/又はコプロセッサに委任する。典型的には、マスタ・プロセッサ190は、アクション・エンジン110cのイベント・テーブル112内の各スロットに、及び/又は各コプロセッサに、1つの条件を割り当てる。命令の初期コンパイル、所望のレイテンシー、アクション・エンジン110c及びコプロセッサの機能、条件自体、及び/又はそれ自体の機能に基づいて、それぞれのスロット及び/又はコプロセッサに条件を割り当てることができる。例えばマスタ・プロセッサ190は、動的環境内で複数の条件のうちの第1のサブセットが発生することが予測される期間、動的環境内で複数の条件が発生することが予測される特定のシーケンス、動的環境内で実行された少なくとも1つの以前のアクション、動的環境の現在の状態、マスタ・プロセッサの応答時間、及び、少なくとも1つのコプロセッサの少なくとも1つの属性(例えば、機能状況、処理速度、メモリ・サイズ、入力信号数、入力信号タイプ、出力信号数、及び出力信号タイプ)のうちの、少なくとも1つに基づいて、特定のコプロセッサによる評価に関する条件の第1のサブセットを決定することができる。いくつかの例では、コプロセッサは、条件の何らかの固定最大数よりも少ない条件数を評価するように構成され、これは、動的環境内で必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づくことが可能である。
[0116] マスタ・プロセッサは、例えば動的環境の進化、新しい命令、及び/又は以前記憶された命令に応答して、条件を動的に再割り当てすることもできる。アクション・エンジン110c及び/又はコプロセッサに条件を委任することによって、マスタ・プロセッサ190は、連続して条件を監視する代わりに、他の処理タスクを実行することができる。例えばマスタ・プロセッサは、初回に、条件の第1のサブセットのみを評価するように、及び、条件の第1のサブセットが満たされた場合、複数のアクションのうちの第1のアクションを表す制御情報を提供するように、所与のコプロセッサを構成することができる。その後マスタ・プロセッサは、2回目に、条件の第2のサブセットのみを評価するように、及び、条件の第2のサブセットが満たされた場合、他のアクションを表す追加の制御情報を提供するように、コプロセッサを再構成する。いくつかのケースでは、マスタ・プロセッサは、条件の第1のサブセットが満たされたか否かに少なくとも部分的に基づいて、条件の第2のサブセットを決定することができる。これらのケースの少なくとも1つにおいて、マスタ・プロセッサは、動的環境内で条件の第2のサブセットが発生することが予測される期間、動的環境内で条件が発生することが予測される特定のシーケンス、動的環境の現在の状態、動的環境内で実行された少なくとも1つの以前のアクション、及び、マスタ・プロセッサの応答時間のうちの、少なくとも1つに基づいて、条件の第2のサブセットを決定する。マスタ・プロセッサは、コプロセッサの機能状況(例えばアイドル、アクティブなど)、コプロセッサによって処理された入力信号の第1の数、コプロセッサによって処理された入力信号の第1のタイプ、コプロセッサによって処理された出力信号の第2の数、及び、コプロセッサによって処理された出力信号の第2のタイプを含むが、これらに限定されない、コプロセッサの属性のうちの少なくとも1つに基づいて、条件の第2のサブセットを決定することができる。
[0117] 一態様では、マスタ・プロセッサ190は、最適化コンパイラ(図示せず)からのコンパイル済みコンピュータ実装可能命令に従って、条件を(及び場合によってはアクションも)どのように委任するかを決定する。当業者であれば理解されるように、コンパイラは、(例えば、SCORE(商標)プログラミング言語での)ユーザ作成ソース・コードを、マスタ・プロセッサ、アクション・エンジン、及び/又はコプロセッサによって実行可能な、オブジェクト・コードなどのターゲット言語に変換する。この変換を実行する場合、コンパイラは、ソース・コード内に提示された順序でソース・コードをコンパイルし、同様又はほぼ類似の順序でオブジェクト・コードを生成することができる。
[0118] コンパイラは、ソース・コードをコンパイルすることによって、例えば状態(待機ステートメント/条件)を接続するエッジ(アクション)に沿って状態から状態へと進むことによって生成される、状態機械を分析することも可能である。一例では、ユーザは、例えばコマンドライン引数をコンパイラに提供することによって、使用可能なアクション・エンジン及び/又はコプロセッサのプロファイルをコンパイラに供給する。コンパイラはこのプロファイルを使用して、コンパイル済みオブジェクト・コード内のある条件及びあるアクションを、使用可能なアクション・エンジン及び/又はコプロセッサの機能内として指定する。マスタ・プロセッサは、これらの条件を(及び場合によってはアクションも)、コンパイル済みオブジェクト・コード内に指定されたアクション・エンジン又はコプロセッサに割り当てることができる。いくつかの実施形態において、コンパイラは、指定された条件(及びアクション)へのアクション・エンジン/コプロセッサのリソースのこれらの割り振りをコンパイル時に決定し、これらの割り振りは変更されないままである。
[0119] 他の実施形態では、マスタ・プロセッサは、例えば動的環境の進化或いはシステム又はコンポーネント状況における変化に応答して、アクション・エンジン/コプロセッサのリソースを指定された条件(及びアクション)に動的に割り振ることができる。こうした動的環境において、マスタ・プロセッサは、使用可能なアクション・エンジン/コプロセッサのリソースのプロファイルを、作成及び/又は維持することができる。例えばマスタ・プロセッサは、動作可能に結合されたアクション・エンジン/コプロセッサのデバイスをポーリングすること、動作可能に結合されたデバイスから状況更新を受信すること、及び/又は、コマンドライン引数又は任意の他の適切なインターフェースを介してユーザからプロファイルを受信することによって、使用可能なアクション・エンジン/コプロセッサのリソースに関する情報を取得することができる。
[0120] マスタ・プロセッサ190は、アクション・エンジン110cに全体又は一部が委任された状況、及び、それ自体について予約している状況を含む、プロセス(状態機械)のリストを、作成及び維持することも可能である。動作時に、マスタ・プロセッサ190は、このリストを使用して、システムによって実装された状態機械のそれぞれを進行させる。例えば所与のコプロセッサに、特定の条件(例えば、組み立てライン内の指定されたポイントへの部品の到着)に関して動的環境を監視するタスクを課すことができる。次にプロセスは、条件に関して動的環境を監視する「待機」状態に入る。コプロセッサが条件に合致した(例えば部品が指定されたポイントに到着した)ものと決定すると、プロセスは待機状態を出て、所定のアクション(例えばカメラにその部品の写真を撮るように命令する)を実行する。コプロセッサは、通知信号(略して「通知」)をマスタ・プロセッサ190に送信することによっても、その条件に合致したことをマスタ・プロセッサ190に通知する。例えばコプロセッサは、動的環境の特定の条件がコプロセッサによって監視された条件と合致した場合に合致信号を生成し、この合致信号を通知信号としてマスタ・プロセッサに提供することができる。
[0121] 条件に合致した旨の通知信号(合致信号)をコプロセッサから受信すると、マスタ・プロセッサ190は、コプロセッサによって実装されたものを含む、状態機械のそのリストに関する通知を待機しているそれらの状態機械を進行させる。状態機械に依存して、マスタ・プロセッサ190は条件に合致したことに気付き、コプロセッサにプロセスの実装を続行させることが可能であるか、又は、コプロセッサによって実装された状態機械(プロセス)を休止して、コプロセッサに他の状態機械を実装させることができる。通知を使用して、システムによって実装された他の状態機械を開始、休止、又は信号させることも可能である。
[0122] 要約すると、いくつかの実装において、単一のプロセッサについてコプロセッサによって評価された待機ステートメント条件は、ブール論理と組み合わされたいくつかの下位条件(sub-condition)を有することが可能であり、その後に、全体としての条件及び/又は下位条件を満たすと実行されることになる、1つ又は複数の手続きステップが続き、これは、コプロセッサが所与の時点で単一のプロセス・インスタンスに対して実行するように委託されるものである。条件が満たされアクションが完了すると、コプロセッサはマスタ・プロセッサに通知し、プロセス内の次の待機ステートメントについてコプロセッサに再委託することができる。
[0123] 各状態(条件)は、少なくとも1つの特定のアクションに関連付けることができる。可能であればマスタ・プロセッサ190は同様に、特定の条件を監視するために割り当てられた同じスロット又はコプロセッサに特定の条件に関連付けられたアクションを委任する。いくつかの実施形態では、マスタ・プロセッサ190は、入力及び出力に関するアクションをアクション・エンジン110c及び/又はコプロセッサに委任する。これらのアクションは、パケットの送信、出力の設定、出力のクリア、出力の追加、カウンタのラッチ、フラグの設定、フラグのクリア、セマフォの獲得、セマフォの解除、及びノー・オペレーション(no-op)を含むことができるが、これらに限定されない。いくつかのケースでは、マスタ・プロセッサ190は、関連付けられた条件を監視するために割り当てられたスロット又はコプロセッサの機能に基づいて、アクションを委任する。関連付けアクションを実行するために、関連付けられたアクション及びスロット又はコプロセッサの機能に基づいて、スロット又はコプロセッサに条件を割り当てることも可能である。
[0124] マスタ・プロセッサ190は、それ自体に対して関連付けられたアクションの実行を予約しながら、スロット又はコプロセッサに条件を委任することも可能である。例えばマスタ・プロセッサ190は、メモリ内への情報の記憶、メモリからの情報の取り出し、メモリ内の変数の増分、及びメモリ内に記憶された数に関する算術を含むが、これらに限定されない、メモリ内の情報へのアクセスに関するすべてのアクションを実行することができる。マスタ・プロセッサ190は、必要に応じて、又は所望に応じて、他のタイプのアクションも同様に実行することが可能である。
[0125] 以下に、図6に示されたシステムを含む、本明細書で開示されたシステム及びデバイスを使用する実装に適したプロセス(状態機械)及びサブプロセスのいくつかの擬似コード例を示す。ハッシュ記号(#)は、各例におけるコメントを示す。
[0126] 例1:連続する1状態プロセス
Figure 0007154240000008
[0127] 例1は、「send_on_edge」と呼ばれる連続プロセスであり、コプロセッサには、入力iの立ち上がりエッジ(条件)を待機すること、及び条件が満たされた場合に他のデバイスにパケット(アクション)を送信することの、タスクが課せられる。コプロセッサは、立ち上がりエッジの検出時に、その条件に合致したことをマスタ・プロセッサに更に通知する。この例では、コプロセッサがパケットを送信すると、マスタ・プロセッサは同じ条件及びアクションの命令コード・ペアをコプロセッサのメモリ内に再ロードする。コプロセッサは、コプロセッサが例えばマスタ・プロセッサ190によって休止又は割り込みされるまで、入力iの立ち上がりエッジの監視を続行する。このプロセスは、8回(i=0...7)実装され、各インスタンスは、アクション・エンジン内の別々のスロット上、又は対応するコプロセッサ上で、実行している。
[0128] 例2:連続する2状態プロセス
Figure 0007154240000009
[0129] 例2は、「send_on_pulse」と呼ばれる連続プロセスであり、コプロセッサは、動的環境の進化に応じて2つの状態を繰り返す。第1の状態では、コプロセッサは、例1のように出力iで現れるために立ち上がりエッジを待機する(これはこのプロセスの第1の条件)。コプロセッサは入力を検出すると、他のデバイスにパケットを送信し、上記のように第1の条件に合致した旨をマスタ・プロセッサに通知する。その第2の状態(「wait for 100ms」)に進む前に他のアクションも実行し、出力i+8を設定する。この第2の状態において、コプロセッサは第2の条件、100msの経過の発生を待機する。この条件に合致する(すなわち100msが経過する)と、コプロセッサはその第2のアクション、出力i+8のクリアを実行し、第2の条件に合致した旨をマスタ・プロセッサに通知する。その後第1の状態に戻り、第1の条件が再度発生するのを待機する。例1のプロセスと同様に、例2のプロセスは、例えばマスタ・プロセッサ190によって休止又は割り込みされるまで続行する。これも8回(i=0...7)実装され、各インスタンスは、アクション・エンジン内の別々のスロット・ペア上、又は対応するコプロセッサ上で、実行している。
[0130] 例2は、1つの条件に関連付けられた2つのアクションを含むことから、アクション・エンジン内の少なくとも2つのスロットで実行され、「send sender i」(アクション番号1a)及び「set output i+8」(アクション番号1b)の両方が、「rising edge of input i」(条件番号1)を満たすことによってトリガされる。条件番号1及びアクション番号1は第1のスロット内にロードされ、アクション番号1bは、第1のスロットに連結された第2のスロットにロードされる。第2のスロットには「counter[0]>=0」として実装される「do always」条件もロードされ、これによって条件番号1に合致した場合は必ず実行することになる(スロットの「連結」についての以下のより詳細な考察を参照されたい)。
[0131] 例3:マスタ・プロセッサ・アクションを用いる連続プロセス
Figure 0007154240000010
[0132] 例3は、「send_sequence」と題する他の連続プロセスであり、コプロセッサは条件を監視し、コプロセッサ及びマスタ・プロセッサはそれぞれが条件の検出に応答してアクションを実行する。このケースでは、プロセスは、「sequence」と命名された静的変数(「static unsigned integer sequence」)の宣言及びあらゆるイベント・パケットと共に出される16バイトのペイロードpで開始する。これらが初期化されると、マスタ・プロセッサは、ペイロード内のワード(「p.dword」)を「sequence」変数の値に設定する。次にコプロセッサは、入力iの立ち上がりエッジに関して動的環境を監視する待機状態に入る。立ち上がりエッジを検出した場合、その条件に合致したことをマスタ・プロセッサに通知し、ペイロードを送信して、ペイロードを受け取るカメラ又は他のデバイスをトリガすることができる。
[0133] 条件に合致した旨の通知を受信すると、マスタ・プロセッサは変数「sequence」を増分する。マスタ・プロセッサは、変数の増分がメモリ内の情報へのアクセスを含むためにこのアクションを実行し、これはアクション・エンジン又はコプロセッサの機能をしばしば超える。更にマスタ・プロセッサは、状態機械をその次の状態に進行させ、ここでコプロセッサは送信側がそのアクションを完了するのを待機する。コプロセッサはこの条件の満足を検出した場合、対応するアクションを実行する。このケースでは、対応するアクションは「ノー・オペレーション」又は「no-op」であるため、コードは特定のコマンドを含まない。コプロセッサは、条件に合致したこともマスタ・プロセッサに通知し、マスタ・プロセッサは、この通知に応答して状態機械をその次の状態に進行させる(ここでは「wait for rising edge of input i」状態に戻る)。例1及び2のプロセスと同様に、例3のプロセスは、休止又は割り込みされ、8つの別々のインスタンスで実装されるまで、実行する。
[0134] 例3では、条件番号2(「wait for sender to finish」)は、送信が完了されるまで、手続きステートメントがペイロード・バッファ(例3のp)を上書きするのを防ぐことが意図され、これは通信プロトコル・レイテンシーにおけるネットワーク競合及び分散(variance)によって、非決定性期間内に発生する。これは、送信アクションが使用される場合、コプロセッサが所望の物理ネットワーク・リソースにアクセスできない場合があるからである。(a)処理前の記憶用にペイロード及びポート数を記憶するためにキューを追加すること、(b)送信が完了するまでマスタ・プロセッサへの通知を保持すること、及び、(c)送信が完了した旨のマスタ・プロセッサへの他の通知を追加し、条件を満たしていること及びアクションの完了をマスタ・プロセッサに即時に通知することを含むが、これらに限定されない、アクセス問題に対処するためのいくつかの可能な方法が存在する。オプション(a)は、FPGAのリソース制約により、フィールド・プログラマブル・ゲート・アレイ(FPGA)の実装において最適でない場合がある。オプション(b)は、
非リアルタイム・ピア(例えば、MS Windows(登録商標)を実行するホスト・コンピュータ)を用いるイベント・メッセージ・プロトコルでのハンドシェイキング速度が遅いことによって、送信完了に最高1msを要する可能性があるため、余分な遅延を導入する場合がある。オプション(c)は、待機ステートメント直後にマスタ・プロセッサがコプロセッサ非対応アクションを実行できるようにするが、送信が完了するまでマスタ・プロセッサがイベント・テーブル・スロットを修正するのを防ぐ。いくつかの実装において、待機ステートメント前にすべての送信ステートメントが完了するまで、スロットを上書きすることができないため、各待機ステートメントは暗黙の「wait for send to finish」を有する。
[0135] 以下の例4に示されるケースを含む、いくつかのケースでは、マスタ・プロセッサは、状態機械をどのように進行させるかを決定するために、「if」ステートメントなどの「フロー制御ステートメント」を評価する。例えば、評価は、マスタ・プロセッサに1つ又は複数の状態マシンを特定の第1の状態に進行させる第1の結果、又は、マスタ・プロセッサに1つ又は複数の状態マシンを特定の第2の状態に進行させる第2の結果を、生み出すことができる。フロー制御ステートメントを使用して、進行中のプロセスを割り込み、休止、又は停止すること、及び他のプロセスを開始することを、決定することも可能である。
[0136] 例4:フロー制御ステートメント
Figure 0007154240000011
[0137] 例4は、フロー制御ステートメントを含むサブプロセスである。例4のサブプロセスは、4つの状態を含み、それぞれが、「待機」ステートメント及び実世界環境の特定の条件によって示され、例えば、部品の現在のポジションからの所定の値より大きいか又は等しい部品ポジション・カウンタである(「counter partPosition >= rejectDistance from position」)。例1~3のように、アクション・エンジン又はコプロセッサは各条件を評価し、条件に合致した場合、マスタ・プロセッサに通知し、no-op、出力のクリア、又は出力の設定などの、適切なアクションを実行する。マスタ・プロセッサは状態機械を進行させ、オプションで、通知に応答して動作する。
[0138] 例4では、マスタ・プロセッサは、2つの異なる検査ステーションで部品が検査に合格したか否かに関するフロー・ステートメントを評価することによって、状態機械のフローを制御する。(上記にリストされていない)プロセス全体の他の部分において、検査ステーションは部品の品質に関して「投票」し、マスタ・プロセッサは、検査ステーションの出力に応答して変数「votes」を増分する。同時に、コプロセッサは部品のポジションを監視する。コプロセッサは部品が特定のポジションに達したことを感知すると、マスタ・プロセッサに通知し、これが通知に応答してフロー制御ステートメントを評価する。マスタ・プロセッサが、部品が検査に不合格であった(例えば「votes」変数が2未満であるか、又は「DoReject」入力が設定されているため)と決定すると、マスタ・プロセッサは障害カウント(「failure_count」)を増分し、「reject」出力を設定することによって、コプロセッサに部品を除去させるか又は除去できるようにする。その後状態機械は、カウンタ時間が指定の期間(「rejectDuration」)に等しいか又はこれを超えるのをコプロセッサが待機する状態に進行する。部品が検査に不合格であった場合、マスタ・プロセッサは、部品ポジションが他の変数(「acceptDistance」)に等しいか又はこれを超えるのをコプロセッサが待機する状態に、状態機械を進行させる。
[0139] 例3及び4は、変数を設定し、周辺装置、例えばカメラなどを構成するための、宣言ステートメントの使用も示している。宣言は、例3の「sequence」変数、又は例4の(暗黙的に)宣言された「rejectDistance」及び「position」変数のように、マスタ・プロセッサのメモリ内に記憶される変数を設定するために使用可能である。入力0及び1での直角位相カウンタ「partPosition」であるように宣言された、例4の「partPosition」カウンタのようなカウンタ値も設定可能である。入力2の立ち上がりエッジでのパルス・カウンタ「partPosition」であるようにも宣言可能である。
[0140] 他の宣言は、入力及び出力変数を含む周辺変数を設定することができる。入力はパルス・フィルタを有するように宣言可能である。出力は、パルス幅及び転極(polarity inversion)を有するように宣言可能である。カウンタ及び他の周辺変数の宣言は、マスタ・プロセッサによって実行される命令にコンパイルされ、マスタ・プロセッサは周辺装置の構成レジスタをロードする。プログラム内でカウンタが使用される場合、イベント・テーブルの条件及びアクションは、コンパイラによって割り振られるカウンタにアクセスする。
[0141] 例5:セットアップ・プロセス
Figure 0007154240000012
[0142] 例5は、マスタ・プロセッサが特定のプロセスの異なるインスタンスを用いてアクション・エンジン/コプロセッサにタスクを課すために使用する、セットアップ・プロセスである。例1~4のプロセスとは異なり、例5のプロセスはいずれの条件も含まない。その代わりに、他のプロセス(ここでは例3からの「send_on_sequence」プロセス)の8つのインスタンスを作成する、単純なワンショット・プロセスである。これらのインスタンスはそれぞれ、アクション・エンジン内の対応するスロット上、又は別々のコプロセッサ上で実行する。
[0143] 様々な実施形態において、任意の言語ステートメント(コンピュータ実装可能命令)がハウスキーピングCPU190上で実行可能であるが、言語ステートメントのより大きいか又は小さいセットも、本明細書で説明される1つ又は複数のアクション・エンジンによって実行可能である。本発明の特定の実施形態のアクション・エンジン上で実行できない任意のステートメントは、ハウスキーピングCPU190上で実行される可能性がある。一般に、特定の実施形態のアクション・エンジン上で実行可能な任意のステートメントは、ハウスキーピングCPU190によってアクション・エンジンに割り振られることになる。ステートメント又はステートメントのグループは、それらの実行に先立った任意の時点でキャンセル可能である。
[0144] 一実施形態において、コンピュータ実装可能命令は、適切なコンピュータ言語(例えばSCORE(商標))で記述された任意のプロセスが同時に実行され得ること、及び、所与のプロセスの複数のインスタンスも同時に実行できることを許可する。一態様では、言語は上記でより詳細に説明されたように、条件/アクション・ペアにコンパイルされ、例示の実装では、こうした条件/アクション・ペアは、(例えば、図6のイベント・テーブル112及びアクション・エンジン110cに関連して上記で考察したように)高レート及び固定レートでスキャン可能なイベント・テーブルにアセンブルされる。条件/アクション・ペアは、以下でより詳細に説明されるように連結も可能である。
[0145] 図6を参照すると、一実施形態において、ハウスキーピングCPU190は、アクション・エンジン110cの動作に影響又は割り込みすることなく、アクション・エンジン110cのイベント・テーブル112にエントリを追加及び除去することができる。必要であれば、ハウスキーピングCPUのワード・サイズ(例えば32ビットとすることができる)がイベント・テーブル・レジスタ140cの幅(例えば64ビットとすることができる)よりも小さいことにより、所与のイベント・テーブル・レジスタ140cは、第1に入力条件をゼロに書き込み、次にアクションを書き込むことによって、部分的に作成可能である。現在使用されていないイベント・テーブル・レジスタ140cは、決して満たすことができない「未使用」条件付き演算を示す第1ゼロ・ワード(zero first word)を有することができる。スキャナ130cは、「未使用」条件を有するいずれのイベント・テーブル条件142cもそのスキャン時に考慮しないため、部分的に書き込まれたイベント・テーブル・レジスタ140c内のアクション144cは、ハウスキーピングCPU190が部分的に書き込まれたイベント・テーブル・レジスタ140cの書き込みを完了する前に実行されることはない。
[0146] 他の態様では、ハウスキーピングCPU190がアクション・エンジン110cに割り振ることが可能な任意のステートメント又はレジスタ140cの連結グループは、完全にそれらの中で実行するか、又はまったく実行しない。特に、連結グループを隣接するイベント・テーブル・レジスタ140c内に(スキャン方向に関して)最初から最後へとゼロを書き込み、その後、(再度スキャン方向に関して)最後から最初へと新しい条件142c及びアクション144cを書き込むことによって、ハウスキーピングCPU190が連結グループに書き込む間に、たとえスキャナ130cが、メモリの対応するセクションのアドレスを複数回通過する場合であっても、いかなる条件/アクション・ペアも(例えばアクション・エンジン110cのスキャナ130cによって)処理されることはなく、スキャナの規則は、例えばイベント・テーブル・レジスタの独自の入力条件に合致する場合であっても、そのチェーン・ビットが設定されていない次前のイベント・テーブル・レジスタ140cまで、及びこれを含む、すべての先行するイベント・テーブル・レジスタ140cのすべての入力条件も合致しない限り、連結グループ内のイベント・テーブル・レジスタ140cのアクションを実行することはない、というものである。各新しいイベント・テーブル・レジスタ140cは、ゼロに設定されたイベント・テーブル・レジスタ140cのセクション内に書き込まれているため、前のイベント・テーブル・レジスタ140cは有効な入力条件を有さず、このレジスタ140cも書き込まれたばかりのイベント・テーブル・レジスタ140cも実行されることはない。
[0147] 同様に、連結されたイベント・テーブル・レジスタ140cのセットを最初から最後へと(例えばレジスタ140cにすべて0又はすべて1で記入することによって)クリアすることによって、及び、各イベント・テーブル・レジスタ140cに関する入力条件を第1にクリアすることによって始まる各イベント・テーブル・レジスタ140cの場合、スキャナ130cがイベント・テーブル・レジスタ140cに対処しているレートに等しいか又は遅いレートで、ハウスキーピングCPU190は、連結レジスタ140cのセット全体が実行されるか又は全く実行されないように、特定のコプロセッサ/アクション・エンジンに割り振られた手続きステップに関して、イベント・テーブル・レジスタ140cのチェーンでさえも置換又はクリアすることができる
[0148] マスタ・プロセッサ190をプログラミングし、(例えば、処理ユニット194及びマスタ・プロセッサ190に対して)実行可能コードを提供するためにプログラム言語を効率的にコンパイルするための前述の技法、及び、アクション・エンジン110cのイベント・テーブル112を更新する(又はより一般的には、特定の条件を評価するために1つ又は複数のコプロセッサを「プログラミングする」)ためにマスタ・プロセッサ190によって実装される、結果として生じる手続きは、いくつかの固有の利点を生み出す。この方法は、(1つ又は複数のアクション・エンジン又は他のコプロセッサを備えるか又は備えない)任意の汎用プロセッサ上で非常に高速に実行可能な、極度にコンパクトなコード・セットを生成する。しかしながら、図6に示されたアクション・エンジン110cに関連して、特にスキャナ130cと共に使用される場合、たとえ動的環境内での条件の進化が、分岐のためのコード実行、並びに/或いは、従来のシステムに対して実行及び/又はキャンセルされることになる機能呼び出しを必要とする場合であっても、これらの技法は、完全に決定性の動作を生み出す。前述の本発明の技法は、複数のサブルーチン(例えばイベント・テーブル・レジスタ140cのチェーン)が(マスタ・プロセッサ190内の)呼び出しプロセスに信号を戻さずに完了することを実行可能にするものであるため、実際にはこれらの遷移は、アクション・エンジン110c内のメモリ・ポインタを再配置することなく実行可能である。いずれのループ又はジャンプも有さない命令セットの単純性によって、コプロセッサ/アクション・エンジンのプログラム・スペースのランタイムの決定性が維持される。
[0149] ハウスキーピングCPU190は、アクション・エンジンのハウスキーピング専用である必要がないことにも留意されたい。ハウスキーピングは、Linux又はWindowsなどの汎用オペレーティング・システム上のプロセス及び/又はデバイス・ドライバによって実行可能である。アクション・エンジンは、カウンタ、デジタル及び/又はアナログのI/Oインターフェースなどと共に周辺カード(PCIなど)上に存在可能であり、汎用コンピュータはイベント処理において、本明細書で説明されるアクション・エンジンと協力して作業する場合の特定用途向け埋め込み型コンピュータと同じ精度を達成することができる。アクション・エンジン及び/又は別々のコプロセッサは、1つ又は複数のフィールド・プログラマブル・ゲート・アレイ(FPGA)内で、又は他の適切なプロセッサの集合として、実装することも可能である。
[0150] パイプライン化、レイテンシー、及びジッタ
[0151] 図6に示されたアクション・エンジン110cの例示の一実装において、スキャナ130cは、入力信号66と条件142cとを比較するための「パイプライン化」技法を実装するように構成される。当業者であれば理解されるように、「パイプライン化」は、計算「パイプ」を形成するために接続された一連のステージに計算を分割することによって、スループットを向上させる計算技法である。パイプの各ステージは、組み立てライン上の作業者に酷似しており、計算のその部分(入力信号66と条件142cのセットとの比較)を他のステージと並列に実行する。パイプライン化は、入力信号66と所与の条件142cとの比較にどれだけの時間を要するかにかかわらず、各レジスタ140c上で費やされる時間が1クロック・サイクルに制限されるように、スキャナ130cのアクションを加速させる。
[0152] アクション・エンジンの「レイテンシー」、すなわち、所与の時点での動的環境の特定の入力状態とイベント・テーブルに含まれる条件の複数のセットとを比較し、入力状態に応答して1つ又は複数の命令を伝送するために必要な期間の、計算に関して、いくつかの例示の実施形態において、こうしたレイテンシーは、アクション・エンジン110cによって実装されるパイプライン化技法を考慮して導出することができる。例えば、アクション・エンジン110cが、入力信号66及び/又は発見された状態変化(上記の段落89を参照)と条件142cの特定セットとを比較し、これに応答して1つ又は複数の命令を伝送するのに要する時間は、スキャナが、対応するイベント・テーブル・レジスタ140cに到達するのに要する時間に、パイプライン内のステージ数に依存する、パイプラインを通過する伝搬時間を加えた時間に等しい。128のレジスタ140cを備えるイベント・テーブル112及び、3ステージのパイプラインを備え、100MHzでクロック制御されるスキャナ130cの場合、イベント・テーブル112を通じたスキャンの最初に発生するが、イベント・テーブル112を通じたスキャンの最後まで使用されない、条件142cに対応する、入力から出力までの可能な最長時間は、1.31μsに、パイプラインを通過する0.03μsの伝搬時間(すなわち3クロック・サイクル)を加えた時間である。入力から出力までの可能な最短時間は0.030μsである。したがってアクション・エンジン110cは、入力信号66及び/又は発見された状態変化と、イベント・テーブル112内のレジスタ140cの数、パイプライン内のステージの数、及びクロック周波数によって境界が確定される、レイテンシー又は時間遅延を伴う条件142cのセットとを、比較する。
[0153] 少数の条件142cを非常に迅速に評価するためにイベント・テーブル・レジスタ140cを使用することの追加の利点は、レイテンシーの変動が非常に低いことである。ジッタは、最長レイテンシーと最短レイテンシーとの差異として定義可能である。単一の条件142cを評価するイベント・テーブル・レジスタ140cの場合、レイテンシーの変動は最小であり、着信データ及び発信データがどのように伝送されるかに依存して、ゼロに近似する可能性さえある。上記の例において、可能な最長レイテンシーは1.31μsであり、可能な最短レイテンシーは約0.03μsであり、これは、1.28μsのジッタ、又は1スキャン時間に対応する。(入力フィルタの適用、入力状態変化の発見、又は、イーサネット・パケットを介したデータの送受信が、アクション・エンジン110cとは無関係の可変遅延を招く可能性がある。)
[0154] 低ジッタは、長い応答遅延は、遅延がかなり反復可能である限り完全に受け入れ可能であり、著しく短い最大レイテンシーは、個々のレイテンシーが著しく変動する場合に受け入れ不可能な、例えばイメージのトリガなどの適用例において特に有用である。機械視覚アプリケーションでは、例えば、ジッタを削減することによって、センサの視野を縮小することが可能であり、更にこれによって、該当するシーンのイメージ解像度をより高くすることができる。高速移動部品をイメージングするための時間ウィンドウが約10μsであるが、ジッタはPLCの場合よりもかなり大きい100μsである状況を考えてみる。部品のイメージをキャプチャリングするには、部品自体のサイズの11倍を超えるように視野を増大することによって、実質上110μsを超えるまで時間ウィンドウを拡張する必要があり、これによって部品のイメージング専用のセンサのピクセル数が11分の1を超えて減少する。これに対して、約2.5μsのジッタを伴うアクション・エンジン110cを使用して、部品自体のイメージング専用のセンサのアクティブ領域の約80%で、同じ部品のイメージを獲得することができる。
[0155] 条件/アクション・ペアのメモリ構造及び実行
[0156] 本発明の実施形態は、1つ又は複数の「条件/アクション・ペア」を記憶するための特別なメモリ構造を含むことができる。図6に示されたアクション・エンジン110cでは、例えば、イベント・テーブル112は複数のレジスタ140cの形の専用メモリを提供し、そのそれぞれが条件/アクション・ペアを、特定のビットシーケンス(図6では一般に、条件142c及びアクション又は「命令」144cとして表される)として記憶する。別の方法として、1つ又は複数のレジスタ140cは、評価されることになる条件を表す第1のビット数、及び、条件に合致した場合に実行されることになるアクションを表す第2のビット数として配置構成される、複数の隣接するメモリ・レジスタを含むことができる。一般的に言えば、図5及び図6に示されるような様々な実施形態は、所与のレジスタ内でそれぞれの条件/アクション・ペアを何らかのビット配置構成として保持する、1つ又は複数のレジスタ(例えば、図5のレジスタ140b、図6のレジスタ140c)の形のメモリ構造を含むことができる。
[0157] いくつかのインスタンスでは、満たされた特定の条件に対応する所与のアクションは、動的環境内の1つ又は複数のデバイスの制御に関して一切のアクションを実行しない可能性があることを理解されたい。言い換えれば、所与の条件/アクション・ペアに関する可能な1つのアクションは、動的環境内で一切の肯定的アクションを実行しないことになり、本明細書では「no-op」とも呼ばれる。no-opのいくつかのインスタンスでは、以下でより詳細に考察されるように、それにもかかわらずアクション・エンジンは、評価されている特定の条件が満たされているかどうかをマスタ・プロセッサに通知すること、及び/又は、イベント・テーブルの後続のレジスタ内で指定されているように、1つ又は複数の他の条件の評価に移ることが、可能である。
[0158] 「条件/アクション・ペア」の概念は、本明細書で開示される様々な実施形態に従った多様な方法で実装可能であることも理解されたい。例えばいくつかの実装において、特定の条件/アクション・ペアの条件部分を表すメモリのコンテンツは、所与のレジスタ内にある数の隣接ビットを含むこと、及び/又は、条件部分に必ずしも関係しないレジスタ・コンテンツが介在する所与のレジスタ内に分散されたある数のビットを含むことが可能である。同様に、特定の条件/アクション・ペアのアクション部分を表すメモリのコンテンツは、所与のレジスタ内にある数の隣接ビットを含むこと、及び/又は、アクション部分に必ずしも関係しないレジスタ・コンテンツが介在する所与のレジスタ内に分散されたある数のビットを含むことが可能である。したがって、本明細書で開示される本発明の概念に従い、所与の条件/アクション・ペアを表す所与のメモリ位置/レジスタ内に、多様なコンテンツ編成が企図される。
[0159] 以下で詳細に考察される一例では、条件/アクション・ペアを含めるためのメモリ構造は、(例えば、単一クロック・サイクルでアクセス及び読み取り可能な)64ビット・ワード・サイズのレジスタを含むことが可能であり、そのうちのある数のビットは評価されることになる条件142cを表すか又はこれに関し、そのうちの他の数のビットは、条件が満たされた場合に実行されることになるアクション144cを表すか又はこれに関する。非限定的な一例では、64ビット・レジスタは3つの部分に分離され、条件142c及びアクション144cはそれぞれ、これら3つの異なる部分に、1)16ビット符号なし整数によって表される「命令コード」、2)16ビットの「アクション・パラメータ」、及び3)32ビットの「条件オペランド」、として符号化され、アクション・パラメータ及び条件オペランドに含まれる情報は、命令コードに含まれる動作の実装を容易にすることができる。以下の表1は、こうした64ビット・レジスタの一般的な形式を示し、命令コード部分はビット48~63に表され、アクション・パラメータはビット32~47に表され、条件オペランドはビット0~31に表される。
Figure 0007154240000013
[0160] 表1に示された64ビット・レジスタの命令コード部分に関して、以下の表2は、16ビット命令コードの異なるフィールドに対して例示のフォーマットを提供する。
Figure 0007154240000014

上記の例で、命令コードの4つの最上位ビット(表2でそれぞれ「F」、「E」、「D」、及び「C」としてラベル付けされた、ビット15~12)は、評価されることになる条件142cに関する(「OP」とラベル付けされた)条件タイプ・コードを指定する。次の4つの最上位ビット(表2でそれぞれ「B」、「A」、「9」、及び「8」としてラベル付けされた、ビット11~8)は、アクション144cに関する(「ACT」とラベル付けされた)アクション・オペランドを表す。命令コードの残りのビットは、チェーン・ビットC、XORビットX、通知ビットN、満足ビットS、最終条件ビットL、及び1つ又は複数のカウンタ値CTRを含み、それぞれについて以下でより詳細に説明する。
[0161] この例では、表1を再度参照すると、64ビット・レジスタのビット0~31の32ビット「条件オペランド」と、命令コードのOPフィールド内に指定された条件タイプ・コードとを共に使用して、特定の条件が満たされているかどうかを決定することができる。更に、64ビット・レジスタのビット32~47の16ビット「アクション・パラメータ」と、命令コードのACTフィールド内に指定されたアクション・オペランドとを共に使用して、特定の条件が満たされた場合に実行されることになる対応するアクションを指定することができる。更に、命令コード・フィールドC(チェーン)、X(XOR)、及びCTR(カウンタ)は特定条件の評価に使用可能であり、命令コード・フィールドN(通知)、S(満足)、及びL(最終条件)は対応するアクションを指定するために使用可能である。したがって、以下でより詳細に考察するように、表1に示された64ビット・レジスタのビット/フィールドの第1のセット、すなわちOP、C、X、CTR、及び「条件オペランド」は、まとめて、64ビット・レジスタに表された条件/アクション・ペアの条件142cを定義することが可能であり、同様に、64ビット・レジスタのビット/フィールドの第2のセット、すなわちACT、N、S、L、及び「アクション・パラメータ」は、まとめて、64ビット・レジスタに表された条件/アクション・ペアのアクション144cを定義することが可能である。
[0162] より具体的に言えば、表2に示された命令コードの条件タイプ・コードOPは、監視されることになる条件のタイプ、監視されることになる1つ又は複数の入力信号、及び/又は、条件を満たす任意の監視される入力信号の状態を指定する。いくつかの条件タイプ・コードOPの場合、条件を満たすことは、64ビット・レジスタのビット0~31に表される32ビット「条件オペランド」の1つ又は複数の値に、少なくとも部分的に依存する(上記の表1を参照)。命令コードのOPフィールドに提示することが可能な例示の条件タイプ・コードは、以下を含むが、これらに限定されない。
0-レジスタは未使用
1-カウンタ#CTRがオペランドより少ないか又は等しい場合、作動する
2-カウンタ#CTRがオペランドより多いか又は等しい場合、作動する
3-オペランド[0..15]内に設定された任意の入力上で立ち上がりエッジが検出された場合、作動する
4-オペランド[0..15]内に設定された任意の入力上で立ち下がりエッジが検出された場合、作動する
5-オペランド[0..3]内に設定された任意のラダー上でトリガ・ラダーが発動した場合、作動する
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-カウンタ#CTR指示の場合、作動する(条件[ビット0]:1->増分、0->減分)
15-未定義
[0163] 命令コードのOPフィールドに指定された追加の条件タイプ・コードはXビットを使用して定義可能であり、以下で考察される(例えば、上記の条件タイプ・コード3~15は、Xビットを使用して再定義可能である)。この非限定的な例では、CTRビットは条件タイプ・コード1、2、及び14に使用され、他の例では、CTRビットは、非ゼロの場合に他の条件タイプ・コードを再定義するために使用可能である。
[0164] 上記表2に示された命令コードのアクション・オペランドACTは、条件タイプ・コード及び条件オペランド(及びいくつかのケースでは、64ビット・レジスタの他のフィールド)によって指定された条件が満たされた場合、実行されることになる対応するアクションを指定する。いくつかのアクション・オペランドACTの場合、実行されることになるアクションは、64ビット・レジスタのビット32~47に表された16ビット「アクション・パラメータ」の1つ又は複数の値に、少なくとも部分的に依存する(上記の表1を参照)。命令コードのACTフィールドに存在可能な例示のアクション・オペランド・コードは、以下を含むが、これらに限定されない。
0-ノー・オペレーション――何も実行しない(例えばNが設定された場合、割り込み完了を起こす)
1-メッセージ送信のキュー
アクション・パラメータは、ビット0~3に記述子#、ビット5にメッセージ肯定応答フラグのハウスキーピングCPU通知、ビット6にメッセージ障害フラグのハウスキーピングCPU通知、ビット12~6にペイロード・インデックスを含むものと解釈される。
2-出力の設定:アクション・パラメータ内のビット・セットは、設定される出力を示す。
3-出力のクリア:アクション・パラメータ内のビット・セットは、クリアされる出力を示す。
4-データ入力のラッチ。(アクション・パラメータなし)
5-カウンタ値のラッチ:アクション・パラメータ内のビット・セットは、ラッチされるカウンタを示す。
6-ゼロ・カウンタ:アクション・パラメータ内のビット・セットは、ゼロに設定されるカウンタを示す。
7-フラグMSWの設定:アクション・パラメータ内のビット・セットは、設定されるフラグを示す。
8-フラグLSWの設定:アクション・パラメータ内のビット・セットは、設定されるフラグを示す。
9-フラグMSWのクリア:アクション・パラメータ内のビット・セットは、クリアされるフラグを示す。
10-フラグLSWのクリア:アクション・パラメータ内のビット・セットは、クリアされるフラグを示す。
11-セマフォの取得:セマフォ・インデックスがアクション・パラメータ内に与えられる。
12-セマフォの解除:セマフォ・インデックスがアクション・パラメータ内に与えられる。
13~15-予約済み
アクション15は、アクション・オペランドを示すための減じられたビット数を伴うアクションを示すために使用される、アクション・パラメータのある数のビットを伴う拡張アクションとすることができる。
[0165] 上記で指定されたいくつかのアクション・オペランドと共に使用される16ビット・アクション・パラメータは、記述子#(例えばビット0~3)、ack通知(例えばビット4)、exh通知(例えばビット5)、ペイロード#(例えばビット6~12)、又はビット・フィールド(例えばビット13~15)を含むことが可能であるが、これらに限定されない。
[0166] 前述のように、条件/アクション・ペアを表す64ビット・レジスタのビット48~63に含まれる16ビット命令コードの他のビットは、前のレジスタからのチェーン・ビットCを含むことができる。チェーン・ビットCが設定された場合、先行するイベント・テーブル・レジスタ140c内の条件142cは、このイベント・テーブル・レジスタ140c内の条件142cが考慮できるまで、trueでなければならない。比較がオーバーフロー又はアンダーフローに対処する必要がないようにシャドー・レジスタを実装するXORビットX、1に設定された場合、入力条件を満たすと完了メッセージをハウスキーピングCPUに転送させる通知ビットN、及び、条件142cが満たされた場合に設定される満足ビットSも、含むことができる。
[0167] 他のビットは、条件142cが満たされた場合、スキャナに条件オペランドOPをゼロにリセットさせるために使用される、最終条件ビットLも含むことができる。言い換えれば、最終条件ビットLは、次のスキャンが、イベント・テーブル112が条件を再度満たすことを防止する。アクション144cが実行されるまでに複数の条件142cが(例えば以下で説明するようにチェーン・ビットCを使用して)満たされる場合、動作が再評価できるように先行レジスタはLビットを設定しないことになる。常時実行条件とまとめて連結されたイベント・テーブル・レジスタは、アクションの繰り返しを避けるために最終ビットを設定することができる。
[0168] アクション・エンジン110cは、SCORE(商標)プログラミング言語を使用してプログラミング可能である。特に、前述のように、ハウスキーピングCPU(マスタ・プロセッサ)190は、コンパイルされた場合、マスタ・プロセッサが条件/アクション・ペアの形でアクション・エンジンにタスクを課すように命令を提供可能にする、本発明の一実施形態に従って、本発明のプログラミング言語を介してプログラミング可能である。SCORE(商標)ステートメント及び結果として生じるイベント・テーブルの設定値の例が、以下に示される。SCORE(商標)ステートメントは、SCORE(商標)コードの各行が単一の条件/アクション・ペアと一致するようにフォーマット化されている。
Figure 0007154240000015

OP、C、X、CTR、及びOPERANDは条件を定義する。
ACT、N、S、L、及びAPはアクションを定義する。
[0169] より複雑な条件を監視するためのチェーン・ビット
[0170] いくつかのケースでは、図6に示されたイベント・テーブル112のレジスタ140cは、より複雑な条件/アクション・ペアを記述するのに十分な幅がない場合がある。こうしたケースでは、アクション・エンジン110c、イベント・テーブル112、及びスキャナ130cを、チェーン・ビット(図6では「C」で示される)を使用して、入力条件のより複雑なセット(例えば、満たされると1つ又は複数のアクションが予測される、複数の条件)を評価するように構成することができる。各チェーン・ビットは、前のイベント・テーブル・レジスタ140c内に表される特定の条件142cを満たすことを含むという点で、論理的には条件142cの対応するセットの一部である。実際には、チェーン・ビットは、そのすべてが、実行されることになるイベント・テーブル・エントリの連結されたグループ内に記述されたアクションについて満たされなければならない、入力条件のグループを定義する目的で、単一の「スーパー・レジスタ」を形成するために、連続するイベント・テーブル・レジスタ140cのグループをリンクすることによって、単一のイベント・テーブル・レジスタ140cの有効(及び有限)サイズを増加させるために使用可能である。イベント・テーブル・レジスタ140cの連続するブロックをまとめて連結することで、論理的には、連結されたレジスタ140cをまとめて「AND」し、すなわち、特定セットの命令を(場合によっては所定の順序で)発行することによって、入力信号66の特定の組み合わせに反応させる。
[0171] 図8は、連結されたイベント・テーブル・レジスタ140cがまとめて連結された条件142cのグループを識別し、これに反応する方法を示す。(単純にするために、図8は、各イベント・テーブル・レジスタ140cに対する条件142c及びアクション144cのセットのみを示している。)各イベント・テーブル・レジスタ140cは、センサ入力A-C及び現在のカウンタ値CTR(図8には図示せず)、並びにフラグ・レジスタ値の異なる組み合わせと、連結されたイベント・テーブル・レジスタのセット内の以前のセマフォ要求が成功したかどうかに、反応する。慣例により、連結グループの第1のイベント・テーブル・エントリはそのチェーン・ビット・セットを有さないことになる。この例では、イベント・テーブル・レジスタ140c-2から140c-4はすべて、1に設定されたチェーン・ビットCを有する。イベント・テーブル・レジスタ140c-5はローのチェーン・ビットCを有するため、イベント・テーブル・レジスタ140c-1から140c-4とは独立に動作する。
[0172] 連結されたイベント・テーブル・レジスタ140c-1及び140c-2はそれぞれ、それぞれの条件142c-1及び142c-2、並びに実行なし(no-op)アクション144c-1及び144c-2と、それに続く「クリティカル・レジスタ」-ここでは、no-opではなく「有用」条件142c-3及びアクション144c-3の両方を備える単一のイベント・テーブル・レジスタ140c-3とを、含む。こうした「クリティカル・レジスタ」の後には、連結されたグループの入力条件に合致した場合にも実行されるべきである、追加のアクションを伴う他のイベント・テーブル・レジスタ140c-4が続く可能性があり、このケースでは続く。クリティカル・エントリのそれが実行された場合、有用アクション144c-4も即時に実行されることを保証するために、入力条件142c-4は、同語反復的に(tautologically)trueである条件に設定され、すなわちcounter[0] >= 0(XORなし)である。これによって、イベント・テーブル・エントリの結合グループの一部として、この結合グループ内の先行入力条件のすべても満たされなければならないため、このイベント・テーブル・エントリ内のアクションが早期に実行されることはない。最終条件ビットLがイベント・テーブル・レジスタ140c-2内に設定され、これは、クリティカルなイベント・テーブル・レジスタ140c-3上に満足ビットSが設定される前に、イベント・テーブル・レジスタ140c-1及び140c-2が満たされなければならないことを意味する。クリティカルなイベント・テーブル・レジスタ140c-3上に満足ビットSが設定されると、クリティカルなイベント・テーブル・レジスタ140c-4内のアクション144c-4はあらゆるスキャン時に再試行されることになるので(これがセマフォ又は送信アクションであったと想定すると、すべての他のアクションは第1の試行時に完了するため)、先行のイベント・テーブル・レジスタ140c-1及び140c-2の状態は問題にならない。クリティカルなイベント・テーブル・レジスタ144c-3後のチェーン内のイベント・テーブル・レジスタ140c-4は最終条件ビットLを設定することになり、スキャナ130cによって満足ビットSが設定可能であることを示す。
[0173] 動的環境の進化を追跡するためのセマフォ
[0174] 図6に示されたアクション・エンジン110cは、実世界システムの進化に応答して一連の命令を発行することも可能である。最高CPU応答時間(例えば10から1000μs)よりも低速で発生する進化の場合、スキャナ130cはハウスキーピングCPU190に合致(満足条件)を報告することが可能であり、これは命令を発行すること、及び/又は、前述のようにイベント・テーブル・レジスタ140cのうちの1つ又は複数を更新することによって応答する。より高速の進化(すなわち、最高CPU応答時間よりも即時に発生する可能性がある進化)の場合、アクション・エンジン110cは、1つ又は複数のセマフォを使用して、条件142cが互いに左右されるものとすること、及び/又は、そのそれぞれの条件142cがハウスキーピングCPU190による介入なしに同じ入力信号66によって少なくとも部分的に満たされる、異なるレジスタ140c間での競合(衝突)を回避することが、可能である。一般的に言えば、セマフォはリソース競合の管理を容易にし、1つ又は複数の条件の評価が依拠する1つ又は複数のリソースの可用性を保証するためにアクション・エンジンによる獲得及び解除が可能である。
[0175] いくつかのインスタンスでは、イベント・テーブル・レジスタ140cの結合グループ内のイベント・テーブル・レジスタ140c-1は、スキャナによって管理されるが、典型的には、後のイベント・テーブル・エントリ内でのセマフォ解除アクションに応答してスキャナによって解除されることになるか、又は、ハウスキーピングCPU190によって一方的に解除される可能性がある、セマフォの集合のうちの1つを獲得するように試行することができる。それらの他の入力条件と共に、セマフォの正常な獲得は、自動的に、こうしたイベント・テーブル・レジスタの結合集合内に存在する任意の後続の応答アクション実行のための必要条件となる。
[0176] 例示の実施形態において、セマフォ処理はテスト・アンド・セット(test-and-set)動作に基づく。セマフォは、R/Sフリップフロップであるとみなすことができる。セット動作は、R/SフリップフロップのS入力のクロッキングと同時にフロップの出力Qを読み取ることを含む。セマフォが以前にセット解除(unset)された(R/Sフリップフロップの出力の同時読み取りの結果が論理低であった)場合、セット・アクションは完了するものとみなされる。セマフォが以前にセットされた場合、セット・アクションは正常であるとみなされ、正常なセマフォ・セットに依存するアクションは実行されないことになる。他のアクションとは異なり、セマフォ取得アクションは、セマフォ取得が(将来のスキャン時に)成功するまでこのチェーン内のいずれの後続レジスタ140cも無視されるようにする。セマフォの解除は、フロップへのR入力のクロッキングによって達成される。これらのセマフォの調停済みバージョンを使用して、複数のイベント・テーブル・スキャナ130cの動作を(例えば図9に関して説明するように)調整することができる。例えば複数のスキャナ130cを備えるアクション・エンジンは、単純なラウンド・ロビン調停方式を使用することができる。
[0177] イベント・テーブル112がどのようにセマフォを使用するかを知るために、クロック制御出力(出力0のクロック、出力1~7のデータ)の設定に含まれる、(a)トリガ・イベントの待機、セマフォの獲得、クロック出力低の設定、出力値1~7の設定、並びに第2及び第3のプロセスの実行可能化に関する責務を負う第1のプロセス、(b)セットアップ時間の待機、クロック出力高の設定、及び第3のプロセスの実行可能化を含む、第2のプロセス、並びに、(c)組み合わせられたセットアップ及び保持時間の待機、セマフォの解除、及びハウスキーピングCPU190の通知を含む、第3のプロセス、という、3つの同時プロセスを考えてみる。3つのプロセスはそれぞれ、イベント・テーブル112内の連結レジスタ140cのグループによって表される。(セマフォは、出力0~7、counter[1]、及びflag[0]の操作を希望し、イベント・テーブル112上のこれらのプロセスの複数セットが互いに干渉することなくクロック制御出力を送信できるようにする、任意のプロセスによって使用可能である。)マイクロ秒チック(tick)をカウントするためにカウンタcounter[1]がセットアップされており、出力信号のタイミングを取るために使用されるものと想定する。この例では、セットアップ及び保持時間はどちらも出力信号上で1msである。
[0178] 初めに、第1のプロセスはセマフォを獲得する。セマフォを獲得すると、出力0及び2~7をクリアし、出力1を設定し、タイムベース・パルス、このケースでは1MHzのタイムベースをカウントするように構成されたカウンタ(counter[1])をリセットし、まとめて連結された一連の5つのレジスタを使用してフラグ(flag[0])を設定する。第1のプロセスは、以下のSCORE(商標)ステートメント(コメント付き)及び(上記のように、及び16進形式で符号化された)条件/アクション・ペアを使用して表すことができる。
Figure 0007154240000016
[0179] 第2のプロセスは、フラグが設定されると開始する。その後、所与のカウンタ値で出力を設定する。第2のプロセスに関する、対応するSCORE(商標)ステートメント(コメント付き)及び(上記のように、及び16進形式で符号化された)条件/アクション・ペアは、以下の通りである。
Figure 0007154240000017
[0180] 第3のプロセスは、フラグが設定されると開始する。所与のカウンタが第2の値に達すると、第1のフラグをクリアしてセマフォを解除する。第3のプロセスに関する、対応するSCORE(商標)ステートメント(コメント付き)及び(上記のように、及び16進形式で符号化された)条件/アクション・ペアは、以下の通りである。
Figure 0007154240000018
[0181] 第3のプロセス(c)は、組み合わせられたセットアップ及び保持時間がカウンタ上で経過するのを待機しているため、第2及び第3のプロセス(b)及び(c)を実行可能にするために1つのフラグのみが使用されることに留意されたい。プロセスのすべてのグループが同じカウンタ及びフラグを使用できるように、セマフォはカウンタ及びフラグの使用を保護する。
[0182] 別の方法として、セットアップ及び保持時間のタイミング要件が1msであり、これはハウスキーピングCPU190が作動するのに十分な時間を超えているため、これら3つの別々の同時に実行するプロセスは単一のSCORE(商標)ステートメントとして作成可能である
Figure 0007154240000019
[0183] ハウスキーピングCPU190は、完了時に、第1の4レジスタ・チェーンを単一レジスタ・チェーンに置き換えることができる。その第2のチェーンの完了時に、第3の待機及びセマフォ解除を実行するために、他の単一チェーン・エントリが作成されることになる。
[0184] 複数のイベント・テーブル/スキャナ・コプロセッサを用いるアクション・エンジン
[0185] 図9は、それぞれの入力ポート(それぞれ入力ポート158c-1から158c-n、まとめて入力ポート158c)を介して入力バス102に結合された、複数の並列コプロセッサ(それぞれコプロセッサ120c-1から120c-n、まとめてコプロセッサ120c)を含む、アクション・エンジン110cを示す。各コプロセッサ120cは、それぞれのスキャナ(それぞれスキャナ130c-1から130c-n、まとめてスキャナ130c)に結合されたそれぞれのイベント・テーブル(それぞれイベント・テーブル112c-1から112c-n、まとめてイベント・テーブル112c)を含む。前述のように、各イベント・テーブル112は複数のエントリを含み、そのそれぞれが、独立した条件の1つ又は複数のセット及び対応するアクションを表す。
[0186] コプロセッサ120cは、非常に低いレイテンシー、例えば約1.6μs以下のレイテンシーでイベント・テーブル112c内に記憶された条件/アクション・ペアを実行するために、並列に動作する。並列実行中、各スキャナ130cは、イベント・テーブル112c内の条件と、入力バス102及び入力ポート158cを介して受信される入力信号66とを比較し、図6~図8に関して説明されるように合致が発生した場合、命令を実行する。適切であれば、スキャナ130cは、それぞれの出力ポート(それぞれ出力ポート160c-1から160c-n、まとめて出力ポート160c)を介して出力バス104に出力信号68を送信する。アクション・エンジン110は、図6に関して上記で説明したようなカウンタ、フラグ・レジスタ、及び/又はセマフォ・レジスタも含むことができる。
[0187] 前述のアクション・エンジンの例は、144c命令コード又は条件/アクション・ペアを保持するのに十分な大きさのメモリを備えた単一のFPGA上の、単一のイベント・テーブル・スキャナとして(例えばHDLコードを使用して)実装可能である。スキャナは、条件を順次評価することによってイベント・テーブルを実行する。スキャナは満たされた条件のチェーンを見つけた場合、アクションを実行し、同じFPGA上に実装可能なマスタCPUに、満たされた条件に対してイベント・テーブル内のいずれのレジスタが使用されているかに関して通知する。マスタCPUは、プロセスが実世界条件の進化に追従する際に、問題のレジスタに新しい命令コードを再ロードする。別の方法として、アクション・エンジンは、周辺構成要素インターフェース(PCI)カード内に埋め込まれ、汎用コンピュータ内で使用される、イベント・テーブル・メモリ及びスキャナを含む専用チップと、コプロセッサ・メモリ内にネイティブ命令コードを配置する代わりに、イベント・テーブルを復号してネイティブ命令を実行するための、埋め込み型プロセッサと、非常に低いレイテンシーで条件を評価するための別々のFPGAプログラムをそれぞれが有する、複数のFPGAとして、実装可能である。
[0188] 機械視覚技法/機器を使用する動的環境
[0189] 前述のように、本発明の様々な実施形態に従った、特に低いレイテンシー(すなわち著しく高速の応答時間)及び/又は低い変動性レイテンシーを必要とする、制御システム並びにその構成要素は、様々な動的環境を監視及び/又は制御するための幅広い適用可能性を有することができる。本発明に従った制御システムの一適用例は、機械視覚技法及び/又は機器が使用される動的環境によって与えられる。
[0190] 図10は、動的環境を監視及び制御するための本発明の実施形態に従った制御システムと共に機械視覚技法及び機器が使用される、動的環境のブロック図である。図10に示された動的環境は、一般に、自動化プロセス10の実装を容易にするために様々なロボット機器22及び機械視覚機器(まとめて機器20)が使用可能な自動化プロセス10に関し、機械視覚機器は、1つ又は複数のイメージ獲得デバイス26及び照明機器24を含むことができる。本明細書で考察される制御概念が適用可能な自動化プロセス10の例は、(例えば、自動車、消費財製造、及び/又は農業に適用するための)組み立てライン上の部品のカウント、追跡、分類、及び/又は処理、製造プロセスに関連した品質制御機能(例えば不良品の自動検査)、ロボット機器による操作のための部品の位置及び/又は向きの測定、並びに、バルク材料(例えば食料品、農産物など)からの望ましくないアーティファクトの除去を含むが、これらに限定されない。
[0191] 図10において、動的環境は、ロボット機器22、照明機器24、及び/又はイメージ獲得デバイス26を制御するための、(図1に示されたものと同様の)様々なアクチュエータ又は制御デバイス30も含む。環境は、自動化プロセス10を監視し、所与の時点での環境の監視された条件を表す情報(例えば1つ又は複数の入力信号66)を提供するための、様々なセンサ又は入力デバイス40も含む。図10に示されるように、センサは、自動化プロセスに関するイメージを獲得するための1つ又は複数のイメージ獲得デバイス26、並びに、監視される条件を表す入力信号を提供するための1つ又は複数のセンサ40(例えば、温度、湿度、圧力、光、及び/又は他の環境センサ、カウンタ、情報パケットのいくつかは1つ又は複数のイメージ獲得デバイス又は他のデバイスによって提供可能な情報パケット用の受信キュー、など)を、含むことができる。
[0192] 図10は、1つ又は複数の出力信号68を(ロボット機器、照明機器、及びイメージ獲得デバイスのうちの、1つ又は複数を制御する)制御デバイス30に提供するように、時間に応じて監視される条件を表す1つ又は複数の入力信号66を受信及び処理するための、様々な実施形態に関連して上記で説明された、マスタ・プロセッサ190及びアクション・エンジン110を含む、制御システム100も示す。加えて、図10に示された動的環境は、1つ又は複数のイメージ獲得デバイスによって獲得されたイメージ情報を処理するため、及び照明機器を制御するために、制御システム100に通信可能に結合された、イメージ処理コンピュータ200も含むことができる。イメージ処理コンピュータ200を含む実施形態において、動的環境の監視される条件を表す1つ又は複数の入力信号66によって他の方法で提供される情報の少なくとも一部は、特に、1つ又は複数のイメージ獲得デバイスによって獲得されるイメージから導出される情報に関連して、イメージ処理コンピュータ200によって制御システム100に提供可能である。
[0193] 図10に示される動的環境において、イメージ獲得デバイス26及び照明機器24は、自動化プロセス10の監視及び制御に関連して機械視覚技法を実装するために、特に使用可能である。「機械視覚」という用語は、非常に一般的に、プロセスを制御する目的でデータを抽出するためのイメージの分析を指す。機械視覚技法は、典型的には、様々なイメージ獲得デバイス(例えばデジタル・スチル又はビデオ・カメラ)、及びいくつかのケースでは(いくつかのインスタンスにおいて、後続のイメージ処理を容易にするために、一般的な環境からのある物体の様々な弁別を提供するように特に設計及び構成することが可能な)レンズ及び様々な照明機器のうちの、いずれかを使用したイメージの獲得を含む、一連の動作を含む。1つ又は複数のイメージ獲得デバイスによって提供されるイメージ・データは、様々な形式(例えば、ビデオ・シーケンス、複数カメラからのビュー、又は、医療用スキャナからなどの多次元データ)とすることができる。獲得されたイメージは、その後、イメージから様々な情報を抽出するように(例えば、機械視覚機器20及び制御システム100に動作可能に結合されたイメージング処理コンピュータ200、及び/又は、1つ又は複数の他の独立/外部コンピューティング・デバイスによる、様々なイメージ処理ソフトウェアの実行を介して)処理され、抽出された情報は自動化プロセスの制御に関連した決定のために使用される。
[0194] 機械視覚のために使用可能な様々な照明機器及び技法に関して、(単色又はカラー光源を使用する)2次元可視光イメージング技法が恐らく最も一般的に採用される。しかしながら、他の適切なイメージング技法は、赤外線照明機器(例えば光源及び/又はフィルタ)が使用可能な選択的赤外線イメージング、ライン・スキャン・イメージング、3次元表面イメージング、及びX線イメージングを含むが、これらに限定されない。イメージ獲得デバイスに関して、こうしたデバイスでは、いくつかのフォーム・ファクタ、機能性、及び通信プロトコルが使用可能であり、例えば、いくつかのインスタンスでは、イメージ獲得デバイスはいずれの特定のイメージ処理機能も有さない可能性があるが、他のインスタンスでは、イメージ獲得デバイスはある程度のイメージ処理機能(例えば、「スマート」カメラ又はセンサ)と共に実装可能である。様々な市販のイメージ獲得デバイスが、イーサネット、USB、又はFireWire接続などの、様々なインターフェースのうちのいずれかを介してデータを通信するように構成可能である。
[0195] 制御システム100、イメージ処理コンピュータ200、及び/又は、1つ又は複数の他のコンピューティング/処理デバイスの、マスタ・プロセッサ190によって実装可能な例示のイメージ処理技法に関して、典型的な技法の例は、しきい値処理(グレースケール・イメージの白黒への変換、又はグレースケール値に基づく分離の使用)、セグメント化、ブロブ抽出、パターン認識、バーコード及びデータ行列コード読み取り、光学文字認識、計測(オブジェクト寸法の測定)、位置決め、エッジ検出、カラー分析、フィルタリング(例えば形態学的フィルタリング)、及びテンプレート照合(特定パターンの発見、照合、及び/又はカウント)を含むが、これらに限定されない。
[0196] 図10では、前述のイメージ処理技法のうちのいずれか1つ又は複数の使用の結果として獲得されたイメージから抽出される、様々なイメージ情報を、制御システム100によって1つ又は複数のセンサ/入力デバイスから受信される、かつ/又は、イメージ処理コンピュータ200によって制御システム100に提供される、1つ又は複数の入力信号66によって表される情報全体の一部として含めることができる。例えば抽出されたこうしたイメージ情報は、特定のオブジェクト(例えば組み立てライン上の部品)が特定の時点で獲得された1つ又は複数のイメージ内に存在したこと、オブジェクトの特定の位置及び/又は向きが1つ又は複数のイメージ内で検出されたこと、特定の欠陥が1つ又は複数のイメージ内に存在するオブジェクト内で観察されたことなどを、示すことができる。イメージから抽出されたこうした情報は、所与の時点での自動化プロセスの監視される条件を表すために、単独で、或いは1つ又は複数のセンサからの他の情報と組み合わせて、使用可能であり、これに基づいて制御システムは、自動化プロセス10に関連して実行されることになる1つ又は複数の特定の対応するアクションを規定するように、構成可能である。
[0197] 結論
[0198] 本明細書では、様々な本発明の実施形態について説明及び例示してきたが、当業者であれば、機能を実行するため、かつ/又は、本発明で説明された結果及び/又は利点のうちの1つ又は複数を取得するための、様々な他の手段及び/又は構造が容易に想像され、こうした変形及び/又は修正はそれぞれ、本明細書で説明される本発明の実施形態の範囲内にあるものと考えられる。より一般的に言えば、当業者であれば、本明細書で説明されるすべてのパラメータ、寸法、材料、及び構成が例示的であるものと意図されること、並びに、実際のパラメータ、寸法、材料、及び/又は構成が、本発明の教示が使用される特定の適用例に依存するであろうということを、容易に理解されよう。当業者であれば、単なる日常の実験を使用して、本明細書で説明される特定の本発明の実施形態の多くの等価物を理解又は把握されるであろう。したがって、前述の実施形態が単なる例として提示されたものであること、及び、本発明の実施形態は、添付の特許請求の範囲及びその等価物の範囲内で具体的に説明及び請求された以外の方法で実施可能であることを、理解されよう。本開示の本発明の実施形態は、本明細書で説明される各別個の機能、システム、製品、材料、キット、及び/又は方法を対象とする。更に、こうした機能、システム、製品、材料、キット、及び/又は方法の任意の組み合わせは、こうした機能、システム、製品、材料、キット、及び/又は方法が相互に矛盾しない場合、本開示の本発明の範囲内に含まれる。
[0199] 前述の実施形態は、多数の方法のうちのいずれかで実装可能である。例えば実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを使用して実装することができる。ソフトウェア内に実装される場合、単一のコンピュータ内に提供されるか又は複数のコンピュータ間で分散されるかにかかわらず、任意の適切なプロセッサ又はプロセッサの集合上でソフトウェア・コードを実行することが可能である。
[0200] 更にコンピュータは、ラックマウント式コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、又はタブレット・コンピュータなどの、いくつかの形式のうちのいずれかで具体化可能であることを理解されたい。加えてコンピュータは、携帯情報端末(PDA)、スマートフォン、又は他の適切な携帯型又は据え付け型の電子デバイスを含む、一般にはコンピュータとみなされないが適切な処理機能を備えたデバイス内に、組み込むことが可能である。
[0201] またコンピュータは、1つ又は複数の入力及び出力デバイスを有することができる。これらのデバイスは、とりわけ、ユーザ・インターフェースを提示するために使用可能である。ユーザ・インターフェースを提供するために使用可能な出力デバイスの例は、出力の視覚的提示のためのプリンタ又はディスプレイ・スクリーンと、出力の聴覚的提示のためのスピーカ又は他の音声生成デバイスとを含む。ユーザ・インターフェース用に使用可能な入力デバイスの例は、キーボードと、マウス、タッチ・パッド、及び離散化タブレットなどのポインティング・デバイスとを含む。他の例として、コンピュータは、音声認識を介して又は他の可聴形式で、入力情報を受信することができる。
[0202] こうしたコンピュータは、エンタープライズ・ネットワークなどのローカル・エリア・ネットワーク又はワイド・エリア・ネットワーク、及びインテリジェント・ネットワーク(IN)又はインターネットを含む、任意の適切な形式の1つ又は複数のネットワークによって、相互接続することができる。こうしたネットワークは、任意の適切な技術に基づくものとすることが可能であり、任意の適切なプロトコルに従って動作可能であり、無線ネットワーク、有線ネットワーク、又は光ファイバ・ネットワークを含むことが可能である。
[0203] 本明細書で概説される様々な方法又はプロセスは、様々なオペレーティング・システム又はプラットフォームのうちのいずれか1つを使用する1つ又は複数のプロセッサ上で実行可能な、ソフトウェアとして符号化することができる。加えてこうしたソフトウェアは、いくつかの適切なプログラミング言語及び/又はプログラミング又はスクリプティング・ツールのいずれかを使用して作成可能であり、フレームワーク又は仮想機械上で実行される実行可能機械言語コード又は中間コードとしてコンパイルすることもできる。
[0204] この点で、様々な本発明の概念は、1つ又は複数のコンピュータ或いは他のプロセッサ上で実行された場合、前述の本発明の様々な実施形態を実装する方法を実行する、1つ又は複数のプログラムを用いて符号化された、コンピュータ読み取り可能記憶媒体(又は複数のコンピュータ読み取り可能記憶媒体)(例えば、コンピュータ・メモリ、1つ又は複数のフロッピィ・ディスク、コンパクト・ディスク、光ディスク、磁気テープ、フラッシュ・メモリ、フィールド・プログラマブル・ゲート・アレイ又は他の半導体デバイス内の回路構成、或いは、他の持続性媒体又は有形コンピュータ記憶媒体)として具体化可能である。コンピュータ読み取り可能媒体は、前述の本発明の様々な態様を実装するためにその上に記憶されたプログラムが1つ又は複数の異なるコンピュータ或いは他のプロセッサ上にロード可能なように、トランスポート可能とすることができる。
[0205] 「プログラム」又は「ソフトウェア」という用語は、本明細書では、前述の実施形態の様々な態様を実装するためにコンピュータ又は他のプロセッサをプログラミングするように使用可能な、任意のタイプのコンピュータ・コード又はコンピュータ実行可能命令のセットを言い表すために、総称的な意味で使用される。加えて、一態様によれば、実行された場合、本発明の方法を実行する1つ又は複数のコンピュータ・プログラムは、必ずしも単一のコンピュータ又はプロセッサ上に常駐しないが、本発明の様々な態様を実装するためのいくつかの異なるコンピュータ又はプロセッサ間にモジュール方式で分散可能であることを理解されたい。
[0206] コンピュータ実行可能命令は、1つ又は複数のコンピュータ或いは他のデバイスによって実行されるプログラム・モジュールなどの、多くの形とすることができる。一般に、プログラム・モジュールは、特定のタスクを実行するか、又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラム・モジュールの機能は、様々な実施形態において組み合わせるか又は望ましいように分散させることができる。
[0207] また、データ構造は、コンピュータ読み取り可能媒体内に任意の適切な形で記憶することができる。図をわかりやすくするために、データ構造は、データ構造内の位置を介して関係しているフィールドを有するように示されている場合がある。こうした関係は、フィールド間の関係を伝えるコンピュータ読み取り可能媒体内の位置をフィールド用の記憶に割り当てることによって、同様に達成することができる。しかしながら、ポインタ、タグ、又はデータ要素間の関係を確立する他の機構の使用を含み、任意の適切な機構を使用して、データ構造のフィールド内に情報間の関係を確立することができる。
[0208] また様々な本発明の概念は、その例がこれまでに提供された1つ又は複数の方法として、具体化することができる。方法の一部として実行される動作は、任意の適切な方法で順序付けすることができる。したがって、動作が例示とは異なる順序で実行され、いくつかの動作を、たとえ例示の実施形態では順次動作として示されていても同時に実行することを含むことができる、実施形態が構成可能である。
[0209] 本明細書で定義及び使用されるすべての定義は、辞書定義、参照により組み込まれた文書内の定義、及び/又は、定義された用語の通常の意味を介して、制御するものと理解されたい。
[0211] 本明細書及び特許請求の範囲で使用される「及び/又は」という句は、そのように結合された要素のうちの「いずれか又は両方」、すなわち、あるケースでは結合的に存在し、他のケースでは離接的に存在する要素を意味するものと理解されたい。「及び/又は」と共に列挙される複数の要素は、同様に、すなわち要素のうちの「1つ又は複数」がそのように結合されるものと解釈されたい。「及び/又は」節によって具体的に識別された要素以外の他の要素は、具体的に識別された要素に関係するか又は関係しないかにかかわらず、オプションで提示可能である。したがって、非限定的な例として、「A及び/又はB」という言い回しは、「含む」などのオープンエンド言語と共に使用される場合、一実施形態ではAのみ(オプションでB以外の要素を含む)を指し、他の実施形態ではBのみ(オプションでA以外の要素を含む)を指し、更に他の実施形態ではA及びB(オプションで他の要素を含む)を指す、などとすることができる。
[0212] 本明細書及び特許請求の範囲で使用される場合、「又は」は、上記で定義された「及び/又は」と同じ意味を有するものと理解されたい。例えば、リスト内のアイテムが分離している場合、「又は」又は「及び/又は」は包括的である、すなわち、要素のいくつか又はリストのうちの、少なくとも1つを含むことであるが、複数も含み、オプションでリストに列挙されていない追加のアイテムも含むと解釈されるものとする。「のうちの1つのみ」又は「のうちの正確に1つ」、或いは特許請求の範囲で使用される場合は「からなる」などの、明確に示された用語でない限り、要素のいくつか又はリストのうちの正確に1つの要素の包含を指すことになる。一般に、本明細書で使用される「又は」という用語は、「いずれか」、「のうちの1つ」、「のうちの1つのみ」、又は「のうちの正確に1つ」などの排他性の用語が先行している場合、排他的代替(すなわち、「一方又は他方、但し両方ではない」)を示すとしてのみ解釈されるものとする。特許請求の範囲で使用される場合、「から本質的になる」は、特許法の分野で使用される通常の意味を有するものとする。
[0213] 本明細書及び特許請求の範囲で使用される場合、1つ又は複数の要素のリストに関連して「少なくとも1つ」という句は、要素のリスト内にある要素のうちの任意の1つ又は複数から選択された少なくとも1つの要素を意味するが、要素のリスト内に具体的に列挙されたそれぞれ及びあらゆる要素のうちの少なくとも1つを必ずしも含まず、要素のリスト内にある要素のいずれの組み合わせも除外されないものと理解されたい。この定義は、具体的に識別された要素に関係するか又は関係しないかにかかわらず、「少なくとも1つ」の句が指す要素のリスト内に具体的に識別された要素以外の要素がオプションで提示され得ることも可能にする。したがって、非限定的な例として、「A及びBのうちの少なくとも1つ」(又は等価的に「A又はBのうちの少なくとも1つ」、又は等価的に「A及び/又はBのうちの少なくとも1つ」)は、一実施形態では、オプションで複数のAを含む少なくとも1つのAを指し、Bは存在しない(及びオプションでB以外の要素を含む)、他の実施形態では、オプションで複数のBを含む少なくとも1つのBを指し、Aは存在しない(及びオプションでA以外の要素を含む)、更に他の実施形態では、オプションで複数のAを含む少なくとも1つのA、並びに、オプションで複数のBを含む少なくとも1つのB(及びオプションで他の要素を含む)を指す、などとすることができる。
[0214] 特許請求の範囲、並びに上記明細書において、「備える」、「含む」、「担持する」、「有する」、「含有する」、「関与する」、「保持する」、「から構成される」などの、すべての移行句は、オープンエンドである、すなわち、含むが限定されないことを意味するものと理解されたい。米国特許局特許審査手続き基準、2111.03項に記載のように、「からなる」及び「から本質的になる」という移行句のみが、それぞれクローズ又は半クローズの移行句であるものとする。

Claims (30)

  1. 複数の条件を有する動的環境を監視及び制御するための制御システムであって、前記複数の条件に応答して複数のアクションが必要とされ、前記制御システムは、
    マスタ・プロセッサ、及び
    前記マスタ・プロセッサに通信可能に結合され、コプロセッサ・メモリを含む少なくとも1つのコプロセッサ、
    を備え、
    動作中、前記マスタ・プロセッサは、前記コプロセッサ・メモリ内にコンテンツをロードして、前記少なくとも1つのコプロセッサを、
    前記複数の条件のうちの少なくとも1つの監視される条件を表す少なくとも1つの入力信号を受信することと、前記複数の条件の第1のサブセットのうちの少なくとも1つの条件が満たされているかどうかを決定するように前記少なくとも1つの入力信号を処理することとによって、前記第1のサブセットのみを評価するように、及び
    前記第1のサブセットのうちの前記少なくとも1つの条件が満たされた場合、前記複数のアクションのうちの少なくとも1つのアクションを表す第1の制御情報を提供するように、
    構成し、
    前記少なくとも1つのコプロセッサによって評価される、前記複数の条件の前記第1のサブセットのうちの前記少なくとも1つの条件は、第1のオブジェクトの検出を含む第1の条件を含み、
    前記少なくとも1つのコプロセッサによって受信及び処理される前記少なくとも1つの入力信号は、前記第1のオブジェクトの前記検出を表す部品検出信号を含み、
    前記少なくとも1つのコプロセッサは、前記部品検出信号を処理して、前記第1のオブジェクトの前記検出によって前記第1の条件が満たされているかどうかを決定し、
    前記少なくとも1つのコプロセッサが、前記第1の条件が満たされていると決定した場合、前記少なくとも1つのコプロセッサは、前記少なくとも1つのアクションを表す前記第1の制御情報内に前記第1のオブジェクトに関する第1の識別子を含む、
    制御システム。
  2. 前記少なくとも1つのコプロセッサが、前記第1のオブジェクトの前記検出によって、前記第1の条件が満たされていると決定した場合、前記少なくとも1つのコプロセッサは、前記マスタ・プロセッサに、通知信号を伝送する、請求項1に記載の制御システム。
  3. 前記マスタ・プロセッサは、前記少なくとも1つのコプロセッサから受信した前記通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に他のコンテンツをロードして、
    前記複数の条件の前記第1のサブセットに含まれていない少なくとも1つの新しい条件を評価するように、及び
    前記少なくとも1つの新しい条件が満たされた場合、前記複数のアクションのうちの少なくとも1つの第2のアクションを表す第2の制御情報を提供するように、
    前記少なくとも1つのコプロセッサに再タスクを課す、
    請求項2に記載の制御システム。
  4. 前記少なくとも1つのアクションを表す前記第1の制御情報は、第1のデータ・パケットを含み、
    前記第1のオブジェクトに関する前記第1の識別子は、前記第1のデータ・パケット内にメタデータとして含まれる、
    請求項1に記載の制御システム。
  5. 前記第1のオブジェクトは、組み立て又は検査ライン上の第1の部品であり、
    前記第1のオブジェクトに関する前記第1の識別子は、前記組み立て又は検査ライン上の前記第1の部品の部品番号又はインスタンス番号である、
    請求項1に記載の制御システム。
  6. 前記少なくとも1つのコプロセッサによって評価される前記複数の条件の前記第1のサブセットのうちの前記少なくとも1つの条件は、前記第1のオブジェクトの検出を含む前記第1の条件、及び前記第1のオブジェクトの特定のポジションを決定することを含む第2の条件を含み、
    前記少なくとも1つのコプロセッサが、前記第1のオブジェクトが検出され、かつ前記特定のポジションに達したと決定した場合、前記少なくとも1つのコプロセッサは、前記第1の制御情報内に、前記第1のオブジェクトに関する前記第1の識別子を含む、
    請求項1に記載の制御システム。
  7. 前記少なくとも1つのコプロセッサが、前記第1のオブジェクトが検出され、かつ前記特定のポジションに達したと決定した場合、前記少なくとも1つのコプロセッサは、前記マスタ・プロセッサに、少なくとも1つの通知信号を伝送する、請求項6に記載の制御システム。
  8. 前記マスタ・プロセッサは、前記少なくとも1つのコプロセッサから受信した前記少なくとも1つの通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に他のコンテンツをロードして、
    前記複数の条件の前記第1のサブセットに含まれていない少なくとも1つの新しい条件を評価するように、及び
    前記少なくとも1つの新しい条件が満たされた場合、前記複数のアクションのうちの少なくとも1つの第2のアクションを表す第2の制御情報を提供するように、
    前記少なくとも1つのコプロセッサに再タスクを課す、
    請求項7に記載の制御システム。
  9. 前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第1のオブジェクトの検出を含む前記第1の条件を指定する第1の待機ステートメントを表す第1のコンテンツをロードし、
    前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第1のオブジェクトの前記特定のポジションを決定することを含む前記第2の条件を指定する第2の待機ステートメントを表す第2のコンテンツをロードし、
    前記少なくとも1つのコプロセッサは、前記第1の待機ステートメントを表す前記第1のコンテンツ、及び前記第2の待機ステートメントを表す前記第2のコンテンツを評価して、前記第1のオブジェクトが検出され、かつ前記特定のポジションに達したかどうかを決定する、
    請求項6に記載の制御システム。
  10. 前記少なくとも1つのアクションは、前記第1のオブジェクトの少なくとも1つの静止イメージ及び/又は少なくとも1つのビデオを撮影することを含み、
    前記少なくとも1つのアクションを表す前記第1の制御情報は、前記第1のオブジェクトに関する前記第1の識別子と、前記第1のオブジェクトの前記少なくとも1つの静止イメージ及び/又は前記少なくとも1つのビデオを少なくとも1つのカメラに撮影させる命令とを含む、
    請求項1に記載の制御システム。
  11. 前記第1の制御情報は、第1のデータ・パケットを含み、
    前記第1のオブジェクトに関する前記第1の識別子は、前記第1のデータ・パケット内にメタデータとして含まれる、
    請求項10に記載の制御システム。
  12. 前記第1のオブジェクトは、組み立て又は検査ライン上の第1の部品であり、
    前記第1のオブジェクトに関する前記第1の識別子は、前記組み立て又は検査ライン上の前記第1の部品の部品番号又はインスタンス番号である、
    請求項11に記載の制御システム。
  13. 前記少なくとも1つのコプロセッサによって評価される前記複数の条件の前記第1のサブセットのうちの前記少なくとも1つの条件は、
    前記第1の部品の検出を含む、第1の条件、及び
    前記検出された第1の部品の前記組み立て又は検査ライン上の特定のポジションを決定することを含む、第2の条件、
    を含み、
    前記少なくとも1つのコプロセッサによって受信及び処理される前記少なくとも1つの入力信号は、
    前記部品検出信号を含む第1の入力信号、及び
    カウンタによって出力されるそれぞれのカウンタ値を含み、かつ前記検出された第1の部品のそれぞれのポジションを表す、第2の入力信号、
    を含み、
    前記少なくとも1つのコプロセッサは、
    前記第1の入力信号を処理して、前記第1の部品の検出によって前記第1の条件が満たされているかどうかを決定し、
    前記第2の入力信号を処理して、前記検出された第1の部品が前記組み立て又は検査ライン上の前記特定のポジションに達したと決定することによって前記第2の条件が満たされているかどうかを決定し、
    前記少なくとも1つのコプロセッサが、前記第1の部品が検出され、かつ前記組み立て又は検査ライン上の前記特定のポジションに達したと決定した場合、前記第1のデータ・パケット内に、前記第1の部品に関する前記部品番号又は前記インスタンス番号と、前記第1の部品の前記少なくとも1つの静止イメージ及び/又は前記少なくとも1つのビデオを前記少なくとも1つのカメラに撮影させる前記命令とを含む、
    請求項12に記載の制御システム。
  14. 前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第1の部品の検出を含む前記第1の条件を指定する第1の待機ステートメントを表す第1のコンテンツをロードし、
    前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記検出された第1の部品の前記組み立て又は検査ライン上の前記特定のポジションを決定することを含む前記第2の条件を指定する第2の待機ステートメントを表す、第2のコンテンツをロードし、
    前記少なくとも1つのコプロセッサは、前記第1の待機ステートメントを表す前記第1のコンテンツ、及び前記第2の待機ステートメントを表す前記第2のコンテンツを評価して、前記第1のオブジェクトが検出され、かつ前記特定のポジションに達したかどうかを決定する、
    請求項13に記載の制御システム。
  15. 前記少なくとも1つのアクションは、
    前記第1の条件に対応する複数の第1のアクション、及び
    前記第2の条件に対応する複数の第2のアクション、
    を含み、
    前記複数の第1のアクションは、
    前記組み立て又は検査ライン上の前記第1の部品の検出ポジションを表す第1のカウンタ値で前記カウンタをラッチすること、及び
    前記第1の部品の前記部品番号又は前記インスタンス番号を設定すること、
    を含み、
    前記複数の第2のアクションは、
    前記第1の部品の前記部品番号又は前記インスタンス番号と、前記第1の部品の前記少なくとも1つの静止イメージ及び/又は前記少なくとも1つのビデオを前記少なくとも1つのカメラに撮影させる前記命令とを含む、前記第1のデータ・パケットを生成すること、及び
    前記第1のデータ・パケットが、前記少なくとも1つのカメラに伝送されるようにすること、
    を含み、
    前記第1のコンテンツは、前記第1の条件及び前記複数の第1のアクションを指定する前記第1の待機ステートメントを表し、
    前記第2のコンテンツは、前記第2の条件及び前記複数の第2のアクションを指定する前記第2の待機ステートメントを表し、
    前記少なくとも1つのコプロセッサは、前記第1の待機ステートメントを評価し、前記第1の条件が満たされた場合、前記第1のコンテンツに基づいて前記複数の第1のアクションを実行し、
    前記少なくとも1つのコプロセッサは、前記第2の待機ステートメントを評価し、前記第2の条件が満たされた場合、前記第2のコンテンツに基づいて前記複数の第2のアクションを実行する、
    請求項14に記載の制御システム。
  16. 前記第1のオブジェクトの前記少なくとも1つの静止イメージ及び/又は前記少なくとも1つのビデオは、前記少なくとも1つのカメラによって撮影されると、イメージ処理コンピュータによって処理されて、前記第1のオブジェクトの前記処理された少なくとも1つの静止イメージ及び/又は少なくとも1つのビデオから、イメージ情報が抽出され、
    前記マスタ・プロセッサは、前記第1のオブジェクトの前記少なくとも1つの静止イメージ及び/又は前記少なくとも1つのビデオから前記抽出されたイメージ情報を、前記イメージ処理コンピュータから受信し、
    前記マスタ・プロセッサは、前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に他のコンテンツをロードして、
    前記複数の条件の前記第1のサブセットに含まれていない少なくとも1つの新しい条件を評価するように、及び
    前記少なくとも1つの新しい条件が満たされた場合、前記複数のアクションのうちの少なくとも1つの第2のアクションを表す第2の制御情報を提供するように、
    前記少なくとも1つのコプロセッサに再タスクを課す、
    請求項10に記載の制御システム。
  17. 前記マスタ・プロセッサが前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報は、前記第1のオブジェクトに関する前記第1の識別子を含む、請求項16に記載の制御システム。
  18. 前記マスタ・プロセッサが前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報は、
    前記第1のオブジェクトの特定のポジション及び/又は特定の向き、又は
    前記第1のオブジェクトにおける特定の欠陥
    のうちの少なくとも1つを示す、
    請求項17に記載の制御システム。
  19. 前記イメージ処理コンピュータを更に備え、前記イメージ処理コンピュータは、
    しきい値処理、
    セグメント化、
    ブロブ抽出、
    パターン認識、
    バーコード及びデータ行列コード読み取り、
    光学文字認識、
    計測、
    位置決め、
    エッジ検出、
    カラー分析、
    形態学的フィルタリング、又は
    テンプレート照合
    のうちの少なくとも1つを含む、少なくとも1つのイメージ処理技法を実装する、
    請求項16に記載の制御システム。
  20. 前記少なくとも1つのカメラを更に備え、前記少なくとも1つのカメラは、前記イメージ処理コンピュータを含む、請求項16に記載の制御システム。
  21. 工場組み立て又は検査ラインのための制御システムであって、前記工場組み立て又は検査ラインは、
    前記工場組み立て又は検査ライン内の指定されたポイントにおける複数の工業機器であって、複数の部品が、先入れ先出し(FIFO)の順で、前記複数の部品の組み立て、梱包、及び/又は検査のために通過する、複数の工業機器、
    前記工場組み立て又は検査ライン内の第1の指定されたポイントに近接する第1のセンサであって、前記複数の部品のうちの第1の部品を検出し、前記第1の部品を検出すると第1の部品検出信号を出力する、第1のセンサ、
    カウンタ値を出力する第1の部品ポジション・カウンタであって、前記カウンタ値は、前記複数の部品のうちの前記第1の部品の、前記第1の指定されたポイントに対する前記工場組み立て又は検査ラインに沿ったそれぞれのポジションを表す、第1の部品ポジション・カウンタ、
    前記工場組み立てライン内の第2の指定されたポイントに近接し、前記第1の部品の第1のイメージを獲得する第1のカメラであって、前記第2の指定されたポイントは、前記第1の指定されたポイントに対して前記第1の部品ポジション・カウンタによって出力される、第1の既知のカウンタ値を有する、第1のカメラ、及び
    前記工場組み立てライン内の第3の指定されたポイントに近接し、前記第1の部品の第2のイメージを獲得する第2のカメラであって、前記第3の指定されたポイントは、前記第1の指定されたポイントに対して前記第1の部品ポジション・カウンタによって出力される、第2の既知のカウンタ値を有する、第2のカメラ、
    を備え、
    前記制御システムは、
    マスタ・プロセッサ、及び
    前記マスタ・プロセッサに通信可能に結合され、コプロセッサ・メモリを含む少なくとも1つのコプロセッサ、
    を備え、
    動作中、前記マスタ・プロセッサは、前記コプロセッサ・メモリ内にコンテンツをロードして、前記少なくとも1つのコプロセッサを、前記制御システムによって監視され応答される複数の条件の第1のサブセットのみ評価して応答するように構成し、前記複数の条件の前記第1のサブセットのうちの第1の条件を評価して応答することは、
    A)前記第1の部品検出信号を待機することと
    B)前記第1の部品検出信号を受信することに応答して、
    B1)前記第1の指定されたポイントに対応する第1のカウンタ値に、前記第1の部品ポジション・カウンタをラッチすることと
    B2)前記第1の部品に対応する第1の追跡インスタンス値を設定することと
    C)前記第1のカメラが近接する前記工場組み立て又は検査ライン内の前記第2の指定されたポイントに対応する前記第1の既知のカウンタ値に等しい、第2のカウンタ値を、前記第1の部品ポジション・カウンタが出力するのを待機することと
    D)前記第1の部品ポジション・カウンタが、前記第2のカウンタ値を出力することに応答して、前記第1のカメラに第1のトリガ・パケットを送信することであって、前記第1のトリガ・パケットは、第1のペイロードを含み、前記第1のペイロードは、前記第1の部品に対応する前記第1の追跡インスタンス値を含むことと
    E)前記第2のカメラが近接する前記工場組み立て又は検査ライン内の前記第3の指定されたポイントに対応する前記第2の既知のカウンタ値に等しい、第3のカウンタ値を、前記第1の部品ポジション・カウンタが出力するのを待機することと
    F)前記第1の部品ポジション・カウンタが、前記第3のカウンタ値を出力することに応答して、前記第2のカメラに第2のトリガ・パケットを送信することであって、前記第2のトリガ・パケットは、第2のペイロードを含み、前記第2のペイロードは、前記第1の部品に対応する前記第1の追跡インスタンス値を含むことと、
    を含む、
    制御システム。
  22. 複数の条件を有する動的環境を監視並びに制御するための制御システムであって、前記複数の条件に応答して複数のアクションが必要とされ、前記複数の条件は少なくとも第1の条件及び第2の条件を含み、前記第1の条件に応答して少なくとも1つの第1のアクションが必要とされ、前記第2の条件に応答して少なくとも1つの第2のアクションが必要とされ、前記制御システムは、
    マスタ・プロセッサ、及び
    前記マスタ・プロセッサに通信可能に結合され、コプロセッサ・メモリを含む少なくとも1つのコプロセッサ、
    を備え、
    前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第1の条件及び前記少なくとも1つの第1のアクションを表す第1のコンテンツ、並びに前記第2の条件及び前記少なくとも1つの第2のアクションを表す第2のコンテンツをオフロードし、前記第1の条件及び前記第2の条件は、前記複数の条件のサブセットであり、
    前記少なくとも1つのコプロセッサは、
    前記動的環境内の少なくとも1つの第1の監視された条件を表す少なくとも1つの第1の入力信号、及び
    前記動的環境内の少なくとも1つの第2の監視された条件を表す少なくとも1つの第2の入力信号、
    を受信し、
    前記少なくとも1つのコプロセッサは、前記マスタ・プロセッサによって前記コプロセッサ・メモリ内にオフロードされた前記第1のコンテンツ及び前記第2のコンテンツに基づいて、前記少なくとも1つの第1の入力信号及び前記少なくとも1つの第2の入力信号を処理して、前記第1の条件が前記動的環境内で発生したかどうか、及び/又は前記第2の条件が前記動的環境内で発生したかどうかを、非同期的に評価し、
    前記第1の条件が前記動的環境内で発生していた場合、前記少なくとも1つのコプロセッサは、第1の出力を生成して前記少なくとも1つの第1のアクションを引き起こし、
    前記第2の条件が前記動的環境内で発生していた場合、前記少なくとも1つのコプロセッサは、第2の出力を生成して前記少なくとも1つの第2のアクションを引き起こす、
    制御システム。
  23. 前記少なくとも1つのコプロセッサが、前記第1の条件が前記動的環境内で発生したと決定した場合、前記少なくとも1つのコプロセッサは、前記マスタ・プロセッサに、第1の通知信号を伝送し、
    前記少なくとも1つのコプロセッサが、前記第2の条件が前記動的環境内で発生したと決定した場合、前記少なくとも1つのコプロセッサは、前記マスタ・プロセッサに、第2の通知信号を伝送する、
    請求項22に記載の制御システム。
  24. 前記マスタ・プロセッサは、前記少なくとも1つのコプロセッサから受信した前記第2の通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に前記第1のコンテンツをオフロードするか、
    前記マスタ・プロセッサは、前記少なくとも1つのコプロセッサから受信した前記第1の通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に前記第2のコンテンツをオフロードするか、又は
    前記マスタ・プロセッサは、前記少なくとも1つのコプロセッサから受信した前記第1の通知信号及び前記第2の通知信号の少なくとも一方に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に第3のコンテンツをオフロードして、前記動的環境の第3の条件を評価するように、前記少なくとも1つのコプロセッサに再タスクを課し、前記第3の条件に応答して第3のアクションが必要とされる、
    請求項23に記載の制御システム。
  25. 前記動的環境は、複数の部品が、前記複数の部品の組み立て、梱包、及び/又は検査のために通過する、工場組み立て及び/又は検査ラインであり、
    前記第1の条件は、前記複数の部品のうちの第1の部品の検出を含み、
    前記少なくとも1つの第1の入力信号は、前記工場組み立て及び/又は検査ライン上の第1のポジションにおける第1のセンサによって出力される部品検出信号を含み、
    前記第2の条件は、前記第1の部品の前記工場組み立て及び/又は検査ライン上の第2のポジションを決定することを含み、
    前記少なくとも1つの第2の入力信号は、カウンタによって出力され、前記第1の部品のそれぞれのポジションを表す、それぞれのカウンタ値を含み、
    前記少なくとも1つのコプロセッサは、
    前記少なくとも1つの第1の入力信号を処理して、前記第1の部品の検出によって前記第1の条件が満たされているかどうかを決定し、
    前記少なくとも1つの第2の入力信号を処理して、前記第1の部品が前記工場組み立て及び/又は検査ライン上の前記第2のポジションに達したと決定することによって前記第2の条件が満たされているかどうかを決定する、
    請求項22に記載の制御システム。
  26. 前記少なくとも1つの第1のアクションは、
    前記工場組み立て及び/又は検査ライン上の前記第1の部品の前記第1のポジションを表す第1のカウンタ値で前記カウンタをラッチすること、及び
    前記第1の部品の部品番号又はインスタンス番号を設定すること、
    を含み、
    前記少なくとも1つの第2のアクションは、
    前記第1の部品の前記部品番号又は前記インスタンス番号と、前記第1の部品の少なくとも1つの第1の静止イメージ及び/又は少なくとも1つの第1のビデオを、前記第2のポジションに近接する第1のカメラに撮影させる命令とを含む、第1のデータ・パケットを生成すること、及び
    前記第1のデータ・パケットが、前記第1のカメラに伝送されるようにすること、
    を含む、
    請求項25に記載の制御システム。
  27. 前記工場組み立て及び/又は検査ラインの前記動的環境は、第3の条件を有し、前記第3の条件に応答して少なくとも1つの第3のアクションが必要とされ、
    前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第3の条件及び前記少なくとも1つの第3のアクションを表す第3のコンテンツをオフロードし、
    前記少なくとも1つのコプロセッサは、前記動的環境内の少なくとも1つの第3の監視された条件を表す少なくとも1つの第3の入力信号を受信し、
    前記少なくとも1つのコプロセッサは、前記マスタ・プロセッサによって前記コプロセッサ・メモリ内にオフロードされた前記第1のコンテンツ、前記第2のコンテンツ、及び前記第3のコンテンツに基づいて、前記少なくとも1つの第1の入力信号、前記少なくとも1つの第2の入力信号、及び前記少なくとも1つの第3の入力信号を処理して、前記第1の条件、前記第2の条件、又は前記第3の条件のうちの少なくとも1つが前記動的環境内で発生したかどうかを非同期的に評価し、
    前記第1の条件が前記動的環境内で発生していた場合、前記少なくとも1つのコプロセッサは、前記第1の出力を生成して前記少なくとも1つの第1のアクションを引き起こし、
    前記第2の条件が前記動的環境内で発生していた場合、前記少なくとも1つのコプロセッサは、前記第2の出力を生成して前記少なくとも1つの第2のアクションを引き起こし、
    前記第3の条件が前記動的環境内で発生していた場合、前記少なくとも1つのコプロセッサは、第3の出力を生成して前記少なくとも1つの第3のアクションを引き起こす、
    請求項26に記載の制御システム。
  28. 前記第3の条件は、前記第1の部品の前記工場組み立て及び/又は検査ライン上の第3のポジションを決定することを含み、
    前記少なくとも1つの第3の入力信号は、前記カウンタによって出力され、前記第1の部品の前記それぞれのポジションを表す、前記それぞれのカウンタ値を含み、
    前記少なくとも1つのコプロセッサは、前記少なくとも1つの第3の入力信号を処理して、前記第1の部品が前記工場組み立て及び/又は検査ライン上の前記第3のポジションに達したと決定することによって前記第3の条件が満たされているかどうかを決定し、
    前記少なくとも1つの第3のアクションは、
    前記第1の部品の前記部品番号又は前記インスタンス番号と、前記第1の部品の少なくとも1つの第2の静止イメージ及び/又は少なくとも1つの第2のビデオを、前記第3のポジションに近接する第2のカメラに撮影させる命令とを含む、第2のデータ・パケットを生成すること、及び
    前記第2のデータ・パケットが、前記第2のカメラに伝送されるようにすること、
    を含む、
    請求項27に記載の制御システム。
  29. 前記第1の部品の前記少なくとも1つの第2の静止イメージ及び/又は前記少なくとも1つの第2のビデオは、前記第2のカメラによって撮影されると、イメージ処理コンピュータによって処理されて、前記第1の部品の前記処理された少なくとも1つの第2の静止イメージ及び/又は少なくとも1つの第2のビデオから、イメージ情報が抽出され、
    前記マスタ・プロセッサは、前記第1の部品の前記少なくとも1つの第2の静止イメージ及び/又は前記少なくとも1つの第2のビデオから前記抽出されたイメージ情報を、前記イメージ処理コンピュータから受信し、
    前記マスタ・プロセッサは、前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に第4のコンテンツをオフロードして、前記工場組み立て及び/又は検査ラインの前記動的環境の第4の条件を評価するように、前記少なくとも1つのコプロセッサに再タスクを課し、前記第4の条件に応答して第4のアクションが必要とされる、
    請求項28に記載の制御システム。
  30. 前記マスタ・プロセッサが前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報は、前記第1の部品の前記部品番号又は前記インスタンス番号を含み、かつ、
    前記第1の部品の特定のポジション及び/又は特定の向き、又は
    前記第1の部品における特定の欠陥
    のうちの少なくとも1つを示す、
    請求項29に記載の制御システム。
JP2020006040A 2011-10-05 2020-01-17 動的環境を監視及び/又は制御するためのシステム Active JP7154240B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161543680P 2011-10-05 2011-10-05
US61/543,680 2011-10-05

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019003559A Division JP6650056B2 (ja) 2011-10-05 2019-01-11 動的環境を監視及び制御するための方法及びシステム

Publications (2)

Publication Number Publication Date
JP2020074166A JP2020074166A (ja) 2020-05-14
JP7154240B2 true JP7154240B2 (ja) 2022-10-17

Family

ID=48042577

Family Applications (5)

Application Number Title Priority Date Filing Date
JP2014534803A Withdrawn JP2015501025A (ja) 2011-10-05 2012-10-05 動的環境を監視及び/又は制御するための方法、装置、及びシステム
JP2017045058A Active JP6266819B2 (ja) 2011-10-05 2017-03-09 動的環境を監視及び/又は制御するための方法、装置、及びシステム
JP2017243945A Active JP6467491B2 (ja) 2011-10-05 2017-12-20 動的環境を監視及び制御するための制御システム、機械視覚システム、及び、動的環境を監視及び制御するための方法
JP2019003559A Active JP6650056B2 (ja) 2011-10-05 2019-01-11 動的環境を監視及び制御するための方法及びシステム
JP2020006040A Active JP7154240B2 (ja) 2011-10-05 2020-01-17 動的環境を監視及び/又は制御するためのシステム

Family Applications Before (4)

Application Number Title Priority Date Filing Date
JP2014534803A Withdrawn JP2015501025A (ja) 2011-10-05 2012-10-05 動的環境を監視及び/又は制御するための方法、装置、及びシステム
JP2017045058A Active JP6266819B2 (ja) 2011-10-05 2017-03-09 動的環境を監視及び/又は制御するための方法、装置、及びシステム
JP2017243945A Active JP6467491B2 (ja) 2011-10-05 2017-12-20 動的環境を監視及び制御するための制御システム、機械視覚システム、及び、動的環境を監視及び制御するための方法
JP2019003559A Active JP6650056B2 (ja) 2011-10-05 2019-01-11 動的環境を監視及び制御するための方法及びシステム

Country Status (7)

Country Link
US (6) US9494926B2 (ja)
EP (1) EP2764455B1 (ja)
JP (5) JP2015501025A (ja)
CN (2) CN109634198B (ja)
CA (1) CA2857355C (ja)
HK (1) HK1201097A1 (ja)
WO (1) WO2013052894A1 (ja)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
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
US9494926B2 (en) * 2011-10-05 2016-11-15 Opteon Corporation Methods and apparatus employing an action engine for monitoring and/or controlling dynamic environments
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
EP2835705B1 (en) * 2012-11-15 2017-03-22 OSG Corporation Fabrication process management assistance 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
WO2016206644A1 (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 オムロン株式会社 光学計測装置
WO2018050908A1 (de) * 2016-09-19 2018-03-22 Elmos Semiconductor Aktiengesellschaft Watchdog zur überwachung eines prozessors
EP3539260A4 (en) * 2016-11-10 2020-11-25 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 胡五生 多进制运算器赋意分形算法电路
WO2018136414A1 (en) * 2017-01-18 2018-07-26 Universal Electric Corporation Systems and methods for continuously monitoring a temperature of an electrical supply system
JP2018171668A (ja) * 2017-03-31 2018-11-08 セイコーエプソン株式会社 制御装置、ロボット、およびロボットシステム
JP6870433B2 (ja) * 2017-03-31 2021-05-12 セイコーエプソン株式会社 制御装置、およびロボットシステム
US11025563B2 (en) 2017-04-13 2021-06-01 Johnson Controls Technology Company Space-aware network switch
US10742441B2 (en) 2017-04-13 2020-08-11 Johnson Controls Technology Company Unified building management system
US20180299844A1 (en) * 2017-04-13 2018-10-18 Johnson Controls Technology Company Building management system with unified sensor network
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 株式会社ソニー・インタラクティブエンタテインメント 製造ライン用コンピュータシステム及びそのネットワーク設定方法
US11232218B2 (en) * 2017-07-28 2022-01-25 Koninklijke Philips N.V. Evaluation of a monitoring function
JP6940365B2 (ja) * 2017-10-12 2021-09-29 日立Astemo株式会社 情報更新装置
WO2019090264A1 (en) * 2017-11-03 2019-05-09 Drishti Technologies, Inc. Real time anomaly detection systems and methods
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 ファナック株式会社 システム
CN113272743B (zh) * 2019-02-19 2024-04-12 奥普塔姆软件股份有限公司 使用有通道结构的动态环境进行基于规则的自动化控制
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 芯盟科技有限公司 一种信息处理方法、装置及计算机可读存储介质
CN113924195A (zh) * 2019-05-29 2022-01-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
CN114787726A (zh) 2019-11-05 2022-07-22 奥普唐公司 用于监测和/或控制动态环境的输入/输出设备和方法
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간의 통신 성능 검증 시스템
EP3904982A1 (en) * 2020-04-29 2021-11-03 ABB Schweiz AG Access control within a modular automation system
US11536476B2 (en) 2020-05-12 2022-12-27 Johnson Controls Tyco IP Holdings LLP Building system with flexible facility operation
US11164269B1 (en) 2020-06-25 2021-11-02 Johnson Controls Tyco IP Holdings LLP Systems and methods for dynamic travel planning
CN112068467B (zh) * 2020-08-24 2022-01-14 国微集团(深圳)有限公司 数据传输系统、数据存储系统
JP6896195B1 (ja) * 2020-08-28 2021-06-30 三菱電機株式会社 制御装置及び画像記録方法
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 吉利汽车集团有限公司 一种机器人数据统计方法及其系统
CN113253664B (zh) * 2021-07-02 2021-10-15 峰岹科技(深圳)股份有限公司 协处理器、协处理器控制方法、终端及存储介质
WO2023002523A1 (ja) * 2021-07-19 2023-01-26 三菱電機株式会社 制御システム及びプログラマブルロジックコントローラ
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260195A (ja) 2005-03-17 2006-09-28 Japan Radio Co Ltd 信号処理装置

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5330876B1 (ja) 1966-06-14 1978-08-30
JPS5364181A (en) 1976-11-17 1978-06-08 Toshiba Corp Matrix type sequence controller
US4091455A (en) 1976-12-20 1978-05-23 Honeywell Information Systems Inc. Input/output maintenance access apparatus
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
AU681604B2 (en) 1992-10-19 1997-09-04 Siemens Industrial 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
US5978352A (en) 1995-06-29 1999-11-02 Yazaki Corporation Multiplex transmission system
WO1998000809A1 (en) 1996-06-28 1998-01-08 Hopkins T Eric Image acquisition system
US6594529B1 (en) 1999-03-15 2003-07-15 Siemens Energy & Automation Programmable logic controller method, system and apparatus
EP1177482A1 (en) 1999-03-15 2002-02-06 Siemens Energy & Automation, Inc. Input filter circuit for a programmable logic controller and associated method
ES2263465T3 (es) 1999-03-30 2006-12-16 SIEMENS ENERGY &amp; 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
JP2002297209A (ja) 2001-03-29 2002-10-11 Matsushita Electric Ind Co Ltd シーケンス制御装置におけるシーケンスプログラム格納方法
EP1404061B1 (en) * 2001-06-22 2011-08-10 Omron Corporation Safety network system and safety slave
DE60237888D1 (de) 2001-06-22 2010-11-18 Omron Tateisi Electronics Co Sicherheitsnetzwerksystem, sicherheits-slave und sicherheitssteuerung
US7542867B2 (en) 2001-08-14 2009-06-02 National Instruments Corporation Measurement system with modular measurement modules that convey interface information
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
US7613783B2 (en) 2004-08-17 2009-11-03 Schneider Automation Inc. Gateway having an input/output scanner
US7366807B1 (en) 2004-08-27 2008-04-29 Xilinx, Inc. Network media access controller embedded in a programmable logic device—statistics interface
EP1812843A4 (en) 2004-08-31 2014-08-27 Miller Herman Inc DESIGN-BASED PROTOCOL SYSTEMS FOR CONVERTING TAX RELATIONS BETWEEN EQUIPMENT
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
US7779318B2 (en) 2004-12-27 2010-08-17 Danish Hasan Syed Self test structure for interconnect and logic element testing in programmable devices
CN1878038A (zh) * 2005-06-07 2006-12-13 洛克威尔自动控制技术股份有限公司 无线模块化监视和保护系统拓扑结构
US7469177B2 (en) 2005-06-17 2008-12-23 Honeywell International Inc. Distributed control architecture for powertrains
US7991764B2 (en) * 2005-07-22 2011-08-02 Yogesh Chunilal Rathod Method and system for communication, publishing, searching, sharing and dynamically providing a journal feed
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
WO2007149688A2 (en) 2006-05-30 2007-12-27 Schneider Automation 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
US9217998B2 (en) * 2006-09-29 2015-12-22 Rockwell Automation Technologies, Inc. Management and development of an industrial environment
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 三菱電機株式会社 計装制御システム
US8904074B2 (en) 2007-12-31 2014-12-02 Schneider Electric USA, Inc. Method and apparatus for distributing configuration files in a distributed control system
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
US8155769B2 (en) * 2008-03-17 2012-04-10 National Instruments Corporation Industrial control with integrated machine vision
EP2259241B1 (en) * 2008-03-27 2014-01-08 Hochiki Corporation Alarm unit and alarm system
JP5074327B2 (ja) * 2008-08-21 2012-11-14 株式会社日立製作所 経路制御システム
JP2010079355A (ja) 2008-09-24 2010-04-08 Koyo Electronics Ind Co Ltd 複数plc間の協調制御システム
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
US8347044B2 (en) * 2009-09-30 2013-01-01 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
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
CN201765486U (zh) * 2010-03-05 2011-03-16 姜永东 基于云计算的设备监控系统
CN102200786A (zh) 2010-03-25 2011-09-28 北新集团建材股份有限公司 轻质矿棉吸声板废料系统远距离液位控制装置
US8842679B2 (en) * 2010-07-06 2014-09-23 Nicira, Inc. Control system that elects a master controller instance for switching elements
CN102183939A (zh) * 2011-05-27 2011-09-14 江苏凯达电力科技有限公司 一种变电站室内环境安全智能控制系统
US9494926B2 (en) 2011-10-05 2016-11-15 Opteon Corporation Methods and apparatus employing an action engine for monitoring and/or controlling dynamic environments
US9092607B2 (en) * 2012-10-01 2015-07-28 Oracle International Corporation Dynamic flow control for access managers
CN103729490A (zh) 2012-10-15 2014-04-16 飞思卡尔半导体公司 混合信号ip核原型设计系统
US10691775B2 (en) 2013-01-17 2020-06-23 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
US10966657B2 (en) * 2019-05-01 2021-04-06 General Electric Company Sensing system and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260195A (ja) 2005-03-17 2006-09-28 Japan Radio Co Ltd 信号処理装置

Also Published As

Publication number Publication date
US10101720B2 (en) 2018-10-16
US12061455B2 (en) 2024-08-13
US20130090745A1 (en) 2013-04-11
EP2764455A1 (en) 2014-08-13
US9494926B2 (en) 2016-11-15
US20130096697A1 (en) 2013-04-18
JP2015501025A (ja) 2015-01-08
JP2020074166A (ja) 2020-05-14
JP6650056B2 (ja) 2020-02-19
CN104025095A (zh) 2014-09-03
US20190041819A1 (en) 2019-02-07
US9459607B2 (en) 2016-10-04
CN104025095B (zh) 2018-10-19
JP6467491B2 (ja) 2019-02-13
JP2017142814A (ja) 2017-08-17
CA2857355C (en) 2022-06-14
US20210373520A1 (en) 2021-12-02
US20200150612A1 (en) 2020-05-14
CN109634198A (zh) 2019-04-16
CA2857355A1 (en) 2013-04-11
US10983493B2 (en) 2021-04-20
US20170023918A1 (en) 2017-01-26
EP2764455A4 (en) 2015-08-26
CN109634198B (zh) 2021-06-22
JP2019075164A (ja) 2019-05-16
WO2013052894A1 (en) 2013-04-11
JP6266819B2 (ja) 2018-01-24
HK1201097A1 (en) 2015-08-21
EP2764455B1 (en) 2022-04-20
JP2018077878A (ja) 2018-05-17

Similar Documents

Publication Publication Date Title
JP7154240B2 (ja) 動的環境を監視及び/又は制御するためのシステム
CN106663021B (zh) 虚拟化环境中的智能gpu调度
GB2425622A (en) Programming real-time systems using data flow diagrams
EP3582036B1 (en) Control device
Canedo et al. Towards parallel execution of IEC 61131 industrial cyber-physical systems applications
Lohstroh et al. Deterministic coordination across multiple timelines
Lienen et al. Reconros executor: Event-driven programming of fpga-accelerated ros 2 applications
CN116069485A (zh) 用于处理任务的方法、装置、电子设备和介质
US8172143B2 (en) Code reading device
Lienen et al. Event-Driven Programming of FPGA-accelerated ROS 2 Robotics Applications
CN110865838A (zh) 机器人升级方法、装置、电子设备和计算机可读存储介质
Kang A New Approach to Agile Manufacturing Systems Using System-Level Design Language SystemJ
Cheng et al. Real-time computing in open systems for manufacturing
Hirsch et al. Cube Bot—A Smart Factory Showcase for the Real-Time Container Architecture
Félix et al. Evaluation of a low-cost multithreading approach solution for an embedded system based on Arduino with pseudo-threads
JP2024088106A (ja) 制御システム、処理方法およびデータ中継プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220524

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220809

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220908

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221004

R150 Certificate of patent or registration of utility model

Ref document number: 7154240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150