FA(Factory Automation)におけるネットワークシステムは、生産設備内の入力機器及び出力機器の制御を司る1または複数のPLC(Programmable Logic Controller)と、そのPLCにより動作が制御される機器とが、制御系のネットワークに接続される。それらPLCと機器は、その制御系のネットワークを介してサイクリックに通信を行なうことで、INデータ及びOUTデータ(以下I/Oデータという)の送受を行ない、生産設備を制御する。
PLCは、制御プログラムに基づいて演算実行するCPUユニット、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、ネットワークに接続された他の装置とデータの送受を行なう通信ユニット、各ユニットに電源を供給する電源ユニット、などの複数のユニットを組み合わせることにより構成されている。また、各機能を1つの筐体内に実装した一体型のPLCもある。
さらに最近ではPLCによる制御においても、フェイルセーフ(安全)システムが導入されつつある。つまり、PLCや各機器自体はもちろん、それらを接続するネットワークも安全機能を組み込まれたもので構成される。ここで安全機能とは、例えばCPUその他の各処理部等を二重化して、正しい出力をするようにしたり、ネットワーク異常(正常な通信ができない)の場合や、緊急停止スイッチが押下されたり、ライトカーテンなどのセンサが人(身体の一部)の進入を検出した場合等の、ネットワークシステムが危険状態になった場合に、フェイルセーフが働き、システムが安全側になって、動作が停止するものである。
この種のセーフティ制御システムは、セーフティコントローラ、セーフティI/Oターミナルを含み、切削機械や切断機械やアーム付き製造機ロボット等とともに使用される。セーフティコントローラは、一般的なプログラマブルコントローラ(PLC)に類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵させることにより、その制御において高度な安全性および信頼性を確保したものである。セーフティコントローラは、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全な制御を行なうような機能(フェールセーフ機能)を備えている。セーフティI/Oターミナルにおいても、自己診断機能を有していて、自己診断結果により異常を検出した場合には自己の制御が危険につながらない制御をするといった、フェイルセーフ機能を備えている。それにより、セーフティ制御システムは、製造機ロボット等の動作が危険につながらないようにしている。
ここに言う安全は、より具体的には、規格化されている安全基準を含む意味である。安全規格には、例えばIEC61508やEN規格などがある。IEC61508(プログラム可能な電子システムの機能安全に関する国際電気標準委員会)では、時間あたりの危険故障確立を(失敗確立:Probability of Failure per Hour)を定義し、この確立によってSILのレベル(Safety Integrity Level)を4段階に分類している。また、EN規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけされていて、EN954−1では5つの安全カテゴリにて規定されている。この明細書でいうセーフティコントローラ、セーフティI/Oターミナル、セーフティ制御システム等は、このような安全基準のいずれかに対応したものである。
なお、セーフティ制御システムは「安全制御システム」と称されることもあり、セーフティコントローラは「安全コントローラ」や「安全制御装置」と称されることもある。セーフティI/Oターミナルは「セーフティスレーブ局」や「セーフティスレーブユニット」、単に「セーフティスレーブ」と称されることもあり、セーフティを「安全」と置き換えて称されることもある。
セーフティコントローラとセーフティI/Oターミナルとをネットワークで結んでなるセーフティ制御システムが知られている。セーフティコントローラは、セーフティI/Oターミナルに対してネットワーク通信する通信マスタ機能を備えている。セーフティコントローラが複数のユニット筐体(例えば、電源ユニット、CPUユニット、IOユニット、通信ユニット等)を結合させてなるビルディングブロックタイプである場合には、通信マスタユニット自体にその通信マスタ機能が内蔵される場合もある。その通信マスタユニットは「セーフティマスタ局」、「セーフティマスタユニット」や「セーフティマスタ」と称されることもあり、セーフティを「安全」と置き換えて称されることもある。
セーフティI/Oターミナルは、セーフティコントローラの通信マスタ機能との間でネットワーク通信機能、つまり、通信スレーブ機能を備えている。セーフティI/Oターミナルは接続端子を備えていて、その接続端子に、オン・オフ信号を出すスイッチ等の入力機器と、制御信号の出力先となる出力機器との少なくとも一方が接続されている。入力機器の例は、非常停止スイッチSW、ライトカーテン、ドアスイッチ、2ハンドスイッチなどである。出力機器の例は、セーフティリレーやコンタクタである。これらの入力機器または出力機器も安全規格に対応している。セーフティI/Oターミナルは、接続された安全用途機器から入力した信号に基づいて制御データを生成し、生成した制御データをセーフティコントローラへネットワーク通信する。
セーフティコントローラがビルディングブロックタイプのものであれば、各ユニットは、共通内部バスに接続され、セーフティコントローラ全体の制御を司るCPUユニットとの間でバス通信をし、データをやり取りする。連結されたI/Oユニットも接続端子を備えていて、その接続端子に、安全用途の入力機器または安全用途の出力機器が接続されている。そして、セーフティコントローラは、通信マスタユニットを介してセーフティI/Oターミナルからネットワーク通信により入力した入力機器の入力信号、または連結されたI/Oユニットに接続された入力機器の入力信号を入力し、予め記憶されたロジックプログラムによってその入力信号のオン・オフを論理演算する。その演算結果に基づく出力信号を、通信マスタユニットを介してネットワーク通信によりセーフティI/Oターミナルへ出力するか、または連結されたI/Oユニットへ出力をする。I/Oユニット及びセーフティI/Oターミナルは、その出力信号を出力機器へ出力する。この一連の動作を繰り返し実行することにより、セーフティコントローラにより製造機ロボットを含むシステム全体が制御される。
なお、セーフティコントローラとセーフティI/Oターミナルとの間の通信サイクルは、セーフティコントローラの繰り返し実行のサイクルと同期していてもよいし、非同期でもよい。また、セーフティコントローラあるいはCPUユニットにおけるロジック演算処理の対象となるロジックプログラムは、プログラマーにより予め作成される。作成する際のプログラミング記述については、例えば、ラダー表記、ニーモニック表記、ファンクションブロック表記であってもよい。プログラミング言語でいうと、インタプリタ型言語、スクリプト言語、アセンブリ言語、高級言語、Java言語と呼ばれるものであってもよい。このようなプログラミング言語で書かれたソースコードを、アセンブルやコンパイルなどの処理を行ってCPUに実行させる。
また、セーフティI/Oターミナルに接続された出力機器であるところのセーフティリレーやコンタクタは、製造機ロボットや加工機械、切断機械等につながれていて、リレーやコンタクタの接点がオン中は製造機ロボット等が動作し、接点がオフ中は製造機ロボット等が停止するようになっている。よって、セーフティコントローラは、出力機器をオン・オフ制御することで、最終的な制御対象の操作ロボット等の動作停止に関する制御をする。具体的な例をいうと、セーフティコントローラは、非常停止スイッチSWが正常に操作されたことをセーフティI/Oターミナルから通信にて入力すると、制御対象が危険な動作をしないように出力機器(リレーやコンタクタ)をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を採る。セーフティコントローラは、非常停止スイッチSWまたは他の入力機器が異常有りの診断結果を入力すると、非常停止スイッチSWの操作有無または入力機器のオン・オフ状態にかかわらずに、制御対象が危険な動作をしないようにその動作を停止するよう出力機器をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を採る。
この種のセーフティ制御システムを構築する場合、フェイルセーフを実行するために、関連する出力機器により動作が制御される機械設備と、入力機器の設置位置関係(安全距離)も重要な要素となる。すなわち、出力機器で制御されるロボットなどの機械設備の動作範囲が危険区域とすると、その危険区域の手前に、人の進入を検知するセンサ等の入力機器を設置する。このとき、危険区域に人が進入するためには、このセンサ等の入力機器の検出エリアを通過しなければならず、それ以外の箇所は、例えば壁などが設置されて進入できないようになっているものとする。
すると、人が危険区域に到達する前には、必ず入力機器であるセンサの検出エリアを通過することになる。そこで、フェイルセーフ対応のシステムでは、人の通過を検出したセンサから出力される検出信号が、ネットワークを介して最終的に出力機器に伝達され、出力機器は危険区域内で動作している機械設備の動作を停止する。このとき、センサが人の通過を検出してから、実際に設備機械の動作が停止されるまでには、一定の遅延が生じる。この遅延は、少なくとも入力機器や出力機器の内部処理時間や、各種通知がネットワーク上を伝送される際にかかる通信時間を併せた合計時間分が必要である。
そして、この遅延時間が経過している際も、人或いは身体の一部は危険区域に近づいていく。よって、人或いは身体の一部がセンサの検出領域を通過してから危険区域に到達するまでにかかる時間(歩行速度×歩行距離や、身体の一部(手、腕,半身等)の移動速度×移動距離)よりも、前記合計時間の方が短いと、人或いは身体の一部が危険区域に到達する前に機械設備を停止することができる。従って、システムを設計する場合には、上記を考慮し、入力機器や出力機器の内部処理時間を短くするように設定したり、歩行距離(入力機器の検知位置から危険区域までの距離)を長くしたりし、異常時に確実にシステム(機械設備)を停止することができるようにする。
フェイルセーフを実現するために必要な入力機器の検知位置から危険区までの距離を最小安全距離Sとすると、この最小安全距離Sは、歩行速度(移動速度)K(例えば、1m/sec)とシステム停止に係る停止動作時間T(上記の合計時間)とすると、S=K×T或いはS=K×T+C C:安全係数(追加距離)
により求めることができる。
実際の安全システムをネットワークを用いて構築する場合、上述したように通信による遅れ時間や、各入出力機器の処理時間を、機械設備の設置における安全距離に反映させる必要がある。実際のシステムに使用される各機器の仕様等を理解していなくても、安全ネットワーク(セーフティ制御システム)を構築するためのパラメータを設定できる安全条件設定支援装置として、従来、特許文献1に開示された技術がある。この特許文献1に開示された技術は、たとえば、ネットワークに接続される安全入力機器,安全出力機器を含む安全機器の内部処理時間に関する情報を部品データベースに格納しておき、安全機器同士の送信間隔と安全距離のどちらか一方を入力すると、安全機器の接続関係と安全機器の内部処理時間から、未入力のほうの推奨値を求める機能を備える。
特開2003−263202号公報
図1は、本発明の好適な一実施の形態を示している。図1に示すように、ネットワーク5には、安全入力機器6,安全出力機器7並びに安全PLC8などの各種の安全ネットワーク対応の各装置が接続され、所定の装置間でデータの送受を行なう安全ネットワークシステムが構成される。
係る安全ネットワークシステムを実際に稼働可能な状態に構築するためには、各種のプログラムやパラメータをダウンロードする必要がある。また、安全PLC8と、安全スレーブ(安全入力機器6,安全出力機器7)との間でデータの通信を行なうためには、安全スレーブのI/Oを安全PLC8のメモリに割り付ける必要がある。セーフティI/Oターミナル間での通信を行なう場合も同様である。そして、ツール装置10を用いて、係るプログラムを作成するとともに、そのツール装置10をネットワーク5に接続し、所定の装置にダウンロードしたり、メモリの割り付けをしたりするようになっている。
まず、本発明の処理対象で最終的に構築する安全ネットワークシステムについて簡単に説明すると、例えば、安全入力機器6で検出したセンシング情報は、ネットワーク5を介して所定の安全PLC8に送信される。この安全PLC8は、取得したセンシング情報を解析し、そのセンシング結果に基づいて動作すべき安全出力機器7に対して制御命令を送る。そして、異常事態発生の場合には、安全出力機器7を安全側に動作させるようになっている。また、安全入力機器6から安全出力機器7に直接命令を送る場合もある。
この時、係るネットワークシステムを構築するには、単に各機器を物理的にネットワークに接続するのみならず、各機器の各I/Oモジュール番号を安全PLC8のメモリ(番地)に割り付けたり、安全PLC8でどのような演算処理をするかのプログラムを組む等のプログラミング処理を行なったりする必要がある。さらに、安全ネットワークシステムを構築するためには、上述した通信を行なうことに加えて、安全機能を実現するための各種の設定を行なう必要がある。さらに、本発明との関係で言うと、緊急停止スイッチが押下されたり、ライトカーテンなどのセンサが人(身体の一部)の進入を検出した場合等のネットワークシステムが安全動作を維持できなくなった場合に、フェイルセーフが働き、システムが安全側になって、動作が停止するが、係る動作停止を一定時間以内(人(身体の一部)が危険地帯に到達する前)に行なうために必要な各装置における内部処理時間や、安全距離の算出、設定を行なう必要がある。これらの処理をツール装置10で行なう。ここで、安全距離とは、安全入力機器から制御対象装置までの距離、つまり、安全入力機器の検知位置から危険区域までの距離を言う。
ツール装置10は、モニタ等の表示部11と、キーボードやマウスその他のポインティングデバイス等の入力部12と、入力部12から与えられる情報に基づいて所定の信号処理をする処理部13と、ネットワーク5に接続する通信インタフェース部14と、を備えている。さらに、この処理部13は、入力部12を介して与えられた情報にしたがって処理した結果等を表示部11に表示する機能ももっている。
図2に示すように、処理部13は、表示部11と接続し、データの送受を制御する表示部インタフェース13aと、入力部12と接続し、データの送受を制御する入力部インタフェース13bと、実際に演算処理を実行するMPU13cと、MPU13cの演算実行時にワークメモリとして使用されるメモリ13eと、MPU13cが安全距離等のパラメータを求める際に使用する安全機器等についての情報を格納する部品データベース13dと、を備えている。
部品データベース13dは、各機器等のネットワークに直接または間接的に接続可能な部品についての情報、具体的には、各機器の内部処理時間に関する情報が各機器と関連付けて格納される。もちろんこれ以外の情報も関連付けて登録される。
また、特開2003−263202号公報(特許文献1)に示されるように、安全ネットワークシステムを構築する各安全機器等は、データの送信相手とコネクションが張られており、各コネクションごとに、コネクションNo.,データの送信方向,データサイズ,通信方法,送信間隔等のコネクション情報がそれぞれ設定されるので、係るコネクション情報を所定の記憶手段(メモリ13e等)に記憶保持される。
図3は、安全PLC8の内部構造を示している。この安全PLC8は、ビルディングブロックタイプであり、図では、CPUユニット20と通信ユニット21の2つのユニットを示しているが、その他にも、電源ユニットや、I/Oユニット等の各種のユニットが連結される。各ユニットは、内部バス8aにより連係され、その内部バス8aを介してI/Oデータやメッセージの送受等が行なわれる。安全PLC8の場合、この内部バス8aも二重化されたりする。
CPUユニット20は、MPU20aと、RAM20bと、不揮発性メモリ20cと、表示部20eと、設定部20fと、バス制御部20hと、を備える。MPU20aは、ユーザプログラムをサイクリックに演算実行し、安全ネットワークシステムを構成する各機器の制御等を司る。RAM20bは、MPU20aが演算実行する際のワークメモリや、I/Oデータを格納するIOメモリとして機能する。さらに、RAM20bには、後述する実際の送信回数を保管するための送信回数テーブルや、実際の通信時間を保管する通信時間テーブルが格納される。不揮発性メモリ20cは、各種の設定データや、ユーザプログラム等が格納される。表示部20eは、たとえばLEDなどの動作状態(通信状態)や異常/正常を示す表示ランプ(警報ランプ)や、液晶パネルやELパネルを用いたメッセージ表示機能を備えたものなどがある。設定部20fは、アドレスを設定するスイッチなどである。バス制御部20hは、内部バス8a用のインタフェース(物理層)であり、MPU20aは、バス制御部20h経由で所定のユニットとの間でデータの送受を行なう。
通信ユニット21は、MPU21aと、RAM21bと、不揮発性メモリ21cと、表示部21dと、設定部21eと、通信物理層21fと、バス制御部21gと、を備える。MPU21aは、CPUユニット20との通信処理や、外部の機器との通信処理を実行する。この通信処理は、予め決まったI/Oデータの送受信処理(転送処理を含む)や、受信した自己宛のメッセージに対する処理並びにそのレスポンスの返信処理等もある。
RAM21bは、MPU21aが処理を実行する際に使用するワークメモリとして機能する。本実施形態では、実測値を保管するテーブルをCPUユニット20側に持たせたが、通信ユニットのRAM21b等に格納しても良い。不揮発性メモリ21cは、各種の設定データ等が格納される。表示部21dは、たとえばLEDなどの動作状態(通信状態)や異常/正常を示す表示ランプ(警報ランプ)等である。設定部21eは、アドレスを設定するスイッチなどである。通信物理層21fは、接続されるネットワークの通信プロトコルに対応する物理層であり、通信インタフェースとも称される。バス制御部21gは、内部バス8a用のインタフェース(物理層)であり、MPU21aは、バス制御部21g経由で所定のユニットとの間でデータの送受を行なう。
この安全PLC8は、I/Oデータの送信側と受信側のいずれにもなる。送信側の場合、通信ユニット21(MPU21a)は、図示省略の内部時計に従い、フレームを送信(生成)する際に、パケット内に現在の時刻情報を含むタイムスタンプを付加する。なお、前記送信側と受信側は、定期的に内部時計の同期をとる。
図4は、安全機器22の内部構造を示すブロック図である。この安全機器22は、安全入力機器6や安全出力機器7である。安全機器22は、MPU22aと、RAM22bと、不揮発性メモリ22cと、表示部22dと、設定部22eと、通信物理層22fと、I/O駆動回路22gと、を備えている。MPU22aは、ネットワーク5を介して取得したメッセージを受けて、所定の処理を実行し、レポンスを生成・返信したり、接続されたI/O機器に対する制御等を実行したりする。つまり、このI/O機器に対する制御は、安全入力機器6であれば、接続された入力機器のI/Oデータ(INデータ)を取得し、所定のタイミングでコネクションが張られた安全PLC8や安全出力機器7に向けて送信することであり、安全出力機器7であれば安全PLC8や安全出力機器7から送られてくるI/Oデータ(OUTデータ)を取得し、接続された出力機器を動作させることである。安全機器22が、I/Oデータの送信側となる安全入力機器6の場合、MPU22aは、図示省略の内部時計に従い、フレームを送信(生成)する際に、パケット内に現在の時刻情報を含むタイムスタンプを付加する。
RAM22bは、MPU22aが処理を実行する際に使用するワークメモリとして機能する。安全機器22が、I/Oデータの受信側となる安全出力機器7の場合、RAM22bには、後述する実際の送信回数を保管するための送信回数テーブルや、実際の通信時間を保管する通信時間テーブルが格納される。不揮発性メモリ22cは、各種の設定データ等が格納される。表示部22dは、たとえばLEDなどの動作状態(通信状態)や異常/正常を示す表示ランプ(警報ランプ)等である。設定部22eは、アドレスを設定するスイッチなどである。通信物理層22fは、接続されるネットワーク5の通信プロトコルに対応する物理層であり、通信インタフェースとも称され、マスタとなる通信ユニット21との間でI/Oデータや各種メッセージ等の送受を行なう。I/O駆動回路22gは、入力機器や出力機器等の外部のI/O機器と接続しI/Oデータの送受を行なう。I/O機器が、ON/OFFの2値を採るものとすると、出力機器の場合には、I/O駆動回路22gは、MPU22aからの指示に従い、出力機器の動作のON/OFFを制御する。I/O機器が入力機器の場合、I/O駆動回路22gは、そのI/O機器の状態をMPU22aに伝える機能を持つ。電気回路に開閉スイッチを設け、その開閉スイッチを開閉することにより、出力機器の動作を制御するようにすることもできる。
安全PLC8並びに受信側の安全機器22(安全出力機器7)は、受信したデータの送信回数や、通信時間を検出する機能を備える。それらの各検出する機能は、本実施形態では、パケット内に含まれるタイムスタンプを利用する。つまり、上述したように、送信側の安全機器(安全入力機器6)や安全PLC8(通信ユニット21)は、フレームを送信する際にパケット内にタイムスタンプを付加しているので、受信側の機器(PLCを含む)は、フレームを受信した差異の時刻を内部時計から取得するとともに、パケット内に付加されたタイムスタンプの時刻との差を求めることで、そのフレームの通信時間を算出する。係る通信時間の算出処理は、安全機器22の場合にはMPU22a内に設定される通信時間算出部25が行なう。また、安全PLC8の場合は、通信ユニット21(MPU21a)が通信時間を求め、その結果をCPUユニット20に伝えるようにしている。なお、通信時間の算出をCPUユニット20側で行なっても良い。
このようにして算出された通信時間は、コネクションごとに通信時間テーブル26が作成され、RAM20a,22bに記憶保持される。図5に示すように、本実施形態では、通信時間を複数の領域(図では、10[ms]間隔)に分割し、計測した実際の通信時間を各領域に振り分け、各領域に属するデータ送信の回数を記憶保持するようにしている。よって、通信時間テーブル26のデータ構造は、コネクションNoと、各領域の発生回数を関連付けたものとなる。
また、送信回数の検出は、以下のようにしている。すなわち、図6に示すように、送信側からは、設定された送信間隔Tで、フレームが定期的に送信される。このフレームには、タイムスタンプ(TS)が付加されている。すると、n回目に送信されるフレームのタイムスタンプをTSnとすると、前回(n−1)送信されたフレームのタイムスタンプTS(n−1)との差(TSn−TS(n−1))が、送信間隔Tとなる。なお、TSnは、具体的な時刻情報である。
また、安全ネットワーク(セーフティ)の通信プロトコルであるCIP Safetyでは、各通信ごとに受信側から受け取りのレスポンスが発せれる仕様にはなっていない。そこで、送信側は、送信したフレームがコネクションを張った相手に到達できたか否かに関係なく、設定された送信間隔で、そのときの最新のデータ(I/Oデータ)を送信するようになっている。
ここで、図6に示すように、4回目と6回目と7回目の送信フレームが、何かしらの原因で受信側に到達しなかったとする。上述したように、送信側では、送信したフレームが受信側に到達したか否かに関係なく最新のデータを送信するため、その送信フレーム中に1回目の送信なのか、再送(m回目)の送信なのかを区別する情報を付加することができない。従って、受信側で4回目に受信したフレームは、実際には送信側では5回目に送信したフレームではあるが、その受信したフレーム自体を解析しただけでは、4回目の送信フレームなのか5回目の送信フレーム化の識別はできない。そこで、本実施形態では、受信側にて前回受信したフレームに付加されたタイムスタンプを記憶保持しておき、今回受信したフレームに付加されたタイムスタンプとの差分から、送信回数を特定するようにした。
つまり、図5に示す例では、受信側で4回目に受信したフレームのタイムスタンプはTS5となっており、前回受信したフレームのタイムスタンプTS3との差分を求めると、その算出結果は、2倍の送信間隔(2T)に近似する値となる(送信間隔Tよりは十分に長い)。従って、この場合には、前回受信してから今回受信するまでの間に、1回分のフレームが送信されていたと推定できるので、受信側でフレームを受信できるまでの送信回数は2回となる。
同様に、受信側で5回目に受信したフレームのタイムスタンプはTS8となっており、前回受信したフレームのタイムスタンプTS5との差分を求めると、その算出結果は、2倍の送信間隔(3T)に近似する値となる(送信間隔Tよりは十分に長い)。従って、この場合には、前回受信してから今回受信するまでの間に、2回分のフレームが送信されていたと推定できるので、受信側でフレームを受信できるまでの送信回数は3回となる。
係る処理を行なうため、受信側のRAM22b,20b等には、前回受信したフレームのタイムスタンプ(前回タイムスタンプ)を記憶する前回タイムスタンプ記憶部が設定される。そして、係る送信回数の管理は、コネクションごとに行なわれるので、安全PLC8のように複数のコネクションを保有する場合には、その前回タイムスタンプ記憶部もコネクションの数に応じて複数用意される。
受信側の機器は、受信したフレームが、前回受信したフレームから何回目の送信フレームであるかを判定する送信回数判定部27を備えている。送信回数判定部27は、フレームを受信するごとにそのコネクションにおける前回受信したフレームのタイムスタンプを用いて送信間隔を求める。そして、送信回数判定部27は、求めた送信回数をコネクションごとにまとめた送信回数テーブル28を作成し、RAM20a,22bに記憶保持する。なお、実際には、求めたタイムスタンプの差分値が、送信間隔Tの倍数に一致するとは限らないので、ある程度のマージンを設け、当該差分値が送信間隔のN倍に対し、一定の時間範囲内であれば、送信回数はN回とするように設定するとよい。図7に示すように、この送信回数テーブル28は、コネクションNoと、送信回数の発生回数を関連付けたものとなる。なお、送信回数が大きい場合には、具体的な回数はさほど問題にならない(そもそも送信回数が多数回になること自体が問題)ともいえるので、例えば、送信回数4回以上は1つのグループにまとめてその発生回数を管理するようにしてもよい。
図8は、安全機器22における受信処理機能を示すフローチャートである。安全PLC8における受信処理も同様のものが実行される。まず、フレームを受信すると、MPU22aは、データ受信か否かを判断する(S1)。データ受信、つまりI/Oデータの場合には、この分岐判断がYesとなり、処理ステップS2に飛び、MPU22aは、送信回数の判定処理を行なう(S2)。つまり、受信したデータの送信元情報から、コネクションNoを特定し、前回タイムスタンプ記憶部から対応する前回受信タイムスタンプを読み出すとともに、受信したフレームに付加された今回のタイムスタンプを抽出し、両者の時間差から送信回数を決定する。
MPU22aは、決定した送信回数に従い、送信回数テーブルを更新する(S3)。つまり、該当するコネクションNoの送信回数のエリアに格納された回数を“1”インクリメントする。
次に、MPU22aは、今回のタイムスタンプと現在時刻(受信時刻)の差分を求め、通信時間を算出する(S4)。そして、MPU22aは、算出した通信時間が、どの領域に属するかを判定する。
MPU22aは、決定した通信時間の属する領域に従い、通信時間テーブルを更新する(S5)。つまり、該当するコネクションNoの通信時間の領域のエリアに格納された回数を“1”インクリメントする。なお、本実施形態では、送信回数の判定・テーブル更新を先に行なったが、通信時間の判定・テーブル更新を先に行なってももちろん良い。
一方、受信したフレームがデータ以外の場合、処理ステップ1の分岐判断はNoとなるので処理ステップ6に進み、MPU22aは、“送信回数テーブル読み出し要求”のメッセージか否かを判断する(S6)。当該要求の場合、MPU22aは、該当する送信回数テーブルを読み出し(S7)、読み出した送信回数テーブルの内容を正常レスポンスとして送信する(S8)。
また、受信したフレームのメッセージが、“送信回数テーブル読み出し要求”でない場合には、MPU22aは、“通信時間テーブル読み出し要求”か否かを判断する(S9)。当該要求の場合、MPU22aは、該当する通信時間テーブルを読み出し(S10)、読み出した通信時間テーブルの内容を正常レスポンスとして送信する(S11)。
さらに、受信したフレームのメッセージが、“通信時間テーブル読み出し要求”でもない場合には、MPU22aは、“テーブルクリア要求”か否かを判断する(S12)。当該要求の場合、MPU22aは、送信時間回数テーブル並びに通信時間テーブルに格納されたデータをクリアする(S13,S14)。このクリア対象のテーブルは、全てのコネクションとしている。これにより、本実施形態では、係るクリア命令を受信したならば、全てのテーブルを一括してクリアする。もちろん、コネクション情報(コネクションNo)とともにテーブルクリア要求を発行し、該当する1または複数のコネクションについてのみ、テーブルをクリアするようにしても良い。MPU22aは、テーブルをクリアしたならば、完了通知を正常レスポンスとして送信する(S15)。
なお、このクリア処理をした後で、データを受信した場合には、処理ステップS2からS5の処理を実行することで、送信回数テーブル並びに通信時間テーブルが更新される。よって、テーブルクリア要求を受けた場合、そのクリア後に行なわれる実際の通信に基づく通信時間と送信間隔の情報を収集することができる。そして、受信したフレームのメッセージが、“テーブルクリア要求”でもない場合には、MPU22aは、エラーレスポンスを送信する(S16)。
安全条件設定支援装置であるツール装置10は、ネットワークシステムに関する情報を部品データベース13d等の記憶手段から読み出し、内部に固定的に持つパラメータから安全ネットワークを構成するための条件の設定を行なう機能と、上述した受信側の安全機器が管理する送信回数テーブル並びに通信時間テーブルに格納された実測値に基づいて、その実際のネットワークの状況を加味した安全ネットワークを構成するための条件を求める機能と、を有する。
具体的には、ツール装置10は、図9に示すフローチャートに従って処理する機能を持つ。なお、前提として、ツール装置10は、コネクション情報や、実際の部品等の配置・結線・通信パラメータ等の接続情報が事前に作成されて記憶保持し、その記憶した情報を必要に応じて読み出して安全ネットワークの要件を満たす各種条件を設定するようにしている。この点も特許文献1と同様である。
入力部12を介してMPU13cに安全条件設定モードの指示があると(S21)、メモリ13eに記憶保持させた接続情報を読み出し(S22)、それに基づいて表示部11に現在の接続情報を視覚(ビジュアル)的に表示する。つまり、各要素のマークを所定位置に表示するとともに、各マークを結ぶ線を表示する(S23)。次いで、編集したい対象、例えば機器を交換等したい場合には、対応する機器を選択し、また、通信パラメータを変更したい場合には、線を選択する(S24)。これに基づきプロパティ、つまり通信パラメータ等を表示し、その表示によりデータの入力可能モードとなる(S25)。一例としては、表示部11の作業領域11bに図10のように表示される。この例では、前提として既に通信パラメータなどのデータが入力され、メモリ13e等に格納されているため、通信方法や送信間隔などもその格納された設定済み情報が読み出されて表示される。また、画面上に表示されないが、このとき、少なくとも対象となっている機器の内部処理時間情報(部品データベース13dに格納されている)も読み出される。
ユーザは、入力部12を操作し、必要に応じてデータの再入力をする(S26)。つまり、図10(a)に表示された入力画面に対し、例えば送信間隔等の修正するデータ入力エリアを選択し、具体的な数値等を入力する。
次いで、入力部12からの入力を待ち、安全距離をユーザが指定するか否かを判断する(S27)。具体的には、表示画面上に例えば「安全距離入力」,「条件計算・判定」などの入力スイッチ領域を設けておき、「安全距離入力」が選択されると、安全距離の入力が指定されたと判断し、安全距離入力画面を表示し、入力部12からの入力を待つ。ここで入力する安全距離は、ユーザが実際の現場において取ろうとしている安全入力機器での検出位置と、危険領域までの距離である。
なお、安全距離の入力であるが、この例では、ステップS27の分岐判断の後、安全距離を指定する場合には別途安全距離入力画面を表示するようにしたが、例えば、ステップS25のプロパティの表示の際に、図10(b)に示すように、安全距離を入力する領域も一緒に表示し、この安全距離に具体的なデータを入れることなく所定のボタン(演算開始等)が選択された場合には、安全距離未入力と判断することもできる。
そして、安全距離が入力されたならば(S28)、ステップS29に進み、ツール装置10は、対象機器に対して所定のテーブル読み出し要求を発行し、当該対象機器からのレスポンスを受けて、実測値の通信時間や送信回数を取得する(S29)。ツール装置10は、コネクション情報により、処理対象の機器(受信機器)並びにそれに関するコネクションNo.を知っているのでの、それに基づき、ネットワークを介してメッセージを発行する。
ツール装置10は、取得した実測値に基づき、安全条件設定用のパラメータ値(送信回数,通信時間)を決定する(S30)。通信時間は、通信時間テーブルから取得した通信時間の内、実測値で最大の領域の上限値をパラメータに決定する。例えば図11に示す場合、通信時間が40[ms]以上50[ms]未満が50回となり、50[ms]以上のものは存在しないので、最大の50[ms]を通信時間とする。なお、領域の区分けの仕方として、下限値以上上限値未満としているので、仮に実測値が50[ms]とすると、50[ms]以上60[ms]未満の領域に属することになり、その場合の通信時間に関する安全条件設定用のパラメータ値は、60[ms]となる。このようにすることで、測定誤差(公差)等を考慮しても、より確実に安全条件を求めることができる。もちろん、その領域を下限値より大きく上限値以下とし、実測値が50[ms]の場合の安全条件設定用のパラメータ値が、50[ms]となるようにしてもよい。
また、通信時間の決定は、最も長い通信時間(実測値)が属する領域の上限としたため、例えば、図11に示す例で、50[ms]以上60[ms]未満の領域に属する実測値は0回で、60[ms]以上70[ms]未満の領域に属する実測値は1乃至数回ある場合、本実施形態では、安全条件設定用のパラメータ値は、70[ms]となる。これは、通信時間は、ノイズ等の影響よりも、負荷の影響の方が大きく起因し、通常の運転動作中に、一部でも通信時間が長くかかる現象が発生する場合には、その安全ネットワークシステムでは、一時的に負荷が掛かり通信時間が長くなることがあることを意味し、係る状態の時でも安全が保証される必要があるためである。なお、いずれの場合も、従来の固定値に基づく安全パラメータの決定では、通信時間は送信間隔を用いて規定していたため、それに比べると、短くなる。
一方、送信回数は、実測値の状況から総合的に判断して決定する。具体的には、図11に示すように、全てのデータ通信が、送信回数が1回とすると、その場合の送信回数についての安全条件設定用のパラメータ値は、1回となる。また、図11に示す例において、送信回数=2回のケースが、数回程度のように発生回数は少ないものの0でない場合には、送信回数のパラメータは、1回と2回の両方とし、それぞれに基づいて安全パラメータを求める。また、送信回数=2回のケースが、比較的多く発生する場合には、送信回数のパラメータは、2回にする。なお、送信回数が3回以上のものが発生する場合には、2回以下という規定を満足しないので、その旨を表示する。
発生回数が少ないか否かの判断は、例えば、10回以下のように、絶対値としての固定的な閾値を設定したり、送信回数=1回の発生回数の10%以下というように相対的な基準を設定したりすることができる。なお、いずれの場合も、上記の数値は一例であり、適宜変更できる。そして、固定的,相対的な閾値を超える場合には、発生回数が多いとする。
上記のようにして求めたパラメータ値を用い、処理時間合計や必要安全距離などを算出し、その演算結果を表示する(S31)。このステップS31における演算処理であるが、安全距離と送信間隔の両方が与えられた場合には、その条件で安全ネットワークとしての要件を満たすか否かの判断を行なう。また、何れか一方が未入力の場合には、安全ネットワークとしての要件を満たすために必要な条件を求める。
具体的には、たとえば、コネクションが張られた機器A,B間の通信に関し、入力パラメータ(通信条件)や、部品データベースに格納された各機器A,Bにおける内部処理時間に関する情報が、図12に示すようになっているものとする。
まず、CIP Safetyでは、通信による遅れ(ネットワーク遅延時間)は次の算出式で求めることになっている。
最大ネットワーク遅延時間=送信間隔*送信回数+2*通信時間
よって、上記の式に、送信間隔=200msと、実測値に基づいて決定された送信回数=1回と通信時間=50msを代入すると、ネットワーク遅延時間は300msとなる。そして、A,Bの各機器における内部処理時間は、データベースから取得したものを用いると、処理時間合計は、1000msとなる。また、初期条件として設定された作業員の歩行速度が、1m/secとすると、安全距離は1m以上となる。なお、この歩行速度は、任意に設定・変更できるものであり、この歩行速度の情報も、部品データベースその他の記憶手段に格納する。また、この歩行速度は、実際の歩行速度ではない想定した歩行速度であるので、想定歩行速度と称することもできる。また、危険地域への進入は、歩いていく場合に限らず、たとえば、手を挿入するなど身体の一部の移動に伴い生じたり、車両その他の移動手段とともに移動して近づいたりする等、各種の態様が考えられる。従って、歩行速度(想定歩行速度)に限ることはなく、その場所(危険地域の周囲)に応じた移動速度(想定移動速度)を設定すると良い。そして、場所によって歩行速度が適切であったり、腕,上半身の曲げ等の身体の一部の移動速度が適切であったりする場合もあるので、たとえばコネクションNo等と関連づけて速度情報(歩行速度・移動速度)を記憶させておき、それを用いて安全距離を算出するようにしても良い。
一方、固定値を用いた安全距離の算出は、CIP Safetyでは、デフォルトとして送信回数は2回、通信時間は送信間隔を使用することが仕様書で推奨されている。すると、上記の場合、固定値(推奨値)に基づいて算出したネットワーク遅延時間は、800msとなり、安全距離は1.5m以上必要となる。よって、この場合は、実際の生産設備に設置した安全ネットワークでは、安全距離が1m確保できればよいので、安全条件を満たした状態でのレイアウトの自由度が増す。
そして、このようにして求めた結果を表示部に表示する(S32)。この表示は、実測値に基づく結果のみを表形式等で表示するようにしても良いし、図12に示すように、固定値(推奨値)に基づく結果も併記して表示するようにしても良い。
そして、安全ネットワークとしての要求を満足するものが得られたか否かを判断する(S33)。この判断は、ユーザからの入力を受けて行なう。処理ステップS32の実行により、表示された結果を見たユーザは、先に設定した通信条件における実際の安全ネットワークシステムにおける安全距離が1m以上であることが分かるので、係る安全距離を実際に取れているか否か(レイアウト変更の場合には、1m以上確保できるか否か)を判断し、取ることができる場合にはステップS33における判断は要件満足となる。
そして、要求を満足すると判断した場合には、必要に応じて確定した安全条件・パラメータを、対応する各機器に対してダウンロードして処理を終了する(S34)。
なお、実際の現場で1mの距離が確保できない場合(S33でNo)には、処理ステップS24に戻り、条件の再入力を行い、再度演算実行する。このとき、再入力する条件としては、送信間隔を短くするようにしても良いし、逆に実際に採れる距離を安全距離として入力するとともに、送信間隔を未入力とし、安全ネットワークの要件を満たす送信間隔を求めさせることもできる。そして、送信間隔を変更した場合には、その変更を実際のネットワークに反映させる必要があるので、ステップS34の実行処理を行い、変更された条件をダウンロードすることになる。
上記の例では、送信間隔と実測値に基づく通信時間並びに送信回数に基づいて安全距離を算出することについて説明したが、送信間隔と安全距離の両方を入力し、設置条件の適否を判断することもできる。この場合、送信間隔と実測値に基づく通信時間並びに送信回数に基づいて当該安全ネットワークシステムにおける安全距離(必要安全距離)を算出し、その算出結果と、入力された安全距離とを比較し、求めた必要安全距離と入力された安全距離とを比較し、要件を満たしているか否かを判断する。つまり、安全距離の方が長ければ「OK」となり、安全距離の方が短ければ「NG」となる。
また、本実施形態では、推奨値に基づく安全パラメータ(安全条件)の決定と、実測値に基づく安全パラメータ(安全条件)の決定の両方の機能を備えたが、実測値に基づいて安全パラメータを求める機能のみでも良い。逆に、本実施形態のように両方の機能を備えることで、実測値に基づいて決めたパラメータ値がデフォルト(推奨値)に基づいて決めた値と比較し、それよりも劣る場合は、その原因として考えられる項目と、その改善方法をユーザに通知する機能を備えるとよい。
劣る例としては、例えば安全距離が長くなったり、安全距離をユーザが希望する値にするために必要な送信間隔が短くなったり、送信回数が3回以上のものがあったりする場合がある。これらの原因は、通信ケーブルが規定よりも長かったり、コネクタ部分の接続不良があったり、ノイズが多く発生する環境であるなどであり、予めその因果関係が関連づけられる。また、係る原因に対する改善方法も、“ケーブルの長さを確認してください”,“コネクタはしっかり装着されていますか”など予め決まったものがある。そこで、ツール装置10は、係る因果関係に基づき、劣った項目と原因と改善方法を関連づけたデータをデータベースに記憶保持しておき、実測値に基づいて決めたパラメータ値の方が劣っている場合には、データベースから該当する情報を抽出し、その結果(項目とパラメータ値)と共に、あらかじめ内部に持った改善方法等を表示することで実現できる。
また、上述の例では、2つの機器間でデータの送受を行なう場合についての安全距離や送信間隔等の安全条件を求める場合を説明したが、本発明はこれら限ることはない。すなわち、安全入力機器6から出力された異常状態を示す検出信号が、直接安全出力機器7に送られ、安全出力機器7に接続された制御対象装置が停止されるようなシステム構成の場合には、上記の実施形態の装置・システムにより実際の状況に適した安全条件を求めることができる。
一方、安全入力機器6から出力された上記検出信号が、一旦安全PLC8に送られ、安全PLC8にて所定の演算処理を実行後に、安全出力機器7に停止信号が送られ、それを受けた安全出力機器7が、接続された制御対象装置を停止するような構成では、以下のようにして安全条件を求めることができる。すなわち、安全入力機器6から安全PLC8へのコネクションについての実測値の通信時間と送信間隔の履歴情報が、安全PLC8に設けられたそれぞれのテーブルに格納されており、安全PLC8から安全出力機器7へのコネクションについての実測値の通信時間と送信間隔の履歴情報が、安全出力機器7に設けられたそれぞれのテーブルに格納されている。そこで、ツール装置10は、安全PLC8並びに安全出力機器7に対して、それぞれテーブル読み出し要求を発行し、それぞれの機器間(安全入力機器6−安全PLC8,安全PLC8−安全出力機器7)での通信時間と送信間隔の履歴情報を取得する。よって、通信時間は、各機器間のそれぞれの最大通信時間同士を加算して求める。送信間隔は、それぞれの機器間の送信間隔の適正値を求め、最も悪いものを実測値に基づく送信間隔に決定する。
このようにして求めた通信時間と送信間隔の適正値と、各機器(安全出力機器6,安全PLC8,安全出力機器7)の内部処理時間と、送信間隔に基づき、安全入力機器6から検出信号が出力されてから、安全出力機器7に停止命令が伝わるまでの全体の時間が求められ、それに基づいて、安全距離を算出することができる。
4個以上の機器を伝達される場合にも、上記と同様に必要な情報を取得し、それらを加算処理等することで安全条件を求めることができる。
上述した実施の形態は、ツール装置に組み込んだ状態を前提として説明したが、上述した各処理(例えば各図に示したフローチャートを実行するための処理)をコンピュータに実行させるためのプログラムとし、係るプログラムは所定の記録媒体に記録して提供するようにしてもよい。