以下に、この発明に係る安全コントローラのプログラム開発支援装置の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
本発明に係るプログラム開発支援装置の対象となる安全コントローラを含む安全制御システムを示す概念図が図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には、後に図14等を参照して詳述するように、本発明に係るプログラミングフィールド201が表示されるようになっている。ワークRAM14は、後述するシステムプログラム、アプリケーションプログラムなどをCPU11が実行する際のワークエリアとして利用される。
記憶装置15は、ハードディスクなどで構成されており、その内部には出力イメージメモリ15a、システムメモリ15b、プログラムメモリ15cがそれぞれ配置されている。出力イメージメモリ15aは、本発明に関連して、各種のイメージを画像表示部13のスクリーン13a上に表示させる際の各種のイメージデータを格納するために使用され、システムメモリ15bは、当該ノートパソコンの基本的な機能を構成するためのファームウェア(オペレーティングシステムを含む)を格納するために使用される。プログラムメモリ15cは、当該ノートパソコンで実行されるべき各種のアプリケーションプログラムを格納するために使用される。
先に述べたように、出力イメージメモリ15a、システムメモリ15b、プログラムメモリ15cに格納された各種のプログラム並びにデータは、それぞれCPU11が実行する際には、ワークRAM14のワークエリア上に展開されて実行されることはよく知られている通りである。
次に、安全コントローラ1の電気的なハードウェア構成を示す概略ブロック図が図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とを挙げることができる。これらの機能構成要素については、後に本発明に係るプログラム開発支援装置の動作を説明する際に、図8〜図13に示される図表、並びに、図5〜図7に示されるフローチャートを参照しながら詳述することとする。
次に、図5〜図7を参照しながら、本発明に係るプログラム開発支援装置の動作について説明する。なお、それらのフローチャートに示されるアプリケーションプログラムについては、先に図3を参照して説明したプログラムメモリ15cに格納されたものである。また、それらのフローチャートに示される動作については、処理部に相当するCPU11によって統括して実行処理される。
プログラム開発支援装置のソフトウェア構成を示すフローチャート(その1〜その3)が図5〜図7に示されている。
図5において、処理が開始されると、まず、安全入出力端子の設定のためのユーザアクションを受け付ける処理が実行される(ステップ101)。ここで、ユーザアクションとしては、プログラム開発支援装置10を構成するノート型パソコンにおける所定のキー入力操作やマウス操作等を挙げることができる。このユーザアクションによって、安全入出力端子に関する各種のデータが設定される。こうして得られた安全入出力端子に関する各種のデータは、ワークRAM14に格納される(ステップ102)。
入力側テンプレートにおけるファンクションブロック(以下、「FB」ともいう)配置開始初期の画面説明図が図14に、出力側テンプレートにおけるFB配置設定開始初期の画面説明図が図19にそれぞれ示されている。
図14に示されるように、プログラム開発支援装置10を構成するノート型パソコンの画像表示部13のスクリーン13aには、入力用のセーフティロジックウィザードのためのウィンドウ200が開かれる。ここで、「セーフティロジックウィザード」とは、安全コントローラ用の制御プログラムに相当するロジック回路図作成のための各種ユーザサポート機能を総称するものである。
こうして開かれたウィンドウ200内には、横長長方形状のプログラミングフィールド201が定義されており、このプログラミングフィールド201には本発明の要部であるところの入力用テンプレート202が表示される。
この入力側テンプレート202には、それぞれスクリーンの水平方向へと延びる行(R1,R2,R3,・・・)とスクリーンの垂直方向へ延びる列(C1,C2,C3)との各交点に対応するようにして、複数のブロック配置可能位置が設けられている。また、入力側テンプレート202の左側縁部には、各行(R1,R2,R3,R4・・・)に対応させて、その行の入力端子に関する情報が表示されている。
この例では、第1行(R1)は、2つの入力端子[IN0/1]に割り当てられており、それらの入力端子は、二重化仕様のセーフティ非常停止スイッチからの一対のNC(ノーマルクローズ)信号を受け付けるように設定されている。また、第2行(R2)は、2つの入力端子[IN2/3]に割り当てられており、それらの入力端子は、二重化仕様のセーフティドアスイッチからの一対のNC信号を受け付けるように設定されている。また、第3行(R3)は、1個の入力端子[IN4]に割り当てられており、この入力端子は、非二重化仕様のドアスイッチからの信号を受け付けるように設定されている。
これらの入力端子設定に対応するようにして、入力側テンプレート202の第1列(C1)には、各行(R1,R2,R3)の端子設定に対応するようにして、それぞれの端子に関する自己診断機能を実現するためのファンクションブロックが配置される。
すなわち、第1列(C1)の第1行(R1)に対応するブロック配置可能位置(横長長方形の小領域)には、セーフティ非常停止スイッチファンクションブロック(FB11)が、第2行に対応するファンクションブロック配置可能位置には、二重化仕様のセーフティライトカーテンファンクションブロック(FB12)が、第3行(R3)に相当するファンクションブロック配置可能位置には、非二重化仕様のセーフティライトカーテンファンクションブロック(FB13)がそれぞれ配置されている。
そして、図5のフローチャートにおいて、ステップ101,102の処理が実行されると、以上説明した入力端子の設定並びにファンクションブロックの配置が実行される。
なお、この入力側テンプレート202における第2列(C2)の各行のブロック配置位置には、入力無効化ファンクションブロック又は入出力間導通ファンクションブロック(FB01)が配置されるように仕組まれており、同様にして第3列(C3)の各行のブロック配置位置にはセット/リセットファンクションブロック又は入力間導通ファンクションブロック(FB01)が配置されるように仕組まれている。これらの仕組みは、各列毎に選択可能なファンクションブロックをメニューウィンドウの中からのみ選択可能とすることで実現されている。
そして、入力側テンプレート202の上縁部には、各列(C1,C2,C3)に対応するようにして、その列に配置されるべきファンクションブロックの意味内容を示すインデックス203−1〜3が表示されている。ここで、第1列(C1)に対応するインデックス203−1の内容は、入力系ファンクションブロックであることを示す「入力」とされ、第2行(C2)に対応するインデックス203−2の内容は、入力無効化ファンクションブロックであることを示す「無効化」とされており、さらに第3列(C3)に対応するインデックス203−3の内容は、セット/リセットファンクションブロックであることを示す「リセット」とされている。
一方、この入力側テンプレート202の右側縁部には、各行(R1,R2,R3,R4・・・)ごとに、その左側縁部の入力表示情報と同一の入力表示情報とが表示されている。つまり、この入力側テンプレートにおいては、各行のそれぞれは、行単位で1個の入力信号に割り付けられているのである。
そのため、このような構造を有する入力側テンプレート202によれば、同一の入力信号に係るファンクションブロックについては同一行に配置すればよく、また同種のファンクションブロックについては同一列に配置すればよいことになるため、ある入力信号経路に配置すべきファンクションブロックを別の入力信号経路に配置したり、あるいはある並び順で配列されるべき複数のファンクションブロックを別の並び順で配置してしまうといったプログラミングミスを起こし難いという利点がある。
次に、出力側テンプレートにおけるFB配置設定開始初期の画面説明図が図19に示されている。同図に示されるように、この例にあっては、スクリーン上に開かれたウィンドウ200内のプログラミングフィールド201には、出力側テンプレート210が表示される。この出力側テンプレート210には、行(R1,R2,R3,R4・・・)と列(C4,C5,C6)との各交点に対応して、ブロック配置可能位置(横長長方形状の小領域)が定義されている。
この出力側テンプレート210の右側縁部には、各行(R1,R2,R3,R4・・・)に対応するようにして、その行に紐付けられた端子情報が表示されている。図示の例にあっては、第1行(R1)は安全仕様を有する2個の出力端子[OUT0/1]に割り当てられると共に、それらの出力端子のそれぞれは2個のセーフティリレーへと結線される。また、第2行(R2)は、1個の出力端子[OUT2]に割り当てられ、この出力端子は1個のセーフティリレーへと結線される。なお、この例では、第3行(R3)及び第4行(R4)についてはそれぞれ1個の出力端子[OUT3],[OUT4]に割り当てられるものの、それらの出力端子の結線先については未定とされている。
一方、この出力側テンプレート210の初段に位置する第4列(C4)は出力条件ファンクションブロックに割り当てられ、次の列である第5列(C5)は溶着チェック(EDM)ファンクションブロックに割り当てられ、さらに次の列である第6列(C6)は端子モードファンクションブロックに割り当てられている。
このことを明らかとするために、出力側テンプレート210の上縁部には、各列(C4,C5,C6)にそれぞれ対応させて、その列に配置されるべきファンクションブロックを意味するインデックス203−4〜6が表示されている。
具体的には、インデックス203−4の内容は、1もしくは2以上の入力信号のそれぞれの論理値がどのようなときに出力を生成すべきかを決定する出力条件ファンクションブロックであることを意味する「出力条件」とされている。また、インデックス203−5の内容は、出力端子に接続されるセーフティリレーの溶着チェックを行うための溶着チェック(EDM)ファンクションブロックであることを意味する「溶着チェック(EDM)」とされている。また、インデックス203−6の内容は、オンディレイやオフディレイなどの端子モードを設定する端子モードファンクションブロックであることを意味する「端子モード」とされている。
なお、この初期画面においては、第6列(C6)の第1行(R1)のブロック配置可能位置には、リモートI/Oファンクションブロック(FB61)が配置されており、第2行(R2)のブロック配置可能位置にはリモートI/Oファンクションブロック(FB62)が配置されている。
ここで重要な点であるが、先に説明した入力側テンプレートの場合と同様に、出力側テンプレートにおいても、各列(C4,C5,C6)は、それぞれ特定種類のファンクションブロックに割り当てられると共に、特に初段に位置する列(C4)については、出力条件ファンクションブロックに割り当てられているため、少なくとも列(C4)に出力条件ファンクションブロックが配置されている行のブロック配置可能位置には、その出力条件が成立して得られる出力信号に関するファンクションブロックが配置されることとなる。
そのため、このような出力側テンプレートによれば、同一の出力信号に関する処理を行うファンクションブロックについては、その出力信号を生成する出力条件ファンクションブロックが置かれた行と同一の行に配置すればよく、また同種のファンクションブロックについてはそれぞれ特定の列に配置すればよいこととなるため、先の入力側テンプレートの場合と同様に、ある出力信号経路に配置すべきファンクションブロックを別の出力信号経路に配置したり、あるいは一定の並び順で配置されるべき複数のファンクションブロックを異なる並び順で配置するといったプログラミングミスを起こし難いという利点がある。
さらに、本発明のプログラム開発支援装置によれば、図14と図19とに分離して示されるように、テンプレートの全体は、入力側テンプレート202と出力側テンプレート210とに分離して表示されることから、それらを一体に結合して表示させた場合に比べて、プログラミングミスを生じ難いという利点もある。
すなわち、先に説明したように、入力側又は出力側のいずれのテンプレート202,210においても、各行(R1,R2,R3,R4・・・)のそれぞれには、同一の信号に関するファンクションブロックが配列されるのであるが、これを仔細に検討すると、同じ列であっても、入力側テンプレート202の側と出力側テンプレート210の場合とでは、一方は入力信号経路また他方は出力信号経路であって、信号経路の意味づけが大きく異なることが分かる。
そのため、もしも、入力側テンプレート202と出力側テンプレート210とを一体に結合して、同一行の各列にファンクションブロックを配置する場合、入力信号に関するファンクションブロックを出力信号経路に配置してしまったり、逆に出力信号経路に配置すべきファンクションブロックを入力信号経路に配置するといったプログラミングミスを生じ易くなる。
これに対して、本発明のように、テンプレートの全体を、入力側テンプレート202と出力側テンプレート210とに分離すれば、両者間に境界線を明示するだけであっても、ユーザはその境界線によって同一行であっても境界を境として各側の信号経路の意味が異なることを理解するから、そのようなプログラミングミスを生じ難くなるのである。
加えて、この実施形態のように、単に入力側と出力側とに分離するのみならず、入力側テンプレート202と出力側テンプレート210とを別々の画面で択一的に表示するようにすれば、そのような入力信号経路と出力信号経路とを誤認することによるファンクションブロックの配置誤りを一層確実に防止することができる。
なお、以上説明した図14及び図19において、D1は画面を垂直方向へとスクロールするためのスクロールバー、D2は前の画面へと強制的に戻すための「戻る」ボタン、D3は次の画面へと強制的に進ませるための「次へ」ボタン、D4は様々なコマンドをキャンセルするためのキャンセルボタンである。
スクロールバーD1の存在からも明らかなように、入力側テンプレート202及び出力側テンプレート210は、必要とする入力端子が8点、16点、32点、64点・・・といったように増加するのに合わせて、任意の長さ垂直方向へと延長することができ、その場合にはスクロールバーD1の操作によって、画面から隠れた特定の行をプログラミングフィールド200内に引き寄せることができる。
なお、本発明においては、以上説明した入力側テンプレート202及び出力側テンプレート210において、様々な原因によるプログラミングミスを防止するために、先に説明したセーフティロジックウィザードが採用されている。このセーフティロジックウィザードの内容については、後に図8〜図13の図表を参照しながら詳細に説明する。
図5に戻って、安全入出力端子設定の記憶が完了すると(ステップ102)、続いて、図14に示されるように、セーフティロジックウィザードの適用された入力側テンプレート202の表示が行われ(ステップ103)、その後、本発明の要部であるところの入力側回路図データ生成処理(ステップ104)が実行される。この入力側回路図データ生成処理は、セーフティロジックウィザードの支援の下に行われる。
この入力側回路図データ生成処理(ステップ104)は、図5に示されるように、入力側テンプレート上へのFB配置のためのユーザアクションが行われるたびに(ステップ104a)、予め定義した「配置列」にしたがってFBを配置しているかどうかを判定し、予め定義した「配置列」にしたがってFBを配置している場合に限り、そのFBの配置内容を記憶(登録)する処理(ステップ104b)を、ユーザ側のFB配置継続意思が継続する限り(ステップ104c)、繰り返すものである。
ここで、判定基準となる予め定義した「配置列」とは、各ファンクションブロックを入力側テンプレート202上のどの列に配置すべきかを定義するものであって、例えば、図8に示されるように、安全プログラムテンプレートデータ(入力側)としてワークRAM14等に格納されたものである。
図8に示されるように、この安全プログラムテンプレートデータ(入力側)は、各列(1列目、2列目、3列目・・・)毎に、その列に格納が許容されるファンクションブロックの「種別名」(入力系ファンクションブロック等)と、その「種別名」に包含される個々のファンクションブロックのリストを互いに関連づけて表形式に記憶することで構成されたものである。
具体的には、1列目には、入力系ファンクションブロックが格納されるべきものとされ、そのようなファンクションブロックには、不使用ファンクションブロック(Not Used)、非常停止スイッチファンクションブロック、セーフティライトカーテンファンクションブロック等が含まれる。2列目には、入力無効化ファンクションブロックが格納されるべきものとされ、この入力無効化ファンクションブロックには、不使用ファンクションブロック(Not Used)、論理和演算ファンクションブロック(OR)、論理積及び論理和演算ファンクションブロック(AND+OR)等が含まれる。3列目には、セット/リセットファンクションブロックが配置されるべきものとされ、このセット/リセットファンクションブロックには、不使用ファンクションブロック(Not Used)、マニュアルリセットファンクションブロック(Low−High−Low信号)、マニュアルリセットファンクションブロック(Rising Edge信号)等が含まれる。
図5へ戻って、ステップ104bの処理においては、ユーザアクション(104a)で指定される「列」及び具体的な「ファンクションブロック名」との組み合わせを、図8に示される安全プログラムテンプレートデータ(入力側)と照合することによって、予め定義した「配置列」にしたがってFBを配置しているか否かを判断する。
図14に示される入力側テンプレート202上において、例えば第1行(R1)の第2列(C2)のブロック配置可能位置に論理和演算ファンクションブロック(FB21)を配置したい場合には、第1行(R1)のプルダウンボタン(PB2)をマウスでクリックする。すると、図15(a)に示されるように、入力側テンプレート202上に重ねるようにして、メニューウィンドウ204が開かれる。
このメニューウィンドウ204には、上下3段にわたって3つのファンクションブロックが表示される。すなわち、これらは、入出力間導通ファンクションブロック(FB01)、論理和演算ファンクションブロック(FB21)、論理積及び論理和演算ファンクションブロック(FB22)である。そして、この状態において、マウスの所定操作などによって、論理和演算ファンクションブロック(FB21)を選択すれば、選択されたファンクションブロック(FB21)が、第1行(R1)と第2列(C2)で特定されるブロック配置可能位置に配置される。
同様に、例えば、第1行(R1)の第3列(C3)に位置するブロック配置可能位置にセット/リセットファンクションブロック(FB31)を配置したい場合には、第3列のプルダウンボタンPB3を操作する。すると、図15(b)に示されるように、メニューウィンドウ205が開かれる。
このメニューウィンドウ205には、上下2段にわたって選択可能なファンクションブロックが表示される。それらは、入出力間導通ファンクションブロック(FB01)及びセット/リセットファンクションブロック(FB31)である。この状態において、マウスのクリック操作などにより、セット/リセットファンクションブロック(FB31)を選択すると、この選択されたファンクションブロック(FB31)は、第1行(R1)の第3列(C3)に位置するブロック配置可能位置へと配置される。一方、この状態から入力無効化条件を設定する場合には、マウスの所定操作によって、さらに、図16に示されるメニューウィンドウ206を開く。
同図に示されるように、このメニューウィンドウ206内には、AND条件設定用の信号名列とOR条件設定用の信号名列とが表示されると共に、それらの信号名列を構成する各信号名の先頭にはチェックボックス列207,208が表示されている。
そのため、図15(a)に示されるメニューウィンドウ204において、OR演算が選択された場合には、図16(a)に示されるように、メニューウィンドウ206内のOR条件設定エリア内において、マウスのクリック操作などでチェックマークを挿入する。これに対して、図15(a)に示されるメニューウィンドウ204において、図示しないAND演算が選択された場合には、図16(b)に示されるように、メニューウィンドウ206内のAND条件領域において、該当する入力信号名のチェックボックス207に対してマウス操作などでチェックマークを挿入する。このような操作によって、入力無効化ファンクションブロックの選択及び入力無効化条件の設定を誰でも簡単に行うことができるのである。
また、セット/リセットファンクションブロックを選択した後、リセット条件の設定を行う場合には、図17に示されるように、メニューウィンドウ209を開くことによって、該当するリセット条件の設定を行う。すなわち、同図(a)に示されるように、メニューウィンドウ209内において、プルダウンボタンD7をマウスで操作すると、リセット条件リストが表示されるから、その中から最適なリセット条件を設定した後、同図(b)に示されるように、OKボタンD8を操作すれば、所望のリセット条件を簡単に設定することができる。なお、リセット条件をやり直すためにキャンセルするのであれば、キャンセルボタンD9を操作すればよい。
このようにして、ファンクションブロックの選択及び各条件の設定を行った後の入力側テンプレートの一例が図18に示されている。同図に示されるように、上述の選択及び指定操作によって、入力系ファンクションブロック、無効化条件ファンクションブロック、及びリセットファンクションブロックを希望通りに配置することができる。
このように、図5に示される入力側回路図データ生成処理(ステップ104)においては、ユーザアクションによって何らかのファンクションブロックが配置されようとするたびに(ステップ104a)、それが予め定義した「配置列」にしたがって配置されようとしているかどうかの判断が行われ、両者が肯定される場合に限って、その希望されるFBの配置内容がロジック回路データ(10b)へと反映されるのに対し、「配置列」が予め定義したものでないと判定されれば、そのようなFBの配置は拒絶され、かつ画面上には所定の警告表示が行われるのである。
そのため、このように、セーフティロジックウィザードの支援の下に行われる入力側回路図データ生成処理によれば、各ファンクションブロックのそれぞれは、適切な「配置列」をもって入力側テンプレート202上に正しく配置されることとなる。
このようにして、入力側テンプレート202上に所望のファンクションブロックを全て配置したならば(ステップ104c NO)、図6へ移って、「次へ」ボタンD3を操作するユーザアクション(ステップ105)を待って、出力側テンプレートに関する処理へと移行する。
この出力側テンプレートに関する処理においては、まず、セーフティロジックウィザードの組み込まれた出力側テンプレート210が、プログラミングフィールド201に表示される(ステップ106)。
こうして、ウィンドウ200内のプログラミングフィールド201に表示された出力側テンプレート210の一例が図19に示されている。先に説明したように、この出力側テンプレートは、行(R1,R2,R3,R4・・・)と列(C4,C5,C6)との各交点にそれぞれ対応するようにしてブロック配置可能位置(横長長方形状の領域)が定義されると共に、行方向の左側から右側へ向けて出力信号の流れが定義されている。
各列(C4,C5,C6)のそれぞれは、出力信号に関する所定種別のファンクションブロックに割り当てられている。具体的に言えば、この例にあっては、初段に位置する列(C4)は出力条件ファンクションブロックに、次の列(C5)は溶着チェック(EDM)ファンクションブロックに、さらに次の列(C6)は端子モードファンクションブロックにそれぞれ割り当てられている。
図6に戻って、出力側テンプレートの表示に続いて(ステップ106)、セーフティロジックウィザードの支援の下に行われる出力側回路図データ生成処理(ステップ107)が実行される。
この出力側回路図データ生成処理(ステップ107)は、先に説明した入力側回路図データ生成処理と同様であって、出力側テンプレート210上へのFB配置のためのユーザアクションが行われるたびに(ステップ107a)、予め定義した「配置列」にしたがってFBを配置しているかの判断を行い、その判断が肯定される場合に限り、そのようにして配置されようとするFBの配置内容を記憶(登録)する処理(ステップ107b)を、出力側のFB配置が継続される限り(ステップ107c YES)、繰り返す。これに対して、上記の判断が否定される場合には(ステップ107b NO)、そのようなFBの配置を拒絶すると共に、画面上に所定の警告表示を行うようにしたものである。
ここで、予め定義した「配置列」にしたがってFBを配置しているか否かの判断は、この例にあっては、図9に示される安全プログラムテンプレートデータ(出力側)の内容に基づいて行われる。すなわち、図9に示されるように、この安全プログラムテンプレートデータ(出力側)は、各列毎に、その列に配置が許容されるファンクションブロックの種別名称、及びその種別名称に包含される具体的なファンクションブロックのリストとを互いに関連づけて記憶することにより構成されている。
すなわち、図示の例にあっては、1列目には出力条件ファンクションブロックが配置可能とされると共に、この出力条件ファンクションブロックには不使用ファンクションブロック(Not Used)、論理積演算ファンクションブロック(AND)などが含まれるように設定されている。また、第2列目には溶着チェック(EDM)ファンクションブロックが配置可能とされると共に、この溶着チェック(EDM)ファンクションブロックには、不使用ファンクションブロック(Not Used)、EDMファンクションブロックなどが含まれるように設定されている。さらに、第3列目には端子モードファンクションブロックが配置可能とされると共に、この端子モードファンクションブロックには不使用ファンクションブロック(Not Used)、マスタからの受信データ(リモートI/O)、ロジックからの出力、補助出力が含まれるように設定されている。
ここで、マスタからの受信データとは、当該安全コントローラが通信マスタユニットを介してリモートI/Oターミナル(スレーブ)と接続されるような構成の場合、当該リモートI/Oターミナル(スレーブ)から通信マスタが受信したデータを出力することを意味している。また、ロジックからの出力とは、当該安全コントローラ内部のロジック演算による演算結果を出力することを意味している。さらに、補助出力とは、当該安全コントローラからの出力を分岐して補助出力とすることを意味している。
そして、出力側テンプレート上へのFB配置のための何らかのユーザアクションが検出されるたびに(ステップ107a)、そのユーザアクションにより指定される「ブロック配置可能位置」と「ファンクションブロック名」とを図9に示される安全プログラムテンプレートデータ(出力側)と照合することによって、その配置されようとするFBが、予め定義した「配置列」にしたがって配置されるか否かの判断を行うものである。
これをより具体的に説明すると、いま仮に、図19に示される出力側テンプレート210を前提として、行(R1)と列(C5)とで特定されるブロック配置可能位置に、溶着チェック(EDM)ファンクションブロックを配置する場合を想定する。
このような場合には、まず、行(R1)のプルダウンボタンPB5をマウスで操作する。すると、図20(a)に示されるように、出力側テンプレート210上に重ねるようにしてメニューウィンドウ211が開かれる。このメニューウィンドウ211内には、上下2段にわたって、2個のファンクションブロックが表示されている。すなわち、それらは、出力側分岐ファンクションブロックFB51とEDMファンクションブロックFB52である。ここでユーザは、マウス操作で、EDMファンクションブロック(FB52)を選択する。すると、この選択されたファンクションブロック(FB52)は、行(R1)と列(C5)とで特定されるブロック配置可能位置に配置される。
また、このEDMファンクションブロック(FB52)について、溶着チェック(EDM)フィードバックを設定する場合には、所定のマウス操作によって、図20(b)に示されるように、メニューウィンドウ212を開く。このメニューウィンドウ212内には、プルダウンボタンD10、OKボタンD11、キャンセルボタンD12が配置されている。この状態において、ユーザは、プルダウンボタンD10をマウスで操作することによって、フィードバック信号リストを表示させ、その中から所望のフィードバック信号を選択し、OKボタンD11の操作でこれを確定する。図20(b)の例では、フィードバック信号として、入力信号IN7が選択設定される。
また、行(R1)と列(C6)とで特定されるブロック配置可能位置に二重化処理されたリモートI/Oファンクションブロックを配置する場合には、行(R1)と列(C6)とで特定されるブロック配置可能位置の右側に位置するプルダウンボタンPB6をマウスで操作する。すると、図21(a)に示されるように、出力側テンプレート210に重ねるようにして所定のメニューウィンドウ213が開かれる。
このメニューウィンドウ213内には、上下2段に2個のファンクションブロックが表示される。それらのファンクションブロックは、この例にあっては、二重化対応のリモートI/Oファンクションブロック(FB61)と非二重化対応のロジックファンクションブロック(FB62)である。
ここでユーザは、マウスの操作で、メニュー上から、二重化対応のリモートI/Oファンクションブロック(FB61)を選択する。すると、選択されたファンクションブロック(FB61)は、行(R1)と列(C6)とで特定されるブロック配置可能位置に配置される。
さらに、行(R2)と列(C6)とで特定されるブロック配置可能位置に二重化非対応のロジックファンクションブロック(FB64)を配置する場合には、そのブロック配置可能位置の右側に位置するプルダウンボタンPB6をマウスで操作する。すると、図28(b)に示されるように、出力側テンプレート210に重なるようにしてメニューウィンドウ214が開かれる。
このメニューウィンドウ214内には、上下3段にわたって3個のファンクションブロックが表示されている。それらは、二重化非対応のリモートI/Oファンクションブロック(FB63)、二重化非対応のロジックファンクションブロック(FB64)、及び補助出力ファンクションブロック(FB65)である。ここで、ユーザは、二重化非対応のロジックファンクションブロック(FB64)を選択する。すると、選択されたファンクションブロック(FB64)は、行(R2)と列(C6)とで特定されるブロック配置可能位置に配置される。
出力条件ファンクションブロックの選択並びに設定についても、図20(a)に示される溶着チェック(EDM)ファンクションブロック(FB52)の場合と同様にして、メニューウィンドウを用いた選択設定により行われるのであるが、このようにして選択設定された出力条件ファンクションブロックについて、さらに出力条件の設定を行うに際しては、この実施形態においては、さらにユーザの使い勝手を考慮した優れた機能が備えられている。
すなわち、図23に示されるように、選択設定された出力条件ファンクションブロックについて出力条件を設定する場合には、マウスによる所定操作に応答して出力条件設定用ウィンドウ215が開かれるようになっている。この出力条件設定用ウィンドウ215内には、出力条件であるAND条件の入力候補となる入力信号名が一連に表示されると共に、各入力信号名の頭部には、チェックボックス216が設けられる。そして、出力条件となる入力信号の選択は、このチェックボックス216内にマウスを用いて所定のチェックマークを挿入するだけで行うことができる。この選択を確定するためには、OKボタンD13をマウスで操作するだけでよく、逆に設定を解除するためにはキャンセルボタンD14をマウスで操作すればよいのである。
先に説明したように、この種のプログラミング作業を行う場合には、それに先立って、図28に示されるような安全入出力機器対象表を作成するのが通例であり、この安全入出力機器対象表を頼りとして、出力条件の設定を行うものである。
ここで、図26や図27に示されるような従来のプログラム開発支援装置の場合には、出力条件の設定はファンクションブロック同士を結ぶ配線の描画操作を介して行うものであったので、出力条件が正しく設定されているか否かの検証には、安全入出力対照表と配線図とを照合すると言う煩雑な作業が要求された。
これに対して、本発明の場合には、入力信号と出力信号との論理関係を規定する出力条件の設定操作は、図23に示されるように、メニューウィンドウ215内に表示された一連の入力信号名の中から該当するものを、チェックボックスのチェック操作で選択するものとされている。そのため、出力条件の設定に際しては、図28に示されるような安全入出力機器対象表の通りに、チェックボックス216を選択するだけで、目的とする出力条件の設定を簡単な操作で行うことができる。
また、完成後のプログラムにおいて、出力条件が正しく設定されているか否かを検証するに際しても、メニューウィンドウ215内のチェックボックスの選択状態と予め作成された入出力機器対象表とを照合するだけでよく、図26や図27に示される従来例のように、ファンクションブロック間の配線を辿る必要もないため、そのような検証作業を短時間でかつ容易に成し遂げることができる。
上記のメニューウィンドウ215内に表示される入力信号に関するデータとしては、図11に示される入力機器テーブル内のデータが使用される。この入力機器テーブルは、図14に示される入力側テンプレート202において、入力端子の設定操作、すなわち入力端子にどのような入力機器からの信号が入力されるかを設定するために行われる通常の操作によって設定される。そのため、わざわざ出力条件設定のために、特別な入力情報設定操作は不要である。
そして、メニューウィンドウ215内において、チェックボックスのマウス操作による選択を通じて入力信号名の選択を行うと、図7のフローチャートに示される安全出力条件設定処理が作動することにより、図12に示されるように、出力条件設定テーブルが完成するのである。図7に示される安全出力条件設定処理は、先に説明したセーフティロジックウィザードの支援下に行われる出力回路図データ生成処理107において実行されることとなる。
すなわち、図7のフローチャートに示されるように、安全出力条件の設定選択のためのユーザアクションが行われると(ステップ1071)、入力機器テーブル(図11参照)より安全入力機器が検索されて抽出され(ステップ1072)、これらの抽出された入力機器データに基づいて、図23に示されるメニューウィンドウ215内の入力信号の一覧表示が行われる。すなわち、安全出力条件選択画面表示として、チェックボックス形式にて安全入力端子番号、機器名などが表示されることとなる(ステップ1073)。
この状態において、チェックボックス216にチェックを入れることにより、該当の安全出力条件を選択して、「OK」ボタンを押下するユーザアクションが確認されると(ステップ1074)、こうして選択された安全出力条件の記憶が行われ(ステップ1075)、これが必要回数繰り返されることにより(ステップ1076YES)、図12に示される出力条件設定テーブルが完成するのである。
このようにして、端子モードFB、出力条件FB、及び溶着チェックFBがそれぞれ配置された出力側テンプレートの状態が図18に示されている。同図から明らかなように、上述の選択設定処理によって、各指定されたブロック配置可能位置には、選択されたファンクションブロック(FB62,FB65,FB52,FB41)がそれぞれ配置されていることが理解されるであろう。
最後に、入力側テンプレートにおけるFB配置完了時の確認用画面の説明図が図24に、また出力側テンプレートにおけるFB配置完了時の確認用画面の説明図が図25にそれぞれ示されている。
それらの図から明らかなように、以上の各ファンクションブロック選択並びに設定操作を繰り返すことによって、入力側テンプレート並びに出力側テンプレート上には必要なファンクションブロックが必要な位置に適切に配置されるのである。
このように、図6のフローチャートに示される出力側回路図データ生成処理(ステップ107)においては、予め定義した「配置列」にしたがってFBを配置しているか否かの判断が行われ、予め定義した「配置列」にしたがってFBが配置されていると判定された場合に限り、その配置が希望されるFBの配置内容が記憶(登録)されて、図13に示されるロジック回路データ(10b)が生成される。
図6に戻って、このようにして、出力側テンプレート210上に必要なファンクションブロックの配置が完了したならば、「次へ」ボタンD3の操作に相当するユーザアクションを待って(ステップ107d)、以上のファンクションブロック配置操作で生成された図13に示されるロジック回路データ(10b)は、全ファンクションブロックに関して、安全コントローラが解読可能なデータ形式に変換され(ステップ108〜110)、それら変換されたデータを集合することによって、ダウンロードパラメータ(安全コントローラ用制御プログラム)が生成される(ステップ111)。
こうして生成されたダウンロードパラメータは、従来と同様、通信を介して又は可搬型記録媒体を介して、目的とする安全コントローラへとインストールされることとなる。
以上、図5〜図7を参照して説明したソフトウェア構成によれば、ファンクションブロック配置用のテンプレートの全体は、入力側テンプレート202と出力側テンプレート210とに分離されているため、各テンプレート202,210内の信号経路は、入力信号経路又は出力信号経路に統一されるため、入力信号経路に出力信号対応のファンクションブロックを配置したり、逆に出力信号経路に入力信号対応のファンクションブロックを配置するといったファンクションブロック配置誤りを生じ難い。
また、入力側テンプレート202並びに出力側テンプレート210の何れにおいても、各行には同一の入力信号又は出力信号の経路が存在することとなるため、同一の入力信号又は出力信号に関するファンクションブロックについては各ファンクションテーブル内において同一の行に配置しておきさえすれば、ある信号経路に配置されるべきファンクションブロックを誤って別の信号経路に配置するといったプログラミングミスを生じ難いという利点もある。
また、プログラミングフィールド201上には、入力側テンプレート202と出力側テンプレート210とが択一的に表示されるため、それらを分離しつつも1画面に同時に表示する場合に比べて、上述のプログラミングミスを一層生じ難い。
また、プログラミングフィールド201上に入力側テンプレート202と出力側テンプレート210とを択一的に表示するに際しては、入力側テンプレート202の表示が先でかつ出力側テンプレート210の表示が後となるようにしているため、そのような表示手順に従うだけで、ユーザは、入力側テンプレート202上のファンクションブロックの配置を完了してから、出力側テンプレート210上のファンクションブロックの配置を行うこととなり、一般に出力側テンプレート上のファンクションブロックの配置並びにパラメータ設定には、それよりも先に入力側テンプレート上のファンクションブロックの配置並びにパラメータの設定が必要であることを考慮すると、これによってもプログラミングミスを生じ難いという利点もある。
また、ファンクションブロックを何れかのブロック配置可能位置に配置するに際しては、そのファンクションブロックをその種別に応じて予め定義された「配置列」へと誘導するセーフティロジックウィザードの仕組みが組み込まれているため、このセーフティロジックウィザードの作用によって、1の信号経路内において、複数のファンクションブロックが誤った並びで配列されるといったプログラミングミスは生ずる余地がない。
一方、そのようなセーフティロジックウィザードの作用によって、同一種別のファンクションブロックは必ず同一列に配置されることとなるため、何れかの行においてファンクションブロックを誤って配置し忘れたような場合には、列単位でファンクションブロックの抜けている箇所を探すだけで、この種の安全プログラムの検証を容易に行うことができる。
さらに、出力条件の設定は、図23に示されるように、チェックボックス形式の入力信号一覧表に基づいて行えるため、従前の配線図形式のプログラム開発支援装置とは異なり、安全入出力機器対象表との直接的な照合が可能となるため、プログラミング作業並びにプログラム検証作業の簡素化に資するものである。
このように、以上説明した各実施形態のプログラム開発支援装置によれば、テンプレートの全体は入力側テンプレートと出力側テンプレートとに分離されることから、各テンプレート内においては、同一信号に関する信号経路は同一行に存在することとなる。
また、各テンプレート内の各列(C1〜C6)のそれぞれには、同一種別のファンクションブロックがセーフティロジックウィザードの作用によって配置されるように導かれることとなる。しかも、そのようなセーフティロジックウィザードの作用によって、同種別のファンクションブロックについては、同一列にひとりでに配列されるため、何れかのファンクションブロックを配置し忘れたような場合にも、プログラム完成後においては、各列ごとにファンクションブロックの有無をチェックし、何れかの行にファンクションブロックが存在しなければ、その部分を集中的にチェックすることによって、この種の安全コントローラ用制御プログラムのデバッグを簡単に行うことが可能となる。
そのため、このような入力側テンプレート又は出力側テンプレートの構造によれば、同一信号に関するファンクションブロックについては同一行に配置するといった習慣づけを行うだけで、同一信号経路に配置されるべきファンクションブロックを別の信号経路に誤って配置したり、入力信号経路に配置すべきファンクションブロックを出力信号経路に配置するといったプログラミングミスを確実に防止することができる。
また、単に2つに分離するのみならず、出力側テンプレートに先立って入力側テンプレートをユーザに提示することにより、出力側テンプレート上のファンクションブロックを配置する段においては、既に入力側テンプレート上のファンクションブロックの配置が完了していることとなるから、これによってもユーザによるプログラミングミスを未然に防止することができる。
さらに、出力条件の設定は、図23に示されるように、チェックボックス形式の入力信号一覧表に基づいて行えるため、従前の配線図形式のプログラム開発支援装置とは異なり、安全入出力機器対象表との直接的な照合が可能となるため、プログラミング作業並びにプログラム検証作業の簡素化に資するものである。
なお、以上の実施形態においては、出力条件設定のための入力信号の選択を容易とするためのメニュー表示態様として、入力信号名の一覧とチェックボックスによる選択確認方法との組み合わせを採用したが、これに代えて、入力信号の一覧と反転表示やその他のアクティブ表示による選択確認方法との組み合わせを採用する等々、メニュー表示態様には公知の様々な態様が採用可能であることは言うまでもない。
さらに、入力端子の個数が、16点、32点、64点と言ったように増大する場合には、メニュー表示させる入力信号個数については、所定個数ずつ何回かに分けて表示させたり、あるいは、出力条件候補となり得る入力信号の範囲がある程度論理的に推定でるのであれば、そのように推定される入力信号群を優先的に表示させたり、過去の来歴により出力条件候補となり得る入力信号の範囲がある程度推定でるのであれば、そのように推定される入力信号群を優先的に表示させたりする等々、入力信号名の提示の仕方にも様々な態様が存在することは言うまでもない。