本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態に係る制御システム1の適用例を示す模式図である。本実施の形態に係る制御システム1は、たとえば、IEC61508などに規定されたセーフティ機能に加えて、非特許文献2("IEC 61800-5-2:2016 Adjustable speed electrical power drive systems - Part 5-2: Safety requirements - Functional", International Electrotechnical Commission, 2016-04-18)に規定された、STO(Safe Torque Off)、SS1(Safe Stop 1)、SS2(Safe Stop 2)、およびSOS(Safe Operating Stop)などの、ドライブ装置に関連するいくつかのセーフティ機能を提供する。
図1を参照して、制御システム1は、主として、標準コントローラ100、ならびに、標準コントローラ100とフィールドネットワーク2を介して接続されるセーフティコントローラ200、および1または複数のセーフティドライバ(セーフティサーボドライバ)300を含む。セーフティドライバ300の各々は、電気的に接続されたサーボモータ400を駆動する。なお、サーボモータ400に限らず、任意の種類のモータを採用できる。また、セーフティドライバ300の実体は、サーボドライバであってもよいし、汎用的なインバータ装置であってもよい。以下の説明においては、セーフティドライバ300を「ドライブ装置」の一例として説明する。
標準コントローラ100は、「コントローラ」に対応し、予め作成された標準制御プログラム(後述する標準制御プログラム1104)に従って、サーボモータ400を含む制御対象に対する標準制御(後述する標準制御150)を実行する。典型的には、標準コントローラ100は、1または複数のセンサ(図示していない)などからの入力信号に応じた制御演算をサイクリック実行することで、サーボモータ400などのアクチュエータに対する指令を周期的に算出する。
セーフティコントローラ200は、セーフティプログラム(後述するセーフティプログラム2104)に従って、セーフティドライバ300に対してセーフティ機能(後述するセーフティ機能250)の動作に係るセーフティ指令を送信する。セーフティコントローラ200は、標準コントローラ100とは独立して、制御対象に対するセーフティ機能250を実現するための監視および制御演算をサイクリック実行する。
セーフティコントローラ200は、任意のセーフティデバイス240からの入力信号の受付、および/または、任意のセーフティデバイス240への指令の出力が可能になっている。セーフティプログラム2104は、セーフティコントローラ200と通信可能に接続されたサポート装置500が提供する開発環境を利用して、ユーザによって予め作成され、セーフティコントローラ200に転送される。
セーフティドライバ300は、標準コントローラ100からの指令に従って、サーボモータ400に電力を供給することで、サーボモータ400を駆動する。セーフティドライバ300は、サーボモータ400からのフィードバック信号などに基づいて、サーボモータ400の回転位置、回転速度、回転加速度、および発生するトルクなどを周期的に算出する。
さらに、セーフティドライバ300は、セーフティコントローラ200からのセーフティ指令に従って、サーボモータ400の駆動に関する所定のセーフティ機能250を実行する。より具体的には、セーフティドライバ300は、セーフティ機能250に必要な状態情報をセーフティコントローラ200へ提供するとともに、要求されるセーフティ機能250に応じたモーションセーフティプログラム(後述するモーションセーフティプログラム3204)を実行することで、サーボモータ400に供給する電力を調整または遮断する。
サーボモータ400は、セーフティドライバ300からの電力を受けて回転するモータ(後述する三相交流モータ402)を有するとともに、モータの回転軸に結合されたエンコーダ(後述するエンコーダ404)からの検出信号をフィードバック信号としてセーフティドライバ300へ出力する。
サポート装置500は、標準コントローラ100側の開発およびセーフティコントローラ200側の開発を支援する。より具体的には、サポート装置500は、標準コントローラ100側の開発として、標準コントローラ100で実行される標準制御プログラム(後述する標準制御プログラム1104)の開発や標準制御150に係る設定などを支援する。さらに、サポート装置500は、セーフティコントローラ200側の開発として、セーフティコントローラ200で実行されるセーフティプログラム(後述するセーフティプログラム2104)の開発やセーフティ機能250に係る設定などを支援する。サポート装置500は、少なくとも1つ以上の命令情報を組み合わせることでプログラムを生成するための開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)をユーザに提供する。
本明細書において、「デバイス」は、フィールドネットワーク2などの任意のネットワークを介して、他の装置とデータ通信可能な装置の総称である。本実施の形態に係る制御システム1において、「デバイス」は、標準コントローラ100、セーフティコントローラ200、およびセーフティドライバ300を包含する。
本明細書において、「標準制御」および「セーフティ制御」の用語を対比的に用いる。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。一方、「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。「セーフティ制御」は、IEC61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
本明細書においては、ドライブ装置(セーフティドライバ300)に特有のセーフティ機能を「モーションセーフティ機能」あるいは単に「セーフティ機能」と総称する。典型的には、「機能」は、上述の非特許文献2に規定されるドライブ装置に関連するセーフティ機能を包含する。たとえば、制御軸の位置や速度を監視して安全を確保するための制御を含む。
本明細書において、「プロセスデータ」は、標準制御またはセーフティ制御の少なくともいずれかで用いられるデータの総称である。具体的には、「プロセスデータ」は、制御対象から取得される入力情報、制御対象へ出力される出力情報、各デバイスでの制御演算に使用される内部情報などを包含する。
入力情報は、光電センサなどにより検出されるON/OFF信号(デジタル入力)、温度センサなどにより検出される物理信号(アナログ入力)、ならびに、パルスエンコーダなどが発生するパルス信号(パルス入力)などを包含する。出力情報は、リレーなどを駆動するためのON/OFF(デジタル出力)、サーボモータの回転速度などを指示する速度指令(アナログ出力)、ならびに、ステッピングモータの移動量などを指示する変位指令(パルス出力)などを包含する。内部情報は、任意のプロセスデータを入力とする制御演算などによって決定される状態情報などを含む。
制御システム1のフィールドネットワーク2においては、プロセスデータ通信が行われており、標準コントローラ100を通信マスタとして、通信フレーム600がサイクリック(たとえば、数〜10数msec)にデバイス間を一巡する。通信フレーム600が伝送する周期をプロセスデータ通信周期とも称する。本実施の形態においては、このような通信フレーム600をサイクリックに伝送するフィールドネットワーク2のプロトコルの一例として、EtherCATを採用する。
通信フレーム600には、デバイスごとにデータ領域が割り当てられている。各デバイスは、周期的に伝送される通信フレーム600を受信すると、当該受信した通信フレーム600内の自デバイスに割り当てられたデータ領域に予め設定されたデータの現在値を書き込む。そして、現在値の書き込み後の通信フレーム600を次段のデバイスに送出する。各デバイスにより書き込まれたデータの現在値は他のデバイスから参照可能になっている。
各デバイスが通信フレーム600に予め設定されたデータの現在値を書き込むため、フィールドネットワーク2を一巡して通信マスタ(標準コントローラ100)に戻ってくる通信フレーム600には、各デバイスにより収集された最新の値が含まれることになる。
本実施の形態においては、このようなプロセスデータ通信を利用して、セーフティコントローラ200とセーフティドライバ300のそれぞれとの間で論理コネクション4が形成される。この論理コネクション4は、セーフティ機能250を実現するためのデータの遣り取りに用いられる。
前述したように、フィールドネットワーク2のプロトコルとしてEtherCATを採用する場合には、FSoE(FailSafe over EtherCAT)と称されるプロトコルを用いて論理コネクション4を形成できる。
より具体的には、論理コネクション4を形成するために遣り取りされるコマンドを格納するための専用のデータ領域が通信フレーム600に割り当てられる。当該専用のデータ領域を用いて、デバイス間でコマンドを遣り取りすることで、論理コネクション4を形成する。
図1に示すように、各セーフティドライバ300は、モーションセーフティ機能360の有効または無効を管理するためのセーフティステータス70を保持する。セーフティドライバ300によって実現可能なモーションセーフティ機能360には、STO(Safe Torque Off)、SS1(Safe Stop 1)、SS2(Safe Stop 2)、SOS(Safe Operating Stop)、SSR(Safe Speed Range)、SDIp(Safe Direction positive)、およびSDIn(Safe Direction negative)が含まれる。これら各モーションセーフティ機能360の有効または無効を指定するための指定情報は、セーフティステータス70に含まれるビットごとに設けられた領域に配置されている。なお、Error Ack(Error Acknowledge)は、エラー発生時にエラーを解除するための機能であり、常に有効化されている。
各セーフティドライバ300は、予め決められたモーションセーフティ機能360のみを有する。たとえば、特定のセーフティドライバ300においては、図1に示す各モーションセーフティ機能360のうち、SSRを実装せず、それ以外のSTO、SS1、SS2、SOS、SDIp、およびSDInを実装する。これはあくまで例示であり、他のセーフティドライバ300においても同様に、予め決められたモーションセーフティ機能360のみを有する。
セーフティドライバ300は、セーフティステータス70に含まれる指定情報に従って、モーションセーフティ機能360ごとに有効化または無効化を行う。「指定情報」は、モーションセーフティ機能360のそれぞれについて有効または無効を指定するための情報であれば、どのような情報であってもよい。本実施の形態においては、指定情報は、「0」または「1」で示されるフラグによって有効または無効を指定する。より具体的には、フラグが「0」であるときにはモーションセーフティ機能360が有効になり、フラグが「1」であるときにはモーションセーフティ機能360が無効になる。
全てのモーションセーフティ機能360は、起動時(すなわち、デフォルト)において、有効となるようにフラグが固定されており、ユーザによってその内容を変更することができないようになっている。つまり、デフォルト時におけるモーションセーフティ機能360は全て有効に固定されている。このことは、上述した非特許文献1で開示された規定において要求されている。
ここで、図2を参照しながら、ETGの規格で定義されたセーフティステータス70におけるセーフティ機能の有効/無効設定について説明する。図2は、ETGの規格で定義されたセーフティ機能の有効/無効設定を指定する1バイト目の情報を示す模式図である。
図2に示すように、非特許文献1においては、セーフティ機能の有効/無効設定が指定される1バイト目の情報が示されている。具体的には、非特許文献1に示されたモーションセーフティ機能360に関するコントロールワード700には、ビット欄702と、名称欄704と、説明欄706とが含まれる。ビット欄702には、1バイト目に含まれるビットとして、0ビットから7ビットまでの各ビットが配置されている。名称欄704には、各ビットに対応付けられたモーションセーフティ機能360の略称が示されている。説明欄706には、各モーションセーフティ機能360の正式名称およびフラグに対応付けられた動作状態が示されている。
本実施の形態においては、全てのモーションセーフティ機能360について、デフォルト状態でフラグが有効を示す「0」に固定されている。各モーションセーフティ機能360は、デフォルト時において、フラグが「0」で立ち上がることが要求されている。
図2に示すようなセーフティ機能の有効/無効設定が指定される1バイト目においては、0ビットから7ビットまでの各ビットにおけるフラグがデフォルト時に「0」に固定されており、ユーザによってデフォルト状態を変更することはできないようになっている。なお、図示は省略するが、2バイト目については、ユーザによってデフォルト状態を変更することができるようになっている。
なお、セーフティ機能の「有効」とは、安全制御を行うための機能が動作状態であることを意味する。たとえば、STO、SS1、SS2、SOS、およびSSRについては、フラグが「0」であるときに“active”となる。これは、安全制御を行うための機能が動作状態であることを意味している。また、SDIpやSDInについては、フラグが「0」であるときに“disable…”となる。これは、positive方向やnegative方向にモータが動作することを禁止すること、すなわち、安全制御を行うための機能が動作状態であることを意味している。
一方、セーフティ機能の「無効」とは、安全制御を行うための機能が非動作状態であることを意味する。たとえば、STO、SS1、SS2、SOS、およびSSRについては、フラグが「1」であるときに“deactivate”となる。これは、安全制御を行うための機能が非動作状態であることを意味している。また、SDIpやSDInについては、フラグが「1」であるときに“enable…”となる。これは、positive方向やnegative方向にモータが動作することを許可すること、すなわち、安全制御を行うための機能が非動作状態であることを意味している。
図1に戻り、各セーフティドライバ300は、実装しているか否かに関わらず、全てのモーションセーフティ機能360に対応するフラグがデフォルトで「0」となって立ち上がる。このため、実装しているモーションセーフティ機能360については、デフォルト時の設定が有効に固定されていることで、その機能が有効化される。仮に、実装していないモーションセーフティ機能360がある場合、その実装していないモーションセーフティ機能360については、フラグが有効に設定されていても実行されることはない。
このように、各セーフティドライバ300においては、実装しているか否かに関わらず、全てのモーションセーフティ機能360について、デフォルト時の設定が有効に固定されている。しかしながら、実使用においては、モーションセーフティ機能360を有効にしたり、あるいは無効にしたりといったように、工程内の作業内容に応じてセーフティ機能の有効/無効設定を変更しなければならない場合もある。
特定のモーションセーフティ機能360の有効または無効を後から変更する手法として、セーフティコントローラ200からのセーフティ指令において、特定のモーションセーフティ機能360を有効化または無効化するための指定情報を含ませることが考えられる。たとえば、本実施の形態においては、論理コネクション4が確立した後に、セーフティドライバ300に対してセーフティコントローラ200からセーフティ指令を送信することができる。このセーフティ指令に特定のモーションセーフティ機能360を有効化または無効化するための指定情報を含ませれば、特定のモーションセーフティ機能360の有効または無効を後から変更することが可能である。
しかし、この場合、ユーザは、特定のモーションセーフティ機能360の有効/無効設定をデフォルト状態から変更するために、サポート装置500などのツールを用いて、セーフティプログラム2104を作成しなければならず、作業量が増えてしまうといった事態が生じ得る。よって、頻繁にセーフティプログラム2104を作成することは効率を下げてしまうことになる。また、プログラミング作業においては、ソースコードを記述しなければならないため、ユーザが意図せずに誤った設定内容を記述してしまう虞もある。さらに、制御システム1内においてセーフティドライバ300が複数設けられている場合には、全てのセーフティドライバ300に対してこのようなセーフティプログラム2104を作成しなければならず、作業量が膨大になってしまうという問題がある。
そこで、本実施の形態に係る制御システム1においては、モーションセーフティ機能360の有効/無効設定をデフォルト状態から変更するもう1つの手法として、SRAパラメータ60を利用する。SRAパラメータは、非特許文献3(EtherCAT Protocol Enhancements, Amendments to ETG.5100 FSoE Specification,Document:ETG.5120 S(R)V1.1.0”,EtherCAT Technology Group,2017-07-14)に開示されるように、ETGの規格で定義されている。SRAパラメータ60は、セーフティドライバ300の設定に係る「パラメータ」の一例である。
SRAパラメータ60は、FSoEのスレーブ(本実施の形態においては、セーフティドライバ300)に対して、フィールドネットワーク2におけるデバイス間でデータの遣り取りを管理する標準コントローラ100から転送される。具体的には、標準コントローラ100は、フィールドネットワーク2における接続が確立した後、イニシャルコマンドにSRAパラメータ60を含めることで、当該SRAパラメータ60をセーフティドライバ300に送信する。セーフティドライバ300は、モーションセーフティプログラム3204を実行する際にこのSRAパラメータ60を参照しながらモーションセーフティ機能360を実行する。
SRAパラメータ60には、少なくとも1つ以上のモーションセーフティ機能360のそれぞれについて有効または無効を指定するための指定情報が含まれる。「指定情報」は、モーションセーフティ機能360のそれぞれについて有効または無効を指定するための情報であれば、どのような情報であってもよい。本実施の形態においては、指定情報は、モーションセーフティ機能360のそれぞれに対応するビットを並べたビット列によって、当該モーションセーフティ機能360のそれぞれについて「0」または「1」で示されるフラグによって有効または無効を指定する。ユーザは、サポート装置500などのツールを用いて、指定情報におけるフラグを設定することができ、それによって、特定のモーションセーフティ機能360の有効または無効をデフォルト状態から変更することができる。
たとえば、図1に示すように、デフォルト時において、全てのモーションセーフティ機能360のフラグが「0」に固定されている。ここで、特定のセーフティドライバ300のモーションセーフティ機能360について、SS2、SOS、およびSDIpを無効化したい場合、ユーザは、SRAパラメータ60の指定情報として、SS2、SOS、およびSDIpのそれぞれに対応するフラグを「1」(無効状態)に設定すればよい。このように、ユーザは、SRAパラメータ60の指定情報を設定することで、デフォルト時に定められていたモーションセーフティ機能360の有効/無効設定を後から変更することができる。
このように、ユーザは、特定のモーションセーフティ機能について、無効である旨をSRAパラメータ60によって指定することで、フィールドネットワーク2における接続が確立したときに、セーフティドライバ300に対して特定のモーションセーフティ機能をデフォルト時の有効状態から無効状態へと変更することができる。さらに、ユーザは、フィールドネットワーク2を介してセーフティドライバ300にSRAパラメータ60を送信することで、特定のモーションセーフティ機能360を有効化したり無効化したりすることができるため、モーションセーフティ機能360の有効/無効設定をデフォルト時から変更するために別途準備したプログラムを実行するよりも、制御システム1の実行性能を低下させることがない。また、モーションセーフティ機能360の有効/無効設定を行うためのプログラムが増加することで、セーフティコントローラ200の制御周期が悪化するようなこともない。
<B.制御システム1に含まれるデバイスの構成例>
次に制御システム1に含まれるデバイスの構成例について説明する。
(b1:標準コントローラ100)
図3は、本実施の形態に係る制御システム1を構成する標準コントローラ100のハードウェア構成例を示す模式図である。図3を参照して、標準コントローラ100は、プロセッサ102と、メインメモリ104と、ストレージ110と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、USB(Universal Serial Bus)コントローラ120と、メモリカードインターフェース112と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、主として、標準制御150に係る制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラム(一例として、システムプログラム1102および標準制御プログラム1104)を読み出して、メインメモリ104に展開して実行することで、制御対象(たとえば、セーフティドライバ300やサーボモータ400)に応じた制御演算、および、後述するような各種処理を実現する。
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、たとえば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102に加えて、制御対象に応じて作成された標準制御プログラム1104が格納される。また、ストレージ110には、後述するような変数などを設定するための設定情報1106が格納される。さらに、ストレージ110には、サポート装置500で作成されたSRAパラメータ60が格納される。SRAパラメータ60は、標準コントローラ100をマスタとしたフィールドネットワーク2を介して、スレーブであるセーフティドライバ300に送信される。
上位ネットワークコントローラ106は、上位ネットワークを介して、任意の報処理装置との間でデータを遣り取りする。
フィールドネットワークコントローラ108は、フィールドネットワーク2を介して、セーフティコントローラ200およびセーフティドライバ300を含む任意のデバイスとの間でデータを遣り取りする。図1に示す制御システム1においては、標準コントローラ100のフィールドネットワークコントローラ108は、フィールドネットワーク2の通信マスタとして機能する。
USBコントローラ120は、USB接続を介して、サポート装置500などとの間でデータを遣り取りする。
メモリカードインターフェース112は、着脱可能な記録媒体の一例であるメモリカード114を受け付ける。メモリカードインターフェース112は、メモリカード114に対してデータを書き込み、メモリカード114から各種データ(ログやトレースデータなど)を読み出すことが可能になっている。
ローカルバスコントローラ116は、ローカルバスを介して、標準コントローラ100に接続される任意のユニットとの間でデータを遣り取りする。
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(たとえば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、標準コントローラ100の主要部を、汎用的なアーキテクチャに従うハードウェア(たとえば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。さらに、標準コントローラ100に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
(b2:セーフティコントローラ200)
図4は、本実施の形態に係る制御システム1を構成するセーフティコントローラ200のハードウェア構成例を示す模式図である。図4を参照して、セーフティコントローラ200は、プロセッサ202と、メインメモリ204と、ストレージ210と、フィールドネットワークコントローラ208と、USBコントローラ220と、セーフティローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
プロセッサ202は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。具体的には、プロセッサ202は、ストレージ210に格納されたプログラム(一例として、システムプログラム2102およびセーフティプログラム2104)を読み出して、メインメモリ204に展開して実行することで、必要なセーフティ機能250を提供するための制御演算、および、後述するような各種処理を実現する。
特に、セーフティコントローラ200は、セーフティプログラム2104を実行することで、セーフティドライバ300のモーションセーフティ機能360の有効または無効を指定するための指定情報を含むセーフティ指令を、セーフティドライバ300に対して出力する。セーフティドライバ300のセーフティステータス70に含まれる指定情報は、セーフティ指令に含まれる指定情報に基づき更新され得る。
メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ210は、たとえば、SSDやHDDなどの不揮発性記憶装置などで構成される。
ストレージ210には、基本的な機能を実現するためのシステムプログラム2102に加えて、要求されるセーフティ機能250に応じて作成されたセーフティプログラム2104が格納される。さらに、ストレージ210には、変数などを設定するための設定情報2106が格納される。
フィールドネットワークコントローラ208は、フィールドネットワーク2を介して、標準コントローラ100およびセーフティドライバ300を含む任意のデバイスとの間でデータを遣り取りする。図4に示す制御システム1においては、セーフティコントローラ200のフィールドネットワークコントローラ208は、フィールドネットワーク2の通信スレーブとして機能する。
USBコントローラ220は、USB接続を介して、サポート装置500などの情報処理装置との間でデータを遣り取りする。
セーフティローカルバスコントローラ216は、セーフティローカルバスを介して、セーフティコントローラ200に接続される任意のセーフティユニットとの間でデータを遣り取りする。図4には、セーフティユニットの一例として、セーフティIOユニット230を示す。
セーフティIOユニット230は、任意のセーフティデバイス240との間で入出力信号を遣り取りする。より具体的には、セーフティIOユニット230は、セーフティセンサやセーフティスイッチなどのセーフティデバイス240からの入力信号を受け付ける。あるいは、セーフティIOユニット230は、セーフティリレーなどのセーフティデバイス240へ指令を出力する。
図4には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(たとえば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、セーフティコントローラ200の主要部を、汎用的なアーキテクチャに従うハードウェア(たとえば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。
(b3:セーフティドライバ300およびサーボモータ400)
図5は、本実施の形態に係る制御システム1を構成するセーフティドライバ300およびサーボモータ400のハードウェア構成例を示す模式図である。図5を参照して、セーフティドライバ300は、フィールドネットワークコントローラ302と、制御部310と、ドライブ回路330と、フィードバック受信回路332とを含む。
フィールドネットワークコントローラ302は、フィールドネットワーク2を介して、標準コントローラ100およびセーフティコントローラ200を含む任意のデバイスとの間でデータを遣り取りする。本実施の形態においては、フィールドネットワークコントローラ302は、標準コントローラ100からSRAパラメータ60を含むイニシャルコマンドを受信する「受信部」として機能する。図5に示す制御システム1においては、セーフティドライバ300のフィールドネットワークコントローラ302は、フィールドネットワーク2の通信スレーブとして機能する。
制御部310は、セーフティドライバ300を動作させるために必要な演算処理を実行する。一例として、制御部310は、プロセッサ312,314と、メインメモリ316と、ストレージ320とを含む。
プロセッサ312は、サーボモータ400を駆動するための制御演算を主として実行する演算処理部に相当する。プロセッサ314は、サーボモータ400に係るセーフティ機能250を提供するための制御演算を主として実行する。本実施の形態においては、プロセッサ314は、SRAパラメータ60やセーフティ指令に従って、特定のモーションセーフティ機能360を無効化する「無効化部」として機能する。プロセッサ312,314は、いずれもCPUなどで構成される。
メインメモリ316は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ320は、たとえば、SSDやHDDなどの不揮発性記憶装置などで構成される。
ストレージ320には、後述するサーボ制御350を実現するためのサーボ制御プログラム3202と、後述するモーションセーフティ機能360を実現するためのモーションセーフティプログラム3204と、他のデバイスに公開される変数などを設定するための設定情報3206とが格納される。さらに、設定情報3206には、モーションセーフティ機能360についての有効/無効設定を管理するためのセーフティステータス70が格納される。
図5には、2つのプロセッサ312,314がそれぞれ異なる目的の制御演算を実行することで信頼性を高める構成を例示するが、これに限らず、要求されるセーフティ機能250を実現できればどのような構成を採用してもよい。たとえば、単一のプロセッサに複数のコアが含まれるような場合には、プロセッサ312,314にそれぞれ対応する制御演算を実行するようにしてもよい。また、図5には、プロセッサ312,314がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(たとえば、ASICまたはFPGAなど)を用いて実装してもよい。
ドライブ回路330は、コンバータ回路およびインバータ回路などを含み、制御部310からの指令に従って、指定された電圧・電流・位相の電力を生成して、サーボモータ400へ供給する。
フィードバック受信回路332は、サーボモータ400からのフィードバック信号を受信して、その受信結果を制御部310へ出力する。
サーボモータ400は、典型的には、三相交流モータ402および三相交流モータ402の回転軸に取付けられたエンコーダ404を含む。
三相交流モータ402は、セーフティドライバ300から供給される電力を受けて回転力を発生するアクチュエータである。図5には、一例として、三相交流モータを例示するが、これに限らず、直流モータであってもよいし、単相交流モータあるいは多相交流モータであってもよい。さらに、リニアサーボのような直線に沿って駆動力を発生するアクチュエータを採用してもよい。
エンコーダ404は、三相交流モータ402の回転数に応じたフィードバック信号(典型的には、回転数に応じた数のパルス信号)を出力する。
(b4:サポート装置500)
図6は、本実施の形態に係る制御システム1を構成するサポート装置500のハードウェア構成例を示す模式図である。サポート装置500は、一例として、汎用的なアーキテクチャに従うハードウェア(たとえば、汎用パソコン)を用いて実現される。
図6を参照して、サポート装置500は、プロセッサ502と、メインメモリ504と、入力部506と、出力部508と、ストレージ510と、光学ドライブ512と、USBコントローラ520とを含む。これらのコンポーネントは、プロセッサバス518を介して接続されている。
プロセッサ502は、CPUやGPUなどで構成され、ストレージ510に格納されたプログラム(一例として、OS5102およびサポートプログラム5104)を読み出して、メインメモリ504に展開して実行することで、後述するような各種処理を実現する。すなわち、プロセッサ502は、サポートプログラム5104を実行するコンピュータの機能を有する。
メインメモリ504は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ510は、たとえば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ストレージ510には、基本的な機能を実現するためのOS5102に加えて、サポート装置500としての機能を提供するためのサポートプログラム5104が格納される。すなわち、サポートプログラム5104は、制御システム1に接続されるコンピュータにより実行されることで、本実施の形態に係るサポート装置500を実現する。
さらに、ストレージ510には、サポートプログラム5104が実行されることで提供される開発環境においてユーザにより作成されるプロジェクトデータ5106が格納される。
本実施の形態において、サポート装置500は、制御システム1に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクトデータ5106は、このような統合的な開発環境によって生成されるデータを含む。典型的には、プロジェクトデータ5106は、標準制御ソースプログラム5108と、標準コントローラ設定情報5110と、セーフティソースプログラム5117と、セーフティコントローラ設定情報5114と、セーフティドライバ設定情報5116とを含む。さらに、セーフティドライバ設定情報5116には、ユーザによって作成されたSRAパラメータ60が格納される。
標準制御ソースプログラム5108は、オブジェクトコードに変換された上で、標準コントローラ100へ送信され、標準制御プログラム1104(図3参照)として格納される。なお、標準制御ソースプログラム5108は、オブジェクトコードに変換されることなく、そのまま標準コントローラ100へ送信されてもよい。同様に、標準コントローラ設定情報5110についても標準コントローラ100へ送信され、設定情報1106(図3参照)として格納される。
セーフティソースプログラム5117は、オブジェクトコードに変換された上で、セーフティコントローラ200へ送信され、セーフティプログラム2104(図4参照)として格納される。なお、セーフティソースプログラム5117は、オブジェクトコードに変換されることなく、そのままセーフティコントローラ200へ送信されてもよい。同様に、セーフティコントローラ設定情報5114についてもセーフティコントローラ200へ送信され、設定情報2106(図4参照)として格納される。
SRAパラメータ60を含むセーフティドライバ設定情報5116は、セーフティドライバ300へ送信され、設定情報3206(図5参照)として格納される。設定情報3206に格納されたセーフティステータス70に含まれる指定情報は、SRAパラメータ60に含まれる指定情報に基づき更新され得る。
入力部506は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。出力部508は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ502からの処理結果などを出力する。
USBコントローラ520は、USB接続を介して、標準コントローラ100などとの間のデータを遣り取りする。
サポート装置500は、光学ドライブ512を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体514(たとえば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読み取られてストレージ510などにインストールされる。
サポート装置500で実行されるサポートプログラム5104などは、コンピュータ読取可能な記録媒体514を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置500が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
図6には、プロセッサ502がプログラムを実行することで、サポート装置500として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(たとえば、ASICまたはFPGAなど)を用いて実装してもよい。
なお、制御システム1が稼動中において、サポート装置500は、標準コントローラ100から取り外されていてもよい。
<C.制御システム1の機能分担>
次に、制御システム1における機能分担の一例について説明する。図7は、本実施の形態に係る制御システム1の機能分担の一例を示す模式図である。
図7を参照して、標準コントローラ100が実行する標準制御150に関して、セーフティドライバ300はサーボ制御350を実行する。標準制御150は、制御対象に予め設定されたユーザプログラムに従って、サーボモータ400を駆動するための指令を周期的に算出する処理を含む。また、サーボ制御350は、標準制御150により周期的に算出される指令に従ってサーボモータ400を駆動するための制御、および、サーボモータ400の動作状態を示す状態値を取得して出力する処理を含む。サーボ制御350は、セーフティドライバ300のプロセッサ312(図5参照)が担当する。
一方、セーフティコントローラ200が提供するセーフティ機能250に対応して、セーフティドライバ300はモーションセーフティ機能360を提供する。モーションセーフティ機能360は、セーフティドライバ300のプロセッサ314(図5参照)が担当する。
セーフティ機能250は、標準コントローラ100が実行する標準制御150が保持する状態値、セーフティデバイス240からの信号によって示される状態値、および、セーフティドライバ300が保持する状態値などに基づいて、予め定められた条件が成立すると、予め指定されているセーフティ機能250を有効化する。
予め指定されているセーフティ機能250を有効化する処理は、たとえば、セーフティドライバ300に対するセーフティ指令の出力、あるいは、セーフティデバイス240に対してセーフティ指令の出力(たとえば、特定の装置への電力供給に係るセーフティリレーを遮断する)などを含む。
セーフティドライバ300は、モーションセーフティプログラム3204を実行することで、セーフティコントローラ200からのセーフティ指令に応答して、指定されたモーションセーフティ機能360を実現する。なお、各セーフティドライバ300においては、実行可能なモーションセーフティ機能360が予め定められている。指定されたモーションセーフティ機能360の種類に応じて、サーボ制御350によるサーボモータ400の制御に介入して、サーボモータ400への電力供給を遮断する処理、あるいは、サーボ制御350によるサーボモータ400の制御の状態値が予め定められた制限範囲内に収まっているか否かを監視する処理などが実行される。モーションセーフティプログラム3204は、セーフティステータス70に含まれる指定情報によって指定されるセーフティ機能の有効/無効設定に応じて、各モーションセーフティ機能360を有効化または無効化する。
図8は、本実施の形態に係る制御システム1のセーフティドライバ300によるセーフティ機能250に係る処理手順の一例を示すシーケンス図である。図8を参照して、標準コントローラ100の標準制御150により周期的に指令が算出されて、セーフティドライバ300(サーボ制御350)に出力される(シーケンスSQ2)。セーフティドライバ300のサーボ制御350は、標準制御150からの指令に従って、サーボモータ400を駆動する(シーケンスSQ4)。
あるタイミングにおいて、セーフティデバイス240(たとえば、セーフティセンサ)からのセーフティイベントが発生すると(シーケンスSQ6)、セーフティコントローラ200は、セーフティドライバ300(モーションセーフティ機能360)にセーフティ指令を出力する(シーケンスSQ8)。このセーフティ指令に応答して、セーフティドライバ300のモーションセーフティ機能360は、指定されたセーフティ機能250を有効化する(シーケンスSQ10)。
セーフティ機能250の有効化に応答して、標準コントローラ100の標準制御150からは、当該有効化されたセーフティ機能250に応じた指令が算出および出力されるようになる(シーケンスSQ12)。一方、セーフティドライバ300(モーションセーフティ機能360)は、サーボモータ400の動作状態が予め定められた制限範囲内に収まっているか否かを監視する。サーボモータ400の動作状態が予め定められた制限範囲内に収まっていないと判断されると、あるいは、予め定められた停止時間が到来すると、セーフティドライバ300(モーションセーフティ機能360)は、サーボモータ400への電力供給を遮断する(シーケンスSQ14)。
このように、セーフティドライバ300は、標準コントローラ100(標準制御150)からの指令に従ってサーボモータ400を駆動できるとともに、セーフティ機能250を有効化するための指令に応じて、セーフティコントローラ200(セーフティ機能250)に対するモーションセーフティ機能360を実現することができる。
<D.制御システム1のモーションセーフティ機能360>
次に、制御システム1が提供するモーションセーフティ機能360の一例について説明する。
図9は、本実施の形態に係る制御システム1が提供するモーションセーフティ機能360の一例を示す図である。図9(A)には、STOに対応するサーボモータ400の挙動の一例を示し、図9(B)には、SS1に対応するサーボモータ400の挙動の一例を示す。
図9(A)を参照して、サーボモータ400がある回転速度で運転している状態において、時刻t1でセーフティ指令(STO)が与えられると、セーフティドライバ300は、サーボモータ400への電力供給を遮断して、サーボモータ400で発生するトルクをゼロにする。この結果、サーボモータ400は惰性で回転した後に停止する。なお、サーボモータ400にブレーキが装着されている場合には、サーボモータ400は即座に停止することもできる。
図9(B)を参照して、サーボモータ400がある回転速度で運転している状態において、時刻t1でセーフティ指令(SS1)が与えられると、セーフティドライバ300は、予め定められた加速度で回転速度を低減する。このとき、セーフティドライバ300は、サーボモータ400からの電力回収(すなわち、回生)などを実行してもよい。そして、時刻t2においてサーボモータ400の回転速度がゼロになると、セーフティドライバ300は、サーボモータ400への電力供給を遮断して、サーボモータ400で発生するトルクをゼロにする。時刻t2以降においては、図9(A)に示すSTOと同様の状態になる。
図9(A)に示されるSTOおよび図9(B)に示されるSS1のうち、サーボモータ400と機械的に連結されている設備の特性などに応じて、より安全に停止できるセーフティ機能が適宜選択される。
上述した非特許文献1は、図9(A)および図9(B)に示すモーションセーフティ機能だけではなく、複数のモーションセーフティ機能を規定する。各モーションセーフティ機能を実現するためには、サーボモータ400の挙動を規定するための設定が必要となる。
<E.標準制御、セーフティ制御、およびSRAパラメータ転送の実装例>
上述したように、本実施の形態に係る制御システム1においては、データ通信および論理コネクション4によるセーフティ通信が可能になっている。次に、それぞれの通信を利用した標準制御、セーフティ制御、およびSRAパラメータ60の転送の実装例について説明する。
図10は、本実施の形態に係る制御システム1における標準制御、セーフティ制御、およびSRAパラメータ転送の実装例を示す模式図である。説明の便宜上、図10には、標準コントローラ100、セーフティコントローラ200、およびサポート装置500に加えて、1つのセーフティドライバ300からなる制御システム1の例を示す。
図10に示すように、標準コントローラ100は、主たる機能構成として、データ通信レイヤ170と、IO管理モジュール172とを含む。セーフティコントローラ200は、主たる機能構成として、データ通信レイヤ270と、IO管理モジュール272と、論理コネクションレイヤ276と、セーフティ機能状態管理エンジン278とを含む。セーフティドライバ300は、主たる機能構成として、データ通信レイヤ370と、論理コネクションレイヤ376と、モーションセーフティ機能状態管理エンジン378と、サーボ制御実行エンジン352と、モーションセーフティ機能実行エンジン362とを含む。
データ通信レイヤ170、データ通信レイヤ270、およびデータ通信レイヤ370は、フィールドネットワーク2上の通信フレーム600の転送を担当する。
セーフティコントローラ200の論理コネクションレイヤ276およびセーフティドライバ300の論理コネクションレイヤ376は、セーフティ通信フレーム630の遣り取りを担当する。すなわち、論理コネクションレイヤ276および論理コネクションレイヤ376は、論理コネクション4を確立するためのプロトコル(本実施の形態においては、FSoE)に従って、通信フレーム600に含まれるセーフティ通信フレーム630を用いて、コマンドおよびデータを遣り取りする。セーフティコントローラ200は、論理コネクションレイヤ276を介してセーフティドライバ300との間で論理コネクション4を確立させるための確立モジュール277を含む。
標準コントローラ100において、IO管理モジュール172は、制御対象との間で信号を遣り取りすることで、プロセスデータ174を更新する。標準コントローラ100において実行される標準制御プログラム1104は、プロセスデータ174を参照して制御演算を実行するとともに、制御演算の実行結果でプロセスデータ174を更新する。
セーフティコントローラ200において、IO管理モジュール272は、セーフティデバイス240との間で信号を遣り取りすることで、プロセスデータ274を更新する。
セーフティコントローラ200において実行されるセーフティプログラム2104は、プロセスデータ274およびセーフティ機能状態管理エンジン278を参照して制御演算を実行するとともに、制御演算の実行結果に基づいて、プロセスデータ274を更新し、あるいは、セーフティ機能状態管理エンジン278に対して内部的な指令を出力する。
セーフティ機能状態管理エンジン278は、セーフティプログラム2104による制御演算の実行結果に応じて、特定のセーフティドライバ300に対して特定のモーションセーフティ機能360を有効化または無効化するためのセーフティ指令を生成する。論理コネクションレイヤ276は、セーフティ機能状態管理エンジン278からの指令に応答して、対象のセーフティドライバ300の論理コネクションレイヤ376との間で、セーフティ通信フレーム630を用いて必要なコマンドおよびデータを遣り取りする。
セーフティドライバ300において、サーボ制御実行エンジン352は、プロセスデータ374およびフィードバック受信回路332を介して取得されるフィードバック信号の情報を参照してサーボ制御に係る制御演算を実行する。サーボ制御実行エンジン352は、制御演算の実行結果に基づいて、プロセスデータ374を更新するとともに、ドライブ回路330に内部的な指令を出力する。ドライブ回路330は、サーボ制御実行エンジン352からの指令に従って、サーボモータ400を駆動する。
モーションセーフティ機能状態管理エンジン378は、セーフティコントローラ200からのセーフティ指令または標準コントローラ100からのSRAパラメータ60に従ってモーションセーフティ機能360の状態を管理する。セーフティステータス70は、モーションセーフティ機能状態管理エンジン378によって保持される。モーションセーフティ機能状態管理エンジン378は、セーフティステータス70に含まれる指定情報に従って、モーションセーフティ機能実行エンジン362に対して内部的な指令を出力する。
モーションセーフティ機能実行エンジン362においては、モーションセーフティプログラム3204が実行されることにより、指定されたモーションセーフティ機能360が実現される。
論理コネクションレイヤ376は、モーションセーフティ機能状態管理エンジン378からの指令に応答して、セーフティコントローラ200の論理コネクションレイヤ276との間で、セーフティ通信フレーム630を用いて必要なコマンドおよびデータを遣り取りする。
サポート装置500は、主たる機能構成として、データ通信レイヤ533と、パラメータマネージャ532とを含む。データ通信レイヤ533は、標準コントローラ100を含む各デバイスとデータを遣り取りする。パラメータマネージャ532は、操作受付部530が入力部506を介し受け付けたユーザの操作に従い、SRAパラメータ60を設定する。具体的には、SRAパラメータ60が設定されることで、セーフティ機能の有効/無効設定が行われる。SRAパラメータ60は、フィールドネットワーク2を介して、対象のセーフティドライバ300に転送される。
<F.モーションセーフティ機能の有効または無効の遷移の一例>
図11は、本実施の形態に係るモーションセーフティ機能360の有効または無効の遷移の一例を示す模式図である。
前述したように、セーフティドライバ300は、実装しているか否かに関わらず、全てのモーションセーフティ機能360に対応するフラグがデフォルトで「0」となって立ち上がる。つまり、デフォルト時においては、セーフティステータス70に含まれる全ビットのフラグが「0」となる。
ユーザが、SRAパラメータ60に含まれる指定情報において、SS2を無効化するためにSS2に対応する2ビット目のフラグを「1」に、SOSを無効化するためにSOSに対応する3ビット目のフラグを「1」に、さらに、SDIpを有効化するためにSDIpに対応する5ビット目のフラグを「1」に設定すると、セーフティステータス70に含まれる指定情報が、イニシャルコマンドに含まれるSRAパラメータ60の指定情報に従って更新される。より具体的には、セーフティステータス70に含まれる指定情報が、SRAパラメータ60に含まれる指定情報と同じになるように上書きされる。
その後、ユーザが、SS2を再び有効化するためにSS2に対応する2ビット目のフラグを「0」に、SS1を無効化するためにSS1に対応する1ビット目のフラグを「1」に設定するようにセーフティプログラム2104を作成すると、セーフティステータス70に含まれる指定情報が、セーフティ指令に従って更新される。より具体的には、セーフティステータス70に含まれる指定情報のうち、SS2に対応するフラグが2ビット目のフラグが「0」に、SS1に対応するフラグが1ビット目のフラグが「1」に変更される。
このように、本実施の形態に係る制御システム1においては、フィールドネットワーク2における接続が確立した後に、SRAパラメータ60やセーフティ指令によって、特定のモーションセーフティ機能360の有効または無効の設定をデフォルト状態から変更することができる。
<G.モーションセーフティ機能360に関するユーザインターフェース>
次に、サポート装置500が提供するモーションセーフティ機能360に関するユーザインターフェースの一例について説明する。
図12および図13は、本実施の形態に係るサポート装置500が提供するSRAパラメータ60におけるモーションセーフティ機能360の有効/無効設定をするためのユーザインターフェースの一例を示す図である。また、図14は、本実施の形態に係るサポート装置500が提供するセーフティプログラム2104における変数設定をするためのユーザインターフェースの一例を示す図である。ユーザは、サポート装置500においてサポートプログラム5104を実行することで、図13〜図15に示すようなユーザインターフェースに係る画面を表示させることができる。
図12に示すように、ユーザインターフェース601に係る画面の左側には、マルチビューエクスプローラ欄610が設けられている。マルチビューエクスプローラ欄610には、開発対象となるプログラムを指定するための切替スイッチ612が含まれる。この例では、切替スイッチ612において、セーフティプログラム2104に対応する「new_SafetyCPU0」が指定されている。
さらに、マルチビューエクスプローラ欄610には、制御システム1においてネットワーク接続される構成を設定するための構成・設定スイッチ614が含まれる。構成・設定スイッチ614によって展開される下位層には、SRAパラメータ60に関する開発を行うためのSRAパラメータアイコン616と、セーフティプログラム2104で参照される変数のマッピングを行うためのI/Oマップアイコン618とが含まれる。「変数」とは、データそのもの、および当該データが格納される入れ物や記憶領域などである。たとえば、セーフティプログラム2104で参照される変数としては、サーボモータ400などの状態値などが対応付けられており、この変数に対応付けられた状態値に応じて、各モーションセーフティ機能360が実現される。
SRAパラメータアイコン616は、制御システム1に接続された1または複数のセーフティドライバ300ごとに設けられており、この例では、Node10のセーフティドライバ300に対応するSRAパラメータアイコン616が選択されている。
ユーザインターフェース601に係る画面の中央には、SRAパラメータ60を設定するための画面620が表示される。この画面620においては、番号欄622と、フラグ欄624とが含まれる。
番号欄622には、セーフティステータス70に含まれる指定情報と同じ並びで、1ビット目から順番にモーションセーフティ機能360ごとに番号が示されている。なお、この例では、4ビット目のSSRのモーションセーフティ機能360が実装されていないため、4番目に対応する情報が全て「Reserved」になっている。
フラグ欄624には、ユーザによってチェックを付けることができるチェックボックスが用意されている。SRAパラメータ60に含まれる指定情報では、フラグ欄624のチェックボックスにおいてチェックが付けられることでフラグが「0」に設定され、フラグ欄624のチェックボックスにおいてチェックが外されることでフラグが「1」に設定される。このように、ユーザは、フラグ欄624のチェックボックスにおいてチェックを付けたり、チェックを外したりすることで、容易にSRAパラメータ60におけるモーションセーフティ機能360の有効/無効設定を行うことができる。
なお、モーションセーフティ機能360の有効/無効設定について、セーフティステータス70の2バイト目については、ユーザによってデフォルト状態を変更することができるが、図12に示すように、2バイト目についても、ユーザは、SRAパラメータ60によって有効/無効設定を行うことができる。
図12に示す例では、フラグ欄624のチェックボックスにおいて、SS2、SOS、およびSDIpのチェックが外されている。このため、SRAパラメータ60においては、SS2、SOS、およびSDIpに対応するフラグが「1」に指定されることになる。
図13に示すように、フラグ欄624のチェックボックスにおいて、特定のモーションセーフティ機能360について無効化されると、ユーザインターフェース602に係る画面に切り替わり、画面下方に位置するアウトプットウィンドウ670において、無効化された特定のモーションセーフティ機能360に対応付けられた変数が解除された旨が通知される。
図14に示すように、I/Oマップアイコン618が選択されると、ユーザインターフェース603に係る画面に切り替わる。ユーザインターフェース603に係る画面の中央には、各モーションセーフティ機能360に対して変数のマッピングを行うための画面650が表示される。この画面650においては、ポート欄652と、変数欄654と、変数コメント欄656とが含まれる。
ポート欄652には、選択中のセーフティドライバ300(この例では、Node10)に実装された各モーションセーフティ機能360が示されている。変数欄654には、各モーションセーフティ機能360に対応付けられた変数が示されている。変数コメント欄656には、各モーションセーフティ機能360に対応付けられた変数に関するコメントが示されている。
ここで、図13に示したように、フラグ欄624のチェックボックスにおいて、特定のモーションセーフティ機能360について無効化した場合、無効化された特定のモーションセーフティ機能360に対応付けられた変数が解除される。このため、図14に示すユーザインターフェース603に係る画面においては、変数欄654および変数コメント欄656が空白となる。たとえば、この例では、フラグ欄624のチェックボックスにおいて、SS2およびSOSが無効化されて変数が解除されたため、SS2およびSOSに対応する変数欄654および変数コメント欄656が空白となる。
このように、サポート装置500は、特定のモーションセーフティ機能360の無効が指定されたことに応答して、当該特定のモーションセーフティ機能360に係るセーフティプログラム2104で参照される変数の使用を禁止する。これにより、無効化されたモーションセーフティ機能360に係るセーフティプログラム2104で参照される変数を、ユーザが意図せず設定してしまうといった事態を回避することができる。
<H.セーフティ有効/無効設定処理>
次に、サポート装置500が実行するセーフティ有効/無効設定処理について説明する。図15は、本実施の形態に係るサポート装置500が実行するセーフティ有効/無効設定処理を説明するためのフローチャートである。
図15に示すように、サポート装置500は、SRAパラメータ60の設定画面の表示を受け付けた否かを判定する(S502)。サポート装置500は、SRAパラメータ60の設定画面の表示を受け付けていない場合(S502でNO)、本処理を終了する。
一方、サポート装置500は、SRAパラメータ60の設定画面の表示を受け付けた場合(S502でYES)、セーフティ機能の有効/無効設定のサポートがあるか否かを判定する(S504)。サポート装置500は、セーフティ機能の有効/無効設定のサポートがない場合(S504でNO)、セーフティ機能の有効/無効設定が不可能な態様でSRAパラメータ60の設定画面を表示する(S506)。たとえば、サポート装置500は、図12に示すユーザインターフェース601に係る画面において、フラグ欄624のチェックボックスの内容を編集不可能な状態とする。その後、サポート装置500は、本処理を終了する。
一方、サポート装置500は、セーフティ機能の有効/無効設定のサポートがある場合(S504でYES)、セーフティ機能の有効/無効設定が可能な態様でSRAパラメータ60の設定画面を表示する(S508)。たとえば、サポート装置500は、図12に示すユーザインターフェース601に係る画面において、フラグ欄624のチェックボックスの内容を編集可能な状態とする。
次に、サポート装置500は、セーフティ機能の有効/無効設定を受け付けた否かを判定する(S510)。具体的には、サポート装置500は、図12に示すユーザインターフェース601に係る画面において、フラグ欄624のチェックボックスのチェックがユーザによって付けられたり外されたりしたか否かを判定する。サポート装置500は、セーフティ機能の有効/無効設定を受け付けていない場合(S510でNO)、有効/無効設定を受け付けるまでS510の処理を繰り返す。
一方、サポート装置500は、セーフティ機能の有効/無効設定を受け付けた場合(S510でYES)、セーフティ機能の有効/無効設定をSRAパラメータ60に反映する(S512)。そして、サポート装置500は、無効に設定されたモーションセーフティ機能360に対して変数のマッピングがあるか否かを判定する(S514)。サポート装置500は、無効に設定されたモーションセーフティ機能360に対して変数のマッピングがない場合(S514でNO)、本処理を終了する。
一方、サポート装置500は、無効に設定されたモーションセーフティ機能360に対して変数のマッピングがある場合(S514でYES)、無効に設定されたモーションセーフティ機能360に対応する変数を解除し(S516)、解除した旨を通知する(S518)。たとえば、サポート装置500は、図13に示すアウトプットウィンドウ670において、無効化した特定のモーションセーフティ機能360に対応付けられた変数を解除した旨を通知する。
そして、サポート装置500は、無効に設定されたモーションセーフティ機能360に対する変数のマッピングを禁止し(S520)、本処理を終了する。
このように、サポート装置500は、特定のモーションセーフティ機能360の無効が指定されたことに応答して、当該特定のモーションセーフティ機能360に係るセーフティプログラム2104で参照される変数の使用を禁止する。これにより、無効化されたモーションセーフティ機能360に係るセーフティプログラム2104で参照される変数を、ユーザが意図せず設定してしまうといった事態を回避することができる。
また、サポート装置500は、無効化されたモーションセーフティ機能360に係るセーフティプログラム2104で参照される変数の使用が禁止されたことをユーザに通知することができる。
<I.SRAパラメータ受信処理>
次に、セーフティドライバ300が実行するSRAパラメータ受信処理について説明する。図16は、本実施の形態に係るセーフティドライバ300が実行するSRAパラメータ受信処理を説明するためのフローチャートである。なお、セーフティドライバ300は、標準コントローラ100からイニシャルコマンドを受信したときに、図16に示すSRAパラメータ受信処理を実行する。
図16に示すように、セーフティドライバ300は、SRAパラメータ60を受信したか否かを判定する(S302)。つまり、セーフティドライバ300は、標準コントローラ100から受信したイニシャルコマンドにSRAパラメータ60が含まれているか否かを判定する。セーフティドライバ300は、SRAパラメータ60を受信していない場合(S302でNO)、デフォルト状態におけるセーフティステータス70の指定情報に従って、全てのモーションセーフティ機能360の有効/無効設定を維持する(S304)。すなわち、全てのモーションセーフティ機能360を有効に維持する。その後、セーフティドライバ300は、本処理を終了する。
一方、セーフティドライバ300は、SRAパラメータ60を受信した場合(S302でYES)、SRAパラメータ60の指定情報に従って、特定のモーションセーフティ機能360の有効/無効設定を行う(S308)。たとえば、図11に示したように、セーフティドライバ300は、SS2およびSOSを無効化し、かつSDIpを有効化する旨の指定情報を含むSRAパラメータ60を受信した場合、セーフティステータス70の指定情報においても、SS2およびSOSを無効化し、かつSDIpを有効化する。その後、セーフティドライバ300は、本処理を終了する。
このように、セーフティドライバ300は、SRAパラメータ60に従って、特定のモーションセーフティ機能360の有効/無効設定をデフォルト状態から変更することができる。
<J.セーフティ指令受信処理>
次に、セーフティドライバ300が実行するセーフティ指令受信処理について説明する。図17は、本実施の形態に係るセーフティドライバ300が実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ300は、フィールドネットワーク2における接続が確立して論理コネクション4が確立した後に、図17に示すセーフティ指令受信処理を実行する。
図17に示すように、セーフティドライバ300は、セーフティコントローラ200からセーフティ指令を受信したか否かを判定する(S322)。セーフティドライバ300は、セーフティ指令を受信していない場合(S322でNO)、本処理を終了する。
一方、セーフティドライバ300は、セーフティ指令を受信した場合(S322でYES)、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれているか否かを判定する(S324)。セーフティドライバ300は、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれていない場合(S324でNO)、本処理を終了する。
一方、セーフティドライバ300は、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれている場合(S324でYES)、セーフティ指令に含まれる指定情報に従って、特定のモーションセーフティ機能360の有効/無効設定を行う(S326)。たとえば、図11に示したように、セーフティドライバ300は、SS2を有効化し、かつSS1を無効化する旨の指定情報を含むセーフティ指令を受信した場合、セーフティステータス70の指定情報においても、SS2を有効化し、かつSS1を無効化する。その後、セーフティドライバ300は、本処理を終了する。
このように、セーフティドライバ300は、イニシャルコマンド受信時において実行したSRAパラメータ60に従った有効/無効設定よりも優先的に、論理コネクション4が確立した後に受信したセーフティ指令に従ってモーションセーフティ機能360の有効/無効設定を行う。なお、セーフティドライバ300は、その後において、SRAパラメータ60を受信したときも、あるいはセーフティ指令を受信したときも、常に最新の有効/無効設定に従って、セーフティステータス70の指定情報を更新する。これにより、ユーザは、SRAパラメータ60およびセーフティ指令のいずれに関わらず、最新の有効/無効設定に従って、モーションセーフティ機能360を実現することができる。
<K.変形例>
上述の実施の形態においては、SRAパラメータ60およびセーフティ指令のいずれに関わらず、ユーザによって行われた最新の有効/無効設定に従ってモーションセーフティ機能360を実現するものであったが、これに限らない。
(k1:SRAパラメータ60を優先して有効/無効設定)
たとえば、図18に示すように、セーフティ指令よりもSRAパラメータ60を優先的に参照してモーションセーフティ機能360を実現するものであってもよい。図18は、変形例に係るセーフティドライバ300aが実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ300aは、フィールドネットワーク2における接続が確立して論理コネクション4が確立した後に、図18に示すセーフティ指令受信処理を実行する。
図18に示すように、セーフティドライバ300aは、セーフティコントローラ200からセーフティ指令を受信したか否かを判定する(S342)。セーフティドライバ300は、セーフティ指令を受信していない場合(S342でNO)、本処理を終了する。
一方、セーフティドライバ300aは、セーフティ指令を受信した場合(S342でYES)、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれているか否かを判定する(S344)。セーフティドライバ300aは、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれていない場合(S344でNO)、本処理を終了する。
一方、セーフティドライバ300aは、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれている場合(S344でYES)、イニシャルコマンド時に受信したSRAパラメータ60の指定情報に従ってモーションセーフティ機能360の有効/無効設定を行っていたか否かを判定する(S346)。
セーフティドライバ300aは、SRAパラメータ60の指定情報に従ってモーションセーフティ機能360の有効/無効設定を未だ行っていない場合(S346でNO)、セーフティ指令の指定情報に従って、特定のモーションセーフティ機能360の有効/無効設定を行う(S348)。
一方、セーフティドライバ300aは、SRAパラメータ60の指定情報に従ってモーションセーフティ機能360の有効/無効設定を既に行っていた場合(S346でYES)、SRAパラメータ60の指定情報を優先して、当該SRAパラメータ60の指定情報に従って、全てのモーションセーフティ機能360の有効/無効設定を維持する(S350)。S348またはS350の後、セーフティドライバ300aは、本処理を終了する。
このように、図18に示す変形例においては、セーフティドライバ300aは、論理コネクション4が確立した後に受信したセーフティ指令よりも優先的に、イニシャルコマンドとともに受信したSRAパラメータ60に従ってモーションセーフティ機能360の有効/無効設定を行う。これにより、仮にユーザが、意図せずに誤った設定内容のソースコードを記述してしまっても、その誤った設定内容がモーションセーフティ機能360の有効/無効設定に反映されてしまうことがない。
(k2:SRAパラメータ60とセーフティ指令とのANDで有効/無効設定)
たとえば、図19および図20に示すように、SRAパラメータ60に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのAND演算結果に基づいて、モーションセーフティ機能360を実現するものであってもよい。図19は、変形例に係るセーフティドライバ300bが実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ300bは、フィールドネットワーク2における接続が確立して論理コネクション4が確立した後に、図19に示すセーフティ指令受信処理を実行する。また、図20は、変形例に係るモーションセーフティ機能360の有効または無効の遷移の一例を示す模式図である。
図19に示すように、セーフティドライバ300bは、セーフティコントローラ200からセーフティ指令を受信したか否かを判定する(S362)。セーフティドライバ300bは、セーフティ指令を受信していない場合(S362でNO)、本処理を終了する。
一方、セーフティドライバ300bは、セーフティ指令を受信した場合(S362でYES)、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれているか否かを判定する(S364)。セーフティドライバ300bは、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれていない場合(S364でNO)、本処理を終了する。
一方、セーフティドライバ300bは、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれている場合(S364でYES)、特定のモーションセーフティ機能360について、設定済の有効/無効設定と、受信したセーフティ指令の指定情報によって指定される有効/無効設定とのAND演算を行い、当該AND演算結果が「0」であるか否かを判定する(S366)。たとえば、セーフティドライバ300bは、既にSRAパラメータ60の指定情報に従ってモーションセーフティ機能360の有効/無効設定を行っている場合、SRAパラメータ60によって設定された有効/無効設定と、受信したセーフティ指令の指定情報によって指定される有効/無効設定とのAND演算結果が「0」であるか否かを判定する。
セーフティドライバ300bは、AND演算結果が「0」でない場合(S366でNO)、演算対象となった特定のモーションセーフティ機能360に対応するセーフティステータス70の指定情報のフラグを「1」にする(S368)。たとえば、図20に示すように、SRAパラメータ60によってSOSのフラグが「1」に設定済の場合において、セーフティ指令の指定情報80によってSOSのフラグが「1」であった場合、AND演算結果は「1」になる。この場合、セーフティドライバ300bは、セーフティステータス70の指定情報におけるSOSのフラグを「1」に設定する。
一方、セーフティドライバ300bは、AND演算結果が「0」である場合(S366でYES)、演算対象となった特定のモーションセーフティ機能360に対応するセーフティステータス70の指定情報のフラグを「0」にする(S370)。たとえば、図20に示すように、SRAパラメータ60によってSS2のフラグが「1」に設定済の場合において、セーフティ指令の指定情報80によってSS2のフラグが「0」であった場合、AND演算結果は「0」になる。この場合、セーフティドライバ300bは、セーフティステータス70の指定情報におけるSS2のフラグを「0」に設定する。
S368またはS370の後、セーフティドライバ300bは、全てのモーションセーフティ機能360について演算が完了したか否かを判定する(S372)。セーフティドライバ300bは、全てのモーションセーフティ機能360について演算が完了していない場合(S372でNO)、再びS366の処理を繰り返す。一方、セーフティドライバ300bは、全てのモーションセーフティ機能360について演算が完了した場合(S372でYES)、本処理を終了する。
このように、図19および図20に示す変形例においては、セーフティドライバ300bは、SRAパラメータ60に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのAND演算結果に基づいて、モーションセーフティ機能360の有効/無効設定を行う。これにより、ユーザは、SRAパラメータ60とセーフティ指令との両方を考慮して、実情に応じてモーションセーフティ機能360を有効化または無効化させることができる。
(k3:SRAパラメータ60とセーフティ指令とのORで有効/無効設定)
たとえば、図21および図22に示すように、SRAパラメータ60に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのOR演算結果に基づいて、モーションセーフティ機能360を実現するものであってもよい。図21は、変形例に係るセーフティドライバ300cが実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ300cは、フィールドネットワーク2における接続が確立して論理コネクション4が確立した後に、図21に示すセーフティ指令受信処理を実行する。また、図22は、変形例に係るモーションセーフティ機能360の有効または無効の遷移の一例を示す模式図である。
図21に示すように、セーフティドライバ300cは、セーフティコントローラ200からセーフティ指令を受信したか否かを判定する(S382)。セーフティドライバ300cは、セーフティ指令を受信していない場合(S382でNO)、本処理を終了する。
一方、セーフティドライバ300cは、セーフティ指令を受信した場合(S382でYES)、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれているか否かを判定する(S384)。セーフティドライバ300cは、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれていない場合(S384でNO)、本処理を終了する。
一方、セーフティドライバ300cは、セーフティ指令にモーションセーフティ機能360の有効/無効設定が含まれている場合(S384でYES)、特定のモーションセーフティ機能360について、設定済の有効/無効設定と、受信したセーフティ指令の指定情報によって指定される有効/無効設定とのOR演算を行い、当該OR演算結果が「0」であるか否かを判定する(S386)。たとえば、セーフティドライバ300cは、既にSRAパラメータ60の指定情報に従ってモーションセーフティ機能360の有効/無効設定を行っている場合、SRAパラメータ60によって設定された有効/無効設定と、受信したセーフティ指令の指定情報によって指定される有効/無効設定とのOR演算結果が「0」であるか否かを判定する。
セーフティドライバ300cは、OR演算結果が「0」でない場合(S386でNO)、演算対象となった特定のモーションセーフティ機能360に対応するセーフティステータス70の指定情報のフラグを「1」にする(S388)。たとえば、図22に示すように、SRAパラメータ60によってSS2のフラグが「1」に設定済の場合において、セーフティ指令の指定情報80によってSS2のフラグが「0」であった場合、OR演算結果は「1」になる。この場合、セーフティドライバ300cは、セーフティステータス70の指定情報におけるSS2のフラグを「1」に設定する。
一方、セーフティドライバ300cは、OR演算結果が「0」である場合(S386でYES)、演算対象となった特定のモーションセーフティ機能360に対応するセーフティステータス70の指定情報のフラグを「0」にする(S390)。たとえば、図22に示すように、SRAパラメータ60によってSTOのフラグが「0」に設定済の場合において、セーフティ指令の指定情報80によってSTOのフラグが「0」であった場合、OR演算結果は「0」になる。この場合、セーフティドライバ300cは、セーフティステータス70の指定情報におけるSTOのフラグを「0」に設定する。
S388またはS390の後、セーフティドライバ300cは、全てのモーションセーフティ機能360について演算が完了したか否かを判定する(S392)。セーフティドライバ300cは、全てのモーションセーフティ機能360について演算が完了していない場合(S392でNO)、再びS386の処理を繰り返す。一方、セーフティドライバ300cは、全てのモーションセーフティ機能360について演算が完了した場合(S392でYES)、本処理を終了する。
このように、図21および図22に示す変形例においては、セーフティドライバ300cは、SRAパラメータ60に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのOR演算結果に基づいて、モーションセーフティ機能360の有効/無効設定を行う。これにより、ユーザは、SRAパラメータ60とセーフティ指令との両方を考慮して、実情に応じてモーションセーフティ機能360を有効化または無効化させることができる。
<L.付記>
以上のように、本実施の形態では以下のような開示を含む。
[構成1]
制御システム(1)であって、
ネットワーク(2)に接続された、少なくとも1つ以上のセーフティ機能を有するとともにモータ(400)を駆動するドライブ装置(300)と、
前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りを管理するコントローラ(100)とを備え、
前記コントローラは、前記ネットワークにおける接続が確立したときに、前記ドライブ装置の設定に係るパラメータ(60)を当該ネットワークを介して当該ドライブ装置に送信し、
前記パラメータには、前記少なくとも1つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれ、
前記ドライブ装置は、前記少なくとも1つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化する、制御システム(1)。
[構成2]
前記パラメータは、SRAパラメータ(Safety−related Application Parameter)である、構成1の制御システム。
[構成3]
前記指定情報は、前記少なくとも1つ以上のセーフティ機能のそれぞれに対応するビットを並べたビット列によって、当該少なくとも1つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための情報を含む、構成1または構成2の制御システム。
[構成4]
前記少なくとも1つ以上のセーフティ機能に係る設定を支援するサポート装置(500)を備え、
前記サポート装置は、前記指定情報を設定するためのユーザインターフェース(600)を提供する、構成1〜構成3のいずれかの制御システム。
[構成5]
前記サポート装置は、前記少なくとも1つ以上のセーフティ機能のうちの前記特定のセーフティ機能の無効が指定されたことに応答して、当該特定のセーフティ機能に係るプログラム(2104)で参照される変数の使用を禁止する、構成4の制御システム。
[構成6]
前記サポート装置は、前記変数の使用の禁止を通知する、構成5の制御システム。
[構成7]
前記ドライブ装置に対して前記少なくとも1つ以上のセーフティ機能の動作に係るセーフティ指令を送信する第2のコントローラ(200)を備え、
前記セーフティ指令には、前記少なくとも1つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための第2の指定情報が含まれ、
前記ドライブ装置は、前記パラメータに含まれる前記指定情報と、前記セーフティ指令に含まれる前記第2の指定情報とに基づき、前記少なくとも1つ以上のセーフティ機能のそれぞれについて有効化または無効化を行う、構成1〜構成6のいずれかの制御システム。
[構成8]
制御システム(1)における制御方法であって、
前記制御システムは、
ネットワーク(2)に接続された、少なくとも1つ以上のセーフティ機能を有するとともにモータ(400)を駆動するドライブ装置(300)と、
前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りを管理するコントローラ(100)とを備え、
前記制御方法は、
前記ネットワークにおける接続が確立したときに、前記コントローラによって、前記少なくとも1つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータ(60)を当該ネットワークを介して当該ドライブ装置に送信するステップと、
前記ドライブ装置によって、前記少なくとも1つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化するステップとを含む、制御方法。
[構成9]
ネットワーク(2)に接続された、少なくとも1つ以上のセーフティ機能を有するとともにモータ(400)を駆動するドライブ装置(300)であって、
コントローラ(100)によって、前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りが管理され、
前記ネットワークにおける接続が確立したときに、前記少なくとも1つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータ(60)を当該ネットワークを介して前記コントローラから受信する受信部(302)と、
前記少なくとも1つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化する無効化部(314)とを備える、ドライブ装置(300)。
<M.利点>
本実施の形態に係る制御システム1によれば、ユーザは、特定のモーションセーフティ機能360について無効である旨をSRAパラメータ60によって指定することで、フィールドネットワーク2における接続が確立したときに、セーフティドライバ300に対して特定のモーションセーフティ機能360を無効化させることができる。さらに、ユーザは、フィールドネットワーク2を介してセーフティドライバ300にSRAパラメータ60を送信することで、特定のモーションセーフティ機能360を無効化することができるため、モーションセーフティ機能360を無効化するために別途準備したセーフティプログラム2104を実行するよりも、制御システム1の実行性能を低下させることがない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。