JP2010181923A - ロボットの制御システムおよびリアルタイムos - Google Patents

ロボットの制御システムおよびリアルタイムos Download PDF

Info

Publication number
JP2010181923A
JP2010181923A JP2009022265A JP2009022265A JP2010181923A JP 2010181923 A JP2010181923 A JP 2010181923A JP 2009022265 A JP2009022265 A JP 2009022265A JP 2009022265 A JP2009022265 A JP 2009022265A JP 2010181923 A JP2010181923 A JP 2010181923A
Authority
JP
Japan
Prior art keywords
time
processes
real
robot
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009022265A
Other languages
English (en)
Inventor
Motofumi Kinoshita
元文 木下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yaskawa Electric Corp
Original Assignee
Yaskawa Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yaskawa Electric Corp filed Critical Yaskawa Electric Corp
Priority to JP2009022265A priority Critical patent/JP2010181923A/ja
Publication of JP2010181923A publication Critical patent/JP2010181923A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Manipulator (AREA)

Abstract

【課題】プロセスごとに規定時間までに処理を一区切りさせ、二重化したシステムに対して意味のない空プロセスを実行させておくことで、安全のための二重化システムに対して診断系の処理を行うことができるリアルタイムOS装置を提供する。
【解決手段】各プロセスは、自身の内容を意味のある最小単位の実行単位に分割し、予めそれぞれに掛かる時間を算出しておく。一定時間毎の割り込みが発生するときには、空プロセス9の状態になっており、残り時間が十分なので、次の最小単位の実行に移る。さらに、この最小実行単位が終了するごとに、次の最小実行単位にかかる時間と、割り込みまでの残り時間を比較し、残り時間が十分なら、次の最小実行単位の処理へ進み、残り時間が不足しているなら、空プロセス9を実行する。
【選択図】図1

Description

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

Claims (4)

  1. ロボットと、前記ロボットを制御するための制御部と、を備え、
    前記制御部内で一定周期ごとに複数のプロセスを切り替えて前記ロボットの制御に必要な処理を行うリアルタイムOSが動作するロボット制御システムにおいて、
    前記複数のプロセスは、最小実行単位となる複数の処理で構成され、
    前記制御部は、前記複数の処理のうち、第1の処理の実行が終了すると、
    次に実行される第2の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較し、
    前記残り時間が不足している場合には、空プロセスを実行することを特徴とするロボット制御システム。
  2. 一定周期ごとに複数のプロセスを切り替えて前記ロボットの制御に必要な処理を行うリアルタイムOSが動作するコンピュータに、
    前記プロセスを構成する最小実行単位となる処理のうち、第1の処理の実行が終了すると、
    次に実行される第2の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較するステップと、
    前記残り時間が不足している場合には、空プロセスを実行するステップと、
    を実行させるためのリアルタイムOS。
  3. 請求項2に記載のリアルタイムOSを記録したコンピュータ読み取り可能な記録媒体。
  4. 機械装置と、前記機械装置を制御するための制御部と、を備え、
    前記制御部内で一定周期ごとに複数のプロセスを切り替えて前記機械装置の制御に必要な処理を行うリアルタイムOSが動作するロボット制御システムにおいて、
    前記複数のプロセスは、最小実行単位となる複数の処理で構成され、
    前記制御部は、前記複数の処理のうち、第1の処理の実行が終了すると、
    次に実行される第2の処理に必要な時間と、実行中のプロセスが次に実行されるプロセスに切り替わるまでの残り時間と、を比較し、
    前記残り時間が不足している場合には、空プロセスを実行することを特徴とする機械装置制御システム。
JP2009022265A 2009-02-03 2009-02-03 ロボットの制御システムおよびリアルタイムos Pending JP2010181923A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009022265A JP2010181923A (ja) 2009-02-03 2009-02-03 ロボットの制御システムおよびリアルタイムos

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009022265A JP2010181923A (ja) 2009-02-03 2009-02-03 ロボットの制御システムおよびリアルタイムos

Publications (1)

Publication Number Publication Date
JP2010181923A true JP2010181923A (ja) 2010-08-19

Family

ID=42763490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009022265A Pending JP2010181923A (ja) 2009-02-03 2009-02-03 ロボットの制御システムおよびリアルタイムos

Country Status (1)

Country Link
JP (1) JP2010181923A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012124542A1 (ja) * 2011-03-15 2012-09-20 オムロン株式会社 制御装置およびシステムプログラム
JP2013097719A (ja) * 2011-11-04 2013-05-20 Toyota Motor Corp 制御装置および制御方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012124542A1 (ja) * 2011-03-15 2012-09-20 オムロン株式会社 制御装置およびシステムプログラム
JP2012194683A (ja) * 2011-03-15 2012-10-11 Omron Corp 制御装置およびシステムプログラム
CN103403634A (zh) * 2011-03-15 2013-11-20 欧姆龙株式会社 控制装置以及系统程序
CN103403634B (zh) * 2011-03-15 2016-08-10 欧姆龙株式会社 控制装置及其控制方法
US9778630B2 (en) 2011-03-15 2017-10-03 Omron Corporation Control device and system program for maintaining global variable and reference data consistency during parallel processing of multiple tasks
JP2013097719A (ja) * 2011-11-04 2013-05-20 Toyota Motor Corp 制御装置および制御方法

Similar Documents

Publication Publication Date Title
CN103676772B (zh) 具有系统间等待功能的数值控制装置
JP2018097662A (ja) 制御装置、制御プログラムおよび制御方法
JP6468313B2 (ja) 制御装置、制御プログラムおよび制御方法
JP6790686B2 (ja) 制御装置、制御方法およびプログラム
JP5788097B1 (ja) 数値制御装置およびロギング方法
CN102792237A (zh) 可编程逻辑控制器的cpu单元、可编程逻辑控制器用的系统程序以及存储了可编程逻辑控制器用的系统程序的记录介质
JP6406466B1 (ja) 制御装置、制御方法および制御プログラム
CN101963926A (zh) 信息处理装置及信息处理装置的控制方法
JP5962088B2 (ja) Plcシミュレーションシステム、plcシミュレータ、制御プログラム、および記録媒体
CN110362274A (zh) 一种NVMe控制器、网络化存储设备及系统
US9824229B2 (en) Controller with enhanced reliability
JP2010181923A (ja) ロボットの制御システムおよびリアルタイムos
CN1877471A (zh) 控制装置的任务管理装置和方法
JP2011076344A (ja) 情報処理装置,情報処理装置の制御方法および制御プログラム
WO2020235088A1 (ja) 制御装置および分散処理方法
JP3770366B2 (ja) 制御プログラムの開発環境装置、制御プログラムを実行する制御装置、並びに、それらを実現するプログラムの記録媒体
JP2008217728A (ja) 仮想計算機システムの障害情報採取方法
US9058207B2 (en) Simulation apparatus, method, and computer-readable recording medium
EP1367469B1 (en) Controller for machine
JP6860599B2 (ja) 機械の制御装置
JP2018010561A (ja) 制御装置、駆動装置、制御方法、及び制御プログラム
US8332737B2 (en) Instrument control system and methods
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
JP6840585B2 (ja) 測定システム、測定プログラム及び制御方法
US10386817B1 (en) Multi-core processing machine tool control system