(57)【特許請求の範囲】
【請求項１】
ユーザプログラムをプログラムブロック単位で複数格納することができ、それら格納されたプログラムブロックを一括して又は選択的に実行可能としたプログラマブルコントローラと、このプログラマブルコントローラをサポートするサポートツールとを一体又は別体に有し、さらに
前記プログラマブルコントローラ又は前記サポートツールには、
所定操作に応じて、プログラムブロックグループとその構成プログラムブロックとの関係を定義し、かつ前記プログラムブロックは複数のプログラムブロックグループにグループ設定可能にグループ設定情報を生成するグループ設定情報生成手段と
所定操作に応じて、プログラムブロックグループとそのグループ鍵との関係を定義するグループ鍵設定情報を生成するグループ鍵設定情報生成手段と、
入力鍵がいずれかのグループ鍵と一致したことを条件として、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報の中で、そのグループ鍵に対応するプログラムブロックグループのセキュリティ設定状態の内容を所定操作に応じて運用又は解除に設定するセキュリティ状態設定手段とが含まれており、
前記プログラマブルコントローラには、
プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには所定のセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときには所定のセキュリティ動作を実行させないセキュリティ選択実行手段が含まれている、ことを特徴とするプログラマブルコントローラ・システム。
【請求項２】
所定のセキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作である、請求項１に記載のプログラマブルコントローラ・システム。
【請求項３】
所定のセキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作である、請求項１に記載のプログラマブルコントローラ・システム。
【請求項４】
ユーザプログラムをプログラムブロック単位で複数格納することができ、それら格納されたプログラムブロックを一括して又は選択的に実行可能としたプログラマブルコントローラと、このプログラマブルコントローラをサポートするサポートツールとを一体又は別体に有し、さらに
前記プログラマブルコントローラ又は前記サポートツールには、
所定操作に応じて、プログラムブロックグループとその構成プログラムブロックとの関係を定義し、かつ前記プログラムブロックは複数のプログラムブロックグループにグループ設定可能にグループ設定情報を生成するグループ設定情報生成手段と
所定操作に応じて、プログラムブロックグループとそのグループ鍵との関係を定義するグループ鍵設定情報を生成するグループ鍵設定情報生成手段と、
所定操作に応じて、プログラムブロックグループ又はプログラムブロックとそのセキュリティレベルとの関係を定義するセキュリティレベル設定情報を生成するセキュリティレベル設定情報生成手段と、
入力鍵がいずれかのグループ鍵と一致したことを条件として、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報の中で、そのグループ鍵に対応するプログラムブロックグループのセキュリティ設定状態の内容を所定操作に応じて運用又は解除に設定するセキュリティ状態設定手段とが含まれており、
前記プログラマブルコントローラには、
プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティレベル設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには設定されたセキュリティレベルに従ったセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させないセキュリティ選択実行手段が含まれている、ことを特徴とするプログラマブルコントローラ・システム。
【請求項５】
１のセキュリティレベルにしたがったセキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作である、請求項４に記載のプログラマブルコントローラ・システム。
【請求項６】
１のセキュリティレベルにしたがったセキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作である、請求項４に記載のプログラマブルコントローラ・システム。
【請求項７】
ユーザプログラムをプログラムブロック単位で複数格納可能で、それら格納されたプログラムブロックを一括して又は選択的に実行可能であり、かつ
プログラムブロックグループとその構成プログラムブロックとの関係を定義し、かつ前記プログラムブロックは複数のプログラムブロックグループにグループ設定可能にグループ設定情報を生成するグループ設定情報と、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報と、が外部から書き替え可能に記憶されており、さらに
プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには所定のセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときには所定のセキュリティ動作を実行させないセキュリティ選択実行手段が含まれている、プログラマブルコントローラ。
【請求項８】
所定のセキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作である、請求項７に記載のプログラマブルコントローラ。
【請求項９】
所定のセキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作である、請求項７に記載のプログラマブルコントローラ。
【請求項１０】
ユーザプログラムをプログラムブロック単位で複数格納可能で、それら格納されたプログラムブロックを一括して又は選択的に実行可能であり、かつ
プログラムブロックグループとその構成プログラムブロックとの関係を定義し、かつ前記プログラムブロックは複数のプログラムブロックグループにグループ設定可能にグループ設定情報と、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報と、プログラムブロックグループ又はプログラムブロックとそのセキュリティレベルとの関係を定義するセキュリティレベル設定情報とが外部から書き替え可能に記憶されており、さらに
プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティレベル設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには設定されたセキュリティレベルに従った所定のセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときには所定のセキュリティ動作を実行させないセキュリティ選択実行手段と、が含まれている、プログラマブルコントローラ。
【請求項１１】
１のセキュリティレベルにしたがった所定のセキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作である、請求項１０に記載のプログラマブルコントローラ。
【請求項１２】
１のセキュリティレベルにしたがった所定のセキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作である、請求項１０に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ユーザプログラムをプログラムブロック単位で複数格納可能とし
たプログラマブルコントローラ・システムに係り、特に、一群のプログラムブロ
ック毎にパスワード等の鍵を割り当てることにより、プログラム保護のためのセ
キュリティを、プログラムブロックグループ単位で一括設定又は一括解除可能と
したプログラマブルコントローラ・システムに関する。
【０００２】
【従来の技術】
プログラマブルコントローラ（ＰＬＣ）は、入力装置と演算装置と出力装置とをその構成の基本としている。センサやスイッチ等からの信号入力は、入力装置を介して演算装置に取り込まれる。取り込まれた信号入力に基づいて、演算装置に予め格納されているユーザ作成のラダー図プログラム等の制御プログラムが実行される。その実行結果は、出力装置を介して外部のモータやアクチュエータ等に出力される。
【０００３】
１台のプログラマブルコントローラにて制御可能な入出力点数は、半導体メモリのコストダウンやマイコンチップの高性能化等と相まって、飛躍的に増加する傾向にある。これに比例して、プログラマブルコントローラのプロクラム容量も増大する傾向にある。また、プログラマブルコントローラを組み込むことで設計される各種機械や製造設備自身の高機能化も、プログラム容量の増大に拍車を掛けている。
【０００４】
このような傾向の中で、最近のプログラマブルコントローラにあっては、大容量のプログラムを効率よくかつ品質良く設計するために、或いは再利用やメンテナンス管理の便宜のために、プログラムを分割や階層化したり、ブロック分割したりするための機能が付加されつつある。これに関連して、最近のプログラマブルコントローラにあっては、ブロック分割されたプログラムデータを個別にダウンロードやアップロードしたり、ブロック分割されたプログラムを個別に起動したり、停止したりする機能も付加されつつある。
【０００５】
これらの機能を利用すれば、ユーザは、分割ブロック化したプログラムを１台のプログラマブルコントローラにて制御される複数の装置のうちの個々の装置に割り当てたり、装置内の独立性の高い機能ユニット個々と対応させることにより、プログラム設計において装置毎や機能毎の設計を順次一つずつ或いは複数の作業者で分担しつつ行うことが可能となり、これによりプログラム作成における生産性を飛躍的に高めることができる。上述の機能は、プログラマブルコントローラ内におけるプログラムの機能分割をより明確にすることができるので、１台のプログラマブルコントローラで複数の装置を制御しているような場合にも、装置毎にプログラムを分割した形でプログラミング作業が行われている。
【０００６】
一方、プログラマブルコントローラを組み込むことで、各種の機械や設備を設計供給しているベンダー間の市場競争が激しくなるに連れて、各ベンダーが保有する技術ノウハウの価値が次第に高まり、その一部であるプログラマブルコントローラに格納されるユーザプログラムの機密性も高まりつつある。しかしながら、プログラム全体を隠蔽してしまうことは、機械や設備のユーザ側におけるメンテナンス性を著しく損ねてしまうため、自ずとベンダーが隠蔽したい部分に限定した形でのセキュリティ機能が必要となる。プログラムの一部に対してアクセスを禁止する機能を有するプログラマブルコントローラも提案されている。
【０００７】
【発明が解決しようとする課題】
機械や装置の開発スタイルは多様化し、ベンダー側がその設計の一部を外部に委託したり、複数のベンダーが共同して一つの設備を設計したりするケースも現れている。また、ユーザ側も、その機械や装置に関わる担当者の人数の増加及び組織構成の複雑化により、担当者毎のプログラムに対するアクセス権限を分ける必要性も生じている。すなわち、プログラムに対するセキュリティ面の要望は多様化し、プログラムを複数に分割し、それぞれに異なったアクセス権限を設定できる機能の必要性が高まっている。加えて、先に述べたように、プログラムが装置単位や機能単位等の観点から構造化され、ブロック分割化されている傾向を考慮すると、上述のアクセス権限の設定単位は往々にしてプログラムの構造化単位とも合致していると言う傾向が強い。
【０００８】
しかしながら、プログラムのブロック分割数は、場合によっては数百乃至数千にも及ぶため、それら全てにパスワード等の鍵やアクセス権限の設定を行おうとすると、プログラマブルコントローラの利用者側の作業負担が過大になり、パスワード等の鍵の管理も煩雑になり過ぎるといった問題点が生ずる。
【０００９】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ユーザプログラムの分割数が例えば数百乃至数千といった膨大な数に及ぶときにも、さほど鍵数（例えば、パスワード数）を増加させることなく、ユーザプログラム中の必要な部分のみをセキュリティにより的確に保護可能とすることにある。
【００１０】
この発明の他の目的とするところは、ユーザプログラムの分割数が例えば数百乃至数千といった膨大な数に及ぶときにも、さほど鍵数（例えば、パスワード数）を増加させることなく、ユーザプログラム中の必要な部分のみを、必要なセキュリティレベルにより、すなわちセキュリティ厳重度により、的確に保護可能とすることにある。
【００１１】
また、この発明の他の目的とするところは、開発形態が複雑になった場合でも、ベンダー個々のノウハウが確実に保護できることにある。
【００１２】
また、この発明の他の目的とするところは、ユーザ側の組織構成が複雑化しても、目的に応じて作業者毎のアクセス権限を分けることができることにある。
【００１３】
また、この発明の他の目的とするところは、ベンダー側でアクセス制限をかけた形で納入された機械や装置においても、ユーザ側でその権限を守ったままで、新たに独自の権限を設定できることにある。
【００１４】
また、この発明の他の目的とするところは、プログラムの構造化単位を利用し、その単位を使ってアクセス権限をかけられるため、プログラム中の該当個所をわかりやすくすることにある。
【００１５】
また、この発明の他の目的とするところは、アクセス制限の設定範囲の柔軟性を向上させたままで、アクセス権限に関わる利用者の負担を軽減できることにある。
【００１６】
また、この発明の他の目的とするところは、プログラム全体を構造化し設計する際に、動作確認が完了したプログラムブロックを順次で書き替えできない状態のブロック群に加えられ、かつ、一つのパスワードを記憶しておくだけでその状態を作れるため、アクセス制限の管理負担を最小限に留めたままで、完成したプログラムブロックを誤って書き替えてしまうような作業ミスを容易に防止できることにある。
【００１７】
この発明のさらに他の目的乃至作用効果については、以下の明細書の記載を参照することにより、当業者であれば容易に理解されるであろう。
【００１８】
【課題を解決するための手段】
本発明のプログラマブルコントローラ・システムは、ユーザプログラムをプログラムブロック単位で複数格納することができ、それら格納されたプログラムブロックを一括して又は選択的に実行可能としたプログラマブルコントローラと、このプログラマブルコントローラをサポートするサポートツールとを一体又は別体に有している。
【００１９】
ここで、『一体』とは、一つのハウジング内に、プログラマブルコントローラとサポートツールとが同居している状態を指している。このような一体型のプログラマブルコントローラとしては、比較的に制御点数（入出力点数）の少ない小規模タイプのものが一般的である。また、ここで言うプログラマブルコントローラ並びにサポートツールには、プログラマブルコントローラ機能並びにサポートツール機能をパソコン上でソフトウェア的に実現したものも含んでいる。一方、『別体』とは、プログラマブルコントローラとサポートツールとが別々のハウジングに分けて組み込まれている状態を指している。このような別体型のプログラマブルコントローラとしては、大規模タイプのものが一般的である。通常、このような別体型のプログラマブルコントローラは、サポートツールとして機能する
パソコンと通信手段を介して結ばれる。
【００２０】
このシステムには、グループ設定情報生成手段と、グループ鍵設定情報生成手段と、セキュリティ状態設定手段と、セキュリティ選択実行手段と、が具備される。これら４つの手段をプログラマブルコントローラ側又はサポートツール側のいずれに配置すべきかは、対象となるプログラマブルコントローラが一体型か別体型か等の前提条件により異なるであろう。
【００２１】
グループ設定情報生成手段は、サポートツール等における所定操作に応じて、プログラムブロックグループとその構成プログラムブロックとの関係を定義するグループ設定情報を生成する。このグループ設定情報を参照することにより、任意のプログラムブロックがどのプログラマブルブロックグループに所属するかを知ることができる。なお、プログラムブロックとそれが属するプログラムブロックグループとの関係は必ずしも一義的である必要はない。すなわち、特定のプログラムブロックが２以上のプログラムブロックグループに属するようにしてもよい。もっとも、その場合でも、個々のプログラムブロックに関するセキュリティ状態については、『運用』か『解除』かに一義的に設定されねばならない。例えば、プログラムブロックが１０個（ＰＢ１〜ＰＢ１０）あるときに、プログラムブロックＰＢ１〜ＰＢ３はグループＡ、プログラムブロックＰＢ４〜ＰＢ６はグループＢ、プログラムブロックＰＢ７〜ＰＢ１０はグループＣと言ったように、重複しない３つのプログラムブロックグループに所属させる一方、プログラムブロックＰＢ１〜ＰＢ１０はそれらとは別のグループＤにと言ったように、グループＡ〜Ｃを包括するプログラムブロックグループＤに所属させるようにしてもよい。この場合、プログラムブロックグループＡ〜Ｃの鍵は現場に近い管理者に付与され、プログラムブロックグループＤの鍵はより上位の管理者に付与される、と言ったようにして、アクセス権限の階層化を実現することができる。
【００２２】
グループ鍵設定情報生成手段は、サポートツール等における所定操作に応じて、プログラムブロックグループとそのグループ鍵との関係を定義するグループ鍵設定情報を生成する。ここで、『グループ鍵』としては、パスワード、指紋等の様々な識別子を利用することができる。
【００２３】
セキュリティ状態設定手段は、入力鍵がいずれかのグループ鍵と一致したことを条件として、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報の中で、そのグループ鍵に対応するプログラムブロックグループのセキュリティ設定状態の内容を、サポートツール等における所定操作に応じて運用又は解除に設定する。つまり、このセキュリティ状態設定手段により、一群のプログラムブロックのセキュリティを一括して設定又は解除することができ、しかもその状態で鍵を掛けて（施錠して）他人によりセキュリティ設定状態が勝手に変更されることを防ぐことができる。ここで、『セキュリティ』とは一般的にはユーザプログラム保護のための様々な防御機能のことを意味し、例えば、プログラムの書き替え禁止、プログラムの読み出し禁止、読み出さ
れたプログラムの表示禁止等を含むことができる。
【００２４】
セキュリティ選択実行手段は、プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときにはセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させない。ここで、『プログラムブロックを指定しての』には、ユーザプログラムを個々に直接に指定する場合と、プログラム全体を指定することによりそれに含まれるプログラムブロックを間接的に指定する場合とが含まれるものである。
【００２５】
これにより、ブロック単位でセキュリティが個別に設定されていなくとも、各プログラムブロックのユーザプログラムは、そのプログラムブロックが所属するグループ単位で設定されたセキュリティ状態に対応するセキュリティ動作により保護される。
【００２６】
そのため、本発明システムによれば、ユーザプログラムの分割数が例えば数百乃至数千といった膨大な数に及ぶときにも、さほど鍵数（例えば、パスワード数）を増加させることなく、ユーザプログラム中の必要な部分のみをセキュリティにより的確に保護可能となる。
【００２７】
本発明の好ましい実施の形態では、プログラマブルコントローラとサポートツールとが通信手段を介して結ばれるようにしてもよい。このとき、プログラマブルコントローラには、グループ設定情報と、セキュリティ設定状態情報と、セキュリティ選択実行手段とが含まれるようにしてもよい。さらに、サポートツールには、グループ設定情報生成手段と、グループ鍵設定情報生成手段と、セキュリティ状態設定手段とが含まれるようにしてもよい。
【００２８】
このような構成によれば、グループ鍵を使用して一群のプログラムブロックに対して所定のセキュリティを設定しておけば、サポートツールからプログラマブルコントローラ内の特定プログラムブロックに通信手段を介してアクセスしようとしても、そのプログラムブロックの属するプログラムブロックグループにセキュリティが設定されている限り、そのプログラムブロックのユーザプログラムはセキュリティにより確実に保護される。
【００２９】
本発明の好ましい実施の形態では、セキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作であってもよい。
【００３０】
このような構成によれば、そのプログラムブロックのユーザプログラムが無断で改変や消去されることを未然に防止することできる。
【００３１】
本発明の好ましい実施の形態では、セキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。
【００３２】
このような構成によれば、そのプログラムブロックのユーザプログラムに込められたノウハウ等が盗まれることを未然に防止することができる。
【００３３】
別の一面から見た本発明のプログラマブルコントローラ・システムは、ユーザプログラムをプログラムブロック単位で複数格納することができ、それら格納されたプログラムブロックを一括して又は選択的に実行可能としたプログラマブルコントローラと、このプログラマブルコントローラをサポートするサポートツールとを一体又は別体に有している。
【００３４】
このシステムには、グループ設定情報生成手段と、グループ鍵設定情報生成手段と、セキュリティレベル設定情報生成手段と、セキュリティ状態設定手段と、セキュリティ選択実行手段と、が含まれている。すなわち、このシステムでは、先の発明の構成要件に加えて、『セキュリティレベル設定手段』が新たに追加されている。
【００３５】
このセキュリティレベル設定手段では、所定操作に応じて、プログラムブロックグループ又はプログラムブロックとそのセキュリティレベルとの関係を定義するセキュリティレベル設定情報を生成する。すなわち、この発明では、プログラムブロック毎に又はプログラムブロックグループ毎に、セキュリティレベルを異ならせて設定することができる。ここで、『セキュリティレベル』とは、セキュリティの厳重度のことを意味している。換言すれば、この発明では、厳重度の異なる２以上のセキュリティ動作を実行させることができる。
【００３６】
一方、セキュリティ選択実行手段の側では、プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティレベル設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには設定されたセキュリティレベルに従ったセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させない。これにより、各プログラムブロックのセキュリティ動作は、設定されたセキュリティレベルの内容と対応するものとなる。
【００３７】
本発明の好ましい実施の形態では、プログラマブルコントローラとサポートツールとが通信手段を介して結ばれるようにしてもよい。このとき、プログラマブルコントローラには、グループ設定情報と、セキュリティレベル設定情報と、セキュリティ設定状態情報と、セキュリティ選択実行手段とが含まれるようにしてもよい。さらに、サポートツールには、グループ設定情報生成手段と、グループ鍵設定情報生成手段と、セキュリティレベル設定情報生成手段と、セキュリティ状態設定手段とが含まれるようにしてもよい。
【００３８】
このような構成によれば、グループ鍵を使用して一群のプログラムブロックに対して所定のセキュリティ並びにセキュリティレベルを設定しておけば、サポートツールからプログラマブルコントローラ内の特定プログラムブロックに通信手段を介してアクセスしようとしても、そのプログラムブロックの属するプログラムブロックグループにセキュリティが設定されている限り、そのプログラムブロックのユーザプログラムは指定されたレベルを有するセキュリティにより確実に保護される。
【００３９】
そのため、本発明システムによれば、ユーザプログラムの分割数が例えば数百乃至数千といった膨大な数に及ぶときにも、さほど鍵数（例えば、パスワード数）を増加させることなく、ユーザプログラム中の必要な部分のみを、必要なセキュリティレベルにより、的確に保護可能となる。
【００４０】
本発明の好ましい実施の形態では、１のセキュリティレベルにしたがったセキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作であってもよい。
【００４１】
このような構成によれば、セキュリティレベルをそのように設定することにより、そのプログラムブロックのユーザプログラムが無断で改変や消去されることを未然に防止することできる。
【００４２】
本発明の好ましい実施の形態では、１のセキュリティレベルにしたがったセキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。
【００４３】
このような構成によれば、セキュリティレベルをそのように設定することにより、そのプログラムブロックのユーザプログラムに込められたノウハウ等が盗まれることを未然に防止することができる。
【００４４】
本発明のプログラマブルコントローラのサポートツールは、ユーザプログラムをプログラムブロック単位で複数格納することができるメモリと、このメモリから読み出されたユーザプログラムを表示させることができる表示器と、各種の指令生成やデータ生成に使用することができる操作手段と、を有している。ここで、表示器としては、ＣＲＴ表示器やＬＣＤ表示器等を挙げることができる。また、操作手段としては、キーボードやマウス等を含むＧＵＩ等を挙げることができる。
【００４５】
このサポートツールには、グループ設定情報生成手段と、グループ鍵設定情報生成手段と、セキュリティ状態設定手段と、セキュリティ選択実行手段と、が設けられる。
【００４６】
グループ設定情報生成手段は、操作手段の所定操作に応じて、プログラムブロックグループとその構成プログラムブロックとの関係を定義する。
【００４７】
グループ鍵設定情報生成手段は、操作手段の所定操作に応じて、プログラムブロックグループとそのグループ鍵との関係を定義するグループ鍵設定情報を生成する。
【００４８】
セキュリティ状態設定手段は、入力鍵がいずれかのグループ鍵と一致したことを条件として、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報の中で、そのグループ鍵に対応するプログラムブロックグループのセキュリティ設定状態の内容を操作手段の所定操作に応じて運用又は解除に設定する。
【００４９】
セキュリティ選択実行手段は、プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときにはセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させない。
【００５０】
本発明の好ましい実施の形態では、セキュリティ動作が、プログラムブロックの書き替えを禁止する動作であってもよい。
【００５１】
本発明の好ましい実施の形態では、セキュリティ動作が、プログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。このとき、プログラムブロックの読み出しには、読み出されたプログラムブロックの表示又は読み出されたプログラムブロックのプログラマブルコントローラへの転送が含まれていてもよい。
【００５２】
本発明のプログラマブルコントローラのサポートツールは、ユーザプログラムをプログラムブロック単位で複数格納することができるメモリと、このメモリから読み出されたユーザプログラムを表示させることができる表示器と、各種の指令生成やデータ生成に使用することができる操作手段と、を有している。
【００５３】
このサポートツールには、グループ設定情報生成手段と、グループ鍵設定情報生成手段と、セキュリティレベル設定情報生成手段と、セキュリティ状態設定手段と、セキュリティ選択実行手段と、が含まれている。
【００５４】
グループ設定情報生成手段は、操作手段の所定操作に応じて、プログラムブロックグループとその構成プログラムブロックとの関係を定義する。
【００５５】
グループ鍵設定情報生成手段は、操作手段の所定操作に応じて、プログラムブロックグループとそのグループ鍵との関係を定義するグループ鍵設定情報を生成する。
【００５６】
セキュリティレベル設定情報生成手段は、操作手段の所定操作に応じて、プログラムブロックグループ又はプログラムブロックとそのセキュリティレベルとの関係を定義するセキュリティレベル設定情報を生成する。
【００５７】
セキュリティ状態設定手段は、入力鍵がいずれかのグループ鍵と一致したことを条件として、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報の中で、そのグループ鍵に対応するプログラムブロックグループのセキュリティ設定状態の内容を操作手段の所定操作に応じて運用又は解除に設定する。
【００５８】
セキュリティ選択実行手段は、プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティレベル設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには設定されたセキュリティレベルに従ったセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させない。
【００５９】
本発明の好ましい実施の形態では、１のセキュリティレベルにしたがったセキュリティ動作が、プログラムブロックの書き替えを禁止する動作であってもよい。
【００６０】
本発明の好ましい実施の形態では、１のセキュリティレベルにしたがったセキュリティ動作が、プログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。このとき、プログラムブロックの読み出しには、読み出されたプログラムブロックの表示又は読み出されたプログラムブロックのプログラマブルコントローラへの転送が含まれていてもよい。
【００６１】
本発明のプログラマブルコントローラは、ユーザプログラムをプログラムブロック単位で複数格納可能で、それら格納されたプログラムブロックを一括して又は選択的に実行可能であり、かつプログラムブロックグループとその構成プログラムブロックとの関係を定義するグループ設定情報を生成するグループ設定情報と、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報と、が外部から書き替え可能に記憶されており、さらにプログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときにはセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させないセキュリティ選択実行手段が含まれている。
【００６２】
本発明の好ましい実施の形態では、セキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作であってもよい。
【００６３】
本発明の好ましい実施の形態では、セキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。
【００６４】
本発明のプログラマブルコントローラは、ユーザプログラムをプログラムブロック単位で複数格納可能で、それら格納されたプログラムブロックを一括して又は選択的に実行可能であり、かつプログラムブロックグループとその構成プログラムブロックとの関係を定義するグループ設定情報と、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報と、プログラムブロックグループ又はプログラムブロックとそのセキュリティレベルとの関係を定義するセキュリティレベル設定情報とが外部から書き替え可能に記憶されており、さらにプログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティレベル設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには設定されたセキュリティレベルに従った所定のセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときには所定のセキュリティ動作を実行させないセキュリティ選択実行手段と、が含まれている。
【００６５】
本発明の好ましい実施の形態では、１のセキュリティレベルにしたがった所定のセキュリティ動作が、ユーザプログラムブロックの書き替えを禁止する動作であってもよい。
【００６６】
本発明の好ましい実施の形態では、１のセキュリティレベルにしたがった所定のセキュリティ動作が、ユーザプログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。
【００６７】
【発明の実施の形態】
以下に、この発明に係るプログラマブルコントローラ・システム（以下、ＰＬ
Ｃシステムとも言う）、プログラマブルコントローラ（以下、ＰＬＣとも言う）、並びに、サポートツールの好適な実施の一形態を添付図面を参照しつつ詳細に説明する。
【００６８】
本発明が適用されるＰＬＣシステムの全体を概略的に示す説明図が図１に示されている。同図に示されるように、このＰＬＣシステムは、ＰＬＣ１と、サポートツール２と、ネットワーク４とを有している。
【００６９】
ＰＬＣ１は、図示例では、専用のハードウェアを備えたビルディングブロック型のシステム構成を有するものであり、例えば、主としてユーザプログラム実行機能を司るＣＰＵユニットと、外部機器との信号のやり取りを行う入出力ユニットと、各種のデータ演算等を司る高機能ユニット等をマザーボード上のシステムバスを介して相互に連携して構成されている。加えて、このＰＬＣ１のユーザプログラムメモリ（図示せず）には、図２に概念的に示されるように、ユーザプログラムをプログラムブロック単位で複数格納（プログラムブロック１〜４）することができ、しかもユーザプログラムを一括して又はプログラムブロック単位にて選択的に実行させることを可能とする機能が組み込まれている。なお、図では簡略して４個しか示されていないが、実際のＰＬＣの場合、プログラムブロックの数は数百から数千にも及ぶ場合がある。
【００７０】
なお、本発明の主たる特徴とするところは、図２に点線にて囲んで示すように、１若しくは２以上のプログラムブロック（プログラムブロック１〜４）を一纏めにグループ化（グループ１，２）し、これらのグループ単位にてセキュリティを一括設定又は一括解除できるようにしたことであるが、この点についてはのちに図面を参照しつつ詳細に説明する。
【００７１】
サポートツール２は、図示例では、パソコンにサポートツール用ソフトを組み込んでなるシステム構成を有するものである。ここでは、パソコンの画像表示装置がそのままサポートツールのプログラム表示用の表示器を構成することとなり、またキーボードやマウス等がそのままサポートツールの操作手段を構成することとなり、さらにパソコンのメモリがユーザプログラム保存用のメモリを構成することとなる。一般的に、サポートツール用ソフトには、ユーザプログラムの作成や編集をサポートする機能、作成や編集されたユーザプログラムをＰＬＣ側へと転送し、ＰＬＣのユーザプログラムメモリを全体単位又はプログラムブロック単位で書き替える機能、ＰＬＣのユーザプログラムメモリからユーザプログラムをブロック単位又はプログラム全体単位で読み出してメモリに保存し、サポートツールの表示画面に表示させる機能等が組み込まれている。
【００７２】
なお、通信手段を構成するネットワーク４においては、所定のプロトコルを使用したシリアル通信が行われる。
【００７３】
次に、プログラマブルコントローラ全体のハードウェア構成を示すブロック図が図３に示されている。なお、図において、プログラマブルコントローラ１として示されているものは、所謂ビルディングブロック型ＰＬＣのＣＰＵユニットに相当するものであり、また入出力装置３として示されているものは、同ＰＬＣシステムのＩ／Ｏユニットに相当するものである。
【００７４】
同図に示されるように、このプログラマブルコントローラ１は、ＣＰＵ１０１と、システムプログラムメモリ１０２と、ユーザプログラムメモリ１０３と、パラメータメモリ１０４と、ワークメモリ１０５と、Ｉ／Ｏメモリ１０６と、Ｉ／Ｏインタフェース１０７と、通信インタフェース１０８とを含んでいる。
【００７５】
ＣＰＵ１０１は、マイクロプロセッサや専用周辺ハード等を主体として構成されており、システムプログラムメモリ１０２に格納されてシステムプログラムに従って、プログラマブルコントローラとしての基本的な幾つかの機能を実現するように仕組まれている。
【００７６】
これらの基本的な機能としては、当業者にはよく知られているように、Ｉ／Ｏリフレッシュ処理、ユーザプログラム実行処理、各種の周辺サービス処理等を挙げることができる。
【００７７】
Ｉ／Ｏリフレッシュ処理では、Ｉ／Ｏインタフェース１０７及び入出力装置３を介して外部から取り込まれた入力データにて、Ｉ／Ｏメモリ１０６の該当する入力データの内容を更新すると共に、Ｉ／Ｏメモリの出力データをＩ／Ｏインタフェース１０７及び入出力装置３を介して、外部の該当する出力端子へ送出する処理が実行される。
【００７８】
ユーザプログラム実行処理では、ユーザプログラムメモリ１０３からユーザプログラムを構成する命令語を順に読み出しつつ、Ｉ／Ｏメモリを参照して演算に必要な入出力データの内容を求め、これに基づいて指定された命令を実行してその実行結果でＩ／Ｏメモリ１０６の出力データ、カウント値、タイマ時間等の内容を書き替える処理を実行する。
【００７９】
周辺サービス処理では、通信インタフェース１０８、ネットワーク４を介してサポートツール２との通信を行ったり、図示しないリモートＩ／Ｏや上位パソコンとの通信を行うと言った様々な周辺サービス処理を実行する。本発明と関連するプログラムブロック単位やプログラム全体単位でのユーザプログラム転送動作（ユーザプログラムメモリからの読み出し動作、ユーザプログラムメモリに対する書き込み動作等）、さらには、『グループ設定情報』や『セキュリティ情報』の転送動作についても、この周辺サービス処理にて実行されることとなる。
【００８０】
システムプログラムメモリ１０２は、ＣＰＵ１０１にて実現されるべき各種の機能に対応するシステムプログラムをそれぞれ格納するものであり、基本的にはＲＯＭで構成されている。
【００８１】
ユーザプログラムメモリ１０３には、例えばマシンベンダー等により作成された、或いはユーザ自身により作成又は修正されたユーザプログラム（アプリケーションプログラムとも言う）が、先に図２を参照して説明したように、プログラムブロック単位にて格納されている。ここで、ユーザプログラム全体としてのプログラムブロックの数は、場合によっては、数百乃至数千にも及ぶ場合が知られている。ユーザプログラムメモリとしては、例えば、フラッシュメモリやバッテリバックアップされたＲＡＭ等が使用される。
【００８２】
アプリケーションプログラムデータの一例を示す説明図が図３２に示されている。同図に示されるように、この例の場合にあっては、先頭のデータ領域情報に続けて、各プログラムブロック１〜５を格納することにより、アプリケーションプログラムデータが構成されている。データ領域情報は、アプリケーションプログラムデータのデータ構造を示し、プログラムブロック毎の格納場所を表している。各プログラムブロックは例えばラダー図言語などにより作成されたユーザプログラムが格納されている。従って、先頭のデータ領域情報を参照することにより、特定のプログラムブロックを選択的に実行したり、読み出したり、書き替えたりすることが可能となされている。なお、プログラムブロックの数に応じて、データ領域の容量も増減する。
【００８３】
図３に戻ってパラメータメモリ１０４には、本発明に関連する『グループ設定情報』、『セキュリティ情報』等のほか、各種のパラメータが格納される。
【００８４】
『グループ設定情報』の一例を示す説明図が図３０に示されている。同図に示されるように、この例にあっては、各プログラムブロックのＩＤ（識別子）とそのプログラムブロックが所属するプログラムブロックグループのＩＤ（識別子）とを互いに関連付けて記憶することにより、『グループ設定情報』が構成されている。
【００８５】
また、図示例の『グループ設定情報』は、図２に示されるアプリケーションプログラムの構造例に対応したものでもある。すなわち、プログラムブロック１とプログラムブロック２とがグループ１に所属しており、プログラムブロック３がグループ２に所属しており、プログラムブロック４はいずれのグループにも所属していない。つまり、グループＩＤが空白となっていることにより、プログラムブロック４がいずれのグループにも属していないことが記憶されている。そして、この『グループ設定情報』は、プログラマブルコントローラ側とサポートツール側との双方に格納される。
【００８６】
従って、この『グループ設定情報』を参照することにより、各プログラムブロックがいずれかのプログラムブロックグループに所属しているか、又その場合にはどのプログラムブロックグループに所属しているかを知ることができる。
【００８７】
『セキュリティ情報（グループ鍵設定情報、セキュリティ設定状態情報、及び、セキュリティレベル設定情報を含む）』の一例を示す説明図が図３１に示されている。同図に示されるように、この例にあっては、プログラムブロックグループのＩＤ（識別子）とその鍵となるパスワードとを互いに関連付けて記憶することにより、『グループ鍵設定情報』が構成される。
【００８８】
また、プログラムブロックグループのＩＤ（識別子）とそのグループのセキュリティ種別（セキュリティレベル）とを互いに関連付けて記憶することにより、『セキュリティレベル設定情報』が構成される。
【００８９】
さらに、プログラムブロックグループのＩＤ（識別子）とそのグループに関連付けて何らかのセキュリティ種別を記憶するか、或いはなにも記憶せずに空白とするかにより、『セキュリティ設定状態情報』が構成される。
【００９０】
すなわち、この『セキュリティ情報』には、本発明の『グループ鍵設定情報』、『セキュリティレベル設定情報』、及び『セキュリティ設定状態情報』が含まれている。この『セキュリティ情報』は、プログラマブルコントローラ側とサポートツール側との双方に格納される。
【００９１】
従って、この『セキュリティ情報』を参照することにより、なんらかのパスワードが与えられた場合に、それがいずれかのプログラムブロックグループのパスワードに該当するか、或いはどのグループのパスワードに相当するかを知ることができる。
【００９２】
さらに、何らかのプログラムブロックが指定された場合に、『グループ設定情報』から割り出した該当グループに、セキュリティ種別が記憶されているか、或いは空白とされているかにより、そのプログラムブロックのセキュリティが『運用状態』か『解除状態』かを判別することができる。
【００９３】
なお、この例では、セキュリティ種別（セキュリティレベル）としては、『読み出し禁止』と『書き込み禁止』との２種類が用意されているが、これら以外にも、書き込みや読み出しに回数制限を設けて、例えば『初回以外は書き込み禁止』、『３回以上読み出し禁止』等の様々な種別を設けることができる。
【００９４】
図３に戻って、ワークメモリ１０５は、各種の演算や処理を行うに際して、データの一時記憶領域として使用されるメモリであり、ＲＡＭで構成されるのが通例である。このワークメモリ１０５には、『プログラムブロックステータス情報』が格納される。
【００９５】
『プログラムブロックステータス情報』の一例を示す説明図が図３３に示されている。同図に示されるように、この例にあっては、各プログラムブロックのＩＤ（識別子）とそのプログラムブロックの現在のステータス（『起動』又は『停止』）とを互いに関連付けて記憶することにより、『プログラムブロックステータス情報』が構成されている。この『プログラムブロックステータス情報』は、プログラム運転処理の初回時に例えば全ての又は幾つかのプログラムブロックが『起動』として、ワークメモリに生成記憶され、プログラム運転処理においては、このエリアの内容に従って各プログラムブロックの運転が実行又は停止される。各ステータスの状態（運転又は停止）は、例えばユーザプログラム中にて使用可能な『グループ起動命令』や『グループ停止命令』等により変更される。従って、この『プログラムブロックステータス情報』を参照することにより、各プログラムブロックの運転状態が起動か停止かを判別することができる。
【００９６】
Ｉ／Ｏメモリ１０６には、入力データエリアと出力データエリアとカウンタやタイマ等のデータエリア、等が設けられており、先に説明したように、それらのエリアの内容は、ユーザプログラム実行に際して参照並びに必要により書き替えられる。
【００９７】
なお、Ｉ／Ｏインタフェース１０７並びに通信インタフェース１０８は、入出力装置３並びにネットワーク４との接続に際する処理を実行するためのものである。この通信インタフェース１０８を介して、後述する『メッセージサービス』により、後述するサポートツール２や他のプログラマブルコントローラ又は上位パソコン等との通信が可能となる。
【００９８】
入出力装置３は、外部のセンサやスイッチからの信号を取り込むための入力端子と、外部のリレーやモータ等を駆動するための信号を出力するための出力端子とを備えている。そして、入力端子から取り込まれた信号は入力データとしてＩ／Ｏメモリ１０６に書き込まれ、出力端子から送出されるべき信号は出力データとしてＩ／Ｏメモリ１０６から読み出される。
【００９９】
次に、サポートツール全体のハードウェア構成を示すブロック図が図４に示されている。同図に示されるように、このサポートツール２は、演算装置２１０と、入力装置２２０と、表示装置２３０とを含んでいる。
【０１００】
演算装置２１０は、中央処理装置２１１と、メモリ空間（図示しないＲＡＭやハードディスク等で構成される）２１２と、表示装置用メモリ２１３と、バス２１４と、通信インタフェース２１５とを含んでいる。
【０１０１】
中央処理装置２１１は、サポートツールを構成するパソコンの演算処理部に相当するもので、サポートツール全体を統括制御するものである。
【０１０２】
メモリ空間２１２には、バラメータデータエリア２１２Ａと、ユーザプログラムデータエリア２１２Ｂと、サポートツールプログラムモジュール２１２Ｃとが含まれている。
【０１０３】
パラメータデータエリア２１２Ａには、先に説明した『グループ設定情報』、『セキュリティ情報』等の各種のパラメータデータが格納される。
【０１０４】
ユーザプログラムデータエリア２１２Ｂには、プログラマブルコントローラに転送されるべき、或いはプログラマブルコントローラから転送されてきた、『アプリケーションプログラムデータテーブル』（図３２参照）や『プログラムブロックパラメータテーブル』（図３０、図３１）等が格納される。
【０１０５】
サポートツールプログラムモジュール２１２Ｃには、中央処理装置２１１が実行する、本サポートツールの各種の機能を実行するためのプログラムが格納される。
【０１０６】
表示装置用メモリ２１３は、表示装置２３０に出力される情報が格納されるメモリであり、このメモリに対する情報の書き込みは中央処理装置２１１により行われる。
【０１０７】
バス２１４は、中央処理装置２１１がメモリ空間２１２、入力装置２２０、表示装置用メモリ２１３にアクセスするためのインタフェースとして機能するものである。また、通信用インタフェース２１５は、プログラマブルコントローラとの通信を行うためのインタフェースとして機能するものである。
【０１０８】
入力装置２２０は、ユーザの要求をインタフェース（ＧＵＩを含む）を介して取得する装置であり、この例では、パソコンに備えられたキーボードや各種のポインティングデバイス等で構成されている。
【０１０９】
表示装置２３０は、表示装置用メモリ２１３の状態をインタフェースを介して表示する装置であり、この例では、パソコンに備えられたＣＲＴ表示器やＬＣＤ等がこれに相当する。
【０１１０】
先に説明したように、この実施形態のＰＬＣシステムにあっては、ネットワーク上では、『メッセージサービス』により情報交換を行い、それを使用して相手先に各種の要求を発行する。『メッセージサービス』は、サポートツールからプログラマブルコントローラへの要求にも使用される。『メッセージサービス』にて使用される各メッセージは、該当するコマンドに相手先のネットワークアドレスを付加することにより構成され、この相手先ネットワークアドレスにより受信先が特定される。
【０１１１】
次に、この実施形態において、ネットワーク上で使用されるメッセージサービスコマンドの具体例を順次に説明する。この実施形態においては、『プログラム（プログラム全体に関するの意）ダウンロードコマンド』、『プログラム（プログラム全体に関するの意）アップロードコマンド』、『プログラムブロック（プログラムブロックに関するの意）ダウンロードコマンド』、『プログラムブロック（プログラムブロックに関するの意）アップロードコマンド』、『グループ設定情報ダウンロードコマンド』、『セキュリティ情報ダウンロードコマンド』、『セキュリティ設定コマンド』、及び『セキュリティ解除コマンド』からなる８種類のコマンドが用意されている。それらのコマンドの内容をは以下の通である。
（１）『プログラムダウンロードコマンド』
【０１１２】
送信コマンドのバラメータは、ダウンロードしようとする『プログラムデータ』となる。受信レスポンスの内容は、『正常終了』又は『エラー終了（書き込み禁止中又はその他のエラーコード）』となる。
（２）『プログラムアップロードコマンド』
【０１１３】
送信コマンドのパラメータは存在しない。受信レスポンスの内容は、『正常終了』とアップロードした『プログラムデータ』、又は『エラー終了（読み出し禁止中又はその他のエラーコード）』となる。
（３）『プログラムブロックダウンロードコマンド』
【０１１４】
送信コマンドのパラメータは、ダウンロードしようとする『プログラムブロックＩＤ』とダウンロードしようとする『プログラムブロックデータ』となる。受信レスポンスの内容は、『正常終了』又は『エラー終了（書き込み禁止中又はその他のエラーコード）』となる。
（４）『プログラムブロックアップロードコマンド』
【０１１５】
送信コマンドのパラメータは、アップロードしようとする『プログラムブロックＩＤ』となる。受信レスポンスの内容は、『正常終了』と『プログラムブロックデータ』又は『エラー終了（読み出し禁止中又はその他のエラーコード）』となる。
（５）『グループ設定情報ダウンロードコマンド』
【０１１６】
送信コマンドのパラメータは、ダウンロードしようとする『グループ設定情報』となる。受信レスポンスの内容は、『正常終了』又は『エラー終了（セキュリティ設定中又はその他のエラーコード）』となる。
（６）『セキュリティ情報ダウンロードコマンド』
【０１１７】
送信コマンドのパラメータは、ダウンロードしようとする『セキュリティ情報』となる。受信レスポンスの内容は、『正常終了』又は『エラー終了（セキュリティ設定中又はその他のエラーコード）』となる。
（７）『セキュリティ設定コマンド』
【０１１８】
送信コマンドのパラメータは、セキュリティを設定しようとする『グループＩＤ』と『セキュリティ種別（セキュリティレベル）』と『パスワードコード（鍵）』となる。受信レスポンスの内容は、『正常終了』又は『エラー終了』となる。
（８）『セキュリティ解除コマンド』
【０１１９】
送信コマンドのパラメータは、セキュリティを解除しようとする『グループＩＤ』と『パスワードコード（鍵）』となる。受信レスポンスの内容は、『正常終了』又は『エラー終了』となる。
【０１２０】
次に、以上説明したハードウェア並びにネットワーク上の『メッセージサービス』を前提としつつ、プログラマブルコントローラ１並びにサポートツール２のシステムプログラムの内容を図５以下のフローチャート並びに画面説明図等を参照して説明することにより、本発明システムの要部であるグループ単位でのセキュリティ『一括設定機能』又は『一括解除機能』を明らかにする。
【０１２１】
プログラマブルコントローラ１に組み込まれたシステムプログラムの全体を概略的に示すゼネラルフローチャートが図５に示されている。同図において、電源投入により処理が開始されると、まず電源ＯＮ初期処理（ステップ５０１）が実行されて、各種のフラグやレジスタ類の初期設定などが実行される。
【０１２２】
その後、図示しないプログラム運転状態フラグの内容が繰り返し参照され（ステップ５０３）、その状態が『運転可能』とされるまでの間（ステップ５０３ＮＯ）、共通処理（ステップ５０２）、Ｉ／Ｏリフレッシュ処理（ステップ５０５）、ネットワーク処理（ステップ５０６）が順次繰り返し実行され、その間においてはプログラム運転処理（ステップ５０４）はスキップされる。
【０１２３】
この状態において、プログラム運転状態フラグの状態が『運転可能』になると（ステップ５０３ＹＥＳ）、共通処理（ステップ５０２）、Ｉ／Ｏリフレッシュ処理（ステップ５０５）、ネットワーク処理（ステップ５０６）に加えて、プログラム運転処理（ステップ５０４）も実行されるようになる。
【０１２４】
尚、共通処理（ステップ５０２）とは、プログラムが運転中であるか停止中であるかに拘わらず必要とされる処理であり、Ｉ／Ｏリフレッシュ処理（ステップ５０５）とは、先に説明したように、Ｉ／Ｏインタフェース１０７及び入出力装置３を介して外部から取り込まれた入力データにて、Ｉ／Ｏメモリ１０６の該当する入力データの内容を更新すると共に、Ｉ／Ｏメモリの出力データをＩ／Ｏインタフェース１０７及び入出力装置３を介して、外部の該当する出力端子へと送出する処理である。
【０１２５】
次に、プログラム運転処理の詳細を示すフローチャートが図６に示されている。同図において、処理が開始されると、まず実行の初回に限り（ステップ６０１ＹＥＳ）、プログラムブロックステータス情報を新たに生成する処理が実行される（ステップ６０２）。先に説明したように、この処理（ステップ６０２）では、図３３に示されるプログラムブロックステータス情報の内容は、全てのプログラムブロックに関して『起動』に設定される。
【０１２６】
その後、プログラムブロックステータス情報の先頭レコードから（ステップ６０３）、末尾のレコードに至るまで（ステップ６０９ＮＯ）、順次レコードの読み出しが行われる（ステップ６０８）。
【０１２７】
読み出されたレコードのステータスが『起動』に設定されている場合に限り（ステップ６０４ＹＥＳ）、該当するプログラムブロック内の命令が順次読み出されて実行され（ステップ６０５，６０６）、最終命令の読み出し実行が完了すると（ステップ６０７ＮＯ）、次のプログラムブロックに関して（ステップ６０８）、同様な命令の読み出し並びに実行処理が進められる（ステップ６０５，６０６）。
【０１２８】
このようにして、プログラムブロックステータス情報の最後のレコードに関し、命令の読み出し並びに実行処理が完了すると（ステップ６０５，６０６，６０７ＹＥＳ，６０８，６０９ＹＥＳ）、プログラム運転処理の一巡実行が完了する。
【０１２９】
以上の処理から明らかなように、ユーザプログラム中において、『プログラムブロック起動命令』及び『プログラムブロック停止命令』を適切に使用して、各プログラムブロックのステータスを『起動』または『停止』に設定することにより、ユーザプログラムの実行と連動させて、各プログラムブロックの運転を起動又は停止させ、すなわち選択的にプログラムブロックを実行させることができるのである。
【０１３０】
次に、ネットワーク処理の詳細を示すフローチャートが図７に示されている。同図において、処理が開始されると、受信コマンドの有無が判定される（ステップ７０１）。尚、コマンドの受信自体は割込処理にて行われ、ワークメモリ１０５上の一時記憶エリアに記憶されているものと想定する。
【０１３１】
受信コマンドの待機中に（ステップ７０１ＮＯ）、受信コマンドありが判定されると（ステップ７０１ＹＥＳ）、その受信コマンドは解析され（ステップ７０２）、その解析結果に応じて、各コマンド別の処理が実行されることとなる（ステップ７０３−１，７０３−２〜７０３−ｎ）。
【０１３２】
先に説明したように、この実施の形態においては、『プログラムダウンロードコマンド』、『プログラムアップロードコマンド』、『プログラムブロックダウンロードコマンド』、『プログラムブロックアップロードコマンド』、『グループ設定情報ダウンロードコマンド』、『セキュリティ情報ダウンロードコマンド』、『セキュリティ設定コマンド』、及び『セキュリティ解除コマンド』からなる８種類のコマンドが用意されている。
【０１３３】
『プログラムダウンロードコマンド』の対応処理の詳細を示すフローチャートが図８に示されている。同図において処理が開始されると、『プログラムダウンロードコマンド』はユーザプログラム全体を一括して書き替えるコマンドであるが、書き替え対象となるユーザプログラムの全部又は一部に『書き込み禁止』が設定されていた場合は、その操作は受け付けられない。そのため、図３１に示される『セキュリティ情報』の設定状況の確認が行われる（ステップ８０１）。
【０１３４】
ここで、『セキュリティ情報』のいずれかに『書き込み禁止』が設定されていれば（ステップ８０２ＹＥＳ）、エラーレスポンス『書き込み禁止中』を返信する処理が実行される（ステップ８０５）。
【０１３５】
これに対して、『セキュリティ情報』のいずれにも『書き込み禁止』が設定されていなければ（ステップ８０２ＮＯ）、送信されたプログラムデータを『アプリケーションプログラムデータ』に上書きする処理を実行し（ステップ８０３）、さらに正常レスポンスを返信する処理（ステップ８０４）を実行して、処理を終了する。
【０１３６】
このように、例えば、サポートツール、上位パソコン、あるいは他のプログラマブルコントローラ（ＰＬＣ）などから、プログラムダウロードコマンドを受信した場合、『セキュリティ情報』（図３１参照）のいずれにも『書き込み禁止』が設定されていなかった場合に限り（ステップ８０２ＮＯ）、送信されたプログラムデータは『アプリケーションプログラムデータ』に上書きされて（ステップ８０３）、正常レスポンスが返信されるのに対し（ステップ８０４）、『セキュリティ情報』のいずれかに『書き込み禁止』が設定されていた場合には（ステップ８０２ＹＥＳ）、エラーレスポンス『書き込み禁止中』の返信を行う一方（ステップ８０５）、『アプリケーションプログラムデータ』の上書き処理は実行されず、アプリケーションプログラムの内容は変更されずに保護される。
【０１３７】
プログラムアップロードコマンドの対応処理の詳細を示すフローチャートが図９に示されている。同図において処理が開始されると、『プログラムアップロードコマンド』はユーザプログラム全体を一括して読み出すコマンドであるが、読み出し対象となるユーザプログラムの全部又は一部に『読み出し禁止』が設定されていた場合は、その操作は受け付けられない。そのため、図３１に示される『セキュリティ情報』の設定状況の確認が行われる（ステップ９０１）。
【０１３８】
ここで、『セキュリティ情報』のいずれかに『読み出し禁止』が設定されていれば（ステップ９０２ＹＥＳ）、エラーレスポンス『読み出し禁止中』がコマンド発行元へと返信されて（ステップ９０５）、処理は終了する。
【０１３９】
これに対して、『セキュリティ情報』のいずれにも『読み出し禁止』が設定されていなければ（ステップ９０２ＮＯ）、『アプリケーションプログラムデータ』よりプログラムデータの抽出が行われ（ステップ９０３）、続いて抽出された『アプリケーションプログラムデータ』は正常レスポンスと共にコマンド発行元へと返信され（ステップ９０４）、処理は完了する。
【０１４０】
このように、サポートツール又は他のプログラマブルコントローラ（ＰＬＣ）などからプログラムアップロードコマンドを受信した場合には、『セキュリティ情報』の設定状況を確認した結果（ステップ９０１）、『セキュリティ情報』のいずれにも『読み出し禁止』が設定されていなかった場合に限り（ステップ９０２ＮＯ）、『アプリケーションプログラムデータ』よりプログラムデータの抽出が行われ（ステップ９０３）、正常レスポンスと共にコマンド発行元へと返信されるのに対し（ステップ９０４）、『セキュリティ情報』のいずれかに『読み出し禁止』が設定されていた場合には（ステップ９０２ＹＥＳ）、エラーレスポンス『読み出し禁止中』がコマンド発行元へと返信されて、指定された『アプリケーションプログラムデータ』のアップロードは禁止され、これにより技術ノウハウが組み込まれた『アプリケーションプログラムデータ』が無断で盗用される虞を未然に防止することができる。
【０１４１】
プログラムブロックダウンロードコマンドの対応処理の詳細を示すフローチャートが図１０に示されている。同図において、処理が開始されると、コマンドパラメータの『プログラムブロックＩＤ』を読み込む処理（ステップ１００１）及び図３０に示される『グループ設定情報』より指定のプログラムブロックが属するグループを検索する処理（ステップ１００２）が実行される。
【０１４２】
続いて、特定プログラムブロックなし又は属するグループなしの判定が行われ（ステップ１００３）、それらが肯定された場合には（ステップ１００３ＹＥＳ）、上書き対象となるプログラムブロックが存在しないため、新規に追加されることとなり、送信されたプログラムデータを『アプリケーションプログラムデータ』の所定の位置に書き込み（新規に挿入）（ステップ１００５）、正常レスポンスを返信して（ステップ１００６）、処理は終了する。
【０１４３】
これに対して、特定プログラムブロック又は属するグループのいずれかが存在すると（ステップ１００３ＮＯ）、さらに、図３１に示される『セキュリティ情報』の中の該当グループに『書き込み禁止』が設定されているか否かの判定が行われ（ステップ１００４）、『書き込み禁止』が設定されている場合には（ステップ１００４ＹＥＳ）、同様にしてエラーレスポンス『書き込み禁止中』がコマンド発行元へと返信されて（ステップ１００７）、処理が終了する。
【０１４４】
これに対して、『セキュリティ情報』の中の該当グループに『書き込み禁止』が設定されていなければ（ステップ１００４ＮＯ）、送信されたプログラムブロックデータを『アプリケーションプログラムデータ』の所定位置に書き込み（ステップ１００５）、正常レスポンスを返信して（ステップ１００６）、処理は終了する。
【０１４５】
このように、サポートツール、上位パソコン、他のプログラマブルコントローラ（ＰＬＣ）などからプログラムブロックダウンロードコマンドを受信した場合には、特定プログラムブロック又は属するグループが存在し（ステップ１００３ＮＯ）、かつ『セキュリティ情報』の中の該当グループに『書き込み禁止』が設定されていない場合（ステップ１００４ＮＯ）か、プログラム中に特定プログラムブロックが存在しないか、存在してもそのプログラムブロックが属するグループが存在しない場合（ステップ１００ＹＥＳ）、送信されたプログラムブロックデータは『アプリケーションプログラムデータ』の所定位置に返信されるのに対し（ステップ１００６）、『セキュリティ情報』の中の該当グループに『書き込み禁止』が設定されている場合には（ステップ１００４ＹＥＳ）、コマンド発行元に対してエラーレスポンス『書き込み禁止中』が返信され、送信されたプログラムデータにより『アプリケーションプログラムデータ』が書き替えられることはない。従って、特定のプログラムブロックデータが不用意に書き替えられてしまうといった事態を未然に防止することができる。
【０１４６】
プログラムブロックアップロードコマンドの対応処理の詳細を示すフローチャートが図１１に示されている。同図において、処理が開始されると、コマンドパラメータの『プログラムブロックＩＤ』を読み込む処理（ステップ１１０１）、図３０に示される『グループ設定情報』より指定のプログラムブロックが属するグループを検索する処理（ステップ１１０２）が実行される。
【０１４７】
続いて、指定プログラムブロックなしの判定が行われ（ステップ１１０３−１）、それが肯定される場合（ステップ１１０３−１ＹＥＳ）、コマンド発行元に対してエラーレスポンスの返信が行われ（ステップ１１０８）、処理は終了する。それが否定される場合（ステップ１１０３−１ＮＯ）、引き続いて、所属グループなしの判定が行われ（ステップ１１０３−２）、それが肯定される場合（ステップ１１０３−２ＹＥＳ）、指定のプログラムブロックを『アプリケーションプログラムデータ』より抽出し（ステップ１１０５）、正常レスポンスと共にデータを返信して（ステップ１１０６）、処理は終了する。
【０１４８】
所属グループなしの判定が否定される場合（ステップ１１０３−２ＮＯ）、続いて図３１に示される『セキュリティ情報』の中の該当グループに『読み出し禁止』が設定されているかの判定が行われる（ステップ１１０４）。該当グループに『読み出し禁止』が設定されている場合には（ステップ１１０４ＹＥＳ）、エラーレスポンス『読み出し禁止中』がコマンド元に対して返信され（ステップ１１０７）、処理は終了する。
【０１４９】
これに対して、該当グループに『読み出し禁止』が設定されていない場合には（ステップ１１０４ＮＯ）、指定のプログラムブロックを『アプリケーションプログラムデータ』より抽出し（ステップ１１０５）、正常レスポンスと共にデータを返信して（ステップ１１０６）、処理は終了する。
【０１５０】
このように、サポートツール、上位パソコン、又は他のプログラマブルコントローラ（ＰＬＣ）からプログラムブロックアップロードコマンドが到来した場合には、指定プログラムブロックが存在し（ステップ１１０３−１ＮＯ）、かつ指定プログラムブロックがいずれのグループにも属さない場合（ステップ１１０３−２ＹＥＳ）か、指定プログラムブロックが存在し（ステップ１１０３−１ＮＯ）、かつ指定プログラムブロックがいずれかのグループに属し（ステップ１１０３−２ＮＯ）、かつ『セキュリティ情報』の中の該当グループに『読み出し禁止』が設定されていない場合に限り（ステップ１１０４ＮＯ）、指定プログラムブロックを『アプリケーションプログラムデータ』より抽出し（ステップ１１０５）、正常レスポンスと共に返信する処理が実行されるのに対し（ステップ１１０６）、指定プログラムブロックが存在しない場合（ステップ１１０３−１ＹＥＳ）や、又はそれが存在し（ステップ１１０３−１ＮＯ）、そのプログラムブロックがいずれかのグループに属している場合であっても（ステップ１１０３−２ＮＯ）、『セキュリティ情報』の中の該当グループに『読み出し禁止』が設定されている場合には（ステップ１１０４ＹＥＳ）、コマンド発行元に対しエラーレスポンスが返信されて（ステップ１１０７，１１０８）、指定のプログラムブロックがコマンド発行元に対して返信されることはない。そのため、指定されたプログラムブロックが技術ノウハウ等と共に盗用されることを未然に防止することができる。
【０１５１】
グループ設定情報ダウンロードコマンドの対応処理の詳細を示すフローチャートが図１２に示されている。同図において、処理が開始されると、ＰＬＣ内の『セキュリティ情報』の設定状況を確認する処理を実行した後（ステップ１２０１）、ＰＬＣ内『セキュリティ情報』のいずれかに『読み出し禁止』又は『書き込み禁止』が設定されていることの判定が行われる（ステップ１２０２）。
【０１５２】
ここで、『セキュリティ情報』のいずれかに『読み出し禁止』又は『書き込み禁止』が設定されていれば（ステップ１２０２ＹＥＳ）、エラーレスポンス『セキュリティ設定中』がコマンド発行元へと返信されて（ステップ１２０５）、処理は終了する。
【０１５３】
これに対して、ＰＬＣ内『セキュリティ情報』のいずれにも『読み出し禁止』又は『書き込み禁止』が設定されていなければ（ステップ１２０２ＮＯ）、送信された『グループ設定情報』はＰＬＣ内のパラメータメモリの所定場所に上書きされ（ステップ１２０３）、コマンド発行元に対して正常レスポンスを返信して（ステップ１２０４）、処理を終了する。
【０１５４】
このように、サポートツール、上位パソコン又はプログラマブルコントローラ（ＰＬＣ）などからグループ設定情報ダウンロードコマンドを受信した場合には、ＰＬＣ内『セキュリティ情報』のいずれにも『読み出し禁止』又は『書き込み禁止』が設定されていない場合に限り（ステップ１２０２ＮＯ）、送信された『グループ設定情報』はＰＬＣ内パラメータメモリの所定場所に上書きされて（ステップ１２０３）、正常レスポンスがコマンド発行元へと返信されるのに対し（ステップ１２０４）、ＰＬＣ内『セキュリティ情報』のいずれかに『読み出し禁止』又は『書き込み禁止』が設定されている場合には（ステップ１２０２ＹＥＳ）、エラーレスポンス『セキュリティ設定中』がコマンド発行元へと返信され（ステップ１２０５）、送信された『グループ設定情報』によりパラメータメモリの上書きが行われることはない。そのため、セキュリティ設定された『グループ設定情報』が不用意に変更されることについても未然に防止することができる。
【０１５５】
セキュリティ情報ダウンロードコマンドの対応処理の詳細を示すフローチャートが図１３に示されている。同図において処理が開始されると、ＰＬＣ内の『セキュリティ情報』の設定状況を確認した後（ステップ１３０１）、ＰＬＣ内『セキュリティ情報』のいずれかに『読み出し禁止』又は『書き込み禁止』が設定されていることの判定が行われる（ステップ１３０２）。
【０１５６】
ここで、ＰＬＣ内『セキュリティ情報』のいずれかに『読み出し禁止』又は『書き込み禁止』が設定されていれば（ステップ１３０２ＹＥＳ）、エラーレスポンス『セキュリティ設定中』がコマンド発行元へと返信されて（ステップ１３０５）、処理は終了する。
【０１５７】
これに対して、ＰＬＣ内『セキュリティ情報』のいずれにも『読み出し禁止』及び『書き込み禁止』が設定されていなければ（ステップ１３０２ＮＯ）、送信された『セキュリティ情報』はＰＬＣ内パラメータメモリの所定場所に上書きされ（ステップ１３０３）、正常レスポンスをコマンド発行元へと返信して（ステップ１３０４）、処理を終了する。
【０１５８】
このように、サポートツール、上位パソコン又は他のプログラマブルコントローラ（ＰＬＣ）などからセキュリティ情報ダウンロードコマンドを受信した場合には、ＰＬＣ内『セキュリティ情報』のいずれにも『読み出し禁止』及び『書き込み禁止』が設定されていない場合に限って（ステップ１３０２ＮＯ）、送信された『セキュリティ情報』はＰＬＣ内パラメータメモリの所定場所に上書きされ（ステップ１３０３）、正常レスポンスがコマンド発行元へと返信されるのに対し（ステップ１３０４）、ＰＬＣ内『セキュリティ情報』のいずれかに『読み出し禁止』又は『書き込み禁止』が設定されている場合には（ステップ１３０２ＹＥＳ）、エラーレスポンス『セキュリティ設定中』がコマンド発行元へと返信されて（ステップ１３０５）、送信された『セキュリティ情報』によるパラメータメモリの上書きは阻止される。そのため、不用意に『セキュリティ情報』が書き替えられることを未然に防止することができる。
【０１５９】
セキュリティ設定コマンドの対応処理の詳細を示すフローチャートが図１４に示されている。同図において、処理が開始されると、コマンドパラメータの対象グループＩＤを読み込んだ後（ステップ１４０１）、セキュリティ情報の中の該当グループにセキュリティが設定されているか否かの判定が行われる（ステップ１４０２）。
【０１６０】
ここで、セキュリティ情報の中の該当グループにセキュリティが設定されていれば（ステップ１４０２ＹＥＳ）、コマンド発行元に対してエラーレスポンスの返信が行われ（ステップ１４０６）、処理は終了する。
【０１６１】
これに対して、セキュリティ情報の中の該当グループにセキュリティが設定されていないと判定されれば（ステップ１４０２ＮＯ）、コマンドパラメータの『セキュリティ種別』を、セキュリティ情報の該当グループ所定のレコードに書き込む処理（ステップ１４０３）、並びに、コマンドパラメータの『パスワード』を、セキュリティ情報の該当グループ所定のレコードに書き込む処理（ステップ１４０４）を実行した後、正常終了レスポンスをコマンド発行元へと返信して（ステップ１４０５）、処理を終了する。
【０１６２】
このように、サポートツール、上位パソコン又は他のプログラマブルコントローラ（ＰＬＣ）などからセキュリティ設定コマンドを受信した場合には、セキュリティ情報の中の該当グループにセキュリティが設定されていない場合に限り（ステップ１４０２ＮＯ）、コマンドパラメータの『セキュリティ種別』を、セキュリティ情報の該当グループ所定のレコードに書き込む処理（ステップ１４０３）、並びに、コマンドパラメータの『パスワード』を、セキュリティ情報の該当グループ所定のレコードに書き込む処理（ステップ１４０４）を実行し、正常終了レスポンスを返信して（ステップ１４０５）、処理を終了するのに対し、セキュリティ情報の中の該当グループにセキュリティが設定されている場合には（ステップ１４０２ＹＥＳ）、コマンド発行元に対してエラーレスポンスの返信が行われて（ステップ１４０６）、『セキュリティ種別』の書き込み、並びに、『パスワード』の書き込みはいずれも行われない。そのため、不用意に、『セキュリティ種別』や『パスワード』が変更される虞を未然に防止することができる。
【０１６３】
セキュリティ解除コマンドの対応処理の詳細を示すフローチャートが図１５に示されている。同図において処理が開始されると、コマンドパラメータの対応グループＩＤを読み込んだ後（ステップ１５０１）、セキュリティ情報の中の該当グループにセキュリティが設定されているか否かの判定が行われる（ステップ１５０２）。
【０１６４】
ここで、セキュリティ情報の中の該当グループにセキュリティが設定されていなければ（ステップ１５０２ＮＯ）、コマンド発行元に対してエラーレスポンスが返信されて（ステップ１５０８）、処理は終了する。
【０１６５】
また、セキュリティ情報の中の該当グループにセキュリティが設定されている場合には（ステップ１５０２ＹＥＳ）、続いてコマンドパラメータの『パスワード』を、セキュリティ情報の該当グループの『パスワード』と照合した後（ステップ１５０３）、両者の一致を判定する（ステップ１５０４）。
【０１６６】
ここで、両者が不一致であれば（ステップ１５０４ＮＯ）、コマンド発行元に対してエラーレスポンスを返信した後（ステップ１５０７）、処理を終了する。
【０１６７】
これに対して、コマンドパラメータの『パスワード』がセキュリティ情報の該当グループの『パスワード』と照合一致した場合には（ステップ１５０４ＹＥＳ）、セキュリティ情報の該当グループ所定の『セキュリティ種別』、『パスワード』レコードを消去した後（ステップ１５０５）、コマンド発行元に対して正常レスポンスを返信し（ステップ１５０６）、処理を終了する。
【０１６８】
このように、サポートツール、上位パソコン又は他のプログラマブルコントローラ（ＰＬＣ）などからセキュリティ解除コマンドを受信した場合には、コマンドパラメータの『パスワード』とセキュリティ情報の該当グループの『パスワード』とが照合一致した場合に限り（ステップ１５０４ＹＥＳ）、セキュリティ情報の該当グループ所定の『セキュリティ種別』及び『パスワード』レコードが消去され（ステップ１５０５）、コマンド発行元へと正常終了レスポンスを返信して（ステップ１５０６）、処理が終了するのに対し、セキュリティ情報の中の該当グループにそもそもセキュリティが設定されていなかったり（ステップ１５０２ＮＯ）、あるいはコマンドパラメータの『パスワード』とセキュリティ情報の該当グループの『パスワード』とが不一致の場合には（ステップ１５０４ＮＯ）、エラーレスポンスの返信が行われて（ステップ１５０７，１５０８）、セキュリティ情報該当グループ所定の『セキュリティ種別』並びに『パスワード』レコードを消去する処理は行われない。そのため、セキュリティが不用意に解除されることが未然に防止される。
【０１６９】
次に、サポートツールに組み込まれたシステムプログラムの全体を概略的に示すゼネラルフローチャート（その１及びその２）が図１６及び図１７に示されている。同図において、処理が開始されると、起動時初期処理（ステップ１６０１）が実行されて、各種フラグやレジスタ類の初期設定が行われ、その後サポートツールの表示装置２３０には、機能選択画面（画面１）が表示される（ステップ１６０２）。
【０１７０】
画面１（機能選択用）の説明図が図３４に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、３４０１はプログラム編集選択ボタン、３４０２はグループ設定選択ボタン、３４０３はセキュリティ設定選択ボタン、３４０４はプログラム転送選択ボタン、３４０５はプログラムブロック転送選択ボタンである。
【０１７１】
このような画面１（機能選択用）によれば、メインタイトル表示領域の『メインメニュー』及びサブタイトル表示領域Ａ２の『機能選択』に基づいて画面の大まかな内容を理解することができ、さらに５個の選択ボタン３４０１〜３４０５を選択的にＧＵＩを介して操作することによって、プログラム編集機能、グループ設定機能、セキュリティ設定機能、プログラム転送機能、プログラムブロック転送機能を適宜に選択することができる。
【０１７２】
図１６に戻って、オペレータは画面１を参照することによって、所望の機能の選択を行う（ステップ１６０３）。
【０１７３】
ここで、『プログラム編集機能』が選択されると（ステップ１６０４ＹＥＳ）、当業者に公知なプログラム編集機能処理（ステップ１６０５）が実行されて、公知の手法により、プログラム編集が可能となる（ステップ１６０５）。
【０１７４】
『グループ設定機能』が選択された場合には（ステップ１６０６ＹＥＳ）、グループ設定機能処理が実行される（ステップ１６０７）。
【０１７５】
グループ設定機能を実現するための処理の詳細を示すフローチャート（その１及びその２）が図１８及び図１９に示されている。
【０１７６】
図１８において、処理が開始されると、グループ設定画面（画面２）の表示が行われる（ステップ１８０１）。画面２（グループ設定用）の説明図が図３５に示されている。図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、３５０１〜３５０５はグループＩＤ表示領域、３５０６はＯＫ選択ボタン、３５０７はキャンセル選択ボタンである。
【０１７７】
図１８に戻って、画面２（グループ設定用）において、プログラムブロック毎にグループＩＤを入力すると（ステップ１８０２）、ＯＫ選択ボタン３５０６の操作により、入力されたプログラムブロックとグループＩＤとの関係は、『グループ設定情報』として記憶され（ステップ１８０３）、その後、生成された『グループ設定情報』は、プログラマブルコントローラに対して送信され（ステップ１８０４）、プログラマブルコントローラからのレスポンスを待機する状態となる（ステップ１８０５ＮＯ）。この状態においてコントローラからのレスポンスが到来すれば（ステップ１８０５ＹＥＳ）、図１９へ移って、コントローラから受信したレスポンスが正常終了レスポンスであるか否かの判定が行われる（ステップ１９０１）。
【０１７８】
ここで、正常終了レスポンスと判定されれば（ステップ１９０１ＹＥＳ）、図４３（ａ）に示されるように、正常終了メッセージが表示されて（ステップ１９０２）、処理が終了する。
【０１７９】
これに対して、コントローラから受信したレスポンスが正常終了レスポンスでないと判定されると（ステップ１９０１ＮＯ）、さらにその受信されたレスポンスがエラーレスポンス『セキュリティ設定中』であるか否かの判定が行われる（ステップ１９０３）。
【０１８０】
ここで、受信されたレスポンスがエラーレスポンス『セキュリティ設定中』であると判定されると（ステップ１９０３ＹＥＳ）、『セキュリティ設定中』エラーメッセージの作成が行われ（ステップ１９０４）、図４３（ｄ）に示されるように、『セキュリティエラー設定中』エラーメッセージが表示される（ステップ１９０６）。
【０１８１】
さらに、受信されたレスポンスが、エラーレスポンス『セキュリティ設定中』でないと判定されると（ステップ１９０３ＮＯ）、その他のエラーメッセージの作成が行われ（ステップ１９０５）、画面上に表示される（ステップ１９０６）こととなる。
【０１８２】
このように、図１８及び図１９の処理が実行される結果、グループ設定機能が実現されることとなる。
【０１８３】
プログラム転送機能を実現するための処理の詳細を示すフローチャート（その１〜その３）が図２０〜図２２に示されている。
【０１８４】
図２０において処理が開始されると、ダウンロード／アップロード指定画面（画面３）の表示が行われる（ステップ２００１）。
【０１８５】
画面３（ダウンロード／アップロード指定用）の説明図が図３６に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、３６０１はダウンロード選択ボタン、３６０２はアップロード選択ボタン、３６０３はキャンセル選択ボタンである。
【０１８６】
ユーザは、画面３（ダウンロード／アップロード指定用）に基づき、ダウンロードやアップロードの選択を行う（ステップ２００２）。
【０１８７】
ここで、ダウンロードが選択された場合には（ステップ２００３ＹＥＳ）、『アプリケーションプログラムデータ』よりプログラムデータの抽出を行い（ステップ２００４）、『プログラムダウンロードコマンド』にてデータを送信した後（ステップ２００５）、図２１へ移って、ＰＬＣからのレスポンスを待機する状態となる（ステップ２１０１）。
【０１８８】
ここで、ＰＬＣからのレスポンスがあれば（ステップ２１０１レスポンスあり）、さらにそのレスポンスが正常終了レスポンスであるか否かの判定を行う（ステップ２１０２）。
【０１８９】
ここで、正常終了レスポンスとの判定が行われれば（ステップ２１０２ＹＥＳ）、正常終了メッセージを画面に表示して（ステップ２１０３）、処理を終了する。
【０１９０】
これに対して、正常終了レスポンスでないと判定されると（ステップ２１０２ＮＯ）、さらに書き込み禁止中であるか否かの判定が行われる（ステップ２１０４）。
【０１９１】
ここで、書き込み禁止中と判定されれば（ステップ２１０４ＹＥＳ）、『書き込み禁止中』エラーメッセージの作成が行われた後（ステップ２１０５）、図４３（ｃ）に示されるように、『書き込み禁止中』エラーメッセージの表示が行われ（ステップ２１０７）、処理は終了する。
【０１９２】
また、書き込み禁止中ではないと判定されると（ステップ２１０４ＮＯ）、その他のエラーメッセージの作成が行われた後（ステップ２１０６）、該当するエラーメッセージの表示が行われて（ステップ２１０７）、処理は終了する。
【０１９３】
図２０へ戻って、アップロードが選択された場合には（ステップ２００３ＮＯ）、図２２へ移って、『プログラムブロックアップロードコマンド』にて指定のプログラムブロックデータを読み出す処理を実行した後（ステップ２２０１）、ＰＬＣからのレスポンスを待機する状態となる（ステップ２２０２）。
【０１９４】
ここで、ＰＬＣからのレスポンスが到来すれば（ステップ２２０２レスポンスあり）、それが正常終了レスポンスであるか否かの判定が行われる（ステップ２２０３）。
【０１９５】
ここで、正常終了レスポンスと判定されれば（ステップ２２０３ＹＥＳ）、受信したプログラムブロックデータを『アプリケーションプログラムデータ』の所定の場所に上書きする処理を実行した後（ステップ２２０４）、図４３（ａ）に示されるように、正常終了メッセージを表示した後（ステップ２２０５）、処理を終了する。
【０１９６】
また、正常終了レスポンスでないと判定されると（ステップ２２０３ＮＯ）、さらに読み出し禁止中であるか否かの判定が行われる（ステップ２２０６）。
【０１９７】
ここで、読み出し禁止中であると判定されれば（ステップ２２０６ＹＥＳ）、『読み出し禁止中』エラーメッセージの作成が行われた後（ステップ２２０７）、図４３（ｂ）に示されるように、『読み出し禁止中』エラーメッセージの表示を行って（ステップ２２０９）、処理を終了する。
【０１９８】
さらに、読み出し禁止中でないと判定されると（ステップ２２０６ＮＯ）、その他エラーメッセージの作成を行った後（ステップ２２０８）、該当するエラーメッセージの表示を行って（ステップ２２０９）、処理を終了する。
【０１９９】
このように、図２０〜図２２の処理が実行される結果、プログラム転送機能が実現される。
【０２００】
プログラムブロック転送機能を実現するための処理の詳細を示すフローチャート（その１〜その３）が図２３〜図２５に示されている。
【０２０１】
図２３において処理が開始されると、まず、ダウンロード／アップロード指定画面（画面３）の表示が行われる（ステップ２３０１）。
【０２０２】
画面３（ダウンロード／アップロード指定用）の説明図が図３６に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、３６０１はダウンロード選択ボタン、３６０２はアップロード選択ボタン、３６０３はキャンセル選択ボタンである。
【０２０３】
画面３（ダウンロード／アップロード指定用）において、ユーザはダウンロード又はアップロードの選択を行う（ステップ２３０２）。
【０２０４】
ここで、ダウンロードが選択された場合には（ステップ２３０３ＹＥＳ）、プログラムブロック指定画面（画面４）の表示が行われる（ステップ２３０４）。
【０２０５】
画面４（プログラムブロック指定用）の説明図が図３７に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、３７０１はブロック指定用カーソル、３７０２はＯＫ選択ボタン、３７０３はキャンセル選択ボタンである。
【０２０６】
画面４（プログラムブロック指定用）において、ユーザはプログラムブロックの指定を行う（ステップ２３０５）。
【０２０７】
すると、『アプリケーションプログラムデータ』より指定されたプログラムブロックのデータが抽出され（ステップ２３０６）、さらに『プログラムブロックダウンロードコマンド』にてデータの送信が行われ（ステップ２３０７）、図２４へ移って、ＰＬＣからのレスポンスを待機する状態となる（ステップ２４０１）。
【０２０８】
この状態において、レスポンスが到来すると（ステップ２４０１レスポンスあり）、そのレスポンスが正常終了レスポンスであるか否かの判定が行われる（ステップ２４０）。
【０２０９】
ここで、ＰＬＣから受信したレスポンスが正常終了レスポンスと判定されると（ステップ２４０２ＹＥＳ）、正常終了メッセージの表示が行われて（ステップ２４０３）、処理は終了する。
【０２１０】
また、正常終了レスポンスでないと判定されると（ステップ２４０２ＮＯ）、さらに書き込み禁止エラーレスポンスであるか否かの判定が行われる（ステップ２４０４）。
【０２１１】
ここで、書き込み禁止エラーレスポンスであると判定されると（ステップ２４０４ＹＥＳ）、『書き込み禁止』エラーメッセージの作成が行われた後（ステップ２４０５）、図４３（ｃ）に示されるように、『書き込み禁止』エラーメッセージの表示が行われて（ステップ２４０７）、処理は終了する。
【０２１２】
さらに、書き込み禁止エラーレスポンスでもないと判定されると（ステップ２４０４ＮＯ）、その他のエラーメッセージの作成が行われ（ステップ２４０６）、その後該当するエラーメッセージの表示を行って（ステップ２４０７）、処理は終了する。
【０２１３】
図２３へ戻って、アップロードが選択されたと判定されると（ステップ２３０３ＮＯ）、図２５へ移って、プログラムブロック指定画面（画面４）の表示が行われる（ステップ２５０１）。
【０２１４】
画面４（プログラムブロック指定用）の説明図が図３７に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、３７０１はブロック指定用カーソル、３７０２はＯＫ選択ボタン、３７０３はキャンセル選択ボタンである。
【０２１５】
画面４（プログラムブロック指定用）において、ユーザはプログラムブロックの指定を行う（ステップ２５０２）。
【０２１６】
すると、『プログラムブロックアップロードコマンド』にて指定のプログラムブロックデータの読み出しが行われ（ステップ２５０３）、その後ＰＬＣからのレスポンスを待機する状態となる（ステップ２５０４）。
【０２１７】
ここで、ＰＬＣからのレスポンスの到来が判定されると（ステップ２５０４レスポンスあり）、さらにそのレスポンスが正常終了レスポンスであるか否かの判定が行われる（ステップ２５０５）。
【０２１８】
ここで、正常終了レスポンスであると判定されると（ステップ２５０５ＹＥＳ）、受信したプログラムブロックデータを『アプリケーションプログラムデータ』の所定の場所に上書きした後（ステップ２５０６）、図４３（ａ）に示されるように、正常終了メッセージを表示して（ステップ２５０７）、処理を終了する。
【０２１９】
また、受信されたレスポンスが正常終了レスポンスでないと判定された場合には（ステップ２５０５ＮＯ）、さらに読み出し禁止エラーレスポンスであるか否かの判定が行われる（ステップ２５０８）。
【０２２０】
ここで、読み出し禁止エラーレスポンスであると判定されると（ステップ２５０８ＹＥＳ）、『読み出し禁止』エラーメッセージの作成が行われ（ステップ２５０９）、図４３（ｂ）に示されるように、『読み出し禁止』エラーメッセージの表示を行った後（ステップ２５１１）、処理を終了する。
【０２２１】
さらに、読み出し禁止エラーレスポンスでもないと判定されると（ステップ２５０８ＮＯ）、その他のエラーメッセージの作成を行った後（ステップ２５１０）、該当するエラーメッセージの表示を行って（ステップ２５１１）、処理を終了する。
【０２２２】
このように、図２３〜図２５の処理が実行される結果、プログラムブロック転送機能が実現される。
【０２２３】
セキュリティ設定機能を実現するための処理の詳細を示すフローチャート（その１〜その４）が図２６〜図２９に示されている。図２６において処理が開始されると、セキュリティ機能設定、対象選択画面（画面５）の表示が行われる（ステップ２６０１）。
【０２２４】
画面５（セキュリティ機能設定、対象選択用）の説明図が図３８に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、３８０１は全体設定ボタン、３８０２は個別設定ボタン、３８０３はキャンセル設定ボタンである。
【０２２５】
画面５（セキュリティ機能設定、対象選択用）において、ユーザは『全体設定』又は『個別設定』のいずれかの機能を選択する（ステップ２６０２）。
【０２２６】
ここで、選択された機能が『全体設定』であると判定されると（ステップ２６０３全体設定）、続いて、全体画面（画面６）の表示が行われる（ステップ２６０４）。
【０２２７】
画面６（セキュリティ設定機能・全体対象初期画面）の説明図が図３９に示されている。図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、３９０１及び３９０２はアクティブ状態の表示ランプ、３９０３及び３９０４はパスワード表示領域、３９０５はＯＫ選択ボタン、３９０６はキャンセル選択ボタンである。
【０２２８】
画面６（セキュリティ設定機能・全体対象初期画面）において、ユーザはグループ毎に『セキュリティ種別』及び『パスワード』を入力し（ステップ２６０５）『ＯＫ』を入力する（ステップ２６０６）。
【０２２９】
すると、入力された『セキュリティ情報』の保存が行われ（ステップ２６０７）、さらに『セキュリティ情報』ダウンロードコマンドにより『セキュリティ情報』データの送信が行われ（ステップ２６０８）、図２９へ移って、コントローラからのレスポンスを待機する状態となる（ステップ２９０１）。
【０２３０】
この状態において、コントローラからのレスポンスありとの判定が行われると（ステップ２９０１レスポンスあり）、さらにそのレスポンスが正常終了レスポンスであるか否かの判定が行われる（ステップ２９０２）。
【０２３１】
ここで、正常終了レスポンスであるとの判定が行われれば（ステップ２９０２ＹＥＳ）、図４３（ａ）に示されるように、正常終了メッセージの表示を行って（ステップ２９０３）、処理を終了する。
【０２３２】
これに対して、選択された機能が『個別設定』であると判定されると（ステップ２６０３個別設定）、図２７へ移って、グループ設定・解除選択画面（画面７）の表示が行われる。
【０２３３】
画面７（セキュリティ設定機能・個別対象初期画面）の説明図が図４０に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ３は詳細表示領域、４００１はグループＩＤ表示領域、４００２は設定選択ボタン、４００３は解除選択ボタン、４００４はキャンセル選択ボタンである。
【０２３４】
画面７（セキュリティ設定機能・個別対象初期画面）において、ユーザはグループＩＤの入力（ステップ２７０２）及び設定／解除入力（ステップ２７０３）を行う。
【０２３５】
入力結果が『設定』であると判定されると（ステップ２７０４設定）、続いて、設定詳細画面（画面８）の表示が行われる（ステップ２７０５）。
【０２３６】
画面８（セキュリティ設定機能・個別対象設定詳細）の説明図が図４１に示されている。図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、４１０１はアクティブ状態の表示ランプ、４１０２はパスワード表示領域、４１０３は設定選択ボタン、４１０４はキャンセル選択ボタンである。
【０２３７】
画面８（セキュリティ設定機能・個別対象設定詳細）において、ユーザは『セキュリティ種別』及び『パスワード』を入力し（ステップ２７０６）、『設定』を入力する（ステップ２７０６−１）。
【０２３８】
すると、入力された『グループＩＤ』、『セキュリティ種別』、『パスワード』はパラメータとして『セキュリティ設定コマンド』に付加されて送信される（ステップ２７０７）。
【０２３９】
すると、図２９に移って、コントローラからのレスポンスを待機する状態となる（ステップ２９０１）。
【０２４０】
ここで、コントローラからのレスポンスありと判定されると（ステップ２９０１レスポンスあり）、そのレスポンスが正常終了レスポンスであるか否かの判定が行われる（ステップ２９０２）。
【０２４１】
ここで、終了正常レスポンスであると判定されれば（ステップ２９０２ＹＥＳ）、図４３（ａ）に示されるように、正常終了メッセージを表示した後、処理を終了する。これに対して、正常終了レスポンスでないと判定されると（ステップ２９０２ＮＯ）、さらにセキュリティ設定中エラーレスポンスであるか否かの判定が行われる（ステップ２９０４）。
【０２４２】
ここで、セキュリティ設定中エラーレスポンスであると判定されると（ステップ２９０４ＹＥＳ）、『セキュリティ設定中』エラーメッセージの作成が行われた後（ステップ２９０５）、図４３（ｄ）に示されるように、『セキュリティ設定中』エラーメッセージの表示が行われ（ステップ２９０７）、処理が終了する。
【０２４３】
さらに、セキュリティ設定中エラーレスポンスでもないと判定されると（ステップ２９０４ＮＯ）、その他のエラーメッセージの作成が行われた後（ステップ２９０６）、該当するエラーメッセージの表示を行って（ステップ２９０７）、処理を終了する。
【０２４４】
一方、図２７へ戻って、入力結果が『解除』であると判定されると（ステップ２７０４解除）、図２８へ移って、解除詳細画面（画面９）の表示が行われる（ステップ２８０１）。
【０２４５】
画面９（セキュリティ設定機能・個別対象解除詳細）の説明図が図４２に示されている。同図において、Ａ１はメインタイトル表示領域、Ａ２はサブタイトル表示領域、Ａ３は詳細表示領域、４２０１はパスワード表示領域、４２０２は解除選択ボタン、４２０３はキャンセル選択ボタンである。
【０２４６】
画面９（セキュリティ設定機能・個別対象解除詳細）において、ユーザは『パスワード』の入力を行い（ステップ２８０２）、『解除』を入力する（ステップ２８０２−１）。
【０２４７】
すると、入力された『グループＩＤ』と『パスワード』をパラメータとして『セキュリティ解除コマンド』を送信する処理が実行され（ステップ２８０３）、以後コントローラからのレスポンスを待機する状態となる（ステップ２８０４）。
【０２４８】
この状態において、レスポンスありとの判定が行われると（ステップ２８０４レスポンスあり）、さらにそのレスポンスが正常終了レスポンスであるか否かの判定が行われる（ステップ２８０５）。
【０２４９】
ここで、正常終了レスポンスであるとの判定が行われると（ステップ２８０５ＹＥＳ）、図４３（ａ）に示されるように、正常終了メッセージの表示を行った後（ステップ２８０６）、図２９へ移って処理を終了する。
【０２５０】
これに対して、正常終了レスポンスでないとの判定が行われると（ステップ２８０５ＮＯ）、『パスワードエラー』である旨のエラーメッセージの作成が行われ（ステップ２８０７）、その後エラーメッセージの表示を行って（ステップ２８０８）、処理を終了する。
【０２５１】
このように、図２６〜図２９の処理が実行される結果、セキュリティ設定機能が実現される。
【０２５２】
最後に、以上説明したサポートツール並びにプログラマブルコントローラの動作を、オペレータが実際に作業を行う場合の手順に沿って、系統的に説明する。
【０２５３】
［コントローラ内へと、プログラムデータ、グループ設定情報、セキュリティ情報を格納する作業］
（１）  コントローラ（ＰＬＣ）に各種データが記憶されていない状態で、オペレータが作業を開始するものとする。
【０２５４】
（２）  オペレータは、ブロック分割されたプログラム（プログラムブロック）をサポートツールに記憶させると共に、このプログラムをコントローラ（ＰＬＣ）にも転送する。
【０２５５】
（３）  オペレータは、サポートツールを使用して、プログラムブロックを設備単位等グループとして組分けし、グループ設定データをサポートツール内に記憶すると共に、コントローラ（ＰＬＣ）にも転送する。
【０２５６】
（４）  オペレータは、サポートツールを使用して、上記グループ毎にセキュリティ状態を設定し、コントローラ（ＰＬＣ）へと転送する。
【０２５７】
（５）  これにより、『プログラムデータ』、『グループ設定情報』、及び『セキュリティ情報』がコントローラ内に格納される。
【０２５８】
［サポートツールによるプログラムデータのダウンロード］
（１）  オペレータは、サポートツールを使用して、コントローラ（ＰＬＣ）に対しプログラムをダウンロードする。
【０２５９】
（２）  ダウンロードの依頼を受けたコントローラは、コントローラ内のプログラムのどこかに対して書き込み禁止が設定されている場合は、ダウンロード依頼を拒否してその理由を返信し、書き込み設定禁止がされていない場合は、プログラムを上書きする。
【０２６０】
（３）  サポートツールは、コントローラからの返信を受けて、正常終了ならばそれをオペレータに示し、書き込み禁止によるエラー終了ならば、オペレータにエラーを示す。
【０２６１】
［サポートツールによるプログラムのアップロード］
（１）  オペレータは、サポートツールを使用してコントローラに対してプログラムをアップロードする。
【０２６２】
（２）  アップロードの依頼を受けたコントローラは、コントローラ内のプログラムのどこかに対して読み出し禁止が設定されている場合は、ダウンロード依頼を拒否してその理由を返信し、読み出し禁止が設定されていない場合は、プログラムデータをコントローラに返信する。
【０２６３】
（３）  コントローラからの返信を受けたサポートツールは正常終了ならばそれをオペレータに示し、読み出し禁止によるエラー終了ならば、オペレータにエラーを示す。
【０２６４】
［サポートツールによるプログラムブロックのダウンロード］
（１）  オペレータは、サポートツールを使用して、サポートツール内のプログラムにより任意のプログラムブロックを指定して、コントローラに対してダウンロードを行う。
【０２６５】
（２）  ダウンロードの依頼を受けたコントローラは、該当のプログラムブロックが既にコントローラ内に存在し、かつ書き込み禁止が設定されているかを調べる。上記条件に当てはまる場合にはダウンロード依頼を拒否しその理由を返信し、当てはまらない場合はプログラムブロックデータをコントロール内に記憶する。
【０２６６】
（３）  コントローラからの返信を受けたサポートツールは、正常終了ならばそれをオペレータに示し、書き込み禁止によるエラー終了ならば、オペレータにエラーを示す。
【０２６７】
［サポートツールによるプログラムブロックのアップロード］
（１）  オペレータは、サポートツールを使用して、プログラムブロックを指定して、コントローラに対してアップロードを依頼する。
【０２６８】
（２）  アップロードの依頼を受けたコントローラは、該当のプログラムブロックがコントローラ内に存在しないか、また存在しかつ読み出し禁止が設定されているかを調べる。上記条件に当てはまる場合は、アップロード依頼を拒否しその理由を返信し、当てはまらない場合はプログラムブロックデータをサポートツールに返信する。
【０２６９】
（３）  コントローラからの返信を受けたサポートツールは、正常終了ならばそれをオペレータに示すと共にデータをサポートツール内に記憶し、エラー終了ならばオペレータにエラーを示す。
【０２７０】
［サポートツールによるグループ設定情報のダウンロード］
（１）  オペレータは、サポートツールを使用して、グループ設定を変更し、コントローラにダウンロードを行う。
【０２７１】
（２）  ダウンロードの依頼を受けたコントローラは、コントローラ内のプログラムのどこかに対して読み出し禁止または書き込み禁止が設定されている場合はダウンロード依頼を拒否しその理由を返信し、設定されていなければグループ設定情報を上書きする。
【０２７２】
（３）  コントローラからの返信を受けたサポートツールは、正常終了ならばそれをオペレータに示し、読み出し／書き込み禁止によるエラー終了ならば、オペレータにエラーを示す。
【０２７３】
［サポートツールによるセキュリティ設定情報のダウンロード］
（１）  オペレータは、サポートツールを使用して、セキュリティ設定を変更し、コントローラにダウンロードを行う。
【０２７４】
（２）  ダウンロードの依頼を受けたコントローラは、コントローラ内のプログラムのどこかに対して読み出し禁止又は書き込み禁止が設定されている場合はダウンロード依頼を拒否してその理由を返信し、設定されていなければグループ設定情報を上書きする。
【０２７５】
（３）  コントローラからの返信を受けたサポートツールは、正常終了ならばそれをオペレータに示し、読み出し／書き込み禁止によるエラー終了ならば、オペレータにエラーを示す。
【０２７６】
［サポートツールによるセキュリティの個別設定］
（１）  オペレータは、サポートツールを使用して、任意のプログラムブロックを指定し、セキュリティ設定を変更し、コントローラにダウンロードを行う。
【０２７７】
（２）  ダウンロードの依頼を受けたコントローラは、コントローラ内の該当のプログラムブロックに対して読み出し禁止又は書き込み禁止が設定されている場合はダウンロード依頼を拒否しその理由を返信し、設定されていなければ該当のプログラムブロックのセキュリティ設定情報を上書きする。
【０２７８】
（３）  コントローラからの返信を受けたサポートツールは、正常終了ならばそれをオペレータに示し、読み出し／書き込み禁止によるエラー終了ならば、オペレータにエラーを示す。
【０２７９】
［サポートツールによるセキュリティの個別解除］
（１）  オペレータは、サポートツールを使用して、任意のプログラムブロックを指定しパスワードを付けて、コントローラ内の該当のプログラムブロックのセキュリティを解除する。
【０２８０】
（２）  解除の依頼を受けたコントローラは、コントローラ内の該当のプログラムブロックに対して記憶されているパスワードと一致するかを照合し、一致する場合は該当のプログラムブロックのセキュリティ設定を解除し、一致しない場合は解除依頼を拒否しその理由を返信する。
【０２８１】
（３）  コントローラからの返信を受けたサポートツールは、正常終了ならばそれをオペレータに示し、パスワード不一致によるエラー終了ならば、オペレータにエラーを示す。
【０２８２】
図４４には、本発明の具体的な応用例を示す説明図が示されている。いま仮に、８個のプログラムブロックＰＢ１〜ＰＢ８を有するユーザプログラムが、マシンベンダーの側で設計され、これがプログラマブルコントローラに格納されて、ユーザへと納入され、ユーザの管理者を経て、ユーザの作業者へと手渡されるものと想定する。
【０２８３】
このような場合、マシンベンダーの側では、例えばノウハウの漏洩を防止するため、プログラムブロックＰＢ７及びＰＢ８の２つのプログラムブロックに対し、パスワードＡを使用してセキュリティ（読み出し禁止）をかける。一方、ユーザ管理者の側では、ユーザ作業者による勝手なプログラム変更を防止するため、ＰＢ４〜ＰＢ６からなる３つのプログラムブロックに対して、パスワードＢを使用して、セキュリティ（変更禁止）をかける。
【０２８４】
すると、ユーザの作業者の側では、ＰＢ１〜ＰＢ３に至る３個のプログラムブロックに関しては読み出し並びに変更が可能であるが、ＰＢ４〜ＰＢ６に至る３個のプログラムブロックに関しては、読み出しは可能であるものの、変更は不能となる。さらに、ＰＢ７及びＰＢ８からなる２個のプログラムブロックに関しては、変更のみならず読み出しさえも不能となる。その結果、ユーザ作業者の側では、ＰＢ７及びＰＢ８に関してはその中味を知ることさえもできない一方、ＰＢ４〜ＰＢ６からなる３個のプログラムブロックに関しては、読み出しのみが許容され、さらにＰＢ１〜ＰＢ３からなる３個のプログラムブロックに関しては読み出しも変更も自由に行うことができることとなる。
【０２８５】
このように本発明を利用すれば、マシンベンダー、ユーザ管理者、ユーザ作業者のそれぞれに応じて、プログラムブロックグループ単位で、セキュリティレベルの異なるセキュリティ機能を設定することができ、それぞれの側のニーズに的確に対応することができる。
【０２８６】
なお、以上の実施の形態において、『セキュリティ情報』に関しては、ユーザプログラムの一部とすることもできる。さらに、『プログラムダウンロードコマンド』や『アップロードコマンド』のパラメータに、読み出しや書き替えの禁止を解除するためのパスワードを含めてもよい。
【０２８７】
以上の実施形態のＰＬＣシステムによれば、次のような格別の作用効果が期待される。
（１）開発形態が複雑になった場合でも、ベンダー個々のノウハウが確実に保護できる。
（２）ユーザ側の組織構成が複雑化しても、目的に応じて作業者毎のアクセス権限を分けることができる。
（３）ベンダー側でアクセス制限をかけた形で納入された機械や装置においても、ユーザ側でその権限を守ったままで、新たに独自の権限を設定できる。
（４）プログラムの構造化単位を利用し、その単位を使ってアクセス権限をかけられるため、プログラム中の該当個所がわかりやすい。
（５）アクセス制限の設定範囲の柔軟性を向上させたままで、アクセス権限に関わる利用者の負担を軽減できる。
（６）プログラム全体を構造化し設計する際に、動作確認が完了したプログラムブロックを順次で書き替えできない状態のブロック群に加えられ、かつ、一つのパスワードを記憶しておくだけでその状態を作れるため、アクセス制限の管理負担を最小限に留めたままで、完成したプログラムブロックを誤って書き替えてしまうような作業ミスを容易に防止できる。
【０２８８】
尚、以上の実施の形態においては、グループ単位によるセキュリティ一括設定又は一括設定解除を、ＰＬＣ側に格納されたプログラムデータについて行なったが、同様な処理はサポートツール側に格納されたプログラムデータについて行なうこともできる。
【０２８９】
このようなサポートツールは、ユーザプログラムをプログラムブロック単位で複数格納することができるメモリと、このメモリから読み出されたユーザプログラムを表示させることができる表示器と、各種の指令生成やデータ生成に使用することができる操作手段と、を有する。
【０２９０】
さらに、このサポートツールには、操作手段の所定操作に応じて、プログラムブロックグループとその構成プログラムブロックとの関係を定義するグループ設定情報を生成するグループ設定情報生成手段と、操作手段の所定操作に応じて、プログラムブロックグループとそのグループ鍵との関係を定義するグループ鍵設定情報を生成するグループ鍵設定情報生成手段と、操作手段の所定操作に応じて、プログラムブロックグループ又はプログラムブロックとそのセキュリティレベルとの関係を定義するセキュリティレベル設定情報を生成するセキュリティレベル設定情報生成手段と、入力鍵がいずれかのグループ鍵と一致したことを条件として、プログラムブロックグループ毎にセキュリティ設定状態を記憶させたセキュリティ設定状態情報の中で、そのグループ鍵に対応するプログラムブロックグループのセキュリティ設定状態の内容を操作手段の所定操作に応じて運用又は解除に設定するキュリティ状態設定手段と、プログラムブロックを指定してのユーザプログラムアクセス要求が到来したときには、グループ設定情報とセキュリティレベル設定情報とセキュリティ設定状態情報とを参照し、当該プログラムブロックの所属するプログラムブロックグループのセキュリティ設定状態の内容が運用であるときには設定されたセキュリティレベルに従ったセキュリティ動作を実行させる一方、セキュリティ設定状態の内容が解除であるときにはセキュリティ動作を実行させないセキュリティ選択実行手段と、が具備される。
【０２９１】
また、セキュリティ動作としては、プログラムブロックの書き替えを禁止する動作であってもよいし、セキュリティ動作が、プログラムブロックの読み出し及び書き替えを禁止する動作であってもよい。
【０２９２】
さらに、プログラムブロックの読み出しには、読み出されたプログラムブロックの表示又は読み出されたプログラムブロックのプログラマブルコントローラへの転送が含まれていてもよい。
【０２９３】
【発明の効果】
以上の説明で明らかなように、本発明によれば、ユーザプログラムの分割数が例えば数百乃至数千といった膨大な数に及ぶときにも、さほど鍵数（例えば、パスワード数）を増加させることなく、ユーザプログラム中の必要な部分のみをセキュリティにより的確に保護可能となる。
【０２９４】
さらに、この発明によれば、ユーザプログラムの分割数が例えば数百乃至数千といった膨大な数に及ぶときにも、さほど鍵数（例えば、パスワード数）を増加させることなく、ユーザプログラム中の必要な部分のみを、必要なセキュリティレベルにより、的確に保護可能となる。
【図面の簡単な説明】
【図１】  本発明が適用されるＰＬＣシステムの全体構成を示す説明図である。
【図２】  アプリケーションプログラムの構造の一例を概念的に示す説明図である。
【図３】  プログラマブルコントローラ全体のハードウェア構成を示すブロック図である。
【図４】  サポートツール全体のハードウェア構成を示すブロック図である。
【図５】  プログラマブルコントローラに組み込まれたシステムプログラムの全体を概略的に示すフローチャートである。
【図６】  プログラム運転処理の詳細を示すフローチャートである。
【図７】  ネットワーク処理の詳細を示すフローチャートである。
【図８】  プログラムダウンロードコマンドの対応処理の詳細を示すフローチャートである。
【図９】  プログラムアップロードコマンドの対応処理の詳細を示すフローチャートである。
【図１０】  プログラムブロックダウンロードコマンドの対応処理の詳細を示すフローチャートである。
【図１１】  プログラムブロックアップロードコマンドの対応処理の詳細を示すフローチャートである。
【図１２】  グループ設定情報ダウンロードコマンドの対応処理の詳細を示すフローチャートである。
【図１３】  セキュリティ情報ダウンロードコマンドの対応処理の詳細を示すフローチャートである。
【図１４】  セキュリティ設定コマンドの対応処理の詳細を示すフローチャートである。
【図１５】  セキュリティ解除コマンドの対応処理の詳細を示すフローチャートである。
【図１６】  サポートツールに組み込まれたシステムプログラムの全体を概略的に示すゼネラルフローチャート（その１）である。
【図１７】  サポートツールに組み込まれたシステムプログラムの全体を概略的に示すゼネラルフローチャート（その２）である。
【図１８】  グループ設定機能を実現するための処理の詳細を示すフローチャート（その１）である。
【図１９】  グループ設定機能を実現するための処理の詳細を示すフローチャート（その２）である。
【図２０】  プログラム転送機能を実現するための処理の詳細を示すフローチャート（その１）である。
【図２１】  プログラム転送機能を実現するための処理の詳細を示すフローチャート（その２）である。
【図２２】  プログラム転送機能を実現するための処理の詳細を示すフローチャート（その３）である。
【図２３】  プログラムブロック転送機能を実現するための処理の詳細を示すフローチャート（その１）である。
【図２４】  プログラムブロック転送機能を実現するための処理の詳細を示すフローチャート（その２）である。
【図２５】  プログラムブロック転送機能を実現するための処理の詳細を示すフローチャート（その３）である。
【図２６】  セキュリティ設定機能を実現するための処理の詳細を示すフローチャート（その１）である。
【図２７】  セキュリティ設定機能を実現するための処理の詳細を示すフローチャート（その２）である。
【図２８】  セキュリティ設定機能を実現するための処理の詳細を示すフローチャート（その３）である。
【図２９】  セキュリティ設定機能を実現するための処理の詳細を示すフローチャート（その４）である。
【図３０】  グループ設定情報の一例を示す説明図である。
【図３１】  セキュリティ情報の一例を示す説明図である。
【図３２】  アプリケーションプログラムデータの一例を示す説明図である。
【図３３】  プログラムブロックステータス情報の一例を示す説明図である。
【図３４】  サポートツールの表示器における画面１（機能選択用）の説明図である。
【図３５】  サポートツールの表示器における画面２（グループ設定用）の説明図である。
【図３６】  サポートツールの表示器における画面３（ダウンロード／アップロード指定用）の説明図である。
【図３７】  サポートツールの表示器における画面４（プログラムブロック指定用）の説明図である。
【図３８】  サポートツールの表示器における画面５（セキュリティ機能設定対象選択用）の説明図である。
【図３９】  サポートツールの表示器における画面６（セキュリティ設定機能・全体対象初期画面）の説明図である。
【図４０】  サポートツールの表示器における画面７（セキュリティ設定機能・個別対象初期画面）の説明図である。
【図４１】  サポートツールの表示器における画面８（セキュリティ設定機能・個別対象設定詳細）の説明図である。
【図４２】  サポートツールの表示器における画面９（セキュリティ設定機能・個別対象解除詳細）の説明図である。
【図４３】  ステータス画面の表示例を示す説明図である。
【図４４】  本発明の具体的な応用例を示す説明図である。
【符号の説明】
１            プログラマブルコントローラ
２            サポートツール
３            入出力装置
４            ネットワーク
１０１        ＣＰＵ
１０２        システムプログラムメモリ
１０３        ユーザプログラムメモリ
１０４        パラメータメモリ
１０５        ワークメモリ
１０６        Ｉ／Ｏメモリ
１０７        Ｉ／Ｏインタフェース
１０８        通信インタフェース
２１０        演算装置
２１１        中央処理装置
２１２        メモリ空間
２１２Ａ      パラメータデータエリア
２１２Ｂ      ユーザプログラムデータエリア
２１２Ｃ      サポートツールモジュールエリア
２１３        表示装置用メモリ
２１４        バス
２１５        通信インタフェース
２２０        入力装置
２３０        表示装置
Ａ１          メインタイトル表示領域
Ａ２          サブタイトル表示領域
Ａ３          詳細表示領域
３４０１      プログラム編集選択ボタン
３４０２      グループ設定選択ボタン
３４０３      セキュリティ設定選択ボタン
３４０４      プログラム転送選択ボタン
３４０５      プログラムブロック転送選択ボタン
３５０１〜３５０５      グループＩＤ表示領域
３５０６      ＯＫ選択ボタン
３５０７      キャンセル選択ボタン
３６０１      ダウンロード選択ボタン
３６０２      アップロード選択ボタン
３６０３      キャンセル選択ボタン
３７０１      ブロック指定用カーソル
３７０２      ＯＫ選択用ボタン
３７０３      キャンセル選択ボタン
３８０１      全体設定選択ボタン
３８０２      個別設定選択ボタン
３８０３      キャンセル選択ボタン
３９０１      アクティブ状態の表示ランプ
３９０２      アクティブ状態の表示ランプ
３９０３      パスワード表示領域
３９０４      パスワード表示領域
３９０５      ＯＫ選択ボタン
３９０６      キャンセル選択ボタン
４００１      グループＩＤ表示領域
４００２      設定選択ボタン
４００３      解除選択ボタン
４００４      キャンセル選択ボタン
４１０１      アクティブ状態の表示ランプ
４１０２      パスワード表示領域
４１０３      設定選択ボタン
４１０４      キャンセル選択ボタン
４２０１      パスワード表示領域
４２０２      解除選択ボタン
４２０３      キャンセル選択ボタン
【図１】
0004238964.tif 000002
【図２】
0004238964.tif 000003
【図３】
0004238964.tif 000004
【図４】
0004238964.tif 000005
【図５】
0004238964.tif 000006
【図６】
0004238964.tif 000007
【図７】
0004238964.tif 000008
【図８】
0004238964.tif 000009
【図９】
0004238964.tif 000010
【図１０】
0004238964.tif 000011
【図１１】
0004238964.tif 000012
【図１２】
0004238964.tif 000013
【図１３】
0004238964.tif 000014
【図１４】
0004238964.tif 000015
【図１５】
0004238964.tif 000016
【図１６】
0004238964.tif 000017
【図１７】
0004238964.tif 000018
【図１８】
0004238964.tif 000019
【図１９】
0004238964.tif 000020
【図２０】
0004238964.tif 000021
【図２１】
0004238964.tif 000022
【図２２】
0004238964.tif 000023
【図２３】
0004238964.tif 000024
【図２４】
0004238964.tif 000025
【図２５】
0004238964.tif 000026
【図２６】
0004238964.tif 000027
【図２７】
0004238964.tif 000028
【図２８】
0004238964.tif 000029
【図２９】
0004238964.tif 000030
【図３０】
0004238964.tif 000031
【図３１】
0004238964.tif 000032
【図３２】
0004238964.tif 000033
【図３３】
0004238964.tif 000034
【図３４】
0004238964.tif 000035
【図３５】
0004238964.tif 000036
【図３６】
0004238964.tif 000037
【図３７】
0004238964.tif 000038
【図３８】
0004238964.tif 000039
【図３９】
0004238964.tif 000040
【図４０】
0004238964.tif 000041
【図４１】
0004238964.tif 000042
【図４２】
0004238964.tif 000043
【図４３】
0004238964.tif 000044
【図４４】
0004238964.tif 000045