(57)【要約】【課題】変更を禁止する保護ファンクションブロックと、変更を可能とする非保護ファンクションブロックとを同一のライブラリに保存可能なプログラマブルコントローラのプログラム編集装置の提供。【解決手段】端末機３０のライブラリ３０８には、関数プログラムをそれぞれ含んだユーザーファンクションブロック３０９、３１０と既製の保護ファンクションブロック３１１が保存されている。ユーザーが操作することにより、端末機３０はライブラリ３０８内のファンクションブロック３０９、３１０、３１１に含まれる関数プログラムのいくつかをリンクさせて、Ｉ／Ｏモジュール１、２と外部装置との間の信号のやりとりを制御する制御プログラムを形成する。端末機３０の制御部３０３は、ライブラリ３０８内のユーザーファンクションブロック３０９、３１０に含まれる関数プログラムの変更を許可するが、保護ファンクションブロック３１１に含まれる関数プログラムの変更は禁止する。【選択図】図１
2010033290.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルコントローラで実行可能な制御プログラムを編集するプログラマブルコントローラのプログラム編集装置において、
保護ファンクションブロックおよび非保護ファンクションブロックを保存するライブラリと、
前記ライブラリ内の前記保護ファンクションブロックあるいは前記非保護ファンクションブロックにそれぞれ含まれる関数プログラムのいくつかをリンクさせて前記制御プログラムを形成し、前記ライブラリ内の前記非保護ファンクションブロックに含まれる前記関数プログラムを変更することを許可するとともに、前記ライブラリ内の前記保護ファンクションブロックに含まれる前記関数プログラムを変更することを禁止する編集手段と、
を備えたことを特徴とするプログラマブルコントローラのプログラム編集装置。
【請求項２】
前記プログラマブルコントローラは、
外部安全装置が接続される安全用Ｉ／Ｏモジュールと、
前記外部安全装置以外の外部装置が接続される常用Ｉ／Ｏモジュールと、
を備え、
前記保護ファンクションブロックに含まれる前記関数プログラムは、前記安全用Ｉ／Ｏモジュールに対する固有のものであり、
前記非保護ファンクションブロックに含まれる前記関数プログラムは、前記常用Ｉ／Ｏモジュールに関するものであることを特徴とする請求項１記載のプログラマブルコントローラのプログラム編集装置。
【請求項３】
前記保護ファンクションブロックは既製のものであり、
前記非保護ファンクションブロックはユーザーにより作成可能なものであることを特徴とする請求項１または２に記載のプログラマブルコントローラのプログラム編集装置。
【請求項４】
前記編集手段は、
入力された前記保護ファンクションブロックに含まれる前記関数プログラムの変更コマンドを拒否することを特徴とする請求項１乃至３のいずれか一項に記載のプログラマブルコントローラのプログラム編集装置。
【請求項５】
形成された前記制御プログラムを、前記保護ファンクションブロックあるいは前記非保護ファンクションブロック単位で表示するプログラム表示部を備え、
前記編集手段は、
前記プログラム表示部による前記保護ファンクションブロックに含まれる前記関数プログラムの表示を禁止することを特徴とする請求項１乃至４のいずれか一項に記載のプログラマブルコントローラのプログラム編集装置。
【請求項６】
前記編集手段は、
前記制御プログラムが形成される際に、前記ライブラリ外において変更された前記関数プログラムを、前記ライブラリ内の対応する前記関数プログラムと置き換えるファンクションブロックセーブ部を有するとともに、
前記ライブラリ外において変更された前記保護ファンクションブロックに含まれる前記関数プログラムを、前記ファンクションブロックセーブ部により前記ライブラリ内において対応する前記関数プログラムと置き換えることを禁止することを特徴とする請求項１乃至３または５のいずれか一項に記載のプログラマブルコントローラのプログラム編集装置。
【請求項７】
前記保護ファンクションブロックには、含まれている前記関数プログラムに基づく変更不能な演算結果が付され、
前記編集手段は、
付されている前記演算結果に基づき、前記保護ファンクションブロックを前記非保護ファンクションブロックに対して区別することを特徴とする請求項１乃至６のいずれか一項に記載のプログラマブルコントローラのプログラム編集装置。
【請求項８】
前記保護ファンクションブロックには、含まれている前記関数プログラムに基づく変更不能な演算結果が付され、
前記編集手段は、
付されている前記演算結果に基づき、前記保護ファンクションブロックに含まれている前記関数プログラムの変更の有無を判定することを特徴とする請求項６記載のプログラマブルコントローラのプログラム編集装置。
【請求項９】
前記保護ファンクションブロックには、含まれている前記関数プログラムのステップ数が付されていることを特徴とする請求項７または８に記載のプログラマブルコントローラのプログラム編集装置。
【請求項１０】
前記保護ファンクションブロックには、含まれている前記関数プログラムに基づく誤り検出により算出された値が付されていることを特徴とする請求項７または８に記載のプログラマブルコントローラのプログラム編集装置。
【請求項１１】
形成された前記制御プログラムを、前記保護ファンクションブロックあるいは前記非保護ファンクションブロック単位で表示するプログラム表示部を備え、
前記保護ファンクションブロックには重み付け数値が付され、
前記編集手段は、
前記制御プログラムが形成される際に、前記ライブラリ外において変更された前記関数プログラムを、前記ライブラリ内の対応する前記関数プログラムと置き換えるファンクションブロックセーブ部を有するとともに、
前記重み付け数値に基づいて、前記保護ファンクションブロックに含まれている前記関数プログラムの保護の重要性が高いと判定された場合、前記プログラム表示部による前記保護ファンクションブロックに含まれる前記関数プログラムの表示を禁止し、かつ変更された前記保護ファンクションブロックに含まれる前記関数プログラムを、前記ファンクションブロックセーブ部により前記ライブラリ内において対応する前記関数プログラムと置き換えることを禁止し、
前記重み付け数値に基づいて、前記保護ファンクションブロックに含まれている前記関数プログラムの保護の重要性が低いと判定された場合、前記プログラム表示部による前記保護ファンクションブロックに含まれる前記関数プログラムの表示を許可するが、変更された前記保護ファンクションブロックに含まれる前記関数プログラムを、前記ファンクションブロックセーブ部により前記ライブラリ内において対応する前記関数プログラムと置き換えることを禁止することを特徴とする請求項１記載のプログラマブルコントローラのプログラム編集装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラで実行可能な制御プログラムを編集するプログラマブルコントローラのプログラム編集装置に関する。
【背景技術】
【０００２】
Ｉ／Ｏモジュールと外部安全装置との間の信号のやりとりをＣＰＵモジュールにより制御するプログラマブルコントローラ（ＰＬＣ：プログラマブルロジックコントローラともいう）に関する従来技術があった（例えば、特許文献１参照）。これは、ディスプレイ上に各Ｉ／Ｏモジュールに対応する複数のファンクションブロックが配置されており、ユーザーがコンピュータシステムを用いて、これらのファンクションブロックを結合子や連結子等により結合して、Ｉ／Ｏモジュールと外部装置との間の信号のやりとりを制御する制御プログラムを作成編集するものである。
【０００３】
この従来技術によるプログラマブルコントローラは、ディスプレイ上に配置された複数のファンクションブロックを結合するのみで制御プログラムを作成することができ、プログラム作成スキルのないユーザーでも制御プログラムを作成可能にする、いわゆるイージープログラミングと呼ばれる方式を採用するものである。
【０００４】
一方、制御プログラムの作成スキルを有したユーザーにとっては、自らの能力を生かして、各Ｉ／Ｏモジュールに接続された外部安全装置または外部安全装置以外の外部装置に適応した高度な制御プログラムを作成したいという要求があった。そのため、作成者に対し制御プログラムの作成の自由度を広範囲に許したプログラム作成方法（フリープログラミング）を採用したプログラマブルコントローラも存在する。
【０００５】
これは、ラダー回路、ファンクションブロックで回路用アプリケーションを作成するもので、ユーザーのプログラミングに関するエンジニアリングスキルは必要であるが、最も自由度の高いプログラミングができる。
【０００６】
この種のプログラマブルコントローラにおいては、プログラム作成者が自ら作成した関数プログラムを含んだファンクションブロック（ユーザーファンクションブロックまたは非保護ファンクションブロック）を使用する場合があり、これにより形成された制御プログラムはプログラマブルコントローラの製造メーカが供給するメーカファンクションブロック（保護ファンクションブロック）と、上述したユーザーファンクションブロックが混在したプログラムとなることがあった。
【特許文献１】特開２００７−１１７１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで一般的にプログラマブルコントローラにおいて、複数のファンクションブロックはＣＰＵモジュールあるいはＣＰＵモジュールに接続されたコンピュータシステムに設けられたライブラリ内に保存されている。このため、メーカファンクションブロック内の関数プログラムの変更を不可能にするため、ライブラリにはロックが施されている場合が多い。したがって、上述したフリープログラミングによるプログラムの作成を可能にするプログラマブルコントローラにおいては、ライブラリのロックにより、保存されているユーザーファンクションブロックの変更をもできない状態となる。
【０００８】
これを回避するために、ライブラリを複数個用意して、メーカファンクションブロックのみを保存するライブラリと、ユーザーファンクションブロックのみを保存するライブラリとを分けて設ける方法があるが、複数個のライブラリを使用することによるメモリ容量の増大等、プログラマブルコントローラのコスト高の要因となる場合が多かった。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的は、変更を禁止する保護ファンクションブロックと、変更を可能とする非保護ファンクションブロックとを同一のライブラリに保存可能なプログラマブルコントローラのプログラム編集装置を提供することにある。
【課題を解決するための手段】
【００１０】
以下、上記課題を解決するのに適した各手段につき、必要に応じて作用効果等を付記しつつ説明する。
（手段１）手段１に係るプログラマブルコントローラのプログラム編集装置は、
プログラマブルコントローラで実行可能な制御プログラムを編集するプログラマブルコントローラのプログラム編集装置において、
保護ファンクションブロックおよび非保護ファンクションブロックを保存するライブラリと、
前記ライブラリ内の前記保護ファンクションブロックあるいは前記非保護ファンクションブロックにそれぞれ含まれる関数プログラムのいくつかをリンクさせて前記制御プログラムを形成し、前記ライブラリ内の前記非保護ファンクションブロックに含まれる前記関数プログラムを変更することを許可するとともに、前記ライブラリ内の前記保護ファンクションブロックに含まれる前記関数プログラムを変更することを禁止する。
【００１１】
したがって、手段１に係るプログラマブルコントローラのプログラム編集装置によれば、編集手段がライブラリ内の非保護ファンクションブロックに含まれる関数プログラムの変更を許可するが、保護ファンクションブロックに含まれる関数プログラムの変更を禁止するため、ユーザーによる変更を禁止する保護ファンクションブロックと、変更を可能とする非保護ファンクションブロックとを同一のライブラリに保存することが可能となる。これにより、制御プログラムの作成において両種のファンクションブロックの使用ができるため、制御プログラムの作成の自由度を増大させることができる。また、ライブラリが１個ですむことによりメモリ容量の増大を防ぎ、低コストのプログラマブルコントローラのプログラム編集装置にすることができる。
【００１２】
（手段２）手段１に記載のプログラマブルコントローラのプログラム編集装置において、
前記プログラマブルコントローラは、
外部安全装置が接続される安全用Ｉ／Ｏモジュールと、
前記外部安全装置以外の外部装置が接続される常用Ｉ／Ｏモジュールと、
を備え、
前記保護ファンクションブロックに含まれる前記関数プログラムは、前記安全用Ｉ／Ｏモジュールに対する固有のものであり、
前記非保護ファンクションブロックに含まれる前記関数プログラムは、前記常用Ｉ／Ｏモジュールに関するものである。
【００１３】
したがって、手段２に係るプログラマブルコントローラのプログラム編集装置によれば、安全用Ｉ／Ｏモジュールに対する固有の関数プログラムの変更が禁止されるため、外部安全装置が接続された安全用Ｉ／Ｏモジュールを、常に正常に機能させることができ、安全性の高いプログラマブルコントローラにすることができる。
【００１４】
（手段３）手段１または２に記載のプログラマブルコントローラのプログラム編集装置において、
前記保護ファンクションブロックは既製のものであり、
前記非保護ファンクションブロックはユーザーにより作成可能なものである。
【００１５】
したがって、手段３に係るプログラマブルコントローラのプログラム編集装置によれば、既製の保護ファンクションブロックに含まれる関数プログラムを保護できるとともに、非保護ファンクションブロックに含まれる関数プログラムを、制御プログラム作成時にユーザーが変更することができる。
【００１６】
（手段４）手段１乃至３に記載のプログラマブルコントローラのプログラム編集装置において、
前記編集手段は、
入力された前記保護ファンクションブロックに含まれる前記関数プログラムの変更コマンドを拒否する。
したがって、手段４に係るプログラマブルコントローラのプログラム編集装置によれば、極めて容易に保護ファンクションブロックに含まれる関数プログラムの変更を禁止することができる。
【００１７】
（手段５）手段１乃至４に記載のプログラマブルコントローラのプログラム編集装置において、
形成された前記制御プログラムを、前記保護ファンクションブロックあるいは前記非保護ファンクションブロック単位で表示するプログラム表示部を備え、
前記編集手段は、
前記プログラム表示部による前記保護ファンクションブロックに含まれる前記関数プログラムの表示を禁止する。
【００１８】
したがって、手段５に係るプログラマブルコントローラのプログラム編集装置によれば、編集手段が保護ファンクションブロックに含まれる関数プログラムの表示を禁止するため、ユーザーが関数プログラムを見ることができないようにして、保護ファンクションブロックに含まれる関数プログラムが変更されることを防止することができる。
【００１９】
（手段６）手段１乃至３または５のプログラマブルコントローラのプログラム編集装置において、
前記編集手段は、
前記制御プログラムが形成される際に、前記ライブラリ外において変更された前記関数プログラムを、前記ライブラリ内の対応する前記関数プログラムと置き換えるファンクションブロックセーブ部を有するとともに、
前記ライブラリ外において変更された前記保護ファンクションブロックに含まれる前記関数プログラムを、前記ファンクションブロックセーブ部により前記ライブラリ内において対応する前記関数プログラムと置き換えることを禁止する。
【００２０】
したがって、手段６に係るプログラマブルコントローラのプログラム編集装置によれば、編集手段がライブラリ外において変更された保護ファンクションブロックに含まれる関数プログラムを、ライブラリ内において対応する関数プログラムと置き換えることを禁止するため、たとえ保護ファンクションブロックに含まれる関数プログラムがライブラリ外において変更されたとしても、ライブラリ内において対応する関数プログラムが変更されることがない。
【００２１】
また、編集手段が保護ファンクションブロックに含まれる関数プログラムの表示を禁止するとともに、ライブラリ外において変更された保護ファンクションブロックに含まれる関数プログラムを、ライブラリ内において対応する関数プログラムと置き換えることを禁止するようにすれば、２つの方法により保護ファンクションブロックに含まれる関数プログラムの変更が禁止され、保護ファンクションブロックに含まれる関数プログラムの保護精度がより向上する。
【００２２】
（手段７）手段１乃至６のいずれかに記載のプログラマブルコントローラのプログラム編集装置において、
前記保護ファンクションブロックには、含まれている前記関数プログラムに基づく変更不能な演算結果が付され、
前記編集手段は、
付されている前記演算結果に基づき、前記保護ファンクションブロックを前記非保護ファンクションブロックに対して区別する。
したがって、手段７に係るプログラマブルコントローラのプログラム編集装置によれば、特別な方法を実行しなくても、保護ファンクションブロックを非保護ファンクションブロックに対して容易に区別して、関数プログラムの変更を禁止することができる。
【００２３】
（手段８）手段６に記載のプログラマブルコントローラのプログラム編集装置において、
前記保護ファンクションブロックには、含まれている前記関数プログラムに基づく変更不能な演算結果が付され、
前記編集手段は、
付されている前記演算結果に基づき、前記保護ファンクションブロックに含まれている前記関数プログラムの変更の有無を判定する。
したがって、手段８に係るプログラマブルコントローラのプログラム編集装置によれば、特別な方法を実行しなくても、含まれる関数プログラムの変更の有無を容易に判定し、ライブラリ内において対応する関数プログラムと置き換えることを禁止することができる。
【００２４】
（手段９）手段７または８のプログラマブルコントローラのプログラム編集装置において、
前記保護ファンクションブロックには、含まれている前記関数プログラムのステップ数が付されている。
したがって、手段９に係るプログラマブルコントローラのプログラム編集装置によれば、付されたステップ数に基づき保護ファンクションブロックを非保護ファンクションブロックに対して容易に区別することができ、また、実際に含まれる関数プログラムのステップ数を付されたステップ数と比較して、関数プログラムの変更の有無を容易に判定することができる。
【００２５】
（手段１０）手段７または８のプログラマブルコントローラのプログラム編集装置において、
前記保護ファンクションブロックには、含まれている前記関数プログラムに基づく誤り検出により算出された値が付されている。
したがって、手段１０に係るプログラマブルコントローラのプログラム編集装置によれば、付された誤り検出により算出された値に基づき保護ファンクションブロックを非保護ファンクションブロックに対して容易に区別することができ、また、実際に含まれる関数プログラムの誤り検出により算出された値を付された値と比較して、関数プログラムの変更の有無を容易に判定することができる。
【００２６】
（手段１１）手段１のプログラマブルコントローラのプログラム編集装置において、
形成された前記制御プログラムを、前記保護ファンクションブロックあるいは前記非保護ファンクションブロック単位で表示するプログラム表示部を備え、
前記保護ファンクションブロックには重み付け数値が付され、
前記編集手段は、
前記制御プログラムが形成される際に、前記ライブラリ外において変更された前記関数プログラムを、前記ライブラリ内の対応する前記関数プログラムと置き換えるファンクションブロックセーブ部を有するとともに、
前記重み付け数値に基づいて、前記保護ファンクションブロックに含まれている前記関数プログラムの保護の重要性が高いと判定された場合、前記プログラム表示部による前記保護ファンクションブロックに含まれる前記関数プログラムの表示を禁止し、かつ変更された前記保護ファンクションブロックに含まれる前記関数プログラムを、前記ファンクションブロックセーブ部により前記ライブラリ内において対応する前記関数プログラムと置き換えることを禁止し、
前記重み付け数値に基づいて、前記保護ファンクションブロックに含まれている前記関数プログラムの保護の重要性が低いと判定された場合、前記プログラム表示部による前記保護ファンクションブロックに含まれる前記関数プログラムの表示を許可するが、変更された前記保護ファンクションブロックに含まれる前記関数プログラムを、前記ファンクションブロックセーブ部により前記ライブラリ内において対応する前記関数プログラムと置き換えることを禁止する。
【００２７】
したがって、手段１１に係るプログラマブルコントローラのプログラム編集装置によれば、保護ファンクションブロックに含まれている関数プログラムの保護の重要性に応じて、関数プログラムの変更を禁止する方法を実行できるため、保護ファンクションブロックに含まれている関数プログラムの保護精度を向上できるとともに、保護ファンクションブロックに含まれている関数プログラムを保護するために要する時間および編集手段のメモリ容量等の節約が可能になる。
また、保護ファンクションブロックに含まれる関数プログラムの保護の重要性が低いと判定された場合、プログラム表示部により関数プログラムが表示されるため、ユーザーが関数プログラムを見ることができ、制御プログラムの作成作業を効率化できる。
【発明を実施するための最良の形態】
【００２８】
＜実施形態１＞
図１乃至図３に基づき、本発明の実施形態１によるプログラマブルコントローラのプログラム編集装置について説明する。尚、図３において保護ファンクションブロックを保護ＦＢと記載している。本実施形態におけるプログラマブルコントローラのプログラム編集装置は、フリープログラミングによる制御プログラムの作成方法を採用したものであるが、本発明はこれに限定されるものではない。
【００２９】
図１に示すように、本実施形態によるプログラマブルコントローラは、複数の外部安全装置（図示せず）が接続されるＩ／Ｏモジュール１（本発明の安全用Ｉ／Ｏモジュールに該当する）、あるいは外部安全装置以外の外部装置（図示せず）が接続されるＩ／Ｏモジュール２（本発明の常用Ｉ／Ｏモジュールに該当する）と、バス３によりＩ／Ｏモジュール１、２と接続されたＣＰＵモジュール１０と、ＣＰＵモジュール１０と接続され、ＣＰＵモジュール１０に電力を供給する電源モジュール２０と、ＣＰＵモジュール１０と接続されユーザーが操作可能な端末機３０（本発明のプログラム編集装置に該当する）とを備えている。
【００３０】
Ｉ／Ｏモジュール１に接続される外部安全装置としては、これに限定されるものではないが、工場内に設置される緊急停止ボタン、ライトカーテン等の非常時検出装置や、設備の緊急停止装置、緊急警告装置等の緊急回避装置が考えられる。一方、Ｉ／Ｏモジュール２に接続される外部安全装置以外の外部装置としては、同じく工場内に設置される製品検査装置や設備装置が含まれる。また、Ｉ／Ｏモジュール１、２はいずれもＣＰＵ、ＲＡＭ、ＲＯＭを備えており、それぞれ接続される外部装置が有する仕様に対応可能なように形成されている。
【００３１】
ＣＰＵモジュール１０は、インターフェイス１０１を介してＩ／Ｏモジュール１、２と接続されたコントロール部１０２と、コントロール部１０２と接続された制御プログラム記憶部１０３とを備えている。ＣＰＵモジュール１０はこの他、ハードディスク等の外部記憶装置を備えていてもよい。
【００３２】
コントロール部１０２は、ＣＰＵ、ＲＯＭおよびＲＡＭにて構成され、インターフェィス１０１を介してＩ／Ｏモジュール１、２との間で信号のやりとりが可能となっている。
制御プログラム記憶部１０３は書き込み可能なメモリにより形成されており、後述するように、端末機３０により作成されたマシン語による制御プログラムが記憶される。
【００３３】
端末機３０は一般的なコンピュータシステムが使用され、ユーザーが操作入力可能なキーボード３０１およびマウス３０２と、キーボード３０１およびマウス３０２と接続された制御部３０３（本発明の編集手段に該当する）と、制御部３０３と接続されたディスプレイ３０５（本発明のプログラム表示部に該当する）を備えている。
【００３４】
制御部３０３はマイクロプロセッサを備えており、機械語変換部３０４ａおよび比較判定部３０４ｂを含んでいる。また、制御部３０３にはＲＡＭ３０６およびＲＯＭ３０７がそれぞれ接続されており、ディスプレイ３０５および後述する引当部３１２、プログラム形成部３１３、セーブ部３１４、通信部３１５を制御している。ディスプレイ３０５は、後述するようにプログラム形成部３１３により形成された制御プログラムを、ユーザーファンクションブロックあるいは保護ファンクションブロック単位で表示する。
【００３５】
端末機３０内には記憶メモリ領域であるライブラリ３０８（本発明のライブラリに該当する）が形成されており、単一のライブラリ３０８中には、制御プログラムを形成するために必要な複数のファンクションブロック３０９〜３１１（第１ファンクションブロック３０９、第２ファンクションブロック３１０、第３ファンクションブロック３１１）等が保存されている。
【００３６】
各々のファンクションブロック３０９〜３１１は関数プログラムを含んでおり、当該関数プログラムは、外部安全装置あるいは外部安全装置以外の外部装置からの入力信号に応じて、出力されるべき出力信号を演算するラダー回路をプログラム化したもので、それぞれ接続される外部装置（外部安全装置および外部安全装置以外の外部装置を包括する）の仕様に適合した演算処理を実行する。
【００３７】
ライブラリ３０８に保存されたファンクションブロック３０９〜３１１内には、ユーザーにより作成可能なユーザーファンクションブロック（本発明の非保護ファンクションブロックに該当する）と、プログラマブルコントローラの製造者による既製の保護ファンクションブロック（本発明の保護ファンクションブロックに該当する）とが混在している。保護ファンクションブロックに含まれる関数プログラムは、外部安全装置が接続されたＩ／Ｏモジュール１に対する固有のファンクションブロックで、ユーザーファンクションブロックに含まれる関数プログラムは、外部安全装置以外の外部装置が接続されたＩ／Ｏモジュール２に関するファンクションブロックである。
【００３８】
本実施形態においては、図１における第１ファンクションブロック３０９および第２ファンクションブロック３１０がユーザーファンクションブロック、第３ファンクションブロック３１１が保護ファンクションブロックであるとする。以下、第１ファンクションブロック３０９および第２ファンクションブロック３１０をユーザーファンクションブロック３０９、３１０とよび、第３ファンクションブロック３１１を保護ファンクションブロック３１１とよぶことがあるものとする。
【００３９】
引当部３１２（本発明の編集手段に該当する）は制御部３０３およびライブラリ３０８と接続され、ユーザーによるキーボード３０１あるいはマウス３０２への操作入力に基づき、前述した制御プログラムを形成するために必要なユーザーファンクションブロック３０９、３１０あるいは保護ファンクションブロック３１１に含まれる関数プログラムをライブラリ３０８内から引き当てる。
【００４０】
プログラム形成部３１３（本発明の編集手段に該当する）は制御部３０３、ディスプレイ３０５および引当部３１２と接続され、引当部３１２により引き当てられた関数プログラムのいくつかをリンクさせて、制御プログラムを形成する。
セーブ部３１４（本発明のファンクションブロックセーブ部に該当する）は制御部３０３の比較判定部３０４ｂおよびライブラリ３０８と接続され、制御プログラムを形成する際に、ライブラリ３０８外においてユーザーにより変更されたユーザーファンクションブロック３０９、３１０に含まれる関数プログラムを、ライブラリ３０８内の対応する関数プログラムと置き換える（関数プログラムをセーブする）。
通信部３１５は制御部３０３と接続され、ＣＰＵモジュール１０との間で信号の授受を行い、形成された制御プログラムをＣＰＵモジュール１０に送信したり、Ｉ／Ｏモジュール１、２の仕様情報を入手する。
【００４１】
上述した構成を有するプログラマブルコントローラにおいて、ユーザーがＩ／Ｏモジュール１、２に接続された外部装置に応じて、双方の間の信号のやりとりをするために必要な制御プログラムを作成する場合、ユーザーのキーボード３０１あるいはマウス３０２への操作入力に基づき、制御部３０３が引当部３１２を制御する。引当部３１２は制御プログラムを形成するために必要なファンクションブロック３０９、３１０、３１１に含まれる関数プログラムを、ライブラリ３０８から引き当ててプログラム形成部３１３へと送る。
【００４２】
ユーザーによる操作に基づき、引き当てられたファンクションブロック３０９、３１０、３１１がプログラム形成部３１３において互いにリンクされ、ファンクションブロック３０９、３１０、３１１のいくつかを含んだ制御プログラムが作成される。
作成された制御プログラムは、機械語変換部３０４ａにおいてマシン語に変換された後、制御部３０３から通信部３１５を介してＣＰＵモジュール１０へと送られ、制御プログラム記憶部１０３に記憶される。ＣＰＵモジュール１０は、記憶された制御プログラムを実行し、Ｉ／Ｏモジュール１、２と接続された外部装置との間の信号のやりとりを制御する。
【００４３】
次に、図２に基づいて、本実施形態によるライブラリ３０８に保存されたユーザーファンクションブロック３０９、３１０および保護ファンクションブロック３１１のデータ構成を説明する。図２の左方において示すように、ユーザーファンクションブロック３０９、３１０（図２においては、ユーザーファンクションブロック３０９のみについて示す）は、ヘッダー３０９ａ、データ本体３０９ｂ、フッター３０９ｃにより構成されている。
【００４４】
ヘッダー３０９ａには種々の識別子が記憶されている。また、データ本体３０９ｂは、ユーザーファンクションブロック３０９に含まれる関数プログラムを形成するデータであって、Ｉ／Ｏモジュール２等の制御プログラムであるラダーロジックを形成するためのプログラムデータである。データ本体３０９ｂはライブラリ３０８から引き当てられた後、プログラム形成部３１３においてユーザーにより変更（編集）される。
【００４５】
また、フッター３０９ｃにはデータ本体３０９ｂによる関数プログラムのステップ数３０９ｄと、データ本体３０９ｂに基づく誤り検出により算出された値３０９ｅが記憶されている。ユーザーファンクションブロック３０９、３１０においては、保護ファンクションブロック３１１に対する区別を可能にするために、ステップ数３０９ｄおよび誤り検出により算出された値３０９ｅは、ともに０に設定されている。関数プログラムのステップ数３０９ｄと誤り検出により算出された値３０９ｅは、変更不能に設定されている。
【００４６】
一方、図２の右方において示すように、保護ファンクションブロック３１１も種々の識別子が記憶されたヘッダー３１１ａ、保護ファンクションブロック３１１に含まれる関数プログラムを形成するデータ本体３１１ｂおよびフッター３１１ｃにより構成されている。
データ本体３１１ｂはユーザーファンクションブロック３０９、３１０と同様に、Ｉ／Ｏモジュール１等の制御プログラムであるラダーロジックを形成するためのプログラムデータである。
【００４７】
また、フッター３１１ｃにはデータ本体３１１ｂによる関数プログラムに基づいて演算され、その結果であるステップ数３１１ｄと、データ本体３１１ｂに基づく誤り検出により算出された値３１１ｅが記憶されている。値３１１ｅは、データ本体３１１ｂに基づくチェックサムまたはＣＲＣ、もしくはその他の方法による誤り検出により算出された値である。関数プログラムのステップ数３１１ｄと誤り検出により算出された値３１１ｅは、変更不能に設定されている。
【００４８】
次に、図３に基づいて、本実施形態による端末機３０による制御プログラムの編集方法について説明する。以下、ファンクションブロック３０９、３１１に含まれる関数プログラムについて、ディスプレイ３０５への表示要求があった場合、およびライブラリ３０８におけるファンクションブロック３０９、３１１のセーブ要求があった場合の制御部３０３による制御方法について説明する。
【００４９】
最初に、ユーザーがキーボード３０１あるいはマウス３０２に対し操作入力して、指定したファンクションブロック３０９、３１１に含まれる関数プログラムを、ディスプレイ３０５へ表示することを要求すると（ステップＳ３０１）、表示要求のあった関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１であるか否かが判定される（ステップＳ３０２）。
【００５０】
比較判定部３０４ｂは、ファンクションブロック３０９、３１１のフッター３０９ｃ、３１１ｃに記憶された関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅに基づき、指定したファンクションブロック３０９、３１１がユーザーファンクションブロック３０９であるか保護ファンクションブロック３１１であるかを区別する。
【００５１】
すなわち、関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅがともに０である場合、指定したファンクションブロック３０９、３１１がユーザーファンクションブロック３０９であると判定し、関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅがともに０でない場合、指定したファンクションブロック３０９、３１１が保護ファンクションブロック３１１であると判定する。
【００５２】
制御部３０３は、表示要求のあった関数プログラムを含んだファンクションブロック３０９、３１１がユーザーファンクションブロック３０９である場合、関数プログラムのディスプレイ３０５への表示を許可する（ステップＳ３０３）。一方、制御部３０３は、表示要求のあった関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１である場合、関数プログラムのディスプレイ３０５への表示は禁止する（ステップＳ３０２）。
【００５３】
関数プログラムの表示要求がなかった場合（ステップＳ３０１）または関数プログラムのディスプレイ３０５への表示が禁止された場合（ステップＳ３０２）、もしくは関数プログラムがディスプレイ３０５に表示された場合（ステップＳ３０３）、次に、ユーザーがキーボード３０１あるいはマウス３０２に対し操作入力して、プログラム形成部３１３において変更（編集）された関数プログラムを、ライブラリ３０８内において対応する関数プログラムと置き換える（セーブする）要求があるか否かが判定される（ステップＳ３０４）。
【００５４】
関数プログラムをライブラリ３０８内にセーブする要求があると判定されると、セーブ要求のあった関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１であって、かつセーブ要求のあった関数プログラムが変更されているか否かが判定される（ステップＳ３０５）。
【００５５】
比較判定部３０４ｂは、上述した場合と同様に、ファンクションブロック３０９、３１１のフッター３０９ｃ、３１１ｃに記憶された関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅに基づき、指定した関数プログラムを含んだファンクションブロック３０９、３１１がユーザーファンクションブロック３０９であるか保護ファンクションブロック３１１であるかを区別する。また、保護ファンクションブロック３１１の関数プログラムのステップ数３１１ｄと、誤り検出により算出された値３１１ｅに基づき、指定した関数プログラムの変更の有無を判定する。
【００５６】
すなわち、関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅがともに０である場合、指定したファンクションブロック３０９、３１１がユーザーファンクションブロック３０９であると判定し、関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅがともに０でない場合、指定したファンクションブロック３０９、３１１が保護ファンクションブロック３１１であると判定する。
【００５７】
また、セーブ要求のあった保護ファンクションブロック３１１の関数プログラムのステップ数と、誤り検出による算出値を新たに演算し、フッター３１１ｃに記憶された関数プログラムのステップ数３１１ｄおよび誤り検出により算出された値３１１ｅと比較する。
新たに演算された保護ファンクションブロック３１１の関数プログラムのステップ数と、誤り検出により算出された値が、ともにフッター３１１ｃに記憶された関数プログラムのステップ数３１１ｄおよび誤り検出により算出された値３１１ｅと一致した場合、セーブ要求された保護ファンクションブロック３１１の関数プログラムは変更されていないと判定される。
【００５８】
一方、新たに演算された保護ファンクションブロック３１１の関数プログラムのステップ数と、誤り検出により算出された値の少なくともいずれかが、フッター３１１ｃに記憶された関数プログラムのステップ数３１１ｄまたは誤り検出により算出された値３１１ｅと一致しなかった場合、セーブ要求された保護ファンクションブロック３１１の関数プログラムは変更されていると判定される。
【００５９】
制御部３０３は、セーブ要求された関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１でない場合、またはセーブ要求された関数プログラムが変更されていない場合、セーブ要求された関数プログラムをライブラリ３０８内にセーブすることを許可する（ステップＳ３０６）。一方、制御部３０３は、セーブ要求された関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１であって、かつ、セーブ要求された関数プログラムが変更されている場合、セーブ要求された関数プログラムをライブラリ３０８内にセーブすることを禁止する（ステップＳ３０５）。
【００６０】
関数プログラムのセーブ要求がなかった場合（ステップＳ３０４）またはセーブ要求のあった関数プログラムをライブラリ３０８内にセーブすることが禁止された場合（ステップＳ３０５）、もしくはセーブ要求のあった関数プログラムをライブラリ３０８内にセーブした場合（ステップＳ３０６）、制御フローは終了する。
【００６１】
尚、上述したステップＳ３０５において、セーブ要求された関数プログラムの変更の有無を判定せず、セーブ要求された関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１でない場合、セーブ要求された関数プログラムをライブラリ３０８内にセーブすることを許可し、セーブ要求された関数プログラムを含んだファンクションブロック３０９、３１１が保護ファンクションブロック３１１である場合、セーブ要求された関数プログラムをライブラリ３０８内にセーブすることを禁止するようにしてもよい。
【００６２】
本実施形態によれば、端末機３０はライブラリ３０８内のユーザーファンクションブロック３０９、３１０に含まれる関数プログラムの変更を許可するとともに、保護ファンクションブロック３１１に含まれる関数プログラムの変更を禁止する。
したがって、ユーザーによる変更を禁止する保護ファンクションブロック３１１と、変更を可能とするユーザーファンクションブロック３０９、３１０とを同一のライブラリ３０８に保存することが可能となり、制御プログラムの作成において両種のファンクションブロック３０９、３１０、３１１を使用できることにより、制御プログラムの作成の自由度が増大する。また、ライブラリ３０８が１個ですむことによりメモリ容量の増大を防ぎ、低コストの端末機３０にすることができる。
【００６３】
また、ライブラリ３０８内の保護ファンクションブロック３１１に含まれる関数プログラムの変更が禁止されることにより、外部安全装置が接続されたＩ／Ｏモジュール１に対する固有の関数プログラムの変更が禁止されるため、外部安全装置が接続されたＩ／Ｏモジュール１を、常に正常に機能させることができ、安全性の高いプログラマブルコントローラにすることができる。
【００６４】
また、保護ファンクションブロック３１１は既製のものであり、ユーザーファンクションブロック３０９、３１０はユーザーにより作成可能なものである。
したがって、プログラマブルコントローラの製造者による、既製の保護ファンクションブロック３１１に含まれる関数プログラムを保護できるとともに、ユーザーファンクションブロック３０９、３１０に含まれる関数プログラムを、制御プログラム作成時にユーザーが変更することができる。
【００６５】
また、端末機３０の制御部３０３は、ディスプレイ３０５による保護ファンクションブロック３１１に含まれる関数プログラムの表示を禁止する。
したがって、ユーザーが関数プログラムを見ることのできないようにして、保護ファンクションブロック３１１に含まれる関数プログラムが、変更されることを防止することができる。
【００６６】
また、端末機３０の制御部３０３は、ライブラリ３０８外において変更された保護ファンクションブロック３１１に含まれる関数プログラムを、セーブ部３１４によりライブラリ３０８内にセーブする（ライブラリ３０８内において対応する関数プログラムと置き換える）ことを禁止する。
したがって、たとえ保護ファンクションブロック３１１に含まれる関数プログラムが、プログラム形成部３１３のようなライブラリ３０８外において変更されたとしても、ライブラリ３０８内において対応する関数プログラムが変更されることがない。
【００６７】
また、端末機３０の制御部３０３は、ディスプレイ３０５による保護ファンクションブロック３１１に含まれる関数プログラムの表示を禁止し、かつ、変更された保護ファンクションブロック３１１に含まれる関数プログラムを、セーブ部３１４によりライブラリ３０８内にセーブすることを禁止する。
したがって、２つの方法により保護ファンクションブロック３１１に含まれる関数プログラムの変更が禁止され、保護ファンクションブロック３１１に含まれる関数プログラムの保護精度がより向上する。
【００６８】
また、保護ファンクションブロック３１１には、含まれている関数プログラムのステップ数３１１ｄと、誤り検出により算出された値３１１ｅが付され、端末機３０の制御部３０３は、これらの数値に基づき保護ファンクションブロック３１１をユーザーファンクションブロック３０９、３１０に対して区別する。
したがって、特別な方法を実行しなくても、保護ファンクションブロック３１１をユーザーファンクションブロック３０９、３１０に対して容易に区別して、関数プログラムの変更を禁止することができる。
【００６９】
また、端末機３０の制御部３０３は、含まれている関数プログラムのステップ数３１１ｄと、誤り検出により算出された値３１１ｅに基づき、保護ファンクションブロック３１１に含まれる関数プログラムの変更の有無を判定する。
したがって、特別な方法を実行しなくても、含まれる関数プログラムの変更の有無を容易に判定し、ライブラリ３０８内において対応する関数プログラムと置き換えることを禁止することができる。
【００７０】
上述したように、本実施形態においては、関数プログラムのステップ数３０９ｄ、３１１ｄと、誤り検出により算出された値３０９ｅ、３１１ｅの双方に基づいて、指定したファンクションブロック３０９、３１１が保護ファンクションブロック３１１であるか否かの判定をし、また、セーブ要求された関数プログラムが変更されているか否かの判定が成されるため、より精度の高い判定を行うことができる。
【００７１】
＜実施形態２＞
図４および図５に基づき、本発明の実施形態２によるプログラマブルコントローラのプログラム編集装置について説明する。尚、図５において保護ファンクションブロックを保護ＦＢと記載している。図４において示すように、本実施形態による保護ファンクションブロック３２１も実施形態１による保護ファンクションブロック３１１と同様に、種々の識別子が記憶されたヘッダー３２１ａ、保護ファンクションブロック３２１に含まれる関数プログラムを形成するデータ本体３２１ｂおよびフッター３２１ｃにより構成されている。
【００７２】
データ本体３２１ｂは保護ファンクションブロック３１１と同様に、外部安全装置が接続されたＩ／Ｏモジュール１等の制御プログラムであるラダーロジックを形成するためのプログラムデータである。
また、フッター３２１ｃにはデータ本体３２１ｂによる関数プログラムに基づいて演算され、その結果であるステップ数３２１ｄと、データ本体３２１ｂに基づく誤り検出により算出された値３２１ｅが記憶されている。値３２１ｅは、データ本体３２１ｂに基づくチェックサムまたはＣＲＣ、もしくはその他の方法による誤り検出により算出された値である。
【００７３】
本実施形態による保護ファンクションブロック３２１のフッター３２１ｃには、さらにレベル数値３２１ｆ（本発明の重み付け数値に該当する）が記憶されている。レベル数値３２１ｆは、保護ファンクションブロック３２１に含まれる関数プログラムの変更を禁止するための、保護レベルを示している。これに限定されるものではないが、本実施形態の場合、レベル数値３２１ｆとして１または２を記憶することができ、数値２は１よりも保護レベルが高いことを意味している。尚、上述した関数プログラムのステップ数３２１ｄ、誤り検出により算出された値３２１ｅおよびレベル数値３２１ｆは、変更不能に設定されている。
その他の構成については、実施形態１の場合と同様であるため、説明は省略する。
【００７４】
次に、図５に基づいて、本実施形態によるプログラマブルコントローラの制御方法について説明する。以下、ファンクションブロック３０９、３２１に含まれる関数プログラムについて、ディスプレイ３０５への表示要求があった場合、およびライブラリ３０８におけるファンクションブロック３０９、３２１のセーブ要求があった場合の制御部３０３による制御方法について説明する。
【００７５】
最初に、ユーザーがキーボード３０１あるいはマウス３０２に対し操作入力して、指定したファンクションブロック３０９、３２１に含まれる関数プログラムを、ディスプレイ３０５へ表示することを要求すると（ステップＳ５０１）、表示要求のあった関数プログラムを含んだファンクションブロック３０９、３２１が保護ファンクションブロック３２１であるか否かが判定される（ステップＳ５０２）。
【００７６】
比較判定部３０４ｂは、実施形態１の場合と同様に、ファンクションブロック３０９、３２１のフッター３０９ｃ、３２１ｃに記憶された関数プログラムのステップ数３０９ｄ、３２１ｄと、誤り検出により算出された値３０９ｅ、３２１ｅに基づき、指定したファンクションブロック３０９、３２１がユーザーファンクションブロック３０９であるか保護ファンクションブロック３２１であるかを区別する。
【００７７】
制御部３０３は、表示要求のあった関数プログラムを含んだファンクションブロック３０９、３２１がユーザーファンクションブロック３０９である場合、関数プログラムのディスプレイ３０５への表示を許可する（ステップＳ５０４）。
一方、表示要求のあった関数プログラムを含んだファンクションブロック３０９、３２１が保護ファンクションブロック３２１である場合、フッター３２１ｃに記憶されたレベル数値３２１ｆが１であるか否かが判定される（ステップＳ５０３）。
【００７８】
制御部３０３は、レベル数値３２１ｆが１である場合、表示要求のあった関数プログラムの保護の重要性が低いと判定し、関数プログラムのディスプレイ３０５への表示を許可する（ステップＳ５０４）。一方、制御部３０３は、レベル数値３２１ｆが２である場合、表示要求のあった関数プログラムの保護の重要性が高いと判定し、関数プログラムのディスプレイ３０５への表示は禁止される（ステップＳ５０３）。
【００７９】
関数プログラムの表示要求がなかった場合（ステップＳ５０１）または関数プログラムのディスプレイ３０５への表示が禁止された場合（ステップＳ５０３）、もしくは関数プログラムがディスプレイ３０５に表示された場合（ステップＳ５０４）、次に、ユーザーがキーボード３０１あるいはマウス３０２に対し操作入力して、プログラム形成部３１３において変更（編集）された関数プログラムを、ライブラリ３０８内において対応する関数プログラムと置き換える（セーブする）要求があるか否かが判定される（ステップＳ５０５）。
【００８０】
関数プログラムをライブラリ３０８内にセーブする要求があると判定されると、セーブ要求のあった関数プログラムを含んだファンクションブロック３０９、３２１が保護ファンクションブロック３２１であるか否かが判定される（ステップＳ５０６）。比較判定部３０４ｂは、上述した場合と同様に、指定した関数プログラムを含んだファンクションブロック３０９、３２１がユーザーファンクションブロック３０９であるか保護ファンクションブロック３２１であるかを区別する。
【００８１】
制御部３０３は、セーブ要求された関数プログラムを含んだファンクションブロックが保護ファンクションブロック３２１でない場合、セーブ要求された関数プログラムをライブラリ３０８内にセーブすることを許可する（ステップＳ５０７）。一方、制御部３０３は、セーブ要求された関数プログラムを含んだファンクションブロック３０９、３２１が保護ファンクションブロック３２１である場合、セーブ要求された関数プログラムをライブラリ３０８内にセーブすることを禁止する（ステップＳ５０６）。
【００８２】
関数プログラムのセーブ要求がなかった場合（ステップＳ５０５）またはセーブ要求のあった関数プログラムをライブラリ３０８内にセーブすることが禁止された場合（ステップＳ５０６）、もしくはセーブ要求のあった関数プログラムをライブラリ３０８内にセーブした場合（ステップＳ５０７）、制御フローは終了する。
【００８３】
本実施形態によれば、保護ファンクションブロック３２１には重み付け数値であるレベル数値３２１ｆが付され、制御部３０３はレベル数値３２１ｆに基づいて、保護ファンクションブロック３２１の保護の重要性が高いと判定された場合、ディスプレイ３０５による保護ファンクションブロック３２１に含まれる関数プログラムの表示および変更された保護ファンクションブロック３２１に含まれる関数プログラムを、セーブ部３１４によりライブラリ３０８内においてセーブすることを禁止する。また、レベル数値３２１ｆに基づいて、保護ファンクションブロック３２１の保護の重要性が低いと判定された場合、ディスプレイ３０５による保護ファンクションブロック３２１に含まれる関数プログラムの表示を許可するが、変更された保護ファンクションブロック３２１に含まれる関数プログラムを、セーブ部３１４によりライブラリ３０８内においてセーブすることを禁止する。
【００８４】
したがって、保護ファンクションブロック３２１の保護の重要性に応じて、含まれる関数プログラムの変更を禁止する方法を実行できるため、保護ファンクションブロック３２１の保護精度を向上できるとともに、保護ファンクションブロック３２１を保護するために要する時間および端末機３０のメモリ容量等の節約が可能になる。
【００８５】
また、保護ファンクションブロック３２１に含まれる関数プログラムの保護の重要性が低いと判定された場合、ディスプレイ３０５により保護ファンクションブロック３２１に含まれる関数プログラムが表示されるため、ユーザーが関数プログラムを見ることができ、制御プログラムの作成作業を効率化できる。
【００８６】
＜他の実施形態＞
本発明は、上述した実施形態に限定されるものではなく、次のように変形または拡張することができる。
ユーザーファンクションブロック３０９、３１０と保護ファンクションブロック３１１とが混在して保存されたライブラリ３０８を複数個設けてもよい。
【００８７】
ライブラリ３０８は端末機３０内に設けずに、ＣＰＵモジュール１０内に設けてもよいし、端末機３０内とＣＰＵモジュール１０内の双方に設けてもよい。
ファンクションブロック３０９、３１１のフッター３０９ｃ、３１１ｃには、必ずしもステップ数３０９ｄ、３１１ｄと誤り検出により算出された値３０９ｅ、３１１ｅの双方を記憶させる必要はなく、いずれか一方のみでもよい。
【００８８】
また、ファンクションブロック３０９、３１１のフッター３０９ｃ、３１１ｃには、ステップ数３０９ｄ、３１１ｄと誤り検出により算出された値３０９ｅ、３１１ｅ以外の演算結果を記憶させてもよい。
上述した保護ファンクションブロック３１１に含まれる関数プログラムの変更を防止する方法に代えて、または、上述した方法とともに、制御部３０３が、ユーザーの操作によって入力された保護ファンクションブロック３１１に含まれる関数プログラムの変更コマンド自体を拒否するようにしてもよい。
比較判定部３０４ｂを含んだ制御部３０３、引当部３１２、プログラム形成部３１３およびセーブ部３１４は、ＣＰＵモジュール１０内に設けられていてもよい。この場合、端末機３０およびＣＰＵモジュール１０を包括して、本発明のプログラム編集装置に該当する。
【００８９】
上述した実施形態においては、保護ファンクションブロックを安全用Ｉ／Ｏモジュールに対する固有のものとし、非保護ファンクションブロックを常用Ｉ／Ｏモジュールに対するものとしたが、保護ファンクションブロックを複数の安全用Ｉ／Ｏモジュールのうちのいくつかに対するものとし、非保護ファンクションブロックを残りの安全用Ｉ／Ｏモジュールに対するものとしてもよい。また、保護ファンクションブロックを複数の常用Ｉ／Ｏモジュールのうちのいくつかに対するものとし、非保護ファンクションブロックを残りの常用Ｉ／Ｏモジュールに対するものとしてもよい。
【００９０】
また、上述した実施形態においては、製造者による既製のものを保護ファンクションブロックとし、ユーザーが作成したものを非保護ファンクションブロックとしたが、既製のものを非保護ファンクションブロックとしてもよいし、ユーザーが作成したものについて、他者による改変を防止するために保護ファンクションブロックとしてもよい。
【００９１】
上述した実施形態１においては、すべての保護ファンクションブロックに含まれる関数プログラムの表示を禁止し、実施形態２においては、保護の重要性に基づいて保護ファンクションブロックに含まれる関数プログラムの表示を禁止しているが、すべての保護ファンクションブロックについて、含まれる関数プログラムの表示を許可するが、その変更は禁止するようにしてもよい。
【図面の簡単な説明】
【００９２】
【図１】実施形態１によるプログラマブルコントローラの全体ブロック図
【図２】図１に示したファンクションブロックのプログラム構成を示した図
【図３】図１に示した端末機によるプログラムの編集方法を表すフローチャート
【図４】実施形態２による保護ファンクションブロックのプログラム構成を示した図
【図５】実施形態２による端末機によるプログラムの編集方法を表すフローチャート
【符号の説明】
【００９３】
図面中、１はＩ／Ｏモジュール（安全用Ｉ／Ｏモジュール）、２はＩ／Ｏモジュール（常用Ｉ／Ｏモジュール）、３０は端末機（プログラム編集装置）、３０３は制御部（編集手段）、３０４ｂは比較判定部、３０５はディスプレイ（プログラム表示部）、３０８はライブラリ、３０９は第１ファンクションブロック（非保護ファンクションブロック）、３０９ｄ、３１１ｄ、３２１ｄは関数プログラムのステップ数、３０９ｅ、３１１ｅ、３２１ｅは関数プログラムに基づき誤り検出により算出された値、３１０は第２ファンクションブロック（非保護ファンクションブロック）、３１１は第３ファンクションブロック（保護ファンクションブロック）、３１２は引当部（編集手段）、３１３はプログラム形成部（編集手段）、３１４はセーブ部（ファンクションブロックセーブ部）、３２１は保護ファンクションブロック、３２１ｆは保護ファンクションブロックのレベル数値（重み付け数値）を示している。
【図１】
2010033290.tif 000003
【図２】
2010033290.tif 000004
【図３】
2010033290.tif 000005
【図４】
2010033290.tif 000006
【図５】
2010033290.tif 000007