(57)【要約】【課題】  効率のよいデバッグを行え、また、安全上、工程を戻した際に、外部入力などの状態を比較し、状態が異なっている場合や、修正前と修正後の状態も比較し、実動作として変更されたところを表示することですぐに問題解決の確認ができるモーションコントローラを提供する。【解決手段】  工程歩進型プログラムを使用したモーションコントローラ２００において、実行される工程の直前と直後の状態の可逆データを記憶し、実行直前状態の可逆データに戻すプログラムを生成し記憶する手段４００を有し、プログラムを工程終了時に実行可能とする。モーション動作を伴う工程歩進型プログラムであって、実行された工程で、動作した軌跡を戻すプログラムを生成し記憶する手段５０１を有する。【選択図】        図１
2005301334.tif 000002
【特許請求の範囲】
【請求項１】
工程歩進型プログラムを使用したモーションコントローラにおいて、
実行される工程の直前と直後の状態の可逆データを記憶し、実行直前状態の可逆データに戻すプログラムを生成し記憶する手段を有し、前記プログラムを工程終了時に実行可能とすることを特徴とするモーションコントローラ。
【請求項２】
モーション動作を伴う工程歩進型プログラムであって、実行された工程で、動作した軌跡を戻すプログラムを生成し記憶する手段を有する請求項１記載のモーションコントローラ。
【請求項３】
上記実行直前状態の可逆データに戻すプログラムを実行した際に、入出力、変数等の情報が、前記可逆データの実行直前状態となっていることを監視し、表示する請求項１記載のモーションコントローラ。
【請求項４】
実行直前状態に戻すとともにプログラム修正や機械調整後に再度プログラムを実行した際に、プログラム修正後又は機械調整後に実行した状態とプログラム修正前又は機械調整前に実行した状態とを比較し、実動作上の相違箇所を表示する請求項１記載のモーションコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モーションコントローラであり、特に工程歩進型プログラムを用いてモーション動作、および入出力等の周辺装置を制御するデバッグ機能付きモーションコントローラに関する。
【背景技術】
【０００２】
現在、モーションコントローラのプログラミング言語としては、ラダープログラム、工程歩進型プログラムであるＳＦＣ（Ｓｅｑｕｅｎｔｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｃｈａｒｔ）等が一般的に使用されている。
【０００３】
ＳＦＣプログラム例を図１１に示す。前記ＳＦＣプログラムは、００１〜００６に示すステップ（ＳＴＥＰ）、０１０〜０１５に示すトランジッション、及びステップとトランジッション間を結ぶリンクからなる。ステップ内には、実行される処理が記述され、ステップ内の処理が完了すると、トランジッションにある遷移条件を判定する。遷移条件が満たされている場合のみ、次ステップの処理に遷移し、ステップ内の処理を実行する。
【０００４】
開始ステップ（ＳＴＥＰ１）００１が活性状態となった場合、トランジッション０１０，トランジッション０１３にある遷移条件を満たしている方へ分岐する。ここで、トランジッション０１０にある遷移条件が満たされていたとすると、００２のＳＴＥＰ２が活性状態となり。トランジッション０１１にある遷移条件を判定する。
【０００５】
ラダープログラムの場合、プログラムが正しく動作しているか確認するためのデバッグ方法として、各回路において実行した順序を確認するため変数にデータを出力し記憶する。これら情報をもとに、プログラム実行経緯を解析する方法がある。
【０００６】
一方でＳＦＣプログラムのような工程歩進型プログラムを使用したモーションコントローラのデバッグ方法としては、各工程毎または各スキャン毎の状態および各工程間の遷移を記憶エリアに格納し、後にプログラム実行経緯を記憶エリアから読み出し、解析するトレース手法が使用されている。このＳＦＣプログラムにおけるデバッグ方法を実行可能とする処理方式を採用しているものとして、特許文献１に示されているものがある。
【０００７】
図１２に、ＳＦＣプログラムのトレース手法を用いた全体フローチャートを示す。トレース開始指示があると判断（１００）された場合、トレース処理を開始する（１０１）。１０２では、トレースしたデータを順次トレースメモリに状態を記憶していく。トレースする内容は、ユーザがパラメータで設定されたもので、活性化した工程（ステップ）や入出力情報などがある。１０３で設定されたパラメータ内容のトレースが完了されたと判断されると、残トレースメモリが存在するか判断される（１０４）。残トレースメモリが存在する場合には、次スキャンのトレースデータをトレースメモリに記憶し、存在しない場合には、トレース処理を終了する。
【０００８】
ユーザは、これらトレースデータを元に、プログラムが正しい処理を順次実行しているかどうか、解析しプログラムのデバッグを行うことができる。
【０００９】
しかしながら、上述したようなトレース手法を用いたデバッグ方法は、プログラムのデバッグとして有効であるが、機械調整等を含む実機デバッグにおいて修正箇所が発生した場合には、そこまでの工程を最初から行わなければならない。そこで、実行されているプログラムの処理を実行される前の状態に戻すことが可能なデバッグ用プログラムを作成することで、状態を戻しながら、実際に問題の発生した状態を確認することのできるデバッグ方法が有効となる。
【特許文献１】特開２００１−１５４７１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明において解決しようとする課題は、順に各工程を行わなければならないような工程歩進型プログラムを要するモーションコントローラについてである。
【００１１】
従来のトレース手法を用いたデバッグ方法では、問題が発生した際に、機械調整やプログラム修正を行い、再度プログラムを最初から実行しなければならなかった。そのため、確認したい状態を再現するまでの工程を実行する必要があり、多大な時間が必要であった。
【００１２】
本発明の目的は、問題が発生した際に、問題が発生する前工程に戻し機械調整および修正したプログラムをすぐに確認できることにより、効率のよいデバッグを行え、また、安全上、工程を戻した際に、外部入力などの状態を比較し、状態が異なっている場合や、修正前と修正後の状態も比較し、実動作として変更されたところを表示することですぐに問題解決の確認ができるモーションコントローラを提供することにある。
【課題を解決するための手段】
【００１３】
本発明におけるデバッグ方法は、各工程内の処理が実施される直前のパラメータおよび変数の値を、データエリアに記憶する。また、実施前と実施後の値から、実施前の状態に戻すためのデバッグ用プログラムを順次作成し、プログラムエリアに出力していく。工程を戻す処理の際には、デバッグ用プログラムを読み出し、実行することで実現する。ここで、モーション動作を伴う処理の場合には、処理前後の指令位置と各モーション動作命令において同軌跡を戻すことが可能となる命令を登録しておき、処理前の状態に戻すデバッグ用プログラムを出力する。
【００１４】
また、デバッグ用プログラムを実行した際に、変数または入出力状態等が実行前の状態となっていることを確認するため、上述にあるデータエリアにある前状態とデバッグ用プログラムにより実行された状態を比較し、状態が異なっているかを監視し表示する。デバッグ用プログラムを実行し工程を戻してから、再度実行された状態が、プログラム修正や機械調整の前状態と後状態で、実動作として変更されたか確認するには、上述にあるデバッグ用プログラムを作成した際に生成されたデータエリア内容とプログラム修正や機械調整後に再実行された後の状態を比較し表示する。
【００１５】
すなわち、本発明は、工程歩進型プログラムを使用したモーションコントローラにおいて、実行される工程の直前と直後の状態の可逆データを記憶し、実行直前状態の可逆データに戻すプログラムを生成し記憶する手段を有し、前記プログラムを工程終了時に実行可能とするモーションコントローラである。
【００１６】
また、本発明は、モーション動作を伴う工程歩進型プログラムであって、実行された工程で、動作した軌跡を戻すプログラムを生成し記憶する手段を有するモーションコントローラである。
【００１７】
そして、本発明は、上記実行直前状態の可逆データに戻すプログラムを実行した際に、入出力、変数等の情報が、前記可逆データの実行直前状態となっていることを監視し、表示するモーションコントローラである。
【００１８】
更に、本発明は、実行直前状態に戻すとともにプログラム修正や機械調整後に再度プログラムを実行した際に、プログラム修正後又は機械調整後に実行した状態とプログラム修正前又は機械調整前に実行した状態とを比較し、実動作上の相違箇所を表示するモーションコントローラである。
【発明の効果】
【００１９】
本発明によれば、工程歩進型プログラムを用いるモーションコントローラのデバッグにおいて、容易に装置の状態を前工程の状態に戻すことが可能となる。これにより、すぐに問題の発生した状態から前工程に戻し、再度実行することし問題発生の状態や経緯を確認できるので、問題の発生した状態を確認するために、全ての工程を最初から実行する工数を削減できる。
【００２０】
また、プログラムの不具合があった場合、修正したステップの前工程に戻しステップ実行を行うことにより、プログラムのデバッグを容易に行うことができる。そのため、プログラムデバッグおよび実機の機械調整における工数を削減することができる。
【発明を実施するための最良の形態】
【００２１】
本発明を実施するための最良の形態を説明する。
以下本発明の実施形態例の図を参照しながら説明する。本説明における工程歩進型プログラムとして、ＳＦＣプログラムを使用する。また、実行状態を戻すために作成されるプログラムを、以下、「デバッグ用プログラム」という。
【００２２】
図１は、本発明を実施するための基本的なモーションコントローラの一例である。以下、図１のモーションコントローラの概要を説明する。
【００２３】
モーションコントローラ２００の指令により、モーションドライブ２０１を介して、モータ２０２を駆動させる。また、センサ等の信号は入力ユニット２０３を介して、モーションコントローラ２００に取り込む。シリンダ等の周辺機器の動作は、モーションコントローラ２００からの出力信号により出力ユニット２０４を介して行う。
【００２４】
装置状態のモニタリングおよび装置の起動等は、タッチパネル等の表示／入力周辺機器２０５を介して行われる。
【００２５】
モーションコントローラ２００の内部構造は、大きく分けてモーションエンジン部３００とアプリケーション部３０１からなる。モーションエンジン部３００は、メモリ４００、ＣＰＵ（モーション、Ｉ／Ｏ制御）４０１、モーションＩ／Ｆ４０２、入力／出力Ｉ／Ｆ４０３、バスＩ／Ｆ４０４を有する。アプリケーション部３０１は、バスＩ／Ｆ５００、メモリ５０１、ＣＰＵ（アプリケーション）５０２、周辺装置Ｉ／Ｆ５０３を有する。
【００２６】
モーションエンジン部３００のメモリ４００にアプリケーション部３０１で作成されたＳＦＣプログラムの内部コードが記憶され、この内部コードはＣＰＵ４０１で解析，実行され、モーションＩ／Ｆ４０２とＩｎｐｕｔ／Ｏｕｔｐｕｔ  Ｉ／Ｆ４０３を介し、それぞれ駆動系のモーション制御と、センサ等のＩ／Ｏ制御が行われる。プログラムの実行状態やＩ／Ｏ情報は、バスＩ／Ｆ４０４を介して、アプリケーション部３０１へ伝送される。
【００２７】
アプリケーション部３０１は、モーションエンジン部３００との情報の送受信を行うバスＩ／Ｆ５００を介して行う。メモリ５０１に記憶されているアプリケーションプログラムは、ＣＰＵ５０２により処理され、モーションエンジンから受けた情報は周辺装置Ｉ／Ｆ５０３を介して、タッチパネル等の表示／入力周辺機器に表示する。
【００２８】
本実施例では、モーションエンジン部３００のＣＰＵ４０１にて内部コードを解析，実行する際に、実行前の状態、および実行後の状態をメモリ４００に記憶する。
【００２９】
ここで、図１に示したモーションコントローラにおけるデバッグ用プログラム作成処理を含むプログラム実行処理の一例の全体フローチャートを図２に示す。図２において、左側はアプリケーション側の処理（ステップ１００１〜１００５）を示し、右側はモーションエンジン側の処理（ステップ１１０１〜１１１０）を示す。
【００３０】
アプリケーション側において、オペレータからプログラム開始パラメータが入力される（１００１）とモーションエンジン側にパラメータが送信される。
【００３１】
プログラム開始パラメ−タは、ＳＦＣプログラムの開始ステップ番号や、各変数のデフォルト値を示す。ＳＦＣプログラムの開始ステップ番号は、デバッグ機能時以外はデフォルトとしてＳＴＥＰ１からとなる。デバッグ機能を使用後には、デバッグ用プログラムを使用して戻されたステップ番号から実行することが可能となる。
【００３２】
モーションエンジン側は、このパラメータをメモリに記憶する（１１０１）。
【００３３】
プログラム開始パラメータ入力後、オペレータによりプログラム開始入力がされると（１００２）、モーションエンジン側にプログラム開始指示が送信される。
【００３４】
モーションエンジン側では、ＳＦＣプログラムの内部コードを解析（１１０３）し、その際オペレータよりデバッグ用プログラム作成開始入力（１００３）によるデバッグ機能開始指示があるか判定する（１１０４）。
【００３５】
デバッグ用プログラム作成開始指示がある場合には、ステップ１１０３にて解析された内部コードに関係する変数や、入出力等の状態を読み出しデータエリアに記憶する。また、この内部コードを実行した際の状態もメモリに記憶する（１１０５）（詳細は後述）。
【００３６】
次にステップ１１０５にて記憶した内部コード実行前と後のデータにより、実行後から実行前へ状態を変化させるデバッグ用プログラムを作成し、メモリに記憶する（１１０６）（詳細は後述）。
【００３７】
ステップ１１０４において、デバッグ用プログラム作成機能開始指示がなかった場合には、ステップ１１０５、１１０６は実行せず、解析された内部コードを実行する（１１０７）。
【００３８】
次に、オペレータからのプログラム中断／終了入力（１００４）によるプログラム中断／終了指示があるか判定する（１１０８）。
【００３９】
プログラム中断／終了指示がない場合には、次のプログラムコード解析（１１０３）を行う。
【００４０】
一方プログラム中断終了指示がある場合には、アプリケーション側からのデバッグ用データ送信依頼（１００５）があるかどうか判定する（１１０９）。
【００４１】
デバッグ用データ送信依頼がある場合には、アプリケーション側にデバッグ用プログラムおよびデ−タを送信する（１１１０）。これらデータはアプリケーション側メモリに記憶される。
【００４２】
ここで、図３に示すＳＦＣプログラムを例として、図２に示すステップ１１０５、１１０６のデバッグ用プログラム作成処理の全体フローチャートを図４に示す。図５は本処理により作成されたデータエリアの一例、図６はプログラムエリアの一例を示す図である。
【００４３】
ＳＦＣプログラムの図３のＳＴＥＰ１（２００１）は、変数Ｂに変数Ｃを加えた値を変数Ａに代入する処理“Ａ＝Ｂ＋Ｃ”であるので、デバッグプログラム作成処理フローの図４では、ステップ処理であるかの判定（３００１）を行い、活性化されているステップつまりＳＴＥＰ１をデータエリア，プログラエリアに格納する。次に算術式であるかの判定（３００３）を行い、現在の代入される値、つまりＡの値を取得し、データエリアに格納する。ここでは、デフォルト値よりＡ＝１０となる。
【００４４】
次に、実行後のデータをデータエリアに格納する（３００５）。ここでは、Ａ＝１２０（＝Ｂ＋Ｃ＝７０＋５０）が格納される。ステップ３００５にて格納したデータから内部コード実行前の状態に戻すデバッグ用プログラムを作成する（３００６）。ここでは、Ａ＝１０が作成され、プログラムメモリに格納される（３００７）。
【００４５】
デバッグ用プログラムが作成されると、実際の内部コードは実行され、トランジッション１（２０１０）の遷移条件の判定に移る。
【００４６】
トランジッション１（２０１０）では、Ａが１００より大きければ真となる判定文“Ａ＞１００”であるので、フロー図４では、ドランジッション条件をプログラムメモリに格納する処理が行われる（３００８）。ここでは、Ａ＞１００が作成され、プログラムメモリに格納される（３００９）。
【００４７】
デバッグ用プログラムが作成されると、実際の内部コードは実行され、トランジッション１（２０１０）の遷移条件の判定が真となると、ＳＴＥＰ２（２００２）に遷移する。
【００４８】
ＳＴＥＰ２（２００２）では、出力Ｙ１をＯＮする処理“ＳＥＴ  Ｙ１”であるので、デバッグ用プログラム作成処理フローの図４では、ステップ内処理であるかの判定（３００１）を行い、活性化されているステップつまりＳＴＥＰ２をデータエリア、プログラムエリアに格納する。次に算術式であるかの判定（３００３）、Ｉ／Ｏ操作であるかの判定（３０１０）を行い、ステップ３０１１の処理が行われる。ステップ３０１１では、指定されている入出力の情報つまりＹ１情報を取得し、データメモリに格納する。ここでは、Ｙ１＝ＯＦＦが格納される。
【００４９】
次に、実行後のデータをデータエリアに格納する（３０１２）。ここでは、Ｙ１＝ＯＮが格納される。ステップ３０１１にて格納したデータから内部コード実行前の状態に戻すデバッグ用プログラムを作成する（３０１３）。ここでは、３０１１で格納したデータＹ１がＯＦＦであるため、“ＲＥＳＥＴ  Ｙ１”が作成され、プログラムエリアに格納される（３０１４）。
【００５０】
デバッグ用プログラムが作成されると、実際の内部コードは実行され、トランジッション２（２０１１）の遷移条件の判定に移る。
【００５１】
トランジッション２（２０１１）では、Ｘ１がＯＮであれば真となる判定文“Ｘ１＝＝ＯＮ”であるので、トランジッション条件が作成（３００８）され、プログラムエリアに格納する処理が行われる（３００９）。ここでは、Ｘ１＝＝ＯＮが作成され、プログラムエリアに格納される。
【００５２】
デバッグ用プログラムが作成されると、実際の内部コードは実行され、トランジッション２（２０１１）の遷移条件の判定が真となると、ＳＴＥＰ３（２００３）に遷移する。
【００５３】
ＳＴＥＰ３（２００３）では、Ｘ軸を目標位置１０にＹ軸を目標位置１０まで移動させる直線補間運転の処理“Ｇ０１  Ｘ  １０  Ｙ  １０  Ｆ  １０００”であるので、デバッグプログラム作成処理フローの図４では、ステップ内処理であるかの判定（３００１）を行い、活性化されているステップつまりＳＴＥＰ３をデータエリア、プログラムエリアに格納する。次に算術式であるかの判定（３００３）、Ｉ／Ｏ操作であるかの判定（３０１０）を行い、３０１５の処理が行われる。ステップ３０１５では、指定されている軸の情報つまりＸ軸とＹ軸の現在位置情報を取得し、データエリアに格納する（３０１５）。ここでは、Ｘ＝０，Ｙ＝０が格納される。
【００５４】
次に、実行後のデータをデータエリアに格納する（３０１６）。ここでは、各軸の目標位置であるＸ＝１０，Ｙ＝１０が格納される。ステップ３０１６にて格納されたデータおよび直線補間命令から内部コード実行前の状態に戻すデバッグ用プログラムを作成する（３０１７）。ここでは、ステップ３０１５で格納したデータＸ＝０，Ｙ＝０であるため、Ｘ軸の目標位置＝０，Ｙ軸の目標位置＝０に直線補間移動する命令“Ｇ０１  Ｘ  ０  Ｙ  ０  Ｆ  ５００”が作成され、プログラムメモリに格納される（３０１８）。
【００５５】
“Ｆ  ５００”は速度を指定しているが、デバッグ用プログラムにおいては、必要に応じて、実プログラム速度より低くする。
【００５６】
デバッグ用プログラムが作成されると、実際の内部コードは実行され、ＳＴＥＰ３内の次コードを実行する。
【００５７】
ＳＴＥＰ３（２００３）の２コード目では、Ｘ軸を目標位置６０にＹ軸を目標位置３０まで移動させる直線補間運転の処理“Ｇ０１  Ｘ  ６０  Ｙ  ３０  Ｆ  １０００”であるので、デバッグプログラム作成処理フローの図４では、ステップ内処理であるかの判定（３００１）を行い、活性化されているステップつまりＳＴＥＰ３をデータエリア、プログラムエリアに格納する。次に算術式であるかの判定（３００３）、Ｉ／Ｏ操作であるかの判定（３０１０）を行い、ステップ３０１５の処理が行われる。ここで、指定されている軸の情報つまりＸ軸とＹ軸の現在位置情報を取得し、データエリアに格納する（３０１５）。ここでは、Ｘ＝１０，Ｙ＝１０が格納される。
【００５８】
次に、実行後のデータをデータメモリ格納する（３０１６）。ここでは、各軸の目標位置であるＸ＝６０，Ｙ＝３０が格納される。ステップ３０１６にて格納されたデータおよび直線補間命令から内部コード実行前の状態に戻すデバッグ用プログラムを作成する（３０１７）。ここでは、ステップ３０１５で格納したデータＸ＝１０，Ｙ＝１０であるため、Ｘ軸の目標位置＝１０，Ｙ軸の目標位置＝１０に直線補間移動する命令“Ｇ０１  Ｘ  １０  Ｙ  １０  Ｆ  ５００”が作成され、プログラムメモリに格納される（３０１８）。
【００５９】
“Ｆ  ５００”は速度を指定しているが、デバッグ用プログラムにおいては、必要に応じて、実プログラム速度より低くする。
【００６０】
ここで、ＳＴＥＰ３におけるモーション動作について説明する。図７はモーションコントローラ３１００，モーションドライブ３１０１，３１０２，モータ３１０３，３１０４，Ｘ−Ｙテーブル３１０５をモデルとしたモーションコントローラシステムで、プログラムが動作した際の位置経緯を示している。
【００６１】
図８は、同様のモーションコントローラ３２００，モーションドライブ３２０１，３２０２，モータ３２０３，３２０４，Ｘ−Ｙテーブル３２０５をモデルとしたモーションドライブシステムで、作成されたデバッグ用プログラムを実行した際の位置経緯を示している。
【００６２】
ＳＴＥＰ３の処理が実行されると、（Ｘ，Ｙ）＝Ａ点（０，０）からＢ点（１０，１０）まで直線補間動作され、次にＢ点からＣ点（６０，３０）に直線補間動作される。
【００６３】
また、Ｃ点の位置でＳＴＥＰ３のデバッグ用プログラムの処理が実行されると、（Ｘ，Ｙ）＝Ｃ点（６０，３０）からＢ点（１０，１０）まで直線補間動作され、次にＢ点からＡ点（０，０）に直線補間動作される。
【００６４】
ＳＴＥＰ３の２行目におけるデバッグ用プログラムが作成されると、実際の内部コードは実行され、トランジッション３（２０１２）の遷移条件の判定に移る。
【００６５】
トランジッション３（２０１２）では、Ｘが５より大きくＹが８より大きいと真となる判定文“（ＰＯＳＸ＞５）＆＆（ＰＯＳＹ＞８）”であるので、デバッグプログラム作成処理フローの図４では、ドランジッション条件をプログラムエリアに格納する処理が行われる（ステップ３００８）。ここでは、“（ＰＯＳＸ＞５）＆＆（ＰＯＳＹ＞８）”が作成され、プログラムエリアに格納される（３００９）。
【００６６】
デバッグ用プログラムが作成されると、実際の内部コードは実行され、トランジッション３（２０１２）の遷移条件の判定が真となると、ＳＴＥＰ４（ステップ２００４）に遷移する。
【００６７】
ＳＴＥＰ４（ステップ２００４）では、出力Ｙ２をＯＮする処理“ＳＥＴ  Ｙ２”であるので、デバッグプログラム作成処理フローの図４では、ステップ内処理であるかの判定（３００１）を行い、活性化されているステップつまりＳＴＥＰ４をデータエリア、プログラムエリアに格納する。次に算術式であるかの判定（３００３）、Ｉ／Ｏ操作であるかの判定（３０１０）を行い、ステップ３０１１の処理が行われる。ここで、指定されている入出力の情報つまりＹ２情報を取得し、データエリアに格納する（３０１１）。ここでは、Ｙ２＝ＯＦＦが格納される。
【００６８】
次に、実行後のデータをデータエリアに格納する（３０１２）。ここでは、Ｙ２＝ＯＮが格納される。ステップ３０１１にて格納したデータから内部コード実行前の状態に戻すデバッグ用プログラムを作成する（３０１３）。ここでは、３０１１で格納したデータＹ１がＯＦＦであるため、“ＲＥＳＥＴ  Ｙ２”が作成され、プログラムエリアに格納される（３０１３）。
【００６９】
前述により作成された図５に示すデータエリアには、プログラム内部コードの実行前、実行後のデータが格納されるが、図に示すＢｉｔ０とＢｉｔ１により格納されるデータ種類を付加する。（Ｂｉｔ０，Ｂｉｔ１）が（０，０）の場合にステップＮｏ．を示し、（０，１）の場合に実行前データ、（１、０）の場合に実行後データを示す。
【００７０】
前述により作成された図６に示すデバッグ用プログラムには、図に示すＢｉｔ０とＢｉｔ１により格納されたコードの種類を付加する。（Ｂｉｔ０，Ｂｉｔ１）が（０，０）の場合にＳＴＥＰ  Ｎｏ．を示し、（０，１）の場合にステップ内処理を示す。また、（１，０）でトランジッションＮｏ．を示し、（１，１）でトランジッション判定条件を示す。
【００７１】
ここで、作成されたデバッグ用プログラムの実行処理における全体フローチャートを図９に示す。ここで、前述にあるデータエリアを示す図５とプログラムエリアを示す図６の１コード分を実行例とし説明する。
【００７２】
アプリケーション側において、オペレータによりデバッグモード切り替えが入力（４００１）され、モーションエンジン側にデバッグモード切り替え指示がはいると、アプリケーション側からのデバッグ用プログラムを受けつけるデバッグモードへの切り替え処理（４１０１）が行われる。アプリケーション側は、デバッグ用プログラムをメモリから読み出し（４００２）、モーションエンジン側にて中断されているプログラムの活性状態となっているＳＴＥＰ  Ｎｏ．をモーションエンジン側に問い合わる（４００３）。
【００７３】
送信依頼を受けたモーションエンジン側は、現在の活性状態ＳＴＥＰ  Ｎｏ．を送信する（４１０３）。ここでは、活性状態にあるステップをＳＴＥＰ４とする。
【００７４】
デバッグプログラムの最終ＳＴＥＰ  Ｎｏ．と受信した活性状態のＳＴＥＰ  Ｎｏ．が同じであるか判定（４００４）し、同じ場合のみ、デバッグ用プログラムを実行可能とする。
【００７５】
次にオペレータよりデバッグ用プログラム実行入力があるか判定（４００５）し、入力がある場合には、デバッグ用プログラムコードをモーションエンジン側へ送信する（４００６）。ここでは、ＳＴＥＰ４のデバッグ用プログラム“ＲＥＳＥＴ  Ｙ２“が送信される。
【００７６】
モーションエンジン側は、デバッグ用プログラムの受信を判定（４１０４）し、受信したデバッグ用プログラムを実行する（４１０５）。
【００７７】
デバッグ用プログラムの実行完了確認依頼（４００８）がある場合に、受信したデバッグ用プログラムコードが完了していれば、アプリケーション側に実行完了信号を送信する（４１０７）。
【００７８】
アプリケーション側は、モーションエンジン側から取得したデバッグ用プログラム実行後のデータと、データエリアから実行前のデータを読みだし、値を比較し表示する（４００８）。
【００７９】
デバッグ用プログラム実行後データは、正しく動作していれば、Ｙ２＝ＯＦＦが取得される。またデータエリアからは、実行前データなので、Ｙ２＝０（ＯＦＦ）が読み出される。
【００８０】
これにより、デバッグ用プログラムにより、通常プログラムにおいて、１コード前の状態となったか判定が可能となる。
【００８１】
ここで、デバッグ用プログラムの次コードがステップ内処理であるか判定（４００９）し、ステップ内処理であれば、オペレータよりデバッグ用プログラムの実行終了入力の判定を行い（４０１０）入力がなければ、オペレータからのプログラム実行待ち状態に戻る。
【００８２】
プログラムメモリの次コードがトランジッション判定であれば、トランジッションの遷移条件が成立しているか判定する（４０１１）。ここでは、“（ＰＯＳＸ＞５）＆＆（ＰＯＳＹ＞８）”となっているか判定する。条件が真であれば、オペレータからのデバッグ用プログラム実行終了入力の判定を行う（４０１０）。遷移条件が成立していない場合は、エラー表示（４０１２）をし、デバッグ用プログラム実行処理を終了する。
【００８３】
次に、上述のデバッグ用プログラムにより、状態を戻した状態から、通常のプログラムを実行する処理の全体フローチャートを図１０に示す。
【００８４】
オペレータによりデバッグモード切り替え入力（５００１）により、プログラムを１コード実行するデバッグモードへの切り替え処理を行う（５１０１）。
【００８５】
デバッグ用プログラムを行った際の活性状態にあるＳＴＥＰ  Ｎｏ．をモーションエンジン側に送信する。モーションエンジン側は、活性状態にあるＳＴＥＰ  Ｎｏ．の受信を判定する（５１０２）。
【００８６】
アプリケーション側はオペレータからのプログラム実行入力を判定（５００３）し、入力があると、プログラム実行開始指示を送信する（５００４）。
【００８７】
モーションエンジン側は、プログラムステップ実行開始指示の判定（５１０４）を行い、開始指示がある場合には、指定されたＳＴＥＰから、１コード実行開始する（５１０５）。
【００８８】
実行完了確認依頼（５００５）が、アプリケーション側より入力された際、プログラムコード処理が完了していれば、実行完了信号を返す（５１０７）。
【００８９】
アプリケーション側は、実行完了信号を受信すると、図５に示した実行後のデータメモリ内容と、モーションコントローラからの取得データを比較した内容を表示する（５００６）。
【００９０】
これにより、プログラム修正等行った場合には、実際の処理がどのように変更されたか確認することが可能となる。
【００９１】
次にオペレータからプログラムステップ実行終了入力がない場合には、ステップ実行入力待ちとなり、入力がある場合には、プログラムステップ実行処理を終了する（５００７）。
【図面の簡単な説明】
【００９２】
【図１】本実施例のモーションコントローラのブロック図。
【図２】デバッグ用プログラム作成処理を含むプログラム実行処理の全体フロー図。
【図３】デバッグ用プログラムを作成するためのＳＦＣプログラム記述例の説明図。
【図４】デバッグ用プログラムの作成処理の一例のフローチャートの説明図。
【図５】デバッグ用プログラム作成時に生成されるデータエリア内容の一例の説明図。
【図６】デバッグ用プログラム作成時に生成されるプログラムエリア内容の一例の説明図。
【図７】ＳＦＣプログラムのモーション命令による動作を説明するモーションコントローラ例の説明図。
【図８】デバッグ用プログラムのモーション命令による動作を説明するモーションコントローラ例の説明図。
【図９】デバッグ用プログラムの実行処理の一例のフローチャートの説明図。
【図１０】デバッグ用プログラム実行後のプログラムステップ実行処理の一例のフローチャートの説明図。
【図１１】工程歩進型プログラムであるＳＦＣプログラム例の説明図。
【図１２】トレース手法を用いたデバッグ方法の全体フローの説明図。
【符号の説明】
【００９３】
２００・・・モーションコントローラ
２０１・・・モーションドライブ
２０２・・・モータ
２０３・・・入力ユニット
２０４・・・出力ユニット
２０５・・・表示／入力周辺機器
３００・・・モーションエンジン部
３０１・・・アプリケーション部
４００・・・メモリ（モーションエンジン側）
４０１・・・ＣＰＵ（モーション，Ｉ／Ｏ制御）
４０２・・・モーションインターフェース（Ｉ／Ｆ）
４０３・・・Ｉｎｐｕｔ／Ｏｕｔｐｕｔインターフェース（Ｉ／Ｆ）
４０４・・・バスインターフェース（Ｉ／Ｆ）（モーションエンジン側）
５００・・・バスインターフェース（Ｉ／Ｆ）（アプリケーション側）
５０１・・・メモリ（アプリケーション側）
５０２・・・ＣＰＵ（アプリケーション）
５０３・・・周辺装置インターフェース（Ｉ／Ｆ）
３１００・・・モーションコントローラ
３１０１，３１０２・・・モーションドライブ
３１０３，３１０４・・・モータ
３１０５・・・Ｘ−Ｙテーブル
３２００・・・モーションコントローラ
３２０１，３２０２・・・モーションドライブ
３２０３，３２０４・・・モータ
３２０５・・・Ｘ−Ｙテーブル
【図１】
2005301334.tif 000003
【図２】
2005301334.tif 000004
【図３】
2005301334.tif 000005
【図４】
2005301334.tif 000006
【図５】
2005301334.tif 000007
【図６】
2005301334.tif 000008
【図７】
2005301334.tif 000009
【図８】
2005301334.tif 000010
【図９】
2005301334.tif 000011
【図１０】
2005301334.tif 000012
【図１１】
2005301334.tif 000013
【図１２】
2005301334.tif 000014