(57)【特許請求の範囲】
【請求項１】
制御命令の種別を示すプログラム種別コードを含む制御プログラムを記憶する制御プログラム記憶手段と、
前記制御プログラムの変数値を記憶する制御データ記憶手段と、
前記制御プログラム記憶手段に記憶された制御プログラムを実行する制御プログラム実行手段と、
前記制御プログラムによる制御動作及び変数値のモニタをモニタ範囲を指定して要求するモニタ要求手段と、
前記モニタ要求手段によるモニタ要求にしたがって、前記制御プログラム実行手段による前記制御プログラム実行時の制御データを蓄積する蓄積手段と、
前記蓄積手段により蓄積された制御データのうち、前記モニタ手段により指定したモニタ範囲の制御プログラムで使用される制御データを出力する出力手段と、
前記モニタ要求手段によるモニタ要求および前記出力手段による制御データの出力にともない、前記プログラム種別コードをもとに前記制御プログラム中の制御命令の種別を判別し、この判別した種別に従って前記制御プログラムの実行状態及び制御プログラム実行時の変数値、または制御プログラム実行後の変数値または制御プログラムが非実行時の変数値を選択してモニタを行うとともに、このモニタ結果である前記制御プログラムの実行状態及び変数値を表示するモニタ手段と
を備えたことを特徴とする制御システム。
【請求項２】
請求項１に記載の制御システムであって、
前記モニタ手段は、前記制御プログラムの種別を判別し、前記制御プログラム実行手段による前記制御プログラムの実行状態を監視し、前記判別したプログラム種別が、前記制御プログラム実行手段により常時実行される制御プログラムである場合には、前記制御プログラムの実行状態及び制御プログラム実行時の変数値をモニタし、前記判別したプログラム種別が、前記制御プログラム実行手段により常時実行手段により常時実行される制御プログラムでないプログラムである割込みプログラムや非実行状態の制御プログラムである場合には、前記制御プログラム実行後の変数値または制御プログラムが非実行時の変数値を選択してモニタを行うことを特徴とする制御システム。
【請求項３】
請求項１に記載の制御システムであって、
前記モニタ要求手段は、排他的に実行すべき複数のモニタ要求および同一プログラムに対して同時に実行すべきモニタ要求のいずれかを行い、
前記モニタ手段は、前記モニタ要求手段が排他的に実行すべき複数のモニタ要求を行った際に、それらのモニタ要求に処理優先度を付けることで順次処理し、前記モニタ要求手段が同一プログラムに対して同時に実行すべきモニタ要求を行った際に、各モニタ要求に対するモニタを同時に実行することを特徴とする制御システム。
【請求項４】
請求項１又は請求項２に記載の制御システムであって、
前記モニタ要求手段は、複数種類のモニタ要求を行い、
前記モニタ手段は、前記モニタ要求手段による複数種類のモニタ要求にしたがって複数種類のモニタを同一制御周期内に実行し、これらの各種モニタ結果を並列に表示することを特徴とする制御システム。
【請求項５】
請求項１又は請求項２に記載の制御システムであって、
前記モニタ要求手段は、複数種類のいずれかのモニタ要求を行い、
前記モニタ手段は、モニタ要求にしたがったモニタ方式の種類に従ってモニタ結果の表示方法を変更して表示することを特徴とする制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は鉄鋼、製紙プラントや自動車産業などの組立作業を含むＦＡ分野、化学プラントなどのＰＡ分野および上下水道システム他の公共システムなど、産業用システムの制御に広く使用されている制御システムに関する。
【０００２】
【従来の技術】
従来の制御システムのモニタ方式は、ユーザが指定したモニタ範囲において、制御プログラムの実行後に該制御プログラムで使用されている変数値を収集し、その値を制御プログラムと共に表示する方式が用いられる。
【０００３】
【発明が解決しようとする課題】
ただし、この方式では複数の処理過程をもつ制御プログラムが、実際に実行された各処理過程における変数値の各々をモニタすることはできないので、モニタ範囲内で同一の変数を繰り返し使用していたり、モニタ範囲の後で再度その変数を使用していた場合にはモニタ値に矛盾が生じたりする可能性があった。この問題を改善するために制御プログラムの各処理過程が実際に実行された時点での変数値をモニタできるように構成した制御システムも存在するが、それらの制御システムでも制御プログラム内で一時的に使用される変数すなわち入力変数及び出力変数以外の値のモニタについては完全に対応しきれていなかった。また、用途によって適切なモニタ方式を選択できないという問題があった。
【０００４】
本発明は前記課題に鑑みなされたもので、変数値の種別やプログラムの実行状態に応じて適切なモニタ方法を自動選択することが可能になる制御システムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
すなわち、本発明に係わる制御システムは、制御命令の種別を示すプログラム種別コードを含む制御プログラムを記憶する制御プログラム記憶手段と、制御プログラムの変数値を記憶する制御データ記憶手段と、制御プログラム記憶手段に記憶された制御プログラムを実行する制御プログラム実行手段と、制御プログラムによる制御動作及び変数値のモニタをモニタ範囲を指定して要求するモニタ要求手段とを備え、この要求にしたがって、制御プログラム実行手段による制御プログラム実行時の制御データを蓄積し、この蓄積された制御データのうち、モニタ手段により指定したモニタ範囲の制御プログラムで使用される制御データを出力し、モニタ要求手段によるモニタ要求および出力手段による制御データの出力にともない、プログラム種別コードをもとに制御プログラム中の制御命令の種別を判別し、この判別した種別に従って制御プログラムの実行状態及び制御プログラム実行時の変数値、または制御プログラム実行後の変数値または制御プログラムが非実行時の変数値を選択してモニタを行うとともに、このモニタ結果である制御プログラムの実行状態及び変数値を表示することを特徴とする。
【０００６】
つまり、本発明に係わる制御システムでは、制御命令の種別を示すプログラム種別コードを含む制御プログラムに対してモニタ要求手段によりモニタがモニタ範囲を指定して要求された際に、制御プログラム実行手段により制御プログラムが実行されると、この実行時の制御データを蓄積し、この蓄積された制御データのうち、モニタ範囲の制御プログラムで使用される制御データを出力し、モニタ要求および制御データの出力にともない、プログラム種別コードをもとに制御プログラム中の制御命令の種別を判別し、この判別した種別に従って制御プログラムの実行状態及び制御プログラム実行時の変数値、制御プログラム実行後の変数値または制御プログラムが非実行時の変数値が選択されてモニタされ、このモニタ結果である制御プログラムの実行状態及び変数値が表示されることになる。
【０００７】
【発明の実施の形態】
制御システムのモニタ方式は、制御プログラムの変数値を命令語処理装置（演算用の処理装置）から収集する方式と、データを格納するメモリから収集する方式の二つに分かれる。命令語処理装置から変数値を収集する方式は制御プログラム実行時の変数値をそのまま表示する方式であり、リアルタイムモニタと呼ぶこととする。つまりこの方式を用いると、制御プログラムの各過程が実行されるに従ってその都度使用されている変数が収集されてモニタ画面に順次更新されて表示される。
【０００８】
そして、メモリから変数値を収集する方法は２通りあり、一つは制御プログラムにおいて使用される変数値が静的に割り付けられた記憶領域内の値をモニタする方式であり、メモリモニタと呼ぶこととする。もう一つは制御プログラム中で一時的に使用される変数値をモニタする方式であり、テンポラリ変数モニタと呼ぶこととする。通常の制御システムが使用している変数モニタ方式はメモリモニタ方式であり、リアルタイムモニタ方式を採用している制御システムは少ない。しかし、制御プログラムをデバッグする場合などのように制御プログラムの各処理過程の実行時における変数を随時知る必要がある場合にはリアルタイムモニタ方式が適している。従来、一時的に使用される変数（以下、一時変数と称する）をモニタできる制御システムは存在しなかった。そして効果的なモニタを行うには、これらの３つのモニタ方式を状況に応じて切り替えることが望ましい。
【０００９】
以下、本発明の第１実施形態について図面を参照して説明する。
図１は、本発明の第１実施形態に係わる第１の制御システムの全体構成図である。
【００１０】
図１に示すように、この第１の制御システムは、制御装置１及びモニタ装置２がデータ転送媒体３を介して接続されており、相互にデータを転送できる構成となっている。
【００１１】
制御装置１は、例えばベルトコンベアーといった制御対象となるシステム（図示せず）に接続されており、制御システムの制御を行う。またモニタ装置２からの指示すなわちユーザによる操作に従って制御プログラムの実行を行うとともに制御プログラムの実行状態及び変数値のモニタを行う。
【００１２】
モニタ装置２は、ユーザにより制御装置１に対してモニタ範囲の指定およびモニタ開始の指示をすることが可能であり、また制御装置１によって送信されたモニタ結果データを受信して表示することが可能である。
【００１３】
図２は、前記第１実施形態に係わる第１の制御システムに備えられた制御装置１の構成を示す図である。
図２に示すように、この制御装置１は、制御装置１全体の制御を実行するＣＰＵ１１、制御装置１自体の制御プログラムを格納するプログラムメモリ１２、ワークメモリ１３、制御対象となるシステムに対する制御プログラムを実行するシーケンス演算プロセッサ１４、制御プログラムを格納する制御プログラムメモリ１５、制御プログラムに使用する変数値データを格納するデータメモリ１６、モニタ装置２とデータ転送媒体３を介して通信するための通信インタフェース１７および制御対象との入出力を行う入出力モジュール１８がシステムバス１９を介して相互に接続される。
【００１４】
図３は、前記第１実施形態に係わる第１の制御システムに備えられたモニタ装置２の構成を示す図である。
図３に示すように、このモニタ装置２はモニタ装置２全体の制御を実行するＣＰＵ２０１、モニタ装置２自体の制御プログラムを格納するプログラムメモリ２０２、ワークメモリ２０３、制御装置１に格納される制御プログラムと同一のプログラムを格納する制御プログラムメモリ２０４、変数値データを格納するデータメモリ２０５および通信インタフェース２０６がシステムバス２０７を介して相互に接続されるとともに、モニタ範囲を決定したり変数値データを指定したりするためのキーボード２０８がＣＰＵ２０１とキーボード２０８を接続するための入出力インタフェース２０９を介して、また、プログラムリストやデータを表示する表示器２１０が、表示器２１０をＣＰＵ２０１と接続するための表示インタフェース２１１を介してシステムバス２０７に接続される。
【００１５】
通信インタフェース２０６は、データ転送媒体３を介して制御装置１とデータ通信する。
【００１６】
このモニタ装置２は、制御装置１から送信された蓄積データを最新のデータとして表示できるように構成されるもので、制御プログラムの実行結果を正確に表示することが可能である。
【００１７】
図４は、前記第１実施形態に係わる第１の制御システムに備えられた制御装置１内のシーケンス演算プロセッサ１４の構成を示す図である。
このシーケンス演算プロセッサ１４は、制御プログラム実行用の専用回路であり、これと同等の論理をソフトウェアで実現してＣＰＵ１１で実行しても効果は同様である。
【００１８】
制御プログラムはシーケンス命令と呼ばれる命令で記述され、制御装置１内の制御プログラムメモリ１５に格納されて、システムバス１９を介して制御プログラムメモリ１５から読み出されてシーケンス演算プロセッサ１４により実行される。
【００１９】
図４に示すように、シーケンス演算プロセッサ１４では、リアルタイムモニタ処理に用いられるシーケンス演算回路４０１を中心に、内部レジスタ４０２及びデータ蓄積制御回路４０３が接続され、このデータ蓄積制御回路４０３には、ステップモニタ指定フラグ４０４、蓄積データカウンタ４０５及びデータ蓄積メモリ４０６がそれぞれ接続される。加えて、データ蓄積制御回路４０３には比較回路４０７が接続される。
【００２０】
シーケンス演算回路４０１は、制御装置１のＣＰＵ１１とデータをやりとりするためにシステムバス１９に接続される。
【００２１】
データ蓄積制御回路４０３は、ＣＰＵ１１に対して割り込み信号を送信するためにシステムバス１９に接続される。
【００２２】
比較回路４０７には、シーケンス命令ポインタ４０８、シーケンス命令レジスタ４０９、オペランドデータレジスタ４１０、モニタ開始アドレスレジスタ４１１、モニタ終了アドレスレジスタ４１２およびモニタ命令アドレスレジスタ４１３がそれぞれ接続される。
【００２３】
内部レジスタ４０２は、シーケンス演算実行に必要なデータを一時的に格納しておくレジスタである。
【００２４】
データ蓄積制御回路４０３は、データ蓄積の開始および停止のタイミングを制御したり、蓄積すべきデータの形を実行中の命令種別によって判定したりするなどの動作を行い、データ蓄積動作全体の制御を行う。また、必要時にはシステムバス１９を介してＣＰＵ１１に割り込み信号を送信することが可能である。
【００２５】
ステップモニタ指定フラグ４０４は、制御プログラムが１ステップ実行される毎に該制御プログラムの実行を中断して、モニタ装置２との同期を図るためのフラグである。
【００２６】
蓄積データカウンタ４０５は、蓄積されたデータ数をカウントするカウンタであり、初期状態の値は“０”である。
【００２７】
データ蓄積メモリ４０６は、モニタ処理により取り出されたモニタ範囲のデータ蓄積用のバッファとして使用されるメモリであり、ビットデータ、ワードデータおよび状態変化データなどを格納する。
【００２８】
比較回路４０７は、モニタ開始アドレスレジスタ４１１及びモニタ終了アドレスレジスタ４１２の内容と、シーケンス命令ポインタ４０８、シーケンス命令レジスタ４０９およびオペランドデータレジスタ４１０の内容とを比較して双方の内容が一致した場合に、その旨を伝える信号をデータ蓄積制御回路４０３に出力する回路である。
【００２９】
シーケンス命令ポインタ４０８は、実行する制御プログラムにおいて使用される命令が格納されているアドレスを指定するためのレジスタである。
【００３０】
シーケンス命令レジスタ４０９は、現在実行中のシーケンス命令のコードを格納するレジスタである。
【００３１】
オペランドデータレジスタ４１０は、シーケンス命令の演算対象となるデータを格納するレジスタである。
【００３２】
モニタ開始アドレスレジスタ４１１は、モニタ装置２から指定されたモニタ開始アドレスすなわちモニタ範囲の先頭アドレスを格納するレジスタである。
【００３３】
モニタ終了アドレスレジスタ４１２は、モニタ装置２から指定されたモニタ終了アドレスすなわちモニタ範囲の末尾アドレスを格納するレジスタである。
【００３４】
モニタ命令アドレスレジスタ４１３は、モニタ対象となる命令が格納されているアドレスを格納するレジスタである。
【００３５】
次に、前記構成による第１の制御システムにおけるモニタ処理について説明する。
まず、第１の制御システムによるリアルタイムモニタ処理について説明する。
図５は、前記第１実施形態に係わる第１の制御システムに備えられたモニタ装置２からのリアルタイムモニタ要求のための伝送テキストを示す図である。
【００３６】
図６は、前記第１実施形態に係わる第１の制御システムによるリアルタイムモニタ処理において、初期状態のモニタ画面表示例を示す図である。
【００３７】
図７は、前記第１実施形態に係わる第１の制御システムによるリアルタイムモニタ処理を示すフローチャートである。
【００３８】
図８は、前記第１実施形態に係わる第１の制御システムによるリアルタイムモニタ処理におけるモニタ画面表示例を示す図である。
【００３９】
図５に示すように、この伝送テキストは、ヘッダ、制御用コマンド、プログラム種別、プログラムナンバー、プログラムモニタ開始アドレス、モニタ終了アドレス及びトレーラで構成される。
【００４０】
この第１の制御システムにおいて、リアルタイムモニタ処理すなわち制御プログラムの実行時における実行状態及び変数値のモニタを行う際には、ユーザがモニタ装置２のキーボード２０８よりモニタ範囲すなわちモニタ開始アドレス及びモニタ終了アドレスを入力すると、これらのアドレスが含まれた伝送テキストによるモニタ要求信号がモニタ装置２の通信インタフェース２０６よりデータ転送媒体３を介して制御装置１に送信される。
【００４１】
次に、モニタ要求信号が制御装置１の通信インタフェース１７により受信されると、この受信されたモニタ要求信号に含まれるモニタ開始アドレス及びモニタ終了アドレスが、シーケンス演算プロセッサ１４内のモニタ開始アドレスレジスタ４１１およびモニタ終了アドレスレジスタ４１２にそれぞれセットされる（ステップＡ１）。
【００４２】
すると、入力されたモニタ開始アドレス及びモニタ終了アドレスにより、モニタ開始から終了までの処理過程が判別されて、ＣＰＵ１１によりそれらの各処理過程に対応したイメージデータが生成され、そのイメージデータに基づいて、図６に示すようなモニタ初期画面がモニタ装置２の表示器２１０に表示される（ステップＡ２）。
【００４３】
図６において、ｙ１からｙ６までの各記号は、モニタ指定範囲の制御プログラムにおける各処理を示していて、各記号を結ぶ線分は隣接する各処理において前処理と後処理との関連を示している。また並列になっているｙ３とｙ４についてはそれぞれの出力の論理和が出力となる。つまりこの画面はｙ１からｙ６までの処理がどのように実行されたかを確認するための画面である。
【００４４】
また、同じく図６におけるｆ１からｆ３までの各記号は、ｆ１の出力により起動される関数ｆ２とその関数ｆ２の出力で制御されるｆ３の動作を示している。「ｆ２１→ｆ２２」の処理は「Ｄ＝（Ａ＋Ｂ）／Ｃ」の演算処理である。
【００４５】
その後、ユーザによりモニタ装置２から制御プログラムの実行が指示されると、制御装置１内の制御プログラムメモリ１５に格納されている制御プログラムが読み出されて、制御プログラムの実行が開始される（ステップＡ３）。
【００４６】
そして、指定されたモニタ対象範囲の制御プログラムが実行される際に、シーケンス演算プロセッサ内の比較回路４０７により、シーケンス命令ポインタ４０８の値すなわち現在実行中の制御プログラムのアドレスと、モニタ範囲の先頭すなわちモニタ開始アドレスレジスタ４１１に格納されるモニタ開始アドレスとが比較されて、双方が一致しているかどうかの判断がなされる（ステップＡ４，Ａ５）。
【００４７】
そして双方の一致が検出されると、シーケンス命令ポインタ４０８の値とモニタ開始アドレスレジスタ４１１の値との一致を示す一致信号が比較回路４０７からデータ蓄積回路に出力されて、データ蓄積制御回路４０３によりシステムバスを介してデータメモリへのアクセスがなされ、予め指定されたモニタ範囲における変数値データが順次データ蓄積メモリ４０６に格納される（ステップＡ６）。
【００４８】
また、制御プログラムの１命令分の変数値データがデータ蓄積メモリ４０６に格納される毎に蓄積データカウンタ４０５の値が＋１されて更新される。
【００４９】
同時に、モニタ範囲における制御プログラムの各処理過程が実行されるに従って、その各処理過程が正常に動作したことが確認されると、ｙ１からｙ６までの各記号がオン状態を示す記号（例えば太線による記号）に順次置き換えられ、また、隣接している各処理過程間の制御が正常に行われたと確認されると、各記号を結ぶ線分がオン状態を示す線分（例えば太線）に順次置き換えられて、モニタ装置２の表示器２１０に随時更新されて表示される（ステップＡ７）。
【００５０】
そして、予め設定されたモニタ範囲の末尾すなわちシーケンス命令ポインタ４０８の値とモニタ終了アドレスレジスタ４１２に格納されたモニタ終了アドレスとが比較回路４０７により比較されて、双方が一致したと判断される、もしくは、蓄積データカウンタ４０５でカウントされるデータ数が予め設定された値に達したと判断されると、比較回路４０７による一致信号または蓄積データカウンタ４０５による規定値到達信号がデータ蓄積制御回路４０３を介してＣＰＵ１１に送信されて、変数値データのデータ蓄積メモリ４０６への格納及びモニタ終了処理が要求される（ステップＡ８）。すると、モニタ装置２の表示器２１０に表示される画面は図８のようになる。
【００５１】
そして、モニタ処理が終了すると蓄積データカウンタ４０５の値が“０”にクリアされる。
【００５２】
つまり、シーケンス演算プロセッサ１４は制御装置１の入出力モジュール１８を介して外部の制御対象となるシステムの状態が入力された後、制御プログラムメモリ１５から制御プログラムを読み出し、この制御プログラムを必要に応じてデータメモリ１６内のデータをアクセスしながら実行し、モニタ結果を入出力モジュール１８経由でモニタ装置２に出力する。
【００５３】
以上のように、リアルタイムモニタ処理によりプログラム実行と並行して変数値データを収集する事によって、モニタ範囲で使用されている変数値データを使用された順に収集することが可能になる。
【００５４】
次に、第１の制御システムによるメモリモニタ処理について説明する。
図９は、前記第１実施形態に係わる第１の制御システムに備えられたモニタ装置２からのメモリモニタ要求のための伝送テキストを示す図である。
【００５５】
図１０は、前記第１実施形態に係わる第１の制御システムによるメモリモニタ処理における実行状態のモニタ画面表示例を示す図である。
【００５６】
図１１は、前記第１実施形態に係わる第１の制御システムによるメモリモニタ処理における変数値のモニタ画面表示例を示す図である。
【００５７】
このメモリモニタ処理は、制御プログラムで使用される変数値が格納されているメモリアドレスまたは変数名を指定して、その内容を収集するモニタ方式であり、収集された変数値から制御プログラムの各処理が正常に行われたかどうかを判断してその結果をイメージ画面として表示する。このメモリモニタ処理はリアルタイムモニタ処理と比較して、変数値はモニタできるが、実行状態つまり命令の出力をモニタすることはできないので、図８で示したように各処理間のシグナルフローを表示することはできない。また、このメモリモニタ処理は制御プログラム実行後の変数値だけをモニタするので、実際に制御プログラムの各処理が実行された時点とは状態が変化している場合もあり、モニタ画面に矛盾が生じることもあるので、正確なデバッグには使用できない。ただし、シーケンス演算プロセッサ１４内のシーケンス演算回路４０１がなくても制御プログラムのモニタ処理が可能なので汎用性があり、単に制御プログラム実行後の変数だけをモニタしたい場合には有効である。
【００５８】
図９に示すように、この伝送テキストは、ヘッダ、制御用コマンド、プログラム種別、プログラムナンバー、各変数値のデータ型とアドレスとデータサイズ及びトレーラで構成されている。
【００５９】
この第1の制御システムにおいてメモリモニタ処理を行う場合、つまり制御プログラム実行後の変数値をモニタする場合には、まず図９に示す伝送テキストによるモニタ要求信号がモニタ装置２から制御装置１へ送信される。また、制御プログラムが非実行状態の際の変数値をモニタする場合にもモニタ要求信号がモニタ装置２から制御装置１に送信される。
【００６０】
そして、制御プログラムが実行されて終了した後に、ユーザにより、モニタ装置２に表示させたい変数値が格納されているデータメモリ１６上のアドレスまたは表示させたい変数名を指定する。すると、データメモリ１６に対してアクセスがなされて、変数値がＣＰＵ１１に読み出される。そして、この読み出された変数値から制御プログラムの各処理が行われたどうかが判断されて、各処理が実行されたと判断された場合には、図１０に示すように、各処理のオン状態を示す記号を含んだイメージ画面がモニタ装置２に送信されてメモリモニタ結果として表示器２１０に表示される。これにより、ユーザはこの表示された変数値により各種処理が正常に行われているかどうかの判断をする。
【００６１】
一方、メモリモニタ処理によるモニタ結果を図１０のようなイメージ画面ではなく、変数値だけを表示器２１０に表示させたい場合は、メモリモニタ処理により変数モニタすなわちデータメモリ１６より読み出した変数値のみを表示するモニタ方式を用いてもよい。
【００６２】
この変数モニタ処理の表示例を図１１に示す。変数モニタ処理は前述のメモリモニタ処理の機能そのものであり、図９に示す伝送テキストによるモニタ要求信号がモニタ装置２から制御装置１に入力されることによりモニタデータが収集される。
【００６３】
また、対象とする制御プログラムに対してリアルタイムモニタ処理の要求がなされた場合でも、その制御プログラムが非実行状態であった場合には、制御装置１によりメモリモニタ要求信号に変換され、データメモリ１６にアクセスがなされることでモニタすべきプログラム範囲で使用されている変数値が収集され、それらの変数データがメモリモニタ要求時の応答データとしてモニタ装置２へ送信されて、表示器２１０に表示される。
【００６４】
したがって、前記構成の第１の制御システムによれば、リアルタイムモニタ処理すなわち制御プログラムの実行状態のモニタを行う場合、ユーザにより制御プログラムにおいてモニタしたい処理過程が指定されると、その処理過程に対応した初期モニタ画面がモニタ装置２に表示され、制御プログラムの実行が開始されると、各処理が実行されるごとに各処理の実行状態が判断されるともに、その実行時における変数値がデータメモリ１６から読み出されて、モニタ装置２に表示される。また、変数値のみのモニタつまり変数モニタ処理を行う場合には、指定された変数値がデータメモリ１６へのアクセスにより読み出されてモニタ装置２に表示されるので、制御プログラムの各処理の実行時における動作状態及び完了時の変数値のモニタリングが可能となる。
【００６５】
なお、この第1の制御システムは、リアルタイムモニタ処理の実行時においてデータメモリ１６から随時読み出された変数値データを図8に示すモニタ画面上に重ねて表示させることも可能である。この場合、制御プログラムの処理が進行するに従って変数値が変化した場合には表示画面上の変数値も随時更新されて表示されることになる。
【００６６】
次に本発明の第２実施形態について説明する。
この第２実施形態は、第１実施形態に係わる第１の制御システムにおいて、テンポラリ変数つまり制御プログラムで一時的に使用される変数のモニタを可能にしたものであり、この第２実施形態に係わる第２の制御システムの全体構成は図１と同様であり、制御システム内の制御装置１の構成及びモニタ装置２の構成は図２〜図４と同様である。
【００６７】
このテンポラリ変数は、制御プログラムの各過程つまりプログラム単位が実行される時点のみに存在し、そのプログラム単位の実行完了後には、変数を格納するデータメモリ１６内のテンポラリ変数領域が他のプログラムのテンポラリ変数領域として使用されるので内容が変更されてしまう。したがってモニタ範囲の制御プログラムが全て実行された後でモニタを行ってもテンポラリ変数の値を読み出すことは出来ない。
【００６８】
図１２は、第２実施形態に係わる第２の制御システムの制御装置１で実行されるオブジェクトプログラムの命令語形式を示す図である。
【００６９】
図１３は、前記第２実施形態に係わる第２の制御システムの制御装置１内におけるデータメモリ１６の割り付け状態を示す図である。
【００７０】
図１２に示すように、制御装置１で実行されるオブジェクトプログラムの命令語は、命令語コード、データ種別コードおよび変数アドレスで構成される。
【００７１】
この命令語内のデータ種別コードはデータがローカル変数、グローバル変数またはテンポラリ変数のいずれかに対応するのかを示すコードである。
【００７２】
図１３に示すように、制御装置１内のデータメモリ１６では、テンポラリ変数を格納するテンポラリ変数領域を複数のプログラム共通でもつものとし、このテンポラリ変数領域にスタック型式でテンポラリ変数が割り付けられる構成となっている。命令語の形式では、テンポラリ変数のアドレスとしてスタックベースからのポインタ値が使用される。したがって、メモリモニタ要求や変数モニタ要求としてテンポラリ変数が指定される場合つまり命令語のデータ種別コードにテンポラリ変数を示すコードが設定されている場合には、対象となる制御プログラムの各過程が実行される度に図１２に示す命令語内のデータ種別コードが参照されて、テンポラリ変数のモニタが要求されているかが判断される。ここでテンポラリ変数のモニタが要求されていると判断されると、データメモリ１６内のテンポラリ変数領域から要求されたテンポラリ変数の変数値が読み出されてモニタ装置２へ送信されると、変数値データがテンポラリ変数モニタ結果としてモニタ装置２の表示器２１０に表示される。
【００７３】
したがって、前記構成の第２の制御システムによれば、ユーザによって変数モニタ処理が要求された場合には、制御プログラムの各過程が実行される度に命令語内のデータ種別コードから変数の種類が自動的に判別されて、指定された変数がテンポラリ変数であった場合には、その時点でデータメモリ１６内のテンポラリ変数領域から該テンポラリ変数の変数値が読み出されてモニタ装置２に表示されるので、テンポラリ変数のモニタリングが可能となる。
【００７４】
次に本発明の第３実施形態について説明する。
この第３実施形態は、第１実施形態に係わる第１の制御システムにおいて実行される制御プログラムのオブジェクトプログラムにおける制御命令の種類に応じてモニタ方法の変更を可能にしたものであり、この第３実施形態に係わる第３の制御システムの全体構成は図１と同様であり、制御システム内の制御装置１の構成及びモニタ装置２の構成は図２〜図４と同様である。
【００７５】
図１４は、第３実施形態に係わる第３の制御システムで実行される制御プログラムのオブジェクトプログラムの構成を示す図である。
【００７６】
図１４に示すように、制御プログラムメモリ１５に記憶されている制御プログラムの各プログラムにおけるコードの先頭にプログラム種別を示すプログラム種別コードがあり、モニタ装置２はこのプログラム種別コードから制御プログラム中の制御命令の種別を判別することが可能である。
【００７７】
この第１の制御システムでは制御プログラムのプログラミングにファンクションブロック及び関数並びにユーザ定義ファンクションブロック及びユーザ関数を使用できるように構成されている。ファンクションブロック及びユーザ定義ファンクションブロックにはそれらの内部に静的変数を含むことができる。一方、関数及びユーザ関数はテンポラリ変数だけを含むことができる。この静的変数及びテンポラリ変数ではメモリモニタ処理及びテンポラリ変数モニタ処理がそれぞれ適しているので随時切り替える必要がある。
【００７８】
そこで、メモリモニタ処理もしくはメモリモニタの変数値のみのモニタである変数モニタ処理が要求された場合には、制御プログラムが動作してデータメモリ１６内に対して指定された変数のアクセスがなされるときに、図１４に示すオブジェクトプログラムに含まれているプログラム種別コードにより、制御命令がファンクションブロック及び関数並びにユーザ定義ファンクションブロック及びユーザ関数内部に含まれている演算命令であるかどうかの判断がなされ、さらにその演算命令の種別がファンクションブロック及びユーザ定義ファンクションブロックによる演算命令なのか、関数及びユーザ関数による演算命令のいずれに属しているかが判断される。
【００７９】
この結果、種別がファンクションブロック及びユーザ定義ファンクションブロックであった場合には、メモリモニタ処理によりデータメモリ１６から変数が読み出されてモニタ装置２に送信される。そして、その送信された変数値データがモニタ結果としてモニタ装置２の表示器２１０に表示される。
【００８０】
一方、判別された種別が関数及びユーザ関数であった場合には、テンポラリ変数モニタ処理が実行されて、データメモリ１６内のテンポラリ変数領域よりテンポラリ変数が読み出されてモニタ装置２に送信される。そして、その送信された変数データがモニタ装置２の表示器２１０に表示される。
【００８１】
したがって、前記構成の第３の制御システムによれば、ファンクションブロック又は関数内部の変数をモニタする場合に、オブジェクトプログラムに含まれているプログラム種別コードから、種別がファンクションブロック及びユーザ定義ファンクションブロックに係わる命令なのか、関数及びユーザ関数に係わる命令なのかが判断され、ファンクションブロック及びユーザ定義ファンクションブロックであった場合には、メモリモニタ処理が行われ、関数及びユーザ関数であった場合には、テンポラリ変数モニタ処理が実行されるので、ユーザは変数の種別を意識することなく最適なモニタ結果を得ることが可能となる。
【００８２】
次に、本発明の第４実施形態について説明する。
この第４実施形態は、第１実施形態に係わる第１の制御システムにおいて実行される制御プログラムのオブジェクトプログラムの種類に応じてモニタ方法の変更を可能にしたものであり、この第４実施形態に係わる第４の制御システムの全体構成は図１と同様であり、制御システム内の制御装置１の構成及びモニタ装置２の構成は図２〜図４と同様である。
【００８３】
この第４の制御システムではプログラムの種類として定周期実行されるメインプログラムの他に、イベント発生時にだけ実行される割り込み処理プログラムを使用することができる。また、各プログラムはそれぞれ実行制御が可能であり、他のプログラムから実行や停止が可能である。この場合、割り込みプログラムは常に実行されているとは限らないので、リアルタイムモニタ処理を行った場合には、モニタ結果がすぐにモニタ装置２に表示されないことがある。つまり割り込み処理プログラムに対してリアルタイムモニタ処理が実行されたときに、該割り込み処理プログラムが実行されていない時にはモニタ装置２のモニタ結果表示画面は何ら変化しないことになるので、モニタ画面が有効活用されない。
【００８４】
そこで、まず、ユーザにより特定の制御プログラムのリアルタイムモニタ処理が要求されると共に、その制御プログラムの実行がなされたら、モニタ装置２により制御装置１からのモニタ結果のデータが一定時間内にモニタ装置２に送信されたかどうかの判断がなされる。そして、モニタ装置２によりモニタデータが受信されていないと判断された場合には、そのモニタ装置２によりモニタ対象である制御プログラムが別のメインプログラムに対する割り込みプログラムであるかどうかの判断がなされ、割り込みプログラムであると判断された場合には、モニタ装置２から自動的にメモリモニタ処理を要求する信号が制御装置１に送信されて、制御装置１によりその信号が受信されると、割り込みプログラムに対してメモリモニタ処理が実行される。これにより、割り込みプログラムの前回の実行時における変数値が取得され、この取得された変数値データがモニタ装置２に送信されて、このモニタ装置２の表示器２１０においてモニタ画面上に変数が表示される。
【００８５】
また、リアルタイムモニタ処理が要求されて一定時間モニタ結果が得られない場合に、モニタ対象のプログラムが割り込みプログラムでないと判断された場合においても、現時点でその制御プログラムが実行前であると判断された場合には、モニタ装置２側で自動的にリアルタイムモニタ要求に代わってメモリモニタを要求する信号が制御装置１に送信され、制御装置１側でそのメモリモニタ要求信号が受信されると、該制御プログラムに対してメモリモニタ処理が実行される。これにより、そのモニタ結果である変数つまり該制御プログラム実行前の変数値がデータメモリ１６から読み出されて表示器２１０のモニタ結果画面上に表示される。
【００８６】
そして、割り込み処理プログラムの動作が開始された場合には、当初指定されたリアルタイムモニタ処理に変換する旨を要求する信号がモニタ装置２から制御装置１に出力されて、該リアルタイムモニタ処理が実行されると、そのモニタ結果が順次モニタ装置２に送信されて、表示器２１０のモニタ結果表示画面の表示状態及び変数値が順次更新される。
【００８７】
したがって、前記構成の第４の制御システムによれば、割り込み処理プログラムに対するリアルタイムモニタ処理が要求されて一定時間が経過してもモニタ結果表示画面が変化しない場合、つまりそれらの制御プログラムがまだ実行されずにモニタ処理が進行されない場合には、モニタ装置２から制御装置１にメモリモニタ処理を行うよう要求する信号が送信されて、該割り込みプログラムの前回の実行時における変数値データが読み出されてモニタ装置２に表示され、また、割り込みプログラム以外のプログラムに対するリアルタイムモニタ処理が要求された場合に、一定時間が経過してもモニタ結果表示画面が変化しない場合、つまりそれらのプログラムがまだ実行されていない場合には、同じくモニタ装置２から制御装置１にメモリモニタを要求する信号が出力されて、該割り込みプログラムの前回の実行時におけるモニタ結果が読み出されて、モニタ装置２に表示されるので、制御プログラムの種類に合わせてモニタ方式を自動的に選択させることが可能になり、モニタ操作者の負担を軽減して目的に沿ったモニタリングを実行することが可能となる。
【００８８】
次に本発明の第５実施形態について説明する。
この第５実施形態は、第１実施形態に係わる第１の制御システムにおいて複数のモニタ装置２からのモニタ要求がなされた場合でも各モニタ処理を行うことを可能にしたものであり、この第５実施形態に係わる第５の制御システムの全体構成は図１と同様であり、この制御システム内の制御装置１の構成及びモニタ装置２の構成は図２〜図４と同様である。
【００８９】
１つの制御装置１に対して複数のモニタ装置２から重複してモニタ要求信号が出力された場合で、例えば双方のモニタ要求信号により要求されるモニタがリアルタイムモニタ処理である場合には制御装置１でそれぞれのモニタ対象の制御プログラムが並列に動作させられれば問題ないが、テンポラリ変数モニタのように複数の制御プログラムで共有される領域、例えば制御装置１のデータメモリ１６内のテンポラリ変数領域に対して異なる制御プログラムに対するテンポラリ変数モニタがそれぞれ要求された場合には、各モニタ装置２からモニタ要求された制御プログラムの実行に同期したテンポラリ変数モニタが必要となる。また、モニタ装置２では、ある制御プログラムのリアルタイムモニタ画面を見ながら、変数モニタ画面を同時に開いてその他の変数値を確認したい場合がある。このような場合にはリアルタイムモニタ要求されるの制御プログラム実行に同期して変数モニタのデータ収集を実行させて変数値を表示させる必要がある。
【００９０】
例えば、第１のモニタ装置２から制御装置１に対して第１の制御プログラムにおけるテンポラリ変数モニタ処理が要求されると同時に、第２のモニタ装置２から制御装置１に対して第２の制御プログラムにおけるテンポラリ変数モニタ処理が要求された場合には、これらの２つの制御プログラムが同時に実行されないように、ユーザによる任意、または制御装置１により自動的に実行の順序が設定される。そして、順序付けによる第１の制御プログラムの実行が開始されるともに、第１のモニタ装置２から要求されたテンポラリ変数モニタ処理が実行されて、データメモリ１６のテンポラリ変数領域によりテンポラリ変数の変数値が読み出されて、第１のモニタ装置２にモニタ結果が送信されて表示器２１０に表示される。そして制御装置１により第１の制御プログラムの実行が終了したかどうかの判断がなされ、終了したと判断された場合には、順序付けがなされた第２の制御プログラムの実行が開始されて、第２のモニタ装置２から要求されているテンポラリ変数モニタ処理が実行されて、データメモリ１６のテンポラリ変数領域によりテンポラリ変数の変数値が読み出されて、第２のモニタ装置２にモニタ結果が送信されて表示器２１０に表示される。これによりデータメモリ１６内に１つしかないテンポラリ変数領域に対する複数のモニタ要求がなされても互いに干渉することなくモニタリングが可能となる。
【００９１】
また、同一の制御プログラムに対して第１のモニタ装置２からリアルタイムモニタ処理の要求がなされると同時に第２のモニタ装置２からメモリモニタ処理の要求がなされている場合には、該制御プログラムの実行が終了した時点で、その制御プログラムでリアルタイムモニタ用のデータ収集が実行されたか、またその制御プログラムで使用されている変数に対してメモリモニタ処理の要求あるいはテンポラリ変数モニタ処理の要求がなされているかどうかが判断され、その要求がなされていると判断された場合は、変数モニタ処理あるいはテンポラリ変数モニタ処理が実行されて、そのモニタ結果が、モニタ要求元のモニタ装置２に送信されて、モニタ結果画面上に表示される。
【００９２】
したがって、前記構成の第５の制御システムによれば、第１のモニタ装置２から制御装置１に対して第１の制御プログラムにおけるテンポラリ変数モニタ処理が要求されると同時に、第２のモニタ装置２から制御装置１に対して第２の制御プログラムにおけるテンポラリ変数モニタ処理が要求された場合には、第１の制御プログラムの実行が開始されるともに、第１のモニタ装置２から要求されているテンポラリ変数モニタ処理が実行された後で第２の制御プログラムの実行が開始されて、第２のモニタ装置２から要求されているテンポラリ変数モニタ処理が実行される。また、同一の制御プログラムに対して第１のモニタ装置２からリアルタイムモニタ処理の要求がなされると同時に第２のモニタ装置２からメモリモニタ処理の要求がなされている場合においては、該制御プログラムの実行が終了した時点で、その制御プログラムに対してメモリモニタ処理の要求あるいはテンポラリ変数モニタ処理の要求がなされているかどうかが判断され、その要求がなされていると判断された場合は、メモリモニタ処理あるいはテンポラリ変数モニタ処理が実行されるので、複数のテンポラリ変数モニタ処理の要求に対する変数のモニタ及びリアルタイムモニタ画面に同期した変数のモニタが可能となり、複数のモニタ装置２から要求されたモニタリングを実行することが可能になる。
【００９３】
次に本発明の第６実施形態について説明する。
この第６実施形態は、第１実施形態に係わる制御システムにおいて複数回のモニタが実行された際に、それぞれのモニタ結果を並列に表示させる機能を備えたものであり、この第６実施形態に係わる第６の制御システムの全体構成は図１と同様であり、制御システム内の制御装置１の構成及びモニタ装置２の構成は図２〜図４と同様である。
【００９４】
制御プログラムのモニタに関して、その制御プログラムの実行時の変数値及び実行完了後の変数値の両方を表示させたい場合には、制御プログラムに対してリアルタイムモニタ処理の要求とメモリモニタ処理の要求の両方をモニタ装置２により指定する。そして制御プログラムが実行されるとともにリアルタイムモニタ処理が実行されるが、このとき任意の時点においての変数値を読み出してモニタ装置２に表示させたい場合は、モニタ装置２より変数値のキャプチャが指示されることにより、その時点での変数値が別途読み出されて要求元のモニタ装置２に送信されて、表示器２１０に表示される。そして、制御プログラムの実行完了後には要求されたメモリモニタ処理が実行されて、制御プログラム実行後における変数値が読み出されて、要求元のモニタ装置２に送信されて、表示された制御プログラム実行時の変数値ともに表示器２１０に表示される。
【００９５】
したがって、前記構成の第６の制御システムによれば、制御プログラムの実行時の変数値及び実行完了後の変数値の両方を表示させたい場合には、任意の時点において変数値のキャプチャが指示されることにより、制御プログラムの実行時における任意の時点での変数値が別途読み出されて要求元のモニタ装置２に送信されて、表示器２１０に表示され、制御プログラムの実行完了後には要求されたメモリモニタが実行されて、制御プログラム実行後における変数値が読み出されるので、制御プログラムの実行時の変数値及び実行完了後の変数値との比較が容易になる。
【００９６】
次に本発明の第７実施形態について説明する。
この第７実施形態は、第１実施形態に係わる制御システムにおいて複数回のモニタが実行された際に、それぞれのモニタ方法に応じて変数値の表示を区別する機能を備えたものであり、この第７実施形態に係わる第７の制御システムの全体構成は図１と同様であり、制御システム内の制御装置１の構成及びモニタ装置２の構成は図２〜図４と同様である。
【００９７】
これまで説明してきたようにモニタ方式にはリアルタイムモニタやメモリモニタそれにテンポラリ変数モニタなどの種類がある。本発明の制御システムではそれらを組み合わせて使用することがあるので、複数のモニタが要求された場合に、それぞれ要求されたモニタのモニタ方法が異なっている場合などは、モニタ装置２に表示された変数値がどのようなモニタ方法で収集されたものかを明確にしておくことが望ましい。そこで、モニタ方式によって変数値の表示色などを変更する機能を設ける。
【００９８】
例えば、モニタが実行された際に、リアルタイムモニタ処理により随時読み出された変数値には赤、メモリモニタ処理により読み出された変数値には青、そしてテンポラリ変数モニタ処理により読み出された変数値には緑というように色が区別されてモニタ装置２の表示器２１０に表示させる。
【００９９】
つまり、非実行プログラムのモニタが行われて、変数値の表示色が青である場合には、このプログラムは現在実行されておらず、静的に変数値がモニタされていることが判別できる。また、メモリモニタが指定されている際は、静的変数をモニタする場合とテンポラリ変数をモニタする場合があるが、出力結果を同じく色により区別すれば、変数の種類を認識することが可能になる。
【０１００】
したがって、前記構成の第７の制御システムによれば、リアルタイムモニタにより随時読み出された変数値には赤、メモリモニタにより取り出された変数値には青、そしてテンポラリ変数モニタにより取り出された変数値には緑というように色が区別されてモニタ装置２の表示器２１０に表示されるので、複数種類のモニタ方法により変数値のモニタが実行された場合でも、どのモニタ方法により読み出された変数値なのかをユーザ側で識別することが容易になる。
【０１０１】
【発明の効果】
以上のように、本発明の制御システムによれば、制御命令の種別を示すプログラム種別コードを含む制御プログラムに対してモニタ要求手段によりモニタがモニタ範囲を指定して要求された際に、制御プログラム実行手段により制御プログラムが実行されると、この実行時の制御データを蓄積し、この蓄積された制御データのうち、モニタ範囲の制御プログラムで使用される制御データを出力し、モニタ要求および制御データの出力にともない、プログラム種別コードをもとに制御プログラム中の制御命令の種別を判別し、この判別した種別に従って制御プログラムの実行状態及び制御プログラム実行時の変数値、制御プログラム実行後の変数値または制御プログラムが非実行時の変数値が選択されてモニタされ、このモニタ結果である制御プログラムの実行状態及び変数値が表示されるので、変数値の種別やプログラムの実行状態に応じて適切なモニタ方法を自動選択することが可能になる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係わる第１の制御システムの全体構成図。
【図２】前記第１実施形態に係わる第１の制御システムに備えられた制御装置の構成を示す図。
【図３】前記第１実施形態に係わる第１の制御システムに備えられたモニタ装置の構成を示す図。
【図４】前記第１実施形態に係わる第１の制御システムに備えられた制御装置内のシーケンス演算プロセッサの構成を示す図。
【図５】前記第１実施形態に係わる第１の制御システムに備えられたモニタ装置からのリアルタイムモニタ要求のための伝送テキストを示す図。
【図６】前記第１実施形態に係わる第１の制御システムによるリアルタイムモニタ処理において、初期状態のモニタ画面表示例を示す図。
【図７】前記第１実施形態に係わる第１の制御システムによるリアルタイムモニタ処理を示すフローチャート。
【図８】前記第１実施形態に係わる第１の制御システムによるリアルタイムモニタ処理におけるモニタ画面表示例を示す図。
【図９】前記第１実施形態に係わる第１の制御システムに備えられたモニタ装置からのメモリモニタ要求のための伝送テキストを示す図。
【図１０】前記第１実施形態に係わる第１の制御システムによるメモリモニタ処理における実行状態のモニタ画面表示例を示す図。
【図１１】前記第１実施形態に係わる第１の制御システムによるメモリモニタ処理における変数値のモニタ画面表示例を示す図。
【図１２】第２実施形態に係わる第２の制御システムの制御装置で実行されるオブジェクトプログラムの命令語形式を示す図。
【図１３】前記第２実施形態に係わる第２の制御システムの制御装置内におけるデータメモリの割り付け状態を示す図。
【図１４】第３実施形態に係わる第３の制御システムで実行される制御プログラムのオブジェクトプログラムの構成を示す図。
【符号の説明】
１…制御装置
２…モニタ装置
３…データ転送媒体
１１…ＣＰＵ
１２…プログラムメモリ
１３…ワークメモリ
１４…シーケンス演算プロセッサ
１５…制御プログラムメモリ
１６…データメモリ
１７…通信インタフェース
１８…入出力モジュール
１９…システムバス
２０１…ＣＰＵ
２０２…プログラムメモリ
２０３…ワークメモリ
２０４…制御プログラムメモリ
２０５…データメモリ
２０６…通信インタフェース
２０７…システムバス
２０８…キーボード
２０９…入出力インタフェース
２１０…表示器
２１１…表示インタフェース
４０１…シーケンス演算回路
４０２…内部レジスタ
４０３…データ蓄積制御回路
４０４…ステップモニタ指定フラグ
４０５…蓄積データカウンタ
４０６…データ蓄積メモリ
４０７…比較回路
４０８…シーケンス命令ポインタ
４０９…シーケンス命令レジスタ
４１０…オペランドデータレジスタ
４１１…モニタ開始アドレスレジスタ
４１２…モニタ終了アドレスレジスタ
４１３…モニタ命令アドレスレジスタ
【図１】
0003927042.tif 000002
【図２】
0003927042.tif 000003
【図３】
0003927042.tif 000004
【図４】
0003927042.tif 000005
【図５】
0003927042.tif 000006
【図６】
0003927042.tif 000007
【図７】
0003927042.tif 000008
【図８】
0003927042.tif 000009
【図９】
0003927042.tif 000010
【図１０】
0003927042.tif 000011
【図１１】
0003927042.tif 000012
【図１２】
0003927042.tif 000013
【図１３】
0003927042.tif 000014
【図１４】
0003927042.tif 000015