(57)【要約】【課題】動的環境の制御についてかなり低いレイテンシーを達成する。【解決手段】対応するアクションが必要なことに応答して複数の条件を有する動的環境は、様々な機器、機器を制御するための制御デバイス、及び、環境の監視される条件を表す入力信号を生成するための１つ又は複数のセンサを備える。環境のための制御システムは、マスタ・プロセッサ及び１つ又は複数のコプロセッサを備え、マスタ・プロセッサは、指定された期間内に環境内で発生することが予測される条件の第１のサブセットのみを実行するように、及び、第１のサブセットの特定の条件が満たされた場合、実行されることになるアクションを表す、第１の制御情報を提供するように、所与のコプロセッサを構成する。コプロセッサは、監視される条件を表す入力信号を受信し、第１のサブセットの特定の条件が満たされているかどうかを決定するように入力信号を処理し、機器を制御するように第１の制御情報を制御デバイスに提供する。【選択図】図４
2020074166.tif 000002
【特許請求の範囲】
【請求項１】
複数のアクションが必要なことに応答して複数の条件を有する動的環境を監視及び制御するための制御システムであって、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合された少なくとも１つのコプロセッサ、
を備え、
前記マスタ・プロセッサは、
前記複数の条件の第１のサブセットのみを評価するように、及び
前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、
前記少なくとも１つのコプロセッサを構成する、
制御システム。
【請求項２】
Ａ）前記動的環境は、
Ａ１）自動化プロセスを実装するための機器、
Ａ２）少なくとも１つの制御信号に応答して前記機器を制御するための、少なくとも１つの制御デバイス、及び
Ａ３）前記自動化プロセスを監視するため、及び、前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を生成するための、少なくとも１つのセンサ、
を含み、
Ｂ）前記少なくとも１つのコプロセッサは、
Ｂ１）前記監視される条件を表す前記少なくとも１つの入力信号を受信し、
Ｂ２）前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているかどうかを決定するように、前記少なくとも１つの入力信号を処理し、
Ｂ３）前記監視される条件が前記第１のサブセットのうちの前記少なくとも１つの条件に合致する場合、前記少なくとも１つの制御デバイスのための前記少なくとも１つの制御信号を生成するように、前記第１の制御情報を提供する、
請求項１に記載の制御システム。
【請求項３】
Ｂ）において、前記少なくとも１つのコプロセッサは、更に、
Ｂ４）前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記マスタ・プロセッサに通知信号を伝送する、
請求項２に記載の制御システム。
【請求項４】
請求項３に記載の前記制御システム、
Ａ１）の前記自動化プロセスを実装するための前記機器、
前記機器を制御するためのＡ２）の前記少なくとも１つの制御デバイス、及び
前記自動化プロセスを監視するための前記少なくとも１つのセンサ、
を備える、機械視覚システムであって、
前記自動化プロセスを実装するための前記機器は、
ロボット機器、及び
前記自動化プロセスのために制御されるアンビエント照明を提供するための照明機器、
を備え、
前記少なくとも１つの制御システムは、前記ロボット機器及び／又は前記照明機器を制御するために、前記ロボット機器及び／又は前記照明機器に結合された、複数のアクチュエータを含み、
前記少なくとも１つのセンサは、前記自動化プロセスの少なくとも一部の少なくとも１つのイメージを獲得するための、少なくとも１つのイメージ獲得デバイスを備え、
前記制御システムは、前記少なくとも１つのセンサによって生成される前記少なくとも１つの入力信号を受信するため、及び、Ｂ３）で生成される前記少なくとも１つの制御信号に少なくとも部分的に基づいて、前記複数のアクチュエータ及び／又は前記少なくとも１つのイメージ獲得デバイスを制御するために、前記少なくとも１つの制御デバイス及び前記少なくとも１つのセンサに通信可能に結合される、
機械視覚システム。
【請求項５】
前記少なくとも１つのコプロセッサによる評価のために前記マスタ・プロセッサによって構成された前記複数の条件の前記第１のサブセットは、１つの条件のみを含む、請求項１に記載の制御システム。
【請求項６】
前記少なくとも１つのコプロセッサによる評価のために前記マスタ・プロセッサによって構成された前記複数の条件の前記第１のサブセットは、指定された期間内に前記動的環境内で発生することが予測される複数の条件を含む、請求項１に記載の制御システム。
【請求項７】
前記複数の条件が前記動的環境内で発生することが予測される前記指定された期間は、前記マスタ・プロセッサの応答時間より短い、請求項６に記載の制御システム。
【請求項８】
前記複数の条件が前記動的環境内で発生することが予測される前記指定された期間は、前記マスタ・プロセッサの最悪の応答時間より短い、請求項６に記載の制御システム。
【請求項９】
前記マスタ・プロセッサは、
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、
前記動的環境の現在の状態、
前記マスタ・プロセッサの応答時間、及び、
前記少なくとも１つのコプロセッサの少なくとも１つの属性、
のうちの少なくとも１つに基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第１のサブセットを決定する、請求項１に記載の制御システム。
【請求項１０】
前記少なくとも１つのコプロセッサは、前記複数の条件のうちの少なくとも１つの監視される条件を表す少なくとも１つの入力信号を、受信及び処理するように構成され、
前記少なくとも１つのコプロセッサは、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報に対応する少なくとも１つの出力信号を、出力するように構成され、
前記少なくとも１つのコプロセッサの前記少なくとも１つの属性は、
前記少なくとも１つのコプロセッサの機能状況、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１の数、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１のタイプ、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２の数、及び、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２のタイプ、
のうちの少なくとも１つを備える、
請求項９に記載の制御システム。
【請求項１１】
前記マスタ・プロセッサは、少なくとも１つのソース・コード待機ステートメントを表す少なくとも１つのコンパイル済み実行可能命令に基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第１のサブセットを決定し、前記少なくとも１つのソース・コード待機ステートメントは、前記複数の条件の前記第１のサブセットのうちの前記少なくとも１つの条件、及び前記複数のアクションのうちの前記少なくとも１つの第１のアクションを指定する、請求項１に記載の制御システム。
【請求項１２】
前記少なくとも１つのコプロセッサは、固定された最大数の条件を評価するように構成され、
前記最大数の条件は、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記第１の制御情報を提供するために、前記動的環境内で必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づき、
前記少なくとも１つのコプロセッサによる評価のために前記マスタ・プロセッサによって構成された前記複数の条件の前記第１のサブセットは、前記最大数の条件よりも少ないか又は等しい条件を含む、
請求項１に記載の制御システム。
【請求項１３】
前記少なくとも１つのコプロセッサは、少なくとも第１のコプロセッサ及び第２のコプロセッサを含み、
前記マスタ・プロセッサは、前記複数の条件の前記第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するように、前記第１のコプロセッサを構成し、
前記マスタ・プロセッサは、前記複数の条件の前記第２のサブセットのみを評価するように、及び、前記第２のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、前記第２のコプロセッサを構成する、
請求項１に記載の制御システム。
【請求項１４】
前記複数の条件の前記第１のサブセット及び前記複数の条件の前記第２のサブセットはどちらも、それぞれ前記第１のコプロセッサ及び前記第２のコプロセッサによる評価のための少なくとも１つの共通の条件を含む、請求項１３に記載の制御システム。
【請求項１５】
前記複数の条件のうちの監視される条件は、少なくとも１つの入力信号によって表され、
少なくとも前記第１のコプロセッサ及び前記第２のコプロセッサは、前記監視される条件を表す前記少なくとも１つの入力信号を同時に受信し、
前記第１のコプロセッサ及び前記第２のコプロセッサは、前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記複数の条件の前記第１のサブセット及び前記第２のサブセットを、それぞれ独立に評価する、
請求項１３に記載の制御システム。
【請求項１６】
前記第２のコプロセッサによって評価される前記複数の条件の前記第２のサブセットは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているか否かを示す、少なくとも１つの第２のサブセット条件を含む、請求項１３に記載の制御システム。
【請求項１７】
初回に、前記マスタ・プロセッサは、前記複数の条件の前記第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するように、前記少なくとも１つのコプロセッサを構成し、
２回目に、前記マスタ・プロセッサは、前記複数の条件の第２のサブセットのみを評価するように、及び、前記第２のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、前記少なくとも１つのコプロセッサを再構成する、
請求項１に記載の制御システム。
【請求項１８】
前記マスタ・プロセッサは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているか否かに少なくとも部分的に基づいて、前記２回目に、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第２のサブセットを決定する、請求項１７に記載の制御システム。
【請求項１９】
前記マスタ・プロセッサは、
前記複数の条件の前記第２のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境の現在の状態、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、
前記マスタ・プロセッサの前記応答時間、及び、
前記少なくとも１つのコプロセッサの少なくとも１つの属性、
のうちの少なくとも１つに基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第２のサブセットを決定する、請求項１７に記載の制御システム。
【請求項２０】
前記少なくとも１つのコプロセッサは、前記複数の条件のうちの少なくとも１つの監視される条件を表す少なくとも１つの入力信号を、受信及び処理するように構成され、
前記少なくとも１つのコプロセッサは、前記複数のアクションのうちの前記少なくとも１つの第２のアクションを表す前記第２の制御情報に対応する少なくとも１つの出力信号を、出力するように構成され、
前記少なくとも１つのコプロセッサの前記少なくとも１つの属性は、
前記少なくとも１つのコプロセッサの機能状況、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１の数、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１のタイプ、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２の数、及び、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２のタイプ、
のうちの少なくとも１つを備える、
請求項１９に記載の制御システム。
【請求項２１】
前記マスタ・プロセッサは、少なくとも１つのソース・コード待機ステートメントを表す少なくとも１つのコンパイル済み実行可能命令に基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第２のサブセットを決定し、前記少なくとも１つのソース・コード待機ステートメントは、前記複数の条件の前記第２のサブセットのうちの前記少なくとも１つの条件、及び前記複数のアクションのうちの前記少なくとも１つの第２のアクションを指定する、請求項１７に記載の制御システム。
【請求項２２】
前記複数の条件のうちの監視される条件は少なくとも１つの入力信号によって表され、前記少なくとも１つのコプロセッサは、
前記監視される条件及び／又は第１の構成情報を表す前記少なくとも１つの入力信号を、前記条件の第２のサブセットの評価に関する前記マスタ・プロセッサから受信するための、少なくとも１つの入力インターフェース、
前記マスタ・プロセッサから受信する少なくとも１つの前記第１の構成情報を記憶するための専用メモリ、
前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するための、少なくとも１つの出力インターフェース、及び、
前記少なくとも１つの入力インターフェース、前記専用メモリ、及び前記少なくとも１つの出力インターフェースに、通信可能に結合された少なくとも１つのコントローラであって、
前記第１のサブセットの前記少なくとも１つの条件が満たされているかどうかを決定するように、前記マスタ・プロセッサから受信する前記第１の構成情報に少なくとも部分的に基づいて、前記少なくとも１つの入力信号を処理すること、及び、
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記第１の制御情報を提供するように、前記少なくとも１つの出力インターフェースを制御すること、
を実行するように構成された、前記少なくとも１つのコントローラ、
を備える、請求項１に記載の制御システム。
【請求項２３】
前記少なくとも１つのコプロセッサの前記少なくとも１つのコントローラは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記マスタ・プロセッサに通知信号を伝送するように、前記少なくとも１つの出力インターフェースを制御するように構成された、請求項２２に記載の制御システム。
【請求項２４】
前記少なくとも１つの入力信号は複数の入力信号を含み、前記複数の入力信号のそれぞれの値は、所与の時点で、前記複数の条件のうちの前記監視される条件を表し、
前記少なくとも１つのコプロセッサの前記少なくとも１つの入力インターフェースは、前記複数の入力信号を受信するように構成された、
請求項２２に記載の制御システム。
【請求項２５】
前記複数の入力信号の前記それぞれの値は、
前記監視される条件を表す複数のリアルタイム値、
前記監視される条件を表す複数のラッチされた値
前記監視される条件を表す少なくとも１つのマルチビット・デジタル値、及び、
前記監視される条件を構成する異なる感知パラメータをそれぞれ表す、複数のバイナリ値、
のうちの少なくとも１つを備える、請求項２４に記載の制御システム。
【請求項２６】
前記少なくとも１つのコプロセッサによって前記マスタ・コントローラから受信される前記第１の構成情報は、前記少なくとも１つのコプロセッサによる評価のために前記条件の第１のサブセットを成文化する第１の実行可能プログラムを含み、
前記少なくとも１つのコプロセッサの前記少なくとも１つの入力インターフェースは、前記第１の実行可能プログラムを受信するように構成され、
前記少なくとも１つのコプロセッサの前記専用メモリは、前記少なくとも１つの入力インターフェースによって受信された場合、前記第１の実行可能プログラムを記憶し、
前記少なくとも１つのコプロセッサの前記少なくとも１つのコントローラは、前記監視される条件を表す前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記条件の第１のサブセットを評価するように、前記第１の実行可能プログラムを実行するための中央処理ユニットを含む、
請求項２２に記載の制御システム。
【請求項２７】
前記少なくとも１つのコプロセッサによって前記マスタ・コントローラから受信される前記第１の構成情報は、前記少なくとも１つのコプロセッサによる評価のために前記条件の第１のサブセットを表す少なくとも１つの条件／アクション・ペアを含み、
前記少なくとも１つのコプロセッサの前記少なくとも１つの入力インターフェースは、前記少なくとも１つの条件／アクション・ペアを受信するように構成され、
前記少なくとも１つのコプロセッサの前記専用メモリは、前記少なくとも１つの入力インターフェースによって受信された場合、前記少なくとも１つの条件／アクション・ペアを記憶し、
前記少なくとも１つのコプロセッサの前記少なくとも１つのコントローラは、前記監視される条件を表す前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記少なくとも１つの条件／アクション・ペアを評価するためのデジタル論理回路を含む、
請求項２２に記載の制御システム。
【請求項２８】
Ａ）前記専用メモリは、前記少なくとも１つの条件／アクション・ペアを記憶するための少なくとも１つのレジスタを含み、
Ｂ）前記少なくとも１つの条件／アクション・ペアは、評価されることになる前記条件の第１のサブセットのうちの特定の条件を表すそれぞれの値を有する第１のビット数と、前記特定の条件が満たされた場合に実行されることになる対応するアクションを表すそれぞれの値を有する第２のビット数とを含み、
Ｃ）前記デジタル論理回路は、
Ｃ１）少なくとも１つの比較器であって、
前記特定の条件を表す前記第１のビット数の前記それぞれの値、及び、前記監視される条件を表す前記少なくとも１つの入力信号の前記少なくとも１つの値を比較するため、及び、
前記特定の条件が前記監視される条件に合致する場合、合致信号を提供するための、
比較器と、
Ｃ２）前記専用メモリの前記少なくとも１つのレジスタに結合され、前記合致信号が前記比較器によってアサートされた場合、実行されることになる前記対応するアクションを表す前記第２のビット数を前記少なくとも１つの出力インターフェースに提供するために、前記合致信号を受信するように前記比較器に結合された、少なくとも１つのゲートと、
を含み、
前記少なくとも１つの出力インターフェースは、前記第２のビット数を前記第１の制御情報として提供する、
請求項２７に記載の制御システム。
【請求項２９】
前記少なくとも１つの出力インターフェースは、前記特定の条件が前記監視される条件に合致することを示すために、前記合致信号を通知信号として前記マスタ・プロセッサに提供する、請求項２８に記載の制御システム。
【請求項３０】
前記専用メモリは、固定された最大数の条件／アクション・ペアを記憶するように構成され、
前記最大数の条件／アクション・ペア及び前記少なくとも１つのレジスタのサイズのうちの少なくとも１つは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記第１の制御情報を提供するために、前記動的環境内で必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づく、
請求項２８に記載の制御システム。
【請求項３１】
前記専用メモリは、複数の条件／アクション・ペアを記憶するための複数のレジスタを含み、前記複数の条件／アクション・ペアのうちのそれぞれの条件／アクション・ペアは、評価されることになる前記条件の第１のサブセットのうちの特定の条件を表すそれぞれの値を有する前記第１のビット数と、前記特定の条件が満たされた場合に実行されることになる前記対応するアクションを表すそれぞれの値を有する前記第２のビット数とを含み、
前記デジタル論理回路は、前記複数の条件／アクション・ペアを順次処理するために、前記少なくとも１つの比較器及び前記少なくとも１つのゲートを専用メモリの前記複数のレジスタに連続的に結合するための、スキャニング回路を更に備える、
請求項２８に記載の制御システム。
【請求項３２】
マスタ・プロセッサと、前記マスタ・プロセッサに通信可能に結合された少なくとも１つのコプロセッサとを備える、システムにおいて、複数のアクションが必要なことに応答して複数の条件を有する動的環境を監視及び制御するための方法であって、
Ａ）前記マスタ・プロセッサの応答時間よりも短い指定された期間内に前記動的環境内で発生することが予測される前記複数の条件の第１のサブセットを、前記マスタ・プロセッサを介して決定すること、及び、
Ｂ）前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、Ａ）で決定された前記複数の条件の前記第１のサブセットを、前記少なくとも１つのコプロセッサを介して評価すること、
を含む、方法。
【請求項３３】
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記少なくとも１つのコプロセッサから前記マスタ・プロセッサに通知信号を伝送すること、
を更に含む、請求項３２に記載の方法。
【請求項３４】
Ａ）において、前記指定された期間は前記マスタ・プロセッサの最悪の応答時間よりも短い、請求項３２に記載の方法。
【請求項３５】
Ａ）は、
前記動的環境内で前記複数の条件が発生することが予測される特定のシーケンス、
前記動的環境内で実行された少なくとも１つの以前のアクション、
前記動的環境の現在の状態、及び、
前記少なくとも１つのコプロセッサの少なくとも１つの属性、
のうちの少なくとも１つに基づいて、前記複数の条件の前記第１のサブセットを決定することを含む、請求項３２に記載の方法。
【請求項３６】
前記少なくとも１つのコプロセッサは、前記複数の条件のうちの少なくとも１つの監視される条件を表す少なくとも１つの入力信号を、受信及び処理するように構成され、
前記少なくとも１つのコプロセッサは、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報に対応する少なくとも１つの出力信号を、出力するように構成され、
前記少なくとも１つのコプロセッサの前記少なくとも１つの属性は、
前記少なくとも１つのコプロセッサの機能状況、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１の数、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１のタイプ、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２の数、及び、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２のタイプ、
のうちの少なくとも１つを備える、
請求項３５に記載の方法。
【請求項３７】
Ａ）は、前記マスタ・プロセッサによる、少なくとも１つのソース・コード待機ステートメントを表す少なくとも１つのコンパイル済み実行可能命令の実行に基づいて、前記複数の条件の前記第１のサブセットを決定することを含み、前記少なくとも１つのソース・コード待機ステートメントは、前記複数の条件の前記第１のサブセットのうちの前記少なくとも１つの条件、及び前記複数のアクションのうちの前記少なくとも１つの第１のアクションを指定する、請求項３２に記載の方法。
【請求項３８】
Ａ）は、
前記マスタ・プロセッサの前記応答時間に基づいて、前記少なくとも１つのコプロセッサによる評価のために、固定された最大数の条件を決定すること、
を更に含み、
前記複数の条件の前記第１のサブセットは、前記最大数の条件よりも少ないか又は等しい、
請求項３２に記載の方法。
【請求項３９】
前記少なくとも１つのコプロセッサは少なくとも第１のコプロセッサ及び第２のコプロセッサを含み、
Ｂ）は、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するように、Ａ）において決定された前記複数の条件の前記第１のサブセットを、前記第１のコプロセッサを介して評価することを含み、
前記方法は、
Ｃ）前記指定された期間内に前記動的環境内で発生することが予測される前記複数の条件の第２のサブセットを、前記マスタ・プロセッサを介して決定すること、及び
Ｄ）前記第２のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、Ｃ）において決定された前記複数の条件の前記第２のサブセットを、前記第２のコプロセッサを介して評価すること、
を更に含む、請求項３２に記載の方法。
【請求項４０】
Ｃ）で決定された前記複数の条件の前記第２のサブセットは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているか否かを示す、少なくとも１つの第２のサブセット条件を含む、請求項３９に記載の方法。
【請求項４１】
前記複数の条件のうちの監視される条件は、少なくとも１つの入力信号によって表され、
少なくとも前記第１のコプロセッサ及び前記第２のコプロセッサは、前記監視される条件を表す前記少なくとも１つの入力信号を同時に受信し、
前記第１のコプロセッサ及び前記第２のコプロセッサは、前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記複数の条件の前記第１のサブセット及び前記第２のサブセットを、それぞれ独立に評価する、
請求項３９に記載の方法。
【請求項４２】
Ｂ）の実行後に、
Ｃ）前記指定された期間内に前記動的環境内で発生することが予測される前記複数の条件の第２のサブセットを、前記マスタ・プロセッサを介して決定すること、及び、
Ｄ）前記第２のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、Ｃ）で決定された前記複数の条件の前記第２のサブセットを、前記少なくとも１つのコプロセッサを介して評価すること、
を更に含む、請求項３２に記載の方法。
【請求項４３】
Ｃ）は、
Ｂ）において、前記第１のサブセットのうちの少なくとも１つの条件が満たされているか否かに少なくとも部分的に基づいて、前記複数の条件の前記第２のサブセットを決定すること、
を含む、請求項４２に記載の方法。
【請求項４４】
前記複数の条件のうちの監視される条件は複数の入力信号によって表され、前記複数の入力信号のそれぞれの値は、所与の時点で、前記複数の条件のうちの前記監視される条件を表し、
前記複数の入力信号の前記それぞれの値は、
前記監視される条件を表す複数のリアルタイム値、
前記監視される条件を表す複数のラッチされた値
前記監視される条件を表す少なくとも１つのマルチビット・デジタル値、及び、
前記監視される条件を構成する異なる感知パラメータをそれぞれ表す、複数のバイナリ値、
のうちの少なくとも１つを備える、請求項３２に記載の方法。
【請求項４５】
複数のアクションが必要なことに応答して複数の条件を有する動的環境を監視及び制御するための制御システムであって、前記動的環境は、自動化プロセスを実装するための機器と、少なくとも１つの制御信号に応答して前記機器を制御するための、少なくとも１つの制御デバイスと、前記自動化プロセスを監視するため、及び、前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を生成するための、少なくとも１つのセンサとを備え、前記制御システムは、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合された少なくとも１つのコプロセッサ、
を備え、
前記マスタ・プロセッサは、
前記マスタ・プロセッサの応答時間よりも短い指定された期間内に前記動的環境内で発生することが予測される、前記複数の条件の第１のサブセットのみを評価するように、及び
前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、
前記少なくとも１つのコプロセッサを構成し、
前記少なくとも１つのコプロセッサは、
前記監視される条件を表す前記少なくとも１つの入力信号を受信し、
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているかどうかを決定するように、前記少なくとも１つの入力信号を処理し、
前記監視される条件が前記第１のサブセットのうちの前記少なくとも１つの条件に合致する場合、前記少なくとも１つの制御デバイスのための前記少なくとも１つの制御信号を生成するように、前記第１の制御情報を提供する、
制御システム。
【請求項４６】
請求項４５に記載の前記制御システム、
前記自動化プロセスを実装するための前記機器、
前記機器を制御するための前記少なくとも１つの制御デバイス、及び
前記自動化プロセスを監視するための前記少なくとも１つのセンサ、
を備える、機械視覚システムであって、
前記自動化プロセスを実装するための前記機器は、
ロボット機器、及び
前記自動化プロセスのために制御されるアンビエント照明を提供するための照明機器、
を備え、
前記少なくとも１つの制御システムは、前記ロボット機器及び／又は前記照明機器を制御するために、前記ロボット機器及び／又は前記照明機器に結合された、複数のアクチュエータを含み、
前記少なくとも１つのセンサは、前記自動化プロセスの少なくとも一部の少なくとも１つのイメージを獲得するための、少なくとも１つのイメージ獲得デバイスを備え、
前記制御システムは、前記少なくとも１つのセンサによって生成される前記少なくとも１つの入力信号を受信するため、及び、前記少なくとも１つの制御デバイスのための前記少なくとも１つの制御信号に少なくとも部分的に基づいて、前記複数のアクチュエータ及び／又は前記少なくとも１つのイメージ獲得デバイスを制御するために、前記少なくとも１つの制御デバイス及び前記少なくとも１つのセンサに通信可能に結合される、
機械視覚システム。
【請求項４７】
動的環境の複数の条件を評価するためのアクション・エンジンであって、
少なくとも１つのイベント・テーブルを記憶するためのメモリであって、前記少なくとも１つのイベント・テーブルは、複数の連続する隣接メモリ位置として構造化され、前記複数の連続する隣接メモリ位置の各メモリ位置は、前記アクション・エンジンによって評価されることになる前記複数の条件のうちの特定の条件、及び、前記特定の条件が満たされた場合に実行されることになる対応するアクションを表す、コンテンツを記憶するように構成された、メモリと、
前記少なくとも１つのイベント・テーブルにアクセスするように前記メモリに通信可能に結合された、少なくとも１つのスキャナであって、
前記コンテンツ内に表された前記複数の条件を評価するために、前記少なくとも１つのイベント・テーブルの前記それぞれのメモリ位置の前記コンテンツを、順次処理するように、
評価時に満たされた前記複数の条件のうちの各条件に対して、通知信号を生成するように、及び、
評価時に前記複数の条件のいずれかが満たされた場合、前記動的環境内で実行されることになる少なくとも１つのアクションを表す制御情報を生成するように、
構成された、処理回路を備える、少なくとも１つのスキャナと、
を備える、アクション・エンジン。
【請求項４８】
Ａ）前記動的環境は、
Ａ１）自動化プロセスを実装するための機器、
Ａ２）少なくとも１つの制御信号に応答して前記機器を制御するための、少なくとも１つの制御デバイス、及び
Ａ３）前記自動化プロセスを監視するため、及び、前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を生成するための、少なくとも１つのセンサ、
を含み、
Ｂ）前記アクション・エンジンの前記少なくとも１つのスキャナは、
Ｂ１）前記監視される条件を表す前記少なくとも１つの入力信号を受信し、
Ｂ２）前記イベント・テーブルの少なくとも第１のメモリ位置の前記コンテンツによって表される少なくとも第１の条件が満たされているかどうかを決定するように、前記少なくとも１つの入力信号を処理し、
Ｂ３）前記監視される条件が前記少なくとも１つの第１の条件に合致する場合、前記少なくとも１つの第１の条件に対応する実行されることになる少なくとも１つの第１のアクションを表す第１の制御情報を提供する、
請求項４７に記載のアクション・エンジン。
【請求項４９】
請求項４８に記載の前記アクション・エンジンと、
前記アクション・エンジンに通信可能に結合されたマスタ・プロセッサと、を備え、前記マスタ・プロセッサは、前記マスタ・プロセッサに記憶されたプロセッサ実行可能命令の実行時に、
前記少なくとも１つのイベント・テーブルの前記それぞれのメモリ位置の前記コンテンツを、前記アクション・エンジンに提供するように、及び、
評価時に満たされた前記複数の条件のうちのそれぞれの条件についての通知信号を、前記アクション・エンジンから受信するように、
構成された、制御システム。
【請求項５０】
請求項４８に記載の前記アクション・エンジン、
Ａ１）の前記自動化プロセスを実装するための前記機器、
前記機器を制御するためのＡ２）の前記少なくとも１つの制御デバイス、及び
前記自動化プロセスを監視するための前記少なくとも１つのセンサ、
を備える、機械視覚システムであって、
前記自動化プロセスを実装するための前記機器は、
ロボット機器、及び
前記自動化プロセスのために制御されるアンビエント照明を提供するための照明機器、
を備え、
前記少なくとも１つの制御システムは、前記ロボット機器及び／又は前記照明機器を制御するために、前記ロボット機器及び／又は前記照明機器に結合された、複数のアクチュエータを含み、
前記少なくとも１つのセンサは、前記自動化プロセスの少なくとも一部の少なくとも１つのイメージを獲得するための、少なくとも１つのイメージ獲得デバイスを備え、
前記アクション・エンジンは、前記少なくとも１つのセンサによって生成される前記少なくとも１つの入力信号を受信するため、及び、Ｂ３）で生成される少なくとも前記第１の制御情報に少なくとも部分的に基づいて、前記複数のアクチュエータ及び／又は前記少なくとも１つのイメージ獲得デバイスを制御するために、前記少なくとも１つの制御デバイス及び前記少なくとも１つのセンサに通信可能に結合される、
機械視覚システム。
【請求項５１】
前記動的環境の前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を受信するために、前記少なくとも１つのスキャナに通信可能に結合された、少なくとも１つの入力インターフェースを更に備え、
前記少なくとも１つのスキャナの前記処理回路は、前記少なくとも１つの入力信号の値と、前記少なくとも１つのイベント・テーブルの前記少なくとも１つのメモリ位置の前記コンテンツの少なくとも第１の部分とを比較し、
前記少なくとも１つの入力信号の前記値が、前記少なくとも１つのメモリ位置、及び評価されることになる前記特定の条件を表す、前記コンテンツの少なくとも前記第１の部分に合致する場合、前記少なくとも１つのスキャナの前記処理回路は、少なくともいくつかの前記制御情報を提供するように前記動的環境内で実行されることになる前記対応するアクションを表す、前記少なくとも１つのメモリ位置の前記コンテンツの第２の部分を処理する、
請求項４７に記載のアクション・エンジン。
【請求項５２】
前記少なくとも１つのイベント・テーブルは、固定された最大数の連続する隣接メモリ位置を含み、
前記最大数のメモリ位置は、前記複数の条件のうちの任意の条件が満たされた場合、前記動的環境内で前記制御情報を提供するために必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づく、
請求項５１に記載のアクション・エンジン。
【請求項５３】
前記スキャナの前記処理回路は、
前記少なくとも１つの入力信号の前記値と、前記少なくとも１つのメモリ位置の前記コンテンツの少なくとも１つの前記第１の部分とを比較するための、比較器論理回路、
前記少なくとも１つのメモリ位置、及び実行されることになる前記対応するアクションを表す、前記コンテンツの前記第２の部分を処理するため、及び、前記制御情報の前記少なくともいくつかを提供するための、アクション論理回路、
前記それぞれのメモリ位置の前記コンテンツを、前記比較器論理回路及び前記アクション論理回路に順次提供するように、前記少なくとも１つのイベント・テーブルを制御するための、シーケンシング論理回路、及び、
前記少なくとも１つのイベント・テーブルの少なくとも１つのメモリ・レジスタに新しいコンテンツを書き込むように、前記少なくとも１つのイベント・テーブルを制御するための、イベント・テーブル書き込み調停論理回路、
を備える、請求項５１に記載のアクション・エンジン。
【請求項５４】
前記複数の連続する隣接メモリ位置の各メモリ位置の前記コンテンツは、条件／アクション・ペアを含み、前記条件／アクション・ペアは、前記第１の部分を構成し、評価されることになる前記複数の条件のうちの特定の条件を表すそれぞれの値を有する、第１のビット数と、前記第２の部分を構成し、前記特定の条件が満たされた場合に実行されることになる前記対応するアクションを表すそれぞれの値を有する、第２のビット数とを含み、
前記スキャナの前記処理回路は、
前記特定の条件を表す前記第１のビット数の前記それぞれの値、及び、前記複数の条件のうちの前記監視される条件を表す前記少なくとも１つの入力信号の前記値を比較するために、前記少なくとも１つのメモリ位置に結合された比較器であって、前記比較器は、前記特定の条件が前記監視される条件に合致する場合、合致信号を生成するように更に構成された、比較器、及び、
前記合致信号が前記比較器によってアサートされた場合、実行されることになる前記対応するアクションを表すそれぞれの値を有する前記第２のビット数を出力するために、前記少なくとも１つのメモリ位置に結合され、前記合致信号を受信するように前記比較器に結合された、ゲート、
を備える、請求項５１に記載のアクション・エンジン。
【請求項５５】
少なくとも１つのセマフォを記憶するために、前記少なくとも１つのスキャナに通信可能に結合された、少なくとも１つのセマフォ・レジスタを更に備え、
前記少なくとも１つのセマフォは、リソース競合の管理を容易にし、
前記少なくとも１つのスキャナは、前記複数の条件のうちの少なくとも１つの条件の評価が依拠する少なくとも１つのリソースの可用性を保証するために、前記少なくとも１つのセマフォを獲得及び解除する、
請求項５１に記載のアクション・エンジン。
【請求項５６】
前記少なくとも１つの入力信号は複数の入力信号を含み、前記複数の入力信号のそれぞれの値は、所与の時点で、前記複数の条件のうちの前記監視される条件を表し、
前記少なくとも１つの入力インターフェースは、前記複数の入力信号を受信するように構成された、
請求項５１に記載のアクション・エンジン。
【請求項５７】
前記複数の入力信号の前記それぞれの値は、
前記監視される条件を表す複数のリアルタイム値、
前記監視される条件を表す複数のラッチされた値
前記監視される条件を表す少なくとも１つのマルチビット・デジタル値、
前記監視される条件を構成する異なる感知パラメータをそれぞれ表す、複数のバイナリ値、及び、
少なくとも１つのセマフォを表す少なくとも１つのバイナリ値、
のうちの少なくとも１つを備える、請求項５６に記載のアクション・エンジン。
【請求項５８】
前記少なくとも１つの入力インターフェースは、前記少なくとも１つのスキャナの前記処理回路によって生成される前記通知信号を受信する外部デバイスから、前記イベント・テーブルの各メモリ位置の前記コンテンツを受信するように、更に構成された、請求項５１に記載のアクション・エンジン。
【請求項５９】
評価時に満たされた前記複数の条件のそれぞれの条件について前記通知信号を提供するため、及び、前記動的環境内で実行されることになる対応するアクションを表す前記少なくとも１つのメモリ位置の前記コンテンツの前記第２の部分に少なくとも部分的に基づいて、前記制御情報の前記少なくともいくつかを更に提供するために、前記少なくとも１つのスキャナに通信可能に結合された、少なくとも１つの出力インターフェース、
を更に備える、請求項５１に記載のアクション・エンジン。
【請求項６０】
前記制御情報の前記少なくともいくつかによって表されるような、前記動的環境内で実行されることになる前記対応するアクションは、
前記動的環境内の少なくとも１つの制御デバイスに、少なくとも１つのデータ・パケットを送信すること、
少なくとも１つのフラグ・ビットを設定及び／又はクリアすること、
少なくとも１つの出力ビットを設定及び／又はクリアすること、
少なくとも１つのセマフォを設定及び／又はクリアすること、及び、
少なくとも１つのカウンタをラッチ及び／又はリセットすること、
のうちの少なくとも１つを含む、請求項５９に記載のアクション・エンジン。
【請求項６１】
前記少なくとも１つのイベント・テーブルの各メモリ位置は、第１のビット数を有する少なくとも１つのメモリ・レジスタを含み、
評価されることになる前記特定の条件を表す各メモリ位置の前記コンテンツの前記第１の部分は、前記第１の数よりも小さい第２のビット数を含み、前記第２のビット数の少なくともいくつかは、前記少なくとも１つのメモリ・レジスタ内の非隣接ビットである、
請求項５１に記載のアクション・エンジン。
【請求項６２】
前記動的環境内で実行されることになる対応するアクションを表す各メモリ位置の前記コンテンツの前記第２の部分は、前記第１の数よりも小さい第３のビット数を含み、前記第３のビット数の少なくともいくつかは、前記少なくとも１つのメモリ・レジスタ内の非隣接ビットである、
請求項６１に記載のアクション・エンジン。
【請求項６３】
前記複数の連続する隣接メモリ位置のうちの第１のメモリ位置の前記コンテンツの前記第１の部分は、前記第１のメモリ位置を前記複数の連続する隣接メモリ位置のうちの次のメモリ位置にリンクするための、チェーン・ビットを含み、前記第１のメモリ位置の前記コンテンツの前記第１の部分は、評価されることになる第１の条件を表し、
前記動的環境内で実行されることになる第１の対応するアクションを表す、前記第１のメモリ位置の前記コンテンツの前記第２の部分は、前記動的環境内で実行されることになるアクションがないことを示す第１のアクション・オペランドを含み、
前記次のメモリ位置の前記コンテンツの前記第１の部分は、評価されることになる第２の条件を表し、
前記次のメモリ位置の前記コンテンツの前記第２の部分は、前記第１の条件及び前記第２の条件の両方が満たされた場合、前記動的環境内で実行されることになる少なくとも１つのアクションを表す第２のアクション・オペランドを含む、
請求項５１に記載のアクション・エンジン。
【請求項６４】
前記少なくとも１つのイベント・テーブルの各メモリ位置は、第１のビット数を有する少なくとも１つのメモリ・レジスタを含み、
前記第１のビット数は、命令コード、アクション・パラメータ、及び条件オペランドとして区分され、
前記命令コードは、少なくとも条件タイプ・コード及びアクション・オペランドを含み、
前記条件タイプ・コード及び前記条件オペランドは、評価されることになる前記特定の条件を表す各メモリ位置の前記コンテンツの前記第１の部分の少なくとも一部を構成し、
前記アクション・オペランド及び前記アクション・パラメータは、前記動的環境内で実行されることになる前記対応するアクションを表す各メモリ位置の前記コンテンツの前記第２の部分の少なくとも一部を構成する、
請求項５１に記載のアクション・エンジン。
【請求項６５】
前記少なくとも１つのメモリ・レジスタについての前記第１のビット数は６４ビットであり、
前記命令コードは１６ビットであり、
前記アクション・パラメータは１６ビットであり、
前記条件オペランドは３２ビットである、
請求項６４に記載のアクション・エンジン。
【請求項６６】
前記少なくとも１つのイベント・テーブルは１２８のメモリ位置を含む、請求項６５に記載のアクション・エンジン。
【請求項６７】
前記命令コードは、
カウンタ・フィールド、及び
前記条件タイプ・コードの処理に関する少なくとも１つのビット、
を更に含む、請求項６４に記載のアクション・エンジン。
【請求項６８】
前記条件タイプ・コードの処理に関する前記少なくとも１つのビットは、
チェーン・ビット、
ＸＯＲビット、
通知ビット、
満足ビット、及び、
最終条件ビット、
のうちの少なくとも１つを含む、請求項６７に記載のアクション・エンジン。
【請求項６９】
動的環境の複数の条件を評価するための方法であって、
Ａ）メモリ内に記憶された少なくとも１つのイベント・テーブルのそれぞれのメモリ位置のコンテンツを順次処理することであって、前記少なくとも１つのイベント・テーブルは複数の連続する隣接メモリ位置として構築され、前記複数の連続する隣接メモリ位置の各メモリ位置は、評価されることになる前記複数の条件のうちの特定の条件と、前記特定の条件が満たされた場合、実行されることになる対応するアクションとを表す、条件／アクション・ペアを記憶するように構成された、順次処理すること、
Ｂ）Ａ）において、評価時に満たされた前記複数の条件のうちの各条件についての通知信号を生成すること、及び
Ｃ）Ａ）において、評価時に前記複数の条件のいずれかが満たされた場合、前記動的環境内で実行されることになる少なくとも１つのアクションを表す制御情報を、前記動的環境内の少なくとも１台の機器を制御するように少なくとも１つの制御デバイスに伝送すること、
を含む、方法。
【請求項７０】
Ａ）は、
Ａ１）前記動的環境内の前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を受信すること、
Ａ２）前記少なくとも１つの入力信号の値と、前記少なくとも１つのイベント・テーブルの少なくとも１つのメモリ位置の前記コンテンツの少なくとも第１の部分とを比較することであって、各メモリ位置の前記コンテンツの前記第１の部分は、評価されることになる前記特定の条件を表す、比較すること、及び、
Ａ３）前記少なくとも１つの入力信号の前記値が、前記少なくとも１つのメモリ位置及び評価されることになる前記特定の条件を表す前記コンテンツの少なくとも前記第１の部分に合致する場合、Ｃ）で伝送される前記制御情報の少なくともいくつかを提供するように、前記動的環境内で実行されることになる前記対応するアクションを表す前記少なくとも１つのメモリ位置の前記コンテンツの第２の部分を処理すること、
を含む、請求項６９に記載の方法。
【請求項７１】
Ａ）が依拠する少なくとも１つのリソースの可用性を保証するために、少なくとも１つのセマフォを獲得及び解除すること、
を更に含む、請求項７０に記載の方法。
【請求項７２】
前記少なくとも１つの入力信号は複数の入力信号を含み、前記複数の入力信号のそれぞれの値は、所与の時点で、前記複数の条件の前記監視される条件を表す、
請求項７０に記載の方法。
【請求項７３】
前記複数の入力信号の前記それぞれの値は、
前記監視される条件を表す複数のリアルタイム値、
前記監視される条件を表す複数のラッチされた値
前記監視される条件を表す少なくとも１つのマルチビット・デジタル値、
前記監視される条件を構成する異なる感知パラメータをそれぞれ表す、複数のバイナリ値、及び、
少なくとも１つのセマフォを表す少なくとも１つのバイナリ値、
のうちの少なくとも１つを備える、請求項７２に記載の方法。
【請求項７４】
Ｂ）において生成される前記通知信号を受信する外部デバイスから、前記イベント・テーブルの各メモリ位置の前記コンテンツを受信すること、
を更に含む、請求項６９に記載の方法。
【請求項７５】
Ｃ）は、
前記少なくとも１つの制御デバイスに、少なくとも１つのデータ・パケットを送信すること、
少なくとも１つのフラグ・ビットを設定及び／又はクリアすること、
少なくとも１つの出力ビットを設定及び／又はクリアすること、
少なくとも１つのセマフォを設定及び／又はクリアすること、及び、
少なくとも１つのカウンタをラッチ及び／又はリセットすること、
のうちの少なくとも１つを含む、請求項６９に記載の方法。
【請求項７６】
前記少なくとも１つのイベント・テーブルの各メモリ位置は、第１のビット数を有する少なくとも１つのメモリ・レジスタを含み、
評価されることになる前記特定の条件を表す各メモリ位置の前記コンテンツの前記第１の部分は、前記第１の数よりも小さい第２のビット数を含み、前記第２のビット数の少なくともいくつかは、前記少なくとも１つのメモリ・レジスタ内の非隣接ビットである、
請求項６９に記載の方法。
【請求項７７】
前記動的環境内で実行されることになる対応するアクションを表す各メモリ位置の前記コンテンツの前記第２の部分は、前記第１の数よりも小さい第３のビット数を含み、前記第３のビット数の少なくともいくつかは、前記少なくとも１つのメモリ・レジスタ内の非隣接ビットである、
請求項７６に記載の方法。
【請求項７８】
前記複数の連続する隣接メモリ位置のうちの第１のメモリ位置の前記コンテンツの前記第１の部分は、前記第１のメモリ位置を前記複数の連続する隣接メモリ位置のうちの次のメモリ位置にリンクするための、チェーン・ビットを含み、前記第１のメモリ位置の前記コンテンツの前記第１の部分は、評価されることになる第１の条件を表し、
前記動的環境内で実行されることになる第１の対応するアクションを表す、前記第１のメモリ位置の前記コンテンツの前記第２の部分は、前記動的環境内で実行されることになるアクションがないことを示す第１のアクション・オペランドを含み、
前記次のメモリ位置の前記コンテンツの前記第１の部分は、評価されることになる第２の条件を表し、
前記次のメモリ位置の前記コンテンツの前記第２の部分は、前記第１の条件及び前記第２の条件の両方が満たされた場合、前記動的環境内で実行されることになる少なくとも１つのアクションを表す第２のアクション・オペランドを含む、
請求項６９に記載の方法。
【請求項７９】
前記少なくとも１つのイベント・テーブルの各メモリ位置は、第１のビット数を有する少なくとも１つのメモリ・レジスタを含み、
前記第１のビット数は、命令コード、アクション・パラメータ、及び条件オペランドとして区分され、
前記命令コードは、少なくとも条件タイプ・コード及びアクション・オペランドを含み、
前記条件タイプ・コード及び前記条件オペランドは、評価されることになる前記特定の条件を表す各メモリ位置の前記コンテンツの前記第１の部分の少なくとも一部を構成し、
前記アクション・オペランド及び前記アクション・パラメータは、前記動的環境内で実行されることになる前記対応するアクションを表す各メモリ位置の前記コンテンツの前記第２の部分の少なくとも一部を構成する、
請求項６９に記載の方法。
【請求項８０】
動的環境の複数の条件を評価するため、及び、前記複数の条件のいずれかが満たされた場合、前記動的環境内で実行されることになる少なくとも１つのアクションを表す制御情報を生成するための、アクション・エンジンであって、
複数のコプロセッサを備え、それぞれのコプロセッサは、
条件／アクション・ペアを記憶するためのメモリ・レジスタであって、前記条件／アクション・ペアは、評価されることになる前記複数の条件のうちの１つの条件を表すそれぞれの値を有する第１のビット数と、前記１つの条件が満たされた場合に実行されることになる対応するアクションを表すそれぞれの値を有する、第２のビット数とを含む、メモリ・レジスタと、
前記１つの条件を表す前記第１のビット数の前記それぞれの値、及び、前記複数の条件のうちの前記監視される条件を表す少なくとも１つの値を比較するために、前記メモリ・レジスタに結合された比較器であって、前記比較器は、前記１つの条件が前記監視される条件に合致する場合、合致信号を生成するように更に構成された、比較器と、
前記合致信号が前記比較器によってアサートされた場合、実行されることになる前記対応するアクションを表すそれぞれの値を有する前記第２のビット数を、前記アクション・エンジンによって生成される前記制御情報の少なくともいくつかとして出力するために、前記メモリ・レジスタに結合され、前記合致信号を受信するように前記比較器に結合された、ゲートと、
を備える、アクション・エンジン。
【請求項８１】
複数のアクションが動的環境内で実行される必要があることに応答した複数の条件を有する前記動的環境の監視及び制御を容易にするための装置であって、
少なくとも１つの通信インターフェースと、
プロセッサ実行可能命令を記憶するための少なくとも１つのメモリと、
前記少なくとも１つのメモリ及び前記少なくとも１つの通信インターフェースに通信可能に結合された少なくとも１つのプロセッサと、
を備え、前記少なくとも１つのプロセッサは、前記プロセッサ実行可能命令の実行時に、
Ａ）前記少なくとも１つのコプロセッサが少なくとも１つの通信インターフェースに通信可能に結合された場合、前記動的環境の前記複数の条件の第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記動的環境内で実行される必要がある前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第２の制御情報を提供するように、少なくとも１つのコプロセッサを構成するように、前記少なくとも１つの通信インターフェースを制御し、
前記少なくとも１つのプロセッサは、
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、及び、
前記少なくとも１つのプロセッサの応答時間、
のうちの少なくとも１つに基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第１のサブセットを選択する、
装置。
【請求項８２】
前記少なくとも１つのプロセッサは、
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される前記期間、及び、
前記少なくとも１つのプロセッサの前記応答時間、
に基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第１のサブセットを選択する、
請求項８１に記載の装置。
【請求項８３】
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される前記期間は、前記少なくとも１つのプロセッサの前記応答時間よりも短い、請求項８２に記載の装置。
【請求項８４】
前記応答時間は前記少なくとも１つのプロセッサの最悪の応答時間である、請求項８３に記載の装置。
【請求項８５】
複数のアクションが動的環境内で実行される必要があることに応答した複数の条件を有する前記動的環境の監視及び制御を容易にするために、少なくとも１つのプロセッサによって実装される方法であって、
Ａ）少なくとも１つのコプロセッサによる評価のために
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、及び、
前記少なくとも１つのプロセッサの応答時間、
のうちの少なくとも１つに基づいて、前記複数の条件の第１のサブセットを指定すること、及び、
Ｂ）前記動的環境の前記複数の条件の前記第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記動的環境内で実行される必要がある前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、前記少なくとも１つのコプロセッサを構成すること、
を含む、方法。
【請求項８６】
少なくとも１つのプロセッサによって実行された場合、複数のアクションが動的環境内で実行される必要があることに応答した複数の条件を有する前記動的環境の監視及び制御を容易にするために、少なくとも１つのプロセッサによって実装される方法を実行する、プロセッサ実行可能命令によって符号化された、持続性コンピュータ読み取り可能記憶媒体であって、前記方法は、
Ａ）少なくとも１つのコプロセッサによる評価のために
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、及び、
前記少なくとも１つのプロセッサの応答時間、
のうちの少なくとも１つに基づいて、前記複数の条件の第１のサブセットを指定すること、及び、
Ｂ）前記動的環境の前記複数の条件の前記第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記動的環境内で実行される必要がある前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、前記少なくとも１つのコプロセッサを構成すること、
を含む、持続性コンピュータ読み取り可能記憶媒体。
【請求項８７】
複数のアクションが実行される必要があることに応答して複数の条件を有する自動化工業プロセスを実装するためのロボット機器、
前記自動化工業プロセスのために制御されるアンビエント照明を提供するための照明機器、
前記ロボット機器及び／又は前記照明機器を制御するために、前記ロボット機器及び／又は前記照明機器に結合された、複数のアクチュエータ、
前記自動化工業プロセスを監視するため、及び、前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を生成するための、少なくとも１つのセンサであって、前記自動化工業プロセスの少なくとも一部の少なくとも１つのイメージを獲得するための、少なくとも１つのイメージ獲得デバイスを備える、少なくとも１つのセンサ、及び、
前記少なくとも１つのセンサによって生成される前記少なくとも１つの入力信号を受信するため、及び、前記複数のアクチュエータ及び／又は前記少なくとも１つのイメージ獲得デバイスを制御するために、前記複数のアクチュエータ及び前記少なくとも１つのセンサに結合された、制御システム、
を備える、機械視覚システムであって、
前記制御システムは、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合された少なくとも１つのコプロセッサ、
を備え、
前記マスタ・プロセッサは、前記複数の条件の第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、前記少なくとも１つのコプロセッサを構成し、
前記少なくとも１つのコプロセッサは、
前記監視される条件を表す前記少なくとも１つの入力信号を受信し、
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているかどうかを決定するように、前記少なくとも１つの入力信号を処理し、
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記複数のアクチュエータのうちの少なくとも１つ及び／又は少なくとも１つのイメージ獲得デバイスに対する少なくとも１つの制御信号として、前記第１の制御情報を提供する、
機械視覚システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  プログラム可能論理コントローラ（ＰＬＣ）は、典型的には自動化工業電気機械プロセスにおいて機器、機械、及び／又は器具の制御に使用される、特殊な形のコンピュータベース・コントローラである。こうした自動化工業電気機械プロセスの一般的な例は、工場組み立てラインの作業によって与えられる。工場組み立てラインの動的な環境では、部品／コンポーネントの製造、組み立て、及び／又は梱包、並びに、製造、組み立て、及び／又は梱包の様々な段階における部品／コンポーネントの移送に関連付けられた、複数台の工業機器、機械、及び／又は器具（簡単にするために、まとめて「機器」と呼ぶ）が存在する場合がある。
【０００２】
[0002]  図１は、工場組み立てラインの作業などの、自動化工業プロセス１０に関連した従来のＰＬＣ５０の典型的な役割の一般的な図を提供する。工場組み立てラインの動的環境は、複数台の機器２０に加えて、通常、複数台の機器２０を動作させるためのいくつかの制御デバイス３０（例えばアクチュエータ）、並びに、部品／コンポーネントの製造、組み立て、梱包、及び／又は移送に関連付けられた、機器の状況及び／又は様々な条件の指示を提供するための複数の入力デバイス４０（例えばセンサ）を含む。入力デバイス４０によって提供されるこうした指示は、しばしば、動的環境の「状態」又は「条件」と呼ばれる。機器２０を動作させるために使用される制御デバイス３０のいくつかの例は、磁気リレー、ソレノイド、電気モーター、及び、空気圧又は油圧シリンダを含む。入力デバイス４０のいくつかの例は、リミット・スイッチ、位置センサ、アナログ・センサ（例えば圧力又は温度センサ）、及びイメージング・デバイス（例えばカメラ）を含む。
【０００３】
[0003]  一般的に言えば、ＰＬＣ５０は、入力デバイス４０によって提供される入力信号６６を監視するために使用される。これらの入力信号は、それぞれ、又は様々な組み合わせで、時間に応じた動的環境の異なる状態（条件）を表す。所与の時点で存在する入力信号に応答して、ＰＬＣ５０は、自動化プロセス１０が効率的かつ予測通りに実施されることを保証するために、工業機器２０を動作させるための制御デバイス３０への出力信号６８を生成する。そのため、ＰＬＣ５０は、一般に、プロセス１０を実装する機器２０によって実行されるアクションの所定のシーケンスを調整するために使用され、それぞれのアクションは、入力デバイス４０によって（入力信号６６を介して）提供される情報に左右される、ある一定の時間ウィンドウ内に発生することが必要な場合がある。
【０００４】
[0004]  典型的なＰＬＣは、プロセッサ実行可能命令を記憶するためのプログラム可能メモリを含み、論理、シーケンシング、タイミング、カウンティング、及び演算などの機能を実装するために、様々な他の電子コンポーネントを使用する。一般的なアーキテクチャ及び機能の様々な態様に関して、ＰＬＣは、多くの点で汎用コンピュータ（例えばデスクトップ又はラップトップのパーソナル・コンピュータ）に類似しているが、汎用コンピュータは典型的には計算及び表示タスクに対して最適化されているのに対して、ＰＬＣは一般に、自動化工業プロセスなどの動的環境におけるタスクの制御に対して最適化されている。したがってＰＬＣは、一般に、被制御動的環境のための特定用途向け制御コンピュータであるとみなされる。ＰＬＣはしばしば、自動化工業プロセスの厳しい条件で使用されるため、パッケージ設計の観点からすると、従来のＰＬＣはしばしば、ＰＬＣが、物理的な振動、過酷な温度及び湿度条件、ほこり又は潜在的に有害な材料、並びに電気的に雑音の多い環境のうちの、１つ又は複数にさらされる可能性がある、厳しい環境に耐えるように、堅固に設計される傾向がある。
【０００５】
[0005]  図２は、図１の従来のＰＬＣ５０を構成する典型的な電気コンポーネント／回路（例えば「ハードウェア」）の汎用ブロック図を示す。図２に示されるように、ＰＬＣ５０の基本機能コンポーネントは、プロセッサ・ユニット５２、メモリ５４、電源５６、入力インターフェース５８、出力インターフェース６０、及び、１つ又は複数の通信インターフェース６２を含み、すべてが互いに通信可能に及び／又は電気的に結合されている。図２は、ＰＬＣ５０に通信可能に結合され、ＰＬＣをプログラミングするために使用される、プログラミング・デバイス６４も示す。
【０００６】
[0006]  図２において、プロセッサ・ユニット５２は、入力インターフェース５８によって受信される入力信号６６を解釈し、次に、メモリ５４内に記憶されたプログラム（例えば一連のプロセッサ実行可能命令）に従って制御アクションを実装するように、出力インターフェース６０を介して出力信号６８を提供するための、マイクロプロセッサを含む。特に、メモリ５４は、マイクロプロセッサによって実装されることになる制御アクションを表す命令、並びに、入力信号、出力信号、及び、様々な命令を実行する際のマイクロプロセッサの動作に関する、様々なデータを含む、プログラムを記憶する。入力インターフェース５８は、外部入力デバイス（例えばセンサ、スイッチ、メータ、カウンタなど）から受信される入力信号６６を介して、プロセッサ・ユニット５２に情報を提供する。次にプロセッサ・ユニット５２は、出力信号６８を介して外部出力デバイス（例えばバルブ、モータなど）に制御アクションを送信する。
【０００７】
[0007]  図２において、それぞれの入力及び出力インターフェースを構成するコンポーネントの例は、被制御動的環境に関連付けられた様々な外部入力及び出力デバイスと適切にインターフェースするように、アナログ−デジタル変換器、オプトカプラ／オプトアイソレータ（optocoupler／optoisolator）、バッファ、ラッチ、及びドライバを含むことができる。図２では、例示の目的で、４つの入力信号及び４つの出力信号が示されているが、異なるタイプの従来から使用可能なＰＬＣが、異なる数の入力信号（ある数Ｎの入力信号）を受け入れ、異なる数の出力信号（ある数Ｘの出力信号）を提供するように構成可能であること、並びに、入力信号と出力信号の数が必ずしも同じである必要がないことを理解されたい。一般に、入力信号の数Ｎ及び出力信号の数Ｘは、図１の自動化プロセス１０を監視するために使用される入力デバイス４０の数及び機器２０を制御するために使用される制御デバイス３０の数によって、少なくとも部分的に規定される。
【０００８】
[0008]  図２に示されるＰＬＣ５０において、通信インターフェース６２は、様々なデータ（プロセッサ・ユニット５２による実行のためのプログラム、入力信号、出力信号、プログラム実行の際にプロセッサ・ユニット５２によって使用されることになる他のデータなどのうちの、１つ又は複数に関係する可能性がある）を、１つ又は複数の通信ネットワークを介して、１つ又は複数のネットワークベースの外部入力／出力デバイス及び／又は他のリモートＰＬＣから、又はそれらへ、受信及び送信するために使用される。一般に、通信インターフェース６２は、こうした機能をデバイス検証、データ獲得、ユーザ・アプリケーション間の同期化、及び接続管理として実装する。電源５６は、ＡＣ電圧を、ＰＬＣ内の様々な回路を動作させるために必要な低いＤＣ電圧（例えば５ボルト）に変換する。最終的に、（いくつかの例において、通信インターフェース６２を介してＰＬＣ５０に結合可能な）プログラミング・デバイス６４は、プロセッシング・ユニット５２によって実行されることになるプログラムをメモリ５４内に入力するために使用され、典型的には、このプログラムはプログラミング・デバイス６４内で開発／作成された後、ＰＬＣ５０のメモリ５４に転送される。
【０００９】
[0009]  図３は、特に、プロセッサ・ユニット、様々なメモリ要素、入力／出力インターフェース、及び情報転送を容易にするためのバスに関連して、図２に示されたＰＬＣ５０の内部アーキテクチャの追加の細部を提供する。例えば図３は、プロセッサ・ユニット５２（図２ではＣＰＵとして示す）がクロック５２Ａに関連付けられ、その周波数がＰＬＣの動作速度を決定し、ＰＬＣ内の様々な要素に対してタイミング及び同期を提供することを示す。ＰＬＣ内の情報は、プロセッサ・ユニット、様々なメモリ要素内で、並びに、複数のバスを介して入力／出力インターフェース５８及び６０との間で搬送され、特に、ＰＬＣは、ＰＬＣの構成要素との間でデータを移送するためのデータ・バス、記憶されたデータにアクセスするためにロケーションのアドレスを送信するためのアドレス・バス、及び、内部制御アクションに関する信号のための制御バスを、使用する。ＰＬＣアーキテクチャは、入力／出力インターフェース５８及び６０（それぞれ、ここからの入力信号６６は外部入力デバイスから受信され、出力信号６８は外部出力デバイスへ提供される）と、Ｉ／Ｏシステム・バスとＰＬＣのデータ・バスとの間で入力／出力情報を転送するように構成された入力／出力ユニット５５との間での、通信用のＩ／Ｏシステム・バスも含むことができる。
【００１０】
[0010]  一般に、図３に示されたアーキテクチャのプロセッサ・ユニット５２（ＣＰＵ）は、データの操作、並びに、算術演算（例えば加算、減算、乗算、除算）及びデジタル論理演算（例えばＡＮＤ、ＯＲ、ＮＯＴ、及びＥＸＣＬＵＳＩＶＥ−ＯＲ）の実行に対する責務を負う、算術論理演算ユニット（ＡＬＵ）と、プログラム実行に関連する情報を記憶するために使用される内部メモリ・レジスタと、クロック５２Ａの出力を受信し、動作のタイミングを制御するための、内部制御ユニットとを、含む。メモリ５４を構成する様々なメモリ要素は、オペレーティング・システム及びプロセッサ・ユニットによって使用される固定データ用の永続ストレージを提供するための読み取り専用メモリ（ＲＯＭ）５４Ａと、ＰＬＣによって実行されることになるプログラム用に使用されるユーザ・プログラム・ランダム・アクセス・メモリ５４Ｂ（ユーザ・プログラムＲＡＭ）と、データ（入力及び出力信号の状況、タイマ及びカウンタ並びに他の内部デバイスの値などに関する情報）に使用されるデータ・ランダム・アクセス・メモリ５４Ｃ（データＲＡＭ）とを、含むことができる。ＰＬＣによって実行されることになるプログラムは、不揮発性メモリ内にも記憶可能である。
【００１１】
[0011]  図３に示されるＰＬＣアーキテクチャから、従来のＰＬＣはしばしば、汎用コンピュータというよりも特定用途向けコンピュータであるとみなされるが、ＰＬＣ及び汎用コンピュータはどちらも、「フォン・ノイマン」コンピュータ・アーキテクチャの多くの態様を共有することが理解されよう。フォン・ノイマン・コンピュータ・アーキテクチャにおいて、コンピュータ命令（ユーザ・プログラムＲＡＭ５４Ａ内に記憶された「ユーザ・プログラム」）並びにプログラム実行に必要な（例えばデータＲＡＭ５４Ｃ内に記憶された）任意のデータには、共通バス・アーキテクチャを介して（すなわち、図３に示されたアドレス、データ、及び制御のバスを介して）、様々なメモリ要素からアクセスされる。従来のＰＬＣは、特定の自動化工業プロセスに対応する特定の機能を実装する特定用途向けコンピューティング・デバイスであることによって、コンピュータ性能を調整するように試行するにもかかわらず、従来のＰＬＣのアーキテクチャは、命令を逐次実行し、並列実行用の容量を事実上有さないため、その性能を基本的に制限する。
【００１２】
[0012]  ＰＬＣのプログラミングは、主に、所与の時点で様々な機器によって実装されている自動化プロセスに関連付けられた、感知された条件（「状態」）を表す１つ又は複数の入力信号を処理する、デジタル論理機能を指定することに関係している。自動化プロセスの監視された条件で動作するデジタル論理機能は、監視された条件に応答して１つ又は複数の制御信号を生成する。前述のように、これらの制御信号は制御デバイスに適用され、次にこの制御デバイスが、自動化プロセスのさらなる実装に関与する何らかのアクションを実行するために、様々な機器を制御する。高水準のＰＬＣプログラムは、一般に、時間に応じて監視された条件に応答して、１つ又は複数のアクションのシーケンスを実装する（例えば、Ａ又はＢが発生した場合にＣを作動させる、Ａ及びＢが発生した場合にＤを作動させる）。自動化プロセスは、アクチュエータがプロセスを新しい条件に向かわせるように機器を制御するのと共に経時的に進化していく。したがって前述のように、自動化プロセスは、条件の進化（evolution）がＰＬＣによって監視される動的環境を構成し、ここでＰＬＣは、監視されたそれぞれの条件に基づいて、アクチュエータが環境を新しい条件に向かわせるように、制御信号を決定及び更新する。
【００１３】
[0013]  多くの従来のＰＬＣは、監視される条件を表す入力信号を評価するために使用されるデジタル論理を成文化するために、「ラダー論理（ladder logic）」プログラミング言語を介してプログラミングされる。一般的なラダー論理プログラミング言語は、通常、ラダーの「横木」に似たグラフィック図を使用し、それぞれの横木は、制御システム・エンジニアによる直観的プログラミングを容易にするための、（旧式の論理制御システムで使用された）電気機械式リレーに関する回路図を表す。ラダー論理は、主にバイナリ変数が含まれる制御ソリューションを実装するのに最適である（例えば、動的環境において監視される条件はそれぞれ、ＴＲＵＥ、すなわち論理１、又はＦＡＬＳＥ、すなわち論理０と、表すことができる）。
【００１４】
[0014]  しかしながら、様々な自動化プロセス環境において、センサの出力はアナログ信号の場合がある。したがっていくつかのインスタンスでは、所与の入力デバイス／センサの直接出力がバイナリ信号の形でない場合、入力デバイス／センサの出力は、いくつかの点で、バイナリ形式の入力信号６６を提供するように事前に条件付けすることができる。例えば、入力信号６６のうちの１つとして、監視された温度が特定の温度設定ポイントを上回るか又は下回るかのバイナリ指示を提供するように、温度感知デバイスのアナログ出力を、別の入力として、温度設定ポイント電圧を有する比較器回路に第１に適用することができる。別の方法として、アナログ値を、数学演算及び／又は意思決定を実行するためにシステムによって使用されるマルチビット・デジタル・ワードに符号化された量子化値に、変換することができる。同様に、入力デバイスとして働くカウンタのマルチビット出力を所定のカウントと比較し、入力信号６６の１つとして、カウンタ出力が所定のカウントを上回るか又は下回るかのバイナリ指示を提供することができる（別の方法として、ある数Ｂのビットを有するカウンタの出力を、数Ｂの入力信号６６として直接提供することができる）。更に他のタイプの入力デバイスは、高過渡性信号を生成することが可能であり、こうしたデバイスの場合、エッジ／過渡の発生を示すＰＬＣに好適な持続起案の入力信号を提供するように、ラッチを使用して信号エッジ又は過渡の検出を容易にすることができる。他の例では、入力デバイスは様々なネットワーク化デバイスを含むことが可能であり、これに対して１つ又は複数の通信状況信号（例えば、データ・パケット送信済み／受信済み）は入力信号６６の１つとして働くことができる。
【００１５】
[0015]  従来のＰＬＣをプログラミングするためのラダー論理及び他の言語は、一般に、規則ベース・プログラミング言語であるとみなされる。典型的なＰＬＣプログラムは、一連の規則によって構成可能であり、各規則は、自動化プロセスの監視される条件を表す１つ又は複数のバイナリ入力信号（例えばＡ、Ｂ、Ｃ、Ｄ）、及び、入力信号を評価する特定のデジタル論理に応答して生成される対応する制御信号（例えばＸ）によって構成される。したがって、いくつかの態様において、ＰＬＣプログラム内の規則は、「ＩＦ／ＴＨＥＮ」ステートメントと同様に見ることができる（例えば、ＩＦ（Ａ  ＡＮＤ  ＮＯＴ  Ｂ）ＡＮＤ（Ｃ  ＯＲ  Ｄ），ＴＨＥＮ  Ｘ）。ＰＬＣプログラムは、使用可能な入力信号のセットを介して監視可能な、自動化プロセスのすべての異なる可能な条件を表す異なる組み合わせの入力信号に応答して必要なすべてのアクションを実装するために必要なすべての規則を含む。
【００１６】
[0016]  再度図２を参照すると、プログラミング・デバイス６４（ハンドヘルド・プログラミング・デバイス、デスクトップ・コンソール、或いは、ラップトップ又はタブレット・コンピュータなどのパーソナル・コンピュータとすることができる）は、典型的には、規則のセットを含むＰＬＣ実行可能プログラムを作成、記憶、及びダウンロードするために使用することができる。プログラムがＰＬＣによって実行される場合、通常、規則は最初から最後へと順次実行された後に繰り返され、規則のセットを順次通過する各パスは、しばしば「スキャン」又は「制御ループ」と呼ばれる。したがって、スキャン又は制御ループの連続する反復は、入力信号を読み取り、プログラム規則内に符号化された論理を使用して入力信号を検査した後、ＰＬＣによって出力される制御信号を適宜変更する、ＰＬＣの連続サイクルを表す。
【００１７】
[0017]  より具体的に言えば、様々なハウスキーピング（housekeeping）作業を含む一般的な動作及びスキャン又は制御ループを実行することに関して、従来のＰＬＣは、通常、循環的に機能する。例えば、電力がＰＬＣに最初に印加された場合、ＰＬＣは、様々なハードウエア・コンポーネントが適切に機能していることを保証するために、自己チェック又は診断ルーチンを実行することができる。図２及び図３を再度参照すると、障害又はエラー条件が検出されない場合、ＰＬＣは、入力信号６６のそれぞれを順次読み取り、所与の入力信号の各読み取りインスタンスを専用のメモリ位置に記憶するように、入力インターフェース５８及びメモリ５４を制御する。次にＰＬＣは、各規則を順次テストすること（すなわち、プログラム命令を順次フェッチ、復号、及び実行すること）、及び、規則内に符号化された論理を解決することによって、そのプログラムを実行する。
【００１８】
[0018]  特に、各規則について、規則として指定されたある入力信号の記憶済みインスタンスがメモリから取り出され、取り出された入力信号に基づいて規則が評価され、規則を満たしている（すなわち、規則内に指定されたすべての必須条件を満たしている）場合、規則の履行に対応する制御信号が生成される。こうした制御信号が生成された場合、専用のメモリ位置に記憶される。所与の規則の評価は、規則内に成文化されたデジタル論理が解決された場合、異なるメモリ位置（例えばレジスタ）からの複数の読み取り動作、及びメモリ位置への書き込み動作を含むことができる。前述のように、それぞれの規則は、ＰＬＣがラダー論理プログラムを実行すると共に順次評価され、したがってＰＬＣは、特定の規則を評価している間、プログラム内に成文化された他の規則には注意を払わない。
【００１９】
[0019]  ＰＬＣは、規則の評価に応答していずれかの制御信号を生成した場合、これらを更新済みの制御信号６８のセットとして出力に提供することができる。次にこれらの制御信号は、自動化プロセスに関連して制御されるように、１つ又は複数のアクチュエータ又は他の機器に送信される。次にＰＬＣは、自己チェックを実行し、それぞれの入力信号を読み取ってそれらをメモリに記憶し、制御ループを完了するためにプログラム規則を実行し、出力用の制御信号（あれば）を更新し、このサイクルを反復的に繰り返すことに戻る。
【００２０】
[0020]  ＰＬＣが前述のサイクルを完了させるために必要な期間は一般に、「サイクル時間」又は「スキャン時間」と呼ばれる。従来のＰＬＣの典型的なサイクル時間は、およそ１０ミリ秒から数１００ミリ秒である。サイクル時間は一般に、プロセッサ・ユニットで使用される特定のＣＰＵ、スキャンされることになるプログラムのサイズ（例えば、読み取られることになる入力信号の数に少なくとも部分的に依存するプログラムを構成する規則の数、独立した評価が必要な入力信号の組み合わせの数、及び、生成されることになる制御信号の数）、及び、プログラムの実行に従って使用中のシステム機能によって決定される。したがって、プログラムが複雑であるほどサイクル時間は長くなる。
【００２１】
[0021]  従来のＰＬＣにおいて所与のサイクルで評価された場合、大多数の規則は満たされず（すなわち、規則の評価に従って生成される制御信号はない）、規則が満たされない場合、プログラムは単に評価のための次の規則に移動することを理解されたい。このように、従来のＰＬＣでは一般にいずれの制御信号も生成することなく所与のサイクルのかなりの部分が連続する規則の評価に費やされることになる。
【００２２】
[0022]  同様の機能を実装するためにプログラミングされた汎用コンピュータと比較すれば相対的に迅速であるが、ＰＬＣのサイクル時間は瞬間的ではない。結果として、ＰＬＣは、常にその入力信号を「注視」しているわけではないが、その代わりにＰＬＣは、サイクル時間に応じて定期的に入力信号の状態をサンプリングする。更にサイクル時間は、サンプリングされた入力信号に応答してＰＬＣによって出力される制御信号（満たされた規則に従って生成された場合）を更新する際に、最小遅延を構成する。このように、サイクル時間は、特定の監視される条件（すなわち、１つ又は複数の入力信号に関して特定の値によって表される）に対するＰＬＣの最小応答時間（「反応時間」）として見ることも可能であり、しばしばＰＬＣの「レイテンシー」とも呼ばれる。したがって、このレイテンシーにより、サイクル時間よりも短い期間持続する入力信号は、プログラムによって見逃される可能性がある（一般に、サイクル時間より長い入力信号が存在しなければならない）ことを理解されたい。いくつかのインスタンスでは、外部回路を使用して過渡信号をラッチすることが可能であるため、ＰＬＣによって完全に見逃されることはない。しかしながら、ラッチングによって特定の入力信号が「見逃されない」場合であっても、入力信号に応答して生成されることになる制御信号は、制御されている機器の正常動作に対して有効とするには遅すぎるように、ＰＬＣによって生成される可能性がある。
【００２３】
[0023]  従来のＰＬＣがプログラムを実行する循環的性質により、入力信号のすべての可能な組み合わせ（何らかのアクションが必要な、制御されている自動化プロセスのすべての可能な条件を表す）は、プログラムの単一制御ループ内で企図されなければならない。言い換えれば、前述のように、１つ又は複数の入力信号によって表される監視される条件が、自動化プロセスの持続期間中の何らかの時点で、（１つ又は複数の制御信号を介して）何らかのアクションを発生させることに何らかの形で関与している限り、特定の監視される条件を評価する１つ又は複数の規則が、プログラム内に存在する必要がある。前述のように、従来のＰＬＣのレイテンシーはプログラムの複雑さに対応するため、アクションが必要なプロセスの可能な条件の数が増加するにつれて、プログラムは大きくなり、レイテンシーは長くなる。更に、多くの自動化プロセスでは、いくつかの条件が他の条件よりも頻繁に発生し、いくつかのインスタンスでは、稀に発生する可能性のある条件が、評価される必要のある複雑な論理を表す規則に関連付けられる場合がある（より多くの処理時間を必要とする）。
【発明の概要】
【発明が解決しようとする課題】
【００２４】
したがって、サイクル時間のほとんどの部分は、稀に発生する１つ又は複数の監視される条件を評価するために１つ又は複数の規則を実行することによって、「使い尽くされる」（及びレイテンシーが増幅する）可能性がある。
【課題を解決するための手段】
【００２５】
[0024]  発明者等は、従来のプログラム可能論理コントローラ（ＰＬＣ）に関連付けられた典型的なレイテンシーが、いくつかのタイプの動的環境（例えば、自動化システム及び／又はプロセスを含む）の監視及び／又は制御にとって、過度に長い可能性があることを認識及び理解した。より一般的に言えば、従来のＰＬＣ並びに他の汎用コンピュータは、応答又は反応時間（例えば、１つ又は複数の監視された条件に応答して、機器、機械、及び／又は器具の制御などの何らかのアクションを実行すること）に関連して、著しい速度及び／又は精度が必要な、動的環境の監視及び／又は制御を含む適用例にとって、しばしば適切でない。
【００２６】
[0025]  特に、汎用コンピュータ・アーキテクチャ（又は、汎用プロセッサの小型及び有限のセットを備える関係コンピュータ・アーキテクチャ）を使用し、プログラムを順次又は循環的に実行する、プロセッサベース制御デバイスは、環境の条件の進化に応答して反射的な反応が必要な動的環境において制御機能を実装するには、十分に高速でなく、複数の可能な条件の本質的に同時の評価、及び同様の条件に基づく即時アクションの実行から恩恵を受けることが可能である。反射的な反応を必要とする動的環境の例は、航空機制御、複合化学プロセス制御、及び機械視覚（machine vision）アプリケーション（例えば、自動検査及びロボット誘導などの、様々なプロセスの制御に関するデータを抽出するためのイメージの分析）を含むが、これらに限定されない。
【００２７】
[0026]  上記に鑑み、本明細書で説明される様々な本発明の実施形態は、環境の進化する条件に対する反応が、従来のＰＬＣ及び／又は他の従来のコンピューティング・デバイスで可能なよりも著しく低いレイテンシー及び／又は低い変動性レイテンシーを備えることが可能な、動的環境を監視及び／又は制御するための方法、装置、及びシステムを対象とする。
【００２８】
[0027]  本開示では、「動的環境」とは、物理的及び／又は（例えばシミュレーションのために）仮想的のいずれかで実装された、プロセス及び／又はシステムを指し、プロセス及び／又はシステムの条件（本明細書では環境の「状態」とも呼ぶ）は時間に応じて監視可能であり、特定の条件又は条件の進化に応答して、１つ又は複数のアクションを（例えばプロセス及び／又はシステムに適用される制御刺激の形で）実行することができる。以下でより詳細に考察される例示の実装において、動的環境の特定の条件又は条件の進化に応答して実行されるアクションは、本明細書に開示された本発明の方法、装置、及びシステムによって達成されるかなり低いレイテンシーの結果として、ほぼ瞬間的であるという点で、「反射的」性質である。本明細書で開示される概念の多くの実際の適用例は、例えば、自動化工業制御のプロセス及びシステムの物理的実装に関して企図され、本明細書で開示される本発明の概念は、この点で制限されておらず、様々な物理的及び／又は仮想的動的環境において有利に適用可能であることを理解されたい。
【００２９】
[0028]  動的環境の制御についてかなり低いレイテンシーを達成することに関連して、発明者等は、所与の動的環境について、アクションを必要とする異なる条件が異なる時間スケールで、及び／又は異なる時間フレーム内で、発生する可能性がある（例えばいくつかの条件は、他の条件よりも頻繁に、及び／又は、ある他の条件と時間的にごく接近して、発生する可能性がある）ことを認識及び理解した。更にいくつかの条件は、特定の順序で、及び／又は、以前に実行された１つ又は複数の特定のアクションの結果として、より頻繁に発生する可能性がある。したがって、本明細書で説明されるいくつかの本発明の実施形態の一態様では、発明者等は、動的環境全体を全体として考察し、アクションが必要な可能性のある動的環境のすべての時間にわたるすべての可能な条件を企図するのではなく、様々な基準（例えば、時間スケール／時間フレーム、特定パターンの進化、又は条件の変化）に基づいて、動的環境を複数の下位環境（例えばサブプロセス及び／又はサブシステム）に分割することによって、レイテンシーが著しく低い制御方法が実装可能であることを認識及び理解した。言い換えれば発明者等は、発生可能な条件の特定のカテゴリー及び動的環境内で実行可能な対応する必要なアクション（例えば、すべてがある期間内に発生可能な条件のサブセット、特定のアクションが実行された後にのみ発生可能な条件のサブセットなど）を識別することによって、レイテンシーを著しく低減させるために、制御ソリューションを細分化し、複数の査定及び制御リソース間で共有できることを認識した。
【００３０】
[0029]  上記を考慮し、本発明のいくつかの実施形態は（例えば、図１に示された従来のＰＬＣの置換としての）動的環境のための制御システムに関し、制御システムは、「マスタ」プロセッサ（本明細書では「ハウスキーピング」プロセッサとも呼ばれる）と、それぞれが所与の動的環境内で評価される必要のあるすべての可能な条件のサブセットを構成する１つ又は複数の条件の評価に専用の、１つ又は複数の独立した（すなわち非同期の）「スレーブ」コプロセッサ（co-processor）（本明細書では「応答」コプロセッサとも呼ばれる）と、を使用する。制御システム内の所与のコプロセッサが評価するタスクを課せられる条件のサブセットは、前述のようないくつかの異なる基準（例えば、時間スケール／時間フレーム、特定パターンの進化、又は条件の変化）に基づくものとすることができる。本開示では、条件を「評価すること」とは、条件の存在を決定すること（例えば、所与の時点である数Ｎの監視された入力信号と、条件を表す特定の入力信号値とを比較することによって、条件を「満たすこと」）、及び、条件に応答して適切なアクションを実行すること（１つ又は複数の対応する制御信号、或いは同じ信号を生成するための特定の命令を生成すること）を指す。
【００３１】
[0030]  それぞれが動的環境において条件のいくつかのサブセットを評価することに専用の、マスタ「ハウスキーピング」プロセッサ及び１つ又は複数のスレーブ「応答」コプロセッサを含む、こうした制御システムは、動的環境を監視及び制御するために「分割統治（divide and conquer）」法を採用することとみなすことができる。特にマスタ・プロセッサは、アクションが必要な環境のすべての可能な条件を評価するために単一のプロセッサを使用するのではなく、アクションが必要な可能な条件のいくつかのサブセットのみを評価するタスクを１つ又は複数のコプロセッサに課し、それによって、マスタ・プロセッサの著しい処理負担を軽減することができる。このように、制御システム全体のレイテンシーは、コプロセッサ・レイテンシーに依存する（例えば、複数のコプロセッサが使用される場合、制御システム全体としてのレイテンシーは、最大のコプロセッサ・レイテンシーに依存する可能性がある）。
【００３２】
[0031]  前述のように複数のコプロセッサの間で動的環境に関する条件評価プロセスを分配することによって、制御システム全体としてのレイテンシーは、単一のＰＬＣ及び／又は汎用コンピュータを使用する従来の制御手法に比べて、大幅に（例えば、いくつかのケースでは桁違いに）軽減される可能性がある。以下でより詳細に考察される様々な実装では、こうした「分割統治」法によって顕著に低い制御システムのレイテンシーが実現されるのみならず、例示の制御システム及び／又はコプロセッサ・アーキテクチャを用いて、予測可能及び反復可能なレイテンシーも実現可能である。低レイテンシー及び低変動性レイテンシーのうちの１つ又は両方は、いくつかの機械視覚アプリケーションにおいて特に有利であり、ここでは機械及び照明システムと正しく同期されたイメージの獲得を含む信頼可能／予測可能な機械挙動が重要である。低レイテンシー及び低変動性レイテンシーは、異なる時間領域内で行われる可能性のあるコンピュータ分析の結果として生じる決定を用いて、上記で示されたように制御アクティビティを調整するためにも重要な可能性がある。
【００３３】
[0032]  本発明に従った制御システムの一実施形態において、（例えばいくつかのケースでは、汎用コンピュータとして実装可能な）マスタ・プロセッサは、１つ又は複数のスレーブ・コプロセッサに通信可能に結合される。各スレーブ・コプロセッサは、その独自の専用メモリ（すなわち、存在する場合は他のコプロセッサと共有しておらず、コプロセッサ自体及びマスタ・プロセッサのみがアクセス可能である）、並びに専用メモリのコンテンツに作用する関連付けられたハードウェア（例えば処理及び／又は論理回路）を含む。所与のコプロセッサの専用メモリのコンテンツは、マスタ・プロセッサによって提供する（すなわち、コプロセッサにロードする）ことが可能である。以下でより詳細に考察される例示のシステム・アーキテクチャにおいて、いくつかの態様では、所与のスレーブ・コプロセッサは、複数のコプロセッサが同時に同じ入力信号のセットを監視すること、及び、同じ入力信号のセットに基づいてそれらの関連付けられた条件を評価することができるように、動的環境の異なる状況を表す入力信号及び（例えばマスタ・プロセッサ及び動的環境との）通信パスへのほぼ自由なアクセスも有する。
【００３４】
[0033]  例示の一実装において、コプロセッサの専用メモリのコンテンツは、動的環境の単一条件の評価に関する情報（例えばプログラム）を含み、したがってこうした実装では、所与のコプロセッサは、コプロセッサの専用メモリに記憶された特定の情報に従って、動的環境の単一の条件のみを評価するように（例えば、専用メモリに記憶されたプログラムを実行するか、或いはメモリ・コンテンツ上に特定のデジタル論理機能を実装するように）構成される（以下で考察される他の実施形態では、コプロセッサは複数の条件を評価するように構成可能である）。スレーブ・コプロセッサは、その条件が存在することを決定した場合、コプロセッサのプログラム／論理に従って対応する規定のアクションを実行し（例えばコプロセッサは、必要に応じて１つ又は複数の制御信号を生成するいくつかの出力を提供する）、その条件が満たされていることをマスタ・プロセッサに通知する。他の実装では、コプロセッサ自体が対応する規定のアクションを実行するのではなく、コプロセッサは、単に、その条件が満たされていることを（例えば、マスタ・プロセッサへの割り込みを生成することによって）マスタ・プロセッサに通知すればよく、これでマスタ・プロセッサは、対応する規定のアクションを実行するように適切に構成可能である。いずれの状況でも、マスタ・プロセッサから少なくとも条件の評価を「オフロード（offload）」することによって、コプロセッサは、制御システム全体としての応答時間を著しく向上させる。
【００３５】
[0034]  以下で更に詳細に考察されるいくつかの実施形態において、その条件が満たされている旨のコプロセッサからの通知に応答して、マスタ・プロセッサは、評価する新しい条件（及び、新しい条件が満たされた場合、実行されることになる対応するアクション）に関する新しい情報を、コプロセッサの専用メモリ内にローディングすることによって、コプロセッサに「再タスク」を課することができる。このように、制御システムの１つ又は複数のコプロセッサに（新しい条件を評価するため、及び／又は新しい／異なるアクションを実行するために）動的に再タスクを課することによって動的環境が経時的に進化するにつれて、マスタ・プロセッサは、動的環境の効果的な制御を容易にする。
【００３６】
[0035]  本発明に従った制御システムのいくつかの実装において、動的環境内に所与の時間フレーム内で評価されることになる複数の条件が存在する場合、それぞれのコプロセッサが異なる可能な条件を評価し、必要に応じて適切なアクションを実行するように構成されるように、複数のスレーブ・コプロセッサを使用することができる。こうした実装の一態様において、動的環境の異なる可能な条件を表すＮ個の使用可能な入力信号のセットが同一に（例えばバス・アーキテクチャを介して並列に）提供可能であり、評価のためにすべてのコプロセッサが同時に使用可能である。したがって、それぞれのコプロセッサは、独立に（すなわち非同期的に）、Ｎ個の使用可能な入力信号のセットを監視し、それらのそれぞれの条件を評価し、適切な場合／必要に応じてアクションを実行し、それらの条件が満たされた場合、マスタ・プロセッサに通知することができる。このようにして、前述のように、制御システムのレイテンシーは所与のコプロセッサのレイテンシーに依存する。コプロセッサが単一の条件を評価するように構成された状況では、コプロセッサのレイテンシーがかなり低いだけでなく、レイテンシーの変動性もかなり低い（また、多くの実用目的では、ほぼゼロである）。
【００３７】
[0036]  本発明の様々な実施形態に従って、様々なコプロセッサの実装が企図される。例えば一実施形態において、コプロセッサは、その専用メモリ内にロードされたかなり短いプログラム（例えば特定の条件を評価するためのループ内部の単一のＩＦ  ＴＨＥＮステートメント）を実行するフル機能のプロセッサとして実装可能である。このタイプのコプロセッサの実装では、（ＩＦ  ＴＨＥＮループを表す相対的に少ない数の命令を評価する従来のプロセッサに基づく）コプロセッサに関する典型的なレイテンシーは、およそ１マイクロ秒とすることができる。しかしながら、スペース及び／又はハードウェア・コストが重要な実際の考慮事項である適用例の場合、特に、動的環境の制御が多数の条件の評価を必要とし、制御システム内の複数のコプロセッサを関与させる場合、フル機能のプロセッサとしてのコプロセッサの実装は、いくつかのインスタンスにおいて実現困難な可能性がある（例えば、単一の条件の評価に費やされる処理リソースが、必要以上に大きい可能性があり、過度のチップ・スペースを消費する可能性がある）。
【００３８】
[0037]  上記に鑑み、本発明の様々な実施形態に従った他のコプロセッサの実装において、極最新式の特定用途向けコプロセッサは、コプロセッサの専用メモリのコンテンツ及び監視される入力信号に基づいて、比較器機能（例えばＩＦ  ＴＨＥＮステートメントの機能的等価物）を具体的に実装するための縮小（pared-down）デジタル論理を含み、実質的には、ハードウェア内の大幅な削減を介して、コプロセッサの機能が単一条件の特定の評価へと低減される。こうしたコプロセッサの実装が、低コスト、省スペース、低レイテンシーソリューションの目標を達成する。例示の実装では、例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、又は完全にカスタマイズされた回路において、いくつかのこうしたコプロセッサが安価に実装可能である。
【００３９】
[0038]  前述のような最新式のコプロセッサ実装の一態様において、別の方法として、又は更に低レイテンシーを容易にするために、「条件／アクション・ペア」の形で情報を記憶するための、コプロセッサの専用メモリに対する特定のメモリ構造が使用される。こうしたメモリ構造の一例において、条件／アクション・ペアは、評価されることになる条件を表す第１のビット数、及び、条件が満たされた場合に実行されることになるアクションを表す第２のビット数として配置構成された、メモリ位置（例えば、単一のメモリ・レジスタ、又は複数の隣接するメモリ・レジスタ）に記憶された特定のデータを含む。こうしたメモリ構造が、監視される入力信号と、評価されることになる条件を表す第１のビット数とを比較し、合致している（すなわち条件が満たされている）場合、コプロセッサのゲート出力として実行されることになる対応するアクションを表す第２のビット数を提供するための、簡単かつ相対的に単純なデジタル論理実装を容易にする。したがって、構造化メモリに基づき、比較器及びゲート出力を提供するためのゲートを実装する「条件／アクション・ペア」及び相対的に単純なデジタル論理を構成するコンテンツと、効果的な低レイテンシー、低フットプリント、及び低コストのコプロセッサとが、実現可能である。
【００４０】
[0039]  各コプロセッサに、動的環境に対するすべての可能な条件のうちの単一条件（すなわち最小サブセット）のみを評価するタスクが課せられた、制御システムの構成は、制御システムに関する最低レイテンシーの「退化（degenerate）」ケースと見ることができる。より一般的には、制御システムに関するレイテンシーは、制御システム内の所与のコプロセッサの物理的実装（例えば、フル機能のマイクロプロセッサ対縮小簡略化されたデジタル論理実装）、及び／又は、コプロセッサによって実装されている機能（例えばプログラミングされた論理機能）によって決定される。以下で考察されるように、いくつかの実施形態において、コプロセッサによって実装される物理的実装及び／又は機能は、特に、コプロセッサのレイテンシーの上限がコプロセッサによって評価される条件に必要な応答時間を下回るように、設計される。いくつかのケースでは、こうした要件を満たすには、コプロセッサが単一の条件を評価するようにのみ構成されることが必要であり得るが、他のケースでは、コプロセッサが（例えば、「同時」ではなく順次であるが、意図的に制限された条件数で）いくつかの所定数の条件のサブセットを評価するように構成されることが可能である。一般に、コプロセッサの機能（例えば、コプロセッサによって実行されるプログラム及び／又は処理されることになる情報のサイズ）を意図的に制限することによって、レイテンシーの上限を本質的に保証することができる。
【００４１】
[0040]  所与のコプロセッサの機能を意図的に制限するという前述の前提に基づいて、本発明の様々な実施形態に従った制御システムのいくつかの実装は、特定の動的環境の制御との関連において、以下の設計制約の適切な均衡化に少なくとも部分的に基づくことができる。１）コプロセッサが、何らかの基準に従って（例えば、特定の時間フレーム内で、特定の順序で、以前に実行された特定のアクションに従って）動的環境内に存在することが可能な条件の十分に包括的なサブセットを評価するように構成されることを保証すること、２）コプロセッサが、適切な時間フレーム内で条件が満たされたことに応答してアクションを実行するための、十分低い（が必ずしも達成可能な最低ではない）レイテンシーを有することを保証すること（すなわち、コプロセッサのレイテンシーに予測可能かつ十分に低い上限が存在することを保証すること）、及び、３）コプロセッサの実現が適度に低いハードウェア・コスト及び／又はスペース要件を伴うことを保証すること。
【００４２】
[0041]  上記に鑑み、本発明のいくつかの実施形態は、１つ又は複数のコプロセッサを備えることが可能な「アクション・エンジン」を含む、制御システムを対象とし、アクション・エンジンの所与のコプロセッサは、動的環境内で生じる可能性のある複数の条件の特定のサブセットを評価するように構成可能である。複数のコプロセッサを含むアクション・エンジンの一実装において、各コプロセッサは自律的に機能し、アクション・エンジンのすべてのコプロセッサによって同時に監視されているある数Ｎの入力信号によって表される１つ又は複数の特定の条件を所与の時点で同時に評価することができる。
【００４３】
[0042]  一実施形態に従ったアクション・エンジンの他の実装において、アクション・エンジンは、レイテンシーの上限を確立し、レイテンシーの十分低い変動性を保証するように、いくつかの固定された最大数の条件まで評価するように構成される。このため、一例では、アクション・エンジンは、それぞれが特定のサイズを有する、ある数の複数の順番にインデックス付けされたメモリ位置（例えばレジスタ又はレジスタの連続するグループ）を含むメモリ構造によって実現される「イベント・テーブル」を備える。一態様において、こうしたメモリ位置のそれぞれは、前述のように「条件／アクション」ペアの形、例えば、評価されることになる条件を表すある第１のビット数、及び、条件が満たされた場合に実行されることになる何らかのアクションを表すある第２のビット数で、情報を記憶するように構成される。他の態様では、イベント・テーブルのそれぞれのメモリ位置は、イベント・テーブル内の所与のメモリ位置がＮ個の入力信号によって表すことが可能な特定条件の評価「専用」であるように、異なる条件／アクション・ペアを記憶する。
【００４４】
[0043]  前述の例では、アクション・エンジンは、イベント・テーブルに通信可能に結合され、イベント・テーブルのそれぞれのメモリ位置に記憶された条件／アクション・ペアによって表される条件を順次評価するために、Ｎ個の入力信号を受信するように構成された、「スキャナ」を更に含むことができる。このため、スキャナは、所与のメモリ位置のコンテンツを読み取り、条件／アクション・ペアの条件部分とＮ個の入力信号のそれぞれの値とを比較するための、適切なデジタル論理回路（例えば比較器及びゲート出力を実装するための論理ゲート）を含む。一例では、条件／アクション・ペアの条件部分とＮ個の入力信号との間に１対１の対応が存在するように、条件／アクション・ペアの条件部分は所与のメモリ位置に記憶されたＮビットの情報全体を含む。特定の条件が満たされているか否か（すなわち、Ｎ個の入力信号のそれぞれの値が条件／アクション・ペアの条件部分と合致しているか否か）にかかわらず、スキャナは、次のメモリ位置に記憶された条件／アクション・ペアのアクション部分とＮ個の入力信号のそれぞれの値とを比較するように、イベント・テーブル内の次のメモリ位置のコンテンツ読み取りに進む。
【００４５】
[0044]  イベント・テーブルの所与のメモリ位置に記憶された条件／アクション・ペアの条件部分によって表される特定の条件が満たされた（すなわち、Ｎ個の入力信号のそれぞれの値が条件／アクション・ペアの条件部分と合致している）場合、スキャナは出力として（例えば合致時に比較器によって実行可能とされるゲート出力として）、条件／アクション・ペアのアクション部分を提供する。この出力自体が１つ又は複数の制御信号を構成するか、或いは、動的環境内の機器を制御するために１つ又は複数の制御信号を生成する命令を表すことができる。次にスキャナは、次のメモリ位置に記憶された条件／アクション・ペアの条件部分とＮ個の入力信号のそれぞれの値とを比較するように、イベント・テーブル内の次のメモリ位置のコンテンツの読み取りに進み、合致が存在する場合、スキャナはゲート出力として、条件／アクション・ペアのアクション部分を提供する。スキャナがイベント・テーブルの最後のメモリ位置に達し、この最後のメモリ位置に記憶された条件／アクション・ペアを適切に処理すると、スキャナはイベント・テーブル内の最初のメモリ位置に戻り、イベント・テーブルの連続するメモリ位置のコンテンツを順次処理するサイクルを反復する。
【００４６】
[0045]  いくつかの実施形態において、前述のようなイベント・テーブル及びスキャナを含むアクション・エンジンは、イベント・テーブルのコンテンツ（例えば条件／アクション・ペア、及び場合によっては他の情報）を提供し、イベント・テーブルの特定のメモリ位置への（例えば、マスタ・プロセッサがアクション・エンジンに条件／アクション・ペアを処理させることを希望する特定の順序又はシーケンスに基づく）特定の条件／アクション・ペアの適切なマッピングを監視する、マスタ（又は「ハウスキーピング」）プロセッサに、通信可能に結合することができる。一態様において、マスタ・プロセッサは、アクション・エンジンのスキャナによる処理のために、１つ又は複数の新しい条件／アクション・ペアをそのイベント・テーブル内にロードすることによって、アクション・エンジンに時折又は定期的に「再タスク」を課すことができる。このため、スキャナは、マスタ・プロセッサが１つ又は複数の新しい条件／アクション・ペアをイベント・テーブル内にロード可能である旨の指示に応答して、処理されている特定の条件／アクション・ペアに対応する条件が満たされた旨の指示を、マスタ・プロセッサに提供することができる。こうした満たされた条件の指示は、実行されることになるアクションを表す出力自体の生成（その出力はマスタ・プロセッサによって監視可能である）、又は、アクション・エンジンによって生成されマスタ・プロセッサによって監視される別々の状況信号又は割り込みの形で、構成可能である。更に（又は別の方法として）、スキャナは、イベント・テーブルのフル・スキャンが完了した旨の指示を（例えば、イベント・テーブルの最後のメモリ位置に記憶された条件／アクション・ペアの処理後に）マスタ・プロセッサに提供することが可能であり、その時点でマスタ・プロセッサは、スキャナによるイベント・テーブルの後続スキャン中の処理のために、イベント・テーブルに、１つ又は複数の新しい条件／アクション・ペア、又は条件／アクション・ペアの完全な新しいセットを、再ロードすることができる。
【００４７】
[0046]  前述のようなマスタ・プロセッサ及びアクション・エンジンを含む本発明に従った制御システムの実施形態において、一態様では、マスタ・プロセッサによって達成されるハウスキーピング及び「再タスク」機能は、上記で考察したように、動的環境を制御するための「分割統治」法を容易にする。特に、いくつかの実装において、動的環境内で対応するアクションが必要な場合のある、ある合計数Ｔの可能な条件が与えられると、マスタ・プロセッサは、合計数Ｔの可能な条件の特定のサブセットのみを選択し、所与の時点でこの条件の特定のサブセットのみを評価するタスクをアクション・エンジンに課するように、構成（又はプログラミング）される。前述のように、マスタ・プロセッサは、様々な基準に基づくプロセッサによる評価のために、条件の特定のサブセットを選択するようにプログラミングすることができる。一例では、マスタ・プロセッサは、動的環境内で条件のサブセットが発生することが予測される期間に少なくとも部分的に基づいて、及び、様々なデューティ（例えば、動的環境全体との関連においてマスタ・プロセッサ自体にタスクが課せられる監視及び／又は制御機能）に対処する際のマスタ・プロセッサ自体の応答時間（例えば最長又は「最悪」の応答時間）を考慮して、アクション・エンジンによる評価のために条件のサブセットを選択する。
【００４８】
[0047]  例えば所与の動的環境との関連においてそれ独自のデューティを実行している場合、マスタ・プロセッサ自体が、ある期間内に情報を受信、処理、及び応答する機能を制限する。特に、マスタ・プロセッサとして働く汎用コンピュータは、（例えば、スケジューリング及びディスパッチング・ソフトウェアに従って）プロセッサによる対処が必要な複数のプロセスが実行のために割り当てられる方法を管理する、様々なスケジューリング制約を受ける。プロセスがスケジューリングされる際に必要な順次性を考えると、必然的に、所与のプロセスを開始するための要求と、そのプロセスの実行に従った何らかの応答の提供との間の時間を表す、何らかの遅延時間又はマスタ・プロセッサの「応答時間」が存在する。マスタ・プロセッサの応答時間は、通常、少なくとも部分的に、動的環境との関連においてマスタ・プロセッサがその必要な機能に対処するためにスケジューリングが必要なこうしたプロセスの数、並びに、それぞれのプロセスがスケジューリングされる複雑さに基づく。いくつかの点でこの状況は、ＰＬＣのスキャン時間又はサイクル時間が、監視される条件に応答して特定の時間フレーム内で制御信号を提供するためのＰＬＣの機能を基本的に制限する、ＰＬＣプログラム内に符号化された規則の数及び複雑さに基づくという、従来のＰＬＣの状況に類似している。
【００４９】
[0048]  マスタ・プロセッサの応答時間は、スケジューリングが必要なそれぞれのプロセスの数及びそれらプロセスの複雑さ（これは、監視及び制御されている動的環境の要件及び身近な制御タスクの複雑さによって、少なくとも部分的に決定される）に、少なくとも部分的に基づく、何らかの名目上の予測又は標準値を有することが可能である。しかしながら、所与の動的環境においてマスタ・プロセッサによって潜在的に実行される機能の変動性を考えると、通常は、マスタ・プロセッサが情報を処理する際に対処する可能性のある、最長の潜在応答時間、又は「最悪の」応答時間が存在する。マスタ・プロセッサの最悪の応答時間よりも短い期間内に発生する可能性のある動的環境の（それに対するアクションが必要な可能性のある）条件が存在する場合、マスタ・プロセッサ自体は事実上、これらの条件に確実に応答できなくなる。したがって、所与の動的環境との関連におけるマスタ・プロセッサの最長の潜在応答時間又は「最悪の」応答時間は、マスタ・プロセッサがアクション・エンジンによる評価のために条件のサブセットを選択する際の基準の一例としての役目を果たすことができる。このように、マスタ・プロセッサは、事実上マスタ・プロセッサそれ自体がそのように実行できない期間中に、動的環境のある条件を監視することに「留意する」という負荷をアクション・エンジンに負わせる。
【００５０】
[0049]  言い換えれば、動的環境内で条件が予測される可能性のある時間スケール／時間フレームの基準に少なくとも基づいて、マスタ・プロセッサは、マスタ・プロセッサの最悪の応答時間に対応する期間中に、動的環境内で生じる可能性のある条件のサブセットを選択し、その期間中に処理のためにアクション・エンジンに条件／アクション・ペアをロードする。その期間中に、アクション・エンジンは、アクション・エンジンのイベント・テーブル内に表された特定の条件が満たされていることを識別する前に、数百或いは数千のスキャニング・サイクルを完了することができる。条件が評価され、必要な場合／必要に応じて、適切なアクションが実行され、マスタ・プロセッサが再度アクション・エンジンに対応可能になると（すなわち、マスタ・プロセッサの最悪の応答時間内に）、マスタ・プロセッサは、マスタ・プロセッサが他のタスク（他のスケジュールされたプロセス）によって事前に占有され得る次の期間中に、評価のために、１つ又は複数の新しい条件／アクション・ペアをアクション・エンジンのイベント・テーブル内にロードすることができる。一態様では、新しくロードされる条件／アクション・ペアは、以前に評価された条件及び実行されたアクションがあれば、少なくとも部分的にそれらに基づくものとすることができる。このように、マスタ・プロセッサは、動的環境内の条件の進化に対応するものであり、所与の時点で、（例えば、マスタ・プロセッサの応答時間に対応する）特定の期間内に発生することが予測される条件のサブセットのみを評価するように、アク
ション・エンジンに反復的に再タスクを課すことによって、アクション・エンジンに対する著しい処理負荷をオフロードする。
【００５１】
[0050]  前述のアクション・エンジンの例において、一態様では、特定の条件／アクション・ペアを記憶しているイベントの専用メモリ位置の組み合わせは、条件を評価する（及び、満たされた場合、実行されることになるアクションを表す出力を提供する）ために、スキャナのデジタル論理回路に結合された場合、単一の条件の評価に専用の前述のコプロセッサと機能的に等価であることを理解されたい。しかしながらスキャナの構成は、単一の条件を評価するだけでなく、イベント・テーブルのそれぞれのメモリ位置の間で（例えばスキャン又は時分割多重化されるように）「共有される」ことになる評価を、デジタル論理回路が実行できるようにするため、結果として、アクション・エンジンのスキャナ及びイベント・テーブルの組み合わせは、本質的に複数の条件を評価し、必要に応じてアクションを実行するように構成された、コプロセッサを構成することになる。こうしたコンポーネントの配置構成は、ハードウェア・リソースの効率的かつ慎重な使用を容易にする。
【００５２】
[0051]  様々な態様において、アクション・エンジンのイベント・テーブルにおけるそれぞれのメモリ位置のサイズ（例えばビット数）、イベント・テーブル内の専用メモリ位置の合計数、及びスキャナ自体の構成（例えばスキャナによって実装されるデジタル論理）は、特定の動的環境の制御に対して所望のレイテンシーを達成するように指定され、このレイテンシーは、十分低い上限及び／又は十分予測可能な（及び場合によってはごくわずかな）変動性を有する。以下でより詳細に考察される特定の一実装において、イベント・テーブル及びスキャナに基づいて適切に構成されたアクション・エンジンは、（例えば、スキャナの論理機能を駆動している１００ＭＨｚクロックに基づいて）条件／アクション・ペア当たりおよそ１０ナノ秒のアクション・エンジンに関するレイテンシーを達成するため、例えば、それぞれ１２８の条件／アクション・ペアを記憶している１２８のメモリ位置を有するイベント・テーブルの場合、およそ１．２８マイクロ秒（１２８×１０ナノ秒）のアクション・エンジン・レイテンシーが実現可能である。こうしたレイテンシー・メトリックは、従来のＰＬＣで観察される数十から数百ミリ秒の典型的なレイテンシーに比べて、桁違いに低い。
【００５３】
[0052]  前述の概念及び以下でより詳細に考察される追加の概念のすべての組み合わせは（こうした概念が相互に矛盾しない場合）、本明細書で開示される本発明の主題の一部であるように企図されることを理解されたい。特に、本開示の終わりに記載された特許請求の範囲の主題のすべての組み合わせは、本明細書で開示される本発明の主題の一部であるものとして企図される。
【００５４】
[0053]  当業者であれば、図面は主に例示の目的であり、本明細書で説明される本発明の主題の範囲を限定することは意図されていないことを理解されよう。図面は必ずしも一定の縮尺ではなく、いくつかのインスタンスでは、本明細書で開示される本発明の主題の様々な態様は、異なる特徴を容易に理解できるように、図面内で誇張又は拡大して示されている場合がある。図面内では、同じ参照文字は一般に同じ特徴（例えば、機能的に同様及び／又は構造的に同様の要素）を指す。
【図面の簡単な説明】
【００５５】
【図１】[0054]  自動化工業プロセスに関連して、従来のプログラム可能論理コントローラ（ＰＬＣ）の典型な役割を示す概略図である。
【図２】[0055]  図１の従来のＰＬＣを構成する典型的な電気コンポーネント／回路（例えば「ハードウェア」）を示す、概略ブロック図である。
【図３】[0056]  特にプロセッサ・ユニット、メモリ、及び入力／出力インターフェースに関連して、図２に示された従来のＰＬＣの内部アーキテクチャの追加の細部を示す、ブロック図である。
【図４】[0057]  本発明の一実施形態に従った、動的環境を監視及び制御するための制御システムを示すブロック図であり、制御システムは、１つ又は複数のコプロセッサを備えるアクション・エンジンに通信可能に結合されたマスタ・プロセッサを含む。
【図５】[0058]  本発明の一実施形態に従った、動的環境の少なくとも１つの態様を監視、同期化、及び／又は制御するために並列に動作する、複数のコプロセッサを含むアクション・エンジンを示す、ブロック図である。
【図６】[0059]  本発明の一実施形態に従った、動的環境の少なくとも１つの態様を監視、同期化、及び／又は制御するために動作する、イベント・テーブル及びスキャナを含むアクション・エンジンを示す、ブロック図である。
【図７】[0060]  本発明の一実施形態に従った、図６のアクション・エンジンで使用するのに適したスキャナを示すブロック図である。
【図８】[0061]  本発明の一実施形態に従った、図６のイベント・テーブル内での連結レジスタの使用を示す図である。
【図９】[0062]  本発明の一実施形態に従った、動的環境の少なくとも１つの態様を制御するために並列に動作するように応答するように構成された、イベント・テーブル及びスキャナをそれぞれが含む、複数のコプロセッサを含むアクション・エンジンを示すブロック図である。
【図１０】[0063]  機械視覚技法及び機器が使用される動的環境、並びに、動的環境を監視及び制御するための本発明の一実施形態に従った制御システムを示す、ブロック図である。
【発明を実施するための形態】
【００５６】
[0064]  次に、動的環境を監視及び／又は制御するための本発明のシステム、方法、及び装置に関する、及びそれらの実施形態の、様々な概念をより詳細に説明する。上記で紹介され、以下でより詳細に考察される様々な概念は、開示された概念がいずれの特定の実装様式にも限定されないため、任意の多数の方法で実装可能であることを理解されたい。特定の実装及び適用範囲の例は、主に例示の目的で提供される。
【００５７】
[0065]  図４は、本発明の一実施形態に従った、動的環境を監視及び制御するための制御システム１００ａを示すブロック図である。図１を再度参照すると、従来のプログラム可能論理コントローラ（ＰＬＣ）５０が自動化プロセス１０を監視及び制御しているように示されており、以下でより詳細に考察される例示の実装では、図４の制御システムは図１に示されたＰＬＣ５０の代わりとして構成されている。しかしながら、図４の制御システムはこの点で限定されておらず、本発明の実施形態に従った様々な制御システム並びにその構成要素は、特に低レイテンシー（すなわち著しく速い応答時間）及び／又は低変動性レイテンシーを必要とする、様々な動的環境を監視及び／又は制御するための広範な適用可能性を有することが可能であることを理解されたい。本発明に従った制御システムの例示の一適用例は、図１０に関連して以下でより詳細に考察される、機械視覚技法及び／又は機器が使用される動的環境によって与えられる。
【００５８】
[0066]  図４に示されるように、本実施形態の制御システム１００ａは、アクション・エンジン１１０ａに通信可能に結合されたマスタ・プロセッサ１９０（「ハウスキーピングＣＰＵ」とも呼ばれる）を含む。アクション・エンジン１１０ａは、１つ又は複数の応答コプロセッサ（図４ではそれぞれ、コプロセッサ１２０ａ−１及び１２０ａ−２と示され、まとめてコプロセッサ１２０ａと示される）を備えることができる。各コプロセッサ１２０ａは、コプロセッサ論理（それぞれコントローラ１３０ａ−１及び１３０ａ−２、まとめてコントローラ１３０ａと示される）に結合された入力インターフェース１５８ａ及び出力インターフェース１６０ａを含む。例示の入力インターフェース１５８ａ出力インターフェース１６０ａは、ＲＳ２３２インターフェース、イーサネット・インターフェース、ユニバーサル・シリアル・バス（ＵＳＢ）、及び／又は任意の他の適切な並列又は直列通信インターフェースを含むことができるが、それらに限定されない。各コプロセッサ・コントローラ１３０ａは、１つ又は複数の条件（それぞれ条件１４２ａ−１及び１４２ａ−２、まとめて条件１４２ａと示される）、及び、同じメモリ１４０ａに記憶された条件１４２ａに対応する少なくとも１つの所定のアクション（それぞれアクション１４４ａ−１及び１４４ａ−２、まとめてアクション１４４ａと示される）を記憶する、専用メモリ（それぞれメモリ１４０ａ−１及び１４０ａ−２、まとめてメモリ１４０ａと示される）に通信可能に結合される。図４に示されたアクション・エンジン１１０ａは２つのコプロセッサ１２０ａのみを含むが、他の実施形態に従ったアクション・エンジンは、この点で限定されておらず、１つのコプロセッサのみ又は２つより多くのコプロセッサを含むことができることを理解されたい。
【００５９】
[0067]  図４に示された制御システム１００ａの一態様において、制御システム１００ａは、相対的に高速な時間スケールで発生する条件を評価するためにアクション・エンジン１１０ａを使用すること、及び、相対的に低速な時間スケールで発生する条件を評価するためにハウスキーピングＣＰＵ１９０を使用することによって、動的環境を監視、制御、及び／又は同期化する。より一般的に言えば、前述のようにいくつかの実施形態では、ハウスキーピングＣＰＵ１９０は、本質的に、ハウスキーピングＣＰＵ１９０それ自体が事実上そのように実行できない期間中に、動的環境のある条件を監視するように「留意する」タスクをアクション・エンジンに課す。一態様において、アクション・エンジン１１０ａが特にある条件を監視する（及び必要であれば同じ条件に応答してアクションを実行する）タスクを課される期間は、ハウスキーピングＣＰＵ１９０の「応答時間」（「レイテンシー」とも呼ばれる）に少なくとも部分的に基づく（この応答時間は、ハウスキーピングＣＰＵ自体が対処する必要のある異なるタスク又はプロセスの数が、与えられた情報を処理するハウスキーピングＣＰＵの機能を制限する結果として生じる）。以下で考察されるいくつかの例では、ハウスキーピングＣＰＵがある監視及び制御タスクをアクション・エンジンに委任する期間は、制御されている特定の動的環境との関連において予測可能な、ハウスキーピングＣＰＵの最長又は最悪の応答時間に基づく。
【００６０】
[0068]  上記に鑑み、図４に示された制御システムの例示の一実装では、アクション・エンジン１１０ａは、動的環境を表す入力信号６６を評価することによって、高速発生イベントに関して、反射的応答、すなわちハウスキーピングＣＰＵ１９０のレイテンシーよりも高速に実行される応答から恩恵を受ける条件１４２ａに対してスクリーニングする。例示の入力信号６６は、デジタル値（ビット）、アナログ値、又はアナログ入力のデジタル表現などの、離散入力と、離散入力のリアルタイム・バージョンと、離散入力のラッチ・バージョンと、直角位相（quadrature）でクロック制御されたカウンタ・ペアから導出されるカウンタ値などの離散入力の導出バージョンと、１つ又は複数の通信ポートから受信したメッセージ（例えばパケット）の復号されたコンテンツと、を含むが、これらに限定されない。入力信号６６は、動的環境の条件を構成する単一パラメータ（例えば、温度、圧力、ポジション）、又は、動的環境の条件を構成するこうしたパラメータの集合を表すことができる。
【００６１】
[0069]  この反射的挙動を達成するために、アクション・エンジン１１０ａ内の各コプロセッサ１２０ａのコントローラ１３０ａは、入力信号１１０ａを特定の条件１４２ａ（又は条件１４２ａのセット）と比較する。汎用プロセッサとは異なり、各コプロセッサ１２０ａは、そのメモリ内に記憶された特定の条件１４２ａのみを評価するため、コプロセッサ１２０ａを低（及び予測可能）レイテンシーで動作させることができる。コントローラ１３０ａが、入力信号６６が特定の条件１４２ａに合致することを決定した場合、コントローラ１３０ａは、対応するアクション１４４ａを実行する。例えば対応するアクション１４４ａの実行は、１つ又は複数の出力信号６８を他のデバイス及び／又はシステムに伝送することを含むことができる。別の方法として、アクション１４４ａは、応答を実装するためにハウスキーピングＣＰＵ１９０に割り込みを転送することを含むことができる。
【００６２】
[0070]  同時に、ハウスキーピングＣＰＵ１９０は、入力信号６６及び出力信号６８の分析を介して、動的環境の進化を監視する。ある状況（例えば動的環境の進化が遅い場合）では、ハウスキーピングＣＰＵ１９０は、それ自体の出力信号を伝送することによって特定の入力信号６６に直接応答することができる。他の状況では、ハウスキーピングＣＰＵ１９０は、コプロセッサ１２０ａに再タスクを課すことによって、例えば、メモリ１４０ａに記憶された条件１４２ａ及び／又は（所定の）アクション１４４ａのうちのいくつか又はすべてを更新及び／又は置換することによって、動的環境の評価に間接的に応答する。動的環境が組み立てラインである場合、例えばハウスキーピングＣＰＵ１９０は、第１の部品が組み立てラインを離れると、最初は第１の部品を追跡するのに専用であったコプロセッサ１２０ａに、第２の部品を追跡する再タスクを課すことができる。
【００６３】
[0071]  ハウスキーピングＣＰＵ１９０とアクション・エンジン１１０ａとの間で責任を分割することによって、ハウスキーピングＣＰＵ１９０は、条件１４２ａによって表されるイベントのサブセット（例えば、動的環境の所与の特定の進化を生じさせる可能性の高い高速発生イベント）に対する処理負担を、アクション・エンジン１１０ａに課すことができる。同時に、ハウスキーピングＣＰＵ１９０は、動的環境のより低速な進化に関連付けられた条件の処理を続行することができる。この分割統治法は、入力信号６６によって表されるイベントへのシステムの応答のレイテンシー及び／又はジッタ（jitter）（レイテンシー変動）全体を低減させることができる。いくつかのケースでは、高速発生イベントに関する処理負担の移行は、制御システム１００ａ全体のレイテンシーを、実質的にコプロセッサ・レイテンシーの関数とすることも可能である。
【００６４】
[0072]  比較器論理を用いるアクション・エンジン
【００６５】
[0073]  図５は、動的環境の少なくとも１つの態様を監視、同期化、及び／又は制御するための、他の例示のアクション・エンジン１１０ｂを示す。図５に示されたシステム及び特にアクション・エンジン１１０ｂが共に使用可能なこうした環境の例は、組み立てライン、検査ライン、自律又は半自律走行車（又は車列）、電力管理システム（例えばスマート・グリッド）、倉庫、産業空間、駐車施設、飛行場、積み出し港、サーベイランス・システム、娯楽用乗り物、及び／又は通信ネットワークを含むが、これらに限定されない。例えばアクション・エンジン１１０ｂは、機械制御及び／又はイメージのトリガに使用可能である。
【００６６】
[0074]  アクション・エンジン１１０ｂは、複数のコプロセッサ（それぞれ図５ではコプロセッサ１２０ｂ−１から１２０ｂ−ｎで示され、まとめてコプロセッサ１２０ｂと示される）を含む。各コプロセッサ１２０ｂは、高速で、すなわち、汎用コンピュータ又はＣＰＵ、例えばハウスキーピングＣＰＵ１９０で同じ動作を実行して達成できるよりも速い速度で、限定数の動作を実行する、特定用途向けコンピュータ・プロセッサである。例示のコプロセッサ１２０ｂは、ＦＰＧＡ、ＡＳＩＣ、及び／又は、当分野で知られる任意の他の適切な実装において、実装可能である。
【００６７】
[0075]  アクション・エンジン１１０ｂ内の各コプロセッサ１２０ｂは、センサ、アクチュエータ、受信キュー（例えばイーサネット受信キュー）、及び他の動的環境に関する情報ソースから、データを受信するように動作可能に結合される、入力バス１０２に結合された、それぞれの入力ポート（それぞれ図５では入力ポート１５８ｂ−１から１５８ｂ−ｎと示され、まとめて入力ポート１５８と示される）を含む。図５はｎ個のエントリを示すが、当業者であれば、例示のアクション・エンジンは任意数のコプロセッサ１２０ｂ、例えば１、２、４、８、１６、３２、６４、１２８、２５６、５１２、又は１０２４個のコプロセッサ１２０ｂを有し得ることが容易に理解されよう。
【００６８】
[0076]  各コプロセッサ１２０ｂは、１つ又は複数の状態或いは条件の表現（それぞれ条件１４２ｂ−１から１４２ｂ−ｎ、まとめて条件１４２ｂ）、及び、以下で説明されるようにコプロセッサ１２０ｂによって実行されることになる１つ又は複数のアクションの表現（それぞれアクション１４４ｂ−１から１４４ｂ−ｎ、まとめて条件１４４ｂ）を記憶する、それぞれのレジスタ（それぞれ図５ではレジスタ１４０ｂ−１から１４０ｂ−ｎで示され、まとめてレジスタ１４０ｂと示される）も含む。各条件１４２ｂは、アクション・エンジン・レジスタ１４０ｂ内の他の条件１４２ｂとは独立（及び場合によっては重複）であってよい。条件１４２ｂは、アクション・エンジン１１０ｂ内の１つ又は複数の他の条件１４２ｂを満たすことを条件とすることも可能であり、例えば以下でより詳細に説明されるように、まとめてスーパーセット内に論理的に「ＡＮＤ」することができる。
【００６９】
[0077]  レジスタ１４０ｂは、揮発性又は不揮発性のコンピュータ・メモリなどのコンピュータ読み取り可能記憶媒体、フラッシュ・メモリ、コンパクト・ディスク、光ディスク、磁気テープ、１つ又は複数のフロッピィ・ディスク、ＦＧＰＡ又は他の半導体デバイス内の回路構成、或いは、他の持続性媒体又は有形コンピュータ記憶媒体を含むが、それらに限定されない、任意の適切なタイプのメモリ内に実装可能である。各レジスタ１４０ｂはそのそれぞれのコプロセッサ１２０ｂに専用であり、すなわちコプロセッサ１２０ｂはメモリを共有しない。レジスタ１４０ｂをそれぞれのコプロセッサに専用とすることは、競合の問題を低減又は除去するのに役立つ。
【００７０】
[0078]  各コプロセッサ１２０ｂは、入力バス１０２及び入力ポート１５８を介して受信された入力信号６６と条件１４２ｂとを比較する、比較器（それぞれ比較器１３０ｂ−１から１３０ｂ−ｎ、まとめて比較器１３０ｂ）又は他の論理要素も含む。すべてのコプロセッサ１２０ｂはそれら自体のコンパレータ１３０ｂを有し、入力バス１０１を介して入力１０１を同時に受信するため、コプロセッサ１２０ｂは、入力１０１をそれらそれぞれの条件１４２ｂと同時に比較することができる。結果として、アクション・エンジン１１０ｂ内のコプロセッサ１２０ｂの数は、比較が実行される速度に影響しない。
【００７１】
[0079]  入力信号６６が条件１４２ｂと合致する場合、比較器１３０ｂは、合致を示す出力（それぞれ出力１３２−１から１３２−ｎ、まとめて出力１３２）を発信する。１つ、複数、又はゼロのコプロセッサ１２０ｂにとって、入力信号６６に合致する条件１４２ｂを含むことが可能である。各コプロセッサ１２０ｂは、その出力１３２を、出力ポート（それぞれ出力ポート１６０ｂ−１から１６０ｂ−ｎ、まとめて出力ポート１６０ｂ）を介して出力バス１０３に結合することができる。
【００７２】
[0080]  各コプロセッサ１２０ｂは、そのそれぞれの条件１４２ｂに合致する入力１０１を検出すると、そのそれぞれのレジスタ１４０ｂ内に記憶されたアクション１４４ｂも実行する。アクション１４４ｂは、比較器１３０ｂの出力１３２によって制御される論理要素（それぞれ論理要素１３４−１から１３４−ｎ、まとめて論理要素１３４）に結合される。論理要素１３４が、入力１０１と条件１４２ｂとの間の合致を示す出力１３２を受信すると、論理要素１３４は、アクション１４４ｂによって表されるアクションを実行する。いくつかのケースでは、論理要素１３４は、ここでは出力信号６８として示される追加の情報又は命令を、センサ、アクチュエータ、及び動的環境に関連付けられた他のデバイスなどの他のデバイスに、出力ポート１６０ｂ及び出力バス１０４を介して伝送することができる。例示の出力信号６８は、デジタル値、アナログ値、及び／又はアナログ値のデジタル表現などの、離散出力、離散出力のラッチ・バージョン、並びに／或いは、１つ又は複数の通信ポート（例えば出力ポート１６０ｂ）を介して送信されるメッセージ・パッケージ内に符号化される出力データ及び機械動作コマンドを含むが、これらに限定されない。他のケースでは、アクション１４４ｂは、コプロセッサ１２０ｂがいかなるアクションも実行しない「ノーオペレション（no-op）」命令とすることができる。
【００７３】
[0081]  アクション・エンジン１１０ｂは、入力バス１０２、出力バス１０４、及びレジスタ１４０ｂへの追加の接続を介して、ハウスキーピングＣＰＵ１９０にも結合される。（他の実施形態では、アクション・エンジン１１０ｂ内の１つ又は複数のレジスタ１４０ｂは、入力ポート１５８及び入力バス１０２を介してハウスキーピングＣＰＵ１９０に動作可能に結合することができる。）ハウスキーピングＣＰＵ１９０は、汎用ハウスキーピング・タスクを実行し、コプロセッサ・レジスタ１４０ｂ内の条件１４２ｂ及び／又はアクション１４４ｂをロード及び維持する。例えばハウスキーピングＣＰＵ１９０は、アクション・エンジンの動的環境の特定状態の識別、オペレーション・コードが期限切れである旨の指示、アクション・エンジンからの命令、ユーザ及び／又は他のデバイスからの命令などに応答して、１つ又は複数のコプロセッサ１２０ｂ内の条件／アクション・ペアを置換又は更新することができる。アクション・エンジン１１０ｂは、ハウスキーピングＣＰＵ１９０からのリソースを必ずしも必要とせずに、動的環境からの入力に「直接」応答することができるため、ハウスキーピングＣＰＵ１９０は、連続する入力状態への応答に関連したいずれの処理負担も事実上免除されたままであり（すなわちハウスキーピングＣＰＵ１９０は事実上「ロードされない」ままであり）、したがって、アクション・エンジン１１０ｂそれ自体が実行することが不可能又は実際的でない可能性があるテスト及びアクションを実行する必要がある場合に、ハウスキーピングＣＰＵ１９０が使用可能である。加えて、ハウスキーピングＣＰＵ１９０は、動的環境の進化に応答するためのクリティカル・パス内にないため、アクション・エンジンの応答を遅延させない。
【００７４】
[0082]  イベント・テーブル及びスキャナを用いるアクション・エンジン
【００７５】
[0083]  図６は、動的環境の少なくとも１つの態様を監視、同期化、及び／又は制御するための例示のアクション・エンジン１１０ｃを含む、様々なコンポーネントのシステム構成を示す。図６に示されたシステム、及び特にアクション・エンジン１１０ｃが共に使用可能なこうした環境の例は、組み立てライン、検査ライン、自律又は半自律走行車（又は車列）、電力管理システム（例えばスマート・グリッド）、倉庫、産業空間、駐車施設、飛行場、積み出し港、サーベイランス・システム、娯楽用乗り物、及び／又は通信ネットワークを含むが、これらに限定されない。例えばアクション・エンジン１１０ｂは、機械制御及び／又はイメージのトリガに使用可能である。
【００７６】
[0084]  アクション・エンジン１１０ｃはイベント・テーブル１１２を含み、これがイベント・テーブル・レジスタ（まとめてイベント・テーブル・レジスタ１４０ｃ、それぞれはレジスタ１４０ｃ−１から１４０ｃ−５）を含み、そのそれぞれが１つ又は複数の条件の表現（図６ではまとめて条件１４２ｃと示され、図８ではそれぞれ条件１４２ｃ−１から１４２ｃ−５と示される）を記憶する。各イベント・テーブル・レジスタ１４０ｃは、レジスタ１４０ｃ内に記憶された条件に対応する１つ又は複数のアクションの表現（図６ではまとめて命令１４４ｃと示され、図８ではそれぞれ命令１４４ｃ−１から１４４ｃ−５として示されるも記憶する。）イベント・テーブル１１２及びイベント・テーブル・レジスタ１４０ｃは、揮発性又は不揮発性のコンピュータ・メモリなどのコンピュータ読み取り可能記憶媒体、フラッシュ・メモリ、コンパクト・ディスク、光ディスク、磁気テープ、１つ又は複数のフロッピィ・ディスク、フィールド・プログラマブル・ゲート・アレイ又は他の半導体デバイス内の回路構成、或いは、他の持続性媒体又は有形コンピュータ記憶媒体を含むが、それらに限定されない、任意の適切なタイプのメモリ内に実装可能である。
【００７７】
[0085]  各イベント・テーブル・レジスタ１４０ｃは、独立条件１４２ｃを記憶する。総合すれば、イベント・テーブル・レジスタ１４０ｃは、入力バス１１０に結合された１つ又は複数のセンサ４０によって測定可能な動的環境のあらゆる可能な状態を表す条件１４２ｃを記憶することができる。しかしながら多くのケースでは、イベント・テーブル・レジスタ１４０ｃは、条件１４２ｃの再プログラム可能サブセット、例えば、ハウスキーピングＣＰＵ１９０のレイテンシーよりも即時に実行されるアクション１４４ｃから恩恵を受ける条件１４２ｃのみを、保持することが可能である。いくつかのケースでは、条件１４２ｃは重複可能であり、例えば、条件１４２ｃ−１は温度及び圧力しきい値を含むことが可能であり、条件１４２ｃ−２は温度及びポジションしきい値を含むことが可能である。図６は例示の目的で５つのイベント・テーブル・レジスタ１４０ｃのみを示しているが、他の実施形態では、イベント・テーブル１１２はより多いか又は少ないレジスタ１４０ｃ、例えば数十、数百、又は数千のエントリを有することができることを理解されたい。一般に、いずれの応答／反応が必要であり得るかに従って、仮想上は特定の環境に密接に関係する任意数の条件１４２ｃを、イベント・テーブル・レジスタ１４０ｃとしてイベント・テーブル１１２内に表すことができる。
【００７８】
[0086]  条件１４２ｃの表現に加えて、各イベント・テーブル・レジスタ１４０ｃは、状態入力が条件１４４ｃ合致した場合に実行されることになる、１つ又は複数のアクション１４４ｃの表現も含む。したがって、アクション・エンジン１１０ｃのスキャナ１３０ｃが、入力信号６６がイベント・テーブル・レジスタ１４０ｃに記憶された所与の条件１４２ｃに合致する旨を決定した場合、スキャナ１３０ｃは、イベント・テーブル・レジスタ１４０ｃに記憶された対応するアクション１４４ｃにアクセスし、動的環境のうちの１つ又は複数の態様を制御するように、アクション１４４ｃを実行する。このため、アクション・エンジン１１０ｃは、イベント・テーブル内でアクセスされた命令を１つ又は複数の外部デバイスに送信するため、並びに、状態入力及び動的環境に関連する他の情報を、こうした情報の１つ又は複数のソースから受信するための、入力ポート１５８ｃ、出力ポート１６０ｃ、及び／又は１つ又は複数の他の通信インターフェース（例えば入力／出力バス、イーサネット・ポート）も含む。
【００７９】
[0087]  図６に示されるように、アクション・エンジン１１０ｃは、スキャナ１３０ｃを更に備える。入力ポート１５８ｃは、イベント・テーブル１１２及びスキャナ１３０ｃから入力バス１０２への接続を提供する。図６は、アクション・エンジン１１０ｃの入力バス１０２が、ＣＰＵ１９０、並びに、セマフォ・レジスタ１５０、カウンタ４２、１つ又は複数のセンサ４０、及び受信キュー４４（例えばイーサネット受信キュー）の形の通信インターフェースを含む（がこれらに限定されない）、様々な外部デバイスに結合されることも示している。入力バス１０２にも接続されるスキャナ１３０ｃは、各イベント・テーブル・レジスタ１４０ｃ内の条件１４２ｃのセットを、ハウスキーピングＣＰＵ１９０、カウンタ４２、センサ４０、受信キュー４４、及び／又は任意の他の適切なデータ・ソースからの入力バス１０２に結合された入力信号６６と比較する、デジタル論理（図６では図示せず）を含む。いくつかのケースでは、入力信号６６は、カメラからのイメージ・データ、ロボット・コントローラからのポジション情報、及び／又は、連続プロセス化学反応器内のミキサ又はフロー制御システムからのフロー情報を評価する、プロセッサなどの、１つ又は複数の埋め込みアプリケーション・システムによって動的環境から導出された、データを含むことができる。いくつかの実装では、生データを事前条件付け又は事前処理することで、データを表すことが必要なビット数を削減することが可能であり、これによってレジスタ１４０ｃのサイズを縮小させることができる。
【００８０】
[0088]  図７は、スキャナ１３０ｃの可能な一実施形態をより詳細に示すブロック図である。スキャナ１３０ｃは、アクション論理１３２、シーケンシング論理１３３、及び１つ又は複数のフラグ・レジスタ１３５に結合された、比較器論理１３１を含む。カウンタ４２値、状態変化入力、及びフラグ状態を含むがこれらに限定されない、入力信号６６は、条件１４２ｃに合致しているかどうかを判別するために、イベント・テーブル１１２からの条件１４２ｃを表すデータに関連して、比較器論理１３１によって評価される。この「条件合致」状況が、アクション論理１３２に渡される。
【００８１】
[0089]  図７を再度参照すると、スキャナ１３０ｃは、比較器論理１３１からの「条件合致」状況並びにイベント・テーブル１１２からの命令１４４ｃを表すデータを受信する、アクション論理１３２も含む。アクション論理１３２は、１つ又は複数のフラグ・レジスタ１３５、セマフォ・レジスタ１５０（図６）、出力レジスタ１３６、通信論理（図示せず）、カウンタ、及びデータ入力回路にも結合される。「条件合致」状況の状態及び命令１４４ｃを表すデータに依存して、アクション論理１３２は、以下でより詳細に記述されるように、フラグ・レジスタ１３５、セマフォ・レジスタ１５０、出力ポート１６０ｂに結合された出力レジスタ１３６、通信論理３４、カウンタ、及びデータ入力回路の状態に影響を与える、動作を実行することができる。加えて、アクション論理１３２は、例えばアクションが実行され、条件／アクション・ペアの更なる評価が抑止されることになる場合、イベント・テーブル１１２内の条件１４２ｃ及び／又は命令１４４ｃの変更を容易にする、イベント・テーブル書き込み調停論理１３４に結合される。
【００８２】
[0090]  スキャナ１３０ｃ内のシーケンシング論理１３３（図７）は、比較器論理１３１、アクション論理１３２、及びイベント・テーブル１１２（図６）のアクティビティを同期化する。これによって、イベント・テーブル１１２内のいずれのレジスタ１４０ｃが評価されることになるかを決定する読み取りアドレスが、イベント・テーブル１１２に提供される。シーケンシング論理１３３は、アクション・エンジン１１０ｃが、イベント・テーブル１１２内の条件１４２ｃ及び／又は命令１４４ｃが修正されることになるものと決定した場合、イベント・テーブル書き込み調停論理１３４に書き込みアドレスも提供する。イベント・テーブル書き込み調停論理１３４は、イベント・テーブル１１２への書き込みアクティビティを管理するために、ハウスキーピングＣＰＵ１９０から並びにスキャナ１３０ｃ内の他の論理から、入力を受信する。ＣＰＵ１９０からの書き込み動作とスキャナ１３０ｃ内の他の論理からの書き込み動作との間に競合が生じた場合、スキャナ動作が割り込まれずに続行できるように、スキャナ１３０ｃ内の論理に優先権を与えることができる。この競合ケースでは、イベント・テーブル書き込み調停論理１３４が、ＣＰＵ１９０からの書き込みデータを受け入れるためにイベント・テーブル１１２が使用可能であることを決定するまで、ＣＰＵ書き込み動作が中断されるように、ハウスキーピングＣＰＵ１９０に待機信号がアサートされる。スキャナ１３０ｃの一実施形態において、シーケンシング論理１３３は、マスタ・クロック（図示せず）のあらゆるサイクルで新しい条件／アクション・ペアが評価されるようにする。
【００８３】
[0091]  様々な態様において、スキャナ１３０ｃ及びイベント・テーブル１１２は、単一のコプロセッサ内、例えばＦＰＧＡ内に、実用ハードウェア記述言語（ＨＤＬ）コードを使用して実装可能である。スキャナ１３０ｃは、イベント・テーブルが記憶されている１つ又は複数の記憶媒体に結合されたユニタリ（unitary）・デジタル論理構造として実装することもできる。別の方法として、スキャナ１３０ｃは、イベント・テーブルに通信可能に結合された複数の分散論理コンポーネントとして実装可能である。例えば、一実施形態において、入力信号と所与のイベント・テーブル・レジスタ内の１つ又は複数の条件とを比較し、必要に応じて１つ又は複数の対応する命令にアクセスするために、イベント・テーブル・エントリと専用のデジタル論理との間に１対１の対応が存在するように、それぞれが１つのイベント・テーブル・レジスタ１４０ｃに専用の複数のデジタル論理コンポーネントとして、スキャナ１３０ｃを実装することが可能である。更に他の実施形態において、スキャナの一部を構成するデジタル論理コンポーネントを、複数のイベント・テーブル・レジスタの特定のグループに専用とするか、又は割り当てることができる。したがって、アクション・エンジンのスキャナ、及びスキャナを構成するデジタル論理回路は、本発明の様々な実施形態に従った多くの方法のいずれかで実装可能であることを理解されたい。
【００８４】
[0092]  例示の一実施形態において、アクション・エンジンのスキャナは、状態に応答／反応するための適切な命令にかなり高速でアクセス（及び、その後１つ又は複数の外部デバイスに送信）できるように、状態入力とイベント・テーブル内の状況の複数のセットとをほぼ同時に（例えば並列に）比較する。その結果、アクション・エンジンは、動的環境のそれぞれの状態に関する情報を処理すること、及びそれに応答してアクションを実行することに関して、著しく低いレイテンシーを示す。
【００８５】
[0093]  例えばスキャナ１３０ｃは、単一のレジスタ１４０ｃを２クロック・サイクルごとに処理する状態機械として実装可能である。第１のクロック・サイクル中に、スキャナ１３０ｃは条件１４２ｃを読み取る。条件１４２ｃに合致した場合、スキャナ１３０ｃは、第２のクロック・サイクル中に対応するアクション１４４ｃを実行する。第２のクロック・サイクルは、次のスキャンに対して適切な動作が完了したことを示すためのイベント・テーブル１１２内のアクション１４４ｃへの書き戻しを含むことができる。特に複雑な条件及び／又は多数の入力状態を含む実装は、単一のレジスタを処理するために２つよりも多くのクロック・サイクルを使用することができる。多重サイクル実行を使用するスキャナ１３０ｃでは、同時読み取り及び書き込みサイクルを有するデュアル・ポート・メモリが実装可能であり、ここで書き込みサイクルは、前の読み取りサイクル中に処理されたレジスタ１４０ｃを書き戻す。デュアル・ポート・メモリの同時読み取り及び書き込みサイクルに関連して、状態機械パイプライン・レジスタ（以下で説明）は、新しいレジスタがあらゆるサイクルで処理されるようにすることが可能であり、レイテンシーを著しく低くする。
【００８６】
[0094]  図６を再度参照すると、アクション・エンジン１１０ｃの入力バス１０２上に提供される１つ又は複数の入力信号６６のセットは、入力バス１０２に結合された様々なソース（例えば、ハウスキーピングＣＰＵ１９０、カウンタ４２、センサ４０など）から取得可能であり、所与の時点で単一ソースによって、又は所与の時点で複数ソースによって、提供可能であることを理解されたい。こうした１つ又は複数の入力信号６６のセットは、所与の時点で少なくとも部分的に動的環境を表すことが可能であり、これらの入力信号６６は、それぞれのイベント・テーブル・レジスタ１４０ｃに記憶された条件セット１４２ｃのそれぞれと（例えばスキャナ１３０ｃ）によって比較可能である。
【００８７】
[0095]  入力信号６６は、状態の変化（立ち上がり又は立ち下がりエッジ）を検出するために常時評価される。イベント・テーブル１１２の各スキャンの開始時に、前のスキャン中に発見された任意の入力状態変化は、ラッチ入力（図示せず）としてスキャナ論理に提示される。これは、入力フィルタを通過するいずれの信号も、その持続時間がいかに短いかにかかわらず検出されることを意味する。したがって、たとえ状態変化の持続時間がスキャンの持続時間よりも短い場合であっても、いずれの入力信号に関するいずれの状態変化も、スキャナ論理に提示されることが可能である。
【００８８】
[0096]  図６に示されたアクション・エンジン１１０ｃの例示の一実施形態において、入力バス１０２上に提供された入力信号６６のセットが特定のイベント・テーブル・レジスタ１４０ｃに関する条件１４２ｃに合致する場合、スキャナ１３０ｃは、そのイベント・テーブル・レジスタ１４０ｃからの対応するアクション１４４ｃを実行する。いくつかのケースでは、これらのアクション１４４ｃは、セマフォを獲得又は解除すること、或いはスキャナ１３０ｃに結合されたフラグを設定又はクリアすることを含むことが可能であり、以下でより詳細に説明されるように、セマフォ又はフラグを使用して条件１４２ｃを評価する。次にスキャナ１３０ｃは、合致した条件セットに対応する出力信号６８を、出力バス１０４を介して動的環境、ハウスキーピングＣＰＵ１９０、及び送信キュー３４（例えばイーサネット送信キュー）に送信する。
【００８９】
[0097]  別の方法として、又は加えて、スキャナ１３０ｃを様々な周辺装置に動作可能に結合することができる。例えばスキャナ１３０ｃは、カウンタをリセット又はラッチすること、入力レジスタをラッチすること、出力レジスタを設定又はクリアすること、或いはエントリを送信キュー３４内にロードすることが可能である。複数スキャナの場合、競合を処理する様々な方法が使用可能である。例えばＯＲゲートによって、入力競合のリセット／ラッチ／設定／クリアが処理可能である。送信キュー３４はスキャナ１３０ｃに専用とすることが可能であり、データを管理するためのそれ独自の回路プロセスを有することが可能である。スキャナ１３０ｃは、別の方法として、送信キュー３４を（場合によっては他のスキャナ１３０ｃと）共有することが可能であり、回路プロセスはキュー３４の所有を管理することが可能である。
【００９０】
[0098]  いくつかのケースでは、アクション１４４ｃは、アクション・エンジン１１０ｃの外部にある１つ又は複数のデバイスに対して、（ＴＣＰ／ＩＰパケットなどの様々なパケット・モード・コンピュータ・ネットワーク内で使用されるような）データ・パケットとして（例えばアクション・エンジンの１つ又は複数の通信インターフェースを介して）実行される。アクション１４４ｃに関する命令を送信するためにデータ・パケットが使用される実装では、いくつかの実施形態において、こうしたパケットのコンテンツは、命令自体のみならず、ある程度命令に関連する追加のデータ（例えばメタデータ）、命令に対応する条件のセット、及び／又は、動的環境の１つ又は複数の他の態様も含むことができる。追加のデータは、イベント・テーブル・レジスタ１４０ｃに記憶されたインデックスによって参照される場所で、ハウスキーピングＣＰＵ１９０によって入力可能な、アドレス情報（例えばイーサネット媒体アクセス制御（ＭＡＣ）アドレス・ヘッダ）及び／又はペイロード・バッファを含むことができるが、これらに限定されない。
【００９１】
[0099]  いくつかの実装において、アクション・エンジン１１０ｃは、パケット・ペイロードに含めるために（入力バス１０２に結合された様々な情報ソースの監視に基づいて、及び／又は、イベント・テーブル１１２に加えてメモリ内に記憶可能な様々な情報に基づいて）こうしたデータを選択又は生成する。例えば、所与の条件１４２ｃが満たされた場合、スキャナ１３０ｃは、対応するレジスタ１４０ｃに記憶されたインデックスに基づいて、対応するペイロード・バッファを選択した後、対応するペイロード・バッファを送信キュー３４にコピーすることができる。他のケースでは、データは、組み立て又は検査ラインを通じて追跡されている部品の番号を含むことができる。別の方法として、データは、１つ又は複数のデータ・ソースに関する情報（例えば、センサ４０として働き、評価にイメージ情報を提供する、カメラの位置及び／又は向き）を含むことが可能であり、かつ／又は、データは、（イベント・テーブルに記憶された条件のセットと比較される）状態入力自体のいくつかの態様に関連付けられること及び／又はそれらを表すことが可能である。
【００９２】
[0100]  マスタ・プロセッサ（「ハウスキーピングＣＰＵ」）−プログラミング及び動作
【００９３】
[0101]  図６に示されるような、アクション・エンジン１１０ｃ及び様々な他のコンポーネントを使用するシステム構成の実施形態では、ハウスキーピングＣＰＵ１９０は、イベント・テーブル１１２内に条件１４２ｃ及び命令１４４ｃをロード及び維持する。いくつかのケースでは、ハウスキーピングＣＰＵ１９０は、動的環境の進化（すなわち経時的な条件の変化）に応答して、イベント・テーブル１１２内の条件１４２ｃ及び命令１４４ｃのいくつか又はすべてを置換することができる。アクション・エンジン１１０ｃは、（例えば、アクション・エンジンが特定の条件の評価を委託されている期間中）必ずしもハウスキーピングＣＰＵ１９０からのリソースを必要とせずに、動的環境の条件を表す入力信号に「直接」（例えば、ＣＰＵ１９０の介入なしに、自律的に）応答することができるため、ハウスキーピングＣＰＵ１９０は、これらの特定の条件を評価することに関するいずれの処理負担も事実上免除されたままであり、したがって他のプロセスに対処する（例えば、アクション・エンジン１１０ｃにとって、それ自体が実行することが不可能又は実際的でない可能性があるテスト及びアクションを実行する）ためにハウスキーピングＣＰＵ１９０が使用可能である。
【００９４】
[0102]  所与の期間中に、特定の条件を評価することをアクション・エンジン１１０ｃに委託すること（又はより一般的には、１つ又は複数の条件を評価するタスクを１つ又は複数のコプロセッサに課すこと）に関して、一実施形態では、ハウスキーピングＣＰＵ１９０は、時間の経過（例えば、既知の期間、又は、今後の外部入力の集合又は監視される条件の特定のシーケンスを条件としている場合に生じる可能性のある未知の期間の、いずれか）を条件としていることによって区別される、別個の（例えば直交）手続きステップに、特定用途向け機械調整アルゴリズムを分離することによって、タスクをコプロセッサに割り振るように構成される。このため、図６を再度参照すると、ハウスキーピングＣＰＵ又はマスタ・プロセッサ１９０は、動的環境の条件を表す入力信号６６を受信するための、１つ又は複数の通信インターフェース１９２及び／又は１つ又は複数の入力／出力（Ｉ／Ｏ）ポート、並びに、処理ユニット１９４がアクション・エンジン（又はより一般的には、様々な実施形態に従った１つ又は複数のコプロセッサ）を制御するための直交手続きステップを実装するために、プロセッサ実行可能命令、及び必要に応じて様々なプログラム・データを記憶するための、１つ又は複数の処理ユニット１９４及びメモリ１９６を、含む。
【００９５】
[0103]  本明細書で開示される手続きステップは、（例えばマスタ・プロセッサ１９０の処理ユニット１９４によって）互いに独立して完全に並列に、及び、それらの条件に合致するような（例えば、所与の手続きステップを開始するために、マスタ・プロセッサ１９０又はアクション・エンジン１１０ｃのいずれかによって特定の条件が評価される）任意の順序で、実行可能である。各手続きステップは、以下のうちの１つ又は複数を含むことができる。１）１つ又は複数のプロセス、或いは１つ又は複数のプロセスのインスタンスの開始、２）１つ又は複数のプロセス、或いは１つ又は複数のプロセスのインスタンスの停止、３）１つ又は複数の数学的変換の実行、４）１つ又は複数の出力の提示、５）例えば、ハウスキーピング・プロセッサ１９０と１つ又は複数のアクション・エンジン１１０ｃとの間、アクション・エンジン１１０ｃ間、動的環境内のデバイスへ、及び任意の他の指定された宛先への、１つ又は複数のメッセージの伝送、６）複数のプロセスがプログラム・コードの所望のセクションからの相互排除を保証できるようにするためのバイナリ・セマフォの獲得又は解除、７）入力及びカウンタ等の周辺装置の状態のラッチ、及び、８）プロセス間の同期及び通信に対する「フラグ」変数の設定又はクリア。（フラグ変数は、マスタ・プロセッサのメモリに記憶された変数とは対照的に、イベント・テーブル・スキャナがアクセスできるレジスタ周辺装置によって実装されるブール変数とすることができる。）
【００９６】
[0104]  本発明の一実施形態において、
マスタ・プロセッサ１９０によるアクセスが可能な不揮発性、持続性コンピュータ読み取り可能媒体上に符号化された、コンピュータ実装可能命令（例えばＳＣＯＲＥ（商標）プログラミング言語で作成）は、各実世界アプリケーションに特有の機械調整タスク（例えば、動的環境における様々な機器を最終的に制御するための、１つ又は複数のコプロセッサ／アクション・エンジンからの出力信号の生成）を記述する。これらの命令が、場合によっては１つ又は複数のアクション・エンジン１１０ｃ及び／又は１つ又は複数のコプロセッサを使用して、マスタ・プロセッサ１９０に、１つ又は複数のプロセス、又は状態機械を実装させる。各プロセスは、同じシステムによって、並列に、順番に、又はその両方で、複数回実装されることも可能である。所与のプロセスの同時に実行されるコピーは、プロセスの「インスタンス」と呼ばれ、各インスタンスは、アクション・エンジン１１０ｃ又は異なるコプロセッサ内の異なるスロット１４０又はスロットのセットによって実行される。
【００９７】
[0105]  各プロセスは状態機械とみなすことが可能であり、状態機械内の各状態は動的環境の特定条件に対応する。プロセス（状態機械）は、１回実行されるワンショット・プロセス、及び、割り込みなしに（例えば反復的に）実行される連続プロセスを含む。ワンショット・プロセス及び連続プロセスはどちらも、例えば、マスタ・プロセッサ１９０又は他のソースからのコマンドに応答して、或いはコンピュータ実装可能命令のシーケンス内の所定の地点に到達すると、完了前に停止又は終了することができる。
【００９８】
[0106]  各状態機械は１つ又は複数の状態を含み、そのそれぞれがアクション・エンジン／コプロセッサによって実行される「待機」ステートメントとして実装可能であり、その間、アクション・エンジン／コプロセッサは、特定の条件の発生について動的環境を監視する。重要な一態様では、コンピュータ実装可能命令は、満たされた場合、１つ又は複数のアクションの実行と、条件に合致した旨のマスタ・プロセッサへの通知とをトリガする引数としての動的環境の１つ又は複数の条件を有する、「待機」ステートメントの特定の定義を含む。「待機」ステートメントは、本質的には、１つ又は複数の実世界条件に合致した場合に１つ又は複数のアクションが実行されることを指定する。ハウスキーピング・プロセッサ１９０は、アクション・エンジンに対するアクション・エンジンの動作に適合する、待機ステートメント条件及び関連付けられたアクションをオフロードすることができる。処理ユニット１９４及びマスタ・プロセッサ１９０によって実行されるようにコンパイルされたプログラミング言語に従い、待機ステートメント間の命令ブロックは、次の待機ステートメントまで、アクション・エンジン／コプロセッサ及び／又はマスタ・プロセッサ１９０によって実行される。例えばアクション・エンジンは、それらのアクションがコプロセッサのアクション命令コード（opcode）に適合するという条件で、待機ステートメントに直接従う１つ又は複数のアクションを実行することができる。
【００９９】
[0107]  少なくとも１つの実装において、待機ステートメントは、条件節が満たされるまでプロセスの進行を休止させる。これによってマスタ・プロセッサ１９０は、各プロセスの現在の待機ステートメント条件を照会すること、及びその条件が満たされた場合にプロセスを続行することによって、プロセスをスケジューリングすることができる。待機ステートメントは「wait for <Boolean-expression>」の形式を有することが可能であり、ここで<Boolean-expression>は動的環境の条件を表す。サブルーチン呼び出しは、ステートメントの条件を評価するために望ましいように作成可能である。例えば、条件はブール・カウンタ条件の評価を含むことができる。カウンタ変数には名前によってアクセス可能であり、オプションでカウンタ名は先行するキーワード・カウンタを伴う。カウンタ比較は、部品検出信号が生成された時のベルト・ポジションなどの、初期値から実行可能である。自動的に宣言されるカウンタ時間を使用して、持続時間を精密に（例えばマイクロ秒の精度で）比較することも可能である。いくつかの例は以下を含む（ハッシュ記号「＃」はコメントを示す）。
【数１】
2020074166.tif 000003
「from」キーワードは、カウンタ・リセットが望ましくない場合に、開発者がアプリケーションに関するカウンタのロールオーバを気にする必要性を除去する。
【０１００】
[0108]  「wait for <duration-expression>」のように引数<duration-expression>を使用することで、特定の期間が経過するまで待機するために待機ステートメントを使用することも可能である。この期間は、ミリ秒単位の時間、他のプロセスが必要とする期間などの相対期間、又は変数として表される時間などの、絶対値として表すことが可能である。式がサブルーチンの呼び出し又は変数値の評価を含む場合、それらの変数値は、待機ステートメントが最初に処理された場合のみ評価される。いくつかの例は以下を含む。
【数２】
2020074166.tif 000004
【０１０１】
[0109]  待機ステートメントは、「wait for <edge> of input <input>」のように、特定の入力の立ち上がりエッジ又は立ち下がりエッジを待機するためにも使用可能である。与えられる入力は、以前に宣言された入力インデックス又は名前付き入力のいずれかとすることができる。複数の入力は、それらのいずれか１つが条件を満たすと、エッジと共に与えることができる。名前付き及びインデックス付き入力は、入力のＯＲリスト内で混合可能である。複数の入力は、ＯＲキーワード又はコンマのいずれかによって分離可能である。入力インデックスは０から始まる。いくつかの例は以下を含む。
【数３】
2020074166.tif 000005
【０１０２】
[0110]  待機ステートメントは、「wait for <state> input(s) <input-list>」のように、１つ又は複数の入力が所望の状態（例えば設定状態又はクリア状態）に変更するのを待機するためにも使用可能である。「ＡＮＤ」キーワードは、条件を満たすためには、すべての入力が所望の状態であることが必要なことを示すために使用可能である。同様に、「ＯＲ」キーワードは、入力のうちのいずれかが所望の状態に達した場合に条件が満たされることを示すことができる。いくつかの例は以下を含む。
【数４】
2020074166.tif 000006
【０１０３】
[0111]  待機ステートメントは、「wait for <state> flag(s) <flag-list>」のように、１つ又は複数のフラグが設定又はクリアされるのを待機するために使用可能である。これは、上記のように１つ又は複数の入力が設定又はクリアされるのを待機することに類似している。複数のフラグを与えることが可能であり、「flag」キーワードは、読みやすくするために複数形で使用可能である。フラグは宣言されたフラグ変数で示される。いくつかの例は以下を含む。
【数５】
2020074166.tif 000007
【０１０４】
[0112]  待機ステートメントは、「wait for trigger ladder <integer-expression>」のように、１つ又は複数のトリガ・ラダー（trigger ladder）が発動（fire）するのを待機するために使用可能である。トリガ・ラダーは、そのインデックスで指定可能であり、トリガ・ラダー・インデックスは０で始まる。例は以下を含む。
【数６】
2020074166.tif 000008
【０１０５】
[0113]  他のタイプの待機ステートメントは以下を含むが、これらに限定されない。
・「wait for decreasing counter <counter>」のように直角位相符号器カウンタが減少するのを待機する。これは、部品検出入力の立ち上がりエッジなどの他の条件と共に使用可能である。
・「wait for increasing counter <counter>」のように直角位相符号器カウンタが増加するのを待機する。これも、部品検出入力の立ち上がりエッジなどの他の条件と共に使用可能である。
・「wait for send (sender) to finish」のように、同じプロセス内の前の送信ステートメントが伝送を完了するのを待機する。例えば、進行中の伝送についてペイロードの破損を避けるために、プロセスがペイロードを修正する前にイーサネットSureSync（商標）イベント伝送が終了するのを待機するために使用可能である。
・「wait for message」のように、コプロセッサ又はアクション・エンジン内のイベント・パケット受信器ポートにメッセージが到達するのを待機する。送信側デバイスのデバイスＩＤは、構成の電力内に記憶するか、又はホスト・コンピュータによってランタイム時に構成することが可能である。イベント送信者が関係する場合、待機ステートメントの後にメッセージ・ポート値をオンに切り換える「if-else if」ステートメントが続くことが可能である。ある実施形態では、メッセージを待機するプロセスは何も待機しない。これにより、プロセスを連続して実行させるか、又はメッセージを待機させることが可能であり、次にスケジューラは、受信したメッセージをプロセスに与えることが可能である。スケジューラが受信器周辺装置からメッセージを読み取ったが、メッセージを待機しているプロセスがない場合、メッセージは破棄することができる。
【０１０６】
[0114]  複数の条件を組み合わせて、待機ステートメントが完了するまでにすべてが同時に満たされなければならないようにすることができる。これは、待機ステートメント内の「ｆｏｒ」節と「ＡＮＤ」キーワードとを組み合わせることによって実行可能である。例は以下を含む。
【数７】
2020074166.tif 000009
いくつかのインスタンスにおいて、アクション・エンジン／コプロセッサは、すべての未処理のメッセージ送信が完了するまで、待機ステートメントを実行しない場合がある。メッセージの肯定応答／肯定応答ハンドシェイクなし（no acknowledgement handshake）を実行する際に高レイテンシーを有する可能性のある、１×１デバイスでの通信の場合、この結果、ミリ秒を超える遅延を生じさせる可能性がある。これが望ましくない場合、別々のワンショット・プロセスを使用してメッセージを送信し、主プロセスからこのレイテンシーを除去することができる。
【０１０７】
[0115]  一般に、マスタ・プロセッサ１９０は、可能な限り多くの条件をアクション・エンジン１１０ｃ及び／又はコプロセッサに委任する。典型的には、マスタ・プロセッサ１９０は、アクション・エンジン１１０ｃのイベント・テーブル１１２内の各スロット１４０に、及び／又は各コプロセッサに、１つの条件を割り当てる。命令の初期コンパイル、所望のレイテンシー、アクション・エンジン１１０ｃ及びコプロセッサの機能、条件自体、及び／又はそれ自体の機能に基づいて、それぞれのスロット１４０及び／又はコプロセッサに条件を割り当てることができる。例えばマスタ・プロセッサ１９０は、動的環境内で複数の条件のうちの第１のサブセットが発生することが予測される期間、動的環境内で複数の条件が発生することが予測される特定のシーケンス、動的環境内で実行された少なくとも１つの以前のアクション、動的環境の現在の状態、マスタ・プロセッサの応答時間、及び、少なくとも１つのコプロセッサの少なくとも１つの属性（例えば、機能状況、処理速度、メモリ・サイズ、入力信号数、入力信号タイプ、出力信号数、及び出力信号タイプ）のうちの、少なくとも１つに基づいて、特定のコプロセッサによる評価に関する条件の第１のサブセットを決定することができる。いくつかの例では、コプロセッサは、条件の何らかの固定最大数よりも少ない条件数を評価するように構成され、これは、動的環境内で必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づくことが可能である。
【０１０８】
[0116]  マスタ・プロセッサは、例えば動的環境の進化、新しい命令、及び／又は以前記憶された命令に応答して、条件を動的に再割り当てすることもできる。アクション・エンジン１１０ｃ及び／又はコプロセッサに条件を委任することによって、マスタ・プロセッサ１９０は、連続して条件を監視する代わりに、他の処理タスクを実行することができる。例えばマスタ・プロセッサは、初回に、条件の第１のサブセットのみを評価するように、及び、条件の第１のサブセットが満たされた場合、複数のアクションのうちの第１のアクションを表す制御情報を提供するように、所与のコプロセッサを構成することができる。その後マスタ・プロセッサは、２回目に、条件の第２のサブセットのみを評価するように、及び、条件の第２のサブセットが満たされた場合、他のアクションを表す追加の制御情報を提供するように、コプロセッサを再構成する。いくつかのケースでは、マスタ・プロセッサは、条件の第１のサブセットが満たされたか否かに少なくとも部分的に基づいて、条件の第２のサブセットを決定することができる。これらのケースの少なくとも１つにおいて、マスタ・プロセッサは、動的環境内で条件の第２のサブセットが発生することが予測される期間、動的環境内で条件が発生することが予測される特定のシーケンス、動的環境の現在の状態、動的環境内で実行された少なくとも１つの以前のアクション、及び、マスタ・プロセッサの応答時間のうちの、少なくとも１つに基づいて、条件の第２のサブセットを決定する。マスタ・プロセッサは、コプロセッサの機能状況（例えばアイドル、アクティブなど）、コプロセッサによって処理された入力信号の第１の数、コプロセッサによって処理された入力信号の第１のタイプ、コプロセッサによって処理された出力信号の第２の数、及び、コプロセッサによって処理された出力信号の第２のタイプを含むが、これらに限定されない、コプロセッサの属性のうちの少なくとも１つに基づいて、条件の第２のサブセットを決定することができる。
【０１０９】
[0117]  一態様では、マスタ・プロセッサ１９０は、最適化コンパイラ（図示せず）からのコンパイル済みコンピュータ実装可能命令に従って、条件を（及び場合によってはアクションも）どのように委任するかを決定する。当業者であれば理解されるように、コンパイラは、（例えば、ＳＣＯＲＥ（商標）プログラミング言語での）ユーザ作成ソース・コードを、マスタ・プロセッサ、アクション・エンジン、及び／又はコプロセッサによって実行可能な、オブジェクト・コードなどのターゲット言語に変換する。この変換を実行する場合、コンパイラは、ソース・コード内に提示された順序でソース・コードをコンパイルし、同様又はほぼ類似の順序でオブジェクト・コードを生成することができる。
【０１１０】
[0118]  コンパイラは、ソース・コードをコンパイルすることによって、例えば状態（待機ステートメント／条件）を接続するエッジ（アクション）に沿って状態から状態へと進むことによって生成される、状態機械を分析することも可能である。一例では、ユーザは、例えばコマンドライン引数をコンパイラに提供することによって、使用可能なアクション・エンジン及び／又はコプロセッサのプロファイルをコンパイラに供給する。コンパイラはこのプロファイルを使用して、コンパイル済みオブジェクト・コード内のある条件及びあるアクションを、使用可能なアクション・エンジン及び／又はコプロセッサの機能内として指定する。マスタ・プロセッサは、これらの条件を（及び場合によってはアクションも）、コンパイル済みオブジェクト・コード内に指定されたアクション・エンジン又はコプロセッサに割り当てることができる。いくつかの実施形態において、コンパイラは、指定された条件（及びアクション）へのアクション・エンジン／コプロセッサのリソースのこれらの割り振りをコンパイル時に決定し、これらの割り振りは変更されないままである。
【０１１１】
[0119]  他の実施形態では、マスタ・プロセッサは、例えば動的環境の進化或いはシステム又はコンポーネント状況における変化に応答して、アクション・エンジン／コプロセッサのリソースを指定された条件（及びアクション）に動的に割り振ることができる。こうした動的環境において、マスタ・プロセッサは、使用可能なアクション・エンジン／コプロセッサのリソースのプロファイルを、作成及び／又は維持することができる。例えばマスタ・プロセッサは、動作可能に結合されたアクション・エンジン／コプロセッサのデバイスをポーリングすること、動作可能に結合されたデバイスから状況更新を受信すること、及び／又は、コマンドライン引数又は任意の他の適切なインターフェースを介してユーザからプロファイルを受信することによって、使用可能なアクション・エンジン／コプロセッサのリソースに関する情報を取得することができる。
【０１１２】
[0120]  マスタ・プロセッサ１９０は、アクション・エンジン１１０ｃに全体又は一部が委任された状況、及び、それ自体について予約している状況を含む、プロセス（状態機械）のリストを、作成及び維持することも可能である。動作時に、マスタ・プロセッサ１９０は、このリストを使用して、システムによって実装された状態機械のそれぞれを進行させる。例えば所与のコプロセッサに、特定の条件（例えば、組み立てライン内の指定されたポイントへの部品の到着）に関して動的環境を監視するタスクを課すことができる。次にプロセスは、条件に関して動的環境を監視する「待機」状態に入る。コプロセッサが条件に合致した（例えば部品が指定されたポイントに到着した）ものと決定すると、プロセスは待機状態を出て、所定のアクション（例えばカメラにその部品の写真を撮るように命令する）を実行する。コプロセッサは、通知信号（略して「通知」）をマスタ・プロセッサ１９０に送信することによっても、その条件に合致したことをマスタ・プロセッサ１９０に通知する。例えばコプロセッサは、動的環境の特定の条件がコプロセッサによって監視された条件と合致した場合に合致信号を生成し、この合致信号を通知信号としてマスタ・プロセッサに提供することができる。
【０１１３】
[0121]  条件に合致した旨の通知信号（合致信号）をコプロセッサから受信すると、マスタ・プロセッサ１９０は、コプロセッサによって実装されたものを含む、状態機械のそのリストに関する通知を待機しているそれらの状態機械を進行させる。状態機械に依存して、マスタ・プロセッサ１９０は条件に合致したことに気付き、コプロセッサにプロセスの実装を続行させることが可能であるか、又は、コプロセッサによって実装された状態機械（プロセス）を休止して、コプロセッサに他の状態機械を実装させることができる。通知を使用して、システムによって実装された他の状態機械を開始、休止、又は信号させることも可能である。
【０１１４】
[0122]  要約すると、いくつかの実装において、単一のプロセッサについてコプロセッサによって評価された待機ステートメント条件は、ブール論理と組み合わされたいくつかの下位条件（sub-condition）を有することが可能であり、その後に、全体としての条件及び／又は下位条件を満たすと実行されることになる、１つ又は複数の手続きステップが続き、これは、コプロセッサが所与の時点で単一のプロセス・インスタンスに対して実行するように委託されるものである。条件が満たされアクションが完了すると、コプロセッサはマスタ・プロセッサに通知し、プロセス内の次の待機ステートメントについてコプロセッサに再委託することができる。
【０１１５】
[0123]  各状態（条件）は、少なくとも１つの特定のアクションに関連付けることができる。可能であればマスタ・プロセッサ１９０は同様に、特定の条件を監視するために割り当てられた同じスロット１４０又はコプロセッサに特定の条件に関連付けられたアクションを委任する。いくつかの実施形態では、マスタ・プロセッサ１９０は、入力及び出力に関するアクションをアクション・エンジン１１０ｃ及び／又はコプロセッサに委任する。これらのアクションは、パケットの送信、出力の設定、出力のクリア、出力の追加、カウンタのラッチ、フラグの設定、フラグのクリア、セマフォの獲得、セマフォの解除、及びノー・オペレーション（no-op）を含むことができるが、これらに限定されない。いくつかのケースでは、マスタ・プロセッサ１９０は、関連付けられた条件をかん逸するために割り当てられたスロット１４０又はコプロセッサの機能に基づいて、アクションを委任する。関連付けアクションを実行するために、関連付けられたアクション及びスロット１４０又はコプロセッサの機能に基づいて、スロット１４０又はコプロセッサに条件を割り当てることも可能である。
【０１１６】
[0124]  マスタ・プロセッサ１９０は、それ自体に対して関連付けられたアクションの実行を予約しながら、スロット１４０又はコプロセッサに条件を委任することも可能である。例えばマスタ・プロセッサ１９０は、メモリ内への情報の記憶、メモリからの情報の取り出し、メモリ内の変数の増分、及びメモリ内に記憶された数に関する算術を含むが、これらに限定されない、メモリ内の情報へのアクセスに関するすべてのアクションを実行することができる。マスタ・プロセッサ１９０は、必要に応じて、又は所望に応じて、他のタイプのアクションも同様に実行することが可能である。
【０１１７】
[0125]  以下に、図６に示されたシステムを含む、本明細書で開示されたシステム及びデバイスを使用する実装に適したプロセス（状態機械）及びサブプロセスのいくつかの擬似コード例を示す。ハッシュ記号（＃）は、各例におけるコメントを示す。
【０１１８】
[0126]  例１：連続する１状態プロセス
【数８】
2020074166.tif 000010
【０１１９】
[0127]  例１は、「send_on_edge」と呼ばれる連続プロセスであり、コプロセッサには、入力ｉの立ち上がりエッジ（条件）を待機すること、及び条件が満たされた場合に他のデバイスにパケット（アクション）を送信することの、タスクが課せられる。コプロセッサは、立ち上がりエッジの検出時に、その条件に合致したことをマスタ・プロセッサに更に通知する。この例では、コプロセッサがパケットを送信すると、マスタ・プロセッサは同じ条件及びアクションの命令コード・ペアをコプロセッサのメモリ内に再ロードする。コプロセッサは、コプロセッサが例えばマスタ・プロセッサ１９０によって休止又は割り込みされるまで、入力ｉの立ち上がりエッジの監視を続行する。このプロセスは、８回（ｉ＝０．．．７）実装され、各インスタンスは、アクション・エンジン内の別々のスロット上、又は対応するコプロセッサ上で、実行している。
【０１２０】
[0128]  例２：連続する２状態プロセス
【数９】
2020074166.tif 000011
【０１２１】
[0129]  例２は、「send_on_pulse」と呼ばれる連続プロセスであり、コプロセッサは、動的環境の進化に応じて２つの状態を繰り返す。第１の状態では、コプロセッサは、例１のように出力ｉで現れるために立ち上がりエッジを待機する（これはこのプロセスの第１の条件）。コプロセッサは入力を検出すると、他のデバイスにパケットを送信し、上記のように第１の条件に合致した旨をマスタ・プロセッサに通知する。その第２の状態（「wait for 100ms」）に進む前に他のアクションも実行し、出力ｉ＋８を設定する。この第２の状態において、コプロセッサは第２の条件、１００ｍｓの経過の発生を待機する。この条件に合致する（すなわち１００ｍｓが経過する）と、コプロセッサはその第２のアクション、出力ｉ＋８のクリアを実行し、第２の条件に合致した旨をマスタ・プロセッサに通知する。その後第１の状態に戻り、第１の条件が再度発生するのを待機する。例１のプロセスと同様に、例２のプロセスは、例えばマスタ・プロセッサ１９０によって休止又は割り込みされるまで続行する。これも８回（ｉ＝０．．．７）実装され、各インスタンスは、アクション・エンジン内の別々のスロット・ペア上、又は対応するコプロセッサ上で、実行している。
【０１２２】
[0130]  例２は、１つの条件に関連付けられた２つのアクションを含むことから、アクション・エンジン内の少なくとも２つのスロットで実行され、「send sender i」（アクション番号１ａ）及び「set output i+8」（アクション番号１ｂ）の両方が、「rising edge of input i」（条件番号１）を満たすことによってトリガされる。条件番号１及びアクション番号１は第１のスロット内にロードされ、アクション番号１ｂは、第１のスロットに連結された第２のスロットにロードされる。第２のスロットには「counter[0]>=0」として実装される「do always」条件もロードされ、これによって条件番号１に合致した場合は必ず実行することになる（スロットの「連結」についての以下のより詳細な考察を参照されたい）。
【０１２３】
[0131]  例３：マスタ・プロセッサ・アクションを用いる連続プロセス
【数１０】
2020074166.tif 000012
【０１２４】
[0132]  例３は、「send_sequence」と題する他の連続プロセスであり、コプロセッサは条件を監視し、コプロセッサ及びマスタ・プロセッサはそれぞれが条件の検出に応答してアクションを実行する。このケースでは、プロセスは、「sequence」と命名された静的変数（「static unsigned integer sequence」）の宣言及びあらゆるイベント・パケットと共に出される１６バイトのペイロードｐで開始する。これらが初期化されると、マスタ・プロセッサは、ペイロード内のワード（「p.dword」）を「sequence」変数の値に設定する。次にコプロセッサは、入力ｉの立ち上がりエッジに関して動的環境を監視する待機状態に入る。立ち上がりエッジを検出した場合、その条件に合致したことをマスタ・プロセッサに通知し、ペイロードを送信して、ペイロードを受け取るカメラ又は他のデバイスをトリガすることができる。
【０１２５】
[0133]  条件に合致した旨の通知を受信すると、マスタ・プロセッサは変数「sequence」を増分する。マスタ・プロセッサは、変数の増分がメモリ内の情報へのアクセスを含むためにこのアクションを実行し、これはアクション・エンジン又はコプロセッサの機能をしばしば超える。更にマスタ・プロセッサは、状態機械をその次の状態に進行させ、ここでコプロセッサは送信側がそのアクションを完了するのを待機する。コプロセッサはこの条件の満足を検出した場合、対応するアクションを実行する。このケースでは、対応するアクションは「ノー・オペレーション」又は「no-op」であるため、コードは特定のコマンドを含まない。コプロセッサは、条件に合致したこともマスタ・プロセッサに通知し、マスタ・プロセッサは、この通知に応答して状態機械をその次の状態に進行させる（ここでは「wait for rising edge of input i」状態に戻る）。例１及び２のプロセスと同様に、例３のプロセスは、休止又は割り込みされ、８つの別々のインスタンスで実装されるまで、実行する。
【０１２６】
[0134]  例３では、条件番号２（「wait for sender to finish」）は、送信が完了されるまで、手続きステートメントがペイロード・バッファ（例３のｐ）を上書きするのを防ぐことが意図され、これは通信プロトコル・レイテンシーにおけるネットワーク競合及び分散（variance）によって、非決定性期間内に発生する。これは、送信アクションが使用される場合、コプロセッサが所望の物理ネットワーク・リソースにアクセスできない場合があるからである。（ａ）処理前の記憶用にペイロード及びポート数を記憶するためにキューを追加すること、（ｂ）送信が完了するまでマスタ・プロセッサへの通知を保持すること、及び、（ｃ）送信が完了した旨のマスタ・プロセッサへの他の通知を追加し、条件を満たしていること及びアクションの完了をマスタ・プロセッサに即時に通知することを含むが、これらに限定されない、アクセス問題に対処するためのいくつかの可能な方法が存在する。オプション（ａ）は、ＦＰＧＡのリソース制約により、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）の実装において最適でない場合がある。オプション（ｂ）は、
非リアルタイム・ピア（例えば、MS Windows（登録商標）を実行するホスト・コンピュータ）を用いるイベント・メッセージ・プロトコルでのハンドシェイキング速度が遅いことによって、送信完了に最高１ｍｓを要する可能性があるため、余分な遅延を導入する場合がある。オプション（ｃ）は、待機ステートメント直後にマスタ・プロセッサがコプロセッサ非対応アクションを実行できるようにするが、送信が完了するまでマスタ・プロセッサがイベント・テーブル・スロットを修正するのを防ぐ。いくつかの実装において、待機ステートメント前にすべての送信ステートメントが完了するまで、スロットを上書きすることができないため、各待機ステートメントは暗黙の「wait for send to finish」を有する。
【０１２７】
[0135]  以下の例４に示されるケースを含む、いくつかのケースでは、マスタ・プロセッサは、状態機械をどのように進行させるかを決定するために、「ｉｆ」ステートメントなどの「フロー制御ステートメント」を評価する。例えば、評価は、マスタ・プロセッサに１つ又は複数の状態マシンを特定の第１の状態に進行させる第１の結果、又は、マスタ・プロセッサに１つ又は複数の状態マシンを特定の第２の状態に進行させる第２の結果を、生み出すことができる。フロー制御ステートメントを使用して、進行中のプロセスを割り込み、休止、又は停止すること、及び他のプロセスを開始することを、決定することも可能である。
【０１２８】
[0136]  例４：フロー制御ステートメント
【数１１】
2020074166.tif 000013
【０１２９】
[0137]  例４は、フロー制御ステートメントを含むサブプロセスである。例４のサブプロセスは、４つの状態を含み、それぞれが、「待機」ステートメント及び実世界環境の特定の条件によって示され、例えば、部品の現在のポジションからの所定の値より大きいか又は等しい部品ポジション・カウンタである（「counter partPosition >= rejectDistance from position」）。例１〜３のように、アクション・エンジン又はコプロセッサは各条件を評価し、条件に合致した場合、マスタ・プロセッサに通知し、no-op、出力のクリア、又は出力の設定などの、適切なアクションを実行する。マスタ・プロセッサは状態機械を進行させ、オプションで、通知に応答して動作する。
【０１３０】
[0138]  例４では、マスタ・プロセッサは、２つの異なる検査ステーションで部品が検査に合格したか否かに関するフロー・ステートメントを評価することによって、状態機械のフローを制御する。（上記にリストされていない）プロセス全体の他の部分において、検査ステーションは部品の品質に関して「投票」し、マスタ・プロセッサは、検査ステーションの出力に応答して変数「votes」を増分する。同時に、コプロセッサは部品のポジションを監視する。コプロセッサは部品が特定のポジションに達したことを感知すると、マスタ・プロセッサに通知し、これが通知に応答してフロー制御ステートメントを評価する。マスタ・プロセッサが、部品が検査に不合格であった（例えば「votes」変数が２未満であるか、又は「DoReject」入力が設定されているため）と決定すると、マスタ・プロセッサは障害カウント（「failure_count」）を増分し、「reject」出力を設定することによって、コプロセッサに部品を除去させるか又は除去できるようにする。その後状態機械は、カウンタ時間が指定の期間（「rejectDuration」）に等しいか又はこれを超えるのをコプロセッサが待機する状態に進行する。部品が検査に不合格であった場合、マスタ・プロセッサは、部品ポジションが他の変数（「acceptDistance」）に等しいか又はこれを超えるのをコプロセッサが待機する状態に、状態機械を進行させる。
【０１３１】
[0139]  例３及び４は、変数を設定し、周辺装置、例えばカメラなどを構成するための、宣言ステートメントの使用も示している。宣言は、例３の「sequence」変数、又は例４の（暗黙的に）宣言された「rejectDistance」及び「position」変数のように、マスタ・プロセッサのメモリ内に記憶される変数を設定するために使用可能である。入力０及び１での直角位相カウンタ「partPosition」であるように宣言された、例４の「partPosition」カウンタのようなカウンタ値も設定可能である。入力２の立ち上がりエッジでのパルス・カウンタ「partPosition」であるようにも宣言可能である。
【０１３２】
[0140]  他の宣言は、入力及び出力変数を含む周辺変数を設定することができる。入力はパルス・フィルタを有するように宣言可能である。出力は、パルス幅及び転極（polarity inversion）を有するように宣言可能である。カウンタ及び他の周辺変数の宣言は、マスタ・プロセッサによって実行される命令にコンパイルされ、マスタ・プロセッサは周辺装置の構成レジスタをロードする。プログラム内でカウンタが使用される場合、イベント・テーブルの条件及びアクションは、コンパイラによって割り振られるカウンタにアクセスする。
【０１３３】
[0141]  例５：セットアップ・プロセス
【数１２】
2020074166.tif 000014
【０１３４】
[0142]  例５は、マスタ・プロセッサが特定のプロセスの異なるインスタンスを用いてアクション・エンジン／コプロセッサにタスクを課すために使用する、セットアップ・プロセスである。例１〜４のプロセスとは異なり、例５のプロセスはいずれの条件も含まない。その代わりに、他のプロセス（ここでは例３からの「send_on_sequence」プロセス）の８つのインスタンスを作成する、単純なワンショット・プロセスである。これらのインスタンスはそれぞれ、アクション・エンジン内の対応するスロット上、又は別々のコプロセッサ上で実行する。
【０１３５】
[0143]  様々な実施形態において、任意の言語ステートメント（コンピュータ実装可能命令）がハウスキーピングＣＰＵ１９０上で実行可能であるが、言語ステートメントのより大きいか又は小さいセットも、本明細書で説明される１つ又は複数のアクション・エンジンによって実行可能である。本発明の特定の実施形態のアクション・エンジン上で実行できない任意のステートメントは、ハウスキーピングＣＰＵ１９０上で実行される可能性がある。一般に、特定の実施形態のアクション・エンジン上で実行可能な任意のステートメントは、ハウスキーピングＣＰＵ１９０によってアクション・エンジンに割り振られることになる。ステートメント又はステートメントのグループは、それらの実行に先立った任意の時点でキャンセル可能である。
【０１３６】
[0144]  一実施形態において、コンピュータ実装可能命令は、適切なコンピュータ言語（例えばＳＣＯＲＥ（商標））で記述された任意のプロセスが同時に実行され得ること、及び、所与のプロセスの複数のインスタンスも同時に実行できることを許可する。一態様では、言語は上記でより詳細に説明されたように、条件／アクション・ペアにコンパイルされ、例示の実装では、こうした条件／アクション・ペアは、（例えば、図６のイベント・テーブル１１２及びアクション・エンジン１１０ｃに関連して上記で考察したように）高レート及び固定レートでスキャン可能なイベント・テーブルにアセンブルされる。条件／アクション・ペアは、以下でより詳細に説明されるように連結も可能である。
【０１３７】
[0145]  図６を参照すると、一実施形態において、ハウスキーピングＣＰＵ１９０は、アクション・エンジン１１０ｃの動作に影響又は割り込みすることなく、アクション・エンジン１１０ｃのイベント・テーブル１１２にエントリを追加及び除去することができる。必要であれば、ハウスキーピングＣＰＵのワード・サイズ（例えば３２ビットとすることができる）がイベント・テーブル・レジスタ１４０ｃの幅（例えば６４ビットとすることができる）よりも小さいことにより、所与のレジスタ１４０ｃは、第１に入力条件をゼロに書き込み、次にアクションを書き込むことによって、部分的に作成可能である。現在使用されていないレジスタ１４０ｃは、決して満たすことができない「未使用」条件付き演算を示す第１ゼロ・ワード（zero first word）を有することができる。スキャナ１３０ｃは、「未使用」条件を有するいずれのイベント・テーブル条件１４２ｃもそのスキャン時に考慮しないため、部分的に書き込まれたイベント・テーブル・レジスタ１４０ｃ内の命令１４４ｃは、ハウスキーピングＣＰＵ１９０が部分的に書き込まれたイベント・テーブル・レジスタ１４０ｃの書き込みを完了する前に実行されることはない。
【０１３８】
[0146]  他の態様では、ハウスキーピングＣＰＵ１９０がアクション・エンジン１１０ｃに割り振ることが可能な任意のステートメント又はレジスタ１４０ｃの連結グループは、完全にそれらの中で実行するか、又はまったく実行しない。特に、連結グループを隣接するイベント・テーブル・レジスタ１４０ｃ内に（スキャン方向に関して）最初から最後へとゼロを書き込み、その後、（再度スキャン方向に関して）最後から最初へと新しい条件１４２ｃ及びアクション１４４ｃを書き込むことによって、ハウスキーピングＣＰＵ１９０が連結グループに書き込む間に、たとえスキャナ１３０ｃが、メモリの対応するセクションのアドレスを複数回通過する場合であっても、いかなる条件／アクション・ペアも（例えばアクション・エンジン１１０ｃのスキャナ１３０ｃによって）処理されることはなく、スキャナの規則は、例えばイベント・テーブル・レジスタの独自の入力条件に合致する場合であっても、そのチェーン・ビットが設定されていない次前のイベント・テーブル・レジスタ１４０ｃまで、及びこれを含む、すべての先行するイベント・テーブル・レジスタ１４０ｃのすべての入力条件も合致しない限り、連結グループ内のイベント・テーブル・レジスタ１４０ｃのアクションを実行することはない、というものである。各新しいイベント・テーブル・レジスタ１４０ｃは、ゼロに設定されたイベント・テーブル・レジスタ１４０ｃのセクション内に書き込まれているため、前のイベント・テーブル・レジスタ１４０ｃは有効な入力条件を有さず、このレジスタ１４０ｃも書き込まれたばかりのイベント・テーブル・レジスタ１４０ｃも実行されることはない。
【０１３９】
[0147]  同様に、連結されたイベント・テーブル・レジスタ１４０ｃのセットを最初から最後へと（例えばレジスタ１４０ｃにすべて０又はすべて１で記入することによって）クリアすることによって、及び、各イベント・テーブル・レジスタ１４０ｃに関する入力条件を第１にクリアすることによって始まる各イベント・テーブル・レジスタ１４０ｃの場合、スキャナ１３０ｃがイベント・テーブル・レジスタ１４０ｃに対処しているレートに等しいか又は遅いレートで、ハウスキーピングＣＰＵ１９０は、連結レジスタ１４０ｃのセット全体が実行されるか又は全く実行されないように、特定のコプロセッサ／アクション・エンジンに割り振られた手続きステップに関して、イベント・テーブル・レジスタ１４０ｃのチェーンでさえも置換又はクリアすることができる
【０１４０】
[0148]  マスタ・プロセッサ１９０をプログラミングし、（例えば、処理ユニット１９４及びマスタ・プロセッサ１９０に対して）実行可能コードを提供するためにプログラム言語を効率的にコンパイルするための前述の技法、及び、アクション・エンジン１１０ｃのイベント・テーブル１１２を更新する（又はより一般的には、特定の条件を評価するために１つ又は複数のコプロセッサを「プログラミングする」）ためにマスタ・プロセッサ１９０によって実装される、結果として生じる手続きは、いくつかの固有の利点を生み出す。この方法は、（１つ又は複数のアクション・エンジン又は他のコプロセッサを備えるか又は備えない）任意の汎用プロセッサ上で非常に高速に実行可能な、極度にコンパクトなコード・セットを生成する。しかしながら、図６に示されたアクション・エンジン１１０ｃに関連して、特にスキャナ１３０ｃと共に使用される場合、たとえ動的環境内での条件の進化が、分岐のためのコード実行、並びに／或いは、従来のシステムに対して実行及び／又はキャンセルされることになる機能呼び出しを必要とする場合であっても、これらの技法は、完全に決定性の動作を生み出す。前述の本発明の技法は、複数のサブルーチン（例えばイベント・テーブル・レジスタ１４０ｃのチェーン）が（マスタ・プロセッサ１９０内の）呼び出しプロセスに信号を戻さずに完了することを実行可能にするものであるため、実際にはこれらの遷移は、アクション・エンジン１１０ｃ内のメモリ・ポインタを再配置することなく実行可能である。いずれのループ又はジャンプも有さない命令セットの単純性によって、コプロセッサ／アクション・エンジンのプログラム・スペースのランタイムの決定性が維持される。
【０１４１】
[0149]  ハウスキーピングＣＰＵ１９０は、アクション・エンジンのハウスキーピング専用である必要がないことにも留意されたい。ハウスキーピングは、Ｌｉｎｕｘ又はＷｉｎｄｏｗｓなどの汎用オペレーティング・システム上のプロセス及び／又はデバイス・ドライバによって実行可能である。アクション・エンジンは、カウンタ、デジタル及び／又はアナログのＩ／Ｏインターフェースなどと共に周辺カード（ＰＣＩなど）上に存在可能であり、汎用コンピュータはイベント処理において、本明細書で説明されるアクション・エンジンと協力して作業する場合の特定用途向け埋め込み型コンピュータと同じ精度を達成することができる。アクション・エンジン及び／又は別々のコプロセッサは、１つ又は複数のフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）内で、又は他の適切なプロセッサの集合として、実装することも可能である。
【０１４２】
[0150]  パイプライン化、レイテンシー、及びジッタ
【０１４３】
[0151]  図６に示されたアクション・エンジン１１０ｃの例示の一実装において、スキャナ１３０ｃは、入力信号６６と条件１４２ｃとを比較するための「パイプライン化」技法を実装するように構成される。当業者であれば理解されるように、「パイプライン化」は、計算「パイプ」を形成するために接続された一連のステージに計算を分割することによって、スループットを向上させる計算技法である。パイプの各ステージは、組み立てライン上の作業者に酷似しており、計算のその部分（入力信号６６と条件１４２ｃのセットとの比較）を他のステージと並列に実行する。パイプライン化は、入力信号６６と所与の条件１４２ｃとの比較にどれだけの時間を要するかにかかわらず、各レジスタ１４０ｃ上で費やされる時間が１クロック・サイクルに制限されるように、スキャナ１３０ｃのアクションを加速させる。
【０１４４】
[0152]  アクション・エンジンの「レイテンシー」、すなわち、所与の時点での動的安協の特定の入力状態とイベント・テーブルに含まれる条件の複数のセットとを比較し、入力状態に応答して１つ又は複数の命令を伝送するために必要な期間の、計算に関して、いくつかの例示の実施形態において、こうしたレイテンシーは、アクション・エンジン１１０ｃによって実装されるパイプライン化技法を考慮して導出することができる。例えば、アクション・エンジン１１０ｃが、入力信号６６及び／又は発見された状態変化（上記の段落８９を参照）と条件１４２ｃの特定セットとを比較し、これに応答して１つ又は複数の命令を伝送するのに要する時間は、スキャナが、対応するイベント・テーブル・レジスタ１４０ｃに到達するのに要する時間に、パイプライン内のステージ数に依存する、パイプラインを通過する伝搬時間を加えた時間に等しい。１２８のレジスタ１４０ｃを備えるイベント・テーブル１１２及び、３ステージのパイプラインを備え、１００ＭＨｚでクロック制御されるスキャナ１３０ｃの場合、イベント・テーブル１１２を通じたスキャンの最初に発生するが、イベント・テーブル１１２を通じたスキャンの最後まで使用されない、条件１４２ｃに対応する、入力から出力までの可能な最長時間は、１．３１μｓに、パイプラインを通過する０．０３μｓの伝搬時間（すなわち３クロック・サイクル）を加えた時間である。入力から出力までの可能な最短時間は０．０３０μｓである。したがってアクション・エンジン１１０ｃは、入力信号６６及び／又は発見された状態変化と、イベント・テーブル１１２内のレジスタ１４０ｃの数、パイプライン内のステージの数、及びクロック周波数によって境界が確定される、レイテンシー又は時間遅延を伴う条件１４２ｃのセットとを、比較する。
【０１４５】
[0153]  少数の条件１４２ｃを非常に迅速に評価するためにイベント・テーブル・レジスタ１４０ｃを使用することの追加の利点は、レイテンシーの変動が非常に低いことである。ジッタは、最長レイテンシーと最短レイテンシーとの差異として定義可能である。単一の条件１４２ｃを評価するイベント・テーブル・レジスタ１４０ｃの場合、レイテンシーの変動は最小であり、着信データ及び発信データがどのように伝送されるかに依存して、ゼロに近似する可能性さえある。上記の例において、可能な最長レイテンシーは１．３１μｓであり、可能な最短レイテンシーは約０．０３μｓであり、これは、１．２８μｓのジッタ、又は１スキャン時間に対応する。（入力フィルタの適用、入力状態変化の発見、又は、イーサネット・パケットを介したデータの送受信が、アクション・エンジン１１０ｃとは無関係の可変遅延を招く可能性がある。）
【０１４６】
[0154]  低ジッタは、長い応答遅延は、遅延がかなり反復可能である限り完全に受け入れ可能であり、著しく短い最大レイテンシーは、個々のレイテンシーが著しく変動する場合に受け入れ不可能な、例えばイメージのトリガなどの適用例において特に有用である。機械視覚アプリケーションでは、例えば、ジッタを削減することによって、センサの視野を縮小することが可能であり、更にこれによって、該当するシーンのイメージ解像度をより高くすることができる。高速移動部品をイメージングするための時間ウィンドウが約１０μｓであるが、ジッタはＰＬＣの場合よりもかなり大きい１００μｓである状況を考えてみる。部品のイメージをキャプチャリングするには、部品自体のサイズの１１倍を超えるように視野を増大することによって、実質上１１０μｓを超えるまで時間ウィンドウを拡張する必要があり、これによって部品のイメージング専用のセンサのピクセル数が１１分の１を超えて減少する。これに対して、約２．５μｓのジッタを伴うアクション・エンジン１１０ｃを使用して、部品自体のイメージング専用のセンサのアクティブ領域の約８０％で、同じ部品のイメージを獲得することができる。
【０１４７】
[0155]  条件／アクション・ペアのメモリ構造及び実行
【０１４８】
[0156]  本発明の実施形態は、１つ又は複数の「条件／アクション・ペア」を記憶するための特別なメモリ構造を含むことができる。図６に示されたアクション・エンジン１１０ｃでは、例えば、イベント・テーブル１１２は複数のレジスタ１４０ｃの形の専用メモリを提供し、そのそれぞれが条件／アクション・ペアを、特定のビットシーケンス（図６では一般に、条件１４２ｃ及びアクション又は「命令」１４４ｃとして表される）として記憶する。別の方法として、１つ又は複数のレジスタ１４０ｃは、評価されることになる条件を表す第１のビット数、及び、条件に合致した場合に実行されることになるアクションを表す第２のビット数として配置構成される、複数の隣接するメモリ・レジスタを含むことができる。一般的に言えば、図５及び図６に示されるような様々な実施形態は、所与のレジスタ内でそれぞれの条件／アクション・ペアを何らかのビット配置構成として保持する、１つ又は複数のレジスタ（例えば、図５のレジスタ１４０ｂ、図６のレジスタ１４０ｃ）の形のメモリ構造を含むことができる。
【０１４９】
[0157]  いくつかのインスタンスでは、満たされた特定の条件に対応する所与のアクションは、動的環境内の１つ又は複数のデバイスの制御に関して一切のアクションを実行しない可能性があることを理解されたい。言い換えれば、所与の条件／アクション・ペアに関する可能な１つのアクションは、動的環境内で一切の肯定的アクションを実行しないことになり、本明細書では「no-op」とも呼ばれる。no-opのいくつかのインスタンスでは、以下でより詳細に考察されるように、それにもかかわらずアクション・エンジンは、評価されている特定の条件が満たされているかどうかをマスタ・プロセッサに通知すること、及び／又は、イベント・テーブルの後続のレジスタ内で指定されているように、１つ又は複数の他の条件の評価に移ることが、可能である。
【０１５０】
[0158]  「条件／アクション・ペア」の概念は、本明細書で開示される様々な実施形態に従った多様な方法で実装可能であることも理解されたい。例えばいくつかの実装において、特定の条件／アクション・ペアの条件部分を表すメモリのコンテンツは、所与のレジスタ内にある数の隣接ビットを含むこと、及び／又は、条件部分に必ずしも関係しないレジスタ・コンテンツが介在する所与のレジスタ内に分散されたある数のビットを含むことが可能である。同様に、特定の条件／アクション・ペアのアクション部分を表すメモリのコンテンツは、所与のレジスタ内にある数の隣接ビットを含むこと、及び／又は、アクション部分に必ずしも関係しないレジスタ・コンテンツが介在する所与のレジスタ内に分散されたある数のビットを含むことが可能である。したがって、本明細書で開示される本発明の概念に従い、所与の条件／アクション・ペアを表す所与のメモリ位置／レジスタ内に、多様なコンテンツ編成が企図される。
【０１５１】
[0159]  以下で詳細に考察される一例では、条件／アクション・ペアを含めるためのメモリ構造は、（例えば、単一クロック・サイクルでアクセス及び読み取り可能な）６４ビット・ワード・サイズのレジスタを含むことが可能であり、そのうちのある数のビットは評価されることになる条件１４２ｃを表すか又はこれに関し、そのうちの他の数のビットは、条件が満たされた場合に実行されることになるアクション１４４ｃを表すか又はこれに関する。非限定的な一例では、６４ビット・レジスタは３つの部分に分離され、条件１４２ｃ及びアクション１４４ｃはそれぞれ、これら３つの異なる部分に、１）１６ビット符号なし整数によって表される「命令コード」、２）１６ビットの「アクション・パラメータ」、及び３）３２ビットの「条件オペランド」、として符号化され、アクション・パラメータ及び条件オペランドに含まれる情報は、命令コードに含まれる動作の実装を容易にすることができる。以下の表１は、こうした６４ビット・レジスタの一般的な形式を示し、命令コード部分はビット４８〜６３に表され、アクション・パラメータはビット３２〜４７に表され、条件オペランドはビット０〜３１に表される。
【表１】
2020074166.tif 000015
【０１５２】
[0160]  表１に示された６４ビット・レジスタの命令コード部分に関して、以下の表２は、１６ビット命令コードの異なるフィールドに対して例示のフォーマットを提供する。
【表２】
2020074166.tif 000016
上記の例で、命令コードの４つの最上位ビット（表２でそれぞれ「Ｆ」、「Ｅ」、「Ｄ」、及び「Ｃ」としてラベル付けされた、ビット１５〜１２）は、評価されることになる条件１４２ｃに関する（「ＯＰ」とラベル付けされた）条件タイプ・コードを指定する。次の４つの最上位ビット（表２でそれぞれ「Ｂ」、「Ａ」、「９」、及び「８」としてラベル付けされた、ビット１１〜８）は、アクション１４４ｃに関する（「ＡＣＴ」とラベル付けされた）アクション・オペランドを表す。命令コードの残りのビットは、チェーン・ビットＣ、ＸＯＲビットＸ、通知ビットＮ、満足ビットＳ、最終条件ビットＬ、及び１つ又は複数のカウンタ値ＣＴＲを含み、それぞれについて以下でより詳細に説明する。
【０１５３】
[0161]  この例では、表１を再度参照すると、６４ビット・レジスタのビット０〜３１の３２ビット「条件オペランド」と、命令コードのＯＰフィールド内に指定された条件タイプ・コードとを共に使用して、特定の条件が満たされているかどうかを決定することができる。更に、６４ビット・レジスタのビット３２〜４７の１６ビット「アクション・パラメータ」と、命令コードのＡＣＴフィールド内に指定されたアクション・オペランドとを共に使用して、特定の条件が満たされた場合に実行されることになる対応するアクションを指定することができる。更に、命令コード・フィールドＣ（チェーン）、Ｘ（ＸＯＲ）、及びＣＴＲ（カウンタ）は特定条件の評価に使用可能であり、命令コード・フィールドＮ（通知）、Ｓ（満足）、及びＬ（最終条件）は対応するアクションを指定するために使用可能である。したがって、以下でより詳細に考察するように、表１に示された６４ビット・レジスタのビット／フィールドの第１のセット、すなわちＯＰ、Ｃ、Ｘ、ＣＴＲ、及び「条件オペランド」は、まとめて、６４ビット・レジスタに表された条件／アクション・ペアの条件１４２ｃを定義することが可能であり、同様に、６４ビット・レジスタのビット／フィールドの第２のセット、すなわちＡＣＴ、Ｎ、Ｓ、Ｌ、及び「アクション・パラメータ」は、まとめて、６４ビット・レジスタに表された条件／アクション・ペアのアクション１４４ｃを定義することが可能である。
【０１５４】
[0162]  より具体的に言えば、表２に示された命令コードの条件タイプ・コードＯＰは、監視されることになる条件のタイプ、監視されることになる１つ又は複数の入力信号、及び／又は、条件を満たす任意の監視される入力信号の状態を指定する。いくつかの条件タイプ・コードＯＰの場合、条件を満たすことは、６４ビット・レジスタのビット０〜３１に表される３２ビット「条件オペランド」の１つ又は複数の値に、少なくとも部分的に依存する（上記の表１を参照）。命令コードのＯＰフィールドに提示することが可能な例示の条件タイプ・コードは、以下を含むが、これらに限定されない。
０−レジスタは未使用
１−カウンタ＃ＣＴＲがオペランドより少ないか又は等しい場合、作動する
２−カウンタ＃ＣＴＲがオペランドより多いか又は等しい場合、作動する
３−オペランド［０．．１５］内に設定された任意の入力上で立ち上がりエッジが検出された場合、作動する
４−オペランド［０．．１５］内に設定された任意の入力上で立ち下がりエッジが検出された場合、作動する
５−オペランド［０．．３］内に設定された任意のラダー上でトリガ・ラダーが発動した場合、作動する
６−オペランド［０．．１５］内に設定された任意の入力上に高信号が存在する場合、作動する
７−オペランド［０．．１５］内に設定された任意の入力上に低信号が存在する場合、作動する
８−オペランド［０．．１５］内に設定されたすべての入力上に高信号が存在する場合、作動する
９−オペランド［０．．１５］内に設定されたすべての入力上に低信号が存在する場合、作動する
１０−オペランド［０．．３１］内に設定された任意のフラグ上に設定状態が存在する場合、作動する
１１−オペランド［０．．３１］内に設定された任意のフラグ上にクリア状態が存在する場合、作動する
１２−オペランド［０．．３１］内に設定されたすべてのフラグ上に設定状態が存在する場合、作動する
１３−オペランド［０．．３１］内に設定されたすべてのフラグ上にクリア状態が存在する場合、作動する
１４−カウンタ＃ＣＴＲ指示の場合、作動する（条件［ビット０］：１−＞増分、０−＞減分）
１５−未定義
【０１５５】
[0163]  命令コードのＯＰフィールドに指定された追加の条件タイプ・コードはＸビットを使用して定義可能であり、以下で考察される（例えば、上記の条件タイプ・コード３〜１５は、Ｘビットを使用して再定義可能である）。この非限定的な例では、ＣＴＲビットは条件タイプ・コード１、２、及び１４に使用され、他の例では、ＣＴＲビットは、非ゼロの場合に他の条件タイプ・コードを再定義するために使用可能である。
【０１５６】
[0164]  上記表２に示された命令コードのアクション・オペランドＡＣＴは、条件タイプ・コード及び条件オペランド（及びいくつかのケースでは、６４ビット・レジスタの他のフィールド）によって指定された条件が満たされた場合、実行されることになる対応するアクションを指定する。いくつかのアクション・オペランドＡＣＴの場合、実行されることになるアクションは、６４ビット・レジスタのビット３２〜４７に表された１６ビット「アクション・パラメータ」の１つ又は複数の値に、少なくとも部分的に依存する（上記の表１を参照）。命令コードのＡＣＴフィールドに存在可能な例示のアクション・オペランド・コードは、以下を含むが、これらに限定されない。
０−ノー・オペレーション――何も実行しない（例えばＮが設定された場合、割り込み完了を起こす）
１−メッセージ送信のキュー
アクション・パラメータは、ビット０〜３に記述子＃、ビット５にメッセージ肯定応答フラグのハウスキーピングＣＰＵ通知、ビット６にメッセージ障害フラグのハウスキーピングＣＰＵ通知、ビット１２〜６にペイロード・インデックスを含むものと解釈される。
２−出力の設定：アクション・パラメータ内のビット・セットは、設定される出力を示す。
３−出力のクリア：アクション・パラメータ内のビット・セットは、クリアされる出力を示す。
４−データ入力のラッチ。（アクション・パラメータなし）
５−カウンタ値のラッチ：アクション・パラメータ内のビット・セットは、ラッチされるカウンタを示す。
６−ゼロ・カウンタ：アクション・パラメータ内のビット・セットは、ゼロに設定されるカウンタを示す。
７−フラグＭＳＷの設定：アクション・パラメータ内のビット・セットは、設定されるフラグを示す。
８−フラグＬＳＷの設定：アクション・パラメータ内のビット・セットは、設定されるフラグを示す。
９−フラグＭＳＷのクリア：アクション・パラメータ内のビット・セットは、クリアされるフラグを示す。
１０−フラグＬＳＷのクリア：アクション・パラメータ内のビット・セットは、クリアされるフラグを示す。
１１−セマフォの取得：セマフォ・インデックスがアクション・パラメータ内に与えられる。
１２−セマフォの解除：セマフォ・インデックスがアクション・パラメータ内に与えられる。
１３〜１５−予約済み
アクション１５は、アクション・オペランドを示すための減じられたビット数を伴うアクションを示すために使用される、アクション・パラメータのある数のビットを伴う拡張アクションとすることができる。
【０１５７】
[0165]  上記で指定されたいくつかのアクション・オペランドと共に使用される１６ビット・アクション・パラメータは、記述子＃（例えばビット０〜３）、ａｃｋ通知（例えばビット４）、ｅｘｈ通知（例えばビット５）、ペイロード＃（例えばビット６〜１２）、又はビット・フィールド（例えばビット１３〜１５）を含むことが可能であるが、これらに限定されない。
【０１５８】
[0166]  前述のように、条件／アクション・ペアを表す６４ビット・レジスタのビット４８〜６３に含まれる１６ビット命令コードの他のビットは、前のレジスタからのチェーン・ビットＣを含むことができる。チェーン・ビットＣが設定された場合、先行するイベント・テーブル・レジスタ１４０ｃ内の条件１４２ｃは、このイベント・テーブル・レジスタ１４０ｃ内の条件１４２ｃが考慮できるまで、ｔｒｕｅでなければならない。比較がオーバーフロー又はアンダーフローに対処する必要がないようにシャドー・レジスタを実装するＸＯＲビットＸ、１に設定された場合、入力条件を満たすと完了メッセージをハウスキーピングＣＰＵに転送させる通知ビットＮ、及び、条件１４２ｃが満たされた場合に設定される満足ビットＳも、含むことができる。
【０１５９】
[0167]  他のビットは、条件１４２ｃが満たされた場合、スキャナに条件オペランドＯＰをゼロにリセットさせるために使用される、最終条件ビットＬも含むことができる。言い換えれば、最終条件ビットＬは、次のスキャンが、イベント・テーブル１１２が条件を再度満たすことを防止する。アクション１４４ｃが実行されるまでに複数の条件１４２ｃが（例えば以下で説明するようにチェーン・ビットＣを使用して）満たされる場合、動作が再評価できるように先行レジスタはＬビットを設定しないことになる。常時実行条件とまとめて連結されたイベント・テーブル・レジスタは、アクションの繰り返しを避けるために最終ビットを設定することができる。
【０１６０】
[0168]  アクション・エンジン１１０ｃは、ＳＣＯＲＥ（商標）プログラミング言語を使用してプログラミング可能である。特に、前述のように、ハウスキーピングＣＰＵ（マスタ・プロセッサ）１９０は、コンパイルされた場合、マスタ・プロセッサが条件／アクション・ペアの形でアクション・エンジンにタスクを課すように命令を提供可能にする、本発明の一実施形態に従って、本発明のプログラミング言語を介してプログラミング可能である。ＳＣＯＲＥ（商標）ステートメント及び結果として生じるイベント・テーブルの設定値の例が、以下に示される。ＳＣＯＲＥ（商標）ステートメントは、ＳＣＯＲＥ（商標）コードの各行が単一の条件／アクション・ペアと一致するようにフォーマット化されている。
【数１３】
2020074166.tif 000017
ＯＰ、Ｃ、Ｘ、ＣＴＲ、及びＯＰＥＲＡＮＤは条件を定義する。
ＡＣＴ、Ｎ、Ｓ、Ｌ、及びＡＰはアクションを定義する。
【０１６１】
[0169]  より複雑な条件を監視するためのチェーン・ビット
【０１６２】
[0170]  いくつかのケースでは、図６に示されたイベント・テーブル１１２のレジスタ１４０ｃは、より複雑な条件／アクション・ペアを記述するのに十分な幅がない場合がある。こうしたケースでは、アクション・エンジン１１０ｃ、イベント・テーブル１１２、及びスキャナ１３０ｃを、チェーン・ビット（図６では「Ｃ」で示される）を使用して、入力条件のより複雑なセット（例えば、満たされると１つ又は複数のアクションが予測される、複数の条件）を評価するように構成することができる。各チェーン・ビットは、前のイベント・テーブル・レジスタ１４０ｃ内に表される特定の条件１４２ｃを満たすことを含むという点で、論理的には条件１４２ｃの対応するセットの一部である。実際には、チェーン・ビットは、そのすべてが、実行されることになるイベント・テーブル・エントリの連結されたグループ内に記述されたアクションについて満たされなければならない、入力条件のグループを定義する目的で、単一の「スーパー・レジスタ」を形成するために、連続するイベント・テーブル・レジスタ１４０ｃのグループをリンクすることによって、単一のイベント・テーブル・レジスタ１４０ｃの有効（及び有限）サイズを増加させるために使用可能である。イベント・テーブル・レジスタ１４０ｃの連続するブロックをまとめて連結することで、論理的には、連結されたレジスタ１４０ｃをまとめて「ＡＮＤ」し、すなわち、特定セットの命令を（場合によっては所定の順序で）発行することによって、入力信号６６の特定の組み合わせに反応させる。
【０１６３】
[0171]  図８は、連結されたイベント・テーブル・レジスタ１４０ｃがまとめて連結された条件１４２ｃのグループを識別し、これに反応する方法を示す。（単純にするために、図８は、各レジスタ１４０ｃに対する条件１４２ｃ及び出力１４４ｃのセットのみを示している。）各イベント・テーブル・レジスタ１４０ｃは、センサ入力Ａ−Ｃ及び現在のカウンタ値ＣＴＲ（図８には図示せず）、並びにフラグ・レジスタ値の異なる組み合わせと、連結されたイベント・テーブル・レジスタのセット内の以前のセマフォ要求が成功したかどうかに、反応する。慣例により、連結グループ１４０ｃ−１内の第１のイベント・テーブル・エントリはそのチェーン・ビット・セットを有さないことになる。この例では、イベント・テーブル・レジスタ１４０ｃ−２から１４０ｃ−４はすべて、１に設定されたチェーン・ビットＣを有する。イベント・テーブル・レジスタ１４０ｃ−５は低チェーン・ビットＣを有するため、イベント・テーブル・レジスタ１４０ｃ−１から１４０ｃ−４とは独立に動作する。
【０１６４】
[0172]  連結されたレジスタ１４０ｃ−１及び１４０ｃ−２はそれぞれ、それぞれの条件１４２ｃ−１及び１４２ｃ−２、並びに実行なし（ｎｏ−ｏｐ）アクション１４４ｃ−１及び１４４ｃ−２と、それに続く「クリティカル・レジスタ」−ここでは、ｎｏ−ｏｐではなく「有用」条件１４２ｃ−３及びアクション１４４ｃ−３の両方を備える単一レジスタ１４０ｃ−３とを、含む。こうした「クリティカル・レジスタ」の後には、連結されたグループの入力条件に合致した場合にも実行されるべきである、追加のアクションを伴う他のレジスタ１４０ｃ−４が続く可能性があり、このケースでは続く。クリティカル・エントリのそれが実行された場合、有用条件１４４ｃ−４も即時に実行されることを保証するために、入力条件１４２ｃ−４は、同語反復的に（tautologically）ｔｒｕｅである条件に設定され、すなわちcounter[0] >= 0（ＸＯＲなし）である。これによって、イベント・テーブル・エントリの結合グループの一部として、この結合グループ内の先行入力条件のすべても満たされなければならないため、このイベント・テーブル・エントリ内のアクションが早期に実行されることはない。最終条件ビットＬがレジスタ１４０ｃ−２内に設定され、これは、クリティカル・レジスタ１４０ｃ−３上に満足ビットＳが設定される前に、レジスタ１４０ｃ−１及び１４０ｃ−２が満たされなければならないことを意味する。クリティカル・レジスタ１４０ｃ−３上に満足ビットＳが設定されると、クリティカル・レジスタ１４０ｃ−４内のアクション１４４ｃ−４はあらゆるスキャン時に再試行されることになるので（これがセマフォ又は送信アクションであったと想定すると、すべての他のアクションは第１の試行時に完了するため）、先行レジスタ１４０ｃ−１及び１４０ｃ−２の状態は問題にならない。クリティカル・レジスタ１４４ｃ−３後のチェーン内のレジスタ１４０ｃ−４は最終条件ビットＬを設定することになり、スキャナ１３０ｃによって満足ビットＳが設定可能であることを示す。
【０１６５】
[0173]  動的環境の進化を追跡するためのセマフォ
【０１６６】
[0174]  図６に示されたアクション・エンジン１１０ｃは、実世界システムの進化に応答して一連の命令を発行することも可能である。最高ＣＰＵ応答時間（例えば１０から１０００μｓ）よりも低速で発生する進化の場合、スキャナ１３０ｃはハウスキーピングＣＰＵ１９０に合致（満足条件）を報告することが可能であり、これは命令を発行すること、及び／又は、前述のようにイベント・テーブル・レジスタ１４０ｃのうちの１つ又は複数を更新することによって応答する。より高速の進化（すなわち、最高ＣＰＵ応答時間よりも即時に発生する可能性がある進化）の場合、アクション・エンジン１１０ｃは、１つ又は複数のセマフォを使用して、条件１４２ｃが互いに左右されるものとすること、及び／又は、そのそれぞれの条件１４２ｃがハウスキーピングＣＰＵ１９０による介入なしに同じ入力信号６６によって少なくとも部分的に満たされる、異なるレジスタ１４０ｃ間での競合（衝突）を回避することが、可能である。一般的に言えば、セマフォはリソース競合の管理を容易にし、１つ又は複数の条件の評価が依拠する１つ又は複数のリソースの可用性を保証するためにアクション・エンジンによる獲得及び解除が可能である。
【０１６７】
[0175]  いくつかのインスタンスでは、イベント・テーブル・レジスタ１４０ｃの結合グループ内のイベント・テーブル・レジスタ１４０ｃ−１は、スキャナによって管理されるが、典型的には、後のイベント・テーブル・エントリ内でのセマフォ解除アクションに応答してスキャナによって解除されることになるか、又は、ハウスキーピングＣＰＵ１９０によって一方的に解除される可能性がある、セマフォの集合のうちの１つを獲得するように試行することができる。それらの他の入力条件と共に、セマフォの正常な獲得は、自動的に、こうしたイベント・テーブル・レジスタの結合集合内に存在する任意の後続の応答アクション実行のための必要条件となる。
【０１６８】
[0176]  例示の実施形態において、セマフォ処理はテスト・アンド・セット（test-and-set）動作に基づく。セマフォは、Ｒ／Ｓフリップフロップであるとみなすことができる。セット動作は、Ｒ／ＳフリップフロップのＳ入力のクロッキングと同時にフロップの出力Ｑを読み取ることを含む。セマフォが以前にセット解除（unset）された（Ｒ／Ｓフリップフロップの出力の同時読み取りの結果が論理低であった）場合、セット・アクションは完了するものとみなされる。セマフォが以前にセットされた場合、セット・アクションは正常であるとみなされ、正常なセマフォ・セットに依存するアクションは実行されないことになる。他のアクションとは異なり、セマフォ取得アクションは、セマフォ取得が（将来のスキャン時に）成功するまでこのチェーン内のいずれの後続レジスタ１４０ｃも無視されるようにする。セマフォの解除は、フロップへのＲ入力のクロッキングによって達成される。これらのセマフォの調停済みバージョンを使用して、複数のイベント・テーブル・スキャナ１３０ｃの動作を（例えば図９に関して説明するように）調整することができる。例えば複数のスキャナ１３０ｃを備えるアクション・エンジンは、単純なラウンド・ロビン調停方式を使用することができる。
【０１６９】
[0177]  イベント・テーブル１１２がどのようにセマフォを使用するかを知るために、クロック制御出力（出力０のクロック、出力１〜７のデータ）の設定に含まれる、（ａ）トリガ・イベントの待機、セマフォの獲得、クロック出力低の設定、出力値１〜７の設定、並びに第２及び第３のプロセスの実行可能化に関する責務を負う第１のプロセス、（ｂ）セットアップ時間の待機、クロック出力高の設定、及び第３のプロセスの実行可能化を含む、第２のプロセス、並びに、（ｃ）組み合わせられたセットアップ及び保持時間の待機、セマフォの解除、及びハウスキーピングＣＰＵ１９０の通知を含む、第３のプロセス、という、３つの同時プロセスを考えてみる。３つのプロセスはそれぞれ、イベント・テーブル１１２内の連結レジスタ１４０ｃのグループによって表される。（セマフォは、出力０〜７、counter[1]、及びflag[0]の操作を希望し、イベント・テーブル１１２上のこれらのプロセスの複数セットが互いに干渉することなくクロック制御出力を送信できるようにする、任意のプロセスによって使用可能である。）マイクロ秒チック（tick）をカウントするためにカウンタcounter[1]がセットアップされており、出力信号のタイミングを取るために使用されるものと想定する。この例では、セットアップ及び保持時間はどちらも出力信号上で１ｍｓである。
【０１７０】
[0178]  初めに、第１のプロセスはセマフォを獲得する。セマフォを獲得すると、出力０及び２〜７をクリアし、出力１を設定し、タイムベース・パルス、このケースでは１ＭＨｚのタイムベースをカウントするように構成されたカウンタ（counter[1]）をリセットし、まとめて連結された一連の５つのレジスタを使用してフラグ（flag[0]）を設定する。第１のプロセスは、以下のＳＣＯＲＥ（商標）ステートメント（コメント付き）及び（上記のように、及び１６進形式で符号化された）条件／アクション・ペアを使用して表すことができる。
【数１４】
2020074166.tif 000018
【０１７１】
[0179]  第２のプロセスは、フラグが設定されると開始する。その後、所与のカウンタ値で出力を設定する。第２のプロセスに関する、対応するＳＣＯＲＥ（商標）ステートメント（コメント付き）及び（上記のように、及び１６進形式で符号化された）条件／アクション・ペアは、以下の通りである。
【数１５】
2020074166.tif 000019
【０１７２】
[0180]  第３のプロセスは、フラグが設定されると開始する。所与のカウンタが第２の値に達すると、第１のフラグをクリアしてセマフォを解除する。第３のプロセスに関する、対応するＳＣＯＲＥ（商標）ステートメント（コメント付き）及び（上記のように、及び１６進形式で符号化された）条件／アクション・ペアは、以下の通りである。
【数１６】
2020074166.tif 000020
【０１７３】
[0181]  第３のプロセス（ｃ）は、組み合わせられたセットアップ及び保持時間がカウンタ上で経過するのを待機しているため、第２及び第３のプロセス（ｂ）及び（ｃ）を実行可能にするために１つのフラグのみが使用されることに留意されたい。プロセスのすべてのグループが同じカウンタ及びフラグを使用できるように、セマフォはカウンタ及びフラグの使用を保護する。
【０１７４】
[0182]  別の方法として、セットアップ及び保持時間のタイミング要件が１ｍｓであり、これはハウスキーピングＣＰＵ１９０が作動するのに十分な時間を超えているため、これら３つの別々の同時に実行するプロセスは単一のＳＣＯＲＥ（商標）ステートメントとして作成可能である
【数１７】
2020074166.tif 000021
【０１７５】
[0183]  ハウスキーピングＣＰＵ１９０は、完了時に、第１の４レジスタ・チェーンを単一レジスタ・チェーンに置き換えることができる。その第２のチェーンの完了時に、第３の待機及びセマフォ解除を実行するために、他の単一チェーン・エントリが作成されることになる。
【０１７６】
[0184]  複数のイベント・テーブル／スキャナ・コプロセッサを用いるアクション・エンジン
【０１７７】
[0185]  図９は、それぞれの入力ポート（それぞれ入力ポート１５８ｃ−１から１５８ｃ−ｎ、まとめて入力ポート１５８ｃ）を介して入力バス１０２に結合された、複数の並列コプロセッサ（それぞれコプロセッサ１２０ｃ−１から１２０ｃ−ｎ、まとめてコプロセッサ１２０ｃ）を含む、アクション・エンジン１１０ｃを示す。各コプロセッサ１２０ｃは、それぞれのスキャナ（それぞれスキャナ１３０ｃ−１から１３０ｃ−ｎ、まとめてスキャナ１３０ｃ）に結合されたそれぞれのイベント・テーブル（それぞれイベント・テーブル１１０ｃ−１から１１０ｃ−ｎ、まとめてイベント・テーブル１１０ｃ）を含む。前述のように、各イベント・テーブル１１２は複数のエントリを含み、そのそれぞれが、独立した条件の１つ又は複数のセット及び対応するアクションを表す。
【０１７８】
[0186]  コプロセッサ１２０ｃは、非常に低いレイテンシー、例えば約１．６μｓ以下のレイテンシーでイベント・テーブル１１０ｃ内に記憶された条件／アクション・ペアを実行するために、並列に動作する。並列実行中、各スキャナ１３０ｃは、イベント・テーブル１１２内の条件と、入力バス１０２及び入力ポート１５８ｃを介して受信される入力信号６６とを比較し、図６〜図８に関して説明されるように合致が発生した場合、命令を実行する。適切であれば、スキャナ１３０ｃは、それぞれの出力ポート（それぞれ出力ポート１６０ｃ−１から１６０ｃ−ｎ、まとめて出力ポート１６０ｃ）を介して出力バス１０２に出力信号６８を送信する。アクション・エンジン１１０ｃは、図６に関して上記で説明したようなカウンタ、フラグ・レジスタ、及び／又はセマフォ・レジスタも含むことができる。
【０１７９】
[0187]  前述のアクション・エンジンの例は、１４４ｃ命令コード又は条件／アクション・ペアを保持するのに十分な大きさのメモリを備えた単一のＦＰＧＡ上の、単一のイベント・テーブル・スキャナとして（例えばＨＤＬコードを使用して）実装可能である。スキャナは、条件を順次評価することによってイベント・テーブルを実行する。スキャナは満たされた条件のチェーンを見つけた場合、アクションを実行し、同じＦＰＧＡ上に実装可能なマスタＣＰＵに、満たされた条件に対してイベント・テーブル内のいずれのレジスタが使用されているかに関して通知する。マスタＣＰＵは、プロセスが実世界条件の進化に追従する際に、問題のレジスタに新しい命令コードを再ロードする。別の方法として、アクション・エンジンは、周辺構成要素インターフェース（ＰＣＩ）カード内に埋め込まれ、汎用コンピュータ内で使用される、イベント・テーブル・メモリ及びスキャナを含む専用チップと、コプロセッサ・メモリ内にネイティブ命令コードを配置する代わりに、イベント・テーブルを復号してネイティブ命令を実行するための、埋め込み型プロセッサと、非常に低いレイテンシーで条件を評価するための別々のＦＰＧＡプログラムをそれぞれが有する、複数のＦＰＧＡとして、実装可能である。
【０１８０】
[0188]  機械視覚技法／機器を使用する動的環境
【０１８１】
[0189]  前述のように、本発明の様々な実施形態に従った、特に低いレイテンシー（すなわち著しく高速の応答時間）及び／又は低い変動性レイテンシーを必要とする、制御システム並びにその構成要素は、様々な動的環境を監視及び／又は制御するための幅広い適用可能性を有することができる。本発明に従った制御システムの一適用例は、機械視覚技法及び／又は機器が使用される動的環境によって与えられる。
【０１８２】
[0190]  図１０は、動的環境を監視及び制御するための本発明の実施形態に従った制御システムと共に機械視覚技法及び機器が使用される、動的環境のブロック図である。図１０に示された動的環境は、一般に、自動化プロセス１０の実装を容易にするために様々なロボット機器２２及び機械視覚機器（まとめて機器２０）が使用可能な自動化プロセス１０に関し、機械視覚機器は、１つ又は複数のイメージ獲得デバイス４２及び照明機器４４を含むことができる。本明細書で考察される制御概念が適用可能な自動化プロセス１０の例は、（例えば、自動車、消費財製造、及び／又は農業に適用するための）組み立てライン上の部品のカウント、追跡、分類、及び／又は処理、製造プロセスに関連した品質制御機能（例えば不良品の自動検査）、ロボット機器による操作のための部品の位置及び／又は向きの測定、並びに、バルク材料（例えば食料品、農産物など）からの望ましくないアーティファクトの除去を含むが、これらに限定されない。
【０１８３】
[0191]  図１０において、動的環境は、ロボット機器２２、照明機器２４、及び／又はイメージ獲得デバイス４２を制御するための、（図１に示されたものと同様の）様々なアクチュエータ又は制御デバイス３０も含む。環境は、自動化プロセス１０を監視し、所与の時点での環境の監視された条件を表す情報（例えば１つ又は複数の入力信号６６）を提供するための、様々なセンサ又は入力デバイス４０も含む。図１０に示されるように、センサは、自動化プロセスに関するイメージを獲得するための１つ又は複数のイメージ獲得デバイス４２、並びに、監視される条件を表す入力信号を提供するための１つ又は複数のセンサ４４（例えば、温度、湿度、圧力、光、及び／又は他の環境センサ、カウンタ、情報パケットのいくつかは１つ又は複数のイメージ獲得デバイス又は他のデバイスによって提供可能な情報パケット用の受信キュー、など）を、含むことができる。
【０１８４】
[0192]  図１０は、１つ又は複数の出力信号６８を（ロボット機器、照明機器、及びイメージ獲得デバイスのうちの、１つ又は複数を制御する）制御デバイス３０に提供するように、時間に応じて監視される条件を表す１つ又は複数の入力信号６６を受信及び処理するための、様々な実施形態に関連して上記で説明された、マスタ・プロセッサ１９０及びアクション・エンジン１１０を含む、制御システム１００も示す。加えて、図１０に示された動的環境は、１つ又は複数のイメージ獲得デバイスによって獲得されたイメージ情報を処理するため、及び照明機器を制御するために、制御システム１００に通信可能に結合された、イメージ処理コンピュータ２００も含むことができる。イメージ処理コンピュータ２００を含む実施形態において、動的環境の監視される条件を表す１つ又は複数の入力信号６６によって他の方法で提供される情報の少なくとも一部は、特に、１つ又は複数のイメージ獲得デバイスによって獲得されるイメージから導出される情報に関連して、イメージ処理コンピュータ２００によって制御システム１００に提供可能である。
【０１８５】
[0193]  図１０に示される動的環境において、イメージ獲得デバイス４２及び照明機器２４は、自動化プロセス１０の監視及び制御に関連して機械視覚技法を実装するために、特に使用可能である。「機械視覚」という用語は、非常に一般的に、プロセスを制御する目的でデータを抽出するためのイメージの分析を指す。機械視覚技法は、典型的には、様々なイメージ獲得デバイス（例えばデジタル・スチル又はビデオ・カメラ）、及びいくつかのケースでは（いくつかのインスタンスにおいて、後続のイメージ処理を容易にするために、一般的な環境からのある物体の様々な弁別を提供するように特に設計及び構成することが可能な）レンズ及び様々な照明機器のうちの、いずれかを使用したイメージの獲得を含む、一連の動作を含む。１つ又は複数のイメージ獲得デバイスによって提供されるイメージ・データは、様々な形式（例えば、ビデオ・シーケンス、複数カメラからのビュー、又は、医療用スキャナからなどの多次元データ）とすることができる。獲得されたイメージは、その後、イメージから様々な情報を抽出するように（例えば、機械視覚機器２０及び制御システム１００に動作可能に結合されたイメージング処理コンピュータ２００、及び／又は、１つ又は複数の他の独立／外部コンピューティング・デバイスによる、様々なイメージ処理ソフトウェアの実行を介して）処理され、抽出された情報は自動化プロセスの制御に関連した決定のために使用される。
【０１８６】
[0194]  機械視覚のために使用可能な様々な照明機器及び技法に関して、（単色又はカラー光源を使用する）２次元可視光イメージング技法が恐らく最も一般的に採用される。しかしながら、他の適切なイメージング技法は、赤外線照明機器（例えば光源及び／又はフィルタ）が使用可能な選択的赤外線イメージング、ライン・スキャン・イメージング、３次元表面イメージング、及びＸ線イメージングを含むが、これらに限定されない。イメージ獲得デバイスに関して、こうしたデバイスでは、いくつかのフォーム・ファクタ、機能性、及び通信プロトコルが使用可能であり、例えば、いくつかのインスタンスでは、イメージ獲得デバイスはいずれの特定のイメージ処理機能も有さない可能性があるが、他のインスタンスでは、イメージ獲得デバイスはある程度のイメージ処理機能（例えば、「スマート」カメラ又はセンサ）と共に実装可能である。様々な市販のイメージ獲得デバイスが、イーサネット、ＵＳＢ、又はＦｉｒｅＷｉｒｅ接続などの、様々なインターフェースのうちのいずれかを介してデータを通信するように構成可能である。
【０１８７】
[0195]  制御システム１００、イメージ処理コンピュータ２００、及び／又は、１つ又は複数の他のコンピューティング／処理デバイスの、マスタ・プロセッサ１９０によって実装可能な例示のイメージ処理技法に関して、典型的な技法の例は、しきい値処理（グレースケール・イメージの白黒への変換、又はグレースケール値に基づく分離の使用）、セグメント化、ブロブ抽出、パターン認識、バーコード及びデータ行列コード読み取り、光学文字認識、計測（オブジェクト寸法の測定）、位置決め、エッジ検出、カラー分析、フィルタリング（例えば形態学的フィルタリング）、及びテンプレート照合（特定パターンの発見、照合、及び／又はカウント）を含むが、これらに限定されない。
【０１８８】
[0196]  図１０では、前述のイメージ処理技法のうちのいずれか１つ又は複数の使用の結果として獲得されたイメージから抽出される、様々なイメージ情報を、制御システム１００によって１つ又は複数のセンサ／入力デバイスから受信される、かつ／又は、イメージ処理コンピュータ２００によって制御システム１００に提供される、１つ又は複数の入力信号６６によって表される情報全体の一部として含めることができる。例えば抽出されたこうしたイメージ情報は、特定のオブジェクト（例えば組み立てライン上の部品）が特定の時点で獲得された１つ又は複数のイメージ内に存在したこと、オブジェクトの特定の位置及び／又は向きが１つ又は複数のイメージ内で検出されたこと、特定の欠陥が１つ又は複数のイメージ内に存在するオブジェクト内で観察されたことなどを、示すことができる。イメージから抽出されたこうした情報は、所与の時点での自動化プロセスの監視される条件を表すために、単独で、或いは１つ又は複数のセンサからの他の情報と組み合わせて、使用可能であり、これに基づいて制御システムは、自動化プロセス１０に関連して実行されることになる１つ又は複数の特定の対応するアクションを規定するように、構成可能である。
【０１８９】
[0197]  結論
【０１９０】
[0198]  本明細書では、様々な本発明の実施形態について説明及び例示してきたが、当業者であれば、機能を実行するため、かつ／又は、本発明で説明された結果及び／又は利点のうちの１つ又は複数を取得するための、様々な他の手段及び／又は構造が容易に想像され、こうした変形及び／又は修正はそれぞれ、本明細書で説明される本発明の実施形態の範囲内にあるものと考えられる。より一般的に言えば、当業者であれば、本明細書で説明されるすべてのパラメータ、寸法、材料、及び構成が例示的であるものと意図されること、並びに、実際のパラメータ、寸法、材料、及び／又は構成が、本発明の教示が使用される特定の適用例に依存するであろうということを、容易に理解されよう。当業者であれば、単なる日常の実験を使用して、本明細書で説明される特定の本発明の実施形態の多くの等価物を理解又は把握されるであろう。したがって、前述の実施形態が単なる例として提示されたものであること、及び、本発明の実施形態は、添付の特許請求の範囲及びその等価物の範囲内で具体的に説明及び請求された以外の方法で実施可能であることを、理解されよう。本開示の本発明の実施形態は、本明細書で説明される各別個の機能、システム、製品、材料、キット、及び／又は方法を対象とする。更に、こうした機能、システム、製品、材料、キット、及び／又は方法の任意の組み合わせは、こうした機能、システム、製品、材料、キット、及び／又は方法が相互に矛盾しない場合、本開示の本発明の範囲内に含まれる。
【０１９１】
[0199]  前述の実施形態は、多数の方法のうちのいずれかで実装可能である。例えば実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを使用して実装することができる。ソフトウェア内に実装される場合、単一のコンピュータ内に提供されるか又は複数のコンピュータ間で分散されるかにかかわらず、任意の適切なプロセッサ又はプロセッサの集合上でソフトウェア・コードを実行することが可能である。
【０１９２】
[0200]  更にコンピュータは、ラックマウント式コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、又はタブレット・コンピュータなどの、いくつかの形式のうちのいずれかで具体化可能であることを理解されたい。加えてコンピュータは、携帯情報端末（ＰＤＡ）、スマートフォン、又は他の適切な携帯型又は据え付け型の電子デバイスを含む、一般にはコンピュータとみなされないが適切な処理機能を備えたデバイス内に、組み込むことが可能である。
【０１９３】
[0201]  またコンピュータは、１つ又は複数の入力及び出力デバイスを有することができる。これらのデバイスは、とりわけ、ユーザ・インターフェースを提示するために使用可能である。ユーザ・インターフェースを提供するために使用可能な出力デバイスの例は、出力の視覚的提示のためのプリンタ又はディスプレイ・スクリーンと、出力の聴覚的提示のためのスピーカ又は他の音声生成デバイスとを含む。ユーザ・インターフェース用に使用可能な入力デバイスの例は、キーボードと、マウス、タッチ・パッド、及び離散化タブレットなどのポインティング・デバイスとを含む。他の例として、コンピュータは、音声認識を介して又は他の可聴形式で、入力情報を受信することができる。
【０１９４】
[0202]  こうしたコンピュータは、エンタープライズ・ネットワークなどのローカル・エリア・ネットワーク又はワイド・エリア・ネットワーク、及びインテリジェント・ネットワーク（ＩＮ）又はインターネットを含む、任意の適切な形式の１つ又は複数のネットワークによって、相互接続することができる。こうしたネットワークは、任意の適切な技術に基づくものとすることが可能であり、任意の適切なプロトコルに従って動作可能であり、無線ネットワーク、有線ネットワーク、又は光ファイバ・ネットワークを含むことが可能である。
【０１９５】
[0203]  本明細書で概説される様々な方法又はプロセスは、様々なオペレーティング・システム又はプラットフォームのうちのいずれか１つを使用する１つ又は複数のプロセッサ上で実行可能な、ソフトウェアとして符号化することができる。加えてこうしたソフトウェアは、いくつかの適切なプログラミング言語及び／又はプログラミング又はスクリプティング・ツールのいずれかを使用して作成可能であり、フレームワーク又は仮想機械上で実行される実行可能機械言語コード又は中間コードとしてコンパイルすることもできる。
【０１９６】
[0204]  この点で、様々な本発明の概念は、１つ又は複数のコンピュータ或いは他のプロセッサ上で実行された場合、前述の本発明の様々な実施形態を実装する方法を実行する、１つ又は複数のプログラムを用いて符号化された、コンピュータ読み取り可能記憶媒体（又は複数のコンピュータ読み取り可能記憶媒体）（例えば、コンピュータ・メモリ、１つ又は複数のフロッピィ・ディスク、コンパクト・ディスク、光ディスク、磁気テープ、フラッシュ・メモリ、フィールド・プログラマブル・ゲート・アレイ又は他の半導体デバイス内の回路構成、或いは、他の持続性媒体又は有形コンピュータ記憶媒体）として具体化可能である。コンピュータ読み取り可能媒体は、前述の本発明の様々な態様を実装するためにその上に記憶されたプログラムが１つ又は複数の異なるコンピュータ或いは他のプロセッサ上にロード可能なように、トランスポート可能とすることができる。
【０１９７】
[0205]  「プログラム」又は「ソフトウェア」という用語は、本明細書では、前述の実施形態の様々な態様を実装するためにコンピュータ又は他のプロセッサをプログラミングするように使用可能な、任意のタイプのコンピュータ・コード又はコンピュータ実行可能命令のセットを言い表すために、総称的な意味で使用される。加えて、一態様によれば、実行された場合、本発明の方法を実行する１つ又は複数のコンピュータ・プログラムは、必ずしも単一のコンピュータ又はプロセッサ上に常駐しないが、本発明の様々な態様を実装するためのいくつかの異なるコンピュータ又はプロセッサ間にモジュール方式で分散可能であることを理解されたい。
【０１９８】
[0206]  コンピュータ実行可能命令は、１つ又は複数のコンピュータ或いは他のデバイスによって実行されるプログラム・モジュールなどの、多くの形とすることができる。一般に、プログラム・モジュールは、特定のタスクを実行するか、又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラム・モジュールの機能は、様々な実施形態において組み合わせるか又は望ましいように分散させることができる。
【０１９９】
[0207]  また、データ構造は、コンピュータ読み取り可能媒体内に任意の適切な形で記憶することができる。図をわかりやすくするために、データ構造は、データ構造内の位置を介して関係しているフィールドを有するように示されている場合がある。こうした関係は、フィールド間の関係を伝えるコンピュータ読み取り可能媒体内の位置をフィールド用の記憶に割り当てることによって、同様に達成することができる。しかしながら、ポインタ、タグ、又はデータ要素間の関係を確立する他の機構の使用を含み、任意の適切な機構を使用して、データ構造のフィールド内に情報間の関係を確立することができる。
【０２００】
[0208]  また様々な本発明の概念は、その例がこれまでに提供された１つ又は複数の方法として、具体化することができる。方法の一部として実行される動作は、任意の適切な方法で順序付けすることができる。したがって、動作が例示とは異なる順序で実行され、いくつかの動作を、たとえ例示の実施形態では順次動作として示されていても同時に実行することを含むことができる、実施形態が構成可能である。
【０２０１】
[0209]  本明細書で定義及び使用されるすべての定義は、辞書定義、参照により組み込まれた文書内の定義、及び／又は、定義された用語の通常の意味を介して、制御するものと理解されたい。
【０２０２】
[0210]  本明細書及び特許請求の範囲で使用される不定冠詞「ａ」及び「ａｎ」は、明確に示されていない限り、「少なくとも１つ」を意味するものと理解されたい。
【０２０３】
[0211]  本明細書及び特許請求の範囲で使用される「及び／又は」という句は、そのように結合された要素のうちの「いずれか又は両方」、すなわち、あるケースでは結合的に存在し、他のケースでは離接的に存在する要素を意味するものと理解されたい。「及び／又は」と共に列挙される複数の要素は、同様に、すなわち要素のうちの「１つ又は複数」がそのように結合されるものと解釈されたい。「及び／又は」節によって具体的に識別された要素以外の他の要素は、具体的に識別された要素に関係するか又は関係しないかにかかわらず、オプションで提示可能である。したがって、非限定的な例として、「Ａ及び／又はＢ」という言い回しは、「含む」などのオープンエンド言語と共に使用される場合、一実施形態ではＡのみ（オプションでＢ以外の要素を含む）を指し、他の実施形態ではＢのみ（オプションでＡ以外の要素を含む）を指し、更に他の実施形態ではＡ及びＢ（オプションで他の要素を含む）を指す、などとすることができる。
【０２０４】
[0212]  本明細書及び特許請求の範囲で使用される場合、「又は」は、上記で定義された「及び／又は」と同じ意味を有するものと理解されたい。例えば、リスト内のアイテムが分離している場合、「又は」又は「及び／又は」は包括的である、すなわち、要素のいくつか又はリストのうちの、少なくとも１つを含むことであるが、複数も含み、オプションでリストに列挙されていない追加のアイテムも含むと解釈されるものとする。「のうちの１つのみ」又は「のうちの正確に１つ」、或いは特許請求の範囲で使用される場合は「からなる」などの、明確に示された用語でない限り、要素のいくつか又はリストのうちの正確に１つの要素の包含を指すことになる。一般に、本明細書で使用される「又は」という用語は、「いずれか」、「のうちの１つ」、「のうちの１つのみ」、又は「のうちの正確に１つ」などの排他性の用語が先行している場合、排他的代替（すなわち、「一方又は他方、但し両方ではない」）を示すとしてのみ解釈されるものとする。特許請求の範囲で使用される場合、「から本質的になる」は、特許法の分野で使用される通常の意味を有するものとする。
【０２０５】
[0213]  本明細書及び特許請求の範囲で使用される場合、１つ又は複数の要素のリストに関連して「少なくとも１つ」という句は、要素のリスト内にある要素のうちの任意の１つ又は複数から選択された少なくとも１つの要素を意味するが、要素のリスト内に具体的に列挙されたそれぞれ及びあらゆる要素のうちの少なくとも１つを必ずしも含まず、要素のリスト内にある要素のいずれの組み合わせも除外されないものと理解されたい。この定義は、具体的に識別された要素に関係するか又は関係しないかにかかわらず、「少なくとも１つ」の句が指す要素のリスト内に具体的に識別された要素以外の要素がオプションで提示され得ることも可能にする。したがって、非限定的な例として、「Ａ及びＢのうちの少なくとも１つ」（又は等価的に「Ａ又はＢのうちの少なくとも１つ」、又は等価的に「Ａ及び／又はＢのうちの少なくとも１つ」）は、一実施形態では、オプションで複数のＡを含む少なくとも１つのＡを指し、Ｂは存在しない（及びオプションでＢ以外の要素を含む）、他の実施形態では、オプションで複数のＢを含む少なくとも１つのＢを指し、Ａは存在しない（及びオプションでＡ以外の要素を含む）、更に他の実施形態では、オプションで複数のＡを含む少なくとも１つのＡ、並びに、オプションで複数のＢを含む少なくとも１つのＢ（及びオプションで他の要素を含む）を指す、などとすることができる。
【０２０６】
[0214]  特許請求の範囲、並びに上記明細書において、「備える」、「含む」、「担持する」、「有する」、「含有する」、「関与する」、「保持する」、「から構成される」などの、すべての移行句は、オープンエンドである、すなわち、含むが限定されないことを意味するものと理解されたい。米国特許局特許審査手続き基準、２１１１．０３項に記載のように、「からなる」及び「から本質的になる」という移行句のみが、それぞれクローズ又は半クローズの移行句であるものとする。
【図１】
2020074166.tif 000022
【図２】
2020074166.tif 000023
【図３】
2020074166.tif 000024
【図４】
2020074166.tif 000025
【図５】
2020074166.tif 000026
【図６】
2020074166.tif 000027
【図７】
2020074166.tif 000028
【図８】
2020074166.tif 000029
【図９】
2020074166.tif 000030
【図１０】
2020074166.tif 000031
【手続補正書】
【提出日】令和2年2月14日(2020.2.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のアクションが必要なことに応答して複数の条件を有する動的環境を監視及び制御するための制御システムであって、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合された少なくとも１つのコプロセッサ、
を備え、
前記マスタ・プロセッサは、
前記複数の条件の第１のサブセットのみを評価するように、及び
前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第１のアクションを表す第１の制御情報を提供するように、
前記少なくとも１つのコプロセッサを構成する、
制御システム。
【請求項２】
Ａ）前記動的環境は、
Ａ１）自動化プロセスを実装するための機器、
Ａ２）少なくとも１つの制御信号に応答して前記機器を制御するための、少なくとも１つの制御デバイス、及び
Ａ３）前記自動化プロセスを監視するため、及び、前記複数の条件のうちの監視される条件を表す少なくとも１つの入力信号を生成するための、少なくとも１つのセンサ、
を含み、
Ｂ）前記少なくとも１つのコプロセッサは、
Ｂ１）前記監視される条件を表す前記少なくとも１つの入力信号を受信し、
Ｂ２）前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているかどうかを決定するように、前記少なくとも１つの入力信号を処理し、
Ｂ３）前記監視される条件が前記第１のサブセットのうちの前記少なくとも１つの条件に合致する場合、前記少なくとも１つの制御デバイスのための前記少なくとも１つの制御信号を生成するように、前記第１の制御情報を提供する、
請求項１に記載の制御システム。
【請求項３】
Ｂ）において、前記少なくとも１つのコプロセッサは、更に、
Ｂ４）前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記マスタ・プロセッサに通知信号を伝送する、
請求項２に記載の制御システム。
【請求項４】
請求項３に記載の前記制御システム、
Ａ１）の前記自動化プロセスを実装するための前記機器、
前記機器を制御するためのＡ２）の前記少なくとも１つの制御デバイス、及び
前記自動化プロセスを監視するための前記少なくとも１つのセンサ、
を備える、機械視覚システムであって、
前記自動化プロセスを実装するための前記機器は、
ロボット機器、及び
前記自動化プロセスのために制御されるアンビエント照明を提供するための照明機器、
を備え、
前記少なくとも１つの制御システムは、前記ロボット機器及び／又は前記照明機器を制御するために、前記ロボット機器及び／又は前記照明機器に結合された、複数のアクチュエータを含み、
前記少なくとも１つのセンサは、前記自動化プロセスの少なくとも一部の少なくとも１つのイメージを獲得するための、少なくとも１つのイメージ獲得デバイスを備え、
前記制御システムは、前記少なくとも１つのセンサによって生成される前記少なくとも１つの入力信号を受信するため、及び、Ｂ３）で生成される前記少なくとも１つの制御信号に少なくとも部分的に基づいて、前記複数のアクチュエータ及び／又は前記少なくとも１つのイメージ獲得デバイスを制御するために、前記少なくとも１つの制御デバイス及び前記少なくとも１つのセンサに通信可能に結合される、
機械視覚システム。
【請求項５】
前記少なくとも１つのコプロセッサによる評価のために前記マスタ・プロセッサによって構成された前記複数の条件の前記第１のサブセットは、１つの条件のみを含む、請求項１に記載の制御システム。
【請求項６】
前記少なくとも１つのコプロセッサによる評価のために前記マスタ・プロセッサによって構成された前記複数の条件の前記第１のサブセットは、指定された期間内に前記動的環境内で発生することが予測される複数の条件を含む、請求項１に記載の制御システム。
【請求項７】
前記複数の条件が前記動的環境内で発生することが予測される前記指定された期間は、前記マスタ・プロセッサの応答時間より短い、請求項６に記載の制御システム。
【請求項８】
前記複数の条件が前記動的環境内で発生することが予測される前記指定された期間は、前記マスタ・プロセッサの最悪の応答時間より短い、請求項６に記載の制御システム。
【請求項９】
前記マスタ・プロセッサは、
前記複数の条件の前記第１のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、
前記動的環境の現在の状態、
前記マスタ・プロセッサの応答時間、及び、
前記少なくとも１つのコプロセッサの少なくとも１つの属性、
のうちの少なくとも１つに基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第１のサブセットを決定する、請求項１に記載の制御システム。
【請求項１０】
前記少なくとも１つのコプロセッサは、前記複数の条件のうちの少なくとも１つの監視される条件を表す少なくとも１つの入力信号を、受信及び処理するように構成され、
前記少なくとも１つのコプロセッサは、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報に対応する少なくとも１つの出力信号を、出力するように構成され、
前記少なくとも１つのコプロセッサの前記少なくとも１つの属性は、
前記少なくとも１つのコプロセッサの機能状況、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１の数、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１のタイプ、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２の数、及び、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２のタイプ、
のうちの少なくとも１つを備える、
請求項９に記載の制御システム。
【請求項１１】
前記マスタ・プロセッサは、少なくとも１つのソース・コード待機ステートメントを表す少なくとも１つのコンパイル済み実行可能命令に基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第１のサブセットを決定し、前記少なくとも１つのソース・コード待機ステートメントは、前記複数の条件の前記第１のサブセットのうちの前記少なくとも１つの条件、及び前記複数のアクションのうちの前記少なくとも１つの第１のアクションを指定する、請求項１に記載の制御システム。
【請求項１２】
前記少なくとも１つのコプロセッサは、固定された最大数の条件を評価するように構成され、
前記最大数の条件は、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記第１の制御情報を提供するために、前記動的環境内で必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づき、
前記少なくとも１つのコプロセッサによる評価のために前記マスタ・プロセッサによって構成された前記複数の条件の前記第１のサブセットは、前記最大数の条件よりも少ないか又は等しい条件を含む、
請求項１に記載の制御システム。
【請求項１３】
前記少なくとも１つのコプロセッサは、少なくとも第１のコプロセッサ及び第２のコプロセッサを含み、
前記マスタ・プロセッサは、前記複数の条件の前記第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するように、前記第１のコプロセッサを構成し、
前記マスタ・プロセッサは、前記複数の条件の前記第２のサブセットのみを評価するように、及び、前記第２のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、前記第２のコプロセッサを構成する、
請求項１に記載の制御システム。
【請求項１４】
前記複数の条件の前記第１のサブセット及び前記複数の条件の前記第２のサブセットはどちらも、それぞれ前記第１のコプロセッサ及び前記第２のコプロセッサによる評価のための少なくとも１つの共通の条件を含む、請求項１３に記載の制御システム。
【請求項１５】
前記複数の条件のうちの監視される条件は、少なくとも１つの入力信号によって表され、
少なくとも前記第１のコプロセッサ及び前記第２のコプロセッサは、前記監視される条件を表す前記少なくとも１つの入力信号を同時に受信し、
前記第１のコプロセッサ及び前記第２のコプロセッサは、前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記複数の条件の前記第１のサブセット及び前記第２のサブセットを、それぞれ独立に評価する、
請求項１３に記載の制御システム。
【請求項１６】
前記第２のコプロセッサによって評価される前記複数の条件の前記第２のサブセットは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているか否かを示す、少なくとも１つの第２のサブセット条件を含む、請求項１３に記載の制御システム。
【請求項１７】
初回に、前記マスタ・プロセッサは、前記複数の条件の前記第１のサブセットのみを評価するように、及び、前記第１のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するように、前記少なくとも１つのコプロセッサを構成し、
２回目に、前記マスタ・プロセッサは、前記複数の条件の第２のサブセットのみを評価するように、及び、前記第２のサブセットのうちの少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、前記少なくとも１つのコプロセッサを再構成する、
請求項１に記載の制御システム。
【請求項１８】
前記マスタ・プロセッサは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされているか否かに少なくとも部分的に基づいて、前記２回目に、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第２のサブセットを決定する、請求項１７に記載の制御システム。
【請求項１９】
前記マスタ・プロセッサは、
前記複数の条件の前記第２のサブセットが前記動的環境内で発生することが予測される期間、
前記複数の条件が前記動的環境内で発生することが予測される特定のシーケンス、
前記動的環境の現在の状態、
前記動的環境内で実行された前記少なくとも１つの以前のアクション、
前記マスタ・プロセッサの前記応答時間、及び、
前記少なくとも１つのコプロセッサの少なくとも１つの属性、
のうちの少なくとも１つに基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第２のサブセットを決定する、請求項１７に記載の制御システム。
【請求項２０】
前記少なくとも１つのコプロセッサは、前記複数の条件のうちの少なくとも１つの監視される条件を表す少なくとも１つの入力信号を、受信及び処理するように構成され、
前記少なくとも１つのコプロセッサは、前記複数のアクションのうちの前記少なくとも１つの第２のアクションを表す前記第２の制御情報に対応する少なくとも１つの出力信号を、出力するように構成され、
前記少なくとも１つのコプロセッサの前記少なくとも１つの属性は、
前記少なくとも１つのコプロセッサの機能状況、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１の数、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第１のタイプ、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２の数、及び、
前記少なくとも１つのコプロセッサによって処理される前記少なくとも１つの入力信号の第２のタイプ、
のうちの少なくとも１つを備える、
請求項１９に記載の制御システム。
【請求項２１】
前記マスタ・プロセッサは、少なくとも１つのソース・コード待機ステートメントを表す少なくとも１つのコンパイル済み実行可能命令に基づいて、前記少なくとも１つのコプロセッサによる評価のために前記複数の条件の前記第２のサブセットを決定し、前記少なくとも１つのソース・コード待機ステートメントは、前記複数の条件の前記第２のサブセットのうちの前記少なくとも１つの条件、及び前記複数のアクションのうちの前記少なくとも１つの第２のアクションを指定する、請求項１７に記載の制御システム。
【請求項２２】
前記複数の条件のうちの監視される条件は少なくとも１つの入力信号によって表され、前記少なくとも１つのコプロセッサは、
前記監視される条件及び／又は第１の構成情報を表す前記少なくとも１つの入力信号を、前記条件の第２のサブセットの評価に関する前記マスタ・プロセッサから受信するための、少なくとも１つの入力インターフェース、
前記マスタ・プロセッサから受信する少なくとも１つの前記第１の構成情報を記憶するための専用メモリ、
前記複数のアクションのうちの前記少なくとも１つの第１のアクションを表す前記第１の制御情報を提供するための、少なくとも１つの出力インターフェース、及び、
前記少なくとも１つの入力インターフェース、前記専用メモリ、及び前記少なくとも１つの出力インターフェースに、通信可能に結合された少なくとも１つのコントローラであって、
前記第１のサブセットの前記少なくとも１つの条件が満たされているかどうかを決定するように、前記マスタ・プロセッサから受信する前記第１の構成情報に少なくとも部分的に基づいて、前記少なくとも１つの入力信号を処理すること、及び、
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記第１の制御情報を提供するように、前記少なくとも１つの出力インターフェースを制御すること、
を実行するように構成された、前記少なくとも１つのコントローラ、
を備える、請求項１に記載の制御システム。
【請求項２３】
前記少なくとも１つのコプロセッサの前記少なくとも１つのコントローラは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記マスタ・プロセッサに通知信号を伝送するように、前記少なくとも１つの出力インターフェースを制御するように構成された、請求項２２に記載の制御システム。
【請求項２４】
前記少なくとも１つの入力信号は複数の入力信号を含み、前記複数の入力信号のそれぞれの値は、所与の時点で、前記複数の条件のうちの前記監視される条件を表し、
前記少なくとも１つのコプロセッサの前記少なくとも１つの入力インターフェースは、前記複数の入力信号を受信するように構成された、
請求項２２に記載の制御システム。
【請求項２５】
前記複数の入力信号の前記それぞれの値は、
前記監視される条件を表す複数のリアルタイム値、
前記監視される条件を表す複数のラッチされた値
前記監視される条件を表す少なくとも１つのマルチビット・デジタル値、及び、
前記監視される条件を構成する異なる感知パラメータをそれぞれ表す、複数のバイナリ値、
のうちの少なくとも１つを備える、請求項２４に記載の制御システム。
【請求項２６】
前記少なくとも１つのコプロセッサによって前記マスタ・コントローラから受信される前記第１の構成情報は、前記少なくとも１つのコプロセッサによる評価のために前記条件の第１のサブセットを成文化する第１の実行可能プログラムを含み、
前記少なくとも１つのコプロセッサの前記少なくとも１つの入力インターフェースは、前記第１の実行可能プログラムを受信するように構成され、
前記少なくとも１つのコプロセッサの前記専用メモリは、前記少なくとも１つの入力インターフェースによって受信された場合、前記第１の実行可能プログラムを記憶し、
前記少なくとも１つのコプロセッサの前記少なくとも１つのコントローラは、前記監視される条件を表す前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記条件の第１のサブセットを評価するように、前記第１の実行可能プログラムを実行するための中央処理ユニットを含む、
請求項２２に記載の制御システム。
【請求項２７】
前記少なくとも１つのコプロセッサによって前記マスタ・コントローラから受信される前記第１の構成情報は、前記少なくとも１つのコプロセッサによる評価のために前記条件の第１のサブセットを表す少なくとも１つの条件／アクション・ペアを含み、
前記少なくとも１つのコプロセッサの前記少なくとも１つの入力インターフェースは、前記少なくとも１つの条件／アクション・ペアを受信するように構成され、
前記少なくとも１つのコプロセッサの前記専用メモリは、前記少なくとも１つの入力インターフェースによって受信された場合、前記少なくとも１つの条件／アクション・ペアを記憶し、
前記少なくとも１つのコプロセッサの前記少なくとも１つのコントローラは、前記監視される条件を表す前記少なくとも１つの入力信号に少なくとも部分的に基づいて、前記少なくとも１つの条件／アクション・ペアを評価するためのデジタル論理回路を含む、
請求項２２に記載の制御システム。
【請求項２８】
Ａ）前記専用メモリは、前記少なくとも１つの条件／アクション・ペアを記憶するための少なくとも１つのレジスタを含み、
Ｂ）前記少なくとも１つの条件／アクション・ペアは、評価されることになる前記条件の第１のサブセットのうちの特定の条件を表すそれぞれの値を有する第１のビット数と、前記特定の条件が満たされた場合に実行されることになる対応するアクションを表すそれぞれの値を有する第２のビット数とを含み、
Ｃ）前記デジタル論理回路は、
Ｃ１）少なくとも１つの比較器であって、
前記特定の条件を表す前記第１のビット数の前記それぞれの値、及び、前記監視される条件を表す前記少なくとも１つの入力信号の前記少なくとも１つの値を比較するため、及び、
前記特定の条件が前記監視される条件に合致する場合、合致信号を提供するための、
比較器と、
Ｃ２）前記専用メモリの前記少なくとも１つのレジスタに結合され、前記合致信号が前記比較器によってアサートされた場合、実行されることになる前記対応するアクションを表す前記第２のビット数を前記少なくとも１つの出力インターフェースに提供するために、前記合致信号を受信するように前記比較器に結合された、少なくとも１つのゲートと、
を含み、
前記少なくとも１つの出力インターフェースは、前記第２のビット数を前記第１の制御情報として提供する、
請求項２７に記載の制御システム。
【請求項２９】
前記少なくとも１つの出力インターフェースは、前記特定の条件が前記監視される条件に合致することを示すために、前記合致信号を通知信号として前記マスタ・プロセッサに提供する、請求項２８に記載の制御システム。
【請求項３０】
前記専用メモリは、固定された最大数の条件／アクション・ペアを記憶するように構成され、
前記最大数の条件／アクション・ペア及び前記少なくとも１つのレジスタのサイズのうちの少なくとも１つは、前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記第１の制御情報を提供するために、前記動的環境内で必要な応答時間によって定義された最大許容レイテンシーに少なくとも部分的に基づく、
請求項２８に記載の制御システム。
【手続補正書】
【提出日】令和2年2月21日(2020.2.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の条件を有する動的環境を監視及び制御するための制御システムであって、前記複数の条件に応答して複数のアクションが必要とされ、前記制御システムは、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合され、コプロセッサ・メモリを含む少なくとも１つのコプロセッサ、
を備え、
動作中、前記マスタ・プロセッサは、前記コプロセッサ・メモリ内にコンテンツをロードして、前記少なくとも１つのコプロセッサを、
前記複数の条件のうちの少なくとも１つの監視される条件を表す少なくとも１つの入力信号を受信することと、前記複数の条件の第１のサブセットのうちの少なくとも１つの条件が満たされているかどうかを決定するように前記少なくとも１つの入力信号を処理することとによって、前記第１のサブセットのみを評価するように、及び
前記第１のサブセットのうちの前記少なくとも１つの条件が満たされた場合、前記複数のアクションのうちの少なくとも１つのアクションを表す第１の制御情報を提供するように、
構成し、
前記少なくとも１つのコプロセッサによって評価される、前記複数の条件の前記第１のサブセットのうちの前記少なくとも１つの条件は、第１のオブジェクトの検出を含む第１の条件を含み、
前記少なくとも１つのコプロセッサによって受信及び処理される前記少なくとも１つの入力信号は、前記第１のオブジェクトの前記検出を表す部品検出信号を含み、
前記少なくとも１つのコプロセッサは、前記部品検出信号を処理して、前記第１のオブジェクトの前記検出によって前記第１の条件が満たされているかどうかを決定し、
前記少なくとも１つのコプロセッサが、前記第１の条件が満たされていると決定した場合、前記少なくとも１つのコプロセッサは、前記少なくとも１つのアクションを表す前記第１の制御情報内に前記第１のオブジェクトに関する第１の識別子を含む、
制御システム。
【請求項２】
前記少なくとも１つのコプロセッサが、前記第１のオブジェクトの前記検出によって、前記第１の条件が満たされていると決定した場合、前記少なくとも１つのコプロセッサは、前記マスタ・プロセッサに、通知信号を伝送する、請求項１に記載の制御システム。
【請求項３】
前記マスタ・プロセッサは、前記少なくとも１つのコプロセッサから受信した前記通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に他のコンテンツをロードして、
前記複数の条件の前記第１のサブセットに含まれていない少なくとも１つの新しい条件を評価するように、及び
前記少なくとも１つの新しい条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、
前記少なくとも１つのコプロセッサに再タスクを課す、
請求項２に記載の制御システム。
【請求項４】
前記少なくとも１つのアクションを表す前記第１の制御情報は、第１のデータ・パケットを含み、
前記第１のオブジェクトに関する前記第１の識別子は、前記第１のデータ・パケット内にメタデータとして含まれる、
請求項１に記載の制御システム。
【請求項５】
前記第１のオブジェクトは、組み立て又は検査ライン上の第１の部品であり、
前記第１のオブジェクトに関する前記第１の識別子は、前記組み立て又は検査ライン上の前記第１の部品の部品番号又はインスタンス番号である、
請求項１に記載の制御システム。
【請求項６】
前記少なくとも１つのコプロセッサによって評価される前記複数の条件の前記第１のサブセットのうちの前記少なくとも１つの条件は、前記第１のオブジェクトの検出を含む前記第１の条件、及び前記第１のオブジェクトの特定のポジションを決定することを含む第２の条件を含み、
前記少なくとも１つのコプロセッサが、前記第１のオブジェクトが検出され、かつ前記特定のポジションに達したと決定した場合、前記少なくとも１つのコプロセッサは、前記第１の制御情報内に、前記第１のオブジェクトに関する前記第１の識別子を含む、
請求項１に記載の制御システム。
【請求項７】
前記少なくとも１つのコプロセッサが、前記第１のオブジェクトが検出され、かつ前記特定のポジションに達したと決定した場合、前記少なくとも１つのコプロセッサは、前記マスタ・プロセッサに、少なくとも１つの通知信号を伝送する、請求項６に記載の制御システム。
【請求項８】
前記マスタ・プロセッサは、前記少なくとも１つのコプロセッサから受信した前記少なくとも１つの通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に他のコンテンツをロードして、
前記複数の条件の前記第１のサブセットに含まれていない少なくとも１つの新しい条件を評価するように、及び
前記少なくとも１つの新しい条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、
前記少なくとも１つのコプロセッサに再タスクを課す、
請求項７に記載の制御システム。
【請求項９】
前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第１のオブジェクトの検出を含む前記第１の条件を指定する第１の待機ステートメントを表す第１のコンテンツをロードし、
前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第１のオブジェクトの前記特定のポジションを決定することを含む前記第２の条件を指定する第２の待機ステートメントを表す第２のコンテンツをロードし、
前記少なくとも１つのコプロセッサは、前記第１の待機ステートメントを表す前記第１のコンテンツ、及び前記第２の待機ステートメントを表す前記第２のコンテンツを評価して、前記第１のオブジェクトが検出され、かつ前記特定のポジションに達したかどうかを決定する、
請求項６に記載の制御システム。
【請求項１０】
前記少なくとも１つのアクションは、前記第１のオブジェクトの少なくとも１つの静止イメージ及び／又は少なくとも１つのビデオを撮影することを含み、
前記少なくとも１つのアクションを表す前記第１の制御情報は、前記第１のオブジェクトに関する前記第１の識別子と、前記第１のオブジェクトの前記少なくとも１つの静止イメージ及び／又は前記少なくとも１つのビデオを少なくとも１つのカメラに撮影させる命令とを含む、
請求項１に記載の制御システム。
【請求項１１】
前記第１の制御情報は、第１のデータ・パケットを含み、
前記第１のオブジェクトに関する前記第１の識別子は、前記第１のデータ・パケット内にメタデータとして含まれる、
請求項１０に記載の制御システム。
【請求項１２】
前記第１のオブジェクトは、組み立て又は検査ライン上の第１の部品であり、
前記第１のオブジェクトに関する前記第１の識別子は、前記組み立て又は検査ライン上の前記第１の部品の部品番号又はインスタンス番号である、
請求項１１に記載の制御システム。
【請求項１３】
前記少なくとも１つのコプロセッサによって評価される前記複数の条件の前記第１のサブセットのうちの前記少なくとも１つの条件は、
前記第１の部品の検出を含む、第１の条件、及び
前記検出された第１の部品の前記組み立て又は検査ライン上の特定のポジションを決定することを含む、第２の条件、
を含み、
前記少なくとも１つのコプロセッサによって受信及び処理される前記少なくとも１つの入力信号は、
前記部品検出信号を含む第１の入力信号、及び
カウンタによって出力されるそれぞれのカウンタ値を含み、かつ前記検出された第１の部品のそれぞれのポジションを表す、第２の入力信号、
を含み、
前記少なくとも１つのコプロセッサは、
前記第１の入力信号を処理して、前記第１の部品の検出によって前記第１の条件が満たされているかどうかを決定し、
前記第２の入力信号を処理して、前記検出された第１の部品が前記組み立て又は検査ライン上の前記特定のポジションに達したと決定することによって前記第２の条件が満たされているかどうかを決定し、
前記少なくとも１つのコプロセッサが、前記第１の部品が検出され、かつ前記組み立て又は検査ライン上の前記特定のポジションに達したと決定した場合、前記第１のデータ・パケット内に、前記第１の部品に関する前記部品番号又は前記インスタンス番号と、前記第１の部品の前記少なくとも１つの静止イメージ及び／又は前記少なくとも１つのビデオを前記少なくとも１つのカメラに撮影させる前記命令とを含む、
請求項１２に記載の制御システム。
【請求項１４】
前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第１の部品の検出を含む前記第１の条件を指定する第１の待機ステートメントを表す第１のコンテンツをロードし、
前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記検出された第１の部品の前記組み立て又は検査ライン上の前記特定のポジションを決定することを含む前記第２の条件を指定する第２の待機ステートメントを表す、第２のコンテンツをロードし、
前記少なくとも１つのコプロセッサは、前記第１の待機ステートメントを表す前記第１のコンテンツ、及び前記第２の待機ステートメントを表す前記第２のコンテンツを評価して、前記第１のオブジェクトが検出され、かつ前記特定のポジションに達したかどうかを決定する、
請求項１３に記載の制御システム。
【請求項１５】
前記少なくとも１つのアクションは、
前記第１の条件に対応する複数の第１のアクション、及び
前記第２の条件に対応する複数の第２のアクション、
を含み、
前記複数の第１のアクションは、
前記組み立て又は検査ライン上の前記第１の部品の検出ポジションを表す第１のカウンタ値で前記カウンタをラッチすること、及び
前記第１の部品の前記部品番号又は前記インスタンス番号を設定すること、
を含み、
前記複数の第２のアクションは、
前記第１の部品の前記部品番号又は前記インスタンス番号と、前記第１の部品の前記少なくとも１つの静止イメージ及び／又は前記少なくとも１つのビデオを前記少なくとも１つのカメラに撮影させる前記命令とを含む、前記第１のデータ・パケットを生成すること、及び
前記第１のデータ・パケットが、前記少なくとも１つのカメラに伝送されるようにすること、
を含み、
前記第１のコンテンツは、前記第１の条件及び前記複数の第１のアクションを指定する前記第１の待機ステートメントを表し、
前記第２のコンテンツは、前記第２の条件及び前記複数の第２のアクションを指定する前記第２の待機ステートメントを表し、
前記少なくとも１つのコプロセッサは、前記第１の待機ステートメントを評価し、前記第１の条件が満たされた場合、前記第１のコンテンツに基づいて前記複数の第１のアクションを実行し、
前記少なくとも１つのコプロセッサは、前記第２の待機ステートメントを評価し、前記第２の条件が満たされた場合、前記第２のコンテンツに基づいて前記複数の第２のアクションを実行する、
請求項１４に記載の制御システム。
【請求項１６】
前記第１のオブジェクトの前記少なくとも１つの静止イメージ及び／又は前記少なくとも１つのビデオは、前記少なくとも１つのカメラによって撮影されると、イメージ処理コンピュータによって処理されて、前記第１のオブジェクトの前記処理された少なくとも１つの静止イメージ及び／又は少なくとも１つのビデオから、イメージ情報が抽出され、
前記マスタ・プロセッサは、前記第１のオブジェクトの前記少なくとも１つの静止イメージ及び／又は前記少なくとも１つのビデオから前記抽出されたイメージ情報を、前記イメージ処理コンピュータから受信し、
前記マスタ・プロセッサは、前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に他のコンテンツをロードして、
前記複数の条件の前記第１のサブセットに含まれていない少なくとも１つの新しい条件を評価するように、及び
前記少なくとも１つの新しい条件が満たされた場合、前記複数のアクションのうちの少なくとも１つの第２のアクションを表す第２の制御情報を提供するように、
前記少なくとも１つのコプロセッサに再タスクを課す、
請求項１０に記載の制御システム。
【請求項１７】
前記マスタ・プロセッサが前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報は、前記第１のオブジェクトに関する前記第１の識別子を含む、請求項１６に記載の制御システム。
【請求項１８】
前記マスタ・プロセッサが前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報は、
前記第１のオブジェクトの特定のポジション及び／又は特定の向き、又は
前記第１のオブジェクトにおける特定の欠陥
のうちの少なくとも１つを示す、
請求項１７に記載の制御システム。
【請求項１９】
前記イメージ処理コンピュータを更に備え、前記イメージ処理コンピュータは、
しきい値処理、
セグメント化、
ブロブ抽出、
パターン認識、
バーコード及びデータ行列コード読み取り、
光学文字認識、
計測、
位置決め、
エッジ検出、
カラー分析、
形態学的フィルタリング、又は
テンプレート照合
のうちの少なくとも１つを含む、少なくとも１つのイメージ処理技法を実装する、
請求項１６に記載の制御システム。
【請求項２０】
前記少なくとも１つのカメラを更に備え、前記少なくとも１つのカメラは、前記イメージ処理コンピュータを含む、請求項１６に記載の制御システム。
【請求項２１】
工場組み立て又は検査ラインのための制御システムであって、前記工場組み立て又は検査ラインは、
前記工場組み立て又は検査ライン内の指定されたポイントにおける複数の工業機器であって、複数の部品が、先入れ先出し（ＦＩＦＯ）の順で、前記複数の部品の組み立て、梱包、及び／又は検査のために通過する、複数の工業機器、
前記工場組み立て又は検査ライン内の第１の指定されたポイントに近接する第１のセンサであって、前記複数の部品のうちの第１の部品を検出し、前記第１の部品を検出すると第１の部品検出信号を出力する、第１のセンサ、
カウンタ値を出力する第１の部品ポジション・カウンタであって、前記カウンタ値は、前記複数の部品のうちの前記第１の部品の、前記第１の指定されたポイントに対する前記工場組み立て又は検査ラインに沿ったそれぞれのポジションを表す、第１の部品ポジション・カウンタ、
前記工場組み立てライン内の第２の指定されたポイントに近接し、前記第１の部品の第１のイメージを獲得する第１のカメラであって、前記第２の指定されたポイントは、前記第１の指定されたポイントに対して前記第１の部品ポジション・カウンタによって出力される、第１の既知のカウンタ値を有する、第１のカメラ、及び
前記工場組み立てライン内の第３の指定されたポイントに近接し、前記第１の部品の第２のイメージを獲得する第２のカメラであって、前記第３の指定されたポイントは、前記第１の指定されたポイントに対して前記第１の部品ポジション・カウンタによって出力される、第２の既知のカウンタ値を有する、第２のカメラ、
を備え、
前記制御システムは、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合され、コプロセッサ・メモリを含む少なくとも１つのコプロセッサ、
を備え、
動作中、前記マスタ・プロセッサは、前記コプロセッサ・メモリ内にコンテンツをロードして、前記少なくとも１つのコプロセッサを、
Ａ）前記第１の部品検出信号を待機し、
Ｂ）前記第１の部品検出信号に応答して、
Ｂ１）前記第１の指定されたポイントに対応する第１のカウンタ値に、前記第１の部品ポジション・カウンタをラッチし、
Ｂ２）前記第１の部品に対応する第１の追跡インスタンス値を設定し、
Ｃ）前記第１のカメラが近接する前記工場組み立て又は検査ライン内の前記第２の指定されたポイントに対応する前記第１の既知のカウンタ値に等しい、第２のカウンタ値を、前記第１の部品ポジション・カウンタが出力するのを待機し、
Ｄ）前記第１の部品ポジション・カウンタが、前記第２のカウンタ値を出力することに応答して、前記第１のカメラに第１のトリガ・パケットを送信し、前記第１のトリガ・パケットは、第１のペイロードを含み、前記第１のペイロードは、前記第１の部品に対応する前記第１の追跡インスタンス値を含み、
Ｅ）前記第２のカメラが近接する前記工場組み立て又は検査ライン内の前記第３の指定されたポイントに対応する前記第２の既知のカウンタ値に等しい、第３のカウンタ値を、前記第１の部品ポジション・カウンタが出力するのを待機し、
Ｆ）前記第１の部品ポジション・カウンタが、前記第３のカウンタ値を出力することに応答して、前記第２のカメラに第２のトリガ・パケットを送信し、前記第２のトリガ・パケットは、第２のペイロードを含み、前記第２のペイロードは、前記第１の部品に対応する前記第１の追跡インスタンス値を含む
ように構成する、
制御システム。
【請求項２２】
少なくとも第１の条件及び第２の条件を有する動的環境を監視並びに制御するための制御システムであって、前記第１の条件に応答して少なくとも１つの第１のアクションが必要とされ、前記第２の条件に応答して少なくとも１つの第２のアクションが必要とされ、前記制御システムは、
マスタ・プロセッサ、及び
前記マスタ・プロセッサに通信可能に結合され、コプロセッサ・メモリを含む少なくとも１つのコプロセッサ、
を備え、
前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第１の条件及び前記少なくとも１つの第１のアクションを表す第１のコンテンツ、並びに前記第２の条件及び前記少なくとも１つの第２のアクションを表す第２のコンテンツをオフロードし、
前記少なくとも１つのコプロセッサは、
前記動的環境内の少なくとも１つの第１の監視された条件を表す少なくとも１つの第１の入力信号、及び
前記動的環境内の少なくとも１つの第２の監視された条件を表す少なくとも１つの第２の入力信号、
を受信し、
前記少なくとも１つのコプロセッサは、前記マスタ・プロセッサによって前記コプロセッサ・メモリ内にオフロードされた前記第１のコンテンツ及び前記第２のコンテンツに基づいて、前記少なくとも１つの第１の入力信号及び前記少なくとも１つの第２の入力信号を処理して、前記第１の条件が前記動的環境内で発生したかどうか、及び／又は前記第２の条件が前記動的環境内で発生したかどうかを、非同期的に評価し、
前記第１の条件が前記動的環境内で発生していた場合、前記少なくとも１つのコプロセッサは、第１の出力を生成して前記少なくとも１つの第１のアクションを引き起こし、
前記第２の条件が前記動的環境内で発生していた場合、前記少なくとも１つのコプロセッサは、第２の出力を生成して前記少なくとも１つの第２のアクションを引き起こす、
制御システム。
【請求項２３】
前記少なくとも１つのコプロセッサが、前記第１の条件が前記動的環境内で発生したと決定した場合、前記少なくとも１つのコプロセッサは、前記マスタ・プロセッサに、第１の通知信号を伝送し、
前記少なくとも１つのコプロセッサが、前記第２の条件が前記動的環境内で発生したと決定した場合、前記少なくとも１つのコプロセッサは、前記マスタ・プロセッサに、第２の通知信号を伝送する、
請求項２２に記載の制御システム。
【請求項２４】
前記マスタ・プロセッサは、前記少なくとも１つのコプロセッサから受信した前記第２の通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に前記第１のコンテンツをオフロードするか、
前記マスタ・プロセッサは、前記少なくとも１つのコプロセッサから受信した前記第１の通知信号に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に前記第２のコンテンツをオフロードするか、又は
前記マスタ・プロセッサは、前記少なくとも１つのコプロセッサから受信した前記第１の通知信号及び前記第２の通知信号の少なくとも一方に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に第３のコンテンツをオフロードして、前記動的環境の第３の条件を評価するように、前記少なくとも１つのコプロセッサに再タスクを課し、前記第３の条件に応答して第３のアクションが必要とされる、
請求項２３に記載の制御システム。
【請求項２５】
前記動的環境は、複数の部品が、前記複数の部品の組み立て、梱包、及び／又は検査のために通過する、工場組み立て及び／又は検査ラインであり、
前記第１の条件は、前記複数の部品のうちの第１の部品の検出を含み、
前記少なくとも１つの第１の入力信号は、前記工場組み立て及び／又は検査ライン上の第１のポジションにおける第１のセンサによって出力される部品検出信号を含み、
前記第２の条件は、前記第１の部品の前記工場組み立て及び／又は検査ライン上の第２のポジションを決定することを含み、
前記少なくとも１つの第２の入力信号は、カウンタによって出力され、前記第１の部品のそれぞれのポジションを表す、それぞれのカウンタ値を含み、
前記少なくとも１つのコプロセッサは、
前記少なくとも１つの第１の入力信号を処理して、前記第１の部品の検出によって前記第１の条件が満たされているかどうかを決定し、
前記少なくとも１つの第２の入力信号を処理して、前記第１の部品が前記工場組み立て及び／又は検査ライン上の前記第２のポジションに達したと決定することによって前記第２の条件が満たされているかどうかを決定する、
請求項２２に記載の制御システム。
【請求項２６】
前記少なくとも１つの第１のアクションは、
前記工場組み立て及び／又は検査ライン上の前記第１の部品の前記第１のポジションを表す第１のカウンタ値で前記カウンタをラッチすること、及び
前記第１の部品の部品番号又はインスタンス番号を設定すること、
を含み、
前記少なくとも１つの第２のアクションは、
前記第１の部品の前記部品番号又は前記インスタンス番号と、前記第１の部品の少なくとも１つの第１の静止イメージ及び／又は少なくとも１つの第１のビデオを、前記第２のポジションに近接する第１のカメラに撮影させる命令とを含む、第１のデータ・パケットを生成すること、及び
前記第１のデータ・パケットが、前記第１のカメラに伝送されるようにすること、
を含む、
請求項２５に記載の制御システム。
【請求項２７】
前記工場組み立て及び／又は検査ラインの前記動的環境は、第３の条件を有し、前記第３の条件に応答して少なくとも１つの第３のアクションが必要とされ、
前記マスタ・プロセッサは、前記コプロセッサ・メモリ内に、前記第３の条件及び前記少なくとも１つの第３のアクションを表す第３のコンテンツをオフロードし、
前記少なくとも１つのコプロセッサは、前記動的環境内の少なくとも１つの第３の監視された条件を表す少なくとも１つの第３の入力信号を受信し、
前記少なくとも１つのコプロセッサは、前記マスタ・プロセッサによって前記コプロセッサ・メモリ内にオフロードされた前記第１のコンテンツ、前記第２のコンテンツ、及び前記第３のコンテンツに基づいて、前記少なくとも１つの第１の入力信号、前記少なくとも１つの第２の入力信号、及び前記少なくとも１つの第３の入力信号を処理して、前記第１の条件、前記第２の条件、又は前記第３の条件のうちの少なくとも１つが前記動的環境内で発生したかどうかを非同期的に評価し、
前記第１の条件が前記動的環境内で発生していた場合、前記少なくとも１つのコプロセッサは、前記第１の出力を生成して前記少なくとも１つの第１のアクションを引き起こし、
前記第２の条件が前記動的環境内で発生していた場合、前記少なくとも１つのコプロセッサは、前記第２の出力を生成して前記少なくとも１つの第２のアクションを引き起こし、
前記第３の条件が前記動的環境内で発生していた場合、前記少なくとも１つのコプロセッサは、第３の出力を生成して前記少なくとも１つの第３のアクションを引き起こす、
請求項２６に記載の制御システム。
【請求項２８】
前記第３の条件は、前記第１の部品の前記工場組み立て及び／又は検査ライン上の第３のポジションを決定することを含み、
前記少なくとも１つの第３の入力信号は、前記カウンタによって出力され、前記第１の部品の前記それぞれのポジションを表す、前記それぞれのカウンタ値を含み、
前記少なくとも１つのコプロセッサは、前記少なくとも１つの第３の入力信号を処理して、前記第１の部品が前記工場組み立て及び／又は検査ライン上の前記第３のポジションに達したと決定することによって前記第３の条件が満たされているかどうかを決定し、
前記少なくとも１つの第３のアクションは、
前記第１の部品の前記部品番号又は前記インスタンス番号と、前記第１の部品の少なくとも１つの第２の静止イメージ及び／又は少なくとも１つの第２のビデオを、前記第３のポジションに近接する第２のカメラに撮影させる命令とを含む、第２のデータ・パケットを生成すること、及び
前記第２のデータ・パケットが、前記第２のカメラに伝送されるようにすること、
を含む、
請求項２７に記載の制御システム。
【請求項２９】
前記第１の部品の前記少なくとも１つの第２の静止イメージ及び／又は前記少なくとも１つの第２のビデオは、前記第２のカメラによって撮影されると、イメージ処理コンピュータによって処理されて、前記第１の部品の前記処理された少なくとも１つの第２の静止イメージ及び／又は少なくとも１つの第２のビデオから、イメージ情報が抽出され、
前記マスタ・プロセッサは、前記第１の部品の前記少なくとも１つの第２の静止イメージ及び／又は前記少なくとも１つの第２のビデオから前記抽出されたイメージ情報を、前記イメージ処理コンピュータから受信し、
前記マスタ・プロセッサは、前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報に少なくとも部分的に基づいて、前記コプロセッサ・メモリ内に第４のコンテンツをオフロードして、前記工場組み立て及び／又は検査ラインの前記動的環境の第４の条件を評価するように、前記少なくとも１つのコプロセッサに再タスクを課し、前記第４の条件に応答して第４のアクションが必要とされる、
請求項２８に記載の制御システム。
【請求項３０】
前記マスタ・プロセッサが前記イメージ処理コンピュータから受信した、前記抽出されたイメージ情報は、前記第１の部品の前記部品番号又は前記インスタンス番号を含み、かつ、
前記第１の部品の特定のポジション及び／又は特定の向き、又は
前記第１の部品における特定の欠陥
のうちの少なくとも１つを示す、
請求項２９に記載の制御システム。
【外国語明細書】
2020074166000001.pdf