(57)【特許請求の範囲】
【請求項１】
制御対象機器を制御する制御装置に走っているユーザプログラムを、該制御装置に接続されたオンラインエディットモニタでオンラインエディットするオンラインエディットシステムにおいて、
前記オンラインエディットモニタは、
プログラム収集エージェント生成手段と、
デバッグエージェント生成手段を有し、
前記制御装置は、
プログラム収集実行手段を有し、
前記プログラム収集エージェント生成手段は、
デバッグ対象プログラムが稼動している前記制御装置からオンラインエディットするプログラムを収集させるプログラム収集エージェントを生成し、この生成したプログラム収集エージェントを前記制御装置へ出力し、
前記プログラム収集実行手段は、
前記プログラム収集エージェント生成手段が生成した前記プログラム収集エージェントを受けると、受けた前記プログラム収集エージェントに従いプログラムを収集し、この収集したプログラムを前記オンラインエディットモニタへ出力し、
前記デバッグエージェント生成手段は、
前記プログラム収集実行手段で収集したプログラムのデバッグ情報リストを含むデバッグエージェントを生成し、この生成したデバッグエージェントをデバッグ対象プログラムが稼動している前記制御装置に出力し、
前記制御装置は、
前記デバッグエージェント生成手段で生成されたデバッグエージェントを受けると、受けたデバッグエージェントを実行し、そのデバッグエージェントに含まれているデバッグ情報リストに基づいてデバッグ対象プログラムのデバッグ・テストを実行する
ことを特徴とするオンラインエディットシステム。
【請求項２】
前記プログラム収集エージェントには、
自己を特定するエージェントＩＤを格納するエージェントＩＤエリアと、
前記ユーザプログラム中から収集するプログラム行を特定する収集開始行と収集終了行とからなるプログラム収集情報とを有しており、
前記プログラム収集実行手段は、
前記プログラム収集エージェント中の前記プログラム収集情報に基づき、前記ユーザプログラムからプログラムを収集し、これを前記プログラム収集エージェントに付加し、前記ディバックエージェント生成手段に出力することを特徴とする請求項１記載のオンラインエディットシステム。
【請求項３】
前記プログラム収集実行手段は、
前記プログラム収集エージェントを受けると、受けた前記プログラム収集エージェントを特定するエージェントＩＤと、デバッグ対象の制御装置から収集した前記制御対象機器の実行が許可されているサイクルタイム時間との情報を前記デバッグ対象の制御装置内にもたせることを特徴とする請求項１記載のオンラインエディットシステム。
【請求項４】
前記デバッグエージェントには、
前記ユーザプログラムにプログラムを挿入するタイプのものであるか、前記ユーザプログラムの所定箇所のプログラムを削除させるものであるか、または、前記ユーザプログラムの所定箇所のプログラムを更新させるものであるかを指定するデバッグタイプ情報を有しており、
前記デバッグエージェント実行手段は、
前記デバッグエージェントに有するデバッグタイプ情報により、所定のタイプのデバッグ・テスト処理を実行することを特徴とする請求項１記載のオンラインエディットシステム。
【請求項５】
プログラムを挿入してデバッグ・テストさせるデバッグエージェントの場合には、修正プログラムと、この修正プログラムを前記ユーザプログラムに挿入する箇所を特定する挿入開始行とからなるデバッグ情報リストを有しており、
プログラムを削除してデバッグ・テストさせるデバッグエージェントの場合には、前記ユーザプログラムを削除する箇所を特定する削除開始行と、削除終了行とからなるデバッグ情報リストを有しており、
プログラムを更新してデバッグ・テストさせるデバッグエージェントの場合には、前記ユーザプログラムを更新する箇所を特定する削除開始行および削除終了行、並びに前記ユーザプログラムの削除した箇所に修正プログラムを挿入するための挿入開始行、および前記削除した箇所に挿入する前記修正プログラムからなるデバッグ情報リストを有していることを特徴とする請求項１記載のオンラインエディットシステム。
【請求項６】
前記制御手段は、
前記デバッグエージェントを用いてデバッグ・テストしたとき、デバッグ・テスト処理が、前記デバッグ対象の制御装置内に有するサイクルタイム時間内に処理を終えない場合には、前記デバッグ情報リストを削除することを特徴とする請求項４または５記載のオンラインエディットシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、制御対象機器を制御する制御装置が実行するユーザプログラムをオンラインエディットするオンラインエディットシステムに関する。
【０００２】
【従来の技術】
プログラマブルコントローラでセンサ，アクチュエータ等の制御機器を制御するＦＡシステムにおいて、プログラマブルコントローラを稼働させるラダープログラムからなるユーザプログラムをオンラインエディットするには、従来から、例えば、図１２に示すように、プログラマブルコントローラ（以下、ＰＬＣという）５０と、オンラインエディットモニタ６０とが回線７０に接続されて構成されたオンラインエディットシステムが使用されている。
【０００３】
この従来のオンラインエディットシステムは、各ＰＬＣ５０に実行されているユーザプログラムをオンラインエディットする場合には、オンラインエディットモニタ６０が指示を出してオンラインエディットするＰＬＣ５０の稼働を停止させる。
【０００４】
次に、このオンラインエディットシステムは、オンラインエディットモニタ６０が、エディットするためのパラメータとしてのラダープログラムをオンラインエディットするＰＬＣ５０に与え、そのＰＬＣ５０が受けたラダープログラムを用いてユーザプログラムをエディットする。
【０００５】
続いて、このオンラインエディットシステムは、オンラインエディットするＰＬＣ５０がエディットしたユーザプログラムを実際に動かし、サイクルタイム内に所期の目的通りに機器が動作したか否かを、オンラインエディットモニタ６０でテストするようになっている。
【０００６】
【発明が解決しようとする課題】
上述した従来のオンラインエディット方式では、ユーザがオンラインエディットモニタ６０に表示されたテスト結果を見て適切なパラメータとしてのラダープログラムが渡ったか否かを判断するため、図１３に示すように、パラメータとして幾つかのラダープログラム候補がある場合には、エディットとテストとを繰り返すことになり、連続してテストが行えないという問題点があった。
【０００７】
また、オンラインエディットモニタ６０と各ＰＬＣ５０間に個別にオンラインデバッグやモニタのセッションが発生するため、効率が悪いという問題点があった。
【０００８】
さらに、オンラインエディットモニタ６０がＰＬＣ５０から離れた場所、例えば工場外にある場合には、オンラインエディットのためのリモート操作に時間がかかり、効率が悪いばかりでなく、処理が切れてしまうという問題点があった。
【０００９】
そこで、本発明は上述した問題点に鑑み、▲１▼パラメータとして幾つかのラダープログラム候補がある場合には、連続してテストを行い、▲２▼使用効率が良く、▲３▼遠くからのリモート操作でも処理効率がよいオンラインエディットシステムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、請求項１記載の発明は、制御対象機器を制御する制御装置に走っているユーザプログラムを、該制御装置に接続されたオンラインエディットモニタでオンラインエディットするオンラインエディットシステムにおいて、前記オンラインエディットモニタは、プログラム収集エージェント生成手段と、デバッグエージェント生成手段を有し、前記制御装置は、プログラム収集実行手段を有し、前記プログラム収集エージェント生成手段は、デバッグ対象プログラムが稼動している前記制御装置からオンラインエディットするプログラムを収集させるプログラム収集エージェントを生成し、この生成したプログラム収集エージェントを前記制御装置へ出力し、前記プログラム収集実行手段は、前記プログラム収集エージェント生成手段が生成した前記プログラム収集エージェントを受けると、受けた前記プログラム収集エージェントに従いプログラムを収集し、この収集したプログラムを前記オンラインエディットモニタへ出力し、前記デバッグエージェント生成手段は、前記プログラム収集実行手段で収集したプログラムのデバッグ情報リストを含むデバッグエージェントを生成し、この生成したデバッグエージェントをデバッグ対象プログラムが稼動している前記制御装置に出力し、前記制御装置は、前記デバッグエージェント生成手段で生成されたデバッグエージェントを受けると、受けたデバッグエージェントを実行し、そのデバッグエージェントに含まれているデバッグ情報リストに基づいてデバッグ対象プログラムのデバッグ・テストを実行することを特徴とするものである。
【００１２】
請求項２記載の発明は、請求項１記載の発明において、前記プログラム収集エージェントには、自己を特定するエージェントＩＤを格納するエージェントＩＤエリアと、前記ユーザプログラム中から収集するプログラム行を特定する収集開始行と収集終了行とからなるプログラム収集情報とを有しており、
前記プログラム収集実行手段が、前記プログラム収集エージェント中の前記プログラム収集情報に基づき、前記ユーザプログラムからプログラムを収集し、これを前記プログラム収集エージェントに付加し、前記デバッグエージェント生成手段に出力するようにする。
【００１３】
請求項３記載の発明は、請求項１記載の発明において、前記プログラム収集実行手段が、前記プログラム収集エージェントを受けると、受けた前記プログラム収集エージェントを特定するエージェントＩＤと、デバッグ対象の制御装置から収集した前記制御対象機器の実行が許可されているサイクルタイム時間との情報を前記デバッグ対象の制御装置内にもたせるようにする。
【００１４】
請求項４記載の発明は、請求項１記載の発明において、前記デバッグエージェントには、前記ユーザプログラムにプログラムを挿入するタイプのものであるか、前記ユーザプログラムの所定箇所のプログラムを削除させるものであるか、または、前記ユーザプログラムの所定箇所のプログラムを更新させるものであるかを指定するデバッグタイプ情報を有しており、
前記デバッグエージェント実行手段が、前記デバッグエージェントに有するデバッグタイプ情報により、所定のタイプのデバッグ・テスト処理を実行するようにする。
【００１５】
請求項５記載の発明は、請求項１記載の発明において、プログラムを挿入してデバッグ・テストさせるデバッグエージェントの場合には、修正プログラムと，この修正プログラムを前記ユーザプログラムに挿入する箇所を特定する挿入開始行とからなるデバッグ情報リストを有しており、プログラムを削除してデバッグ・テストさせるデバッグエージェントの場合には、前記ユーザプログラムを削除する箇所を特定する削除開始行と，削除終了行とからなるデバッグ情報リストを有しており、プログラムを更新してデバッグ・テストさせるデバッグエージェントの場合には、前記ユーザプログラムを更新する箇所を特定する削除開始行および削除終了行、並びに前記ユーザプログラムの削除した箇所に修正プログラムを挿入するための挿入開始行，および前記削除した箇所に挿入する前記修正プログラムからなるデバッグ情報リストを有しているようにする。
【００１７】
請求項６記載の発明は、請求項４または５記載の発明において、前記制御手段が、前記デバッグエージェントを用いてデバッグ・テストしたとき、デバッグ・テスト処理が、前記デバッグ対象の制御装置内に有するサイクルタイム時間内に処理を終えない場合には、前記デバッグ処理情報を削除するようにする。
【００１８】
本発明では、生成されたデバッグエージェントには複数の修正プログラムを有しており、この複数の修正プログラムを用いてデバッグ・テストを順次行うようにしたことにより、ユーザがオンラインエディットするに際し、制御装置を停止し、修正プログラムでユーザプログラムをエディットし、テストする必要をなくすことができる。
【００１９】
【発明の実施の形態】
以下、本発明に係るオンラインエディットシステムの一実施形態を図面を参照して説明する。
【００２０】
図１は本発明に係る実施形態のオンラインエディットシステムの構成を示すブロック図である。
【００２１】
この実施形態のオンラインエディットシステムは、オンラインエディットモニタ１と、＃１〜＃ｎのプログラマブルコントローラ２とが回線５に接続されて構成されている。
【００２２】
オンラインエディットモニタ１は、システムエージェント１１が設けられており、このシステムエージェント１１が、後述するラダー収集リストを有するラダー収集エージェント３（後述する）を生成し、これを回線５を介して＃１〜＃ｎのＰＬＣ２に出力し、デバッグ対象のラダープログラムを収集するようになっている。
【００２３】
また、システムエージェント１１は、後述するデバッグ情報リストを有するデバッグエージェント４を生成し、これをデバッグ対象のラダープログラムが稼働するＰＬＣ２に回線５を介して出力してデバッグ・テストさせるようになっている。
【００２４】
＃１〜＃ｎの各ＰＬＣ２は、システムエージェント２１が設けられており、このシステムエージェント２１がオンラインエディットモニタ１からラダー収集エージェント３を受けると、ラダー収集リストに基づき、後述する処理情報リストを作成するようになっている。
【００２５】
また、システムエージェント２１は、処理情報リストを作成すると、この処理情報リストに基づき、収集したラダープログラムをラダー収集エージェント３のラダー収集リストに付加した後、これをオンラインエディットモニタ１に出力するようになっている。
【００２６】
さらに、＃１〜＃ｎの各ＰＬＣ２は、デバッグエージェント４を受けると、デバッグエージェント４に有する後述するデバッグ情報リストに基づき、デバッグするとともに、テストを実行するようになっている。
【００２７】
ここで、上述したラダー収集リスト，処理情報リスト，およびデバッグ情報リストについて説明する。
【００２８】
図２はラダー収集リストの構成を示すブロック図である。
【００２９】
ラダー収集リスト３１は、図２に示すように、出力したラダー収集エージェント３を識別するＩＤを格納するエージェントＩＤエリア３１１と、収集するラダーの収集開始行および収集終了行を格納するラダー収集エリア３１２と、収集したラダープログラムを格納する収集ラダーエリア３１３とが設けられて構成されている。
【００３０】
図３は処理情報リストの構成を示すブロック図である。
【００３１】
処理情報リスト２２は、図３に示すように、システムエージェント２１を特定するＩＤを格納するシステムエージェントＩＤエリア２２１と、受けたラダー収集エージェントのＩＤを格納するエージェントＩＤエリア２２２と、収集するラダーの収集開始行および収集終了行を格納するラダー収集エリア２２３と、実行が許可されているサイクルタイム時間を格納するサイクルタイム時間格納エリア２２４と、収集されたラダープログラムを格納する収集ラダーエリア２２５とが設けられて構成されている。
【００３２】
図４（ａ）はラダープログラムを挿入する場合に使用するデバッグ情報リストであり、図４（ｂ）はラダープログラムを削除する場合に使用するデバッグ情報リストであり、図４（ｃ）はラダープログラムを更新する場合に使用するデバッグ情報リストである。
【００３３】
ラダープログラムを挿入する場合に使用するデバッグ情報リスト４１ａは、図４（ａ）に示すように、デバッグのタイプがラダープログラムを挿入するタイプであることを示す情報を格納するデバッグタイプエリア４１１ａと、挿入するラダープログラムの挿入開始行とそのラダープログラムと格納するラダー挿入エリア４１２ａと、受けたラダー収集エージェント３のＩＤを格納するエージェントＩＤエリア４１３ａとから構成されている。なお、ラダー挿入エリア４１２ａには、オンラインエディットに必要な数のデータが格納されている。
【００３４】
ラダープログラムを削除する場合に使用するデバッグ情報リスト４１ｂは、図４（ｂ）に示すように、デバッグのタイプがラダープログラムを削除るタイプであることを示す情報を格納するデバッグタイプエリア４１１ｂと、削除するラダープログラムの削除開始行と削除終行と格納するラダー削除エリア４１２ｂ、受けたラダー収集エージェント３のＩＤを格納するエージェントＩＤエリア４１３ｂとから構成されている。なお、ラダー削除エリア４１２ｂには、オンラインエディットに必要な数のデータが格納されている。
【００３５】
ラダープログラムを更新する場合に使用するデバッグ情報リスト４１ｃは、図４（ｃ）に示すように、デバッグのタイプとしてラダープログラムを更新するタイプであることを示す情報を格納するデバッグタイプエリア４１１ｃと、削除するラダープログラムの削除開始行と削除終行と格納するラダー削除エリア４１２ｃと、挿入するラダープログラムの挿入開始行と挿入するラダープログラムと格納するラダー挿入エリア４１２ｄと、受けたラダー収集エージェント３のＩＤを格納するエージェントＩＤエリア４１３ｃとから構成されている。なお、ラダー挿入エリア４１２ｃおよびラダー削除エリア４１２ｄには、オンラインエディットに必要な数のデータが格納されている。
【００３６】
次に、この実施形態のオンラインエディットの動作を、（１）エディットするラダープログラムを収集する動作と、（２）オンラインエディットモニタがデバッグエージェントを生成する動作と、（３）システムエージェントが受けたデバッグエージェントによりデバッグ・テストする動作とに分けて説明する。
【００３７】
（１）エディットするラダープログラムを収集する動作について
ここで、エディットするラダープログラムを収集する動作を、さらに、▲１▼オンラインエディットモニタ１が実行する動作と、▲２▼ＰＬＣ２が実行する動作に分けて説明する。
【００３８】
▲１▼オンラインエディットモニタ１の処理動作について
図５はオンラインエディットモニタのラダープログラムを収集する処理を示すフローチャートである。
【００３９】
オンラインエディットモニタ１は、オンラインエディットを実行する際に、その処理に要するメモリエリア等をクリアして、初期化する（ステップ１１０）。その後、オンラインエディットモニタ１は、ユーザによりラダープログラムを収集するＰＬＣ２番号を取得する（ステップ１２０）。
【００４０】
オンラインエディットモニタ１のシステムエージェント１１は、ラダープログラムを収集するＰＬＣ２のアドレスを取得すると、収集先のＰＬＣ２のアドレスを有する移動先リスト（図示せず）を備えたラダー収集エージェント３を生成する（ステップ１３０）。
【００４１】
続いて、システムエージェント１１は、生成したラダー収集エージェント３のラダー収集リスト３１のエージェントＩＤエリア３１１に、自己を特定するＩＤを付加し（ステップ１４０）、次に、生成したラダー収集エージェント３のラダー収集リスト３１のラダー収集エリア３１１に収集開始行および収集終了行を設定する（ステップ１５０）。
【００４２】
次に、システムエージェント１１は、移動先リストに基づき、該当する移動先のＰＬＣ２にラダー収集エージェント３を移動させる（ステップ１６０）。
【００４３】
その後、システムエージェント１１は、移動先のＰＬＣ２から戻ってきたラダー収集エージェント３から、エディットするラダープログラムの収集開始行および収集終了行を読み出し（ステップ１７０）、処理を終了する。
【００４４】
▲２▼ＰＬＣ２０の処理動作について
図６はＰＬＣがラダー収集エージェントが入力されたときに実行する処理を示すフローチャートである。
【００４５】
ラダー収集エージェント３を受けたＰＬＣ２に、オンラインエディットモニタ１からラダー収集エージェント３が入力されると（ステップ２１０）、そのＰＬＣ２のシステムエージェント２１は、システムエージェントＩＤエリア２２１，エージェントＩＤエリア２２２，ラダー収集エリア２２３，サイクルタイムエリア２２４および収集ラダーエリア２２５が空の処理情報リスト２４０を形成する（ステップ２２０）。
【００４６】
次に、システムエージェント２１は、自己を特定するシステムエージェントＩＤをシステムエージェントＩＤエリア２２１に格納する（ステップ２３０）。
【００４７】
続いて、システムエージェント２１は、入力されたラダー収集エージェント３中のラダー収集リスト３１から、ラダー収集エージェントのＩＤと，ラダープログラムの収集開始行および収集終了行とを読み出す（ステップ２４０）。
【００４８】
その後、システムエージェント２１は、読み出したラダー収集エージェントのＩＤを処理情報リスト２２のエージェントエリア２２２に格納し、また、読み出した収集開始行と収集終了行とを処理情報リスト２１のラダー収集エリア２２３に格納する（ステップ２５０）。
【００４９】
システムエージェント２１は、読み出した収集開始行と収集終了行とを処理情報リスト２１のラダー収集エリア２２３に格納すると、このＰＬＣ２の実行が許されるサイクルタイム時間をＰＬＣ２の制御部（図示せず）から収集し、この収集したサイクルタイム時間を処理情報リスト２２のサイクルタイムエリア２２４に格納する（ステップ２６０）。
【００５０】
システムエージェント２０１は、サイクルタイムエリア２２４にサイクルタイム時間を格納すると、上述したような所定の情報を有する処理情報リスト２２が設けられたラダー収集エージェント３を次の移動先のＰＬＣ２に移動させ（ステップ２７０）、処理を終了する。
【００５１】
（２）オンラインエディットモニタがデバッグエージェントを生成する動作について
図７はオンラインエディットモニタのデバッグエージェントを生成する処理を示すフローチャートである。
【００５２】
オンラインエディットモニタ１は、ユーザからデバッグエージェントを生成するためのコマンドを受けると、デバッグエージェントを生成する際に、その処理に要するメモリエリア等をクリアして初期化する（ステップ３１０）。
【００５３】
次に、オンラインエディットモニタ１のシステムエージェント１１は、移動先リストおよびデバッグ情報リストが何も格納されていない空のデバッグエージェント４を生成する（ステップ３２０）。
【００５４】
続いて、システムエージェント１１は、空のデバッグエージェント４の移動先リストに自アドレスを登録し（ステップ３３０）、最終的に作成したデバッグエージェント４が戻るようにする。
【００５５】
システムエージェント１１は、戻ってきたラダー収集エージェント３中のエージェントＩＤエリア３１１からラダー収集エージェントＩＤを読み出してこれを入手する（ステップ３４０）。
【００５６】
その後、システムエージェント１１は、デバッグタイプを指定する指示として、ユーザから挿入，削除または更新のいずれの指示を受けたか否かを判断する（ステップ３５０）。
【００５７】
システムエージェント１１は、ユーザからラダープログラムを挿入するデバッグ処理を実行させる指示を受けたと判断した場合には（ステップ３５０；挿入）、デバッグエージェント４中に有するデバッグ情報リスト４１ａのデバッグタイプエリア４１１ａに挿入タイプのデバッグエージェントであることを示す情報Ｉを格納する（ステップ３６０）。
【００５８】
次に、システムエージェント１１は、ユーザから挿入するラダープログラムと、このラダープログラムの挿入開始行を受けると、これらの情報に基づき、デバッグエージェント４中に有するデバッグ情報リスト４１ａのラダー挿入エリア４１２ａを格納する（ステップ３６２）。
【００５９】
続いて、システムエージェント１１は、デバッグ情報リスト４１ａのエージェンＩＤエリア４１３ａに、先に受けたラダー収集エージェント３のＩＤを格納し（ステップ３６４）、所定の情報を備えたデバッグ情報リスト４１ａを有するデバッグエージェント４を生成し、処理を終了する。
【００６０】
ステップ３５０において、システムエージェント１１は、ユーザからラダープログラムを削除させるデバッグ処理の指示を受けたと判断した場合には（ステップ３５０；削除）、デバッグエージェント４中に有するデバッグ情報リスト４１ｂのデバッグタイプエリア４１１ｂに削除タイプのデバッグエージェントであることを示す情報Ｄを格納する（ステップ３７０）。
【００６１】
次に、システムエージェント１１は、ユーザから削除するラダープログラムの削除開始行と削除終了行と受けると、これらの情報をデバッグエージェント４中に有するデバッグ情報リスト４１ｂのラダー削除エリア４１２ｂに格納する（ステップ３７２）。
【００６２】
続いて、システムエージェント１１は、デバッグ情報リスト４１ｂのエージェンＩＤエリア４１３に、先に受けたラダー収集エージェント３のＩＤを格納し（ステップ３７４）、所定の情報を備えたデバッグ情報リスト４１ｂを有するデバッグエージェント４を生成し、処理を終了する。
【００６３】
ステップ３５０において、システムエージェント１１は、ユーザからラダープログラムを更新させるデバッグ処理の指示を受けたと判断した場合には（ステップ３５０；更新）、デバッグエージェント４中に有するデバッグ情報リスト４１ｃのデバッグタイプエリア４１１ｃに更新タイプのデバッグエージェントであることを示す情報Ｃを格納する（ステップ３８０）。
【００６４】
次に、システムエージェント１１は、ユーザから削除するラダープログラムの削除開始行と削除終了行と受けると、これらの情報をデバッグエージェント４中に有するデバッグ情報リスト４１ｃのラダー削除エリア４１２ｃに格納する（ステップ３８２）。
【００６５】
続いて、システムエージェント１１は、ユーザから更新するラダープログラムと、このラダープログラムの挿入開始行を受けると、これらの情報に基づき、デバッグエージェント４中に有するデバッグ情報リスト４１ｃのラダー挿入エリア４１２ｄに格納する（ステップ３８４）。
【００６６】
その後、システムエージェント１１は、デバッグ情報リスト４１ｃのエージェンＩＤエリア４１３ｃに、先に受けたラダー収集エージェント３のＩＤを格納し（ステップ３８６）、所定の情報を備えたデバッグ情報リスト４１ｃを有するデバッグエージェント４を生成する。
【００６７】
（３）デバッグ・テストする動作について
図８はデバッグエージェントを受けたシステムエージェントが処理するデバッグおよびテストの処理動作を示すフローチャートである。
【００６８】
ＰＬＣ２のシステムエージェント２１は、デバッグエージェント４を受けると、デバッグ情報リスト４１ａ，４１ｂ，４１ｃのエージェントＩＤエリア４１３ａ，４１３ｂ，４１３ｃに格納されているラダー収集エージェントのＩＤを読み出す（ステップ４００）。
【００６９】
次に、システムエージェント２１は、読み出したラダー収集エージェントのＩＤが、自己が有している処理情報リスト２２のエージェントＩＤエリア２２２に格納されているラダー収集エージェントのＩＤと同一であるか否かを判断する（ステップ４０２）。
【００７０】
システムエージェント２１は、判断した結果、同一であると判断した場合には（ステップ４０２；Ｙ）、デバッグタイプエリア４１１ａ，４１１ｂ，４１１ｃを読み出し（ステップ４０４）、デバッグタイプが挿入タイプ（Ｉ）であるか否かを判断する（ステップ４０６）。
【００７１】
システムエージェント２１は、デバッグタイプが挿入タイプ（Ｉ）であると判断した場合には（ステップ４０６；Ｙ）、デバッグ情報リスト４１ａのラダー挿入エリア４１２ａに格納されている挿入開始行とラダープログラムとを読み出し（ステップ４０８）、後述する挿入・テスト処理を行い（ステップ４１０）、処理を終了する。
【００７２】
一方、システムエージェント２１は、デバッグタイプが挿入タイプ（Ｉ）でないと判断した場合には（ステップ４０６；Ｎ）、デバッグタイプが削除タイプ（Ｄ）であるか否かを判断する（ステップ４２５）。
【００７３】
システムエージェント２１は、デバッグタイプが削除タイプ（Ｄ）であると判断した場合には（ステップ４２５；Ｙ）、デバッグ情報リスト４１ｂのラダー削除エリア４１２ｂに格納されている削除開始行と削除終了行とを読み出し（ステップ４２７）、後述する削除・テスト処理を行い（ステップ４３０）、処理を終了する。
【００７４】
一方、システムエージェント２１は、デバッグタイプが削除タイプ（Ｄ）でないと判断した場合、すなわちデバッグタイプが更新タイプ（Ｃ）であると判断した場合には（ステップ４２５；Ｎ）、デバッグ情報リスト４１ｃのラダー削除エリア４１２ｃに格納されている削除開始行と削除終了行とを読み出すとともに、ラダー挿入エリア４１２ｄに格納されている挿入開始行とラダープログラムとを読み出し（ステップ４５０）、後述する更新・テスト処理を行い（ステップ４６０）、処理を終了する。
【００７５】
ステップ４０２において、システムエージェント２１は、読み出したラダー収集エージェントのＩＤが、自己が有している処理情報リスト２２のエージェントＩＤエリア２１２に格納されているラダー収集エージェントのＩＤと同一でないと判断した場合には（ステップ４０２；Ｎ）、受けたデバッグエージェントが該当するものでないものであるとして、オンラインエディットモニタ１に戻し（ステップ４９０）、処理を終了する。
【００７６】
ここで、ステップ４１０の挿入・テスト処理について述べる。
【００７７】
図９は挿入・テスト処理を示すフローチャートである。
【００７８】
システムエージェント２１は、メモリエリア中に作業領域ｎを形成し、この作業領域ｎに１を設定し（ステップ４１１）、デバッグエージェント４中のラダー挿入エリア４１２ａに格納されているＮｏ１の挿入開始行とラダープログラムとを読み出し、読み出したラダープログラムをユーザプログラムの指定された挿入開始行に挿入し（ステップ４１２）、ＰＬＣ２を動作させる（ステップ４１３）。
【００７９】
システムエージェント２１は、ＰＬＣ２を動作させた結果、自己が有する処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了したか否かを判断する（ステップ４１４）。
【００８０】
システムエージェント２１は、処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了しなかったと判断した場合には（ステップ４１４；Ｎ）、挿入するラダープログラムの次の候補があるか否かを判断し（ステップ４１５）、その結果、挿入するラダープログラムの次の候補があると判断した場合には（ステップ４１５；Ｙ）、現候補の挿入したラダープログラムをユーザプログラムから削除するとともに（ステップ４１６）、現候補のラダープログラムとこの挿入開始行とをデバッグ情報リスト４１ａのラダー挿入エリア４１２ａから削除する（ステップ４１７）。
【００８１】
続いて、システムエージェント２１は、作業領域ｎに格納されているｎに１を加算した値を新たにｎとし（ステップ４１８）、ステップ４１２に処理を移行し、上述したと同様な処理を行う。
【００８２】
ステップ４１５において、システムエージェント２１は、挿入するラダープログラムの次の候補がないと判断した場合には（ステップ４１５；Ｎ）、ユーザプログラムに挿入した現候補のラダープログラムを削除するとともに（ステップ４１９）、Ｎｏが“ｎ”の現候補のラダープログラムとこの挿入開始行とをデバッグ情報リスト４１ａのラダー挿入エリア４１２ａから削除し（ステップ４２０）、ラダー挿入エリア４１２ａが空であるデバイス情報リスト４１ａを有するデバッグエージェント４をオンラインエディットモニタ１に戻し（ステップ４２１）、処理を終了する。
【００８３】
ステップ４１４において、システムエージェント２１は、自己が有する処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了したと判断した場合には（ステップ４１４；Ｙ）、このデバッグエージェント４をオンラインエディットモニタ１に戻し（ステップ４２２）、処理を終了する。
【００８４】
ステップ４３０の削除・テスト処理について述べる。
【００８５】
システムエージェント２１は、メモリエリアに作業領域ｎを形成し、この作業領域ｎに１を設定し（ステップ４３１）、ユーザプログラム中の削除開始行から削除終了行までのラダープログラムをメモリエリアに退避させる（ステップ４３２）。
【００８６】
次に、システムエージェント２１は、挿入開始行と挿入終了行間のユーザプログラムを削除し（ステップ４３３）、ＰＬＣ２を動作させる（ステップ４３４）。
【００８７】
システムエージェント２１は、ＰＬＣ２を動作させた結果、自己が有する処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了したか否かを判断する（ステップ４３５）。
【００８８】
システムエージェント２１は、処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了しなかったと判断した場合には（ステップ４３５；Ｎ）、次に挿入するラダープログラムの候補があるか否かを判断し（ステップ４３６）、その結果、挿入するラダープログラムの次の候補があると判断した場合には（ステップ４３６；Ｙ）、メモリエリアに退避させたラダープログラムを元の箇所に戻し（ステップ４３７）、デバッグ情報リスト４１ｂ中のＮｏ“ｎ”ラダー削除エリア４１２ｂに格納されているデータを削除する（ステップ４３８）。
【００８９】
続いて、システムエージェント２１は、作業領域ｎに格納されているｎに１を加算した値を新たにｎとし（ステップ４３９）、ステップ４３２に処理を移行し、上述した同様な処理を行う。
【００９０】
ステップ４３６において、システムエージェント２１は、次に挿入するラダープログラムの候補がないと判断した場合には（ステップ４３６；Ｎ）、メモリエリアに退避させたラダープログラムをユーザプログラムに戻し（ステップ４４０）、ラダー削除エリア４１２ｂ中のＮｏが“ｎ”の箇所のラダー削除エリア４１２ｂのデータを削除し（ステップ４４１）、ラダー削除エリア４１２ｂが空であるデバイス情報リスト４１ｂを有するデバッグエージェント４をオンラインエディットモニタ１に戻し（ステップ４４２）、処理を終了する。
【００９１】
ステップ４３５において、システムエージェント２１は、自己が有する処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了したと判断した場合には（ステップ４３５；Ｙ）、このデバッグエージェント４をオンラインエディットモニタ１に戻し（ステップ４４３）、処理を終了する。
【００９２】
ステップ４６０の更新・テスト処理について述べる。
【００９３】
図１１は更新・テスト処理を示すフローチャートである。
【００９４】
システムエージェント２１は、メモリエリアに作業領域ｎを形成して、この作業領域ｎに１を設定し（ステップ４６１）、ラダー削除エリア４１２ｃ中のＮｏ“ｎ”に格納されている削除開始行と削除終了行間のラダープログラムをメモリエリアに退避させる（ステップ４６２）。
【００９５】
次に、システムエージェント２１は、挿入開始行と挿入終了行間のユーザプログラムを削除し（ステップ４６３）、削除したユーザプログラムの挿入開始行から挿入終了行間に、ラダー挿入エリア４１２ｄ中のＮｏ“ｎ”に格納されているラダープログラムを、挿入開始行の箇所に挿入し（ステップ４６４）、ＰＬＣ２を動作させる（ステップ４６５）。
【００９６】
システムエージェント２１は、ＰＬＣ２を動作させた結果、自己が有する処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了したか否かを判断する（ステップ４６６）。
【００９７】
システムエージェント２１は、処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了しなかったと判断した場合には（ステップ４６６；Ｎ）、次に更新するラダープログラムの候補があるか否かを判断し（ステップ４６７）、更新するラダープログラムの次の候補があると判断した場合には（ステップ４６７；Ｙ）、挿入したラダープログラムを削除し（ステップ４６８）、メモリエリアに退避させたラダープログラムを元の箇所に戻す（ステップ４６９）。
【００９８】
続いて、システムエージェント２１は、ラダー削除エリア４１２ｃおよびラダー挿入エリア４１２ｄのＮｏが“ｎ”の箇所のデータを削除し（ステップ４７０）、作業領域ｎに格納されているｎに１を加算した値を新たにｎとし（ステップ４７１）、ステップ４６２に処理を移行し、上述したと同様な処理を行う。
【００９９】
ステップ４６７において、システムエージェント２１は、次に挿入するラダープログラムの候補がないと判断した場合には（ステップ４６７；Ｎ）、挿入したラダープログラムを削除し（ステップ４７２）、メモリエリアに退避させたラダープログラムを元の箇所に戻す（ステップ４７３）。
【０１００】
次に、システムエージェント２１は、ラダー削除エリア４１２ｃおよびラダー挿入エリア４１２ｄのＮｏが“ｎ”の箇所のデータを削除し（ステップ４７４）、ラダー削除エリア４１２ｃおよびラダー挿入エリア４１２ｄが空であるデバッグ情報リスト４１を有するデバッグエージェント４をオンラインエディットモニタ１に戻し（ステップ４７５）、処理を終了する。
【０１０１】
ステップ４６６において、システムエージェント２１は、自己が有する処理情報リスト２２中のサイクルタイムエリア２２４に格納されているサイクルタイム時間内に処理が終了したと判断した場合には（ステップ４６６；Ｙ）、このデバッグエージェント４をオンラインエディットモニタ１に戻し（ステップ４７６）、処理を終了する。
【０１０２】
この実施形態のオンラインエディットシステムでは、オンラインエディットモニタ１のシステムエージェント１１で生成されたデバッグエージェント４には複数の修正プログラムを有しており、このデバッグエージェント４を受けるＰＬＣ２のシステムエージェント２１は、デバッグエージェント４に有する複数の修正プログラムを用いてデバッグ・テストを順次行うようにしたため、従来、ユーザがオンラインエディットするに際し、制御装置を停止し、修正プログラムでユーザプログラムをエディットし、テストする必要をなくすことができる。
【０１０３】
このため、従来のオンラインエディットを行ったときに発生するオンラインデバッグやモニタのセッションの発生を抑えることができ、オンラインエディットの効率を良くすることができるとともに、オンラインエディットをリモート操作で行うに際し、処理効率を向上させることができる。
【０１０４】
また、実施形態のオンラインエディットシステムでは、ＰＬＣ２のシステムエージェント２１がオンラインエディットモニタ１のシステムエージェント１１からラダー収集エージェント３を受けると、自動的にプログラムを収集するため、ユーザのプログラム収集が容易に行うこができる。
【０１０５】
【発明の効果】
以上本発明によれば、生成されたデバッグエージェントには複数の修正プログラムを有しており、この複数の修正プログラムを用いてデバッグ・テストを順次行うようにしたことにより、ユーザがオンラインエディットするに際し、制御装置を停止し、修正プログラムでユーザプログラムをエディットし、テストする必要をなくすことができる。
【０１０６】
このため、従来のオンラインエディットを行ったときに発生するオンラインデバッグやモニタのセッションの発生を抑えることができ、オンラインエディットの効率を良くすることができるとともに、オンラインエディットをリモート操作で行うに際し、処理効率を向上させることができる。
【図面の簡単な説明】
【図１】本発明に係るオンラインエディットシステムの一実施形態の構成を示すブロック図。
【図２】ラダー収集エージェントに有するラダー収集リストの内容を説明する説明図。
【図３】プログラマブルコントローラに有する処理情報リストの内容を説明する説目図。
【図４】デバッグエージェントに有するデバッグ情報リストの内容を説明する説明図。
【図５】オンラインエディットモニタがラダー収集エージェントを生成する処理動作を示すフローチャート。
【図６】プログラマブルコントローラがラダー収集エージェントを受けたとき実行する処理示すフローチャート。
【図７】オンラインエディットモニタがデバッグエージェントを生成する処理動作を示すフローチャート。
【図８】デバッグエージェントを受けたプログラマブルコントローラが実行する処理動作を示すフローチャート。
【図９】図８中の挿入・テスト処理についての処理動作を示すフローチャート。
【図１０】図８中の削除・テスト処理についての処理動作を示すフローチャート。
【図１１】図８中の更新・テスト処理についての処理動作を示すフローチャート。
【図１２】従来のオンラインエディットシステムの構成を示すブロック図。
【図１３】オンラインエディットされるラダープログラムを説明する説明図。
【符号の説明】
１        オンラインエディットモニタ
１１      システムエージェント
２        プログラマブルコントローラ
２１      システムエージェント
２２      処理情報リスト
２２１    システムエージェントＩＤエリア
２２２    エージェントＩＤエリア
２２３    ラダー収集エリア
２２４    サイクルタイムエリア
２２５    収集ラダーエリア
３        ラダー収集エージェント
３１      ラダー収集リスト
３１１    エージェントＩＤエリア
３１２    ラダー収集エリア
３１３    収集ラダーエリア
４        デバッグエージェント
４１      デバイス情報リスト
４１１    デバッグタイプエリア
４１２ａ  ラダー挿入エリア
４１３    エージェントＩＤエリア
４１２ｂ  ラダー削除エリア
５        回線
【図１】
0003550640.tif 000002
【図２】
0003550640.tif 000003
【図３】
0003550640.tif 000004
【図４】
0003550640.tif 000005
【図５】
0003550640.tif 000006
【図６】
0003550640.tif 000007
【図７】
0003550640.tif 000008
【図８】
0003550640.tif 000009
【図９】
0003550640.tif 000010
【図１０】
0003550640.tif 000011
【図１１】
0003550640.tif 000012
【図１２】
0003550640.tif 000013
【図１３】
0003550640.tif 000014