説明

安全コントローラのプログラム開発支援装置

【課題】 ファンクションブロックを誤った位置に配置したり、誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することができ、しかも完成後のプログラムにおける出力条件ファンクションブロックのパラメータ検証も容易とすること。
【解決手段】 プログラミングフィールドへのファンクションブロックの配置は、ブロック配置可能位置が縦横に定義されると共に、行方向の一端側は入力端子側として又他端側は出力端子側として定義されたファンクションブロック配置用のテンプレートによる案内にしたがって行われ、さらに出力条件ファンクションブロックを該当する列に配置するときに必要とされる固有パラメータである入力信号の設定は、メニュー表示された入力信号リストの中から所望の入力信号を選択する操作を介して実行される、ように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像表示器のスクリーン上のプログラミングフィールドに、所望の制御仕様に対応するロジック回路図を記述するための一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるようにした安全(セーフティ)コントローラのプログラム開発支援装置に関する。
【背景技術】
【0002】
安全コントローラは、一般的なプログラマブルコントローラ(PLC)に類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵することにより、その制御において高度な安全性および信頼性を確保したものであり、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全な制御を行なうような機能(フェールセーフ機能)を備えている。
【0003】
ここに言う安全は、より具体的には、規格化されている安全基準を含む意味である。安全規格には、例えばIEC61508やEN規格などがある。IEC61508(プログラム可能な電子システムの機能安全に関する国際電気標準委員会)では、時間あたりの危険故障確立を(失敗確立:Probability of Failure per Hour)を定義し、この確立によってSILのレベル(Safety Integrity Level)を4段階に分類している。また、EN規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけされていて、EN954−1では5つの安全カテゴリにて規定されている。この明細書でいう安全コントローラ、安全I/Oターミナル等は、このような安全基準のいずれかに対応したものである。
【0004】
安全コントローラ用の制御プログラムを作成するための従来のプログラム開発支援装置(日本国、オムロン株式会社製セーフティネットワークコントローラ)におけるロジック回路図表示例が図26に示されている。
【0005】
このプロラム開発支援装置(第1従来例)は、画像表示器のスクリーン上のプログラミングフィールド801に、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロック(FB81〜FB85)を順次に配置し、かつ各ファンクションブロック毎に必要な固有パラメータ(図示せず)を設定(この例では、配線描画のためのマウスによるドラッグ操作で、パラメータが自動設定される)することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるように構成されている。
【0006】
なお、図において、FB81はセーフティ非常停止スイッチ・アプリケーション用のファンクションブロック、FB82はセーフティライトカーテン・アプリケーション用のファンクションブロック、FB83はセット/リセット・アプリケーション用のファンクションブロック、FB84は論理積演算・アプリケーション用のファンクションブロック、FB85は外部出力機器モニタリング・アプリケーション用のファンクションブロックである。また、図において、T811,T812はセーフティ非常停止スイッチの2系統の出力信号が入力される一対の入力端子表示、T821,T822はセーフティライトカーテンの2系統の出力信号が入力される一対の入力端子表示、T83はリセットスイッチの出力信号が入力される入力端子表示、T84は外部出力機器モニタリング信号が入力される入力端子表示である。
【0007】
そして、ユーザによりプログラミングフィールド801上に描かれたロジック回路に対応して作成される回路図データ(図示せず)は、所定のコンパイル処理が施されて、安全コントローラが直接に解読実行可能な設定ファイルに変換される。こうして得られた実行用の設定ファイルは、対象となる安全コントローラへと、通信を介して又は可搬型記録媒体を介して、インストールされる。
【0008】
上述の第1従来例によれば、プログラミングフィールド801上には、ファンクションブロックや端子表示(以下、回路素子と言う)の置き場所が固定されていないから、所望の回路素子をプログラミングフィールド801上の任意の位置に配置することができ、回路素子の配置自由度が高いと言う利点がある。その反面、限られた大きさのプログラミングフィールド801内に、所望の回路素子の全てを収容しかつそれらの回路素子を全体の回路動作が理解しやすく配置(レイアウト)するためには、ある種のデザイン上のセンス乃至適性が必要とされ、それらのセンスや適性に劣る者にとっては却って使い勝手が悪いと言う欠点がある(非特許文献1参照)。
【0009】
安全コントローラ用の制御プログラムを作成するための従来の他のプログラム開発支援装置(独国、PILZ社製)におけるロジック回路図表示例が図27に示されている。
【0010】
このプロラム開発支援装置(第2従来例)も、画像表示器のスクリーン上のプログラミングフィールド901に、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロック(FB91〜FB95)を順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータ(図示せず)を設定(この例でも、配線描画のためのマウスによるドラッグ操作で、パラメータが自動設定される)することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるされるように構成されている。
【0011】
加えて、この第2従来例にあっては、プログラミングフィールド901へのファンクションブロックの配置は、プログラミングフィールド901上に表示されるファンクションブロック配置用のテンプレート900による案内にしたがって行われ、このテンプレート900には、スクリーン上の垂直方向を基準方向として、複数の行(R1,R2,R3・・・)と複数の列(C1,C2,C3・・・)とが定義される共に、行(R)方向の一端(左端)は入力側として他端(右端)は出力側として定義され、かつそれらの行(R1,R2,R3・・・)と列(C1,C2,C3・・・)との各交点位置にそれぞれ対応するようにして、複数のブロック配置可能位置(A11〜A33)が定義されている。
【0012】
なお、図において、FB91はセーフティ非常停止スイッチ・アプリケーション用のファンクションブロック、FB92はセーフティライトカーテン・アプリケーション用のファンクションブロック、FB93は論理積演算・アプリケーション用のファンクションブロック、FB94はセット/リセット・アプリケーション用のファンクションブロック、FB95は外部出力機器モニタリング・アプリケーション用のファンクションブロックである。また、図において、T911,T912は非常停止スイッチの2系統の出力信号が入力される一対の入力端子表示、T921,T922はセーフティライトカーテンの2系統の出力信号が入力される一対の入力端子表示、T93はリセットスイッチの出力信号が入力される入力端子表示、T94は外部出力機器モニタリング信号が入力される入力端子表示である。
【0013】
そして、ユーザによりプログラミングフィールド901上に描かれたロジック回路に対応して作成される回路図データは、第1従来例と同様に所定のコンパイル処理が施されて、安全コントローラが直接に解読実行可能な設定ファイルに変換される。こうして得られた実行用の設定ファイルは、対象となる安全コントローラへと、通信を介して又は可搬型記録媒体を介して、インストールされる。
【0014】
上述の第2従来例によれば、プログラミングフィールド901上には、回路素子の置き場所が予め定義されているから、所望の回路素子を選択したのち、その回路素子を例えばマウスのドラッグ操作で、予め決められた置き場所の近辺に近づけさえすれば、ドラッグされた回路素子は予め定義された置き場所へと自動的に誘導されて配置されるから、レイアウト上のデザイン上のセンスや適性を有しない者であっても、選択された複数の回路素子をプログラミングフィールド901内に要領よく配置することができ、第1従来例の場合のように、選択された回路素子のレイアウトに頭を悩ますことがないと言う利点がある(非特許文献2)。
【非特許文献1】オムロン株式会社のカタログ(URL http://www.fa.omron.co.jp/product/32.htmlに掲載)
【非特許文献2】PILZ社カタログ(URL http://www.pilz.jp/p_saferelay7.htmに掲載)
【発明の開示】
【発明が解決しようとする課題】
【0015】
ところで、この種のプログラム開発支援装置において、所望の安全制御仕様に対応するロジック回路図を生成するに際しては、単に入出力間の信号論理のみならず、安全コントローラに特有とされる様々な事情に配慮しつつ、必要なファンクションブロックをロジック回路図上の必要な位置に適切に配置せねばならない。
【0016】
例えば、1もしくは2以上の入力端子から得られる入力信号が所定の論理値(危険)を示すときに、1もしくは2以上の出力端子から所定論理値(危険源の停止)を有する出力信号を送出するような論理回路図を作成しようとする場合、これが安全仕様でない通常のコントローラ(PLC等)であれば、それらの入出力間論理に相当する論理演算用のファンクションブロックを入出力端子列間に配置するだけで充分あろう。
【0017】
しかし、これが安全仕様のコントローラとなると、些か、事情は異なる。すなわち、安全仕様のコントローラの場合には、入力端子から何らかの危険を示す入力信号が得られたとしても、その入力信号は、危険を検知する入力機器(セーフティ非常停止スイッチ、セーフティライトカーテン、セーフティリミットスイッチ、セーフティドアスイッチ等々)それ自体の故障等に起因するものである可能性もあるため、そのような入力信号を直ちに取り込んで必要な論理演算に供することはできない。そのため、論理演算用のファンクションブロック(例えばANDファンクションブロック)の少なくとも前段には、各入力機器毎に適切な故障診断機能等が組み込まれた入力系ファンクションブロックを配置せねばならない。
【0018】
また、そのような入力系ファンクションブロック経由で何らかの危険を示す入力信号が得られたとしても、その入力信号は、調整やメンテナンス等のために、危険を承知で作業員が危険領域に侵入したことに起因するものである可能性もあるため、そのような入力信号を直ちに取り込んで必要な論理演算に供することができない場合もある。そのため、論理演算用のファンクションブロックの少なくとも前段には、調整時やメンテナンス時等に相当する所定の条件が成立するときには、入力信号を無効化する機能を有する無効化・ファンクションブロックを配置せねばならない場合もある。
【0019】
また、そのような入力系ファンクションブロック、及び/又は、無効化・ファンクションブロック経由で何らかの危険を示す入力信号が得られた場合、危険を示す状態から安全を示す状態への復帰と同時に出力信号の状態を復帰させてはいけないとする安全法規上の理由から、そのような入力信号を直ちに取り込んで必要な論理演算に供することができない場合(特に、瞬時動作/瞬時復帰・接点からの入力信号の場合)もある。そのため、論理演算用のファンクションブロックの少なくとも前段には、入力信号の危険状態を保持するセット機能と、危険状態の保持を解除するリセット機能と、リセット条件を規定する機能とを有するセット/リセット・ファンクションブロックを配置せねばならない場合もある。
【0020】
また、出力機器それ自体にも故障の可能性があることを考慮すると、論理演算用の出力条件ファンクションブロックの出力信号を無条件で出力機器へと送出することは必ずしも適当ではない。そのため、出力条件ファンクションブロックの少なくとも後段には、各出力機器毎に適切な故障診断機能等が組み込まれた外部出力機器モニタリング・ファンクションブロック(例えば、EDM・ファンクションブロック)を配置せねばならない。
【0021】
さらに、出力機器のそれぞれには固有の動作遅れ時間があることを考慮すると、複数の出力端子のそれぞれから同一のタイミングで出力信号を送出することが必ずしも適当でない場合もある。そのため、出力条件ファンクションブロックの少なくとも後段には、出力信号のオンタイミング、及び/又は、オフタイミングを遅らせる機能を有する端子モード・ファンクションブロックを配置せねばならない場合もある。
【0022】
このように、ロジック回路図を介在する安全コントローラのプログラミングにおいては、入力端子から出力端子へ至る信号経路上の必要な位置に、必要なファンクションブロックを適切に配置する作業がユーザに対して要求される。この作業は、上述の安全コントローラ特有の事情を十分に考慮してはじめて適切に成し得るものであるから、安全コントローラのプログラミングに不慣れな初心者にとってはなかなか容易なことではなく、しばしば必要なファンクションブロックの欠落を生じたり、必要なファンクションブロックは存在するものの、配置される位置が誤っている等のプログラミングミスが生ずる。
【0023】
殊に、上述の第1、第2従来例にあっては、プログラミングフィールド上の各ファンクションブロックが配置される位置とその位置に配置されるファンクションブックの種別との間には厳密な相関は何ら存在しないから、本来配置されるべき複数のファンクションブロックのうちのいずれかが、誤って欠落していたり、配置される位置が誤っていたとしても、そのことを各ファンクションブロックのレイアウトから直ちに発見することは困難である。
【0024】
そのため、それらの従来例において、そのようなプログラミングミスを発見するためには、具体的な制御の事情を頭に浮かべながら、入力端子から出力端子へと信号経路を順に辿ると言う地道な検証作業が必要となり、このような検証作業の煩雑さがこの種の安全コントローラの普及を阻害する一因ともなっている。
【0025】
安全コントローラのプログラミングに使用されるファンクションブロックの種類は、安全コントローラの普及に連れて益々増加することが予想されるため、より多数の種別のファンクションブロックが存在するであろう将来の状況下においても、プログラミングミスが生じ難く、かつプログラミングミスが生じた場合には、そのことを容易に発見することが可能な安全コントローラのプログラム開発支援装置が要望されている。
【0026】
加えて、上述の第1、第2従来例にあっては、各ファンクションブロック間の接続関係を規定する固有パラメータの設定は、該当するファンクションブロック間を結ぶ信号線の描画操作を介して行うように仕組まれているため、完成されたプログラム中の出力条件ファンクションブロックの設定パラメータをロジック回路図を頼りに検証しようとすると、完成されたロジック回路図上の配線と安全入出力機器対応表(図28参照)上の入出力関係とを照合すると言う煩雑な操作を強いられることから、検証に手間取ると言う問題点もある。
【0027】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ファンクションブロックを誤った位置に配置したり、誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することができ、しかも完成後のプログラムにおける出力条件ファンクションブロックのパラメータ検証も容易な安全コントローラのプログラム開発支援装置を提供することにある。
【0028】
この発明のさらに他の目的並びに作用効果については、明細書の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【0029】
上述の技術的な課題は、以下の構成を有する安全コントローラのプログラム開発支援装置により解決することきができる。
【0030】
すなわち、この安全コントローラのプログラム開発支援装置は、画像表示器のスクリーン上のプログラミングフィールドに、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロックを順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータを設定することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるように動作する処理部を有した基本構成を有している。
【0031】
そして、このプログラム開発支援装置は、上述の基本構成に加えて、前記プログラミングフィールドへのファンクションブロックの配置は、当該プログラミングフィールド上に表示され、かつ行と列との各交叉位置にそれぞれ対応するようにして、ブロック配置可能位置が定義されると共に、行方向の一端側は入力端子側として又他端側は出力端子側として定義されたファンクションブロック配置用のテンプレートによる案内にしたがって行われるようになっている。
【0032】
さらに、このプログラム開発支援装置は、前記ファンクションブロックの1つである出力条件ファンクションブロックを該当する列に配置するときに必要とされる固有パラメータである入力信号の設定は、メニュー表示された入力信号リストの中から所望の入力信号を選択する操作を介して実行されるよいになっている。
【0033】
このような動作をする処理部を備えた構成によれば、前記プログラミングフィールドへのファンクションブロックの配置は、当該プログラミングフィールド上に表示され、かつ行と列との各交叉位置にそれぞれ対応するようにして定義されたブロック配置可能位置に案内されるから、各ファンクションブロックは自動的に縦横整列されて配置され、ユーザはファンクションブロックのレイアウトに頭を悩ますことがない。
【0034】
加えて、前記ファンクションブロックの1つである出力条件ファンクションブロックを該当する列に配置するときに必要とされる固有パラメータである入力信号の設定は、メニュー表示された入力信号リストの中から所望の入力信号を選択する操作を介して実行されるようになっているため、プログラム完成後の検証に際しては、ロジック回路図上の配線を追わねばならなかった従来例とは異なり、この種のプログラミングに先立って通常作成される安全入出力機器対応表とメニュー表示される入力信号リストとを照合することにより、誰でも容易に行うことが可能となる。
【0035】
このとき、前記入力信号リストのメニュー表示を、画像表示器のスクリーン上に開かれたメニューウィンドウ内に設定対象となる入力信号名を配列することにより行なうと共に、所望の入力信号の選択については、選択確認手段を介して行われるようにすれば、入力信号の選択操作、並びに、プログラム完成後の検証作業が一層容易となる。
【0036】
また、前記入力信号リストのメニュー表示に使用される入力信号データを、前記ファンクションブロックの1つである入力系ファンクションブロックを該当する列に配置する際に生成された入力機器テーブルを参照することにより取得するようにすれば、メニュー表示のために、わざわざ別途に入力信号データを登録する作業が不要となる。
【0037】
なお、前記入力信号リストのメニュー表示の態様については、それ以外にも様々な態様が可能であることは言うまでもない。例えば、入力端子数が16点、32点、64点と言ったように多くなると、それらの入力端子数に対応して選択対象となる入力信号数も増大するから、そのような場合には、それらの入力信号を幾つかのグループ毎に何回かに分けてメニュー表示するようにしてもよい。
【0038】
また、そのような入力点数が多数に及ぶときに、対象となる出力条件ファンクションブロックと関係する入力信号の範囲がある程度論理的に推測されるのであれば、可能性の高いグループに属する入力信号から優先的に、又はそのようなグループに属する入力信号に絞り込んで、メニュー表示する等のように、AI機能を持たせれば、効率よく選択操作を行わせることができる。
【0039】
また、メニュー表示される入力信号リスト中の入力信号表示については、入力信号を示す名称、記号等のほか、対象となる入力端子の名称、記号等を使用してもよく、さらに、表示画面に余裕があることが条件ではあるが、比較対照となる安全入出力機器対応表の一般的なフォームが既知であれば、より一層照合が容易なように、各出力条件ファンクションブロック毎の設定済み入力信号データと各出力端子に割り当てられた安全出力機器データとに基づいて、逆アセンブリ処理を実行することにより、安全入出力機器対応表をグラフィカルに表示するようにしてもよいであろう。
【発明の効果】
【0040】
この発明によれば、ファンクションブロックを誤った位置に配置したり、誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することができ、しかも完成後のプログラムにおける出力条件ファンクションブロックのパラメータ検証も容易な安全コントローラのプログラム開発支援装置を提供することができる。
【発明を実施するための最良の形態】
【0041】
以下に、この発明に係る安全コントローラのプログラム開発支援装置の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【0042】
本発明に係るプログラム開発支援装置の対象となる安全コントローラを含む安全制御システムを示す概念図が図1に示されている。同図(a)に示される安全制御システムは、1台の安全コントローラ1と1若しくは2台以上の安全I/Oターミナル5とをバス型ネットワーク2aにて接続して構成されている。尚、同図(a)に示される安全制御システムにおいては、安全コントローラ1はマスタとして、安全I/Oターミナル5はスレーブとして機能する。
【0043】
これらの安全コントローラ1及び安全I/Oターミナル5には、それぞれ入力機器3及び出力機器4が接続される。入力機器3としては、セーフティ非常停止スイッチ、セーフティライトカーテン、セーフティリミットスイッチ、セーフティドアスイッチなどを挙げることができる。また、出力機器4としては、セーフティリレー、セーフティコンタクタなどを挙げることができる。
【0044】
同図(a)に示されるマスタ・スレーブ型の安全制御システムに適用する場合、本発明のプログラム開発支援装置10は、安全コントローラ1と各安全I/Oターミナル5とを繋ぐバス型ネットワーク2aに接続することができる。これに対して、同図(b)に示される単独タイプの制御システムに適用する場合、本発明のプログラム開発支援装置10は所定のケーブル2bを介して直結される。こうして、プログラム開発支援装置10にて生成される安全に関する制御プログラムは、各安全コントローラ1で実行可能な形式に変換された後、安全コントローラ1へと送り込まれる。
【0045】
本発明に係るプログラム開発支援装置の電気的なハードウェア構成を示す概略ブロックズが図3に示されている。図1と図3とを参照して明らかなように、このプログラム開発支援装置10は、図示の例にあっては、ノート型パソコンを主体として構成されている。
【0046】
ノート型パソコンのハードウェア構成は、当業者にはよく知られているように、CPU11と、入力操作部12と、画像表示部13と、ワークRAM14と、記憶装置15と、通信部16とをシステムバス17で接続して構成されている。
【0047】
CPU11はマイクロプロセッサを主体として構成されており、当該ノート型パソコン全体を統括制御するものである。入力操作部12は、マウスやキーボードなどを主体として構成されており、当該ノート型パソコンに対する各種の指令を与えるためのヒューマン・マシン・インタフェースとして機能するものである。
【0048】
画像表示部13は液晶ディスプレイなどにより構成されており、その画面(スクリーン)13aには、後に図14等を参照して詳述するように、本発明に係るプログラミングフィールド201が表示されるようになっている。ワークRAM14は、後述するシステムプログラム、アプリケーションプログラムなどをCPU11が実行する際のワークエリアとして利用される。
【0049】
記憶装置15は、ハードディスクなどで構成されており、その内部には出力イメージメモリ15a、システムメモリ15b、プログラムメモリ15cがそれぞれ配置されている。出力イメージメモリ15aは、本発明に関連して、各種のイメージを画像表示部13のスクリーン13a上に表示させる際の各種のイメージデータを格納するために使用され、システムメモリ15bは、当該ノートパソコンの基本的な機能を構成するためのファームウェア(オペレーティングシステムを含む)を格納するために使用される。プログラムメモリ15cは、当該ノートパソコンで実行されるべき各種のアプリケーションプログラムを格納するために使用される。
【0050】
先に述べたように、出力イメージメモリ15a、システムメモリ15b、プログラムメモリ15cに格納された各種のプログラム並びにデータは、それぞれCPU11が実行する際には、ワークRAM14のワークエリア上に展開されて実行されることはよく知られている通りである。
【0051】
次に、安全コントローラ1の電気的なハードウェア構成を示す概略ブロック図が図4に示されている。同図に示されるように、安全コントローラ1の内部には、通信I/F部101と、中央演算部102と、入力端子部104aと、出力端子部104bとが含まれている。
【0052】
通信I/F部101は、当該安全コントローラ1とネットワーク2a,2bとの間で通信を行う際のインタフェース機能を実現するためのものである。中央演算部102は、当該安全コントローラ1の全体を統括制御するものであり、マイクロプロセッサ、ROM、RAMなどを主体として構成されている。
【0053】
入力端子部104aには、入力機器3からの信号を受け付けるための複数の入力端子(端子1,端子2,・・・,端子n)が含まれている。一方、出力端子部104bには、出力機器4へと出力信号を送出するための複数の出力端子(端子1,端子2,・・・,端子n)が含まれている。
【0054】
入力側の端子異常診断部103aは、入力端子部104aに含まれる各入力端子のそれぞれに対応する個別診断部を有している。各個別診断部は、複数の入力機器種別に対応する汎用の診断部として構成されており、この診断部は各入力機器種別に応じたパラメータが設定されることによって、その機種に特化した形態に構築されるように仕組まれている。後述するプログラミング作業において、入力系ファンクションブロックのパラメータとして出現するのは、この端子異常診断部103aを各入力機器種別に特化するためのパラメータのことである。
【0055】
出力側の端子異常診断部103bもまた、出力端子部104bに含まれる各出力端子に対応する個別診断部を有している。この個別診断部は、複数の出力機器種別に対応する汎用の診断部として構成されており、これに各出力機器に対応するパラメータを設定することによって、その出力機器種別に対応する診断部として特化されるように構成されている。
【0056】
次に、プログラム開発支援装置10の機能を概念的に示すブロック図が図2に示されている。同図に示されるように、本発明を実現するための構成に着目した場合、プログラム開発支援装置10として必要な機能構成要素としては、安全入力機器テーブル10aと、ロジック回路図データ10bと、設定パラメータを作成するためのコンパイラ10cと、コンパイラ10cを介してロジック回路図データ10bから変換された設定パラメータ10dとを挙げることができる。これらの機能構成要素については、後に本発明に係るプログラム開発支援装置の動作を説明する際に、図8〜図13に示される図表、並びに、図5〜図7に示されるフローチャートを参照しながら詳述することとする。
【0057】
次に、図5〜図7を参照しながら、本発明に係るプログラム開発支援装置の動作について説明する。なお、それらのフローチャートに示されるアプリケーションプログラムについては、先に図3を参照して説明したプログラムメモリ15cに格納されたものである。また、それらのフローチャートに示される動作については、処理部に相当するCPU11によって統括して実行処理される。
【0058】
プログラム開発支援装置のソフトウェア構成を示すフローチャート(その1〜その3)が図5〜図7に示されている。
【0059】
図5において、処理が開始されると、まず、安全入出力端子の設定のためのユーザアクションを受け付ける処理が実行される(ステップ101)。ここで、ユーザアクションとしては、プログラム開発支援装置10を構成するノート型パソコンにおける所定のキー入力操作やマウス操作等を挙げることができる。このユーザアクションによって、安全入出力端子に関する各種のデータが設定される。こうして得られた安全入出力端子に関する各種のデータは、ワークRAM14に格納される(ステップ102)。
【0060】
入力側テンプレートにおけるファンクションブロック(以下、「FB」ともいう)配置開始初期の画面説明図が図14に、出力側テンプレートにおけるFB配置設定開始初期の画面説明図が図19にそれぞれ示されている。
【0061】
図14に示されるように、プログラム開発支援装置10を構成するノート型パソコンの画像表示部13のスクリーン13aには、入力用のセーフティロジックウィザードのためのウィンドウ200が開かれる。ここで、「セーフティロジックウィザード」とは、安全コントローラ用の制御プログラムに相当するロジック回路図作成のための各種ユーザサポート機能を総称するものである。
【0062】
こうして開かれたウィンドウ200内には、横長長方形状のプログラミングフィールド201が定義されており、このプログラミングフィールド201には本発明の要部であるところの入力用テンプレート202が表示される。
【0063】
この入力側テンプレート202には、それぞれスクリーンの水平方向へと延びる行(R1,R2,R3,・・・)とスクリーンの垂直方向へ延びる列(C1,C2,C3)との各交点に対応するようにして、複数のブロック配置可能位置が設けられている。また、入力側テンプレート202の左側縁部には、各行(R1,R2,R3,R4・・・)に対応させて、その行の入力端子に関する情報が表示されている。
【0064】
この例では、第1行(R1)は、2つの入力端子[IN0/1]に割り当てられており、それらの入力端子は、二重化仕様のセーフティ非常停止スイッチからの一対のNC(ノーマルクローズ)信号を受け付けるように設定されている。また、第2行(R2)は、2つの入力端子[IN2/3]に割り当てられており、それらの入力端子は、二重化仕様のセーフティドアスイッチからの一対のNC信号を受け付けるように設定されている。また、第3行(R3)は、1個の入力端子[IN4]に割り当てられており、この入力端子は、非二重化仕様のドアスイッチからの信号を受け付けるように設定されている。
【0065】
これらの入力端子設定に対応するようにして、入力側テンプレート202の第1列(C1)には、各行(R1,R2,R3)の端子設定に対応するようにして、それぞれの端子に関する自己診断機能を実現するためのファンクションブロックが配置される。
【0066】
すなわち、第1列(C1)の第1行(R1)に対応するブロック配置可能位置(横長長方形の小領域)には、セーフティ非常停止スイッチファンクションブロック(FB11)が、第2行に対応するファンクションブロック配置可能位置には、二重化仕様のセーフティライトカーテンファンクションブロック(FB12)が、第3行(R3)に相当するファンクションブロック配置可能位置には、非二重化仕様のセーフティライトカーテンファンクションブロック(FB13)がそれぞれ配置されている。
【0067】
そして、図5のフローチャートにおいて、ステップ101,102の処理が実行されると、以上説明した入力端子の設定並びにファンクションブロックの配置が実行される。
【0068】
なお、この入力側テンプレート202における第2列(C2)の各行のブロック配置位置には、入力無効化ファンクションブロック又は入出力間導通ファンクションブロック(FB01)が配置されるように仕組まれており、同様にして第3列(C3)の各行のブロック配置位置にはセット/リセットファンクションブロック又は入力間導通ファンクションブロック(FB01)が配置されるように仕組まれている。これらの仕組みは、各列毎に選択可能なファンクションブロックをメニューウィンドウの中からのみ選択可能とすることで実現されている。
【0069】
そして、入力側テンプレート202の上縁部には、各列(C1,C2,C3)に対応するようにして、その列に配置されるべきファンクションブロックの意味内容を示すインデックス203−1〜3が表示されている。ここで、第1列(C1)に対応するインデックス203−1の内容は、入力系ファンクションブロックであることを示す「入力」とされ、第2行(C2)に対応するインデックス203−2の内容は、入力無効化ファンクションブロックであることを示す「無効化」とされており、さらに第3列(C3)に対応するインデックス203−3の内容は、セット/リセットファンクションブロックであることを示す「リセット」とされている。
【0070】
一方、この入力側テンプレート202の右側縁部には、各行(R1,R2,R3,R4・・・)ごとに、その左側縁部の入力表示情報と同一の入力表示情報とが表示されている。つまり、この入力側テンプレートにおいては、各行のそれぞれは、行単位で1個の入力信号に割り付けられているのである。
【0071】
そのため、このような構造を有する入力側テンプレート202によれば、同一の入力信号に係るファンクションブロックについては同一行に配置すればよく、また同種のファンクションブロックについては同一列に配置すればよいことになるため、ある入力信号経路に配置すべきファンクションブロックを別の入力信号経路に配置したり、あるいはある並び順で配列されるべき複数のファンクションブロックを別の並び順で配置してしまうといったプログラミングミスを起こし難いという利点がある。
【0072】
次に、出力側テンプレートにおけるFB配置設定開始初期の画面説明図が図19に示されている。同図に示されるように、この例にあっては、スクリーン上に開かれたウィンドウ200内のプログラミングフィールド201には、出力側テンプレート210が表示される。この出力側テンプレート210には、行(R1,R2,R3,R4・・・)と列(C4,C5,C6)との各交点に対応して、ブロック配置可能位置(横長長方形状の小領域)が定義されている。
【0073】
この出力側テンプレート210の右側縁部には、各行(R1,R2,R3,R4・・・)に対応するようにして、その行に紐付けられた端子情報が表示されている。図示の例にあっては、第1行(R1)は安全仕様を有する2個の出力端子[OUT0/1]に割り当てられると共に、それらの出力端子のそれぞれは2個のセーフティリレーへと結線される。また、第2行(R2)は、1個の出力端子[OUT2]に割り当てられ、この出力端子は1個のセーフティリレーへと結線される。なお、この例では、第3行(R3)及び第4行(R4)についてはそれぞれ1個の出力端子[OUT3],[OUT4]に割り当てられるものの、それらの出力端子の結線先については未定とされている。
【0074】
一方、この出力側テンプレート210の初段に位置する第4列(C4)は出力条件ファンクションブロックに割り当てられ、次の列である第5列(C5)は溶着チェック(EDM)ファンクションブロックに割り当てられ、さらに次の列である第6列(C6)は端子モードファンクションブロックに割り当てられている。
【0075】
このことを明らかとするために、出力側テンプレート210の上縁部には、各列(C4,C5,C6)にそれぞれ対応させて、その列に配置されるべきファンクションブロックを意味するインデックス203−4〜6が表示されている。
【0076】
具体的には、インデックス203−4の内容は、1もしくは2以上の入力信号のそれぞれの論理値がどのようなときに出力を生成すべきかを決定する出力条件ファンクションブロックであることを意味する「出力条件」とされている。また、インデックス203−5の内容は、出力端子に接続されるセーフティリレーの溶着チェックを行うための溶着チェック(EDM)ファンクションブロックであることを意味する「溶着チェック(EDM)」とされている。また、インデックス203−6の内容は、オンディレイやオフディレイなどの端子モードを設定する端子モードファンクションブロックであることを意味する「端子モード」とされている。
【0077】
なお、この初期画面においては、第6列(C6)の第1行(R1)のブロック配置可能位置には、リモートI/Oファンクションブロック(FB61)が配置されており、第2行(R2)のブロック配置可能位置にはリモートI/Oファンクションブロック(FB62)が配置されている。
【0078】
ここで重要な点であるが、先に説明した入力側テンプレートの場合と同様に、出力側テンプレートにおいても、各列(C4,C5,C6)は、それぞれ特定種類のファンクションブロックに割り当てられると共に、特に初段に位置する列(C4)については、出力条件ファンクションブロックに割り当てられているため、少なくとも列(C4)に出力条件ファンクションブロックが配置されている行のブロック配置可能位置には、その出力条件が成立して得られる出力信号に関するファンクションブロックが配置されることとなる。
【0079】
そのため、このような出力側テンプレートによれば、同一の出力信号に関する処理を行うファンクションブロックについては、その出力信号を生成する出力条件ファンクションブロックが置かれた行と同一の行に配置すればよく、また同種のファンクションブロックについてはそれぞれ特定の列に配置すればよいこととなるため、先の入力側テンプレートの場合と同様に、ある出力信号経路に配置すべきファンクションブロックを別の出力信号経路に配置したり、あるいは一定の並び順で配置されるべき複数のファンクションブロックを異なる並び順で配置するといったプログラミングミスを起こし難いという利点がある。
【0080】
さらに、本発明のプログラム開発支援装置によれば、図14と図19とに分離して示されるように、テンプレートの全体は、入力側テンプレート202と出力側テンプレート210とに分離して表示されることから、それらを一体に結合して表示させた場合に比べて、プログラミングミスを生じ難いという利点もある。
【0081】
すなわち、先に説明したように、入力側又は出力側のいずれのテンプレート202,210においても、各行(R1,R2,R3,R4・・・)のそれぞれには、同一の信号に関するファンクションブロックが配列されるのであるが、これを仔細に検討すると、同じ列であっても、入力側テンプレート202の側と出力側テンプレート210の場合とでは、一方は入力信号経路また他方は出力信号経路であって、信号経路の意味づけが大きく異なることが分かる。
【0082】
そのため、もしも、入力側テンプレート202と出力側テンプレート210とを一体に結合して、同一行の各列にファンクションブロックを配置する場合、入力信号に関するファンクションブロックを出力信号経路に配置してしまったり、逆に出力信号経路に配置すべきファンクションブロックを入力信号経路に配置するといったプログラミングミスを生じ易くなる。
【0083】
これに対して、本発明のように、テンプレートの全体を、入力側テンプレート202と出力側テンプレート210とに分離すれば、両者間に境界線を明示するだけであっても、ユーザはその境界線によって同一行であっても境界を境として各側の信号経路の意味が異なることを理解するから、そのようなプログラミングミスを生じ難くなるのである。
【0084】
加えて、この実施形態のように、単に入力側と出力側とに分離するのみならず、入力側テンプレート202と出力側テンプレート210とを別々の画面で択一的に表示するようにすれば、そのような入力信号経路と出力信号経路とを誤認することによるファンクションブロックの配置誤りを一層確実に防止することができる。
【0085】
なお、以上説明した図14及び図19において、D1は画面を垂直方向へとスクロールするためのスクロールバー、D2は前の画面へと強制的に戻すための「戻る」ボタン、D3は次の画面へと強制的に進ませるための「次へ」ボタン、D4は様々なコマンドをキャンセルするためのキャンセルボタンである。
【0086】
スクロールバーD1の存在からも明らかなように、入力側テンプレート202及び出力側テンプレート210は、必要とする入力端子が8点、16点、32点、64点・・・といったように増加するのに合わせて、任意の長さ垂直方向へと延長することができ、その場合にはスクロールバーD1の操作によって、画面から隠れた特定の行をプログラミングフィールド200内に引き寄せることができる。
【0087】
なお、本発明においては、以上説明した入力側テンプレート202及び出力側テンプレート210において、様々な原因によるプログラミングミスを防止するために、先に説明したセーフティロジックウィザードが採用されている。このセーフティロジックウィザードの内容については、後に図8〜図13の図表を参照しながら詳細に説明する。
【0088】
図5に戻って、安全入出力端子設定の記憶が完了すると(ステップ102)、続いて、図14に示されるように、セーフティロジックウィザードの適用された入力側テンプレート202の表示が行われ(ステップ103)、その後、本発明の要部であるところの入力側回路図データ生成処理(ステップ104)が実行される。この入力側回路図データ生成処理は、セーフティロジックウィザードの支援の下に行われる。
【0089】
この入力側回路図データ生成処理(ステップ104)は、図5に示されるように、入力側テンプレート上へのFB配置のためのユーザアクションが行われるたびに(ステップ104a)、予め定義した「配置列」にしたがってFBを配置しているかどうかを判定し、予め定義した「配置列」にしたがってFBを配置している場合に限り、そのFBの配置内容を記憶(登録)する処理(ステップ104b)を、ユーザ側のFB配置継続意思が継続する限り(ステップ104c)、繰り返すものである。
【0090】
ここで、判定基準となる予め定義した「配置列」とは、各ファンクションブロックを入力側テンプレート202上のどの列に配置すべきかを定義するものであって、例えば、図8に示されるように、安全プログラムテンプレートデータ(入力側)としてワークRAM14等に格納されたものである。
【0091】
図8に示されるように、この安全プログラムテンプレートデータ(入力側)は、各列(1列目、2列目、3列目・・・)毎に、その列に格納が許容されるファンクションブロックの「種別名」(入力系ファンクションブロック等)と、その「種別名」に包含される個々のファンクションブロックのリストを互いに関連づけて表形式に記憶することで構成されたものである。
【0092】
具体的には、1列目には、入力系ファンクションブロックが格納されるべきものとされ、そのようなファンクションブロックには、不使用ファンクションブロック(Not Used)、非常停止スイッチファンクションブロック、セーフティライトカーテンファンクションブロック等が含まれる。2列目には、入力無効化ファンクションブロックが格納されるべきものとされ、この入力無効化ファンクションブロックには、不使用ファンクションブロック(Not Used)、論理和演算ファンクションブロック(OR)、論理積及び論理和演算ファンクションブロック(AND+OR)等が含まれる。3列目には、セット/リセットファンクションブロックが配置されるべきものとされ、このセット/リセットファンクションブロックには、不使用ファンクションブロック(Not Used)、マニュアルリセットファンクションブロック(Low−High−Low信号)、マニュアルリセットファンクションブロック(Rising Edge信号)等が含まれる。
【0093】
図5へ戻って、ステップ104bの処理においては、ユーザアクション(104a)で指定される「列」及び具体的な「ファンクションブロック名」との組み合わせを、図8に示される安全プログラムテンプレートデータ(入力側)と照合することによって、予め定義した「配置列」にしたがってFBを配置しているか否かを判断する。
【0094】
図14に示される入力側テンプレート202上において、例えば第1行(R1)の第2列(C2)のブロック配置可能位置に論理和演算ファンクションブロック(FB21)を配置したい場合には、第1行(R1)のプルダウンボタン(PB2)をマウスでクリックする。すると、図15(a)に示されるように、入力側テンプレート202上に重ねるようにして、メニューウィンドウ204が開かれる。
【0095】
このメニューウィンドウ204には、上下3段にわたって3つのファンクションブロックが表示される。すなわち、これらは、入出力間導通ファンクションブロック(FB01)、論理和演算ファンクションブロック(FB21)、論理積及び論理和演算ファンクションブロック(FB22)である。そして、この状態において、マウスの所定操作などによって、論理和演算ファンクションブロック(FB21)を選択すれば、選択されたファンクションブロック(FB21)が、第1行(R1)と第2列(C2)で特定されるブロック配置可能位置に配置される。
【0096】
同様に、例えば、第1行(R1)の第3列(C3)に位置するブロック配置可能位置にセット/リセットファンクションブロック(FB31)を配置したい場合には、第3列のプルダウンボタンPB3を操作する。すると、図15(b)に示されるように、メニューウィンドウ205が開かれる。
【0097】
このメニューウィンドウ205には、上下2段にわたって選択可能なファンクションブロックが表示される。それらは、入出力間導通ファンクションブロック(FB01)及びセット/リセットファンクションブロック(FB31)である。この状態において、マウスのクリック操作などにより、セット/リセットファンクションブロック(FB31)を選択すると、この選択されたファンクションブロック(FB31)は、第1行(R1)の第3列(C3)に位置するブロック配置可能位置へと配置される。一方、この状態から入力無効化条件を設定する場合には、マウスの所定操作によって、さらに、図16に示されるメニューウィンドウ206を開く。
【0098】
同図に示されるように、このメニューウィンドウ206内には、AND条件設定用の信号名列とOR条件設定用の信号名列とが表示されると共に、それらの信号名列を構成する各信号名の先頭にはチェックボックス列207,208が表示されている。
【0099】
そのため、図15(a)に示されるメニューウィンドウ204において、OR演算が選択された場合には、図16(a)に示されるように、メニューウィンドウ206内のOR条件設定エリア内において、マウスのクリック操作などでチェックマークを挿入する。これに対して、図15(a)に示されるメニューウィンドウ204において、図示しないAND演算が選択された場合には、図16(b)に示されるように、メニューウィンドウ206内のAND条件領域において、該当する入力信号名のチェックボックス207に対してマウス操作などでチェックマークを挿入する。このような操作によって、入力無効化ファンクションブロックの選択及び入力無効化条件の設定を誰でも簡単に行うことができるのである。
【0100】
また、セット/リセットファンクションブロックを選択した後、リセット条件の設定を行う場合には、図17に示されるように、メニューウィンドウ209を開くことによって、該当するリセット条件の設定を行う。すなわち、同図(a)に示されるように、メニューウィンドウ209内において、プルダウンボタンD7をマウスで操作すると、リセット条件リストが表示されるから、その中から最適なリセット条件を設定した後、同図(b)に示されるように、OKボタンD8を操作すれば、所望のリセット条件を簡単に設定することができる。なお、リセット条件をやり直すためにキャンセルするのであれば、キャンセルボタンD9を操作すればよい。
【0101】
このようにして、ファンクションブロックの選択及び各条件の設定を行った後の入力側テンプレートの一例が図18に示されている。同図に示されるように、上述の選択及び指定操作によって、入力系ファンクションブロック、無効化条件ファンクションブロック、及びリセットファンクションブロックを希望通りに配置することができる。
【0102】
このように、図5に示される入力側回路図データ生成処理(ステップ104)においては、ユーザアクションによって何らかのファンクションブロックが配置されようとするたびに(ステップ104a)、それが予め定義した「配置列」にしたがって配置されようとしているかどうかの判断が行われ、両者が肯定される場合に限って、その希望されるFBの配置内容がロジック回路データ(10b)へと反映されるのに対し、「配置列」が予め定義したものでないと判定されれば、そのようなFBの配置は拒絶され、かつ画面上には所定の警告表示が行われるのである。
【0103】
そのため、このように、セーフティロジックウィザードの支援の下に行われる入力側回路図データ生成処理によれば、各ファンクションブロックのそれぞれは、適切な「配置列」をもって入力側テンプレート202上に正しく配置されることとなる。
【0104】
このようにして、入力側テンプレート202上に所望のファンクションブロックを全て配置したならば(ステップ104c NO)、図6へ移って、「次へ」ボタンD3を操作するユーザアクション(ステップ105)を待って、出力側テンプレートに関する処理へと移行する。
【0105】
この出力側テンプレートに関する処理においては、まず、セーフティロジックウィザードの組み込まれた出力側テンプレート210が、プログラミングフィールド201に表示される(ステップ106)。
【0106】
こうして、ウィンドウ200内のプログラミングフィールド201に表示された出力側テンプレート210の一例が図19に示されている。先に説明したように、この出力側テンプレートは、行(R1,R2,R3,R4・・・)と列(C4,C5,C6)との各交点にそれぞれ対応するようにしてブロック配置可能位置(横長長方形状の領域)が定義されると共に、行方向の左側から右側へ向けて出力信号の流れが定義されている。
【0107】
各列(C4,C5,C6)のそれぞれは、出力信号に関する所定種別のファンクションブロックに割り当てられている。具体的に言えば、この例にあっては、初段に位置する列(C4)は出力条件ファンクションブロックに、次の列(C5)は溶着チェック(EDM)ファンクションブロックに、さらに次の列(C6)は端子モードファンクションブロックにそれぞれ割り当てられている。
【0108】
図6に戻って、出力側テンプレートの表示に続いて(ステップ106)、セーフティロジックウィザードの支援の下に行われる出力側回路図データ生成処理(ステップ107)が実行される。
【0109】
この出力側回路図データ生成処理(ステップ107)は、先に説明した入力側回路図データ生成処理と同様であって、出力側テンプレート210上へのFB配置のためのユーザアクションが行われるたびに(ステップ107a)、予め定義した「配置列」にしたがってFBを配置しているかの判断を行い、その判断が肯定される場合に限り、そのようにして配置されようとするFBの配置内容を記憶(登録)する処理(ステップ107b)を、出力側のFB配置が継続される限り(ステップ107c YES)、繰り返す。これに対して、上記の判断が否定される場合には(ステップ107b NO)、そのようなFBの配置を拒絶すると共に、画面上に所定の警告表示を行うようにしたものである。
【0110】
ここで、予め定義した「配置列」にしたがってFBを配置しているか否かの判断は、この例にあっては、図9に示される安全プログラムテンプレートデータ(出力側)の内容に基づいて行われる。すなわち、図9に示されるように、この安全プログラムテンプレートデータ(出力側)は、各列毎に、その列に配置が許容されるファンクションブロックの種別名称、及びその種別名称に包含される具体的なファンクションブロックのリストとを互いに関連づけて記憶することにより構成されている。
【0111】
すなわち、図示の例にあっては、1列目には出力条件ファンクションブロックが配置可能とされると共に、この出力条件ファンクションブロックには不使用ファンクションブロック(Not Used)、論理積演算ファンクションブロック(AND)などが含まれるように設定されている。また、第2列目には溶着チェック(EDM)ファンクションブロックが配置可能とされると共に、この溶着チェック(EDM)ファンクションブロックには、不使用ファンクションブロック(Not Used)、EDMファンクションブロックなどが含まれるように設定されている。さらに、第3列目には端子モードファンクションブロックが配置可能とされると共に、この端子モードファンクションブロックには不使用ファンクションブロック(Not Used)、マスタからの受信データ(リモートI/O)、ロジックからの出力、補助出力が含まれるように設定されている。
【0112】
ここで、マスタからの受信データとは、当該安全コントローラが通信マスタユニットを介してリモートI/Oターミナル(スレーブ)と接続されるような構成の場合、当該リモートI/Oターミナル(スレーブ)から通信マスタが受信したデータを出力することを意味している。また、ロジックからの出力とは、当該安全コントローラ内部のロジック演算による演算結果を出力することを意味している。さらに、補助出力とは、当該安全コントローラからの出力を分岐して補助出力とすることを意味している。
【0113】
そして、出力側テンプレート上へのFB配置のための何らかのユーザアクションが検出されるたびに(ステップ107a)、そのユーザアクションにより指定される「ブロック配置可能位置」と「ファンクションブロック名」とを図9に示される安全プログラムテンプレートデータ(出力側)と照合することによって、その配置されようとするFBが、予め定義した「配置列」にしたがって配置されるか否かの判断を行うものである。
【0114】
これをより具体的に説明すると、いま仮に、図19に示される出力側テンプレート210を前提として、行(R1)と列(C5)とで特定されるブロック配置可能位置に、溶着チェック(EDM)ファンクションブロックを配置する場合を想定する。
【0115】
このような場合には、まず、行(R1)のプルダウンボタンPB5をマウスで操作する。すると、図20(a)に示されるように、出力側テンプレート210上に重ねるようにしてメニューウィンドウ211が開かれる。このメニューウィンドウ211内には、上下2段にわたって、2個のファンクションブロックが表示されている。すなわち、それらは、出力側分岐ファンクションブロックFB51とEDMファンクションブロックFB52である。ここでユーザは、マウス操作で、EDMファンクションブロック(FB52)を選択する。すると、この選択されたファンクションブロック(FB52)は、行(R1)と列(C5)とで特定されるブロック配置可能位置に配置される。
【0116】
また、このEDMファンクションブロック(FB52)について、溶着チェック(EDM)フィードバックを設定する場合には、所定のマウス操作によって、図20(b)に示されるように、メニューウィンドウ212を開く。このメニューウィンドウ212内には、プルダウンボタンD10、OKボタンD11、キャンセルボタンD12が配置されている。この状態において、ユーザは、プルダウンボタンD10をマウスで操作することによって、フィードバック信号リストを表示させ、その中から所望のフィードバック信号を選択し、OKボタンD11の操作でこれを確定する。図20(b)の例では、フィードバック信号として、入力信号IN7が選択設定される。
【0117】
また、行(R1)と列(C6)とで特定されるブロック配置可能位置に二重化処理されたリモートI/Oファンクションブロックを配置する場合には、行(R1)と列(C6)とで特定されるブロック配置可能位置の右側に位置するプルダウンボタンPB6をマウスで操作する。すると、図21(a)に示されるように、出力側テンプレート210に重ねるようにして所定のメニューウィンドウ213が開かれる。
【0118】
このメニューウィンドウ213内には、上下2段に2個のファンクションブロックが表示される。それらのファンクションブロックは、この例にあっては、二重化対応のリモートI/Oファンクションブロック(FB61)と非二重化対応のロジックファンクションブロック(FB62)である。
【0119】
ここでユーザは、マウスの操作で、メニュー上から、二重化対応のリモートI/Oファンクションブロック(FB61)を選択する。すると、選択されたファンクションブロック(FB61)は、行(R1)と列(C6)とで特定されるブロック配置可能位置に配置される。
【0120】
さらに、行(R2)と列(C6)とで特定されるブロック配置可能位置に二重化非対応のロジックファンクションブロック(FB64)を配置する場合には、そのブロック配置可能位置の右側に位置するプルダウンボタンPB6をマウスで操作する。すると、図28(b)に示されるように、出力側テンプレート210に重なるようにしてメニューウィンドウ214が開かれる。
【0121】
このメニューウィンドウ214内には、上下3段にわたって3個のファンクションブロックが表示されている。それらは、二重化非対応のリモートI/Oファンクションブロック(FB63)、二重化非対応のロジックファンクションブロック(FB64)、及び補助出力ファンクションブロック(FB65)である。ここで、ユーザは、二重化非対応のロジックファンクションブロック(FB64)を選択する。すると、選択されたファンクションブロック(FB64)は、行(R2)と列(C6)とで特定されるブロック配置可能位置に配置される。
【0122】
出力条件ファンクションブロックの選択並びに設定についても、図20(a)に示される溶着チェック(EDM)ファンクションブロック(FB52)の場合と同様にして、メニューウィンドウを用いた選択設定により行われるのであるが、このようにして選択設定された出力条件ファンクションブロックについて、さらに出力条件の設定を行うに際しては、この実施形態においては、さらにユーザの使い勝手を考慮した優れた機能が備えられている。
【0123】
すなわち、図23に示されるように、選択設定された出力条件ファンクションブロックについて出力条件を設定する場合には、マウスによる所定操作に応答して出力条件設定用ウィンドウ215が開かれるようになっている。この出力条件設定用ウィンドウ215内には、出力条件であるAND条件の入力候補となる入力信号名が一連に表示されると共に、各入力信号名の頭部には、チェックボックス216が設けられる。そして、出力条件となる入力信号の選択は、このチェックボックス216内にマウスを用いて所定のチェックマークを挿入するだけで行うことができる。この選択を確定するためには、OKボタンD13をマウスで操作するだけでよく、逆に設定を解除するためにはキャンセルボタンD14をマウスで操作すればよいのである。
【0124】
先に説明したように、この種のプログラミング作業を行う場合には、それに先立って、図28に示されるような安全入出力機器対象表を作成するのが通例であり、この安全入出力機器対象表を頼りとして、出力条件の設定を行うものである。
【0125】
ここで、図26や図27に示されるような従来のプログラム開発支援装置の場合には、出力条件の設定はファンクションブロック同士を結ぶ配線の描画操作を介して行うものであったので、出力条件が正しく設定されているか否かの検証には、安全入出力対照表と配線図とを照合すると言う煩雑な作業が要求された。
【0126】
これに対して、本発明の場合には、入力信号と出力信号との論理関係を規定する出力条件の設定操作は、図23に示されるように、メニューウィンドウ215内に表示された一連の入力信号名の中から該当するものを、チェックボックスのチェック操作で選択するものとされている。そのため、出力条件の設定に際しては、図28に示されるような安全入出力機器対象表の通りに、チェックボックス216を選択するだけで、目的とする出力条件の設定を簡単な操作で行うことができる。
【0127】
また、完成後のプログラムにおいて、出力条件が正しく設定されているか否かを検証するに際しても、メニューウィンドウ215内のチェックボックスの選択状態と予め作成された入出力機器対象表とを照合するだけでよく、図26や図27に示される従来例のように、ファンクションブロック間の配線を辿る必要もないため、そのような検証作業を短時間でかつ容易に成し遂げることができる。
【0128】
上記のメニューウィンドウ215内に表示される入力信号に関するデータとしては、図11に示される入力機器テーブル内のデータが使用される。この入力機器テーブルは、図14に示される入力側テンプレート202において、入力端子の設定操作、すなわち入力端子にどのような入力機器からの信号が入力されるかを設定するために行われる通常の操作によって設定される。そのため、わざわざ出力条件設定のために、特別な入力情報設定操作は不要である。
【0129】
そして、メニューウィンドウ215内において、チェックボックスのマウス操作による選択を通じて入力信号名の選択を行うと、図7のフローチャートに示される安全出力条件設定処理が作動することにより、図12に示されるように、出力条件設定テーブルが完成するのである。図7に示される安全出力条件設定処理は、先に説明したセーフティロジックウィザードの支援下に行われる出力回路図データ生成処理107において実行されることとなる。
【0130】
すなわち、図7のフローチャートに示されるように、安全出力条件の設定選択のためのユーザアクションが行われると(ステップ1071)、入力機器テーブル(図11参照)より安全入力機器が検索されて抽出され(ステップ1072)、これらの抽出された入力機器データに基づいて、図23に示されるメニューウィンドウ215内の入力信号の一覧表示が行われる。すなわち、安全出力条件選択画面表示として、チェックボックス形式にて安全入力端子番号、機器名などが表示されることとなる(ステップ1073)。
【0131】
この状態において、チェックボックス216にチェックを入れることにより、該当の安全出力条件を選択して、「OK」ボタンを押下するユーザアクションが確認されると(ステップ1074)、こうして選択された安全出力条件の記憶が行われ(ステップ1075)、これが必要回数繰り返されることにより(ステップ1076YES)、図12に示される出力条件設定テーブルが完成するのである。
【0132】
このようにして、端子モードFB、出力条件FB、及び溶着チェックFBがそれぞれ配置された出力側テンプレートの状態が図18に示されている。同図から明らかなように、上述の選択設定処理によって、各指定されたブロック配置可能位置には、選択されたファンクションブロック(FB62,FB65,FB52,FB41)がそれぞれ配置されていることが理解されるであろう。
【0133】
最後に、入力側テンプレートにおけるFB配置完了時の確認用画面の説明図が図24に、また出力側テンプレートにおけるFB配置完了時の確認用画面の説明図が図25にそれぞれ示されている。
【0134】
それらの図から明らかなように、以上の各ファンクションブロック選択並びに設定操作を繰り返すことによって、入力側テンプレート並びに出力側テンプレート上には必要なファンクションブロックが必要な位置に適切に配置されるのである。
【0135】
このように、図6のフローチャートに示される出力側回路図データ生成処理(ステップ107)においては、予め定義した「配置列」にしたがってFBを配置しているか否かの判断が行われ、予め定義した「配置列」にしたがってFBが配置されていると判定された場合に限り、その配置が希望されるFBの配置内容が記憶(登録)されて、図13に示されるロジック回路データ(10b)が生成される。
【0136】
図6に戻って、このようにして、出力側テンプレート210上に必要なファンクションブロックの配置が完了したならば、「次へ」ボタンD3の操作に相当するユーザアクションを待って(ステップ107d)、以上のファンクションブロック配置操作で生成された図13に示されるロジック回路データ(10b)は、全ファンクションブロックに関して、安全コントローラが解読可能なデータ形式に変換され(ステップ108〜110)、それら変換されたデータを集合することによって、ダウンロードパラメータ(安全コントローラ用制御プログラム)が生成される(ステップ111)。
【0137】
こうして生成されたダウンロードパラメータは、従来と同様、通信を介して又は可搬型記録媒体を介して、目的とする安全コントローラへとインストールされることとなる。
【0138】
以上、図5〜図7を参照して説明したソフトウェア構成によれば、ファンクションブロック配置用のテンプレートの全体は、入力側テンプレート202と出力側テンプレート210とに分離されているため、各テンプレート202,210内の信号経路は、入力信号経路又は出力信号経路に統一されるため、入力信号経路に出力信号対応のファンクションブロックを配置したり、逆に出力信号経路に入力信号対応のファンクションブロックを配置するといったファンクションブロック配置誤りを生じ難い。
【0139】
また、入力側テンプレート202並びに出力側テンプレート210の何れにおいても、各行には同一の入力信号又は出力信号の経路が存在することとなるため、同一の入力信号又は出力信号に関するファンクションブロックについては各ファンクションテーブル内において同一の行に配置しておきさえすれば、ある信号経路に配置されるべきファンクションブロックを誤って別の信号経路に配置するといったプログラミングミスを生じ難いという利点もある。
【0140】
また、プログラミングフィールド201上には、入力側テンプレート202と出力側テンプレート210とが択一的に表示されるため、それらを分離しつつも1画面に同時に表示する場合に比べて、上述のプログラミングミスを一層生じ難い。
【0141】
また、プログラミングフィールド201上に入力側テンプレート202と出力側テンプレート210とを択一的に表示するに際しては、入力側テンプレート202の表示が先でかつ出力側テンプレート210の表示が後となるようにしているため、そのような表示手順に従うだけで、ユーザは、入力側テンプレート202上のファンクションブロックの配置を完了してから、出力側テンプレート210上のファンクションブロックの配置を行うこととなり、一般に出力側テンプレート上のファンクションブロックの配置並びにパラメータ設定には、それよりも先に入力側テンプレート上のファンクションブロックの配置並びにパラメータの設定が必要であることを考慮すると、これによってもプログラミングミスを生じ難いという利点もある。
【0142】
また、ファンクションブロックを何れかのブロック配置可能位置に配置するに際しては、そのファンクションブロックをその種別に応じて予め定義された「配置列」へと誘導するセーフティロジックウィザードの仕組みが組み込まれているため、このセーフティロジックウィザードの作用によって、1の信号経路内において、複数のファンクションブロックが誤った並びで配列されるといったプログラミングミスは生ずる余地がない。
【0143】
一方、そのようなセーフティロジックウィザードの作用によって、同一種別のファンクションブロックは必ず同一列に配置されることとなるため、何れかの行においてファンクションブロックを誤って配置し忘れたような場合には、列単位でファンクションブロックの抜けている箇所を探すだけで、この種の安全プログラムの検証を容易に行うことができる。
【0144】
さらに、出力条件の設定は、図23に示されるように、チェックボックス形式の入力信号一覧表に基づいて行えるため、従前の配線図形式のプログラム開発支援装置とは異なり、安全入出力機器対象表との直接的な照合が可能となるため、プログラミング作業並びにプログラム検証作業の簡素化に資するものである。
【0145】
このように、以上説明した各実施形態のプログラム開発支援装置によれば、テンプレートの全体は入力側テンプレートと出力側テンプレートとに分離されることから、各テンプレート内においては、同一信号に関する信号経路は同一行に存在することとなる。
【0146】
また、各テンプレート内の各列(C1〜C6)のそれぞれには、同一種別のファンクションブロックがセーフティロジックウィザードの作用によって配置されるように導かれることとなる。しかも、そのようなセーフティロジックウィザードの作用によって、同種別のファンクションブロックについては、同一列にひとりでに配列されるため、何れかのファンクションブロックを配置し忘れたような場合にも、プログラム完成後においては、各列ごとにファンクションブロックの有無をチェックし、何れかの行にファンクションブロックが存在しなければ、その部分を集中的にチェックすることによって、この種の安全コントローラ用制御プログラムのデバッグを簡単に行うことが可能となる。
【0147】
そのため、このような入力側テンプレート又は出力側テンプレートの構造によれば、同一信号に関するファンクションブロックについては同一行に配置するといった習慣づけを行うだけで、同一信号経路に配置されるべきファンクションブロックを別の信号経路に誤って配置したり、入力信号経路に配置すべきファンクションブロックを出力信号経路に配置するといったプログラミングミスを確実に防止することができる。
【0148】
また、単に2つに分離するのみならず、出力側テンプレートに先立って入力側テンプレートをユーザに提示することにより、出力側テンプレート上のファンクションブロックを配置する段においては、既に入力側テンプレート上のファンクションブロックの配置が完了していることとなるから、これによってもユーザによるプログラミングミスを未然に防止することができる。
【0149】
さらに、出力条件の設定は、図23に示されるように、チェックボックス形式の入力信号一覧表に基づいて行えるため、従前の配線図形式のプログラム開発支援装置とは異なり、安全入出力機器対象表との直接的な照合が可能となるため、プログラミング作業並びにプログラム検証作業の簡素化に資するものである。
【0150】
なお、以上の実施形態においては、出力条件設定のための入力信号の選択を容易とするためのメニュー表示態様として、入力信号名の一覧とチェックボックスによる選択確認方法との組み合わせを採用したが、これに代えて、入力信号の一覧と反転表示やその他のアクティブ表示による選択確認方法との組み合わせを採用する等々、メニュー表示態様には公知の様々な態様が採用可能であることは言うまでもない。
【0151】
さらに、入力端子の個数が、16点、32点、64点と言ったように増大する場合には、メニュー表示させる入力信号個数については、所定個数ずつ何回かに分けて表示させたり、あるいは、出力条件候補となり得る入力信号の範囲がある程度論理的に推定でるのであれば、そのように推定される入力信号群を優先的に表示させたり、過去の来歴により出力条件候補となり得る入力信号の範囲がある程度推定でるのであれば、そのように推定される入力信号群を優先的に表示させたりする等々、入力信号名の提示の仕方にも様々な態様が存在することは言うまでもない。
【産業上の利用可能性】
【0152】
本発明によれば、ファンクションブロックを誤った位置に配置したり、誤った順序で配置すると言ったプログラミングミスが生じ難く、かつそのようなプログラミングミスが生じた場合には、そのことを容易に発見することができ、しかも完成後のプログラムにおける出力条件ファンクションブロックのパラメータ検証も容易な安全コントローラのプログラム開発支援装置を提供することができる。
【図面の簡単な説明】
【0153】
【図1】安全コントローラを含む安全制御システムを示す概念図である。
【図2】プログラム開発支援装置の機能を概念的に示すブロック図である。
【図3】プログラム開発支援装置の電気的なハードウェア構成を示す概略ブロック図である。
【図4】安全コントローラの電気的なハードウェア構成を示す概略ブロック図である。
【図5】プログラム開発支援装置のソフトウェア構成を示すフローチャート(その1)である。
【図6】プログラム開発支援装置のソフトウェア構成を示すフローチャート(その2)である。
【図7】安全出力条件設定処理の詳細フローチャートである。
【図8】安全プログラムテンプレートデータ(入力側)の一例を示す説明図である。
【図9】安全プログラムテンプレートデータ(出力側)の一例を示す説明図である。
【図10】ユーザにより作成されたロジック回路データ(10b)の一例を示す説明図である。
【図11】入力機器テーブルの説明図である。
【図12】出力条件設定テーブルの説明図である。
【図13】安全コントローラへダウンロードされる設定パラメータデータ(制御プログラム)の一例を示す説明図である。
【図14】入力側テンプレートにおけるFB配置開始初期の画面説明図である。
【図15】FB選択用メニューウィンドウの説明図である。
【図16】入力無効化条件設定用メニューウィンドウの説明図である。
【図17】リセット条件設定用メニューウィンドウの説明図である。
【図18】入力FB、無効化条件FB、及びリセットFBが配置された入力側テンプレートの画面説明図である。
【図19】出力側テンプレートにおけるFB配置設定開始初期の画面説明図である。
【図20】溶着チェックに関する各種メニューウィンドウの画面説明図である。
【図21】端子モード設定用メニューウィンドウの説明図である。
【図22】端子モードFB、出力条件FB、及び溶着チェックFBが配置された出力側テンプレートの画面説明図である。
【図23】出力条件設定用ウィンドウの説明図である。
【図24】入力側テンプレートにおけるFB配置完了時の確認用画面説明図である。
【図25】出力側テンプレートにおけるFB配置完了時の確認用画面説明図である。
【図26】プログラム開発支援装置(第1従来例)によるロジック回路図表示例である。
【図27】プログラム開発支援装置(第2従来例)によるロジック回路図表示例である。
【図28】安全入出力機器対応表の説明図である。
【符号の説明】
【0154】
1 安全コントローラ
1a 設定パラメータ
2a バス型ネットワーク
2b 直結型ネットワーク
3 入力機器
4 出力機器
5 安全I/Oターミナル
6 ユーザ
10 プログラム開発支援装置
10a セーフティロジックウィザードデータベース(DB)
10b ロジック回路図データ
10c コンパイラ
10d 設定パラメータ
11 CPU
12 入力操作部
13 画像表示部
14 ワークRAM
15 記憶装置
15a 出力イメージメモリ
15b システムメモリ
15c プログラムメモリ
16 通信部
17 システムバス
101 通信インタフェース部
102 中央演算部
103a 入力側の端子異常診断部
103b 出力側の端子異常診断部
104a 入力端子部
104b 出力端子部
200 ウィンドウ
201 プログラミングフィールド
202 入力側テンプレート
203−1〜203−6 インデックス
204 メニューウィンドウ
205 メニューウィンドウ
206 メニューウィンドウ
207 チェックボックス
208 チェックボックス
209 メニューウィンドウ
210 出力側テンプレート
211 メニューウィンドウ
213 メニューウィンドウ
214 メニューウィンドウ
215 メニューウィンドウ(出力条件設定用)
216 チェックボックス(出力条件選択用)
217 警告ウィンドウ
C1〜C6 列
D1 スクロールバー
D2 「戻る」ボタン
D3 「次へ」ボタン
D4 キャンセルボタン
D5 OKボタン
D6 キャンセルボタン
D7 プルダウンボタン
D8 OKボタン
D9 キャンセルボタン
D10 プルダウンボタン
D11 OKボタン
D12 キャンセルボタン
D13 OKボタン
D14 キャンセルボタン
D15 OKボタン
FB01 入出力導通ファンクションブロック
FB11 セーフティ非常停止スイッチファンクションブロック
FB12 二重化対応のセーフティライトカーテンファンクションブロック
FB13 二重化非対応のセーフティライトカーテン
FB21 論理和演算ファンクションブロック
FB22 論理積及び論理和演算ファンクションブロック
FB31 セット/リセットファンクションブロック
FB52 溶着チェック(EDM)ファンクションブロック
FB61 二重化対応のリモートI/Oファンクションブロック
FB62 二重化対応のロジックファンクションブロック
FB63 二重化非対応のリモートI/Oファンクションブロック
FB64 二重化非対応のロジックファンクションブロック
FB65 補助出力ファンクションブロック
PB2,PB3 プルダウンボタン
R1,R2,R3,R4 行

【特許請求の範囲】
【請求項1】
画像表示器のスクリーン上のプログラミングフィールドに、予め用意された複数種のファンクションブロックの中から選択された1の種類のファンクションブロックを順次に配置しかつ各ファンクションブロック毎に必要な固有パラメータを設定することにより、所望の制御仕様に対応するロジック回路図を完成する一連のユーザ操作を通して、安全コントローラ用の制御プログラムが自動的に生成されるようにした安全コントローラのプログラム開発支援装置であって、
前記プログラミングフィールドへのファンクションブロックの配置は、当該プログラミングフィールド上に表示され、かつ行と列との各交叉位置にそれぞれ対応するようにして、ブロック配置可能位置が定義されると共に、行方向の一端側は入力端子側として又他端側は出力端子側として定義されたファンクションブロック配置用のテンプレートによる案内にしたがって行われ、さらに
前記ファンクションブロックの1つである出力条件ファンクションブロックを該当する列に配置するときに必要とされる固有パラメータである入力信号の設定は、メニュー表示された入力信号リストの中から所望の入力信号を選択する操作を介して実行される、ことを特徴とする安全コントローラのプログラム開発支援装置。
【請求項2】
前記入力信号リストのメニュー表示は、画像表示器のスクリーン上に開かれたメニューウィンドウ内に設定対象となる入力信号名を配列することにより行われ、所望の入力信号の選択は選択確認手段を介して行われる、ことを特徴とする請求項1に記載の安全コントローラのプログラム開発支援装置。
【請求項3】
前記入力信号リストのメニュー表示に使用される入力信号データは、前記ファンクションブロックの1つである入力系ファンクションブロックを該当する列に配置する際に生成された入力機器テーブルを参照することにより取得される、ことを特徴とする請求項2又は3に記載の安全コントローラのプログラム開発支援装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2008−310478(P2008−310478A)
【公開日】平成20年12月25日(2008.12.25)
【国際特許分類】
【出願番号】特願2007−156216(P2007−156216)
【出願日】平成19年6月13日(2007.6.13)
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】