(57)【要約】【課題】複雑なアプリケーション・プログラムの時間効率の良いデバッグを行う。【解決手段】デバッグ用ツール（５２）を起動している間に自動化設備（１０）を制御するコントローラ（１４）上で機械コード・プログラム（３８）を実行する。デバッグ用ツール（５２）はコントローラ（１４）上で走る機械コード（３８）と、プログラム・エディタ内に表示された少なくとも１つの高レベル制御命令（４６）と、の間の逆関係を決定する。デバッグ用ツール（５２）はコントローラ（１４）内のデータ・メモリ（３８）からセンサ・データを読み込むとともに、少なくとも１つの高レベル制御命令（４６）にセンサ・データを割り当てて、それにより、少なくとも１つの高レベル制御命令（４６）を機械コード・プログラム（３８）の実行時の実際のシステム状態にリンクさせる。【選択図】図２
2010250832.tif 000002
【特許請求の範囲】
【請求項１】
自動化設備（１０）を制御する工業用コントローラ（１４）をプログラムする方法において、
前記設備は、前記設備の実際のシステム状態を表すセンサ・データを提供する少なくとも１つのセンサ（１６、２０）と、前記実際のシステム状態に作用する少なくとも１つのアクチュエータ（１８、２４、２６）と、を含み、前記コントローラ（１４）は前記センサ・データを保存するデータ・メモリ（３８）と、機械コード・プログラム（３８）を保存するプログラム・メモリ（３６）と、を含み、
プログラム・エディタ（４２）と、デバッグ用ツール（５２）と、コンパイラ（４８）と、を有するプログラミング・ツール（３０）を提供するステップと、
前記プログラム・エディタ（４２）を用いて、複数の高レベル制御命令（４６）を含む高レベル制御プログラム（４４）を作成するステップと、
前記センサ・データを繰り返し読み込んで処理する機械コード命令（４０）を含む機械コード・プログラム（３８）を作成するために、前記コンパイラ（４８）を用いて前記高レベル制御プログラム（４４）をコンパイルするステップと、
前記プログラム・メモリ（３６）に前記機械コード・プログラム（３８）をロードするステップと、
前記高レベル制御プログラム（４４）をデバッグする前記デバッグ用ツール（５２）を起動するステップとを含み、前記高レベル制御命令（４６）を前記プログラム・エディタ（４２）内に表示する、
方法であって、
前記デバッグ用ツール（５２）を起動している間に前記コントローラ（１４）上で前記機械コード・プログラム（３８）を実行し、前記デバッグ用ツール（５２）は前記コントローラ（１４）上で走る前記機械コード（３８）と、前記プログラム・エディタ（４２）内に表示された少なくとも１つの高レベル制御命令（４６）と、の間の逆関係を決定し、前記デバッグ用ツール（５２）は前記データ・メモリ（３８）から前記センサ・データを読み込むとともに、前記デバッグ用ツール（５２）は前記少なくとも１つの高レベル制御命令（４６）に前記データ・メモリ（３８）からの前記センサ・データを割り当てて、それにより、前記少なくとも１つの高レベル制御命令を前記機械コード・プログラム（３８）の前記実行時の実際のシステム状態にリンクさせることを特徴とする、自動化設備（１０）を制御する工業用コントローラ（１４）をプログラムする方法。
【請求項２】
前記コントローラ（１４）上で前記機械コード・プログラム（３８）を実行している間に、前記デバッグ用ツール（５２）が前記データ・メモリ（３８）から前記センサ・データを繰り返し読み込む、請求項１に記載の方法。
【請求項３】
前記コントローラ上で前記機械コード・プログラム（３８）をリアルタイムで実行する、請求項１または２に記載の方法。
【請求項４】
センサ・データの履歴（５５）を前記データ・メモリ（３８）から読み込んで、その履歴（５５）を前記少なくとも１つの高レベル制御命令（４６）に割り当てる、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記デバッグ用ツール（５２）が前記データ・メモリ（３８）から前記センサ・データを読み込むとともに、そのセンサ・データを、所定のトリガー条件（５７）の関数として前記少なくとも１つの高レベル制御命令（４６）に割り当てる、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記機械コード・プログラム（３８）を前記コントローラ（１４）上でステップ・バイ・ステップで実行する、請求項１または２に記載の方法。
【請求項７】
前記高レベル制御プログラム（４４）が、前記機械コード・プログラム（３８）の前記実行時の時系列に対応する連続的順番で複数の高レベル制御命令（４６）を含んでおり、前記デバッグ用ツール（５２）が前記時系列に基づいて前記少なくとも１つの高レベル制御命令（４６）に前記データ・メモリ（３８）からの前記センサ・データを割り当てる、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
限定された数の高レベル制御命令（４６）を前記複数の高レベル制御命令（４６）から選択して、前記デバッグ用ツール（５２）が前記コントローラ（１４）上で走る前記機械コード（３８）と、前記限定された数だけの前記高レベル制御命令（４６）と、の間の前記逆関係を決定する、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記少なくとも１つの高レベル制御命令（４６）が高レベル・プログラム変数（６８）を含んでおり、前記デバッグ用ツール（５２）が前記高レベル・プログラム変数（６８）に前記データ・メモリ（３８）からの前記センサ・データを割り当てる、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記少なくとも１つの高レベル制御命令（４６）が前記データ・メモリ（３８）からの複数のセンサ・データに関連しており、前記デバッグ用ツール（５２）が前記複数のセンサ・データから、前記設備（１０）のより高レベルのシステム状態を表す複雑なデータ変数（７４）を決定し、前記デバッグ用ツールは前記高レベル制御命令（４６）に前記複雑なデータ変数を割り当てる、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
前記デバッグ用ツール（５２）が、前記プログラム・エディタ（４２）内の前記高レベル・プログラム命令（４６）に近い位置に前記センサ・データを表示する、請求項１〜９のいずれか１項に記載の方法。
【請求項１２】
前記デバッグ用ツールが、前記設備（１０）の複数の所定のシステム状態から１つを示す複数のグラフィカル・シンボル（７４、７６）を含むデータベース（５８）を含んでおり、前記デバッグ用ツール（５２）は前記複数のグラフィカル・シンボル（７４、７６）から１つを、前記高レベル・プログラム命令（４６）に近い前記位置に、前記割り当てられたセンサ・データの関数として表示する、請求項１１に記載の方法。
【請求項１３】
自動化設備を制御する工業用コントローラをプログラムするプログラミング・ツールとして働くコンピュータ上で、そのプログラム・コードを実行するとき、すべての方法ステップとともに請求項１〜１２のいずれか１項に記載の方法を実行するように構成されたプログラム・コードを含むコンピュータ・プログラム。
【請求項１４】
自動化設備（１０）の工業用コントローラ（１４）をプログラムする装置において、
前記設備（１０）は、前記設備（１０）の実際のシステム状態を表すセンサ・データを提供する少なくとも１つのセンサ（１６、２０）と、前記実際のシステム状態に作用する少なくとも１つのアクチュエータ（１８、２４、２６）と、前記コントローラ（１４）は前記センサ・データを保存するデータ・メモリ（３８）と、機械コード・プログラム（３８）を保存するプログラム・メモリ（３６）と、を含み、
複数の高レベル制御命令（４６）を含む高レベル制御プログラム（４４）を作成するプログラム・エディタ（４２）と、
前記センサ・データを繰り返し読み込んで処理する機械コード命令（４０）を含む機械コード・プログラム（３８）を作成するために、前記高レベル制御プログラム（４４）をコンパイルするコンパイラと、
前記コントローラ（１４）の前記プログラム・メモリ（３６）に前記機械コード・プログラム（３８）をロードするインタフェース（５０）とを含み、
前記高レベル制御プログラム（４４）をデバッグするデバッグ用ツール（５２）を含み、前記高レベル制御命令（４６）を前記プログラム・エディタ（４２）内に表示している、
装置であって、
前記デバッグ用ツール（５２）が前記コントローラ（１４）上で前記機械コード・プログラム（３８）の実行処理を開始するように構成され、前記デバッグ用ツール（５２）は前記コントローラ（１４）上で走る前記機械コード（３８）と、前記プログラム・エディタ（４２）内に表示された少なくとも１つの高レベル制御命令（４６）と、の間の逆関係を決定するように構成され、前記デバッグ用ツール（５２）は前記データ・メモリ（３８）から前記センサ・データを読み込むようにさらに構成され、前記デバッグ用ツール（５２）は前記少なくとも１つの高レベル制御命令（４６）に前記データ・メモリ（３８）からの前記センサ・データを割り当てるように構成され、それにより、前記少なくとも１つの高レベル制御命令（４６）を前記機械コード・プログラム（３８）の前記実行時の実際のシステム状態にリンクさせることを特徴とする、自動化設備（１０）の工業用コントローラ（１４）をプログラムする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動化設備を制御する工業用コントローラをプログラムする方法に関するものである。
本発明はさらに、自動化設備の工業用コントローラをプログラムする装置に関するものである。
【背景技術】
【０００２】
この種類の方法および装置は、例えば、特許文献１で知られている。
今日の世界では、自動化された、または少なくとも部分的に自動化された多くの技術的プロセスが稼働している。工業用製造現場および生産プラントにおいてだけでなく、空港の手荷物受取所、スキー場のスキー・リフト、遊園地のジェット・コースターなどの日常生活の場面でもまた実施例を見つけることができる。
【０００３】
このような設備の機械および他の構成要素は、設備内のセンサからのセンサ・データを受信して処理するとともに、設備内のアクチュエータを駆動する制御信号を作り出す工業用コントローラで動かされている。例えば、ロボット・アームの瞬時位置を表すセンサ・データの関数として、および制御プログラムで規定するロボット・アームの所望軌道の関数として、ロボット・アームの操作位置を自動的に制御してもよい。コントローラで生成する制御信号により、ロボット・アームを所望の方向に動かす電気駆動装置に電圧を加える。ロボット・アームを制御する制御操作は非常に複雑である可能性がある。それにもかかわらず、制御プロセスには高い柔軟性が求められる。したがって、プログラマブル・コントローラ、すなわち、アプリケーション・プログラムと通常呼ばれるソフトウェアで制御論理を決定するコントローラを使用するのが普通である。
【０００４】
工業用コントローラのプログラムに通常使用される多くの専用プログラミング言語がある。特に、国際規格ＩＥＣ６１１３１は、いくつかのプログラミング言語を規定している。これらのプログラミング言語では個別のコントローラ上で実行可能な機械コード・プログラムが得られないため、これらのプログラミング言語は本発明の観点で言えば高レベル（high level）・プログラム言語である。正確に言えば、高レベル・プログラミング言語で書かれたプログラムを個別のコントローラ上で実行可能にするには、低レベル機械コード・プログラムに変換しなければならない。変換プロセスは、中間レベル・プログラム・コードを含むいくつかの段階を含んでいてもよい。
【０００５】
便宜上、本明細書では、ラインバイライン・トランスレータ（インタプリタ）および他の種類のトランスレータを含む任意の種類の適したトランスレータに対して、用語「コンパイラ」を使用する。同様に、本明細書では、変換プロセスの結果である低レベル・プログラム・コードであって、制御対象プロセスまたは制御対象設備からの正確なセンサ・データを提供できるコントローラまたは同等の機械上で実行してもよい任意の低レベル・プログラム・コードに対して、用語「機械コード・プログラム」を使用する。
【０００６】
高レベル・プログラミング言語を使用することにより工業用コントローラのプログラミング・プロセスが非常に促進される。その理由は、高レベル・プログラミング言語が複数の高レベル制御命令を提供しており、これらの高レベル制御命令により、プログラマが、コントローラの個別のハードウェア上の実際的なインプリメンテーションではなく、むしろ制御問題および制御論理に集中できるようになるためである。したがって、高レベル・プログラミング言語は広く使用されている。
【０００７】
それにもかかわらず、現代の高度に自動化された制御応用に対する制御プログラムは非常に複雑である可能性があり、プログラミング・エラーを特定することが困難である場合が多い。
したがって、デバッグ用ツールを使用することが一般的である。デバッグ用ツールまたはデバッガは、アプリケーション・プログラムのような他のプログラム内のプログラミング・エラーを見つけるプロセスで使用される特別なコンピュータ・プログラムである。通常、デバッグ用ツールは、ステップ・バイ・ステップ・モード（シングル・ステップ）で、および／または、いわゆるブレイクポイントを用いて、デバッグされる予定のアプリケーション・プログラムの実行を可能にする。ブレイクポイントは、アプリケーション・プログラムの通常の過程では使用しない特別な停止コマンドであり、この停止コマンドは検査中のアプリケーション・プログラムをブレイクポイントの場所で停止させて、前記ブレイクポイントの場所でアプリケーション・プログラムにより達成されたステータスをプログラマが十分な時間をかけて検査できるようになっている。
【０００８】
特許文献１は、工業用コントローラ用のアプリケーション・プログラムをデバッグする方法を開示しており、機械コードのレベルだけでなく、高レベル・プログラミング言語のレベルでも、特に、フローチャート・レベルでも、シングル・ステップ・モードおよび／またはブレイクポイント・モードを使用することができる。したがって、プログラミング・エラーを異なるレベルで調べることができ、エラー検出を促進すると予想される。
【０００９】
特許文献２は、内蔵デバッグ機能を有する工業用コントローラを開示している。内蔵デバッガは、アプリケーション・プログラムを、上述したようにステップ・バイ・ステップで、および／または、ブレイクポイントを用いて、実行することを可能にする。
しかしながら、例えば、制御されていない機械動作が生じることを回避するために、制御対象プロセスを中断することができない場合があるかもしれない。したがって、特許文献２は、選択的に起動したり、または停止したりすることができるブレイクポイントを提案している。
【００１０】
このようにして、特許文献２は、デスクトップ・アプリケーション用のコンピュータ・プログラムのデバッグとは対照的な工業用コントローラ用のアプリケーション・プログラムのデバッグに特有の基本問題、すなわち、例えば、制御対象設備を任意の瞬間に停止できないことに起因する制限に対処している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】欧州特許出願公開第1 184 758号A2
【特許文献２】独国特許出願公開第10 2004 062 852号A1
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし工業用コントローラ用の複雑な制御プログラムを、単にシミュレーション実行するだけ、すなわち、設備を実際に動かしたり、または他の方法で制御したりせずに、デバッグできるだけであることは珍しくない。
さらに、既存のデバッグ用ツールを用いて工業用コントローラ用の複雑な制御プログラムをデバッグすることは、非常に時間がかかって骨の折れるプロセスである可能性がある。
【００１３】
この背景に照らして、本発明の目的は、複雑なアプリケーション・プログラムの時間効率の良いデバッグを行うための改良されたデバッグ機能を含む、工業用コントローラをプログラムする方法および装置を提供することである。
【課題を解決するための手段】
【００１４】
本発明の一態様に基づけば、この目的は次のような方法で達成される。すなわちデバッグ用ツールを起動している間にコントローラ上で機械コード・プログラムを実行し、デバッグ用ツールはコントローラ上で走る機械コードと、プログラム・エディタ内に表示された少なくとも１つの高レベル制御命令と、の間の逆関係を決定し、デバッグ用ツールはデータ・メモリからセンサ・データを読み込むとともに、デバッグ用ツールは少なくとも１つの高レベル制御命令にデータ・メモリからのセンサ・データを割り当てて、それにより、少なくとも１つの高レベル制御命令を機械コード・プログラム実行時の実際のシステム状態にリンクさせる。
【００１５】
本発明の他の態様に基づけば、この目的は次のような装置で達成される。すなわちデバッグ用ツールがコントローラ上で機械コード・プログラムの実行処理を開始するように構成され、デバッグ用ツールはコントローラ上で走る機械コードと、プログラム・エディタ内に表示された少なくとも１つの高レベル制御命令と、の間の逆関係を決定するように構成され、デバッグ用ツールはデータ・メモリからセンサ・データを読み込むようにさらに構成され、デバッグ用ツールは少なくとも１つの高レベル制御命令にデータ・メモリからのセンサ・データを割り当てるように構成され、それにより、少なくとも１つの高レベル制御命令を機械コード・プログラム実行時の実際のシステム状態にリンクさせる。
【００１６】
本発明の方法および装置のデバッグ用ツールは、ブレイクポイントおよび／またはステップ・バイ・ステップ・モードの使用に依存していないが、必要に応じて、これらの従来のデバッグ機能を使用してもよい。しかしながら、核となる態様は、コントローラ上で実際に走る機械コードと、プログラム・エディタ内に表示された少なくとも１つの、好ましくは数個の高レベル制御命令と、の間の逆関係を確立することである。
【００１７】
この逆関係を確立することは、コントローラ上で実行される機械コード命令のうちのどの群が特定の高レベル制御命令に対応しているかを特定することを含んでおり、プログラム・エディタ内に表示された少なくとも１つの高レベル制御命令を機械コード・プログラム実行時の実際のシステム状態にリンクさせることができるようになっている。逆関係を決定することは、機械コード・プログラムを逆コンパイルするステップを、ある程度、含んでおり、機械コード命令を少なくとも１つの高レベル制御命令に再変換するようになっていてもよい。しかしながら、逆コンパイルするステップを必要としないインプリメンテーションがある可能性がある。例えば、適切な基準を機械コードに組み込むことによりコンパイル・プロセス内に逆関係の基礎を既に構築していてもよい。
【００１８】
逆関係を確立することは、高レベル制御命令と制御対象設備の具体的なシステム状態とをリンクすることを可能にする。この具体的なシステム状態は前記高レベル制御命令により開始される制御操作の結果である。言い換えれば、新規のデバッグ用ツールは、少なくとも１つの高レベル制御命令と、制御対象設備の実際のシステム状態への影響とを相互に関連付けている。新規のデバッグ用ツールは、好ましくはアプリケーション・プログラムの任意の高レベル制御命令に対して、新規の逆関係を自動的に確立する。
【００１９】
本発明のデバッグ用ツールの他の態様は、逆関係の結果として特定された少なくとも１つの高レベル制御命令に、コントローラのデータ・メモリから読み込んだ実際のセンサ・データを割り当てることである。両方の態様はともに、制御プロセスの間の特定の瞬間の実際のシステム状態と、この特定のシステム状態に関与する高レベル制御命令と、の間のリンクを提供する。
【００２０】
本発明のデバッグ用ツールによれば、特定の高レベル制御命令が制御対象設備に及ぼす実際の影響をプログラマが容易に検査できるため、効率的なデバッグ・プロセスを促進することが理解されるであろう。実際のシステム状態と特定の高レベル制御命令との間の新規のリンクを確立することは、高レベル制御プログラムと制御対象設備との間の因果関係における原因を明らかにする。アプリケーション・プログラムが複雑であるほど、新規のデバッグ用ツールはデバッグ・プロセスをより促進する。したがって、上述した目的は完全に達成される。
【００２１】
本発明の好ましい改良形態では、コントローラ上で機械コード・プログラムを実行している間に、デバッグ用ツールがデータ・メモリからセンサ・データを繰り返し読み込む。
この改良形態に基づいて、デバッグ用ツールは、特定の瞬間に対してだけでなく、制御プログラムの実行中の、より長い期間に対しても最新のセンサ・データを提供する。制御対象設備の動作の長期的変化をデバッグ・プロセスにおいてより容易に考慮することができる。
【００２２】
他の好ましい改良形態に基づいて、コントローラ上で機械コード・プログラムをリアルタイムで実行する。
この改良形態に基づいて、ブレイクポイントも、特定のステップ・バイ・ステップ・モードも、どちらも用いずに、機械コード・プログラムを実行する。もっと正確に言えば、機械コード・プログラムを、本物の制御プロセスで実行するのと実質的に同様に実行する。実際の条件に基づいて機械コード・プログラムを実行することは制御プロセスの現実的状況を提供し、そのためデバッグ・プロセスをさらに促進する。このことは、重力のような自然力を取り扱う必要があるアプリケーション・プログラムおよび制御操作では、それらの力を止めたり、または減速させたりすることができないため、特に正しい。
【００２３】
他の改良形態では、データ・メモリから読み込んだセンサ・データの履歴を、少なくとも１つの高レベル制御命令に割り当てる。他の方法として、または加えて、デバッグ用ツールはデータ・メモリからセンサ・データを読み込み、そのセンサ・データを、所定のトリガー条件の関数として少なくとも１つの高レベル制御命令に割り当てる。
両方の改良形態は、コントローラ上でおよび／または検査中のプログラム・ループ内で機械コード・プログラムを実行している間にセンサ・データが非常に急激に変化する場合、収集されたセンサ・データのユーザ分析を促進してもよい。センサ・データの履歴は、時間の流れの中でのセンサ・データの現在値および前値（歴史的な値）を示すデータ収集の任意の形態であってもよい。所定のトリガー条件は、所望のセンサ・データを読み込むある特定の瞬間を特定するために、使用者が規定することができる、または自動的に規定することができる任意の条件である。したがって、所定の条件はセンサ・データを読み込むためのトリガー信号を提供し、このセンサ・データを少なくとも１つの高レベル制御命令に割り当てる。
【００２４】
しかしながら、他の改良形態では、機械コード・プログラムをコントローラ上でステップ・バイ・ステップで実行することが特徴となる。
この改良形態は、非常に複雑な制御シナリオのようなデバッグ・プロセスで、大量のセンサ・データをモニタし考慮する必要があるときに有利である。できれば実際のシナリオにおいて制御プログラムのステップ・バイ・ステップ実行処理を利用することで、すべての関連センサ・データに対するプログラマの見通しを促進する。
【００２５】
他の改良形態では、高レベル制御プログラムが、機械コード・プログラムの実行時の時系列に対応する連続的順番で複数の高レベル制御命令を含んでおり、デバッグ用ツールが時系列に基づいて少なくとも１つの高レベル制御命令にデータ・メモリからのセンサ・データを割り当てる。
この改良形態に基づいて、プログラム・エディタ内に表示された全く同じ高レベル・プログラム変数が、その高レベル・プログラム変数を使用する高レベル制御プログラムの中での位置に応じて、実質的に全く同じ時間に（または少なくとも同じオペレーティング・サイクル内で）異なる値を有していてもよい。例えば、ブール変数は少なくとも１つの高レベル制御命令を実行した後には値「真」を有していてもよいが、同じブール変数が前記高レベル制御命令の実行処理の前には値「偽」を有していてもよい。本改良形態は、機械コード・プログラムの実行処理の時系列の結果として高レベル・プログラム変数の値におけるこのような変化を示している。この改良形態は、コントローラ上の機械コード・プログラムの時系列またはタイミング動作に基づいて実際のセンサ・データを利用することにより、複雑な高レベル制御プログラムの効率的なデバッグをさらに促進する。言い換えれば、この改良形態は、デバッグ・プロセスにおいて制御対象設備のタイミング動作を考慮に入れている点が特徴である。
【００２６】
さらに他の改良形態に基づいて、限定された数の高レベル制御命令を複数の高レベル制御命令から選択して、デバッグ用ツールがコントローラ上で走る機械コードと、限定された数だけの高レベル制御命令と、の間の逆関係を決定する。
この改良形態では、限定された数の高レベル制御命令だけが新規のデバッグ・プロセスで利用可能である。この限定は一見したところでは不利に見えるかもしれないが、逆関係を確立するのに、より少ない処理時間しか必要としないため、デバッグ用ツールを、より効率的に動かすことができることが分かっている。言い換えれば、限定された数の特に関連がある高レベル制御命令にデバッグ・プロセスを集中させて、それらの選択された制御命令だけに対して逆関係を決定する。限定された数の制御命令に対して逆関係を非常に速く確立することができる。
【００２７】
他の改良形態では、少なくとも１つの高レベル制御命令が高レベル・プログラム変数を含んでおり、デバッグ用ツールが高レベル・プログラム変数にデータ・メモリからのセンサ・データを割り当てる。
この改良形態は、少なくとも１つの高レベル制御命令に実際のセンサ・データを非常に簡単に分かりやすく割り当てる。したがって、この改良形態は、新規のデバッグ用ツールのかなり容易なインプリメンテーションを可能にする。しかしながら、他の改良形態では、デバッグ用ツールが、プログラム・コマンドとプログラム変数の両方を含む複雑な制御命令に、データ・メモリからのセンサ・データを割り当ててもよい。この後者の改良形態は、新規のデバッグ用ツールの柔軟性と処理能力とを向上させる。
【００２８】
さらに他の改良形態に基づいて、少なくとも１つの高レベル制御命令がデータ・メモリからの複数のセンサ・データに対応しており、デバッグ用ツールが複数のセンサ・データから、設備のより高レベルのシステム状態を表す複雑なデータ変数を決定し、デバッグ用ツールは高レベル制御命令に複雑なデータ変数を割り当てる。
この改良形態は、効率的なデバッグ・プロセスのための非常に柔軟で高性能な方法を提供する。複数の異なるセンサ・データを組み合わせて複雑なデータ変数を作ることと、高レベル制御命令に前記複雑なデータ変数を割り当てることとは、複数のセンサ・データを詳細にモニタする代わりに、デバッグ・プロセス内の全体的なシステム動作に集中することを可能にする。例えば、複雑なデータ変数は、ロボット・アームの位置（上端または下端、左または右）を表してもよく、定性的考察または一般的考察が、ロボットの数個の軸の複数の異なる位置エンコーダに由来する複数のセンサ・データに対応してもよい。ロボットの全体的な位置がデバッグ・プロセスにおける大きな関心事であるときには、デバッグ・プロセス内で複雑なデータ変数を使用すると、ロボット・アームの全体的な位置をモニタすることが可能になり、複数の異なるセンサ・データをモニタするよりも、はるかに容易であり効率的である。
【００２９】
他の改良形態に基づいて、デバッグ用ツールが、プログラム・エディタ内の高レベル・プログラム命令に近い位置に、センサ・データ、および特に複雑なデータ変数を表示する。
この改良形態は、高レベル制御命令と、それぞれの命令が実際の設備に及ぼす影響との両方を、プログラマが同時に、すなわち、一目で見ることができるため、非常に便利で効率的なデバッグ・プロセスを可能にする。実際のセンサ・データを高レベル・プログラム・コードに反映しており、プログラミング・エラーの特定をきわめて容易にしている。
【００３０】
他の改良形態に基づいて、デバッグ用ツールが、設備の複数の所定のシステム状態から１つを示す複数のグラフィカル・シンボルを含むデータベースを含んでおり、デバッグ用ツールは複数のグラフィカル・シンボルから１つ（または１つ以上）を、高レベル・プログラム命令に近い位置に、割り当てられたセンサ・データの関数として表示する。
この改良形態は、プログラム・コードに高レベル・システム状態を反映させるために複雑なデータ変数を使用しているときに、特に有利である。例えば、ロボット・アームの上端または下端を示すロボットのグラフィカル・シンボルは、ロボット・アームの対応するシステム状態を象徴するために使用してもよい。しかしながら、この改良形態は、１ビットだけで表すことができる電源スイッチのような、それほど複雑ではないセンサ・データにも使用してもよい。この改良形態は、実際のセンサ・データで表された実際のシステム状態を非常に直感的な方法で高レベル・プログラム・コードに反映しているため、プログラマに非常に便利で使いやすいインタフェースを提供する。自動化設備を制御する制御プログラムのデバッグを大幅に促進する。
【００３１】
本発明の範囲を逸脱することなく、上述した特徴およびさらに後述する特徴を、それらのそれぞれの組み合わせだけでなく、他の組み合わせでも、またはそれらの特徴単独でも使用することができることは明らかである。本発明の実施形態のさらなる特徴および詳細について図面を参照しながら後述する。
【図面の簡単な説明】
【００３２】
【図１】本発明のプログラマブル・コントローラを含む自動化設備の実施形態を示す概要図である。
【図２】本発明の方法および本発明の装置の実施形態を示す概略図である。
【図３】図２の方法および装置の高レベル制御命令を含むプログラム・エディタの画面図である。
【図４】好ましい実施形態に基づいて実際のセンサ・データと一緒に図３のプログラム・エディタを示している。
【図５】高レベル制御命令と、実際のシステム・データを表すロボット・シンボルと、を含むプログラム・エディタの他の好ましい実施形態を示している。
【発明を実施するための形態】
【００３３】
図１は、本発明の好ましい実施形態に基づいて制御されプログラムされる設備１０の略図を示す。一例として、設備１０は可動ロボット・アーム１２を有するロボット１１を含んでいる。ロボット・アーム１２の動作はプログラマブル・コントローラ１４で制御されている。
コントローラ１４は、例えば、ある瞬間のロボット・アーム１２の位置または速度のような、実際のシステム状態を表す物理量を測定したり、または検出したりするように構成されているセンサから信号を受信する。センサ信号はコントローラ１４に送信されて、センサにより測定されまたは検出されたそれぞれ実際のシステム状態を表すセンサ・データをコントローラ１４が受信するようになっている。
【００３４】
一例として、図１は回転駆動装置１８のすぐ近くに置かれたセンサ１６を示している。センサ１６は、駆動装置１８の瞬時動作位置を検出するように構成されている。駆動装置１８は、コントローラ１４からの制御信号に呼応してロボット・アーム１２を動かすように構成されている。コントローラ１４は、本発明によりプログラムされた制御命令に基づいて、およびセンサ１６から受信したセンサ・データに基づいて、駆動装置１８を制御する。設備１０が、さまざまな種類の複数のセンサおよびアクチュエータを含んでいてもよいことは明らかである。
【００３５】
本実施形態では、コントローラ１４は、防護ドア２２の閉鎖位置をモニタするように構成された防護ドア・スイッチ２０からの信号もまた受信する。防護ドア・スイッチ２０は、危険な状況を回避するために最近の自動化設備内で使用される安全関連センサの典型的な実施例である。他の安全関連センサは、非常停止プッシュボタン、ライト・グリッド、または譲受人のセーフティ・アイ（登録商標）カメラ・システムなどのフェイルセーフ・カメラ・システムを含んでいてもよい。本発明の好ましい実施形態に基づいて、コントローラ１４は、安全関連のセンサ・データと、安全に関連しない（一般的な）センサ・データとを処理して、両方の種類の情報の関数としてロボット１１を制御するように構成されている。
【００３６】
本実施形態では、コントローラ１４は駆動装置１８を制御するだけではなく、接触器２４、２６も制御しており、これらの接触器２４、２６は、必要に応じて、防護ドア・スイッチ２０のような安全関連センサからのセンサ・データに呼応して安全な停止を提供するためにロボット１１への電力供給を中断するように構成されている。しかしながら、本発明は、安全関連センサ・データを処理しないプログラマブル・コントローラにも使用できることが理解されるであろう。
【００３７】
図２は、プログラム・コントローラ１４用のプログラミング・ツール３０の好ましい実施形態を示している。また、プログラマブル・コントローラ１４を詳細に示している。
図２から分かるように、コントローラ１４は、ここでは２つの冗長なマイクロプロセッサ３２、３４を含んでいる。マイクロプロセッサ３２、３４は、２チャンネルの冗長性を用いて制御命令とセンサ・データとを処理するように構成されている。
【００３８】
安全関連の制御操作に求められるフェイルセーフ設計を提供するために、２つのマイクロプロセッサは、それらの各々の処理結果を比較して互いにモニタしている。欧州規格ＥＮ  ９５４−１の第３カテゴリもしくは第４カテゴリ、または国際規格ＩＳＯ１３８４９−１もしくはＩＥＣ６１５０８に準拠する同様の要求事項に基づいて、安全関連の制御操作を制御するコントローラの資格を得るために、コントローラ１４は、３チャンネルの冗長性および／または他の種類の組込み試験機能を有していてもよいことは明らかである。しかしながら、上述したように、新規の方法および装置は安全コントローラの資格を得ないコントローラをプログラムするのに使用してもよいが、新規の方法および装置は安全関連の制御プログラムのデバッグに特によく適しているため、後者の安全コントローラの方が好ましい。
【００３９】
コントローラ１４は、複数の機械コード命令４０を含む機械コード・プログラム３８を受け入れるプログラム・メモリ３６を含んでいる。プログラム・メモリ３６は、数個の冗長機械コード・プログラムを保存する数個の冗長プログラム・メモリを、各冗長マイクロプロセッサ３２、３４について１つずつ含んでいてもよいことが想定される。しかしながら、便宜上、ここでは１つのプログラム・メモリ３６だけを示しており、このプログラム・メモリ３６は両方のマイクロプロセッサ３２、３４に機械コード・プログラムを提供している。
【００４０】
また、コントローラ１４は、センサ・データを保存するとともに、アクチュエータ・データを保存するデータ・メモリ３８を含んでいる。センサ１６、２０からセンサ・データを受信して、そのセンサ・データをプログラム・メモリ３６内に保存された機械コード命令に基づいて冗長マイクロプロセッサ３２、３４で処理する。データ処理の結果、アクチュエータ・データを生成してリモート・アクチュエータ１８、２４、２６に送信し、アクチュエータ１８、２４、２６を駆動する。また、データ・メモリ３８内に保存されたセンサ・データは、前処理された２ビット冗長センサから生じる１ビット・データのような前処理されたセンサ・データを含んでいてもよいことが理解されるであろう。
【００４１】
プログラミング・ツール３０はプログラム・エディタ４２を含んでおり、このプログラム・エディタ４２は汎用パーソナル・コンピュータ（ＰＣ）上にインプリメントされていることが好ましい。
プログラム・エディタ４２は、複数の高レベル（high level）制御命令４６を含む高レベル制御プログラム４４を書き込んで編集することを可能にする。好ましい実施形態に基づいて、プログラム・エディタ４２は、国際規格ＩＥＣ６１１３１で規定された１つ以上の高レベル・プログラミング言語でプログラムを作成することを可能にする。
【００４２】
また、プログラミング・ツール３０は、高レベル制御プログラム４４をコンパイルして機械コード・プログラム３８を作成するコンパイラ４８を含んでいる。その後、機械コード・プログラム３８はインタフェース５０を介してプログラム・メモリ３６に転送される。このインタフェース５０はＰＣベースのプログラミング・ツール３０とコントローラ１４との間のデータ転送を可能にする任意の好適なインタフェースである。
【００４３】
当業者には明らかなように、コンパイラ４８およびインタフェース５０は、プログラム・エディタ４２もまた提供しているＰＣのハードウェア・コンポーネントおよび／またはソフトウェア・コンポーネントを含んでいてもよい。
プログラミング・ツール３０はデバッグ用ツール５２をさらに含んでおり、このデバッグ用ツール５２もまた、好ましい実施形態のＰＣ上にソフトウェア・コンポーネントおよび／またはハードウェア・コンポーネントとしてインプリメントされている。
【００４４】
デバッグ用ツール５２は、設備の実際のシステム状態を表すセンサ・データを、通信リンク５４を介してデータ・メモリ３８から読み込むように構成されている。いくつかの実施形態では、参照番号５５で示すように、規定された時間枠の中でデバッグ用ツール５２がセンサ・データを何度も繰り返して読み込むことができ、センサ・データの履歴を実際に読み込むようになっている。
【００４５】
また、デバッグ用ツール５２は、現在マイクロプロセッサ３２上で、どの機械コード命令４０を実行しているのかを通信リンク５６を介して特定するように構成されている。一実施形態では、マイクロプロセッサ３２および／または３４上で実行されている機械コードが、データ・メモリ３８および／または別のメモリ（ここでは図示せず）の中に、現在実行されている機械コード命令を特定する識別子を書き込むように構成されており、リンク５６を介して識別子を読み込むことでデバッグ用ツールが現在の機械コード命令を容易に特定できるようになっていてもよい。
【００４６】
デバッグ用ツール５２は、トリガー条件を規定するフィールド５７を提供するように構成されているように想定され、このトリガー条件はリンク５４および／または５６を介した読み込みプロセスの引き金となる。フィールド５７を使用して、プログラマは、例えば “If robot arm 12 left = true, then read sensor data from memory 38”のようなトリガー条件を規定できる。
【００４７】
デバッグ用ツール５２は、データ・メモリ３８からのセンサ・データと、後で詳述する方法でプログラム・エディタ４２内に表示された高レベル制御命令４６と、を相互に接続する。したがって、デバッグ用ツール５２は、マイクロプロセッサ３２上で現在走っている機械コードと、プログラム・エディタ４２内に同時に表示された高レベル制御命令と、の間の逆関係を決定するように構成されている。
【００４８】
好ましい実施形態では、デバッグ用ツール５２を複数のグラフィカル・シンボルを含むデータベース５８に接続しており、各グラフィカル・シンボルはロボット１１の複数の所定のシステム状態からの１つを示している。例えば、データベース５８は、ロボット・アーム１２がいろいろな位置（上端、下端、左、右など）にあるロボット１１を示すグラフィカル・シンボルを含んでいてもよい。
【００４９】
デバッグ用ツール５２は、一例として図３〜図５に示すように、通信リンク５４を介して受信した実際のセンサ・データの関数として複数のグラフィカル・シンボルから１つを選択して、ロボット１１の現在のシステム状態を、高レベル制御プログラム４４に象徴的に反映するように構成されていてもよい。
図３は、複数の高レベル制御命令４６を含むプログラム・エディタ４２を示している。複数の高レベル制御命令４６は、本実施形態ではテキスト形式言語で書かれた高レベル制御プログラムを形成している。しかしながら、国際規格ＩＥＣ６１１３１で規定された、いわゆる機能ブロック図のようなグラフィカル・プログラミング言語を使用することも想定される。図３は、デバッグ用ツール５２を起動していない状態で、すなわち、新規のデバッグ機能の無い状態でプログラム・エディタ４２を示している。
【００５０】
図４は、デバッグ用ツール５２を起動している状態で、限定された数の高レベル制御命令４６とともに、同じプログラム・エディタ４２を示している。
図４では、英数字シンボル６０、６２とグラフィカル・シンボル６４、６６とを高レベル制御命令４６と一緒に表示している。シンボル６０、６２は、高レベル・プログラム変数６８の現在値を表示しており、この高レベル・プログラム変数６８は図示の実施形態ではＳＴＡＴＥと呼ばれる変数である。プログラム変数６８の現在値は現在のセンサ・データからデバッグ用ツール５２により決定される。
【００５１】
図４の説明図から分かるように、制御操作が行われている結果として、および／または、他の理由によりセンサ・データが変化する結果として、プログラム変数６８は制御プロセスの過程で異なる値を有していてもよい。デバッグ用ツール５２は、制御プロセス内の制御命令の時系列６９に対応するスケジュールに従って、プログラム変数６８のそれぞれの現在値を表示する。したがって、プログラム変数６８は、図４のシンボル６０、６２で示すように、１つの高レベル制御命令では現在値「５」を有していてもよく、もっと後の制御命令では現在値「６」を有していてもよい。
【００５２】
シンボル６０、６２は英数字の値を表示しており、これらの英数字の値は、ＩＥＣ６１１３１に基づくプログラミング言語の一般的なデータ・タイプであるバイト、ワード、整数、または実数タイプの高レベル・プログラム変数として有用である。対照的に、シンボル６４、６６は、ブール変数の現在のステータスを表示するのに使用できるグラフィカル・シンボルである。図４に示す実施形態では、シンボル６４、６６は「オン」または「オフ」のどちらでもよい「緑色光」を表している。しかしながら、この場合も先と同様に、シンボル６４、６６で象徴された任意のブール・プログラム変数の現在のステータスを、制御操作の時系列に基づいて、実際のセンサ・データの関数として決定している。
【００５３】
図５は、高レベル制御命令４６からなる高レベル制御プログラム４４を含むプログラム・エディタ４２の他の実施例を示している。プログラム４４は２つのブール変数７０、７２を含んでおり、制御プログラムの過程の中での各プログラム変数７０、７２のそれぞれの現在のステータスを、ここではロボット・アーム１２の絵文字を表すグラフィカル・シンボル７４、７６を用いて示している。グラフィカル・シンボル７４、７６は、複数の異なるセンサ・データから決定されるロボット・アーム１２の現在位置を表していてもよいことが想定される。デバッグ用ツール５２は、複数のセンサ・データから複雑なデータ変数を決定するように構成されていてもよい。例えば、複雑なデータ変数は、ロボット・アーム１２の各関節部の複数の位置情報を表す複数のセンサ・データに対応していてもよい。シンボル７４、７６は、それぞれの位置にあるロボット・アーム１２の描像であってもよく、各描像は異なる位置を表しており、したがって、複雑なデータ変数の異なる値を表している。
【００５４】
好ましい実施形態では、機械コード・プログラム３８を、コントローラ１４上で、いかなるブレイクポイントも用いずにリアルタイムで実行している。しかしながら、新規のデバッグ概念に加えて、必要に応じてステップ・バイ・ステップ・モードおよび／またはブレイクポイントを使用してもよいこともまた想定される。
【図１】
2010250832.tif 000003
【図２】
2010250832.tif 000004
【図３】
2010250832.tif 000005
【図４】
2010250832.tif 000006
【図５】
2010250832.tif 000007
【外国語明細書】
2010250832.tif 000008
2010250832.tif 000009
2010250832.tif 000010
2010250832.tif 000011
2010250832.tif 000012
2010250832.tif 000013
2010250832.tif 000014
2010250832.tif 000015
2010250832.tif 000016
2010250832.tif 000017
2010250832.tif 000018
2010250832.tif 000019
2010250832.tif 000020
2010250832.tif 000021
2010250832.tif 000022
2010250832.tif 000023
2010250832.tif 000024
2010250832.tif 000025
2010250832.tif 000026
2010250832.tif 000027
2010250832.tif 000028
2010250832.tif 000029
2010250832.tif 000030
2010250832.tif 000031
【図１】
2010250832.tif 000032
【図２】
2010250832.tif 000033
【図３】
2010250832.tif 000034
【図４】
2010250832.tif 000035
【図５】
2010250832.tif 000036