(57)【要約】      （修正有）【課題】セーフティ機能における有効または無効の設定を容易にする制御システムを提供する。【解決手段】制御システム１は、モーションセーフティ機能を有するセーフティドライバ３００と、フィールドネットワーク２に接続された装置間でデータの遣り取りを管理する標準コントローラ１００とを備え、標準コントローラ１００は、フィールドネットワーク２における接続が確立したときに、ＳＲＡパラメータ６０をフィールドネットワーク２を介してセーフティドライバ３００に送信し、ＳＲＡパラメータ６０には、モーションセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれ、セーフティドライバ３００は、指定情報によって無効と指定された特定のモーションセーフティ機能を無効化する。【選択図】図１
2020086831.tif 000002
【特許請求の範囲】
【請求項１】
制御システムであって、
ネットワークに接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータを駆動するドライブ装置と、
前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りを管理するコントローラとを備え、
前記コントローラは、前記ネットワークにおける接続が確立したときに、前記ドライブ装置の設定に係るパラメータを当該ネットワークを介して当該ドライブ装置に送信し、
前記パラメータには、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれ、
前記ドライブ装置は、前記少なくとも１つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化する、制御システム。
【請求項２】
前記パラメータは、ＳＲＡパラメータ（Ｓａｆｅｔｙ−ｒｅｌａｔｅｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐａｒａｍｅｔｅｒ）である、請求項１に記載の制御システム。
【請求項３】
前記指定情報は、前記少なくとも１つ以上のセーフティ機能のそれぞれに対応するビットを並べたビット列によって、当該少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための情報を含む、請求項１または請求項２に記載の制御システム。
【請求項４】
前記少なくとも１つ以上のセーフティ機能に係る設定を支援するサポート装置を備え、
前記サポート装置は、前記指定情報を設定するためのユーザインターフェースを提供する、請求項１〜請求項３のいずれか１項に記載の制御システム。
【請求項５】
前記サポート装置は、前記少なくとも１つ以上のセーフティ機能のうちの前記特定のセーフティ機能の無効が指定されたことに応答して、当該特定のセーフティ機能に係るプログラムで参照される変数の使用を禁止する、請求項４に記載の制御システム。
【請求項６】
前記サポート装置は、前記変数の使用の禁止を通知する、請求項５に記載の制御システム。
【請求項７】
前記ドライブ装置に対して前記少なくとも１つ以上のセーフティ機能の動作に係るセーフティ指令を送信する第２のコントローラを備え、
前記セーフティ指令には、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための第２の指定情報が含まれ、
前記ドライブ装置は、前記パラメータに含まれる前記指定情報と、前記セーフティ指令に含まれる前記第２の指定情報とに基づき、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効化または無効化を行う、請求項１〜請求項６のいずれか１項に記載の制御システム。
【請求項８】
制御システムにおける制御方法であって、
前記制御システムは、
ネットワークに接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータを駆動するドライブ装置と、
前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りを管理するコントローラとを備え、
前記制御方法は、
前記ネットワークにおける接続が確立したときに、前記コントローラによって、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータを当該ネットワークを介して当該ドライブ装置に送信するステップと、
前記ドライブ装置によって、前記少なくとも１つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化するステップとを含む、制御方法。
【請求項９】
ネットワークに接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータを駆動するドライブ装置であって、
コントローラによって、前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りが管理され、
前記ネットワークにおける接続が確立したときに、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータを当該ネットワークを介して前記コントローラから受信する受信部と、
前記少なくとも１つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化する無効化部とを備える、ドライブ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、制御システムにおける制御方法、および制御システムが備えるドライブ装置に関する。
【背景技術】
【０００２】
多くの製造現場において、設備や機械を安全に使用するために、セーフティシステムの導入が進みつつある。セーフティシステムは、国際規格に従うセーフティ機能を提供するためのものであり、セーフティコントローラ、セーフティセンサ、セーフティスイッチ、およびセーフティリレーといったセーフティコンポーネントで構成される。
【０００３】
セーフティシステムは、設備や機械を駆動するためのサーボモータなどを駆動するドライブ装置に対してもセーフティ機能を提供することが要求されている。セーフティシステムにおいては、データを遣り取りするためのネットワークとして、ＥｔｈｅｒＣＡＴ（登録商標：Ethernet for Control Automation Technology、イーサキャット）が採用されており、非特許文献１では、ＥｔｈｅｒＣＡＴに関する組織であるＥＴＧ（EtherCAT Technology Group）の規格においてセーフティ機能に関するいくつかの規定が開示されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Safety Drive Profile Generic Safety Drive Profile for adjustable speed electrical power drive systems that are suitable for use in safety-related application PDS(SR) Document:ETG.6100.2S(R)V1.2.0
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１で開示された規定によれば、ドライブ装置が実行する全てのセーフティ機能について、デフォルト時には有効となるように設定が予め固定されている。より具体的には、セーフティ機能に対する有効または無効を指定するための指定情報において、１バイト目のビットごとに割り当てられた全てのフラグが有効を示すフラグに固定されている。
【０００６】
しかしながら、実使用においては、ある工程ではセーフティ機能を有効にし、他の工程ではセーフティ機能を無効にするといったように、工程内の作業内容に応じてセーフティ機能の有効／無効設定を変更しなければならない場合もある。このような場合、ユーザは、セーフティ機能の有効／無効設定をデフォルト状態から変更するためのプログラムを別途準備しなければならず、作業量が増えてしまうといった事態が生じ得る。また、プログラミング作業においては、ソースコードを記述しなければならないため、ユーザが意図せずに誤った設定内容を記述してしまう虞もある。さらに、システム内においてドライブ装置が複数設けられている場合には、全てのドライブ装置についてこのようなプログラムを作成しなければならず、作業量が膨大になってしまうという問題がある。また、セーフティ機能を無効化するために別途プログラムを準備した場合、実行するプログラムが増加してしまい、システムにおける制御周期が悪化して実行性能が低下する虞もある。
【０００７】
本発明は、上述したような課題を解決することを一つの目的とし、セーフティ機能における有効または無効の設定を容易にすることを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一例に従えば、制御システムが提供される。制御システムは、ネットワークに接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータを駆動するドライブ装置と、ネットワークに接続されたドライブ装置を含む装置間でデータの遣り取りを管理するコントローラとを備える。コントローラは、ネットワークにおける接続が確立したときに、ドライブ装置の設定に係るパラメータを当該ネットワークを介して当該ドライブ装置に送信する。パラメータには、少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれる。ドライブ装置は、少なくとも１つ以上のセーフティ機能のうち、パラメータに含まれる指定情報によって無効と指定された特定のセーフティ機能を無効化する。
【０００９】
この開示によれば、ユーザは、特定のセーフティ機能について無効である旨をパラメータによって指定することで、ネットワークにおける接続が確立したときに、ドライブ装置に対して特定のセーフティ機能を無効化させることができる。さらに、ユーザは、ネットワークを介してドライブ装置にパラメータを送信することで、特定のセーフティ機能を無効化することができるため、セーフティ機能を無効化するために別途準備したプログラムを実行するよりも、システムの実行性能を低下させることがない。これにより、セーフティ機能における有効または無効の設定を容易にすることができる。
【００１０】
上述の開示において、パラメータは、ＳＲＡパラメータ（Safety Related Application Parameter）である。
【００１１】
この開示によれば、ユーザは、ＥＴＧの規格で定義されたＳＲＡパラメータを用いて特定のセーフティ機能を無効化することができる。
【００１２】
上述の開示において、指定情報は、少なくとも１つ以上のセーフティ機能のそれぞれに対応するビットを並べたビット列によって、当該少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための情報を含む。
【００１３】
この開示によれば、ユーザは、ビット列を用いて特定のセーフティ機能を無効化することができる。
【００１４】
上述の開示において、制御システムは、少なくとも１つ以上のセーフティ機能に係る設定を支援するサポート装置を備える。サポート装置は、指定情報を設定するためのユーザインターフェースを提供する。
【００１５】
この開示によれば、ユーザは、サポート装置が提供するユーザインターフェースを用いて特定のセーフティ機能を無効化することができる。
【００１６】
上述の開示において、サポート装置は、少なくとも１つ以上のセーフティ機能のうちの特定のセーフティ機能の無効が指定されたことに応答して、当該特定のセーフティ機能に係るプログラムで参照される変数の使用を禁止する。
【００１７】
この開示によれば、無効化されたセーフティ機能に係るプログラムで参照される変数を、ユーザが意図せず設定してしまうといった事態を回避することができる。
【００１８】
上述の開示において、サポート装置は、変数の使用の禁止を通知する。
この開示によれば、無効化されたセーフティ機能に係るプログラムで参照される変数の使用が禁止されたことをユーザに通知することができる。
【００１９】
この開示によれば、制御システムは、ドライブ装置に対して少なくとも１つ以上のセーフティ機能の動作に係るセーフティ指令を送信する第２のコントローラを備える。セーフティ指令には、少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための第２の指定情報が含まれる。ドライブ装置は、パラメータに含まれる指定情報と、セーフティ指令に含まれる第２の指定情報とに基づき、少なくとも１つ以上のセーフティ機能のそれぞれについて有効化または無効化を行う。
【００２０】
この開示によれば、パラメータにおけるセーフティ機能の有効または無効を指定するための指定情報と、第２のコントローラから送信されたセーフティ指令におけるセーフティ機能の有効または無効を指定するための第２の指定情報とに基づき、セーフティ機能のそれぞれについて有効化または無効化が行われるため、ユーザは、実情に応じてセーフティ機能を有効化または無効化させることができる。
【００２１】
本開示の別の一例に従えば、制御システムにおける制御方法が提供される。制御システムは、ネットワークに接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータを駆動するドライブ装置と、ネットワークに接続されたドライブ装置を含む装置間でデータの遣り取りを管理するコントローラとを備える。制御方法は、ネットワークにおける接続が確立したときに、コントローラによって、少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータを当該ネットワークを介して当該ドライブ装置に送信するステップと、ドライブ装置によって、少なくとも１つ以上のセーフティ機能のうち、パラメータに含まれる指定情報によって無効と指定された特定のセーフティ機能を無効化するステップとを含む。
【００２２】
この開示によれば、ユーザは、特定のセーフティ機能について無効である旨をパラメータによって指定することで、ネットワークにおける接続が確立したときに、ドライブ装置に対して特定のセーフティ機能を無効化させることができる。さらに、ユーザは、ネットワークを介してドライブ装置にパラメータを送信することで、特定のセーフティ機能を無効化することができるため、セーフティ機能を無効化するために別途準備したプログラムを実行するよりも、システムの実行性能を低下させることがない。
【００２３】
本開示の別の一例に従えば、ネットワークに接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータを駆動するドライブ装置が提供される。コントローラによって、ネットワークに接続されたドライブ装置を含む装置間でデータの遣り取りが管理される。ドライブ装置は、ネットワークにおける接続が確立したときに、少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータを当該ネットワークを介してコントローラから受信する受信部と、少なくとも１つ以上のセーフティ機能のうち、パラメータに含まれる指定情報によって無効と指定された特定のセーフティ機能を無効化する無効化部とを備える。
【００２４】
この開示によれば、ユーザは、特定のセーフティ機能について無効である旨をパラメータによって指定することで、ネットワークにおける接続が確立したときに、ドライブ装置に対して特定のセーフティ機能を無効化させることができる。さらに、ユーザは、ネットワークを介してドライブ装置にパラメータを送信することで、特定のセーフティ機能を無効化することができるため、セーフティ機能を無効化するために別途準備したプログラムを実行するよりも、システムの実行性能を低下させることがない。
【発明の効果】
【００２５】
本発明によれば、セーフティ機能における有効または無効の設定を容易にすることができる。
【図面の簡単な説明】
【００２６】
【図１】本実施の形態に係る制御システムの適用例を示す模式図である。
【図２】ＥＴＧの規格で定義されたセーフティ機能の有効／無効設定を指定する１バイト目の情報を示す模式図である。
【図３】本実施の形態に係る制御システムを構成する標準コントローラのハードウェア構成例を示す模式図である。
【図４】本実施の形態に係る制御システムを構成するセーフティコントローラのハードウェア構成例を示す模式図である。
【図５】本実施の形態に係る制御システムを構成するセーフティドライバおよびサーボモータのハードウェア構成例を示す模式図である。
【図６】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。
【図７】本実施の形態に係る制御システムの機能分担の一例を示す模式図である。
【図８】本実施の形態に係る制御システムのセーフティドライバによるセーフティ機能に係る処理手順の一例を示すシーケンス図である。
【図９】本実施の形態に係る制御システムが提供するモーションセーフティ機能の一例を示す図である。
【図１０】本実施の形態に係る制御システムにおける標準制御、セーフティ制御、およびＳＲＡパラメータ転送の実装例を示す模式図である。
【図１１】本実施の形態に係るモーションセーフティ機能の有効または無効の遷移の一例を示す模式図である。
【図１２】本実施の形態に係るサポート装置が提供するＳＲＡパラメータにおけるモーションセーフティ機能の有効／無効設定をするためのユーザインターフェースの一例を示す図である。
【図１３】本実施の形態に係るサポート装置が提供するＳＲＡパラメータにおけるモーションセーフティ機能の有効／無効設定をするためのユーザインターフェースの一例を示す図である。
【図１４】本実施の形態に係るサポート装置が提供するセーフティプログラムにおける変数設定をするためのユーザインターフェースの一例を示す図である。
【図１５】本実施の形態に係るサポート装置が実行するセーフティ有効／無効設定処理を説明するためのフローチャートである。
【図１６】本実施の形態に係るセーフティドライバが実行するＳＲＡパラメータ受信処理を説明するためのフローチャートである。
【図１７】本実施の形態に係るセーフティドライバが実行するセーフティ指令受信処理を説明するためのフローチャートである。
【図１８】変形例に係るセーフティドライバが実行するセーフティ指令受信処理を説明するためのフローチャートである。
【図１９】変形例に係るセーフティドライバが実行するセーフティ指令受信処理を説明するためのフローチャートである。
【図２０】変形例に係るモーションセーフティ機能の有効または無効の遷移の一例を示す模式図である。
【図２１】変形例に係るセーフティドライバが実行するセーフティ指令受信処理を説明するためのフローチャートである。
【図２２】変形例に係るモーションセーフティ機能の有効または無効の遷移の一例を示す模式図である。
【発明を実施するための形態】
【００２７】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２８】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。
【００２９】
図１は、本実施の形態に係る制御システム１の適用例を示す模式図である。本実施の形態に係る制御システム１は、たとえば、ＩＥＣ６１５０８などに規定されたセーフティ機能に加えて、非特許文献２（"IEC 61800-5-2:2016 Adjustable speed electrical power drive systems - Part 5-2: Safety requirements - Functional", International Electrotechnical Commission, 2016-04-18）に規定された、ＳＴＯ（Safe Torque Off）、ＳＳ１（Safe Stop 1）、ＳＳ２（Safe Stop 2）、およびＳＯＳ（Safe Operating Stop）などの、ドライブ装置に関連するいくつかのセーフティ機能を提供する。
【００３０】
図１を参照して、制御システム１は、主として、標準コントローラ１００、ならびに、標準コントローラ１００とフィールドネットワーク２を介して接続されるセーフティコントローラ２００、および１または複数のセーフティドライバ（セーフティサーボドライバ）３００を含む。セーフティドライバ３００の各々は、電気的に接続されたサーボモータ４００を駆動する。なお、サーボモータ４００に限らず、任意の種類のモータを採用できる。また、セーフティドライバ３００の実体は、サーボドライバであってもよいし、汎用的なインバータ装置であってもよい。以下の説明においては、セーフティドライバ３００を「ドライブ装置」の一例として説明する。
【００３１】
標準コントローラ１００は、「コントローラ」に対応し、予め作成された標準制御プログラム（後述する標準制御プログラム１１０４）に従って、サーボモータ４００を含む制御対象に対する標準制御（後述する標準制御１５０）を実行する。典型的には、標準コントローラ１００は、１または複数のセンサ（図示していない）などからの入力信号に応じた制御演算をサイクリック実行することで、サーボモータ４００などのアクチュエータに対する指令を周期的に算出する。
【００３２】
セーフティコントローラ２００は、セーフティプログラム（後述するセーフティプログラム２１０４）に従って、セーフティドライバ３００に対してセーフティ機能（後述するセーフティ機能２５０）の動作に係るセーフティ指令を送信する。セーフティコントローラ２００は、標準コントローラ１００とは独立して、制御対象に対するセーフティ機能２５０を実現するための監視および制御演算をサイクリック実行する。
【００３３】
セーフティコントローラ２００は、任意のセーフティデバイス２４０からの入力信号の受付、および／または、任意のセーフティデバイス２４０への指令の出力が可能になっている。セーフティプログラム２１０４は、セーフティコントローラ２００と通信可能に接続されたサポート装置５００が提供する開発環境を利用して、ユーザによって予め作成され、セーフティコントローラ２００に転送される。
【００３４】
セーフティドライバ３００は、標準コントローラ１００からの指令に従って、サーボモータ４００に電力を供給することで、サーボモータ４００を駆動する。セーフティドライバ３００は、サーボモータ４００からのフィードバック信号などに基づいて、サーボモータ４００の回転位置、回転速度、回転加速度、および発生するトルクなどを周期的に算出する。
【００３５】
さらに、セーフティドライバ３００は、セーフティコントローラ２００からのセーフティ指令に従って、サーボモータ４００の駆動に関する所定のセーフティ機能２５０を実行する。より具体的には、セーフティドライバ３００は、セーフティ機能２５０に必要な状態情報をセーフティコントローラ２００へ提供するとともに、要求されるセーフティ機能２５０に応じたモーションセーフティプログラム（後述するモーションセーフティプログラム３２０４）を実行することで、サーボモータ４００に供給する電力を調整または遮断する。
【００３６】
サーボモータ４００は、セーフティドライバ３００からの電力を受けて回転するモータ（後述する三相交流モータ４０２）を有するとともに、モータの回転軸に結合されたエンコーダ（後述するエンコーダ４０４）からの検出信号をフィードバック信号としてセーフティドライバ３００へ出力する。
【００３７】
サポート装置５００は、標準コントローラ１００側の開発およびセーフティコントローラ２００側の開発を支援する。より具体的には、サポート装置５００は、標準コントローラ１００側の開発として、標準コントローラ１００で実行される標準制御プログラム（後述する標準制御プログラム１１０４）の開発や標準制御１５０に係る設定などを支援する。さらに、サポート装置５００は、セーフティコントローラ２００側の開発として、セーフティコントローラ２００で実行されるセーフティプログラム（後述するセーフティプログラム２１０４）の開発やセーフティ機能２５０に係る設定などを支援する。サポート装置５００は、少なくとも１つ以上の命令情報を組み合わせることでプログラムを生成するための開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）をユーザに提供する。
【００３８】
本明細書において、「デバイス」は、フィールドネットワーク２などの任意のネットワークを介して、他の装置とデータ通信可能な装置の総称である。本実施の形態に係る制御システム１において、「デバイス」は、標準コントローラ１００、セーフティコントローラ２００、およびセーフティドライバ３００を包含する。
【００３９】
本明細書において、「標準制御」および「セーフティ制御」の用語を対比的に用いる。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。一方、「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。「セーフティ制御」は、ＩＥＣ６１５０８などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
【００４０】
本明細書においては、ドライブ装置（セーフティドライバ３００）に特有のセーフティ機能を「モーションセーフティ機能」あるいは単に「セーフティ機能」と総称する。典型的には、「機能」は、上述の非特許文献２に規定されるドライブ装置に関連するセーフティ機能を包含する。たとえば、制御軸の位置や速度を監視して安全を確保するための制御を含む。
【００４１】
本明細書において、「プロセスデータ」は、標準制御またはセーフティ制御の少なくともいずれかで用いられるデータの総称である。具体的には、「プロセスデータ」は、制御対象から取得される入力情報、制御対象へ出力される出力情報、各デバイスでの制御演算に使用される内部情報などを包含する。
【００４２】
入力情報は、光電センサなどにより検出されるＯＮ／ＯＦＦ信号（デジタル入力）、温度センサなどにより検出される物理信号（アナログ入力）、ならびに、パルスエンコーダなどが発生するパルス信号（パルス入力）などを包含する。出力情報は、リレーなどを駆動するためのＯＮ／ＯＦＦ（デジタル出力）、サーボモータの回転速度などを指示する速度指令（アナログ出力）、ならびに、ステッピングモータの移動量などを指示する変位指令（パルス出力）などを包含する。内部情報は、任意のプロセスデータを入力とする制御演算などによって決定される状態情報などを含む。
【００４３】
制御システム１のフィールドネットワーク２においては、プロセスデータ通信が行われており、標準コントローラ１００を通信マスタとして、通信フレーム６００がサイクリック（たとえば、数〜１０数ｍｓｅｃ）にデバイス間を一巡する。通信フレーム６００が伝送する周期をプロセスデータ通信周期とも称する。本実施の形態においては、このような通信フレーム６００をサイクリックに伝送するフィールドネットワーク２のプロトコルの一例として、ＥｔｈｅｒＣＡＴを採用する。
【００４４】
通信フレーム６００には、デバイスごとにデータ領域が割り当てられている。各デバイスは、周期的に伝送される通信フレーム６００を受信すると、当該受信した通信フレーム６００内の自デバイスに割り当てられたデータ領域に予め設定されたデータの現在値を書き込む。そして、現在値の書き込み後の通信フレーム６００を次段のデバイスに送出する。各デバイスにより書き込まれたデータの現在値は他のデバイスから参照可能になっている。
【００４５】
各デバイスが通信フレーム６００に予め設定されたデータの現在値を書き込むため、フィールドネットワーク２を一巡して通信マスタ（標準コントローラ１００）に戻ってくる通信フレーム６００には、各デバイスにより収集された最新の値が含まれることになる。
【００４６】
本実施の形態においては、このようなプロセスデータ通信を利用して、セーフティコントローラ２００とセーフティドライバ３００のそれぞれとの間で論理コネクション４が形成される。この論理コネクション４は、セーフティ機能２５０を実現するためのデータの遣り取りに用いられる。
【００４７】
前述したように、フィールドネットワーク２のプロトコルとしてＥｔｈｅｒＣＡＴを採用する場合には、ＦＳｏＥ（FailSafe over EtherCAT）と称されるプロトコルを用いて論理コネクション４を形成できる。
【００４８】
より具体的には、論理コネクション４を形成するために遣り取りされるコマンドを格納するための専用のデータ領域が通信フレーム６００に割り当てられる。当該専用のデータ領域を用いて、デバイス間でコマンドを遣り取りすることで、論理コネクション４を形成する。
【００４９】
図１に示すように、各セーフティドライバ３００は、モーションセーフティ機能３６０の有効または無効を管理するためのセーフティステータス７０を保持する。セーフティドライバ３００によって実現可能なモーションセーフティ機能３６０には、ＳＴＯ（Safe Torque Off）、ＳＳ１（Safe Stop 1）、ＳＳ２（Safe Stop 2）、ＳＯＳ（Safe Operating Stop）、ＳＳＲ（Safe Speed Range）、ＳＤＩｐ（Safe Direction positive）、およびＳＤＩｎ（Safe Direction negative）が含まれる。これら各モーションセーフティ機能３６０の有効または無効を指定するための指定情報は、セーフティステータス７０に含まれるビットごとに設けられた領域に配置されている。なお、Ｅｒｒｏｒ  Ａｃｋ(Error Acknowledge）は、エラー発生時にエラーを解除するための機能であり、常に有効化されている。
【００５０】
各セーフティドライバ３００は、予め決められたモーションセーフティ機能３６０のみを有する。たとえば、特定のセーフティドライバ３００においては、図１に示す各モーションセーフティ機能３６０のうち、ＳＳＲを実装せず、それ以外のＳＴＯ、ＳＳ１、ＳＳ２、ＳＯＳ、ＳＤＩｐ、およびＳＤＩｎを実装する。これはあくまで例示であり、他のセーフティドライバ３００においても同様に、予め決められたモーションセーフティ機能３６０のみを有する。
【００５１】
セーフティドライバ３００は、セーフティステータス７０に含まれる指定情報に従って、モーションセーフティ機能３６０ごとに有効化または無効化を行う。「指定情報」は、モーションセーフティ機能３６０のそれぞれについて有効または無効を指定するための情報であれば、どのような情報であってもよい。本実施の形態においては、指定情報は、「０」または「１」で示されるフラグによって有効または無効を指定する。より具体的には、フラグが「０」であるときにはモーションセーフティ機能３６０が有効になり、フラグが「１」であるときにはモーションセーフティ機能３６０が無効になる。
【００５２】
全てのモーションセーフティ機能３６０は、起動時（すなわち、デフォルト）において、有効となるようにフラグが固定されており、ユーザによってその内容を変更することができないようになっている。つまり、デフォルト時におけるモーションセーフティ機能３６０は全て有効に固定されている。このことは、上述した非特許文献１で開示された規定において要求されている。
【００５３】
ここで、図２を参照しながら、ＥＴＧの規格で定義されたセーフティステータス７０におけるセーフティ機能の有効／無効設定について説明する。図２は、ＥＴＧの規格で定義されたセーフティ機能の有効／無効設定を指定する１バイト目の情報を示す模式図である。
【００５４】
図２に示すように、非特許文献１においては、セーフティ機能の有効／無効設定が指定される１バイト目の情報が示されている。具体的には、非特許文献１に示されたモーションセーフティ機能３６０に関するコントロールワード７００には、ビット欄７０２と、名称欄７０４と、説明欄７０６とが含まれる。ビット欄７０２には、１バイト目に含まれるビットとして、０ビットから７ビットまでの各ビットが配置されている。名称欄７０４には、各ビットに対応付けられたモーションセーフティ機能３６０の略称が示されている。説明欄７０６には、各モーションセーフティ機能３６０の正式名称およびフラグに対応付けられた動作状態が示されている。
【００５５】
本実施の形態においては、全てのモーションセーフティ機能３６０について、デフォルト状態でフラグが有効を示す「０」に固定されている。各モーションセーフティ機能３６０は、デフォルト時において、フラグが「０」で立ち上がることが要求されている。
【００５６】
図２に示すようなセーフティ機能の有効／無効設定が指定される１バイト目においては、０ビットから７ビットまでの各ビットにおけるフラグがデフォルト時に「０」に固定されており、ユーザによってデフォルト状態を変更することはできないようになっている。なお、図示は省略するが、２バイト目については、ユーザによってデフォルト状態を変更することができるようになっている。
【００５７】
なお、セーフティ機能の「有効」とは、安全制御を行うための機能が動作状態であることを意味する。たとえば、ＳＴＯ、ＳＳ１、ＳＳ２、ＳＯＳ、およびＳＳＲについては、フラグが「０」であるときに“active”となる。これは、安全制御を行うための機能が動作状態であることを意味している。また、ＳＤＩｐやＳＤＩｎについては、フラグが「０」であるときに“disable…”となる。これは、positive方向やnegative方向にモータが動作することを禁止すること、すなわち、安全制御を行うための機能が動作状態であることを意味している。
【００５８】
一方、セーフティ機能の「無効」とは、安全制御を行うための機能が非動作状態であることを意味する。たとえば、ＳＴＯ、ＳＳ１、ＳＳ２、ＳＯＳ、およびＳＳＲについては、フラグが「１」であるときに“deactivate”となる。これは、安全制御を行うための機能が非動作状態であることを意味している。また、ＳＤＩｐやＳＤＩｎについては、フラグが「１」であるときに“enable…”となる。これは、positive方向やnegative方向にモータが動作することを許可すること、すなわち、安全制御を行うための機能が非動作状態であることを意味している。
【００５９】
図１に戻り、各セーフティドライバ３００は、実装しているか否かに関わらず、全てのモーションセーフティ機能３６０に対応するフラグがデフォルトで「０」となって立ち上がる。このため、実装しているモーションセーフティ機能３６０については、デフォルト時の設定が有効に固定されていることで、その機能が有効化される。仮に、実装していないモーションセーフティ機能３６０がある場合、その実装していないモーションセーフティ機能３６０については、フラグが有効に設定されていても実行されることはない。
【００６０】
このように、各セーフティドライバ３００においては、実装しているか否かに関わらず、全てのモーションセーフティ機能３６０について、デフォルト時の設定が有効に固定されている。しかしながら、実使用においては、モーションセーフティ機能３６０を有効にしたり、あるいは無効にしたりといったように、工程内の作業内容に応じてセーフティ機能の有効／無効設定を変更しなければならない場合もある。
【００６１】
特定のモーションセーフティ機能３６０の有効または無効を後から変更する手法として、セーフティコントローラ２００からのセーフティ指令において、特定のモーションセーフティ機能３６０を有効化または無効化するための指定情報を含ませることが考えられる。たとえば、本実施の形態においては、論理コネクション４が確立した後に、セーフティドライバ３００に対してセーフティコントローラ２００からセーフティ指令を送信することができる。このセーフティ指令に特定のモーションセーフティ機能３６０を有効化または無効化するための指定情報を含ませれば、特定のモーションセーフティ機能３６０の有効または無効を後から変更することが可能である。
【００６２】
しかし、この場合、ユーザは、特定のモーションセーフティ機能３６０の有効／無効設定をデフォルト状態から変更するために、サポート装置５００などのツールを用いて、セーフティプログラム２１０４を作成しなければならず、作業量が増えてしまうといった事態が生じ得る。よって、頻繁にセーフティプログラム２１０４を作成することは効率を下げてしまうことになる。また、プログラミング作業においては、ソースコードを記述しなければならないため、ユーザが意図せずに誤った設定内容を記述してしまう虞もある。さらに、制御システム１内においてセーフティドライバ３００が複数設けられている場合には、全てのセーフティドライバ３００に対してこのようなセーフティプログラム２１０４を作成しなければならず、作業量が膨大になってしまうという問題がある。
【００６３】
そこで、本実施の形態に係る制御システム１においては、モーションセーフティ機能３６０の有効／無効設定をデフォルト状態から変更するもう１つの手法として、ＳＲＡパラメータ６０を利用する。ＳＲＡパラメータは、非特許文献３（EtherCAT Protocol Enhancements, Amendments to ETG.5100 FSoE Specification,Document:ETG.5120 S(R)V1.1.0”,EtherCAT Technology Group,2017-07-14）に開示されるように、ＥＴＧの規格で定義されている。ＳＲＡパラメータ６０は、セーフティドライバ３００の設定に係る「パラメータ」の一例である。
【００６４】
ＳＲＡパラメータ６０は、ＦＳｏＥのスレーブ（本実施の形態においては、セーフティドライバ３００）に対して、フィールドネットワーク２におけるデバイス間でデータの遣り取りを管理する標準コントローラ１００から転送される。具体的には、標準コントローラ１００は、フィールドネットワーク２における接続が確立した後、イニシャルコマンドにＳＲＡパラメータ６０を含めることで、当該ＳＲＡパラメータ６０をセーフティドライバ３００に送信する。セーフティドライバ３００は、モーションセーフティプログラム３２０４を実行する際にこのＳＲＡパラメータ６０を参照しながらモーションセーフティ機能３６０を実行する。
【００６５】
ＳＲＡパラメータ６０には、少なくとも１つ以上のモーションセーフティ機能３６０のそれぞれについて有効または無効を指定するための指定情報が含まれる。「指定情報」は、モーションセーフティ機能３６０のそれぞれについて有効または無効を指定するための情報であれば、どのような情報であってもよい。本実施の形態においては、指定情報は、モーションセーフティ機能３６０のそれぞれに対応するビットを並べたビット列によって、当該モーションセーフティ機能３６０のそれぞれについて「０」または「１」で示されるフラグによって有効または無効を指定する。ユーザは、サポート装置５００などのツールを用いて、指定情報におけるフラグを設定することができ、それによって、特定のモーションセーフティ機能３６０の有効または無効をデフォルト状態から変更することができる。
【００６６】
たとえば、図１に示すように、デフォルト時において、全てのモーションセーフティ機能３６０のフラグが「０」に固定されている。ここで、特定のセーフティドライバ３００のモーションセーフティ機能３６０について、ＳＳ２、ＳＯＳ、およびＳＤＩｐを無効化したい場合、ユーザは、ＳＲＡパラメータ６０の指定情報として、ＳＳ２、ＳＯＳ、およびＳＤＩｐのそれぞれに対応するフラグを「１」（無効状態）に設定すればよい。このように、ユーザは、ＳＲＡパラメータ６０の指定情報を設定することで、デフォルト時に定められていたモーションセーフティ機能３６０の有効／無効設定を後から変更することができる。
【００６７】
このように、ユーザは、特定のモーションセーフティ機能について、無効である旨をＳＲＡパラメータ６０によって指定することで、フィールドネットワーク２における接続が確立したときに、セーフティドライバ３００に対して特定のモーションセーフティ機能をデフォルト時の有効状態から無効状態へと変更することができる。さらに、ユーザは、フィールドネットワーク２を介してセーフティドライバ３００にＳＲＡパラメータ６０を送信することで、特定のモーションセーフティ機能３６０を有効化したり無効化したりすることができるため、モーションセーフティ機能３６０の有効／無効設定をデフォルト時から変更するために別途準備したプログラムを実行するよりも、制御システム１の実行性能を低下させることがない。また、モーションセーフティ機能３６０の有効／無効設定を行うためのプログラムが増加することで、セーフティコントローラ２００の制御周期が悪化するようなこともない。
【００６８】
＜Ｂ．制御システム１に含まれるデバイスの構成例＞
次に制御システム１に含まれるデバイスの構成例について説明する。
【００６９】
（ｂ１：標準コントローラ１００）
図３は、本実施の形態に係る制御システム１を構成する標準コントローラ１００のハードウェア構成例を示す模式図である。図３を参照して、標準コントローラ１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１１０と、上位ネットワークコントローラ１０６と、フィールドネットワークコントローラ１０８と、ＵＳＢ（Universal Serial Bus）コントローラ１２０と、メモリカードインターフェース１１２と、ローカルバスコントローラ１１６とを含む。これらのコンポーネントは、プロセッサバス１１８を介して接続されている。
【００７０】
プロセッサ１０２は、主として、標準制御１５０に係る制御演算を実行する演算処理部に相当し、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１１０に格納されたプログラム（一例として、システムプログラム１１０２および標準制御プログラム１１０４）を読み出して、メインメモリ１０４に展開して実行することで、制御対象（たとえば、セーフティドライバ３００やサーボモータ４００）に応じた制御演算、および、後述するような各種処理を実現する。
【００７１】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１１０は、たとえば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などの不揮発性記憶装置などで構成される。
【００７２】
ストレージ１１０には、基本的な機能を実現するためのシステムプログラム１１０２に加えて、制御対象に応じて作成された標準制御プログラム１１０４が格納される。また、ストレージ１１０には、後述するような変数などを設定するための設定情報１１０６が格納される。さらに、ストレージ１１０には、サポート装置５００で作成されたＳＲＡパラメータ６０が格納される。ＳＲＡパラメータ６０は、標準コントローラ１００をマスタとしたフィールドネットワーク２を介して、スレーブであるセーフティドライバ３００に送信される。
【００７３】
上位ネットワークコントローラ１０６は、上位ネットワークを介して、任意の報処理装置との間でデータを遣り取りする。
【００７４】
フィールドネットワークコントローラ１０８は、フィールドネットワーク２を介して、セーフティコントローラ２００およびセーフティドライバ３００を含む任意のデバイスとの間でデータを遣り取りする。図１に示す制御システム１においては、標準コントローラ１００のフィールドネットワークコントローラ１０８は、フィールドネットワーク２の通信マスタとして機能する。
【００７５】
ＵＳＢコントローラ１２０は、ＵＳＢ接続を介して、サポート装置５００などとの間でデータを遣り取りする。
【００７６】
メモリカードインターフェース１１２は、着脱可能な記録媒体の一例であるメモリカード１１４を受け付ける。メモリカードインターフェース１１２は、メモリカード１１４に対してデータを書き込み、メモリカード１１４から各種データ（ログやトレースデータなど）を読み出すことが可能になっている。
【００７７】
ローカルバスコントローラ１１６は、ローカルバスを介して、標準コントローラ１００に接続される任意のユニットとの間でデータを遣り取りする。
【００７８】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、標準コントローラ１００の主要部を、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。さらに、標準コントローラ１００に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
【００７９】
（ｂ２：セーフティコントローラ２００）
図４は、本実施の形態に係る制御システム１を構成するセーフティコントローラ２００のハードウェア構成例を示す模式図である。図４を参照して、セーフティコントローラ２００は、プロセッサ２０２と、メインメモリ２０４と、ストレージ２１０と、フィールドネットワークコントローラ２０８と、ＵＳＢコントローラ２２０と、セーフティローカルバスコントローラ２１６とを含む。これらのコンポーネントは、プロセッサバス２１８を介して接続されている。
【００８０】
プロセッサ２０２は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ２０２は、ストレージ２１０に格納されたプログラム（一例として、システムプログラム２１０２およびセーフティプログラム２１０４）を読み出して、メインメモリ２０４に展開して実行することで、必要なセーフティ機能２５０を提供するための制御演算、および、後述するような各種処理を実現する。
【００８１】
特に、セーフティコントローラ２００は、セーフティプログラム２１０４を実行することで、セーフティドライバ３００のモーションセーフティ機能３６０の有効または無効を指定するための指定情報を含むセーフティ指令を、セーフティドライバ３００に対して出力する。セーフティドライバ３００のセーフティステータス７０に含まれる指定情報は、セーフティ指令に含まれる指定情報に基づき更新され得る。
【００８２】
メインメモリ２０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ２１０は、たとえば、ＳＳＤやＨＤＤなどの不揮発性記憶装置などで構成される。
【００８３】
ストレージ２１０には、基本的な機能を実現するためのシステムプログラム２１０２に加えて、要求されるセーフティ機能２５０に応じて作成されたセーフティプログラム２１０４が格納される。さらに、ストレージ２１０には、変数などを設定するための設定情報２１０６が格納される。
【００８４】
フィールドネットワークコントローラ２０８は、フィールドネットワーク２を介して、標準コントローラ１００およびセーフティドライバ３００を含む任意のデバイスとの間でデータを遣り取りする。図４に示す制御システム１においては、セーフティコントローラ２００のフィールドネットワークコントローラ２０８は、フィールドネットワーク２の通信スレーブとして機能する。
【００８５】
ＵＳＢコントローラ２２０は、ＵＳＢ接続を介して、サポート装置５００などの情報処理装置との間でデータを遣り取りする。
【００８６】
セーフティローカルバスコントローラ２１６は、セーフティローカルバスを介して、セーフティコントローラ２００に接続される任意のセーフティユニットとの間でデータを遣り取りする。図４には、セーフティユニットの一例として、セーフティＩＯユニット２３０を示す。
【００８７】
セーフティＩＯユニット２３０は、任意のセーフティデバイス２４０との間で入出力信号を遣り取りする。より具体的には、セーフティＩＯユニット２３０は、セーフティセンサやセーフティスイッチなどのセーフティデバイス２４０からの入力信号を受け付ける。あるいは、セーフティＩＯユニット２３０は、セーフティリレーなどのセーフティデバイス２４０へ指令を出力する。
【００８８】
図４には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、セーフティコントローラ２００の主要部を、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。
【００８９】
（ｂ３：セーフティドライバ３００およびサーボモータ４００）
図５は、本実施の形態に係る制御システム１を構成するセーフティドライバ３００およびサーボモータ４００のハードウェア構成例を示す模式図である。図５を参照して、セーフティドライバ３００は、フィールドネットワークコントローラ３０２と、制御部３１０と、ドライブ回路３３０と、フィードバック受信回路３３２とを含む。
【００９０】
フィールドネットワークコントローラ３０２は、フィールドネットワーク２を介して、標準コントローラ１００およびセーフティコントローラ２００を含む任意のデバイスとの間でデータを遣り取りする。本実施の形態においては、フィールドネットワークコントローラ３０２は、標準コントローラ１００からＳＲＡパラメータ６０を含むイニシャルコマンドを受信する「受信部」として機能する。図５に示す制御システム１においては、セーフティドライバ３００のフィールドネットワークコントローラ３０２は、フィールドネットワーク２の通信スレーブとして機能する。
【００９１】
制御部３１０は、セーフティドライバ３００を動作させるために必要な演算処理を実行する。一例として、制御部３１０は、プロセッサ３１２，３１４と、メインメモリ３１６と、ストレージ３２０とを含む。
【００９２】
プロセッサ３１２は、サーボモータ４００を駆動するための制御演算を主として実行する演算処理部に相当する。プロセッサ３１４は、サーボモータ４００に係るセーフティ機能２５０を提供するための制御演算を主として実行する。本実施の形態においては、プロセッサ３１４は、ＳＲＡパラメータ６０やセーフティ指令に従って、特定のモーションセーフティ機能３６０を無効化する「無効化部」として機能する。プロセッサ３１２，３１４は、いずれもＣＰＵなどで構成される。
【００９３】
メインメモリ３１６は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ３２０は、たとえば、ＳＳＤやＨＤＤなどの不揮発性記憶装置などで構成される。
【００９４】
ストレージ３２０には、後述するサーボ制御３５０を実現するためのサーボ制御プログラム３２０２と、後述するモーションセーフティ機能３６０を実現するためのモーションセーフティプログラム３２０４と、他のデバイスに公開される変数などを設定するための設定情報３２０６とが格納される。さらに、設定情報３２０６には、モーションセーフティ機能３６０についての有効／無効設定を管理するためのセーフティステータス７０が格納される。
【００９５】
図５には、２つのプロセッサ３１２，３１４がそれぞれ異なる目的の制御演算を実行することで信頼性を高める構成を例示するが、これに限らず、要求されるセーフティ機能２５０を実現できればどのような構成を採用してもよい。たとえば、単一のプロセッサに複数のコアが含まれるような場合には、プロセッサ３１２，３１４にそれぞれ対応する制御演算を実行するようにしてもよい。また、図５には、プロセッサ３１２，３１４がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００９６】
ドライブ回路３３０は、コンバータ回路およびインバータ回路などを含み、制御部３１０からの指令に従って、指定された電圧・電流・位相の電力を生成して、サーボモータ４００へ供給する。
【００９７】
フィードバック受信回路３３２は、サーボモータ４００からのフィードバック信号を受信して、その受信結果を制御部３１０へ出力する。
【００９８】
サーボモータ４００は、典型的には、三相交流モータ４０２および三相交流モータ４０２の回転軸に取付けられたエンコーダ４０４を含む。
【００９９】
三相交流モータ４０２は、セーフティドライバ３００から供給される電力を受けて回転力を発生するアクチュエータである。図５には、一例として、三相交流モータを例示するが、これに限らず、直流モータであってもよいし、単相交流モータあるいは多相交流モータであってもよい。さらに、リニアサーボのような直線に沿って駆動力を発生するアクチュエータを採用してもよい。
【０１００】
エンコーダ４０４は、三相交流モータ４０２の回転数に応じたフィードバック信号（典型的には、回転数に応じた数のパルス信号）を出力する。
【０１０１】
（ｂ４：サポート装置５００）
図６は、本実施の形態に係る制御システム１を構成するサポート装置５００のハードウェア構成例を示す模式図である。サポート装置５００は、一例として、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコン）を用いて実現される。
【０１０２】
図６を参照して、サポート装置５００は、プロセッサ５０２と、メインメモリ５０４と、入力部５０６と、出力部５０８と、ストレージ５１０と、光学ドライブ５１２と、ＵＳＢコントローラ５２０とを含む。これらのコンポーネントは、プロセッサバス５１８を介して接続されている。
【０１０３】
プロセッサ５０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ５１０に格納されたプログラム（一例として、ＯＳ５１０２およびサポートプログラム５１０４）を読み出して、メインメモリ５０４に展開して実行することで、後述するような各種処理を実現する。すなわち、プロセッサ５０２は、サポートプログラム５１０４を実行するコンピュータの機能を有する。
【０１０４】
メインメモリ５０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ５１０は、たとえば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【０１０５】
ストレージ５１０には、基本的な機能を実現するためのＯＳ５１０２に加えて、サポート装置５００としての機能を提供するためのサポートプログラム５１０４が格納される。すなわち、サポートプログラム５１０４は、制御システム１に接続されるコンピュータにより実行されることで、本実施の形態に係るサポート装置５００を実現する。
【０１０６】
さらに、ストレージ５１０には、サポートプログラム５１０４が実行されることで提供される開発環境においてユーザにより作成されるプロジェクトデータ５１０６が格納される。
【０１０７】
本実施の形態において、サポート装置５００は、制御システム１に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクトデータ５１０６は、このような統合的な開発環境によって生成されるデータを含む。典型的には、プロジェクトデータ５１０６は、標準制御ソースプログラム５１０８と、標準コントローラ設定情報５１１０と、セーフティソースプログラム５１１７と、セーフティコントローラ設定情報５１１４と、セーフティドライバ設定情報５１１６とを含む。さらに、セーフティドライバ設定情報５１１６には、ユーザによって作成されたＳＲＡパラメータ６０が格納される。
【０１０８】
標準制御ソースプログラム５１０８は、オブジェクトコードに変換された上で、標準コントローラ１００へ送信され、標準制御プログラム１１０４（図３参照）として格納される。なお、標準制御ソースプログラム５１０８は、オブジェクトコードに変換されることなく、そのまま標準コントローラ１００へ送信されてもよい。同様に、標準コントローラ設定情報５１１０についても標準コントローラ１００へ送信され、設定情報１１０６（図３参照）として格納される。
【０１０９】
セーフティソースプログラム５１１７は、オブジェクトコードに変換された上で、セーフティコントローラ２００へ送信され、セーフティプログラム２１０４（図４参照）として格納される。なお、セーフティソースプログラム５１１７は、オブジェクトコードに変換されることなく、そのままセーフティコントローラ２００へ送信されてもよい。同様に、セーフティコントローラ設定情報５１１４についてもセーフティコントローラ２００へ送信され、設定情報２１０６（図４参照）として格納される。
【０１１０】
ＳＲＡパラメータ６０を含むセーフティドライバ設定情報５１１６は、セーフティドライバ３００へ送信され、設定情報３２０６（図５参照）として格納される。設定情報３２０６に格納されたセーフティステータス７０に含まれる指定情報は、ＳＲＡパラメータ６０に含まれる指定情報に基づき更新され得る。
【０１１１】
入力部５０６は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。出力部５０８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ５０２からの処理結果などを出力する。
【０１１２】
ＵＳＢコントローラ５２０は、ＵＳＢ接続を介して、標準コントローラ１００などとの間のデータを遣り取りする。
【０１１３】
サポート装置５００は、光学ドライブ５１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体５１４（たとえば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読み取られてストレージ５１０などにインストールされる。
【０１１４】
サポート装置５００で実行されるサポートプログラム５１０４などは、コンピュータ読取可能な記録媒体５１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置５００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０１１５】
図６には、プロセッサ５０２がプログラムを実行することで、サポート装置５００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【０１１６】
なお、制御システム１が稼動中において、サポート装置５００は、標準コントローラ１００から取り外されていてもよい。
【０１１７】
＜Ｃ．制御システム１の機能分担＞
次に、制御システム１における機能分担の一例について説明する。図７は、本実施の形態に係る制御システム１の機能分担の一例を示す模式図である。
【０１１８】
図７を参照して、標準コントローラ１００が実行する標準制御１５０に関して、セーフティドライバ３００はサーボ制御３５０を実行する。標準制御１５０は、制御対象に予め設定されたユーザプログラムに従って、サーボモータ４００を駆動するための指令を周期的に算出する処理を含む。また、サーボ制御３５０は、標準制御１５０により周期的に算出される指令に従ってサーボモータ４００を駆動するための制御、および、サーボモータ４００の動作状態を示す状態値を取得して出力する処理を含む。サーボ制御３５０は、セーフティドライバ３００のプロセッサ３１２（図５参照）が担当する。
【０１１９】
一方、セーフティコントローラ２００が提供するセーフティ機能２５０に対応して、セーフティドライバ３００はモーションセーフティ機能３６０を提供する。モーションセーフティ機能３６０は、セーフティドライバ３００のプロセッサ３１４（図５参照）が担当する。
【０１２０】
セーフティ機能２５０は、標準コントローラ１００が実行する標準制御１５０が保持する状態値、セーフティデバイス２４０からの信号によって示される状態値、および、セーフティドライバ３００が保持する状態値などに基づいて、予め定められた条件が成立すると、予め指定されているセーフティ機能２５０を有効化する。
【０１２１】
予め指定されているセーフティ機能２５０を有効化する処理は、たとえば、セーフティドライバ３００に対するセーフティ指令の出力、あるいは、セーフティデバイス２４０に対してセーフティ指令の出力（たとえば、特定の装置への電力供給に係るセーフティリレーを遮断する）などを含む。
【０１２２】
セーフティドライバ３００は、モーションセーフティプログラム３２０４を実行することで、セーフティコントローラ２００からのセーフティ指令に応答して、指定されたモーションセーフティ機能３６０を実現する。なお、各セーフティドライバ３００においては、実行可能なモーションセーフティ機能３６０が予め定められている。指定されたモーションセーフティ機能３６０の種類に応じて、サーボ制御３５０によるサーボモータ４００の制御に介入して、サーボモータ４００への電力供給を遮断する処理、あるいは、サーボ制御３５０によるサーボモータ４００の制御の状態値が予め定められた制限範囲内に収まっているか否かを監視する処理などが実行される。モーションセーフティプログラム３２０４は、セーフティステータス７０に含まれる指定情報によって指定されるセーフティ機能の有効／無効設定に応じて、各モーションセーフティ機能３６０を有効化または無効化する。
【０１２３】
図８は、本実施の形態に係る制御システム１のセーフティドライバ３００によるセーフティ機能２５０に係る処理手順の一例を示すシーケンス図である。図８を参照して、標準コントローラ１００の標準制御１５０により周期的に指令が算出されて、セーフティドライバ３００（サーボ制御３５０）に出力される（シーケンスＳＱ２）。セーフティドライバ３００のサーボ制御３５０は、標準制御１５０からの指令に従って、サーボモータ４００を駆動する（シーケンスＳＱ４）。
【０１２４】
あるタイミングにおいて、セーフティデバイス２４０（たとえば、セーフティセンサ）からのセーフティイベントが発生すると（シーケンスＳＱ６）、セーフティコントローラ２００は、セーフティドライバ３００（モーションセーフティ機能３６０）にセーフティ指令を出力する（シーケンスＳＱ８）。このセーフティ指令に応答して、セーフティドライバ３００のモーションセーフティ機能３６０は、指定されたセーフティ機能２５０を有効化する（シーケンスＳＱ１０）。
【０１２５】
セーフティ機能２５０の有効化に応答して、標準コントローラ１００の標準制御１５０からは、当該有効化されたセーフティ機能２５０に応じた指令が算出および出力されるようになる（シーケンスＳＱ１２）。一方、セーフティドライバ３００（モーションセーフティ機能３６０）は、サーボモータ４００の動作状態が予め定められた制限範囲内に収まっているか否かを監視する。サーボモータ４００の動作状態が予め定められた制限範囲内に収まっていないと判断されると、あるいは、予め定められた停止時間が到来すると、セーフティドライバ３００（モーションセーフティ機能３６０）は、サーボモータ４００への電力供給を遮断する（シーケンスＳＱ１４）。
【０１２６】
このように、セーフティドライバ３００は、標準コントローラ１００（標準制御１５０）からの指令に従ってサーボモータ４００を駆動できるとともに、セーフティ機能２５０を有効化するための指令に応じて、セーフティコントローラ２００（セーフティ機能２５０）に対するモーションセーフティ機能３６０を実現することができる。
【０１２７】
＜Ｄ．制御システム１のモーションセーフティ機能３６０＞
次に、制御システム１が提供するモーションセーフティ機能３６０の一例について説明する。
【０１２８】
図９は、本実施の形態に係る制御システム１が提供するモーションセーフティ機能３６０の一例を示す図である。図９（Ａ）には、ＳＴＯに対応するサーボモータ４００の挙動の一例を示し、図９（Ｂ）には、ＳＳ１に対応するサーボモータ４００の挙動の一例を示す。
【０１２９】
図９（Ａ）を参照して、サーボモータ４００がある回転速度で運転している状態において、時刻ｔ１でセーフティ指令（ＳＴＯ）が与えられると、セーフティドライバ３００は、サーボモータ４００への電力供給を遮断して、サーボモータ４００で発生するトルクをゼロにする。この結果、サーボモータ４００は惰性で回転した後に停止する。なお、サーボモータ４００にブレーキが装着されている場合には、サーボモータ４００は即座に停止することもできる。
【０１３０】
図９（Ｂ）を参照して、サーボモータ４００がある回転速度で運転している状態において、時刻ｔ１でセーフティ指令（ＳＳ１）が与えられると、セーフティドライバ３００は、予め定められた加速度で回転速度を低減する。このとき、セーフティドライバ３００は、サーボモータ４００からの電力回収（すなわち、回生）などを実行してもよい。そして、時刻ｔ２においてサーボモータ４００の回転速度がゼロになると、セーフティドライバ３００は、サーボモータ４００への電力供給を遮断して、サーボモータ４００で発生するトルクをゼロにする。時刻ｔ２以降においては、図９（Ａ）に示すＳＴＯと同様の状態になる。
【０１３１】
図９（Ａ）に示されるＳＴＯおよび図９（Ｂ）に示されるＳＳ１のうち、サーボモータ４００と機械的に連結されている設備の特性などに応じて、より安全に停止できるセーフティ機能が適宜選択される。
【０１３２】
上述した非特許文献１は、図９（Ａ）および図９（Ｂ）に示すモーションセーフティ機能だけではなく、複数のモーションセーフティ機能を規定する。各モーションセーフティ機能を実現するためには、サーボモータ４００の挙動を規定するための設定が必要となる。
【０１３３】
＜Ｅ．標準制御、セーフティ制御、およびＳＲＡパラメータ転送の実装例＞
上述したように、本実施の形態に係る制御システム１においては、データ通信および論理コネクション４によるセーフティ通信が可能になっている。次に、それぞれの通信を利用した標準制御、セーフティ制御、およびＳＲＡパラメータ６０の転送の実装例について説明する。
【０１３４】
図１０は、本実施の形態に係る制御システム１における標準制御、セーフティ制御、およびＳＲＡパラメータ転送の実装例を示す模式図である。説明の便宜上、図１０には、標準コントローラ１００、セーフティコントローラ２００、およびサポート装置５００に加えて、１つのセーフティドライバ３００からなる制御システム１の例を示す。
【０１３５】
図１０に示すように、標準コントローラ１００は、主たる機能構成として、データ通信レイヤ１７０と、ＩＯ管理モジュール１７２とを含む。セーフティコントローラ２００は、主たる機能構成として、データ通信レイヤ２７０と、ＩＯ管理モジュール２７２と、論理コネクションレイヤ２７６と、セーフティ機能状態管理エンジン２７８とを含む。セーフティドライバ３００は、主たる機能構成として、データ通信レイヤ３７０と、論理コネクションレイヤ３７６と、モーションセーフティ機能状態管理エンジン３７８と、サーボ制御実行エンジン３５２と、モーションセーフティ機能実行エンジン３６２とを含む。
【０１３６】
データ通信レイヤ１７０、データ通信レイヤ２７０、およびデータ通信レイヤ３７０は、フィールドネットワーク２上の通信フレーム６００の転送を担当する。
【０１３７】
セーフティコントローラ２００の論理コネクションレイヤ２７６およびセーフティドライバ３００の論理コネクションレイヤ３７６は、セーフティ通信フレーム６３０の遣り取りを担当する。すなわち、論理コネクションレイヤ２７６および論理コネクションレイヤ３７６は、論理コネクション４を確立するためのプロトコル（本実施の形態においては、ＦＳｏＥ）に従って、通信フレーム６００に含まれるセーフティ通信フレーム６３０を用いて、コマンドおよびデータを遣り取りする。セーフティコントローラ２００は、論理コネクションレイヤ２７６を介してセーフティドライバ３００との間で論理コネクション４を確立させるための確立モジュール２７７を含む。
【０１３８】
標準コントローラ１００において、ＩＯ管理モジュール１７２は、制御対象との間で信号を遣り取りすることで、プロセスデータ１７４を更新する。標準コントローラ１００において実行される標準制御プログラム１１０４は、プロセスデータ１７４を参照して制御演算を実行するとともに、制御演算の実行結果でプロセスデータ１７４を更新する。
【０１３９】
セーフティコントローラ２００において、ＩＯ管理モジュール２７２は、セーフティデバイス２４０との間で信号を遣り取りすることで、プロセスデータ２７４を更新する。
【０１４０】
セーフティコントローラ２００において実行されるセーフティプログラム２１０４は、プロセスデータ２７４およびセーフティ機能状態管理エンジン２７８を参照して制御演算を実行するとともに、制御演算の実行結果に基づいて、プロセスデータ２７４を更新し、あるいは、セーフティ機能状態管理エンジン２７８に対して内部的な指令を出力する。
【０１４１】
セーフティ機能状態管理エンジン２７８は、セーフティプログラム２１０４による制御演算の実行結果に応じて、特定のセーフティドライバ３００に対して特定のモーションセーフティ機能３６０を有効化または無効化するためのセーフティ指令を生成する。論理コネクションレイヤ２７６は、セーフティ機能状態管理エンジン２７８からの指令に応答して、対象のセーフティドライバ３００の論理コネクションレイヤ３７６との間で、セーフティ通信フレーム６３０を用いて必要なコマンドおよびデータを遣り取りする。
【０１４２】
セーフティドライバ３００において、サーボ制御実行エンジン３５２は、プロセスデータ３７４およびフィードバック受信回路３３２を介して取得されるフィードバック信号の情報を参照してサーボ制御に係る制御演算を実行する。サーボ制御実行エンジン３５２は、制御演算の実行結果に基づいて、プロセスデータ３７４を更新するとともに、ドライブ回路３３０に内部的な指令を出力する。ドライブ回路３３０は、サーボ制御実行エンジン３５２からの指令に従って、サーボモータ４００を駆動する。
【０１４３】
モーションセーフティ機能状態管理エンジン３７８は、セーフティコントローラ２００からのセーフティ指令または標準コントローラ１００からのＳＲＡパラメータ６０に従ってモーションセーフティ機能３６０の状態を管理する。セーフティステータス７０は、モーションセーフティ機能状態管理エンジン３７８によって保持される。モーションセーフティ機能状態管理エンジン３７８は、セーフティステータス７０に含まれる指定情報に従って、モーションセーフティ機能実行エンジン３６２に対して内部的な指令を出力する。
【０１４４】
モーションセーフティ機能実行エンジン３６２においては、モーションセーフティプログラム３２０４が実行されることにより、指定されたモーションセーフティ機能３６０が実現される。
【０１４５】
論理コネクションレイヤ３７６は、モーションセーフティ機能状態管理エンジン３７８からの指令に応答して、セーフティコントローラ２００の論理コネクションレイヤ２７６との間で、セーフティ通信フレーム６３０を用いて必要なコマンドおよびデータを遣り取りする。
【０１４６】
サポート装置５００は、主たる機能構成として、データ通信レイヤ５３３と、パラメータマネージャ５３２とを含む。データ通信レイヤ５３３は、標準コントローラ１００を含む各デバイスとデータを遣り取りする。パラメータマネージャ５３２は、操作受付部５３０が入力部５０６を介し受け付けたユーザの操作に従い、ＳＲＡパラメータ６０を設定する。具体的には、ＳＲＡパラメータ６０が設定されることで、セーフティ機能の有効／無効設定が行われる。ＳＲＡパラメータ６０は、フィールドネットワーク２を介して、対象のセーフティドライバ３００に転送される。
【０１４７】
＜Ｆ．モーションセーフティ機能の有効または無効の遷移の一例＞
図１１は、本実施の形態に係るモーションセーフティ機能３６０の有効または無効の遷移の一例を示す模式図である。
【０１４８】
前述したように、セーフティドライバ３００は、実装しているか否かに関わらず、全てのモーションセーフティ機能３６０に対応するフラグがデフォルトで「０」となって立ち上がる。つまり、デフォルト時においては、セーフティステータス７０に含まれる全ビットのフラグが「０」となる。
【０１４９】
ユーザが、ＳＲＡパラメータ６０に含まれる指定情報において、ＳＳ２を無効化するためにＳＳ２に対応する２ビット目のフラグを「１」に、ＳＯＳを無効化するためにＳＯＳに対応する３ビット目のフラグを「１」に、さらに、ＳＤＩｐを有効化するためにＳＤＩｐに対応する５ビット目のフラグを「１」に設定すると、セーフティステータス７０に含まれる指定情報が、イニシャルコマンドに含まれるＳＲＡパラメータ６０の指定情報に従って更新される。より具体的には、セーフティステータス７０に含まれる指定情報が、ＳＲＡパラメータ６０に含まれる指定情報と同じになるように上書きされる。
【０１５０】
その後、ユーザが、ＳＳ２を再び有効化するためにＳＳ２に対応する２ビット目のフラグを「０」に、ＳＳ１を無効化するためにＳＳ１に対応する１ビット目のフラグを「１」に設定するようにセーフティプログラム２１０４を作成すると、セーフティステータス７０に含まれる指定情報が、セーフティ指令に従って更新される。より具体的には、セーフティステータス７０に含まれる指定情報のうち、ＳＳ２に対応するフラグが２ビット目のフラグが「０」に、ＳＳ１に対応するフラグが１ビット目のフラグが「１」に変更される。
【０１５１】
このように、本実施の形態に係る制御システム１においては、フィールドネットワーク２における接続が確立した後に、ＳＲＡパラメータ６０やセーフティ指令によって、特定のモーションセーフティ機能３６０の有効または無効の設定をデフォルト状態から変更することができる。
【０１５２】
＜Ｇ．モーションセーフティ機能３６０に関するユーザインターフェース＞
次に、サポート装置５００が提供するモーションセーフティ機能３６０に関するユーザインターフェースの一例について説明する。
【０１５３】
図１２および図１３は、本実施の形態に係るサポート装置５００が提供するＳＲＡパラメータ６０におけるモーションセーフティ機能３６０の有効／無効設定をするためのユーザインターフェースの一例を示す図である。また、図１４は、本実施の形態に係るサポート装置５００が提供するセーフティプログラム２１０４における変数設定をするためのユーザインターフェースの一例を示す図である。ユーザは、サポート装置５００においてサポートプログラム５１０４を実行することで、図１３〜図１５に示すようなユーザインターフェースに係る画面を表示させることができる。
【０１５４】
図１２に示すように、ユーザインターフェース６０１に係る画面の左側には、マルチビューエクスプローラ欄６１０が設けられている。マルチビューエクスプローラ欄６１０には、開発対象となるプログラムを指定するための切替スイッチ６１２が含まれる。この例では、切替スイッチ６１２において、セーフティプログラム２１０４に対応する「new_SafetyCPU0」が指定されている。
【０１５５】
さらに、マルチビューエクスプローラ欄６１０には、制御システム１においてネットワーク接続される構成を設定するための構成・設定スイッチ６１４が含まれる。構成・設定スイッチ６１４によって展開される下位層には、ＳＲＡパラメータ６０に関する開発を行うためのＳＲＡパラメータアイコン６１６と、セーフティプログラム２１０４で参照される変数のマッピングを行うためのＩ／Ｏマップアイコン６１８とが含まれる。「変数」とは、データそのもの、および当該データが格納される入れ物や記憶領域などである。たとえば、セーフティプログラム２１０４で参照される変数としては、サーボモータ４００などの状態値などが対応付けられており、この変数に対応付けられた状態値に応じて、各モーションセーフティ機能３６０が実現される。
【０１５６】
ＳＲＡパラメータアイコン６１６は、制御システム１に接続された１または複数のセーフティドライバ３００ごとに設けられており、この例では、Ｎｏｄｅ１０のセーフティドライバ３００に対応するＳＲＡパラメータアイコン６１６が選択されている。
【０１５７】
ユーザインターフェース６０１に係る画面の中央には、ＳＲＡパラメータ６０を設定するための画面６２０が表示される。この画面６２０においては、番号欄６２２と、フラグ欄６２４とが含まれる。
【０１５８】
番号欄６２２には、セーフティステータス７０に含まれる指定情報と同じ並びで、１ビット目から順番にモーションセーフティ機能３６０ごとに番号が示されている。なお、この例では、４ビット目のＳＳＲのモーションセーフティ機能３６０が実装されていないため、４番目に対応する情報が全て「Reserved」になっている。
【０１５９】
フラグ欄６２４には、ユーザによってチェックを付けることができるチェックボックスが用意されている。ＳＲＡパラメータ６０に含まれる指定情報では、フラグ欄６２４のチェックボックスにおいてチェックが付けられることでフラグが「０」に設定され、フラグ欄６２４のチェックボックスにおいてチェックが外されることでフラグが「１」に設定される。このように、ユーザは、フラグ欄６２４のチェックボックスにおいてチェックを付けたり、チェックを外したりすることで、容易にＳＲＡパラメータ６０におけるモーションセーフティ機能３６０の有効／無効設定を行うことができる。
【０１６０】
なお、モーションセーフティ機能３６０の有効／無効設定について、セーフティステータス７０の２バイト目については、ユーザによってデフォルト状態を変更することができるが、図１２に示すように、２バイト目についても、ユーザは、ＳＲＡパラメータ６０によって有効／無効設定を行うことができる。
【０１６１】
図１２に示す例では、フラグ欄６２４のチェックボックスにおいて、ＳＳ２、ＳＯＳ、およびＳＤＩｐのチェックが外されている。このため、ＳＲＡパラメータ６０においては、ＳＳ２、ＳＯＳ、およびＳＤＩｐに対応するフラグが「１」に指定されることになる。
【０１６２】
図１３に示すように、フラグ欄６２４のチェックボックスにおいて、特定のモーションセーフティ機能３６０について無効化されると、ユーザインターフェース６０２に係る画面に切り替わり、画面下方に位置するアウトプットウィンドウ６７０において、無効化された特定のモーションセーフティ機能３６０に対応付けられた変数が解除された旨が通知される。
【０１６３】
図１４に示すように、Ｉ／Ｏマップアイコン６１８が選択されると、ユーザインターフェース６０３に係る画面に切り替わる。ユーザインターフェース６０３に係る画面の中央には、各モーションセーフティ機能３６０に対して変数のマッピングを行うための画面６５０が表示される。この画面６５０においては、ポート欄６５２と、変数欄６５４と、変数コメント欄６５６とが含まれる。
【０１６４】
ポート欄６５２には、選択中のセーフティドライバ３００（この例では、Ｎｏｄｅ１０）に実装された各モーションセーフティ機能３６０が示されている。変数欄６５４には、各モーションセーフティ機能３６０に対応付けられた変数が示されている。変数コメント欄６５６には、各モーションセーフティ機能３６０に対応付けられた変数に関するコメントが示されている。
【０１６５】
ここで、図１３に示したように、フラグ欄６２４のチェックボックスにおいて、特定のモーションセーフティ機能３６０について無効化した場合、無効化された特定のモーションセーフティ機能３６０に対応付けられた変数が解除される。このため、図１４に示すユーザインターフェース６０３に係る画面においては、変数欄６５４および変数コメント欄６５６が空白となる。たとえば、この例では、フラグ欄６２４のチェックボックスにおいて、ＳＳ２およびＳＯＳが無効化されて変数が解除されたため、ＳＳ２およびＳＯＳに対応する変数欄６５４および変数コメント欄６５６が空白となる。
【０１６６】
このように、サポート装置５００は、特定のモーションセーフティ機能３６０の無効が指定されたことに応答して、当該特定のモーションセーフティ機能３６０に係るセーフティプログラム２１０４で参照される変数の使用を禁止する。これにより、無効化されたモーションセーフティ機能３６０に係るセーフティプログラム２１０４で参照される変数を、ユーザが意図せず設定してしまうといった事態を回避することができる。
【０１６７】
＜Ｈ．セーフティ有効／無効設定処理＞
次に、サポート装置５００が実行するセーフティ有効／無効設定処理について説明する。図１５は、本実施の形態に係るサポート装置５００が実行するセーフティ有効／無効設定処理を説明するためのフローチャートである。
【０１６８】
図１５に示すように、サポート装置５００は、ＳＲＡパラメータ６０の設定画面の表示を受け付けた否かを判定する（Ｓ５０２）。サポート装置５００は、ＳＲＡパラメータ６０の設定画面の表示を受け付けていない場合（Ｓ５０２でＮＯ）、本処理を終了する。
【０１６９】
一方、サポート装置５００は、ＳＲＡパラメータ６０の設定画面の表示を受け付けた場合（Ｓ５０２でＹＥＳ）、セーフティ機能の有効／無効設定のサポートがあるか否かを判定する（Ｓ５０４）。サポート装置５００は、セーフティ機能の有効／無効設定のサポートがない場合（Ｓ５０４でＮＯ）、セーフティ機能の有効／無効設定が不可能な態様でＳＲＡパラメータ６０の設定画面を表示する（Ｓ５０６）。たとえば、サポート装置５００は、図１２に示すユーザインターフェース６０１に係る画面において、フラグ欄６２４のチェックボックスの内容を編集不可能な状態とする。その後、サポート装置５００は、本処理を終了する。
【０１７０】
一方、サポート装置５００は、セーフティ機能の有効／無効設定のサポートがある場合（Ｓ５０４でＹＥＳ）、セーフティ機能の有効／無効設定が可能な態様でＳＲＡパラメータ６０の設定画面を表示する（Ｓ５０８）。たとえば、サポート装置５００は、図１２に示すユーザインターフェース６０１に係る画面において、フラグ欄６２４のチェックボックスの内容を編集可能な状態とする。
【０１７１】
次に、サポート装置５００は、セーフティ機能の有効／無効設定を受け付けた否かを判定する（Ｓ５１０）。具体的には、サポート装置５００は、図１２に示すユーザインターフェース６０１に係る画面において、フラグ欄６２４のチェックボックスのチェックがユーザによって付けられたり外されたりしたか否かを判定する。サポート装置５００は、セーフティ機能の有効／無効設定を受け付けていない場合（Ｓ５１０でＮＯ）、有効／無効設定を受け付けるまでＳ５１０の処理を繰り返す。
【０１７２】
一方、サポート装置５００は、セーフティ機能の有効／無効設定を受け付けた場合（Ｓ５１０でＹＥＳ）、セーフティ機能の有効／無効設定をＳＲＡパラメータ６０に反映する（Ｓ５１２）。そして、サポート装置５００は、無効に設定されたモーションセーフティ機能３６０に対して変数のマッピングがあるか否かを判定する（Ｓ５１４）。サポート装置５００は、無効に設定されたモーションセーフティ機能３６０に対して変数のマッピングがない場合（Ｓ５１４でＮＯ）、本処理を終了する。
【０１７３】
一方、サポート装置５００は、無効に設定されたモーションセーフティ機能３６０に対して変数のマッピングがある場合（Ｓ５１４でＹＥＳ）、無効に設定されたモーションセーフティ機能３６０に対応する変数を解除し（Ｓ５１６）、解除した旨を通知する（Ｓ５１８）。たとえば、サポート装置５００は、図１３に示すアウトプットウィンドウ６７０において、無効化した特定のモーションセーフティ機能３６０に対応付けられた変数を解除した旨を通知する。
【０１７４】
そして、サポート装置５００は、無効に設定されたモーションセーフティ機能３６０に対する変数のマッピングを禁止し（Ｓ５２０）、本処理を終了する。
【０１７５】
このように、サポート装置５００は、特定のモーションセーフティ機能３６０の無効が指定されたことに応答して、当該特定のモーションセーフティ機能３６０に係るセーフティプログラム２１０４で参照される変数の使用を禁止する。これにより、無効化されたモーションセーフティ機能３６０に係るセーフティプログラム２１０４で参照される変数を、ユーザが意図せず設定してしまうといった事態を回避することができる。
【０１７６】
また、サポート装置５００は、無効化されたモーションセーフティ機能３６０に係るセーフティプログラム２１０４で参照される変数の使用が禁止されたことをユーザに通知することができる。
【０１７７】
＜Ｉ．ＳＲＡパラメータ受信処理＞
次に、セーフティドライバ３００が実行するＳＲＡパラメータ受信処理について説明する。図１６は、本実施の形態に係るセーフティドライバ３００が実行するＳＲＡパラメータ受信処理を説明するためのフローチャートである。なお、セーフティドライバ３００は、標準コントローラ１００からイニシャルコマンドを受信したときに、図１６に示すＳＲＡパラメータ受信処理を実行する。
【０１７８】
図１６に示すように、セーフティドライバ３００は、ＳＲＡパラメータ６０を受信したか否かを判定する（Ｓ３０２）。つまり、セーフティドライバ３００は、標準コントローラ１００から受信したイニシャルコマンドにＳＲＡパラメータ６０が含まれているか否かを判定する。セーフティドライバ３００は、ＳＲＡパラメータ６０を受信していない場合（Ｓ３０２でＮＯ）、デフォルト状態におけるセーフティステータス７０の指定情報に従って、全てのモーションセーフティ機能３６０の有効／無効設定を維持する（Ｓ３０４）。すなわち、全てのモーションセーフティ機能３６０を有効に維持する。その後、セーフティドライバ３００は、本処理を終了する。
【０１７９】
一方、セーフティドライバ３００は、ＳＲＡパラメータ６０を受信した場合（Ｓ３０２でＹＥＳ）、ＳＲＡパラメータ６０の指定情報に従って、特定のモーションセーフティ機能３６０の有効／無効設定を行う（Ｓ３０８）。たとえば、図１１に示したように、セーフティドライバ３００は、ＳＳ２およびＳＯＳを無効化し、かつＳＤＩｐを有効化する旨の指定情報を含むＳＲＡパラメータ６０を受信した場合、セーフティステータス７０の指定情報においても、ＳＳ２およびＳＯＳを無効化し、かつＳＤＩｐを有効化する。その後、セーフティドライバ３００は、本処理を終了する。
【０１８０】
このように、セーフティドライバ３００は、ＳＲＡパラメータ６０に従って、特定のモーションセーフティ機能３６０の有効／無効設定をデフォルト状態から変更することができる。
【０１８１】
＜Ｊ．セーフティ指令受信処理＞
次に、セーフティドライバ３００が実行するセーフティ指令受信処理について説明する。図１７は、本実施の形態に係るセーフティドライバ３００が実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ３００は、フィールドネットワーク２における接続が確立して論理コネクション４が確立した後に、図１７に示すセーフティ指令受信処理を実行する。
【０１８２】
図１７に示すように、セーフティドライバ３００は、セーフティコントローラ２００からセーフティ指令を受信したか否かを判定する（Ｓ３２２）。セーフティドライバ３００は、セーフティ指令を受信していない場合（Ｓ３２２でＮＯ）、本処理を終了する。
【０１８３】
一方、セーフティドライバ３００は、セーフティ指令を受信した場合（Ｓ３２２でＹＥＳ）、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれているか否かを判定する（Ｓ３２４）。セーフティドライバ３００は、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれていない場合（Ｓ３２４でＮＯ）、本処理を終了する。
【０１８４】
一方、セーフティドライバ３００は、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれている場合（Ｓ３２４でＹＥＳ）、セーフティ指令に含まれる指定情報に従って、特定のモーションセーフティ機能３６０の有効／無効設定を行う（Ｓ３２６）。たとえば、図１１に示したように、セーフティドライバ３００は、ＳＳ２を有効化し、かつＳＳ１を無効化する旨の指定情報を含むセーフティ指令を受信した場合、セーフティステータス７０の指定情報においても、ＳＳ２を有効化し、かつＳＳ１を無効化する。その後、セーフティドライバ３００は、本処理を終了する。
【０１８５】
このように、セーフティドライバ３００は、イニシャルコマンド受信時において実行したＳＲＡパラメータ６０に従った有効／無効設定よりも優先的に、論理コネクション４が確立した後に受信したセーフティ指令に従ってモーションセーフティ機能３６０の有効／無効設定を行う。なお、セーフティドライバ３００は、その後において、ＳＲＡパラメータ６０を受信したときも、あるいはセーフティ指令を受信したときも、常に最新の有効／無効設定に従って、セーフティステータス７０の指定情報を更新する。これにより、ユーザは、ＳＲＡパラメータ６０およびセーフティ指令のいずれに関わらず、最新の有効／無効設定に従って、モーションセーフティ機能３６０を実現することができる。
【０１８６】
＜Ｋ．変形例＞
上述の実施の形態においては、ＳＲＡパラメータ６０およびセーフティ指令のいずれに関わらず、ユーザによって行われた最新の有効／無効設定に従ってモーションセーフティ機能３６０を実現するものであったが、これに限らない。
【０１８７】
（ｋ１：ＳＲＡパラメータ６０を優先して有効／無効設定）
たとえば、図１８に示すように、セーフティ指令よりもＳＲＡパラメータ６０を優先的に参照してモーションセーフティ機能３６０を実現するものであってもよい。図１８は、変形例に係るセーフティドライバ３００ａが実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ３００ａは、フィールドネットワーク２における接続が確立して論理コネクション４が確立した後に、図１８に示すセーフティ指令受信処理を実行する。
【０１８８】
図１８に示すように、セーフティドライバ３００ａは、セーフティコントローラ２００からセーフティ指令を受信したか否かを判定する（Ｓ３４２）。セーフティドライバ３００は、セーフティ指令を受信していない場合（Ｓ３４２でＮＯ）、本処理を終了する。
【０１８９】
一方、セーフティドライバ３００ａは、セーフティ指令を受信した場合（Ｓ３４２でＹＥＳ）、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれているか否かを判定する（Ｓ３４４）。セーフティドライバ３００ａは、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれていない場合（Ｓ３４４でＮＯ）、本処理を終了する。
【０１９０】
一方、セーフティドライバ３００ａは、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれている場合（Ｓ３４４でＹＥＳ）、イニシャルコマンド時に受信したＳＲＡパラメータ６０の指定情報に従ってモーションセーフティ機能３６０の有効／無効設定を行っていたか否かを判定する（Ｓ３４６）。
【０１９１】
セーフティドライバ３００ａは、ＳＲＡパラメータ６０の指定情報に従ってモーションセーフティ機能３６０の有効／無効設定を未だ行っていない場合（Ｓ３４６でＮＯ）、セーフティ指令の指定情報に従って、特定のモーションセーフティ機能３６０の有効／無効設定を行う（Ｓ３４８）。
【０１９２】
一方、セーフティドライバ３００ａは、ＳＲＡパラメータ６０の指定情報に従ってモーションセーフティ機能３６０の有効／無効設定を既に行っていた場合（Ｓ３４６でＹＥＳ）、ＳＲＡパラメータ６０の指定情報を優先して、当該ＳＲＡパラメータ６０の指定情報に従って、全てのモーションセーフティ機能３６０の有効／無効設定を維持する（Ｓ３５０）。Ｓ３４８またはＳ３５０の後、セーフティドライバ３００ａは、本処理を終了する。
【０１９３】
このように、図１８に示す変形例においては、セーフティドライバ３００ａは、論理コネクション４が確立した後に受信したセーフティ指令よりも優先的に、イニシャルコマンドとともに受信したＳＲＡパラメータ６０に従ってモーションセーフティ機能３６０の有効／無効設定を行う。これにより、仮にユーザが、意図せずに誤った設定内容のソースコードを記述してしまっても、その誤った設定内容がモーションセーフティ機能３６０の有効／無効設定に反映されてしまうことがない。
【０１９４】
（ｋ２：ＳＲＡパラメータ６０とセーフティ指令とのＡＮＤで有効／無効設定）
たとえば、図１９および図２０に示すように、ＳＲＡパラメータ６０に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのＡＮＤ演算結果に基づいて、モーションセーフティ機能３６０を実現するものであってもよい。図１９は、変形例に係るセーフティドライバ３００ｂが実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ３００ｂは、フィールドネットワーク２における接続が確立して論理コネクション４が確立した後に、図１９に示すセーフティ指令受信処理を実行する。また、図２０は、変形例に係るモーションセーフティ機能３６０の有効または無効の遷移の一例を示す模式図である。
【０１９５】
図１９に示すように、セーフティドライバ３００ｂは、セーフティコントローラ２００からセーフティ指令を受信したか否かを判定する（Ｓ３６２）。セーフティドライバ３００ｂは、セーフティ指令を受信していない場合（Ｓ３６２でＮＯ）、本処理を終了する。
【０１９６】
一方、セーフティドライバ３００ｂは、セーフティ指令を受信した場合（Ｓ３６２でＹＥＳ）、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれているか否かを判定する（Ｓ３６４）。セーフティドライバ３００ｂは、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれていない場合（Ｓ３６４でＮＯ）、本処理を終了する。
【０１９７】
一方、セーフティドライバ３００ｂは、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれている場合（Ｓ３６４でＹＥＳ）、特定のモーションセーフティ機能３６０について、設定済の有効／無効設定と、受信したセーフティ指令の指定情報によって指定される有効／無効設定とのＡＮＤ演算を行い、当該ＡＮＤ演算結果が「０」であるか否かを判定する（Ｓ３６６）。たとえば、セーフティドライバ３００ｂは、既にＳＲＡパラメータ６０の指定情報に従ってモーションセーフティ機能３６０の有効／無効設定を行っている場合、ＳＲＡパラメータ６０によって設定された有効／無効設定と、受信したセーフティ指令の指定情報によって指定される有効／無効設定とのＡＮＤ演算結果が「０」であるか否かを判定する。
【０１９８】
セーフティドライバ３００ｂは、ＡＮＤ演算結果が「０」でない場合（Ｓ３６６でＮＯ）、演算対象となった特定のモーションセーフティ機能３６０に対応するセーフティステータス７０の指定情報のフラグを「１」にする（Ｓ３６８）。たとえば、図２０に示すように、ＳＲＡパラメータ６０によってＳＯＳのフラグが「１」に設定済の場合において、セーフティ指令の指定情報８０によってＳＯＳのフラグが「１」であった場合、ＡＮＤ演算結果は「１」になる。この場合、セーフティドライバ３００ｂは、セーフティステータス７０の指定情報におけるＳＯＳのフラグを「１」に設定する。
【０１９９】
一方、セーフティドライバ３００ｂは、ＡＮＤ演算結果が「０」である場合（Ｓ３６６でＹＥＳ）、演算対象となった特定のモーションセーフティ機能３６０に対応するセーフティステータス７０の指定情報のフラグを「０」にする（Ｓ３７０）。たとえば、図２０に示すように、ＳＲＡパラメータ６０によってＳＳ２のフラグが「１」に設定済の場合において、セーフティ指令の指定情報８０によってＳＳ２のフラグが「０」であった場合、ＡＮＤ演算結果は「０」になる。この場合、セーフティドライバ３００ｂは、セーフティステータス７０の指定情報におけるＳＳ２のフラグを「０」に設定する。
【０２００】
Ｓ３６８またはＳ３７０の後、セーフティドライバ３００ｂは、全てのモーションセーフティ機能３６０について演算が完了したか否かを判定する（Ｓ３７２）。セーフティドライバ３００ｂは、全てのモーションセーフティ機能３６０について演算が完了していない場合（Ｓ３７２でＮＯ）、再びＳ３６６の処理を繰り返す。一方、セーフティドライバ３００ｂは、全てのモーションセーフティ機能３６０について演算が完了した場合（Ｓ３７２でＹＥＳ）、本処理を終了する。
【０２０１】
このように、図１９および図２０に示す変形例においては、セーフティドライバ３００ｂは、ＳＲＡパラメータ６０に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのＡＮＤ演算結果に基づいて、モーションセーフティ機能３６０の有効／無効設定を行う。これにより、ユーザは、ＳＲＡパラメータ６０とセーフティ指令との両方を考慮して、実情に応じてモーションセーフティ機能３６０を有効化または無効化させることができる。
【０２０２】
（ｋ３：ＳＲＡパラメータ６０とセーフティ指令とのＯＲで有効／無効設定）
たとえば、図２１および図２２に示すように、ＳＲＡパラメータ６０に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのＯＲ演算結果に基づいて、モーションセーフティ機能３６０を実現するものであってもよい。図２１は、変形例に係るセーフティドライバ３００ｃが実行するセーフティ指令受信処理を説明するためのフローチャートである。なお、セーフティドライバ３００ｃは、フィールドネットワーク２における接続が確立して論理コネクション４が確立した後に、図２１に示すセーフティ指令受信処理を実行する。また、図２２は、変形例に係るモーションセーフティ機能３６０の有効または無効の遷移の一例を示す模式図である。
【０２０３】
図２１に示すように、セーフティドライバ３００ｃは、セーフティコントローラ２００からセーフティ指令を受信したか否かを判定する（Ｓ３８２）。セーフティドライバ３００ｃは、セーフティ指令を受信していない場合（Ｓ３８２でＮＯ）、本処理を終了する。
【０２０４】
一方、セーフティドライバ３００ｃは、セーフティ指令を受信した場合（Ｓ３８２でＹＥＳ）、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれているか否かを判定する（Ｓ３８４）。セーフティドライバ３００ｃは、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれていない場合（Ｓ３８４でＮＯ）、本処理を終了する。
【０２０５】
一方、セーフティドライバ３００ｃは、セーフティ指令にモーションセーフティ機能３６０の有効／無効設定が含まれている場合（Ｓ３８４でＹＥＳ）、特定のモーションセーフティ機能３６０について、設定済の有効／無効設定と、受信したセーフティ指令の指定情報によって指定される有効／無効設定とのＯＲ演算を行い、当該ＯＲ演算結果が「０」であるか否かを判定する（Ｓ３８６）。たとえば、セーフティドライバ３００ｃは、既にＳＲＡパラメータ６０の指定情報に従ってモーションセーフティ機能３６０の有効／無効設定を行っている場合、ＳＲＡパラメータ６０によって設定された有効／無効設定と、受信したセーフティ指令の指定情報によって指定される有効／無効設定とのＯＲ演算結果が「０」であるか否かを判定する。
【０２０６】
セーフティドライバ３００ｃは、ＯＲ演算結果が「０」でない場合（Ｓ３８６でＮＯ）、演算対象となった特定のモーションセーフティ機能３６０に対応するセーフティステータス７０の指定情報のフラグを「１」にする（Ｓ３８８）。たとえば、図２２に示すように、ＳＲＡパラメータ６０によってＳＳ２のフラグが「１」に設定済の場合において、セーフティ指令の指定情報８０によってＳＳ２のフラグが「０」であった場合、ＯＲ演算結果は「１」になる。この場合、セーフティドライバ３００ｃは、セーフティステータス７０の指定情報におけるＳＳ２のフラグを「１」に設定する。
【０２０７】
一方、セーフティドライバ３００ｃは、ＯＲ演算結果が「０」である場合（Ｓ３８６でＹＥＳ）、演算対象となった特定のモーションセーフティ機能３６０に対応するセーフティステータス７０の指定情報のフラグを「０」にする（Ｓ３９０）。たとえば、図２２に示すように、ＳＲＡパラメータ６０によってＳＴＯのフラグが「０」に設定済の場合において、セーフティ指令の指定情報８０によってＳＴＯのフラグが「０」であった場合、ＯＲ演算結果は「０」になる。この場合、セーフティドライバ３００ｃは、セーフティステータス７０の指定情報におけるＳＴＯのフラグを「０」に設定する。
【０２０８】
Ｓ３８８またはＳ３９０の後、セーフティドライバ３００ｃは、全てのモーションセーフティ機能３６０について演算が完了したか否かを判定する（Ｓ３９２）。セーフティドライバ３００ｃは、全てのモーションセーフティ機能３６０について演算が完了していない場合（Ｓ３９２でＮＯ）、再びＳ３８６の処理を繰り返す。一方、セーフティドライバ３００ｃは、全てのモーションセーフティ機能３６０について演算が完了した場合（Ｓ３９２でＹＥＳ）、本処理を終了する。
【０２０９】
このように、図２１および図２２に示す変形例においては、セーフティドライバ３００ｃは、ＳＲＡパラメータ６０に含まれる指定情報のフラグとセーフティ指令に含まれる指定情報のフラグとのＯＲ演算結果に基づいて、モーションセーフティ機能３６０の有効／無効設定を行う。これにより、ユーザは、ＳＲＡパラメータ６０とセーフティ指令との両方を考慮して、実情に応じてモーションセーフティ機能３６０を有効化または無効化させることができる。
【０２１０】
＜Ｌ．付記＞
以上のように、本実施の形態では以下のような開示を含む。
【０２１１】
［構成１］
制御システム（１）であって、
ネットワーク（２）に接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータ（４００）を駆動するドライブ装置（３００）と、
前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りを管理するコントローラ（１００）とを備え、
前記コントローラは、前記ネットワークにおける接続が確立したときに、前記ドライブ装置の設定に係るパラメータ（６０）を当該ネットワークを介して当該ドライブ装置に送信し、
前記パラメータには、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれ、
前記ドライブ装置は、前記少なくとも１つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化する、制御システム（１）。
【０２１２】
［構成２］
前記パラメータは、ＳＲＡパラメータ（Ｓａｆｅｔｙ−ｒｅｌａｔｅｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐａｒａｍｅｔｅｒ）である、構成１の制御システム。
【０２１３】
［構成３］
前記指定情報は、前記少なくとも１つ以上のセーフティ機能のそれぞれに対応するビットを並べたビット列によって、当該少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための情報を含む、構成１または構成２の制御システム。
【０２１４】
［構成４］
前記少なくとも１つ以上のセーフティ機能に係る設定を支援するサポート装置（５００）を備え、
前記サポート装置は、前記指定情報を設定するためのユーザインターフェース（６００）を提供する、構成１〜構成３のいずれかの制御システム。
【０２１５】
［構成５］
前記サポート装置は、前記少なくとも１つ以上のセーフティ機能のうちの前記特定のセーフティ機能の無効が指定されたことに応答して、当該特定のセーフティ機能に係るプログラム（２１０４）で参照される変数の使用を禁止する、構成４の制御システム。
【０２１６】
［構成６］
前記サポート装置は、前記変数の使用の禁止を通知する、構成５の制御システム。
【０２１７】
［構成７］
前記ドライブ装置に対して前記少なくとも１つ以上のセーフティ機能の動作に係るセーフティ指令を送信する第２のコントローラ（２００）を備え、
前記セーフティ指令には、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための第２の指定情報が含まれ、
前記ドライブ装置は、前記パラメータに含まれる前記指定情報と、前記セーフティ指令に含まれる前記第２の指定情報とに基づき、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効化または無効化を行う、構成１〜構成６のいずれかの制御システム。
【０２１８】
［構成８］
制御システム（１）における制御方法であって、
前記制御システムは、
ネットワーク（２）に接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータ（４００）を駆動するドライブ装置（３００）と、
前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りを管理するコントローラ（１００）とを備え、
前記制御方法は、
前記ネットワークにおける接続が確立したときに、前記コントローラによって、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータ（６０）を当該ネットワークを介して当該ドライブ装置に送信するステップと、
前記ドライブ装置によって、前記少なくとも１つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化するステップとを含む、制御方法。
【０２１９】
［構成９］
ネットワーク（２）に接続された、少なくとも１つ以上のセーフティ機能を有するとともにモータ（４００）を駆動するドライブ装置（３００）であって、
コントローラ（１００）によって、前記ネットワークに接続された前記ドライブ装置を含む装置間でデータの遣り取りが管理され、
前記ネットワークにおける接続が確立したときに、前記少なくとも１つ以上のセーフティ機能のそれぞれについて有効または無効を指定するための指定情報が含まれるパラメータ（６０）を当該ネットワークを介して前記コントローラから受信する受信部（３０２）と、
前記少なくとも１つ以上のセーフティ機能のうち、前記パラメータに含まれる前記指定情報によって無効と指定された特定のセーフティ機能を無効化する無効化部（３１４）とを備える、ドライブ装置（３００）。
【０２２０】
＜Ｍ．利点＞
本実施の形態に係る制御システム１によれば、ユーザは、特定のモーションセーフティ機能３６０について無効である旨をＳＲＡパラメータ６０によって指定することで、フィールドネットワーク２における接続が確立したときに、セーフティドライバ３００に対して特定のモーションセーフティ機能３６０を無効化させることができる。さらに、ユーザは、フィールドネットワーク２を介してセーフティドライバ３００にＳＲＡパラメータ６０を送信することで、特定のモーションセーフティ機能３６０を無効化することができるため、モーションセーフティ機能３６０を無効化するために別途準備したセーフティプログラム２１０４を実行するよりも、制御システム１の実行性能を低下させることがない。
【０２２１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２２２】
１  制御システム、２  フィールドネットワーク、４  論理コネクション、６０  ＳＲＡパラメータ、７０  セーフティステータス、８０  指定情報、１００  標準コントローラ、１０２，２０２，３１２，３１４，５０２  プロセッサ、１０４，２０４，３１６，５０４  メインメモリ、１０６  上位ネットワークコントローラ、１０８，２０８，３０２  フィールドネットワークコントローラ、１１０，２１０，３２０，５１０  ストレージ、１１２  メモリカードインターフェース、１１４  メモリカード、１１６  ローカルバスコントローラ、１１８，２１８，５１８  プロセッサバス、１２０，２２０，５２０  ＵＳＢコントローラ、１５０  標準制御、１７０，２７０，３７０，５３３  データ通信レイヤ、１７２，２７２  管理モジュール、１７４，２７４，３７４  プロセスデータ、２００  セーフティコントローラ、２１６  セーフティローカルバスコントローラ、２３０  セーフティＩＯユニット、２４０  セーフティデバイス、２５０  セーフティ機能、２７６，３７６  論理コネクションレイヤ、２７７  確立モジュール、２７８  セーフティ機能状態管理エンジン、３００，３００ａ，３００ｂ，３００ｃ  セーフティドライバ、３１０  制御部、３３０  ドライブ回路、３３２  フィードバック受信回路、３５０  サーボ制御、３５２  サーボ制御実行エンジン、３６０  モーションセーフティ機能、３６２  モーションセーフティ機能実行エンジン、３７８  モーションセーフティ機能状態管理エンジン、４００  サーボモータ、４０２  三相交流モータ、４０４  エンコーダ、５００  サポート装置、５０６  入力部、５０８  出力部、５１２  光学ドライブ、５１４  記録媒体、５３０  操作受付部、５３２  パラメータマネージャ、６００  通信フレーム、６０１，６０２，６０３  ユーザインターフェース、６１０  マルチビューエクスプローラ欄、６１２  切替スイッチ、６１４  設定スイッチ、６１６  パラメータアイコン、６１８  Ｉ／Ｏマップアイコン、６２０，６５０  画面、６２２  番号欄、６２４  フラグ欄、６３０  セーフティ通信フレーム、６５２  ポート欄、６５４  変数欄、６５６  変数コメント欄、６７０  アウトプットウィンドウ、７００  コントロールワード、７０２  ビット欄、７０４  名称欄、７０６  説明欄、１１０２，２１０２  システムプログラム、１１０４  標準制御プログラム、１１０６，２１０６，３２０６  設定情報、２１０４  セーフティプログラム、３２０２  サーボ制御プログラム、３２０４  モーションセーフティプログラム、５１０４  サポートプログラム、５１０６  プロジェクトデータ、５１０８  標準制御ソースプログラム、５１１０  標準コントローラ設定情報、５１１４  セーフティコントローラ設定情報、５１１６  セーフティドライバ設定情報、５１１７  セーフティソースプログラム。
【図１】
2020086831.tif 000003
【図２】
2020086831.tif 000004
【図３】
2020086831.tif 000005
【図４】
2020086831.tif 000006
【図５】
2020086831.tif 000007
【図６】
2020086831.tif 000008
【図７】
2020086831.tif 000009
【図８】
2020086831.tif 000010
【図９】
2020086831.tif 000011
【図１０】
2020086831.tif 000012
【図１１】
2020086831.tif 000013
【図１２】
2020086831.tif 000014
【図１３】
2020086831.tif 000015
【図１４】
2020086831.tif 000016
【図１５】
2020086831.tif 000017
【図１６】
2020086831.tif 000018
【図１７】
2020086831.tif 000019
【図１８】
2020086831.tif 000020
【図１９】
2020086831.tif 000021
【図２０】
2020086831.tif 000022
【図２１】
2020086831.tif 000023
【図２２】
2020086831.tif 000024