(57)【特許請求の範囲】
【請求項１】
同一の制御プログラムに対して表示・編集可能なラダーエディタとニーモニックエディタとを備えたＰＬＣ用の制御プログラムの開発支援装置であって、
前記ラダーエディタにより表示されるラダーエディタ画面と、前記ニーモニックエディタにより表示されるニーモニックエディタ画面のアクティブ側の画面上で、前記同一の制御プログラム中の特定の命令を示している編集カーソルの移動を検出した場合に、他方の画面における表示カーソルを、前記同一命令に対応した位置に移動させる同期制御手段を有し、
前記同期制御手段は、ニーモニックエディタがアクティブ側のエディタであり、かつ、ラダーエディタが非アクティブ側のエディタの場合は、ニーモニックエディタ画面上において編集カーソルで指定された命令語と同一の命令語がラダーエディタで表示可能かどうか判断し、表示可能でないと判断した場合は前記編集カーソルで指定された命令が属する回路の先頭命令語を表示カーソルの表示位置とする機能を備えたこと
を特徴とする開発支援装置。
【請求項２】
前記表示カーソルを移動させた結果、その表示カーソルが画面領域外になるか否かを検出し、画面領域外に移動した場合にその他方の画面をスクロールさせる手段を備えたことを特徴とする請求項１に記載の開発支援装置。
【請求項３】
同一の制御プログラムに対して表示・編集可能なラダーエディタとニーモニックエディタとを備えたＰＬＣ用の制御プログラムの開発支援のプログラム製品であって、
前記ラダーエディタにより表示されるラダーエディタ画面と、前記ニーモニックエディタにより表示されるニーモニックエディタ画面のアクティブ側の画面上の編集カーソル位置を監視し、前記同一の制御プログラム中の特定の命令を示している前記編集カーソルの移動を検出する処理、
前記編集カーソルの移動を検出した場合に、他方の画面における表示カーソルを、前記同一命令に対応した位置に移動させる処理、
ニーモニックエディタがアクティブ側のエディタであり、かつ、ラダーエディタが非アクティブ側のエディタの場合、ニーモニックエディタ画面上において編集カーソルで指定された命令語と同一の命令語がラダーエディタで表示可能かどうか判断し、表示可能でないと判断した場合は前記編集カーソルで指定された命令が属する回路の先頭命令語に表示カーソルを移動させる処理、
を実行するプログラム部分を持つことを特徴とするプログラム製品。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、開発支援装置及びプログラム製品に関するもので、より具体的には、複数画面間で表示位置の同期をとる機能を持つ制御プログラムを開発するものに関するものである
【従来の技術】
ＰＬＣユーザは、プログラマブルロジックコントローラ（ＰＬＣ）向けの制御プログラム（ユーザプログラム）を開発する場合、開発支援装置（パソコンに開発支援ソフトウエアをインストールしたもの）を用い、ラダー言語などによりＰＬＣ上で動作する制御プログラムを作成後、ダウンロードする。
【０００２】
ところで、このプログラムの開発時では、開発支援装置に用意されたエディタ機能を利用し、プログラムを新規作成したり、修正処理をしたりすることになる。ラダー言語でのプログラムを作成する場合、制御プログラムはラダー図とニーモニックの２種類の形で表現できる。よって、上記エディタ機能もそれに合わせてラダーエディタとニーモニックエディタの２種類用意されており、適宜所定のエディタを使用してプログラムを構築していく。
【０００３】
そして、開発支援装置の場合、いずれのエディタを用いて制御プログラムを記述しても、最終的には中間言語に変換されてメモリ上に格納される。従って、係るメモリに格納された１つの制御プログラムをラダーエディタ画面上ではラダー図として、ニーモニックエディタ画面上はでニーモニックとして表示され、編集する。換言すると、一方のエディタを用いて作成・編集した制御プログラムは、他方のエディタで読み出して、ディスプレイ上に出力表示することができ、しかも、係る表示された制御プログラムに対し編集したり新たにコマンドを追加することなどの各種の操作が行える。
【０００４】
【発明が解決しようとする課題】
上記した複数のエディタを備えた開発支援装置の場合、以下に示す問題があった。すなわち、プログラムを記述する場合に、ラダーエディタを利用した方が入力しやすい場合と、ニーモニックエディタを利用した方が入力しやすい場合がある。従って、ユーザは、ラダーエディタ画面もしくはニーモニックエディタ画面上で制御プログラムの特定の命令を表示し編集している際に、他方のエディタの方が入力しやすい場合には、即座にもう一方のエディタ画面上で、対応する命令を表示し編集できるとプログラム開発の作業性が向上する。
【０００５】
係る処理を従来の開発支援装置で実現しようとすると、ラダーエディタとニーモニックエディタを２つとも起動し、同一の制御プログラムを開く。これにより、両エディタ画面には、同一の制御プログラムが表示される。この状態で、一方のエディタ画面をアクティブにして命令の追加・変更などを行う。すると、係る追加・変更処理が進むにつれて、カーソルも移動し、さらには画面がスクロールする。この状態で、他方のエディタをアクティブにすると、カーソルは、前回の他方のエディタにおける作業終了位置にあるため、必ずしも、直前までアクティブであった一方のエディタ一画面においてカーソルで指示されていた命令と一致することはなく、通常は異なるばかりか、他方のエディタ画面には係る命令が表示されていないことも多々ある。
【０００６】
従って、他方のエディタをアクティブにした後、その他方のエディタ画面をスクロールさせて対応する命令を探し出し、編集処理等をすることになり、操作性が悪い。
【０００７】
また、ＰＬＣ用の制御プログラムを開発する際に、同一プログラムをラダーエディタ画面とニーモニックエディタ画面で同時に編集・モニタリングする場合、２つのエディタ画面上に同じ命令を表示させるためには、一方のエディタ画面上で特定の命令を探すために画面をスクロールさせた後に、他方のエディタ画面上でも同様に画面をスクロールさせなければならず検索性が悪く、プログラム開発時の負担が大きい
この発明は、ラダーエディタ画面とニーモニックエディタ画面で同一プログラムを表示したり、編集する場合において、２つのエディタ画面の表示を関連づけ、一方のエディタ画面で特定の命令をカーソルで示せば、他方のエディタ画面でも対応する命令（関連する箇所を含む）を表示することができ、プログラム開発の作業性が良好な開発支援装置及びプログラム製品を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この発明による開発支援装置は、同一の制御プログラムに対して表示・編集可能なラダーエディタとニーモニックエディタとを備えたＰＬＣ用の制御プログラムの開発支援装置であって、前記ラダーエディタにより表示されるラダーエディタ画面と、前記ニーモニックエディタにより表示されるニーモニックエディタ画面のアクティブ側の画面上で、前記同一の制御プログラム中の特定の命令を示している編集カーソルの移動を検出した場合に、他方の画面における表示カーソルを、前記同一命令に対応した位置に移動させる同期制御手段を有し、前記同期制御手段は、ニーモニックエディタがアクティブ側のエディタであり、かつ、ラダーエディタが非アクティブ側のエディタの場合は、ニーモニックエディタ画面上において編集カーソルで指定された命令語と同一の命令語がラダーエディタで表示可能かどうか判断し、表示可能でないと判断した場合は前記編集カーソルで指定された命令が属する回路の先頭命令語を表示カーソルの表示位置とする機能を備えるように構成した。
【０００９】
ＰＬＣ用の制御プログラムの開発(新規作成並びに修正を含む)を行う場合、同一の制御プログラムをラダーエディタとニーモニックエディタを使って各エディタ画面で表示し、適宜アクティブのエディタを切替えながら、制御プログラムの命令語の追加や変更を行うことがある。このとき、本発明によれば、アクティブのエディタ画面の編集カーソルの位置が変更された場合に、それその変更後の編集カーソルが指示する命令に対応する非アクティブ側のエディタ画面における命令の位置に表示カーソルを移動する。
【００１０】
これにより、２つのエディタ画面の表示を関連づけられるため、非アクティブ側の命令が、表示されている画面上に存在している場合には、ユーザは２つのエディタ画面上に対応する命令が表示されるので、例えば、アクティブのエディタを適宜切替えることにより、入力しやすいエディタを使用して制御プログラムの開発を進めることができ、プログラム開発の作業性が良好となる。
【００１１】
また、前記表示カーソルを移動させた結果、その表示カーソルが画面領域外になるか否かを検出し、画面領域外に移動した場合にその他方の画面をスクロールさせる手段を備えるとよい。このようにすると、常に、対応する命令を２つのエディタ画面に表示することができるので、プログラム開発の作業性がより良好となる。なお、本発明では必ずしも係るスクロール機能(非アクティブ側の表示カーソルが表示領域外に位置する場合にスクロールして画面上に表示させる機能)はなくても良い。すなわち、仮にスクロールしなくても、対応する命令に表示カーソルを移動しておくことにより、次にアクティブ画面に切替えたときに簡単に対応する命令をエディタ画面上に表示させることができるからである。
【００１２】
また、同一の命令が表示されている場合には係る同一の命令に表示カーソルを位置させればよいが、必ずしも同一の命令が２つのエディタ画面上に表示されるとは限らない。従って、他方の画面に前記編集カーソルで指示されている命令に対応する命令が表示されていない場合に、前記編集カーソルで指示された命令が属する回路の所定位置の命令語を前記表示カーソルで示す機能を設けると好ましい。所定位置は、実施の形態では先頭にしているが、他の箇所でも良い。つまり、対応する命令とは、同一の命令の場合はもちろんのこと、このように関連する命令も含む。
【００１３】
本発明に係るプログラム製品は、同一の制御プログラムに対して表示・編集可能なラダーエディタとニーモニックエディタとを備えたＰＬＣ用の制御プログラムの開発支援のプログラム製品であって、前記ラダーエディタにより表示されるラダーエディタ画面と、前記ニーモニックエディタにより表示されるニーモニックエディタ画面のアクティブ側の画面上の編集カーソル位置を監視し、前記同一の制御プログラム中の特定の命令を示している前記編集カーソルの移動を検出する処理と、前記編集カーソルの移動を検出した場合に、他方の画面における表示カーソルを、前記同一命令に対応した位置に移動させる処理、ニーモニックエディタがアクティブ側のエディタであり、かつ、ラダーエディタが非アクティブ側のエディタの場合、ニーモニックエディタ画面上において編集カーソルで指定された命令語と同一の命令語がラダーエディタで表示可能かどうか判断し、表示可能でないと判断した場合は前記編集カーソルで指定された命令が属する回路の先頭命令語に表示カーソルを移動させる処理、を実行するプログラム部分を持つようにすることである。
【００１４】
【発明の実施の形態】
図１は、本発明に係る開発支援装置１０を含むシステム構成の一例を示している。この開発支援装置１０は、ＰＬＣ１のシリアルポートに通信ケーブル３を介して接続可能となっている。このＰＬＣ１と開発支援装置１０は、ＲＳ−２３２Ｃ等のシリアル通信により、情報（ユーザプログラムその他のデータ等）の送受を行えるようになっている。これにより、開発支援装置１０で作成したり、修正したりしたユーザプログラムをＰＬＣ１にダウンロードしたり、ＰＬＣ１に格納されているユーザプログラム等をアップロードし、メンテナンスを行えるようになる。
【００１５】
図２，図３は、本発明に係る開発支援装置１０の好適な一実施の形態の内部構成を示している。図２に示すように、ＲＳ−２３２Ｃ用の通信インタフェース１１を備え、この通信インタフェース１１を介してＰＬＣ１と情報の送受を行う。また、受け取った情報は、ＭＰＵ１２に取り込まれ、このＭＰＵ１２により具体的な情報の送受が制御される。このＭＰＵ１２には、本発明との関係で言うと、制御プログラムを作成する際に利用するラダーエディタ２０とニーモニックエディタ２１を備えている。
【００１６】
各エディタ２０，２１を操作して作成された制御プログラムは、中間言語に変換されてメモリ１３の所定領域に格納される。そして、各エディタ２０，２１は、同一の制御プログラムに対して相互にアクセスし、その内容の変更が可能となる。よって、例えば、ラダーエディタ２０を操作して制御プログラムの一部を修正した場合、修正後にその同一の制御プログラムをニーモニックエディタ２１を用いて閲覧した場合には、修正後の内容が表示される。そして、２つのエディタ画面を同時に開いておくとともに、同一の命令を表示させていた場合に、一方のエディタを用いて命令の追加・変更等を行った場合には、他方のエディタ画面にもその追加・変更された内容に更新される。なお、係る処理を実行するための各エディタの具体的な機能（アルゴリズム）の説明は省略する。
【００１７】
さらに、開発支援装置１０は、図示省略するキーボードやマウス等の入力装置からの入力情報をＭＰＵ１２に渡すための入力装置インタフェース１４と、各エディタ２０，２１で開いた制御プログラムをディスプレイ１０ａに向けて出力表示するためのディスプレイインタフェース１５を備えている。
【００１８】
ここで、本実施の形態では、各エディタ２０，２１の実行により出力表示されるラダーエディタ画面Ｇ１とニーモニックエディタ画面Ｇ２上のカーソルＫ１，Ｋ２の表示等を制御する同期制御部２２を備えている。この同期制御部２２は、アクティブとなったエディタ画面側に表示されたカーソル（編集カーソル）の位置を監視し、そのカーソル（編集カーソル）が移動した場合に、非アクティブの他方のエディタ画面に表示されたカーソル（表示カーソル）もそれに合わせて移動させ、原則として各カーソルＫ１，Ｋ２が、制御プログラム中の同じ命令を指すとともに、各カーソルＫ１，Ｋ２が各エディタ画面Ｇ１，Ｇ２上に表示される（必要に応じて非アクティブ側もスクロールする）ように制御する。
【００１９】
具体的には、図４，図５に示すフローチャートを実行するようになっている。すなわち、まず同期処理が可能か否かを判断し（ＳＴ１）、同期処理ができない場合にはそのまま処理を終了する。また、同期処理が可能な場合には、ステップ２に進み、実際の同期制御に移行する。ここで、同期処理が可能か否かの判断であるが、例えば、アクティブとなっているエディタがない場合には、カーソルも移動することがないので同期処理不可（そもそも必要が無い）となる。なお、複数のエディタ画面が開いていない場合にも同期処理不可と判断するようにしても良い。
【００２０】
次に、アクティブのエディタ画面（画面▲１▼）のカーソル（編集カーソル）の位置を取得・監視し、移動したか否かを判断する（ＳＴ２）。そして、移動していない場合には今回の同期処理は終了する。また、移動している場合にはステップ３に進み、アクティブのエディタ画面（画面▲１▼）がスクロールするか否かを判断する。つまり、カーソルがエディタ画面の表示領域外に位置したか否かを検出し、表示領域外に位置した場合にスクロールすると判断する。そして、スクロールすると判断した場合には、アクティブのエディタ画面（画面▲１▼）をスクロール処理し、編集カーソルが常にエディタ画面上に位置するように制御する（ＳＴ４）。なお、係るステップ３，４の処理は、アクティブのエディタ画面に対する表示制御であるため、各エディタ側が持つ機能により実施するようにしても良い。
【００２１】
次に、アクティブのエディタ画面（画面▲１▼）の編集カーソルが指示している命令を特定する（ＳＴ５）。本実施の形態では、後述するように各命令（命令語）にはステップ番号が付加されているので、係るステップ番号を取得する。
【００２２】
次いで、通知先の画面があるか否かを判断する（ＳＴ６）。つまり、同一の制御プログラムについて開いている非アクティブのエディタ画面（アクティブのエディタ画面とは異なる種類のエディタ画面）が存在するか否かを判断する（ＳＴ６）。存在しない場合には、同期させる必要がないのでそのまま処理を終了する。なお、仮にステップ１の「同期処理可」の判断にて２つのエディタ画面が存在することが「Ｙｅｓ」の条件としていた場合でも、ステップ２から５までの処理の間に通知先の画面が無くなることもあるので、この分岐処理の判断を設けている。
【００２３】
そして、通知先の画面が存在する場合、非アクティブのエディタ画面（画面▲２▼）に対してカーソル移動があったことを通知する（ＳＴ７）。この通知は、例えば移動があったこととともに編集カーソルが示す命令のステップ番号を対にして行う。
【００２４】
この移動通知を受けたならば、非アクティブのエディタ画面（画面▲２▼）のカーソル（表示カーソル）の表示すべき位置を特定するとともに、その特定した位置に移動させる（ＳＴ８）。
【００２５】
この特定，移動処理は、具体的には図５に示すアルゴリズムを実行する。すなわち、アクティブのエディタ画面で指定されていた命令語と同一の命令語が非アクティブのエディタ画面に表示可能とは限らない。例えば、ニーモニックエディタで、命令の名前等を定義しているステップがあると、ラダーエディタ画面ではその名前が表示されないことがある。
【００２６】
そこで、まず画面上で対象の命令語が表示可能か否かを判断する（ＳＴ２１）。ここで、表示可能か否かは、対応する命令語が存在するか否かであり、現在の非アクティブのエディタ画面上に存在しているか否かは問わない。
【００２７】
そして、表示可能な場合（存在する場合）には、該当する命令語の上に表示カーソルを移動する（ＳＴ２２）。また、対象の命令が表示されていない場合には、その表示されない命令語が属する回路の先頭命令語を表示カーソルの表示位置に特定し、係る位置に表示カーソルを移動する（ＳＴ２３）。
【００２８】
次いで、上記表示カーソルを移動した結果、非アクティブのエディタ画面（画面▲２▼）がスクロールする必要が生じたか否かを判断する（ＳＴ９）。つまり、現在のエディタ画面（画面▲２▼）上に、移動後の表示カーソルで指示された命令語が存在しているか否かを判断し、存在していない場合にはスクロールありと判断する。
【００２９】
そして、スクロールの必要がない（ステップ９の分岐判断でＮｏ）と判断した場合には、既に非アクティブのエディタ画面上に移動した表示カーソルが存在しているのでそのまま今回の同期処理を終了する。また、スクロールの必要あり（ステップ９の分岐判断でＹｅｓ）と判断した場合には、移動した表示カーソルがエディタ画面上に出現するように非アクティブのエディタ画面をスクロール処理する（ＳＴ１０）。これにより、非アクティブのエディタ画面上に移動した表示カーソルが出現するので、今回の同期処理を終了する。
【００３０】
上記した実施の形態を実施することにより、例えば図６に示すように、上部にあるラダーエディタ画面Ｇ１と下部にあるニーモニックエディタ画面Ｇ２がそれぞれ表示されており、ニーモニックエディタ側がアクティブになっている場合において、カーソルＫ２(編集カーソル)をステップ番号「１９８９６」の「命令ＲＥＴ」に位置させると、それに追従して非アクティブのラダーエディタ画面Ｇ１上でも、カーソルＫ１（表示カーソル）は同一の命令である「ＲＥＴ」を示している。そして、図示省略するが、この後、ニーモニックエディタ画面Ｇ２上でカーソルＫ２を下部に移動させることで、ラダーエディタ画面Ｇ１でもカーソルＫ１の移動に応じて画面のスクロールが行われる。
【００３１】
また、図７に示すように、下部にあるニーモニックエディタ画面Ｇ２中で「命令ＯＲＬＤ」をカーソルＫ２で指し示した場合、命令ＯＲＬＤは上部にあるラダーエディタ画面Ｇ１上では表示されないため、近似的に同じ回路の先頭命令であるＬＤにカーソルＫ１を移動させて表示を行う。
【００３２】
なおまた、上記したエディタ２０，２１や同期制御部２２は、いずれも本実施の形態ではアプリケーションプログラム（プログラム製品）で構成され、開発支援装置１０であるコンピュータにインストールされ、そのＭＰＵにおいて、各処理部となって稼働する。
【００３３】
【発明の効果】
以上のように、この発明では、ラダーエディタ画面とニーモニックエディタ画面で同一プログラムを表示したり、編集する場合において、２つのエディタ画面の表示を関連づけ、一方のエディタ画面で特定の命令をカーソルで示せば、他方のエディタ画面でも対応する命令（関連する箇所を含む）を表示することができるので、プログラム開発の作業性が良好となる。
【図面の簡単な説明】
【図１】システム全体の一例を示す図である。
【図２】本発明に係る開発支援装置の内部構造の一例を示す図である。
【図３】本発明に係る開発支援装置の内部構造の一例を示す図である。
【図４】ＭＰＵの機能を説明するフローチャートである。
【図５】ＭＰＵの機能を説明するフローチャートである。
【図６】作用の一例を示す図である。
【図７】作用の一例を示す図である。
【符号の説明】
１  ＰＬＣ
１０  開発支援装置
１０ａ  ディスプレイ
１１  通信インタフェース
１２  ＭＰＵ
１３  メモリ
１４  入力装置インタフェース
１５  ディスプレイインタフェース
２０  ラダーエディタ
２１  ニーモニックエディタ
２２  同期制御部
Ｇ１  ラダーエディタ画面
Ｇ２  ニーモニックエディタ画面
Ｋ１，Ｋ２  カーソル
【図１】
0003997791.tif 000002
【図２】
0003997791.tif 000003
【図３】
0003997791.tif 000004
【図４】
0003997791.tif 000005
【図５】
0003997791.tif 000006
【図６】
0003997791.tif 000007
【図７】
0003997791.tif 000008