(57)【要約】【課題】  ファンクションブロックを不適切な位置に配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置を提供すること。【解決手段】  複数種のファンクションブロックのそれぞれをプログラミングフィールド上に配置するに際して、各ファンクションブロックが、その種別に応じて決められた特定の列に配置されるように、各ファンクションブロックの該当する列への配置を誘導するための仕組みが組み込まれている。【選択図】  図１３
2008310390.tif 000002
【特許請求の範囲】
【請求項１】
画像表示器のスクリーン上のプログラミングフィールドに、予め用意された複数種のファンクションブロックの中から選択された１の種類のファンクションブロックを順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータを設定することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるようにした安全コントローラのプログラム開発支援装置であって、
前記プログラミングフィールドへのファンクションブロックの配置は、前記プログラミングフィールド上に表示されるファンクションブロック配置用のテンプレートによる案内にしたがって行われ、
前記ファンクションブロック配置用のテンプレートには、
スクリーン上の垂直方向又は水平方向のいずれかを基準方向として、複数の行と複数の列とが定義される共に、行方向の一端は入力側として他端は出力側として定義され、かつそれらの行と列との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置が定義されており、さらに
前記複数種のファンクションブロックのそれぞれをプログラミングフィールド上に配置するに際して、各ファンクションブロックが、その種別に応じて決められた特定の列に配置されるように、各ファンクションブロックの該当する列への配置を誘導するための仕組みが組み込まれている、ことを特徴とする安全コントローラのプログラム開発支援装置。
【請求項２】
前記各ファンクションブロックの該当する列への配置を誘導するための仕組みが、
ユーザをして、各ファンクションブロックを該当する列へと配置するように促すための案内表示である、ことを特徴とする請求項１に記載の安全コントローラのプログラム開発支援装置。
【請求項３】
前記各ファンクションブロックの該当する列への配置を誘導するための仕組みが、
配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための強制排除機能である、ことを特徴とする請求項１に記載の安全コントローラのプログラム開発支援装置。
【請求項４】
前記各ファンクションブロックの該当する列への配置を誘導するための仕組みが、
ユーザをして、各ファンクションブロックを該当する列へと配置するように促すための案内表示、及び
配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための強制排除機能である、ことを特徴とする請求項１に記載の安全コントローラのプログラム開発支援装置。
【請求項５】
前記案内表示が、各列のそれぞれに対応する位置に設けられ、かつその列に配置されるべきファンクションブロックの種別を表示するインデックスである、ことを特徴とする請求項２又は４に記載の安全コントローラのプログラム開発支援装置。
【請求項６】
前記強制排除機能が、
各列毎に、その列に配置可能な種別のファンクションブロックのみをメニューとしてユーザに提示すると共に、そのメニュー上においてユーザによる選択操作が行われた場合に限り、その列へのファンクションブロックの配置を可能とするものである、ことを特徴とする請求項３又は４に記載の安全コントローラのプログラム開発支援装置。
【請求項７】
コンピュータを、請求項１〜６のいずれかに記載の安全コントローラのプログラム開発支援装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像表示器のスクリーン上のプログラミングフィールドに、所望の制御仕様に対応するロジック回路図を記述するための一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるようにした安全（セーフティ）コントローラのプログラム開発支援装置に関する。
【背景技術】
【０００２】
安全コントローラは、一般的なプログラマブルコントローラ（ＰＬＣ）に類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵することにより、その制御において高度な安全性および信頼性を確保したものであり、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全な制御を行なうような機能（フェールセーフ機能）を備えている。
【０００３】
ここに言う安全は、より具体的には、規格化されている安全基準を含む意味である。安全規格には、例えばＩＥＣ６１５０８やＥＮ規格などがある。ＩＥＣ６１５０８（プログラム可能な電子システムの機能安全に関する国際電気標準委員会）では、時間あたりの危険故障確立を（失敗確立：Ｐｒｏｂａｂｉｌｉｔｙ  ｏｆ  Ｆａｉｌｕｒｅ  ｐｅｒ  Ｈｏｕｒ）を定義し、この確立によってＳＩＬのレベル（Ｓａｆｅｔｙ  Ｉｎｔｅｇｒｉｔｙ  Ｌｅｖｅｌ）を４段階に分類している。また、ＥＮ規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけされていて、ＥＮ９５４−１では５つの安全カテゴリにて規定されている。この明細書でいう安全コントローラ、安全Ｉ／Ｏターミナル等は、このような安全基準のいずれかに対応したものである。
【０００４】
安全コントローラ用の制御プログラムを作成するための従来のプログラム開発支援装置（日本国、オムロン株式会社製セーフティネットワークコントローラ）におけるロジック回路図表示例が図１６に示されている。
【０００５】
このプロラム開発支援装置（第１従来例）は、画像表示器のスクリーン上のプログラミングフィールド８０１に、予め用意された複数種のファンクションブロックの中から選択された１の種類のファンクションブロック（ＦＢ８１〜ＦＢ８５）を順次に配置し、かつ各ファンクションブロック毎に必要な固有パラメータ（図示せず）を設定（この例では、配線描画のためのマウスによるドラッグ操作で、パラメータが自動設定される）することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるように構成されている。
【０００６】
なお、図において、ＦＢ８１はセーフティ非常停止スイッチ・アプリケーション用のファンクションブロック、ＦＢ８２はセーフティライトカーテン・アプリケーション用のファンクションブロック、ＦＢ８３はセット／リセット・アプリケーション用のファンクションブロック、ＦＢ８４は論理積演算・アプリケーション用のファンクションブロック、ＦＢ８５は外部出力機器モニタリング・アプリケーション用のファンクションブロックである。また、図において、Ｔ８１１，Ｔ８１２はセーフティ非常停止スイッチの２系統の出力信号が入力される一対の入力端子表示、Ｔ８２１，Ｔ８２２はセーフティライトカーテンの２系統の出力信号が入力される一対の入力端子表示、Ｔ８３はリセットスイッチの出力信号が入力される入力端子表示、Ｔ８４は外部出力機器モニタリング信号が入力される入力端子表示である。
【０００７】
そして、ユーザによりプログラミングフィールド８０１上に描かれたロジック回路に対応して作成される回路図データ（図示せず）は、所定のコンパイル処理が施されて、安全コントローラが直接に解読実行可能な設定ファイル（安全コントローラの制御プログラム）に変換される。こうして得られた実行用の設定ファイルは、対象となる安全コントローラへと、通信を介して又は可搬型記録媒体を介して、インストールされる。
【０００８】
上述の第１従来例によれば、プログラミングフィールド８０１上には、ファンクションブロックや端子表示（以下、回路素子と言う）の置き場所が固定されていないから、所望の回路素子をプログラミングフィールド８０１上の任意の位置に配置することができ、回路素子の配置自由度が高いと言う利点がある。その反面、限られた大きさのプログラミングフィールド８０１内に、所望の回路素子の全てを収容しかつそれらの回路素子を全体の回路動作が理解しやすく配置（レイアウト）するためには、ある種のデザイン上のセンス乃至適性が必要とされ、それらのセンスや適性に劣る者にとっては却って使い勝手が悪いと言う欠点がある（非特許文献１参照）。
【０００９】
安全コントローラ用の制御プログラムを作成するための従来の他のプログラム開発支援装置（独国、ＰＩＬＺ社製）におけるロジック回路図表示例が図１７に示されている。
【００１０】
このプロラム開発支援装置（第２従来例）も、画像表示器のスクリーン上のプログラミングフィールド９０１に、予め用意された複数種のファンクションブロックの中から選択された１の種類のファンクションブロック（ＦＢ９１〜ＦＢ９５）を順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータ（図示せず）を設定（この例でも、配線描画のためのマウスによるドラッグ操作で、パラメータが自動設定される）することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるように構成されている。
【００１１】
加えて、この第２従来例にあっては、プログラミングフィールド９０１へのファンクションブロックの配置は、プログラミングフィールド９０１上に表示されるファンクションブロック配置用のテンプレート９００による案内にしたがって行われ、このテンプレート９００には、スクリーン上の垂直方向を基準方向として、複数の行（Ｒ１，Ｒ２，Ｒ３・・・）と複数の列（Ｃ１，Ｃ２，Ｃ３・・・）とが定義される共に、行（Ｒ）方向の一端（左端）は入力側として他端（右端）は出力側として定義され、かつそれらの行（Ｒ１，Ｒ２，Ｒ３・・・）と列（Ｃ１，Ｃ２，Ｃ３・・・）との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置（Ａ１１〜Ａ３３）が定義されている。
【００１２】
なお、図において、ＦＢ９１はセーフティ非常停止スイッチ・アプリケーション用のファンクションブロック、ＦＢ９２はセーフティライトカーテン・アプリケーション用のファンクションブロック、ＦＢ９３は論理積演算・アプリケーション用のファンクションブロック、ＦＢ９４はセット／リセット・アプリケーション用のファンクションブロック、ＦＢ９５は外部出力機器モニタリング・アプリケーション用のファンクションブロックである。また、図において、Ｔ９１１，Ｔ９１２は非常停止スイッチの２系統の出力信号が入力される一対の入力端子表示、Ｔ９２１，Ｔ９２２はセーフティライトカーテンの２系統の出力信号が入力される一対の入力端子表示、Ｔ９３はリセットスイッチの出力信号が入力される入力端子表示、Ｔ９４は外部出力機器モニタリング信号が入力される入力端子表示である。
【００１３】
そして、ユーザによりプログラミングフィールド９０１上に描かれたロジック回路に対応して作成される回路図データは、第１従来例と同様に所定のコンパイル処理が施されて、安全コントローラが直接に解読実行可能な設定ファイルに変換される。こうして得られた実行用の設定ファイルは、対象となる安全コントローラへと、通信を介して又は可搬型記録媒体を介して、インストールされる。
【００１４】
上述の第２従来例によれば、プログラミングフィールド９０１上には、回路素子の置き場所が予め定義されているから、所望の回路素子を選択したのち、その回路素子を例えばマウスのドラッグ操作で、予め決められた置き場所の近辺に近づけさえすれば、ドラッグされた回路素子は予め定義された置き場所へと自動的に誘導されて配置されるから、レイアウト上のデザイン上のセンスや適性を有しない者であっても、選択された複数の回路素子をプログラミングフィールド９０１内に要領よく配置することができ、第１従来例の場合のように、選択された回路素子のレイアウトに頭を悩ますことがないと言う利点がある（非特許文献２）。
【非特許文献１】オムロン株式会社のカタログ（ＵＲＬ  http://www.fa.omron.co.jp/product/32.htmlに掲載）
【非特許文献２】ＰＩＬＺ社カタログ（ＵＲＬ  http://www.pilz.jp/p_saferelay7.htmに掲載）
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ところで、この種のプログラム開発支援装置において、所望の安全制御仕様に対応するロジック回路図を生成するに際しては、単に入出力間の信号論理のみならず、安全コントローラに特有とされる様々な事情に配慮しつつ、必要なファンクションブロックをロジック回路図上の必要な位置に適切に配置せねばならない。
【００１６】
例えば、１もしくは２以上の入力端子から得られる入力信号が所定の論理値（危険）を示すときに、１もしくは２以上の出力端子から所定論理値（危険源の停止）を有する出力信号を送出するような論理回路図を作成しようとする場合、これが安全仕様でない通常のコントローラ（ＰＬＣ等）であれば、それらの入出力間論理に相当する論理演算用のファンクションブロックを入出力端子列間に配置するだけで充分あろう。
【００１７】
しかし、これが安全仕様のコントローラとなると、些か、事情は異なる。すなわち、安全仕様のコントローラの場合には、入力端子から何らかの危険を示す入力信号が得られたとしても、その入力信号は、危険を検知する入力機器（セーフティ非常停止スイッチ、セーフティライトカーテン、セーフティリミットスイッチ、セーフティドアスイッチ等々）それ自体の故障等に起因するものである可能性もあるため、そのような入力信号を直ちに取り込んで必要な論理演算に供することはできない。そのため、論理演算用のファンクションブロック（例えばＡＮＤファンクションブロック）の少なくとも前段には、各入力機器毎に適切な故障診断機能等が組み込まれた入力系ファンクションブロックを配置せねばならない。
【００１８】
また、そのような入力系ファンクションブロック経由で何らかの危険を示す入力信号が得られたとしても、その入力信号は、調整やメンテナンス等のために、危険を承知で作業員が危険領域に侵入したことに起因するものである可能性もあるため、そのような入力信号を直ちに取り込んで必要な論理演算に供することができない場合もある。そのため、論理演算用のファンクションブロックの少なくとも前段には、調整時やメンテナンス時等に相当する所定の条件が成立するときには、入力信号を無効化する機能を有する無効化・ファンクションブロックを配置せねばならない場合もある。
【００１９】
また、そのような入力系ファンクションブロック、及び／又は、無効化・ファンクションブロック経由で何らかの危険を示す入力信号が得られた場合、危険を示す状態から安全を示す状態への復帰と同時に出力信号の状態を復帰させてはいけないとする安全法規上の理由から、そのような入力信号を直ちに取り込んで必要な論理演算に供することができない場合（特に、瞬時動作／瞬時復帰・接点からの入力信号の場合）もある。そのため、論理演算用のファンクションブロックの少なくとも前段には、入力信号の危険状態を保持するセット機能と、危険状態の保持を解除するリセット機能と、リセット条件を規定する機能とを有するセット／リセット・ファンクションブロックを配置せねばならない場合もある。
【００２０】
また、出力機器それ自体にも故障の可能性があることを考慮すると、論理演算用のファンクションブロックの出力信号を無条件で出力機器へと送出することは必ずしも適当ではない。そのため、論理演算用のファンクションブロックの少なくとも後段には、各出力機器毎に適切な故障診断機能等が組み込まれた外部出力機器モニタリング・ファンクションブロック（例えば、ＥＤＭ・ファンクションブロック）を配置せねばならない。
【００２１】
さらに、出力機器のそれぞれには固有の動作遅れ時間があることを考慮すると、複数の出力端子のそれぞれから同一のタイミングで出力信号を送出することが必ずしも適当でない場合もある。そのため、論理演算用のファンクションブロックの少なくとも後段には、出力信号のオンタイミング、及び／又は、オフタイミングを遅らせる機能を有する端子モード・ファンクションブロックを配置せねばならない場合もある。
【００２２】
このように、ロジック回路図を介在する安全コントローラのプログラミングにおいては、入力端子から出力端子へ至る信号経路上の必要な位置に、必要なファンクションブロックを適切に配置する作業がユーザに対して要求される。この作業は、上述の安全コントローラ特有の事情を十分に考慮してはじめて適切に成し得るものであるから、安全コントローラのプログラミングに不慣れな初心者にとってはなかなか容易なことではなく、しばしば必要なファンクションブロックの欠落を生じたり、必要なファンクションブロックは存在するものの、配置される位置が誤っている等のプログラミングミスが生ずる。
【００２３】
殊に、上述の第１、第２従来例にあっては、プログラミングフィールド上の各ファンクションブロックが配置される位置とその位置に配置されるファンクションブックの種別との間には厳密な相関は何ら存在しないから、本来配置されるべき複数のファンクションブロックのうちのいずれかが、誤って欠落していたり、配置される位置が誤っていたとしても、そのことを各ファンクションブロックの配置された位置から直ちに発見することは困難である。
【００２４】
そのため、それらの従来例において、そのようなプログラミングミスを発見するためには、具体的な制御の事情を頭に浮かべながら、入力端子から出力端子へと信号経路を順に辿ると言う地道な検証作業が必要となり、このような検証作業の煩雑さがこの種の安全コントローラの普及を阻害する一因ともなっている。
【００２５】
しかも、安全コントローラのプログラミングに使用されるファンクションブロックの種類は、安全コントローラの普及に連れて益々増加することが予想されるため、より多数の種別のファンクションブロックが存在するであろう将来の状況下においても、プログラミングミスが生じ難く、かつプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置が要望されている。
【００２６】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ファンクションブロックを誤った位置に配置したり、誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置を提供することにある。
【００２７】
この発明のさらに他の目的並びに作用効果については、明細書の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００２８】
上述の技術的な課題は、以下の構成を有する安全コントローラのプログラム開発支援装置により解決することができる。
【００２９】
すなわち、この安全コントローラのプログラム開発支援装置は、画像表示器のスクリーン上のプログラミングフィールドに、予め用意された複数種のファンクションブロックの中から選択された１の種類のファンクションブロックを順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータを設定することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるようにした基本構成を有する。
【００３０】
本発明のプログラム開発支援装置は、上述の基本構成において、前記プログラミングフィールドへのファンクションブロックの配置は、前記プログラミングフィールド上に表示されるファンクションブロック配置用のテンプレートによる案内にしたがって行われるようになっている。
【００３１】
また、前記ファンクションブロック配置用のテンプレートには、スクリーン上の垂直方向又は水平方向のいずれかを基準方向として、複数の行と複数の列とが定義される共に、行方向の一端は入力側として他端は出力側として定義され、かつそれらの行と列との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置が定義されており、さらに前記複数種のファンクションブロックのそれぞれをプログラミングフィールド上に配置するに際して、各ファンクションブロックが、その種別に応じて決められた特定の列に配置されるように、各ファンクションブロックの該当する列への配置を誘導するための仕組みが組み込まれている。
【００３２】
このような構成によれば、前記プログラミングフィールドへのファンクションブロックの配置は、前記プログラミングフィールド上に表示されるファンクションブロック配置用のテンプレートによる案内にしたがって行われ、しかも、前記ファンクションブロック配置用のテンプレートには、スクリーン上の垂直方向又は水平方向のいずれかを基準方向として、複数の行と複数の列とが定義される共に、行方向の一端は入力側として他端は出力側として定義され、かつそれらの行と列との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置が定義されている。
【００３３】
そのため、プログラミングフィールド上には、回路素子の置き場所が予め定義されることとなるため、所望の回路素子を選択したのち、その回路素子を例えばマウスのドラッグ操作で、予め決められた置き場所の近辺に近づけさえすれば、ドラッグされた回路素子は予め定義された置き場所へと自動的に誘導されて配置されるから、レイアウト上のデザインセンスや適性を有しない者であっても、選択された複数の回路素子をプログラミングフィールド内に要領よく配置することができ、選択された回路素子のレイアウトに頭を悩ますことがないと言う利点がある。
【００３４】
加えて、このプログラム開発支援装置には、前記複数種のファンクションブロックのそれぞれをプログラミングフィールド上に配置するに際して、各ファンクションブロックが、その種別に応じて決められた特定の列に配置されるように、各ファンクションブロックの該当する列への配置を誘導するための仕組みが組み込まれているため、この誘導する仕組みの作用によって、各ファンクションブロックは、その種別に応じて決められた特定の列へと配置されるようになる。
【００３５】
そのため、ユーザがいずれかのファンクションブロックを選択して、プログラミングフィールド上への配置を試みれば、上記の「誘導するための仕組み」が作用するから、各ファンクションブロックはそのファンクションブロックの種別に応じて予め決められた列へと独りでに配置されるから、予め各ファンクションブロックの種別とそのファンクションブロックが配置されるべき列との関係を適切に設定しておきさえすれば、いずれのファンクションブロックも入力端から出力端へと向かう信号経路上の適切な位置に確実に配置されることとなり、選択されたファンクションブロックが信号経路上の不適切な位置へと誤って配置されたり、複数のファンクションブロックが信号経路上において不適切な順序で配置されると言ったプログラミングミスの発生を未然に防止することができる。
【００３６】
このとき、「各ファンクションブロックの該当する列への配置を誘導するための仕組み」としては、ユーザをして、各ファンクションブロックを該当する列へと配置するように促すための案内表示とすることができる。
【００３７】
このような「案内表示」方式によれば、視覚を通じてユーザの心理に働きかけることにより、ユーザをして、各ファンクションブロックを入力端から出力端へと行方向へと向かう信号経路上における該当する列へと確実に配置させることができる。
【００３８】
また、「各ファンクションブロックの該当する列への配置を誘導するための仕組み」としては、配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための強制排除機能とすることもできる。
【００３９】
このような「強制排除」方式によれば、物理的な強制力を作用させることにより、ユーザの意思とは無関係に、各ファンクションブロックを入力端から出力端へと行方向へと向かう信号経路上における該当する列へと確実に配置させることができる。
【００４０】
また、「各ファンクションブロックの該当する列への配置を誘導するための仕組み」としては、上述の「案内表示」方式と「強制排除」方式とを併用することもできる。
【００４１】
このような構成によれば、視覚を通じてユーザの心理に働きかけると共に、物理的な強制力をも作用させることにより、各ファンクションブロックを入力端から出力端へと行方向へと向かう信号経路上における該当する列へと一層確実に配置させることができる。
【００４２】
なお、ユーザをして、各ファンクションブロックを該当する列へと配置するように促すための「案内表示」としては、様々な態様を採用することができる。
【００４３】
第１の態様としては、テンプレート上の各列のそれぞれに対応する位置に、その列に配置されるべきファンクションブロックの名称又はファンクションブロックの属する種別名を表示するインデックスを設けることが挙げられる。
【００４４】
第２の態様としては、テンプレート上の各列とその列に配置されるべきファンクションブロックとに同一の又は共通の視覚的特徴（例えば、同一色、同一又は共通の地模様、同一又は共通のマーク等）を付するものを挙げることができる。
【００４５】
第３の態様としては、テンプレート上の各列の配置予定領域の輪郭形状とその列に配置されるべきファンクションブロックの輪郭形状とを同一とするものを挙げることができる。
【００４６】
上述の「案内表示」方式によれば、行方向へ沿って入力端側から出力端側へと延びる各信号経路は一連の列を横切ることとなるため、各信号経路に沿ってこれと交叉する列表示を順次にチェックリストの要領で検索することにより、ファンクションブロックの配置忘れや配置間違いを減少させることができる。一方、ファンクションブロックを配置完了したのちにあっても、同様にして、各信号経路に沿ってこれと交叉する列表示を順次にチェックリストの要領で検索することにより、ファンクションブロックの配置忘れや配置間違い等を容易に検証することができる。
【００４７】
また、配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための「強制排除機能」としては、様々な態様を採用することができる。
【００４８】
第１の態様としては、各列毎に、その列に配置可能な種別のファンクションブロックのみをメニュー（小ウィンドウ、プルダウンメニュー等々）としてユーザに提示すると共に、そのメニュー上においてユーザによる選択操作が行われた場合に限り、その列へのファンクションブロックの配置を可能とするものを挙げることができる。
【００４９】
第２の態様としては、画面上の特定領域に選択可能な一群のファンクションブロックを配置する一方、それらのファンクションブロックをマウスのドラッグ操作でプログラミングフィールドへと移動させることはできるものの、そのファンクションブロックが配置可能とされた列以外では、ドロップ操作をしてもファンクションブロックを位置固定することはできないようにするものを挙げることができる。
【００５０】
第３の態様としては、画面上の特定領域に選択可能な一群のファンクションブロックを配置する一方、それらのファンクションブロックの表示は、各列の指定と連動して、その列に配置可能なものだけがアクティブとされ、アクティブ状態にかぎりドラッグ・アンド・ドロップ操作でプログラミングフィールドへと移動させ、かつ当該列に固定可能とするものを挙げることができる。
【００５１】
なお、別の一面から見た本発明は、そのようなプログラム開発支援装置のみならず、コンピュータを、そのような安全コントローラのプログラム開発支援装置として機能させるためのコンピュータプログラムとして把握することもできる。
【発明の効果】
【００５２】
この発明によれば、ファンクションブロックを誤った位置や誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置を提供することができる。
【発明を実施するための最良の形態】
【００５３】
以下に、この発明に係る安全コントローラのプログラム開発支援装置の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００５４】
本発明に係るプログラム開発支援装置の対象となる安全コントローラを含む安全制御システムを示す概念図が図１に示されている。同図（ａ）に示される安全制御システムは、１台の安全コントローラ１と１若しくは２台以上の安全Ｉ／Ｏターミナル５とをバス型ネットワーク２ａにて接続して構成されている。尚、同図（ａ）に示される安全制御システムにおいては、安全コントローラ１はマスタとして、安全Ｉ／Ｏターミナル５はスレーブとして機能する。これらの安全コントローラ１及び安全Ｉ／Ｏターミナル５には、それぞれ入力機器３及び出力機器４が接続される。入力機器３としては、セーフティ非常停止スイッチ、セーフティライトカーテン、セーフティリミットスイッチ、セーフティドアスイッチなどを挙げることができる。また、出力機器４としては、セーフティリレー、セーフティコンタクタなどを挙げることができる。
【００５５】
同図（ａ）に示されるマスタ・スレーブ型の安全制御システムに適用する場合、本発明のプログラム開発支援装置１０は、安全コントローラ１と各安全Ｉ／Ｏターミナル５とを繋ぐバス型ネットワーク２ａに接続することができる。これに対して、同図（ｂ）に示される単独タイプの制御システムに適用する場合、本発明のプログラム開発支援装置１０は所定のケーブル２ｂを介して直結される。こうして、プログラム開発支援装置１０にて生成される安全に関する制御プログラムは、各安全コントローラ１で実行可能な形式に変換された後、安全コントローラ１へと送り込まれる。
【００５６】
本発明に係るプログラム開発支援装置の電気的なハードウェア構成を示す概略ブロックズが図３に示されている。図１と図３とを参照して明らかなように、このプログラム開発支援装置１０は、図示の例にあっては、ノートパソコンを主体として構成されている。ノートパソコンのハードウェア構成は、当業者にはよく知られているように、ＣＰＵ１１と、入力操作部１２と、画像表示部１３と、ワークＲＡＭ１４と、記憶装置１５と、通信部１６とをシステムバス１７で接続して構成されている。
【００５７】
ＣＰＵ１１はマイクロプロセッサを主体として構成されており、当該ノートパソコン全体を統括制御するものである。入力操作部１２は、マウスやキーボードなどを主体として構成されており、当該ノートパソコンに対する各種の指令を与えるためのヒューマンマシンインタフェースとして機能するものである。画像表示部１３は液晶ディスプレイなどにより構成されており、その画面（スクリーン）１３ａには、後に図１３を参照して詳述するように、本発明に係るプログラミングフィールド３０１が表示されるようになっている。ワークＲＡＭ１４は、後述するシステムプログラム、アプリケーションプログラムなどをＣＰＵ１１が実行する際のワークエリアとして利用される。記憶装置１５は、ハードディスクなどで構成されており、その内部には出力イメージメモリ１５ａ、システムメモリ１５ｂ、プログラムメモリ１５ｃがそれぞれ配置されている。出力イメージメモリ１５ａは、本発明に関連して、各種のイメージを画像表示部１３のスクリーン１３ａ上に表示させる際の各種のイメージデータを格納するために使用され、システムメモリ１５ｂは、当該ノートパソコンの基本的な機能を構成するためのファームウェア（オペレーティングシステムを含む）を格納するために使用される。プログラムメモリ１５ｃは、当該ノートパソコンで実行されるべき各種のアプリケーションプログラムを格納するために使用される。先に述べたように、出力イメージメモリ１５ａ、システムメモリ１５ｂ、プログラムメモリ１５ｃに格納された各種のプログラム並びにデータは、それぞれＣＰＵ１１が実行する際には、ワークＲＡＭ１４のワークエリア上に展開されて実行されることはよく知られている通りである。
【００５８】
次に、安全コントローラの電気的なハードウェア構成を示す概略ブロック図が図４に示されている。同図に示されるように、安全コントローラ１の内部には、通信Ｉ／Ｆ部１０１と、中央演算部１０２と、入力端子部１０４ａと、出力端子部１０４ｂとが含まれている。
【００５９】
通信Ｉ／Ｆ部１０１は、当該安全コントローラ１とネットワーク２ａ，２ｂとの間で通信を行う際のインタフェース機能を実現するためのものである。中央演算部１０２は、当該安全コントローラ１の全体を統括制御するものであり、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを主体として構成されている。
【００６０】
入力端子部１０４ａには、入力機器３からの信号を受け付けるための複数の入力端子（端子１，端子２，・・・，端子ｎ）が含まれている。一方、出力端子部１０４ｂには、出力機器４へと出力信号を送出するための複数の出力端子（端子１，端子２，・・・，端子ｎ）が含まれている。
【００６１】
入力側の端子異常診断部１０３ａは、入力端子部１０４ａに含まれる各入力端子のそれぞれに対応する個別診断部を有している。各個別診断部は、複数の入力機器種別に対応する汎用の診断部として構成されており、この診断部は各入力機器種別に応じたパラメータが設定されることによって、その機種に特化した形態に構築されるように仕組まれている。後述するプログラミング作業において、入力系ファンクションブロックのパラメータとして出現するのは、この端子異常診断部１０３ａを各入力機器種別に特化するためのパラメータのことである。
【００６２】
出力側の端子異常診断部１０３ｂもまた、出力端子部１０４ｂに含まれる各出力端子に対応する個別診断部を有している。この個別診断部は、複数の出力機器種別に対応する汎用の診断部として構成されており、これに各出力機器に対応するパラメータを設定することによって、その出力機器種別に対応する診断部として特化されるように構成されている。
【００６３】
次に、プログラム開発支援装置１０の機能を概念的に示すブロック図が図２に示されている。同図に示されるように、本発明を実現するための構成に着目した場合、プログラム開発支援装置１０として必要な機能構成としては、安全プログラムテンプレートリスト１０ａと、ロジック回路図データ１０ｂと、設定パラメータを作成するためのコンパイラ１０ｃと、コンパイラ１０ｃを介してロジック回路図データ１０ｂから変換された設定パラメータ１０ｄとを挙げることができる。これらの機能構成要素については、後に本発明に係るプログラム開発支援装置の動作を説明する際に、図７〜図９に示される図表、並びに、図５及び図６に示されるフローチャートを参照しながら詳述することとする。
【００６４】
次に、図５及び図６を参照しながら、本発明に係るプログラム開発支援装置の動作について説明する。なお、それらのフローチャートに示されるアプリケーションプログラムについては、先に図３を参照して説明したプログラムメモリ１５ｃに格納されたものである。
【００６５】
図５において、処理が開始されると、安全プログラムテンプレートリストの検索処理（ステップ１０１）及び検索された安全プログラムテンプレートリストの表示処理（ステップ１０２）が実行される。その結果、プログラム開発支援装置１０を構成するノートパソコンの画面（スクリーン）１３ａには、図７に示される安全プログラムテンプレートリスト（１０ａ）が表示されることとなる。図７から明らかなように、この安全プログラムテンプレートリスト（１０ａ）内には、複数のテンプレート（テンプレート１，テンプレート２，・・・）が含まれている。図７には、それらのうちの二つのテンプレート（テンプレート１，テンプレート２）のみが示されている。図から明らかなように、各テンプレートには、画面に表示されるべきテンプレートの各列毎に、そこに配置されるべきファンクションブロックの種別名とその種別名により包含される個々のファンクションブロック名のリストとが記述されている。
【００６６】
図５に戻って、この状態において、ユーザは、入力操作部１２を構成するマウスやキーボードの操作によって、スクリーン１３ａ上に表示されたテンプレートの一つを選択する（ステップ１０３）。すると、所定の検索処理が起動されて、図７のテンプレートリストに含まれるテンプレートの一つが抽出され（ステップ１０４）、こうして選択された安全プログラムテンプレートは、ノートパソコンのスクリーン１３ａ上に表示される（ステップ１０５）。以上の選択乃至表示処理（ステップ１０３〜１０５）を繰り返すことによって、ユーザは、対象となる安全コントローラに適したテンプレートの一つを選択することができる。そして、そのようなテンプレートが見つけ出されたならば、入力操作部１２を構成するマウスやキーボードの所定操作によって、そのテンプレートを採用決定する操作を行うことにより（ステップ１０６ＹＥＳ）、図６に移って、本発明の要部であるところのプログラミング処理（ロジック回路図作成処理）が開始される。
【００６７】
プログラミング処理が開始されると、ノートパソコンのスクリーン１３ａ上に設けられたプログラミングフィールド３０１には、図１１または図１２に示される安全プログラムテンプレート２００が表示される。それらの図を総合すれば明らかなように、このテンプレート２００の全体は、４行（Ｒ１〜Ｒ４）×６列（Ｃ１〜Ｃ６）の大きさを有するものであり、その行方向の左端には入力端子列表示２０１が、また行方向の右端には出力端子列表示２０３が設けられている。また、安全プログラムテンプレートの１行は、図示例にあっては、入力端子列表示２０１及び出力端子列表示２０３の２端子分の幅を有する。
【００６８】
更に重要な点であるが、この安全プログラムテンプレート２００には、行（Ｒ１〜Ｒ４）と列（Ｃ１〜Ｃ６）とが定義され、且つそれらの行（Ｒ１〜Ｒ４）と列（Ｃ１〜Ｃ６）との各交点位置にそれぞれ対応するようにして、２４個のブロック配置可能位置（Ａ１１〜Ａ４６）が定義されている。これらのブロック配置可能位置（Ａ１１〜Ａ４６）は、所定の水平方向幅と垂直方向幅とを有する横長長方形状の領域で構成されている。一方、後述するように、各ファンクションブロックの外形についても、この各ブロック配置可能位置（Ａ１１〜Ａ４６）とほぼ同形状に設定されている。そのため、各ブロック配置可能位置（Ａ１１〜Ａ４６）のそれぞれに、いずれかのファンクションブロック（ＦＢ）が配置されると、それらのファンクションブロック（ＦＢ）は行方向及び列方向に隙間なく配列されることとなる。
【００６９】
このように、本来安全プログラムテンプレート２００は、４行（Ｒ１〜Ｒ４）×６列（Ｃ１〜Ｃ６）の大きさを有するものであるが、ユーザに対する視認性を確保できる前提で行方向の幅を設定すると、ノートパソコンのスクリーン１３ａの水平方向幅をはみ出してしまう。そこで、この例にあっては、図１１及び図１２に示されるように、安全プログラムテンプレート２００の全体は、左側３列部分（Ｃ１〜Ｃ３）のテンプレート２００ａと右側３列部分（Ｃ４〜Ｃ６）のテンプレート２００ｂとに分割されて表示されるように構成されている。これにより、ノートパソコンのスクリーン１３ａ上に表示させた場合にも、行に沿う方向の十分な幅を確保することができ、個々のファンクションブロックの視認性を良好に維持することができる。
【００７０】
もっとも、ノートパソコンに組み込まれた画面スクロール機能を利用すれば、安全プログラムテンプレート２００の全体を分割しない状態においても、垂直方向並びに水平方向のスクロールバーを設けることによって、安全プログラムテンプレート２００の全ての部分を眺めることが可能である。
【００７１】
加えて、この発明の安全プログラムテンプレート２００においては、複数種のファンクションブロック（ＦＢ）のそれぞれをプログラミングフィールド３０１上に配置するに際して、各ファンクションブロック（ＦＢ）が、その種別に応じて決められた特定の列（Ｃ１〜Ｃ６）に配置されるように、各ファンクションブロック（ＦＢ）の該当する列への配置を誘導するための仕組みが組み込まれている。
【００７２】
図示例にあっては、この各ファンクションブロックの該当する列への配置を誘導するための仕組みとしては、ユーザ６をして、各ファンクションブロック（ＦＢ）を該当する列へと配置するように促すための案内表示、及び配置が予定される以外のファンクションブロック（ＦＢ）がその列に配置されることを強制的に排除するための強制排除機能とが採用される。
【００７３】
ここで、上述の案内表示としては、各列のそれぞれに対応する位置に設けられ、且つその列に配置されるべきファンクションブロックの種別を表示するインデックス２０２−１〜２０２−６により構成されている。即ち、より具体的には、図１１に示されるように左側３列分の安全プログラムテンプレート２００ａの場合、第１列Ｃ１の上端部にはその列に配置可能なファンクションブロックが入力系ファンクションブロックであることを意味するインデックス（「入力」）２０２−１が、第２列Ｃ２の上端部には第２列に配置可能なファンクションブロックが無効化・ファンクションブロックであることを意味するインデックス（「無効化」）２０２−２が、第３列Ｃ３の上端部には第３列に配置可能なファンクションブロックがセット／リセット・ファンクションブロックであることを意味するインデックス（「リセット」）２０２−３がそれぞれ表示されている。なお、それらの列Ｃ１〜Ｃ３には、それ以外にも、入出力間導通ファンクション・ブロックや不使用（Ｎｏｔ  Ｕｓｅｄ）・ファンクションブロックも配置可能とされている。
【００７４】
ここで、当業者にはよく知られているように、入力系ファンクションブロックとしては、セーフティ非常停止スイッチ・ファンクションブロック（ＦＢ１１）、セーフティライトカーテン・ファンクションブロック（ＦＢ１２）、セーフティリミットスイッチ・ファンクションブロック（ＦＢ１３）、セーフティドアスイッチ・ファンクションブロックが含まれる。同様にして、入力無効化ファンクションブロックとしては、論理和（ＯＲ）演算・ファンクションブロック（ＦＢ２１）、論理積並びに論理和（ＡＮＤ＋ＯＲ）・ファンクションブロック（ＦＢ２２）などが含まれる。更に、同様にして、セット／リセット・ファンクションブロックとしては、マニュアルリセット・ファンクションブロック（Ｌｏｗ−Ｈｉｇｈ−Ｌｏｗ信号）（ＦＢ３１）、マニュアルリセット・ファンクションブロック（Ｒｉｓｉｎｇ  Ｅｄｇｅ信号）が含まれる。
【００７５】
そのため、それらのファンクションブロックをいずれかの列に配置しようとするユーザは、配置しようとするファンクションブロックの名称と各列Ｃ１〜Ｃ３の上端部に表示されるインデックス２０２−１〜２０２−３の表示とを照らし合わせることによって、そのファンクションブロックを適切な列に配置するように促されるから、結果として、個々のファンクションブロックは、その種別に応じて決められた最適な列に配置されるように自動的に誘導されることとなる。
【００７６】
同様な誘導する仕組みは、図１２に示されるように、右側３列部分の安全プログラムテンプレート２００ｂにも適用されている。即ち、図１２に示されるように、第４列Ｃ４の上端部にはその列に配置可能なファンクションブロックが出力条件ファンクションブロックであることを意味するインデックス２０２−４が、第５列Ｃ５の上端部には、その列に配置可能なファンクションブロックが外部出力機器モニタリング（ＥＤＭ）・ファンクションブロックであることを意味するインデックス２０２−５が、第６列Ｃ６の上端部には、その列に配置可能なファンクションブロックが端子モード・ファンクションブロックであることを意味するインデックス２０２−６がそれぞれ設けられている。そのため、この右側３列分の安全プログラムテンプレート２００ｂにあっても、今まさに選択されていずれかの列に配置されようとするファンクションブロックの名称と各列に表示されたインデックス２０２−４〜２０２−６とを照らし合わせることによって、各ユーザはそのファンクションブロックが適切な列に配置されるように促され、結果として、各ファンクションブロックはその種別に応じて予め決められた列へと配置されるように誘導されることとなる。
【００７７】
一方、この安全プログラムテンプレートにおいては、先に説明したように、各ファンクションブロックの該当する列への配置を誘導するための仕組みとして、配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための強制排除機能が設けられている。
【００７８】
即ち、図１３に示されるように、今仮に、第２行（Ｒ２）と第２列（Ｃ２）とで定義されるブロック配置可能位置［Ａ２２］に何らかのファンクションブロックを配置するものとすれば、例えばマウスによりカーソルをそのブロック配置可能位置［Ａ２２］へ移動させた後、これをクリック操作すれば、その安全テンプレートに重なるようにして、その列（Ｃ２）に配置可能な一連のファンクションブロック（ＦＢ０１，ＦＢ２１，ＦＢ２２）を含むメニューウィンドウ３０２が開かれる。そして、このメニューウィンドウ３０２が開かれた状態において、メニューウィンドウ３０２に含まれるファンクションブロック（ＦＢ０１，ＦＢ２１，ＦＢ２２）のいずれかを選択すれば、その選択されたファンクションブロック（この例ではＦＢ２１）が、選択されたブロック配置可能位置［Ａ２２］に配置されることとなる。このように、いずれかの列（Ｃ１〜Ｃ３）をカーソルで選択すれば、その選択と同時にメニュー３０２が開かれ、そのメニュー３０２にはカーソルが置かれた列（Ｃ２）に配置可能なファンクションブロックのみが表示され、しかもそれらのファンクションブロックの中から選択された場合に限り、選ばれた列へのファンクションブロックの配置が可能となるのである。
【００７９】
そのため、このようなメニュー提示が行われることによって、ユーザは知らず知らずのうちに、各列（Ｃ１〜Ｃ３）のそれぞれに、適切なファンクションブロックを配置するように強制的に誘導されるから、そのため、従前のように、選択されたファンクションブロックを誤って信号経路上の不適切な位置に配置するといったプログラミングミスがなくなり、熟練者のみならず、誰でも容易に、この種の安全コントローラにおける制御プログラムを誤りなく作成することが可能となるのである。
【００８０】
このようにして安全プログラムテンプレートによるサポートの下に作成されたロジック回路図の一例が図１４及び図１５にそれぞれ示されている。それらの図から明らかなように、このロジック回路図は、行方向に沿って入力側から出力側へと延びる信号経路と、その信号経路上の各列に対応する位置に配置されるファンクションブロック（ＦＢ）とから構成されている。そして、各列（Ｃ１〜Ｃ６）の上部にはその列に配置可能なファンクションブロックを意味するインデックス２０２−１〜２０２−６が設けられている。そのため、完成されたロジック回路図とそれらのインデックス２０２−１〜２０２−６とを照らし合わせることによって、チェックリストを使用する要領で、各ファンクションブロック種別毎に、各信号経路に配置されたファンクションブロックを確認することができる。そのため、この確認作業において、対象となる信号経路上のその列に対応する位置にいずれのファンクションブロックも存在しなければ、先ず、それを以て何らかのファンクションブロックの置き忘れを疑うことができ、このように各列毎に意識を集中して検証を行うことができるため、第１従来例や第２従来例に示された場合とは異なり、完成したロジック回路図を容易且つ確実に検証することができる。
【００８１】
このとき、元々各信号経路上のそれぞれの列には、その列に割り当てられたファンクションブロックしか配置できないような仕組みとされているため、本発明のテンプレートを使用して作成されたロジック回路図に関する限り、ファンクションブロックが誤って不適切な位置に配置されていたり、或いは不適切な順序で配置されているということは考えにくく、そのため上述した各列に集中した検証作業を行うだけで、誤りのないロジック回路図を誰でも容易に作成することができるようになる。
【００８２】
こうして作成されたロジック回路図は、図８に示されるように、ロジック回路図データ（１０ｂ）としてプログラム開発支援装置内に保存されている（図２参照）。そのため、以後、予め用意されたコンパイラ１０ｃを作動させれば、こうしてロジック回路図作成に伴って生成された回路図データ１０ｂは、そのまま安全コントローラ１で実行可能な設定パラメータ１０ｄに変換される。然る後、この設定パラメータ１０ｄは、図２に示されるように、通信回線又は可搬型記録媒体を介して安全コントローラ１側へとダウンロードされる。これにより、安全コントローラ１への制御プログラムの組み込みが完了するわけである。以上の処理が、図６のフローチャートにおいて、ステップ１０８〜１１１に説明されている。
【００８３】
このように、本発明によれば、ノートパソコンの記憶装置１５のプログラムメモリ１５ｃには、所定のアプリケーションプログラムが組み込まれているため、ノートパソコンで構成されるプログラム開発支援装置１０では、このアプリケーションプログラムを読み出してワークＲＡＭ１４上で実行することにより、図５及び図６のフローチャート、並びに、図１１〜図１５で示される動作が実行される結果、ノートパソコンのスクリーン１３ａのプログラミングフィールド上には、左側３列分の安全プログラムテンプレート２００ａまたは右側３列分の安全プログラムテンプレート２００ｂが表示されるから、それらのテンプレートに表示されたインデックス２０２及びメニュー３０２の表示制限機能を介することによって、熟練者のみならず初心者においても、この種のプログラミングに必要なロジックシンボル図を簡単に且つ誤りなく作成することが可能となるのである。
【００８４】
なお、以上の実施形態においては、ノートパソコンのスクリーン１３ａの垂直方向を上下方向として行と列とを定義したが、これに代えてスクリーン１３ａの水平方向を上下として行と列とを定義（即ち、９０度回転）しても良いことは勿論である。
【００８５】
また、以上の実施形態においては、安全プログラムテンプレート２００の全体を、左側３列分のテンプレート２００ａと右側３列分のテンプレート２００ｂとに分けて、別々の画面に表示するようにしたが、もしも本発明のアプリケーションプログラムが組み込まれるコンピュータが十分な大きさのスクリーンを有するものであれば、安全プログラムテンプレート２００の全体を一画面で映し出すようにしてもよいことは勿論である。
【００８６】
また、以上の実施形態においては、配置対象となるファンクションブロックとそれが配置されるべき列とを関連付けるための手段として、各列の上部にその列に配置されるべきファンクションブロックを意味するインデックスを表示するようにしたが、これに代えて、各ファンクションブロックの種別毎にそのファンクションブロックの表示色を異ならせる一方、テンプレート上の各列にはその列に配置されるべきファンクションブロックと同一の色を付するようにしても同様な関連付けを行い、ユーザの心理に訴えかけることによって、各ブロックを適切な列へと誘導することができる。
【００８７】
また、以上の関連付け以外にも、例えば、各ファンクションブロックの輪郭形状をその種別毎に異ならせる一方、テンプレート上の行と列とで定義される各位置にはその輪郭と同様なブロック配置領域を設定することによっても、そのような関連付けを行うことができる。
【００８８】
また、以上の実施形態においては、予め決められた種別のファンクションブロック以外の種別のファンクションブロックが、各テンプレート上の列に配置されることを排除するための手段として、メニュー方式を利用したが、これに代えて、表示画面の一部に選択対象となる一連のファンクションブロックを配置する一方、これをマウスのドラッグアンドドロップ手法でテンプレート上の各列へと移動可能に構成し、一方各列の側では、ドラッグアンドドロップ手法で運ばれたファンクションブロックの種別と自己の列に割り当てられたファンクションブロック種別とを照合し、それらが不一致な場合には、ドロップ操作が行われても、その列にファンクションブロックがドロップ不能なように仕組むことによっても同様な強制排除機能を実現することができる。この場合、ドラッグアンドドロップ操作で、ドロップした瞬間に、それまで移動乃至運ばれてきたファンクションブロックは、元の配置位置へと戻ってしまい、どうしても目的とする列へと持ち込むことができないようになるのである。
【００８９】
なお、以上の実施形態においては、表示スクリーンの水平方向幅が、目的とするテンプレートの水平方向幅に比較して短いことから、左右方向への二分割表示を採用したが、対象となる安全コントローラがサポートする端子数が１６点、３２点、６４点といったように増加する場合は、画面の垂直方向へそれらは如何様にも割り当てることができ、その場合には垂直方向のスクロールバーを操作することによって、上下方向へと細長いテンプレートを適宜スクロールさせながら、任意の垂直方向位置にある列方向へ延びる信号経路上に、同様にして所望のファンクションブロックを配置することができることは言うまでもない。
【００９０】
また、以上の実施形態においては、この種の安全コントローラの分野における当業者に周知乃至公知のファンクションブロック（入力系ファンクションブロック、無効化・ファンクションブロック、セット／リセット・ファンクションブロック、出力条件ファンクションブロック、外部出力機器モニタリング（ＥＤＭ）・ファンクションブロック、端子モード・ファンクションブロックなどに適用したが、本発明の適用はこれに限定されるものであはなく、今後将来的に、様々な種別のファンクションブロックが出現した場合には、それらのファンクションブロックに合わせて安全プログラムテンプレート上の列を増加させればよいことは勿論である。
【００９１】
なお、以上の説明において、各入力系ファンクションブロックには、対応する入力機器を暗示するシンボル図形が、図１０に示されるように付されているため、今後入力機器の種別が増大した場合にも、ファンクションブロックに付されたシンボル表示を頼りに、それら入力機器に対応する入力系ファンクションブロックの種別を直感的に誰でも容易に把握することができるという利点もある。
【産業上の利用可能性】
【００９２】
この発明によれば、ファンクションブロックを不適切な位置に配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置を提供することができる。
【図面の簡単な説明】
【００９３】
【図１】安全コントローラを含む安全制御システムを示す概念図である。
【図２】プログラム開発支援装置の機能を概念的に示すブロック図である。
【図３】プログラム開発支援装置の電気的なハードウェア構成を示す概略ブロック図である。
【図４】安全コントローラの電気的なハードウェア構成を示す概略ブロック図である。
【図５】プログラム開発支援装置のソフトウェア構成を示すフローチャート（その１）である。
【図６】プログラム開発支援装置のソフトウェア構成を示すフローチャート（その２）である。
【図７】安全プログラムテンプレートリスト（１０ａ）の一例を示す説明図である。
【図８】ユーザにより作成されたロジック回路図データ（１０ｂ）の一例を示す説明図である。
【図９】安全コントローラへダウンロードされる設定パラメータデータの一例を示す説明図である。
【図１０】各種ファンクションブロックに使用される安全機器のシンボル表示例を示す図である。
【図１１】安全プログラムテンプレートの表示例（その１）である。
【図１２】安全プログラムテンプレートの表示例（その２）である。
【図１３】安全テンプレートによるプログラミングサポートの説明図である。
【図１４】安全テンプレートを使用して構築されたロジック回路図の表示例（その１）である。
【図１５】安全テンプレートを使用して構築されたロジック回路図の表示例（その２）である。
【図１６】プログラム開発支援装置（第１従来例）によるロジック回路図表示例である。
【図１７】プログラム開発支援装置（第２従来例）によるロジック回路図表示例である。
【符号の説明】
【００９４】
１      安全コントローラ
１ａ  設定パラメータ
２ａ    バス型ネットワーク
２ｂ    直結型ネットワーク
３      入力機器
４      出力機器
５      安全Ｉ／Ｏターミナル
６      ユーザ
１０    プログラム開発支援装置（ＰＣ）
１０ａ  安全プログラムテンプレートリスト
１０ｂ  ロジック回路図データ
１０ｃ  コンパイラ
１０ｄ  設定パラメータ
１１    ＣＰＵ
１２    入力操作部
１３    画像表示部
１３ａ  画面（スクリーン）
１４    ワークＲＡＭ
１５    記憶装置
１５ａ  出力イメージメモリ
１５ｂ  システムメモリ
１５ｃ  プログラムメモリ
１６    通信部
１７    システムバス
１０１    通信Ｉ／Ｆ部
１０２    中央演算部
１０３ａ  入力側の端子異常診断部
１０３ｂ  出力側の端子異常診断部
１０４ａ  入力端子部
１０４ｂ  出力端子部
２００    安全プログラムテンプレート
２００ａ  左側３列分のプログラムテンプレート
２００ｂ  右側３列分のプログラムテンプレート
２０１    入力端子列表示
２０２−１〜２０２−６  インデックス
２０３    出力端子列表示
３０１    プログラミングフィールド
３０２    メニューウィンドウ
３０３    編集ボタン
３０４    スクロールバー
Ｒ１〜Ｒ４  行
Ｃ１〜Ｃ６  列
Ａ１１〜Ａ４６  ブロック配置可能位置
ＦＢ０１  不使用（Ｎｏｔ  Ｕｓｅｄ）・ファンクションブロック
ＦＢ１１  セーフティ非常停止スイッチ・ファンクションブロック
ＦＢ１２  セーフティライトカーテン・ファンクションブロック
ＦＢ１３  セーフティリミットスイッチ・ファンクションブロック
ＦＢ１４  リセット入力及びフィードバック入力・ファンクションブロック
ＦＢ２１  論理和（ＯＲ）演算・ファンクションブロック
ＦＢ２２  論理積及び論理和（ＡＮＤ＋ＯＲ）・ファンクションブロック
ＦＢ３１  マニュアルリセット・ファンクションブロック（Ｌｏｗ−Ｈｉｇｈ−Ｌｏｗ）
ＦＢ４１  外部出力モニタリング・ファンクションブロック
ＦＢ８１  セーフティ非常停止スイッチ・アプリケーション用ファンクションブロック
ＦＢ８２  セーフティライトカーテン・アプリケーション用ファンクションブロック
ＦＢ８３  セット／リセット・アプリケーション用ファンクションブロック
ＦＢ８４  論理積演算・アプリケーション用ファンクションブロック
ＦＢ８５  外部出力機器モニタリング・アプリケーション用ファンクションブロック
Ｔ８３    リセットスイッチ
Ｔ８４    外部出力機器モニタリング
Ｔ８１１  非常停止スイッチＡ
Ｔ８１２  非常停止スイッチＢ
Ｔ８２１  セーフティライトカーテンＡ
Ｔ８２２  セーフティライトカーテンＢ
【図１】
2008310390.tif 000003
【図２】
2008310390.tif 000004
【図３】
2008310390.tif 000005
【図４】
2008310390.tif 000006
【図５】
2008310390.tif 000007
【図６】
2008310390.tif 000008
【図７】
2008310390.tif 000009
【図８】
2008310390.tif 000010
【図９】
2008310390.tif 000011
【図１０】
2008310390.tif 000012
【図１１】
2008310390.tif 000013
【図１２】
2008310390.tif 000014
【図１３】
2008310390.tif 000015
【図１４】
2008310390.tif 000016
【図１５】
2008310390.tif 000017
【図１６】
2008310390.tif 000018
【図１７】
2008310390.tif 000019