(57)【特許請求の範囲】
【請求項１】
第１通信規格に従った第１バスと、
前記第１通信規格とは異なる第２通信規格に従った第２バスと、
前記第１通信規格に従った汎用命令と前記第２通信規格に従った専用命令との対応付けを示す情報を記憶する変換命令記憶手段と、
前記第２バスを介して接続されたデバイスに向けて命令出力手段より前記汎用命令が出された場合、前記汎用命令に対応する前記専用命令を前記変換命令記憶手段から取得し、取得した前記専用命令を前記第２バスを介して前記デバイスに供給する命令変換手段と、  を備える命令変換装置であって、
前記第１バスは、前記命令変換装置が備えるＣＰＵと前記命令変換装置が備える内部のデバイスとを接続するローカルバスであり、
前記第２バスは、前記命令変換装置が備えるＣＰＵと前記命令変換装置以外の前記デバイスとを接続するバスである、
命令変換装置。
【請求項２】
前記デバイスを、前記第１バス上の仮想的なデバイスとして扱うために必要なデバイス構成情報を記憶するデバイス構成記憶手段、
を備え、
前記デバイス構成情報は、前記第１バスのアドレス空間において前記デバイスに割り当てられたメモリアドレスと、前記第１バス上の前記デバイスの仮想的な接続位置を示す位置情報と、前記第１バス上の前記デバイスに命令を実行するため使用されるデバイスレジスタのアドレスとを含み、
前記命令変換手段は、前記デバイスに割り当てられた前記デバイスレジスタに値が書き込まれると、書き込まれた値により特定される前記汎用命令に対応する前記専用命令を変換命令記憶手段から取得する、
請求項１に記載の命令変換装置。
【請求項３】
前記第２バスのアドレス空間における専用メモリアドレスと、前記第１バスのアドレス空間において前記デバイスに割り当てた汎用メモリアドレスとの対応付けを記憶するメモリ割当記憶手段、
を備え、
前記命令変換手段は、前記汎用命令とともに指定された前記汎用メモリアドレスに対応する前記専用メモリアドレスを前記メモリ割当記憶手段から取得し、取得した前記専用メモリアドレスを指定して前記汎用命令に対応する前記専用命令を前記デバイスに供給する、
請求項２に記載の命令変換装置。
【請求項４】
前記デバイス構成情報を収集し、収集した前記デバイス構成情報を前記デバイス構成記憶手段に格納するデバイス構成収集手段と、
前記デバイス構成収集手段が収集できない情報を生成し、生成した情報を前記デバイス構成記憶手段に格納するデバイス設定手段と、
を備える請求項３に記載の命令変換装置。
【請求項５】
前記デバイス設定手段は、前記デバイスに、前記第１バスのアドレス空間における前記汎用メモリアドレスを割当て、前記汎用メモリアドレスと、前記デバイスの前記第２バスのアドレス空間における専用メモリアドレスとを対応付けて、前記メモリ割当記憶手段に格納する、
請求項４に記載の命令変換装置。
【請求項６】
前記命令変換装置は、プログラマブルロジックコントローラのＣＰＵユニットである、
請求項１から５のいずれか１項に記載の命令変換装置。
【請求項７】
前記デバイスは、前記プログラマブルロジックコントローラの機能ユニットを含む、
請求項６に記載の命令変換装置。
【請求項８】
前記デバイスは、プログラマブルロジックコントローラのＣＰＵユニット及び機能ユニットを含む、
請求項１から５のいずれか１項に記載の命令変換装置。
【請求項９】
第１通信規格に従った第１バスと、前記第１通信規格とは異なる第２通信規格に従った第２バスとを備えるコンピュータが実行する方法であって、
前記第２バスを介して接続されたデバイスに向けて命令出力手段より前記第１通信規格に従った汎用命令が出された場合、前記汎用命令に対応し、前記第２通信規格に従った専用命令を取得するステップと、
取得した前記専用命令を前記第２バスを介して前記デバイスに供給するステップと、
を含む方法であって、
前記第１バスは、前記コンピュータが備えるＣＰＵと前記コンピュータが備える内部のデバイスとを接続するローカルバスであり、
前記第２バスは、前記コンピュータが備えるＣＰＵと前記コンピュータ以外の前記デバイスとを接続するバスである、方法。
【請求項１０】
第１通信規格に従った第１バスと、前記第１通信規格とは異なる第２通信規格に従った第２バスとを備えるコンピュータに、
前記第２バスを介して接続されたデバイスに向けて命令出力手段より前記第１通信規格に従った汎用命令が出された場合、前記汎用命令に対応し、前記第２通信規格に従った専用命令を取得させ、
取得した前記専用命令を前記第２バスを介して前記デバイスに供給させる、プログラムであって、
前記第１バスは、前記コンピュータが備えるＣＰＵと前記コンピュータが備える内部のデバイスとを接続するローカルバスであり、
前記第２バスは、前記コンピュータが備えるＣＰＵと前記コンピュータ以外の前記デバイスとを接続するバスである、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令変換装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、ＰＬＣを監視するアプリケーションソフトウェアと、通信規格がそれぞれ異なる複数の伝送経路上のＰＬＣとの通信を可能とする計測制御システムが開示されている。この計測制御システムでは、ＰＬＣを監視するアプリケーションソフトウェアが、ＰＬＣからデータを取得するため、論理アドレスを指定した通信要求を通信管理ソフトウェアに出す。通信管理ソフトウェアは、論理アドレスとＰＬＣのデバイスメモリのアドレスとの対応付けを記憶する変換テーブルと、通信要求で指定された論理アドレスとから、通信先のＰＬＣに接続するための伝送経路の種類を特定する種類コードと、ＰＬＣのデバイスメモリのアドレスとを取得し、相手側の伝送経路の通信規格に則ってデバイスメモリのデータをＰＬＣに要求する。また、通信管理ソフトウェアは、ＰＬＣからデータを受信し、受信したデータをアプリケーションソフトウェアに供給する。【０００３】
特許文献１に記載された構成では、通信管理ソフトウェアが、論理アドレスを、種類コード及びデバイスメモリのアドレスに変換し、相手側の伝送経路の通信規格に則ってデバイスメモリのデータをＰＬＣに要求する。よって、アプリケーションソフトウェアは、通信規格の違いを意識することなく、ＰＬＣからデータを取得することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−３４１３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された構成では、アプリケーションソフトウェアは、通信規格が異なる伝送経路上の装置を通信規格の差異を意識することなく操作することができたが、そのためにアプリケーションソフトウェアの開発者は通信管理ソフトウェア特有のインタフェースに対応するようにアプリケーションソフトウェアを開発する必要があった。【０００６】
本発明は、上記実情に鑑みてなされたものであり、汎用的な通信規格に対応したアプリケーションソフトウェアで、通信規格が異なる伝送経路上の装置を管理することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の命令変換装置は、第１通信規格に従った第１バスと、第１通信規格とは異なる第２通信規格に従った第２バスと、を備える。命令変換装置が備える変換命令記憶手段は、第１通信規格に従った汎用命令と第２通信規格に従った専用命令との対応付けを示す情報を記憶する。命令変換装置が備える命令変換手段は、第２バスを介して接続されたデバイスに向けて命令出力手段より汎用命令が出された場合、汎用命令に対応する専用命令を変換命令記憶手段から取得し、取得した専用命令を第２バスを介してデバイスに供給する。第１バスは、命令変換装置が備えるＣＰＵと命令変換装置が備える内部のデバイスとを接続するローカルバスであり、第２バスは、命令変換装置が備えるＣＰＵと命令変換装置以外のデバイスとを接続するバスである。
【発明の効果】
【０００８】
本発明の命令変換装置は、第２通信規格に従った第２バスを介して接続されたデバイスに向けて命令出力手段より第１通信規格に従った汎用命令が出された場合、汎用命令に対応し、第２通信規格に従った専用命令を変換命令記憶手段から取得し、取得した専用命令を第２バスを介してデバイスに供給する。このような構成を備えることで、汎用的な通信規格に対応したアプリケーションソフトウェアで、通信規格が異なる伝送経路上の装置を管理することが可能である。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係るプログラマブルロジックコントローラのCＰＵユニットの機能構成を示すブロック図
【図２】実施の形態に係るプログラマブルロジックコントローラのハードウェア構成を示すブロック図
【図３】実施の形態に係る変換テーブルの構成の一例を示す図
【図４】実施の形態に係るデバイス構成テーブルの構成の一例を示す図
【図５】実施の形態に係るメモリマッピングテーブルの構成の一例を示す図
【図６】実施の形態に係るデバイス構成収集部がデータを登録した後のデバイス構成テーブルの一例を示す図
【図７】実施の形態に係る初期設定処理のフローチャート
【図８】実施の形態に係る命令変換処理のフローチャート
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態に係る命令変換装置について、図面を参照しつつ詳細に説明する。
【００１１】
（実施の形態）
実施の形態においては、プログラマブルロジックコントローラのＣＰＵユニット１００が、命令変換装置として機能する例を説明する。図１に示す、プログラマブルロジックコントローラのＣＰＵユニット１００は、センサ、スイッチ等を含む検出器から供給された入力信号に従って、制御プログラムの命令を実行し、出力信号を被制御機器に供給する。
【００１２】
図２に示すように、プログラマブルロジックコントローラ１（以下、ＰＬＣ１）は、ＰＬＣ１全体を制御するＣＰＵ（Central Processing Unit）ユニット１００と、検出器９０１から受け付けた入力信号をＣＰＵユニット１００に供給する入力ユニット２００と、ＣＰＵユニット１００の演算結果を示す出力信号を被制御機器９０２に出力する出力ユニット３００と、各ユニットを装着するためのベースユニット４００を含む。ＣＰＵユニット１００と、入力ユニット２００と、出力ユニット３００とは、専用バス４１０を介して相互に接続され、専用バス４１０を介して通信を行うことができる。
【００１３】
ＣＰＵユニット１００は、入力ユニット２００から供給された入力信号を使用して、制御プログラムの命令を実行し、出力信号を出力ユニット３００に出力する。入力ユニット２００には、センサ、スイッチ等を含む検出器９０１が接続されている。入力ユニット２００は、検出器９０１から供給された入力信号をＣＰＵユニット１００に供給する。出力ユニット３００には、アクチュエータ、電磁弁、表示灯等を含む被制御機器９０２が接続されている。出力ユニット３００は、ＣＰＵユニット１００から供給された出力信号を被制御機器９０２に供給する。
【００１４】
ベースユニット４００には、ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とが装着される。ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とは、ベースユニット４００を介して不図示の電源ユニットに接続され、電源ユニットから供給される電力によって動作する。ＣＰＵユニット１００は、専用バス４１０を介して、入力ユニット２００及び出力ユニット３００と通信可能である。
【００１５】
また、ＣＰＵユニット１００には、汎用ＯＳ（Operating System）がインストールされている。このため、ＣＰＵユニット１００は、汎用性のあるコンピュータと同様の操作性を有する。例えば、ＣＰＵユニット１００のＣＰＵは、汎用バスを介してＣＰＵユニット１００内のデバイスと接続されており、デバイスを制御できる。また、ＣＰＵユニット１００は、汎用ＯＳ上で、汎用のプログラミング言語で開発されたアプリケーションソフトウェア（以下、アプリケーション）を実行できる。専用バス４１０の通信規格と、汎用バスの通信規格とは異なるものとする。
【００１６】
実施の形態に特徴的な構成として、ＣＰＵユニット１００は、入力ユニット２００及び出力ユニット３００を、ＣＰＵユニット内の汎用バスに接続されているデバイスであるかのように扱うことができる。このため、ＣＰＵユニット１００は、入力ユニット２００及び出力ユニット３００に、汎用バスの通信規格に則った命令が出された場合、その命令を、専用バス４１０の通信規格に則った命令に変換し、変換した命令を入力ユニット２００及び出力ユニット３００に供給する。よって、例えば、ＣＰＵユニット１００のユーザは、ＣＰＵユニットのデバイスを管理するツールを使用して、ＣＰＵユニット内のデバイスと同様に、入力ユニット２００及び出力ユニット３００を管理できる。
【００１７】
以下の説明においては、実施の形態に係る特徴的な構成を備えるＣＰＵユニット１００を中心に説明する。
【００１８】
ＣＰＵユニット１００は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ１１と、汎用バスを介した通信のための汎用バスインタフェース１２と、専用バス４１０を介した通信のための専用バスインタフェース１３と、周辺機器に接続するための入出力インタフェース１４と、ＣＰＵユニット１００全体を制御するＣＰＵ１５とを有する。メモリ１１と汎用バスインタフェース１２と専用バスインタフェース１３と入出力インタフェース１４とは、ＣＰＵバス１９を介してＣＰＵ１５に接続されており、ＣＰＵ１５と通信する。
【００１９】
メモリ１１は、揮発性メモリと不揮発性メモリとを含む。メモリ１１は、ＣＰＵユニット１００の各種機能を実現するためのプログラムと、プログラムの実行時に使用されるデータとを記憶する。
【００２０】
メモリ１１は、構成情報収集プログラム１１１と、デバイス設定プログラム１１２と、ユーザプログラム１１３とを記憶する。構成情報収集プログラム１１１は、デバイスの構成に関する情報を収集する機能をＣＰＵユニット１００に実現させるプログラムである。デバイス設定プログラム１１２は、機能ユニットを汎用バス７０１上の仮想的デバイスとして扱うために必要な情報を生成する機能をＣＰＵユニット１００に実現させるプログラムである。ユーザプログラム１１３は、被制御機器９０２を制御する機能をＣＰＵユニット１００に実現させるプログラムである。
【００２１】
汎用バスインタフェース１２は、汎用バス７０１を介して、ＣＰＵ１５とデバイス２１及び２２とを接続するための接続インタフェースである。汎用バス７０１は、ＣＰＵ１５とデバイス２１及び２２とを接続するローカルバスである。デバイス２１及び２２は、ＣＰＵ１５に接続されるデバイスであり、例えば、ネットワークアダプタ、グラフィックアダプタである。実施の形態では、汎用バス７０１が、ＰＣＩ（Peripheral Component Interconnect）バスであると仮定して説明を行う。汎用バス７０１は、本発明の第１バスの一例である。汎用バス７０１の通信規格は、本発明の第１通信規格の一例である。
【００２２】
専用バスインタフェース１３は、専用バス４１０を介して、ＣＰＵユニット１００と入力ユニット２００及び出力ユニット３００とを接続するための接続インタフェースである。以下、入力ユニット２００及び出力ユニット３００を機能ユニットと称することがある。専用バス４１０は、複数のユニットを含むＰＬＣ１において、ユニット間の通信に使用されるシステムバスであって、例えば、ＰＬＣ１の機種毎に通信規格が定義されたバスである。専用バス４１０は、本発明の第２バスの一例である。専用バス４１０の通信規格は、本発明の第２通信規格の一例である。
【００２３】
入出力インタフェース１４は、例えば、ＵＳＢコントローラを含み、不図示の接続ケーブルを介して、ＣＰＵ１５と不図示の周辺機器とを接続するためのインタフェースである。周辺機器は、例えば、キーボード、マウス、ディスプレイである。
【００２４】
ＣＰＵ１５は、メモリ１１に記憶されている各種プログラムを実行して、ＣＰＵユニット１００の各種機能を実現する。例えば、ＣＰＵ１５は、メモリ１１に格納されているユーザプログラム１１３を実行することにより、検出器から供給された入力信号が示す値を使用した演算を行い、演算結果を示す値に基づく出力信号を被制御機器９０２に供給する。
【００２５】
さらに、実施の形態において、ＣＰＵ１５は、構成情報収集プログラム１１１を実行することにより、デバイスの構成に関する情報を収集する。ＣＰＵ１５は、デバイス設定プログラム１１２を実行することにより、機能ユニットを、汎用バス７０１上の仮想的なデバイスとして扱うために必要な情報を生成する。
【００２６】
続いて、図１を参照しながら、ＣＰＵユニット１００の機能的な構成を説明する。ＣＰＵユニット１００は、機能的には、デバイスに対する命令の対応付けを記憶する変換設定記憶部１１０と、機能ユニットに割り当てられたデバイス構成情報を記憶するデバイス構成記憶部１２０と、メモリマッピング情報を記憶するメモリ割当記憶部１３０と、デバイス構成情報を収集するデバイス構成収集部１４０と、必要なデバイス構成情報を機能ユニットに割り当てるデバイス設定部１５０と、汎用命令から変換した専用命令を機能ユニットに送信するプロトコル変換部１６０と、デバイスの構成の変更を検出する構成変更検出部１７０とを含む。デバイス構成情報は、汎用バス７０１上のデバイスにアクセスするために必要な情報である。
【００２７】
変換設定記憶部１１０は、機能ユニットを汎用バス７０１上の仮想的なデバイスとして制御するため、専用バス４１０を介して機能ユニットに供給する実際の命令（以下、専用命令）と、汎用バス７０１に接続されているデバイスを制御する命令（以下、汎用命令）との対応付けを記憶する。汎用命令は、例えば、デバイスに対するｏｐｅｎ、ｃｌｏｓｅ、ｒｅａｄ、ｗｒｉｔｅといった命令である。変換設定記憶部１１０の機能は、図２に示すメモリ１１により実現される。変換設定記憶部１１０は、本発明の変換命令記憶手段の一例である。
【００２８】
図３に、変換設定記憶部１１０に格納される変換テーブル１１０ａの一例を示す。変換テーブル１１０ａには、デバイスを示すデバイス名と、デバイス種別を示す値と、そのデバイスが実際に接続されている接続されているバス種別を示す値と、バス幅を示す値と、機能ユニットを制御する専用命令と、専用命令に対応付けられている汎用命令とが格納されている。図示する例では、デバイスを特定する値としてデバイス名を使用しているが、デバイス名ではなく、デバイスを識別できる他の識別情報を使用してもよい。
【００２９】
例えば、ＣＰＵユニット１００のアプリケーションが汎用命令を機能ユニットに出した場合、後述のプロトコル変換部１６０が、汎用命令を専用命令に変換し、変換した専用命令を機能ユニットに供給する。アプリケーションは、本発明の命令出力手段の一例である。
【００３０】
さらに、変換テーブル１１０ａには、機能ユニットに専用命令を実行した場合の実際の戻り値と、期待される戻り値とが対応付けられて定義されている。期待される戻り値とは、例えば、ＣＰＵユニット１００においてアプリケーションが、機能ユニットに汎用命令を実行した場合に、アプリケーションが命令の実行結果として戻り値を必要とすることがある。しかし、汎用命令に対応する専用命令を受けた機能ユニットが戻り値を返さない、あるいは、アプリケーションが期待する戻り値とは異なる値を返すことがある。機能ユニットの仕様と、アプリケーションのインタフェースとの差異を吸収するため、期待される戻り値が予め設定されている。
【００３１】
図示する例では、入力ユニット２００のデバイス種別はＩ／Ｏ（Input Output）ユニットであり、接続されているバスの種別は専用バス４１０である。専用バス４１０のバス幅は６４ｂｉｔである。入力ユニット２００に対する汎用命令Ａは、専用命令Ａに変換される。例えば、アプリケーションが、入力ユニット２００に汎用命令Ａを出した場合、後述のプロトコル変換部１６０は、汎用命令Ａに対応する専用命令Ａを入力ユニット２００に供給する。入力ユニット２００は、専用命令Ａを受けた場合に、戻り値として何の値も返さない。このため、期待される戻り値が定義されている。アプリケーションが、汎用命令Ａを入力ユニット２００に実行すると、アプリケーションには、期待される戻り値が返される。
【００３２】
変換テーブル１１０ａは、さらに、汎用バス７０１上に実際に存在するデバイスについてのデータも記憶する。汎用バス７０１上に実際に存在するデバイスは、汎用命令で制御可能である。このため、図示するように、汎用バス７０１上に実際に存在するデバイスについては、専用命令と汎用命令と実際の戻り値と期待される戻り値とに値が設定されていない。
【００３３】
変換テーブル１１０ａは、ユーザにより予め作成されている。ユーザは、例えば、ＣＰＵユニット１００の管理者である。例えば、ユーザは、汎用バス７０１の通信規格の定義書と専用バス４１０の通信規格の定義書とに基づいて、図３に示す変換テーブル１１０ａを作成する。
【００３４】
図１に示すデバイス構成記憶部１２０は、機能ユニットを汎用バス７０１上の仮想的なデバイスとして扱うために、機能ユニットに割り当てられたデバイス構成情報を記憶する。デバイス構成情報は、ＣＰＵ１５が、汎用バス７０１上のデバイスにアクセスするために必要な情報である。例えば、デバイス構成情報は、機能ユニットに専用バス４１０を介してアクセスする際に指定する専用バス４１０におけるメモリアドレスと、汎用バス７０１におけるアドレス空間において割り当てられたメモリアドレスと、の対応付けを示す情報を含む。デバイス構成記憶部１２０の機能は、図２に示すメモリ１１により実現される。デバイス構成記憶部１２０は、本発明のデバイス構成記憶手段の一例である。
【００３５】
図４にデバイス構成記憶部１２０に格納されるデバイス構成テーブル１２０ａの一例を示す。デバイス構成テーブル１２０ａには、デバイス構成情報として、デバイスを示すデバイス名と、デバイス種別を示す値と、そのデバイスが実際に接続されているバス種別を示す値と、ＰＣＩのアドレス空間のメモリアドレスと、汎用バス７０１上でのデバイスの接続位置を示す位置情報と、デバイスにアクセスする際に使用されるデバイスレジスタに割り当てられている物理アドレスとが格納されている。位置情報は、バスを特定するバス番号と、バス上におけるデバイスの位置を示すデバイス番号と、デバイスが提供する機能を示すファンクション番号とを含む。ＣＰＵ１５は、デバイスに命令を実行する場合に、デバイスに割り当てられているデバイスレジスタに書き込みを行う。
【００３６】
機能ユニットは汎用バス７０１に接続されていないため、機能ユニットについての、ＰＣＩのアドレス空間でのメモリアドレスと、位置情報と、デバイスレジスタの物理アドレスとについては、任意の値が割り当てられている。機能ユニットについてのこれらの値は、ＣＰＵユニット１００のイニシャル処理において割り当てられる。
【００３７】
デバイス構成テーブル１２０ａは、さらに、汎用バス７０１に接続されているデバイスについてのデータも記憶する。
【００３８】
図１に示すメモリ割当記憶部１３０は、機能ユニットを、汎用バス７０１上の仮想的なデバイスとして扱うため、メモリマッピング情報を記憶する。メモリマッピング情報は、ＰＣＩのアドレス空間のメモリアドレスと、機能ユニットに専用バス４１０を介してアクセスするために指定する実アドレスとの対応付けを示す情報である。メモリ割当記憶部１３０の機能は、図２に示すメモリ１１により実現される。メモリ割当記憶部１３０は、本発明のメモリ割当記憶手段の一例である。
【００３９】
図５にメモリ割当記憶部１３０に格納されるメモリマッピングテーブル１３０ａの一例を示す。メモリマッピングテーブル１３０ａには、デバイスを示すデバイス名と、専用バス４１０のアドレス空間の実際のメモリアドレスである実開始アドレスと、専用バス４１０のアドレス空間におけるメモリサイズである実サイズと、機能ユニットを仮想的に汎用バス７０１上のデバイスとして扱うために割り当てられたＰＣＩのアドレス空間でのメモリアドレスと、機能ユニットが実際に接続されているバス種別を示す値とが格納されている。実開始アドレス及び実サイズにより特定されるメモリアドレスは、本発明の専用メモリアドレスの一例である。ＰＣＩのアドレス空間でのメモリアドレスは、本発明の汎用メモリアドレスの一例である。
【００４０】
なお、メモリマッピングテーブル１３０ａには、汎用バス７０１上に実際に存在するデバイスについてのデータは格納されない。
【００４１】
図１に示すデバイス構成収集部１４０は、デバイス構成情報を収集する。デバイス構成収集部１４０は、まず、汎用バス７０１上のデバイスについてのデバイス構成情報を収集し、収集したデバイス構成情報をデバイス構成テーブル１２０ａに格納する。さらに、デバイス構成収集部１４０は、ＣＰＵユニット１００に接続されている他のバス上のデバイスについてのデバイス構成情報を収集し、収集したデバイス構成情報をデバイス構成テーブル１２０ａに格納する。
【００４２】
デバイス構成収集部１４０は、汎用バス７０１上のデバイス以外のデバイスについては、必要なデバイス構成情報を全て収集することができない。よって、デバイス構成収集部１４０は、収集可能な情報のみをデバイス構成テーブル１２０ａに格納する。このため、図６に示すように、デバイス構成テーブル１２０ａには、専用バス４１０上のデバイスである機能ユニットについては、ＰＣＩのアドレス空間でのメモリアドレスと、汎用バス７０１上でのデバイスの物理的な位置を示す位置情報と、デバイスレジスタに割り当てられている物理アドレスとが格納されない。これらの情報は、後述のデバイス設定部１５０によりデバイス構成テーブル１２０ａに格納される。
【００４３】
デバイス構成収集部１４０は、電源投入後にＣＰＵユニット１００が実行するイニシャル処理の一部として、デバイス構成情報の収集処理を行う。デバイス構成収集部１４０の機能は、図２に示すＣＰＵ１５が構成情報収集プログラム１１１を実行することにより実現される。デバイス構成収集部１４０は、本発明のデバイス構成収集手段の一例である。
【００４４】
図１に示すデバイス設定部１５０は、汎用バス７０１に接続されていないデバイスである機能ユニットを汎用バス７０１上の仮想的なデバイスとして扱うために必要な情報を算出し、算出した情報をデバイス構成テーブル１２０ａと、メモリマッピングテーブル１３０ａとに格納する。前述のように、デバイス構成収集部１４０は機能ユニットについて全てのデバイス構成情報を収集することができない。デバイス設定部１５０は、デバイス構成収集部１４０が収集できなかったデバイス構成情報をデバイス構成テーブル１２０ａに登録する。
【００４５】
デバイス設定部１５０がデバイス構成テーブル１２０ａに登録する具体的な情報は下記の通りである。前述のデバイス構成収集部１４０は、図６に示すように、専用バス４１０上のデバイスである機能ユニットについては、ＰＣＩのアドレス空間でのメモリアドレスと、位置情報と、デバイスレジスタの物理アドレスとを収集することができない。よって、デバイス設定部１５０は、機能ユニットそれぞれに、ＰＣＩのアドレス空間でのメモリアドレスと、位置情報と、デバイスレジスタの物理アドレスとを割り当て、割り当てたメモリアドレスの値と、位置情報の値と、デバイスレジスタの物理アドレスの値とをデバイス構成テーブル１２０ａに登録する。
【００４６】
デバイス設定部１５０は、ＰＣＩのアドレス空間で使用されていないメモリアドレスを、機能ユニットに割り当てる。このとき、デバイス設定部１５０は、専用バス４１０に接続されている機能ユニットの実開始アドレスと実サイズとに基づいて、機能ユニットに割り当てるＰＣＩのアドレス空間のメモリ領域を決定する。デバイス設定部１５０は、専用バス４１０に接続されている機能ユニットの実開始アドレスと実サイズとを取得する手段を有しているものとする。
【００４７】
デバイス設定部１５０は、汎用バス７０１上においていずれのデバイスも接続されていない位置に機能ユニットが仮想的に接続されているものとし、その位置を機能ユニットに割り当てる。
【００４８】
デバイス設定部１５０は、汎用バス７０１上のデバイスのデバイスレジスタとして使用されていないメモリ領域を、機能ユニットに割り当てるデバイスレジスタとして確保する。
【００４９】
デバイス設定部１５０が、メモリマッピングテーブル１３０ａに登録する具体的な情報は下記の通りである。デバイス設定部１５０は、機能ユニットに割り当てたＰＣＩのアドレス空間のメモリアドレスと、専用バス４１０のアドレス空間におけるメモリアドレスである実開始アドレスと、専用バス４１０のアドレス空間におけるメモリサイズである実サイズとを対応付けて、メモリマッピングテーブル１３０ａに格納する。
【００５０】
デバイス設定部１５０は、電源投入後にＣＰＵユニット１００が実行するイニシャル処理の一部として、機能ユニットを汎用バス７０１上のデバイスとして扱うために必要な情報を算出し、算出した情報をデバイス構成テーブル１２０ａとメモリマッピングテーブル１３０ａに格納する。
【００５１】
また、デバイス設定部１５０は、後述の構成変更検出部１７０が、デバイスの構成の変更を検出したときに、デバイス構成テーブル１２０ａと、メモリマッピングテーブル１３０ａとを更新する。デバイス設定部１５０は、デバイス構成テーブル１２０ａと、メモリマッピングテーブル１３０ａとを更新した後に、最新の情報をＣＰＵユニット１００に反映するため、例えば、ＣＰＵユニット１００を再起動させる。デバイス設定部１５０の機能は、図２に示すＣＰＵ１５がデバイス設定プログラム１１２を実行することにより実現される。デバイス設定部１５０は、本発明のデバイス設定手段の一例である。
【００５２】
図１に示すプロトコル変換部１６０は、機能ユニットに出された汎用命令を専用命令に変換する。
【００５３】
例えば、ＣＰＵユニット１００のアプリケーションが、機能ユニットに対する汎用命令を出力するため、その機能ユニットに割り当てられているデバイスレジスタに決められた値を書き込んだとする。プロトコル変換部１６０は、デバイスレジスタに値が書き込まれると、図４に示すデバイス構成テーブル１２０ａから、値が書き込まれたデバイスレジスタが割り当てられているデバイスのデバイス名とデバイス種別と接続バス種別とを取得する。プロトコル変換部１６０は、図３に示す変換テーブル１１０ａから、特定したデバイスについて登録されているデータを読み出す。プロトコル変換部１６０は、読み出したデータから、アプリケーションが出力した汎用命令に対応する専用命令を取得する。
【００５４】
一方、プロトコル変換部１６０は、指定された汎用命令に対応する専用命令が変換テーブル１１０ａに登録されていない場合、命令を要求したアプリケーションにエラーを返す。
【００５５】
プロトコル変換部１６０は、メモリマッピングテーブル１３０ａから、該当するデバイスである機能ユニットの実開始アドレスと実サイズとを取得し、実開始アドレスと実サイズとを指定して、変換テーブル１１０ａから読み出した専用命令を、専用バス４１０の通信規格に則って該当の機能ユニットに送信する。このようにして、プロトコル変換部１６０は、ＣＰＵユニット１００が機能ユニットに出す汎用命令を専用命令に変換し、変換した専用命令を機能ユニットに実行する。
【００５６】
また、プロトコル変換部１６０は、専用バス４１０を介して機能ユニットから戻り値を受信すると、変換テーブル１１０ａから期待される戻り値を取得する。プロトコル変換部１６０は、取得した戻り値を、デバイス構成テーブル１２０ａに定義されているＰＣＩのアドレス空間のメモリアドレスで指定された領域に書き込む。このようにして、プロトコル変換部１６０は、機能ユニットからの戻り値を変換し、アプリケーションに期待される戻り値を返す。プロトコル変換部１６０の機能は、図２に示すＣＰＵ１５により実現される。例えば、実施の形態に係るＣＰＵユニット１００のＯＳは、プロトコル変換部１６０の機能を含み、命令の解釈時にプロトコル変換部１６０の機能が実現される。プロトコル変換部１６０は、本発明の命令変換手段の一例である。
【００５７】
図１に示す構成変更検出部１７０は、デバイスの構成が変更されたことを検出する。例えば、構成変更検出部１７０は、ＣＰＵユニット１００に新たなデバイスが接続されたときの電気信号を検出する機能を備え、新たなデバイスが接続されたことを検出したときに、デバイスの構成が変更されたと判別する。あるいは、構成変更検出部１７０は、メモリ領域がマップ及びアンマップされたことを検出する機能を備え、メモリ領域のマップ及びアンマップを検出したときに、デバイスの構成が変更されたと判別する。構成変更検出部１７０は、デバイスの構成が変更されたことを検出すると、デバイス設定部１５０に、デバイス構成テーブル１２０ａと、メモリマッピングテーブル１３０ａとの更新を指示する。構成変更検出部１７０の機能は、図２に示すＣＰＵ１５により実現される。
【００５８】
図１に示すプログラム実行部１８０は、ユーザプログラム１１３を実行する。プログラム実行部１８０の機能は、図２に示すＣＰＵ１５により実現される。
【００５９】
続いて、上記構成を備えるＣＰＵユニット１００が、デバイス構成テーブル１２０ａとメモリマッピングテーブル１３０ａとを作成する初期設定処理の流れを説明する。初期設定処理は、ＣＰＵユニット１００に電源が投入されると実行されるイニシャル処理の一部として実行される。
【００６０】
図２に示すＣＰＵユニット１００のＣＰＵ１５は、構成情報収集プログラム１１１を実行することにより、図１に示すデバイス構成収集部１４０として機能し、図２に示すデバイス設定プログラム１１２を実行することにより、図１に示すデバイス設定部１５０として機能する。
【００６１】
図７に示すように、デバイス構成収集部１４０は、まず、汎用バス７０１に実際に接続されているデバイス構成情報を収集し、収集したデータを格納したデバイス構成テーブル１２０ａを作成する（ステップＳ１１）。ここで、デバイス構成収集部１４０は、デバイス２１及び２２のデバイス名、デバイス種別、接続バス種別、ＰＣＩのアドレス空間でのメモリアドレス、位置情報、デバイスレジスタの物理アドレスを収集し、収集したデータを格納したデバイス構成テーブル１２０ａを作成する。
【００６２】
続いて、デバイス構成収集部１４０は、汎用バス７０１以外のバスに接続されているデバイスがあるか否かを判別し（ステップＳ１２）、汎用バス７０１以外のバスに接続されているデバイスがあると判別した場合（ステップＳ１２；Ｙｅｓ）、汎用バス７０１以外のバス上のデバイスに関する情報を収集し、収集した情報をデバイス構成テーブル１２０ａに登録する（ステップＳ１３）。
【００６３】
図２に示す例では、ＣＰＵユニット１００には、入力ユニット２００及び出力ユニット３００が接続されている。よって、デバイス構成収集部１４０は、入力ユニット２００及び出力ユニット３００それぞれについて、デバイス名、デバイス種別、接続されているバス種別とを収集し、図６に示すようにデバイス構成テーブル１２０ａに収集したデータを登録する。ここで、入力ユニット２００及び出力ユニット３００は、汎用バス７０１上のデバイスに接続されていないため、メモリアドレス、接続箇所、デバイスレジスタの値については、デバイス構成テーブル１２０ａに登録されない。
【００６４】
続いて、デバイス設定部１５０が、機能ユニットを汎用バス７０１上の仮想的なデバイスとして扱うために必要な情報を算出し、デバイス構成テーブル１２０ａとメモリマッピングテーブル１３０ａとを更新する（ステップＳ１４）。具体的には、デバイス設定部１５０は、図６に示すデバイス構成テーブル１２０ａに足りない情報であって、機能ユニットを汎用バス７０１上のデバイスとして扱うために必要な情報を算出し、算出した情報をデバイス構成テーブル１２０ａに登録する。さらに、デバイス設定部１５０は、メモリマッピングテーブル１３０ａに登録する情報を算出し、算出した情報をメモリマッピングテーブル１３０ａに登録する。その後、デバイス設定部１５０は、テーブルの更新をＣＰＵユニット１００に反映する（ステップＳ１５）。例えば、デバイス設定部１５０は、ＣＰＵユニット１００を再起動させて、テーブルの更新をＣＰＵユニットに反映する。以上が初期設定処理である。
【００６５】
次に、ＣＰＵユニット１００が、汎用命令で機能ユニットを制御するため汎用命令を専用命令に変換する命令変換処理を説明する。命令変換処理は、例えば、ユーザプログラム１１３が起動されると、実行される。
【００６６】
図２に示すＣＰＵユニット１００のＣＰＵ１５は、図１に示すプロトコル変換部１６０として機能し、図８に示す命令変換処理を実行する。プロトコル変換部１６０は、プログラム実行部１８０がユーザプログラム１１３の命令を順次に処理する中で、汎用命令を適宜変換する。
【００６７】
プロトコル変換部１６０は、汎用命令の対象であるデバイスについて、変換テーブル１１０ａの接続バス種別の値に応じて、汎用命令の対象が専用バス４１０上のデバイスであるか否かを判別する（ステップＳ２１）。汎用命令の対象が専用バス４１０上のデバイスであると判別すると（ステップＳ２１；Ｙｅｓ）、プロトコル変換部１６０は、変換テーブル１１０ａに、汎用命令に対応する専用命令が登録されているかを判別する（ステップＳ２２）。専用命令が変換テーブル１１０ａに登録されていない場合（ステップＳ２２：Ｎｏ）、プロトコル変換部１６０は、エラーを命令の呼び出し元へ返し（ステップＳ３１）、命令変換処理を終了する。
【００６８】
汎用命令に対応する専用命令が変換テーブル１１０ａに登録されている場合（ステップＳ２２；Ｙｅｓ）、プロトコル変換部１６０は、汎用命令に対応する専用命令を取得する（ステップＳ２３）。汎用命令に、メモリ領域を指定するメモリアドレスが付加されている場合がある。この場合、指定されたメモリアドレスは、ＰＣＩのアドレス空間のメモリアドレスであるので、プロトコル変換部１６０は、図５に示すメモリマッピングテーブル１３０ａから、指定されたＰＣＩのアドレス空間のメモリアドレスに対応する実開始アドレス及び実サイズを取得する。
【００６９】
プロトコル変換部１６０は、専用命令を実行する（ステップＳ２４）。具体的には、
専用命令を、専用バス４１０を介して該当の機能ユニットに送信する。汎用命令でメモリ領域が指定されている場合、プロトコル変換部１６０は、ステップＳ２３で取得した実開始アドレス及び実サイズを指定して、専用命令を実行する。変換テーブル１１０ａから戻り値を返す必要があると判別すると（ステップＳ２５；Ｙｅｓ）、プロトコル変換部１６０は、例えば、機能ユニットから帰ってきた応答データに含まれている戻り値を取得し、取得した戻り値に対応する期待される戻り値を変換テーブル１１０ａから取得し、期待される戻り値を命令の呼び出し元へ返す（ステップＳ２６）。
【００７０】
また、ステップＳ２１で、プロトコル変換部１６０が、汎用命令の対象が専用バス４１０上のデバイスでないと判別すると（ステップＳ２１；Ｎｏ）、プログラム実行部１８０がその汎用命令を通常通りに処理する（ステップＳ３０）。以上が、命令変換処理である。
【００７１】
以上説明したように、実施の形態に係るＣＰＵユニット１００は、汎用命令を専用バス４１０上のデバイスへの専用命令に変換する構成を備えることで、通信規格が異なる伝送経路上の装置をシームレスに制御することが可能である。
【００７２】
ＰＬＣの制御プログラムは、ラダーダイアグラム、シーケンシャル・ファンクション・チャートといった言語で作成されることが多く、このようなＰＬＣのプログラムミングに採用されることが多い言語についての知識を有しない者にとっては、ＰＬＣの制御プログラムの開発は容易ではなかった。実施の形態に係る構成を採用することで、汎用命令で、ＰＬＣを制御することが可能となり、例えば、汎用ＯＳがインストールされたコンピュータで使用される汎用プログラムミング言語により、ＰＬＣの制御プログラムを開発することも可能となる。
【００７３】
また、ＣＰＵユニット１００が、内部的に汎用命令を専用命令に変換しているので、例えば、ユーザがＰＣＩのアドレス空間でのメモリの対応付けを行うといった、作り込みを行う必要がない。
【００７４】
また、機能ユニットは、ＣＰＵユニット１００において汎用バス７０１上のデバイスとして扱われるため、例えば、ユーザは、ＣＰＵユニットのデバイスを管理するツールを使用して、ＣＰＵユニット１００内のデバイスと同様に、入力ユニット２００、出力ユニット３００といった機能ユニットを管理できる。この場合、汎用バス７０１上のデバイスとして扱われる機能ユニットの位置を示す情報として、図４に示すデバイス構成テーブル１２０ａの位置情報が表示されることになる。機能ユニットのリソース情報として、デバイス構成テーブル１２０ａのデバイスレジスタの物理アドレスが表示されることになる。
【００７５】
実施の形態では、ユーザプログラム１１３の実行時に、逐次、専用バス４１０上のデバイスに出された汎用命令を専用命令に変換する例を説明したが、これに限られない。例えば、ＣＰＵユニット１００は、イニシャル処理で、デバイス構成テーブル１２０ａとメモリマッピングテーブル１３０ａとに必要なデータを格納した後、ユーザプログラム１１３内の機能デバイスへの汎用命令を、専用命令に置き換えたプログラムを生成し、ユーザプログラム１１３の代わりに、命令が置き換えられたプログラムを実行するようにしてもよい。
【００７６】
実施の形態では、汎用バスとして、ＰＣＩを採用したバスを例に説明したが、これに限られない。例えば、図２に示す実施の形態に係る汎用バス７０１の代わりに、専用バス４１０とは異なるバス４２０を採用してもよい。この場合、専用バス４１０上のデバイスを、バス４２０の仮想的なバスとして取り扱うことで、実施の形態と同様の効果を期待できる。
【００７７】
実施の形態においては、ＣＰＵユニット１００が、バス変換制御装置として機能する例を説明したが、これに限られない。例えば、ＰＬＣに接続されている情報処理装置がバス変換制御装置として動作してもよい。この場合、ＣＰＵユニット１００と機能ユニットとが、本発明のデバイスに相当し、情報処理装置は、ＣＰＵユニット及び機能ユニットに出された汎用命令を専用命令に変換すればよい。
【００７８】
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【００７９】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【００８０】
１  プログラマブルロジックコントローラ（ＰＬＣ）、１１  メモリ、１２  汎用バスインタフェース、１３  専用バスインタフェース、１４  入出力インタフェース、１５  ＣＰＵ、１９  ＣＰＵバス、２１，２２  デバイス、１００  ＣＰＵユニット、１１０  変換設定記憶部、１１０ａ  変換テーブル、１１１  構成情報収集プログラム、１１２  デバイス設定プログラム、１１３  ユーザプログラム、１２０  デバイス構成記憶部、１２０ａ  デバイス構成テーブル、１３０  メモリ割当記憶部、１３０ａ  メモリマッピングテーブル、１４０  デバイス構成収集部、１５０  デバイス設定部、１６０  プロトコル変換部、１７０  構成変更検出部、１８０  プログラム実行部、２００  入力ユニット、３００  出力ユニット、４００  ベースユニット、４１０  専用バス、７０１  汎用バス、９０１  検出器、９０２  被制御機器
【要約】
ＣＰＵユニット（１００）は、第１通信規格に従った第１バスと、第１通信規格とは異なる第２通信規格に従った第２バスと、を備える。ＣＰＵユニット（１００）が備える変換設定記憶部（１１０）は、第１通信規格に従った汎用命令と第２通信規格に従った専用命令との対応付けを示す情報を記憶する。ＣＰＵユニット（１００）が備えるプロトコル変換部（１６０）は、第２バスを介して接続されたデバイスに向けて命令出力手段より汎用命令が出された場合、汎用命令に対応する専用命令を変換設定記憶部（１１０）から取得し、取得した専用命令を第２バスを介してデバイスに供給する。【図１】
0006746040.tif 000002
【図２】
0006746040.tif 000003
【図３】
0006746040.tif 000004
【図４】
0006746040.tif 000005
【図５】
0006746040.tif 000006
【図６】
0006746040.tif 000007
【図７】
0006746040.tif 000008
【図８】
0006746040.tif 000009