(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-19
(45)【発行日】2024-04-30
(54)【発明の名称】機器制御システム、機器制御方法、および機器制御プログラム
(51)【国際特許分類】
B25J 19/00 20060101AFI20240422BHJP
【FI】
B25J19/00 J
(21)【出願番号】P 2023501968
(86)(22)【出願日】2021-02-26
(86)【国際出願番号】 JP2021007442
(87)【国際公開番号】W WO2022180805
(87)【国際公開日】2022-09-01
【審査請求日】2023-05-19
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】森若 良太
(72)【発明者】
【氏名】南田 裕喜
(72)【発明者】
【氏名】下留 諒
(72)【発明者】
【氏名】藤野 賀須男
(72)【発明者】
【氏名】弓場 忠輔
(72)【発明者】
【氏名】小林 和敏
【審査官】樋口 幸太郎
(56)【参考文献】
【文献】特許第6754883(JP,B1)
【文献】特開2007-226492(JP,A)
【文献】特開2009-289131(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 19/00
(57)【特許請求の範囲】
【請求項1】
ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得する取得部と、
前記通信データに基づいて、前記ローカル機器と前記コントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定する判定部と、
前記同期エラーが発生した場合に、前記ローカル機器および前記コントローラのうちの少なくとも一方に関連するエラー処理を実行するエラー処理部と、
を備え
、
前記コントローラは第1処理を繰り返し実行し、
前記ローカル機器は第2処理を繰り返し実行し、
前記コントローラは、前記第1処理の少なくとも一部として、前記コントローラと前記ローカル機器との時刻同期に基づく該コントローラのコントローラ時刻に基づく処理時刻を示す前記通信データを、前記非定周期通信により前記ローカル機器に向けて送信する送信部を備え、
前記ローカル機器は、前記第2処理の少なくとも一部として、前記送信された通信データで示される前記処理時刻を参照して、該通信データに対応する処理を該処理時刻に実行して、前記非定周期通信に基づく定周期通信を維持する実行部を備え、
前記同期エラーは、前記コントローラと前記ローカル機器との時刻同期に関するエラーである時刻同期エラーを含み、
前記判定部は、前記繰り返しの度に、前記時刻同期エラーが発生したか否かを、前記定周期通信の1以上の通信周期分の前記通信データに基づいて判定し、
前記エラー処理部は、前記時刻同期エラーが発生した場合に、該時刻同期エラーに対応する前記エラー処理を実行する、
機器制御システム。
【請求項2】
前記同期エラーは、前記コントローラと前記ローカル機器との間のパケット伝送に関するエラーである通信エラーを更に含み、
前記エラー処理部は、前記通信エラーが発生した場合と前記時刻同期エラーが発生した場合とで、互いに異なる前記エラー処理を実行する、
請求項
1に記載の機器制御システム。
【請求項3】
前記エラー処理部は、前記時刻同期エラーが発生した場合に、前記ローカル機器および前記コントローラを停止させる、
請求項
1または2に記載の機器制御システム。
【請求項4】
前記エラー処理部は、手動による再起動が必要であるように、前記ローカル機器および前記コントローラを停止させる、
請求項
3に記載の機器制御システム。
【請求項5】
前記エラー処理部は、前記時刻同期に関する前記通信データの受信がタイムアウトした場合に、前記ローカル機器および前記コントローラを停止させる、
請求項
3または4に記載の機器制御システム。
【請求項6】
前記エラー処理部は、前記時刻同期に関する初期化が失敗した場合に、前記ローカル機器および前記コントローラを停止させる、
請求項
3~5のいずれか一項に記載の機器制御システム。
【請求項7】
前記エラー処理部は、前記コントローラのコントローラ時刻と前記ローカル機器のローカル時刻との時間差が所与の閾値よりも大きい場合に、前記ローカル機器および前記コントローラを停止させる、
請求項
3~6のいずれか一項に記載の機器制御システム。
【請求項8】
前記エラー処理部は、前記通信エラーが発生した場合に、前記ローカル機器の種類に応じて前記エラー処理を実行する、
請求項
2に記載の機器制御システム。
【請求項9】
前記ローカル機器は第1種機器および第2種機器を含み、
前記エラー処理部は、
前記第1種機器で前記通信エラーが発生した場合に、前記第1種機器を停止させ、
前記第2種機器で前記通信エラーが発生した場合に、前記第2種機器の動作を継続させる、
請求項
8に記載の機器制御システム。
【請求項10】
前記第1種機器は、制御対象のモーションを実現するための機器であり、
前記エラー処理部は、前記通信エラーが発生した場合に、前記モーションが発生しないように前記第1種機器を停止させる、
請求項
9に記載の機器制御システム。
【請求項11】
前記判定部および前記エラー処理部は前記コントローラに実装され、
前記判定部は、前記非定周期通信の上り通信において前記通信エラーが発生したか否かを判定し、
前記エラー処理部は、前記通信エラーが発生した場合に、前記非定周期通信の下り通信を介して前記第1種機器に向けて停止コマンドを送信し、
前記第1種機器は、前記停止コマンドに基づいて停止する、
請求項
9または10に記載の機器制御システム。
【請求項12】
前記判定部および前記エラー処理部は前記第1種機器に実装され、
前記判定部は、前記非定周期通信の下り通信において前記通信エラーが発生したか否かを判定し、
前記エラー処理部は、前記通信エラーが発生した場合に、前記コントローラからのコマンドよりも優先して、前記第1種機器を停止させる、
請求項
9または10に記載の機器制御システム。
【請求項13】
前記第2種機器は、入出力装置を有し、
前記エラー処理部は、前記通信エラーが発生した場合に、前記入出力装置の動作を継続させる、
請求項
9~12のいずれか一項に記載の機器制御システム。
【請求項14】
前記エラー処理部は、前記パケット伝送の遅延が所与の時間幅において継続した場合に、前記ローカル機器の種類に応じて前記エラー処理を実行する、
請求項
8~13のいずれか一項に記載の機器制御システム。
【請求項15】
前記エラー処理部は、前記パケット伝送を監視するウォッチドッグタイマにエラーが発生した場合に、前記ローカル機器の種類に応じて前記エラー処理を実行する、
請求項
8~14のいずれか一項に記載の機器制御システム。
【請求項16】
前記エラー処理部は、前記エラー処理の少なくとも一部として、前記通信エラーの解決に応答して、前記コントローラと前記ローカル機器との間のペアリングを再開させる、
請求項
8~15のいずれか一項に記載の機器制御システム。
【請求項17】
前記判定部は、前記同期エラーのレベルを更に判定し、
前記エラー処理部は、
前記同期エラーが第1レベルである場合に、前記エラー処理を実行し、
前記同期エラーが、前記第1レベルよりも低い第2レベルである場合に、該第2レベルが所与の時間幅において継続したことに応答して、前記エラー処理を実行する、
請求項1~
16のいずれか一項に記載の機器制御システム。
【請求項18】
前記エラー処理部は、前記同期エラーが前記第2レベルである場合に、前記同期を継続しつつ、該同期エラーに対応する警告メッセージを出力する、
請求項
17に記載の機器制御システム。
【請求項19】
前記非定周期通信の少なくとも一部は移動通信システムにより構成される、
請求項1~
18のいずれか一項に記載の機器制御システム。
【請求項20】
前記コントローラは、サーバ上に実装された仮想コントローラである、
請求項1~
19のいずれか一項に記載の機器制御システム。
【請求項21】
ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得するステップと、
前記通信データに基づいて、前記ローカル機器と前記コントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定するステップと、
前記同期エラーが発生した場合に、前記ローカル機器および前記コントローラのうちの少なくとも一方に関連するエラー処理を実行するステップと、
を含
み、
前記コントローラは第1処理を繰り返し実行し、
前記ローカル機器は第2処理を繰り返し実行し、
前記コントローラは、前記第1処理の少なくとも一部として、前記コントローラと前記ローカル機器との時刻同期に基づく該コントローラのコントローラ時刻に基づく処理時刻を示す前記通信データを、前記非定周期通信により前記ローカル機器に向けて送信する送信部を備え、
前記ローカル機器は、前記第2処理の少なくとも一部として、前記送信された通信データで示される前記処理時刻を参照して、該通信データに対応する処理を該処理時刻に実行して、前記非定周期通信に基づく定周期通信を維持する実行部を備え、
前記同期エラーは、前記コントローラと前記ローカル機器との時刻同期に関するエラーである時刻同期エラーを含み、
前記判定するステップでは、前記繰り返しの度に、前記時刻同期エラーが発生したか否かを、前記定周期通信の1以上の通信周期分の前記通信データに基づいて判定し、
前記エラー処理を実行するステップでは、前記時刻同期エラーが発生した場合に、該時刻同期エラーに対応する前記エラー処理を実行する、
機器制御方法。
【請求項22】
ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得するステップと、
前記通信データに基づいて、前記ローカル機器と前記コントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定するステップと、
前記同期エラーが発生した場合に、前記ローカル機器および前記コントローラのうちの少なくとも一方に関連するエラー処理を実行するステップと、
をコンピュータシステムに実行させ
、
前記コントローラは第1処理を繰り返し実行し、
前記ローカル機器は第2処理を繰り返し実行し、
前記コントローラは、前記第1処理の少なくとも一部として、前記コントローラと前記ローカル機器との時刻同期に基づく該コントローラのコントローラ時刻に基づく処理時刻を示す前記通信データを、前記非定周期通信により前記ローカル機器に向けて送信する送信部を備え、
前記ローカル機器は、前記第2処理の少なくとも一部として、前記送信された通信データで示される前記処理時刻を参照して、該通信データに対応する処理を該処理時刻に実行して、前記非定周期通信に基づく定周期通信を維持する実行部を備え、
前記同期エラーは、前記コントローラと前記ローカル機器との時刻同期に関するエラーである時刻同期エラーを含み、
前記判定するステップでは、前記繰り返しの度に、前記時刻同期エラーが発生したか否かを、前記定周期通信の1以上の通信周期分の前記通信データに基づいて判定し、
前記エラー処理を実行するステップでは、前記時刻同期エラーが発生した場合に、該時刻同期エラーに対応する前記エラー処理を実行する、
機器制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面は機器制御システム、機器制御方法、および機器制御プログラムに関する。
【背景技術】
【0002】
特許文献1には、ロボットと、加工装置と、ロボットを制御するロボットコントローラと、加工装置を制御する加工装置コントローラと、ロボットコントローラ及び加工装置コントローラに対する指令を生成するプログラマブルロジックコントローラとを備えるシステムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の一側面では、システムでの同期処理の安全を確保することが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係る機器制御システムは、ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得する取得部と、通信データに基づいて、ローカル機器とコントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定する判定部と、同期エラーが発生した場合に、ローカル機器およびコントローラのうちの少なくとも一方に関連するエラー処理を実行するエラー処理部とを備える。
【0006】
本開示の一側面に係る機器制御方法は、ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得するステップと、通信データに基づいて、ローカル機器とコントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定するステップと、同期エラーが発生した場合に、ローカル機器およびコントローラのうちの少なくとも一方に関連するエラー処理を実行するステップとを含む。
【0007】
本開示の一側面に係る機器制御プログラムは、ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得するステップと、通信データに基づいて、ローカル機器とコントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定するステップと、同期エラーが発生した場合に、ローカル機器およびコントローラのうちの少なくとも一方に関連するエラー処理を実行するステップとをコンピュータシステムに実行させる。
【発明の効果】
【0008】
本開示の一側面によれば、システムでの同期処理の安全を確保できる。
【図面の簡単な説明】
【0009】
【
図1】機器制御システムの全体の構成の一例を示す図である。
【
図2】機器制御システム内での状態遷移の一例を示す状態遷移図である。
【
図3】機器制御システム内での状態遷移の一例を示す状態遷移図である。
【
図4】機器制御システム内での状態遷移の一例を示す状態遷移図である。
【
図5】機器制御システムの機能構成の一例を示す図である。
【
図6】機器制御システムで用いられるコンピュータのハードウェア構成の一例を示す図である。
【
図7】機器制御システムの動作の一例を示すフローチャートである。
【
図8】機器制御システムの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0011】
[システムの概要]
図1は実施形態に係る機器制御システム1の全体の構成の一例を示す図である。機器制御システム1は、現実の作業環境(すなわちフィールド)に配置されたローカル機器3を制御するための仕組みである。一例では、機器制御システム1は少なくとも一つのコントローラサーバ2と少なくとも一つのローカル機器3とを備える。それぞれのコントローラサーバ2は、該コントローラサーバ2の演算装置上にソフトウェアによって実装された少なくとも一つの仮想コントローラ10を備える。それぞれの仮想コントローラ10は少なくとも一つのローカル機器3に向けて指令を送信することで該ローカル機器3を制御する。ローカル機器3にとって、仮想コントローラ10は上位コントローラであるといえる。一つの仮想コントローラ10は少なくとも一つのローカル機器3に対応する。複数の仮想コントローラ10が一つのローカル機器3に対応してもよい。
【0012】
機器制御システム1は複数種類のローカル機器3を備えてもよい。
図1はローカル機器3の例として移動ロボット4、定置ロボット5、NC工作機械6、環境センサ7、およびコンベヤ8を示す。移動ロボット4は自律走行可能なロボットである。一例では、移動ロボット4は、移動指令に応じて自律走行する無人搬送車と、作業指令に従ってワークに対する作業を実行するロボットとを備える。無人搬送車は例えば、電動式のAGV(Automated Guided Vehicle)でもよい。定置ロボット5は、作業環境内に(例えば床面に)固定されたロボットである。移動ロボット4および定置ロボット5はいずれも、6軸の垂直多関節ロボット、追加の1軸の関節が追加された7軸の冗長型ロボット、いわゆるスカラー型の多関節ロボット、または、いわゆるパラレルリンク型のロボットでもよい。一例では、移動ロボット4および定置ロボット5はいずれも先端部を有し、この先端部には処理の目的に応じたツールが取り付けられる。ツールの例として吸着ノズル、ロボットハンド、加工ツール、および溶接ガンが挙げられる。NC工作機械6は加工指令に従って切削等の機械加工をワークに施す装置である。環境センサ7はセンシング指令に従って、作業環境に関する情報を取得する装置である。環境センサ7は例えば、作業環境の画像を取得するカメラでもよいし、作業環境の温度を取得する温度センサでもよい。コンベヤ8は搬送指令に従ってワークを搬送する装置である。コンベヤ8の例としてベルトコンベヤおよびローラコンベヤが挙げられる。
【0013】
一例では、それぞれのローカル機器3は、ローカル機器3の主たる機能を発揮する機器本体20と、その機器本体20を制御するローカルコントローラ30とを備える。ローカルコントローラ30は仮想コントローラ10からの指令に従って機器本体20を制御し、その指令に対する応答を仮想コントローラ10に向けて送信する。この例ではローカルコントローラ30はローカル機器3の一要素である。別の例として、機器制御システム1においてローカルコントローラ30そのものがローカル機器3として存在してもよい。移動ロボット4または定置ロボット5を制御するローカルコントローラ30はロボットコントローラともいわれる。
【0014】
一例では、ローカル機器3はモーションを実現する制御対象と、入出力装置との少なくとも一方を含む。本開示において、「モーションを実現する」とは、現実空間において変位することを意味する。変位は、位置の変更(すなわち移動)、姿勢の変更、および形状の変更とのうちの少なくとも一つを含む。変位は視認可能でもよいし、ローカル機器3の筐体内で発生してもよい(すなわち、視認不可能でもよい)。制御対象は機器本体20およびローカルコントローラ30の少なくとも一方によって構成される。入出力装置は情報またはデータを入力または出力する装置であり、一例では変位することなく所与の位置において所与の姿勢を維持する。制御対象および入出力装置のいずれも、仮想コントローラ10からの指令に従ってローカルコントローラ30により制御される。
図1の例では、移動ロボット4、定置ロボット5、NC工作機械6、およびコンベヤ8は制御対象であり、環境センサ7は入出力装置であるといえる。
【0015】
一例では、仮想コントローラ10はローカル機器3を制御するための指令を生成する第1処理を繰り返し実行し、そのローカル機器3は、その指令に対応する処理を実行する第2処理を繰り返し実行する。この例において、機器制御システム1は、それぞれの仮想コントローラ10とそれぞれのローカル機器3との間で時刻を同期させて、それぞれのローカル機器3を定周期通信に基づいて動作させる。定周期通信が適用された場合には、仮想コントローラ10は所与の周期で指令を出力し、ローカル機器3はその周期でその指令に基づいて動作する。また、ローカル機器3はその周期で応答を仮想コントローラ10に向けて出力し、仮想コントローラ10はその周期で応答を取得する。
【0016】
一例では、機器制御システム1は外部のグローバル時計に基づくグローバル時刻を取得し、そのグローバル時刻に基づいて時刻同期を実行する。例えば、仮想コントローラ10はグローバル時計を有する時刻サーバ9に第1通信ネットワークNaを介して接続し、グローバル時刻をその時刻サーバ9から取得する。仮想コントローラ10およびローカル機器3は第2通信ネットワークNbを介して互いに接続され、グローバル時刻に基づいて同期された時刻に基づいて通信および制御を実行する。機器制御システム1の時刻同期を実現するために、Precision Time Protocol(PTP)、generalized PTP(gPTP)、Time Sensitive Networking(TSN)などの様々な手法が採用されてよい。仮想コントローラ10は時刻サーバ9以外の装置または手法によってグローバル時刻を取得してもよい。
【0017】
第1通信ネットワークNaおよび第2通信ネットワークNbはいずれも、有線ネットワークでも、無線ネットワークでも、またはこれらの組合せでもよい。第1通信ネットワークNaおよび第2通信ネットワークNbはいずれも、少なくとも一部に移動通信システムを含む方式で構築されてもよい。一例では、第1通信ネットワークNaはインターネットによって構成されてもよいし、イーサネット(登録商標)などのローカルエリアネットワークによって構成されてもよい。第2通信ネットワークNbは例えば、第5世代移動通信システム(5G)などの移動通信システムによって構成されてもよい。一例では、第1通信ネットワークNaおよび第2通信ネットワークNbは、非定周期通信を採用するネットワークである。したがって、第2通信ネットワークNbにおける非定周期通信の少なくとも一部は移動通信システムによって構成されてもよい。この例では、機器制御システム1はその第2通信ネットワークNb(すなわち非定周期通信)を用いて仮想コントローラ10とローカル機器3との時刻同期を実行し、さらに、定周期通信を実現する。ここで、定周期通信とは、予め定められたフォーマットに従って一定時間ごとに情報通信を行う通信方式をいう。一方、非定周期通信とは、データ通信のタイミングが必ずしも定められていない通信方式をいう。
【0018】
一例では、第5世代移動通信システム(5G)の実用化により高速無線通信が可能となったため、有線通信を介した機器制御だけでなく、無線通信を介した機器制御の可能性も高まっている。ローカル機器3がロボットを含む場合には、機器制御システムはクラウドロボティックスシステムとして実現され得る。一方で、5Gなどによる非定周期通信を介して指令および応答が送受信される場合、通信ネットワーク内の様々な要因により、指示または応答の受信のタイミングに無視できない揺らぎが生じ、定周期通信の実行が困難になる可能性がある。一例では、機器制御システム1は定周期通信の信頼性を向上させるために、仮想コントローラ10およびローカル機器3は、指令または応答を示すメッセージと、そのメッセージに対応する処理を実行する時刻とを含む通信データを互いに送受信する。その時刻はメッセージの開封時刻ともいうことができる。本開示ではその時刻(開封時刻)を処理時刻ともいう。
【0019】
仮想コントローラ10は第1処理を繰り返し実行し、そのローカル機器3は第2処理を繰り返し実行すると仮定する。仮想コントローラ10は第1処理の少なくとも一部として、処理時刻を示す通信データを第2通信ネットワークNb経由で(すなわち非定周期通信により)ローカル機器3に向けて送信する。ローカル機器3は第2処理の少なくとも一部として、その通信データで示される処理時刻を参照して、該通信データに対応する処理を該処理時刻に実行する。これは、その処理時刻が到来するまでローカル機器3がメッセージをバッファリングして、処理時刻が到来して初めて、そのメッセージを呼び出して処理を実行することを意味する。このバッファリングによって、非定周期通信による通信データの送受信のタイミングの揺らぎ(誤差)が吸収されて、定周期通信が維持される。
【0020】
上述したように機器制御システム1内で時刻同期が行われ、同期された時刻に基づいて処理時刻が設定されることで、それぞれの仮想コントローラ10およびそれぞれのローカル機器3が適切なタイミングでメッセージを呼び出すことができる。仮想コントローラ10およびローカル機器3のそれぞれでの繰り返し実行においてその処理時刻が用いられることで、定周期通信に基づく処理(定周期制御)が実現される。
【0021】
一例では、機器制御システム1は、その定周期制御を妨げる現象、すなわち、仮想コントローラ10とローカル機器3との間の同期に関するエラーが発生した場合に、所与のエラー処理を実行する。本開示ではそのエラーを同期エラーともいう。エラー処理は、機器制御システム1での同期処理の安全を確保するための処理である。
【0022】
図2~
図4を参照しながら、エラー処理を考慮した機器制御システム1の状態遷移について説明する。
図2~
図4はいずれも、機器制御システム1内での状態遷移の一例を示す状態遷移図である。
【0023】
図2は、コントローラサーバ2、仮想コントローラ10、ローカル機器3などの、機器制御システム1内の個々の装置に着目した状態遷移を示す。この例では、装置は電源が入ると「初期化」状態となり、その後の起動によって「正常動作」の状態に移る。その正常動作においてプロセッサから電源断の割り込み信号が出力されると、装置は「シャットダウン」状態に移る。初期化または正常動作において、デバッグなどのためにプロセッサから停止命令が出力されると、装置は「一時停止」状態に移る。一時停止した装置は、プロセッサからのRUN命令によって正常動作に復帰し、プロセッサからの電源断の割り込み信号によってシャットダウンする。初期化、正常動作、または一時停止の状態において致命的な異常が発生すると、装置は「異常終了」状態に移る。
【0024】
図3は、仮想コントローラ10とローカル機器3との間のネットワーク接続(すなわち通信)に着目した状態遷移を示す。この例では、パラメータ設定などの初期化が完了すると状態は「初期化」から「ペアリング待ち」に移り、その後にペアリングが開始されると状態は「ペアリング待ち」から「通信正常」に移る。「通信正常」の状態において第1レベルの通信エラーが発生すると、状態は「通信異常」に移る。「通信正常」の状態において、第1レベルよりも低い第2レベルの通信エラーが発生すると、状態は「通信警告」に移り、その通信エラーが解決されると状態は「通信正常」に戻る。状態が「通信警告」であるときに、第1レベルの通信エラーが発生するか、もしくは第2レベルの通信エラーが所与の時間幅において継続すると、状態は「通信異常」に移る。「通信異常」の原因になった通信エラーが解決されると状態は「ペアリング待ち」に移る。状態が「通信正常」または「通信警告」である際にペアリングが停止された際も状態は「ペアリング待ち」に移る。初期化、ペアリング待ち、通信正常、または通信警告において、デバッグなどのためにプロセッサから停止命令が出力されると、装置は「一時停止」状態に移る。一時停止した装置は、プロセッサからのRUN命令によって「ペアリング待ち」に移る。
【0025】
図3に示す通信エラーは同期エラーの一例である。この通信エラーは、仮想コントローラ10とローカル機器3との間のパケット伝送に関するエラーである。一例では、通信エラーは第1レベルおよび第2レベルという2種類に分類される。通信エラーのレベルとは、通信エラーの深刻さの程度を示す指標をいう。第1レベルは通信エラーの深刻さが所与の程度である場合をいい、第2レベルはその深刻さが第1レベルよりも低い場合をいう。通信エラーのレベルは、通信エラーを分類するために用いられる。
【0026】
図4は、仮想コントローラ10とローカル機器3との間の時刻同期に着目した状態遷移を示す。この例では、初期化が完了すると状態は「初期化」から「時刻正常」に移る。状態が「時刻正常」である際に第1レベルの時刻同期エラーが発生すると、状態は「時刻異常」に移る。「時刻正常」の状態において、第1レベルよりも低い第2レベルの時刻同期エラーが発生すると、状態は「時刻警告」に移り、その時刻同期エラーが解決されると状態は「時刻正常」に戻る。状態が「時刻警告」であるときに、第1レベルの時刻同期エラーが発生するか、もしくは第2レベルの時刻同期エラーが所与の時間幅において継続すると、状態は「時刻異常」に移る。時刻同期は機器制御システム1の正常な処理の前提である。したがって、機器制御システム1が「時刻異常」状態になった場合には、安全性の確保を考慮して、機器制御システム1は再起動されない限り復旧しない。時刻異常が解消されたことが確認された後に機器制御システム1の全体が再起動される。再起動された機器制御システム1は時刻同期の初期化を実行し、その初期化が成功して初めて「時刻正常」状態に戻る。
【0027】
図4に示す時刻同期エラーは同期エラーの一例である。この時刻同期エラーは、仮想コントローラ10とローカル機器3との時刻同期に関するエラーである。一例では、時刻同期エラーは第1レベルおよび第2レベルという2種類に分類される。時刻同期エラーのレベルとは、時刻同期エラーの深刻さの程度を示す指標をいう。第1レベルは時刻同期エラーの深刻さが所与の程度である場合をいい、第2レベルはその深刻さが第1レベルよりも低い場合をいう。時刻同期エラーのレベルは、時刻同期エラーを分類するために用いられる。
【0028】
[システムの構成]
図5を参照しながら、エラー処理に関する機器制御システム1の機能構成について説明する。
図5はその機能構成の一例を示す図である。この例ではローカル機器3の少なくとも一部としてローカルコントローラ30を示す。機器制御システム1は機能モジュールとして取得部101、判定部102、およびエラー処理部103を備える。取得部101は、仮想コントローラ10とローカルコントローラ30との間で第2通信ネットワークNb(非定周期通信)により伝送された通信データを取得する機能モジュールである。判定部102は、その通信データに基づいて、仮想コントローラ10とローカル機器3との間で同期エラーが発生したか否かを判定する機能モジュールである。エラー処理部103は、その同期エラーが発生した場合に、仮想コントローラ10およびローカル機器3のうちの少なくとも一方に関連するエラー処理を実行する機能モジュールである。エラー処理部103は、通信エラーが発生した場合には該通信エラーに対応するエラー処理を実行し、時刻同期エラーが発生した場合には該時刻同期エラーに対応するエラー処理を実行する。
図5の例では、取得部101、判定部102、およびエラー処理部103は仮想コントローラ10およびローカルコントローラ30の双方に実装される。
【0029】
一例では、仮想コントローラ10は指令部11、通信部12、時刻同期部13、判定部14、およびエラー処理部15を備える。指令部11は、ローカル機器3を制御するための指令の生成と、該指令に対応する処理時刻の設定とを実行する機能モジュールである。通信部12は第2通信ネットワークNbを介してローカルコントローラ30との間で通信データを送受信する機能モジュールである。この機能の少なくとも一部として、通信部12は、指令および処理時刻を示す通信データをローカルコントローラ30に向けて送信する。時刻同期部13は、仮想コントローラ10内のコントローラ時計によって示されるコントローラ時刻をグローバル時刻に同期させ、そのコントローラ時刻をローカルコントローラ30に通知するための通信データを生成する機能モジュールである。通信部12および時刻同期部13はいずれも取得部101の一例である。判定部14およびエラー処理部15はそれぞれ、判定部102およびエラー処理部103の一例である。
【0030】
一例では、ローカルコントローラ30は実行部31、通信部32、時刻同期部33、判定部34、およびエラー処理部35を備える。実行部31は、通信データで示される処理時刻を参照して、該通信データに対応する処理を該処理時刻に実行する機能モジュールである。通信部32は第2通信ネットワークNbを介して仮想コントローラ10との間で通信データを送受信する機能モジュールである。この機能の少なくとも一部として、通信部32は、指令および処理時刻を示す通信データを受信する。時刻同期部33は、ローカルコントローラ30内のローカル時計によって示されるローカル時刻をコントローラ時刻に同期させる機能モジュールである。通信部32および時刻同期部33はいずれも取得部101の一例である。判定部34およびエラー処理部35はそれぞれ、判定部102およびエラー処理部103の一例である。
【0031】
一例では、仮想コントローラ10は指令部11および通信部12の協働により、指令および処理時刻を示す通信データを繰り返し生成および送信する。ローカルコントローラ30は実行部31および通信部32の協働により、通信データを受信する度に、該通信データに基づき、指定された処理時刻に指令を実行する。
【0032】
図6は、機器制御システム1で用いられるコンピュータ200のハードウェア構成の一例を示す図である。例えば仮想コントローラ10およびローカルコントローラ30はこのコンピュータ200を用いて実現される。
【0033】
コンピュータ200は回路210を有する。回路210はプロセッサ211、メモリ212、ストレージ213、タイマ214、入出力ポート215、および通信ポート216を備える。これらのハードウェア要素のそれぞれの個数は1でもよいし2以上でもよい。ストレージ213は、コンピュータ200上の各機能モジュールを構成するためのプログラムを記録する。ストレージ213は、ハードディスク、不揮発性の半導体メモリ、磁気ディスク、光ディスクなどの、コンピュータ読み取り可能な記録媒体である。メモリ212は、ストレージ213からロードされたプログラム、プロセッサ211の演算結果などを一時的に記憶する。プロセッサ211は、メモリ212と協働してプログラムを実行することで、各機能モジュールを実現する。入出力ポート215は、プロセッサ211からの指令に応じて、機器本体、モニタ、または入力デバイスなどの対象装置220との間で電気信号の入出力を行う。入出力ポート215は機器本体への電力供給の役割も果たし得る。通信ポート216は、プロセッサ211からの指令に従って、通信ネットワークN(例えば第1通信ネットワークNaおよび第2通信ネットワークNbの少なくとも一つ)を介して他の装置との間でデータ通信を行う。
【0034】
[システムの動作]
本開示に係る機器制御方法の一例として、
図7および
図8を参照しながら、機器制御システム1の動作の一例を説明する。
図7は通信エラーに関する機器制御システム1の動作の一例を処理フローS1として示すフローチャートである。すなわち、一例では機器制御システム1は処理フローS1を実行する。
図8は時刻同期エラーに関する機器制御システム1の動作の一例を処理フローS2として示すフローチャートである。すなわち、一例では機器制御システム1は処理フローS2を実行する。基本的に、処理フローS1,S2は仮想コントローラ10およびローカルコントローラ30に共通である。したがって、以下では特に断わらない限り、取得部101、判定部102、およびエラー処理部103による処理として説明する。
【0035】
(通信エラーに関する処理)
図7を参照しながら通信エラーに関する処理を説明する。ステップS11では、取得部101が通信データを取得する。通信データは指令または応答を示すデータ項目を含んでもよいし、処理時刻を含んでもよいし、時刻同期のための情報を示すデータ項目を含んでもよい。いずれにしても、通信データは、時系列に沿ったパケットの順序を示す通信ステータスを含む。この通信ステータスは、カウンタ値、送信時刻、開封時刻などの様々な値によって表されてよい。ステップS11は、仮想コントローラ10では通信部12により実行され、ローカルコントローラ30では通信部32により実行される。
【0036】
ステップS12では、判定部102がその通信データに基づいて、通信エラーが発生したか否かを判定する。判定部102はこの判定処理を、定周期通信の1通信周期分の通信データに基づいて実行してもよいし、定周期通信の複数の通信周期にわたって蓄積された通信データの集合に基づいて実行してもよい。例えば、判定部102は1以上のパケットのそれぞれの通信ステータスを参照して、通信エラーが発生したか否かを判定する。通信エラーが発生していない場合には(ステップS13においてNO)、エラー処理は行われず、機器制御システム1は「通信正常」状態を維持する。通信エラーが発生した場合には(ステップS13においてYES)、処理はステップS14に進む。
【0037】
ステップS14に示すように、機器制御システム1の後続処理は通信エラーのレベル(すなわち、通信エラーの種類)によって異なる。判定部102はそのレベル(種類)を判定し、エラー処理部103はその判定に従ってエラー処理を実行する。
【0038】
通信エラーの判定に関する様々な例について説明する。判定部102は、通信データ(パケット伝送)を監視するウォッチドッグタイマにエラーが発生した場合に、通信エラーが第1レベルであると判定してもよい。ウォッチドッグタイマとは、コンピュータの動作を定期的に監視するためのタイマである。あるいは、判定部102は、通信データを示すパケットに関して遅延または順序エラーが発生した場合に、通信エラーが第2レベルであると判定してもよい。遅延とは、通信データ(パケット)の受信が、許容できない程度に所与のタイミング(予定されたタイミング)よりも遅れる現象をいう。順序エラーとは、パケットの到着の順序が指定された順序から変わる現象(例えば、第1パケットより後に受信されるべき第2パケットが、該第1パケットよりも先に受信される現象)をいう。
【0039】
通信エラーが第1レベルである場合には、処理はステップS15に進む。ステップS15では、エラー処理部103が「通信異常」に対応するエラー処理を実行する。例えば、エラー処理部103はローカル機器3の種類に応じてエラー処理を実行してもよい。一例として、エラー処理部103は第1種機器で通信エラーが発生した場合に該第1種機器を停止させ、第2種機器で通信エラーが発生した場合に該第2種機器の動作を継続させてもよい。一例では、第1種機器は、制御対象のモーションを実現するためのローカル機器3でもよい。この場合には、エラー処理部103は、通信エラーが発生した場合にその制御対象(例えば、移動ロボット4、定置ロボット5、NC工作機械6、またはコンベヤ8)を停止させる。一例では、第2種機器は、入出力装置を有するローカル機器3でもよい。この場合には、エラー処理部103は、通信エラーが第1レベルである場合にその入出力装置の動作を継続させる。
【0040】
第2通信ネットワークNb(非定周期通信)の上り通信および下り通信のいずれか一方で第1レベルの通信エラーが発生した場合には、仮想コントローラ10およびローカルコントローラ30のいずれか一方がエラー処理の中心的な役割を果たしてもよい。
【0041】
上り通信で通信エラーが発生した際の処理の一例を説明する。この例では、仮想コントローラ10の判定部14およびエラー処理部15がエラー処理の中心的な役割を果たす。判定部14は、通信部12により受信された通信データに基づいて、上り通信において通信エラーが発生したか否かを判定する。その通信エラーが発生した場合には、判定部14は通信エラーのレベルを更に判定する。通信部12による通信データの受信はステップS11に相当し、その通信データに基づく判定部14の処理はステップS12~S14に相当する。その通信エラーが第1レベルである場合には、エラー処理部15は、第2通信ネットワークNb(非定周期通信)の下り回線を介して第1種機器に向けて停止コマンドを送信する。この停止コマンドは第1種機器を停止させるための指令であり、停止コマンドの送信はステップS15に相当する。その第1種機器はその停止コマンドを受信し、該停止コマンドに基づいて停止する。例えば、第1種機器の一要素であるローカルコントローラ30が停止コマンドを受信し、その停止コマンドに従って、機器本体20を停止させる。
【0042】
下り通信で通信エラーが発生した際の処理の一例を説明する。この例では、第1種機器のローカルコントローラ30の判定部34およびエラー処理部35がエラー処理の中心的な役割を果たす。判定部34は、通信部32により受信された通信データに基づいて、下り通信において通信エラーが発生したか否かを判定する。通信エラーが発生した場合には、判定部34は通信エラーのレベルを更に判定する。通信部32による通信データの受信はステップS11に相当し、その通信データに基づく判定部34の処理はステップS12~S14に相当する。その通信エラーが第1レベルである場合には、エラー処理部35は、仮想コントローラ10から受信したが未実行の指令(コマンド)を実行することなく、機器本体20を停止させる。すなわち、エラー処理部35は仮想コントローラ10からのコマンドよりも優先して第1種機器を停止させる。この停止はステップS15に相当する。
【0043】
「通信異常」に対応するエラー処理を実行した後に、対応する通信エラーが解決された場合には、エラー処理部103はその解決に応答して、仮想コントローラ10とローカル機器3(例えばローカルコントローラ30)との間のペアリングを再開してもよい。エラー処理部103はこの再ペアリングを、ユーザ入力を契機にして実行してもよいし、ユーザ入力を受け付けることなく自動的に実行してもよい。ペアリングが再開されたことで、機器制御システム1は「通信異常」状態から「ペアリング待ち」状態に移り、その後に「通信正常」状態に復帰し得る。
【0044】
通信エラーが第2レベルである場合には、処理はステップS16に進む。ステップS16では、エラー処理部103が第2レベルの継続時間に基づいて、「通信警告」または「通信異常」に対応するエラー処理を実行する。例えば、エラー処理部103は仮想コントローラ10とローカル機器3との間の通信を維持しつつ、該通信エラーに対応する警告メッセージを出力する。これは「通信警告」に対応するエラー処理の一例である。この場合、仮想コントローラ10およびローカル機器3の間の通信は接続され続けるので通信データの送受信も継続され得る。エラー処理部103は警告メッセージを、表示装置上に表示してもよいし、スピーカから出力してもよいし、管理者端末などの所与のコンピュータに向けて送信してもよい。エラー処理部103は、第2レベルの通信エラーが所与の時間幅において継続した場合に、「通信異常」に対応するエラー処理(すなわち、ステップS15の処理)を実行してもよい。例えば、エラー処理部103は、通信データ(パケット伝送)の遅延および順序エラーの少なくとも一方がその時間幅において継続した場合に、ステップS15の処理を実行する。
【0045】
(時刻同期エラーに関する処理)
図8を参照しながら時刻同期エラーに関する処理を説明する。ステップS21では、取得部101が時刻同期に関する通信データを取得する。この通信データも通信ステータスを含む。一例では、ステップS21は、仮想コントローラ10では通信部12および時刻同期部13の少なくとも一方により実行され、ローカルコントローラ30では通信部32および時刻同期部33の少なくとも一方により実行される。
【0046】
ステップS22では、判定部102がその通信データに基づいて、時刻同期エラーが発生したか否かを判定する。判定部102はこの判定処理を、定周期通信の1通信周期分の通信データに基づいて実行してもよいし、定周期通信の複数の通信周期にわたって蓄積された通信データの集合に基づいて実行してもよい。例えば、判定部102は1以上のパケットのそれぞれの通信ステータスまたは所与のメッセージを参照して、時刻同期エラーが発生したか否かを判定する。時刻同期エラーが発生していない場合には(ステップS23においてNO)、エラー処理は行われず、機器制御システム1は「時刻正常」状態を維持する。時刻同期エラーが発生した場合には(ステップS23においてYES)、処理はステップS24に進む。
【0047】
ステップS24に示すように、機器制御システム1の後続処理は時刻同期エラーのレベル(すなわち、時刻同期エラーの種類)によって異なる。判定部102はそのレベル(種類)を判定し、エラー処理部103はその判定に従ってエラー処理を実行する。
【0048】
時刻同期エラーの判定に関する様々な例について説明する。判定部102は、時刻同期に関する通信データの受信がタイムアウトした場合に(すなわち、該通信データを受信しない時間が所与の許容時間を超えた場合に)、時刻同期エラーが第1レベルであると判定してもよい。あるいは、判定部102は時刻同期に関する初期化が失敗した場合に、時刻同期エラーが第1レベルであると判定してもよい。判定部102は、仮想コントローラ10のコントローラ時刻とローカル機器3のローカル時刻との時間差が所与の閾値よりも大きい場合に時刻同期エラーが第1レベルであると判定し、その時間差が該閾値以下の数値範囲内(以下ではこの数値範囲を「警告範囲」ともいう)にある場合に、時刻同期エラーが第2レベルであると判定してもよい。警告範囲の下限値は0より大きい。あるいは、判定部102は時刻同期のためのプロトコルの状態が所与の異常に該当する場合に、時刻同期エラーが第2レベルであると判定してもよい。
【0049】
時刻同期エラーが第1レベルである場合には、処理はステップS25に進む。ステップS25では、エラー処理部103が「時刻異常」に対応するエラー処理を実行する。例えば、エラー処理部103は仮想コントローラ10およびローカル機器3の双方を停止させる。エラー処理部103は、手動による再起動が必要であるように、仮想コントローラ10およびローカル機器3を停止させてもよい、一例では、エラー処理部15が仮想コントローラ10を停止させ、エラー処理部35がローカル機器3を停止させる。
【0050】
時刻同期エラーが第2レベルである場合には、処理はステップS26に進む。ステップS26では、エラー処理部103が第2レベルの継続時間に基づいて、「時刻警告」または「時刻異常」に対応するエラー処理を実行する。例えば、エラー処理部103は仮想コントローラ10とローカル機器3との間の時刻同期を継続させつつ、判定された時刻同期エラーに対応する警告メッセージを出力する。通信エラーの場合と同様に、警告メッセージは様々な手法により出力され得る。エラー処理部103は、第2レベルの時刻処理エラーが所与の時間幅において継続した場合に、「時刻異常」に対応するエラー処理(すなわち、ステップS25の処理)を実行してもよい。例えば、エラー処理部103は、コントローラ時刻とローカル時刻との時間差が警告範囲内である状況がn周期(nは2以上の整数)にわたって連続して発生した場合に、ステップS25の処理を実行する。
【0051】
一例では、処理フローS1,S2はいずれも所与の周期で繰り返し実行される。例えば、処理フローS1は定周期通信の通信周期に合わせて繰り返し実行されてもよい。処理フローS2は時刻同期の処理の周期に合わせて繰り返し実行されてもよい。処理フローS1,S2の周期は、互いに異なってもよいし、同じでもよい。また、処理フローS1,S2の周期は、同期されてもよいしされなくてもよい。
【0052】
処理フローS1,S2について上述したように、エラー処理部103は、通信エラーが発生した場合と時刻同期エラーが発生した場合とで、互いに異なるエラー処理を実行してよい。判定部102が同期エラーのレベルを更に判定する場合には、エラー処理部103はそのレベルに応じて動作する。一例では、エラー処理部103は、同期エラーが第1レベルである場合に、該第1レベルに対応するエラー処理を実行する。一例では、エラー処理部は、同期エラーが第2レベルである場合に、同期を継続しつつ、該同期エラーに対応する警告メッセージを出力する。エラー処理部103は、その第2レベルが所与の時間幅において継続したことに応答して、第1レベルに対応するエラー処理を実行してもよい。上述したように、機器制御システム1は個々の同期エラーに対して、その状況に応じた適切なエラー処理を実行する。
【0053】
[プログラム]
機器制御システム1の各機能モジュールは、プロセッサ211またはメモリ212の上に機器制御プログラムを読み込ませてプロセッサ211にそのプログラムを実行させることで実現される。機器制御プログラムは、機器制御システム1の各機能モジュールを実現するためのコードを含む。プロセッサ211は機器制御プログラムに従って入出力ポート215または通信ポート216を動作させ、メモリ212またはストレージ213におけるデータの読み出しおよび書き込みを実行する。このような処理により機器制御システム1の各機能モジュールが実現される。
【0054】
機器制御プログラムは、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、機器制御プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0055】
[効果]
以上説明したように、本開示の一側面に係る機器制御システムは、ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得する取得部と、通信データに基づいて、ローカル機器とコントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定する判定部と、同期エラーが発生した場合に、ローカル機器およびコントローラのうちの少なくとも一方に関連するエラー処理を実行するエラー処理部とを備える。
【0056】
本開示の一側面に係る機器制御方法は、ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得するステップと、通信データに基づいて、ローカル機器とコントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定するステップと、同期エラーが発生した場合に、ローカル機器およびコントローラのうちの少なくとも一方に関連するエラー処理を実行するステップとを含む。
【0057】
本開示の一側面に係る機器制御プログラムは、ローカル機器と、該ローカル機器を制御するコントローラとの間で非定周期通信により伝送された通信データを取得するステップと、通信データに基づいて、ローカル機器とコントローラとの間の同期に関するエラーである同期エラーが発生したか否かを判定するステップと、同期エラーが発生した場合に、ローカル機器およびコントローラのうちの少なくとも一方に関連するエラー処理を実行するステップとをコンピュータシステムに実行させる。
【0058】
このような側面においては、非定周期通信を用いた機器制御システムにおいて同期エラーが発生した場合にエラー処理が実行されるので、非定周期通信を用いた同期処理の安全を確保できる。
【0059】
他の側面に係る機器制御システムでは、コントローラは第1処理を繰り返し実行し、ローカル機器は第2処理を繰り返し実行してもよい。コントローラは、第1処理の少なくとも一部として、コントローラとローカル機器との時刻同期に基づく該コントローラのコントローラ時刻に基づく処理時刻を示す通信データを、非定周期通信によりローカル機器に向けて送信する送信部を備えてもよい。ローカル機器は、第2処理の少なくとも一部として、送信された通信データで示される処理時刻を参照して、該通信データに対応する処理を該処理時刻に実行する実行部を備えてもよい。この場合には、コントローラ時刻に基づいた処理時刻により、ローカル機器での処理の実行タイミングが設定され、定周期通信が実現される。そして、このような機器制御システムにおいて、同期エラーが発生した場合にエラー処理が実行される。したがって、非定周期通信上で定周期通信を実現する機器制御システムでの同期処理の安全性を担保できる。
【0060】
他の側面に係る機器制御システムでは、同期エラーは、コントローラとローカル機器との時刻同期に関するエラーである時刻同期エラーを含み、エラー処理部は、時刻同期エラーが発生した場合に、該時刻同期エラーに対応するエラー処理を実行してもよい。非定周期通信を用いることで発生し得る時刻同期エラーが判定されるので、時刻同期が難しくなる場合に適切にエラー処理を実行できる。
【0061】
他の側面に係る機器制御システムでは、同期エラーは、コントローラとローカル機器との間のパケット伝送に関するエラーである通信エラーを更に含んでもよい。エラー処理部は、通信エラーが発生した場合と時刻同期エラーが発生した場合とで、互いに異なるエラー処理を実行してもよい。非定周期通信を用いた機器制御システムにおいて、時刻同期エラーと通信エラーは本質的に異なるエラーである。この2種類のエラーのそれぞれに応じてエラー処理を変えることで、機器制御システムの安全性を高めることができる。
【0062】
他の側面に係る機器制御システムでは、エラー処理部は、時刻同期エラーが発生した場合に、ローカル機器およびコントローラを停止させてもよい。時刻同期エラーの際に機器制御システムを停止させることで、該システムの安全をより高めることができる。
【0063】
他の側面に係る機器制御システムでは、エラー処理部は、手動による再起動が必要であるように、ローカル機器およびコントローラを停止させてもよい。機器制御システムにおいて重要な時刻同期については、確実な復旧が確認できた際に再開することが望まれる。この仕組みにより機器制御システムの安全性を十分に担保できる。
【0064】
他の側面に係る機器制御システムでは、エラー処理部は、時刻同期に関する通信データの受信がタイムアウトした場合に、ローカル機器およびコントローラを停止させてもよい。時刻同期に関するデータを受信できないことは深刻なエラーであるといえる。このようなエラーの場合に機器制御システムを停止させることで、機器制御システムの安全を適切に確保できる。
【0065】
他の側面に係る機器制御システムでは、エラー処理部は、時刻同期に関する初期化が失敗した場合に、ローカル機器およびコントローラを停止させてもよい。時刻同期の初期化に失敗したということは時刻同期が不可能であることを意味するので、これは深刻なエラーであるといえる。このようなエラーの場合にシステムを停止させることで、機器制御システムの安全を適切に確保できる。
【0066】
他の側面に係る機器制御システムでは、エラー処理部は、コントローラのコントローラ時刻とローカル機器のローカル時刻との時間差が所与の閾値よりも大きい場合に、ローカル機器およびコントローラを停止させてもよい。時刻同期に影響する時間差が所与の基準を超えた場合にシステムを停止させることで、機器制御システムの安全を適切に確保できる。
【0067】
他の側面に係る機器制御システムでは、エラー処理部は、通信エラーが発生した場合に、ローカル機器の種類に応じてエラー処理を実行してもよい。ローカル機器の種類に応じてエラー処理を実行することで、エラーの状況に応じて機器制御システムの安全を適切に確保できる。
【0068】
他の側面に係る機器制御システムでは、ローカル機器は第1種機器および第2種機器を含んでもよい。エラー処理部は、第1種機器で通信エラーが発生した場合に、第1種機器を停止させ、第2種機器で通信エラーが発生した場合に、第2種機器の動作を継続させてもよい。ローカル機器の種類に応じてこのようにエラー処理を異ならせることで、状況に応じた柔軟なエラー処理が可能になる。
【0069】
他の側面に係る機器制御システムでは、第1種機器は、制御対象のモーションを実現するための機器であってもよい。エラー処理部は、通信エラーが発生した場合に、モーションが発生しないように第1種機器を停止させてもよい。意図しない影響を周辺に及ぼす可能性があるモーションを止めることで、機器制御システムの安全を確実に確保できる。
【0070】
他の側面に係る機器制御システムでは、判定部およびエラー処理部はコントローラに実装されてもよい。判定部は、非定周期通信の上り通信において通信エラーが発生したか否かを判定し、エラー処理部は、通信エラーが発生した場合に、非定周期通信の下り通信を介して第1種機器に向けて停止コマンドを送信し、第1種機器は、停止コマンドに基づいて停止してもよい。上り通信方向での通信エラーが発生した場合に、下り通信を用いて停止コマンドを第1種機器に向けて送信することで、第1種機器を確実に停止させることができる。
【0071】
他の側面に係る機器制御システムでは、判定部およびエラー処理部は第1種機器に実装されてもよい。判定部は、非定周期通信の下り通信において通信エラーが発生したか否かを判定し、エラー処理部は、通信エラーが発生した場合に、コントローラからのコマンドよりも優先して、第1種機器を停止させてもよい。この仕組みにより、下り通信方向での通信エラーが発生した場合に第1種機器を自律的に停止させることで、第1種機器を確実に停止させることができる。
【0072】
他の側面に係る機器制御システムでは、第2種機器は、入出力装置を有してもよい。エラー処理部は、通信エラーが発生した場合に、入出力装置の動作を継続させてもよい。この場合には、意図しない影響を通信エラーの際にも周辺に及ぼさない入出力装置に不要な指令を与えることなく、その入出力装置を稼働させ続けることができる。
【0073】
他の側面に係る機器制御システムでは、エラー処理部は、パケット伝送の遅延が所与の時間幅において継続した場合に、ローカル機器の種類に応じてエラー処理を実行してもよい。この仕組みにより、パケット伝送の長い遅延に対して機器制御システムの安全を適切に確保できる。
【0074】
他の側面に係る機器制御システムでは、エラー処理部は、パケット伝送を監視するウォッチドッグタイマにエラーが発生した場合に、ローカル機器の種類に応じてエラー処理を実行してもよい。この場合には、ウォッチドッグタイマのエラーに対してシステムの安全を適切に確保できる。
【0075】
他の側面に係る機器制御システムでは、エラー処理部は、エラー処理の少なくとも一部として、通信エラーの解決に応答して、コントローラとローカル機器との間のペアリングを再開させてもよい。この仕組みにより、通信エラーが解決された場合に、コントローラとローカル機器とを再接続できる。
【0076】
他の側面に係る機器制御システムでは、判定部は、同期エラーのレベルを更に判定してもよい。エラー処理部は、同期エラーが第1レベルである場合に、エラー処理を実行し、同期エラーが、第1レベルよりも低い第2レベルである場合に、該第2レベルが所与の時間幅において継続したことに応答して、エラー処理を実行してもよい。同期エラーのレベルが相対的に低い場合には、その状況の継続時間に基づいてエラー処理が実行されるので、機器制御システムの運用において安全と稼働とのバランスを取ることができる。
【0077】
他の側面に係る機器制御システムでは、エラー処理部は、同期エラーが第2レベルである場合に、同期を継続しつつ、該同期エラーに対応する警告メッセージを出力してもよい。エラーのレベルが相対的に低い場合には同期を維持しつつ警告メッセージを出力することで、機器制御システムに深刻なエラーが発生する前に、該エラーの予兆を通知できる。
【0078】
他の側面に係る機器制御システムでは、非定周期通信の少なくとも一部は移動通信システムにより構成されてもよい。この場合には、移動通信システムを非定周期通信に用いた仕組みにおいて同期処理の安全を確保できる。
【0079】
他の側面に係る機器制御システムでは、コントローラは、サーバ上に実装された仮想コントローラであってもよい。この場合には、コントローラを仮想化した仕組みにおいて同期処理の安全を確保できる。
【0080】
[変形例]
以上、本開示での実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0081】
機器制御システムにおける上位コントローラは、仮想コントローラではなく、専用のハードウェア構成を有する装置であってもよい。
【0082】
本開示において、同期エラーのレベルは同期エラーを分類するための便宜的な情報である、ともいえる。機器制御システムは、そのレベルを用いることなく、同期エラーの種類に応じてエラー処理を実行してよい。
【0083】
上記の例では仮想コントローラ10またはローカルコントローラ30がエラー処理のための機能モジュールを備える。これに加えてまたは代えて、第2通信ネットワークNb内を構成する通信装置またはコンピュータがその機能モジュールを備えてもよい。例えば、その通信装置またはコンピュータは、取得部、判定部、およびエラー処理部のうちの少なくとも一つを備えてもよい。
【0084】
システムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上記実施形態における機能モジュールの少なくとも一部が、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0085】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ(処理)の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0086】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
【符号の説明】
【0087】
1…機器制御システム、2…コントローラサーバ、3…ローカル機器、9…時刻サーバ、10…仮想コントローラ、11…指令部、12…通信部(取得部)、13…時刻同期部(取得部)、14…判定部、15…エラー処理部、20…機器本体、30…ローカルコントローラ、31…実行部、32…通信部(取得部)、33…時刻同期部(取得部)、34…判定部、35…エラー処理部、101…取得部、102…判定部、103…エラー処理部、Na…第1通信ネットワーク、Nb…第2通信ネットワーク。