(57)【要約】【課題】クライアント毎に通信において利用する仮想領域の変換先を変更できる制御装置を提供する。【解決手段】制御装置１は、複数のクライアントから、同一の仮想領域１１２のアドレスを指定した読み書き要求を受ける通信部１１０と、通信部１１０による読み書きの対象となる実体領域１２０とを有し、通信部１１０は、クライアントの識別子と、クライアント毎に異なる実体領域１２０のアドレスと、を対応付けた管理テーブル１１３と、管理テーブル１１３を参照して、クライアントの識別子に対応付けられた実体領域１２０のアドレスに対する読み書きを実行するアドレス変換部１１１と、を有する。【選択図】図４
2019117979.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントから、同一の仮想領域のアドレスを指定した読み書き要求を受ける通信部と、
前記通信部による読み書きの対象となる実体領域とを有し、
前記通信部は、
前記クライアントの識別子と、前記クライアント毎に異なる前記実体領域のアドレスと、を対応付けた管理テーブルと、
前記管理テーブルを参照して、前記クライアントの識別子に対応付けられた前記実体領域のアドレスと、前記仮想領域のアドレスから、実体領域に対する読み書きを実行するアドレス変換部と、を有することを特徴とする
制御装置。
【請求項２】
前記仮想領域は第１の共通領域を有しており、
前記実体領域は第２の共通領域を有しており、
前記アドレス変換部は、前記第１の共通領域を指定した読み書き要求を受けた場合は、前記第２の共通領域に対する読み書きを実行することを特徴とする
請求項１記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御装置に関し、特にクライアント毎に通信において利用する仮想領域の変換先を変更できる制御装置に関する。
【背景技術】
【０００２】
サーバ上に定義された特定の領域に対し、クライアントが読み書きの要求を行うことで、サーバとクライアントとの間の通信を行うプロトコルが存在する。このようなプロトコルの一例としてはＭｏｄｂｕｓ／ＴＣＰがある。
【０００３】
このようなプロトコルは、例えば図１に示すように実装される。サーバとしての制御装置（例えばＰＬＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）上に、仮想記憶領域（以下、単に仮想領域と称する）を設ける。仮想領域は、プロトコルで定義されたアドレス空間を持つが、メモリなどの実体は持たない。仮想領域は、制御装置上で動作する通信機能（例えばＭｏｄｂｕｓ）が管理する。クライアントからの読み書き要求は、仮想領域のアドレスを指定して行われる。通信機能が有するアドレス変換機能は、指定された仮想領域のアドレスを、制御装置の実体的な記憶領域（以下、単に実体領域と称する）のアドレスに変換する。したがって、クライアントによる仮想領域を指定するデータの読み書き要求は、実体領域に対して実行される。
【０００４】
例えば特許文献１には、Ｍｏｄｂｕｓ領域（仮想領域に相当）と、実際のメモリ領域（実体領域に相当）と、を変換テーブルを利用して変換することで、自由なプログラミングを可能としたＭｏｄｂｕｓ／ＴＣＰサーバ機能が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１０４２８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このようなプロトコルにおいては、複数のクライアントが１台のサーバと通信を行う場合、各クライアントが読み書きする実体領域のアドレスを、クライアント毎に異なるものとする必要がある。複数のクライアントが実体領域の同一のアドレスへアクセスすると、意図しないデータの上書きなどが発生し、期待した結果が得られない可能性があるためである。
【０００７】
そのため、複数のクライアントが１台のサーバと通信を行う場合は、クライアントが読み書きに指定する仮想領域のアドレスも、クライアント毎に異なるものとする必要がある（図２参照）。
【０００８】
したがって、各クライアントには仮想領域のどこのアドレスを指定して読み書きを行うべきかを事前に設定しておく必要がある。このような個別設定にかかる労力は少なくなく、生産性向上の妨げとなっていた。
【０００９】
本発明はこのような問題点を解決するためになされたものであって、クライアント毎に通信において利用する仮想領域の変換先を変更できる制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一実施の形態にかかる制御装置は、複数のクライアントから、同一の仮想領域のアドレスを指定する読み書き要求を受ける通信部と、前記通信部による読み書きの対象となる実体領域とを有し、前記通信部は、前記クライアントの識別子と、前記クライアント毎に異なる前記実体領域のアドレスと、を対応付けた管理テーブルと、前記管理テーブルを参照して、前記クライアントの識別子に対応付けられた前記実体領域のアドレスと、前記仮想領域のアドレスから、実体領域に対する読み書きを実行するアドレス変換部と、を有することを特徴とする。
本発明の一実施の形態にかかる制御装置は、前記仮想領域は第１の共通領域を有しており、前記実体領域は第２の共通領域を有しており、前記アドレス変換部は、前記第１の共通領域を指定する読み書き要求を受けた場合は、前記第２の共通領域に対する読み書きを実行することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、クライアント毎に通信において利用する仮想領域の変換先を変更できる制御装置を提供することが可能である。
【図面の簡単な説明】
【００１２】
【図１】従来の制御装置の概要を示す図である。
【図２】従来の制御装置の概要を示す図である。
【図３】制御装置１のハードウェア構成を示す図である。
【図４】制御装置１の機能構成を示す図である。
【図５】実施例１にかかる制御装置１の概要を示す図である。
【図６】管理テーブル１１３の一例を示す図である。
【図７】設定情報の一例を示す図である。
【図８】実施例１にかかる制御装置１の概要を示す図である。
【発明を実施するための形態】
【００１３】
はじめに、本発明の実施の形態にかかる制御装置１の概要について説明する。
本実施の形態における制御装置１は、複数のクライアントから、仮想領域の同一のアドレスを指定する読み書き要求を受け付ける。制御装置１のアドレス変換機能により、クライアントの読み書き要求は、クライアント毎に異なる実体領域に対して実施される。これにより、同一の仮想領域のアドレスを指定する読み書き要求であっても、実際の読み書きはクライアント毎に別々の実体領域に対して行われる。よって、クライアント同士で実体領域におけるデータの読み書きの衝突が生じることがない。
【００１４】
このように、制御装置１によれば、複数のクライアントが同一の仮想領域アドレスを指定できる。これにより、クライアント側では、クライアント毎に異なる仮想領域アドレスを個別に設定する必要が無くなり、設定の手間を省くことができる。具体的には、複数のクライアントに対して同一の仮想領域アドレスを設定することで、個別に異なる仮想領域アドレスを設定する場合に比べ手間を抑制できる。あるいは、クライアントアプリ内に固定的な仮想領域アドレスを開発時に埋め込むことで、事後的な設定の手間を０にすることもできる。また、クライアントとしてのモバイルデバイスが動的に追加されるような、固定的に仮想領域アドレスを決めておくことが困難な環境にも容易に対応することが可能である。
【００１５】
続いて、本発明の実施の形態にかかる制御装置１の構成について図面を用いて詳細に説明する。
【００１６】
図３は、本発明の実施の形態にかかる制御装置１の要部を示す概略的なハードウェア構成図である。制御装置１が備えるＣＰＵ１１は、制御装置１を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２又は不揮発性メモリ１４に格納されたシステム・プログラムやシーケンス・プログラム（以下、プログラム）をバス２０を介して読み出し、プログラムに従って制御装置１全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ及び後述する表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データ等が格納される。
【００１７】
不揮発性メモリ１４は、例えば図示しないバッテリでバックアップされるなどして、制御装置１の電源がオフされても記憶状態が保持されるメモリとして構成される。不揮発性メモリ１４には、インタフェース１５を介して読み込まれたプログラムや後述する表示器／ＭＤＩユニット７０を介して入力されたプログラム、データ等が記憶されている。不揮発性メモリ１４に記憶されたプログラム等は、利用時にはＲＡＭ１３に展開されても良い。また、ＲＯＭ１２には、プログラムの作成及び編集のために必要とされる処理や、その他の必要とされる処理を実行するための各種のシステム・プログラムがあらかじめ書き込まれている。
【００１８】
インタフェース１５は、制御装置１と外部機器７２と接続するためのインタフェースである。外部機器７２からはプログラム等が読み込まれる。また、例えば外部機器７２がセンサであれば、センサデータ等が読み込まれる。
【００１９】
表示器／ＭＤＩユニット７０はディスプレイやキーボード等を備えた手動データ入力装置であり、インタフェース１８は表示器／ＭＤＩユニット７０のキーボードからの指令，データを受けてＣＰＵ１１に渡す。
【００２０】
クライアント７３−１乃至７３−ｎは、制御装置１に対してデータの読み書きを要求する情報処理装置であり、インタフェース１６−１乃至１６−ｎを介して制御装置１と接続される。インタフェース１６−１乃至１６−ｎは、クライアント７３−１乃至７３−ｎとＣＰＵ１１との間における要求データの送受信を仲介する。
【００２１】
図４は、制御装置１の機能構成を示すブロック図である。制御装置１は、通信機能を実行する通信部１１０、記憶領域である実体領域１２０を有する。通信部１１０は、アドレス変換部１１１、仮想領域１１２、管理テーブル１１３を有する。図４で示した制御装置１の各機能ブロックは、図３に示した制御装置１が備えるＣＰＵ１１が、ＲＯＭ１２等に格納されたシステム・プログラムを実行し、制御装置１の各部の動作を制御することにより実現される。
【００２２】
アドレス変換部１１１は、クライアントから仮想領域１１２の特定アドレスを指定した読み書き要求が発生した場合、管理テーブル１１３を参照して、クライアント毎に予め定めたれた実体領域１２０のアドレスに対する読み書きを実行する。ここで、仮想領域１１２の特定アドレスに対応付けられる実体領域１２０のアドレスは、クライアント毎に異なるものであって良く、その対応関係は管理テーブル１１３に定義されている。すなわち、複数のクライアントが仮想領域１１２の同一の特定アドレスを指定して読み書き要求を行った場合でも、アドレス変換部１１１は、クライアント毎に異なる実体領域１２０のアドレスへの読み書きを実行することができる。
【００２３】
管理テーブル１１３は、クライアントの識別子と、実体領域１２０のアドレスとを対応付けたテーブルである。アドレス変換部１１１は、クライアントから仮想領域１１２の特定のアドレスを指定した読み書き要求を受けた場合、当該クライアントの識別子をキーとして管理テーブル１１３を検索し、対応する実体領域１２０のアドレスを取得できる。なお管理テーブル１１３は、文字通りテーブル形式でデータを保持する必要はなく、配列その他任意の形式でデータを保持することができる。
【００２４】
＜実施例１＞
図５を参照して、実施例１にかかる制御装置１の動作について説明する。
実施例１にかかる制御装置１は、上述の通信部１１０及び実体領域１２０のほか、特定機能実行部１３０を有する。また、制御装置１には、図示しないインタフェースを介して複数のセンサ（例えば温度センサなど）が接続されており、各センサは一意のセンサ番号で特定可能であるものとする。
【００２５】
特定機能実行部１３０は、例えばセンサ番号の入力を受けて、当該センサ番号で識別されるセンサの出力値（例えば温度など）を返す処理を実行する。具体的には、実体領域１２０のアドレスＸにセンサ番号が書き込まれると、特定機能実行部１３０はアドレスＸを読み出してセンサ番号を取得し、図示しないインタフェースにアクセスして当該センサ番号の出力値を取得し、当該出力値を返り値として実体領域１２０のアドレスＸに書き込む。
【００２６】
通信部１１０の管理テーブル１１３には、クライアント識別子としてのＩＰアドレスと、それに対応する実体領域１２０のアドレスとが定義される。図６に管理テーブル１１３の一例を示す。図６の管理テーブル１１３では、クライアント１のＩＰアドレス１に対しては実体領域アドレス１、クライアント２のＩＰアドレス２に対しては実体領域アドレス２、・・クライアントｎのＩＰアドレスｎに対しては実体領域アドレスｎがそれぞれ対応付けられている。
【００２７】
アドレス変換部１１１は次のステップに従って動作する。
ステップ１（Ｓ１）：アドレス変換部１１１は、初期動作として設定情報を読み込む。設定情報とは、通信部１１０が動作するために必要な情報であり、所定の設定ファイル等に記載されているものとする。例えば図７に示すように、仮想領域１１２の先頭アドレス、実体領域１２０の先頭アドレス、実体領域１２０において１クライアントあたりに割り当てられる領域のサイズ（以下、単にサイズと称する）、最大クライアント数ｎなどが設定情報に含まれる。
【００２８】
ステップ２（Ｓ２）：アドレス変換部１１１は、クライアントから仮想領域１１２の特定アドレスに読み書き要求が発生したことを検知する。本実施例では、設定情報に含まれる、仮想領域１１２の先頭アドレスが特定アドレスである。
この読み書き要求とは、本実施例で言えば特定機能実行部１３０に引き渡すセンサ番号を書き込む要求である。又は、特定機能実行部１３０が出力したセンサデータを読み出す要求である。
【００２９】
ステップ３（Ｓ３）：アドレス変換部１１１は、仮想領域１１２の特定アドレスを指定して読み書き要求を出したクライアントの識別子、本実施例ではＩＰアドレスを取得する。そして取得したＩＰアドレスをキーとして管理テーブル１１３を検索する。ＩＰアドレスが存在する場合はステップ５（Ｓ５）に遷移する。存在しない場合はステップ４（Ｓ４）に遷移する。
【００３０】
ステップ４（Ｓ４）：管理テーブル１１３にクライアントのＩＰアドレスが存在しない場合、アドレス変換部１１１は、管理テーブル１１３に当該ＩＰをキーとする新たなレコードを追加することができる。このとき、当該ＩＰアドレスには、次式（１）で計算される実体領域アドレスを対応付けて登録する。
クライアントの実体領域アドレス  ＝  設定情報の実体領域１２０の先頭アドレス  ＋  （サイズ×ＩＤ−１）  ・・・（１）
ここでＩＤは、管理テーブル１１３に追加されたレコードのシリアル番号（ＩＤ＝１，２，・・・，ｎ）である。
【００３１】
ステップ５（Ｓ５）：管理テーブル１１３にクライアントのＩＰアドレスが存在する場合、アドレス変換部１１１は、当該ＩＰアドレスに対応付けられている実体領域アドレスを管理テーブル１１３から読み出す。
【００３２】
ステップ６（Ｓ６）：アドレス変換部１１１は、ステップ５（Ｓ５）で取得した実体領域アドレスに対し、データの読み書きを実行する。
これにより、クライアント（クライアント１，２，・・・，ｎ）から特定機能実行部１３０に引き渡すべきセンサ番号が、実体領域アドレス（実体領域アドレス１，２，・・・，ｎ）に書き込まれる。又は、特定機能実行部１３０からクライアント（クライアント１，２，・・・，ｎ）に引き渡すべきセンサデータが、実体領域アドレス（実体領域アドレス１，２，・・・，ｎ）から読み出される。
【００３３】
このような構成により、実施例１の制御装置１は、複数のクライアントが、同一の仮想領域アドレスを指定して、それぞれ異なるセンサデータの取得要求を行った場合でも、各クライアント毎に適切な値を返すことが可能である。
【００３４】
＜実施例２＞
図８を参照して、実施例２にかかる制御装置１について説明する。
実施例２にかかる制御装置１は、実施例１で示した構成に加えて、仮想領域１１２及び実体領域１２０内に共通領域を有している点に特徴がある。共通領域とは、複数のクライアントが共通にアクセス可能な領域である。すなわちクライアント１，２，・・・，ｎが仮想領域１１２の共通領域アドレスを指定した読み書き要求を行うと、アドレス変換部１１１は、どのクライアントからの要求であるかに関わらず、実体領域１２０の共通領域アドレスに対する読み書きを実行する。
【００３５】
共通領域は、例えば複数のクライアントにおいて共通して使用されるデータを配信するために用いることができる。具体的には、制御装置１のエラーなどの重要なコンテンツは、接続されているすべてのクライアントに表示することが望ましい。実施例１の構成によれば、このようなコンテンツを複数のクライアントに配信する際、実体領域１２０の対応するアドレスに個別に格納する必要があった。一方、実施例２の構成によれば、このようなコンテンツについては実体領域１２０の共通領域に登録すれば、複数のクライアントに配信できるため、配信の手間やタイムラグを抑制することが可能となる。
【００３６】
共通領域は、例えば設定情報においてサイズを０に設定することにより定義できる。
【００３７】
また、実施例１のように仮想領域１１２の特定アドレスを指定したアクセスを複数の実体領域アドレスにディスパッチする構成と、実施例２のように仮想領域１１２の共通領域アドレスを指定したアクセスを実体領域の共通領域アドレスに変換する構成と、を共存させる場合は、設定情報を複数設けることができる。クライアントから指定された仮想領域アドレスが、設定情報において０以外のサイズと関連付けられていれば、そのアクセスは複数の実体領域アドレスにディスパッチすべきものである（実施例１と同様）。一方、クライアントから指定された仮想領域アドレスが、設定情報において大きさが０のサイズと関連付けられていれば、そのアクセスは実体領域１２０の共通領域に対するものに変換される。
【００３８】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態又は実施例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【００３９】
例えば、上述の実施の形態ではクライアントの識別子としてＩＰアドレスを用いたが、本発明はこれに限定されるものではなく、クライアントを一意に識別可能な任意の識別子（例えばＭＡＣアドレスなど）でこれを代用することが可能である。
【００４０】
また、上述の実施の形態では制御装置１としてＰＬＣを例示したが、本発明はこれに限定されるものではなく、数値制御装置を始めとする任意の制御装置に適用可能である。
【符号の説明】
【００４１】
１  制御装置
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１５，１６−１乃至１６−ｎ  インタフェース
２０  バス
７０  表示器／ＭＤＩユニット
７１  操作盤
７２  外部機器
１１０  通信部
１１１  アドレス変換部
１１２  仮想領域
１１３  管理テーブル
１２０  実体領域
１３０  特定機能実行部
【図１】
2019117979.tif 000003
【図２】
2019117979.tif 000004
【図３】
2019117979.tif 000005
【図４】
2019117979.tif 000006
【図５】
2019117979.tif 000007
【図６】
2019117979.tif 000008
【図７】
2019117979.tif 000009
【図８】
2019117979.tif 000010