以下で説明する実施形態に係る通信装置100(又は、通信装置200)は、受信部131(又は、受信部231)と、判定部132(又は、判定部232)と、分割部133(又は、分割部233)と、送信部134(又は、送信部234)とを具備する。受信部131(又は、受信部231)は、管理装置40(所定の装置の一例に相当)によってノード10宛に送信された電文を受信する。判定部132(又は、判定部232)は、受信部131(又は、受信部231)によって受信された電文に、ノード10に対する命令が所定数以上含まれるか否かを判定する。分割部133(又は、分割部233)は、判定部132(又は、判定部232)によって電文に所定数以上の命令が含まれると判定された場合に、受信部131(又は、受信部231)によって受信された電文をノード10が処理可能な数以下の命令を含む電文に分割する。送信部134(又は、送信部234)は、分割部133(又は、分割部233)によって分割された複数の電文をノード10に送信する。
また、以下で説明する実施形態に係る通信装置200は、相手先情報テーブル221と、更新部236とを具備する。相手先情報テーブル221は、ノード10毎に、かかるノード10が処理可能である命令の数を記憶する。また、更新部236は、送信部234によってノード10に送信された電文に含まれる命令の数と、かかる電文に対する当該ノードからの応答に基づいて、相手先情報テーブル221に記憶されている命令の数を更新する。
また、以下で説明する実施形態において、受信部131(又は、受信部231)は、管理装置40によってノード10宛に送信された電文を受信する。また、判定部132(又は、判定部232)は、受信部131(又は、受信部231)によって受信された電文に、ノード10のプロパティ(属性情報の一例に相当)を書き込むための書込命令と、ノード10のプロパティを読み出すための読出命令とが含まれるか否かを判定する。また、分割部133(又は、分割部233)は、判定部132(又は、判定部232)によって電文に書込命令と読出命令との双方が含まれると判定された場合に、受信部131(又は、受信部231)によって受信された電文を、書込命令を含む電文と読出命令を含む電文とに分割する。また、送信部134(又は、送信部234)は、分割部133(又は、分割部233)によって分割された電文をノード10に送信する。
また、以下で説明する実施形態に係る通信装置100(又は、通信装置200)は、結合部135を具備する。結合部135は、送信部134(又は、送信部234)によって送信された電文の応答をノード10から受信した場合に、受信した応答を結合する。また、送信部134(又は、送信部234)は、結合部135によって結合された応答を管理装置40に送信する。
以下、図面を参照して、実施形態に係る通信装置を説明する。実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(第1の実施形態)
[エネルギー管理システムの構成]
図1は、第1の実施形態に係るエネルギー管理システム1の構成例を示す図である。図1に示したエネルギー管理システム1は、例えば、宅内に設置されている家電等の制御や監視を実現するシステムであり、HEMSなどと呼ばれる。第1の実施形態に係るエネルギー管理システム1は、HEMS標準プロトコルのECHONET Liteが適用されているものとする。
このエネルギー管理システム1には、図1に示すように、ホームネットワークシステム2と、ユーザ端末3と、管理サーバ4とが含まれる。ホームネットワークシステム2、ユーザ端末3及び管理サーバ4は、ネットワーク5を介して、有線又は無線により通信可能に接続される。かかるネットワーク5は、例えば、インターネットやイントラネットに該当する。なお、エネルギー管理システム1には、複数のホームネットワークシステム2や、複数台のユーザ端末3や、複数台の管理サーバ4が含まれてもよい。
ホームネットワークシステム2は、例えばユーザ宅内や店舗内などに構築され、分電盤101、家電102、家電103、ゲートウェイ装置20、ユーザ端末30、管理装置40、通信装置1001〜1003などを有する。
分電盤101は、例えばユーザ宅内の壁などに設けられ、各種ブレーカーを有し、家電102や家電103へ電力を供給する。家電102や家電103は、ユーザ宅内に設置されている電化製品である。例えば、家電102や家電103は、冷蔵庫、テレビ、エアコン、クッキングヒーター、暖房器具、給湯器、電気錠、インターホン(ドアホン)、照明器具、洗濯機などに該当する。
ECHONET Liteにおいて、このような分電盤101、家電102及び103は、「ECHONETオブジェクト」などと呼ばれる。そして、各ECHONETオブジェクトには、設定値や状態といった属性が「ECHONETプロパティ」として定義される。このようなECHONETオブジェクトは、後述する管理装置40から、「ECHONET Lite電文(以下、単に「電文」と表記する場合がある)」を受信することにより、ECHONETプロパティを書き込む処理や読み出す処理を行う。
例えば、ECHONETオブジェクトは、ECHONETプロパティに所定のプロパティ値を書き込む旨の書込命令が設定されている電文を受信した場合に、ECHONETプロパティに所定のプロパティ値を書き込む。これにより、ECHONETオブジェクトは、管理装置40によって「電源のオン/オフ」や「動作モードの切り替え」などの各種制御が行われる。
また、例えば、ECHONETオブジェクトは、ECHONETプロパティに設定されているプロパティ値を読み出す旨の読出命令が設定されている電文を受信した場合に、ECHONETプロパティに設定されているプロパティ値を管理装置40に送信する。これにより、ECHONETオブジェクトは、管理装置40によって動作状況の監視などが行われる。
以下では、分電盤101、家電102及び103などのECHONETオブジェクトを区別する必要がない場合には、単に「ノード10」と表記し、ECHONETプロパティを単に「プロパティ」と表記する。また、ノード10に送信される電文を「要求電文」と表記し、ノード10から送信される要求電文に対する応答の電文を「応答電文」と表記する場合がある。
ゲートウェイ装置20は、管理装置40と接続され、ホームネットワークシステム2を外部のネットワーク5に接続する通信機器である。図1の例では、ゲートウェイ装置20は、ホームネットワークシステム2内の管理装置40と、ホームネットワークシステム2外のユーザ端末3や管理サーバ4とをネットワーク5を介して接続する。
ユーザ端末30は、例えば、タブレット端末、PC(Personal Computer)、携帯電話機、PDA(Personal Data Assistance)などであり、無線LAN(Local Area Network)や有線LANなどを介して管理装置40に接続される。かかるユーザ端末30は、ユーザ操作に従ってノード10に対する制御命令を管理装置40に送信したり、管理装置40から受信したノード10に関する各種情報を表示したりする。
管理装置40は、アクセスポイントとしての役割を担い、Bluetooth(登録商標)などの近距離無線技術や宅内LANを用いて、ゲートウェイ装置20やユーザ端末30や通信装置1001〜1003と通信を行う。かかる管理装置40は、ユーザ端末30から入力された各種制御命令に基づいて、「プロパティ値の書き込み」や「プロパティ値の読み出し」といった命令が設定されている要求電文をノード10に送信したり、ノード10から受信した応答電文から得られる各種情報をユーザ端末30に送信したりする。なお、管理装置40は、ゲートウェイ装置20と一体となって形成されてもよい。
通信装置1001〜1003は、ノード10と管理装置40との間で送受信される電文を中継する。図1の例の場合、通信装置1001は、分電盤101と管理装置40との間に設置され、通信装置1002は、家電102と管理装置40との間に設置され、通信装置1003は、家電103と管理装置40との間に設置される。詳細については後述するが、通信装置1001〜1003は、管理装置40から要求電文を受信した場合に、ノード10において処理可能な数の命令が含まれる要求電文に分割し、分割した複数の要求電文をノード10に送信する。そして、通信装置1001〜1003は、ノード10から受信した各応答電文を結合して管理装置40に送信する。なお、以下では、通信装置1001〜1003を区別する必要がない場合には、単に「通信装置100」と表記する場合がある。
このように、ホームネットワークシステム2を利用するユーザは、ユーザ端末30を用いることで、管理装置40を介してノード10を制御することができる。例えば、ユーザ端末30が携帯電話機である場合、ユーザは、宅内で携帯電話機を操作するだけで、ノード10の動作を制御したり、ノード10の動作状況を監視したりすることができる。
また、図1において、ホームネットワークシステム2の外部に示したユーザ端末3は、例えば、携帯電話機、PDA、タブレット端末、PCなどであり、無線LANや有線LANなどを介してネットワーク5に接続される。かかるユーザ端末3は、ユーザ端末30と同様に、ユーザ操作に従ってノード10に対する制御命令を管理サーバ4に送信したり、管理サーバ4から受信したノード10に関する各種情報を表示したりする。
管理サーバ4は、ネットワーク5を介してユーザ端末3から受信した各種制御命令を管理装置40に送信する。これにより、管理装置40は、ホームネットワークシステム2の外部に位置するユーザ端末3から送信された制御命令に基づいて、ノード10を制御する。また、管理サーバ4は、ネットワーク5を介して管理装置40から受信したノード10に関する各種情報をユーザ端末3に送信する。これにより、ユーザ端末3は、ホームネットワークシステム2内に設置されているノード10に関する各種情報を表示する。このように、ユーザ端末3のユーザは、ホームネットワークシステム2内に所在しない場合であっても、ノード10を制御することや、ノード10の動作状況を監視したりすることができる。
このようなエネルギー管理システム1では、通信装置100による処理によって、各ノード10が処理可能な電文を流通させることを可能にする。以下、通信装置100について詳細に説明する。
[通信装置の構成]
図2は、第1の実施形態に係る通信装置100の構成例を示す図である。図2に示すように、第1の実施形態に係る通信装置100は、通信部110と、記憶部120と、制御部130とを有する。
通信部110は、無線通信処理や有線通信処理を行う。例えば、通信部110は、図1に示したノード10や管理装置40との間で、無線通信又は有線通信により電文等の各種情報を送受信する。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。かかる記憶部120は、図2に示すように、相手先情報テーブル121と、TID(Transaction ID)対応テーブル122とを有する。
図3に、第1の実施形態に係る相手先情報テーブル121の一例を示す。図3に示した例では、相手先情報テーブル121は、「送信先アドレス」と、「処理可能プロパティ数」とを対応付けて記憶する。
「送信先アドレス」は、ノード10の宛先情報を示し、図3の例ではIPアドレスに該当する。なお、「送信先アドレス」は、IPアドレスに限られず、ノード10を識別可能な情報であればよく、例えば、Ethernet(登録商標)アドレス等のMAC(Media Access Control)アドレスであってもよい。「処理可能プロパティ数」は、ノード10が1個の要求電文において処理できるプロパティへの命令の数を示す。ここでいう「プロパティへの命令」とは、「プロパティ値の書き込み命令」や「プロパティ値の読み出し命令」などに該当する。また、要求電文には、同一のプロパティに対する書き込み命令及び読み出し命令が含まれる場合もあるが、ここでは、処理対象のプロパティが同一であっても、「プロパティ値の書き込み命令」が1個の命令に該当し、「プロパティ値の読み出し命令」が1個の命令に該当するものとする。
すなわち、図3では、送信先アドレスが「192.168.0.100」であるノード10は、1個の命令が含まれている要求電文を処理することができるものの、2個以上の命令が含まれている要求電文を処理することができない例を示している。
なお、図1に示した例のように、1台のノード10に1台の通信装置100が設置される場合には、相手先情報テーブル121には、1レコードのみ格納されることとなる。また、第1の実施形態では、管理者等によって、相手先情報テーブル121に処理可能プロパティ数を予め格納されるものとする。
TID対応テーブル122は、管理装置40から受信した要求電文と、かかる要求電文が分割された後の要求電文(以下、分割された要求電文を「分割電文」と表記する場合がある)との対応関係を記憶する。ここで、図4に、第1の実施形態に係るTID対応テーブル122の一例を示す。図4に示した例では、TID対応テーブル122は、「送信元アドレス」と、「元電文TID」と、「分割数」と、「分割電文TID」と、「応答受信有無」とを対応付けて記憶する。
「送信元アドレス」は、要求電文の送信元(管理装置40など)の宛先情報を示し、図3の例ではIPアドレスに該当する。なお、「送信元アドレス」は、Ethernet(登録商標)アドレス等のMACアドレスであってもよい。「元電文TID」は、管理装置40から受信した要求電文に設定されているTIDを示す。「分割数」は、元電文TIDによって識別される要求電文の分割数を示す。「分割電文TID」は、分割電文に設定されるTIDを示す。「応答受信有無」は、分割電文に対する応答電文をノード10から受信したか否かを示す。図4の例では、「応答受信有無」に「yes」が記憶されている場合には、ノード10から応答電文を受信したことを示し、「応答受信有無」に「no」が記憶されている場合には、ノード10から応答電文を受信していないことを示す。
すなわち、図4では、送信元アドレスが「192.168.1.1」である装置(管理装置40など)から、TID「1」が設定されている要求電文を受信し、かかる要求電文が3個の分割電文に分割されている例を示している。また、図4では、これらの3個の分割電文には、それぞれTID「100」、「101」、「102」が設定され、TIDが「100」である分割電文、及び、TIDが「101」である分割電文に対応する応答電文をノード10から受信しており、TIDが「102」である分割電文に対応する応答電文をノード10から受信していない例を示している。
なお、図1に示した例のように、通信装置100が管理装置40のみから要求電文を受信する場合には、TID対応テーブル122には、管理装置40の送信元アドレスのみが格納されることとなる。
図2の説明に戻って、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。また、制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置(例えば、記憶部120)に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。かかる制御部130は、受信部131と、判定部132と、分割部133と、送信部134と、結合部135とを有する。
受信部131は、ノード10宛の要求電文を管理装置40から受信する。すなわち、第1の実施形態では、管理装置40からノード10に要求電文が直接送信されるのではなく、管理装置40から送信された要求電文は通信装置100によってインターセプトされる。
また、受信部131は、後述する送信部134によって送信された要求電文を受信したノード10から、かかる要求電文に対する応答電文を受信する。この場合、受信部131は、ノード10から受信した応答電文を結合部135に出力する。
判定部132は、受信部131によって受信された要求電文に所定の閾値以上の命令が含まれるか否かを判定する。具体的には、判定部132は、要求電文の送信先アドレスに対応する処理可能プロパティ数を相手先情報テーブル121から取得する。そして、判定部132は、要求電文に含まれる命令の数(処理対象プロパティの数)と、相手先情報テーブル121から取得した処理可能プロパティ数とを比較する。
例えば、相手先情報テーブル121が図3に示した各種情報を記憶しているものとする。そして、受信部131が、送信先アドレスが「192.168.0.101」である要求電文を受信したものとする。この場合、判定部132は、かかる要求電文に含まれる命令数と、相手先情報テーブル121に記憶されている処理可能プロパティ数「3」とを比較する。
分割部133は、判定部132によって要求電文に命令が含まれる命令数が所定の閾値(すなわち、処理可能プロパティ数)よりも大きいと判定された場合に、かかる要求電文を処理可能プロパティ数以下の命令を含む複数の分割電文に分割する。
例えば、上記例のように、相手先情報テーブル121が図3に示した各種情報を記憶しているものとする。また、受信部131が、送信先アドレスが「192.168.0.101」であり、かつ、6個の命令が含まれている要求電文を受信したものとする。この場合、分割部133は、例えば、処理可能プロパティ数と同一の3個の命令が含まれる分割電文を2個生成する。また、この例に限られず、分割部133は、2個の命令が含まれる3個の分割電文を生成したり、1個の命令が含まれる6個の分割電文を生成したりしてもよい。
送信部134は、受信部131によって受信された要求電文をノード10に送信する。具体的には、送信部134は、分割部133によって分割処理が行われた場合には、分割電文のそれぞれをノード10に送信する。また、送信部134は、分割部133によって分割処理が行われていない場合には、受信部131によって受信された要求電文をノード10に送信する。
結合部135は、受信部131によって応答電文が受信された場合に、かかる応答電文を結合することで、1個の応答電文を生成する。そして、結合部135は、生成した応答電文を送信部134に出力することで、管理装置40への応答電文を送信させる。
[通信装置の処理例]
次に、図5を用いて、通信装置100による電文の送受信処理について説明する。図5は、第1の実施形態に係る通信装置100による電文の送受信処理の一例を示す図である。図5の上段には、管理装置40から受信した要求電文D10を示し、図5の下段には、要求電文D10が分割された後の分割電文D101〜D10kを示す。
図5の上段に示すように、要求電文D10には、「EHD1」、「EHD2」、「TID」、「SEOJ」、「DEOJ」、「ESV」、「OPC」、「EPC1」、「PDC1」、「EDT1」、・・・、「EPCm」、「PDCm」、「EDTm」といった項目が含まれる。
「EHD1」及び「EHD2」は、ECHONET Lite電文のヘッダを示し、プロトコル種別等が設定される。「TID」は、電文を識別するための識別子を示す。かかる「TID」は、ECHONET Lite通信において、送信側(例えば、管理装置40)が、要求電文と応答電文とを紐付ける際に用いる。「SEOJ」は、送信元ECHONETオブジェクトを識別するための識別子を示す。「DEOJ」は、送信先ECHONETオブジェクトを識別するための識別子を示す。
「ESV」は、ECHONET Liteサービスを示す。例えば、要求電文D10に含まれる命令が「プロパティ値の書き込み」である場合、「ESV」には「0x61」が設定され、要求電文D10に含まれる命令が「プロパティ値の読み出し」である場合、「ESV」には「0x62」が設定される。
「OPC」は、処理対象プロパティカウンタを示し、要求電文D10に含まれる命令数に該当する。具体的には、「OPC」には、「プロパティ値の書き込み対象となるプロパティの数」や「プロパティ値の読み出し対象となるプロパティの数」として、後段の「EPC」、「PDC」及び「EDT」の組合せの数が設定される。なお、要求電文D10に「プロパティ値の書き込み命令」及び「プロパティ値の読み出し命令」の双方が含まれる場合には、「プロパティ値の書き込み対象となるプロパティの数」が「OPCSet」に設定され、「プロパティ値の読み出し対象となるプロパティの数」が「OPCGet」に設定されるが、図5の例では、要求電文D10に「プロパティ値の書き込み命令」又は「プロパティ値の読み出し命令」のいずれか一方のみが含まれているものとする。
「EPC」、「PDC」及び「EDT」は、1個の命令に該当する。このうち、「EPC」は、ECHONET Liteプロパティを示す。「PDC」は、後段の「EDT」のバイト数を示す。「EDT」は、ECHONET Liteプロパティの値を示す。
すなわち、図5に示した要求電文D10には、「EPC」、「PDC」及び「EDT」の組合せがm個存在するので、プロパティへの命令がm個含まれていることとなる。判定部132は、このような要求電文D10が受信部131によって受信された場合に、要求電文D10に設定されているOPC「m」と、相手先情報テーブル121に記憶されている処理可能プロパティ数とを比較する。ここの例では、OPC「m」が処理可能プロパティ数よりも大きいものとする。そして、通信装置100の分割部133は、図5の下段に示すように、要求電文D10をn(<m)個の命令を含む分割電文D101〜D10kに分割するものとする。
分割処理について一例を挙げて説明すると、分割部133は、所定のカウンタ「k」、及び、通信装置100において管理されるTIDであるTIDカウンタ値を用いて、カウンタ「k」をインクリメントしながら分割電文D10kを順次生成する。具体的には、分割部133は、要求電文D10の送信元のIPアドレスと、要求電文D10の「TID」とをTID対応テーブル122の「送信元アドレス」及び「元電文TID」に格納する。このとき、分割部133は、TID対応テーブル122の「分割数」に「0」を格納する。
続いて、分割部133は、カウンタ「k」を「1」とし、分割電文D10k(すなわち、分割電文D101)の「EHD1」、「EHD2」、「SEOJ」、「DEOJ」及び「ESV」に、要求電文D10の「EHD1」、「EHD2」、「SEOJ」、「DEOJ」及び「ESV」をコピーする。また、分割部133は、要求電文D10に含まれる「EPC1」、「PDC1」及び「EDT1」〜「EPCn」、「PDCn」及び「EDTn」を分割電文D101にコピーする。さらに、分割部133は、分割電文D101の「OPC」に「n」を設定する。
続いて、分割部133は、TIDカウンタ値を読み出して、読み出したTIDカウンタ値を分割電文D101の「TID」に設定する。ここでは、TIDカウンタ値が「s」であるものとし、分割部133は、分割電文D101の「TID」に「s」を設定する。さらに、分割部133は、TIDカウンタ値「s」をTID対応テーブル122の「分割電文TID」に格納するとともに、TID対応テーブル122の「応答受信有無」に未受信を示す情報(図4の例では「no」)を格納する。このとき、分割部133は、上記において要求電文D10の「TID」を格納したTID対応テーブル122のレコードに、TIDカウンタ値「s」、及び、未受信を示す情報を格納する。そして、分割部133は、TID対応テーブル122の「分割数」に「1」を加算する。分割部133は、カウンタ「k」が「1」の場合には、「分割数」に「1」を格納することとなる。また、分割部133は、TIDカウンタ値「s」に「1」を加算して、新たなTIDカウンタ値「s+1」として記録しておく。
このようにして、分割部133は、カウンタ「k」に「1」を加算しながら「k×n≧m」となるまで上記処理を行うことにより、分割電文D101〜D10kを生成する。このとき、分割部133は、分割電文D10kを生成する場合には、要求電文D10に含まれる「EPC((k−1)n+1)」、「PDC((k−1)n+1)」及び「EDT((k−1)n+1)」〜「EPC(k×n)」、「PDC(k×n)」及び「EDT(k×n)」をコピーする。また、「k×n>m」である場合(すなわち、「m」が「k」で割り切れない場合)、分割部133は、最後の分割電文D10kについては、要求電文D10に含まれる「EPC((k−1)n+1)」、「PDC((k−1)n+1)」及び「EDT((k−1)n+1)」〜「EPCm」、「PDCm」及び「EDTm」をコピーする。
そして、送信部134は、分割部133によって分割された分割電文D101〜D10kをノード10に送信する。これにより、受信部131は、分割電文D101〜D10kのそれぞれに対応する応答電文をノード10から受信し、受信した各応答電文を結合部135に出力する。ノード10から送信される応答電文には、分割電文D101〜D10kに設定されていたTIDと同一のTIDが設定される。これにより、結合部135は、応答電文に設定されているTIDに基づいて、どの分割電文に対応する応答電文であるかを判定する。そして、結合部135は、応答電文に設定されている「TID」に対応するTID対応テーブル122の「応答受信有無」に受信済みを示す情報(図4の例では「yes」)を格納する。
また、結合部135は、分割電文D101〜D10kに対応する全ての応答電文が受信済みとなった場合に、各応答電文を結合することで、要求電文D10に対する応答電文を生成する。具体的には、ECHONET Liteの応答電文には、要求電文に設定されていた命令(「EPC」、「PDC」及び「EDT」の組合せ)の順に、かかる命令に対応する応答内容(「EPC」、「PDC」及び「EDT」の組合せ)が設定される。したがって、結合部135は、ノード10から受信した各応答電文から応答内容を抽出し、抽出した応答内容を要求電文D10に設定されていた命令の順に配置することで、要求電文D10に対する応答電文を生成する。
また、結合部135は、ノード10から受信した全応答電文の「ESV」に正常応答である情報(例えば、「0x71」や「0x72」)が設定されている場合には、要求電文D10に対する応答電文の「ESV」には正常応答である情報(例えば、「0x71」や「0x72」)を設定する。一方、結合部135は、「ESV」に不可応答である情報(例えば、「0x51」や「0x52」)が設定されている応答電文が存在する場合には、要求電文D10に対する応答電文の「ESV」には不可応答である情報(例えば、「0x51」や「0x52」)を設定する。そして、送信部134は、結合部135によって生成された応答電文を管理装置40に送信する。
なお、結合部135は、分割電文を送出した後に所定の時間が経過しても分割電文に対する応答電文の一部が受信できなかった場合は、受信済みの応答電文のみから要求電文D10に対する応答電文を生成することもできる。この場合、結合部135は、応答のなかった命令に対応する応答内容を飛ばし、後に続く命令に対応する応答内容を前に詰めることで、要求電文D10に対する応答電文を生成する。また、この場合、結合部135は、応答電文の「ESV」には不可応答である情報(例えば、「0x51」や「0x52」)を設定する。
[エネルギー管理システムの処理手順]
次に、図6を用いて、エネルギー管理システム1による処理の手順について説明する。図6は、第1の実施形態に係るエネルギー管理システム1による処理手順を示すシーケンス図である。
図6に示した例において、管理装置40は、要求電文を通信装置100に送信する(ステップS101)。通信装置100の判定部132は、管理装置40から受信した要求電文に含まれる命令数(すなわち、OPCの値)に基づいて、ノード10が要求電文を処理できるか否かを判定する(ステップS102)。ここでは、判定部132が、ノード10が要求電文を処理できないと判定したものとする。この場合に、分割部133は、図5に示した例のように、管理装置40から受信した要求電文を分割することで分割電文を生成する(ステップS103)。
そして、送信部134は、分割部133によって生成された分割電文を個別にノード10へ送信する(ステップS104)。これにより、ノード10は、通信装置100から受信した分割電文に対する応答電文を通信装置100に送信する(ステップS105)。
また、結合部135は、ステップS104及びS105の間に、送信部134によって送信された各分割電文に対する応答電文を全て受信したか否かを判定する(ステップS106)。そして、結合部135は、全ての応答電文を受信した場合には、受信した応答電文を結合する(ステップS107)。そして、送信部134は、ステップS101において受信した要求電文に対する応答電文として、結合部135によって結合された後の応答電文を管理装置40に送信する(ステップS108)。
[他の分割例(1)]
上記実施形態では、図5に示した例のように、ノード10が処理可能な命令数(処理可能プロパティ数)に基づいて、要求電文を分割する例を示した。これは、ノード10によって1個の要求電文において処理可能な命令数(プロパティ数)が異なるからである。しかし、ノード10によっては、命令数にかかわらず、「プロパティ値の書き込み命令」及び「プロパティ値の読み出し命令」の双方が含まれている要求電文を処理することができない場合もある。そこで、通信装置100は、要求電文に「プロパティ値の書き込み命令」及び「プロパティ値の読み出し命令」の双方が含まれている場合に、「プロパティ値の書き込み命令」のみが含まれる分割電文と、「プロパティ値の読み出し命令」のみが含まれる分割電文とに分割してもよい。この点について図7及び図8を用いて具体的に説明する。なお、以下では、「プロパティ値の書き込み命令」及び「プロパティ値の読み出し命令」の双方が含まれる要求電文を「SetGet電文」と表記する場合がある。
図7は、第1の実施形態に係る相手先情報テーブル121の他の例を示す図である。図7に示した例では、相手先情報テーブル121は、「送信先アドレス」と、「SetGet電文対応」と対応付けて記憶する。「送信先アドレス」は、図3に示した送信先アドレスと同様である。「SetGet電文対応」は、ノード10がSetGet電文を処理することができるか否かを示す。図7の例では、「SetGet電文対応」に「yes」が記憶されている場合には、ノード10がSetGet電文を処理できることを示し、「SetGet電文対応」に「no」が記憶されている場合には、ノード10がSetGet電文を処理できないことを示す。
続いて、図8を用いて、通信装置100によるSetGet電文の送受信処理について説明する。図8は、第1の実施形態に係る通信装置100によるSetGet電文の送受信処理の一例を示す図である。図8の上段には、管理装置40から受信したSetGet電文D20を示し、図8の下段には、SetGet電文D20が分割された後の2個の分割電文D201及びD202を示す。
図8の上段に示すように、SetGet電文D20には、図5に示した要求電文D10と比較して、「OPC」の代わりに、「OPCSet」及び「OPCGet」が含まれる。「OPCSet」は、プロパティ値の書き込み対象となるプロパティの数を示す。具体的には、「OPCSet」には、後段の「EPC1」、「PDC1」及び「EDT1」〜「EPCi」、「PDCi」及び「EDTi」の数「i」が設定される。また、「OPCGet」は、プロパティ値の読み出し対象となるプロパティの数を示す。具体的には、「OPCGet」には、後段の「EPCi+1」、「PDCi+1」及び「EDTi+1」〜「EPCj」、「PDCj」及び「EDTj」の数「j−i」が設定される。すなわち、図8に示したSetGet電文D20には、i個の書き込み命令と、(j−i)個の読み出し命令とが含まれる。このようなSetGet電文D20の「ESV」には、例えば、「プロパティ値の書き込み命令」及び「プロパティ値の読み出し命令」の双方が含まれることを示す「0x6E」が設定される。
通信装置100の判定部132は、図8に示したSetGet電文D20が受信部131によって受信された場合に、SetGet電文D20の「ESV」を読み出す。そして、判定部132は、「ESV」に「0x6E」が設定されている場合には、図7に示した相手先情報テーブル121の「SetGet電文対応」を参照し、SetGet電文D20の送信先となるノード10がSetGet電文D20を処理することができるか否かを判定する。そして、分割部133は、判定部132による判定処理の結果、ノード10がSetGet電文D20を処理することができる場合には、SetGet電文D20を送信部134に出力することで、送信部134にSetGet電文D20をノード10へ送信させる。一方、分割部133は、ノード10がSetGet電文D20を処理できない場合には、図8の下段に示した例のように、SetGet電文D20を分割する。
かかる分割処理の一例について説明すると、分割部133は、SetGet電文D20の送信元のIPアドレスと、SetGet電文D20の「TID」とをTID対応テーブル122の「送信元アドレス」及び「元電文TID」に格納する。このとき、分割部133は、TID対応テーブル122の「分割数」に「0」を格納する。
続いて、分割部133は、カウンタ「k」を「1」とし、分割電文D20k(すなわち、分割電文D201)の「EHD1」、「EHD2」、「SEOJ」及び「DEOJ」に、SetGet電文D20の「EHD1」、「EHD2」、「SEOJ」及び「DEOJ」をコピーする。また、分割部133は、カウンタ「k」が「1」である場合には、SetGet電文D20に含まれる「EPC1」、「PDC1」及び「EDT1」〜「EPCi」、「PDCi」及び「EDTi」を分割電文D201にコピーする。さらに、分割部133は、分割電文D201の「OPC」に、SetGet電文D20の「OPCSet」に設定されている「i」をコピーする。さらに、分割部133は、分割電文D201の「ESV」に、プロパティ値の書き込みを示す「0x61」を設定する。
続いて、分割部133は、TIDカウンタ値を読み出して、読み出したTIDカウンタ値を分割電文D201の「TID」に設定する。ここでは、分割部133は、分割電文D201の「TID」に「s」を設定するものとする。さらに、分割部133は、TIDカウンタ値「s」をTID対応テーブル122の「分割電文TID」に格納するとともに、TID対応テーブル122の「応答受信有無」に未受信を示す情報(図4の例では「no」)を格納する。そして、分割部133は、TID対応テーブル122の「分割数」に「1」を加算する。また、分割部133は、TIDカウンタ値「s」に「1」を加算して、新たなTIDカウンタ値「s+1」として記録しておく。
続いて、分割部133は、カウンタ「k」に「1」を加算して「2」とし、分割電文D20k(すなわち、分割電文D202)の「EHD1」、「EHD2」、「SEOJ」及び「DEOJ」に、SetGet電文D20の「EHD1」、「EHD2」、「SEOJ」及び「DEOJ」をコピーする。また、分割部133は、カウンタ「k」が「2」である場合には、SetGet電文D20に含まれる「EPCi+1」、「PDCi+1」及び「EDTi+1」〜「EPCj」、「PDCj」及び「EDTj」を分割電文D202にコピーする。さらに、分割部133は、分割電文D202の「OPC」に、SetGet電文D20の「OPCGet」に設定されている「j−i」をコピーする。さらに、分割部133は、分割電文D202の「ESV」に、プロパティ値の読み出しを示す「0x62」を設定する。
続いて、分割部133は、TIDカウンタ値「s+1」を読み出して、読み出したTIDカウンタ値「s+1」を分割電文D202の「TID」に設定する。さらに、分割部133は、TIDカウンタ値「s+1」をTID対応テーブル122の「分割電文TID」に格納するとともに、TID対応テーブル122の「応答受信有無」に未受信を示す情報を格納する。そして、分割部133は、TID対応テーブル122の「分割数」に「1」を加算する。また、分割部133は、TIDカウンタ値「s+1」に「1」を加算して、新たなTIDカウンタ値「s+2」として記録しておく。
このようにして、分割部133は、「k>2」となるまで上記処理を行う。すなわち、分割部133は、カウンタ「k」=「1」である場合には、プロパティ値の書き込み命令のみが含まれる分割電文D201を生成し、カウンタ「k」=「2」である場合には、プロパティ値の読み出し命令のみが含まれる分割電文D202を生成する。
そして、送信部134は、分割部133によって分割された分割電文D201及びD202をノード10に送信する。これにより、受信部131は、分割電文D201及びD202のそれぞれについて、ノード10から応答電文を受信し、受信した応答電文を結合部135に出力する。そして、結合部135は、応答電文に設定されている「TID」に対応するTID対応テーブル122の「応答受信有無」に受信済みを示す情報を格納する。そして、結合部135は、分割電文D201及びD202の双方の応答電文が受信済みとなった場合に、各応答電文を結合することで、要求電文D20に対する応答電文を生成する。そして、送信部134は、結合部135によって生成された応答電文を管理装置40に送信する。
なお、結合部135は、分割電文D201及びD202の双方の応答電文の「ESV」がいずれも正常応答を表す情報であった場合は、要求電文D20に対する応答電文の「ESV」には正常応答を表す「0x7E」を設定する。また、結合部135は、分割電文D201及びD202のいずれか一方でも「ESV」が不可応答を表す情報であった場合は、要求電文D20に対する応答電文の「ESV」には不可応答を表す「0x5E」を設定する。
[他の分割例(2)]
上記実施形態において、通信装置100は、図5に示した分割処理と、図8に示した分割処理との双方を行ってもよい。この点について図9を用いて説明する。図9は、第1の実施形態に係る通信装置100による処理手順の一例を示すフローチャートである。なお、図9の例では、通信装置100の相手先情報テーブル121は、図3に示した「処理可能プロパティ数」と、図7に示した「SetGet電文対応」との双方を記憶する。
図9に示すように、受信部131は、管理装置40から要求電文を受信したか否かを判定する(ステップS201)。そして、受信部131は、要求電文を受信していない場合には(ステップS201否定)、要求電文を受信するまで待機する。
一方、受信部131によって要求電文が受信された場合(ステップS201肯定)、判定部132は、かかる要求電文がSetGet電文であるか否かを判定する(ステップS202)。例えば、判定部132は、要求電文の「ESV」に「0x6E」が設定されているか否かを判定する。そして、判定部132は、受信した要求電文がSetGet電文である場合には(ステップS202肯定)、相手先情報テーブル121の「SetGet電文対応」に基づいて、ノード10がSetGet電文を処理できるか否かを判定する(ステップS203)。
そして、分割部133は、ノード10がSetGet電文を処理できない場合には(ステップS203否定)、図8に示した分割処理を行う(ステップS204)。続いて、判定部132は、ステップS204において生成された分割電文毎に、かかる分割電文に含まれる命令数(すなわち、OPCの値)と、相手先情報テーブル121の「処理可能プロパティ数」とを比較する(ステップS205)。
そして、分割部133は、分割電文に含まれる命令数が処理可能プロパティ数よりも大きい場合には(ステップS205肯定)、分割電文について図5に示した分割処理を更に行う。そして、送信部134は、ステップS206において生成された分割電文をノード10に送信する(ステップS207)。
一方、分割部133は、分割電文に含まれる命令数が処理可能プロパティ数以下である場合には(ステップS205否定)、分割電文について図5に示した分割処理を行わない。この場合、送信部134は、ステップS204において生成された分割電文をノード10に送信する(ステップS207)。
また、分割部133は、受信した要求電文がSetGet電文でない場合(ステップS202否定)、又は、ノード10がSetGet電文を処理できる場合には(ステップS203肯定)、図8に示したステップS204における分割処理を行わない。この場合、判定部132は、ステップS201において受信した要求電文に含まれる命令数(すなわち、OPCの値)と、相手先情報テーブル121の「処理可能プロパティ数」とを比較する(ステップS205)。
そして、分割部133は、要求電文に含まれる命令数が処理可能プロパティ数よりも大きい場合には(ステップS205肯定)、要求電文について図5に示した分割処理を行う。そして、送信部134は、ステップS206において生成された分割電文をノード10に送信する(ステップS207)。
一方、分割部133は、要求電文に含まれる命令数が処理可能プロパティ数以下である場合には(ステップS205否定)、要求電文について図5に示したステップS206における分割処理を行わない。この場合、送信部134は、ステップS201において受信した要求電文をノード10に送信する(ステップS207)。
[第1の実施形態の効果]
上述してきたように、第1の実施形態に係る通信装置100によれば、所定数以下の命令を含む分割電文に分割されるので、各ノードが処理可能な電文を流通させることができる。
(第2の実施形態)
上記第1の実施形態では、図3に示した相手先情報テーブル121の処理可能プロパティ数が管理者等によって予め格納されるものとして説明した。しかし、この処理可能プロパティ数は、通信装置によって検出されてもよい。そこで、第2の実施形態では、通信装置が処理可能プロパティ数を検出する例について説明する。なお、第2の実施形態に係るエネルギー管理システム1の構成は、図1に示した例と同様であるので、以下では説明を省略する。また、以下では、図5に示した分割処理を行う例について説明する。
[管理装置の構成]
図10は、第2の実施形態に係る通信装置200の構成例を示す図である。図10に示すように、通信装置200は、記憶部220と、制御部230とを有する。記憶部220は、相手先情報テーブル221を含む。また、制御部230は、受信部231、判定部232、分割部233、送信部234及び更新部236を含む。
図11に、第2の実施形態に係る相手先情報テーブル221の一例を示す。図11に示した例では、相手先情報テーブル221は、「送信先アドレス」と、「処理可能プロパティ数」と、「処理不可プロパティ数」とを対応付けて記憶する。「送信先アドレス」は、図3に示した送信先アドレスと同様である。「処理可能プロパティ数」は、図3に示した処理可能プロパティ数と同様であり、ノード10が過去に処理することができた命令数の最大値を示す。「処理不可プロパティ数」は、ノード10が1個の要求電文において処理することができないプロパティへの命令の数を示し、ノード10が過去に処理することができなかった命令数の最小値を示す。このような「処理可能プロパティ数」及び「処理不可プロパティ数」は、通信装置200によって更新される。
すなわち、図11では、送信先アドレスが「192.168.0.100」であるノード10は、3個の命令が含まれている要求電文を過去に処理したことがあり、6個の命令が含まれている要求電文を過去に処理できなかった例を示している。この例の場合、送信先アドレス「192.168.0.100」のノード10は、4個や5個の命令が含まれる要求電文を処理することができるか否かは不明である。
また、図11の例において、送信先アドレスが「192.168.0.105」であるノード10に対応する「処理可能プロパティ数」及び「処理不可プロパティ数」は、通信装置200と電文の送受信を行ったことのないノード10に設定される初期値を示す。具体的には、通信装置200と通信を行ったことのないノード10については、何個の命令を処理できるかが不明であるので、「処理可能プロパティ数」には「0」が設定される。また、ECHONET Liteにおいて、1個の電文に設定できるプロパティへの命令の数は、「255」と決められているので、通信装置200と通信を行ったことのないノード10の「処理不可プロパティ数」は「256」となる。なお、「処理可能プロパティ数」の初期値は、「0」でなく、どのようなノード10であっても確実に処理できる命令数「1」であってもよい。すなわち、送信先アドレス「192.168.0.105」のノード10は、いくつの命令が含まれる要求電文を処理することができるか否かは不明である。
また、図11の例において、送信先アドレスが「192.168.0.102」であるノード10に対応する「処理可能プロパティ数」及び「処理不可プロパティ数」には、双方に「4」が設定されている。この例については後述する。
図10の説明に戻って、制御部230による処理について説明する。受信部231は、ノード10から応答電文を受信した場合に、受信した応答電文を更新部236に出力する。また、送信部234は、ノード10に送信した要求電文(管理装置40から受信した要求電文、又は、分割部233によって生成された分割電文)を更新部236に出力する。
更新部236は、送信部234によって送信された要求電文や、受信部231によって受信された応答電文に基づいて、相手先情報テーブル221の処理可能プロパティ数や処理不可プロパティ数を更新する。具体的には、更新部236は、一部の命令のみ処理できた旨の応答電文に、かかる応答電文に基づいて処理不可プロパティ数を更新する。また、更新部236は、1個の命令も処理できなかった旨の応答電文が受信部231によって受信された場合に、かかる応答電文に対応する要求電文に基づいて処理不可プロパティ数を更新する。また、更新部236は、全ての命令について正常に処理した旨の応答電文が受信部231によって受信された場合に、かかる応答電文に対応する要求電文に基づいて処理可能プロパティ数を更新する。以下に、更新部236による処理について、ノード10から送信される応答電文のパターン毎に説明する。
まず、ノード10によっては、要求電文に含まれる命令数が多いために一部の命令だけ処理できる場合に、先頭の命令から順に処理することがある。この場合、ノード10は、処理できた命令数を「OPC」に設定するとともに、処理した命令の応答を「EPC」、「PDC」及び「EDT」に設定した応答電文を通信装置200に送信する。このとき、ノード10は、応答電文の「ESV」に「0x51」や「0x52」などを設定する。このような応答電文が受信部231によって受信された場合、更新部236は、かかる応答電文の「OPC」に「1」を加えた値と、相手先情報テーブル221の処理不可プロパティ数とを比較する。そして、更新部236は、処理不可プロパティ数よりも「OPC+1」の方が小さい場合には、かかる「OPC+1」の値を新たな処理不可プロパティ数として相手先情報テーブル221を更新する。
また、ノード10によっては、要求電文に含まれる命令数が多い場合に、いずれの命令についても処理を行わずに、全く処理しなかったことを示す応答電文を通信装置200に送信することがある。また、ノード10によっては、処理できた命令数が判断できないような応答電文を通信装置200に送信することがある。このような応答電文が受信部231によって受信された場合、更新部236は、送信部234によってノード10に送信された要求電文(又は、分割電文)に設定されていた「OPC」を新たな処理不可プロパティ数として相手先情報テーブル221を更新する。このとき、更新部236は、処理不可プロパティ数よりも要求電文の「OPC」の方が小さい場合に、かかる「OPC」の値を新たな処理不可プロパティ数として相手先情報テーブル221を更新してもよい。
また、ノード10は、要求電文に含まれる全ての命令について処理することができた場合には、処理した命令数を「OPC」に設定するとともに、処理した命令の応答を「EPC」、「PDC」及び「EDT」に設定した応答電文を通信装置200に送信する。このとき、ノード10は、応答電文の「ESV」に「0x71」や「0x72」などを設定する。このような応答電文が受信部231によって受信された場合、更新部236は、ノード10に送信された要求電文(又は、分割電文)に設定されていた「OPC」と、相手先情報テーブル221の処理可能プロパティ数とを比較する。そして、更新部236は、処理可能プロパティ数よりも「OPC」の方が大きい場合には、かかる「OPC」の値を新たな処理可能プロパティ数として相手先情報テーブル221を更新する。
このようにして、更新部236は、ノード10との間で実際に送受信した電文に基づいて、相手先情報テーブル221を更新する。例えば、通信装置200が、ノード10に対して3個の命令を含む要求電文を送信し、全ての命令を処理したことを示す応答電文を受信したものとする。また、通信装置200が、同一のノード10に対して10個の命令を含む要求電文を送信し、5個の命令を処理したことを示す応答電文を受信したものとする。この場合、更新部236は、図11の1レコード目のように、処理可能プロパティ数を「3」に更新し、処理不可プロパティ数を「6」に更新する。
また、例えば、通信装置200が、ノード10に対して4個の命令を含む要求電文を送信し、全ての命令を処理したことを示す応答電文を受信したものとする。また、その後に、通信装置200が、同一のノード10に対して4個の命令を含む要求電文を送信し、3個の命令を処理したことを示す応答電文を受信したものとする。これは、ノード10が、4個の命令を含む要求電文を処理できる場合もあれば、処理できない場合もある例を示している。具体的には、ノード10は、処理することができる要求電文のサイズ(バイト数)が決められている場合がある。このため、命令数が4個であっても要求電文のサイズによってノード10が処理できるか否かが変動する。このようなケースでは、更新部236は、図11の3レコード目のように、処理可能プロパティ数を「4」に更新し、処理不可プロパティ数を「4」に更新することとなる。
また、図11では図示することを省略したが、要求電文のサイズによってノード10が命令を処理できるか否かが変動する場合には、相手先情報テーブル221の処理可能プロパティ数には、処理不可プロパティ数よりも大きい値が設定される場合もある。例えば、処理可能プロパティ数に「5」が設定され、処理不可プロパティ数に「4」が設定される場合もある。
続いて、通信装置200の判定部232及び分割部233について説明する。判定部232は、相手先情報テーブル221から、受信部231が管理装置40から受信した要求電文の送信先に対応する処理可能プロパティ数及び処理不可プロパティ数を取得する。そして、判定部232は、要求電文に含まれる命令数と処理可能プロパティ数とを比較するとともに、要求電文に含まれる命令数と処理不可プロパティ数とを比較する。
分割部233は、判定部232による判定処理の結果に基づいて、要求電文を分割するか否かを決定する。一例を挙げて説明すると、分割部233は、要求電文に含まれる命令数が処理可能プロパティ数以下であり、かつ、要求電文に含まれる命令数が処理不可プロパティ数よりも小さい場合には、分割処理を行わない。この例は、図11における相手先アドレス「192.168.0.100」であるノード10に対する要求電文に3個以下の命令が含まれているケースに該当する。この場合、送信部234は、管理装置40から受信した要求電文をノード10に送信する。
また、分割部233は、要求電文に含まれる命令数が処理可能プロパティ数よりも大きく、かつ、要求電文に含まれる命令数が処理不可プロパティ数よりも小さい場合には、分割処理を行わない。この例は、図11における相手先アドレス「192.168.0.100」であるノード10に対する要求電文に4個や5個の命令が含まれているケースに該当する。この場合、送信部234は、管理装置40から受信した要求電文をノード10に送信する。なお、この例では、ノード10に4個の命令を含む要求電文を送信したことがないので、ノード10が4個全ての命令を処理できるか否かは不明である。このため、上述した更新部236は、ノード10から送信される応答電文に応じて、処理可能プロパティ数又は処理不可プロパティ数を更新することとなる。
また、分割部233は、要求電文に含まれる命令数が処理可能プロパティ数よりも大きく、かつ、要求電文に含まれる命令数が処理不可プロパティ数以上である場合には、1個の分割電文に含まれる命令数が処理不可プロパティ数よりも小さくなるように、図5に示した例のような分割処理を行う。この例は、図11における相手先アドレス「192.168.0.100」であるノード10に対する要求電文に6個以上の命令が含まれているケースに該当する。この場合、送信部234は、分割部233によって分割された要求電文をノード10に送信する。
また、分割部233は、要求電文に含まれる命令数が処理可能プロパティ数以下であり、かつ、要求電文に含まれる命令数が処理不可プロパティ数以上である場合には、分割処理を行ってもよいし、分割処理を行わなくてもよい。この例は、図11における相手先アドレス「192.168.0.102」であるノード10に対する要求電文に4個の命令が含まれているケースに該当する。
ここで、上記の通り、要求電文のサイズによってノード10が命令を処理できるか否かが変動する場合もある。したがって、分割部233は、要求電文に含まれる命令数が処理可能プロパティ数以下であり、かつ、要求電文に含まれる命令数が処理不可プロパティ数以上である場合には、要求電文のサイズに基づいて、分割処理を行うか否かを決定してもよい。例えば、分割部233は、要求電文に含まれる各命令(「EPC」、「PDC」及び「EDT)の平均サイズ(平均バイト数)が所定値よりも小さい場合には、分割処理を行わず、要求電文に含まれる各命令の平均サイズ(平均バイト数)が所定値よりも大きい場合には、1個の分割電文に含まれる命令数が処理不可プロパティ数よりも少なくなるように分割処理を行ってもよい。これにより、分割部233は、ノード10が処理できる可能性の高い電文を送信することができる。
[第2の実施形態の変形例]
上記第2の実施形態では、図5に示した分割処理を例に挙げて説明した。しかし、通信装置200は、図8に示したSetGet電文に対する分割処理を行った後に、上述した第2の実施形態における分割処理を行ってもよい。また、通信装置200は、図7に示した相手先情報テーブル121の「SetGet電文対応」を動的に更新してもよい。具体的には、相手先情報テーブル121の「SetGet電文対応」に初期値として「yes」を格納しておき、通信装置200は、ノード10にSetGet電文を送信し、かかるノード10から不可応答を示す応答電文を受信した場合には、「SetGet電文対応」に「no」を格納し、正常応答を示す応答電文を受信した場合には、「SetGet電文対応」に「yes」を格納する。
また、第2の実施形態では、通信装置200が相手先情報テーブル221を順次更新するので、ノード10との間で電文の送受信が何度も行われていない初期段階では、ノード10から不可応答を示す応答電文を受信する場合もある。このため、第2の実施形態に係る通信装置200は、ノード10から不可応答を受信した場合には、ノード10によって処理されなかった命令については再送してもよい。
例えば、通信装置200が、図11に示した送信先アドレスが「192.168.0.105」であるノード10宛の要求電文を管理装置40から受信し、この要求電文に10個の命令が含まれているものとする。この場合、通信装置200は、まずは、1個の電文に5個の命令が含まれる2個の分割電文を生成し、生成した2個の分割電文をノード10に送信する。そして、通信装置200は、例えば、2個の分割電文のそれぞれについて4個の命令のみ処理した旨の応答電文を受信した場合に、ノード10によって処理されなかった計2個の命令を含む分割電文をノード10に再送する。このとき、通信装置200は、相手先情報テーブル221の処理不可プロパティ数を「5」に更新する。
また、上記第2の実施形態では、図11に示すように、相手先情報テーブル221に「処理可能プロパティ数」と「処理不可プロパティ数」とが記憶される例を示した。しかし、相手先情報テーブル221は、「処理可能プロパティ数」及び「処理不可プロパティ数」のいずれか一方のみが記憶されてもよい。この場合、判定部232及び分割部233は、「処理可能プロパティ数」及び「処理不可プロパティ数」のいずれか一方を用いて、判定処理及び分割処理を行う。
[第2の実施形態の効果]
上述してきたように、第2の実施形態に係る通信装置200によれば、分割電文に含めるべき命令数を通信装置200自体が動的に検出するので、管理者等による相手先情報テーブル221の更新作業を低減することができる。
(他の実施形態)
上記第1及び第2の実施形態では、分割電文に対する全ての応答電文を受信した場合に、応答電文を結合する例を示した。しかし、通信装置100及び200は、所定時間が経過しても全ての応答電文を受信しない場合には、応答電文を受信していない要求電文をノード10に再送してもよいし、受信済み応答電文のみを結合した応答電文を不可応答として管理装置40に送信してもよい。
上記第1及び第2の実施形態では、所定値(例えば、処理可能プロパティ数)以下の命令を含む分割電文を生成する例を示した。しかし、通信装置100及び200は、常に1個の命令のみ含む分割電文に分割してもよい。どのようなノード10であっても1個の命令であれば処理することができるので、通信装置100及び200は、各ノードが確実に処理可能な電文を流通させることができる。
上記第1及び第2の実施形態では、ECHONET Liteを例に挙げて説明したが、上述してきた各実施形態は、ECHONETにも同様に適用することができる。
また、上記実施形態におけるエネルギー管理システム1の構成は図1の例に限られない。例えば、管理サーバ4からホームネットワークシステム2に要求電文が送信されるようなシステムの場合には、管理装置40と通信装置100(又は通信装置200)とが一体となって構成されてもよい。この場合、図1の例のように複数の通信装置100がホームネットワークシステム2に設置されるのではなく、管理装置40が、上述してきた通信装置100又は200と同等の機能を有することとなる。また、この例に限られず、ゲートウェイ装置20と通信装置100(又は通信装置200)とが一体となって構成されてもよい。
また、例えば、エネルギー管理システム1には、ユーザ端末3や管理サーバ4が含まれなくてもよい。また、例えば、ホームネットワークシステム2にはユーザ端末30が含まれなくてもよい。この場合、管理装置40は、ノード10を制御するための制御画面等を表示する。そして、ユーザは、かかる制御画面を操作することにより、ノード10を制御及び監視する。
以上説明したとおり、上記実施形態によれば、各ノードが処理可能な電文を流通させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。