安全コントローラは、一般的なプログラマブルコントローラ(PLC)に類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵することにより、その制御において高度な安全性および信頼性を確保したものであり、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全な制御を行なうような機能(フェールセーフ機能)を備えている。
ここに言う安全は、より具体的には、規格化されている安全基準を含む意味である。安全規格には、例えばIEC61508やEN規格などがある。IEC61508(プログラム可能な電子システムの機能安全に関する国際電気標準委員会)では、時間あたりの危険故障確立を(失敗確立:Probability of Failure per Hour)を定義し、この確立によってSILのレベル(Safety Integrity Level)を4段階に分類している。また、EN規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけされていて、EN954−1では5つの安全カテゴリにて規定されている。この明細書でいう安全コントローラ、安全I/Oターミナル等は、このような安全基準のいずれかに対応したものである。
安全コントローラ用の制御プログラムを作成するための従来のプログラム開発支援装置(日本国、オムロン株式会社製セーフティネットワークコントローラ)におけるロジック回路図表示例が図16に示されている。
このプロラム開発支援装置(第1従来例)は、画像表示器のスクリーン上のプログラミングフィールド801に、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロック(FB81〜FB85)を順次に配置し、かつ各ファンクションブロック毎に必要な固有パラメータ(図示せず)を設定(この例では、配線描画のためのマウスによるドラッグ操作で、パラメータが自動設定される)することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるように構成されている。
なお、図において、FB81はセーフティ非常停止スイッチ・アプリケーション用のファンクションブロック、FB82はセーフティライトカーテン・アプリケーション用のファンクションブロック、FB83はセット/リセット・アプリケーション用のファンクションブロック、FB84は論理積演算・アプリケーション用のファンクションブロック、FB85は外部出力機器モニタリング・アプリケーション用のファンクションブロックである。また、図において、T811,T812はセーフティ非常停止スイッチの2系統の出力信号が入力される一対の入力端子表示、T821,T822はセーフティライトカーテンの2系統の出力信号が入力される一対の入力端子表示、T83はリセットスイッチの出力信号が入力される入力端子表示、T84は外部出力機器モニタリング信号が入力される入力端子表示である。
そして、ユーザによりプログラミングフィールド801上に描かれたロジック回路に対応して作成される回路図データ(図示せず)は、所定のコンパイル処理が施されて、安全コントローラが直接に解読実行可能な設定ファイル(安全コントローラの制御プログラム)に変換される。こうして得られた実行用の設定ファイルは、対象となる安全コントローラへと、通信を介して又は可搬型記録媒体を介して、インストールされる。
上述の第1従来例によれば、プログラミングフィールド801上には、ファンクションブロックや端子表示(以下、回路素子と言う)の置き場所が固定されていないから、所望の回路素子をプログラミングフィールド801上の任意の位置に配置することができ、回路素子の配置自由度が高いと言う利点がある。その反面、限られた大きさのプログラミングフィールド801内に、所望の回路素子の全てを収容しかつそれらの回路素子を全体の回路動作が理解しやすく配置(レイアウト)するためには、ある種のデザイン上のセンス乃至適性が必要とされ、それらのセンスや適性に劣る者にとっては却って使い勝手が悪いと言う欠点がある(非特許文献1参照)。
安全コントローラ用の制御プログラムを作成するための従来の他のプログラム開発支援装置(独国、PILZ社製)におけるロジック回路図表示例が図17に示されている。
このプロラム開発支援装置(第2従来例)も、画像表示器のスクリーン上のプログラミングフィールド901に、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロック(FB91〜FB95)を順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータ(図示せず)を設定(この例でも、配線描画のためのマウスによるドラッグ操作で、パラメータが自動設定される)することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるように構成されている。
加えて、この第2従来例にあっては、プログラミングフィールド901へのファンクションブロックの配置は、プログラミングフィールド901上に表示されるファンクションブロック配置用のテンプレート900による案内にしたがって行われ、このテンプレート900には、スクリーン上の垂直方向を基準方向として、複数の行(R1,R2,R3・・・)と複数の列(C1,C2,C3・・・)とが定義される共に、行(R)方向の一端(左端)は入力側として他端(右端)は出力側として定義され、かつそれらの行(R1,R2,R3・・・)と列(C1,C2,C3・・・)との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置(A11〜A33)が定義されている。
なお、図において、FB91はセーフティ非常停止スイッチ・アプリケーション用のファンクションブロック、FB92はセーフティライトカーテン・アプリケーション用のファンクションブロック、FB93は論理積演算・アプリケーション用のファンクションブロック、FB94はセット/リセット・アプリケーション用のファンクションブロック、FB95は外部出力機器モニタリング・アプリケーション用のファンクションブロックである。また、図において、T911,T912は非常停止スイッチの2系統の出力信号が入力される一対の入力端子表示、T921,T922はセーフティライトカーテンの2系統の出力信号が入力される一対の入力端子表示、T93はリセットスイッチの出力信号が入力される入力端子表示、T94は外部出力機器モニタリング信号が入力される入力端子表示である。
そして、ユーザによりプログラミングフィールド901上に描かれたロジック回路に対応して作成される回路図データは、第1従来例と同様に所定のコンパイル処理が施されて、安全コントローラが直接に解読実行可能な設定ファイルに変換される。こうして得られた実行用の設定ファイルは、対象となる安全コントローラへと、通信を介して又は可搬型記録媒体を介して、インストールされる。
上述の第2従来例によれば、プログラミングフィールド901上には、回路素子の置き場所が予め定義されているから、所望の回路素子を選択したのち、その回路素子を例えばマウスのドラッグ操作で、予め決められた置き場所の近辺に近づけさえすれば、ドラッグされた回路素子は予め定義された置き場所へと自動的に誘導されて配置されるから、レイアウト上のデザイン上のセンスや適性を有しない者であっても、選択された複数の回路素子をプログラミングフィールド901内に要領よく配置することができ、第1従来例の場合のように、選択された回路素子のレイアウトに頭を悩ますことがないと言う利点がある(非特許文献2)。
オムロン株式会社のカタログ(URL http://www.fa.omron.co.jp/product/32.htmlに掲載)
PILZ社カタログ(URL http://www.pilz.jp/p_saferelay7.htmに掲載)
ところで、この種のプログラム開発支援装置において、所望の安全制御仕様に対応するロジック回路図を生成するに際しては、単に入出力間の信号論理のみならず、安全コントローラに特有とされる様々な事情に配慮しつつ、必要なファンクションブロックをロジック回路図上の必要な位置に適切に配置せねばならない。
例えば、1もしくは2以上の入力端子から得られる入力信号が所定の論理値(危険)を示すときに、1もしくは2以上の出力端子から所定論理値(危険源の停止)を有する出力信号を送出するような論理回路図を作成しようとする場合、これが安全仕様でない通常のコントローラ(PLC等)であれば、それらの入出力間論理に相当する論理演算用のファンクションブロックを入出力端子列間に配置するだけで充分あろう。
しかし、これが安全仕様のコントローラとなると、些か、事情は異なる。すなわち、安全仕様のコントローラの場合には、入力端子から何らかの危険を示す入力信号が得られたとしても、その入力信号は、危険を検知する入力機器(セーフティ非常停止スイッチ、セーフティライトカーテン、セーフティリミットスイッチ、セーフティドアスイッチ等々)それ自体の故障等に起因するものである可能性もあるため、そのような入力信号を直ちに取り込んで必要な論理演算に供することはできない。そのため、論理演算用のファンクションブロック(例えばANDファンクションブロック)の少なくとも前段には、各入力機器毎に適切な故障診断機能等が組み込まれた入力系ファンクションブロックを配置せねばならない。
また、そのような入力系ファンクションブロック経由で何らかの危険を示す入力信号が得られたとしても、その入力信号は、調整やメンテナンス等のために、危険を承知で作業員が危険領域に侵入したことに起因するものである可能性もあるため、そのような入力信号を直ちに取り込んで必要な論理演算に供することができない場合もある。そのため、論理演算用のファンクションブロックの少なくとも前段には、調整時やメンテナンス時等に相当する所定の条件が成立するときには、入力信号を無効化する機能を有する無効化・ファンクションブロックを配置せねばならない場合もある。
また、そのような入力系ファンクションブロック、及び/又は、無効化・ファンクションブロック経由で何らかの危険を示す入力信号が得られた場合、危険を示す状態から安全を示す状態への復帰と同時に出力信号の状態を復帰させてはいけないとする安全法規上の理由から、そのような入力信号を直ちに取り込んで必要な論理演算に供することができない場合(特に、瞬時動作/瞬時復帰・接点からの入力信号の場合)もある。そのため、論理演算用のファンクションブロックの少なくとも前段には、入力信号の危険状態を保持するセット機能と、危険状態の保持を解除するリセット機能と、リセット条件を規定する機能とを有するセット/リセット・ファンクションブロックを配置せねばならない場合もある。
また、出力機器それ自体にも故障の可能性があることを考慮すると、論理演算用のファンクションブロックの出力信号を無条件で出力機器へと送出することは必ずしも適当ではない。そのため、論理演算用のファンクションブロックの少なくとも後段には、各出力機器毎に適切な故障診断機能等が組み込まれた外部出力機器モニタリング・ファンクションブロック(例えば、EDM・ファンクションブロック)を配置せねばならない。
さらに、出力機器のそれぞれには固有の動作遅れ時間があることを考慮すると、複数の出力端子のそれぞれから同一のタイミングで出力信号を送出することが必ずしも適当でない場合もある。そのため、論理演算用のファンクションブロックの少なくとも後段には、出力信号のオンタイミング、及び/又は、オフタイミングを遅らせる機能を有する端子モード・ファンクションブロックを配置せねばならない場合もある。
このように、ロジック回路図を介在する安全コントローラのプログラミングにおいては、入力端子から出力端子へ至る信号経路上の必要な位置に、必要なファンクションブロックを適切に配置する作業がユーザに対して要求される。この作業は、上述の安全コントローラ特有の事情を十分に考慮してはじめて適切に成し得るものであるから、安全コントローラのプログラミングに不慣れな初心者にとってはなかなか容易なことではなく、しばしば必要なファンクションブロックの欠落を生じたり、必要なファンクションブロックは存在するものの、配置される位置が誤っている等のプログラミングミスが生ずる。
殊に、上述の第1、第2従来例にあっては、プログラミングフィールド上の各ファンクションブロックが配置される位置とその位置に配置されるファンクションブックの種別との間には厳密な相関は何ら存在しないから、本来配置されるべき複数のファンクションブロックのうちのいずれかが、誤って欠落していたり、配置される位置が誤っていたとしても、そのことを各ファンクションブロックの配置された位置から直ちに発見することは困難である。
そのため、それらの従来例において、そのようなプログラミングミスを発見するためには、具体的な制御の事情を頭に浮かべながら、入力端子から出力端子へと信号経路を順に辿ると言う地道な検証作業が必要となり、このような検証作業の煩雑さがこの種の安全コントローラの普及を阻害する一因ともなっている。
しかも、安全コントローラのプログラミングに使用されるファンクションブロックの種類は、安全コントローラの普及に連れて益々増加することが予想されるため、より多数の種別のファンクションブロックが存在するであろう将来の状況下においても、プログラミングミスが生じ難く、かつプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置が要望されている。
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ファンクションブロックを誤った位置に配置したり、誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置を提供することにある。
この発明のさらに他の目的並びに作用効果については、明細書の記述を参照することにより、当業者であれば容易に理解されるであろう。
上述の技術的な課題は、以下の構成を有する安全コントローラのプログラム開発支援装置により解決することができる。
すなわち、この安全コントローラのプログラム開発支援装置は、画像表示器のスクリーン上のプログラミングフィールドに、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロックを順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータを設定することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるようにした基本構成を有する。
本発明のプログラム開発支援装置は、上述の基本構成において、前記プログラミングフィールドへのファンクションブロックの配置は、前記プログラミングフィールド上に表示されるファンクションブロック配置用のテンプレートによる案内にしたがって行われるようになっている。
また、前記ファンクションブロック配置用のテンプレートには、スクリーン上の垂直方向又は水平方向のいずれかを基準方向として、複数の行と複数の列とが定義される共に、行方向の一端は入力側として他端は出力側として定義され、かつそれらの行と列との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置が定義されており、さらに前記複数種のファンクションブロックのそれぞれをプログラミングフィールド上に配置するに際して、各ファンクションブロックが、その種別に応じて決められた特定の列に配置されるように、各ファンクションブロックの該当する列への配置を誘導するための仕組みが組み込まれている。
このような構成によれば、前記プログラミングフィールドへのファンクションブロックの配置は、前記プログラミングフィールド上に表示されるファンクションブロック配置用のテンプレートによる案内にしたがって行われ、しかも、前記ファンクションブロック配置用のテンプレートには、スクリーン上の垂直方向又は水平方向のいずれかを基準方向として、複数の行と複数の列とが定義される共に、行方向の一端は入力側として他端は出力側として定義され、かつそれらの行と列との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置が定義されている。
そのため、プログラミングフィールド上には、回路素子の置き場所が予め定義されることとなるため、所望の回路素子を選択したのち、その回路素子を例えばマウスのドラッグ操作で、予め決められた置き場所の近辺に近づけさえすれば、ドラッグされた回路素子は予め定義された置き場所へと自動的に誘導されて配置されるから、レイアウト上のデザインセンスや適性を有しない者であっても、選択された複数の回路素子をプログラミングフィールド内に要領よく配置することができ、選択された回路素子のレイアウトに頭を悩ますことがないと言う利点がある。
加えて、このプログラム開発支援装置には、前記複数種のファンクションブロックのそれぞれをプログラミングフィールド上に配置するに際して、各ファンクションブロックが、その種別に応じて決められた特定の列に配置されるように、各ファンクションブロックの該当する列への配置を誘導するための仕組みが組み込まれているため、この誘導する仕組みの作用によって、各ファンクションブロックは、その種別に応じて決められた特定の列へと配置されるようになる。
そのため、ユーザがいずれかのファンクションブロックを選択して、プログラミングフィールド上への配置を試みれば、上記の「誘導するための仕組み」が作用するから、各ファンクションブロックはそのファンクションブロックの種別に応じて予め決められた列へと独りでに配置されるから、予め各ファンクションブロックの種別とそのファンクションブロックが配置されるべき列との関係を適切に設定しておきさえすれば、いずれのファンクションブロックも入力端から出力端へと向かう信号経路上の適切な位置に確実に配置されることとなり、選択されたファンクションブロックが信号経路上の不適切な位置へと誤って配置されたり、複数のファンクションブロックが信号経路上において不適切な順序で配置されると言ったプログラミングミスの発生を未然に防止することができる。
このとき、「各ファンクションブロックの該当する列への配置を誘導するための仕組み」としては、ユーザをして、各ファンクションブロックを該当する列へと配置するように促すための案内表示とすることができる。
このような「案内表示」方式によれば、視覚を通じてユーザの心理に働きかけることにより、ユーザをして、各ファンクションブロックを入力端から出力端へと行方向へと向かう信号経路上における該当する列へと確実に配置させることができる。
また、「各ファンクションブロックの該当する列への配置を誘導するための仕組み」としては、配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための強制排除機能とすることもできる。
このような「強制排除」方式によれば、物理的な強制力を作用させることにより、ユーザの意思とは無関係に、各ファンクションブロックを入力端から出力端へと行方向へと向かう信号経路上における該当する列へと確実に配置させることができる。
また、「各ファンクションブロックの該当する列への配置を誘導するための仕組み」としては、上述の「案内表示」方式と「強制排除」方式とを併用することもできる。
このような構成によれば、視覚を通じてユーザの心理に働きかけると共に、物理的な強制力をも作用させることにより、各ファンクションブロックを入力端から出力端へと行方向へと向かう信号経路上における該当する列へと一層確実に配置させることができる。
なお、ユーザをして、各ファンクションブロックを該当する列へと配置するように促すための「案内表示」としては、様々な態様を採用することができる。
第1の態様としては、テンプレート上の各列のそれぞれに対応する位置に、その列に配置されるべきファンクションブロックの名称又はファンクションブロックの属する種別名を表示するインデックスを設けることが挙げられる。
第2の態様としては、テンプレート上の各列とその列に配置されるべきファンクションブロックとに同一の又は共通の視覚的特徴(例えば、同一色、同一又は共通の地模様、同一又は共通のマーク等)を付するものを挙げることができる。
第3の態様としては、テンプレート上の各列の配置予定領域の輪郭形状とその列に配置されるべきファンクションブロックの輪郭形状とを同一とするものを挙げることができる。
上述の「案内表示」方式によれば、行方向へ沿って入力端側から出力端側へと延びる各信号経路は一連の列を横切ることとなるため、各信号経路に沿ってこれと交叉する列表示を順次にチェックリストの要領で検索することにより、ファンクションブロックの配置忘れや配置間違いを減少させることができる。一方、ファンクションブロックを配置完了したのちにあっても、同様にして、各信号経路に沿ってこれと交叉する列表示を順次にチェックリストの要領で検索することにより、ファンクションブロックの配置忘れや配置間違い等を容易に検証することができる。
また、配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための「強制排除機能」としては、様々な態様を採用することができる。
第1の態様としては、各列毎に、その列に配置可能な種別のファンクションブロックのみをメニュー(小ウィンドウ、プルダウンメニュー等々)としてユーザに提示すると共に、そのメニュー上においてユーザによる選択操作が行われた場合に限り、その列へのファンクションブロックの配置を可能とするものを挙げることができる。
第2の態様としては、画面上の特定領域に選択可能な一群のファンクションブロックを配置する一方、それらのファンクションブロックをマウスのドラッグ操作でプログラミングフィールドへと移動させることはできるものの、そのファンクションブロックが配置可能とされた列以外では、ドロップ操作をしてもファンクションブロックを位置固定することはできないようにするものを挙げることができる。
第3の態様としては、画面上の特定領域に選択可能な一群のファンクションブロックを配置する一方、それらのファンクションブロックの表示は、各列の指定と連動して、その列に配置可能なものだけがアクティブとされ、アクティブ状態にかぎりドラッグ・アンド・ドロップ操作でプログラミングフィールドへと移動させ、かつ当該列に固定可能とするものを挙げることができる。
なお、別の一面から見た本発明は、そのようなプログラム開発支援装置のみならず、コンピュータを、そのような安全コントローラのプログラム開発支援装置として機能させるためのコンピュータプログラムとして把握することもできる。
この発明によれば、ファンクションブロックを誤った位置や誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置を提供することができる。
以下に、この発明に係る安全コントローラのプログラム開発支援装置の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
本発明に係るプログラム開発支援装置の対象となる安全コントローラを含む安全制御システムを示す概念図が図1に示されている。同図(a)に示される安全制御システムは、1台の安全コントローラ1と1若しくは2台以上の安全I/Oターミナル5とをバス型ネットワーク2aにて接続して構成されている。尚、同図(a)に示される安全制御システムにおいては、安全コントローラ1はマスタとして、安全I/Oターミナル5はスレーブとして機能する。これらの安全コントローラ1及び安全I/Oターミナル5には、それぞれ入力機器3及び出力機器4が接続される。入力機器3としては、セーフティ非常停止スイッチ、セーフティライトカーテン、セーフティリミットスイッチ、セーフティドアスイッチなどを挙げることができる。また、出力機器4としては、セーフティリレー、セーフティコンタクタなどを挙げることができる。
同図(a)に示されるマスタ・スレーブ型の安全制御システムに適用する場合、本発明のプログラム開発支援装置10は、安全コントローラ1と各安全I/Oターミナル5とを繋ぐバス型ネットワーク2aに接続することができる。これに対して、同図(b)に示される単独タイプの制御システムに適用する場合、本発明のプログラム開発支援装置10は所定のケーブル2bを介して直結される。こうして、プログラム開発支援装置10にて生成される安全に関する制御プログラムは、各安全コントローラ1で実行可能な形式に変換された後、安全コントローラ1へと送り込まれる。
本発明に係るプログラム開発支援装置の電気的なハードウェア構成を示す概略ブロックズが図3に示されている。図1と図3とを参照して明らかなように、このプログラム開発支援装置10は、図示の例にあっては、ノートパソコンを主体として構成されている。ノートパソコンのハードウェア構成は、当業者にはよく知られているように、CPU11と、入力操作部12と、画像表示部13と、ワークRAM14と、記憶装置15と、通信部16とをシステムバス17で接続して構成されている。
CPU11はマイクロプロセッサを主体として構成されており、当該ノートパソコン全体を統括制御するものである。入力操作部12は、マウスやキーボードなどを主体として構成されており、当該ノートパソコンに対する各種の指令を与えるためのヒューマンマシンインタフェースとして機能するものである。画像表示部13は液晶ディスプレイなどにより構成されており、その画面(スクリーン)13aには、後に図13を参照して詳述するように、本発明に係るプログラミングフィールド301が表示されるようになっている。ワークRAM14は、後述するシステムプログラム、アプリケーションプログラムなどをCPU11が実行する際のワークエリアとして利用される。記憶装置15は、ハードディスクなどで構成されており、その内部には出力イメージメモリ15a、システムメモリ15b、プログラムメモリ15cがそれぞれ配置されている。出力イメージメモリ15aは、本発明に関連して、各種のイメージを画像表示部13のスクリーン13a上に表示させる際の各種のイメージデータを格納するために使用され、システムメモリ15bは、当該ノートパソコンの基本的な機能を構成するためのファームウェア(オペレーティングシステムを含む)を格納するために使用される。プログラムメモリ15cは、当該ノートパソコンで実行されるべき各種のアプリケーションプログラムを格納するために使用される。先に述べたように、出力イメージメモリ15a、システムメモリ15b、プログラムメモリ15cに格納された各種のプログラム並びにデータは、それぞれCPU11が実行する際には、ワークRAM14のワークエリア上に展開されて実行されることはよく知られている通りである。
次に、安全コントローラの電気的なハードウェア構成を示す概略ブロック図が図4に示されている。同図に示されるように、安全コントローラ1の内部には、通信I/F部101と、中央演算部102と、入力端子部104aと、出力端子部104bとが含まれている。
通信I/F部101は、当該安全コントローラ1とネットワーク2a,2bとの間で通信を行う際のインタフェース機能を実現するためのものである。中央演算部102は、当該安全コントローラ1の全体を統括制御するものであり、マイクロプロセッサ、ROM、RAMなどを主体として構成されている。
入力端子部104aには、入力機器3からの信号を受け付けるための複数の入力端子(端子1,端子2,・・・,端子n)が含まれている。一方、出力端子部104bには、出力機器4へと出力信号を送出するための複数の出力端子(端子1,端子2,・・・,端子n)が含まれている。
入力側の端子異常診断部103aは、入力端子部104aに含まれる各入力端子のそれぞれに対応する個別診断部を有している。各個別診断部は、複数の入力機器種別に対応する汎用の診断部として構成されており、この診断部は各入力機器種別に応じたパラメータが設定されることによって、その機種に特化した形態に構築されるように仕組まれている。後述するプログラミング作業において、入力系ファンクションブロックのパラメータとして出現するのは、この端子異常診断部103aを各入力機器種別に特化するためのパラメータのことである。
出力側の端子異常診断部103bもまた、出力端子部104bに含まれる各出力端子に対応する個別診断部を有している。この個別診断部は、複数の出力機器種別に対応する汎用の診断部として構成されており、これに各出力機器に対応するパラメータを設定することによって、その出力機器種別に対応する診断部として特化されるように構成されている。
次に、プログラム開発支援装置10の機能を概念的に示すブロック図が図2に示されている。同図に示されるように、本発明を実現するための構成に着目した場合、プログラム開発支援装置10として必要な機能構成としては、安全プログラムテンプレートリスト10aと、ロジック回路図データ10bと、設定パラメータを作成するためのコンパイラ10cと、コンパイラ10cを介してロジック回路図データ10bから変換された設定パラメータ10dとを挙げることができる。これらの機能構成要素については、後に本発明に係るプログラム開発支援装置の動作を説明する際に、図7〜図9に示される図表、並びに、図5及び図6に示されるフローチャートを参照しながら詳述することとする。
次に、図5及び図6を参照しながら、本発明に係るプログラム開発支援装置の動作について説明する。なお、それらのフローチャートに示されるアプリケーションプログラムについては、先に図3を参照して説明したプログラムメモリ15cに格納されたものである。
図5において、処理が開始されると、安全プログラムテンプレートリストの検索処理(ステップ101)及び検索された安全プログラムテンプレートリストの表示処理(ステップ102)が実行される。その結果、プログラム開発支援装置10を構成するノートパソコンの画面(スクリーン)13aには、図7に示される安全プログラムテンプレートリスト(10a)が表示されることとなる。図7から明らかなように、この安全プログラムテンプレートリスト(10a)内には、複数のテンプレート(テンプレート1,テンプレート2,・・・)が含まれている。図7には、それらのうちの二つのテンプレート(テンプレート1,テンプレート2)のみが示されている。図から明らかなように、各テンプレートには、画面に表示されるべきテンプレートの各列毎に、そこに配置されるべきファンクションブロックの種別名とその種別名により包含される個々のファンクションブロック名のリストとが記述されている。
図5に戻って、この状態において、ユーザは、入力操作部12を構成するマウスやキーボードの操作によって、スクリーン13a上に表示されたテンプレートの一つを選択する(ステップ103)。すると、所定の検索処理が起動されて、図7のテンプレートリストに含まれるテンプレートの一つが抽出され(ステップ104)、こうして選択された安全プログラムテンプレートは、ノートパソコンのスクリーン13a上に表示される(ステップ105)。以上の選択乃至表示処理(ステップ103〜105)を繰り返すことによって、ユーザは、対象となる安全コントローラに適したテンプレートの一つを選択することができる。そして、そのようなテンプレートが見つけ出されたならば、入力操作部12を構成するマウスやキーボードの所定操作によって、そのテンプレートを採用決定する操作を行うことにより(ステップ106YES)、図6に移って、本発明の要部であるところのプログラミング処理(ロジック回路図作成処理)が開始される。
プログラミング処理が開始されると、ノートパソコンのスクリーン13a上に設けられたプログラミングフィールド301には、図11または図12に示される安全プログラムテンプレート200が表示される。それらの図を総合すれば明らかなように、このテンプレート200の全体は、4行(R1〜R4)×6列(C1〜C6)の大きさを有するものであり、その行方向の左端には入力端子列表示201が、また行方向の右端には出力端子列表示203が設けられている。また、安全プログラムテンプレートの1行は、図示例にあっては、入力端子列表示201及び出力端子列表示203の2端子分の幅を有する。
更に重要な点であるが、この安全プログラムテンプレート200には、行(R1〜R4)と列(C1〜C6)とが定義され、且つそれらの行(R1〜R4)と列(C1〜C6)との各交点位置にそれぞれ対応するようにして、24個のブロック配置可能位置(A11〜A46)が定義されている。これらのブロック配置可能位置(A11〜A46)は、所定の水平方向幅と垂直方向幅とを有する横長長方形状の領域で構成されている。一方、後述するように、各ファンクションブロックの外形についても、この各ブロック配置可能位置(A11〜A46)とほぼ同形状に設定されている。そのため、各ブロック配置可能位置(A11〜A46)のそれぞれに、いずれかのファンクションブロック(FB)が配置されると、それらのファンクションブロック(FB)は行方向及び列方向に隙間なく配列されることとなる。
このように、本来安全プログラムテンプレート200は、4行(R1〜R4)×6列(C1〜C6)の大きさを有するものであるが、ユーザに対する視認性を確保できる前提で行方向の幅を設定すると、ノートパソコンのスクリーン13aの水平方向幅をはみ出してしまう。そこで、この例にあっては、図11及び図12に示されるように、安全プログラムテンプレート200の全体は、左側3列部分(C1〜C3)のテンプレート200aと右側3列部分(C4〜C6)のテンプレート200bとに分割されて表示されるように構成されている。これにより、ノートパソコンのスクリーン13a上に表示させた場合にも、行に沿う方向の十分な幅を確保することができ、個々のファンクションブロックの視認性を良好に維持することができる。
もっとも、ノートパソコンに組み込まれた画面スクロール機能を利用すれば、安全プログラムテンプレート200の全体を分割しない状態においても、垂直方向並びに水平方向のスクロールバーを設けることによって、安全プログラムテンプレート200の全ての部分を眺めることが可能である。
加えて、この発明の安全プログラムテンプレート200においては、複数種のファンクションブロック(FB)のそれぞれをプログラミングフィールド301上に配置するに際して、各ファンクションブロック(FB)が、その種別に応じて決められた特定の列(C1〜C6)に配置されるように、各ファンクションブロック(FB)の該当する列への配置を誘導するための仕組みが組み込まれている。
図示例にあっては、この各ファンクションブロックの該当する列への配置を誘導するための仕組みとしては、ユーザ6をして、各ファンクションブロック(FB)を該当する列へと配置するように促すための案内表示、及び配置が予定される以外のファンクションブロック(FB)がその列に配置されることを強制的に排除するための強制排除機能とが採用される。
ここで、上述の案内表示としては、各列のそれぞれに対応する位置に設けられ、且つその列に配置されるべきファンクションブロックの種別を表示するインデックス202−1〜202−6により構成されている。即ち、より具体的には、図11に示されるように左側3列分の安全プログラムテンプレート200aの場合、第1列C1の上端部にはその列に配置可能なファンクションブロックが入力系ファンクションブロックであることを意味するインデックス(「入力」)202−1が、第2列C2の上端部には第2列に配置可能なファンクションブロックが無効化・ファンクションブロックであることを意味するインデックス(「無効化」)202−2が、第3列C3の上端部には第3列に配置可能なファンクションブロックがセット/リセット・ファンクションブロックであることを意味するインデックス(「リセット」)202−3がそれぞれ表示されている。なお、それらの列C1〜C3には、それ以外にも、入出力間導通ファンクション・ブロックや不使用(Not Used)・ファンクションブロックも配置可能とされている。
ここで、当業者にはよく知られているように、入力系ファンクションブロックとしては、セーフティ非常停止スイッチ・ファンクションブロック(FB11)、セーフティライトカーテン・ファンクションブロック(FB12)、セーフティリミットスイッチ・ファンクションブロック(FB13)、セーフティドアスイッチ・ファンクションブロックが含まれる。同様にして、入力無効化ファンクションブロックとしては、論理和(OR)演算・ファンクションブロック(FB21)、論理積並びに論理和(AND+OR)・ファンクションブロック(FB22)などが含まれる。更に、同様にして、セット/リセット・ファンクションブロックとしては、マニュアルリセット・ファンクションブロック(Low−High−Low信号)(FB31)、マニュアルリセット・ファンクションブロック(Rising Edge信号)が含まれる。
そのため、それらのファンクションブロックをいずれかの列に配置しようとするユーザは、配置しようとするファンクションブロックの名称と各列C1〜C3の上端部に表示されるインデックス202−1〜202−3の表示とを照らし合わせることによって、そのファンクションブロックを適切な列に配置するように促されるから、結果として、個々のファンクションブロックは、その種別に応じて決められた最適な列に配置されるように自動的に誘導されることとなる。
同様な誘導する仕組みは、図12に示されるように、右側3列部分の安全プログラムテンプレート200bにも適用されている。即ち、図12に示されるように、第4列C4の上端部にはその列に配置可能なファンクションブロックが出力条件ファンクションブロックであることを意味するインデックス202−4が、第5列C5の上端部には、その列に配置可能なファンクションブロックが外部出力機器モニタリング(EDM)・ファンクションブロックであることを意味するインデックス202−5が、第6列C6の上端部には、その列に配置可能なファンクションブロックが端子モード・ファンクションブロックであることを意味するインデックス202−6がそれぞれ設けられている。そのため、この右側3列分の安全プログラムテンプレート200bにあっても、今まさに選択されていずれかの列に配置されようとするファンクションブロックの名称と各列に表示されたインデックス202−4〜202−6とを照らし合わせることによって、各ユーザはそのファンクションブロックが適切な列に配置されるように促され、結果として、各ファンクションブロックはその種別に応じて予め決められた列へと配置されるように誘導されることとなる。
一方、この安全プログラムテンプレートにおいては、先に説明したように、各ファンクションブロックの該当する列への配置を誘導するための仕組みとして、配置が予定される以外のファンクションブロックがその列に配置されることを強制的に排除するための強制排除機能が設けられている。
即ち、図13に示されるように、今仮に、第2行(R2)と第2列(C2)とで定義されるブロック配置可能位置[A22]に何らかのファンクションブロックを配置するものとすれば、例えばマウスによりカーソルをそのブロック配置可能位置[A22]へ移動させた後、これをクリック操作すれば、その安全テンプレートに重なるようにして、その列(C2)に配置可能な一連のファンクションブロック(FB01,FB21,FB22)を含むメニューウィンドウ302が開かれる。そして、このメニューウィンドウ302が開かれた状態において、メニューウィンドウ302に含まれるファンクションブロック(FB01,FB21,FB22)のいずれかを選択すれば、その選択されたファンクションブロック(この例ではFB21)が、選択されたブロック配置可能位置[A22]に配置されることとなる。このように、いずれかの列(C1〜C3)をカーソルで選択すれば、その選択と同時にメニュー302が開かれ、そのメニュー302にはカーソルが置かれた列(C2)に配置可能なファンクションブロックのみが表示され、しかもそれらのファンクションブロックの中から選択された場合に限り、選ばれた列へのファンクションブロックの配置が可能となるのである。
そのため、このようなメニュー提示が行われることによって、ユーザは知らず知らずのうちに、各列(C1〜C3)のそれぞれに、適切なファンクションブロックを配置するように強制的に誘導されるから、そのため、従前のように、選択されたファンクションブロックを誤って信号経路上の不適切な位置に配置するといったプログラミングミスがなくなり、熟練者のみならず、誰でも容易に、この種の安全コントローラにおける制御プログラムを誤りなく作成することが可能となるのである。
このようにして安全プログラムテンプレートによるサポートの下に作成されたロジック回路図の一例が図14及び図15にそれぞれ示されている。それらの図から明らかなように、このロジック回路図は、行方向に沿って入力側から出力側へと延びる信号経路と、その信号経路上の各列に対応する位置に配置されるファンクションブロック(FB)とから構成されている。そして、各列(C1〜C6)の上部にはその列に配置可能なファンクションブロックを意味するインデックス202−1〜202−6が設けられている。そのため、完成されたロジック回路図とそれらのインデックス202−1〜202−6とを照らし合わせることによって、チェックリストを使用する要領で、各ファンクションブロック種別毎に、各信号経路に配置されたファンクションブロックを確認することができる。そのため、この確認作業において、対象となる信号経路上のその列に対応する位置にいずれのファンクションブロックも存在しなければ、先ず、それを以て何らかのファンクションブロックの置き忘れを疑うことができ、このように各列毎に意識を集中して検証を行うことができるため、第1従来例や第2従来例に示された場合とは異なり、完成したロジック回路図を容易且つ確実に検証することができる。
このとき、元々各信号経路上のそれぞれの列には、その列に割り当てられたファンクションブロックしか配置できないような仕組みとされているため、本発明のテンプレートを使用して作成されたロジック回路図に関する限り、ファンクションブロックが誤って不適切な位置に配置されていたり、或いは不適切な順序で配置されているということは考えにくく、そのため上述した各列に集中した検証作業を行うだけで、誤りのないロジック回路図を誰でも容易に作成することができるようになる。
こうして作成されたロジック回路図は、図8に示されるように、ロジック回路図データ(10b)としてプログラム開発支援装置内に保存されている(図2参照)。そのため、以後、予め用意されたコンパイラ10cを作動させれば、こうしてロジック回路図作成に伴って生成された回路図データ10bは、そのまま安全コントローラ1で実行可能な設定パラメータ10dに変換される。然る後、この設定パラメータ10dは、図2に示されるように、通信回線又は可搬型記録媒体を介して安全コントローラ1側へとダウンロードされる。これにより、安全コントローラ1への制御プログラムの組み込みが完了するわけである。以上の処理が、図6のフローチャートにおいて、ステップ108〜111に説明されている。
このように、本発明によれば、ノートパソコンの記憶装置15のプログラムメモリ15cには、所定のアプリケーションプログラムが組み込まれているため、ノートパソコンで構成されるプログラム開発支援装置10では、このアプリケーションプログラムを読み出してワークRAM14上で実行することにより、図5及び図6のフローチャート、並びに、図11〜図15で示される動作が実行される結果、ノートパソコンのスクリーン13aのプログラミングフィールド上には、左側3列分の安全プログラムテンプレート200aまたは右側3列分の安全プログラムテンプレート200bが表示されるから、それらのテンプレートに表示されたインデックス202及びメニュー302の表示制限機能を介することによって、熟練者のみならず初心者においても、この種のプログラミングに必要なロジックシンボル図を簡単に且つ誤りなく作成することが可能となるのである。
なお、以上の実施形態においては、ノートパソコンのスクリーン13aの垂直方向を上下方向として行と列とを定義したが、これに代えてスクリーン13aの水平方向を上下として行と列とを定義(即ち、90度回転)しても良いことは勿論である。
また、以上の実施形態においては、安全プログラムテンプレート200の全体を、左側3列分のテンプレート200aと右側3列分のテンプレート200bとに分けて、別々の画面に表示するようにしたが、もしも本発明のアプリケーションプログラムが組み込まれるコンピュータが十分な大きさのスクリーンを有するものであれば、安全プログラムテンプレート200の全体を一画面で映し出すようにしてもよいことは勿論である。
また、以上の実施形態においては、配置対象となるファンクションブロックとそれが配置されるべき列とを関連付けるための手段として、各列の上部にその列に配置されるべきファンクションブロックを意味するインデックスを表示するようにしたが、これに代えて、各ファンクションブロックの種別毎にそのファンクションブロックの表示色を異ならせる一方、テンプレート上の各列にはその列に配置されるべきファンクションブロックと同一の色を付するようにしても同様な関連付けを行い、ユーザの心理に訴えかけることによって、各ブロックを適切な列へと誘導することができる。
また、以上の関連付け以外にも、例えば、各ファンクションブロックの輪郭形状をその種別毎に異ならせる一方、テンプレート上の行と列とで定義される各位置にはその輪郭と同様なブロック配置領域を設定することによっても、そのような関連付けを行うことができる。
また、以上の実施形態においては、予め決められた種別のファンクションブロック以外の種別のファンクションブロックが、各テンプレート上の列に配置されることを排除するための手段として、メニュー方式を利用したが、これに代えて、表示画面の一部に選択対象となる一連のファンクションブロックを配置する一方、これをマウスのドラッグアンドドロップ手法でテンプレート上の各列へと移動可能に構成し、一方各列の側では、ドラッグアンドドロップ手法で運ばれたファンクションブロックの種別と自己の列に割り当てられたファンクションブロック種別とを照合し、それらが不一致な場合には、ドロップ操作が行われても、その列にファンクションブロックがドロップ不能なように仕組むことによっても同様な強制排除機能を実現することができる。この場合、ドラッグアンドドロップ操作で、ドロップした瞬間に、それまで移動乃至運ばれてきたファンクションブロックは、元の配置位置へと戻ってしまい、どうしても目的とする列へと持ち込むことができないようになるのである。
なお、以上の実施形態においては、表示スクリーンの水平方向幅が、目的とするテンプレートの水平方向幅に比較して短いことから、左右方向への二分割表示を採用したが、対象となる安全コントローラがサポートする端子数が16点、32点、64点といったように増加する場合は、画面の垂直方向へそれらは如何様にも割り当てることができ、その場合には垂直方向のスクロールバーを操作することによって、上下方向へと細長いテンプレートを適宜スクロールさせながら、任意の垂直方向位置にある列方向へ延びる信号経路上に、同様にして所望のファンクションブロックを配置することができることは言うまでもない。
また、以上の実施形態においては、この種の安全コントローラの分野における当業者に周知乃至公知のファンクションブロック(入力系ファンクションブロック、無効化・ファンクションブロック、セット/リセット・ファンクションブロック、出力条件ファンクションブロック、外部出力機器モニタリング(EDM)・ファンクションブロック、端子モード・ファンクションブロックなどに適用したが、本発明の適用はこれに限定されるものであはなく、今後将来的に、様々な種別のファンクションブロックが出現した場合には、それらのファンクションブロックに合わせて安全プログラムテンプレート上の列を増加させればよいことは勿論である。
なお、以上の説明において、各入力系ファンクションブロックには、対応する入力機器を暗示するシンボル図形が、図10に示されるように付されているため、今後入力機器の種別が増大した場合にも、ファンクションブロックに付されたシンボル表示を頼りに、それら入力機器に対応する入力系ファンクションブロックの種別を直感的に誰でも容易に把握することができるという利点もある。