JP2019160079A - 開発支援装置、開発支援方法、および開発支援プログラム - Google Patents

開発支援装置、開発支援方法、および開発支援プログラム Download PDF

Info

Publication number
JP2019160079A
JP2019160079A JP2018048504A JP2018048504A JP2019160079A JP 2019160079 A JP2019160079 A JP 2019160079A JP 2018048504 A JP2018048504 A JP 2018048504A JP 2018048504 A JP2018048504 A JP 2018048504A JP 2019160079 A JP2019160079 A JP 2019160079A
Authority
JP
Japan
Prior art keywords
shared variable
program
source code
language
development support
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.)
Granted
Application number
JP2018048504A
Other languages
English (en)
Other versions
JP6891838B2 (ja
Inventor
良太 丸野
Ryota Maruno
良太 丸野
悠司 鈴木
Yuji Suzuki
悠司 鈴木
祥実 丹羽
Yoshimi Niwa
祥実 丹羽
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.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
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 Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2018048504A priority Critical patent/JP6891838B2/ja
Priority to EP19156610.8A priority patent/EP3540536B1/en
Priority to CN201910110944.7A priority patent/CN110275451B/zh
Priority to US16/275,354 priority patent/US10747507B2/en
Publication of JP2019160079A publication Critical patent/JP2019160079A/ja
Application granted granted Critical
Publication of JP6891838B2 publication Critical patent/JP6891838B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23251Use two or more different programming languages in same program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Abstract

【課題】異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見すること。【解決手段】制御装置10において実行される複数の異なるプログラミング言語を開発するための開発支援装置50であって、予め作成された共有変数リファレンスであって、複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数のための共有変数リファレンスTBL1と、複数の異なるプログラミング言語のソースコードを入力する入力部71と、共有変数リファレンスTBL1に基づいて、入力された複数の異なるプログラミング言語のソースコードにおいて、共有変数が参照されているか否かを判定する判定部73dとを備える。【選択図】図3

Description

この発明は、制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置、開発支援方法、および開発支援プログラムに関する。
ロボットを制御するシステムにおいては、ロボット制御に用いるプログラムは、例えばV+言語で作成し、シーケンス制御に用いるプログラムは、例えば、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131−3に従って記述された1または複数の命令からなるプログラム言語(以下、IEC言語とする)で作成している。
これらのプログラムを用いてロボットのアプリケーションを構築するためには、両プログラム間でデータをやり取りしてタイミングを合わせるためのインタロック処理を行ったり、あるいは片方の言語側でなければ取得できないデータをもう片方の言語側と共有したりすることが必要になる。
従来は、特許文献1のように、ロボット制御に用いるプログラムを実行するプロセッサと、シーケンス制御に用いるプログラムに用いるプログラムを実行するプロセッサとを、共有メモリによりバス結合し、両プログラム間でのデータのやり取りを行っている。
このようなデータのやり取りは、両プログラムにおいては、それぞれのプログラムで同一名称の共有変数を定義することで行われる。
特開平7−72920号公報
しかしながら、両言語のプログラムは異なる画面で作成され、通常、別々の担当者により作成される。したがって、両言語のプログラム間のインタフェースとして取り決めた共有変数を、実装し忘れたり、あるいは、共有変数名を誤って実装したりする場合には、両プログラムが正しく機能しないことが発生すると想定される。
そこで、この発明の課題は、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することのできる開発支援装置、開発支援方法、および開発支援プログラムを提供することにある。
上記課題を解決するため、この開示の開発支援装置は、
制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置であって、
予め作成された共有変数リファレンスであって、前記複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数のための共有変数リファレンスと、
前記複数の異なるプログラミング言語のソースコードを入力する入力部と、
前記共有変数リファレンスに基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定する判定部と、
を備えることを特徴とする。
上述の開発支援装置では、複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数が定義されると、当該共有変数のための共有変数リファレンスが作成される。共有変数リファレンスは、開発支援装置に入力されるようにしてもよいし、あるいは、開発支援装置がアクセス可能な外部装置に記憶されていてもよい。
複数の異なるプログラミング言語のソースコードは、前記開発支援装置とは別の装置で作成され、前記開発支援装置の入力部により前記開発支援装置に入力される。
前記開発支援装置の判定部は、前記共有変数リファレンスを参照して前記共有変数を読み取り、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定する。
上述の開発支援装置によれば、共有変数リファレンスに基づいて、複数の異なるプログラミング言語のソースコードにおいて共有変数が参照されているか否かが判定されるので、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することが可能となる。
一実施形態の開発支援装置は、
エラーメッセージを出力するエラーメッセージ出力部を備え、
前記判定部は、
前記複数の異なるプログラミング言語のソースコードのうち、一のプログラミング言語のソースコード中において前記共有変数が参照されていると判定した場合に、当該参照されている前記共有変数が、他のプログラミング言語のソースコード中において参照されているか否かを判定し、参照されていないと判定された場合には、エラー状態であることを出力し、
前記エラーメッセージ出力部は、前記判定部により、前記エラー状態であることが出力された場合には、エラーメッセージを出力する、
ことを特徴とする。
この一実施形態の開発支援装置では、判定部は、複数の異なるプログラミング言語のソースコードのうち、一のプログラミング言語のソースコード中において共有変数が参照されているかどうかを判定する。一のプログラミング言語のソースコード中において共有変数が参照されていると判定した場合には、参照されている共有変数が、他のプログラミング言語のソースコード中において参照されているか否かを判定する。その結果、参照されていないと判定された場合には、エラー状態であることを出力し、エラーメッセージを出力する。
上述の開発支援装置によれば、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することができる。
一実施形態の開発支援装置は、
エラーメッセージを出力するエラーメッセージ出力部を備え、
前記判定部は、
前記共有変数が、前記複数の異なるプログラミング言語のソースコード中における、いずれのプログラミング言語のソースコード中においても参照されていないと判定した場合、または、いずれかのプログラミング言語のソースコード中おいてのみ参照されていると判定した場合には、エラー状態であることを出力し、
前記エラーメッセージ出力部は、前記判定部により、前記エラー状態であることが出力された場合には、エラーメッセージを出力する、
ことを特徴とする。
この一実施形態の開発支援装置では、判定部は、共有変数が、複数の異なるプログラミング言語のソースコード中において参照されているか否かを判定する。いずれのプログラミング言語のソースコード中においても参照されていないと判定した場合にはエラー状態であることを出力し、エラーメッセージを出力する。また、いずれかのプログラミング言語のソースコード中おいてのみ参照されていると判定した場合にも、エラー状態であることを出力し、エラーメッセージを出力する。
上述の開発支援装置によれば、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
一実施形態の開発支援装置は、
前記複数の異なるプログラミング言語のソースコード、および前記ソースコードのアウトラインの少なくともいずれか一方を表示する表示部と、
前記表示部に表示される前記共有変数を選択する選択部と、
前記判定部により、前記共有変数が参照されていると判定された場合に、当該ソースコードにおける前記前記共有変数の参照箇所を表示する参照部と、を備え、
前記判定部は、
前記表示部に表示される前記複数の異なるプログラミング言語のソースコードまたはアウトラインのうち、一のプログラミング言語のソースコードまたはアウトラインにおいて、前記選択部により前記共有変数が選択された場合に、当該一のプログラミング言語のソースコード、および他のプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定する、
ことを特徴とする。
この一実施形態の開発支援装置では、判定部は、表示部に表示される複数の異なるプログラミング言語のソースコードまたはアウトラインのうち、一のプログラミング言語のソースコードまたはアウトラインにおいて、選択部により共有変数が選択されたかどうかを判断する。判断の結果、共有変数が選択された場合には、この一のプログラミング言語のソースコードだけでなく、他のプログラミング言語のソースコードにおいても、共有変数が参照されているか否かを判定する。
上述の開発支援装置によれば、共有変数が、全てのプログラムにおいて正しく参照されているか否かを容易に把握することができる。その結果、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
上記課題を解決するため、この開示の開発支援方法は、
制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援方法であって、
前記複数の異なるプログラミング言語のソースコードを入力するステップと、
予め作成された共有変数リファレンスであって、前記複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数のための共有変数リファレンスに基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定するステップと、を備える、
ことを特徴とする。
この開示の開発支援方法によれば、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することができる。
上記課題を解決するため、この開示の開発支援プログラムは、上記開発支援方法をコンピュータに実行させるためのプログラムである。
この開示のプログラムをコンピュータに実行させることによって、上記開発支援方法を実施することができる。
以上より明らかなように、この開示の開発支援装置、開発支援方法および開発支援プログラムによれば、共有変数リファレンスに基づいて、複数の異なるプログラミング言語のソースコードにおいて共有変数が参照されているか否かが判定されるので、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することができる。
第1実施形態におけるロボット制御システム100の概略構成を示すブロック図である。 開発支援装置のハードウエア構成を示す図である。 開発支援装置の機能ブロック図である。 表示装置に表示される表示画面を示す図である。 アーム型ロボットとエンドエフェクタの動作を説明する図である。 図5に示す動作を実現するためのV+言語によるプログラムとIEC言語によるプログラムのフローチャートである。 図5に示す動作を実現するためのV+言語によるプログラムとIEC言語によるプログラムを示す図である。 共有変数のチェック処理の流れを示すフローチャートである。 共有変数のチェック処理の流れを示すフローチャートである。 リファレンス情報表示部に表示されたグローバル変数テーブルの例を示す図である。 エラーメッセージボックスの一例を示す図である。 図12(A)は部品が実装された基板をヒートシンクに取り付ける処理を示す図であり、図12(B)は図12(A)の処理を第2実施形態におけるアーム型ロボットとエンドエフェクタにより実行する際のこれらの動作を説明するための図である。 図12(B)に示す動作を実現するためのV+言語によるプログラムとIEC言語によるプログラムのフローチャートである。 図12(B)に示す動作を実現するためのV+言語によるプログラムとIEC言語によるプログラムの一例を示す図である。 グローバル変数テーブルの一例を示す図である。 第3実施形態におけるプロジェクトメニューの一例を示す図である。 共有変数のチェック処理の流れを示すフローチャートである。 クロスリファレンス表示画面の一例を示す図である。 ラダー言語で記述されたプログラムの一例を示す図である。 ST言語で記述されたプログラムの一例を示す図である。 V+言語で記述されたプログラムの一例を示す図である。 アウトプットウィンドウの一例を示す図である。 第4実施形態における開発支援装置の機能ブロック図である。 プログラム表示部に表示されるV+言語で記述されたプログラムのソースコードと、IEC言語で記述されたプログラムのソースコードの例を示す図である。 共有変数チェック処理の流れを示すフローチャートである。 クロスリファレンスウィンドウの一例を示す図である。
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
(第1実施形態)
図1は、第1実施形態におけるロボット制御システム100の概略構成を示すブロック図である。図1に示すように、ロボット制御システム100は、コントローラ(制御装置)10と、アーム型ロボット20と、エンドエフェクタコントローラ30と、エンドエフェクタ40と、開発支援装置50とを備える。
コントローラ10は、一例として、PLC(Programmable Logic Controller)であり、アーム型ロボット20の動作を制御するロボット制御プログラムと、エンドエフェクタ40の動作を制御するシーケンス制御プログラムとを実行し、制御信号を出力する。
アーム型ロボット20は、一例として、6軸の垂直多関節ロボットであり、コントローラ10と通信可能に接続されている。アーム型ロボット20は、サーボモータ等の動力源を備えており、ロボット制御プログラムに基づいてコントローラ10から出力される制御信号によりサーボモータを駆動し、各関節軸を動作させる。
エンドエフェクタコントローラ30は、コントローラ10と通信可能に接続されている。エンドエフェクタコントローラ30は、シーケンス制御プログラムに基づいてコントローラ10から出力される制御信号により、エンドエフェクタ40内のサーボモータを駆動する。
エンドエフェクタ40は、アーム型ロボット20の先端部に取り付けられ、一例として、部品を把持する機構等を備えている。エンドエフェクタ40は、エンドエフェクタコントローラ30と通信可能に接続されており、エンドエフェクタコントローラ30から出力される制御信号に基づいて、エンドエフェクタ40内のサーボモータを駆動し、部品の把持等の動作を行う。
開発支援装置50は、一例として、パーソナルコンピュータ等のコンピュータであり、コントローラ10と通信可能に接続されている。開発支援装置50は、コントローラ10で実行されるロボット制御プログラムおよびシーケンス制御プログラムをコントローラ10にダウンロードする機能、これらのプログラムをデバッグする機能、並びに、これらのプログラムをシミュレートする機能等を有している。
本実施形態では、開発支援装置50は、第1プログラミング端末60および第2プログラミング端末61と通信可能に接続されている。ロボット制御プログラムは、パーソナルコンピュータ等の第1プログラミング端末60により作成され、開発支援装置50にダウンロードされる。また、シーケンス制御プログラムは、パーソナルコンピュータ等の第2プログラミング端末61により作成され、開発支援装置50にダウンロードされる。なお、ロボット制御プログラムおよびシーケンス制御プログラムは、開発支援装置50において作成するようにしてもよい。
開発支援装置50は、コンピュータに、予めインストールしてあるソフトウェアを起動することにより、上述の機能を実現する。このソフトウェアには、本発明の開発支援プログラムが含まれている。開発支援装置50のハードウエア構成は、図2に示すように、入力装置51と、表示装置52と、中央演算装置53と、記憶装置54と、通信I/F55とを備えている。入力装置51は、一例として、キーボード,ポインティングデバイスから構成される。表示装置52は、一例として、ディスプレイから構成される。中央演算装置13は、一例として、CPUから構成される。記憶装置14は、不揮発性記憶装置と揮発性記憶装置とを備えており、不揮発性記憶装置は、ロボット制御プログラムおよびシーケンス制御プログラムの他、後述するアウトライン情報、クロスリファレンス情報、およびグローバル変数テーブル等を記憶する。また中央演算装置13の実行時のワークメモリとして揮発性記憶装置が適宜使用される。通信I/F55は、例えば、RS232C等のシリアル回線のインタフェースであり、コントローラ10との通信を行う。通信I/F55他の通信回線のインタフェースでもよい。
図3は、本実施形態における開発支援装置50の機能ブロック図である。開発支援装置50は、入力処理部71、表示処理部72、演算部73、記憶部74、および通信処理部75として機能する。入力処理部71は、入力装置51からの入力を処理する。表示処理部72は、表示装置52に出力する表示データを作成する。演算部73はユーザプログラム編集部73a、アウトライン情報生成部73b、クロスリファレンス情報生成部73c、および判定部73dを含む。演算部73のこれらの機能の詳細については後述する。記憶部74は、ユーザプログラム記憶部74a、アウトライン情報記憶部74b、クロスリファレンス情報記憶部74c、およびグローバル変数テーブル記憶部74dを含む。これらの記憶部の詳細については後述する。
図4は、表示装置52に表示される表示画面を示している。図4に示すように、表示装置52の表示画面は、プログラム表示部52aと、アウトライン情報表示部52bと、リファレンス情報表示部52cとを備えている。プログラム表示部52aは、ロボット制御プログラムおよびシーケンス制御プログラムのソースコードを表示する。アウトライン情報表示部52bは、ロボット制御プログラムおよびシーケンス制御プログラムの構成を示すアウトライン情報を表示する。
アウトライン情報表示部52bに表示するアウトライン情報は、アウトライン情報生成部73bが作成し、記憶部74内のアウトライン情報記憶部74bに格納する。そして、表示処理部72は、プログラム表示部52aに表示されているロボット制御プログラムまたはシーケンス制御プログラムプログラムについてのアウトライン情報をアウトライン情報表示部52bに表示する。
アウトライン情報は、ロボット制御プログラムやシーケンス制御プログラムの構成の概要を示す情報のことであり、ロボット制御プログラムやシーケンス制御プログラムに使用されている所定の構成要素をそのプログラムの先頭から順に抽出したものである。
リファレンス情報表示部52cは、リファレンス対象入力欄52c−1と、リファレンス情報表示欄52c−2とを備えている。リファレンス対象入力欄52c−1に、オペランドを入力することに、このオペランドと同一のオペランドを持つ命令についてのクロスリファレンス情報が、リファレンス情報表示欄52c−2に表示される。また、リファレンス対象入力欄52c−1に、共有変数を入力することにより、この共有変数を使用する命令についてのクロスリファレンス情報が、リファレンス情報表示欄52c−2に表示される。
本実施形態では命令のオペランドに相当する接点番号やメモリ番号にそれぞれ対応させて変数名をつけることができ、変数名を用いたプログラム編集が可能となっている。プログラム表示部52a、アウトライン情報表示部52b、およびリファレンス情報表示部52cにもオペランドを変数名で表示することができる。もちろん、このような変数名を利用せずに、接点番号や、メモリ番号を利用して表示してもよい。
本実施形態では、ロボット制御プログラムとシーケンス制御プログラムとの双方で参照される共有変数のチェックが可能となっている。共有変数のチェックを行う場合には、リファレンス情報表示部52cのリファレンス対象入力欄52c−1に共有変数を入力することにより、リファレンス情報表示欄52c−2にクロスリファレンス情報が表示される。詳しくは後述する。
次に、本実施形態における共有変数のチェック処理について説明する。本実施形態では、一例として、アーム型ロボットをワークの位置まで移動させ、エンドエフェクタでワークを掴み、その状態でアーム型ロボットを別の位置に移動させる場合のプログラムにおける共有変数のチェック処理について説明する。ロボット制御プログラムは、本実施形態では、V+言語を用いている。シーケンス制御プログラムは、IEC言語で記述されたプログラムであり、本実施形態では、一例として、ST言語を用いている。
図5は、アーム型ロボットとエンドエフェクタの以上のような動作を説明する図である。図6は、以上のような動作を実現するためのV+言語によるプログラムとIEC言語によるプログラムのフローチャートである。図7は、以上のような動作を実現するためのV+言語によるプログラムとIEC言語によるプログラムのソースコードを示す図である。
この例では、図5に示すように、まず、アーム型ロボット20のアーム20aを、ワークWの近くまで移動させる(S1:ロボットアームの移動)。次に、エンドエフェクタ40を移動させてエンドエフェクタ40によりワークWをピックする(S2:ロボットアームの移動)。この間、アーム型ロボット20は、ワークWのピックが完了するまで待機する(S3:ワークのピック完了まで待つ)。そして、ワークWのピックが完了すると、アーム型ロボット20のアーム20aを、別の位置まで移動させる(S4:ロボットアームの移動)。
以上のような動作を、図6のフローチャートで説明する。図6に示すように、ロボット制御プログラムであるV+言語で記述されたプログラムでは、まず、アーム型ロボット20のアーム20aを、ワークWの近くの所定位置まで移動させる(S1)。次に、アーム型ロボット20のアーム20aの所定位置への移動が完了すると、共有変数を用いてタイミングフラグをONにする(S1−1)。この共有変数は、IEC言語で記述されたプログラムにおいても参照されており、タイミングフラグをONすることは、IEC言語で記述されたプログラムに対してのエンドエフェクタの制御の実行通知になっている。
IEC言語で記述されたプログラムは、タイミングフラグがONになると、エンドエフェクタ40の制御を開始し、ワークWをピックする(S2)。この間、V+言語で記述されたプログラムは待機する(S3)。IEC言語で記述されたプログラムは、エンドエフェクタ40によるワークWのピックが完了すると、共有変数を用いてタイミングフラグをOFFにする(S3−1)。タイミングフラグをOFFすることは、V+言語で記述されたプログラムに対してのエンドエフェクタの制御の完了通知になっている。V+言語で記述されたプログラムは、タイミングフラグがOFFになると、アーム型ロボット20のアーム20aを、別位置まで移動させる(S4)。
図7に示す例では、reqHandCloseが共有変数として用いられており、reqHandCloseは、V+言語で記述されたプログラムとIEC言語で記述されたプログラムとの両方で参照されている。reqHandClose = TRUE という文がタイミングフラグをONにすることを表しており、reqHandClose = FALSE という文がタイミングフラグをOFFにすることを表している。
以上のように、本実施形態では、V+言語で記述されたプログラムとIEC言語で記述されたプログラムとの間で、reqHandCloseという共有変数をお互いに確認することにより、アーム型ロボット20とエンドエフェクタ40の動作を制御している。したがって、いずれかのプログラムでreqHandCloseという共有変数を用いることを忘れてしまったり、あるいは、reqHandCloseとは異なる名称の共有変数を用いたりした場合には、プログラムがそこで停止し、アーム型ロボット20とエンドエフェクタ40が所期の動作を行わないということになる。
そこで、本実施形態では、このような共有変数の実装ミスを防ぐために、IEC言語で記述されたプログラムのコンパイル処理時、共有変数のチェック処理を行っている。図8および図9は、本実施形態における共有変数のチェック処理の流れを示すフローチャートである。
図8においては、共有変数のチェック処理以外のコンパイル処理に必要なステップの記載を省略している。開発支援装置50にV+言語で記述されたプログラムとIEC言語で記述されたプログラムがダウンロードされ、コンパイル処理が開始されると、開発支援装置50の入力処理部71は、ソースコードAの読み込み(S10)と、ソースコードBの読み込み(S11)を行う。この例では、V+言語で記述されたプログラムのソースコードをソースコードAとし、IEC言語で記述されたプログラムのソースコードをソースコードBとしている。
ソースコードAとソースコードBの読み込みが完了すると、判定部73dは、共有変数チェック処理を行う(S12)。図9は、共有変数チェック処理のサブルーチンを示すフローチャートである。図9に示すように、中央演算装置53は、まず、ソースコードAにおける共有変数の存在確認を行う。共有変数の存在確認は、図10に示すグローバル変数テーブルTBL1を用いて行う。
グローバル変数テーブルTBL1は、本実施形態では、第2プログラミング端末61において、IEC言語でプログラムを作成する際に作成され、IEC言語で記述されたプログラムを開発支援装置50にダウンロードする際に一緒にダウンロードされる。
共有変数のチェックを行う場合、プログラム表示部52aに表示させたグローバル変数テーブルTBL1に共有変数をあらかじめ登録する必要がある。
図10に示すように、グローバル変数テーブルTBL1は、共有変数の名称を示す欄、データ型を示す欄、変数共有を行うか否かを示す欄、共有変数チェックを行うか否かを示す欄等を有している。変数共有を行うか否かを示す欄、および共有変数チェックを行うか否かを示す欄が設けられているのは、後に使用する可能性のある共有変数を予約しておくこと等を考慮したものである。
図10に示す例では、変数reqHandCloseにおける変数共有を行うか否かを示す欄のチェックボックスにチェックが付けられ、さらに共有変数チェックを行うか否かを示す欄のチェックボックスにチェックが付けられている。中央演算装置53は、グローバル変数テーブルTBL1から共有変数reqHandCloseを読み取り、ソースコードA、つまり、IEC言語で記述されたプログラムのソースコードに、共有変数が記述されているかどうかを確認する(S20)。この例の場合には、共有変数reqHandCloseが記述されているかどうかを確認する。
判定部73dは、確認の結果、ソースコードAに共有変数が存在しないと判断した場合には(S21:NO)、チェック結果をOKに設定して(S24)、サブルーチンを抜ける。図7に示す例では、IEC言語で記述されたプログラムのソースコードに共有変数reqHandCloseが記述されているので、判定部73dは、ソースコードAに共有変数が存在すると判断する(S21:YES)。次に、ソースコードB、つまり、V+言語で記述されたプログラムのソースコードに、共有変数が記述されているかどうかを確認する(S22)。この例の場合には、共有変数reqHandCloseが記述されているかどうかを確認する。図7に示す例では、V+言語で記述されたプログラムのソースコードに共有変数reqHandCloseが記述されているので、判定部73dは、ソースコードBに共有変数が存在すると判断する(S23:YES)。この場合には、判定部73dは、チェック結果をOKに設定して(S24)、サブルーチンを抜ける。しかし、判定部73dは、ソースコードBに共有変数が存在しないと判断した場合には(S23:NO)、チェック結果をNGに設定して(S25)、サブルーチンを抜ける。
図8に示すように、共有変数チェック(S12)の結果、チェック結果がOKだった場合には(S13:YES)、中央演算装置53は、開発支援装置50の表示装置52の画面に、コンパイルが成功したことを示す表示を行う(S14)。しかし、共有変数チェック(S12)の結果、チェック結果がNGだった場合には(S13:NO)、中央演算装置53は、図11に示すようなエラーメッセージボックスM1を開発支援装置50の表示装置52の画面に表示する(S15)。
図11は、エラーメッセージボックスM1の一例を示す図である。図11に示すように、エラーメッセージボックスM1には、エラーメッセージM11、エラー対象の共有変数の名称M12、「はい」ボタンM13、および「いいえ」ボタンM14が表示される。図11の例では、エラーメッセージM11として、「以下の共有変数がプログラムの中で使われていません。コンパイルを続けますか?」というメッセージが表示される。エラー対象の共有変数の名称M12としては、reqHandCloseという名称が表示される。
ユーザは、このようなエラーメッセージボックスM1を確認し、コンパイルを続ける場合には、「はい」ボタンM13をクリックし、コンパイルを中止する場合には「いいえ」ボタンM14をクリックする。
図8にように、判定部73dは、エラーメッセージボックスM1において、「はい」ボタンM13が選択されたと判断すると(S16:YES)、開発支援装置50の表示装置52の画面に、コンパイルが成功したことを示す表示を行う(S14)。しかし、判定部73dは、エラーメッセージボックスM1において、「いいえ」ボタンM13が選択されたと判断すると(S16:NO)、開発支援装置50の表示装置52の画面に、コンパイルが失敗したことを示す表示を行う
以上のように、本実施形態によれば、コンパイル処理時に、グローバル変数テーブルを用いて共有変数のチェックを行うので、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することができる。
上述した実施形態では、IEC言語でプログラムを記述する際にグローバル変数テーブルを作成する例について説明したが、V+言語でプログラムを記述する際にグローバル変数テーブルを作成してもよい。
上述した実施形態では、グローバル変数テーブルに、変数共有を行うか否かを示す欄、および共有変数チェックを行うか否かを示す欄を設ける態様について説明したが、これらの欄を設けない態様であってもよい。
(第2実施形態)
次に、本開示の第2実施形態について添付図面を参照しつつ説明する。図12は、本実施形態におけるアーム型ロボットとエンドエフェクタの動作を説明するための図である。本実施形態では、アーム型ロボットの押し付け動作を実現するためのプログラムにおける共有変数のチェック処理について説明する。
この例では、図12(A)に示すように、部品が実装された基板80を、ヒートシンク81に取り付けるために、部品が実装された基板80をヒートシンク81に押し付ける動作をアーム型ロボット20により行う。
この場合のエンドエフェクタ40には、図示を省略する力覚センサを備えており、押し付け動作中の圧力値を、力覚センサにより取得する。図12(B)に示すように、アーム型ロボット20には、力覚センサを備えるエンドエフェクタ40が取り付けられている。
押し付け動作を行うには、まず、アーム型ロボット20のアーム20aに取り付けられたエンドエフェクタ40を、ワークWに押し付ける(S30:ロボットアームの押し付け)。この時、エンドエフェクタ40に備えられた力覚センサにより、押し付け中の圧力値を取得し、圧力値を共有変数に代入して、圧力値をアーム型ロボット20と共有する(S31:圧力値の共有)。アーム型ロボット20は、共有変数を介して、圧力値を取得し(S32:圧力値の取得)、押し付け動作を、圧力値がしきい値を超えるまで継続する(S32:圧力値がしきい値を超えるまで継続)。アーム型ロボット20は、圧力値がしきい値を超えた場合には、押し付け動作を停止し、ワークWから離間する。
以上のような動作を、図13のフローチャートで説明する。図13に示すように、ロボット制御プログラムであるV+言語で記述されたプログラムでは、アーム型ロボット20のアーム20aを、ワークWに押し付ける(S30)。IEC言語で記述されたプログラムは、エンドエフェクタ40に備えられた力覚センサにより、押し付け中の圧力値を取得し、圧力値を共有変数に代入して、圧力値をアーム型ロボット20と共有する(S31)。V+言語で記述されたプログラムは、共有変数を介して、圧力値を取得し(S32)、押し付け動作を、圧力値がしきい値を超えるまで継続する(S33)。V+言語で記述されたプログラムは、圧力値がしきい値を超えた場合には、押し付け動作を停止し、アーム型ロボット20のアーム20aをワークWから離間させる。
図14に示す例では、presValueが共有変数として用いられており、presValueは、V+言語で記述されたプログラムとIEC言語で記述されたプログラムとの両方で参照されている。presValue := N1_Ch1_Analog_Input_Value という文が、IEC言語で記述されたプログラムにおいて、圧力値を共有変数に代入する処理を表している。また、WHILE presValue < 2000 DO という文が、V+言語で記述されたプログラムにおいて、圧力値がしきい値を超えるまで押し付け動作を継続する処理を表している。
本実施形態における共有変数のチェック処理のフローチャートは、第1実施形態において説明した図8と図9に示すフローチャートと同じなので、説明を省略する。但し、共有変数の存在確認は、図15に示すグローバル変数テーブルTBL2を用いて行う。図16に示すグローバル変数テーブルTBL2においては、presValueが共有変数として登録されている。
以上のように、本実施形態によれば、コンパイル処理時に、グローバル変数テーブルを用いて共有変数のチェックを行うので、異なるプログラム間で定義した共有変数の実装漏れや共有変数名の間違いを、プログラムの実行前に適切に発見することができる。
(第3実施形態)
次に、本開示の第3実施形態について添付図面を参照しつつ説明する。第1実施形態および第2実施形態においては、IEC言語で記述されたプログラムのコンパイル処理の際に共有変数のチェック処理を行う態様について説明した。しかし、本実施形態では、コンパイル処理の実行後に、共有変数チェックの項目82が選択されると、共有変数のチェック処理を行う。
本実施形態における開発支援装置50のハードウエア構成および機能ブロックの構成は、図2および図3に示す第1実施形態における開発支援装置50のハードウエア構成および機能ブロックの構成と同様である。
本実施形態では、図16に示すように、開発支援装置50の表示装置52の画面上で、プロジェクトタブ80を選択すると、プロジェクトメニュー81が表示される。このプロジェクトメニュー81から共有変数チェックの項目82を選択することにより、、共有変数のチェック処理が行われる。なお、本実施形態では、V+言語で記述されたプログラムのソースコードと、IEC言語で記述されたプログラムのソースコードとの入力は既に完了しており、IEC言語で記述されたプログラムのコンパイル処理についても既に完了しているものとする。
また、本実施形態では、IEC言語で記述されたプログラムとして、図19に示すようなラダー言語で記述されたプログラムと、図20に示すようなST言語で記述されたプログラムとを用いる。
図17は、本実施形態における共有変数のチェック処理の流れを示すフローチャートである。共有変数のチェック処理が開始されると、クロスリファレンス情報生成部73cは、グローバル変数テーブルから、共有変数の抽出を行う(S40)。グローバル変数テーブルは、第1実施形態および第2実施形態で示したグローバル変数テーブルTBL1,TBL2と同様のグローバル変数テーブルを用いる。
次に、クロスリファレンス情報生成部73cは、抽出した共有変数について、V+言語で記述されたプログラムのソースコードと、IEC言語で記述されたプログラムのソースコードとにおけるクロスリファレンスを実行する(S41)。つまり、クロスリファレンス情報生成部73cは、V+言語で記述されたプログラムのソースコードと、IEC言語で記述されたプログラムのソースコードに対して、共有変数が使用されている箇所を参照し、そのプログラム名、ステップ番号、アドレス、言語、パス等をクロスリファレンス情報としてクロスリファレンス情報記憶部74cに記憶させる。抽出した共有変数が複数ある場合には、順次、個々の共有変数について以上のようなクロスリファレンスを実行する。
例えば、図19に示すように、ラダー言語で記述されたプログラムにおいて共有変数shared1、shared2、in1、in2が用いられ、図20に示すように、ST言語で記述されたプログラムにおいて共有変数shared3とshared4が用いられていたとする。さらに、図21で示すように、V+言語で記述されたプログラムにおいては、共有変数shared1とshared3が用いられていたとする。
判定部73dは、まず、共有変数shared1についてクロスリファレンスを実行し(S41)、IEC言語で記述されたプログラムと、V+言語で記述されたプログラムとの両方において使用されていないかを判定する(S42)。次に、IEC言語で記述されたプログラムのみで使用されているか、あるいは、V+言語で記述されたプログラムのみで使用されているかを判定する(S43)。
この例の場合は、共有変数shared1は、ラダー言語で記述されたプログラムと、V+言語で記述されたプログラムで使用されているので(S42:NO、S43:NO)、ステップS46まで進む。判定部73dは、全ての共有変数についてチェックが完了したかどうかを判断し(S46)、この場合にはまだ完了していないので(S46:NO)、再びステップS41に戻り、次に共有変数shared2についてクロスリファレンスを実行する(S41)。
共有変数shared2は、ラダー言語で記述されたプログラムのみにおいて使用されているので(S42:NO、S43:YES)、判定部73dは、エラーメッセージを生成し(S44)、表示処理部72は、図21に示すアウトプットウィンドウ110に、「警告:共有変数"shared2"は、IECプログラムでのみ使用されています。:Program0」と登録する。ここで、Program0は、図19に示すラダー言語で記述されたプログラムを示している
判定部73dは、全ての共有変数についてチェックが完了したかどうかを判断し(S46)、この場合にはまだ完了していないので(S46:NO)、再びステップS41に戻り、次に共有変数shared3についてクロスリファレンスを実行する(S41)。
共有変数shared3は、ST言語で記述されたプログラムのみにおいて使用されているので(S42:NO、S43:YES)、判定部73dは、エラーメッセージを生成し(S44)、表示処理部72は、図22に示すアウトプットウィンドウ110に、「警告:共有変数"shared3"は、V+プログラムでのみ使用されています。:Program2」と登録する。ここで、Program2は、図21に示すV+言語で記述されたプログラムを示している
以下、同様にして、全ての共有変数についてチェックを行い、判定部73dが、全ての共有変数についてチェックが完了したと判定した場合には(S46:YES)、表示処理部72は、アウトプットウィンドウ110に、上述のように登録したエラーメッセージを表示させ(S47)、判定部73dは、共有変数のチェックを終了する。
以上のような処理の結果。最終的に、図22に示すアウトプットウィンドウ110が表示される。アウトプットウィンドウ110は、リファレンス情報表示部52cに表示させてもよいし、プログラム表示部52aに表示させてもよい。
また、本実施形態では、アウトプットウィンドウ110に加えて、図18のようなクロスリファレンス表示画面103を表示させてもよい。クロスリファレンス表示画面103は、リファレンス情報表示部52cに表示される。
図18において、Program0は、図19に示すラダー言語で記述されたプログラムに相当し、Program1は、図20に示すST言語で記述されたプログラムに相当する。また、Program2は、図21に示すV+言語で記述されたプログラムに相当する。
図18に示すように、共有変数shared1は、ラダー言語で記述されたプログラムと、V+言語で記述されたプログラムで使用されている。共有変数shared2は、ラダー言語で記述されたプログラムのみにおいて使用されている。共有変数shared3は、ST言語で記述されたプログラムのみ
また、共有変数shared4は、ST言語で記述されたプログラムと、V+言語で記述されたプログラムで使用されている。そして、共有変数shared5は、いずれのプログラムでも使用されていない。なお、変数in1、in2は、共有変数ではない。
したがって、図18に示す例の場合には、共有変数shared2、shared3、shared5について、図21に示すようなエラーメッセージが表示されることになる。
以上のように、本実施形態によれば、IEC言語で記述されたプログラムと、V+言語で記述されたプログラムとの少なくともいずれか一方のプログラムにおいて、共有変数が使用されていないというエラーメッセージを表示する。その結果、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
(第4実施形態)
次に、本開示の第3実施形態について添付図面を参照しつつ説明する。第1実施形態および第2実施形態においては、IEC言語で記述されたプログラムのコンパイル処理の際に共有変数のチェック処理を行う態様について説明した。また、第3実施形態では、コンパイル処理の実行後に、共有変数のチェック処理を行う態様について説明した。
本実施形態は、IEC言語で記述されたプログラムのソースコード、またはV+言語で記述されたプログラムのソースコードをプログラム表示部52aに表示させ、ソースコードのうち、共有変数が選択された場合に、IEC言語で記述されたプログラムと、V+言語で記述されたプログラムとの両方において、選択された共有変数の参照箇所をクロスリファレンス情報として表示する。
図23は、本実施形態における開発支援装置50の機能ブロック図である。第1実施形態において図3で示した機能ブロック図と異なるところは、演算部73が、構成要素選択部73eと、本実施形態における判定部としての共有変数処理部73fを備えているところである。構成要素選択部73eは、アウトライン情報表示部52bに表示されるアウトライン情報のうち、変数がユーザによってクリック等された場合に、当該変数を、共有変数チェック処理を行う変数として選択する。また、共有変数処理部73fは、構成要素選択部73eによって選択された変数が、共有変数リファレンスに存在する場合には、IEC言語で記述されたプログラムと、V+言語で記述されたプログラムとにおいて、共有変数として参照されているか否かを判定する。本実施形態において、参照部として機能するクロスリファレンス情報生成部73cは、共有変数処理部73fにより、IEC言語で記述されたプログラム、またはV+言語で記述されたプログラムにおいて、選択された共有変数が参照されていると判定された際に、当該共有変数が使用されている箇所を特定する。
図24は、本実施形態において、プログラム表示部52aに表示されるV+言語で記述されたプログラムのソースコードと、IEC言語で記述されたプログラムのソースコードの例を示している。図24において、符号90で示された箇所が、共有変数である。この例の場合には、reqHandCloseが共有変数である。
プログラム表示部52aには、いずれか一方のプログラムのソースコードを表示させてもよいし、両方のプログラムのソースコードを表示させてもよい。なお、本実施形態では、V+言語で記述されたプログラムのソースコードと、IEC言語で記述されたプログラムのソースコードとの入力は既に完了しており、IEC言語で記述されたプログラムのコンパイル処理についても既に完了しているものとする。
図25は、本実施形態における共有変数チェック処理の流れを示すフローチャートである。図25に示す処理は、所定時間ごとに繰り返し実行される。共有変数のチェック処理が開始されると、共有変数処理部73fは、ユーザによって変数がクリック等され、構成要素選択部73eによって変数が選択されたか否かを判断する(S50)。共有変数処理部73fは、変数が選択されていないと判断した場合には(S50:NO)、図25に示す処理を抜ける。しかし、共有変数処理部73fは、変数が選択されたと判断した場合には(S50:YES)、次に、選択された変数が、共有変数リファレンスに存在するかどうかを判断する(S51)。本実施形態における共有変数リファレンスは、上述した実施形態と同様に、グローバル変数テーブルであってもよいし、グローバル変数テーブルとは別のリファレンスであってもよい。
共有変数処理部73fは、選択された変数が、共有変数リファレンスに存在しないと判断した場合には(S51:NO)、図25に示す処理を抜ける。しかし、共有変数処理部73fは、選択された変数が、共有変数リファレンスに存在すると判断した場合には(S51:YES)、共有変数リファレンスから、当該変数の抽出を行う(S52)。
次に、共有変数処理部73fは、抽出された変数について、例えば、IEC言語で記述されたプログラムのソースコードにおいて、参照されているかどうかを判定する(S53)。クロスリファレンス情報生成部73cは、共有変数処理部73fによって、抽出された変数が、IEC言語で記述されたプログラムのソースコードにおいて参照されていると判定された場合には、IEC言語で記述されたプログラムのソースコードに対して、抽出された変数が使用されている箇所を参照し、そのプログラム名、ステップ番号、アドレス、言語、パス等をクロスリファレンス情報としてクロスリファレンス情報記憶部74cに記憶させる(S54)。
次に、共有変数処理部73fは、全てのプログラムにおいて、共有変数についてのクロスリファレンスが完了したかどうかを判断する(S55)。この例の場合には、共有変数処理部73fは、まだV+言語で記述されたプログラムのソースコードにおいて、共有変数についてのクロスリファレンスが完了していないと判断し(S55:NO)、再びステップS53の処理に戻る。
共有変数処理部73fは、前記抽出された変数について、V+言語で記述されたプログラムのソースコードにおいて、参照されているかどうかを判定する(S53)。クロスリファレンス情報生成部73cは、共有変数処理部73fによって、抽出された変数が、IEC言語で記述されたプログラムのソースコードにおいて参照されていると判定された場合には、IEC言語で記述されたプログラムのソースコードに対して、抽出された変数が使用されている箇所を参照し、そのプログラム名、ステップ番号、アドレス、言語、パス等をクロスリファレンス情報としてクロスリファレンス情報記憶部74cに記憶させる(S54)。
共有変数処理部73fは、全てのプログラムにおいて、共有変数についてのクロスリファレンスが完了したかどうかを判断する(S55)。この例の場合には、全てのプログラムについて、共有変数のクロスリファレンスが完了したと判断し(S55:YES)、クロスリファレンス情報記憶部74cに記憶させたクロスリファレンス情報を、クロスリファレンスウィンドウに表示させ(S56)、図25に示す処理を終了する。
図26に、クロスリファレンスウィンドウ200の一例を示す。クロスリファレンスウィンドウ200は、リファレンス情報表示部52cに表示される。図26に示すクロスリファレンスウィンドウ200は、リファレンス対象表示欄201、設定項目表示欄202、発生箇所表示欄203、詳細情報表示欄204、リファレンス表示欄205等を備えている。
リファレンス対象表示欄201には、共有変数のクロスリファレンスを行ったプログラムの名前と、選択された共有変数とが表示される。図26に示す「ロボットハンド制御」は、IEC言語で記述されたプログラムの名前を示している。reqHandCloseは、選択された共有変数である。
設定項目表示欄202には、クロスリファレンスの対象となった共有変数が表示される。図26の例の場合には、reqHandCloseと表示される。発生箇所表示欄203には、設定項目に表示された共有変数が参照されたプログラム名が表示される。この例の場合には、ロボットハンド制御、およびロボット制御と表示される。「ロボット制御」は、V+で記述されたプログラムの名前を示している。
詳細情報表示欄204には、発生箇所表示欄203に表示されたプログラムにおいて、設定項目表示欄202に表示された共有変数が参照されたプログラムのソースコードにおける行番号が表示される。リファレンス表示欄205には、詳細情報表示欄204に表示された行番号におけるソースコードが表示される。
以上のように、本実施形態によれば、一つのプログラムにおいて、共有変数を選択するだけで、当該プログラムにおける共有変数の参照箇所だけでなく、他のプログラムにおける当該共有変数の参照箇所についても、クロスリファレンスウィンドウ200に表示される。
したがって、ユーザは、クロスリファレンスウィンドウ200に表示された内容を見ることによって、共有変数が、全てのプログラムにおいて正しく参照されているか否かを容易に把握することができる。その結果、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
上述の説明では、プログラム表示部52aに表示したプログラムのソースコード上で変数を選択する態様について説明したが、本発明はこのような態様に限定される訳ではない。例えば、アウトライン情報をアウトライン表示部52bに表示させ、アウトライン情報上で変数を選択する態様にも適用可能である。
アウトライン情報は、IEC言語で記述されたプログラム、またはV+言語で記述されたプログラムの構成の概要を示す情報のことであり、これらのプログラムに使用されている所定の構成要素を、これらのプログラムの先頭から順に抽出したものである。
この場合でも、一つのプログラムのアウトライン情報において、共有変数を選択するだけで、当該プログラムにおける共有変数の参照箇所だけでなく、他のプログラムにおける当該共有変数の参照箇所についても、クロスリファレンスウィンドウ200に表示させることができる。
したがって、ユーザは、クロスリファレンスウィンドウ200に表示された内容を見ることによって、共有変数が、全てのプログラムにおいて正しく参照されているか否かを容易に把握することができる。その結果、共有変数の実装漏れ、共有変数名の誤り、無駄な共有変数の存在等を確認することができ、プログラムのデバッグを円滑に行うことが可能となる。
第1実施形態、第2実施形態、および第4実施形態においては、IEC言語で記述されたプログラムとして、ST言語で記述されたプログラムのみを用いた態様について説明したが、これらの実施形態においても、第3実施形態と同様に、IEC言語で記述されたプログラムとして、ST言語で記述されたプログラムと、ラダー言語で記述されたプログラムとの両方を用いることが可能である。
以上の実施形態は例示であり、この発明の範囲から離れることなく様々な変形が可能である。上述した複数の実施の形態は、それぞれ単独で成立し得るものであるが、実施の形態同士の組みあわせも可能である。また、異なる実施の形態の中の種々の特徴も、それぞれ単独で成立し得るものであるが、異なる実施の形態の中の特徴同士の組みあわせも可能である。
10 制御装置
50 開発支援装置
51 入力部
53 判定部
TBL1 グローバル変数テーブル(共有変数リファレンス)

Claims (6)

  1. 制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置であって、
    予め作成された共有変数リファレンスであって、前記複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数のための共有変数リファレンスと、
    前記複数の異なるプログラミング言語のソースコードを入力する入力部と、
    前記共有変数リファレンスに基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定する判定部と、
    を備える開発支援装置。
  2. エラーメッセージを出力するエラーメッセージ出力部を備え、
    前記判定部は、
    前記複数の異なるプログラミング言語のソースコードのうち、一のプログラミング言語のソースコード中において前記共有変数が参照されていると判定した場合に、当該参照されている前記共有変数が、他のプログラミング言語のソースコード中において参照されているか否かを判定し、参照されていないと判定された場合には、エラー状態であることを出力し、
    前記エラーメッセージ出力部は、前記判定部により、前記エラー状態であることが出力された場合には、エラーメッセージを出力する、
    請求項1に記載の開発支援装置。
  3. エラーメッセージを出力するエラーメッセージ出力部を備え、
    前記判定部は、
    前記共有変数が、前記複数の異なるプログラミング言語のソースコード中における、いずれのプログラミング言語のソースコード中においても参照されていないと判定した場合、または、いずれかのプログラミング言語のソースコード中おいてのみ参照されていると判定した場合には、エラー状態であることを出力し、
    前記エラーメッセージ出力部は、前記判定部により、前記エラー状態であることが出力された場合には、エラーメッセージを出力する、
    請求項1に記載の開発支援装置。
  4. 前記複数の異なるプログラミング言語のソースコード、および前記ソースコードのアウトラインの少なくともいずれか一方を表示する表示部と、
    前記表示部に表示される前記共有変数を選択する選択部と、
    前記判定部により、前記共有変数が参照されていると判定された場合に、当該ソースコードにおける前記前記共有変数の参照箇所を特定する参照部と、を備え、
    前記判定部は、
    前記表示部に表示される前記複数の異なるプログラミング言語のソースコードまたはアウトラインのうち、一のプログラミング言語のソースコードまたはアウトラインにおいて、前記選択部により前記共有変数が選択された場合に、当該一のプログラミング言語のソースコード、および他のプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定する、
    請求項1に記載の開発支援装置。
  5. 制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援方法であって、
    前記複数の異なるプログラミング言語のソースコードを入力するステップと、
    予め作成された共有変数リファレンスであって、前記複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数のための共有変数リファレンスに基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定するステップと、
    を備える開発支援方法。
  6. 制御装置において実行される複数の異なるプログラミング言語を開発するための開発支援装置の開発支援プログラムであって、前記プログラムは、コンピュータに、
    前記複数の異なるプログラミング言語のソースコードを入力するステップと、
    予め作成された共有変数リファレンスであって、前記複数の異なるプログラミング言語のソースコードにおいて参照され、メモリを共有する共有変数のための共有変数リファレンスに基づいて、入力された前記複数の異なるプログラミング言語のソースコードにおいて、前記共有変数が参照されているか否かを判定するステップと、
    を実行させる開発支援プログラム。
JP2018048504A 2018-03-15 2018-03-15 開発支援装置、開発支援方法、および開発支援プログラム Active JP6891838B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018048504A JP6891838B2 (ja) 2018-03-15 2018-03-15 開発支援装置、開発支援方法、および開発支援プログラム
EP19156610.8A EP3540536B1 (en) 2018-03-15 2019-02-12 Development support device, development support method, and development support program
CN201910110944.7A CN110275451B (zh) 2018-03-15 2019-02-12 开发支援装置、开发支援方法以及记录介质
US16/275,354 US10747507B2 (en) 2018-03-15 2019-02-14 Development support device, development support method, and non-transitory recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018048504A JP6891838B2 (ja) 2018-03-15 2018-03-15 開発支援装置、開発支援方法、および開発支援プログラム

Publications (2)

Publication Number Publication Date
JP2019160079A true JP2019160079A (ja) 2019-09-19
JP6891838B2 JP6891838B2 (ja) 2021-06-18

Family

ID=65411794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018048504A Active JP6891838B2 (ja) 2018-03-15 2018-03-15 開発支援装置、開発支援方法、および開発支援プログラム

Country Status (4)

Country Link
US (1) US10747507B2 (ja)
EP (1) EP3540536B1 (ja)
JP (1) JP6891838B2 (ja)
CN (1) CN110275451B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6969460B2 (ja) * 2018-03-15 2021-11-24 オムロン株式会社 プログラム開発支援システム、プログラム開発支援方法及びプログラム開発支援プログラム
CN111158663B (zh) * 2019-12-26 2021-07-02 深圳逻辑汇科技有限公司 用于处理程序代码中的变量的引用的方法和系统
US11709659B1 (en) * 2020-03-25 2023-07-25 Stripe, Inc. Systems and methods for a code generation tool for software development systems
CN111618846A (zh) * 2020-04-10 2020-09-04 中国科学院软件研究所 一种面向机械臂程序开发编程语言的调试器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000347894A (ja) * 1999-06-09 2000-12-15 Fujitsu Ltd ソースプログラムチェック装置およびそのプログラム記録媒体
US20140123104A1 (en) * 2011-07-06 2014-05-01 Abb Ag Method and device for the programming and configuration of a programmable logic controller

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3446256B2 (ja) 1993-09-03 2003-09-16 株式会社日立製作所 Faシステムの制御方法及び装置
US7035781B1 (en) * 1999-12-30 2006-04-25 Synopsys, Inc. Mixed language simulator
JP2003241997A (ja) * 2002-02-20 2003-08-29 Denso Corp 割込命令チェック装置及び割込命令チェックプログラム
US20040010780A1 (en) * 2002-07-11 2004-01-15 Nortel Networks Limited Method and apparatus for approximate generation of source code cross-reference information
US7464065B2 (en) * 2005-11-21 2008-12-09 International Business Machines Corporation Object specific language extension interface for a multi-level data structure
EP3249893A1 (en) * 2008-06-03 2017-11-29 Whirlpool Corporation Appliance development toolkit
CN102419730A (zh) * 2011-12-08 2012-04-18 北京控制工程研究所 一种51汇编语言软件安全性编码规则自动检查方法
JP5942446B2 (ja) * 2012-02-01 2016-06-29 オムロン株式会社 サポート装置およびサポートプログラム
KR20140147318A (ko) * 2013-06-19 2014-12-30 한국전자통신연구원 멀티코어용 병렬 프로그램의 동시성 오류 검출 장치 및 방법
US20160246622A1 (en) * 2015-02-23 2016-08-25 Karlen Simonyan Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages
JP2016186697A (ja) * 2015-03-27 2016-10-27 日本電気株式会社 関数間変数共有方法及び機構
CN106200445B (zh) * 2015-05-06 2018-09-25 西门子工厂自动化工程有限公司 逻辑控制器的调试方法
JP6969460B2 (ja) * 2018-03-15 2021-11-24 オムロン株式会社 プログラム開発支援システム、プログラム開発支援方法及びプログラム開発支援プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000347894A (ja) * 1999-06-09 2000-12-15 Fujitsu Ltd ソースプログラムチェック装置およびそのプログラム記録媒体
US20140123104A1 (en) * 2011-07-06 2014-05-01 Abb Ag Method and device for the programming and configuration of a programmable logic controller

Also Published As

Publication number Publication date
EP3540536B1 (en) 2023-08-23
CN110275451B (zh) 2022-06-14
JP6891838B2 (ja) 2021-06-18
US10747507B2 (en) 2020-08-18
EP3540536A2 (en) 2019-09-18
CN110275451A (zh) 2019-09-24
EP3540536A3 (en) 2020-02-26
US20190286423A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
JP2019160079A (ja) 開発支援装置、開発支援方法、および開発支援プログラム
TWI564685B (zh) 工程工具、程式編輯裝置及程式編輯系統
JP2008282363A (ja) プログラマブルコントローラ、プログラム作成支援装置、コンピュータプログラム及びplcシステム
JP2009146229A (ja) プログラマブルコントローラシステム
JP2008165399A (ja) シミュレーションデータ作成支援装置
JP6969460B2 (ja) プログラム開発支援システム、プログラム開発支援方法及びプログラム開発支援プログラム
KR20120041153A (ko) 시퀀스 프로그램의 디버그 장치, 디버그 방법, 및 프로그램
JP6340886B2 (ja) プログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法
JP2010122824A (ja) プログラマブルコントローラのダイアグラムのデバッグシステム、そのプログラミング装置及びそのプログラム
JP2006031311A (ja) ロボット制御装置及びロボットシステム
JP5636783B2 (ja) プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法
JPH10143221A (ja) 機器制御プログラムの開発支援システムおよび開発支援方法
JP5086296B2 (ja) プログラマブルコントローラ制御プログラム作成方法、および、プログラマブルコントローラ制御プログラム作成システム
JP2008165324A (ja) プログラム作成支援装置
CN112166409B (zh) 控制系统、控制系统的控制方法以及记录介质
CN111993419B (zh) 基于pdps的机器人离线制作方法及其装置、计算机终端设备
US20210181717A1 (en) Production system, recovery system, production method, and information storage medium
JP4962721B2 (ja) ツール装置及びメッセージ送信プログラムの作成方法
JP5008520B2 (ja) 表示画面内へのデータ入力状況表示方法
JP2006268292A (ja) テンプレート編集装置およびテンプレート編集用プログラム
JP6919338B2 (ja) プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム
JP2010152830A (ja) 制作されたラダープログラムをプログラミングツール画面上でデバッグ等する方法
JPS63641A (ja) 命令の入力方式
JPS61105606A (ja) シーケンスコントローラ
JP2020149520A (ja) 制御システム、制御方法、および制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210325

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210510

R150 Certificate of patent or registration of utility model

Ref document number: 6891838

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250