以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
[第1の実施の形態]
<A.情報処理装置200の処理概要>
まず、本実施の形態に従う情報処理装置200の概要について説明する。情報処理装置200は、安全コントローラで実行される安全プログラムを生成する機能を有する。
本明細書において、「安全プログラム」は、予め定められた条件(安全条件)が成立すると出力機器を安全が保たれるように動作させるためのプログラムであり、安全コントローラの処理を定義する命令群を意味する。より具体的には、安全プログラムは、1または複数の入力信号に対して、1または複数の出力信号の値を決定するための命令の組み合わせを含む。
安全プログラムは、安全コントローラの処理を定義するものであれば、どのような実体であってもよい。すなわち、安全プログラムは、1または複数のソースコードとして存在してもよいし、1または複数のオブジェクトコードとして存在してもよいし、安全コントローラのプロセッサで実行可能な形式(実行形式)であってもよい。
また、安全プログラムは、ファンクションブロックダイアグラム(FBD:Function Block Diagram)を用いて記述されていてもよい。あるいは、ラダーダイアグラム(LD:Ladder Diagram)、命令リスト(IL:Instruction List)、構造化テキスト(ST:Structured Text)、および、シーケンシャルファンクションチャート(SFC:Sequential Function Chart)のいずれか、あるいは、これらの組み合わせで記述されてもよい。さらにあるいは、JavaScript(登録商標)やC言語のような汎用的なプログラミング言語で記述されていてもよい。
なお、PLCプログラミングの国際基準IEC 61131-3(JIS B 3503)の普及活動と、ベンダに依存しない標準ファンクションブロックダイアグラムの仕様策定および認定を行う第三者機関であるPLCopen(登録商標)が、technical committee 5において公開している規約に準拠して安全プログラムを作成することが好ましい。
以下の説明では、変数プログラムとして記述された安全プログラムについて例示する。そのため、実際に安全コントローラと安全コンポーネントなどとの間で遣り取りされる信号(典型的には、入力信号および出力信号)を安全プログラム内では、それぞれ「変数」として取り扱うことになる。これらの現実の信号と安全プログラム内の対応する変数とは本質的に同じものであるため、以下の説明では、これらを「信号」と総称することもある。すなわち、本明細書において、「信号」は、現実に遣り取りされる電気信号に加えて、安全コントローラ上でその電気信号に割り当てられた値を参照する変数を含み得る。
図1は、本実施の形態に従う情報処理装置200の概要を機能的な面から説明する模式図である。図1を参照して、情報処理装置200は、その主たる機能として、安全プログラム10の生成機能4を含む。
安全プログラムは、入出力設定230に基づいて生成される。入出力設定230は、各入力機器からの入力信号と各出力機器へ出力する出力信号との間の入出力関係を規定している。典型的には、正常時における入力信号および出力信号の値は、「TRUE」(「1」または「真」)で示される。すなわち、何らかの条件にて安全動作を行う場合には、当該安全動作のトリガとなる入力信号の値が「FALSE」(「0」または「偽」)に変化することで、出力値も「FALSE」となる。「FALSE」の出力値によって、対象の装置が安全動作を行う。
入出力設定230においては、入力機器からの入力信号の値が「TRUE」から「FALSE」に変化したときに安全状態に遷移させる出力機器が「FALSE」(「0」または「偽」)で示されており、動作状態を維持する出力機器が「TRUE」(「1」または「真」)で示されている。ここでいう安全状態とは、出力機器を安全に停止する状態のことをいう。
生成機能4は、入出力設定230に基づいて、安全プログラム10を生成する。安全プログラム10は、入出力設定230に規定されている入力機器のいずれかからの入力信号の値が「TRUE」(第1の入力値)から「FALSE」(第2の入力値)に変化した場合に、当該変化に応答するように入出力設定230に規定されている出力機器の動作状態を安全状態に遷移させる。一例として、入力信号の変化に応答する出力機器には「0」が関連付けられ、入力信号の変化に応答しない出力機器には「1」が関連付けられる。図1の例では、入力機器「A」からの入力信号の値が「TRUE」から「FALSE」に変化したときに、安全プログラム10は、出力機器「α」については動作状態を維持し、出力機器「β」については動作状態を停止状態に遷移させる。また、入力機器「B」からの入力信号の値が「TRUE」から「FALSE」に変化したときに、安全プログラム10は、出力機器「α」については動作状態を停止状態に遷移させ、出力機器「β」については動作状態を維持する。
このように、入力機器と出力機器との間の入出力関係が規定された入出力設定230が与えられると、生成機能4は、当該入出力関係を実現するための信号処理を行うような安全プログラム10を生成する。このような生成機能4が実装されることで、入力機器と出力機器との間の入出力関係に関して安全プログラムの設計が容易になる。
なお、入出力設定230は、後述するように情報処理装置200によって提供されるユーザインターフェイス上で設定されてもよいが、他の情報処理装置で設定された上で情報処理装置200に送られてもよい。すなわち、情報処理装置200としては、入力機器と出力機器との間の入出力関係が規定された入出力設定230から安全プログラム10を生成する機能が少なくとも搭載されていればよい。
<B.安全システム1のシステム構成>
次に、本実施の形態に従う安全システム1のシステム構成について説明する。図2は、安全システム1のシステム構成の一例を示す図である。
図2を参照して、安全システム1は、主として、安全コントローラ100と、情報処理装置200と、設備や機械などを制御する制御装置300とを含む。
制御装置300は、典型的には、PLC(プログラマブルコントローラ)などで構成され、制御対象から取得された入力データに関して、予め定められたユーザプログラムを実行し、それによって算出される出力データに応じて制御対象に指令を与える。図2に示す制御対象として、モータ510およびモータ510を駆動するドライバ512を例示する。制御装置300は、ユーザプログラムに従って、ある駆動開始条件が成立するとモータ510を回転駆動させるために、ドライバ512に駆動指令を出力する。また、ある駆動停止条件が成立するとモータ510の回転駆動を停止させるために、ドライバ512への駆動指令の出力を停止する。
このような制御装置300での制御対象の制御に加えて、典型的には、制御対象に関連する作業者などの安全を確保するなどのために、安全コントローラ100がさらに配置される。安全コントローラ100は、安全機器である入力機器400(セーフティセンサ、セーフティドアスイッチ、セーフティリミットスイッチ、非常停止スイッチ、セーフティスイッチなど)からの入力信号などの関連付けられる、予め定められた条件(安全条件)が成立すると、安全動作を遂行する。
図2に示す例では、ドライバ512への電力供給ライン上に出力機器の一例であるセーフティリレー514が配置されている。ここでいう出力機器とは、入力機器400に対する操作に連動して駆動される機器のこという。セーフティリレー514は、たとえば、電路の遮断するためのコンタクタを駆動する。また、モータ510により駆動される装置の周辺に危険エリアが設定されており、その危険エリアの周辺に入力機器400が配置されている。入力機器400は、たとえば、人の存在や侵入を検知する検知機器、非常時の操作を受付ける入力機器などを含む。セーフティリレー514は、入力機器400からの入力信号を受けることで駆動する。
一例として、非常停止スイッチとしての入力機器400が作業者による非常停止操作を受けると、安全コントローラ100は、非常停止スイッチからの停止信号に応答して、対応するセーフティリレー514に制御信号を出力する。セーフティリレー514は、安全コントローラ100からの制御信号に応答して動作し、モータ510を駆動するドライバ512への電力供給を遮断する。その結果、モータ510が強制的に停止される。このようなモータ510の強制的な停止によって、作業者の安全を確保することができる。
他の例として、セーフティセンサとしての入力機器400は、作業者が危険エリアへ進入したことを検知する。作業者が危険エリアへ進入すると、セーフティセンサによりその作業者の進入が検知される。安全コントローラ100は、セーフティセンサからの検知信号に応答して、対応するセーフティリレー514に制御信号を出力する。セーフティリレー514は、安全コントローラ100からの制御信号に応答して動作し、モータ510を駆動するドライバ512への電力供給を遮断する。その結果、モータ510が強制的に停止される。このようなモータ510の強制的な停止によって、危険エリアへ進入した作業者の安全を確保することができる。
図2に示す構成例においては、安全コントローラ100および制御装置300は、制御系ネットワークNW1を介して接続されており、互いが内部的に保持するデータを遣り取りすることができる。また、安全コントローラ100および制御装置300は、情報系ネットワークNW2を介して、情報処理装置200と接続されている。
情報処理装置200は、安全コントローラ100または制御装置300で実行されるプログラムの開発、プログラムの実行状態の確認、プログラムの変更などの機能を提供するためのサポートツールである。情報処理装置200は、たとえば、PC(Personal Computer)、タブレット端末、スマートフォン、または、その他の通信端末である。
<C.装置構成>
次に、図3および図4を参照して、本実施の形態に従う安全システム1を構成する各装置の装置構成について説明する。
(c1:安全コントローラ100)
図3は、本実施の形態に従う安全コントローラ100の装置構成の一例を示す模式図である。図3を参照して、安全コントローラ100は、プロセッサ102と、主メモリ104と、フラッシュメモリ106とを含む演算処理部108、および、各種インターフェイスからなる。
演算処理部108において、プロセッサ102は、フラッシュメモリ106に格納されているシステムプログラムおよび安全プログラムなどを主メモリ104に展開して実行することで、制御対象に応じた機能安全を実現する。
安全コントローラ100は、インターフェイスとして、制御系ネットワークインターフェイス110と、情報系ネットワークインターフェイス112と、フィールドバスインターフェイス114と、メモリカードインターフェイス116と、ローカル通信インターフェイス120と、内部バスインターフェイス122とを含む。
制御系ネットワークインターフェイス110は、制御系ネットワークNW1(図2参照)を介して他の装置との通信を仲介する。制御系ネットワークNW1としては、たとえば、EtherCAT(登録商標)などの定時性が保証されるネットワークプロトコルが好ましい。
情報系ネットワークインターフェイス112は、情報系ネットワークNW2(図2参照)を介して他の装置との通信を仲介する。情報系ネットワークNW2としては、たとえば、EtherNet/IP(登録商標)などの定時性が保証されるネットワークプロトコルが好ましい。
フィールドバスインターフェイス114は、図示しないフィールドバスを介して接続される入出力ユニットとの通信を仲介する。フィールドバスとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などの定時性が保証されるネットワークプロトコルが好ましい。
メモリカードインターフェイス116は、メモリカード118を装着可能に構成されており、メモリカード118からのデータ読出しおよびメモリカード118へのデータ書込みを行う。
ローカル通信インターフェイス120は、情報処理装置200または他の装置と直接接続するインターフェイスであり、たとえば、USB(Universal Serial Bus)などが用いられる。
内部バスインターフェイス122は、内部バスを介して安全コントローラ100に直接装着される入出力ユニットとの間の通信を仲介する。
(c2:情報処理装置200)
次に、情報処理装置200のハードウェア構成について例示する。図4は、本実施の形態に従う情報処理装置200のハードウェア構成の一例を示す模式図である。
情報処理装置200は、ノートPC、タブレット端末、スマートフォンなどの携帯端末であってもよいし、デスクトップ型のPCなどの非携帯端末であってもよい。
情報処理装置200は、主たるコンポーネントとして、オペレーティングシステム(OS:Operating System)および後述するような各種プログラムを実行するプロセッサ202と、プロセッサ202でのプログラム実行に必要なデータを格納するための作業領域を提供する主メモリ204と、キーボードやマウスなどのユーザ操作を受付ける操作ユニット206と、ディスプレイ、各種インジケータ、プリンタなどの処理結果を出力する出力ユニット208と、外部ネットワークと通信するためのネットワークインターフェイス(I/F:Inter Face)210と、光学ドライブ212と、安全コントローラなどと通信するためのローカル通信インターフェイス(I/F)216と、補助記憶装置220とを含む。これらのコンポーネントは、内部バス218などを介してデータ通信可能に接続される。
情報処理装置200は、光学ドライブ212を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体(たとえば、DVD(Digital Versatile Disc)など)のコンピュータ読取可能な記録媒体214から、各種プログラムを読取って補助記憶装置220などにインストールする。本実施の形態に従う安全プログラムの生成処理は、安全コントローラに対する設定、プログラミング、デバッグなどの機能を提供する開発環境プログラムの一部として提供されてもよい。
情報処理装置200で実行される各種プログラムは、コンピュータ読取可能な記録媒体214を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従う安全プログラムの生成機能に係るプログラムは、OSが提供するモジュールの一部を利用する形で実現される場合もある。このような場合には、本実施の形態に従う安全プログラムの生成機能の実現に必要な全てのソフトウェアモジュールが配布されるのではなく、その一部のみが配布されることになる。このような場合であっても、本発明の技術的範囲に包含されることは自明である。また、本実施の形態に従う安全プログラムの生成機能が、他のプログラムまたはソフトウェアの一部として実装されてもよい。
補助記憶装置220は、たとえば、HDD(Hard Disk Drive)やSSD(Flash Solid State Drive)などで構成され、プロセッサ202で実行されるプログラムを格納する。具体的には、補助記憶装置220は、後述するような処理を提供するプログラムとして、安全プログラム10(ソースプログラム)からプロセッサ202で実行可能なコード(実行モジュール)を生成する実行プログラム222と、予め用意されている複数のファンクションブロック224とを含む。補助記憶装置220には、安全プログラム10に関連付けられた各種設定226が格納される。
また、補助記憶装置220は、入力機器からの入力信号に応答して出力機器を安全に動作させるための安全プログラム10と、後述の入力機器設定227と、後述の出力機器設定228と、後述のリセット機器設定229と、上述の入出力設定230とを保持する。
図4には、汎用コンピュータがプログラムを実行することで、本実施の形態に従う安全プログラムの生成機能を実現するが、このような構成に代えて、その全部または一部をハードワイヤード回路で実装してもよい。たとえば、プロセッサ202が上述の各種プログラムを実行することで提供される機能をASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)を用いて実装してもよい。
(c3:制御装置300)
本実施の形態に従う制御装置300は、図3に示す安全コントローラ100と同様の装置構成を有しているので、詳細な説明は繰り返さない。なお、安全コントローラ100は、プロセッサなどの二重化やセーフティ用のモジュールが採用されているが、一般的には、制御装置300にはそのような構成は採用されていない。また、制御装置300では、上述の安全プログラムではなく、ユーザプログラムが実行される。
<D.情報処理装置200の機能構成>
図5~図15を参照して、情報処理装置200の機能について説明する。図5は、情報処理装置200の機能構成の一例を示す図である。
図5に示されるように、情報処理装置200は、主要なハードウェア構成として、プロセッサ202と、出力ユニット208(図4参照)の一例であるディスプレイ208Aと、補助記憶装置220とを含む。プロセッサ202は、機能構成として、提供部282と、取得部284と、生成部286とを含む。生成部286は、入力FB生成部288と、中間FB生成部290と、出力FB生成部292とで構成される。
以下では、これらの機能構成について順に説明する。
(D1.提供部282)
提供部282は、安全プログラム10を設計するためのアプリケーションが起動されたことに基づいて、安全プログラム10の設計画面をディスプレイ208Aに表示する。図6は、安全プログラム10の設計画面の一例であるユーザインターフェイス600を示す図である。
ユーザインターフェイス600は、入力機器からの入力信号(入力変数)に係る設定値を表示する入力設定表示エリア610と、出力機器への出力信号(出力変数)に係る設定値を表示する出力設定表示エリア620と、入力変数と出力変数との対応関係を設定する入出力関係設定エリア630とを含む。
入力設定表示エリア610では、対象の安全プログラムに含まれる入力変数に係る情報の登録および表示が可能になっている。出力設定表示エリア620では、対象の安全プログラムに含まれる出力変数に係る情報の登録および表示が可能になっている。入力設定表示エリア610および出力設定表示エリア620での変数登録については、変数登録ボタン606が選択されることで有効化される。
入力設定表示エリア610は、予め設定されている入力変数の変数名を表示する変数名表示欄612と、対応する入力変数についてのコメントを表示するコメント表示欄614と、対応する入力変数についてのリセット種別を表示するリセット種別表示欄616と、対応する入力変数についての入力タイプを表示する入力タイプ表示欄618とを含む。入力タイプ表示欄618における入力タイプの指定により、入力機器からの入力信号を二重化して受けることを有効にするか否かが設定される。すなわち、入力タイプ表示欄618において同一の入力機器に対して2つの入力変数を割り当てるか否かが設定される。
出力設定表示エリア620は、予め設定されている出力変数の変数名を表示する変数名表示欄622と、対応する出力変数についてのコメントを表示するコメント表示欄624とを含む。
入出力関係設定エリア630は、入力機器と出力機器との間の入出力関係の設定を受付ける。入出力関係設定エリア630は、対象となる入力変数を表示する入力変数表示エリア634と、対応する入力変数についてのコメントを表示するコメント表示欄636と、対応する入力変数についてのリセット種別を表示するリセット種別表示欄638と、入力機器と出力機器との間の入出力関係を設定するための設定領域群640とを含む。
設定領域群640における各設定領域は、マトリクス状に配置されている。設定領域群640における各設定領域は、入力設定表示エリア610において登録された入力機器と、出力設定表示エリア620において登録された出力機器との組み合わせの数だけ用意されている。設定領域群640の列方向には、入力設定表示エリア610に示される入力機器(入力変数)が関連付けられている。設定領域群640の行方向には、出力設定表示エリア620に示される出力機器(出力変数)が関連付けられている。設定領域群640を構成する各設定領域は、当該設定領域に関連付けられている出力機器が当該設定領域に関連付けられている入力機器からの入力信号の値の変化に応答するか否かを示す設定を受付ける。すなわち、設定領域群640は、入力機器からの入力信号の変化に応答する出力機器の設定を各入力機器について受付けるように構成されている。
設定領域群640は、1つの入力変数に対して、対象となる出力変数の数だけ出力値が設定されるようになっている。図6に示すユーザインターフェイス600の例では、出力設定表示エリア620に表示されている4つの出力変数に対応して、4つの欄が設けられており、各欄に入出力設定を設定できるようになっている。ユーザは、事前の安全設計に基づいて、設定領域群640にしかるべき値を設定することになる。なお、図6の設定領域群640において、「0」は、対応の入力変数が「FALSE」になった場合に、対応の出力変数も「FALSE」へ変化することを意味し、「1」は、対応の入力変数が「FALSE」になった場合であっても、対応の出力変数が「TRUE」を維持することを意味する。
たとえば、ある非常停止ボタンAが危険エリアAに配置されている装置Aの安全動作をトリガするものであり場合には、当該非常停止ボタンAからの入力信号に対応する入力変数に関連付けて、危険エリアAにある装置Aの非常停止を司る安全リレーへの指令を示す出力変数については、安全動作を示す「FALSE」、つまり「0」が入出力設定として設定される。一方で、非常停止ボタンAは危険エリアBに向けられるものではなく、危険エリアBには別の非常停止ボタンBが設けられる場合には、非常停止ボタンAに対する操作によって、危険エリアBの装置Bが停止することは予定されていない。そのため、当該非常停止ボタンAからの入力信号に対応する入力変数に関連付けて、危険エリアBにある装置Bの非常停止を司る安全リレーへの指令を示す出力変数については、安全動作しないことを示す「TRUE」、つまり「1」が入出力設定として設定される。このように、設定領域群640において、入力変数の各々とそれぞれの出力変数との間の関係が設定される。
OKボタン651が押下されると、入力設定表示エリア610に登録された入力機器に関する情報と、出力設定表示エリア620に登録された出力機器に関する情報と、入出力関係設定エリア630に設定された設定内容とが入出力設定230(図4参照)に反映される。同時に、リセット種別表示欄638に設定された設定内容がリセット機器設定229に反映される。キャンセルボタン652が押下されると、ユーザインターフェイス600に設定された設定内容が図7に示される入出力設定230に反映されずに、ユーザインターフェイス600が閉じされる。
図7は、図6に示される設定内容に基づいて生成された入出力設定230の一例を示す図である。図7に示されるように、入出力設定230は、入力機器情報230Aと、二重化情報230Bと、出力機器情報230Cと、入出力情報230Dとを含む。
入力機器情報230Aにおいて、入力設定表示エリア610に登録された入力変数が割り当てられている入力機器が反映される。二重化情報230Bにおいて、入力タイプ表示欄618における設定内容が反映される。出力機器情報230Cにおいて、出力設定表示エリア620に登録された出力変数が割り当てられている出力機器が反映される。入出力情報230Dにおいて、設定領域群640において設定された入出力関係が反映される。
(D2.取得部284)
次に、図5に示される取得部284の機能について説明する。
取得部284は、安全プログラム10の生成命令を受付けたことに基づいて、補助記憶装置に記憶されている入出力設定230を取得する。安全プログラム10の生成命令は、たとえば、ユーザインターフェイス600上のOKボタン651が押下されたタイミングで発せられてもよいし、その他のユーザ操作に基づいて発せられてもよい。
取得された入出力設定230は、入力FB生成部288と、中間FB生成部290と、出力FB生成部292とに出力される。
(D3.生成部286)
次に、図8を参照して、図5に示される生成部286の機能について説明する。図8は、生成部286によって生成される安全プログラム10の概略を示す図である。
図8に示されるように、生成部286は、上述のユーザインターフェイス600(図6参照)において設定された入出力設定230(図7参照)に基づいて、入力機器からの入力信号を入力として受ける入力FBと、入力FBからの入力信号に対して論理演算を行う中間FBと、中間FBからの中間信号に対して所定の演算を行い、演算結果として対応する出力機器に出力信号を出力する出力FBとを生成する。生成された入力FB、中間FB、出力FBによって安全プログラム10が構成される。
より具体的には、生成部286は、入出力設定230に規定されている各入力機器について入力FBを生成する。図7に示される入出力設定230から入力FBが生成される場合、図8に示されるように、6つの入力FBが生成される。各入力FBには、上述のユーザインターフェイス600(図6参照)の変数名表示欄612に設定された入力変数が入力として割り当てられる。その結果、入力変数IN_A~IN_Fがそれぞれ入力FBに割り当てられる。各入力FBは、割り当てられた入力変数の変化に対して予め定められた演算を実行する。当該演算結果は、出力として割り当てられている第1中間変数MD1_A~MD1_Fに反映される。
典型的には、正常時における入力変数IN_A~IN_Fの値は「TRUE」となり、第1中間変数MD1_A~MD1_Fの値も「TRUE」となる。すなわち、何らかの条件にて安全動作を行う場合には、当該安全動作のトリガとなる入力変数IN_A~IN_Fの値が「FALSE」に変化すると、対応する第1中間変数も「FALSE」に変化する。
生成部286は、さらに、入出力設定230に規定されている入力機器と出力機器との間の入出力関係に基づいて、中間FBを生成する。中間FBは、入出力設定230に規定されている各出力機器について生成される。図7に示される入出力設定230から中間FBが生成される場合、図8に示されるように、4つの中間FBが生成される。各中間FBには、入力として、第1中間変数MD1_A~MD1_Fの少なくとも1つが割り当てられる。割り当てられる第1中間変数は、入出力設定230に規定されている入出力関係に基づいて決定される。典型的には、入出力設定230において「FALSE」(すなわち、0)が設定されている入力機器と出力機器との組み合わせについては、接続関係が構築される。
図7の例では、出力機器の一例であるセーフティリレー「1」については全入力機器と接続することが規定されているので、セーフティリレー「1」用の中間FBには、図8に示されるように、第1中間変数MD1_A~MD1_Fの全てが割り当てられる。
また、図7の例では、出力機器の一例であるセーフティリレー「2」については、「非常停止スイッチ1」と「セーフティライトカーテン1」と「セーフティドア」と接続することが規定されているので、セーフティリレー「2」用の中間FBには、図8に示されるように、第1中間変数MD1_A1,MD1_C1,MD1_E1が割り当てられる。
また、図7の例では、出力機器の一例であるセーフティリレー「3」については全入力機器と接続することが規定されているので、セーフティリレー「3」用の中間FBには、図8に示されるように、第1中間変数MD1_A~MD1_Fの全てが割り当てられる。
また、出力機器の一例であるセーフティリレー「4」については全入力機器と接続することが規定されているので、セーフティリレー「4」用の中間FBには、図8に示されるように、第1中間変数MD1_A~MD1_Fの全てが割り当てられる。
典型的には、中間FBは、割り当てられた第1中間変数の値についてAND演算を実行する。当該演算結果は、各中間FBに出力として割り当てられている第2中間変数MD2_A~MD2_Dに反映される。一例として、第1中間変数MD1_Aの値が「TRUE」から「FALSE」に変化した場合には、第2中間変数MD2_A~MD2_Dの値が「TRUE」から「FALSE」に変化する。第1中間変数MD1_Bの値が「TRUE」から「FALSE」に変化した場合には、第2中間変数MD2_A,MD2_C,MD2_Dの値が「TRUE」から「FALSE」に変化し、第2中間変数MD2_Bの値は「TRUE」に維持される。
生成部286は、さらに、入出力設定230に規定されている各出力機器について出力FBを生成する。図7に示される入出力設定230から出力FBが生成される場合、図8に示されるように、4つの出力FBが生成される。各出力FBは、割り当てられた第2中間変数の変化に対して予め定められた演算を実行する。当該演算結果は、各出力FBに出力として割り当てられている出力変数OUT_A~OUT_Dに反映される。典型的には、第2中間変数MD2_A~MD2_Dの値が「TRUE」から「FALSE」に変化した場合に、出力変数OUT_A~OUT_Dの値は「TRUE」から「FALSE」に変化する。出力変数の値が「TRUE」から「FALSE」に変化した場合、当該出力変数の出力先の出力機器の動作状態が安全状態に遷移する。出力変数の値が「TRUE」である場合には、当該出力変数の出力先の出力機器の動作状態が維持される。
(D4.入力FB生成部288)
上述のように生成部286は、入出力設定230に基づいて、入力FBと、中間FBと、出力FBとを生成する。入力FBは、図5に示される入力FB生成部288によって生成される。以下では、図9~図11を参照して、入力FB生成部288の機能について説明する。
入力FB生成部288は、図9に示される入力機器設定227を参照して、入出力設定230に規定されている各入力機器に対応する入力FBを特定し、当該入力FBを安全プログラム10に含める。
図9は、入力機器設定227のデータ構造の一例を示す図である。入力機器設定227において、各入力機器について使用される入力FBが一意に関連付けられている。入力FB生成部288は、入力機器設定227に規定されている入力機器の中から、入出力設定230(図7参照)において設定された入力機器に一致するものを特定し、当該入力機器に関連付けられている入力FBを取得する。
図10は、入力機器設定227から取得された入力FBの一例を表わす図である。図10には、取得された入力FBの1つとして非常停止FB12が示されている。非常停止FB12は、非常停止ボタンからの入力信号を処理する論理である。図11は、入力機器設定227から取得された入力FBの他の例を表わす図である。図11には、取得された入力FBの1つとして非常停止FB14が示されている。非常停止FB14は、ライトカーテンからの入力信号を処理するための論理である。
非常停止FB12,14の各々は、その入力として、ファンクションブロックの処理の有効/無効を設定する「Activate」と、非常停止に係る入力機器から出力される信号が入力される「S_EStopIn」と、リセット後のプログラム実行を開始するか否かを設定する信号が入力される「S_StartReset」と、安全動作後のリセット種別を設定する信号が入力される「S_AutoReset」と、安全動作後の動作をリセットする信号が入力される「Reset」との、合計5つを有している。
また、非常停止FB12,14の各々は、その出力として、ファンクションブロックが運転状態であるか否か示す信号を出力する「Ready」と、安全動作を指示する信号を出力する「S_EStopOut」と、何らかのエラーの発生を示す信号を出力する「Error」と、発生したエラーの内容に対応するコードを出力する「DiagCode」との、合計4つを有している。
本実施の形態において、安全プログラム10では、正常時における入力値および出力値を「TRUE」(「1」または「真」)とする。すなわち、何らかの条件にて安全動作を行う場合には、当該安全動作のトリガとなる入力値が「FALSE(「0」または「偽」)」に変化することで、出力値も「FALSE」となり、「FALSE」の出力値によって、対象の装置が安全動作を行う。
入力信号および出力信号の初期値として設定される「TRUE」は、安全プログラム10を実行する安全コントローラに供給される電源が喪失したときと同様のメモリの状態において示される値(すなわち、「FALSE」)とは異なる値が用いられる。すなわち、安全コントローラの不揮発性メモリに電荷などが保持されていない状態において示される値とは異なる値を用いることで、ハードウェアの故障などにおいて、安全動作が行われる、いわゆるフェールセーフを実現できる。
なお、正常時および非常時における入力値および出力値に対する値の割り付けは設計事項であり、どのようなものであってもよい。但し、上述したようなフェールセーフの観点などからは、正常時の入力値および出力値を「TRUE」とすることが好ましい。
非常停止FB12の入力「S_EStopIn」には、非常停止ボタンから出力される信号を示す変数「EmergencyStopSwitch1」が割り当てられ、入力「Reset」には、安全コントローラに対するシステムリセットを示す変数「ResetSwitch」が割り当てられている。これら割り当ては、上述のユーザインターフェイス600の入力設定表示エリア610に登録された設定内容に基づいて行われる。なお、変数「EmergencyStopSwitch1」は、図10の入力変数IN_Aに対応する。
非常停止FB14の入力「S_EStopIn」には、ライトカーテンから出力される信号を示す変数「LightCurtain1」が割り当てられ、入力「Reset」には、安全コントローラに対するシステムリセットを示す変数「ResetSwitch」が割り当てられている。これら割り当ては、上述のユーザインターフェイス600の入力設定表示エリア610に登録された設定内容に基づいて行われる。なお、変数「LightCurtain1」は、図10の入力変数IN_Cに対応する。
非常停止FB12,14の「Activate」にはいずれも「TRUE」、すなわち処理の有効が設定されており、「S_StartReset」にはいずれも「TRUE」、すなわちリセット後のプログラム実行が設定されており、「S_AutoReset」にはいずれも「FALSE」、すなわちリセット種別として「マニュアルリセット」が設定されている。これら割り当ては、上述のユーザインターフェイス600(図6参照)のリセット種別表示欄616に登録された設定内容に基づいて行われる。
「S_AutoReset」に対するリセット種別は、上述のユーザインターフェイス600(図6参照)のリセット種別表示欄616において設定される。リセット種別は、「オートリセット」および「マニュアルリセット」を含む。
以下では、図12を参照して、「オートリセット」および「マニュアルリセット」について説明する。図12は、本実施の形態に従う安全プログラム10に含まれる非常停止FBに設定されるリセット種別を説明するための図である。
図12(A)は、リセット種別として「オートリセット」が設定されている場合を示し、図12(B)は、リセット種別として「マニュアルリセット」が設定されている場合を示す。
図12(A)に示す「オートリセット」では、非常停止FBの入力「S_EStopIn」が「TRUE」から「FALSE」に変化すると、非常停止FBの出力「S_EStopOut」が「TRUE」から「FALSE」に変化する。この「S_EStopOut」の変化によって、安全動作が行われる。その後、非常停止FBの入力「S_EStopIn」が「FALSE」から「TRUE」に復帰すると、リセット動作も併せて実行される。すなわち、非常停止FBの入力「S_EStopIn」に連動して、非常停止FBの出力「S_EStopOut」も変化することになる。
図12(B)に示す「マニュアルリセット」では、非常停止FBの入力「S_EStopIn」が「TRUE」から「FALSE」に変化して、非常停止FBの出力「S_EStopOut」が「TRUE」から「FALSE」に変化した後、非常停止FBの入力「S_EStopIn」が「FALSE」から「TRUE」に復帰したとしても、非常停止FBの出力「S_EStopOut」が「FALSE」に維持される。この状態において、非常停止FBの入力「Reset」が「FALSE」から「TRUE」に変化することで、はじめて非常停止FBの出力「S_EStopOut」は「FALSE」から「TRUE」に変化する。
「オートリセット」は、たとえば、ライトカーテンなどの安全コンポーネントからの入力信号が「FALSE」になっている間だけ安全動作を行うような場合などに好適である。たとえば、人が危険エリアに侵入している間だけ装置を停止させ、それ以外の状態では装置を動作させるような状況に用いることができる。このような「オートリセット」を設定することで、作業者に対する安全を確保しつつ、タクトタイムへの影響を低減できる。
「マニュアルリセット」は、一般的なリセット種別であり、非常停止ボタンなどの安全コンポーネントが操作されて、安全動作が行われた後、リセットには所定の復帰操作を必要とするような場合に好適である。たとえば、非常停止ボタンが操作されて、装置が作業途中で停止した場合などには、当該装置を初期位置に戻した上で、リセットすることが好ましい。
このように、リセット種別としては、入力信号の値が「FALSE」(第2の入力値)から「TRUE」(第1の入力値)に戻ったときに、対応する出力信号の出力値を連動して元の値に戻すことを示す「オートリセット」(第1の種別)と、予め定められたリセット条件が成立するまでは出力信号の出力値を元の値に戻さないことを示す「マニュアルリセット」(第2の種別)とを含む。
(D5.中間FB生成部290)
上述のように生成部286は、入出力設定230に基づいて、入力FBと、中間FBと、出力FBとを生成する。中間FBは、図5に示される中間FB生成部290によって生成される。以下では、図13を参照して、中間FB生成部290の機能について説明する。
中間FB生成部290は、図7に示される入出力設定230に規定されている入力機器と出力機器との入出力関係に基づいて、中間FBを生成する。図13は、中間FB生成部290によって生成された中間FBの1つを表わす図である。図13には、生成された中間FBの1つとしてAND演算子16A,16Bが示されている。
AND演算子16A,16Bは、入出力設定230に規定されているセーフティリレー「1」(図7参照)に向けて生成されたものである。上述のように、入出力設定230において「FALSE」(すなわち、0)が設定されている入力機器と出力機器との組み合わせについては、接続関係が構築される。図7に示されるセーフティリレー「1」については全入力機器について「0」が関連付けられているので、全入力機器と接続するように中間FBが生成される。その結果、AND演算子16A,16Bには、第1中間変数MD1_A~MD1_Fが割り当てられる。
また、図13に示されるように、中間FBには、出力として、第2中間変数MD2_Aが割り当てられる。第1中間変数MD1_A~MD1_Eのいずれかが「TRUE」から「FALSE」に変化したことに基づいて、第2中間変数MD2_Aの値は、「TRUE」から「FALSE」に変化する。第1中間変数MD1_A~MD1_Eの全てが「TRUE」である場合には、第2中間変数MD2_Aの値は、「TRUE」に維持される。
なお、図13には、AND演算子16A,16Bが2つに分離されている例が示されているが、AND演算子16A,16Bは、1つのAND演算子で表わされてもよい。いずれの場合であっても、演算結果は、同じになる。
(D6.出力FB生成部292)
上述のように生成部286は、入出力設定230に基づいて、入力FBと、中間FBと、出力FBとを生成する。出力FBは、図5に示される出力FB生成部292によって生成される。以下では、図14および図15を参照して、出力FB生成部292の機能について説明する。
出力FB生成部292は、図14に示される出力機器設定228を参照して、入出力設定230に規定されている各出力機器に対応する出力FBを特定し、当該出力FBを安全プログラム10に含める。
図14は、出力機器設定228のデータ構造の一例を示す図である。出力機器設定228において、各出力機器について使用される出力FBが一意に関連付けられている。出力FB生成部292は、出力機器設定228に規定されている出力機器の中から、入出力設定230(図7参照)において設定された出力機器に一致するものを特定し、当該出力機器に関連付けられている出力FBを取得する。
図15は、出力機器設定228から取得された出力FBの1つを表わす図である。図15には、出力機器設定228から取得された出力FBの1つとして出力チェックFB18が示されている。出力チェックFB18は、出力機器が指令どおりに機能しているかをチェックする論理である。典型的には、出力チェックFB18は、EDM(External Device Monitoring)ファンクションブロックである。
出力チェックFB18は、その入力として、ファンクションブロックの処理の有効/無効を設定する「Activate」と、安全コンポーネントの動作指令を示す信号が入力される「S_OutControl」と、安全コンポーネントの状態値を示す信号が入力される「S_EDM1」および「S_EDM2」と、健全性の監視周期を示す値が入力される「MonitoringTime」と、リセット後のプログラム実行を開始するか否かを設定する信号が入力される「S_StartReset」と、安全動作後の状態値をリセットする信号が入力される「Reset」との、合計7つを有している。
また、出力チェックFB18は、その出力として、ファンクションブロックが運転状態であるか否か示す信号を出力する「Ready」と、安全コンポーネントに対する安全動作を指示する最終的な信号を出力する「S_EDM_Out」と、何らかのエラーの発生を示す信号を出力する「Error」と、発生したエラーの内容に対応するコードを出力する「DiagCode」との、合計4つを有している。
出力チェックFB18は、「S_OutControl」への入力値に応じて、「S_EDM_Out」から対象の安全コンポーネントへ与える指令値を変化させるとともに、安全コンポーネントの状態値が指令値と一致しているか否かを判断する。これによって、たとえば、安全リレーの断線などによる不動、および、溶着などによる常時動作などの不具合を検出することができる。
<E.情報処理装置200の制御構造>
図16を参照して、情報処理装置200の制御構造について説明する。図16は、安全プログラムのフローを示す図である。図16の処理は、情報処理装置200のプロセッサ202がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
ステップS10において、プロセッサ202は、安全プログラムの生成指示を受付けたか否かを判断する。プロセッサ202は、安全プログラムの生成指示を受付けたと判断した場合(ステップS10においてYES)、制御をステップS20に切り替える。そうでない場合には(ステップS10においてNO)、プロセッサ202は、ステップS10の処理を再び実行する。
ステップS20において、プロセッサ202は、上述の取得部284(図5参照)として、入力機器と出力機器との間の入出力関係を規定した入出力設定230(図7参照)を取得する。
ステップS20の処理に続く、ステップS30~S36の処理とステップS40~S46の処理とは、好ましくは並列に実行される。
ステップS30において、プロセッサ202は、ユーザによって設定された入力機器に関する設定を取得する。典型的には、プロセッサ202は、各入力機器の入力端子に関する設定を取得する。
ステップS32において、プロセッサ202は、ステップS30で取得された入力端子の設定を各入力機器に反映する。一例として、プロセッサ202は、上述のユーザインターフェイス600(図6参照)の入力タイプ表示欄618において設定された入力の二重化設定や、ユーザインターフェイス600のリセット種別表示欄616に設定されたリセット種別の設定を各入力機器に反映する。
ステップS34において、プロセッサ202は、ステップS32で設定した入力端子を示す入力変数を生成する。あるいは、プロセッサ202は、入力端子の位置を示すタグを生成してもよい。
ステップS36において、プロセッサ202は、上述の入力FB生成部288(図5参照)として、ステップS20で取得した入出力設定230に規定されている入力機器の種別を取得する。次に、プロセッサ202は、入力機器設定227(図9参照)を参照して、取得した入力機器の種別に対応付けられている入力FBを特定する。その後、プロセッサ202は、特定した入力FBに対してステップS34で生成した入力変数(またはタグ)を割り当てる。
ステップS40において、プロセッサ202は、ユーザによって設定された出力機器に関する設定を取得する。典型的には、プロセッサ202は、各出力機器の出力端子に関する設定を取得する。
ステップS42において、プロセッサ202は、ステップS40で取得された出力端子の設定を各出力機器に反映する。プロセッサ202は、上述のユーザインターフェイス600(図6参照)の入力タイプ表示欄618において設定された入力の二重化設定や、ユーザインターフェイス600のリセット種別表示欄616に設定されたリセット種別の設定を各出力機器に反映する。
ステップS44において、プロセッサ202は、ステップS42で設定した出力端子を示す出力変数を生成する。あるいは、プロセッサ202は、出力端子の位置を示すタグを生成してもよい。
ステップS46において、プロセッサ202は、上述の出力FB生成部292(図5参照)として、ステップS20で取得した入出力設定230に規定されている出力機器の種別を取得する。次に、プロセッサ202は、出力機器設定228(図14参照)を参照して、取得した出力機器の種別に対応付けられている出力FBを特定する。その後、プロセッサ202は、特定した出力FBに対してステップS44で生成した出力変数(またはタグ)を割り当てる。
ステップS50において、プロセッサ202は、各中間FBに対して入力として割り当てられる第1中間変数と、各中間FBに対して出力として割り当てられる第2中間変数とを生成する。
ステップS52において、プロセッサ202は、上述の中間FB生成部290(図5参照)として、中間FBとしてAND演算子を生成する。各中間FBには、ステップS50で生成された第1,第2中間変数が割り当てられる。第1,第2中間変数は、ステップS20で取得した入出力設定230に規定される入力機器と出力機器との間の入出力関係に従って各中間FBに割り当てられる。典型的には、入出力設定230において「FALSE」(すなわち、0)と規定されている入力機器と出力機器との組み合わせについては、接続関係が構築されるように、プロセッサ202は、第1中間変数と第2中間変数とをAND演算子で接続する。
なお、図16の例では、入力FBおよび出力FBが並行して生成された後に中間FBが生成される例について説明を行ったが、入力FB、出力FB、中間FBの生成順序は、任意である。一例として、プロセッサ202は、入力FB、出力FB、中間FBの順で各FBを生成してもよいし、中間FB、入力FB、出力FBの順で各FBを生成してもよい。
<F.利点>
以上のようにして、設計者は、入力機器と出力機器との入出力関係をユーザインターフェイス600(図6参照)上において設定することができる。これにより、入力機器と出力機器との入出力関係が規定された入出力設定230(図7参照)が生成される。情報処理装置200は、入出力設定230に基づいて、安全プログラム10を生成する。当該安全プログラム10は、入出力設定230に規定されている入力機器からのいずれかの入力信号の値が「TRUE」(第1の入力値)から「FALSE」(第2の入力値)に変化した場合に、当該変化に応答するように規定されている出力機器の動作状態を安全状態に遷移させる。
このように、入出力設定230が与えられると、情報処理装置200は、当該入出力関係を実現するための信号処理を行うような安全プログラム10を生成する。このような生成機能が実装されることで、安全プログラムの設計が入力機器と出力機器との間の入出力関係に関して容易になる。
[第2の実施の形態]
<A.概要>
ユーザは、入出力機器や安全プログラムが正常に動作しているか否かを確認することがある。この場合、入出力機器や安全プログラムに不具合が生じている箇所を早期に特定することが求められる。不具合箇所を早期に特定するためには、ユーザは、通常とは異なる態様で入出力機器を動作させる必要がある。そこで、第2の実施の形態に情報処理装置200は、通常時における出力機器に対する制御命令を生成するだけでなく、メンテナンス時における出力機器に対する制御命令を生成する。これにより、情報処理装置200は、様々な状況に対応することができる安全プログラムを生成することができる。
第2の実施の形態に従う情報処理装置200のハードウェア構成などその他の点については第1の実施の形態に従う情報処理装置200と同じであるので、以下ではそれらの説明については繰り返さない。
<B.ユーザインターフェイス>
上述のように、提供部282(図5参照)は、安全プログラム10を設計するためのユーザインターフェイス600を提供する。以下では、第2の実施の形態に従うユーザインターフェイス600について説明する。図17は、第2の実施の形態に従うユーザインターフェイス600の一例を示す図である。
ユーザインターフェイス600は、安全プログラムの生成条件を設定する生成条件表示エリア601と、入力機器からの入力信号(入力変数)に係る設定値を表示する入力設定表示エリア610と、出力機器への出力信号(出力変数)に係る設定値を表示する出力設定表示エリア620と、入力変数と出力変数との対応関係を設定する入出力関係設定エリア630,660とを含む。
生成条件表示エリア601は、リセット信号に関する設定を受付ける変数設定欄602を含む。変数設定欄602に設定された入力変数の状態に応じて、リセット操作が行われているか否かを判断する。図17の例では、変数設定欄602には、変数名として「ResetSwich」が設定されている。変数「ResetSwich」は、上述のリセット種別がマニュアルリセットに設定されている入力FBに対して入力として追加される(図10,図11参照)。
生成条件表示エリア601は、さらに、マニュアルモードを使用するか否かを受付けるためのチェックボックス603を含む。チェックボックス603にチェックが入れられていない状態で安全プログラム10が生成されると、情報処理装置200は、通常運転モードにおける出力機器に対する制御命令のみを生成する。すなわち、情報処理装置200は、上述の「第1の実施の形態」で説明した通りに安全プログラム10を生成する。チェックボックス603にチェックが入れられた状態で安全プログラム10が生成されると、情報処理装置200は、通常運転モードにおける出力機器に対する制御命令(以下、「通常運転プログラム」ともいう。)を生成するだけでなく、メンテナンスモードにおける出力機器に対する制御命令(以下、「メンテナンスプログラム」ともいう。)を生成する。ここでいうメンテナンスモードとは、安全プログラム10や入出力機器が正常に動作しているか否かを確認するための動作モードである。
生成条件表示エリア601は、さらに、メンテナンスモード用の変数に関する変数設定欄604を含む。より具体的には、ユーザは、入出力機器のメンテナンス時には、メンテナンスモードを有効にするためのキーを使用する場合がある。メンテナンスプログラムは、変数設定欄604に設定された変数の値を監視することで、キーがオンされているか否かを判断する。典型的には、キーがオフに設定されているときには、メンテナンスプログラムが実行されない。
生成条件表示エリア601は、さらに、メンテナンスモード用の変数に関する変数設定欄605を含む。より具体的には、ユーザは、生成された安全プログラム10に対して、通常運転モードおよびメンテナンスモードのいずれかをユーザ操作によって有効にすることができる。安全プログラム10は、変数設定欄605に設定された変数の値に基づいて、メンテナンスモードが有効化されているか否かを判断する。一例として、変数設定欄605に設定された変数の値が「FALSE」(すなわち、0)である場合には、メンテナンスモードが無効化される。
入力設定表示エリア610では、対象の安全プログラムに含まれる入力変数に係る情報の登録および表示が可能になっている。入力設定表示エリア610は、上述の入力FBに対する入力変数の変数名を表示する変数名表示欄612と、各入力変数についてのコメントを表示するコメント表示欄614と、各入力変数についてのリセット種別を表示するリセット種別表示欄616と、各入力変数に対応付けられている入力FB名を表示する入力FB表示欄619とを含む。なお、図17の例では、変数名表示欄612において入力変数が表示されているが、代わりに、入力機器の識別情報(たとえば、入力機器名など)が表示されてもよい。
出力設定表示エリア620では、対象の安全プログラムに含まれる出力変数に係る情報の登録および表示が可能になっている。出力設定表示エリア620は、上述の出力FBからの出力変数の変数名を表示する変数名表示欄622と、各出力変数についてのコメントを表示するコメント表示欄624と、上述のEDMファンクションブロックを使用するか否かについての設定を表示するEDM設定表示欄626とを含む。典型的には、EDM設定表示欄626に「TRUE」が設定されている場合には、対応する出力変数についてEDMファンクションブロックが生成される。EDM設定表示欄626において「FALSE」が設定されている場合には、対応する出力変数についてEDMファンクションブロックが生成されない。
入力設定表示エリア610における入力変数および出力設定表示エリア620における出力変数については、変数登録ボタン606が選択されることで実現される。あるいは、当該入力変数および当該出力変数は、入力設定表示エリア610および出力設定表示エリア620にユーザ操作によって直接入力されてもよいし、プルダウンメニューなどによって予め登録されている候補から選択されてもよい。好ましくは、当該入力変数および当該出力変数は、入力設定表示エリア610および出力設定表示エリア620にコピー&ペーストで入力され得る。
入出力関係設定エリア630において、通常運転モードにおける入力機器と出力機器との間の入出力関係が設定される。より具体的には、入出力関係設定エリア630は、入力機器を表示する入力機器表示エリア633と、各入力機器についてのコメントを表示するコメント表示欄636と、入力機器と出力機器との間の入出力関係を設定するための設定領域群640とを含む。なお、図17の例では、入力機器表示エリア633において入力機器名が示されているが、上述の図6で説明したように入力機器表示エリア663において各入力機器に対応する入力変数が表示されてもよい。この場合、入力変数と入力機器との対応関係が予め設定されており、当該対応関係に基づいて、各入力変数に対応する入力機器が特定される。
入出力関係設定エリア660において、メンテナンスモードにおける入力機器と出力機器との間の入出力関係が設定される。より具体的には、入出力関係設定エリア660は、入力機器を表示する入力機器表示エリア663と、各入力機器についてのコメントを表示するコメント表示欄666と、入力機器と出力機器との間の入出力関係を設定するための設定領域群670(他の設定領域群)とを含む。なお、図17の例では、入力機器表示エリア663において入力機器名が示されているが、代わりに、各入力機器に対応する入力変数が表示されてもよい。この場合、入力変数と入力機器との対応関係が予め設定されており、当該対応関係に基づいて、各入力変数に対応する入力機器が特定される。
好ましくは、ユーザインターフェイス600、チェックボックス603においてメンテナンスモードの使用が有効に設定されたことに基づいて、入出力関係設定エリア660を表示する。すなわち、入出力関係設定エリア660の表示および非表示は、チェックボックス603に対する操作に連動して切り替えられる。より具体的には、チェックボックス603にチェックが入れられた場合には、ユーザインターフェイス600は、メンテナンスモードの使用が有効に設定されたと判断し、入出力関係設定エリア660を表示する。チェックボックス603からチェックが外された場合には、ユーザインターフェイス600は、メンテナンスモードの使用が無効に設定されたと判断し、入出力関係設定エリア660を非表示にする。
設定領域群670における各設定領域は、マトリクス状に配置される。設定領域群670における各設定領域は、入力設定表示エリア610において登録された入力機器と、出力設定表示エリア620において登録された出力機器との組み合わせの数だけ用意されている。設定領域群670の列方向には、入力設定表示エリア610に示される入力機器(入力変数)が関連付けられている。設定領域群670の行方向には、出力設定表示エリア620に示される出力機器(出力変数)が関連付けられている。設定領域群670を構成する各設定領域は、当該設定領域に関連付けられている出力機器が当該設定領域に関連付けられている入力機器からの入力信号の値の変化に応答するか否かを示す設定を受付ける。すなわち、設定領域群670は、入力機器からの入力信号の変化に応答する出力機器の設定を各入力機器について受付けるように構成されている。
設定領域群670は、1つの入力変数に対して、対象となる出力変数の数だけ出力値が設定されるようになっている。図17に示すユーザインターフェイス600の例では、出力設定表示エリア620に表示されている4つの出力変数に対応して、4つの欄が設けられており、各欄に入出力設定を設定できるようになっている。ユーザは、メンテナンスモードにおける事前の安全設計に基づいて、設定領域群670にしかるべき値を設定することになる。なお、図17の設定領域群670において、「0」は、対応の入力変数が「FALSE」になった場合に、対応の出力変数も「FALSE」へ変化することを意味し、「1」は、対応の入力変数が「FALSE」になった場合であっても、対応の出力変数が「TRUE」を維持することを意味する。
好ましくは、ユーザインターフェイス600は、設定領域群670の表示時に、設定領域群640に設定されている設定値を設定領域群670に初期値として反映する。その後、ユーザは、メンテナンスモードにおける入出力関係を設定領域群670において設定する。設定領域群640における設定値が初期値として設定領域群670に反映されることで、メンテナンスモードにおける入出力関係の設定が簡略化される。
OKボタン651が押下されると、情報処理装置200は、設定領域群640において設定された入出力関係に基づいて通常運転モードにおける出力機器に対する第1制御命令(すなわち、通常運転プログラム)を生成し、設定領域群670において設定された入出力関係に基づいてメンテナンスモードにおける出力機器に対する第2制御命令(すなわち、メンテナンスプログラム)を生成する。これにより、通常運転プログラムおよびメンテナンスプログラムを含む安全プログラム10が生成される。
より具体的には、通常運転プログラムは、設定領域群640に規定されている入力機器のいずれかからの入力信号の値が「TRUE」(第1の入力値)から「FALSE」(第2の入力値)に変化した場合に、当該入力信号の値の変化に応答するように設定されている出力機器の動作状態を安全状態に遷移させる。メンテナンスプログラムは、設定領域群640に規定されている入力機器のいずれかからの入力信号の値が「TRUE」(第1の入力値)から「FALSE」(第2の入力値)に変化した場合に、当該入力信号の値の変化に応答するように設定されている出力機器の動作状態を安全状態に遷移させる。
安全プログラム10は、通常運転プログラムおよびメンテナンスプログラムのいずれか一方を有効にするための命令を受付け可能に構成されている。通常運転プログラムが有効に設定されている場合には、通常運転プログラムが実行される。メンテナンスプログラムが有効に設定されている場合、メンテナンスプログラムが実行される。
なお、図17では、メンテナンスモードに関する入出力関係設定エリア660がユーザインターフェイス600において1つだけ表示されている例が示されているが、入出力関係設定エリア660は、ユーザインターフェイス600において複数表示されてもよい。すなわち、ユーザがメンテナンスモードにおける制御を複数規定する場合には、ユーザインターフェイス600は、メンテナンスモードの数と同数の入出力関係設定エリア660を表示するように構成される。これにより、ユーザは、異なる種類のメンテナンスプログラムを自動で生成することができる。
<C.中間FB>
「第1の実施の形態」で説明したように、生成部286(図5参照)は、入力機器と出力機器との間の入出力関係に基づいて、入力FB、中間FB、および出力FBを生成する。本実施の形態に従う生成部286は、メンテナンスモードの使用が有効に設定されている場合には、通常運転モード用の各FBだけでなく、メンテナンスモード用の各FBをさらに生成する。より具体的には、生成部286は、通常運転モードに関する設定領域群640に設定された入出力関係に基づいて、通常運転モード用の入力FBおよび出力FBを生成するとともに、メンテナンスモードに関する設定領域群670に設定された入出力関係に基づいてメンテナンスモード用の入力FBおよび出力FBを生成する。その後、生成部286は、各モード用に生成した入力FBおよび出力FBを接続するための中間FBを生成する。
中間FBは、たとえば、上述の中間FB生成部290(図5参照)によって生成される。以下では、図18を参照して、中間FB生成部290による中間FBの生成方法について説明する。なお、入力FBおよび出力FBの生成方法については、「第1の実施の形態」で説明した通りであるので、それらの生成方法の説明については繰り返さない。
図18は、中間FB生成部290によって生成された中間FBの1つを表わす図である。図18には、生成された中間FBの一例として中間FB700が示されている。中間FB700は、出力機器の一例である「SafetyRelay1」(図17参照)に向けて生成されたものである。
設定領域群640,670において「FALSE」(すなわち、0)が設定されている入力機器と出力機器との組み合わせについては、接続関係が構築される。一例として、図17に示される設定領域群640の「SafetyRelay1」においては、入力機器「No1」~「No5」について「0」が関連付けられている。そのため、「SafetyRelay1」および入力機器「No1」~「No5」については、AND演算子16Aによって接続関係が構築される。そのために、AND演算子16Aには、入力機器「No1」~「No5」に対応する第1中間変数MD1_A~MD1_E(図8参照)が入力として割り当てられる。
同様に、図17に示される設定領域群670の「SafetyRelay1」においては、入力機器「No1」,「No3」について「0」が関連付けられている。そのため、「SafetyRelay1」および入力機器「No1」,「No3」については、AND演算子17Aによって接続関係が構築される。そのために、AND演算子17Aには、入力機器「No1」,「No3」に対応する第1中間変数MD1_A,MD1_C(図8参照)が入力として割り当てられる。
このように、通常運転モード用にAND演算子16Aが設けられ、メンテナンスモード用にAND演算子17Aが設けられる。AND演算子16A,17Aの出力値は、現在の動作モードに従う。典型的には、現在の動作モードとして通常運転モードが設定されている場合には、AND演算子17Aは、メンテナンスモード用の第1中間変数MD1_A,MD1_Cの値によらず、常に「FALSE」(すなわち、0)を出力するように構成される。一方で、現在の動作モードとしてメンテナンスモードが設定されている場合には、AND演算子16Aは、通常運転用の第1中間変数MD1_A~MD1_Eの値によらず、常に「FALSE」(すなわち、0)を出力するように構成される。これにより、AND演算子16A,17Aの出力値は、現在の動作モードに従って切り替えられる。
このような動作モードによる制御の切り替えを実現するために、たとえば、AND演算子17Bがメンテナンスモード用のAND演算子17Aに接続される。AND演算子17Bは、メンテナンスモードを有効にするか否かを設定するための入力変数IN1,IN2が割り当てられる。メンテナンスモードを有効にするためのキーがオンを示す場合には入力変数IN1は「TRUE」(すなわち、1)になり、当該キーがオフである場合には入力変数IN1は「FALSE」(すなわち、0)になる。また、メンテナンスモードが有効に設定されている場合には入力変数IN2は「TRUE」(すなわち、1)になり、当該設定が無効に設定されている場合には入力変数IN2は「FALSE」(すなわち、0)になる。入力変数IN1,IN2のいずれかが「FALSE」(すなわち、0)を示す場合、AND演算子17Bからの出力は「FALSE」(すなわち、0)となる。その結果、AND演算子17Aからの出力も「FALSE」(すなわち、0)となる。すなわち、メンテナンスモードが無効に設定されている場合には、入力機器「No1」,「No3」の状態によらず、AND演算子17Aからの出力は、常に「FALSE」(すなわち、0)となる。これにより、メンテナンスモードが無効化される。
このように、安全プログラム10は、メンテナンスモードを無効にするための命令を受付け可能に構成されている。これにより、メンテナンスモードの有効または無効が適宜切り替えられる。
なお、上述では、メンテナンスモードを無効化するためのAND演算子17BがAND演算子17Aに接続される例について説明を行ったが、通常運転モードを無効化するためのAND演算子がAND演算子16Aにさらに接続されてもよい。すなわち、安全プログラムは、通常運転モードおよびメンテナンスモードのいずれか一方を無効にするための命令を受付け可能に構成される。これにより、ユーザは、通常運転モードおよびメンテナンスモードを用途に応じて適宜切り替えることができる。
<D.利点>
以上のようにして、第2の実施の形態にユーザインターフェイス600は、通常運転モード時における入出力機器の入出力関係だけでなく、メンテナンスモード時における入出力機器の入出力関係をさらに設定可能に構成される。これにより、情報処理装置200は、複数の動作モードに対応した安全プログラムを生成することができる。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。