本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態に係る制御システム1の構成例を示す模式図である。本実施の形態に係る制御システム1は、例えば、IEC 61508などに規定されたセーフティ機能に加えて、上述の非特許文献1に規定されたドライブ装置に対するセーフティ機能を提供する。
図1を参照して、制御システム1は、主として、標準コントローラ100、ならびに、標準コントローラ100とフィールドネットワーク2を介して接続されるセーフティコントローラ200および1または複数のセーフティドライバ300を含む。セーフティドライバ300の各々は、セーフティ機能を有するドライブ装置の一例であり、電気的に接続されたサーボモータ400を駆動する。なお、サーボモータ400に限らず、任意の種類のアクチュエータ(例えば、三相交流モータ、直流モータ、単相交流モータ、多相交流モータ、リニアサーボなど)を採用できる。また、セーフティドライバ300の実体は、サーボドライバであってもよいし、汎用的なインバータ装置であってもよい。以下の説明においては、セーフティドライバ300をドライブ装置の一例として説明する。
標準コントローラ100は、第1のコントローラに相当し、予め作成された標準制御プログラムに従って、サーボモータ400を含む制御対象に対する標準制御を実行する。典型的には、標準コントローラ100は、1または複数のセンサ(図示していない)などからの入力信号に応じた制御演算をサイクリック実行することで、サーボモータ400などのアクチュエータに対する指令を周期的に算出する。
セーフティコントローラ200は、セーフティドライバ300に対してセーフティ機能の動作に係るセーフティ指令(第2の指令)を送信する。より具体的には、セーフティコントローラ200は、標準コントローラ100とは独立して、制御対象に対するセーフティ機能を実現するための監視および制御演算をサイクリック実行する。セーフティコントローラ200は、任意のセーフティデバイス240からの入力信号の受付、および/または、任意のセーフティデバイス240への指令の出力が可能になっている。
セーフティドライバ300は、標準コントローラ100からの指令(第1の指令)に従って、サーボモータ400に電力を供給することで、サーボモータ400を駆動する。セーフティドライバ300は、サーボモータ400からのフィードバック信号などに基づいて、サーボモータ400の回転位置、回転速度、回転加速度および発生するトルクなどを周期的に算出する。
さらに、セーフティドライバ300は、サーボモータ400の駆動に関するセーフティ機能を有している。より具体的には、セーフティドライバ300は、セーフティ機能に必要な状態情報をセーフティコントローラ200へ提供するとともに、要求されるセーフティ機能に応じて、サーボモータ400に供給する電力を調整または遮断する。
サーボモータ400は、セーフティドライバ300からの電力を受けて回転するモータを有するとともに、モータの回転軸に結合されたエンコーダからの検出信号をフィードバック信号としてセーフティドライバ300へ出力する。
本明細書において、「デバイス」は、フィールドネットワーク2などの任意のネットワークを介して、他の装置とデータ通信可能な装置の総称である。本実施の形態に係る制御システム1において、「デバイス」は、標準コントローラ100、セーフティコントローラ200およびセーフティドライバ300を包含する。
本明細書において、「標準制御」および「セーフティ制御」の用語を対比的に用いる。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。一方、「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。「セーフティ制御」は、IEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
本明細書においては、ドライブ装置に特有のセーフティ機能を「モーションセーフティ機能」と総称する。典型的には、「機能」は、上述の非特許文献1に規定されるドライブ装置に関連するセーフティ機能を包含する。例えば、制御軸の位置や速度を監視して安全を確保するための制御を含む。
本明細書において、「プロセスデータ」は、標準制御またはセーフティ制御の少なくともいずれかで用いられるデータの総称である。具体的には、「プロセスデータ」は、制御対象から取得される入力情報、制御対象へ出力される出力情報、各デバイスでの制御演算に使用される内部情報などを包含する。
入力情報は、光電センサなどにより検出されるON/OFF信号(デジタル入力)、温度センサなどにより検出される物理信号(アナログ入力)、ならびに、パルスエンコーダなどが発生するパルス信号(パルス入力)などを包含する。出力情報は、リレーなどを駆動するためのON/OFF(デジタル出力)、サーボモータの回転速度などを指示する速度指令(アナログ出力)、ならびに、ステッピングモータの移動量などを指示する変位指令(パルス出力)などを包含する。内部情報は、任意のプロセスデータを入力とする制御演算などによって決定される状態情報などを含む。
基本的には、「プロセスデータ」の値は、制御周期または通信周期毎に更新される。ここで、更新とは、最新の値を反映することを意味し、更新の前後において値が変化しない場合も含み得る。
図2は、本実施の形態に係る制御システム1が有する機能を示す模式図である。図2を参照して、セーフティドライバ300の各々は、セーフティ機能を有するとともに、標準コントローラ100からの指令(第1の指令)に従って、サーボモータ400を駆動する。また、セーフティドライバ300の各々には、セーフティコントローラ200からセーフティ機能の動作に係るセーフティ指令(第2の指令)が与えられる。このセーフティ指令は、セーフティコントローラ200とセーフティドライバ300との間にフィールドネットワーク2を利用して形成される論理コネクション4を介して送信される。
フィールドネットワーク2は、標準コントローラ100、1または複数のセーフティドライバ300、および、セーフティコントローラ200の間で、データを互いに共有するために用いられる。典型的には、フィールドネットワーク2を通信フレームがサイクリックに伝送されることで、プロセスデータ通信が実現される。このプロセスデータ通信を用いることで、データが共有される。
セーフティドライバ300の各々は、予め格納される設定情報3206に従って、他のデバイスに公開する情報の更新、および、他のデバイスから送信された情報の受信などのデータ共有処理を実行する。
サポート装置500は、典型的には、標準コントローラ100を介して、制御システム1に接続される。サポート装置500は、制御システム1に含まれる各デバイスに対する設定およびプログラムの開発などが可能である。
本実施の形態においては、サポート装置500は、設定生成モジュール10を有している。設定生成モジュール10は、典型的には、サポート装置500のプロセッサがサポートプログラムを実行することで実現されてもよい(詳細については、後述する)。
設定生成モジュール10は、ユーザ操作に従って、フィールドネットワーク2に接続されている各セーフティドライバ300に対して、フィールドネットワーク2を介して共有するべきデータの設定を各セーフティドライバ300に応じて生成する。このデータの設定は、設定情報3206に含まれることになる。設定生成モジュール10は、セーフティドライバ300を含むフィールドネットワーク2のネットワーク構成および各デバイスの設定を含む。
フィールドネットワーク2によるプロセスデータ通信は、標準コントローラ100が通信マスタとして機能することで実現される。通信マスタとして機能する標準コントローラ100は、設定反映モジュール20を有している。サポート装置500の設定生成モジュール10により生成された設定は、標準コントローラ100へ転送される。標準コントローラ100の設定反映モジュール20は、フィールドネットワーク2がネットワークの状態遷移中に、各デバイスに対して設定を反映する。すなわち、設定反映モジュール20は、フィールドネットワーク2に接続されている各セーフティドライバ300に対して対応する設定を反映する。
なお、設定反映モジュール20をサポート装置500に配置してもよい。この場合には、サポート装置500の設定反映モジュール20がセーフティドライバ300に対して設定を書き込むことになる。
このような構成を採用することで、フィールドネットワーク2に複数のセーフティドライバ300が接続されている場合であっても、フィールドネットワーク2を介したデータ共有の設定を一括して行うことができる。そのため、設定の作業効率を向上させることができる。
<B.制御システム1に含まれるデバイスの構成例>
次に制御システム1に含まれるデバイスの構成例について説明する。
(b1:標準コントローラ100)
図3は、本実施の形態に係る制御システム1を構成する標準コントローラ100のハードウェア構成例を示す模式図である。図3を参照して、標準コントローラ100は、プロセッサ102と、メインメモリ104と、ストレージ110と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、USB(Universal Serial Bus)コントローラ120と、メモリカードインターフェイス112と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、主として、標準制御に係る制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラム(一例として、システムプログラム1102および標準制御プログラム1104)を読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
メインメモリ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が格納される。
上位ネットワークコントローラ106は、上位ネットワークを介して、任意の報処理装置との間でデータを遣り取りする。
フィールドネットワークコントローラ108は、フィールドネットワーク2を介して、セーフティコントローラ200およびセーフティドライバ300を含む任意のデバイスとの間でデータを遣り取りする。図3に示す制御システム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に展開して実行することで、必要なセーフティ機能を提供するための制御演算、および、後述するような各種処理を実現する。
メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ210は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
ストレージ210には、基本的な機能を実現するためのシステムプログラム2102に加えて、要求されるセーフティ機能に応じた作成されたセーフティプログラム2104が格納される。さらに、ストレージ210には、後述するような変数などを設定するための設定情報2106が格納される。
フィールドネットワークコントローラ208は、フィールドネットワーク2を介して、標準コントローラ100およびセーフティドライバ300を含む任意のデバイスとの間でデータを遣り取りする。図3に示す制御システム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を含む任意のデバイスとの間でデータを遣り取りする。図5に示す制御システム1においては、セーフティドライバ300のフィールドネットワークコントローラ302は、フィールドネットワーク2の通信スレーブとして機能する。
制御部310は、セーフティドライバ300を動作させるために必要な演算処理を実行する。一例として、制御部310は、プロセッサ312,314と、メインメモリ316と、ストレージ320とを含む。
プロセッサ312は、サーボモータ400を駆動するための制御演算を主として実行する演算処理部に相当する。プロセッサ314は、サーボモータ400に係るセーフティ機能を提供するための制御演算を主として実行する演算処理部に相当する。プロセッサ312,314は、いずれもCPUなどで構成される。
メインメモリ316は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ320は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
ストレージ320には、サーボ制御350を実現するためのサーボ制御プログラム3202と、モーションセーフティ機能360を実現するためのモーションセーフティプログラム3204と、他のデバイスに公開される変数などを設定するための設定情報3206とが格納される。
図5には、2つのプロセッサ312,314がそれぞれ異なる目的の制御演算を実行することで信頼性を高める構成を例示するが、これに限らず、要求されるセーフティ機能を実現できればどのような構成を採用してもよい。例えば、単一のプロセッサに複数のコアが含まれるような場合には、プロセッサ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に展開して実行することで、後述するような各種処理を実現する。
メインメモリ504は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ510は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ストレージ510には、基本的な機能を実現するためのOS5102に加えて、サポート装置500としての機能を提供するためのサポートプログラム5104が格納される。すなわち、サポートプログラム5104は、制御システム1に接続されるコンピュータにより実行されることで、本実施の形態に係るサポート装置500を実現する。
さらに、ストレージ510には、サポートプログラム5104が実行されることで提供される開発環境においてユーザにより作成されるプロジェクトデータ5106が格納される。
本実施の形態において、サポート装置500は、制御システム1に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクトデータ5106は、このような統合的な開発環境によって生成されるデータを含む。典型的には、プロジェクトデータ5106は、標準制御ソースプログラム5108と、標準コントローラ設定情報5110と、セーフティソースプログラム5112と、セーフティコントローラ設定情報5114と、セーフティドライバ設定情報5116とを含む。
標準制御ソースプログラム5108は、オブジェクトコードに変換された上で、標準コントローラ100へ送信され、標準制御プログラム1104(図3参照)として格納される。同様に、標準コントローラ設定情報5110についても標準コントローラ100へ送信され、設定情報1106(図3参照)として格納される。
セーフティソースプログラム5112は、オブジェクトコードに変換された上で、セーフティコントローラ200へ送信され、セーフティプログラム2104(図3参照)として格納される。同様に、セーフティコントローラ設定情報5114についてもセーフティコントローラ200へ送信され、設定情報2106(図4参照)として格納される。
セーフティドライバ設定情報5116は、セーフティドライバ300へ送信され、設定情報3206(図5参照)として格納される。
入力部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が保持する状態値などに基づいて、予め定められた条件が成立すると、予め指定されているセーフティ機能を有効化する。
予め指定されているセーフティ機能を有効化する処理は、例えば、セーフティドライバ300に対するセーフティ指令の出力、あるいは、セーフティデバイス240に対してセーフティ指令の出力(例えば、特定の装置への電力供給に係るセーフティリレーを遮断する)などを含む。
セーフティドライバ300は、セーフティコントローラ200からのセーフティ指令に応答して、指定されたモーションセーフティ機能360を提供する。指定されたモーションセーフティ機能360の種類に応じて、サーボ制御350によるサーボモータ400の制御に介入して、サーボモータ400への電力供給を遮断する処理、あるいは、サーボ制御350によるサーボモータ400の制御の状態値が予め定められた制限範囲内に収まっているか否かを監視する処理などが実行される。
図8は、本実施の形態に係る制御システム1のセーフティドライバ300によるセーフティ機能に係る処理手順の一例を示すシーケンス図である。図8を参照して、標準コントローラ100の標準制御150により周期的に指令が算出されて、セーフティドライバ300(サーボ制御350)に出力される(シーケンスSQ2)。セーフティドライバ300のサーボ制御350は、標準制御150からの指令に従って、サーボモータ400を駆動する(シーケンスSQ4)。
あるタイミングにおいて、セーフティデバイス240(例えば、セーフティセンサ)からのセーフティイベントが発生すると(シーケンスSQ6)、セーフティコントローラ200は、セーフティドライバ300(モーションセーフティ機能360)にセーフティ指令を出力する(シーケンスSQ8)。このセーフティ指令に応答して、セーフティドライバ300のモーションセーフティ機能360は、指定されたセーフティ機能を有効化する(シーケンスSQ10)。
セーフティ機能の有効化に応答して、標準コントローラ100の標準制御150からは、当該有効化されたセーフティ機能に応じた指令が算出および出力されるようになる(シーケンスSQ12)。一方、セーフティドライバ300(モーションセーフティ機能360)は、サーボモータ400の動作状態が予め定められた制限範囲内に収まっているか否かを監視する。サーボモータ400の動作状態が予め定められた制限範囲内に収まっていないと判断されると、あるいは、予め定められた停止時間が到来すると、セーフティドライバ300(モーションセーフティ機能360)は、サーボモータ400への電力供給を遮断する(シーケンスSQ14)。
このように、セーフティドライバ300は、標準コントローラ100(標準制御150)からの指令に従ってサーボモータ400を駆動できるとともに、セーフティ機能を有効化するための指令に応じて、セーフティコントローラ200(セーフティ機能250)に対するモーションセーフティ機能を実現することができる。
<D.制御システム1のモーションセーフティ機能>
次に、制御システム1が提供するモーションセーフティ機能の一例について説明する。
図9は、本実施の形態に係る制御システム1が提供するモーションセーフティ機能の一例を示す図である。図9(A)には、STO(Safe Torque Off)に対応するサーボモータ400の挙動の一例を示し、図9(B)には、SS1(Safe Stop 1)に対応するサーボモータ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の挙動を規定するための設定が必要となる。
図10は、本実施の形態に係る制御システム1のセーフティドライバ300に格納されるモーションセーフティ機能を実現するためのパラメータセット390の一例を示す図である。図10を参照して、パラメータセット390は、セーフティドライバ300が提供するモーションセーフティ機能の各々に対応する1または複数の設定値(パラメータ)を含む。
例えば、モーションセーフティ機能に対応する設定値としては、速度範囲、加速度範囲、停止時間などが含まれ得る。
典型的には、ユーザがサポート装置500を操作してセーフティドライバ300におけるモーショセーフティ機能における挙動を決定し、その決定された挙動に対応するパラメータセット390がセーフティドライバ300へ転送される。セーフティドライバ300は、サポート装置500からのパラメータセット390を予め格納している。
<E.制御システム1のデータ通信>
次に、制御システム1におけるデータ通信の一例について説明する。
図11は、本実施の形態に係る制御システム1における通信フレームの伝送形態を説明するための図である。図11を参照して、制御システム1のフィールドネットワーク2においては、プロセスデータ通信が行われており、標準コントローラ100を通信マスタとして、通信フレーム600がサイクリック(例えば、数~10数msec)にデバイス間を一巡する。通信フレーム600が伝送する周期をプロセスデータ通信周期とも称する。
本実施の形態においては、このような通信フレーム600をサイクリックに伝送するフィールドネットワーク2のプロトコルの一例として、EtherCAT(登録商標)を採用する。
通信フレーム600には、デバイス毎にデータ領域が割り当てられている。各デバイスは、周期的に伝送される通信フレーム600を受信すると、当該受信した通信フレーム600内の自デバイスに割り当てられたデータ領域に予め設定されたデータの現在値を書き込む。そして、現在値の書き込み後の通信フレーム600を次段のデバイスに送出する。各デバイスにより書き込まれたデータの現在値は他のデバイスから参照可能になっている。
各デバイスが通信フレーム600に予め設定されたデータの現在値を書き込むことで、フィールドネットワーク2を一巡して通信マスタ(標準コントローラ100)に戻る通信フレーム600には、各デバイスにより収集された最新の値が含まれることになる。
本実施の形態においては、このようなプロセスデータ通信を利用して、セーフティコントローラ200とセーフティドライバ300の各々との間で論理コネクション4が形成される(図11参照)。この論理コネクション4は、セーフティ機能を実現するためのデータの遣り取りに用いられる。
上述したように、フィールドネットワーク2のプロトコルとしてEtherCATを採用する場合には、FSoE(FailSafe over EtherCAT)と称されるプロトコルを用いて論理コネクション4を形成できる。
より具体的には、論理コネクション4を形成するために遣り取りされるコマンドを格納するための専用のデータ領域が通信フレーム600に割り当てられる。当該専用のデータ領域を用いて、デバイス間でコマンドを遣り取りすることで、論理コネクション4を形成する。
図12は、本実施の形態に係る制御システム1におけるデータ伝送を説明するための図である。図12を参照して、通信フレーム600には、プロセスデータ通信に用いられるデータ領域610に加えて、論理コネクション4に用いられるデータ領域620が規定されている。
データ領域610は、標準コントローラ100に割り当てられたデータ領域611と、セーフティドライバ300に割り当てられたデータ領域612,613,614と、セーフティコントローラ200に割り当てられたデータ領域615とを含む。
データ領域612,613,614,615は、各デバイスから他のデバイスへデータを公開するためのINデータ領域6121,6131,6141,6151と、各デバイスでの指令を受け付けるためのOUTデータ領域6122,6132,6142,6152とを含む。
INデータ領域6121,6131,6141,6151は、各デバイスが管理するプロセスデータのうち、他のデバイスへ公開するデータが書き込まれるデータ領域である。各デバイスが通信フレーム600内の自デバイスに割り当てられたINデータ領域に必要なデータを書き込むことで、他のデバイスは当該書き込まれたデータを参照できるようになる。通常、標準コントローラ100は、通信周期毎に、各デバイスにより書き込まれたデータを参照して標準制御に係る制御演算を実行することで、各デバイスに対する指令を算出する。
OUTデータ領域6122,6132,6142,6152には、各デバイスに与えられる指令が書き込まれる。各デバイスは、通信フレーム600内の自デバイスに割り当てられたOUTデータ領域に格納されているデータを参照することで、制御対象への出力信号を生成し、あるいは、内部の制御状態を更新する。基本的には、各デバイスのOUTデータ領域には、標準コントローラ100によってデータが書き込まれる。
プロセスデータ通信に用いられるデータ領域610に対する、各デバイスのデータの書き込みおよび読出し動作は、各デバイスに割り当てられるデータ領域に応じて、予め設定されている。このようなデータの書き込みおよび読出しの設定操作は、サポート装置500上でユーザによって行われる。そして、サポート装置500から各デバイスに設定情報が送信される。
一方、論理コネクション4に用いられるデータ領域620は、セーフティドライバ300に割り当てられたデータ領域621,622,623と、セーフティコントローラ200に割り当てられたデータ領域624とを含む。各デバイスは、データ領域621,622,623,624に対して、論理コネクション4に係る通信フレーム(以下、「セーフティ通信フレーム630」とも称す。)の書き込みおよび読出しを行う。通信マスタである標準コントローラ100は、データ領域621,622,623,624の間で、格納されているセーフティ通信フレーム630を入れ替える。このような通信マスタによる折り返し処理によって、セーフティ通信フレーム630は、一種のピアツーピアの通信が可能となる。
図12には、一例として、セーフティコントローラ200から1番目のセーフティドライバ300へセーフティ通信フレーム630を送信する場合の処理を示す。図12に示すようなセーフティ通信フレーム630は、セーフティコントローラ200が特定のセーフティドライバ300に対して特定のモーションセーフティ機能を有効化する場合などに送信される。
まず、セーフティコントローラ200は、送信先のセーフティドライバ300へ送信すべきセーフティ通信フレーム630を生成して、通信フレーム600のデータ領域624に書き込む。その後、セーフティ通信フレーム630が書き込まれた通信フレーム600が通信マスタである標準コントローラ100へ到着すると、標準コントローラ100は、データ領域624に格納されているセーフティ通信フレーム630をデータ領域621に複製する。データ領域621にセーフティ通信フレーム630が複製された通信フレーム600が送信先のセーフティドライバ300に到着すると、送信先のセーフティドライバ300は、データ領域621を参照して、セーフティ通信フレーム630を受信する。
また、セーフティドライバ300からセーフティコントローラ200へのセーフティ通信フレーム630は、上述とは反対の通信経路で送信される。
このように、本実施の形態に係る制御システム1においては、通信フレーム600内のデータ領域620を用いて、論理コネクション4が形成される。
<F.標準制御およびセーフティ制御の実装例>
上述したように、本実施の形態に係る制御システム1においては、プロセスデータ通信および論理コネクション4によるセーフティ通信が可能になっている。次に、それぞれの通信を利用した標準制御およびセーフティ制御の実装例について説明する。
図13は、本実施の形態に係る制御システム1における標準制御およびセーフティ制御の実装例を示す模式図である。説明の便宜上、図13には、標準コントローラ100およびセーフティコントローラ200に加えて、1つのセーフティドライバ300からなる制御システム1の例を示す。
図13を参照して、標準コントローラ100は、主たる機能構成として、プロセスデータ通信レイヤ170およびIO管理モジュール172を有している。セーフティコントローラ200は、主たる機能構成として、プロセスデータ通信レイヤ270と、IO管理モジュール272と、論理コネクションレイヤ276と、セーフティ機能状態管理エンジン278とを含む。セーフティドライバ300は、主たる機能構成として、プロセスデータ通信レイヤ370と、論理コネクションレイヤ376と、モーションセーフティ機能状態管理エンジン378と、サーボ制御実行エンジン352と、モーションセーフティ機能実行エンジン362とを含む。
プロセスデータ通信レイヤ170、プロセスデータ通信レイヤ270およびプロセスデータ通信レイヤ370は、フィールドネットワーク2上の通信フレーム600の転送を担当する。プロセスデータ通信レイヤ170、プロセスデータ通信レイヤ270およびプロセスデータ通信レイヤ370の各々は、到着した通信フレーム600に含まれるデータに基づいて、各デバイスのプロセスデータ174,274,374を更新する。また、プロセスデータ通信レイヤ170、プロセスデータ通信レイヤ270およびプロセスデータ通信レイヤ370の各々は、予め指定されたプロセスデータを予め割り当てられているデータ領域に書き込んだ上で、通信フレーム600を再生成して次段のデバイスに送出する。プロセスデータ通信によりプロセスデータの少なくとも一部は共有されることになる。
セーフティコントローラ200の論理コネクションレイヤ276およびセーフティドライバ300の論理コネクションレイヤ376は、セーフティ通信フレーム630の遣り取りを担当する。すなわち、論理コネクションレイヤ276および論理コネクションレイヤ376は、論理コネクションを形成するためのプロトコル(本実施の形態においては、FSoE)に従って、通信フレーム600に含まれるセーフティ通信フレーム630を用いて、コマンドおよびデータを遣り取りする。
標準コントローラ100において、IO管理モジュール172は、制御対象との間で信号を遣り取りすることで、プロセスデータ174を更新する。標準コントローラ100において実行される標準制御プログラム1104は、プロセスデータ174を参照して制御演算を実行するとともに、制御演算の実行結果でプロセスデータ174を更新する。
セーフティコントローラ200において、IO管理モジュール272は、セーフティデバイス240との間で信号を遣り取りすることで、プロセスデータ274を更新する。図13においては、プロセスデータ274とまとめて表現しているが、プロセスデータ通信により更新されるプロセスデータ(標準制御用)と、セーフティデバイス240との遣り取りにより更新されるプロセスデータ(セーフティ制御用)とを異なるレベルで管理するようにしてもよい。
セーフティコントローラ200において実行されるセーフティプログラム2104は、プロセスデータ274およびセーフティ機能状態管理エンジン278を参照して制御演算を実行するとともに、制御演算の実行結果に基づいて、プロセスデータ274を更新し、あるいは、セーフティ機能状態管理エンジン278に対して内部的な指令を出力する。
セーフティ機能状態管理エンジン278は、セーフティプログラム2104による制御演算の実行結果に応じて、特定のセーフティドライバ300に対して特定のモーションセーフティ機能を有効化するための指令を生成する。論理コネクションレイヤ276は、セーフティ機能状態管理エンジン278からの指令に応答して、対象のセーフティドライバ300の論理コネクションレイヤ376との間で、セーフティ通信フレーム630を用いて必要なコマンドおよび情報を遣り取りする。
セーフティドライバ300において、サーボ制御実行エンジン352は、プロセスデータ374およびフィードバック受信回路332を介して取得されるフィードバック信号の情報を参照してサーボ制御に係る制御演算を実行する。サーボ制御実行エンジン352は、制御演算の実行結果に基づいて、プロセスデータ374を更新するとともに、ドライブ回路330に内部的な指令を出力する。ドライブ回路330は、サーボ制御実行エンジン352からの指令に従って、サーボモータ400を駆動する。
モーションセーフティ機能状態管理エンジン378は、セーフティコントローラ200からのセーフティ指令に従ってモーションセーフティ機能の状態を管理する状態管理部に相当する。モーションセーフティ機能状態管理エンジン378は、セーフティコントローラ200からの指令に応答して、モーションセーフティ機能実行エンジン362に対して内部的な指令を出力する。
モーションセーフティ機能実行エンジン362は、指定されたモーションセーフティ機能を実行する。
論理コネクションレイヤ376は、モーションセーフティ機能状態管理エンジン378からの指令に応答して、セーフティコントローラ200の論理コネクションレイヤ276との間で、セーフティ通信フレーム630を用いて必要なコマンドおよび情報を遣り取りする。
<G.セーフティ状態情報の公開>
上述したように、本実施の形態に係る制御システム1においては、セーフティコントローラ200とセーフティドライバ300との間の論理コネクション4を介して、モーションセーフティ機能の有効化が指示される。標準コントローラ100は、セーフティコントローラ200とセーフティドライバ300との間の遣り取りを直接参照できない。そのため、通信フレーム600のプロセスデータ通信に用いられるデータ領域610を用いて関係するデータが公開されない限り、標準コントローラ100は、モーションセーフティ機能の有効化の有無、および、モーションセーフティ機能が有効化されたタイミングなどを検出できない。以下では、標準コントローラ100がモーションセーフティ機能の情報を参照する方法について説明する。
具体的には、セーフティドライバ300からのプロセスデータ通信によるデータ公開を用いる方法について説明する。
図14は、本実施の形態に係る制御システム1の標準コントローラ100がモーションセーフティ機能の情報を参照する方法を説明するための図である。図14に示す構成においては、セーフティドライバ300がデータミラーエンジン380をさらに含む。
データミラーエンジン380は、モーションセーフティ機能状態管理エンジン378が保持する情報のうち予め設定された情報を、フィールドネットワーク2を介して公開するデータ公開部に相当する。具体的には、データミラーエンジン380は、モーションセーフティ機能状態管理エンジン378が管理しているモーションセーフティ機能の情報のうち予め選択された情報を、データ公開するためにプロセスデータ374に複製する((1)複製)。
一方、標準コントローラ100においては、セーフティドライバ300により公開されるモーションセーフティ機能の情報を取得するための命令および/または設定が標準制御プログラム1104などに追加される((2)情報取得)。そして、取得されたモーションセーフティ機能の情報を用いたセーフティドライバ300を制御するためのプログラムが標準制御プログラム1104に追加される((3)指令出力プログラム追加)。このような命令および/または設定の追加により、標準コントローラ100において、モーションセーフティ機能の情報を参照して、セーフティドライバ300を制御するための指令を出力できる。
より具体的な設定手順例としては、セーフティドライバ300のモーションセーフティ機能状態管理エンジン378は、モーションセーフティ機能毎に情報を管理しており、これらの情報のうち標準コントローラ100で参照すべき情報を、他のデバイスに公開するための変数に割り付けるための設定がなされる。本実施の形態においては、セーフティドライバ300により公開される情報はオブジェクト形式の変数に割り付けられ、以下では、このようなオブジェクト形式の変数を「モーションセーフティ制御用オブジェクト」とも称す。公開される情報の各々(情報の種類および値からなる組)は、モーションセーフティ制御用オブジェクトのプロパティとして割り付けられることになる。モーションセーフティ制御用オブジェクトは、フィールドネットワーク2を介してアクセス可能な通信オブジェクトに相当する。
また、標準コントローラ100においては、セーフティドライバ300により公開される、モーションセーフティ制御用オブジェクトに含まれる情報(プロパティ)のうち、必要な情報を用いて、セーフティドライバ300を制御するためのプログラムが作成される。
以上のように、セーフティドライバ300によるデータ公開により実装する場合には、セーフティドライバ300に対して、公開すべき情報を選択さえすれば、比較的容易に、標準コントローラ100で実行される標準制御プログラム1104を作成できる。
次に、セーフティドライバ300により公開されるモーションセーフティ制御用オブジェクトの一例について説明する。
図15は、本実施の形態に係る制御システム1のセーフティドライバ300が公開するモーションセーフティ制御用オブジェクトの設定例を説明するための図である。
図15に示す例において、モーションセーフティ制御用オブジェクト382は、モーションセーフティ毎の指令(有効化/無効化)の発行状態を示すコントロールオブジェクト3821と、モーションセーフティ毎の状態値を示すステータスオブジェクト3822とを含む。なお、図15に示すような2つのオブジェクトに限らず、単一のオブジェクトのみを用意してもよいし、より多くのオブジェクトを用意してもよい。
セーフティドライバ300のモーションセーフティ機能状態管理エンジン378は、モーションセーフティ機能毎に制御用オブジェクト3781,3782,3783,3784,3785,・・・を有している。制御用オブジェクト3781,3782,3783,3784,3785,・・・は、モーションセーフティ機能状態管理エンジン378が論理的に保持するデータ構造体である。
より具体的には、制御用オブジェクト3781,3782,3783,3784,3785,・・・は、各モーションセーフティの指令(有効化/無効化)の発行状態を示す情報3781A,3782A,3783A,3784A,3785A,・・・と、各モーションセーフティの制御状態を示す情報3781B,3782B,3783B,3784B,3785B,・・・とを含む。
モーションセーフティ制御用オブジェクト382には、制御用オブジェクト3781,3782,3783,3784,3785,・・・に含まれる情報のうち、予め選択された情報が複製される。このように、モーションセーフティ制御用オブジェクト382には、モーションセーフティ機能状態管理エンジン378が管理する情報が複製されるので、モーションセーフティ制御用オブジェクト382を「ミラーオブジェクト」と称することもできる。
ミラーオブジェクトは、モーションセーフティ制御用オブジェクト382に含まれる情報をそのまま反映したものであるとともに、標準コントローラ100を含むフィールドネットワーク2に接続された各デバイスに対して公開される変数群でもある。
モーションセーフティ制御用オブジェクト382に割り付けられる情報は、ミラーオブジェクト設定384(設定情報3206(図5参照)の一部に含まれる。)により規定される。ミラーオブジェクト設定384は、モーションセーフティ機能状態管理エンジン378が管理する情報のうち、モーションセーフティ制御用オブジェクト382に含まれる情報(プロパティ)として複製すべき情報を規定するものである。
このように、サポート装置500は、モーションセーフティ機能状態管理エンジン378が保持する情報のうち予め設定された情報を、フィールドネットワーク2を介して標準コントローラ100へ公開するように、ミラーオブジェクト設定384(設定情報3206(図5参照)の一部に含まれる。)を生成する。すなわち、セーフティドライバ300から標準コントローラ100へ公開されるデータは、セーフティコントローラ200からのセーフティ指令が反映されることになる。
図14に示す構成例において、データミラーエンジン380は、サーボ制御350を実行する演算処理部であるプロセッサ312によって実現され、モーションセーフティ機能状態管理エンジン378は、モーションセーフティ機能360を提供する演算処理部であるプロセッサ314によって実現される。
このような構成を採用した場合には、プロセッサ312とプロセッサ314との間でメッセージ通信などによってイベントを通知するようにしてもよい。具体的には、モーションセーフティ機能状態管理エンジン378(プロセッサ314)は、論理コネクション4を介して何らかの指令を受けると、対応する制御用オブジェクトの情報を更新するとともに、データミラーエンジン380(プロセッサ312)に情報の更新を通知する。この更新の通知を受けて、データミラーエンジン380(プロセッサ312)は、モーションセーフティ制御用オブジェクト382の内容を更新する。
<H.サポート装置500における公開データの参照設定>
サポート装置500において、セーフティドライバ設定情報5116(図6参照)の一部に含まれるコントロールオブジェクト・ステータスオブジェクト設定テーブル560が規定される。コントロールオブジェクト・ステータスオブジェクト設定テーブル560に規定されるオブジェクトに必要なセーフティ機能のオブジェクトが割り付けられた上で、セーフティコントローラ200のユーザプログラムでセーフティ機能のON/OFFが制御される。
本実施の形態においては、サポート装置500が保持するコントロールオブジェクト・ステータスオブジェクト設定テーブル560、および、セーフティドライバ300が保持するミラーオブジェクト設定384は、いずれも、データ公開される情報を特定するための公開設定に相当する。以下、ミラーオブジェクト設定384に関するサポート装置500における設定処理について説明する。
図16は、本実施の形態に係る制御システム1のサポート装置500での設定処理を説明するための図である。図16を参照して、サポート装置500は、制御システム1に含まれる標準コントローラ100およびセーフティドライバ300に係る設定を受け付ける。図16には、設定の一例として、標準コントローラ変数設定テーブル550(図6の標準コントローラ設定情報5110に含まれる)およびコントロールオブジェクト・ステータスオブジェクト設定テーブル560(図6のセーフティドライバ設定情報5116に含まれる)を示す。
コントロールオブジェクト・ステータスオブジェクト設定テーブル560は、対象のセーフティドライバ300が公開するモーションセーフティ制御用オブジェクト382に含まれる情報を規定するテーブルである。ユーザは、サポート装置500上で、コントロールオブジェクト・ステータスオブジェクト設定テーブル560を編集して、対象となるセーフティドライバ300が公開するモーションセーフティ制御用オブジェクト382に含めるべき情報を設定する((1)設定)。
より具体的には、コントロールオブジェクト・ステータスオブジェクト設定テーブル560は、モーションセーフティ制御用オブジェクト382に含まれるコントロールオブジェクト3821およびステータスオブジェクト3822にそれぞれ対応する設定欄562および564を含む。ユーザは、設定欄562および564の各エントリに、対象とする情報の制御オブジェクト566を設定する。
各エントリに設定される情報は、モーションセーフティ機能状態管理エンジン378が保持するモーションセーフティ機能毎の制御用オブジェクト3781,3782,3783,3784,3785,・・・(図16参照)から任意に選択される。
このように、サポート装置500は、データミラーエンジン380により公開される情報の指定を受け付けるとともに、当該指定された情報を特定する公開設定(コントロールオブジェクト・ステータスオブジェクト設定テーブル560)をセーフティドライバ300へ転送する。
標準コントローラ変数設定テーブル550は、標準コントローラ100で参照可能な変数を規定するテーブルである。標準コントローラ変数設定テーブル550は、セーフティドライバ300により公開されるモーションセーフティ制御用オブジェクト382を参照するための設定を含む。
より具体的には、標準コントローラ変数設定テーブル550は、モーションセーフティ制御用オブジェクト382に含まれるコントロールオブジェクト3821およびステータスオブジェクト3822にそれぞれ対応する設定欄552および554を含む。
本実施の形態に係る制御システム1の標準コントローラ100においては、モーションセーフティ制御用オブジェクト382をそのまま参照することもできるが、標準制御プログラム1104の作成を容易化するために、モーションセーフティ制御用オブジェクト382に含まれる各属性に対して変数を設定することも可能である。
図16には、コントロールオブジェクト・ステータスオブジェクト設定テーブル560における設定に基づいて、標準コントローラ変数設定テーブル550において、モーションセーフティ制御用オブジェクト382に含まれる各属性に対して変数が自動的に設定される例を示す。
図16に示すように、ユーザがコントロールオブジェクト・ステータスオブジェクト設定テーブル560を設定した後、標準コントローラ変数設定テーブル550への反映操作を行うと、各属性に対応する変数556は、設定欄562および564の内容に応じて自動的に設定されてもよい。あるいは、ユーザが手動で設定してもよい。このように、サポート装置500は、セーフティドライバ300に対する設定である、コントロールオブジェクト・ステータスオブジェクト設定テーブル560(公開設定)を参照して、セーフティドライバ300のモーションセーフティ機能状態管理エンジン378により管理される情報のうち公開対象の情報を特定するとともに、データミラーエンジン380により公開される情報を参照するための変数556(参照情報に相当する。)に当該特定した情報の意味を関連付ける。
標準制御プログラム1104においては、標準コントローラ変数設定テーブル550において設定された変数556を参照することができる。
図17は、本実施の形態に係る制御システム1のサポート装置500が提供するユーザインターフェイス画面の一例を示す模式図である。図17(A)を参照して、モーションセーフティ制御用オブジェクト382に係る設定画面570は、対象情報表示欄572と、ミラーオブジェクト表示欄574と、属性設定欄576と、データ型設定欄578とを含む。
ミラーオブジェクト表示欄574は、モーションセーフティ制御用オブジェクト382に含まれる各要素(ビット)を表示する。対象情報表示欄572には、モーションセーフティ制御用オブジェクト382に割り当てる情報が設定される。属性設定欄576には、割り当てられる情報の属性(読取専用/編集可能の別)が設定される。データ型設定欄578には、割り当てられる情報のデータ型(BOOL型や実数型など)が設定される。
ユーザは、図17(A)に示す設定画面570に対する操作により、モーションセーフティ制御用オブジェクト382に含めるべき情報を設定する。その後、ユーザが反映操作を行うことで、図17(B)に示すように、標準コントローラ100で参照可能な変数名が自動的に設定される。
図17(B)に示すように、設定画面570は、変数名設定欄580をさらに有している。変数名設定欄580には、標準コントローラ100で各情報を参照するための変数名が設定される。なお、変数名設定欄580に設定される変数名は、対象情報表示欄572に設定される変数名と同一であってもよい。
上述したように、図16および図17には、変数名を参照情報として用いて任意のプロセス値を参照する構成例を示す。すなわち、サポート装置500において、セーフティドライバ300のデータミラーエンジン380により公開される情報を変数として参照可能になっている。このような変数に対して各情報の意味を反映する場合には、変数の名前(変数名)として反映してもよいし、変数を参照する際に表示される、変数名とは別に付与されるコメントやラベルなどの付加情報として反映してもよい。
すなわち、サポート装置500は、変数名として特定した情報の意味を反映するようにしてもよいし、変数に付与される付加情報として特定した情報の意味を反映するようにしてもよい。
但し、参照情報としては、変数名でなくてもよい。例えば、各プロセス値が格納される記憶領域の物理アドレスあるいは論理アドレスを指定するようにしてもよい。さらにあるいは、物理アドレスあるいは論理アドレスを示す識別情報を参照情報として用いてもよい。このような場合においても、参照情報を特定する識別情報として特定した情報の意味を反映するようにしてもよいし、参照情報に付与される付加情報として特定した情報の意味を反映するようにしてもよい。
また、図17(B)に示すように、他のセーフティドライバ300が公開するモーションセーフティ制御用オブジェクト382に含まれる情報と競合しないように、さらなる情報を付加してもよい。図17(B)に示す設定画面570においては、公開元のセーフティドライバ300を特定する情報(図17に示す例では、「E003」)を付加した変数名が採用されている。
以上のように、サポート装置500は、セーフティドライバ300のデータミラーエンジン380により公開される情報を参照するための参照情報(典型的には、変数)に、当該データミラーエンジン380を含んでいるセーフティドライバ300を特定する情報を反映するようにしてもよい。
また、ユーザは、サポート装置500上で、標準コントローラ100に関する設定において、公開されたモーションセーフティ制御用オブジェクトの各ビットに対して、対応する名称を含む変数名を割り当てる。このような変数名を採用することで、標準制御プログラム1104を作成する際に、モーションセーフティ制御用オブジェクト382に含まれる情報の参照を容易化でき、プログラム作成を効率化できる。すなわち、モーションセーフティ制御用オブジェクトの各ビットの意味を明示または暗示する変数名を用いて、標準制御プログラムを作成できる。
図18は、本実施の形態に係る制御システム1におけるモーションセーフティ制御用オブジェクト382を参照した標準制御プログラム1104の一例を示す図である。図18(A)および図18(B)には、いずれも、モーションセーフティ機能としてSOS(Safe Operating Stop)が有効化された場合の、セーフティドライバ300およびサーボモータ400を制御するための命令(コード1105)を記述した部分を示す。
図18(A)には、モーションセーフティ制御用オブジェクト382をそのまま参照する場合の標準制御プログラム1104の一例を示し、図18(B)には、モーションセーフティ制御用オブジェクト382に対応付けられた変数を参照する場合の標準制御プログラム1104の一例を示す。
図18(A)に示す標準制御プログラム1104においては、モーションセーフティ制御用オブジェクト382の5ビット目を参照するための「E003_Mirror_Safety_statusword[3]」との参照命令582を用いたIF文が記述されている。
これに対して、図18(B)に示す標準制御プログラム1104においては、モーションセーフティ制御用オブジェクト382の5ビット目の情報に割り当てられた「E003_SOS_command1_active」との変数584を用いたIF文が記述されている。このように、図18(B)に示すような変数584を用いることで、当該変数目がいずれの情報を参照しているのかを一見して把握することができる。
このように、サポート装置500は、標準コントローラ100で実行される標準制御プログラム1104を開発する環境を提供する。この標準制御プログラム1104を開発する環境において、上述したような特定した情報の意味が関連付けられた参照情報(典型的には、各変数)を用いて、標準制御プログラム1104を作成可能になっている。
<I.サポート装置500におけるプロセスデータ通信の設定>
次に、セーフティドライバ300に対するプロセスデータ通信をサポート装置500で設定する場合の処理について説明する。本実施の形態においては、サポート装置500でセーフティドライバ300毎に公開すべきモーションセーフティ制御用オブジェクトの情報を選択および設定することになる。また、セーフティドライバ300毎にプロセスデータ通信により伝送されるデータのうち使用するものを設定することになる。
現実の運用を想定すると、制御システム1は複数のセーフティドライバ300を含むことが多く、このような場合、セーフティドライバ300毎に設定を行うことは操作が煩雑になる。
また、例えば、セーフティドライバ300に係るプログラムをデバッグする場合、セーフティドライバ300のモーションセーフティ機能を無効化した状態で、標準制御に係る部分だけをデバッグしたい場合がある。このとき、セーフティドライバ300からのモーションセーフティ制御用オブジェクトの情報(ミラーオブジェクト)の公開を無効化しておくことが好ましい。このような場合において、セーフティドライバ300毎に公開設定を削除もしくは無効化することは操作が煩雑になる。
図19は、本実施の形態に係る制御システム1を構成するサポート装置500における一括設定の処理を説明するための図である。図19を参照して、複数のセーフティドライバ300の各々に対して、コントロールオブジェクト・ステータスオブジェクト設定テーブル560が用意されているとする。
本実施の形態では、サポート装置500において、ユーザが所定の操作を行うことで、コントロールオブジェクト・ステータスオブジェクト設定テーブル560の各々に対して、予め設定された内容が反映されている状態と、何らの設定もなされていない状態とを一括して切り替えることができる。すなわち、制御システム1が複数のセーフティドライバ300を有している場合において、サポート装置500は、ユーザ操作に応答して、すべてのセーフティドライバ300のデータミラーエンジン380(データ公開部)に対して、フィールドネットワーク2を介した公開を一括して有効化または無効化することができる。
また、サポート装置500においては、複数のコントロールオブジェクト・ステータスオブジェクト設定テーブル560に対して、同一の設定を反映することができるようにしてもよい。
具体的には、サポート装置500は、共通設定テンプレート590を有している。共通設定テンプレート590は、セーフティ機能を利用する場合に、プロセスデータ通信を行うオブジェクト(より具体的には、ミラーオブジェクト、コントロールオブジェクト、およびステータスオブジェクト)の設定を含む。サポート装置500において、ユーザが所定の操作を行うことで、コントロールオブジェクト・ステータスオブジェクト設定テーブル560の各々に対して、共通設定テンプレート590の内容が反映される。
このような一括無効化の機能、一括有効化の機能、および、一括設定の機能の一部または全部をサポート装置500に実装することで、上述したようなデバッグ時の操作を効率化できる。以下、より具体的な処理例について説明する。
なお、説明の便宜上、主としてデータの公開設定に着目して説明しているが、本実施の形態において提供される一括無効化の機能、一括有効化の機能、および、一括設定の機能は、セーフティドライバ300のプロセスデータ通信の設定全般に関する。すなわち、設定対象は、セーフティドライバ300から他のデバイスに向けたデータの公開設定、および、他のデバイスから公開されたデータのうちセーフティドライバ300が利用するデータの参照設定の両方を含み得る。さらに、設定対象のデータは、モーションセーフティ機能に関するものに限らず、セーフティドライバ300が提供する機能に関するアプリケーションに関するものを含み得る。
図20は、本実施の形態に係るサポート装置500におけるプロセスデータ通信の設定操作の一例を説明するための図である。図20には、複数のセーフティドライバ300に対して、セーフティ機能に必要なプロセスデータ通信の設定を行う場合の操作例を示す。
図20(A)に示すような、セーフティドライバ300のリストを示すリスト画面530において、対象となるセーフティドライバ300を選択532する。そして、図20(B)に示すような設定画面540において、ユーザは、セーフティドライバ300が有している状態情報のうち公開するものを選択する。
図20(B)に示す設定画面540は、標準コントローラ100またはセーフティコントローラ200からの指令(出力)として受け付けるデータを選択するためのラジオボタン542,544と、標準コントローラ100またはセーフティコントローラ200へ公開するデータを選択するためのラジオボタン546,548とを含む。
ラジオボタン542,544,546,548の各々は、予め設定されたパラメータセットに対応付けられている。いずれかのラジオボタンが選択されると、当該選択中のラジオボタンに対応付けられているパラメータセットの内容を示す設定表示541が設定画面540内に提供される。
なお、いずれのパラメータセットも対応付けられていないラジオボタンも用意されており、このラジオボタンが選択されることで、プロセスデータ通信が無効化される。
ユーザは、リスト画面530において、セーフティドライバ300の各々を選択した上で、対象のパラメータセットを順次設定することになる。
より具体的には、ユーザは、フィールドネットワーク2の構成情報を示すリスト画面530において、対象のセーフティドライバ300を選択し、設定画面540において、モーションセーフティ機能のプロセスデータ通信を有効化/無効化を選択する。有効化の場合には、ユーザは、いずれのパラメータセットであるかを選択する。ユーザは、以上のような選択および設定操作をセーフティドライバ300の台数分だけ繰り返す。
このように、図20に示す設定画面において、ユーザは、セーフティドライバ300のプロセスデータ通信の設定画面上で、セーフティドライバ300毎に論理コネクション4を介して遣り取りされる情報をプロセスデータ通信の対象として追加または削除する。
なお、セーフティドライバ300のデバイスプロファイル(ESI)がモジュールデバイスプロファイル(MDP:Module Device Profile)に対応している場合には、設定画面540において、セーフティ機能モジュールの有効化/無効化を選択するようにしてもよい。
この場合には、ユーザは、フィールドネットワーク2の構成情報を示すリスト画面530において、対象のセーフティドライバ300を選択し、設定画面540において、セーフティドライバ300のモジュール構成を編集する。ユーザは、以上のような選択および設定操作をセーフティドライバ300の台数分だけ繰り返す。
図20に示すような設定手順において、セーフティドライバ300の機種毎に設定すべき項目あるいはパラメータセットが異なっており、ユーザは、機種に応じた設定を行わなければならない。また、フィールドネットワーク2に接続されているセーフティドライバ300の台数が多い場合には、設定に手間がかかる。このような場合には、以下のような設定機能を提供するようにしてもよい。
図21は、本実施の形態に係るサポート装置500におけるプロセスデータ通信の設定操作の別の一例を説明するための図である。図21には、複数のセーフティドライバ300に対して、セーフティ機能に必要なプロセスデータ通信の設定を行う場合の操作例を示す。
図21(A)に示すような、セーフティドライバ300のリストを示すリスト画面530において、ユーザがメニュー画面の一項目として含まれる一括設定機能534を選択すると、フィールドネットワーク2に接続されているセーフティドライバ300の各々に対して、必要なプロセスデータ通信の一括削除(一括無効化)または一括設定(一括有効化)が行われる。
より具体的には、一括設定機能534の選択に応答して表示される設定ウィンドウ536は、一括設定(一括有効化)を示す「Add」および一括削除(一括無効化)を示す「Remove」を含む。ユーザが「Add」を選択することで一括設定が実行され、「Remove」を選択することで一括削除が実行される。
一括設定においては、図21(B)の設定画面538に示されるように、セーフティドライバ300の機種が特定されるとともに、各機種に応じた設定がなされる。そして、各セーフティドライバ300に対して生成された設定の内容をユーザが提示される。この各機種に応じた設定は、共通設定テンプレート590(図19)を参照することで実現される。
このように、ユーザは、フィールドネットワーク2の構成情報を示すリスト画面530において、一括設定機能534を選択する。そして、設定ウィンドウ536上で、必要なプロセスデータ通信の一括設定(一括有効化)または一括削除(一括無効化)を選択する。最終的に、ユーザは、設定画面538で実行結果を確認する。
以上のような処理により、ユーザから見れば、セーフティドライバ300のプロセスデータ通信の設定を一括で設定または削除できる。
続いて、図21に示すような一括設定を実現するための共通設定テンプレート590の詳細について説明する。
図22は、本実施の形態に係るサポート装置500が保持する共通設定テンプレート590のデータ構造の一例を示す模式図である。図22を参照して、共通設定テンプレート590は、機種情報592に関連付けられた設定内容594を含む。機種情報592は、予め知られているセーフティドライバ300の機種のリストを含む。設定内容594には、各機種に応じた設定が割り当てられる。
このような共通設定テンプレート590を参照することで、セーフティドライバ300の機種毎に適切な設定が行われることになる。
なお、共通設定テンプレート590は、サポート装置500が保持していてもよいし、サポート装置500以外の任意のサーバ装置が保持していてもよい。さらに、フィールドネットワーク2に接続されるセーフティドライバ300に格納されている情報などを収集して、サポート装置500または他の情報処理装置が動的に生成するようにしてもよい。
次に、プロセスデータ通信に関する一括設定を実現するための処理手順について説明する。
図23は、本実施の形態に係る制御システム1を構成するサポート装置500における一括設定を実現するための処理手順の一例を示すフローチャートである。図23に示す各ステップは、典型的には、サポート装置500のプロセッサ502がサポートプログラム5104を実行することで実現される。
図23を参照して、サポート装置500は、ユーザ操作に応答して、フィールドネットワーク2に接続されているセーフティドライバ300を探索して、対象となるセーフティドライバ300の一覧を取得する(ステップS100)。すなわち、サポート装置500は、フィールドネットワーク2に接続されているセーフティドライバ300を取得する取得機能を有している。
この取得されたセーフティドライバ300の一覧は、リスト画面530(図20(A)参照)に反映される。
続いて、サポート装置500は、特定のセーフティドライバ300が選択されたか否かを判断する(ステップS102)。特定のセーフティドライバ300が選択されると(ステップS102においてYES)、サポート装置500は、選択されているセーフティドライバ300に対する設定可能なパラメータセットのリストを表示するとともに(ステップS104)、パラメータセットの選択を受け付ける(ステップS106)(図20(B)参照)。さらに、サポート装置500は、選択されたパラメータセットを選択中のセーフティドライバ300に反映する(ステップS108)。そして、処理はステップS130へ進む。
このように、サポート装置500は、個別設定のユーザ操作に従って、特定の1つのセーフティドライバ300に対する設定を生成することもできる。
一方、サポート装置500は、特定のセーフティドライバ300が選択されなければ(ステップS102においてNO)、サポート装置500は、一括設定機能が選択されたか否かを判断する(ステップS112)(図21(A)参照)。一括設定機能が選択されると(ステップS112においてYES)、サポート装置500は、一括設定および一括削除のいずれが選択されたかを判断する(ステップS114)。
一括設定が選択されると(ステップS114において「一括設定」)、サポート装置500は、一覧に含まれるセーフティドライバ300のうち1つを選択し(ステップS116)、共通設定テンプレート590を参照して、当該選択されているセーフティドライバ300に対応する設定内容を取得する(ステップS118)。そして、選択されているセーフティドライバ300に取得した設定内容を反映する(ステップS120)。このように、サポート装置500は、ユーザ操作に従って、フィールドネットワーク2に接続されている各セーフティドライバ300に対して、フィールドネットワーク2を介して共有するべきデータの設定を各セーフティドライバ300に応じて生成する。このとき、サポート装置500は、共通設定テンプレート590を参照することで、セーフティドライバ300の機種毎に予め定められた設定内容に従って、各セーフティドライバ300に対する設定を生成する。
一覧に含まれるセーフティドライバ300のすべてに対して設定内容が反映されていなければ(ステップS122においてNO)、ステップS116以下の処理が繰り返される。一覧に含まれるセーフティドライバ300のすべてに対して設定内容が反映されていれば(ステップS122においてYES)、処理はステップS130へ進む。
一括削除が選択されると(ステップS114において「一括削除」)、サポート装置500は、一覧に含まれるセーフティドライバ300のうち1つを選択し(ステップS124)、選択されているセーフティドライバ300の設定内容をクリアする(ステップS126)。一覧に含まれるセーフティドライバ300のすべてに対して設定内容が反映されていなければ(ステップS128においてNO)、ステップS124以下の処理が繰り返される。一覧に含まれるセーフティドライバ300のすべてに対して設定内容がクリアされていれば(ステップS128においてYES)、処理はステップS130へ進む。
このように、サポート装置500は、一括削除のユーザ操作に従って、各セーフティドライバ300に対する設定を削除する。
これに対して、一括設定機能が選択されなければ(ステップS112においてNO)、ステップS102以下の処理が繰り返される。
ステップS130において、サポート装置500は、セーフティドライバ300への設定反映が指示されたか否かを判断する(ステップS130)。セーフティドライバ300への設定反映が指示されると(ステップS130においてYES)、サポート装置500は、設定された内容を対象のセーフティドライバ300へ転送する(ステップS132)。すなわち、サポート装置500は、フィールドネットワーク2に接続されている各セーフティドライバ300に対して対応する設定を反映する。そして、処理は終了する。
一方、セーフティドライバ300への設定反映が指示されなければ(ステップS130においてNO)、ステップS102以下の処理が繰り返される。
<J.変形例>
上述の実施の形態においては、セーフティドライバ300のモーションセーフティ機能に関する情報を、プロセスデータ通信を利用して送受信する例について説明したが、これに限らず、任意の情報をプロセスデータ通信を利用して送受信する場合にも適用可能である。
すなわち、モーションセーフティ機能に限らず、セーフティドライバ300と任意のデバイスとの間で実行される任意のアプリケーションで利用されるデータを、セーフティドライバ300から公開、あるいは、任意のデバイスから受信するための設定を一括で設定あるいは削除できるようにしてもよい。例えば、セーフティドライバ300で実行されるサーボモータ400に対する位置制御、速度制御、トルク制御などに必要な情報の遣り取りを実現するための設定に利用してもよい。
さらに、セーフティドライバ300に限らず、他の任意のデバイスがプロセスデータ通信を利用する場合に、必要な情報を一括で設定し、あるいは、一括で削除するような処理に適用することもできる。
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
制御システム(1)であって、
第1のコントローラ(100)と、
セーフティ機能を有するとともに、前記第1のコントローラからの第1の指令に従ってモータ(400)を駆動する1または複数のドライブ装置(300)と、
前記ドライブ装置に対してセーフティ機能の動作に係る第2の指令を送信する第2のコントローラ(200)と、
前記第1のコントローラ、前記ドライブ装置および前記第2のコントローラの間で、データを互いに共有するためのネットワーク(2)と、
サポート装置(500)とを備え、前記サポート装置は、ユーザ操作に従って、前記ネットワークに接続されている各ドライブ装置に対して、前記ネットワークを介して共有するべきデータの設定を各ドライブ装置に応じて生成する設定生成手段(10)を含み、
前記ネットワークに接続されている各ドライブ装置に対して対応する設定を反映する設定反映手段(20)を備える、制御システム。
[構成2]
前記設定生成手段(10)は、ドライブ装置の機種毎に予め定められた設定内容に従って、各ドライブ装置に対する前記ネットワークを介して共有するべきデータの設定を生成する(S118)、構成1に記載の制御システム。
[構成3]
前記設定生成手段は、別のユーザ操作に従って、各ドライブ装置に対する前記ネットワークを介して共有するべきデータの設定を削除する(S124,S126,S128)、構成1または2に記載の制御システム。
[構成4]
前記設定生成手段は、前記ドライブ装置から前記第1のコントローラへ、前記ドライブ装置が保持するデータを公開するように設定する、構成1~3のいずれか1項に記載の制御システム。
[構成5]
前記ドライブ装置は、前記第2の指令に従って前記セーフティ機能の状態を管理する状態管理部(378)を含み、
前記ドライブ装置から公開されるデータは、前記第2のコントローラからの前記第2の指令を反映する、構成4に記載の制御システム。
[構成6]
前記サポート装置は、前記ドライブ装置に対する前記ネットワークを介して共有するべきデータの設定(560)を参照して、前記状態管理部により管理される情報のうち公開対象の情報を特定するとともに、当該公開対象の情報を参照するための参照情報(556)に当該特定した情報の意味を関連付ける、構成5に記載の制御システム。
[構成7]
前記設定生成手段は、さらに別のユーザ操作に従って、特定の1つのドライブ装置に対する前記ネットワークを介して共有するべきデータの設定を生成する(S104,S106,S108)、構成1~6のいずれか1項に記載の制御システム。
[構成8]
前記サポート装置は、前記ネットワークに接続されているドライブ装置を取得する取得手段(S100)をさらに含む、構成1~7のいずれか1項に記載の制御システム。
[構成9]
前記設定生成手段は、各ドライブ装置に対して生成された前記ネットワークを介して共有するべきデータの設定の内容をユーザに提示する(538)、構成1~8のいずれか1項に記載の制御システム。
[構成10]
制御システム(1)に接続されるサポート装置(500)であって、
前記制御システムは、
第1のコントローラ(100)と、
セーフティ機能を有するとともに、前記第1のコントローラからの第1の指令に従ってモータ(400)を駆動する1または複数のドライブ装置(300)と、
前記ドライブ装置に対してセーフティ機能の動作に係る第2の指令を送信する第2のコントローラ(200)と、
前記第1のコントローラ、前記ドライブ装置および前記第2のコントローラの間で、データを互いに共有するためのネットワーク(2)とを備え、
前記サポート装置は、ユーザ操作に従って、前記ネットワークに接続されている各ドライブ装置に対して、前記ネットワークを介して共有するべきデータの設定を各ドライブ装置に応じて生成する設定生成手段(10)を含み、
前記第1のコントローラは、前記ネットワークに接続されている各ドライブ装置に対して対応する設定を反映する設定反映手段(20)を含む、サポート装置。
[構成11]
制御システム(1)に接続されるコンピュータ(500)で実行されるサポートプログラム(5104)であって、
前記制御システムは、
第1のコントローラ(100)と、
セーフティ機能を有するとともに、前記第1のコントローラからの第1の指令に従ってモータ(400)を駆動する1または複数のドライブ装置(300)と、
前記ドライブ装置に対してセーフティ機能の動作に係る第2の指令を送信する第2のコントローラ(200)と、
前記第1のコントローラ、前記ドライブ装置および前記第2のコントローラの間で、データを互いに共有するためのネットワーク(2)とを備え、
前記サポートプログラムは、前記コンピュータに
ユーザ操作に従って、前記ネットワークに接続されている各ドライブ装置に対して、前記ネットワークを介して共有するべきデータの設定を各ドライブ装置に応じて生成するステップ(S116,S118,S120,S122)と、
前記ネットワークに接続されている各ドライブ装置に対して対応する設定を反映するステップ(S130,S132)とを実行させる、サポートプログラム。
<L.利点>
本実施の形態に係る制御システム1によれば、セーフティドライバ300が他のユニットとの間でデータを共有するための設定を一括で行うことができるので、複数のセーフティドライバ300を含む場合であっても、制御システム1の立ち上げを効率化できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。