(57)【特許請求の範囲】
【請求項１】
制御対象となるデバイスとネットワークを介して接続されるプログラマブルコントローラであって、
前記ネットワークを介して、前記デバイスの識別子並びに当該デバイスが利用する機能及び動作方法を規定するモード情報を通知するように当該デバイスに要求する制御部と、
前記要求に応じて前記デバイスが前記ネットワークを介して通知してきた前記識別子及び前記モード情報を記憶する記憶部と、
前記識別子及び前記モード情報に基づいて、データベースサーバから取得したデバイスドライバに含まれる前記デバイスを制御する１つ以上のソフトウェアモジュールを保持するプログラムメモリと、
前記デバイスを制御するためのＩ／Ｏ情報が記載されるＩ／Ｏメモリファイルを保持するリンクメモリと、
前記Ｉ／Ｏメモリファイルを管理するファイルシステムコントローラと、
前記ソフトウェアモジュールの実行時には、前記ファイルシステムコントローラを介して前記Ｉ／Ｏメモリファイルを参照及び変更するプログラム実行部と、
を備え、
前記リンクメモリに前記ソフトウェアモジュールに対応する前記Ｉ／Ｏメモリファイルを保持するためのＩ／Ｏメモリ領域を割り付ける
ことを特徴とするプログラマブルコントローラ。
【請求項２】
前記プログラム実行部は、前記デバイスからの通信をトリガとして前記ソフトウェアモジュールを実行する
ことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
プログラマブルコントローラに接続されているデバイスに対して、前記デバイスの識別子並びに当該デバイスが利用する機能及び動作方法を規定するモード情報を通知するように要求するステップと、
前記要求に応じて前記デバイスが通知してきた前記識別子及び前記モード情報を記憶するステップと、
前記識別子及び前記モード情報に基づいて、前記プログラマブルコントローラに接続されたデータベースサーバからデバイスドライバに含まれる前記デバイスを制御する１つ以上のソフトウェアモジュールを取得するステップと、
前記ソフトウェアモジュールに対応して前記デバイスを制御するためのＩ／Ｏ情報を記憶する領域を確保するステップと、
前記ソフトウェアモジュールの実行時には、前記Ｉ／Ｏ情報を参照及び変更するステップと、
を備える
ことを特徴とするプログラマブルコントローラの制御方法。
【請求項４】
前記Ｉ／Ｏ情報を記憶する領域を確保するステップの後に、前記プログラマブルコントローラに接続されているデバイスに対して、前記デバイスの識別子並びに当該デバイスが利用する機能及び動作方法を規定するモード情報を通知するように要求するステップをさらに備える
ことを特徴とする請求項３に記載のプログラマブルコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続したデバイスに対して稼動に必要なデバイスドライバを自動的に与えることで自動機の構築・運用を容易とするプログラマブルコントローラおよびプログラマブルコントローラの制御方法に関するものである。
【背景技術】
【０００２】
以下のような自動機一般を構築する際には、例えばＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）やモーションコントローラなどのコントローラが利用される。
・ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）分野で用いられる工作機械
・産業用ロボットなどの産業用自動機
・自律ロボット
・各種自動設備などの一般用途の自動機【０００３】
これらコントローラには、コントローラに信号を入力するセンサやスイッチなどの各種入力デバイスが接続される。同様にして、コントローラにより制御されるモータや表示器などの各種出力デバイスが接続される。また、コントローラには、それら入出力デバイスへの指令（指示）を記述するプログラムが搭載されている。プログラムに記述される指令（指示）が入出力デバイスに伝えられることにより、自動機は動作する。【０００４】
上記の入出力デバイスは、コントローラの入出力コネクタ（即ち、入出力ポート）に接続される。従来のコントローラを利用する場合に、プログラム作成者は、コントローラのどの（何番目の）入出力ポートにどの種類の入出力デバイスを接続するか（したか）を正確に把握する必要があった。その上で、コントローラ上で使用される、デバイスに係るソフトウェアモジュールや動作プログラムの設定が、正確に行われた。そうしなければ、コントローラが該デバイスに適切な指令（指示）を送って正しく制御することができないのである。なお、デバイスに係るソフトウェアモジュールには、例えばデバイスドライバが含まれる。【０００５】
従来、自動機のシステムを構築・運用するには、プログラマブルコントローラおよび各種デバイス（センサ，ビジョンセンサ，ロボット，サーボモータ，インバータ等）を相互に接続し、それらを制御するためのデバイスドライバをプログラマブルコントローラ及び各種デバイスへ与える必要がある。そのため、各種デバイスの接続から各種デバイスおよびプログラマブルコントローラへの設定、トラブル発生時の再稼動といった作業を自動機のシステムの稼動現場の作業者が実施しているが、接続する各種デバイスが多くなるほど、立ち上げや問題発生時の再稼動までにかかる作業コストは増大する。【０００６】
システムを構築する際の作業コストを低減する手法として、ＵＳＢやＩＥＥＥ１３９４に代表される接続したデバイスに対して、利用者が特殊な設定をすることなく利用可能とする仕組みであるプラグアンドプレイ機能をプログラマブルコントローラに利用した発明が考案されている。ＧＵＩＤ（Ｇｌｏｂａｌ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）とは、世界で重複することなく一意にデバイスを識別可能な識別子のことであり、特許文献１においては、接続したデバイスのＧＵＩＤを収集することで、収集したＧＵＩＤにより特定したデバイスに対して必要なソフトウェアモジュールおよびデバイスパラメータや設定情報のまとまりであるデバイスドライバを自動的にリンクし、利用可能とする技術を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−７２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記した特許文献１におけるデバイスドライバの自動リンクでは特定の状況では自動的にリンクしているとは言えず、利用者による操作を前提としている。【０００９】
例えば、デバイスによっては複数の機能を実行可能であるため、利用する機能によってプログラマブルコントローラ内で実行するのに適したソフトウェアモジュールが異なることから複数のソフトウェアモジュールを提供する必要がある。【００１０】
特許文献１においては、特定のデバイスに上述した複数のソフトウェアモジュールが提供可能な際に利用するソフトウェアモジュールの決定を、ＧＵＩを用いて人の手で行っている。すなわち、従来のプログラマブルコントローラにおいて複数のデバイスドライバが利用可能である場合は、利用者による操作を前提としていた。そのため、システム規模が大きくなると稼動までのコストが増大するという問題があった。【００１１】
本発明は、上記に鑑みてなされたものであって、リンクするデバイスドライバを特定するのに複数のソフトウェアモジュールの候補がある場合でも、デバイスドライバの自動リンクを可能とし、接続デバイスのプラグアンドプレイを実現するプログラマブルコントローラを得ることを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、制御対象となるデバイスとネットワークを介して接続されるプログラマブルコントローラであって、前記ネットワークを介して、前記デバイスの識別子並びに当該デバイスが利用する機能及び動作方法を規定するモード情報を通知するように当該デバイスに要求する制御部と、前記要求に応じて前記デバイスが前記ネットワークを介して通知してきた前記識別子及び前記モード情報を記憶する記憶部と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明にかかるプログラマブルコントローラは、プラグアンドプレイ機能により、接続するだけでデバイスが利用可能となり、ユーザのシステム構築が容易となり、システム稼動までにかかるコストを削減できるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態にかかるプログラマブルコントローラに制御対象となる各種デバイスとデータベースサーバがネットワークを介して接続されたシステムの構成を示す図である。
【図２】図２は、本発明の実施の形態において接続されたデバイスがプラグアンドプレイ機能により利用可能となるまでの処理の流れを示すフローチャートである。
【図３】図３は、本発明の実施の形態において、プログラマブルコントローラがネットワークに接続されてからのプラグアンドプレイ機能の処理の流れを示すフローチャートである。
【図４】図４は、本発明の実施の形態にかかるプログラマブルコントローラの詳細な構成を示す図である。
【図５】図５は、本発明の実施形態にかかるシステムの具体的な構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本発明にかかるプログラマブルコントローラおよびプログラマブルコントローラの制御方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１６】
実施の形態．
図１は、本発明の実施の形態における自動機の構成として、プログラマブルコントローラ１０とプログラマブルコントローラ１０によって制御される各種デバイスであるデバイス２１，２２，および２３がネットワーク３０によって接続されている基本的な構成を示す図である。デバイス２１，２２，および２３とは、具体的には、例えば、センサ、ビジョンセンサ、ロボット、サーボモータ、インバータ、などである。
【００１７】
図１において、プログラマブルコントローラ１０は自動機の制御の中心となるプログラマブルコントローラとなっている。デバイス２１，２２，および２３はプログラマブルコントローラ１０による制御によりシステムの要素として稼動する各種デバイスである。ネットワーク３０は、プログラマブルコントローラ１０と被制御対象となる各種デバイスであるデバイス２１，２２，および２３との通信媒体となるネットワーク３０である。また、データベースサーバ４０は、ネットワーク３０を介してプログラマブルコントローラ１０、デバイス２１，２２，および２３に接続されており、各種デバイスであるデバイス２１，２２，および２３とそれらに対応したデバイスドライバのデータを有したデータベースサーバである。
【００１８】
図１は、図５に示すシステムの具体的な構成の一例を簡素化して示した図である。図５において、ネットワーク３０の中心にはハブ３１が存在する。図５においては、デバイス２１，２２，および２３がネットワーク３０にまだ接続されていない状態が示されているが、図１は、図５の全てのデバイス２１，２２，および２３が接続された後の構成を示してある。
【００１９】
図４は、プログラマブルコントローラ１０の詳細な構成を示す図である。プログラマブルコントローラ１０は、通信コントローラ６０、ファイルシステムコントローラ６１、プログラム実行部６２、リンクメモリ５０、プログラムメモリ５１、制御部７０、および記憶部７１を備える。なお、通信コントローラ６０、ファイルシステムコントローラ６１、プログラム実行部６２、および制御部７０は同一のＣＰＵなどによりその機能が実現されてもよい。
【００２０】
次に、本実施の形態にかかるプログラマブルコントローラ１０において、プラグアンドプレイ機能がどのような処理により実現されるのかについて説明する。
【００２１】
図２は、デバイスから識別子であるＧＵＩＤとデバイスが利用する機能や動作方法を規定したモード情報を通知されてから、デバイスを利用可能状態とするまでのプログラマブルコントローラ１０の処理の流れを示すフローチャートである。
【００２２】
まず、ネットワーク３０に接続されたデバイス２１，２２，および２３は、識別子であるＧＵＩＤとモード情報をプログラマブルコントローラ１０に通知する。そして、プログラマブルコントローラ１０は、デバイスを利用可能とするための設定や１つ以上のソフトウェアモジュールのまとまりであるデバイスドライバを特定するために、通知された識別子であるＧＵＩＤとモード情報を図４の記憶部７１に記憶する（図２、ステップＳ１）。
【００２３】
続いて、プログラマブルコントローラ１０は、記憶部７１に記憶されている通知された識別子であるＧＵＩＤおよびモード情報に基づいてデータベースサーバ４０から一意にデバイスドライバを取得する（ステップＳ２）。データベースサーバ４０は、各種デバイスに対応したデバイスドライバのデータを保持しており、さらに各デバイスドライバは、接続されたデバイスを制御する１つ以上のソフトウェアモジュールを含んでいる。プログラマブルコントローラ１０は、各デバイスドライバに含まれるソフトウェアモジュールの中から、ネットワーク３０に接続されたデバイスが利用する機能や動作方法を規定したモード情報に基づいて、一意にソフトウェアモジュールを特定することが可能である。これにより、デバイスの接続から当該デバイスを利用可能となるまでに、従来必要であった人手による操作が不要となる。
【００２４】
取得したデバイスドライバに含まれ、モード情報に基づいて選択されたソフトウェアモジュールは、プログラムメモリ５１に保存される。さらに、プログラムメモリ５１に保存されたソフトウェアモジュールそれぞれに対して、プログラマブルコントローラ１０内のリンクメモリ５０に制御用のＩ／Ｏメモリ領域を割り付ける。これにより、デバイス２１，２２，および２３それぞれに対応するソフトウェアモジュールをプログラマブルコントローラ１０上で実行可能な状態に設定する（ステップＳ３）。なお、デバイスによっては複数の機能を実行可能であるため、利用する機能によってプログラマブルコントローラ１０内で実行するのに適したソフトウェアモジュールが異なることから複数のソフトウェアモジュールを提供する必要がある。すなわち、１つのデバイスに対して、プログラムメモリ５１に保存されるソフトウェアモジュールは複数存在する場合がある。このような場合においても、各ソフトウェアモジュールに対応してそれぞれのＩ／Ｏメモリ領域をリンクメモリ５０内に割り付ける。
【００２５】
そして、デバイスドライバ内にデバイスパラメータ等のデバイス２１，２２，および２３に必要な設定情報が存在する場合はネットワーク３０を介してデバイス２１，２２，および２３へ転送し、接続したデバイス２１，２２，および２３が利用可能となる（ステップＳ４）。すなわち、デバイス２１，２２，および２３のプラグアンドプレイが実現される。
【００２６】
図２のステップＳ１における、デバイス２１，２２，および２３からプログラマブルコントローラ１０への通知のタイミングと方法について以下に説明を行う。
【００２７】
デバイス２１，２２，および２３は、デバイスドライバがリンクされた状態としてリンク完了状態という状態を有している。デバイス２１，２２，および２３は、リンク完了状態ではない場合は、ネットワーク３０への接続を検出した場合、または、プログラマブルコントローラ１０からの通知要求を受けた場合に自らのＧＵＩＤおよび、モード情報の通知を実施する。
【００２８】
また、デバイス２１，２２，および２３は、リンク完了状態となった時点でネットワーク３０を介した自らのＧＵＩＤおよび、モード情報の通知を停止し、プログラマブルコントローラ１０からの通知要求を受けても通知を実施しない。
【００２９】
図３は、プログラマブルコントローラ１０がネットワーク３０に接続されてからのプラグアンドプレイ機能の処理の流れを示すフローチャートである。
【００３０】
プログラマブルコントローラ１０は、ネットワーク３０へ接続されたことを検出した場合、制御部７０が、ネットワーク３０を介してそれに接続される全てのデバイス、図１の例ならば、デバイス２１，２２，および２３へ通知要求を送信する（図３、ステップＳ１１）。
【００３１】
そして、１つ以上のデバイスからの通知を受信したか否かが判定される（ステップＳ１２）。１つ以上のデバイスからの通知を受信した場合（ステップＳ１２：Ｙｅｓ）は、通知したデバイスを利用可能とするために、図２のフローチャートで示した一連の処理を実施する（ステップＳ１３）。
【００３２】
また、デバイスからの通知を受信できない場合（ステップＳ１２：Ｎｏ）は、待機となり何もせずステップＳ１２に戻る。
【００３３】
ステップＳ１３の後、通知した全てのデバイスを利用可能としたか否かが判定される（ステップＳ１４）。通知した全てのデバイスが利用可能となるまで（ステップＳ１４：Ｎｏ）は、通知した全てのデバイスに対して、ステップＳ１３（図２の手順）を繰り返す。
【００３４】
通知した全てのデバイスが利用可能となった場合（ステップＳ１４：Ｙｅｓ）、すなわち、プログラマブルコントローラ１０が通知した全てのデバイスに対してプラグアンドプレイの処理を実行した後は、ステップＳ１１にもどり、プログラマブルコントローラ１０の制御部７０は、通信コントローラ６０を制御してネットワーク３０を介してデバイスへ通知要求を再度送信する。
【００３５】
本実施の形態においては、通知した全てのデバイスが利用可能となった（ステップＳ１４：Ｙｅｓ）後、プログラマブルコントローラ１０は、再度ネットワーク３０を介してデバイスへ通知要求を送信する（ステップＳ１１）。これにより、多数のデバイスを接続する状況が多いときや、他のデバイスからの通知の受信に失敗した場合でもデバイスの接続を検出できる。
【００３６】
上記の検出方法により、定期的にネットワーク３０全体に対して新たに接続されたデバイスが存在するか否かを確認するために通知要求を繰り返す方法に比べて、デバイスの検出によるネットワーク３０への負荷を低減することができる。
【００３７】
また、デバイスからの識別子であるＧＵＩＤとモード情報の通知はタイミングをずらすことによってネットワーク３０にかかる負荷を分散してもよい。
【００３８】
図２のステップＳ３におけるリンク用のＩ／Ｏメモリ領域の割り付けについて、図４を用いて以下に説明を行う。
【００３９】
ステップＳ３のＩ／Ｏメモリ領域の割り付けにおいては、各デバイスに専用のメモリ領域であるリンクメモリ５０にデバイスを制御するためのＩ／Ｏ情報をファイルの内容とするＩ／Ｏメモリファイルを割り当てる。ただし、リンクメモリ５０は汎用的に利用可能なファイルシステムにより管理されており、Ｉ／Ｏメモリファイルをファイルシステムコントローラ６１を介してファイル単位で管理する。
【００４０】
プラグアンドプレイ実行時の動作として、まず、Ｉ／Ｏメモリをファイルの内容とするＩ／Ｏメモリファイルをプログラマブルコントローラ１０内のリンクメモリ５０上に作成する（図２、ステップＳ３）。
【００４１】
続いて、図２のステップＳ２でデータベースサーバ４０から取得したデバイスドライバに含まれるプログラマブルコントローラ１０上で動作するソフトウェアモジュールと、Ｉ／Ｏメモリファイルをリンクして制御情報として利用する。
【００４２】
図４に示すように、プログラマブルコントローラ１０とデバイス２１，２２，および２３との通信実行時は、通信コントローラ６０からファイルシステムコントローラ６１を介して、Ｉ／Ｏメモリファイルの参照及び変更が実施されるように制御部７０が制御する。プログラマブルコントローラ１０のプログラム実行時はプログラム実行部６２からファイルシステムコントローラ６１を介して、Ｉ／Ｏメモリファイルの参照及び変更が実施されるように制御部７０が制御する。
【００４３】
図２のステップＳ３で作成されるＩ／Ｏメモリファイルのファイル名はＩ／Ｏメモリを割り当てるデバイスのＧＵＩＤをもとに決定される一意なファイル名である。
【００４４】
自動機システムに接続されるデバイスに割り当てるメモリはシステム規模が増大するほど管理にかかるコストが増大するため、本実施の形態のようにＩ／Ｏメモリをファイルとして管理することにより、リンク用のＩ／Ｏメモリを管理しやすくなる。
【００４５】
加えて、デバイス単位でのモニタやロギングといった機能を利用しやすくなるといった効果も見込める。
【００４６】
ステップＳ３のＩ／Ｏメモリ領域の割り付けとデバイス２１，２２，および２３に対応するデバイスドライバのソフトウェアモジュールとのリンクにより、例えば、デバイス２１の制御用のソフトウェアモジュール(デバイス２１)を実行する場合、プログラム実行部６２はファイルシステムコントローラ６１を介して割り付けたＩ／Ｏメモリファイル(デバイス２１)のデータを参照する。デバイス２１の制御用のソフトウェアモジュール(デバイス２１)の実行が完了した後、  Ｉ／Ｏメモリファイル(デバイス２１)への変更要求が発生している場合はファイルシステムコントローラ６１を介して内容を書き戻す。なお、プログラム実行部６２は、例えば、デバイスからの通信をトリガとして当該デバイスの制御用のソフトウェアモジュールを実行するようにしてもよい。
【００４７】
以上説明したように、本実施の形態にかかるプログラマブルコントローラおよびプログラマブルコントローラの制御方法においては、デバイスから収集する情報にデバイスの利用する機能や動作方法を特定するモード情報を設けて、ＧＵＩＤと合わせて収集する。これにより、リンクするデバイスドライバを特定するのに複数のソフトウェアモジュールの候補がある場合でも、デバイスが利用する機能や動作方法を規定するモード情報から一意にソフトウェアモジュールを特定することが可能となる。これにより、物理的にデバイスをネットワークに接続する以外は、人手による操作を必要とすることなくプラグアンドプレイ機能を提供できるようにする。
【００４８】
さらに、本願発明は上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施の形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。更に、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。
【産業上の利用可能性】
【００４９】
以上のように、本発明にかかるプログラマブルコントローラは、システムの構築に適したプラグアンドプレイ機能を搭載したプログラマブルコントローラに有用であり、特に、自動機システムの構築に適している。
【符号の説明】
【００５０】
１０  プログラマブルコントローラ、２１，２２，２３  デバイス、３０  ネットワーク、４０  データベースサーバ、５０  リンクメモリ、５１  プログラムメモリ、６０  通信コントローラ、６１  ファイルシステムコントローラ、６２  プログラム実行部、７０  制御部、７１  記憶部。
【図１】
0005921781.tif 000002
【図２】
0005921781.tif 000003
【図３】
0005921781.tif 000004
【図４】
0005921781.tif 000005
【図５】
0005921781.tif 000006