(58)【調査した分野】(Int.Cl.,DB名)
前記ポートから前記機器が外されると、前記機器と前記操作端末との接続を終了するステップを前記操作端末にさらに実行させる、請求項8〜10のいずれか1項に記載のプログラム。
前記機器と前記操作端末とを接続するステップは、前記機器の接続形態がPPP接続であると、前記機器と前記操作端末とをPPP接続するステップを含む、請求項12に記載のプログラム。
前記機器と前記操作端末とを接続するステップは、前記機器の接続形態がシリアル接続であると、前記機器と前記操作端末とをシリアル接続するステップを含む、請求項13に記載のプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
プログラマブルロジックコントローラとコンピュータとは、イーサネット(登録商標)以外にも、USB(Universal Serial Bus)等を用いたシリアル通信により接続される場合もある。特に、プログラマブルロジックコントローラとコンピュータとを1対1で接続する場合、USB等のシリアル通信を用いることが多い。この場合、独自の通信プロトコルを利用して通信することが一般的である。一方、イーサネット(登録商標)による通信では、TCP/IP(Transmission Control Protocol/Internet Protocol)のように、ソケットに基いた通信が一般的になりつつある。このような状況において、プログラマブルロジックコントローラとコンピュータとの接続がイーサネット(登録商標)およびUSBの両方をサポートするには、複数の通信プロトコルをコンピュータに実装する必要がある。そのため、開発者にとって煩わしいものであった。
【0006】
上記のように複数の通信形式をサポートする場合、ネットワークの種別毎に別々の設定をする必要があるため、ユーザが行なうべき設定も煩雑になり得る。また、ネットワーク毎に異なる態様で通信が制約され得る。そのため、ユーザの利便性が損なわれ得る。
【0007】
したがって、FTP(File Transfer Protocol)、Telnet(Telecommunication network)を、イーサネット(登録商標)上のアプリケーションとしてイーサネットポートを介して実行するのと同様の通信がUSB回線上で実現できると便利である。
【0008】
その他、TCP・UDP(Transmission Control Protocol・User Datagram Protocol)を用いたユーザプログラムや、HTTP(HyperText Transfer Protocol)などをUSB回線上で利用できると便利である。
【0009】
さらに、USBをシリアルとして利用するとポートを1つのアプリケーションで占有してしまうと、他のアプリケーションでは使えなくなるため、別途、共有のための仕組みを構築する必要があるが、イーサネット(登録商標)のソケットとして提供すれば、複数のアプリケーション間での共有が容易になる。
【0010】
PPP(Point-to-Point Protocol)の利用は、シリアル通信回線上でイーサネット(登録商標)のプロトコルを構築し、稼動させるための方法の1つである。PPPを用いることにより、シリアル通信回線を利用してモデム接続を実行するとともに、モデム接続上でイーサネット(登録商標)に基いた通信を実行できる。
【0011】
通常、PPPに基いた接続を実行する場合、電話回線を用いた接続を想定した上で種々の設定がユーザによりなされる。したがって、接続先の電話番号、または電話番号に相当する接続先のアドレスなどをユーザが指定するとともに、ユーザの操作により接続を開始することが一般的である。
【0012】
しかしながら、コンピュータの接続先は、USBケーブルなどによって直接コンピュータに繋がれたプログラマブルロジックコントローラ等である。したがって、接続のための煩わしい手続きをせずに、コンピュータとプログラマブルロジックコントローラとを接続することが望まれる。
【0013】
本発明は、上述の課題を解決するためになされたものであり、その目的は、接続に関する利便性を向上することである。
【課題を解決するための手段】
【0014】
ある実施例において、通信のためのポートが設けられた操作端末は、ポートに機器が繋がれると、ポートに繋がれた機器から、機器の接続形態を示す情報を取得するための取得手段と、ポートに繋がれた機器の接続形態に従って、機器と操作端末とを接続するための接続手段とを備える。
【0015】
ある実施例において、プログラムは、通信のためのポートが設けられた操作端末に、ポートに機器が繋がれると、ポートに繋がれた機器から、機器の接続形態を示す情報を取得するステップと、ポートに繋がれた機器の接続形態に従って、機器と操作端末とを接続するステップとを実行させる。
【0016】
ある実施例において、制御システムは、通信のためのポートが設けられた操作端末と、ポートに繋がれる機器とを備える。操作端末は、ポートに機器が繋がれると、ポートに繋がれた機器から、機器の接続形態を示す情報を取得するための取得手段と、ポートに繋がれた機器の接続形態に従って、機器と操作端末とを接続するための接続手段とを含む。
【発明の効果】
【0017】
ポートに機器が繋がれると、機器の接続形態に従って自動的に機器と操作端末とが接続される。そのため、ユーザが煩わしい設定をしなくても、機器と操作端末との間の通信が可能となる。よって、接続に関する利便性が向上する。
【発明を実施するための形態】
【0019】
図1を参照して、本実施の形態に係る制御システム10について説明する。制御システム10は、プログラマブルロジックコントローラ(以下、コントローラと記載する)100と、HMI(Human Machine Interface)102と、コントローラ104と、コンピュータ200とを備える。コンピュータ200に繋がれる機器の数は3つに限られず、1台以上であればいくつでもよい。たとえば、
図2に示すように、1台のコンピュータ200に1台のコントローラ100のみを繋ぐようにしてもよい。
【0020】
図1に戻って、コントローラ100は製造機械に繋がれ、コントローラ100は、工作機械の制御装置としての機能を有する。HMI102には、たとえばプログラマブル表示器が用いられる。コンピュータ200は、ユーザが操作する操作端末として用いられる。
【0021】
コントローラ100、HMI102およびコントローラ104は、コンピュータ200の3つのUSBポート201,202,203にそれぞれ繋がれる。コントローラ104は、モデム301,302を介してコンピュータ200に繋がれる。
【0022】
コンピュータ200は、USBポート201,202,203を介した通信機能のほか、イーサネット(登録商標)のためのポートならびにイーサネット(登録商標)を利用した通信機能を有する。コンピュータ200は、たとえば市販されているパーソナルコンピュータである。コンピュータ200は、ノートブックコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA:Personal Digital Assistant)など、任意の形式のコンピュータが用いられ得る。
【0023】
コンピュータ200には、コンピュータ200に所望の機能を実行させるためのプログラムであるエンジニアリングツールがインストールされる。ユーザは、コンピュータ200を操作することによって、コントローラ100、HMI102およびコントローラ104の設定を変更したり、確認したりすることなどが可能である。
【0024】
コンピュータ200の代わりに、もしくは加えて、プログラマブル表示器を用いてもよい。すなわち、操作端末としてプログラマブル表示器を用いてもよい。プログラマブル表示器は、たとえば、コントローラ100、HMI102およびコントローラ104の作動状態および設定内容などを表示する。プログラマブル表示器は、たとえばタッチパネルを有する。ユーザは、タッチパネルを操作することによって、コントローラ100、HMI102、コントローラ104の設定を変更したり、確認したりすることなどが可能である。
【0025】
図3を参照して、コントローラ100、HMI102、コントローラ104、およびコンピュータ200のハードウェア構成について説明する。
【0026】
図3においては、コントローラ100、HMI102、コントローラ104のうち、コントローラ100のみを示す。HMI102およびコントローラ104の主要なハードウェア構成は、コントローラ100のハードウェア構成と同じ、もしくは略同じであるため、ここではその詳細な説明は繰り返さない。
【0027】
コントローラ100(HMI102、コントローラ104)は、演算装置400、不揮発性記憶装置410、揮発性記憶装置420、通信装置430および通信ポート440を含む。
【0028】
演算装置400は、たとえばCPUである。演算装置400は、オペレーティングシステム(OS)を含む、種々のソフトウェア(プログラム)を実行する。不揮発性記憶装置410は、たとえばROM(Read Only Memory)またはHDD(Hard disk drive)である。不揮発性記憶装置410は、演算装置400が実行するソフトウェアの実行モジュールを格納する。
【0029】
揮発性記憶装置420は、たとえばRAM(Random Access Memory)である。揮発性記憶装置420は、たとえば各々のソフトウェアが必要とするワーク領域などを保持するために用いられる。
【0030】
通信装置430は、通信を制御するために用いられる。通信装置430は、コントローラ100の外部の機器であってもよい。通信ポート440は、コントローラ100の外部の機器とコントローラ100との間の通信のためのポートである。通信ポート440は、USBポート450およびイーサネットポート460を含む。その他の種類の通信ポートを設けてもよい。
【0031】
コンピュータ200は、演算装置500、不揮発性記憶装置510、揮発性記憶装置520、通信装置530、表示装置540および通信ポート550を含む。演算装置500、不揮発性記憶装置510、揮発性記憶装置520および通信装置530は、それぞれ、演算装置400、不揮発性記憶装置410、揮発性記憶装置420および通信装置430と同じ、もしくは略同じである。したがって、ここではその詳細な説明は繰り返さない。
【0032】
表示装置540は、種々の情報を表示する。表示装置540には一般的なモニターなどが用いられる。
【0033】
通信ポート550は、コンピュータ200の外部の機器とコンピュータ200との間の通信のためのポートである。通信ポート550は、USBポート201,202,203およびイーサネットポート552を含む。その他の種類の通信ポートを設けてもよい。
【0034】
図4を参照して、コントローラ100、HMI102、コントローラ104、およびコンピュータ200の機能について説明する。なお、以下に説明する機能は、ソフトウェアにより実現されるが、ハードウェアにより実現してもよく、ハードウェアとソフトウェアとの協働により実現してもよい。
【0035】
コントローラ100は、通信ドライバ110と、PPPサーバ120とを含む。通信ドライバ110は、たとえばUSBドライバ、USBシリアルドライバ、モデルドライバ等であって、USBポート450を介した通信を実現するために、物理的な通信ポート等を制御する。PPPサーバ120は、PPPを利用してイーサネット(登録商標)上で通信を行なうためのサーバであって、ソフトウェアにより実現される。通信ドライバ110およびPPPサーバ120には、周知の技術を利用すればよいため、ここではその詳細な説明は繰り返さない。
【0036】
HMI102は、通信ドライバ112と、シリアル通信機能122とを含む。通信ドライバ112は、たとえばUSBドライバであって、USBポート452を介した通信を実現するために、物理的な通信ポート等を制御する。シリアル通信機能122は、シリアル通信を行なうための機能である。通信ドライバ112およびシリアル通信機能122には、周知の技術を利用すればよいため、ここではその詳細な説明は繰り返さない。
【0037】
コントローラ104は、通信ドライバ114と、PPPサーバ124とを含む。通信ドライバ114は、たとえばUSBドライバであって、USBポート454を介した通信を実現するために、物理的な通信ポート等を制御する。PPPサーバ124は、PPPを利用してイーサネット(登録商標)上で通信を行なうためのサーバである。コントローラ104がハードウェアであるのに対し、PPPサーバ124はソフトウェアにより実現される。通信ドライバ114およびPPPサーバ124には、周知の技術を利用すればよいため、ここではその詳細な説明は繰り返さない。
【0038】
コンピュータ200は、通信ドライバ210と、通信アプリケーション220と、通信プロトコルスタック230と、コネクションマネージャ240とを含む。
【0039】
通信ドライバ210は、たとえばUSBドライバであって、USBポート201,202,203を介した通信を実現するために、物理的な通信ポート等を制御する。
【0040】
通信アプリケーション220は、実際に通信機能を利用するアプリケーションである。通信アプリケーション220の一例は、エンジニアリングツールである。
【0041】
通信プロトコルスタック230は、アプリケーションに、イーサネット通信機能およびシリアル通信機能などの通信機能を提供する。通信プロトコルスタック230の一例は、PPPクライアントである。
【0042】
コネクションマネージャ240は、本願発明の特徴的な機能である。コネクションマネージャ240は、接続先の機器(コントローラ100、HMI102またはコントローラ104)の情報に基いて、通信プロトコルの選択、起動および状態遷移などを制御する。コネクションマネージャ240の一例は、USBポート201,202,203を介した通信のためのUSBコネクションマネージャである。
【0043】
本実施の形態において、USBコネクションマネージャとしてのコネクションマネージャ240は、USBポート201,202,203に機器が繋がれると、USBポート201,202,203に繋がれた機器から、機器の接続形態(たとえばPPP直接接続、シリアル接続およびモデム接続等)を示す情報(たとえばデバイスディスクリプタ)を取得する。さらに、コネクションマネージャ240(USBコネクションマネージャ)は、USBポート201,202,203に繋がれた機器の接続形態に従って、機器とコンピュータ200とを接続する。
【0044】
なお、本実施の形態において「接続」とは、機器とコンピュータ200との間で通信可能な状態にすることを意味する。「繋がれた」とは、たとえばUSBケーブルによって、機器とコンピュータ200とが物理的に繋がれたことを意味する。
【0045】
図5を参照して、コネクションマネージャ240についてさらに説明する。コネクションマネージャ240は、エージェントマネージャ250と、エージェント260とを含む。
【0046】
エージェントマネージャ250は、通信ドライバ210(例えばUSBドライバ)、通信アプリケーション220(たとえばエンジニアリングツール)および通信プロトコルスタック230(例えばPPPクライアント)から発せられたイベントに応答して、エージェント260を生成(起動)するとともに、エージェント260にイベントを通信する。
【0047】
エージェントマネージャ250は、コンピュータ200に接続された機器の種類、およびその機器の接続形態によって特定される動作条件に対応したエージェント260を生成する。たとえば、接続形態がPPP接続である場合、PPP接続エージェントが生成される。接続形態がシリアル接続である場合、シリアル接続エージェントが生成される。接続形態がモデム接続である場合、モデム接続エージェントが生成される。
【0048】
エージェント260は、動作条件に応じて動作および状態遷移を実行する。たとえば、接続形態がPPP接続である場合、コンピュータ200と機器とがPPP接続される。接続形態がシリアル接続である場合、コンピュータ200と機器とがシリアル接続される。接続形態がモデム接続である場合、コンピュータ200と機器とがモデム接続される。
【0049】
動作条件は、コンピュータ200の不揮発性記憶装置510または揮発性記憶装置520に記憶された動作仕様定義270から特定される。
図6に動作仕様定義270の一例を示す。動作仕様定義270は、
図7に示すエージェント定義272および
図8に示すグループ動作定義274から構成される。なお、動作仕様定義270はこれに限定されない。
【0050】
たとえば、
図8に示すグループ動作定義274において、「動作タイプ」が「接続」であり、「グループ名」が「PLC」であると、「アクションタイプ」が「シングルトン」であると定義されている。その結果、
図6のPPP接続の動作仕様定義において、「同一商品グループ」が「PLC」である場合に「接続=シングルトン」と定義される。その結果、1台のコンピュータ200に対して接続されるプログラマブルロジックコントローラは1台のみに制限される。
【0051】
一方、
図8に示すグループ動作定義274において、「動作タイプ」が「接続」であり、「グループ名」が「HMI」であると、「アクションタイプ」が「IP(Internet Protocol)アサイン」であると定義されている。その結果、
図6のPPP接続の動作仕様定義において、「同一商品グループ」が「HMI」である場合に「接続=マルチ」と定義される。その結果、1台のコンピュータ200に対して、複数のHMIが接続され得る。
【0052】
このように、本実施の形態においては、コンピュータ200に繋がれる機器の種類に応じて異なる数の機器とコンピュータ200とが接続される。具体的には、1台のプログラマブルロジックコントローラとコンピュータ200とが接続され得る一方、プログラマブルロジックコントローラは異なる種類である複数のHMIとコンピュータとが接続され得る。
【0053】
図9を参照して、一例としてコンピュータ200のUSBポート201にコントローラ100が繋がれた場合における、コンピュータ200の通信ドライバ210(USBドライバ)、コントローラ100の通信ドライバ110(USBドライバ)、エージェントマネージャ250およびエージェント260の動作について説明する。
【0054】
コンピュータ200のUSBポート201にコントローラ100が繋がれたことをコンピュータ200の通信ドライバ210が検出すると、コンピュータ200の通信ドライバ210は、コントローラ100の通信ドライバ110に、コントローラ100の接続形態を示す情報を含むディスクリプタを要求する。
【0055】
コントローラ100の通信ドライバ110は要求を受信すると、コンピュータ200の通信ドライバ210にデバイスディスクリプタを送信する。ここでは、デバイスディスクリプタにより、コントローラ100の接続形態がUSB_PPP直接接続(USBDirect)であることが示されていると想定する。
【0056】
コンピュータ200の通信ドライバ210がデバイスディスクリプタを受取ると、コンピュータ200の通信ドライバ210は、対応するUSBドライバをロードする。その後、コンピュータ200の通信ドライバ210は、コントローラ100の通信ドライバ110から機種情報を読み出す。コントローラ100の通信ドライバ110は、コンピュータ200の通信ドライバ210に機種情報を返す。ここでは、コントローラ100の機種情報が、「PLC−Model A」であると想定する。
【0057】
コンピュータ200の通信ドライバ210は、コントローラ100の通信ドライバ110から機種情報を読み出した後、エージェントマネージャ250に接続を通知する。具体的には、コンピュータ200の通信ドライバ210は、受取ったデバイスディスクリプタをエージェントマネージャ250に通知する。
【0058】
エージェントマネージャ250は、デバイスディスクリプタを受取ると、デバイスディスクリプタと動作仕様定義270とを参照してエージェント260を特定する。ここでは、デバイスディスクリプタによってUSB_PPP直接接続が指示されていることから、USBダイレクトエージェントが特定される。さらに、エージェントマネージャ250は、接続先の機種情報を取得する。
【0059】
その後、エージェントマネージャ250は、エージェント260をロードするとともに、エージェント260に接続を通知する。具体的には、エージェントマネージャ250は、エージェント260に機種情報を通知する。その後、エージェント260は、状態遷移を開始する。その結果、最終的には、コンピュータ200とコントローラ100とがUSB通信回線上で、PPP接続される。
【0060】
図10を参照して、エージェントマネージャ250によって実行される処理について説明する。
【0061】
ステップ(以下、ステップをSと略す)10にて、通信ドライバ210からのケーブル接続イベントの受信を待つ。通信ドライバ210からケーブル接続イベントを受信すると(S12にてYES)、S14にて、動作種別が確定される。動作種別は、たとえば、エージェントマネージャ250において予め定義されたり、接続先のディスクリプタ情報により確定される。その後、S16にて、商品情報から動作グループが取得され、S18にて、取得された動作グループに対応するエージェントがロードされる。
【0062】
たとえば、USB接続により、「Omron USB DirectLine」という情報がコントローラ100から得られると、コンピュータ200にインストールされたWindows(登録商標)が、この情報に対応したUSBドライバをロードする。USBドライバは、コントローラ100と個別情報を交換することによって、商品情報を取得する。さらに、USBドライバは、コネクションマネージャ250に接続を通知する。エージェントマネージャ250は、エージェント定義情報より該当するエージェントを確定し、ロードする。
【0063】
最後に、S20にて、ロードしたエージェントに対して初期イベントが通知される。
図11を参照して、エージェント260によって実行される処理について説明する。以下では、一例として、PPP接続エージェントによって実行される処理について説明する。その他のエージェントにより実行される処理は、PPP接続エージェントによって実行される処理と同様であるため、ここではその詳細な説明は繰り返さない。
【0064】
S100にて、エージェント260は、イベントの受信を待つ。エージェントマネージャ250、通信ドライバ210、通信アプリケーション220または通信プロトコルスタック230からイベントを受信すると(S102にてYES)、S104において、イベントと状態とにより、処理内容が決定される。
【0065】
たとえば、PPP接続が要求された場合は、S110にて、PPP接続処理が実行される。USBの規約では、ベンダIDとプロダクトIDとが送付され、このベンダIDとプロダクトIDとからWindows(登録商標)などのOS(Operating System)が該当するドライバを見つけ、ロードする。本実施の形態においては、たとえば、USBDirectLineというドライバがロードされる。OSのUSBドライバは、ロードしたUSBドライバに制御を渡し、以後、ロードされたドライバがコントローラ100と接続処理を行なう。
【0066】
接続処理自身はUSBの規約で決められているものの、追加で必要な情報がコントローラ100より取得することができる。本実施の形態においては、機種情報などが取得される。
【0067】
取得した機種情報などにより、その接続先がどのグループなのかが判定できる。たとえば、プログラマブルロジックコントローラなのか、HMIなのか、あるいはPPPをサポートしていないデバイスなのかなどの情報が取得される。たとえば、フィールドバス用の通信カプラは、通常はプログラマブルロジックコントローラのユニットとして装着され、プログラマブルロジックコントローラ経由で通信するが、カプラ自身にもUSBポートがついており、このようなカプラにおいて、PPPなどの処理まではコスト、リソースの観点から実装できない場合、シリアルとして通信する必要がある。
【0068】
PLCやHMIのある機種ではPPPをサポートしているので、PPP実行用エージェントを起動し、さらにPLCかHMIかによって1台だけ接続させるのか複数台接続させるのかなどが選択可能である。PPPをサポートしていない機器であれば、別のエージェントを起動し、このエージェントに処理が任される。
【0069】
PPP接続処理が実行されると、S112にて、状態遷移が実行される。PPP接続が切断された場合は、S120にて、コンピュータ200と他の機器(たとえばコントローラ100)とが再度PPP接続される。診断要求があった場合には、S130にて、診断処理が実行される。モニタ要求があった場合には、S140にて、状態が通知される。
【0070】
ケーブル(たとえばUSBケーブル)が切断された場合は、S150にて、終了処理が実行される。したがって、たとえばUSBポート201からコントローラ100が物理的に外されると、コントローラ100とコンピュータ200との接続が終了される。
【0071】
図12を参照して、上述したS110において実行される、PPP接続処理についてさらに説明する。
【0072】
S200にて、接続先のグループが判定される。接続先のグループがプログラマブルロジックコントローラである場合(S200にてPLC)、S202にて、同一グループ内の別の機器が既に接続済みであるか否かが判定される。すなわち、別のプログラマブルロジックコントローラが既に接続済みであるか否かが判定される。
【0073】
別のプログラマブルロジックコントローラが接続されていないと(S202にてNO)、S204にて、たとえばユーザによって割り当てられ、予め設定された固定IPアドレスを用いて、コンピュータ200と、コンピュータ200に繋がれたプログラマブルロジックコントローラ、すなわちコントローラ100とを接続する。その後、S206にて、通信プロトコルスタック230(PPPクライアント)に接続要求が送られる。
【0074】
一方、接続先のグループがHMIである場合(S200にてHMI)、1台のコンピュータ200に対して複数のHMIを接続することが可能である。1台のコンピュータ200に対して複数のHMIを接続するために、S208にて、各HMIに割り当てられるIPアドレスが生成される。その後、S210にて、通信プロトコルスタック230(PPPクライアント)に接続要求が送られる。
【0075】
図13を参照して、上述したS130において実行される、診断処理についてさらに説明する。
【0076】
S300にて、接続先のグループが判定される。接続先のグループがプログラマブルロジックコントローラである場合(S300にてPLC)、S302にて、プログラマブルロジックコントローラが診断される。一方、接続先のグループがHMIである場合(S300にてHMI)、HMIが診断される。
【0077】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。