(58)【調査した分野】(Int.Cl.,DB名)
前記実行判定部は、前記ユーザプログラムを実行させると判定した場合には、前記実行制御情報の論理値を高エネルギー側の論理値に設定し、前記ユーザプログラムを実行させないと判定した場合には、前記実行制御情報の論理値を高エネルギー側でない側の論理値に設定する、請求項1または2に記載の安全スレーブユニット。
【背景技術】
【0002】
近年、労働安全意識の高まりと共に、各種の安全ユニットが開発されている。安全ユニットは、安全コントローラ(セーフティコントローラ)、安全I/O(入出力)ターミナル等に相当する。例えば、安全コントローラは、一般的なプログラマブルコントローラに類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵させることにより、その制御において高度な安全性および信頼性を確保したものである。安全コントローラは、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全側の制御を行うような機能(フェールセーフ機能)を備えている。
【0003】
また、安全I/Oターミナルにおいても、自己診断機能を有していて、自己診断結果により異常を検出した場合には自己の制御が危険につながらない制御をするといった、フェールセーフ機能を備えている。この機能により、安全ユニットを介して接続される切削機械や切断機械やアーム付き製造機ロボット等の動作が、例えば作業者に対して危険を及ぼさないように制御されている。
【0004】
ここで言う安全は、より具体的には、規格化されている安全基準を含む意味である。規格には、例えばIEC61508やEN規格などがある。IEC61508(プログラム可能な電子システムの機能安全に関する国際電気標準委員会)では、時間あたりの危険故障確率(失敗確率:Probability of Failure per Hour)を定義し、この確率によってSILレベル(Safety Integrity Level)を4段階に分類している。また、EN規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけられていて、EN954−1では5つの安全カテゴリにて規定されている。安全コントローラ等は、このような安全基準のいずれかに対応したものである。
【0005】
そして、従来、安全コントローラと安全I/Oターミナルとをネットワークで結んでなる安全制御システムについても知られている。安全制御システムにおいては、安全コントローラは、安全I/Oターミナルに対してネットワーク通信する通信マスタ機能を備えており、安全マスタと称されることもある。安全I/Oターミナルは、安全コントローラの通信マスタ機能との間でネットワーク通信機能、つまり、マスタに従って制御される通信スレーブ機能を備えており、安全スレーブと称されることもある。
【0006】
また、各安全ユニットの接続端子には、オンオフ信号を出力するスイッチ等の安全入力機器と、制御信号出力を受けて駆動される安全出力機器との少なくとも一方が接続されている。安全入力機器の例としては、非常停止スイッチ、ライトカーテン、ドアスイッチ、2ハンドスイッチ等である。また、安全出力機器の例としてはセーフティリレーやコンタクタであり、これらの安全入力機器または安全出力機器も安全規格に対応している。
【0007】
安全I/Oターミナルは、接続された安全入力機器から入力された信号に基づいて制御データ(入力データ)を生成し、生成した制御データを安全コントローラへネットワーク通信する。また、安全I/Oターミナルは、安全コントローラとの間でネットワーク通信することで、安全コントローラからの制御データを受信する。そして、安全コントローラは、安全I/Oターミナルからネットワーク通信により受信した安全入力機器の入力信号を入力し、予め記憶されたロジックプログラムによってその入力信号のオンオフを論理演算する。安全コントローラは、その演算結果に基づく出力信号をネットワーク通信により安全I/Oターミナルへ出力する。安全I/Oターミナルは、その出力信号を出力機器へ出力する。この一連の動作を繰り返し実行することにより、安全コントローラによりシステム全体が制御される。なお、安全コントローラと安全I/Oターミナルとの間の通信サイクルは、安全コントローラの繰り返し実行のサイクルと同期していても良いし、非同期でも良い。
【0008】
安全コントローラあるいはCPU(Central Processing Unit)ユニットにおけるロジック演算処理の対象となるロジックプログラムは、プログラマーにより予め作成される。ロジックプログラムとしては、ラダー、ファンクションブロックダイアグラム、シーケンシャル・ファンクション・チャート、ストラクチャード・テキスト、インストラクション・リストなどが挙げられる。プログラミング言語でいうと、インタプリタ型言語、スクリプト言語、アセンブリ言語、高級言語、Java(登録商標)言語と呼ばれるものであってもよい。このようなプログラミング言語で書かれたソースコードを、アセンブルやコンパイルなどの処理を行なってCPUに実行させる。
【0009】
また、安全I/Oターミナルに接続された安全出力機器としてのセーフティリレーやコンタクタは、操作ロボットや加工機械、切断機械等につながれていて、出力機器のリレーやコンタクタの接点がオン中は操作ロボット等が動作し、接点がオフ中は操作ロボット等が停止するようになっている。すなわち、安全コントローラは、安全出力機器をオンオフ制御することで、制御対象の操作ロボット等を制御する。
【0010】
具体的には、例えば、安全コントローラは、非常停止スイッチSWが正常に操作されたことを安全I/Oターミナルから通信により入力すると、制御対象が危険な動作をしないように安全出力機器をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を探る。また、安全コントローラは、非常停止スイッチSWまたは他の安全入力機器が異常有りの診断結果を入力すると、非常停止スイッチSWの操作有無または安全入力機器のオンオフ状態に関わらず、制御対象が危険な動作をしないようにその動作を停止するよう安全出力機器をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を探る。
【0011】
ここで、上述した安全コントローラを通信マスタ局、安全I/Oターミナルを通信スレーブ局としたマスタ・スレーブ式の安全制御システムにおいては、安全スレーブの自己診断機能の作用により、安全規格に対応した安全用途スイッチ(SW)が接続された入力端子に関して異常ありの診断結果が得られた場合には、安全マスタ側の動作安全を確保するための対応策が安全スレーブに採用されている。
【0012】
例えば、特開2006−323831号公報(特許文献1)には、生の入力信号から制御データを生成する入力処理の過程で参照される異常診断結果を、その制御データを利用する側でも参照可能とし、それにより制御データに基づく多様な安全制御を可能とする安全スレーブユニットが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0014】
ところで、通信機能をサポートした安全コントローラは、プログラムの実行と通信開始に時間的なズレが生じる場合がある。通信を開始するためには、I/Oデータ等の実際のデータ等を通信するに先立ち通信相手(安全I/Oターミナル)との間でコネクションを確立する必要がある。これは、安全コントローラが、通信の確立を待たずにプログラムを実行したとき、ファンクションブロックで論理エラーが発生するのを防止するためである。そして、多くの相手と通信を行う場合、個々の通信相手に対して適宜の順にコネクションを確立していくため、全ての通信相手との間でコネクションが確立するまでに時間がかかる。一方、電源投入にともない安全コントローラの初期設定等が終了し、ユーザプログラムをサイクリックに実行することを開始すると、このユーザプログラムの実行時に、必ずしも全ての通信相手とコネクションが確立しているとは限らず、一部の通信相手とはI/Oデータの通信ができない状態でユーザプログラムの演算実行が進むことがある。
【0015】
このような問題を解決するために、通信開始(通信の確立)を待ってからプログラムを実行する機能を持った安全コントローラが知られている。しかし、通信開始を待ってからプログラムを実行する機能を使っても、故障などによりコネクションが確立できない相手が存在すると、ユーザプログラム全体を実行することができなくなる。この問題発生を回避するため、あらかじめ設定した時間が経過した場合は、通信の開始を待たずにプログラムを実行する。ただし、その場合は、安全I/Oターミナルから期待されるI/Oデータを受信することができないため、安全コントローラ側では盲目的に安全状態にしなければならず、不要な異常を検知することとなる。
【0016】
ここで、例えば、ファンクションブロックダイアグラムでプログラミングされた安全コントローラでは、安全I/Oターミナルから送信されるI/Oデータを取り込み、ファンクションブロック演算が行われる。上述したような安全スレーブの入力端子に関する異常(短絡、断線等)がある場合、および/または安全コントローラと安全スレーブとの通信の未確立または通信異常がある場合には、安全コントローラは、ファンクションブロック演算において使用すべきでない(無効な)I/Oデータを取り込んでしまう可能性がある。したがって、これを防止するために、安全コントローラ側において、当該入力端子に関する異常に対する解決策と、当該通信異常に対する解決策とを考慮することにより、有効なI/Oデータのときのみファンクションブロックの演算を実行する機能が必要とされている。
【0017】
本発明は、上記のような問題を解決するためになされたものであって、ある局面の目的は、安全コントローラの処理負担を軽減することが可能な安全スレーブユニット、その制御方法、その制御プログラム、および安全制御システムを提供することである。
【課題を解決するための手段】
【0018】
ある実施の形態に従う安全スレーブユニットは、入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信部を含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブユニットは、安全コントローラにおけるユーザプログラムの実行を制御する制御部をさらに含む。制御部は、安全コントローラとの通信が確立したか否かを判定する通信判定部と、安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定する異常判定部と、通信判定部の判定結果と異常判定部の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信する通信制御部とを含む。通信制御部は、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信する。
【0019】
好ましくは、制御部は、通信判定部の判定結果と異常判定部の判定結果とに基づいて、安全コントローラにユーザプログラムを実行させるか否かを判定する実行判定部をさらに含む。実行制御情報は、実行判定部の判定結果を含む。
【0020】
好ましくは、実行判定部は、通信判定部において安全コントローラとの通信が確立しているとの判定結果、かつ異常判定部において機器に異常なしとの判定結果に基づいて、安全コントローラにユーザプログラムを実行させると判定する。
【0021】
好ましくは、実行判定部は、通信判定部において安全コントローラとの通信が確立していないとの判定結果、および異常判定部において機器に異常ありとの判定結果の少なくともいずれかに基づいて、安全コントローラにユーザプログラムを実行させないと判定する。
【0022】
好ましくは、実行判定部は、ユーザプログラムを実行させると判定した場合には、実行制御情報の論理値を高エネルギー側の論理値に設定し、ユーザプログラムを実行させないと判定した場合には、実行制御情報の論理値を高エネルギー側でない側の論理値に設定する。
【0023】
別の実施の形態に従うと、安全スレーブユニットの制御方法が提供される。安全スレーブユニットは、ファンクションブロックダイアグラムに従って入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信インターフェイスを含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブユニットは、安全コントローラにおけるユーザプログラムの実行を制御するプロセッサをさらに含む。プロセッサが、安全コントローラとの通信が確立したか否かを判定するステップと、プロセッサが、安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定するステップと、プロセッサが、通信が確立したか否かの判定結果と異常の有無の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信するステップとを含む。送信するステップは、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信することを含む。
【0024】
さらに別の実施の形態に従うと、安全スレーブユニットの制御プログラムが提供される。安全スレーブユニットは、ファンクションブロックダイアグラムに従って入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信インターフェイスを含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブユニットは、安全コントローラにおけるユーザプログラムの実行を制御するプロセッサをさらに含む。制御プログラムは、プロセッサに、安全コントローラとの通信が確立したか否かを判定するステップと、安全スレーブユニットに接続される機器からの入力信号が与えられる入力端子に関する異常の有無を判定するステップと、通信が確立したか否かの判定結果と異常の有無の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信するステップとを実行させる。送信するステップは、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信することを含む。
【0025】
さらに別の実施の形態に従う安全制御システムは、ファンクションブロックダイアグラムに従って入力信号に基づいて出力信号を出力する安全コントローラと、安全スレーブユニットとを含む。安全スレーブユニットは、安全コントローラと通信するための通信部と、安全コントローラにおけるファンクションブロックの実行を制御する制御部とを含む。制御部は、安全コントローラとの通信が確立したか否かを判定する通信判定部と、安全スレーブユニットに接続される機器からの入力信号が与えられる入力端子に関する異常の有無を判定する異常判定部と、通信判定部の判定結果と異常判定部の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信する通信制御部とを含む。通信制御部は、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信する。安全コントローラは、実行制御情報および動作情報を受信する受信部と、受信した実行制御情報および動作情報に基づいて、ユーザプログラムを実行する演算部とを含む。演算部は、実行制御情報に基づいてユーザプログラムを実行するか否かを判定し、ユーザプログラムを実行すると判定した場合には、動作情報に基づいてファンクションブロックを実行する。
【発明の効果】
【0026】
ある局面によると、安全コントローラの処理負担を軽減することが可能となる。
【発明を実施するための形態】
【0028】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0029】
<A.システム構成>
図1は、本実施の形態に従う安全制御システム100の全体構成を示す概略図である。
【0030】
図1を参照して、ここでは、安全コントローラ1と安全I/Oターミナル(以下、「安全スレーブ」とも称する。)3とがバス6で結ばれたバス型ネットワークを構成した安全制御システム100が示されている。
【0031】
本例においては、安全コントローラ1および安全スレーブ3には複数の安全入力機器4と安全出力機器5とが配線接続されている。
【0032】
安全コントローラ1は、例えば、CPUユニットや電源ユニットやI/Oユニットや通信マスタユニットなどの複数のユニットが連結して構成されるビルディングブロックタイプである。各ユニットは、共通内部バスに接続されていて、安全コントローラ全体の制御を司るCPUユニットと他のユニットとの間でバス通信をし、データをやりとりすることができる。
【0033】
安全コントローラ1は、通信マスタユニットを介して安全スレーブ3からネットワーク通信により入力した安全入力機器4の入力信号を入力し、予め記憶されたロジックプログラムによってその入力信号のオンオフを論理演算する。その演算結果に基づく出力信号を通信マスタユニットを介してネットワーク通信により安全スレーブ3へ出力する。安全スレーブ3は、その出力信号を安全出力機器5へ出力する。この一連の動作を繰り返し実行することにより、安全コントローラ1によりシステム全体が制御される。なお、安全コントローラ1と安全スレーブ3との間の通信サイクルは、安全コントローラ1の繰り返し実行のサイクルと同期しても良いし、非同期でも良い。
【0034】
安全入力機器4には、非常停止スイッチ、ライトカーテン、ドアスイッチ、リミットスイッチ等が含まれ、安全出力機器5には、セーフティリレー、コンタクタ等が含まれる。
【0035】
なお、本例においては、安全スレーブ3と安全入力機器4と安全出力機器5とが接続された構成について主に説明するが、安全コントローラ1に対してI/Oユニットを介して安全入力機器4および安全出力機器5が接続されていてもよい。なお、安全入力機器4および安全出力機器5を総称して安全入出力機器とも称する。
【0036】
安全スレーブ3は、通常のPLC(なお、通常のPLCは、安全用途以外の通常用途で使われるコントローラを言い、安全コントローラを含まない。)のスレーブユニットと同様に、通信マスタ機能に対する通信動作を行う機能、接続された安全入力機器への入力動作を行う機能、接続された安全出力機器への出力動作を行う機能に加え、入出力端子のそれぞれに関する自己診断を行う機能を備えている。
【0037】
各安全スレーブ3が有する自己診断機能は、自己の入力端子部の異常有無の診断に関する機能、その他通信機能などの様々な機能に関する自己診断や、入出力端子と安全入出力機器との間の配線状態が短絡や断線したことによる自己診断も行なうことができる。また、自己診断機能は、他の例として、各安全スレーブ3に、入出力端子とは別のテスト出力端子により、対応する安全入出力機器に対して、テスト出力端子から適宜信号を送り、その信号が対応する安全入力機器4を経由して、正しく返送されてきたかを読み取ることによって対応する安全入力機器4の状態が正常か異常かを監視するような機能であってもよい。
【0038】
図1に示すシステム構成では、安全コントローラ1と安全スレーブ2とは、バス型ネットワークを介して互いに通信する場合について説明したがこれに限られず、バックプレーンバスを介して互いに通信してもよい。より具体的には、バックプレーンと称する剛性プレート上にバックプレーンバス(BUS)を敷設すると共に、このバックプレーンバス上には適当な間隔でユニット装着用コネクタを配列し、これに1台の安全コントローラと複数台の安全スレーブとを装着することで互いに通信可能に構成してもよい。また、安全コントローラ1および安全スレーブ2に無線通信機能を設けて、互いに無線で通信する構成が用いられてもよい。
【0039】
また、バス6にはシステムを構築するためのPLC(programmable logic controller)のプログラム設計支援装置が接続されていてもよい。プログラム設計支援装置は、例えば、I/Oウィザードによる対話形式の支援プログラムが実行可能なように設けられており、図例の汎用のノート型パソコンに限らず、ネットワークに接続可能なPDA(Personal Digital Assistant)などの携帯端末装置であってもよいし、デスクトップパソコンであってもよい。
【0040】
この場合、プログラム設計支援装置は、少なくとも、プログラム設計支援装置全体を統括し制御するCPUと、マウス操作やキーボード操作等を含む入力操作部と、プログラム設計支援装置が備える画像表示器の表示画面に対する表示処理を行う表示部と、操作入力処理、所定の演算処理、または表示画面に対する画像処理等に使用されるワークRAMと、外部への通信インターフェースとして作用する通信部と、記憶装置とを含む。これらは、プログラム設計支援装置の内部バスに接続された形態で構成されている。記憶装置の所定の記憶領域には、例えば、I/Oウィザードプログラムが格納される。
【0041】
<B.ハードウェア構成>
次に、安全スレーブ3の内部ハードウェア構成について説明する。
【0042】
図2は、本実施の形態に従う安全スレーブ3の内部ハードウェア構成を示す概略ブロック図である。
【0043】
図2を参照して、安全スレーブ3は、バス6に接続された安全マスタ(安全コントローラ)2またはプログラム設計支援装置とのデータ送受を行う通信インターフェイス(I/F)部21と、各種演算機能や故障診断機能等を実行し、安全スレーブ3全体を統括・制御する中央演算処理部20と、端子異常診断部22a,22bと、入力端子部23aと、出力端子部23bと、設定部25と、表示部26とを含む。
【0044】
中央演算処理部20は、マイクロプロセッサ(MPU)20a、RAM(Random Access Memory)20b、ROM(Read Only Memory)20cを含んでいる。これらのマイクロプロセッサ(MPU)20a、RAM20b、ROM20cは、動作信頼性を保証するために二重化されている。
【0045】
図3は、本実施の形態に従う安全スレーブ3の中央演算処理部20の処理全体を示すゼネラルフローチャートである。
【0046】
図3を参照して、中央演算処理部20の全体は2台のCPU(CPUA,CPUB)から構成されており、それらのCPUは、互いに同期を取りながら並列に動作して、電源投入直後に(ステップS10a,S10b)、初期処理および自己診断処理(ステップS12a,S12b)を実行する。そして、これらのCPUは、同期処理(ステップS14a,S14b)、自己診断処理(ステップS16a,S16b)、周辺処理(ステップS18a,S18b)、I/Oリフレッシュ処理(ステップS20a,S20b)を同時並行的に実行するように構成されている。
【0047】
ここで、「初期処理」とは、デバイス及びデータの初期化、保存データの読み出し等を行なう処理であり、「自己診断処理」とはハードウェア診断を行う処理である(ステップS12a,12b)。「同期処理」(ステップS14a,S14b)とは、2つのCPU間の時間的な同期処理(サイクル時間を一定にするためのWait処理を含む)、データ一致確認処理等を行なう処理である。また、自己診断処理(ステップS16a,S16b)はハードウェア診断等を行う処理である。また、周辺処理(ステップS18a,S18b)とは、外部メディア(メモリカード、RTC等)に対するアクセス処理や外部デバイス、ツール等との通信処理等を行う処理である。I/Oリフレッシュ処理(ステップS20a,S20b)とは、ローカル入出力(入出力ユニットを含む)の更新処理やリモートI/O入出力のデータ更新等を行う処理である。
【0048】
再び、
図2を参照して、入力端子部23aは、安全仕様に設計された安全入力機器4からの入力信号が与えられる1もしくは2以上の入力端子(端子1,端子2,・・・端子n)を有している。ここで、各端子は1もしくは2以上の端子により構成される。安全入力機器4は、安全仕様となっているもので、具体的にはいわゆる安全用途スイッチなどをいう。安全用途の非常停止スイッチは、危険な状態になったときに押され、接点が開状態になってOFFとなり、LOW信号を出力する。逆に、当該スイッチは、安全な状態では押されず、接点が閉状態になってON信号(HIGH信号)を出力する。このように安全用途スイッチは、危険なときにLOW信号を出すように設計されている。
【0049】
端子異常診断部22aは、入力端子部23aの各入力端子(端子1,端子2,・・・端子n)に関する異常の有無を診断するために使用されるものであって、例えば特開2004−297997公報に示されるように、様々な自己診断回路を含んでいる。ここで、「各入力端子に関する異常」とは、入力端子に接続された安全入力機器4の異常のみならず、端子自体の異常やその他様々な異常を含んでいる。端子異常診断部22aは、安全入力機器4側が自己診断機能をもっているなら、各端子に対応する安全入力機器4の自己診断結果を取り込んで、各入力機器をそれぞれ個別に異常があるか否かを診断する。また、端子異常診断部22aは、入力端子と安全入力機器4との間の配線に異常(断線、短絡など)があるか否かを各端子それぞれ別個に診断する。すなわち、端子異常診断部22aは、1系統の入力端子それぞれに別個に異常有無の状態(ステータス)を診断する。
【0050】
出力端子部23bは、それぞれ安全仕様に設計された安全出力機器5への出力信号が与えられる1もしくは2以上の出力端子(端子1,端子2,・・・端子m)を有している。
【0051】
端子異常診断部22bは、出力端子部23bの各出力端子(端子1,端子2,・・・端子m)に関する異常の有無を診断するために使用される。この端子異常診断部22bも、各端子に対する安全出力機器5が自己診断機能を持っているなら、各機器からそれぞれの自己診断結果を取り込んで、各出力機器をそれぞれ個別に異常があるか否かを診断する。また、端子異常診断部22bは、出力端子と安全出力機器5との間の配線に異常があるか否かを各端子それぞれ別個に診断する。つまり、入力系と同時に、1系統の端子それぞれに別個に異常有無の状態(ステータス)を診断する。
【0052】
設定部25は、当該安全コントローラの動作に関する各種の設定を行うためのものであり、テンキー、ファンクションキー、キースイッチ等々で構成されている。
【0053】
表示部26は、当該安全コントローラの動作に関する各種の表示を行うためのものであり、適宜なサイズの液晶表示器、動作表示用のランプ等で構成されている。
【0054】
なお、安全コントローラ1の内部ハードウェア構成は、安全スレーブ3の内部ハードウェア構成と同様のものを採用することができる。ただし、
図3で説明した安全スレーブ3の中央演算部の処理全体を示すゼネラルフローチャートが若干異なる。具体的には、安全コントローラ1の中央演算部に含まれる2つのCPUは、
図3におけるI/Oリフレッシュ処理(ステップS20a,S20b)の後に、さらに、演算処理を同時並行的に実行するように構成されている点が異なる。「演算処理」とは、ユーザが任意に作成したユーザプログラムを実行する処理である。
【0055】
<C.機能構成>
図4は、本実施の形態に従う安全制御システム100によって実現される機能の構成を表すブロック図である。本例では、安全コントローラ1におけるロジック演算処理の対象となるロジックプログラム(ユーザによって作成されるユーザプログラム)が、ファンクションブロックダイアグラム(以下、「FBD」とも称する。)である場合について説明する。FBDを構成するための少なくとも1つのファンクションブロックは、それぞれ、入力された少なくとも1つの信号に対して当該ファンクションロックに対して予め定められた機能に応じた所定の処理を施した少なくとも1つの信号を出力する。なお、ユーザプログラムは、FBDに限られず、ラダー、シーケンシャル・ファンクション・チャート、ストラクチャード・テキスト、インストラクション・リスト、C言語などでプログラミングされていてもよい。
【0056】
図4を参照して、まず、安全スレーブ2の機能構成について説明する。安全スレーブ2は、主たる機能構成として、通信判定部202と、異常判定部204と、取得部206と、通信制御部208と、実行判定部210と、データ格納部212とを含む。これらの機能は、基本的には、安全スレーブ2の中央演算処理部20がプログラムを実行し、安全スレーブ2の構成要素へ指令を与えることなどによって実現される。すなわち、中央演算処理部20は安全スレーブ2の動作全体を制御する制御部としての機能を有する。なお、これらの機能構成の一部または全部はハードウェアで実現されてもよい。
【0057】
通信判定部202は、安全コントローラ1との通信が確立したか否かを判定する。より具体的には、通信判定部202は、通信インターフェイス21を介して安全コントローラ1から送信された通信設定情報(例えば、安全コントローラ1を識別するための識別情報など)を受信した場合には、通信が確立したと判定し、当該通信設定情報を受信していない場合には、通信が確立していないと判定する。
【0058】
異常判定部204は、安全スレーブ2に接続される機器からの入力信号に基づいて、異常の有無を判定する。異常判定部204は、ある局面では、安全入力機器4からの入力信号が与えられる入力端子に関する異常の有無を判定する。より具体的には、異常判定部204は、端子異常診断部22aに対して上述したような異常診断を実行させて、当該異常判定を行なう。
【0059】
取得部206は、安全入力機器4における動作の有無に関する動作情報を安全入力機器4から取得する。より具体的には、取得部206は、入力端子部23aを介して安全入力機器4それぞれ個別のオンオフ動作に関する動作情報(動作有り無し信号)を取得する。
【0060】
通信制御部208は、通信判定部202の判定結果と異常判定部204の判定結果とに基づく実行制御情報であって、安全コントローラ1におけるユーザプログラムの実行を制御するための実行制御情報と、安全入力機器4の動作情報とを安全コントローラ1に送信する。当該実行制御情報は、後述する実行判定部210の判定結果を含む。なお、通信制御部208は、実行制御情報と動作情報とをデータ格納部212に格納してもよい。
【0061】
実行判定部210は、通信判定部202の判定結果と異常判定部204の判定結果とに基づいて、安全コントローラ1にユーザプログラムを実行させるか否かを判定する。より具体的には、実行判定部210は、通信判定部202において安全コントローラ1との通信が確立しているとの判定結果、かつ異常判定部204において安全入力機器4に異常なしとの判定結果に基づいて、安全コントローラ1にユーザプログラムを実行させると判定する。また、実行判定部210は、通信判定部202において安全コントローラ1との通信が確立していないとの判定結果、および異常判定部204において安全入力機器4に異常ありとの判定結果の少なくともいずれかに基づいて、安全コントローラ1にユーザプログラムを実行させないと判定する。
【0062】
実行判定部210は、別の局面では、安全コントローラ1にユーザプログラムを実行させると判定した場合には、実行制御情報の論理値を高エネルギー側の”1”(”HIGH”)に設定し、当該ユーザプログラムを実行させないと判定した場合には、実行制御情報の論理値を高エネルギー側ではない側の”0”(”LOW”)に設定する。
【0063】
次に、安全コントローラ1の機能構成について説明する。安全コントローラ1は、主たる機能構成として、通信制御部102と、演算部104と、データ格納部106とを含む。また、安全コントローラ1は、ハードウェア構成として、安全スレーブ2と通信するための通信インターフェイス11を含む。これらの機能は、基本的には、安全コントローラ1の中央演算処理部10がプログラムを実行し、安全コントローラ1の構成要素へ指令を与えることなどによって実現される。すなわち、中央演算処理部10は安全コントローラ1の動作全体を制御する制御部としての機能を有する。なお、これらの機能構成の一部または全部はハードウェアで実現されていてもよい。
【0064】
通信制御部102は、安全コントローラ1と安全スレーブ2との通信が確立している場合には、通信インターフェイス11を介して実行制御情報および動作情報を受信する。通信制御部102は、受信した実行制御情報と動作情報とをデータ格納部106に格納する。
【0065】
演算部104は、受信した実行制御情報および動作情報に基づいて、ユーザプログラムを実行する。より具体的には、演算部104は、受信した実行制御情報に基づいてユーザプログラムを実行するか否かを判定する。そして、演算部104は、ユーザプログラムを実行すると判定した場合には、受信した動作情報に基づいてユーザプログラムを実行する。より具体的には、演算部104は、
図5に示すような機能を有するファンクションブロックの演算を実行する。
【0066】
図5は、本実施の形態に従うファンクションブロックの機能を説明するための図である。
【0067】
図5を参照して、演算部104は、「Activate」の入力の論理値が”1”(”HIGH)である場合には、当該ファンクションブロックの演算を実行し、「Activate」の入力の論理値が”0”(”LOW”)である場合には、当該ファンクションブロックの演算を実行しない。演算部104は、この「Activate」への入力信号として、実行制御情報を使用し、「Input0」への入力信号として、動作情報を使用する。したがって、演算部104は、実行制御情報の論理値が”1”である場合には、「Input0」に入力される動作情報に基づいて、ファンクションブロックを実行し、実行制御情報の論理値が”0”である場合には、ファンクションブロックを実行しないように構成されている。
【0068】
より具体的には、演算部104は、安全入力機器4の入力端子に関して異常が無く、かつ安全コントローラ1と安全スレーブ2との通信が確立している場合には、「Input0」に入力される信号(動作情報)は有効なものであるため、ファンクションブロックの演算を実行する。一方、演算部104は、安全入力機器4の入力端子に関して異常があるか、および/または安全コントローラ1と安全スレーブ2との通信が確立していない場合には、「Input0」に入力される信号(動作情報)は無効なもの(使用すべきでないもの)であるため、ファンクションブロックの演算を実行しない。
【0069】
再び、
図4を参照して、通信制御部102は、別の局面では、通信が確立していない、または通信異常が発生していると判断した場合には、受信した動作情報の論理値を”0”に設定してもよい(動作情報をクリアしてもよい)。これにより、安全制御システム100を安全状態に保持することができる。
【0070】
<D.処理手順>
本実施の形態に従う安全制御システム100において安全コントローラ1がファンクションブロックの演算を実行するまでの処理の流れについて説明する。
【0071】
図6は、本実施の形態に従う安全制御システム100において実行される制御処理手順を示すフローチャートである。以下の各ステップは、安全スレーブ2の中央演算処理部20がメモリ(ROM、RAMなど)に格納されたプログラムを実行するとともに、安全コントローラ1の中央演算処理部10がメモリ(ROM、RAMなど)に格納されたプログラムを実行することによって実現される。
【0072】
図6を参照して、安全スレーブ2の中央演算処理部20は、安全コントローラ1との通信が確立したか否かを判定する(ステップS102)。より具体的には、中央演算処理部20は、通信インターフェイス21を介して安全コントローラ1から送信された通信設定情報を受信したか否か判定することで、当該判定を行なう。
【0073】
中央演算処理部20は、通信が確立していないと判定した場合には(ステップS102においてNO)、後述するステップS110の処理を実行する。これに対して、中央演算処理部20は、通信が確立したと判定した場合には(ステップS102においてYES)、安全スレーブ2に接続された安全入力機器4の実際の動作状態を示す入力データ(動作情報)を取得する(ステップS104)。
【0074】
次に、中央演算処理部20は、端子異常診断部22aを介して入力端子に関する異常の有無を判定する(ステップS106)。より具体的には、中央演算処理部20は、入力端子それぞれ個別に、安全入力機器4側における自己診断結果信号を取得して異常の有無を判定するか、または配線上の異常有無などを判定する。この異常判定処理においては、安全入力機器4の異常のみならず、端子部の1つ1つの入力端子それぞれの異常、さらには必要な様々な異常の判定が行われる。
【0075】
入力端子に異常がある場合には(ステップS106においてYES)、中央演算処理部20は、安全コントローラ1におけるファンクションブロックの演算の実行を制御するための実行制御情報の論理値を”0”(”LOW”)に設定する(ステップS110)。すなわち、中央演算処理部20は、安全コントローラ1との通信が確立していないとの判定結果、または入力端子に異常があるとの判定結果を受けて、安全コントローラ1にファンクションブロックの演算を実行させないように当該実行制御情報の論理値を設定する。
【0076】
これに対して、入力端子に異常がない場合には(ステップS106においてNO)、中央演算処理部20は、実行制御情報の論理値を”1”(”HIGH”)に設定する(ステップS108)。すなわち、中央演算処理部20は、安全コントローラ1との通信が確立しているとの判定結果、かつ入力端子に異常がないとの判定結果に基づいて、安全コントローラ1にファンクションブロックの演算を実行させるように当該実行制御情報の論理値を設定する。
【0077】
次に、中央演算処理部20は、通信インターフェイス21を介して、実行制御情報および安全入力機器4から取得した動作情報を、安全コントローラ1におけるファンクションブロックに入力される入力信号として安全コントローラ1に送信する(ステップS112)。
【0078】
次に、安全コントローラ1の中央演算処理部10は、通信インターフェイス11を介して、実行制御情報および動作情報を受信する(ステップS114)。次に、中央演算処理部10は、実行制御情報の論理値が”1”に設定されているか否かを判定する(ステップS116)。すなわち、中央演算処理部10は、実行制御情報がファンクションブロックの演算を実行するように設定されているか否かを判定する。
【0079】
実行制御情報の論理値が”1”に設定されている場合には(ステップS116においてYES)、中央演算処理部20は、ファンクションブロックの演算を実行する(ステップS118)。これに対して、実行制御情報の論理値が”1”に設定されていない(つまり、論理値が”0”に設定されている)場合には(ステップS116においてNO)、中央演算処理部20は、ファンクションブロックの演算を実行しない(ステップS120)。そして、中央演算処理部20は、ファンクションブロックの演算実行までの処理を終了する。
【0080】
中央演算処理部20は、ファンクションブロックの演算を実行した場合には、その後、ファンクションブロックの実行結果としての出力信号を安全スレーブ2に送信し、安全スレーブ2は受信した出力信号を安全出力機器5に出力する。
【0081】
上記では、「ファンクションブロックの演算を実行させる」ことを、実行制御情報の論理値のうち高エネルギー側の“1”(”HIGH”)に対応づけている。そのため、実行制御情報の論理値は、実際に通信が確立し、かつ入力端子に異常なしを確認した上で積極的に「ファンクションブロックの演算を実行させる」と判定されない限り、高エネルギー側の”1”にはならないため、実行制御情報は高い信頼性をもつ。例えば、電源投入直後の場合など、上記判定がなされていない状態において、ファンクションブロックの演算を実行させることを示すデータが誤って安全コントローラ1に送信されることもない。
【0082】
なお、上記では、中央演算処理部20は、ステップS102において通信確立の判定処理を実行した後に、ステップS104およびS106において、動作情報の取得処理および入力端子の異常診断処理を実行する場合について説明したが、これに限られない。中央演算処理部20は、ステップS104およびS106の処理を実行後に、ステップS102を実行する場合であってもよい。あるいは、中央演算処理部20は、ステップS102の通信判定処理とステップS106の異常判定処理とを同時並行的に実行する場合であってもよい。
【0083】
<E.実施の形態の効果>
本実施の形態によると、安全コントローラ側では、有効な入力データのみを使用してファンクションブロックを実行するため、ファンクションブロックの不要な実行エラーを発生させずに済むため、装置の稼働率を維持することができる。
【0084】
また、安全スレーブから通信確立の判定結果および入力端子の異常判定結果が考慮された上で、有効性が判定された入力データが送信されるため、安全コントローラ側で新たに入力データの有効性を判定するためのファンクションブロックが不要になる。そのため、安全コントローラ側の処理負担が軽減される。特に、1台の安全コントローラに対してネットワーク上に多数の安全スレーブが接続された場合でも、安全コントローラ側の処理負担が過度に増大することもない。また、ユーザのプログラミングの迷い、および誤ったプログラミングを防止することもできる。さらに、安全コントローラのメモリ消費量を増大させることもない。
【0085】
<F.その他の実施の形態>
上述した実施の形態では、安全スレーブ2に安全入力機器4が接続されている場合について説明したが、これに限られない。例えば、安全スレーブ2に接続される入力機器として、エンコーダ入力機器、温度センサなどが接続されていてもよい。この場合、安全スレーブ2は、これらの入力機器からの入力信号が与えられる入力端子に関する異常の有無を判定する。安全スレーブ2は、入力機器における動作の有無に関する動作情報を入力機器から取得し、実行制御情報と、動作情報とを安全コントローラ1に送信してもよい。
【0086】
また、上述した実施の形態では、入力端子部23aを介して端子異常診断部22aに安全入力機器4が接続されている場合について説明したが、これに限られない。例えば、端子異常診断部22aに、安全入力機器4が接続されており、当該安全入力機器4からの入力信号を直接取得する場合であってもよい。
【0087】
なお、安全スレーブ2は、安全出力機器5(あるいは出力機器)からの入力信号に基づいて、異常の有無を判定してもよい。安全スレーブ2は、当該出力機器における動作の有無に関する動作情報を当該出力機器から取得し、実行制御情報と、動作情報とを安全コントローラ1に送信してもよい。
【0088】
なお、コンピュータを機能させて、上述のフローチャートで説明したような制御を実行させるプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM、ROM、RAMおよびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【0089】
プログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本実施の形態にかかるプログラムに含まれ得る。
【0090】
また、本実施の形態に従うプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本実施の形態に従うプログラムに含まれ得る。
【0091】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。