(57)【要約】【課題】異なるプログラム間で定義する共有変数を同一名称とすることなく、より自由な命名を可能とし、過去のプログラム資産を流用することを可能とする。【解決手段】制御装置１０と、制御装置１０にて実行される複数の異なるプログラミング言語を開発するための開発支援装置５０とを備える制御システム１００であって、開発支援装置５０は、複数の異なるプログラミング言語のソースコードを入力する入力部７１と、各ソースコードにて選択された共有変数をマッピングし、共有変数マッピング情報を作成するマッピング情報作成部７３ａと、ソースコード及び共有変数マッピング情報を制御装置１０に送信する送信部７３，７５とを備え、制御装置１０は、ソースコードで表されたプログラムを実行するプログラム実行部９３ａ，９３ｂと、共有変数マッピング情報に基づき、マッピングされた各共有変数を共通の共有変数として処理する共有変数処理部９３ｃとを備える。【選択図】図１０
2019212122.tif 000002
【特許請求の範囲】
【請求項１】
制御装置と、前記制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置とを備える制御システムであって、
前記開発支援装置は、
前記複数の異なるプログラミング言語のソースコードを入力する入力部と、
それぞれのソースコードにおいて選択された共有変数をマッピングし、共有変数マッピング情報を作成するマッピング情報作成部と、
前記ソースコードおよび前記共有変数マッピング情報を前記制御装置に送信する送信部と、を備え、
前記制御装置は、
前記ソースコードで表されたプログラムを実行するプログラム実行部と、
前記共有変数マッピング情報に基づいて、マッピングされたそれぞれの前記共有変数を、共通の共有変数として処理する共有変数処理部と、を備える、
制御システム。
【請求項２】
前記共有変数処理部は、マッピングされた共有変数間でデータをコピー、または、参照アドレスを同じにする、
請求項１に記載の制御システム。
【請求項３】
前記入力部により入力される前記ソースコードは、少なくとも、コンパイル言語によるソースコードと、インタプリタ言語によるソースコードとを含む、
請求項１または請求項２に記載の制御システム。
【請求項４】
前記開発支援装置は、前記共有変数マッピング情報に基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されている箇所を示す共有変数リファレンス作成部を備える、
請求項１ないし請求項３のいずれか一に記載の制御システム。
【請求項５】
制御装置と、前記制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置とを備える制御システムの制御方法であって、
前記開発支援装置において、
前記複数の異なるプログラミング言語のソースコードを入力するステップと、
それぞれのソースコードにおいて選択された共有変数をマッピングし、共有変数マッピング情報を作成するステップと、
前記ソースコードおよび前記共有変数マッピング情報を前記制御装置に送信するステップと、を備え、
前記制御装置において、
前記ソースコードで表されたプログラムを実行するステップと、
前記共有変数マッピング情報に基づいて、マッピングされたそれぞれの前記共有変数を、共通の共有変数として処理するステップと、を備える、
制御システムの制御方法。
【請求項６】
制御装置と、前記制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置とを備える制御システムのプログラムであって、前記プログラムは、コンピュータに、
前記開発支援装置において、
前記複数の異なるプログラミング言語のソースコードを入力するステップと、
それぞれのソースコードにおいて選択された共有変数をマッピングし、共有変数マッピング情報を作成するステップと、
前記ソースコードおよび前記共有変数マッピング情報を前記制御装置に送信するステップと、を実行させ、
前記制御装置において、
前記ソースコードで表されたプログラムを実行するステップと、
前記共有変数マッピング情報に基づいて、マッピングされたそれぞれの前記共有変数を、共通の共有変数として処理するステップと、を実行させる、
制御システムのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置と、制御装置とを備える制御システム、制御システムの制御方法、および制御システムのプログラムに関する。
【背景技術】
【０００２】
ロボットを制御するシステムにおいては、ロボット制御に用いるプログラムは、例えばＶ＋言語で作成し、シーケンス制御に用いるプログラムは、例えば、国際電気標準会議（International Electrotechnical Commission:ＩＥＣ）によって規定された国際規格ＩＥＣ６１１３１−３に従って記述された１または複数の命令からなるプログラム言語（以下、ＩＥＣ言語とする）で作成している。
【０００３】
これらのプログラムを用いてロボットのアプリケーションを構築するためには、両プログラム間でデータをやり取りしてタイミングを合わせるためのインタロック処理を行ったり、あるいは片方の言語側でなければ取得できないデータをもう片方の言語側と共有したりすることが必要になる。
【０００４】
従来は、特許文献１のように、ロボット制御に用いるプログラムを実行するプロセッサと、シーケンス制御に用いるプログラムに用いるプログラムを実行するプロセッサとを、共有メモリによりバス結合し、両プログラム間でのデータのやり取りを行っている。
【０００５】
このようなデータのやり取りは、両プログラムにおいては、それぞれのプログラムで同一名称の共有変数を定義することで行われる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−７２９２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、共有変数の名称には、プログラミング言語によって、文字数制限および変数に使用できる文字種別等の制約があり、かつ、両言語のプログラムは異なる画面で作成され、通常、別々の担当者により作成される。したがって、両言語のプログラム間のインタフェースとして取り決めた共有変数を、同一名称とすることは、全てのプログラム言語における変数名の制約を満たした変数名しか使用できないことになり、ユーザに対して大きな制約を課す結果となっていた。
【０００８】
また、共有変数を同一名称とする方法では、過去に作成されたプログラム資産を流用することができないという問題があった。
【０００９】
そこで、この発明の課題は、異なるプログラム間で定義する共有変数を同一名称とすることなく、より自由な命名が可能で、過去のプログラム資産を流用することの可能な制御システム、制御システムの制御方法、および制御システムのプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、この開示の制御システムは、
制御装置と、前記制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置とを備える制御システムであって、
前記開発支援装置は、
前記複数の異なるプログラミング言語のソースコードを入力する入力部と、
それぞれのソースコードにおいて選択された共有変数をマッピングし、共有変数マッピング情報を作成するマッピング情報作成部と、
前記ソースコードおよび前記共有変数マッピング情報を前記制御装置に送信する送信部と、を備え、
前記制御装置は、
前記ソースコードで表されたプログラムを実行するプログラム実行部と、
前記共有変数マッピング情報に基づいて、マッピングされたそれぞれの前記共有変数を、共通の共有変数として処理する共有変数処理部と、を備える、
【００１１】
上述の制御システムでは、複数の異なるプログラミング言語のソースコードは、入力部により、開発支援装置に入力される。それぞれのプログラミング言語のソースコードにおいては、メモリを共有する共有変数がそれぞれ定義されるが、これらの共有変数は、例えばユーザにより選択可能となっている。選択された共有変数は、マッピング情報作成部によりマッピングされ、共有変数マッピング情報が作成される。作成された共有変数マッピング情報は、ソースコードと共に、送信部により制御装置に送信される。
【００１２】
制御装置においては、プログラム実行部により、受信したソースコードで表されたプログラムが実行される。また、受信した共有変数マッピング情報については、共有変数処理部により参照され、共有変数マッピング情報に基づいて、マッピングされたそれぞれの共有変数が、共通の共有変数として処理される。
【００１３】
上述の制御システムによれば、異なるプログラム間で、異なる名称の共有変数が定義されていたとしても、これらの共有変数は、共有変数マッピング情報においてマッピングされているため、それぞれのるプログラム間における共通の共有変数として利用される。このように、上述の制御システムによれば、それぞれのプログラムにおいて、共有変数を同一名称とすることなく、より自由に命名することができ、共有変数の名称を命名する際の制約をなくすことができる。また、共有変数マッピング情報によるマッピングを行うことにより、過去のプログラム資産において記述された変数についても共有変数として処理することが可能となり、過去のプログラム資産を有効に流用することができる。
【００１４】
一実施形態の制御システムは、
前記共有変数処理部は、マッピングされた共有変数間でデータをコピー、または、参照アドレスを同じにしてもよい。
【００１５】
この一実施形態の制御システムでは、共有変数処理部は、マッピングされた共有変数がそれぞれ異なる名称であっても、それぞれの共有変数間でデータをコピーし、または、それぞれの共有変数の参照アドレスを同じにする。したがって、異なるプログラム間で、共有変数によるデータの共有が行われる。
【００１６】
上述の実施形態の制御システムによれば、共有変数を同一名称とすることなく、より自由に命名することができ、共有変数の名称を命名する際の制約をなくすことができる。また、共有変数マッピング情報によるマッピングを行うことにより、過去のプログラム資産において記述された変数についても共有変数として処理することが可能となり、過去のプログラム資産を有効に流用することができる。
【００１７】
一実施形態の制御システムは、
前記入力部により入力される前記ソースコードは、少なくとも、コンパイル言語によるソースコードと、インタプリタ言語によるソースコードとを含んでいてもよい。
【００１８】
この一実施形態の制御システムでは、コンパイル言語によるソースコードだけでなく、インタプリタ言語によるソースコードについても入力するが、インタプリタ言語については、ソースコードを解釈して、変数を含むコードを実行してみないと、エラーが発生するかどうかは分からない。しかし、この一実施形態の制御システムでは、ソースコードの段階で、選択された共有変数について共有変数マッピング情報によるマッピングを行うので、共有変数に関するエラーの発生を防止することができる。
【００１９】
上述の制御システムによれば、コンパイル言語によるソースコードと、インタプリタ言語によるソースコードにおいて、共有変数を同一名称とすることなく、より自由に命名することができ、共有変数の名称を命名する際の制約をなくすことができる。また、共有変数マッピング情報によるマッピングを行うことにより、コンパイル言語とインタプリタ言語を含む過去のプログラム資産において記述された変数についても共有変数として処理することが可能となり、過去のプログラム資産を有効に流用することができる。
【００２０】
一実施形態の制御システムは、
前記共有変数マッピング情報に基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されている箇所を示す共有変数リファレンス作成部を備えていてもよい。
【００２１】
この一実施形態の制御システムでは、共有変数リファレンス作成部により共有変数が参照されている箇所を示す共有変数リファレンスが作成される際にも、共有変数マッピング情報が参照される。
【００２２】
上述の制御システムでは、複数の異なるプログラミング言語のソースコードにおいて、共有変数の名称が同一名称でない場合であっても、共有変数リファレンスに基づいて共有変数の参照箇所が確認される。
【００２３】
上述の制御システムによれば、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することが可能となる。
【００２４】
上記課題を解決するため、この開示の制御システムの制御方法は、
制御装置と、前記制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置とを備える制御システムの制御方法であって、
前記開発支援装置において、
前記複数の異なるプログラミング言語のソースコードを入力するステップと、
それぞれのソースコードにおいて選択された共有変数をマッピングし、共有変数マッピング情報を作成するステップと、
前記ソースコードおよび前記共有変数マッピング情報を前記制御装置に送信するステップと、を備え、
前記制御装置において、
前記ソースコードで表されたプログラムを実行するステップと、
前記共有変数マッピング情報に基づいて、マッピングされたそれぞれの前記共有変数を、共通の共有変数として処理するステップと、を備える。
【００２５】
この開示の制御システムの制御方法によれば、異なるプログラム間で、異なる名称の共有変数が定義されていたとしても、これらの共有変数は、共有変数マッピング情報においてマッピングされているため、それぞれのプログラム間における共通の共有変数として利用される。このように、上述の制御システムによれば、それぞれのプログラムにおいて、共有変数を同一名称とすることなく、より自由に命名することができ、共有変数の名称を命名する際の制約をなくすことができる。また、共有変数マッピング情報によるマッピングを行うことにより、過去のプログラム資産において記述された変数についても共有変数として処理することが可能となり、過去のプログラム資産を有効に流用することができる。
【００２６】
上記課題を解決するため、この開示の制御システムのプログラムは、上記制御システムの制御方法をコンピュータに実行させるためのプログラムである。
【００２７】
この開示のプログラムをコンピュータに実行させることによって、上記制御システムの制御方法を実施することができる。
【発明の効果】
【００２８】
以上より明らかなように、この開示の制御システム、制御システムの制御方法および制御システムのプログラムによれば、複数のプログラミング言語で共有変数を用いる際に、共有変数を同一名称としなくてもよい。その結果、共有変数の命名規則が緩和され、共有変数の命名の自由度を高めることができる。また、既に作成したプログラムの修正を行うことなく、共有変数を用いることができるので、プログラム資産の流用を有効に行うことができる。
【図面の簡単な説明】
【００２９】
【図１】第１実施形態におけるロボット制御システム１００の概略構成を示すブロック図である。
【図２】開発支援装置のハードウェア構成を示す図である。
【図３】制御装置のハードウェア構成を示す図である。
【図４】開発支援装置の機能ブロック図である。
【図５】制御装置の機能ブロック図である。
【図６】開発支援装置の表示装置に表示される表示画面を示す図である。
【図７】アーム型ロボットとエンドエフェクタの動作を説明する図である。
【図８】図６に示す動作を実現するためのＶ＋言語によるプログラムとＩＥＣ言語によるプログラムのフローチャートである。
【図９】図６に示す動作を実現するためのＶ＋言語によるプログラムとＩＥＣ言語によるプログラムの例を示す図である。
【図１０】共有変数マッピング処理の流れを示すフローチャートである。
【図１１】共有変数チェック処理の流れを示すフローチャートである。
【図１２】共有変数チェック処理の流れを示すフローチャートである。
【図１３】第２実施形態における開発支援装置の表示装置に表示される表示画面を示す図である。
【図１４】クロスリファレンス表示画面の一例を示す図である。
【発明を実施するための形態】
【００３０】
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
【００３１】
（第１実施形態）
図１は、第１実施形態におけるロボット制御システム１００の概略構成を示すブロック図である。図１に示すように、ロボット制御システム１００は、コントローラ（制御装置）１０と、アーム型ロボット２０と、エンドエフェクタコントローラ３０と、エンドエフェクタ４０と、開発支援装置５０とを備える。
【００３２】
コントローラ１０は、一例として、ＰＬＣ（Programmable Logic Controller）、または産業用コンピュータであり、アーム型ロボット２０の動作を制御するロボット制御プログラムと、エンドエフェクタ４０の動作を制御するシーケンス制御プログラムとを実行し、制御信号を出力する。
【００３３】
アーム型ロボット２０は、一例として、６軸の垂直多関節ロボットであり、コントローラ１０と通信可能に接続されている。アーム型ロボット２０は、サーボモータ等の動力源を備えており、ロボット制御プログラムに基づいてコントローラ１０から出力される制御信号によりサーボモータを駆動し、各関節軸を動作させる。
【００３４】
エンドエフェクタコントローラ３０は、コントローラ１０と通信可能に接続されている。エンドエフェクタコントローラ３０は、シーケンス制御プログラムに基づいてコントローラ１０から出力される制御信号により、エンドエフェクタ４０内のサーボモータを駆動する。
【００３５】
エンドエフェクタ４０は、アーム型ロボット２０の先端部に取り付けられ、一例として、部品を把持する機構等を備えている。エンドエフェクタ４０は、エンドエフェクタコントローラ３０と通信可能に接続されており、エンドエフェクタコントローラ３０から出力される制御信号に基づいて、エンドエフェクタ４０内のサーボモータを駆動し、部品の把持等の動作を行う。
【００３６】
開発支援装置５０は、一例として、パーソナルコンピュータ等のコンピュータであり、コントローラ１０と通信可能に接続されている。開発支援装置５０は、コントローラ１０で実行されるロボット制御プログラムおよびシーケンス制御プログラムをコントローラ１０にダウンロードする機能、これらのプログラムをデバッグする機能、並びに、これらのプログラムをシミュレートする機能等を有している。
【００３７】
本実施形態では、開発支援装置５０は、第１プログラミング端末６０および第２プログラミング端末６１と通信可能に接続されている。ロボット制御プログラムは、パーソナルコンピュータ等の第１プログラミング端末６０により作成され、開発支援装置５０にダウンロードされる。また、シーケンス制御プログラムは、パーソナルコンピュータ等の第２プログラミング端末６１により作成され、開発支援装置５０にダウンロードされる。なお、ロボット制御プログラムおよびシーケンス制御プログラムは、開発支援装置５０において作成するようにしてもよい。
【００３８】
開発支援装置５０は、コンピュータに、予めインストールしてあるソフトウェアを起動することにより、上述の機能を実現する。このソフトウェアには、本発明のプログラムが含まれている。開発支援装置５０のハードウェア構成は、図２に示すように、入力装置５１と、表示装置５２と、中央演算装置５３と、記憶装置５４と、通信Ｉ／Ｆ５５とを備えている。入力装置５１は、一例として、キーボード，ポインティングデバイスから構成される。表示装置５２は、一例として、ディスプレイから構成される。中央演算装置１３は、一例として、ＣＰＵから構成される。記憶装置１４は、不揮発性記憶装置と揮発性記憶装置とを備えており、不揮発性記憶装置は、ロボット制御プログラムおよびシーケンス制御プログラムの他、共有変数マッチング情報等を記憶する。また中央演算装置１３の実行時のワークメモリとして揮発性記憶装置が適宜使用される。通信Ｉ／Ｆ５５は、例えば、ＲＳ２３２Ｃ等のシリアル回線のインタフェースであり、コントローラ１０との通信を行う。通信Ｉ／Ｆ５５他の通信回線のインタフェースでもよい。
【００３９】
コントローラ１０も、開発支援装置５０と同様のハードウェア構成となっている。コントローラ１０は、コンピュータに、予めインストールしてあるソフトウェアを起動することにより、上述の機能を実現する。このソフトウェアには、本発明のプログラムが含まれている。コントローラ１０のハードウェア構成は、図３に示すように、入力装置８１と、表示装置８２と、中央演算装置８３と、記憶装置８４と、通信Ｉ／Ｆ８５とを備えている。入力装置８１は、一例として、キーボード，ポインティングデバイスから構成される。表示装置８２は、一例として、ディスプレイから構成される。中央演算装置８３は、一例として、ＣＰＵから構成される。記憶装置８４は、不揮発性記憶装置と揮発性記憶装置とを備えており、不揮発性記憶装置は、ロボット制御プログラムおよびシーケンス制御プログラムの他、共有変数マッチング情報等を記憶する。また中央演算装置８３の実行時のワークメモリとして揮発性記憶装置が適宜使用される。通信Ｉ／Ｆ８５は、例えば、ＲＳ２３２Ｃ等のシリアル回線のインタフェースであり、開発支援装置５０との通信を行う。通信Ｉ／Ｆ８５他の通信回線のインタフェースでもよい。
【００４０】
図４は、本実施形態における開発支援装置５０の機能ブロック図である。開発支援装置５０は、入力処理部７１、表示処理部７２、演算部７３、記憶部７４、および通信処理部７５として機能する。入力処理部７１は、入力装置５１からの入力を処理する。表示処理部７２は、表示装置５２に出力する表示データを作成する。演算部７３はユーザプログラム編集部７３ａ、アウトライン情報生成部７３ｂ、クロスリファレンス情報生成部７３ｃ、および判定部７３ｄを含む。演算部７３のこれらの機能の詳細については後述する。記憶部７４は、ユーザプログラム記憶部７４ａ、アウトライン情報記憶部７４ｂ、クロスリファレンス情報記憶部７４ｃ、および共有変数マッピング情報記憶部７４ｄを含む。これらの記憶部の詳細については後述する。
【００４１】
図５は、本実施形態におけるコントローラ１０の機能ブロック図である。コントローラ１０は、入力処理部９１、表示処理部９２、演算部９３、記憶部９４、および通信処理部９５として機能する。入力処理部９１は、入力装置８１からの入力を処理する。表示処理部９２は、表示装置８２に出力する表示データを作成する。演算部９３は、ロボット制御部９３ａ、シーケンス制御部９３ｂ、および共有変数処理部９３ｃを含む。演算部９３のこれらの機能の詳細については後述する。記憶部９４は、ロボット制御用プログラム記憶部９４ａ、シーケンス制御用プログラム９４ｂ、共有変数マッピング情報記憶部９４ｃ、および共有メモリ９ｄを含む。これらの記憶部の詳細については後述する。
【００４２】
図６は、開発支援装置５０の表示装置５２に表示される表示画面を示す図である。図６に示すように、表示装置５２の表示画面は、プログラム表示部５２ａ，５２ｂと、共有変数設定部５２ｃとを備えている。プログラム表示部５２ａ，５２ｂは、それぞれロボット制御プログラムおよびシーケンス制御プログラムのソースコードを表示する。
【００４３】
共有変数設定部５２ｃは、共有変数表示欄５２ｄ，５２ｅを備えている。共有変数表示欄５２ｄには、Ｖ＋プログラムのソースコードにおいて記述された共有変更のうち、選択された共有変数が表示される。共有変数表示欄５２ｅには、ＩＥＣプログラムのソースコードにおいて記述された共有変数のうち、選択された共有変数が表示される。
【００４４】
（共有変数マッピング処理）
次に、本実施形態における共有変数のマッピング処理について説明する。本実施形態では、一例として、アーム型ロボットをワークの位置まで移動させ、エンドエフェクタでワークを掴み、その状態でアーム型ロボットを別の位置に移動させる場合のプログラムにおける共有変数のチェック処理について説明する。ロボット制御プログラムは、本実施形態では、Ｖ＋言語を用いている。シーケンス制御プログラムは、ＩＥＣ言語で記述されたプログラムであり、本実施形態では、一例として、ＳＴ言語を用いている。
【００４５】
図７は、アーム型ロボットとエンドエフェクタの以上のような動作を説明する図である。図８は、以上のような動作を実現するためのＶ＋言語によるプログラムとＩＥＣ言語によるプログラムのフローチャートである。図９は、以上のような動作を実現するためのＶ＋言語によるプログラムとＩＥＣ言語によるプログラムのソースコードを示す図である。
【００４６】
この例では、図７に示すように、まず、アーム型ロボット２０のアーム２０ａを、ワークWの近くまで移動させる（図８：Ｓ１；ロボットアームの移動）。次に、エンドエフェクタ４０を移動させてエンドエフェクタ４０によりワークＷをピックする（図８：Ｓ２；ロボットアームの移動）。この間、アーム型ロボット２０は、ワークＷのピックが完了するまで待機する（図８：Ｓ３；ワークのピック完了まで待つ）。そして、ワークＷのピックが完了すると、アーム型ロボット２０のアーム２０ａを、別の位置まで移動させる（図８：Ｓ４；ロボットアームの移動）。
【００４７】
以上のような動作を、図８のフローチャートで説明する。図８に示すように、ロボット制御プログラムであるＶ＋言語で記述されたプログラムでは、まず、アーム型ロボット２０のアーム２０ａを、ワークWの近くの所定位置まで移動させる（Ｓ１）。次に、アーム型ロボット２０のアーム２０ａの所定位置への移動が完了すると、共有変数を用いてタイミングフラグをＯＮにする（Ｓ１−１）。この共有変数は、ＩＥＣ言語で記述されたプログラムにおいても参照されており、タイミングフラグをＯＮすることは、ＩＥＣ言語で記述されたプログラムに対してのエンドエフェクタの制御の実行通知になっている。
【００４８】
ＩＥＣ言語で記述されたプログラムは、タイミングフラグがＯＮになると、エンドエフェクタ４０の制御を開始し、ワークＷをピックする（Ｓ２）。この間、Ｖ＋言語で記述されたプログラムは待機する（Ｓ３）。ＩＥＣ言語で記述されたプログラムは、エンドエフェクタ４０によるワークＷのピックが完了すると、共有変数を用いてタイミングフラグをＯＦＦにする（Ｓ３−１）。タイミングフラグをＯＦＦすることは、Ｖ＋言語で記述されたプログラムに対してのエンドエフェクタの制御の完了通知になっている。Ｖ＋言語で記述されたプログラムは、タイミングフラグがＯＦＦになると、アーム型ロボット２０のアーム２０ａを、別位置まで移動させる（Ｓ４）。
【００４９】
図９に示す例では、Ｖ＋言語で記述されたプログラムでは、reqHandCloseが共有変数として用いられており、ＩＥＣ言語で記述されたプログラムでは、doHandCloseが共有変数として用いられている。Ｖ＋言語で記述されたプログラムでは、reqHandClose = TRUE という文がタイミングフラグをＯＮにすることを表しており、ＩＥＣ言語で記述されたプログラムでは、IF doHandClose = TRUE THENという文がタイミングフラグがＯＮならば、それ以下のプログラムを実行するということを表している。また、ＩＥＣ言語で記述されたプログラムでは、doHandClose := FALSE;という文がタイミングフラグをＯＦＦにすることを表している。さらに、Ｖ＋言語で記述されたプログラムでは、WHILE reqHandClose DOという文が、タイミングフラグがＯＦＦにされ、ワークのピックが完了するまで待機することを表している。
【００５０】
以上のように、本実施形態では、Ｖ＋言語で記述されたプログラムにおけるreqHandCloseという共有変数と、ＩＥＣ言語で記述されたプログラムにおけるdoHandCloseという共有変数との内容を確認することにより、アーム型ロボット２０とエンドエフェクタ４０の動作を制御している。
【００５１】
本実施形態において、このような異なる複数のプログラム間における異なる名称の共有変数の利用が可能なのは、共有変数マッピング情報を開発支援装置５０において作成し、この共有変数マッピング情報をコントローラ１０においてプログラム実行時に参照しているためである。
【００５２】
開発支援装置５０における共有変数マッピング情報の作成は、例えば、第１プログラミング端末６０からコンパイル型言語であるＩＥＣ言語で記述されたプログラムのソースコードＡを入力し、また、第２プログラミング端末６１からインタプリタ型言語であるＶ＋言語で記述されたプログラムのソースコードＢを入力した後に行われる。
【００５３】
図１０は、本実施形態における共有変数マッピングの概略フローチャートである。図１０に示すように、まず、入力処理部７１は、第１プログラミング端末６０からコンパイル型言語であるＩＥＣ言語で記述されたプログラムのソースコードＡを入力し、コンパイルを実行する（Ｓ１０）。
【００５４】
次に、入力処理部７１は、第２プログラミング端末６１からインタプリタ型言語であるＶ＋言語で記述されたプログラムのソースコードＢを入力する（Ｓ１１）。
【００５５】
そして、マッピング情報作成部７３ａは、ソースコードＡに記述された共有変数と、ソースコードＢに記述された共有変数とのマッピングを行う。
【００５６】
共有変数のマッピングを行うには、図１１に示すように、プログラム表示部５２ａ，５２ｂにＩＥＣ言語で記述されたプログラムのソースコードＡとＶ＋言語で記述されたプログラムのソースコードＢとを表示させて行う。図１１は、共有変数とのマッピング処理を行う際の表示装置５２の表示画面における表示例を示す図である。図１１に示す例では、プログラム表示部５２ａにＶ＋言語で記述されたプログラムのソースコードＢを表示させ、プログラム表示部５２ｂにＩＥＣ言語で記述されたプログラムのソースコードＡを表示させている。
【００５７】
このように、プログラム表示部５２ａ，５２ｂにソースコードＡ，Ｂを表示させた状態で、ユーザが、共有変数設定部５２ｃの共有変数表示欄５２ｄ，５２ｅに変数の入力を行うか、あるいは、共有変数表示欄５２ｄ，５２ｅに変数をドラッグ・アンド・ドロップすることにより、前記変数は、共有変数として登録される。例えば、図１１に示す例では、reqHandCloseという共有変数と、doHandCloseという共有変数とを共有変数表示欄５２ｄ，５２ｅに入力するか、ドラッグ・アンド・ドロップする。登録された共有変数は、文字の色が変わる、または下線が引かれる、あるいは背景色が異なる等、他の文字と識別可能に表示される。
【００５８】
図１１に示す例では、共有変数表示欄５２ｄにreqHandCloseという共有変数が表示され、共有変数表示欄５２ｅにdoHandCloseという共有変数が表示され、登録される。共有変数表示欄５２ｄ，５２ｅに表示され、登録された共有変数は、マッピング情報作成部により、マッピングされ、例えば、reqHandCloseとdoHandCloseとをマッピングさせた共有変数マッピング情報が作成される。作成された共有変数マッピング情報は、共有変数マッピング情報記憶部７４ｄに記憶される。
【００５９】
ソースコード内に複数の共有変数が存在し、それらの共有変数が上述のように登録された場合には、複数の共有変数についてマッピングが行われて共有変数マッピング情報が作成される。
【００６０】
以上のようにして、開発支援装置５０において共有変数マッピング情報を作成した後、送信部として機能する演算部７３および通信処理部７５は、ＩＥＣ言語で記述されたプログラムのソースコードＡをコンパイルしたオブジェクトコードと、Ｖ＋言語で記述されたプログラムのソースコードＢと、共有変数マッピング情報とを、コントローラ１０に送信する。
【００６１】
次に、コントローラ１０における共有変数のチェック処理について説明する。コントローラ１０において、演算部９３は、通信処理部９５を介してＩＥＣ言語で記述されたプログラムのオブジェクトコード、およびＶ＋言語で記述されたプログラムのソースコードＢ、並びに共有変数マッピング情報を開発支援装置５０から受信する。次に、演算部９３は、ＩＥＣ言語で記述されたプログラムのオブジェクトコードをシーケンス制御プログラム記憶部９４ｂに記憶させ、Ｖ＋言語で記述されたプログラムのソースコードＢをロボット制御プログラム記憶部９４ａに記憶させる。また、演算部９３は、共有変数マッピング情報を、共有変数マッピング情報記憶部９４ｃに記憶させる。
【００６２】
次に、コンテローラ１０において、プログラムの実行処理が選択されると、プログラム実行部として機能するロボット制御部９３ａは、Ｖ＋言語で記述されたプログラムのソースコードＢを解釈しながら実行し、同じくプログラム実行部として機能するシーケンス制御部９３ｂは、ＩＥＣ言語で記述されたプログラムのオブジェクトコードを実行する。
【００６３】
この際、ロボット制御部９３ａおよびシーケンス制御部９３ｂは、プログラムに共有変数が含まれているかどうかをチェックする処理を行う。図１２は、コントローラ１０における共有変数のチェック処理の概略フローチャートである。この共有変数のチェック処理は、所定時間ごとに繰り返し行われる。図１２に示すように、ロボット制御部９３ａおよびシーケンス制御部９３ｂは、ブログラムを実行しながら、プログラムに共有変数が存在するかどうかを確認する（Ｓ２０）。ロボット制御部９３ａおよびシーケンス制御部９３ｂは、プログラムに共有変数が存在しないと判断した場合には（Ｓ２１：ＮＯ）、この処理を抜ける。しかし、ロボット制御部９３ａおよびシーケンス制御部９３ｂは、プログラムに共有変数が存在すると判断した場合には（Ｓ２１：ＹＥＳ）、共有変数マッピング情報記憶部９４ｃに記憶させた共有変数マッピング情報を参照する（Ｓ２２）。そして、共有変数処理部９３ｃは、マッピングされたそれぞれの共有変数を共通の共有変数として処理する（Ｓ２３）。
【００６４】
共有変数処理部９３ｃによる共有変数としての処理とは、例えば、マッピングされた共有変数間でデータをコピーする、または、参照アドレスを同じにすることをいう。上述の例では、ロボット制御部９３ａが、Ｖ＋言語で記述されたプログラムにおいてreqHandCloseという共有変数を参照した場合には、ロボット制御部９３ａは、共有変数マッピング情報記憶部９４ｃに記憶させた共有変数マッピング情報を確認する。共有変数マッピング情報においては、共有変数reqHandCloseに対して、共有変数doHandCloseがマッピングされている。そこで、ロボット制御部９３ａは、共有変数reqHandCloseのデータを共有変数doHandCloseにコピーするか、または、共有変数doHandCloseのデータを共有変数reqHandCloseにコピーする。あるいは、ロボット制御部９３ａは、共有変数reqHandCloseと共有変数doHandCloseの共通の参照アドレスとして設定された共有メモリ９４ｄのアドレスにデータを書き込み、またはそのアドレスからデータを読み取る。
【００６５】
また、シーケンス制御部９３ｂが、ＩＥＣ言語で記述されたプログラムにおいてdoHandCloseという共有変数を参照した場合には、シーケンス制御部９３ｂは、共有変数マッピング情報記憶部９４ｃに記憶させた共有変数マッピング情報を確認する。共有変数マッピング情報においては、共有変数doHandCloseに対して、共有変数reqHandCloseがマッピングされている。そこで、ロボット制御部９３ａは、共有変数doHandCloseのデータを共有変数reqHandCloseにコピーするか、または、共有変数reqHandCloseのデータを共有変数doHandCloseにコピーする。あるいは、シーケンス制御部９３ｂは、共有変数doHandCloseと共有変数reqHandCloseの共通の参照アドレスとして設定された共有メモリ９４ｄのアドレスにデータを書き込み、またはそのアドレスからデータを読み取る。
【００６６】
以上のように、本実施形態によれば、Ｖ＋言語で記述されたプログラムとＩＥＣ言語で記述されたプログラムのように、異なるプログラム間で異なる名称の共有変数が定義されていた場合でも、共有変数マッピング情報を参照することにより、それぞれのるプログラム間において共通の共有変数として利用することができる。その結果、本実施形態のシステムによれば、それぞれのプログラムにおいて、共有変数を同一名称とすることなく、より自由に命名することができ、共有変数の名称を命名する際の制約をなくすことができる。
【００６７】
特に、Ｖ＋言語で記述されたプログラムのようにインタプリタ型言語のプログラムにおいては、ソースコードを解釈してみないと、変数に関するエラーが発生するかどうかは分からない。しかし、本実施形態によれば、事前に共有変数のマッピングを行うので、エラーの発生を防ぐことができる。
【００６８】
また、本実施形態によれば、共有変数マッピング情報によるマッピングを行うことにより、過去のプログラム資産において記述された変数についても共有変数として処理することが可能となり、過去のプログラム資産を有効に流用することができる。
【００６９】
（第２実施形態）
次に、本開示の第２実施形態について添付図面を参照しつつ説明する。第１実施形態においては、開発支援装置５０において共有変数マッピング情報を作成し、コントローラ１０においてプログラムを実行する際に共有変数マッピング情報を参照した。しかし、本実施形態では、クロスリファレンスの作成時に、共有変数マッピング情報を参照する態様について説明する。
【００７０】
本実施形態においては、第１実施形態と同様の方法で、共有変数マッピング情報が作成され、共有変数マッピング情報記憶部７４ｄに記憶されているものとする。
【００７１】
図１３は、本実施形態における開発支援装置５０の表示装置５２に表示される表示画面を示す図である。本実施形態では、図１３に示すように、プログラム表示部５２ａ，５２ｂの下方には、クロスリファレンスウィンドウ５２ｆが表示される。
【００７２】
クロスリファレンスウィンドウ５２ｆは、リファレンス対象入力欄５２ｆ−１と、リファレンス情報表示欄５２ｆ−２とを備えている。リファレンス対象入力欄５２ｆ−１に、オペランドを入力することにより、あるいは、Ｖ＋プログラムあるいはＩＥＣプログラム上で共有変数を選択することによりリファレンス対象入力欄５２ｆ−１にオペランドが表示され、このオペランドと同一のオペランドを持つ命令についてのクロスリファレンス情報が、リファレンス情報表示欄５２ｆ−２に表示される。また、リファレンス対象入力欄５２ｆ−１に、共有変数を入力することにより、この共有変数を使用する命令についてのクロスリファレンス情報が、リファレンス情報表示欄５２ｆ−２に表示される。
【００７３】
図１４にクロスリファレンスウィンドウ５２ｆの表示例を示す。図１４に示すように、クロスリファレンスウィンドウ２００は、リファレンス対象表示欄５２ｆ−１と、リファレンス情報表示欄５２ｆ−２とを備えている。リファレンス情報表示欄５２ｆ−２は、設定項目表示欄５２ｆ−２０、発生箇所表示欄５２ｆ−２１、詳細情報表示欄５２ｆ−２２、リファレンス表示欄５２ｆ−２３等を備えている。
【００７４】
リファレンス対象表示欄５２ｆ−１には、クロスリファレンスを行ったプログラムの名前と、選択された変数とが表示される。図１４に示す「ロボットハンド制御」は、ＩＥＣ言語で記述されたプログラムの名前を示している。doHandCloseは、選択された共有変数である。
【００７５】
設定項目表示欄５２ｆ−２０には、クロスリファレンスの対象となった変数が表示される。図１４の例の場合には、共有変数のdoHandCloseとreqHandCloseとが表示される。発生箇所表示欄５２ｆ−２１には、設定項目に表示された変数が参照されたプログラム名が表示される。この例の場合には、ロボットハンド制御、およびロボット制御と表示される。「ロボット制御」は、Ｖ＋で記述されたプログラムの名前を示している。
【００７６】
詳細情報表示欄５２ｆ−２２には、発生箇所表示欄５２ｆ−２１に表示されたプログラムにおいて、設定項目表示欄５２ｆ−２０に表示された変数が参照されたプログラムのソースコードにおける行番号が表示される。リファレンス表示欄５２ｆ−２３には、詳細情報表示欄５２ｆ−２２に表示された行番号におけるソースコードが表示される。
【００７７】
本実施形態において、クロスリファレンス処理が開始され、リファレンス対象表示欄５２ｆ−１に共有変数が入力されると、クロスリファレンス情報生成部７３ｃは、共有変数マッピング情報を参照し、マッピングされている共有変数の抽出を行う。例えば、図１４の例のように、リファレンス対象表示欄５２ｆ−１にdoHandCloseと入力された場合には、クロスリファレンス情報生成部７３ｃは、共有変数マッピング情報を参照し、doHandCloseにマッピングされたreqHandCloseを抽出する。
【００７８】
次に、クロスリファレンス情報生成部７３ｃは、リファレンス対象表示欄５２ｆ−１に入力された共有変数、および共有変数マッピング情報から抽出した共有変数について、Ｖ＋言語で記述されたプログラムのソースコードＢと、ＩＥＣ言語で記述されたプログラムのソースコードＡとにおけるクロスリファレンスを実行する。例えば、上述の例では、クロスリファレンス情報生成部７３ｃは、Ｖ＋言語で記述されたプログラムのソースコードＢに対しては、共有変数reqHandCloseが使用されている箇所を参照し、そのプログラム名、ステップ番号、アドレス、言語、パス等をクロスリファレンス情報としてクロスリファレンス情報記憶部７４ｃに記憶させる。また、クロスリファレンス情報生成部７３ｃは、ＩＥＣ言語で記述されたプログラムのソースコードＡに対しては、共有変数doHandCloseが使用されている箇所を参照し、そのプログラム名、ステップ番号、アドレス、言語、パス等をクロスリファレンス情報としてクロスリファレンス情報記憶部７４ｃに記憶させる。
【００７９】
以上のような処理の結果、クロスリファレンスウィンドウ５２ｆには、図１４に示すように、リファレンス情報表示欄５２ｆ−２において、共有変数doHandCloseに関するクロスリファレンス情報だけでなく、共有変数reqHandCloseに関するクロスリファレンス情報についても表示されることになる。
【００８０】
以上のように、本実施形態によれば、それぞれのプログラムにおいて、異なる名称の共有変数を定義した場合であっても、１つの共有変数の名称を入力するだけで、当該共有変数の参照箇所だけでなく、当該共有変数にマッピングされた他の共有変数の参照箇所についても、クロスリファレンスウィンドウ２００に表示される。
【００８１】
したがって、ユーザは、クロスリファレンスウィンドウ２００に表示された内容を見ることによって、共有変数が、複数の異なるプログラムにおいて正しく参照されているか否かを容易に把握することができる。その結果、プログラムのデバッグを円滑に行うことが可能となる。
【００８２】
以上のように、本実施形態によれば、ＩＥＣ言語で記述されたプログラムと、Ｖ＋言語で記述されたプログラムとの少なくともいずれか一方のプログラムにおいて、共有変数が使用されていないというエラーメッセージを表示する。その結果、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
【００８３】
この場合でも、一つのプログラムのアウトライン情報において、共有変数を選択するだけで、当該プログラムにおける共有変数の参照箇所だけでなく、他のプログラムにおける当該共有変数の参照箇所についても、クロスリファレンスウィンドウ２００に表示させることができる。
【００８４】
したがって、ユーザは、クロスリファレンスウィンドウ２００に表示された内容を見ることによって、共有変数が、全てのプログラムにおいて正しく参照されているか否かを容易に把握することができる。その結果、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
【００８５】
以上の実施形態は例示であり、この発明の範囲から離れることなく様々な変形が可能である。上述した複数の実施の形態は、それぞれ単独で成立し得るものであるが、実施の形態同士の組みあわせも可能である。また、異なる実施の形態の中の種々の特徴も、それぞれ単独で成立し得るものであるが、異なる実施の形態の中の特徴同士の組みあわせも可能である。
【符号の説明】
【００８６】
１０    コントローラ
５０    開発支援装置
７１    入力処理部
７３ａ  マッピング情報作成部
７５    通信処理部
９３ｃ  共有変数処理部
１００  制御システム。
【図１】
2019212122.tif 000003
【図２】
2019212122.tif 000004
【図３】
2019212122.tif 000005
【図４】
2019212122.tif 000006
【図５】
2019212122.tif 000007
【図６】
2019212122.tif 000008
【図７】
2019212122.tif 000009
【図８】
2019212122.tif 000010
【図９】
2019212122.tif 000011
【図１０】
2019212122.tif 000012
【図１１】
2019212122.tif 000013
【図１２】
2019212122.tif 000014
【図１３】
2019212122.tif 000015
【図１４】
2019212122.tif 000016