(57)【要約】      （修正有）【課題】プロセスごとに規定時間までに処理を一区切りさせ、二重化したシステムに対して意味のない空プロセスを実行させておくことで、安全のための二重化システムに対して診断系の処理を行うことができるリアルタイムOS装置を提供する。【解決手段】各プロセスは、自身の内容を意味のある最小単位の実行単位に分割し、予めそれぞれに掛かる時間を算出しておく。一定時間毎の割り込みが発生するときには、空プロセス９の状態になっており、残り時間が十分なので、次の最小単位の実行に移る。さらに、この最小実行単位が終了するごとに、次の最小実行単位にかかる時間と、割り込みまでの残り時間を比較し、残り時間が十分なら、次の最小実行単位の処理へ進み、残り時間が不足しているなら、空プロセス９を実行する。【選択図】図１
2010181923.tif 000002
【特許請求の範囲】
【請求項１】
ロボットと、前記ロボットを制御するための制御部と、を備え、
前記制御部内で一定周期ごとに複数のプロセスを切り替えて前記ロボットの制御に必要な処理を行うリアルタイムＯＳが動作するロボット制御システムにおいて、
前記複数のプロセスは、最小実行単位となる複数の処理で構成され、
前記制御部は、前記複数の処理のうち、第１の処理の実行が終了すると、
次に実行される第２の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較し、
前記残り時間が不足している場合には、空プロセスを実行することを特徴とするロボット制御システム。
【請求項２】
一定周期ごとに複数のプロセスを切り替えて前記ロボットの制御に必要な処理を行うリアルタイムＯＳが動作するコンピュータに、
前記プロセスを構成する最小実行単位となる処理のうち、第１の処理の実行が終了すると、
次に実行される第２の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較するステップと、
前記残り時間が不足している場合には、空プロセスを実行するステップと、
を実行させるためのリアルタイムＯＳ。
【請求項３】
請求項２に記載のリアルタイムＯＳを記録したコンピュータ読み取り可能な記録媒体。
【請求項４】
機械装置と、前記機械装置を制御するための制御部と、を備え、
前記制御部内で一定周期ごとに複数のプロセスを切り替えて前記機械装置の制御に必要な処理を行うリアルタイムＯＳが動作するロボット制御システムにおいて、
前記複数のプロセスは、最小実行単位となる複数の処理で構成され、
前記制御部は、前記複数の処理のうち、第１の処理の実行が終了すると、
次に実行される第２の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較し、
前記残り時間が不足している場合には、空プロセスを実行することを特徴とする機械装置制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムOSおよびこのリアルタイムＯＳによって制御されるロボットの制御システムに関する。  
【背景技術】
【０００２】
データ処理装置及び記録媒体は、リアルタイムOSによって動作の制御がされている。この制御には、デッドラインを回避するという技術課題がある。前プロセスから新プロセスに切り換える場合に、デッドラインをオーバーすると、前プロセスが中途半端な状態で中断されてしまうからである。
このデッドラインを解決するために、従来のリアルタイムOSは、デッドラインハンドラの入力を受け付けて、これらをデッドライン管理モジュールに与えている（特許文献１参照）。また、別の従来のリアルタイムＯＳは、プログラムの実行および終了を、細かくプログラムで監視して対応している（特許文献２参照）。
このように、従来のリアルタイムOS機能は、不測のプログラムの終了を、他の処理により補間して対応しているのである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平11-39173号公報
【特許文献２】特開平6-175889号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のリアルタイムOS装置は、プロセス管理において、あるプロセスがデッドラインをオーバーした場合にそのプロセスを中断して次のプロセスの動作を保証する。しかし、安全性を考慮して二重化されたＲＡＭシステムに対してRAM診断を行う必要がある場合に、適用することができない。
その理由は以下の通りである。二重化されたRAMシステムでは、二重化されたAとBというRAMメモリに対し、常に同じ意味状態として整合性を保っていなければならない。例えば、多関節ロボットシステムにおいては、各関節軸の情報（角度、角速度、角加速度など）をRAMメモリAとRAMメモリBの両方に同じ状態で保持しておく必要がある。
しかし、システムが変化してから、その変化後の状態に対して整合性を保つためには僅かにタイムラグが発生してしまう。そのため、システムの変化に対して、二重化された対象の整合性を保とうとするときにプロセスが中断される可能性が考えられる。このような場合に、従来のリアルタイムOSでは診断系の処理でシステムを異常と判断してしまう。
本発明はこのような問題点に鑑みてなされたものであり、プロセスごとに規定時間までに処理を一区切りさせ、二重化したシステムに対して意味のない空プロセスを実行させておくことで、安全のための二重化システムに対して診断系の処理を行うことができるリアルタイムOS装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、ロボットと、前記ロボットを制御するための制御部と、を備え、前記制御部内で一定周期ごとに複数のプロセスを切り替えて前記ロボットの制御に必要な処理を行うリアルタイムＯＳが動作するロボット制御システムにおいて、前記複数のプロセスは、最小実行単位となる複数の処理で構成され、前記制御部は、前記複数の処理のうち、第１の処理の実行が終了すると、次に実行される第２の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較し、前記残り時間が不足している場合には、空プロセスを実行することを特徴とするものである。
また、請求項２に記載の発明は、一定周期ごとに複数のプロセスを切り替えて前記ロボットの制御に必要な処理を行うリアルタイムＯＳが動作するコンピュータに、前記プロセスを構成する最小実行単位となる処理のうち、第１の処理の実行が終了すると、次に実行される第２の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較するステップと、前記残り時間が不足している場合には、空プロセスを実行するステップと、を実行させるためのものである。
また、請求項３に記載の発明は、機械装置と、前記機械装置を制御するための制御部と、を備え、前記制御部内で一定周期ごとに複数のプロセスを切り替えて前記機械装置の制御に必要な処理を行うリアルタイムＯＳが動作するロボット制御システムにおいて、前記複数のプロセスは、最小実行単位となる複数の処理で構成され、前記制御部は、前記複数の処理のうち、第１の処理の実行が終了すると、次に実行される第２の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較し、前記残り時間が不足している場合には、空プロセスを実行することを特徴とするものである。
【発明の効果】
【０００６】
請求項１に記載の発明によると、二重化されたシステムに対して、リアルタイムOSを適用でき、安全性を実現することができる。
【発明を実施するための形態】
【０００７】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【０００８】
図１は、本発明に係る産業用ロボットの制御システムの構成図である。この制御システムは、産業用ロボット１２と、産業用ロボット１２を制御する制御部１００を備えている。
産業用ロボット１２は、一般的な産業用ロボットである。産業用に限らず、任意のロボットでも良い。
【０００９】
制御部１００は、リアルタイムＯＳにより動作する。このリアルタイムOSは、ユーザがプロセスの実行順序をスケジューリングテーブルに設定することにより、高速にイベント処理を行うOSである。
図２に示すスケジューリングテーブルには、各プロセス（Ａ、Ｂ、Ｃ）の実行順序が書かれている。ユーザは、システムに要求される仕様に従ってスケジューリングテーブルを組む。図においては、各プロセス（Ａ、Ｂ、Ｃ）が順番に繰り返されるようにスケジューリングされている。なお、実行されるプロセスは３つに限らず、少なくとも２つあれば良い。
【００１０】
各プロセスは図２のスケジューリングテーブルに従い、従来のリアルタイムＯＳでは図３のように、本発明では図５のように動作する。
スケジューリングテーブルの構成は、各プロセスの優先度や重要度に応じて調整する必要がある。当然、あるプロセスを優先的に多く実行させたり、特定のプロセス同士を連続させなかったりなどの特殊な構成にしてもかまわない。しかし、各プロセスが要求する処理が終了するまでの時間を考慮して、スケジューリングテーブルを構成しなければならない。
【００１１】
制御部１００は、時間管理のためのクロック（Clock）発生器１、そのクロック情報を基に一定時間毎に割り込みを発生させるPLD２、プロセスを実行するＣＰＵ３、時間を管理するタイムベースレジスタ４、安全のために二重化されたメモリ１０、１１（Ａ、Ｂ）から少なくとも構成される。
ＣＰＵ３は、後述するリアルタイムモニタ５によってスケジュール管理される各プロセス６、７、８（A、B、C）を実行する。また、ＣＰＵ３は、RAMメモリ１０、１１に対し意味のある処理を何も行わない空プロセス９を実行する。
【００１２】
PLD２は、クロックを基準にして、一定時間tの間隔で割り込みを発生させる。例えばt=1ms毎やt=500μsec毎などである。割り込み発生と同時に、それまでのプロセスを中断して、リアルタイムモニタ５がスタートする。その際、中断されたプロセスの情報は、図示しないレジスタに保存される。
【００１３】
リアルタイムモニタ５は、ＣＰＵ３が実現するソフトウェア機能である。リアルタイムモニタ５は、スケジューリングテーブルに沿って各プロセスのスケジュールを管理し、必要な処理を施す。この必要な処理を施した後、スケジューリングされたプロセス（プロセスA、B、Cのいずれか）が実行される。ここで、必要な処理とは、例えば、各プロセスの実行回数の管理、各プロセスの終了判定等である。メモリが二重化されている場合は、二つのメモリに同じ意味内容の情報が保たれていなければならない。そのため、リアルタイムモニタ５や各プロセスがメモリを使用するときは、両方のメモリにアクセスしなければならない。
【００１４】
タイムベースレジスタ４は、CPUが管理するある時点からの時間経過を、動作クロック程度のレベルで正確に知ることができる機能を有するレジスタである。ＰＬＤ２によって一定間隔ごとに割込みが発生すると、リアルタイムモニタ５が、タイムベースレジスタ４の管理する時間情報を0クリアする。そのため、割り込みが発生してからどのくらいの時間が経過し、次の割り込みが発生するまでどれくらいの時間が残っているのかを、いつでも確認することができる。
【００１５】
ただし、対象とする時間が数μ〜数十μsecという単位レベルでは、タイムベースレジスタの持つ時間情報を0クリアする処理やCPUがタイムベースレジスタの時間情報を参照する処理そのものが、誤差の原因となってしまう。
例えば、割り込み直後に時間情報を０クリアしたとしても、厳密には0クリア完了の時点で割り込みから数μsecが経過している。その経過時間にはバラつきがある。
また、タイムベース情報から残り時間を算出する処理そのものにも時間がかかり、その時間にはバラつきがある。
これらの処理時間のバラつきを正確に把握することは困難であり、誤差の原因となってしまう。そのため、ＣＰＵが時間を参照するときにはこのバラつきを考慮して安全性を高めておく必要がある。
【００１６】
プロセスＡ、Ｂ、Ｃは、産業用ロボットに必要な動作をそれぞれ分担するプロセスである。例えば、プロセスＡは、ロボットの位置を求める演算を行うためのプロセスである。プロセスＢは、ロボットの動作速度監視を行うためのプロセスである。プロセスＣは、RAMメモリの診断を行うためのプロセスである。これらのプロセスは、それぞれ、スケジューリングテーブルのサイクルとは別に、自身の実行回数を管理する。そのプロセスの実行が完了するまで、リアルタイムモニタ５によって実行される度に実行回数をカウントする。そのプロセスの実行が終了した場合、実行回数を０クリアする。
プロセス毎に規定実行回数を設定する必要がある。例えば、プロセスAは30t以内に終了しなければならないとした場合、プロセスAはスケジューリングテーブルで3t毎に呼び出されて実行される（図２）。そのため、10回の実行回数までに終了しなければならない（3t×10回=30t）。従って、プロセスAの規定実行回数を10と設定する。
各プロセスは、自分自身の実行回数が、規定実行回数をオーバーしていないか確認する必要がある。確認するタイミングは、自分自身の実行が割り込みにより終了し、リアルタイムモニタ５が割り込み発生によりタイムベースレジスタの時間情報を0クリアした後から、次のプロセスが実行されるまでの間である。
例えば、プロセスAの実行回数が１０の場合は正常であり、以降の処理を継続する。プロセスAの実行回数が１１の場合はシステムの異常と判断してエラー処理を行う。
プロセスはいくつもの処理から成り立っているが、この処理は意味のある最小実行単位に分解される。プロセスを実行する際には、この最小実行単位が終了するごとに、次の最小実行単位にかかる時間と、割り込みまでの残り時間を比較する必要がある。残り時間が十分なら、次の最小実行単位の処理へ進む。残り時間が不足しているなら、空プロセス９を実行する。
最小実行単位にかかる時間は、その最小実行単位ごとに、実行にかかる最大時間をあらかじめ求めておき、これを参照できるようにデータベース化しておくことで求めることができる。あるいは、システムの状況に応じて所定のアルゴリズムで算出してもよい。ただし、所定のアルゴリズムで算出する場合は、算出時間そのものにかかる時間も計算に入れなくてはならない。
【００１７】
空プロセス９は、二重化されたシステムに対し、意味のある処理を行わないプロセスである。本発明の目的を実現するためには、空プロセスは、単なる中身のない無限ループなどでは不具合が生じる。なぜなら、次回のプロセス実行時に、次の最小実行単位を実行せずに、無限ループをし続けることになってしまうからである。
空プロセス９の実行内容は、次の最小実行単位にかかる最大時間とタイムベースレジスタの時間情報を参照した残り時間の比較をし続けるという内容である。比較結果、残り時間が十分な場合は次の最小実行単位の処理に移行する。残り時間が不足している場合は、再度、比較を行う。
この空プロセス９の性質上、どのプロセスでも、一定時間毎の割り込みが発生するときには、空プロセスの状態になっている。また、そのプロセスが次に呼び出されたときには、残り時間が十分であるはずなので、次の最小単位の実行に移ることができる。
【００１８】
二重化されたメモリ１０、１１は、互いに整合性を保っていなければならない。最も単純な機構は、全く同じデータを二重化されたRAMメモリAとRAMメモリBに書き込むという方法である。しかし、単に同じデータを書き込んでいるだけでは、安全性は低い。
そのため、必要となるデータをRAMメモリAに書き込み、そのRAMメモリAのデータを加工したものをRAMメモリBに書き込むという方法が取られる。例えば、RAMメモリAのデータをビット単位で逆順にして反転させたものをRAMメモリBに書き込む加工処理がある。
この加工処理により、システムの安全性は向上するが、その分、時間が多くかかってしまう。そのため、システムが変化してから整合性を取るまでの時間が増加し、整合性が取れていない状態が長く続いてしまう。これは、整合性にどのようなアルゴリズムを適用するかにより違いはあるが、安全性を高めようとすると、基本的に陥ってしまう問題点である。
そのため、従来のシステムでは、安全性を向上させればさせるほど、本当は異常ではないのに、システムを異常と判定してしまうことになる。
しかし、本発明では、割り込み時に空プロセスを実行しているので、二重化システムに対して時間のかかるアルゴリズムを用いても問題なく動作させることができる。
【００１９】
次に、本発明に係るロボット制御システムの動作、特に診断処理の動作について、図４、図５に基づいて説明する。図４は、リアルタイムＯＳの処理フローチャートである。図５は、リアルタイムOSスケジューリングのタイムチャートである。なお、スケジューリングテーブルは図２に示すものを用いる。
リアルタイムOSが動作すると、ＰＬＤ２から一定時間ごとの割り込みが発生する。その際、リアルタイムモニタ５がタイムベースレジスタの時間情報を0クリアし、前回プロセスが空プロセスで終了したことを確認する。空プロセスで終了していなかった場合はエラー処理を行う。
【００２０】
次に、前回プロセスが、前回プロセスの実行回数が規定内であることを確認する。規定をオーバーしている場合はエラー処理を行う。規定内なら、今回実行するプロセスの実行回数をインクリメントし、今回プロセスへ移行する。
【００２１】
プロセスは、処理として意味を持つ最小実行単位の集まりとする。プロセスの実行は、最小実行単位ごとの実行となる。最小実行単位を行う前に、デットラインまでの時間を考慮し、デットラインまでに確実に最小実行単位が終了するように判断を行う。時間が十分ならば、最小実行単位を実行する。時間が十分でないなら、空プロセスが実行される。
この空プロセスは、残り時間の条件によって抜け出せる無限ループの処理となる。ループから抜けるには、プロセスが切り替わってタイムベースレジスタの時間情報が0クリアされる必要がある。
【００２２】
最小実行単位が終わると、次の最小実行単位にかかる時間の判断を行う。全ての最小実行単位を行いプロセスが終了したら、実行回数を0クリアする。
【００２３】
以上の動作の下、本発明は、特異な診断処理に対しても安全を保証できる。例えば、RAM診断では、通常のリアルタイムOSでは安全を保証できないが、本発明では以下に示すように、安全を保証できる。
対象とするデータは、DATAとBSSとする。
RAMにDATAとBSSの書き込みを行う際は、常にRAMメモリAとRAMメモリBに書き込む。このとき、二重化されたRAMメモリAには、通常の使用時と同じようにデータを書き込む。RAMメモリAに書き込んだ次に、RAMメモリBに、RAMメモリAのデータを反転して逆順にしたデータを書き込む。ここで、データが2進数で1100_1000だとすると、1100_1000の反転はビットを逆にした0011_0111である。また、1100_1000の逆順はビットを逆配置にした0001_0011である。すなわち、1100_1000を反転して逆順にした場合は、1110_1100となる。メモリに書き込まれる全てのデータを逆順にするため、RAMメモリAの先頭に書き込まれたデータは、RAMメモリBの最後尾に書き込まれる。
一方、RAMメモリAからデータを読み込むときには、RAMメモリAとRAMメモリBの読み込むデータの整合性が取れていることを確認する。この処理は、全てのプロセスで行う。
この確認作業とは別に、RAM診断のプロセスCにより、RAMメモリAとRAMメモリBの整合性を順次確認していく。
つまり、プロセスCにより対象となるRAMメモリAとRAMメモリB全領域を確認するとともに、全プロセスでデータを読み込むときに、そのデータの領域を適宜診断する。
以上のようなRAM診断を行った場合、従来のリアルタイムOSではRAMメモリAに書き込んでからRAMメモリBに書き込みが終わる前に処理が切り替わることが予想されるため、診断結果が異常となってしまう。しかし、本発明では全く問題なく動作できる。
【００２４】
なお、本発明は、産業用ロボットの制御システムに係るものであるが、任意の機械制御システムについても適用できることは明らかである。
また、ＰＬＤは、専用デバイスであってもよく、更にはＣＰＵにその機能が内蔵されていても良い。
また、プロセスは、診断系の処理を行うものに限られないことは明らかである。
【図面の簡単な説明】
【００２５】
【図１】本発明の構成図
【図２】スケジューリングテーブル
【図３】従来のリアルタイムOSスケジューリングのタイムチャート
【図４】本発明のリアルタイムOSのフローチャート
【図５】本発明のリアルタイムOSスケジューリングのタイムチャート
【符号の説明】
【００２６】
１  Clock
２  PLD(Programmable Logic Device)（割り込み発生手段）
３  CPU
４  タイムベースレジスタ
５  リアルタイムモニタ
６  プロセスA
７  プロセスB
８  プロセスC
９  空プロセス
10   RAMメモリA
１１  RAMメモリB
１２  産業用ロボット
【図１】
2010181923.tif 000003
【図２】
2010181923.tif 000004
【図３】
2010181923.tif 000005
【図４】
2010181923.tif 000006
【図５】
2010181923.tif 000007