(57)【特許請求の範囲】
【請求項１】
ユーザプログラムである１若しくは２以上のプログラムブロックを格納し、かつそれらのプログラムブロックを個別に運転状態と停止状態とに切り換えて選択的に実行するブロック単位実行型プログラマブルコントローラを複数台有し、
上記ブロック単位実行型プログラマブルコントローラ同士の間において、ネットワークやバスを介してデータのやり取りを行うプログラマブルコントローラ・システムであって、
前記ブロック単位実行型プログラマブルコントローラには、ユーザプログラムの実行中にプログラムブロック起動命令が解読されたときには当該プログラムブロック起動命令のオペランドで指定される他のブロック単位実行型プログラマブルコントローラのプログラムブロックに対する操作を指示するプログラムブロック操作コマンドを発行するコマンド発行手段が組み込まれており、
前記他のブロック単位実行型プログラマブルコントローラには、前記ブロック単位実行型プログラマブルコントローラから受け取ったプログラムブロック操作コマンドで指定されたプログラムブロックに対する操作を実行するコマンド対応処理実行手段が組み込まれている、
ことを特徴とするプログラマブルコントローラ・システム。
【請求項２】
ユーザプログラムである１若しくは２以上のプログラムブロックを格納し、かつそれらのプログラムブロックを個別に運転状態と停止状態とに切り換えて選択的に実行するブロック単位実行型プログラマブルコントローラと、
上記のブロック単位実行型プログラマブルコントローラとの間において、ネットワークやバスを介してデータのやり取りを行うサポートツールと、を有し、
前記サポートツールは、オペレータによって選択された機能にしたがって、ブロック単位実行型プログラマブルコントローラのプログラムブロックに対する操作を指示するプログラムブロック操作コマンドを発行するコマンド発行手段が組み込まれており、
ブロック単位実行型プログラマブルコントローラには、他の装置から受け取ったプログラムブロック操作コマンドで指定されたプログラムブロックに対する操作を実行するコマンド対応処理実行手段が組み込まれている、
ことを特徴とするプログラマブルコントローラ・システム。
【請求項３】
プログラムブロック操作コマンドが、プログラムブロックの入力パラメータに、コマンドパラメータの実行パラメータデータをセットして当該プログラムブロックを起動して実行させ、その実行結果である出力パラメータデータを読み出して実行結果としてコマンド発行元へと返すことを指示する内容を有する、請求項１または２のいずれかに記載のプログラマブルコントローラ・システム。
【請求項４】
プログラムブロック操作コマンドが、プログラムブロックの入力パラメータに、コマンドパラメータの実行パラメータデータをセットして当該プログラムブロックを起動して実行させることを指示する内容を有する、請求項１または２のいずれかに記載のプログラマブルコントローラ・システム。
【請求項５】
プログラムブロック操作コマンドが、プログラムブロックの出力パラメータデータを読み出して実行結果としてコマンド発行元へと返すことを指示する内容を有する、請求項２に記載のプログラマブルコントローラ・システム。
【請求項６】
プログラムブロック操作コマンドが、コマンドに添えられた特定プログラムブロックを、プログラムブロック格納領域に書き込むことを指示する内容を有する、請求項２に記載のプログラマブルコントローラ・システム。
【請求項７】
プログラムブロック操作コマンドが、指定されたプログラムブロックをプログラムブロック格納領域から削除することを指示する内容を有する、請求項２に記載のプログラマブルコントローラ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ブロック単位実行型プログラマブルコントローラと、１若しくは２以上のプログラマブルコントローラ、サポートツール、ホストコンピュータ等の他の装置とを、コモンバスやネットワーク等で結んでなるプログラマブルコントローラ・システムに係り、特に、機器構成の変更に対してもプログラムの変更の負担を最小限に留めることができるようにしたプログラマブルコントローラ・システムに関する。
【０００２】
【従来の技術】
昨今のネットワーク技術の発達により、設備や装置を制御するためのプログラマブルコントローラにおいても、通信速度を含む情報伝達能力は飛躍的に向上してきている。また、プログラマブルコントローラの低コスト化や小サイズ化により、複数のプログラマブルコントローラを通信により相互接続したシステム構成と高速で大容量な大型プログラマブルコントローラ１台によるシステムとを比較しても、コスト面でもスペース効率面でも遜色ないような状況になっている。
【０００３】
制御システムにおいて、ネットワークを使ってプログラマブルコントローラを分散させると、以下のようなメリットが生ずる。
（１）ハードウェアの構成上並びに配置上、システム構築手段に柔軟性が生ずるため、設備や装置の組み替えが容易となる。
（２）処理が複数のプログラマブルコントローラに負荷分散されるため、個々のプログラマブルコントローラに求められる性能が抑えられ、安価なプログラマブルコントローラの利用が可能となる。
（３）プログラマブルコントローラの故障の際でも、システムを構成するプログラマブルコントローラが複数に分かれているため、システムダウンする範囲が一部にとどめられ、システム全体の信頼性が向上する。
【０００４】
このように設備や装置の構成、並びに、負荷分散や最適なパフォーマンス等のために、複数のプログラマブルコントローラによりシステムを構築することができるようになってきたため、今後、制御システムの分散化傾向はより強まるものと予想される。
【０００５】
一方、半導体メモリのコストダウン、マイコンチップの高性能化に相まって、１台のプログラマブルコントローラで制御できる入出力点数が飛躍的に増加している傾向にある。これに比例して、プログラマブルコントローラのプログラム容量も増加している。
【０００６】
また、プログラマブルコントローラを組み込むことで設計される各種機械や製造設備自身の高機能化も、プログラム容量の倍々化に拍車をかけている。
【０００７】
このような傾向の中で、プログラマブルコントローラには近年、大容量のプログラムを効率よくまた品質よく設計するために、また再利用やメンテナンス管理のために、プログラムを分割や階層化したりブロック分割する機能が付け加えられている傾向にある。
【０００８】
加えて、プログラマブルコントローラを用いたシステムの開発保守環境面でも、ブロック分割されたプログラムデータを個別にプログラマブルコントローラにダウンロードやアップロードする機能を持つサポートツールも考案されつつある。
【０００９】
ユーザはこの機能を利用して、分割ブロック化したプログラムを１台のプログラマブルコントローラにて制御される複数の装置のうちの個々の装置に割り当てたり、装置内の独立性の高い機能ユニット個々と対応させることで、プログラム設計において装置毎や機能毎の設計を順次または複数の作業者で分担して行うことで、その生産性を高めている。
【００１０】
この機能はプログラマブルコントローラ内のプログラムの機能分割をより明確なものとできるため、１台のプログラマブルコントローラで複数の制御対象を制御しているような場合にも、対象毎にプログラムをブロック分割した形でプログラミングされている。
【００１１】
先に述べたネットワークによるシステムの分散化とアプリケーションプログラムの分割を組み合わせることにより、分散方法はより柔軟になり、プログラマブルコントローラという単位ではなく、ネットワークに跨ったプログラムブロック単位での分散が可能となっている。
【００１２】
分散したプログラマブルコントローラ上の、それぞれのプログラム間のやりとりは、ネットワークを介したデータ交換を利用して行われ、現状の方式としては、要求を伝えたい相手に対してその内容を伝えるコマンドと、相手側からの回答となるレスポンスで行われるメッセージサービス方式、複数のプログラマブルコントローラ上であたかも同じメモリ領域を共有しているように、各プログラマブルコントローラにそれぞれ共有メモリを設け、その共有メモリ同士が互いに共有のデータを記憶するべく、プログラマブルコントローラ間のデータを交換するコモンメモリ方式の２つがあるが、基本的にはプログラマブルコントローラに跨ったプログラム間で動作のインタフェースとなるデータ仕様を定めて、それをプログラム上で交換する形となる。
【００１３】
【発明が解決しようとする課題】
プログラマブルコントローラを分散させることは必然的にアプリケーションプログラムの分散を伴うため、従来の１台のプログラマブルコントローラを使ったシステムの構築と比較して、以下の弊害が発生している。
【００１４】
（１）１台のプログラマブルコントローラを使用している際には、１本のプログラムとしてプログラミングされていた動作が、物理的に複数のプログラムに分かれてしまい、かつプログラム間のインタフェースが基本的には単純なデータの受け渡しを用いるしかないため、複雑なプログラミングになりやすい。
【００１５】
プログラマブルコントローラが物理的に分離すると、個々のプログラマブルコントローラのプログラミングも、複数のプログラマーで分担作業をとりやすくなる。その弊害としてプログラミングロジックの変更やデータのアドレス割付の変更が他のプログラマーに伝わりにくくなる。そのため、プログラム間の不整合による不具合を招きやすくなる。複数のプログラマブルコントローラのプログラム間のインタフェースがあるデータ格納場所を使ってのやりとりで行われている場合、その変更の頻度は比較的高く、プログラム間の不整合による不具合を招く大きな原因となっている。
【００１６】
他のプログラマブルコントローラに接続される装置や機器（Ｉ／Ｏ）の状態や、内部で生成される各種データを用いて自プログラマブルコントローラ内で何らかの処理を行おうとする場合、メッセージサービス方式を用いると単純なデータの交換を繰り返して相手側のデータを自プログラマブルコントローラに読み込まなければならないため、ネットワークに過度な負荷がかかりやすく、また通信の応答性能によっては変化の頻度が高いデータの取り込みが困難となる。仮にコモンメモリ方式を用いてデータ交換の頻度を上げる方法を採用しても、コモンメモリ方式は定常的に決まったデータの交換を行うため、データ交換が必要ないときでも通信処理が行われることになり、無駄なオーバヘッドが生じるとともに、交換するデータが対象にある場合は大容量のコモンメモリが必要となり必然的にコストアップを招く。
【００１７】
（２）通常時の負荷を下げるために、Ｉ／Ｏやデータをもつ側のプログラマブルコントローラで処理を行い、結果のみを自プログラマブルコントローラに取り込むプログラミングテクニックを用いた場合でも、分散システムのメリットでもある機器構成の変更の際に、往々にして該当のロジック部分と他のロジックの境界が複雑になり、機器構成の変更に伴うプログラムの書き換えや移植作業に膨大な工程を要してしまう。
【００１８】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、複数のプログラマブルコントローラにプログラムを分散配置したシステムにおいても、構造的なプログラミング手法の採用を可能とすると共に、ネットワークを介するデータ交換手段を単純かつ間接的にすることにより、機器構成の変更に対してもプログラムの変更の負担を最小限に留めることができるようにしたプログラマブルコントローラシステム、プログラマブルコントローラ、並びに、サポートツールを提供することにある。
【００１９】
この発明の他の目的乃至作用効果については、明細書の以下の記載に基づいて、当業者であれば容易に理解されるであろう。
【００２０】
【課題を解決するための手段】
この発明のプログラマブルコントローラ・システムは、ユーザプログラムである１若しくは２以上のプログラムブロックを格納し、かつそれらのプログラムブロックを個別に運転状態と停止状態とに切り換えて選択的に実行するブロック単位実行型プログラマブルコントローラを複数台有し、上記ブロック単位実行型プログラマブルコントローラ同士の間において、ネットワークやバスを介してデータのやり取りを行うものである。
【００２１】
前記ブロック単位実行型プログラマブルコントローラには、ユーザプログラムの実行中にプログラムブロック起動命令が解読されたときには当該プログラムブロック起動命令のオペランドで指定される他のブロック単位実行型プログラマブルコントローラのプログラムブロックに対する操作を指示するプログラムブロック操作コマンドを発行するコマンド発行手段が組み込まれている。
【００２２】
また、他のブロック単位実行型プログラマブルコントローラには、前記ブロック単位実行型プログラマブルコントローラから受け取ったプログラムブロック操作コマンドで指定されたプログラムブロックに対する操作を実行するコマンド対応処理実行手段が組み込まれている。
【００２３】
このような構成によれば、ブロック単位実行型プログラマブルコントローラにおける各プログラムブロックを、内部条件のみならず、他のプログラマブルコントローラからのコマンドによっても適切に実行させることができる。
【００２４】
この発明のプログラマブルコントローラ・システムは、ユーザプログラムである１若しくは２以上のプログラムブロックを格納することができ、かつそれらのプログラムブロックを個別に運転状態と停止状態とに切り換えて選択的に実行できるブロック単位実行型プログラマブルコントローラと、上記のプログラマブルコントローラとの間において、ネットワークやバスを介してデータのやり取りを行うサポートツールとを有する。
【００２５】
そして、前記サポートツールは、オペレータによって選択された機能にしたがって、ブロック単位実行型プログラマブルコントローラのプログラムブロックに操作を指示するプログラムブロック操作コマンドを発行するコマンド発行手段が組み込まれている。
【００２６】
また、ブロック単位実行型プログラマブルコントローラには、他の装置から受け取ったプログラムブロック操作コマンドで指定されたプログラムブロックに対する操作を実行するコマンド対応処理実行手段が組み込まれている。
【００２７】
このような構成によれば、ブロック単位実行型プログラマブルコントローラにおける各プログラムブロックを、内部条件のみならず、外部からのコマンドによっても適切に実行させることができる。
【００２８】
本発明システムの好ましい実施の一形態としては、プログラムブロック操作コマンドが、プログラムブロックの入力パラメータに、コマンドパラメータの実行パラメータデータをセットして当該プログラムブロックを起動して実行させ、その実行結果である出力パラメータデータを読み出して実行結果としてコマンド発行元へと返すことを指示する内容を有する、ものであってもよい。
【００２９】
本発明システムの好ましい実施の一形態としては、プログラムブロック操作コマンドが、プログラムブロックの入力パラメータに、コマンドパラメータの実行パラメータデータをセットして当該プログラムブロックを起動して実行させることを指示する内容を有するようにしてもよい。
【００３０】
本発明システムの好ましい実施の一形態としては、プログラムブロック操作コマンドが、プログラムブロックの出力パラメータデータを読み出して実行結果としてコマンド発行元へと返すことを指示する内容を有するようにしてもよい。
【００３１】
本発明システムの好ましい実施の一形態としては、プログラムブロック操作コマンドが、コマンドに添えられた特定プログラムブロックを、プログラムブロック格納領域に書き込むことを指示する内容を有するようにしてもよい。
【００３２】
本発明システムの好ましい実施の一形態としては、プログラムブロック操作コマンドが指定されたプログラムブロックをプログラムブロック格納領域から削除することを指示する内容を有するようにしてもよい。
【００３３】
【発明の実施の形態】
以下に、この発明に係るプログラマブルコントローラ・システム（以下、ＰＬＣシステムとも言う）、プログラマブルコントローラ（以下、ＰＬＣとも言う）、並びに、サポートツールの好適な実施の一形態を添付図面を参照しつつ詳細に説明する。
【００３４】
本発明のＰＬＣシステムには、図１（ａ）に示されるシステム構成１と図１（ｂ）に示されるシステム構成２とが存在する。
【００３５】
図１（ａ）に示されるように、システム構成１のＰＬＣシステムは、１もしくは２以上の台数のＰＬＣ１と、それらのＰＬＣをサポートするサポートツール２と、それらのＰＬＣ１とサポートツール２とを結ぶ通信手段としてのネットワーク３とから構成されている。
【００３６】
図１（ｂ）に示されるように、システム構成２のＰＬＣシステムは、１もしくは２以上の台数のＰＬＣ１Ａ，１Ｂと、それらのＰＬＣ１Ａ，１Ｂを結ぶ通信手段としてのネットワーク３とから構成されている。
【００３７】
ＰＬＣ１は、図示例では、専用のハードウェアを備えたビルディングブロック型のシステム構成を有するものであり、例えば、主としてユーザプログラム実行機能を司るＣＰＵユニットと、外部機器との信号のやり取りを行う入出力ユニットと、各種のデータ演算等を司る高機能ユニット等をマザーボード上のシステムバスを介して相互に連携して構成されている。
【００３８】
加えて、このＰＬＣ１のユーザプログラムメモリ（図２の１０３）には、ユーザプログラムをプログラムブロック単位で複数格納することができ、しかもユーザプログラムをプログラムブロック単位にて選択的に実行させることを可能とする機能が組み込まれている。なお、格納可能なプログラムブロックの数は数百から数千にも及ぶ場合がある。
【００３９】
サポートツール２は、図示例では、パソコンにサポートツール用ソフトを組み込んでなるシステム構成を有するものである。ここでは、パソコンの画像表示装置がそのままサポートツールのプログラム表示用の表示器を構成することとなり、またキーボードやマウス等がそのままサポートツールの操作手段を構成することとなり、さらにパソコンのメモリがユーザプログラム保存用のメモリを構成することとなる。一般的に、サポートツール用ソフトには、ユーザプログラムの作成や編集をサポートする機能、作成や編集されたユーザプログラムをＰＬＣ側へと転送し、ＰＬＣのユーザプログラムメモリを全体単位又はプログラムブロック単位で書き替える機能、ＰＬＣのユーザプログラムメモリからユーザプログラムをブロック単位又はプログラム全体単位で読み出してメモリに保存し、サポートツールの表示画面に表示させる機能等が組み込まれている。
【００４０】
なお、通信手段を構成するネットワーク３においては、所定のプロトコルを使用したシリアル通信が行われる。
【００４１】
次に、プログラマブルコントローラ全体のハードウェア構成を示すブロック図が図３に示されている。なお、図において、プログラマブルコントローラ１として示されているものは、所謂ビルディングブロック型ＰＬＣのＣＰＵユニットに相当するものであり、また入出力装置４として示されているものは、同ＰＬＣシステムのＩ／Ｏユニットに相当するものである。
【００４２】
同図に示されるように、このプログラマブルコントローラ１は、ＣＰＵ１０１と、システムプログラムメモリ１０２と、ユーザプログラムメモリ１０３と、パラメータメモリ１０４と、ワークメモリ１０５と、Ｉ／Ｏメモリ１０６と、通信インタフェース１０７と、Ｉ／Ｏインタフェース１０８とを含んでいる。
【００４３】
ＣＰＵ１は、マイクロプロセッサや専用周辺ハード等を主体として構成されており、システムプログラムメモリ１０２に格納されたシステムプログラムに従って、プログラマブルコントローラとしての基本的な幾つかの機能を実現するように仕組まれている。
【００４４】
これらの基本的な機能としては、当業者にはよく知られているように、Ｉ／Ｏリフレッシュ処理、ユーザプログラム実行処理、各種の周辺サービス処理等を挙げることができる。
【００４５】
Ｉ／Ｏリフレッシュ処理では、Ｉ／Ｏインタフェース１０８及び入出力装置４を介して外部から取り込まれた入力データにて、Ｉ／Ｏメモリ１０６の該当する入力データの内容を更新すると共に、Ｉ／Ｏメモリの出力データをＩ／Ｏインタフェース１０８及び入出力装置４を介して、外部の該当する出力端子へ送出する処理が実行される。
【００４６】
ユーザプログラム実行処理では、ユーザプログラムメモリ１０３からユーザプログラムを構成する命令語を順に読み出しつつ、Ｉ／Ｏメモリを参照して演算に必要な入出力データの内容を求め、これに基づいて指定された命令を実行してその実行結果でＩ／Ｏメモリ１０６の出力データ、カウント値、タイマ時間等の内容を書き替える処理を実行する。
【００４７】
周辺サービス処理では、通信インタフェース１０７、通信手段（ネットワーク）３を介してサポートツール２や他のＰＬＣとの通情報交換を行ったり、図示しないリモートＩ／Ｏや上位パソコンとの情報交換を行うといった様々な周辺サービス処理を実行する。
【００４８】
システムプログラムメモリ１０２は、ＣＰＵ１０１にて実現されるべき各種の機能に対応するシステムプログラムをそれぞれ格納するものであり、基本的にはＲＯＭで構成されている。
【００４９】
ユーザプログラムメモリ１０３には、例えばマシンベンダー等により作成された、或いはユーザ自身により作成又は修正されたユーザプログラム（アプリケーションプログラムとも言う）が、例えば、図２１に示されるように、プログラムブロック単位にて格納されている。ここで、ユーザプログラム全体としてのプログラムブロックの数は、場合によっては、数百乃至数千にも及ぶ場合が知られている。ユーザプログラムメモリとしては、例えば、フラッシュメモリやバッテリバックアップされたＲＡＭ等が使用される。
【００５０】
アプリケーションプログラムデータの一例を示す説明図が図２５，図２６に示されている。同図に示されるように、この例の場合にあっては、先頭のデータ領域情報に続けて、各プログラムブロックＰＢを格納することにより、アプリケーションプログラムデータが構成されている。データ領域情報は、アプリケーションプログラムデータのデータ構造を示し、プログラムブロック毎の格納場所を表している。毎サイクル起動されるプログラムブロックの一覧情報もここに格納される。従って、先頭のデータ領域情報を参照することにより、特定のプログラムブロックを選択的に実行したり、読み出したり、書き替えたりすることが可能となされている。プログラムブロックのデータは、プログラム運転処理にて実行される命令語群を実行順に格納したものである。なお、プログラムブロックの数に応じて、データ領域の容量も増減する。
【００５１】
プログラムブロックの構造を示す説明図が図２２に示されている。同図に示されるように、各プログラムブロックは、『プログラムブロック識別子』と、『入力パラメータ』と、『出力パラメータ』と、『プログラムブロック本体』とから構成されている。ここで、『プログラムブロック識別子』とは、プログラムブロックのＩＤ番号のことである。プログラムブロックＩＤ番号は、プログラマブルコントローラ内でのユニークな番号が割り付けられる。
【００５２】
『入力パラメータ』とは、プログラムブロック本体の実行のための入力パラメータのことであり、入力データを含んでいる。『出力パラメータ』とは、プログラムブロック本体の実行結果としての出力パラメータのことであり、実行完了フラグと出力データとから構成されている。
【００５３】
『プログラムブロック本体』とは、ラダープログラムなどのプログラムブロックの起動時に実行されるプログラムコード列のことである。
【００５４】
そして、図２５中のプログラムブロック（ＰＢ１０）の具体的に示したものが図２３である。上述のように、プログラムブロックに関するデータ情報が格納されている。図示されているように、プログラムブロック識別子としてＰＢ１０、入力パラメータとしてＤＭ００００、出力パラメータとして実行完了フラグであるＦＬＧ００１０と出力データとしてのＤＭ０００１が格納されている。そして、図２４は、このプログラムブロックＰＢ１０をサポートツール２で表示したときの表示画面イメージである。サポートツールでの表示は、Ａ１欄〜Ａ４欄にわかれていて、Ａ１欄にプログラムブロック識別情報が表示され、Ａ２欄に入力パラメータ、Ａ３欄に出力パラメータが表示される。Ａ４欄はプログラムブロック本体で、図示のようにラダー言語で書かれたラダープログラムが表示される。
【００５５】
プログラムブロックには所定の命令語により作成されたプログラムが格納され、プログラムブロックの実行時、各命令語が順次読み出され、その命令コードに従った演算や処理が行われる。各命令には論理演算や算術演算などの命令が想定されるが、本実施例ではそれらの命令の他に、以下の仕様の命令を新たに用意する。
オペコード：ＲＣＡＬＬＰＢ
オペランド１：プログラマブルコントローラ識別コード
オペランド２：プログラムブロックＩＤ
オペランド３：実行パラメータ
オペランド４：実行結果格納先
【００５６】
オペコードは、『プログラムブロック起動命令』であることを示す識別子となっている。オペランド１は、起動対象のプログラムブロックが格納されているプログラマブルコントローラの識別子である。オペランド２は、起動対象のプログラムブロックの識別子である。オペランド３は、起動対象のプログラムブロックの実行に必要となるパラメータデータである。オペランド４は、起動対象のプログラムブロックの実行結果を格納する自プログラマブルコントローラのメモリアドレスである。
【００５７】
命令動作は、オペランド１，２に指定されたプログラムブロックに対して、オペランド３に指定された実行パラメータを渡し、プログラムブロックがそれを元に実行した結果を受け取り、実行結果をオペランド４に指定されたメモリアドレスに格納するものとする。
【００５８】
上記のオペランド３およびオペランド４は、プログラムブロックの仕様によって、１つであるとは限らない。プログラムブロックの識別子として、そのシステムを構成する全プログラマブルコントローラに対してユニークな識別子を持つことで、オペランド１を省略する仕様も考えられる。
【００５９】
図２に戻って、パラメータメモリ１０４は各種の演算や処理のための各種パラメータを記憶するためのメモリである。このパラメータメモリ１０４には、本発明に関連して、『コントローラ別ネットワークアドレス情報』が格納される。
【００６０】
『コントローラ別ネットワークアドレス情報』の内容を示す説明図が図２８に示されている。この情報は、ネットワーク接続されたプログラマブルコントローラのネットワーク上のアドレスを記憶するためのものであり、『コントローラＩＤ』と『ネットワークアドレス』とを対にして記憶したものである。ここで、『コントローラＩＤ』とはネットワーク接続されているプログラマブルコントローラの識別子のことであり、『ネットワークアドレス』とは各プログラマブルコントローラのネットワーク上のアドレスのことである。
【００６１】
図２に戻って、ワークメモリ１０５は、各種の演算や処理を行うに際して、データの一時記憶領域として使用されるメモリであり、ＲＡＭで構成されるのが通例である。このワークメモリ１０５には、各プログラムブロックの運転状態を示す『プログラムブロックステータス情報』に加えて、本発明に関連する『ネットワーク処理依頼項目情報』が格納される。
【００６２】
『プログラムブロックステータス情報』の一例を示す説明図が図２７に示されている。同図に示されるように、この例にあっては、各プログラムブロックのＩＤ（識別子）とそのプログラムブロックの現在のステータス（『起動』又は『停止』）と処理完了待ちフラグ（『ＯＮ』，『ＯＦＦ』）とを互いに関連付けて記憶することにより、『プログラムブロックステータス情報』が構成されている。この『プログラムブロックステータス情報』は、プログラム運転処理の初回時に例えば全ての又はいくつかのプログラムブロックが『起動』として、ワークメモリ１０５に生成記憶され、プログラム運転処理においては、このエリアの内容に従って各プログラムブロックの運転が実行又は停止に制御される。各ステータスの状態（運転又は停止）は、例えばユーザプログラム中にて使用可能な『プログラムブロック起動命令』や『プログラムブロック停止命令』等により変更することができる。従って、この『プログラムブロックステータス情報』を参照することにより、各プログラムブロックの運転状態が起動か停止かを判別することができる。
【００６３】
『ネットワーク処理依頼項目情報』の格納例を示す説明図が図２９に示されている。『ネットワーク処理依頼項目情報』はコントローラ毎に、コマンド送信用とコマンド／レスポンス受信用とがそれぞれ１個づつ設けられる。この情報は、プログラマブルコントローラにおいて、各処理からネットワーク処理に対して、コマンドの発行を依頼するために用いられる情報であり、『相手先アドレス』と『コマンド』と『パラメータ』とを対にして記憶したものである。
【００６４】
ここで、『相手先アドレス』のレコードは、そのデータ構造は同じであるが、コマンド送信用とコマンド／レスポンス受信用とでは意味が異なる。コマンド送信用ではコマンドを発行する相手のネットワークアドレスのことであり、『コマンド／レスポンス受信用』では発信元のネットワークアドレスのことである。『パラメータ』とはコマンドコードに対するパラメータのことである。ワークメモリ１０５上の本情報格納エリアには、依頼側処理で依頼する内容が記憶される。このエリアへの依頼の追加記憶はエリア先頭から空き領域を検索することで、すでに依頼されている内容の最後に追加する形となる。ネットワーク処理側でエリアの先頭より順次処理し、送信用エリアではコマンド発行が完了すると、コマンド／レスポンス受信用エリアではレスポンスの受領もしくはコマンドの処理が完了すると、その依頼内容を消去し、残りの内容をエリア先頭側に一段つめる。
【００６５】
図２に戻って、Ｉ／Ｏメモリ１０６には、入力データエリアと出力データエリアとカウンタやタイマ等のデータエリア、等が設けられており、先に説明したように、それらのエリアの内容は、ユーザプログラム実行に際して参照並びに必要により書き替えられる。
【００６６】
なお、通信インタフェース１０７並びにＩ／Ｏインタフェース１０８は、通信手段３並びに入出力装置４との接続に際する通信に関する処理を実行するためのものである。この通信インタフェース１０７がプログラマブルコントローラにとってのいわゆる通信部に相当し、後述する『メッセージサービス』により、サポートツール２や他のプログラマブルコントローラ又は上位パソコン等との通信を行う。
【００６７】
次に、入出力装置４は、外部のセンサやスイッチからの信号を取り込むための入力端子と、外部のリレー、モータ、アクチュエータ等を駆動するための信号を出力するための出力端子とを備えている。そして、入力端子から取り込まれた信号は入力データとしてＩ／Ｏメモリ１０６に書き込まれ、出力端子から送出されるべき信号は出力データとしてＩ／Ｏメモリ１０６から読み出される。
【００６８】
次に、サポートツール全体のハードウェア構成を示すブロック図が図３に示されている。同図に示されるように、このサポートツール２は、演算装置２１０と、入力装置２２０と、表示装置２３０とを含んでいる。
【００６９】
中央処理装置２１１は、サポートツールを構成するパソコンの演算処理部に相当するもので、サポートツール全体を統括制御するものである。
【００７０】
メモリ空間２１２には、バラメータデータエリア２１２Ａと、ユーザプログラムデータエリア２１２Ｂと、サポートツールプログラムモジュール２１２Ｃとが含まれている。
【００７１】
パラメータデータエリア２１２Ａには、先に図２９を参照して説明した『ネットワーク処理依頼項目情報』等の各種のパラメータデータが格納される。
【００７２】
ユーザプログラムデータエリア２１２Ｂには、プログラマブルコントローラに転送されるべき、或いはプログラマブルコントローラから転送されてきた、『アプリケーションプログラムデータテーブル』等が格納される。
【００７３】
サポートツールプログラムモジュール２１２Ｃには、中央処理装置２１１が実行する、本サポートツールの各種の機能を実行するためのプログラムが格納される。
【００７４】
表示装置用メモリ２１３は、表示装置２３０に出力される情報が格納されるメモリであり、このメモリに対する情報の書き込みは中央処理装置２１１により行われる。
【００７５】
内部バス２１４は、中央処理装置２１１がメモリ空間２１２、入力装置２２０、表示装置用メモリ２１３にアクセスするためのインタフェースとして機能するものである。また、通信用インタフェース２１５は、プログラマブルコントローラとの通信を行うためのインタフェースとして機能するものである。
【００７６】
入力装置２２０は、ユーザの要求をインタフェース（ＧＵＩを含む）を介して取得する装置であり、この例では、パソコンに備えられたキーボードや各種のポインティングデバイス等で構成されている。
【００７７】
表示装置２３０は、表示装置用メモリ２１３の状態をインタフェースを介して表示する装置であり、この例では、パソコンに備えられたＣＲＴ表示器やＬＣＤ等がこれに相当する。
【００７８】
先に説明したように、この実施形態のＰＬＣシステムにあっては、ネットワーク上では、『メッセージサービス』によりＰＬＣ同志で情報交換を行い、それを使用して相手先に各種の要求を発行する。『メッセージサービス』は、サポートツールとプログラマブルコントローラとの間の情報交換にも使用される。『メッセージサービス』にて使用される各メッセージは、該当するコマンドに相手先のネットワークアドレスを付加することにより構成され、この相手先ネットワークアドレスにより受信先が特定される。
【００７９】
次に、この実施形態において、ネットワーク上で使用されるメッセージサービスコマンドの具体例を順次に説明する。この実施形態においては、『プログラムブロック起動＆結果取得コマンド』、『プログラムブロック起動コマンド』、『プログラムブロック実行結果取得コマンド』、『プログラムブロック書込コマンド』、『プログラムブロック解除コマンド』からなる５個のメッセージコマンドが新たに定義される。
【００８０】
(1)『プログラムブロック起動＆結果取得コマンド』
送信コマンドのパラメータは、『相手プログラマブルコントローラのプログラムブロックＩＤ』と『実行パラメータデータ』となる。受信レスポンスの内容は、『正常終了コードと実行結果データ』となるが、何らかの理由で処理が正常に完了しなかった場合は、『エラー終了』となる。
【００８１】
(2)『プログラムブロック起動コマンド』
送信コマンドのパラメータは、『相手コントローラのプログラムブロックＩＤ』と『実行パラメータデータ』となる。受信レスポンスの内容は、『正常終了コード』となるが、何らかの理由で正常に完了しなかった場合は、『エラー終了』となる。
【００８２】
(3)『プログラムブロック実行結果取得コマンド』
送信コマンドのパラメータは、『相手コントローラのプログラムブロックＩＤ』となる。受信レスポンスの内容は、『正常終了コード』と『実行結果データ』又は『エラー終了』（実行未完その他）となる。
【００８３】
(4)『プログラムブロック書込コマンド』
送信コマンドのパラメータは、『プログラムブロックＩＤ番号』と『プログラムブロックデータ』となる。受信レスポンスの内容は、『正常終了コード』となるが、何らかの理由で処理が正常に完了しなかった場合は、『エラー終了コード』となる。
【００８４】
(5)『プログラムブロック削除コマンド』
送信コマンドのパラメータは、『プログラムブロックＩＤ番号』となる。受信レスポンスの内容は、『正常終了コード』となるが、何らかの理由で処理が正常に完了しなかった場合は、『エラー終了コード』となる。
【００８５】
次に、以上説明したハードウェア並びにネットワーク上の『メッセージサービス』を前提としつつ、プログラマブルコントローラ１並びにサポートツール２のシステムプログラムの内容を図４以下のフローチャート並びに画面説明図等を参照して説明することにより、本発明システムの機能を明らかにする。
【００８６】
プログラマブルコントローラ１に組み込まれたシステムプログラムの全体を概略的に示すゼネラルフローチャートが図４に示されている。同図において、電源投入により処理が開始されると、まず電源ＯＮ初期処理（ステップ４０１）が実行されて、各種のフラグやレジスタ類の初期設定などが実行される。
【００８７】
その後、図示しないプログラム運転状態フラグの内容が繰り返し参照され（ステップ４０３）、その状態が『運転可能』とされるまでの間（ステップ４０３ＮＯ）、共通処理（ステップ４０２）、Ｉ／Ｏリフレッシュ処理（ステップ４０５）、ネットワーク処理つまり、周辺サービス処理（ステップ４０６）が順次繰り返し実行され、その間においてはプログラム運転処理（ステップ４０４）はスキップされる。
【００８８】
この状態において、プログラム運転状態フラグの状態が『運転可能』になると、その前の共通処理（ステップ４０２）の実行を経て、ステップ４０３が「ＹＥＳ」となり、プログラム運転実行（ステップ４０４）、Ｉ／Ｏリフレッシュ処理（ステップ４０５）、ネットワーク処理（ステップ４０６）が実行されるようになる。
【００８９】
尚、共通処理（ステップ４０２）とは、プログラムが運転中であるか停止中であるかに拘わらず必要とされる処理であり、Ｉ／Ｏリフレッシュ処理（ステップ４０５）とは、先に説明したように、Ｉ／Ｏインタフェース１０８及び入出力装置４を介して外部から取り込まれた入力データにて、Ｉ／Ｏメモリ１０６の該当する入力データの内容を更新すると共に、Ｉ／Ｏメモリの出力データをＩ／Ｏインタフェース１０８及び入出力装置４を介して、外部の該当する出力端子へと送出する処理である。
【００９０】
次に、プログラム運転処理の詳細を示すフローチャートが図５に示されている。同図において、処理が開始されると、まず実行の初回に限り（ステップ５０１ＹＥＳ）、プログラムブロックステータス情報を新たに生成する処理が実行される（ステップ５０２）。先に説明したように、この処理（ステップ５０２）では、図２７に示されるプログラムブロックステータス情報の内容は、例えば全ての又はいくつかのプログラムブロックに関して例えば『起動』に設定される。
【００９１】
その後、プログラムブロックステータス情報の先頭レコードから（ステップ５０３）、末尾のレコードに至るまで（ステップ５１５ＮＯ）、順次レコードの読み出しが行われる（ステップ５１４）。
【００９２】
読み出されたレコードのステータスが『起動』に設定されている場合に限り（ステップ５０４ＹＥＳ）、入力パラメータの読み込みを行った後（ステップ５０７）、該当するプログラムブロック内の命令が順次読み出されて実行され（ステップ５０８，５０９）、最終命令の読み出し実行が完了するまでの間（ステップ５１０ＮＯ）、次のプログラムブロックに関して、同様な命令の読み出し並びに実行処理が進められる（ステップ５０８，５０９）。なお、これら読み出し処理の初回に限り（ステップ５０５ＹＥＳ）、実行完了フラグがＯＦＦとされる（ステップ５０６）。一方、最終命令が読み出された場合には（ステップ５１０ＹＥＳ）、実行完了であることを条件として（ステップ５１１ＹＥＳ）、実行完了フラグがＯＮとされる（ステップ５１２）。
【００９３】
その後、実行結果を出力パラメータに書き出す処理（ステップ５１３）並びにプログラムブロックステータス情報の次のレコードを読み出す処理（ステップ５１４）を実行し、以上の処理が残レコードなしと確認されるまで（ステップ５１５ＹＥＳ）、繰り返される。
【００９４】
このようにして、プログラムブロックステータス情報の最後のレコードに関し、命令の読み出し並びに実行処理が完了すると、プログラム運転処理の一巡実行が全て完了する。
【００９５】
以上の処理から明らかなように、例えばユーザプログラム中において、『プログラムブロック起動命令』及び『プログラムブロック停止命令』を適切に使用して、各プログラムブロックのステータスを『起動』または『停止』に設定することにより、ユーザプログラムの実行と連動させて、各プログラムブロックの運転を起動又は停止させ、すなわち選択的にプログラムブロックを実行させることができるのである。
【００９６】
次に、ネットワーク処理の詳細を示すフローチャートが図６に示されている。このネットワーク処理では、サポートツール又は他のプログラマブルコントローラからのコマンドの受信状態、他処理からのネットワーク処理依頼の状態等に応じて、（１）サポートツール及び他プログラマブルコントローラからのコマンドに従った処理、（２）他処理からのネットワーク処理依頼内容に従ったコマンド発行処理、（３）発行したコマンドに対するレスポンスに従った処理、の３通りの処理が行われる。コマンドやレスポンスの受信自体は割込処理にて行われ、ワークメモリ１０５上の一時記憶エリアに記憶されているものとする。
【００９７】
図６において処理が開始されると、受信コマンド又はレスポンスが存在するか否かの判定が行われる（ステップ６００，６０１）。受信コマンド又はレスポンスが存在するか否かの判断は、コマンド／レスポンス受信用のネットワーク処理依頼項目記憶エリアに『ネットワーク処理依頼項目情報』のデータが存在するか否かで判別される。このとき受信コマンド又はレスポンスが存在すれば（ステップ６０１ＹＥＳ）、その受信コマンド又はレスポンスを解析し（ステップ６０２）、各コマンド及びレスポンス別の処理へと移行する（ステップ６０３−１，６０３−２〜６０３−ｎ）。
【００９８】
先に説明したように、この実施の形態においては、『プログラムブロック起動＆結果取得コマンド』、『プログラムブロック起動コマンド』、『プログラムブロック実行結果取得コマンド』、『プログラムブロック書込コマンド』、及び『プログラムブロック削除コマンド』からなる５種類のコマンドが新たに用意されている。
【００９９】
『プログラムブロック起動＆結果取得コマンド』の対応処理の詳細を示すフローチャート（その１及びその２）が図７及び図８に示されている。
【０１００】
図７において処理が開始されると、プログラムブロック処理完了待ちの状態となる。なお、『プログラムブロック処理完了待ち』の判断は、図２７に示される情報テーブルの該当プログラムブロックの『処理完了待ち』のレコードによって判断するものとする。ＯＮで処理の完了を待っている状態、ＯＦＦで処理完了を待っていない状態を表す。
【０１０１】
ここで、プログラムブロック処理完了待ちではないと判断されると（ステップ７０１ＮＯ）、ステップ７０２では、コマンドパラメータの『相手コントローラのプログラムブロックＩＤ』を読み込む。
【０１０２】
ステップ７０３では、『アプリケーションプログラムデータ』のデータ領域情報より指定のプログラムブロックデータ位置を取得し、その位置からデータを読み出す。
【０１０３】
続くステップ７０４では、指定プログラムブロックがないか否かの判定が行われる。ここで指定プログラムブロックなしとの判断が行われると（ステップ７０４ＹＥＳ）、図８に進んで、コマンド発行元に対しエラーレスポンスを返信して（ステップ８０７）、処理が終了する。
【０１０４】
これに対して、指定プログラムブロックありとの判断が行われると（ステップ７０４ＮＯ）、ステップ７０５では、プログラムブロックの入力パラメータに、コマンドパラメータの『実行パラメータデータ』をセットする。
【０１０５】
ステップ７０６では、『プログラムブロックステータス情報』（図２７参照）の該当プログラムブロックＩＤのステータスを起動に変更する。
【０１０６】
続くステップ７０７では、プログラムブロック処理完了待ちを記憶し、その後一旦処理を中断する。
【０１０７】
一方、ステップ７０１において、プログラムブロック処理完了待ちであると判定されると（ステップ７０１ＹＥＳ）、図８へ進んで、該当プログラムブロックの実行完了フラグがＯＮであるか否かが判定される（ステップ８０１）。なお、この判定に先立ち、コマンドパラメータの相手コントローラのプログラムブロックＩＤを読み込み（ステップ８００−１）、『アプリケーションプログラムデータ』のデータ領域情報より指定のプログラムブロックデータを取得し（ステップ８００−２）、出力パラメータの実行完了フラグの状態を参照する（ステップ８００−３）。すなわち、『（該当プログラムブロックの）実行完了フラグ』は、個々のプログラムブロック出力パラメータに定義されており、ＯＮで実行が完了している状態、ＯＦＦで実行が未完もしくは実行されていない状態を表す。ここで、該当プログラムブロックの実行完了フラグがＯＮでないと判断されると（ステップ８０１ＮＯ）、図７へ戻って、一旦処理を中断する。
【０１０８】
これに対して、ステップ８０１において、該当プログラムブロックの実行完了フラグＯＮとの判断が行われると（ステップ８０１ＹＥＳ）、続くステップ８０２においては、該当プログラムブロックの出力パラメータデータを読み出し、コマンドのレスポンスデータ『実行結果データ』としてセットする。
【０１０９】
ステップ８０３では、該当プログラムブロックの実行完了フラグをＯＦＦさせる。ステップ８０４では、『プログラムブロックステータス情報』の該当プログラムブロックＩＤのステータスを停止に変更する。ステップ８０５では、プログラムブロック処理完了待ちを解除する。
【０１１０】
ステップ８０６では、正常レスポンスと共にデータを返信し、処理を終了する。
【０１１１】
以上説明した、図７及び図８の処理が実行される結果、『プログラムブロック起動＆結果取得コマンド』が受信されると、指定のプログラムブロックが自動的に起動され、『実行結果データ』がコマンド発行元へと返送される。
【０１１２】
次に、『プログラムブロック起動コマンド』の対応処理の詳細を示すフローチャートが図９に示されている。同図において処理が開始されると、ステップ９０１では、コマンドパラメータの『相手コントローラのプログラムブロックＩＤ』を読み込む。
【０１１３】
ステップ９０２では、『アプリケーションプログラムデータ』のデータ領域情報より指定のプログラムブロックデータ位置を取得し、その位置からデータを読み出す。
【０１１４】
続くステップ９０３では、指定プログラムブロックがないか否かの判定が行われる。ここで、指定プログラムブロックなしと判断されると（ステップ９０３ＹＥＳ）、コマンド発行元に対してエラーレスポンスを返信し（ステップ９０７）、処理を終了する。
【０１１５】
これに対して、ステップ９０３において、指定プログラムブロックありと判断されると（ステップ９０３ＮＯ）、ステップ９０４では、プログラムブロックの入力パラメータに、コマンドパラメータの『実行パラメータデータ』をセットする。ステップ９０５では、『プログラムブロックステータス情報』の該当プログラムブロックＩＤのステータスを起動に変更する。最後に、ステップ９０６では、正常レスポンスと共にデータを返信し、処理を終了する。
【０１１６】
以上説明した図９のプログラムが実行される結果、『プログラムブロック起動コマンド』が受信されると、指定のプログラムブロックが自動的に起動され、プログラムが起動された旨のレスポンスがコマンド発行元に対して返送される。
【０１１７】
次に、『プログラムブロック実行結果取得コマンド』の対応処理の詳細を示すフローチャートが図１０に示されている。同図において処理が開始されると、ステップ１００１では、コマンドパラメータの『相手コントローラのプログラムブロックＩＤ』を読み込む。
【０１１８】
ステップ１００２では、『アプリケーションプログラムデータ』のデータ領域情報より指定のプログラムブロックデータ位置を取得し、その位置化からデータを読み出す。
【０１１９】
その後、ステップ１００３では、指定プログラムブロックなしか否かが判定される。ここで、指定プログラムブロックなしと判断されると（ステップ１００３ＹＥＳ）、コマンド発行元に対してエラーレスポンスを返信し（ステップ１０１０）、処理を終了する。
【０１２０】
これに対して、ステップ１００３において、指定プログラムブロックありと判断されると（ステップ１００３ＮＯ）、さらに、ステップ１００４においては、該当プログラムブロックの実行完了フラグがＯＮであるか否かの判定が行われる。なお、この判定に先立ち、『アプリケーションプログラムデータ』のデータ領域情報より指定のプログラムブロックデータを取得し、出力パラメータの実行完了フラグの状態を参照する（ステップ１００３−１）。ここで該当プログラムブロックの実行完了フラグがＯＮでないと判断されると（ステップ１００４ＮＯ）、コマンド発行元に対し『実行未完』エラーレスポンスを返信して（ステップ１００９）、処理を終了する。
【０１２１】
一方、ステップ１００４において、該当プログラムブロックの実行完了フラグがＯＮであると判断されると（ステップ１００４ＹＥＳ）、ステップ１００５においては、該当プログラムブロックの出力パラメータデータを読み出し、コマンドのレスポンスデータ『実行結果データ』としてセットする。
【０１２２】
ステップ１００６においては、該当プログラムブロックの実行完了フラグをＯＦＦする。ステップ１００７においては、『プログラムブロックステータス情報』の該当プログラムブロックＩＤのステータスを停止に変更する。最後に、ステップ１００８においては、正常レスポンスと共にデータを返信し、全ての処理を終了する。
【０１２３】
以上説明した図１０のプログラムが実行される結果、『プログラムブロック実行結果取得コマンド』が受信されると、プログラムブロック実行結果に相当するデータがコマンド発行元に対して返信される。
【０１２４】
次に、『プログラムブロック書込コマンド』の対応処理の詳細を示すフローチャートが図１１に示されている。同図において処理が開始されると、ステップ１１０１では、『アプリケーションプログラムデータ』のデータ領域情報よりプログラムブロックの挿入位置を取得する。
【０１２５】
続くステップ１１０２では、コマンドパラメータに指定されたプログラムブロックＩＤが既に存在するか否かの判定が行われる。ここで、コマンドパラメータに指定されたプログラムブロックＩＤが既に存在するものと判断されれば（ステップ１１０２ＹＥＳ）、コマンド発行元に対してエラーレスポンスを返信し（ステップ１１０７）、処理を終了する。
【０１２６】
これに対して、ステップ１１０２において、コマンドパラメータに指定されたプログラムブロックＩＤが未だ存在しないと判断されると（ステップ１１０２ＮＯ）、ステップ１１０３においては、上記挿入位置に、コマンドパラメータに指定されたプログラムブロックＩＤとして、同じくコマンドパラメータのプログラムブロックデータを書き込む。
【０１２７】
ステップ１１０４では、『アプリケーションプログラムデータ』のデータ領域情報を更新する。ステップ１１０５では、『プログラムブロックステータス情報』に書き込んだ該当プログラムブロックＩＤを追加し、ステータスを停止に設定変更する。最後に、ステップ１１０６では、正常レスポンスと共にデータを返信し、処理を終了する。
【０１２８】
以上説明した図１１のプログラムが実行される結果、『プログラムブロック書込コマンド』が受信された場合、コマンドパラメータで指定されたプログラムブロックが『アプリケーションプログラムデータ』に自動的に追加される。
【０１２９】
次に、『プログラムブロック削除コマンド』の対応処理の詳細を示すフローチャートが図１２に示されている。同図において、処理が開始されると、ステップ１２０１では、『アプリケーションプログラムデータ』のデータ領域情報よりコマンドパラメータに指定されたプログラムブロックの位置を取得する。
【０１３０】
続くステップ１２０２では、指定されたプログラムブロックがないか否かの判定が行われる。ここで、指定されたプログラムブロックがないと判断されると（ステップ１２０２ＹＥＳ）、コマンド発行元に対してエラーレスポンスを返信し（ステップ１２０７）、処理を終了する。
【０１３１】
これに対して、ステップ１２０２において、指定されたプログラムブロックが存在すると判断されると（ステップ１２０２ＮＯ）、ステップ１２０３では、該当のプログラムブロックデータを削除する。
【０１３２】
ステップ１２０４では、『アプリケーションプログラムデータ』のデータ領域情報を更新する。ステップ１２０５では、『プログラムブロックステータス情報』から削除したプログラムブロックＩＤのレコードを削除する。最後に、正常レスポンスと共にデータを返信し（ステップ１２０６）、処理を終了する。
【０１３３】
以上説明した図１２のプログラムが実行される結果、『プログラムブロック削除コマンド』が受信された場合、『アプリケーションプログラムデータ』の指定されたプログラムブロックが自動的に削除される。
【０１３４】
次に、プログラマブルコントローラ側から発行される『プログラムブロック起動命令』の対応処理の詳細を示すフローチャート（その１及びその２）が図１３及び図１４に示されている。この処理は、あるコントローラＡから別のコントローラＢ上のプログラムブロックを起動するという流れにおける一連の処理の一部を説明したものである。その一連の流れとは、コントローラＡのプログラム運転処理の中で、プログラムブロック起動命令（ＲＣＡＬＬＰＢ命令）が実行されることがきっかけとなり、この命令の処理としてそのオペランド情報をもとにコントローラＡ『ネットワーク処理依頼項目情報』にデータが格納され、それを受けてコントローラＡのネットワーク処理でコントローラＢ宛にコマンドが発行される（図６ステップ６０６〜６０８参照）。以下の説明は、このＲＣＡＬＬＰＢ命令でコントローラＡが処理する内容を示している。
【０１３５】
図１３において、処理が開始されると、ステップ１３０１では、コマンド発行中であるか否かの判定が行われる。ここで、コマンド発行中ではないと判断されると（ステップ１３０１ＮＯ）、ステップ１３０２では、『コントローラ別ネットワークアドレス情報』（図２８参照）よりオペランド１のコントローラ識別コードに相当するコントローラのネットワークアドレスを照会する。コマンド発行中であるか否かは、ワークメモリ上に命令毎に記憶領域をもち、そのエリアを参照することにより判断される。
【０１３６】
ステップ１３０３では、『ネットワーク処理依頼項目記憶エリア』に上記アドレスとオペランド２〜３のデータをセットする。
【０１３７】
続くステップ１３０４では、指定プログラムブロックなしであるか否かの判定が行われる。ここで指定プログラムブロックなしとの判断が行われると（ステップ１３０４ＹＥＳ）、直ちに処理は終了する。これに対して、ステップ１３０４において、指定プログラムブロックありとの判断が行われると（ステップ１３０４ＮＯ）、ステップ１３０５においては、プログラムブロックの入力パラメータに、コマンドパラメータの『実行パラメータデータ』をセットする。続くステップ１３０６では、コマンド発行中を記憶し、処理を終了する。
【０１３８】
一方、ステップ１３０１において、コマンド発行中であると判断されると（ステップ１３０１ＹＥＳ）、図１４に進んで、ステップ１４０１においては、コマンドに対するレスポンスありか否かの判定が行われる。ここで、コマンドに対するレスポンスなしと判断されると（ステップ１４０１ＮＯ）、図１３に戻って直ちに処理は終了する。
【０１３９】
これに対して、ステップ１４０１において、コマンドに対するレスポンスありと判断されると（ステップ１４０１ＹＥＳ）、続くステップ１４０２においては、エラーレスポンスであるか否かの判定が行われる。ここで、エラーレスポンスであると判断されると（ステップ１４０２ＹＥＳ）、図１３へ戻って処理は終了する。
【０１４０】
これに対して、ステップ１４０２においてエラーレスポンスではないと判断されると（ステップ１４０２ＮＯ）、ステップ１４０３では、レスポンスパラメータより『実行結果データ』をオペランド４に示されるメモリアドレスにセットする。
【０１４１】
最後に、ステップ１４０４では、コマンド発行中を解除し、図１３に戻って処理は終了する。
【０１４２】
以上説明した図１３及び図１４のプログラムが実行される結果、『プログラムブロック起動コマンド』が受信されると、指定されたプログラムブロックが自動的に実行されることとなる。
【０１４３】
尚、受信コマンドやレスポンスが存在しない場合には（ステップ６０１ＮＯ）、受信コマンド／レスポンス解析処理（ステップ６０２）及び各コマンド及びレスポンス別の処理（ステップ６０３−１，６０３−２〜６０３−ｎ）はスキップされる。
【０１４４】
続くステップ６０４では、ワークメモリ１０５内のコマンド送信用のネットワーク処理依頼項目記憶エリアから、ネットワーク処理依頼項目情報を読み出す。
【０１４５】
ネットワーク処理依頼項目情報（ワークエリア内のネットワーク処理依頼項目記憶エリアの内容）の格納例を示す説明図が図２９に示されている。同図に示されるように、ネットワーク処理依頼項目情報は、『相手先アドレス』と『コマンド』と『パラメータ』とを互いに関連づけて記憶することで構成されている。図の例では、記憶エリアの先頭には、『相手先アドレス』としてプログラマブルコントローラＡが、『コマンド』としてプログラムブロック起動＆結果取得が、さらに『パラメータ』としてＰＢ１０，Ｄａｔａ  ＡＢＣＤがそれぞれ格納されており、２番目以降の領域については（空き）とされている。
【０１４６】
図６に戻って、続くステップ６０５では、図２９に示されるネットワーク処理依頼項目記憶エリアの内容が参照されて、処理依頼の有無が判定される。ここで処理依頼があれば（ステップ６０５ＹＥＳ）、先頭の依頼を読み出す処理（ステップ６０６）、コマンドを生成して送信する処理（ステップ６０７）、及びネットワーク処理依頼項目記憶エリアを一段つめる処理（ステップ６０８）が順次実行される。これにより、当該プログラマブルコントローラから他のプログラマブルコントローラあるいはサポートツールなどに対して、ネットワーク処理依頼項目情報で規定される各種のコマンドが発行されることとなる。
【０１４７】
尚、処理依頼なしと判定された場合には（ステップ６０５ＮＯ）、上述の先頭の依頼を読み出す処理（ステップ６０６）、コマンドを生成して送信する処理（ステップ６０７）及びネットワーク処理依頼項目記憶エリアを一段つめる処理（ステップ６０８）がスキップされる。
【０１４８】
次に、サポートツールの動作を実現するためのシステムプログラムについて説明する。
【０１４９】
第１実施例（サポートツールからのプログラムブロック起動とその結果の同時取得作業）におけるサポートツールの動作を実現するためのシステムプログラムの全体構成を示すフローチャート（その１及びその２）が図１５及び図１６に示されている。
【０１５０】
図１５において処理が開始されると、ステップ１５０１においては、起動時処理処理が実行されて、各種フラグやレジスタ類の初期設定が行われる。
【０１５１】
ステップ１５０２においては、機能選択画面が表示される。この機能選択画面には、選択肢として、『プログラムブロック作成機能』、『プログラムブロック起動／同時結果取得機能』の他、様々な機能が含まれている。
【０１５２】
ステップ１５０３においては、それら画面に表示された機能の中で、所望の機能をオペレータは選択する。
【０１５３】
機能選択処理（ステップ１５０３）において、『プログラムブロック作成機能』が選択されると（ステップ１５０４ＹＥＳ）、それに続いて、公知のプログラムブロック作成機能処理（ステップ１５０５）が実行されて、プログラム作成に必要な各種のサポート機能が実現される。
【０１５４】
図１６に進んで、『プログラムブロック起動／同時結果取得機能』が選択された場合には（ステップ１６０１ＹＥＳ）、それに続いて、プログラムブロック起動／同時結果取得機能処理が実行される（ステップ１６０２）。
【０１５５】
同様にして、様々な機能の選択並びに対応する処理が実行可能となっており、図示しない終了操作が行われると（ステップ１６０３ＹＥＳ）、公知の終了処理（ステップ１６０４）を実行して、処理は終了する。
【０１５６】
次に、第２実施例（サポートツールからのプログラムブロック起動とその結果の別途取得作業）におけるサポートツールの動作を実現するためのシステムプログラムの全体構成を示すフローチャート（その１及びその２）が図１７及び図１８に示されている。
【０１５７】
図１７において、処理が開始されると、ステップ１７０１では、起動時初期処理が実行されて、各種フラグやレジスタ類の初期設定が行われる。
【０１５８】
続くステップ１７０２では、機能選択画面が表示され、機能選択を待機する状態となる。ここでは、『プログラムブロック作成機能』、『プログラムブロック起動機能』、『プログラムブロック実行結果取得機能』などが選択肢として表示される。
【０１５９】
ステップ１７０３においては、それら選択肢の中で、所望のものについて、オペレータは機能選択を行う。
【０１６０】
ここで、『プログラムブロック作成機能』が選択されると（ステップ１７０４ＹＥＳ）、公知のプログラムブロック作成機能処理（ステップ１７０５）が実行される。
【０１６１】
また、『プログラムブロック起動機能』が選択されると（ステップ１７０６ＹＥＳ）、本発明と関連するプログラムブロック起動機能処理（ステップ１７０７）が実行される。
【０１６２】
図１８に進んで、『プログラムブロック実行結果取得機能』が選択されると（ステップ１８０１ＹＥＳ）、本発明に関連するプログラムブロック実行結果取得機能処理（ステップ１８０２）が実行される。
【０１６３】
オペレータが所定の終了操作を行うと（ステップ１８０３ＹＥＳ）、公知の終了処理（ステップ１８０４）が実施されて、処理は終了する。
【０１６４】
次に、第３実施例（サポートツールからのプログラムブロック追加／削除作業）におけるサポートツールの動作を実現するためのシステムプログラムの全体構成を示すフローチャート（その１及びその２）が図１９及び図２０に示されている。
【０１６５】
図１９において処理が開始されると、ステップ１９０１においては、起動時初期処理が実施され、各種フラグやレジスタ類の初期設定が行われる。
【０１６６】
ステップ１９０２では、機能選択画面が表示され、この画面上には、『プログラムブロック作成機能』、『プログラムブロック送信＆実行機能』などが選択肢として表示される。
【０１６７】
オペレータがそれらの１つの機能を選択すると（ステップ１９０３）、選択された機能が『プログラムブロック作成機能』であれば（ステップ１９０４ＹＥＳ）、公知のプログラムブロック作成機能が実行される（ステップ１９０５）。
【０１６８】
また選択された機能が、『プログラムブロック送信＆実行機能』であれば（ステップ２００１ＹＥＳ）、プログラムブロック送信＆実行機能（ステップ２００２）が実行される。
【０１６９】
その後、所定の終了操作が行われれば（ステップ２００３ＹＥＳ）、終了処理（ステップ２００４）を経て、処理は終了する。
【０１７０】
最後に、以上説明したプログラマブルコントローラ（ＰＬＣ）並びにサポートツールの動作を利用してオペレータが具体的に行なう作業の実施例を４通りについて説明する。
［実施例１：サポートツールからのプログラムブロック起動と結果の同時取得］
【０１７１】
(1)プログラマブルコントローラＡおよびサポートツールからなるシステムを構成する（図１のシステム構成１参照）。
【０１７２】
(2)プログラマブルコントローラＡにはアプリケーションプログラムとして、図２１（ａ）のように分割されたプログラムブロック（ＰＢ１０，ＰＢ１１，ＰＢ１２）が格納されている。プログラマブルコントローラＡに記憶されているアプリケーションプログラムデータの内容は、図２５のような状態である。
【０１７３】
(3)プログラムブロックのうち、ＰＢ１０は停止状態で、ＰＢ１１およびＰＢ１２は起動中であるとする。
【０１７４】
(4)操作者はサポートツールを用いて、『プログラムブロック起動／結果取得』機能により、プログラマブルコントローラＡのＰＢ１０を指定し、実行のためのパラメータを入力したうえでプログラマブルコントローラに処理を依頼する（図３１の画面参照）。尚、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、３１０１はコントローラＩＤ表示領域、３１０２はプログラムブロック表示領域、３１０３は実行パラメータ表示領域、３１０４はＯＫ選択ボタン、３１０５はキャンセル選択ボタンである。このときサポートツールは、プログラマブルコントローラＡに対し、ネットワークを介して、『プログラムブロック起動＆結果取得』コマンドを発行する（ステップ１５０３，１６０１，１６０２）。
【０１７５】
(5)プログラマブルコントローラＡは上記コマンドを受けて、コマンドに添えられたパラメータを入力パラメータに格納し、ＰＢ１０を起動状態とする（ステップ７０５，７０６）。仮にＰＢ１０がプログラマブルコントローラＡ内に存在しなければエラーレスポンスを返信する（ステップ８０７）。この処理はネットワーク処理において行われる。
【０１７６】
(6)プログラマブルコントローラＡは以降のプログラム運転処理でＰＢ１０に関して、初期実行時のみ実行完了フラグをＯＦＦしたうえで実行を開始する。そして処理が完了した時点で実行完了フラグをＯＮするとともに、実行結果を出力パラメータに格納する。なお、処理の完了には複数の実行サイクルを要する場合も考えられる。
【０１７７】
(7)プログラマブルコントローラＡはネットワーク処理にて、実行完了フラグのＯＮを確認し（ステップ８０１）、出力パラメータとして保存されたデータを、先の『プログラムブロック起動＆結果取得』コマンドのレスポンスとして、サポートツールに返信するとともにＰＢ１０を停止状態とする（ステップ８０２，８０３，８０４）。
【０１７８】
(8)サポートツールは、プログラマブルコントローラＡからのレスポンスを受けて、返信されたデータを実行結果として表示する（図３２の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ２は詳細表示領域、３２０１はＯＫ選択ボタンである。レスポンスがエラーであった場合は、エラー画面を表示する（図３３の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ２は詳細表示領域、３３０１はＯＫ選択ボタンである。
［実施例２：サポートツールからのプログラムブロック起動と結果の別途取得］
【０１７９】
(1)プログラマブルコントローラＡおよびサポートツールからなるシステムを構成する（図１のシステム構成１参照）。
【０１８０】
(2)プログラマブルコントローラＡにはアプリケーションプログラムとして、図２１（ａ）のように分割されたプログラムブロック（ＰＢ１０，ＰＢ１１，ＰＢ１２）が格納されている。プログラマブルコントローラＡに記憶されているアプリケーションプログラムデータは図２５のような状態である。
【０１８１】
(3)プログラムブロックのうち、ＰＢ１０は停止状態で、ＰＢ１１およびＰＢ１２は起動中であるとする。
【０１８２】
(4)操作者はサポートツールを用いて、『プログラムブロック起動』機能により、プログラマブルコントローラＡのＰＢ１０を指定し、実行のためのパラメータを入力したうえでプログラマブルコントローラに処理を依頼する（図３４の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ２は詳細表示領域、３４０１はコントローラＩＤ表示領域、３４０２はプログラムブロックＩＤ表示領域、３４０３は実行パラメータ表示領域、３４０４はＯＫ選択ボタン、３４０５はキャンセル選択ボタンである。このときサポートツールはプログラマブルコントローラＡに対しネットワークを介して、『プログラムブロック起動』コマンドを発行する（ステップ１７０３，１７０６，１７０７）。
【０１８３】
(5)プログラマブルコントローラＡは上記コマンドを受けて、コマンドに添えられたパラメータを入力パラメータに格納しＰＢ１０を起動状態とする（ステップ９０４，９０５）。この処理はネットワーク処理において行われ、上記処理が完了した時点で正常終了のレスポンスをサポートツールに返信する（ステップ９０６）。仮にＰＢ１０がプログラマブルコントローラＡ内に存在しなければエラーレスポンスを返信する（ステップ９０７）。
【０１８４】
(6)プログラマブルコントローラＡは以降のプログラム運転処理でＰＢ１０に関して、初回実行時のみ実行完了フラグをＯＦＦしたうえで実行を開始する。そして処理が完了した時点で実行完了フラグをＯＮするとともに、実行結果を出力パラメータに格納する。なお、処理の完了には複数の実行サイクルを要する場合も考えられる。
【０１８５】
(7)プログラマブルコントローラＡ側で正常にＰＢ１０が起動されたことを示すレスポンスが戻れば、サポートツールは実行の成功を表示し、結果取得の実行の要否を操作者に尋ねる（図３５の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、３５０１はＯＫ選択ボタン、３５０２はキャンセル選択ボタンである。操作者は続けて結果取得を実行しても、ここで一旦ツールの機能を終了し、別途結果を取得するために『プログラムブロック実行結果取得』機能を使っても構わない。仮にエラーレスポンスが返った場合は、画面にエラーを表示する（図３６の画面参照）。なお、なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、３６０１はＯＫ選択ボタン、３５０２はキャンセル選択ボタンである（ステップ１７０３，１８０１，１８０２）。
【０１８６】
(8)続けて結果取得を実行するよう操作者が指示入力した場合は、サポートツールはプログラマブルコントローラＡに対し、ＰＢ１０をパラメータとして『プログラムブロック実行結果取得』コマンドを発行する。
【０１８７】
(9)プログラマブルコントローラＡは上記コマンドを受けて、ＰＢ１０の実行完了フラグがＯＮしているか否かを確認する。実行完了フラグがＯＮしている場合は、出力パラメータとして保存されたデータをコマンドのレスポンスとして、サポートツールに返信するとともにＰＢ１０を停止状態とする。実行完了フラグがＯＮしていない場合は、コマンドのレスポンスとして『実行未完』のエラーを返信する。
【０１８８】
(10)サポートツールは、プログラマブルコントローラＡからのレスポンスを受けて、返信された結果を表示する（図３７の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、３７０１はＯＫ選択ボタンである。仮にエラーレスポンスが返った場合は、画面にエラーを表示し、再実行を促す（図３８の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、３８０１はＯＫ選択ボタン、３８０２はキャンセル選択ボタンである。
【０１８９】
(11)操作者が指定のプログラムブロックの起動で一旦機能を終了し、改めてプログラムブロックの実行結果を取得するために、『プログラムブロック実行結果取得』機能を使用する場合は、プログラムブロックを改めて指定することになる（図３９の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、３９０１はＯＫ選択ボタン、３９０２はキャンセル選択ボタンである。サポートツールはプログラマブルコントローラＡに対し、ＰＢ１０をパラメータとして『プログラムブロック実行結果取得』コマンドを発行する（ステップ１７０３，１８０１，１８０２）。
【０１９０】
(12)プログラマブルコントローラＡは上記コマンドを受けて、ＰＢ１０の実行完了フラグがＯＮしているか否かを確認する。実行完了フラグがＯＮしている場合は、出力パラメータとして保存されたデータをコマンドのレスポンスとして、サポートツールに返信するとともにＰＢ１０を停止状態とする（ステップ１００５，１００６，１００７）。実行完了フラグがＯＮしていない場合は、コマンドのレスポンスとして『実行未完』のエラーを返信する（ステップ１００９）。
【０１９１】
(13)サポートツールは、プログラマブルコントローラＡからのレスポンスを受けて、返信された結果を表示する（図４０参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、４００１はＯＫ選択ボタンである。仮にエラーレスポンスが返った場合は、画面にエラーを表示し、再実行を促す（図４１の画面参照）。なお、図において、Ａ１はメインタイトル表示領域、Ａ５は詳細表示領域、４１０１はＯＫ選択ボタン、４２０２はキャンセル選択ボタンである。
［実施例３：サポートツールからのプログラムブロック追加／削除］
【０１９２】
(1)プログラマブルコントローラＡおよびサポートツールからなるシステムを構成する（図１のシステム構成１参照）。
【０１９３】
(2)プログラマブルコントローラＡには、アプリケーションプログラムとして、図２１（ａ）のように分割されたプログラムブロック（ＰＢ１０，ＰＢ１１，ＰＢ１２）が格納されている。プログラマブルコントローラＡに記憶されているアプリケーションプログラムデータは、図２５のような状態である。
【０１９４】
(3)操作者はサポートツールを用いて、予めＰＢ２０のプログラムブロックデータを作成しておく。『プログラムブロック送信＆実行』機能により、プログラマブルコントローラＡに対してＰＢ２０を選択し、実行のためのパラメータを入力したうえでプログラマブルコントローラＡに処理を依頼する（ステップ１９０３，２００１，２００２）。
【０１９５】
(4)上記の処理によりサポートツールとプログラマブルコントローラＡは以下のような処理を行う。
【０１９６】
(5)サポートツールはプログラマブルコントローラＡに対しネットワークを介して、『プログラムブロック書込』コマンドにより、ＰＢ２０のプログラムブロックデータをプログラマブルコントローラＡに送信する。
【０１９７】
(6)プログラマブルコントローラＡは上記のコマンドを受けて、ＰＢ２０のプログラムブロックデータを所定の場所に格納する（ステップ１１０３，１１０４，１１０５）。つまり、ＰＢ２０のプログラムブロックデータは図２５の状態（ＰＢ２０なし）から図２６のような状態（ＰＢ２０あり）となり、結果としてアプリケーションプログラムの構成は図２１（ｂ）のようになる。このときＰＢ２０は停止状態である。この処理はネットワーク処理において行われる。
【０１９８】
(7)サポートツールはプログラマブルコントローラＡからの正常レスポンスを確認した上で、『プログラムブロック起動＆結果取得』コマンドをＰＢ２０を指定し、実行パラメータデータを添えて発行する。
【０１９９】
(8)プログラマブルコントローラＡは上記コマンドを受けて、コマンドに添えられたパラメータを入力パラメータに格納しＰＢ２０を起動状態とする。この処理はネットワーク処理において行われる。
【０２００】
(9)プログラマブルコントローラＡは以降のプログラム運転処理でＰＢ２０に関して、
初回実行時のみ実行完了フラグをＯＦＦしたうえで実行を開始する。そして処理が完了した時点で実行完了フラグをＯＮするとともに、実行結果を出力パラメータに格納する。なお、処理の完了には複数の実行サイクルを要する場合も考えられる。
【０２０１】
(10)プログラマブルコントローラＡはネットワーク処理にて、ＰＢ２０の実行完了フラグのＯＮを確認し、出力パラメータとして保存されたデータを先の『プログラムブロック起動＆結果取得』コマンドのレスポンスとして、サポートツールに返信するとともにＰＢ２０を停止状態とする。
【０２０２】
(11)サポートツールは、プログラマブルコントローラＡからのレスポンスを受けて、返信されたデータを『プログラムブロック送信＆実行』機能の実行結果として表示するとともに、『プログラムブロック削除』コマンドによりＰＢ２０のプログラムデータの削除をプログラマブルコントローラＡに発行する。
【０２０３】
(12)プログラマブルコントローラＡは上記コマンドを受けて、アプリケーションプログラムデータよりＰＢ２０のデータを削除する。結果として、アプリケーションプログラムの状態は図２６のような状態から図２５のように戻り、結果としてアプリケーションプログラムの構成も図２１（ａ）のような構成に戻ることになる。
［実施例４：他のプログラマブルコントローラからのプログラム起動と結果の同時取得］
【０２０４】
(1)プログラマブルコントローラＡおよびＢからなるシステムを構成する（図１，システム構成２参照）。
【０２０５】
(2)プログラマブルコントローラＡにはアプリケーションプログラムとして図２１（ａ）のように分割されたプログラムブロックが格納されている。プログラマブルコントローラＡに記憶されているアプリケーションプログラムデータは、図２５のような状態である。
【０２０６】
(3)プログラマブルコントローラＡに格納されているプログラムブロックのうち、ＰＢ１０は停止状態で、ＰＢ１１およびＰＢ１２は起動中であるとする。
【０２０７】
(4)プログラマブルコントローラＢには、図３０のようにプログラマブルコントローラＡのプログラムブロックを起動するための『プログラムブロック起動命令』（３００１）を含むプログラムブロックが格納されている。『プログラムブロック起動命令コード』（３００１ａ）のオペランド１（３００１ｂ）にはプログラマブルコントローラＡを表す識別コード、オペランド２（３００１ｃ）にはプログラマブルコントローラＡに格納されているプログラムブロックであるＰＢ１０を表す識別コード、オペランド３（３００１ｄ）にはＰＢ１０の実行のためのパラメータデータ、オペランド４（３００１ｅ）には実行結果を格納するプログラマブルコントローラ上のメモリアドレスがプログラムされている。
【０２０８】
(5)プログラマブルコントローラＢのプログラムブロック実行処理において、上記『プログラムブロック起動命令』が実行されると、プログラマブルコントローラＢはその命令処理として、オペランドより必要な情報を抽出し、オペランド１の情報を図２８の『プログラマブルコントローラ別ネットワークアドレス情報』に照らし合わせネットワークアドレスに変換し、オペランド２，３の情報と共に、ネットワーク処理依頼項目記憶エリアに図２９のように格納する。そして、コマンド発行中であることを記憶して、そのサイクルの命令実行処理を終了して、次命令の実行処理に移行する。
【０２０９】
(6)プログラマブルコントローラＢのネットワーク処理ではネットワーク処理依頼項目記憶エリアの情報に基づいて、プログラマブルコントローラＡに対しネットワークを介して、『プログラムブロック起動＆結果取得』コマンドを発行する。
【０２１０】
(7)プログラマブルコントローラＡは上記コマンドを受けて、コマンドに添えられたパラメータを入力パラメータに格納しＰＢ１０を起動状態とする。この処理はネットワーク処理において行われる。
【０２１１】
(8)プログラマブルコントローラＡは以降のプログラム運転処理でＰＢ１０に関して、
初回実行時のみ実行完了フラグをＯＦＦしたうえで実行を開始する。そして処理が完了した時点で実行完了フラグをＯＮするとともに、実行結果を出力パラメータに格納する。なお、処理の完了には複数の実行サイクルを要する場合も考えられる。
【０２１２】
(9)プログラマブルコントローラＡはネットワーク処理にて、実行完了フラグのＯＮを確認し、出力パラメータとして保存されたデータを、先の『プログラムブロック起動＆結果取得』コマンドのレスポンスとして、プログラマブルコントローラＢに返信するとともにＰＢ１０を停止状態とする。
【０２１３】
(10)プログラマブルコントローラＢはネットワーク処理において、プログラマブルコントローラＡからのレスポンスを受けるとレスポンスデータを実行結果として記憶する。
【０２１４】
(11)プログラマブルコントローラＢにおいて『プログラムブロック起動命令』が実行されると、コマンド発行中の場合はプログラマブルコントローラＡからのレスポンスが返っているかを確認し、レスポンスが返っていなければ次命令の実行処理に移行し、レスポンスが返っていればレスポンスデータをオペランド４に示されたメモリアドレスにコピーし、コマンド発行中であるという状態をクリアする。これにより、以降、プログラマブルコントローラＢのアプリケーションプログラムではプログラマブルコントローラＡのＰＢ１０の実行結果を参照し他の処理に利用可能となる。
【０２１５】
尚、実施例３に関して、プログラムブロックデータの送信とプログラムブロック起動を別機能として独立させる形態も考えられる。また、実施例４に関して、実施例２のようにプログラムブロック起動と結果取得を別命令に分けて行う形態も考えられる。
【０２１６】
以上説明した本発明の実施形態によれば、次のような格別の作用効果が期待される。
【０２１７】
(1)演算処理に必要なデータのサンプリングがプログラムブロック実行側のプログラマブルコントローラで行われるため、ネットワークを介しての都度的なデータをサンプリングの必要が無く、演算処理結果のみを受け取れるため、ネットワークの負荷を軽減することができる。
【０２１８】
(2)演算処理に必要なデータのサンプリングがプログラムブロック実行側のプログラマブルコントローラで行われるため、ネットワークによるデータ伝送時間に左右されることなく、短い周期でデータをサンプリングできる。
【０２１９】
(3)外部からの演算処理の依頼に関して、依頼の方法が実行パラメータに集約され、外部から直接的にアドレスを指定してデータを読み書きすることがないため、プログラマブルコントローラ内のデータの割り付けが変更された場合でも、演算処理依頼側のプログラムの修正変更の必要がない。
【０２２０】
(4)１台のプログラマブルコントローラにおいて、既にプログラムが分割されている場合、１台の処理を複数台のプログラマブルコントローラに分散する際に、分散したいプログラムブロック部分を切り出して、別プログラマブルコントローラに格納したうえで、該当のプログラムブロックを外部から起動するというプログラムロジックを加えるだけで済むため、容易にシステム構成の変更が可能となる。また、逆も同様である。
【０２２１】
(5)稼働中であるプログラムに、外部から新たなプログラムブロックを追加し、それを実行させ結果を得られ、かつ結果取得後に追加したプログラムブロックをプログラマブルコントローラ上より消去できることで、必要なときに必要な処理のみを追加し、かつそれ以外のときはプログラマブルコントローラのリソースに負担をかけない。例えば、事前に予期しないトラブルが発生した場合のトラブルシュートおよびメンテナンスなどの遠隔地からのプログラマブルコントローラへの操作が可能となる。
【０２２２】
【発明の効果】
以上の説明で明らかなように、この発明によれば、複数のプログラマブルコントローラにプログラムを分散配置したシステムにおいても、構造的なプログラミング手法の採用を可能とすると共に、ネットワークを介するデータ交換手段を単純かつ間接的にすることにより、機器構成の変更に対してもプログラムの変更の負担を最小限に留めることができる。
【図面の簡単な説明】
【図１】  本発明が適用されるＰＬＣシステムの構成図である。
【図２】  プログラマブルコントローラ全体のハードウェア構成を示すブロック図である。
【図３】  サポートツール全体のハードウェア構成を示すブロック図である。
【図４】  プログラマブルコントローラに組み込まれたシステムプログラムの全体を概略的に示すフローチャートである。
【図５】  プログラム運転処理の詳細を示すフローチャートである。
【図６】  ネットワーク処理の詳細を示すフローチャートである。
【図７】  「プログラムブロック起動＆結果取得コマンド」の対応処理の詳細を示すフローチャート（その１）である。
【図８】  「プログラムブロック起動＆結果取得コマンド」の対応処理の詳細を示すフローチャート（その２）である。
【図９】  「プログラムブロック起動コマンド」の対応処理の詳細を示すフローチャートである。
【図１０】  プログラムブロック実行結果取得コマンド」の対応処理の詳細を示すフローチャートである。
【図１１】  「プログラムブロック書込コマンド」の対応処理の詳細を示すフローチャートである。
【図１２】  「プログラムブロック削除コマンド」の対応処理の詳細を示すフローチャートである。
【図１３】  「プログラムブロック起動命令」の対応処理の詳細を示すフローチャート（その１）である。
【図１４】  「プログラムブロック起動命令」の対応処理の詳細を示すフローチャート（その２）である。
【図１５】  第１実施例におけるサポートツールの動作を実現するためのシステムブロックの全体構成を示すフローチャート（その１）である。
【図１６】  第１実施例におけるサポートツールの動作を実現するためのシステムブロックの全体構成を示すフローチャート（その２）である。
【図１７】  第２実施例におけるサポートツールの動作を実現するためのシステムブロックの全体構成を示すフローチャート（その１）である。
【図１８】  第２実施例におけるサポートツールの動作を実現するためのシステムブロックの全体構成を示すフローチャート（その２）である。
【図１９】  第３実施例におけるサポートツールの動作を実現するためのシステムブロックの全体構成を示すフローチャート（その１）である。
【図２０】  第３実施例におけるサポートツールの動作を実現するためのシステムブロックの全体構成を示すフローチャート（その２）である。
【図２１】  プログラマブルコントローラＡ内におけるアプリケーションプログラムのブロック構成を概念的に示す説明図である。
【図２２】  プログラムブロックの構造を示す説明図である。
【図２３】  ＰＢ１０のプログラムブロックデータを示す説明図である。
【図２４】  プログラムブロック（ＰＢ１０）の情報に関するサポートツールの表示例を示す説明図である。
【図２５】  初期状態におけるプログラマブルコントローラＡのアプリケーションプログラムデータの内容を示す説明図である。
【図２６】  プログラムブロック（ＰＢ２０）追加後におけるプログラマブルコントローラＡのアプリケーションプログラムデータの内容を示す説明図である。
【図２７】  プログラムブロックステータス情報の内容を示す説明図である。
【図２８】  プログラマブルコントローラ別ネットワークアドレス情報の内容を示す説明図である。
【図２９】  ネットワーク処理依頼項目情報の格納例を示す説明図である。
【図３０】  プログラマブルコントローラＢのプログラムブロック本体の一部に相当するラダー図の表示例を示す説明図である。
【図３１】  サポートツールの操作画面例（第１実施例の実行画面）を示す説明図である。
【図３２】  サポートツールの操作画面例（第１実施例の結果表示画面）を示す説明図である。
【図３３】  サポートツールの操作画面例（第１実施例のエラー表示画面）を示す説明図である。
【図３４】  サポートツールの操作画面例（第２実施例の実行画面）を示す説明図である。
【図３５】  サポートツールの操作画面例（第２実施例の起動通知＆結果取得実行画面）を示す説明図である。
【図３６】  サポートツールの操作画面例（第２実施例のエラー表示画面）を示す説明図である。
【図３７】  サポートツールの操作画面例（第２実施例の結果取得並びに実行結果表示画面）を示す説明図である。
【図３８】  サポートツールの操作画面例（第２実施例の結果取得並びに実行未完表示画面）を示す説明図である。
【図３９】  サポートツールの操作画面例（第２実施例の結果取得実行画面）を示す説明図である。
【図４０】  サポートツールの操作画面例（第２実施例の実行結果表示画面）を示す説明図である。
【図４１】  サポートツールの操作画面例（第２実施例の実行未完表示画面）を示す説明図である。
【図４２】  サポートツールの操作画面例（第３実施例の実行画面）を示す説明図である。
【図４３】  サポートツールの操作画面例（第３実施例の結果取得画面）を示す説明図である。
【図４４】  サポートツールの操作画面例（第３実施例のエラー表示画面）を示す説明図である。
【符号の説明】
１，１Ａ，１Ｂ  プログラマブルコントローラ
２              サポートツール
３              通信手段（ネットワーク）
４              入出力装置
１０１          ＣＰＵ
１０２          システムプログラムメモリ
１０３          ユーザプログラムメモリ
１０４          パラメータメモリ
１０５          ワークメモリ
１０６          Ｉ／Ｏメモリ
１０７          通信インタフェース
１０８          Ｉ／Ｏインタフェース
２１０          演算装置
２２０          入力装置
２３０          表示装置
２１１          中央処理装置
２１２          メモリ空間
２１２Ａ        パラメータデータエリア
２１２Ｂ        ユーザプログラムデータエリア
２１２Ｃ        サポートツールプログラムモジュール
２１３          表示装置用メモリ
２１４          内部メモリ
２１５          通信インタフェース
Ａ１              メインタイトル表示領域
Ａ２              サブタイトル表示領域
Ａ３              サブタイトル表示領域
Ａ４              詳細表示領域
３００１          プログラムブロック操作命令
３００１ａ        オペコード
３００１ｂ        第１オペランド
３００１ｃ        第２オペランド
３００１ｄ        第３オペランド
３００１ｅ        第４オペランド
３１０１，３４０１，４２０１          コントローラＩＤ表示領域
３１０２，３４０２，４２０２          プログラムブロックＩＤ表示領域
３１０３，３４０３，４２０３          実行パラメータ表示領域
３１０４，３２０１，３３０１，３４０４，３５０１，３６０１，３７０１，３８０２，３９０２，４００１，４１０１，４２０４，４３０１，４４０１          ＯＫ選択ボタン
３１０５，３４０５，３５０２，３８０１，３９０１，４１０２，４２０５          キャンセル選択ボタン
【図１】
0003781112.tif 000002
【図２】
0003781112.tif 000003
【図３】
0003781112.tif 000004
【図４】
0003781112.tif 000005
【図５】
0003781112.tif 000006
【図６】
0003781112.tif 000007
【図７】
0003781112.tif 000008
【図８】
0003781112.tif 000009
【図９】
0003781112.tif 000010
【図１０】
0003781112.tif 000011
【図１１】
0003781112.tif 000012
【図１２】
0003781112.tif 000013
【図１３】
0003781112.tif 000014
【図１４】
0003781112.tif 000015
【図１５】
0003781112.tif 000016
【図１６】
0003781112.tif 000017
【図１７】
0003781112.tif 000018
【図１８】
0003781112.tif 000019
【図１９】
0003781112.tif 000020
【図２０】
0003781112.tif 000021
【図２１】
0003781112.tif 000022
【図２２】
0003781112.tif 000023
【図２３】
0003781112.tif 000024
【図２４】
0003781112.tif 000025
【図２５】
0003781112.tif 000026
【図２６】
0003781112.tif 000027
【図２７】
0003781112.tif 000028
【図２８】
0003781112.tif 000029
【図２９】
0003781112.tif 000030
【図３０】
0003781112.tif 000031
【図３１】
0003781112.tif 000032
【図３２】
0003781112.tif 000033
【図３３】
0003781112.tif 000034
【図３４】
0003781112.tif 000035
【図３５】
0003781112.tif 000036
【図３６】
0003781112.tif 000037
【図３７】
0003781112.tif 000038
【図３８】
0003781112.tif 000039
【図３９】
0003781112.tif 000040
【図４０】
0003781112.tif 000041
【図４１】
0003781112.tif 000042
【図４２】
0003781112.tif 000043
【図４３】
0003781112.tif 000044
【図４４】
0003781112.tif 000045