(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
ロボットや工作機械等の産業機械(以下、単に機械という)を制御する制御装置は、様々なデータのバックアップを行う機能を有することが一般的である。例えば制御装置は、停電等により制御装置の電源がUPS(無停電電源装置)に切り替わったことを検知すると、制御装置の再開に必要なメモリ上のデータを所定のストレージデバイス(以下、単にストレージという)にバックアップした後、制御装置自身をシャットダウンする。また、停電のようなイベント発生時だけでなく、定期的に上述のようなバックアップを実行することで、システムの可用性を高めている。
【0003】
バックアップされたデータに不整合があると、再開時に機械が立ち上がらなかったり、正常に運転できず加工不良やクラッシュなどが発生して、多大な損失をこうむるおそれがある。また、整合性のとれたデータがバックアップされていれば、バックアップデータを同様の機械及び制御装置を備える別のシステムに移植することにより、移植先のシステムの立ち上げを比較的簡便に行うことができる。
【0004】
マルチプロセッサやマルチコアプロセッサを有する制御装置では、メモリ上にあるバックアップ対象のデータや、バックアップ先のストレージへのアクセスが、複数のプロセッサ又はコアから同時に発生することがある。例えば
図1に示すように、プロセッサ#2がメモリ上のデータにアクセスしている時、又はプロセッサ#3がストレージにアクセスしている時に、プロセッサ#1がメモリ上のデータをストレージにバックアップしようとすることがある。このような場合、データの整合性を保証したバックアップができない可能性がある。又はバックアップに非常に長い時間がかかることがある。
【0005】
このような事態を避けるため、制御装置は、メモリやストレージ等のリソースに対する、複数のプロセッサやコアからのアクセスを管理するための機構(特許文献1に開示されているようなセマフォを使った排他制御機構等)を備えることが一般的である。しかしながら、プロセッサやコアの数が増え、アクセス処理が複雑な依存関係を有するようになったシステムでは、アクセス管理は非常に複雑である。ここでいう依存関係とは、あるプロセッサ(又はコア)による特定のリソースへのアクセスと、他のプロセッサ(又はコア)で実行している処理とが互いに競合したり、影響したりする関係性のことをいう。このようなアクセス処理の依存関係を解析することや、それらのアクセス処理各々に排他制御を実装することは、非常に工数が掛かり、開発者の負担となる。また、排他制御を実装することで発生するオーバヘッドによるパフォーマンスの低下や、コード量の増加も問題となる。
【0006】
汎用のコンピュータ用オペレーティングシステムは、スナップショットやハイバネーションといった、メモリ上のデータを所定のストレージへバックアップする機能を提供している。ところが、このような機能は、任意の瞬間におけるメモリ上のデータをそのままバックアップするものであって、メモリ上のデータの整合性は保証していない。
【0007】
例えば
図2に示すように、4つのメンバ変数を持つ構造体が1つのデータセットとして定義されているものとする。そして制御装置がある指令を実行すると、これら4つのメンバ変数が全て更新されるものとする。この場合、仮に3つ目のメンバ変数までが更新され、4つの目のメンバ変数が未だ更新されていない状態でスナップショット機能が実行されると、バックアップされたデータセットはデータの整合性が保たれていないものとなる。つまり、データの整合性が保証されているとは、指令の実行結果が関連する全てのデータ(先の例における4つのメンバ変数)に完全に反映された状態となっていることをいう。
【0008】
スナップショットやハイバネーションといった機能は、不具合の調査や、システム障害からの迅速な再起動には効果的ではあるが、データの整合性を厳密に保証することが求められるバックアップ用途には適さない。特に、リアルタイム性が高く、データセットとしての更新頻度が高い産業機械の制御装置においては、スナップショットやハイバネーションといった機能を採用することは難しい。
【0009】
データセットが完全に更新されるまでプロセッサ又はコア間で待ち合わせを行うことにより、データの整合性を保証することも考えられる。しかし、一般にプロセッサ間又はコア間で待ち合わせを行うには、各プロセッサ及び各コアが実行するプログラム内に、待ち合わせを行うためのコマンドを明示的に実装する必要がある。また、データセットの更新の度に待ち合わせを行うと、パフォーマンスの大幅な低下が懸念される。
【0010】
また、データの不整合は、複数のプロセッサ又はコアが協力してデータ更新処理を行うような場合に、任意のタイミングでバックアップを行うと発生することがある。例えば
図3に示すように、データセットDATA_SET1及びDATA_SET2が、あるシーケンスの実行により連動して更新されるよう設計されている場合を考える。この場合、プロセッサ#1がDATA_SET1の更新を完了し、プロセッサ#2がDATA_SET2の更新を完了していない状態でバックアップが実行されると、DATA_SET1とDATA_SET2との間で不整合が発生する。
【0011】
このように、任意のタイミングでデータバックアップを行う従来技術では、データの整合性を保証することが難しい。これは、メモリ内容のバックアップに限らず、ストレージやポータブルデバイス等に格納されたデータを入出力する際や、シャットダウンシーケンスを実行する際にも同様に生じうる問題である。また、バックアップ先及び入出力先のストレージやデバイスにおいても、厳密にはアクセス管理が必要になる。してみると、マルチプロセッサ又はマルチコアのプロセッサが稼動する情報処理システム、特にリアルタイム性の高い産業機械の制御装置においては、バックアップやデータ入出力は非常に難しい処理であるといえる。
【発明を実施するための形態】
【0018】
<実施形態1>
図9は、本発明の実施形態1による制御装置1の要部を示す概略的なハードウェア構成図である。制御装置1は、例えばプログラムを読み込んで工作機械やロボット等の機械の制御を行う数値制御装置等である。制御装置1は、複数のプロセッサ11(本図では11a,11bの2つを例示する)、ROM12、RAM13、不揮発性メモリ14、インタフェース18、バス10、軸制御回路16、サーボアンプ17を有する。インタフェース18には、例えば操作盤60等が接続される。
【0019】
プロセッサ11は、制御装置1を全体的に制御するプロセッサである。プロセッサ11は、ROM12に格納されたシステム・プログラムをバス10を介して読み出し、システム・プログラムに従って制御装置1全体を制御する。
本実施の形態では、制御装置1は複数のプロセッサ11(11a,11b)を有している。個々のプロセッサ11(11a,11b)は、例えばマルチプロセッサ環境における各プロセッサ、マルチコアプロセッサにおける各コアに相当する。
【0020】
ROM12は、機械の各種制御等を実行するためのシステム・プログラムを予め格納している。
【0021】
RAM13は、一時的な計算データや表示データ、後述する操作盤60を介してオペレータが入力したデータ等を一時的に格納する。例えばDRAMはこれに含まれる。
【0022】
不揮発性メモリ14は、例えば図示しないバッテリでバックアップされており、制御装置1の電源が遮断されても記憶状態を保持する。例えばバッテリでバックアップされたSRAMなどが相当する。不揮発性メモリ14は、例えばRAM13上のデータのバックアップ先ストレージとして使用される。
【0023】
軸制御回路16は、機械の動作軸を制御する。軸制御回路16は、プロセッサ11が出力する軸の移動指令量を受けて、軸の移動指令をサーボアンプ17に出力する。
【0024】
サーボアンプ17は、軸制御回路16が出力する軸の移動指令を受けて、サーボモータ50を駆動する。
【0025】
サーボモータ50は、サーボアンプ17により駆動されて機械の動作軸を動かす。サーボモータ50は、典型的には位置・速度検出器を内蔵する。位置・速度検出器は位置・速度フィードバック信号を出力し、この信号が軸制御回路16にフィードバックされることで、位置・速度のフィードバック制御が行われる。
【0026】
なお、
図1では軸制御回路16、サーボアンプ17、サーボモータ50は1つずつしか示されていないが、実際には制御対象となる機械に備えられた軸の数だけ用意される。例えば、6軸を備えたロボットを制御する場合、それぞれの軸に対応する軸制御回路16、サーボアンプ17、サーボモータ50が合計6セット用意される場合もある。
【0027】
操作盤60は、ディスプレイやハードウェアキー等を備えたデータ入出力装置である。操作盤60は、インタフェース18を介してプロセッサ11から受けた情報をディスプレイに表示する。操作盤60は、ハードウェアキー等から入力された指令やデータ等をインタフェース18を介してプロセッサ11に渡す。
【0028】
図4は、本実施形態における制御装置1の概略的な機能及び動作ブロック図である。制御装置1は、リクエストメッセージ送受信手段101、シーケンス処理完了判定手段102、レディメッセージ送受信手段103、エンドメッセージ送受信手段104を有する。リクエストメッセージ送受信手段101、シーケンス処理完了判定手段102、レディメッセージ送受信手段103、及びエンドメッセージ送受信手段104は、プロセッサ11の一機能としてハードウェア的に実現されても良く、例えばROM12、RAM13、又は不揮発性メモリ14に格納されたプログラムをプロセッサ11が実行することにより実現されても良い。
【0029】
図4のプロセッサ11a(プロセッサ#1)、プロセッサ11b(プロセッサ#2)は、それぞれRAM13上に各自のリソースを管理しているものとする。本実施例は、
図10に示すように、1つのデータセット内の異なるデータ(データ#1、データ#2)を、プロセッサ11a及びプロセッサ11bがそれぞれ独自に管理している状態を想定している。
【0030】
リクエストメッセージ送受信手段101は、プロセッサ11a(任意のプロセッサ又はコア。
図4においてはプロセッサ#1)からプロセッサ11b(他の全てのプロセッサ又はコアの各々。
図4においてはプロセッサ#2)に対してリクエストメッセージを送信する。プロセッサ11aとプロセッサ11bとは、1対多の関係である。
リクエストメッセージとは、メッセージの送信者(プロセッサ11a)がバックアップ処理を実行したい旨を受信者(プロセッサ11b)に通知するものである。リクエストメッセージには、バックアップ対象のデータ(データセットを含む)を特定する情報(メモリブロックのインデックス)が含まれる。
リクエストメッセージの送信後、リクエストメッセージ送受信手段101は、プロセッサ11aをバックアップ処理の実行待ち(待機状態)とする。
リクエストメッセージを受信したプロセッサ11bは、リクエストメッセージの内容をシーケンス処理完了判定手段に通知する。
【0031】
シーケンス処理完了判定手段102は、リクエストメッセージの受信者(プロセッサ11b)において、リクエストメッセージの内容に関連する、プロセッサ11b自身が実行するシーケンス処理が完了したか否かを判定する。つまりプロセッサ11bは、リクエストメッセージに含まれていたメモリブロックのインデックスにアクセスするデータを特定し、当該データにかかるシーケンス処理を終わらせる。
シーケンス処理が完了したと判断すると、シーケンス処理完了判定手段102は、プロセッサ11bを待機状態に設定し、レディメッセージ送受信手段103に通知を送信する。
【0032】
レディメッセージ送受信手段103は、リクエストメッセージの受信者(プロセッサ11b)からリクエストメッセージの送信者(プロセッサ11a)に対してレディメッセージを送信する。
レディメッセージとは、リクエストメッセージの送信者(プロセッサ11a)が実行を希望するバックアップ処理に関連するシーケンス処理のうち、リクエストメッセージの受信者(プロセッサ11b)に関係する部分の実行が完了したことを、リクエストメッセージの送信者(プロセッサ11a)に通知するものである。
プロセッサ11aは、リクエストメッセージの宛先となった全てのプロセッサ11bからレディメッセージを受信したか否かを判断する。全てのプロセッサ11bからレディメッセージを受信したならば、レディメッセージ送受信手段103は、プロセッサ11aのバックアップ処理の実行待ち(待機状態)を解除する。
プロセッサ11aはバックアップ処理を実行する。
【0033】
エンドメッセージ送受信手段104は、リクエストメッセージの送信者(プロセッサ11a)からリクエストメッセージの受信者(プロセッサ11b)に対してエンドメッセージを送信する。
エンドメッセージとは、リクエストメッセージの送信者(プロセッサ11a)においてバックアップ処理が完了したことを通知するものである。
エンドメッセージ送受信手段104は、エンドメッセージを受信したプロセッサ11bの待機状態を解除する。
【0034】
図5を用いて、従来技術に対する本実施形態の利点について説明する。本実施形態の特徴的な構成要素であるシーケンス処理完了判定手段102は、リクエストメッセージを受信した全てのプロセッサ11bにおいてバックアップ処理の対象データに関連するシーケンス処理が完了したことを確認してから、プロセッサ11bを待機状態に移行させる。仮にプロセッサ11bがリクエストメッセージを受信してすぐに待機状態に移行するなら、データセットには不整合が発生してしまう。しかし本実施形態では、シーケンス処理完了判定手段102が、シーケンス処理が終了するまではプロセッサ11bを待機状態に移行させず、データセットが整合するまで実行処理を継続させる。そのため、データセットの不整合が発生しない。
【0035】
図6は、プロセッサ11a(プロセッサ#1)、プロセッサ11b(プロセッサ#2)、プロセッサ11c(プロセッサ#3)がそれぞれ、系統1軸制御、系統2軸制御、系統3軸制御を実行する制御装置1において、プロセッサ11b(プロセッサ#2)がデータバックアップを実行する場合のプロセッサ間の処理フローの例を示すチャートである。
【0036】
初期状態において、プロセッサ11a、プロセッサ11b、プロセッサ11cはそれぞれ系統1軸制御、系統2軸制御、系統3軸制御にかかる処理を実行している(S11,S21,S31)。
【0037】
プロセッサ11bが、バックアップ処理のリクエストメッセージをプロセッサ11a、プロセッサ11cに対して送信する(S22)。この後、プロセッサ11bは待機状態となる。
【0038】
リクエストメッセージを受信したプロセッサ11a、プロセッサ11cは、それぞれ当該リクエストメッセージの内容に関係するシーケンス処理を完了させ(S12,S32)、プロセッサ11bに対しレディメッセージを送信する。この後、プロセッサ11a、プロセッサ11cは待機状態となる。
【0039】
プロセッサ11bは、全てのプロセッサ11a、プロセッサ11cからレディメッセージを受信したことを確認すると、待機状態を解除してバックアップ処理を実行する(S23)。バックアップ処理が完了すると、プロセッサ11bは、プロセッサ11a、プロセッサ11cに対してエンドメッセージを送信し(S24)する。またプロセッサ11bは、系統2軸制御の実行を再開する(S25)。
【0040】
プロセッサ11a、プロセッサ11cは、エンドメッセージを受信すると待機状態を解除し、系統1軸制御、系統3軸制御の実行を再開する(S13,S33)。
【0041】
本実施形態によれば、データの更新頻度が高く、複雑なアクセス処理が混在する制御装置1であっても、データの整合性を保証したデータバックアップ、データ入出力、及びシャットダウンシーケンスの実行等が可能になる。また、排他制御を実装することで発生するオーバヘッドによるパフォーマンスの低下、コード量の増加によるストレージやメモリの圧迫等の問題を回避することができる。
【0042】
また本実施形態では、リクエストメッセージの内容に応じ、データの整合性を保つために必要な範囲において、バックアップ前にシーケンス処理を完了させ、バックアップ処理の完了を待機する構成とした。したがって、例えば系統間や制御軸間の依存関係に従って、シーケンス処理の実行範囲、すなわちデータの整合性の保証範囲が適切に設定される。
【0043】
なお上述の実施形態では、バックアップ処理のリクエストメッセージをトリガとして、一連の処理が実行される例を示した。しかしながら、プライマリのプロセッサ又はコアの実行したい処理の種類に応じて、リクエストメッセージの種類、形式、内容、シーケンス処理の内容や範囲等が異なっていても構わない。例えばバックアップ処理の場合でも、不揮発性メモリ14やROM12へのバックアップ、図示しない外部ストレージへのバックアップといった態様の違いに応じて、諸条件を適宜変更して差し支えない。
【0044】
<実施形態2>
図7を用いて、実施形態2にかかる制御装置1の動作について説明する。実施形態2は実施形態1の変形例であり、特に明示しない限り、実施形態2にかかる制御装置1の構成要素及び動作は実施形態1のものを踏襲する。
【0045】
本実施形態では、シーケンス処理完了判定手段102は、リクエストメッセージの受信者(実施形態1の例ではプロセッサ11b)において、リクエストメッセージで通知された処理(実施形態1の例ではバックアップ処理)に依存しない(影響を与えない)処理を別のタスクとして実装しておくことができる。そしてプロセッサ11bは、レディメッセージを送信後、待機状態に移行する代わりに、当該別のタスクにスイッチする。すなわち、バックアップ処理に関係のないタスクを、バックアップ処理と独立したメモリ空間で継続することができる。
【0046】
この場合、エンドメッセージ送受信手段104は、エンドメッセージを受信した際、プロセッサ11bがバックアップ処理の完了待ち(待機状態)であるか、別のタスクを実行している状態であるかを判定する。バックアップ処理の完了待ち(待機状態)であれば、待機状態を解除する。一方、別のタスクが実行状態であれば、リクエストメッセージ受信時のタスク(例えば軸制御)にスイッチする。
【0047】
本実施例によれば、リクエストメッセージを受信したプロセッサ又はコアは、リクエストされた処理の完了を待つ間に別のタスクを実行できるので、制御装置1全体の処理効率を向上させることができる。
【0048】
<実施形態3>
図8を用いて、実施形態3にかかる制御装置1の動作について説明する。実施形態3は実施形態1の変形例であり、特に明示しない限り、実施形態3にかかる制御装置1の構成要素及び動作は実施形態1のものを踏襲する。
本実施形態は、プライマリのプロセッサから送信されるメッセージの種類に応じて、シーケンス処理完了判定の条件や、エンドメッセージ受信後の動作を変える点に特徴を有する。
図8は、実施形態3のバックアップ処理に関する動作スキームを、システムエラー発生時のシャットダウンシーケンス実行に応用した場合の、プロセッサ11a(プロセッサ#1)、プロセッサ11b(プロセッサ#2)、プロセッサ11c(プロセッサ#3)の動作を示すチャートである。
【0049】
初期状態において、プロセッサ11a、プロセッサ11b、プロセッサ11cはそれぞれ系統1軸制御、系統2軸制御、系統3軸制御にかかる処理を実行している(S211,S221,S231)。
【0050】
プロセッサ11bが、システムエラー発生通知(実施形態1のバックアップ処理のリクエストメッセージに相当)をプロセッサ11a、プロセッサ11cに対して送信する(S222)。なおシステムエラー発生通知にも、バックアップ対象のデータが存在するメモリブロックのインデックスが含まれるものとする。この後、プロセッサ11bは待機状態となる。
【0051】
システムエラー発生通知を受信したプロセッサ11a、プロセッサ11cは、それぞれバックアップ対象のデータに関係するシーケンス処理を完了させる。併せて、システムエラー発生通知の受信時には、シャットダウンシーケンスの実行に備え、レジスタをリセットする、コアの周波数を落とす等の処理を実行しても良い(S212,S232)。シーケンス処理等が完了したなら、プロセッサ11a、プロセッサ11cは、プロセッサ11bに対しレディメッセージを送信する。この後、プロセッサ11a、プロセッサ11cは待機状態となる。
【0052】
プロセッサ11bは、全てのプロセッサ11a、プロセッサ11cからレディメッセージを受信したことを確認すると、待機状態を解除してシャットダウンシーケンスを実行する(S223)。シャットダウンシーケンスが完了すると、プロセッサ11bは、プロセッサ11a、プロセッサ11に対してプロセッサ停止要求(実施形態1のエンドメッセージに相当)を送信し(S224)する。またプロセッサ11bは動作を停止する(S225)。
【0053】
プロセッサ11a、プロセッサ11cは、プロセッサ停止要求を受信すると待機状態を解除し、動作を停止する(S213,S233)。
【0054】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【0055】
例えば、本発明は、データバックアップ、データ入出力、及びシャットダウンシーケンスに限らず、様々な用途に適用可能である。例えばシステムエラー発生時のプロセッサ間又はコア間の通信方法、安全にシステムを停止するための非常停止処理の実行方法などに応用できる。また、アプリケーションの再起動を行う際に、メモリマップ上の特定のメモリを初期化する方法としても利用できる。