本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態に係る制御システム1000の適用例を示す模式図である。図1を参照して、本実施の形態に係る制御システム1000は、主として、コントローラ1200、ならびに、コントローラ1200とフィールドネットワーク1002を介して接続される1または複数の制御対象1300(1300a,1300b,1300c)を含む。制御対象1300の各々には、1または複数の駆動部1400(1400a,140b,1400c)が電気的に接続されている。
コントローラ1200は、プログラムに従って、制御対象1300に対する制御を実行する。典型的には、コントローラ1200は、1または複数のセンサ(図示していない)などからの入力信号に応じた制御演算をサイクリック実行することで、制御対象1300に対する指令を周期的に算出する。コントローラ1200で実行されるプログラムは、コントローラ1200と通信可能に接続されたサポート装置1500が提供する開発環境を利用して、ユーザによって予め作成され、コントローラ1200に転送される。
制御対象1300は、コントローラ1200からの指令に従って、駆動部1400を駆動する。
サポート装置1500は、コントローラ1200で実行されるプログラムの開発を支援する。たとえば、サポート装置1500は、少なくとも1つ以上の命令情報を組み合わせることでプログラムを生成するための開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)をユーザに提供する。
本実施の形態においては、命令情報がファンクションブロックとして規定されており、プログラムを生成するための各種ファンクションブロック(ユーザ定義ファンクションブロック)がサポート装置1500にインポートされる。ユーザは、サポート装置1500にインポートされたファンクションブロックに対して設定値を入力することができ、設定値を入力したファンクションブロック(命令情報)を組み合わせることで、プログラムに係るプログラミングが可能である。
プログラムにおけるファンクションブロックは、コントローラ1200に関連付けられた制御対象1300が有する機能に対応している。具体的には、ユーザは、コントローラ1200に対して、少なくとも1以上の制御対象1300を通信可能に接続させることが可能であり、各制御対象1300は、実行可能な機能が予め定められている。そして、各機能に対応するように、ファンクションブロック(命令情報)が予め設けられている。コントローラ1200に対して少なくとも1以上の制御対象1300が接続されると、接続された制御対象1300が有する機能に対応するファンクションブロックが、サポート装置1500にインポートされ、ユーザによって利用可能とされる。
具体的には、サポート装置1500は、ネットワーク構成情報5231を保持する。ネットワーク構成情報5231には、制御システム1000において接続されている構成を特定するための情報が格納されている。たとえば、更新前のネットワーク構成情報5231aには、制御システム1000として、コントローラ1200と、当該コントローラ1200に接続された制御対象1300aおよび制御対象1300bとで、ネットワークが構成されている旨の情報が格納されている。
サポート装置1500は、コントローラ1200に対して少なくとも1つ以上の制御対象1300を関連付ける関連付け部5111を有する。たとえば、関連付け部5111は、コントローラ1200に対して新たに制御対象1300cが接続された場合、ネットワーク構成情報5231aを更新してネットワーク構成情報5231bを生成する。更新後のネットワーク構成情報5231bには、制御システム1000の構成について、コントローラ1200と、当該コントローラ1200に接続された制御対象1300a、制御対象1300b、および制御対象1300cとで、ネットワークが構成されている旨の情報が格納されている。このようにして、コントローラ1200に対して新たに制御対象1300cが関連付けられる。
また、サポート装置1500は、対応データ5205を保持する。対応データ5205には、コントローラ1200によって実行可能な各機能に対応する命令情報を特定するための情報が格納されている。対応データ5205における各機能は、制御対象1300ごとに有されるか否かが予め決められている。たとえば、制御対象1300aは機能1および機能2を有し、制御対象1300bは機能1および機能3を有し、制御対象1300cは機能3および機能4を有する。
ネットワーク構成情報5231の更新前においては、ネットワーク構成情報5231aに示すように、制御対象1300として、制御対象1300aおよび制御対象1300bがコントローラ1200に関連付けられている。この場合、ユーザは、制御対象1300aについては、機能1に対応する命令情報1、および機能2に対応する命令情報2を利用してプログラミング可能である。また、ユーザは、制御対象1300bについては、機能1に対応する命令情報1、および機能3に対応する命令情報3を利用してプログラミング可能である。
一方、ネットワーク構成情報5231の更新後においては、ネットワーク構成情報5231bに示すように、新たに制御対象1300cがコントローラ1200に関連付けられている。ここで、ユーザ自身が、数ある命令情報の中から、新たにコントローラ1200に関連付けられた制御対象1300cが有する機能3および機能4のそれぞれに対応する命令情報を探し出して特定することは利便性に乏しい。そこで、本実施の形態に係る制御システム1000において、サポート装置1500は、少なくとも1つ以上の制御対象1300のそれぞれが有する機能に対応する少なくとも1つ以上の命令情報を特定してユーザに利用可能とさせる特定部5112を有する。
サポート装置1500は、ネットワーク構成情報5231bに示すように、新たに制御対象1300cがコントローラ1200に関連付けられた場合、特定部5112によって、制御対象1300cが有する機能3に対応する命令情報3および機能4に対応する命令情報4を特定し、プログラム開発のプロジェクトにインポートすることで、命令情報3および命令情報4を、ユーザに利用可能とさせる。これにより、ユーザは、制御対象1300cについて、機能3に対応する命令情報3、および機能4に対応する命令情報4を利用してプログラミング可能となる。
このように、サポート装置1500を用いたユーザによるプログラムの開発時において、ユーザは、コントローラ1200に対して少なくとも1つ以上の制御対象1300を関連付けることができ、コントローラ1200に対して少なくとも1つ以上の制御対象1300を関連付けた場合に、当該少なくとも1つ以上の制御対象1300のそれぞれが有する機能に対応する少なくとも1つ以上の命令情報を利用することができる。これにより、ユーザは、コントローラ1200に対して関連付けた制御対象1300が有する機能に対応する命令情報を自分で特定する必要がなく、ユーザのプログラミングにおける利便性を向上させることができる。また、コントローラ1200においてプログラムが予め組み込まれているような形態ではなく、サポート装置1500を用いてユーザが生成したプログラムをコントローラ1200で実行するような形態であるため、ソフトウェアのバージョンアップを行う際にコントローラ1200自体をバージョンアップする必要がなく、サポート装置1500でプログラム開発時に用いられるソフトウェアをバージョンアップすることで事足りるため、バージョンアップに掛ける費用を極力抑えることができる。
なお、上述した「コントローラ」は、後述するように、モータを制御する標準コントローラ100、および制御システム1における安全を管理するセーフティコントローラ200のいずれも含む。また、上述した「制御対象」は、セーフティ機能を有する任意のセーフティスレーブ、およびセーフティ機能を有さない任意のスレーブを含む。たとえば、「コントローラ」として標準コントローラ100を適用させた場合、後述する図18に示すように、「制御対象」は、ロードセル入力ユニット、温度調整ユニット、および位置インターフェイスユニットなど、任意のセンサやアクチュエータに指令を送るセーフティ機能を有さない任意のスレーブ(制御対象2300)であってもよい。また、たとえば、「コントローラ」としてセーフティコントローラ200を適用させた場合、後述する図2に示すように、「制御対象」は、サーボモータ400などのモータに指令を送る一方で所定のセーフティ機能を実行するセーフティドライバ300であってもよいし、セーフティ機能を有するロボットやライトカーテンなどのセーフティデバイス240であってもよい。
<B.制御システム1の構成例>
上述した適用例に係る制御システム1000を具体化した例として、制御システム1を例示しながら説明する。
図2は、本実施の形態に係る制御システム1の構成例を示す模式図である。本実施の形態に係る制御システム1は、たとえば、IEC 61508などに規定されたセーフティ機能に加えて、非特許文献("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)、SBC(Safe Brake Control)などの、ドライブ装置に関連するいくつかのセーフティ機能を提供する。
図2を参照して、制御システム1は、主として、標準コントローラ100、ならびに、標準コントローラ100とフィールドネットワーク2を介して接続されるセーフティコントローラ200、および1または複数のセーフティドライバ(セーフティサーボドライバ)300を含む。セーフティドライバ300の各々は、セーフティスレーブの一例であり、電気的に接続されたサーボモータ400を駆動する。なお、サーボモータ400に限らず、任意の種類のモータを採用できる。また、セーフティドライバ300の実体は、サーボドライバであってもよいし、汎用的なインバータ装置であってもよい。
標準コントローラ100は、後述する標準制御プログラム1104に従って、サーボモータ400に対する標準制御150を実行する。典型的には、標準コントローラ100は、1または複数のセンサ(図示していない)などからの入力信号に応じた制御演算をサイクリック実行することで、サーボモータ400などのアクチュエータに対する指令を周期的に算出する。標準制御プログラム1104は、標準コントローラ100と通信可能に接続されたサポート装置500が提供する開発環境を利用して、ユーザによって予め作成され、標準コントローラ100に転送される。
セーフティコントローラ200は、セーフティプログラム2104に従って、セーフティドライバ300に対してセーフティ機能250の動作に係るセーフティ指令を送信する。より具体的には、セーフティコントローラ200は、標準コントローラ100とは独立して、制御対象に対するセーフティ機能250を実現するための監視および制御演算をサイクリック実行する。これにより、セーフティコントローラ200は、制御システム1における安全を管理する。
セーフティコントローラ200は、任意のセーフティデバイス240からの入力信号の受付、および/または、任意のセーフティデバイス240への指令の出力が可能になっている。セーフティプログラム2104は、セーフティコントローラ200と通信可能に接続されたサポート装置500が提供する開発環境を利用して、ユーザによって予め作成され、セーフティコントローラ200に転送される。
セーフティドライバ300は、標準コントローラ100からの指令に従って、サーボモータ400に電力を供給することで、サーボモータ400を駆動する。セーフティドライバ300は、サーボモータ400からのフィードバック信号などに基づいて、サーボモータ400の回転位置、回転速度、回転加速度および発生するトルクなどを周期的に算出する。
さらに、セーフティドライバ300は、セーフティコントローラ200からの指令に従って、サーボモータ400の駆動に関する所定のセーフティ機能250を実行する。より具体的には、セーフティドライバ300は、セーフティ機能250に必要な状態情報をセーフティコントローラ200へ提供するとともに、要求されるセーフティ機能250に応じて、サーボモータ400に供給する電力を調整または遮断する。
サーボモータ400は、セーフティドライバ300からの電力を受けて回転するモータ(後述する三相交流モータ402)を有するとともに、モータの回転軸に結合されたエンコーダ404からの検出信号をフィードバック信号としてセーフティドライバ300へ出力する。
サポート装置500は、標準コントローラ100で実行される標準制御プログラム1104、およびセーフティコントローラ200で実行されるセーフティプログラム2104の開発を支援する。たとえば、サポート装置500は、少なくとも1つ以上の命令情報を組み合わせることでプログラムを生成するための開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)をユーザに提供する。
本実施の形態においては、命令情報がファンクションブロックとして規定されており、標準制御プログラム1104やセーフティプログラム2104を生成するための各種ファンクションブロック(ユーザ定義ファンクションブロック)がサポート装置500にインポートされる。ユーザは、サポート装置500にインポートされたファンクションブロックに対して設定値を入力することができ、設定値を入力したファンクションブロック(命令情報)を組み合わせることで、標準制御プログラム1104やセーフティプログラム2104に係るプログラミングが可能である。
セーフティプログラム2104におけるファンクションブロックは、セーフティコントローラ200に関連付けられたセーフティドライバ300が有する機能に対応している。具体的には、ユーザは、セーフティコントローラ200に対して、少なくとも1以上のセーフティドライバ300を通信可能に接続させることが可能であり、各セーフティドライバ300は、実行可能なセーフティ機能250が予め定められている。そして、各セーフティ機能250に対応するように、ファンクションブロック(命令情報)が予め設けられている。セーフティコントローラ200に対して少なくとも1以上のセーフティドライバ300が接続されると、接続されたセーフティドライバ300が有するセーフティ機能250に対応するファンクションブロックが、サポート装置500にインポートされ、ユーザによって利用可能とされる。
このように、サポート装置500を用いたユーザによるセーフティプログラム2104の開発時において、ユーザは、セーフティコントローラ200に対して少なくとも1つ以上のセーフティドライバ300を関連付けることができ、セーフティコントローラ200に対して少なくとも1つ以上のセーフティドライバ300を関連付けた場合に、当該少なくとも1つ以上のセーフティドライバ300のそれぞれが有するセーフティ機能250に対応する少なくとも1つ以上のファンクションブロックを利用することができる。これにより、ユーザは、セーフティコントローラ200に対して関連付けたセーフティドライバ300が有するセーフティ機能250に対応するファンクションブロックを自分で特定する必要がなく、ユーザのプログラミングにおける利便性を向上させることができる。また、セーフティコントローラ200においてセーフティプログラムが予め組み込まれているような形態ではなく、サポート装置500を用いてユーザが生成したセーフティプログラムをセーフティコントローラ200で実行するような形態であるため、ソフトウェアのバージョンアップを行う際にセーフティコントローラ200自体をバージョンアップする必要がなく、サポート装置500でプログラム開発時に用いられるソフトウェアをバージョンアップすることで事足りるため、バージョンアップに掛ける費用を極力抑えることができる。
本明細書において、「デバイス」は、フィールドネットワーク2などの任意のネットワークを介して、他の装置とデータ通信可能な装置の総称である。本実施の形態に係る制御システム1において、「デバイス」は、標準コントローラ100、セーフティコントローラ200、およびセーフティドライバ300を包含する。
本明細書において、「標準制御」および「セーフティ制御」の用語を対比的に用いる。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。一方、「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。「セーフティ制御」は、IEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
本明細書においては、ドライブ装置に特有のセーフティ機能を「モーションセーフティ機能」と総称する。典型的には、「機能」は、上述の非特許文献に規定されるドライブ装置に関連するセーフティ機能を包含する。たとえば、制御軸の位置や速度を監視して安全を確保するための制御を含む。
<C.制御システム1に含まれるデバイスの構成例>
次に制御システム1に含まれるデバイスの構成例について説明する。
(c1:標準コントローラ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が格納される。設定情報1106には、制御システム1において接続されている構成を特定するためのネットワーク構成情報1161が含まれる。ネットワーク構成情報1161は、サポート装置500において生成されて、標準コントローラ100に転送される。
上位ネットワークコントローラ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に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
(c2:セーフティコントローラ200)
図4は、本実施の形態に係る制御システム1を構成するセーフティコントローラ200のハードウェア構成例を示す模式図である。図4を参照して、セーフティコントローラ200は、プロセッサ202と、メインメモリ204と、ストレージ210と、フィールドネットワークコントローラ208と、USBコントローラ220と、セーフティローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
プロセッサ202は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。具体的には、プロセッサ202は、ストレージ210に格納されたプログラム(一例として、システムプログラム2102およびセーフティプログラム2104)を読み出して、メインメモリ204に展開して実行することで、必要なセーフティ機能250を提供するための制御演算、および、後述するような各種処理を実現する。
メインメモリ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の主要部を、汎用的なアーキテクチャに従うハードウェア(たとえば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。
(c3:セーフティドライバ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に係るセーフティ機能250を提供するための制御演算を主として実行する演算処理部に相当する。プロセッサ312,314は、いずれもCPUなどで構成される。
メインメモリ316は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ320は、たとえば、SSDやHDDなどの不揮発性記憶装置などで構成される。
ストレージ320には、後述するサーボ制御350を実現するためのサーボ制御プログラム3201と、後述するモーションセーフティ機能360を実現するためのモーションセーフティプログラム3202と、他のデバイスに公開される変数などを設定するための設定情報3203とが格納される。
図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の回転数に応じたフィードバック信号(典型的には、回転数に応じた数のパルス信号)を出力する。
(c4:サポート装置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と、ネットワーク構成情報5131とを含む。
標準制御ソースプログラム5108は、オブジェクトコードに変換された上で、標準コントローラ100へ送信され、標準制御プログラム1104(図3参照)として格納される。同様に、標準コントローラ設定情報5110についても標準コントローラ100へ送信され、設定情報1106(図3参照)として格納される。
セーフティソースプログラム5117は、オブジェクトコードに変換された上で、セーフティコントローラ200へ送信され、セーフティプログラム2104(図4参照)として格納される。同様に、セーフティコントローラ設定情報5114についてもセーフティコントローラ200へ送信され、設定情報2106(図4参照)として格納される。
セーフティドライバ設定情報5116は、セーフティドライバ300へ送信され、設定情報3203(図5参照)として格納される。
ネットワーク構成情報5131は、制御システム1において接続されている構成を特定するための情報を含む。
また、ストレージ510には、対応データ5105が格納される。対応データ5105は、セーフティコントローラ200によって実行可能な各セーフティ機能250に対応するファンクションブロックを特定するための情報を含む。なお、対応データ5105は、プロジェクトデータ5106に含まれていてもよいし、サポートプログラム5104にソースコードとして書き込まれていてもよい。
さらに、ストレージ510には、各セーフティ機能に対応する各ファンクションブロックの集まりであるファンクションブロック群5103を格納する。サポート装置500は、セーフティコントローラ200に対してセーフティドライバ300が関連付けられた場合、関連付けられたセーフティドライバ300が有するセーフティ機能に対応するファンクションブロックをファンクションブロック群5103の中から特定し、特定したファンクションブロックを開発プロジェクトにインポートする。
入力部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から取り外されていてもよい。
<D.ネットワーク構成情報5131>
図7は、本実施の形態に係るサポート装置が保持するネットワーク構成情報5131を説明するための模式図である。図7を参照して、ネットワーク構成情報5131は、制御システム1において接続されている構成を特定するための情報を含む。
具体的には、本実施の形態に係る制御システム1においては、NO.0~127までの128個の構成がネットワーク接続可能である。この例では、NO.0には、標準コントローラ100の型式(型名)である「Master」が対応付けられている。NO.1には、セーフティコントローラ200の型式(型名)である「NX-ECC203」が対応付けられている。NO.2には、セーフティドライバ300の型式(型名)である「R88D-1SAN02H-ECT」が対応付けられている。
サポート装置500は、ネットワーク構成情報5131に基づき、制御システム1においてネットワーク接続されている構成を把握することができる。
<E.対応データ5105>
図8は、本実施の形態に係るサポート装置が保持する対応データ5105を説明するための模式図である。図8を参照して、対応データ5105は、セーフティコントローラ200によって実行可能な各セーフティ機能250に対応するファンクションブロックを特定するための情報を含む。
具体的には、対応データ5105においては、複数のセーフティドライバ300の型式(型名)と、これら複数のセーフティドライバ300のそれぞれが有するセーフティ機能250と、各セーフティ機能250に対応するファンクションブロック(ユーザ定義ファンクションブロック)とが対応付けられている。たとえば、「R88D-1SAN02H-ECT」のセーフティドライバ300は、セーフティ機能250としてSS1およびSS2を有する。そして、SS1に対応するファンクションブロックとして「OC_SF_SS1」が対応付けられ、SS2に対応するファンクションブロックとして「OC_SF_SS2」が対応付けられている。
サポート装置500は、対応データ5105に基づき、セーフティドライバ300が有するセーフティ機能250、および当該セーフティ機能250を実現するためのセーフティプログラム2104におけるファンクションブロックを把握することができる。
なお、各セーフティ機能250に対応するファンクションブロックは、全て安全に関する認証(たとえば、機能安全に関する製品の評価を行っている外部組織による認証)を受けている。より具体的には、各セーフティ機能250に対応するファンクションブロックにおけるプログラムの内容(命令情報)はユーザにとってブラックボックスになっており、ユーザが改変することができないようになっている。しかも、ファンクションブロックにおけるプログラムの内容(命令情報)は、安全に関する認証を受けており、安全が保証されている。これにより、セーフティコントローラ200で実行されるセーフティプログラム2104の安全性を担保することができる。
<F.制御システム1の機能分担>
次に、制御システム1における機能分担の一例について説明する。図9は、本実施の形態に係る制御システム1の機能分担の一例を示す模式図である。
図9を参照して、標準コントローラ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は、セーフティコントローラ200からのセーフティ指令に応答して、指定されたモーションセーフティ機能360を提供する。指定されたモーションセーフティ機能360の種類に応じて、サーボ制御350によるサーボモータ400の制御に介入して、サーボモータ400への電力供給を遮断する処理、あるいは、サーボ制御350によるサーボモータ400の制御の状態値が予め定められた制限範囲内に収まっているか否かを監視する処理などが実行される。なお、各セーフティドライバ300においては、実行可能なモーションセーフティ機能360が予め定められている。
図10は、本実施の形態に係る制御システム1のセーフティドライバ300によるセーフティ機能250に係る処理手順の一例を示すシーケンス図である。図10を参照して、標準コントローラ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を実現することができる。
<G.制御システム1のモーションセーフティ機能360>
次に、制御システム1が提供するモーションセーフティ機能360の一例について説明する。
図11は、本実施の形態に係る制御システム1が提供するモーションセーフティ機能360の一例を示す図である。図11(A)には、STO(Safe Torque Off)に対応するサーボモータ400の挙動の一例を示し、図11(B)には、SS1(Safe Stop 1)に対応するサーボモータ400の挙動の一例を示す。
図11(A)を参照して、サーボモータ400がある回転速度で運転している状態において、時刻t1でセーフティ指令(STO)が与えられると、セーフティドライバ300は、サーボモータ400への電力供給を遮断して、サーボモータ400で発生するトルクをゼロにする。この結果、サーボモータ400は惰性で回転した後に停止する。なお、サーボモータ400にブレーキが装着されている場合には、サーボモータ400は即座に停止することもできる。
図11(B)を参照して、サーボモータ400がある回転速度で運転している状態において、時刻t1でセーフティ指令(SS1)が与えられると、セーフティドライバ300は、予め定められた加速度で回転速度を低減する。このとき、セーフティドライバ300は、サーボモータ400からの電力回収(すなわち、回生)などを実行してもよい。そして、時刻t2においてサーボモータ400の回転速度がゼロになると、セーフティドライバ300は、サーボモータ400への電力供給を遮断して、サーボモータ400で発生するトルクをゼロにする。時刻t2以降においては、図11(A)に示すSTOと同様の状態になる。
図11(A)に示されるSTOおよび図11(B)に示されるSS1のうち、サーボモータ400と機械的に連結されている設備の特性などに応じて、より安全に停止できるセーフティ機能250が適宜選択される。
上述した非特許文献は、図11(A)および図11(B)に示すモーションセーフティ機能360だけではなく、複数のモーションセーフティ機能360を規定する。各モーションセーフティ機能360を実現するためには、サーボモータ400の挙動を規定するための設定が必要となる。
<H.自動インポート処理>
次に、サポート装置500が実行する自動インポート処理について説明する。
図12は、本実施の形態に係るサポート装置500が実行する自動インポート処理を説明するためのフローチャートである。図12を参照して、サポート装置500は、セーフティドライバ300が追加登録されたか否か、具体的には、図7に示すネットワーク構成情報5131にセーフティドライバ300が追加登録されたか否かを判定する(S2)。サポート装置500は、セーフティドライバ300が追加登録されていない場合(S2でNO)、本処理を終了する。
一方、サポート装置500は、セーフティドライバ300が追加登録されている場合(S2でYES)、保持しているファンクションブロック群5103の中から対応するファンクションブロックを特定する(S4)。このとき、サポート装置500は、ネットワーク構成情報5131に追加されたセーフティドライバ300の型式(型名)を手掛かりに、対応データ5105において対応付けられたファンクションブロックを特定する。そして、サポート装置500は、特定したファンクションブロックを読み込む(S6)。
これにより、サポート装置500は、セーフティドライバ300が有する固有の識別情報を手掛かりに、より確実に、セーフティコントローラ200に関連付けられたセーフティドライバ300が有する機能に対応するファンクションブロックをユーザに利用可能とさせることができる。なお、サポート装置500は、型式(型名)に限らず、製造番号など、セーフティドライバ300が有する固有の識別情報であれば、いずれの情報を用いてファンクションブロックを特定してもよい。
サポート装置500は、読み込んだファンクションブロックと同じ名前のファンクションブロックが既に開発プロジェクトに存在するか否か、すなわち既に同じ名前のファンクションブロックがインポートされておりユーザによって利用可能であるか否かを判定する(S8)。サポート装置500は、読み込んだファンクションブロックと同じ名前のファンクションブロックが開発プロジェクトに存在しない場合(S8でNO)、本処理を終了する。
一方、サポート装置500は、読み込んだファンクションブロックと同じ名前のファンクションブロックが開発プロジェクトに存在する場合(S8でYES)、読み込んだファンクションブロックと既に存在する同じ名前のファンクションブロックとの間でCRC(Cyclic Redundancy Check)データが一致するか否かを判定する(S10)。CRCデータは、巡回冗長検査用のデータであり、データの一致を判定するためのものである。
サポート装置500は、読み込んだファンクションブロックと既に存在する同じ名前のファンクションブロックとの間でCRCデータが一致する場合(S10でYES)、同一のファンクションブロックを重複して開発プロジェクトにインポートすることになるため、読み込んだファンクションブロックをインポートすることなく、本処理を終了する。
一方、サポート装置500は、読み込んだファンクションブロックと既に存在する同じ名前のファンクションブロックとの間でCRCデータが一致しない場合(S10でNO)、読み込んだファンクションブロックと既に存在する同じ名前のファンクションブロックとで作成者が同じであり、かつ読み込んだファンクションブロックが既に存在する同じ名前のファンクションブロックよりもバージョンまたは更新日時が新しいか否かを判定する(S12)。
サポート装置500は、読み込んだファンクションブロックと既に存在する同じ名前のファンクションブロックとで作成者が同じでないか、あるいは、読み込んだファンクションブロックが既に存在する同じ名前のファンクションブロックよりもバージョンまたは更新日時が新しくない場合(S12でNO)、既に存在する同じ名前のファンクションブロックが上書きされることがないように、読み込んだファンクションブロックをインポートすることなく、本処理を終了する。
一方、サポート装置500は、読み込んだファンクションブロックと既に存在する同じ名前のファンクションブロックとで作成者が同じであり、かつ読み込んだファンクションブロックが既に存在する同じ名前のファンクションブロックよりもバージョンまたは更新日時が新しい場合(S12でYES)、読み込んだファンクションブロックを、既に存在する同じ名前のファンクションブロックに上書きしてインポートする(S14)。その後、サポート装置500は、本処理を終了する。
このように、サポート装置500は、読み込んだ利用対象であるファンクションブロックと同じ名前のファンクションブロックが既にユーザに利用可能とされている場合であっても、巡回冗長検査用のデータの整合性に基づき、適切にファンクションブロックをユーザに利用可能とさせることができる。
さらに、サポート装置500は、読み込んだ利用対象であるファンクションブロックと同じ名前のファンクションブロックが既にユーザに利用可能とされている場合であっても、両者の作成者、バージョン、および更新日時を考慮して、適切にファンクションブロックをユーザに利用可能とさせることができる。また、たとえば、第三者が動作検証などを行っていないファンクションブロックが自動でインポートされることを極力防止することができる。
<I.セーフティコントローラ200にセーフティドライバ300を関連付けるためのユーザインターフェイス700>
次に、サポート装置500が提供するセーフティコントローラ200にセーフティドライバ300を関連付けるためのユーザインターフェイス700の一例について説明する。
図13および図14は、サポート装置500が提供するセーフティコントローラ200にセーフティドライバ300を関連付けるためのユーザインターフェイス700の一例を示す図である。ユーザは、サポート装置500においてサポートプログラム5104を実行することで、図13および図14に示すようなユーザインターフェイス700における画面を表示させることができる。
図13を参照して、サポート装置500の画面の左側には、マルチビューエクスプローラ欄701が設けられている。マルチビューエクスプローラ欄701には、開発対象となるプログラムを指定するための切替スイッチ711が含まれる。この例では、切替スイッチ711において、標準制御プログラム1104に対応する「new_Controller_0」が指定されている。
さらに、マルチビューエクスプローラ欄701には、制御システム1においてネットワーク接続される構成を設定するための切替スイッチ712が含まれる。また、この例では、切替スイッチ712によって「構成・設定」に切り替えられた上で、制御システム1においてネットワーク接続される構成を設定するための項目としてEtherCAT(登録商標)アイコン713が指定されている。なお、本実施の形態においては、EtherCAT(登録商標)は、フィールドネットワーク2のプロトコルの一例として採用されている。
EtherCAT(登録商標)アイコン713が指定されると、サポート装置500の画面の中央に配置されたEtherCAT(登録商標)702において、現時点で制御システム1においてネットワーク接続されている構成が示される。この例では、「Master」である標準コントローラ100、および「NX-ECC203」であるセーフティコントローラ200が示されている。
一方、サポート装置500の画面の右側には、ツールボックス703が設けられている。ツールボックス703には、制御システム1において追加可能な構成が一覧表示されている。この例では、追加可能な構成として、セーフティドライバ300の型式(型名)が一覧表示されている。ユーザは、一覧表示された複数のセーフティドライバ300の中から所望のセーフティドライバ300を選択した上で、挿入アイコン731を指定すると、セーフティコントローラ200に対して新たなセーフティドライバ300を関連付けることができる。たとえば、図13においては、「R88D-1SAN02H-ECT」の型式(型名)を有するセーフティドライバ300が選択されており、当該セーフティドライバ300の詳細な情報が詳細情報欄732に表示されている。
「R88D-1SAN02H-ECT」の型式(型名)を有するセーフティドライバ300が選択されて挿入アイコン731が指定されると、図14のEtherCAT(登録商標)702に示すように、「R88D-1SAN02H-ECT」の型式(型名)を有するセーフティドライバ300が制御システム1に追加されて、「Master」である標準コントローラ100、および「NX-ECC203」であるセーフティコントローラ200に関連付けられる。「R88D-1SAN02H-ECT」のセーフティドライバ300が制御システム1に追加されると、図7のNO.2に示したように、「R88D-1SAN02H-ECT」の型式(型名)がネットワーク構成情報5131に追加される。
このように、ユーザは、サポート装置500を用いて、セーフティコントローラ200に対して少なくとも1つ以上のセーフティドライバ300を関連付けることができる。
<J.開発プログラムの切替のためのユーザインターフェイス800>
次に、サポート装置500が提供する開発プログラムの切替のためのユーザインターフェイス800の一例について説明する。
図15は、本実施の形態に係るサポート装置500が提供する標準制御プログラム開発からセーフティプログラム開発へと切り替えるためのユーザインターフェイス800の一例を示す図である。ユーザは、サポート装置500においてサポートプログラム5104を実行することで、図15に示すようなユーザインターフェイス800における画面を表示させることができる。
図15を参照して、サポート装置500の画面の左側には、マルチビューエクスプローラ欄801が設けられている。さらに、マルチビューエクスプローラ欄801には、開発対象となるプログラムを指定するための切替スイッチ811が含まれる。
ユーザは、切替スイッチ811を用いてドロップダウンされたリストの中から「new_Controller_0」を指定することで、標準制御プログラム1104を開発するための画面を表示させることができ、ドロップダウンされたリストの中から「new_SafetyCPU0」を指定することで、セーフティプログラム2104を開発するための画面を表示させることができる。
この例では、切替スイッチ811において、セーフティプログラム2104に対応する「new_SafetyCPU0」が指定されている。
<K.セーフティプログラム開発のためのユーザインターフェイス900>
次に、サポート装置500が提供するセーフティプログラム2104を開発するためのユーザインターフェイス900の一例について説明する。
図16および図17は、本実施の形態に係るサポート装置500が提供するセーフティプログラム2104を開発するためのユーザインターフェイス900の一例を示す図である。ユーザは、図15に示した開発プログラムの切替のためのユーザインターフェイス800において「new_SafetyCPU0」を指定することで、図16に示すようなユーザインターフェイス900における画面を表示させることができる。
図16を参照して、サポート装置500の画面の左側には、マルチビューエクスプローラ欄901が設けられている。さらに、マルチビューエクスプローラ欄901には、開発対象となるプログラムを指定するための切替スイッチ911が含まれる。この例では、切替スイッチ911において、セーフティプログラム2104に対応する「new_SafetyCPU0」が指定されている。
また、マルチビューエクスプローラ欄901には、プログラミングに関して設定対象となる項目を指定するための切替スイッチ912が含まれる。切替スイッチ912によってドロップダウンされたリストの中には、プログラムを指定するための切替スイッチ913が含まれる。
さらに、切替スイッチ912によってドロップダウンされたリストの中には、利用可能なファンクションブロックの一覧を表示するための切替スイッチ914が含まれる。この例では、「new_SafetyCPU0」が有する機能を実現するために利用可能なファンクションブロックとして、「OC_SF_SS1」、「OC_SF_SS2」、および「OC_SF_ResetSafe」が表示されている。ここで表示されるファンクションブロックは、図13および図14に示したユーザインターフェイス700において、ユーザが追加したセーフティドライバ300の種類に応じて変化する。つまり、追加されたセーフティドライバ300が有する機能に対応するファンクションブロックがインポートされ、ユーザインターフェイス900における画面に表示される。なお、ファンクションブロックが自動でインポートされる他、ユーザが手動で所望のファンクションブロックを追加でインポートすることで、新たなファンクションブロックを利用可能とすることもできる。
図17を参照して、切替スイッチ913において、「Program0」が指定されている。さらに、サポート装置500の画面の右側には、利用可能なセーフティプログラム2104におけるユーザ定義ファンクションブロックのうちからユーザが所望するユーザ定義ファンクションブロックを指定するための切替スイッチ903が設けられている。この例では、切替スイッチ903において、「OC_SF_SS1」が指定されている。
ユーザが切替スイッチ903において、設定値の入力対象として「OC_SF_SS1」のファンクションブロックを指定すると、サポート装置500の画面の中央にセーフティプログラム2104を開発するためのプログラム画面902が表示される。
この例では、図11(B)に示したような、モーションセーフティ機能360としてSS1を実現するためのファンクションブロックが表示されている。ユーザは、プログラム画面902に表示されたファンクションブロックに対して設定値を入力(指定)することで、セーフティプログラム2104を作成することができる。
このように、サポート装置500を用いたユーザによるセーフティプログラム2104の開発時において、ユーザは、セーフティコントローラ200に対して少なくとも1つ以上のセーフティドライバ300を関連付けることができ、セーフティコントローラ200に対して少なくとも1つ以上のセーフティドライバ300を関連付けた場合に、当該少なくとも1つ以上のセーフティドライバ300のそれぞれが有する機能に対応する少なくとも1つ以上のファンクションブロックを利用することができる。これにより、ユーザは、セーフティコントローラ200に対して関連付けたセーフティドライバ300が有する機能に対応するファンクションブロックを自分で特定する必要がなく、ユーザのプログラミングにおける利便性を向上させることができる。また、セーフティコントローラ200においてプログラムが予め組み込まれているような形態ではなく、サポート装置500を用いてユーザが生成したセーフティプログラム2104をセーフティコントローラ200で実行するような形態であるため、ソフトウェアのバージョンアップを行う際にセーフティコントローラ200自体をバージョンアップする必要がなく、サポート装置500でプログラム開発時に用いられるソフトウェアをバージョンアップすることで事足りるため、バージョンアップに掛ける費用を極力抑えることができる。
<L.変形例>
上述した実施例においては、「コントローラ」としてセーフティコントローラ200を例示したが、「コントローラ」として標準コントローラ100を適用してもよい。このような変形例について、図18および図19を参照しながら説明する。
図18は、変形例に係るサポート装置500aが実行する自動インポート処理を説明するためのフローチャートである。図18を参照して、サポート装置500aは、デバイス定義ファイルに追加のデバイスの記載があるか否かを判定する(S2a)。デバイス定義ファイルは、変形例に係る制御システム2000において接続されている構成を特定するための情報を含む。つまり、サポート装置500aは、制御システム2000において接続されている構成に対して新たなデバイスが追加されたか否かを判定する。サポート装置500は、デバイス定義ファイルに追加のデバイスの記載がない場合(S2aでNO)、本処理を終了する。一方、サポート装置500は、デバイス定義ファイルに追加のデバイスの記載がある場合(S2aでYES)、S4の処理に移行する。S4以降の処理は、図12に示した自動インポート処理におけるS4以降の処理と同じである。
図19は、変形例に係る制御システム2000の適用例を示す模式図である。図19を参照して、変形例に係る制御システム2000は、主として、標準コントローラ2100、ならびに、標準コントローラ2100とフィールドネットワーク2002を介して接続される1または複数の制御対象2300(2300a,2300b,2300c)を含む。
標準コントローラ2100は、上述した標準コントローラ100と同様の構成および機能を有する。制御対象2300aは、たとえば、ロードセル入力ユニットであり、荷重を電気信号に変換するロードセル2400aに接続されている。制御対象2300bは、たとえば、温度調整ユニットであり、ヒータ2400bに接続されている。制御対象2300cは、たとえば、位置インターフェイスユニットであり、エンコーダ2400cに接続されている。これら制御対象2300(2300a,2300b,2300c)は、各々に接続された各駆動部2400(2400a,2400b,2400c)を駆動制御する。
標準コントローラ2100は、プログラムに従って、制御対象2300に対する制御を実行する。標準コントローラ2100で実行されるプログラムは、標準コントローラ2100と通信可能に接続されたサポート装置2500が提供する開発環境を利用して、ユーザによって予め作成され、標準コントローラ2100に転送される。
制御対象2300は、標準コントローラ2100からの指令に従って、各駆動部2400(2400a,2400b,2400c)を駆動制御する。
サポート装置2500は、標準コントローラ2100で実行されるプログラムの開発を支援する。たとえば、サポート装置2500は、少なくとも1つ以上の命令情報(ファンクションブロック)を組み合わせることでプログラムを生成するための開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)をユーザに提供する。
プログラムにおけるファンクションブロックは、標準コントローラ2100に関連付けられた制御対象2300が有する機能に対応している。具体的には、ユーザは、標準コントローラ2100に対して、少なくとも1以上の制御対象2300を通信可能に接続させることが可能であり、各制御対象2300は、実行可能な機能が予め定められている。そして、各機能に対応するように、ファンクションブロック(命令情報)が予め設けられている。標準コントローラ2100に対して少なくとも1以上の制御対象2300が接続されると、接続された制御対象2300が有する機能に対応するファンクションブロックが、サポート装置2500にインポートされ、ユーザによって利用可能とされる。
サポート装置2500は、標準コントローラ2100に対して少なくとも1つ以上の制御対象2300を関連付ける関連付け部5211を有する。たとえば、関連付け部5211は、標準コントローラ2100に対して新たに制御対象2300cが接続された場合、ネットワーク構成情報5331aを更新してネットワーク構成情報5331bを生成する。更新後のネットワーク構成情報5331bには、制御システム2000の構成について、標準コントローラ2100と、当該標準コントローラ2100に接続された制御対象2300a、制御対象2300b、および制御対象2300cとで、ネットワークが構成されている旨の情報が格納されている。このようにして、標準コントローラ2100に対して新たに制御対象2300cが関連付けられる。
また、サポート装置2500は、対応データ5305を保持する。対応データ5305には、標準コントローラ2100によって実行可能な各機能に対応する命令情報を特定するための情報が格納されている。対応データ5305における各機能は、制御対象2300ごとに有されるか否かが予め決められている。たとえば、制御対象2300aは機能1および機能2を有し、制御対象2300bは機能1および機能3を有し、制御対象2300cは機能3および機能4を有する。
ネットワーク構成情報5331の更新前においては、ネットワーク構成情報5331aに示すように、制御対象2300として、制御対象2300aおよび制御対象2300bが標準コントローラ2100に関連付けられている。この場合、ユーザは、制御対象2300aについては、機能1に対応する命令情報1、および機能2に対応する命令情報2を利用してプログラミング可能である。また、ユーザは、制御対象2300bについては、機能1に対応する命令情報1、および機能3に対応する命令情報3を利用してプログラミング可能である。
一方、ネットワーク構成情報5331の更新後においては、ネットワーク構成情報5331bに示すように、新たに制御対象2300cが標準コントローラ2100に関連付けられている。本実施の形態に係る制御システム2000において、サポート装置2500は、少なくとも1つ以上の制御対象2300のそれぞれが有する機能に対応する少なくとも1つ以上の命令情報を特定してユーザに利用可能とさせる特定部5212を有する。
サポート装置2500は、ネットワーク構成情報5331bに示すように、新たに制御対象2300cが標準コントローラ2100に関連付けられた場合、特定部5212によって、制御対象2300cが有する機能3に対応する命令情報3および機能4に対応する命令情報4を特定し、プログラム開発のプロジェクトにインポートすることで、命令情報3および命令情報4を、ユーザに利用可能とさせる。これにより、ユーザは、制御対象2300cについて、機能3に対応する命令情報3、および機能4に対応する命令情報4を利用してプログラミング可能となる。
このように、サポート装置2500を用いたユーザによるプログラムの開発時において、ユーザは、標準コントローラ2100に対して少なくとも1つ以上の制御対象2300を関連付けることができ、標準コントローラ2100に対して少なくとも1つ以上の制御対象2300を関連付けた場合に、当該少なくとも1つ以上の制御対象2300のそれぞれが有する機能に対応する少なくとも1つ以上の命令情報を利用することができる。これにより、ユーザは、標準コントローラ2100に対して関連付けた制御対象2300が有する機能に対応する命令情報を自分で特定する必要がなく、ユーザのプログラミングにおける利便性を向上させることができる。また、標準コントローラ2100においてプログラムが予め組み込まれているような形態ではなく、サポート装置2500を用いてユーザが生成したプログラムを標準コントローラ2100で実行するような形態であるため、ソフトウェアのバージョンアップを行う際に標準コントローラ2100自体をバージョンアップする必要がなく、サポート装置2500でプログラム開発時に用いられるソフトウェアをバージョンアップすることで事足りるため、バージョンアップに掛ける費用を極力抑えることができる。
<M.付記>
以上のように、本実施の形態では以下のような開示を含む。
[構成1]
制御システム(1000)であって、
少なくとも1つ以上の制御対象(1300)と、
前記少なくとも1つ以上の制御対象を制御するコントローラ(1200)と、
前記少なくとも1つ以上の制御対象を制御するために前記コントローラで実行されるプログラムの開発を支援するサポート装置(1500)とを備え、
前記少なくとも1つ以上の制御対象のそれぞれは、当該制御対象に対応する機能を有し、
前記少なくとも1つ以上の制御対象のそれぞれが有する機能は、当該各機能に対応する少なくとも1つ以上の命令情報に従って実行され、
前記サポート装置は、
前記少なくとも1つ以上の命令情報を組み合わせることで前記プログラムを生成するための開発環境をユーザに提供し、
前記コントローラに対して前記少なくとも1つ以上の制御対象を関連付ける関連付け部(5111)と、
前記関連付け部によって前記コントローラに対して前記少なくとも1つ以上の制御対象が関連付けられた場合に、当該少なくとも1つ以上の制御対象のそれぞれが有する機能に対応する前記少なくとも1つ以上の命令情報を特定してユーザに利用可能とさせる特定部(5112)とを含む、制御システム(1000)。
[構成2]
前記少なくとも1つ以上の命令情報は、ユーザが設定値を入力することでプログラミング可能なファンクションブロックで規定される、構成1の制御システム。
[構成3]
前記コントローラは、前記制御システムにおける安全を管理するセーフティコントローラ(200)であり、
前記少なくとも1つ以上の制御対象は、前記セーフティコントローラからの指令に従って所定のセーフティ機能を実行するセーフティスレーブ(240,300)である、構成1または構成2の制御システム。
[構成4]
前記制御システムは、モータ(400)を制御する標準コントローラ(100)を備え、
前記コントローラは、前記制御システムにおける安全を管理するセーフティコントローラ(200)であり、
前記セーフティスレーブは、前記標準コントローラからの指令に従って前記モータを動作させる一方で、前記セーフティコントローラからの指令に従って前記所定のセーフティ機能を実行するセーフティドライバ(300)である、構成3の制御システム。
[構成5]
前記少なくとも1つ以上の命令情報は、安全に関する認証を受けている、構成3または構成4の制御システム。
[構成6]
前記特定部は、前記関連付け部によって前記コントローラに関連付けられた前記少なくとも1つ以上の制御対象が有する固有の識別情報を手掛かりに、当該少なくとも1つ以上の制御対象のそれぞれが有する機能に対応する前記少なくとも1つ以上の命令情報を特定する、構成1~構成5のいずれかの制御システム。
[構成7]
前記特定部は、前記関連付け部によって前記コントローラに関連付けられた前記少なくとも1つ以上の制御対象のそれぞれが有する機能に対応する少なくとも1つ以上の前記ファンクションブロックと同じ名前のファンクションブロックが既にユーザに利用可能とされている場合、所定の条件が成立したときに、当該少なくとも1つ以上のファンクションブロックをユーザに利用可能とさせる、構成2~構成6のいずれかの制御システム。
[構成8]
前記所定の条件は、利用対象である前記少なくとも1つ以上のファンクションブロックと、既にユーザに利用可能とされているファンクションブロックとで、巡回冗長検査用のデータが一致しないときに成立する、構成7の制御システム。
[構成9]
前記所定の条件は、利用対象である前記少なくとも1つ以上のファンクションブロックと、既にユーザに利用可能とされているファンクションブロックとで、作成者が同じであり、かつ、利用対象である前記少なくとも1つ以上のファンクションブロックが、既にユーザに利用可能とされているファンクションブロックよりも、バージョンまたは更新日時が新しいときに成立する、構成8の制御システム。
[構成10]
少なくとも1つ以上の制御対象(1300)を制御するためにコントローラ(1200)で実行されるプログラムの開発を支援するサポート装置(1500)であって、
前記少なくとも1つ以上の制御対象のそれぞれは、当該制御対象に対応する機能を有し、
前記少なくとも1つ以上の制御対象のそれぞれが有する機能は、当該各機能に対応する少なくとも1つ以上の命令情報に従って実行され、
前記サポート装置は、
前記少なくとも1つ以上の命令情報を組み合わせることで前記プログラムを生成するための開発環境をユーザに提供し、
前記コントローラに対して前記少なくとも1つ以上の制御対象を関連付ける関連付け部(5111)と、
前記関連付け部によって前記コントローラに対して前記少なくとも1つ以上の制御対象が関連付けられた場合に、当該少なくとも1つ以上の制御対象のそれぞれが有する機能に対応する前記少なくとも1つ以上の命令情報を特定してユーザに利用可能とさせる特定部(5112)とを備える、サポート装置。
[構成11]
少なくとも1つ以上の制御対象(1300)を制御するためにコントローラ(1200)で実行されるプログラムの開発を支援するサポートプログラム(5104)であって、
前記少なくとも1つ以上の制御対象のそれぞれは、当該制御対象に対応する機能を有し、
前記少なくとも1つ以上の制御対象のそれぞれが有する機能は、当該各機能に対応する少なくとも1つ以上の命令情報に従って実行され、
前記サポートプログラムは、前記少なくとも1つ以上の命令情報を組み合わせることで前記プログラムを生成するための開発環境をユーザに提供し、
前記サポートプログラムは、コンピュータ(502)に、
前記コントローラに対して前記少なくとも1つ以上の制御対象を関連付けるステップと、
前記コントローラに対して前記少なくとも1つ以上の制御対象が関連付けられた場合に、当該少なくとも1つ以上の制御対象のそれぞれが有する機能に対応する前記少なくとも1つ以上の命令情報を特定してユーザに利用可能とさせるステップとを実行させる、サポートプログラム。
<N.利点>
本実施の形態に係る制御システム1によれば、サポート装置1500を用いたユーザによるプログラムの開発時において、ユーザは、コントローラ1200に対して少なくとも1つ以上の制御対象1300を関連付けることができ、コントローラ1200に対して少なくとも1つ以上の制御対象1300を関連付けた場合に、当該少なくとも1つ以上の制御対象1300のそれぞれが有する機能に対応する少なくとも1つ以上の命令情報を利用することができる。これにより、ユーザは、コントローラ1200に対して関連付けた制御対象1300が有する機能に対応する命令情報を自分で特定する必要がなく、ユーザのプログラミングにおける利便性を向上させることができる。また、コントローラ1200においてプログラムが予め組み込まれているような形態ではなく、サポート装置1500を用いてユーザが生成したプログラムをコントローラ1200で実行するような形態であるため、ソフトウェアのバージョンアップを行う際にコントローラ1200自体をバージョンアップする必要がなく、サポート装置1500でプログラム開発時に用いられるソフトウェアをバージョンアップすることで事足りるため、バージョンアップに掛ける費用を極力抑えることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。