(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】通信装置、通信システム、通信方法、およびプログラム
(51)【国際特許分類】
H04L 12/54 20220101AFI20241001BHJP
H04L 61/00 20220101ALI20241001BHJP
H04L 69/22 20220101ALN20241001BHJP
【FI】
H04L12/54
H04L61/00
H04L69/22
(21)【出願番号】P 2020571869
(86)(22)【出願日】2020-06-01
(86)【国際出願番号】 JP2020021548
(87)【国際公開番号】W WO2020250728
(87)【国際公開日】2020-12-17
【審査請求日】2023-05-29
(31)【優先権主張番号】P 2019108109
(32)【優先日】2019-06-10
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000232302
【氏名又は名称】ニデック株式会社
(72)【発明者】
【氏名】田渕 哲哉
(72)【発明者】
【氏名】福永 泰
【審査官】吉田 歩
(56)【参考文献】
【文献】国際公開第2012/160825(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/54
H04L 61/00
H04L 69/22
(57)【特許請求の範囲】
【請求項1】
複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける前記通信装置であって、
他の端末から送信されるフレームを受信する受信部と、
前記受信部が受信するフレームに含まれるデータを処理するデータ処理部と、
を備え、
前記データ処理部は、
前記フレームに含まれる端末識別子情報を取得する際に、前記端末識別子情報を格納する識別子格納領域の所定の位置に位置する所定長の第1データ領域を読み出し、前記第1データ領域に含まれる領域拡張情報に基づいて、前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断
し、
前記第2データ領域を前記識別子格納領域に含めると判断した場合、前記第2データ領域を読み出し、前記第2データ領域に含まれる領域拡張情報に基づいて、前記第2データ領域の直後に位置する第3データ領域を前記識別子格納領域に含めるか否かを判断する
通信装置。
【請求項2】
複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける前記通信装置であって、
他の端末へフレームを送信する送信部と、
前記送信部が送信する前記フレームに含まれるデータを生成するデータ処理部と、
を備え、
前記データ処理部は、
前記フレームに含まれる識別子格納領域に端末識別子情報を格納する際に、前記端末識別子情報の長さに基づいて、前記識別子格納領域の所定の位置に位置する所定長の第1データ領域だけでなく前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断し、
前記第2データ領域を前記識別子格納領域に含めると判断した場合、所定の領域拡張情報を前記第1データ領域に格納
し、前記端末識別子情報の長さに基づいて、前記第2データ領域の直後に位置する前記所定長の第3データ領域を前記識別子格納領域に含めるか否かを判断し、
前記第3データ領域を前記識別子格納領域に含めると判断した場合、所定の領域拡張情報を前記第2データ領域に格納する
通信装置。
【請求項3】
第1のデータ長のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第1の通信装置と、前記第1のデータ長より短い第2のデータ長のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第2の通信装置と、が通信ネットワークを介して互いに通信を行う通信システムであって、
前記第1の通信装置は、
他の端末とフレームの送受信を行う第1送受信部と、
前記第1送受信部が送信する第1フレームに含まれるデータを生成する第1データ生成部と、
前記第1送受信部が受信する第2フレームに含まれるデータを処理する第1データ処理部と、
を備え、
前記第1データ生成部は、
前記第1フレームに含まれる送信元識別子格納領域に前記第1の通信装置を識別する端末識別子を格納し、前記送信元識別子格納領域の所定の位置に位置する所定長の第1データ領域に所定の領域拡張情報を格納し、
前記第2の通信装置は、
他の端末と前記フレームの送受信を行う第2送受信部と、
前記第2送受信部が送信する前記第2フレームに含まれるデータを生成する第2データ生成部と、
前記第2送受信部が受信する前記第1フレームに含まれるデータを処理する第2データ処理部と、
を備え、
前記第1データ領域に所定の領域拡張情報が格納されている場合、
前記第2データ生成部は、
前記第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データを格納し、
前記第1の通信装置は、
前記第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データが格納されている場合、前記第2の通信装置が前記第1のデータ長のデータ片ごとに演算処理を行うことができない通信装置であると判定する
通信システム。
【請求項4】
前記第1フレームは、
前記第1送受信部から送信されるフレームであり、
前記第2フレームは、
前記第2送受信部から送信されるフレームである
請求項
3に記載の通信システム。
【請求項5】
前記第1送受信部は、
前記通信ネットワークに通信接続された他の通信装置へ前記第1フレームを同報送信し、
前記第2送受信部は、
前記通信ネットワークに通信接続された他の通信装置へ前記第2フレームを同報送信する
請求項
3又は請求項
4に記載の通信システム。
【請求項6】
複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける通信方法であって、
他の端末から送信されるフレームを受信する受信ステップと、
前記受信ステップにおいて受信するフレームに含まれるデータを処理するデータ処理ステップと、
前記データ処理ステップにおいて、
前記フレームに含まれる端末識別子情報を取得する際に、前記端末識別子情報を格納する識別子格納領域の所定の位置に位置する所定長の第1データ領域を読み出し、前記第1データ領域に含まれる領域拡張情報に基づいて、前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断
し、
前記第2データ領域を前記識別子格納領域に含めると判断した場合、前記第2データ領域を読み出し、前記第2データ領域に含まれる領域拡張情報に基づいて、前記第2データ領域の直後に位置する第3データ領域を前記識別子格納領域に含めるか否かを判断する判断ステップと
を有する通信方法。
【請求項7】
複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける通信方法であって、
他の端末へフレームを送信する送信ステップと、
前記送信ステップによって送信される前記フレームに含まれるデータを生成するデータ処理ステップと、
前記データ処理ステップにおいて、
前記フレームに含まれる識別子格納領域に端末識別子情報を格納する際に、前記端末識別子情報の長さに基づいて、前記識別子格納領域の所定の位置に位置する所定長の第1データ領域だけでなく前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断する判断ステップと、
前記第2データ領域を前記識別子格納領域に含めると判断された場合、所定の領域拡張情報を前記第1データ領域に格納
し、前記端末識別子情報の長さに基づいて、前記第2データ領域の直後に位置する前記所定長の第3データ領域を前記識別子格納領域に含めるか否かを判断し、
前記第3データ領域を前記識別子格納領域に含めると判断した場合、所定の領域拡張情報を前記第2データ領域に格納する格納ステップと、
を有する通信方法。
【請求項8】
第1のデータ長のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第1の通信装置と、前記第1のデータ長より短い第2のデータ長のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第2の通信装置と、が通信ネットワークを介して互いに通信を行う通信システムにおける通信方法であって、
前記第1の通信装置が、他の端末へ送信される第1フレームに含まれるデータを生成する第1データ生成ステップと、
他の端末より受信される第2フレームに含まれるデータを処理する第1データ処理ステップと、
前記第1データ生成ステップにおいて、
前記第1フレームに含まれる送信元識別子格納領域に前記第1の通信装置を識別する端末識別子を格納し、前記送信元識別子格納領域の所定の位置に位置する所定長の第1データ領域に所定の領域拡張情報を格納する第1格納ステップと、
前記第2の通信装置が、他の端末へ送信される前記第2フレームに含まれるデータを生成する第2データ生成ステップと、
他の端末より受信される前記第1フレームに含まれるデータを処理する第2データ処理ステップと、
前記第1データ領域に所定の領域拡張情報が格納されている場合、
前記第2データ生成ステップにおいて、
前記第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データを格納する第2格納ステップと、
前記第1の通信装置が、前記第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データが格納されている場合、前記第2の通信装置が前記第1のデータ長のデータ片ごとに演算処理を行うことができない通信装置であると判定する判定ステップと、
を有する通信方法。
【請求項9】
前記第1フレームは、
前記第1の通信装置が送信するフレームであり、
前記第2フレームは、
前記第2の通信装置が送信するフレームである
請求項
8に記載の通信方法。
【請求項10】
前記第1の通信装置は、
前記通信ネットワークに通信接続された他の通信装置へ前記第1フレームを同報送信し、
前記第2の通信装置は、
前記通信ネットワークに通信接続された他の通信装置へ前記第2フレームを同報送信する
請求項
8又は請求項
9に記載の通信方法。
【請求項11】
複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける前記通信装置のコンピュータに、
他の端末から送信されるフレームを受信する受信ステップと、
前記受信ステップにおいて受信するフレームに含まれるデータを処理するデータ処理ステップと、
前記データ処理ステップにおいて、
前記フレームに含まれる端末識別子情報を取得する際に、前記端末識別子情報を格納する識別子格納領域の所定の位置に位置する所定長の第1データ領域を読み出し、前記第1データ領域に含まれる領域拡張情報に基づいて、前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断
し、
前記第2データ領域を前記識別子格納領域に含めると判断した場合、前記第2データ領域を読み出し、前記第2データ領域に含まれる領域拡張情報に基づいて、前記第2データ領域の直後に位置する第3データ領域を前記識別子格納領域に含めるか否かを判断する判断ステップと、
を実行させるためのプログラム。
【請求項12】
複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける前記通信装置のコンピュータに、
他の端末へフレームを送信する送信ステップと、
前記送信ステップによって送信される前記フレームに含まれるデータを生成するデータ処理ステップと、
前記データ処理ステップにおいて、
前記フレームに含まれる識別子格納領域に端末識別子情報を格納する際に、前記端末識別子情報の長さに基づいて、前記識別子格納領域の所定の位置に位置する所定長の第1データ領域だけでなく前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断
し、
前記第2データ領域を前記識別子格納領域に含めると判断された場合、所定の領域拡張情報を前記第1データ領域に格納する格納ステップと、前記端末識別子情報の長さに基づいて、前記第2データ領域の直後に位置する前記所定長の第3データ領域を前記識別子格納領域に含めるか否かを判断し、
前記第3データ領域を前記識別子格納領域に含めると判断した場合、所定の領域拡張情報を前記第2データ領域に格納する判断ステップと
を実行させるためのプログラム。
【請求項13】
第1のデータ長のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第1の通信装置と、前記第1のデータ長より短い第2のデータ長のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第2の通信装置と、が通信ネットワークを介して互いに通信を行う通信システムのコンピュータに、
前記第1の通信装置が、他の端末へ送信される第1フレームに含まれるデータを生成する第1データ生成ステップと、
他の端末より受信される第2フレームに含まれるデータを処理する第1データ処理ステップと、
前記第1データ生成ステップにおいて、
前記第1フレームに含まれる送信元識別子格納領域に前記第1の通信装置を識別する端末識別子を格納し、前記送信元識別子格納領域の所定の位置に位置する所定長の第1データ領域に所定の領域拡張情報を格納する第1格納ステップと、
前記第2の通信装置が、他の端末へ送信される前記第2フレームに含まれるデータを生成する第2データ生成ステップと、
他の端末より受信される前記第1フレームに含まれるデータを処理する第2データ処理ステップと、
前記第1データ領域に所定の領域拡張情報が格納されている場合、
前記第2データ生成ステップにおいて、
前記第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データを格納する第2格納ステップと、
前記第1の通信装置が、前記第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データが格納されている場合、前記第2の通信装置が前記第1のデータ長のデータ片ごとに演算処理を行うことができない通信装置であると判定する判定ステップと、
を実行させるためのプログラム。
【請求項14】
前記第1フレームは、
前記第1の通信装置によって送信されるフレームであり、
前記第2フレームは、
前記第2の通信装置によって送信されるフレームである
請求項
13に記載のプログラム。
【請求項15】
前記第1の通信装置が、
前記通信ネットワークに通信接続された他の通信装置へ前記第1フレームを同報送信するステップと、
前記第2の通信装置が、
前記通信ネットワークに通信接続された他の通信装置へ前記第2フレームを同報送信するステップと
をさらに有する請求項
13又は請求項
14に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信システム、通信方法、およびプログラムに関する。
【背景技術】
【0002】
複数の端末間で互いに通信を行う、例えばIPv6等に対応した通信システムにおいて、端末は、送信する情報を複数のフレームに分割して送信する。また、各端末には、予め定められた固有識別子がそれぞれ紐づけられている。固有識別子とは、例えば端末ID(Identifier)あるいはIP(Internet Protocol)アドレス等である。フレームの送信先となる端末に紐づけられた固有識別子がフレーム内に格納されることによって、当該フレームは送信先の端末へ届けられる。固有識別子は、例えばIPv6アドレスが128ビットの固定長であるように、通信プロトコルあるいは通信システムの規模に応じて予め長さが定められた固定長のデータである場合が一般的である(例えば、特許文献1および特許文献2参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】日本国公開公報特開2017-143364号公報
【文献】日本国公開公報特許第6130077号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、端末の増設等により、通信システムが構築された当初と比べて、端末数が大幅に増加する場合がある。この場合、増加した端末数に相当する個数の固有識別子が新たに必要となる。その一方で、固有識別子は一般に固定長であることから、その個数は有限である。これにより、固定長の固有識別子が対応可能な個数を超える個数の端末を通信システムに接続させることは困難であるという課題がある。例えば、IoTの普及に伴い、IPv6を用いて通信を行うセンサネットワークに接続するセンサの増加が求められたとしても、IPv6が提供しうるIPアドレスの個数(約2128個)を超える個数のセンサをセンサネットワークに接続させることは困難である。
【0005】
従来、上記の課題を回避するため、将来の端末数の増加を見込んで固有識別子の長さを予め十分に長く設定しておく必要があった。しかしながら、この場合、通信システムに接続される端末の数が少ないうちはフレーム内に無駄な領域(未使用領域)が生じるため、通信効率が低下するという課題がある。また、通信システムごとにそれぞれ異なる長さの固有識別子が用いられることによって通信システム間における通信の互換性がなくなり、通信システムが分断されてしまうという課題がある。
【0006】
本発明は、上記のような技術的背景に鑑みてなされたものであり、通信効率を低下させることなく、使用可能な固有識別子の個数を任意に増加させることができる通信装置、通信システム、通信方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様としては、複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システムにおける前記通信装置であって、他の端末から送信されるフレームを受信する受信部と、前記受信部が受信するフレームに含まれるデータを処理するデータ処理部と、を備え、前記データ処理部は、前記フレームに含まれる端末識別子情報を取得する際に、前記端末識別子情報を格納する識別子格納領域の所定の位置に位置する所定長の第1データ領域を読み出し、前記第1データ領域に含まれる領域拡張情報に基づいて、前記第1データ領域の直後に位置する前記所定長の第2データ領域を前記識別子格納領域に含めるか否かを判断する通信装置である。
【発明の効果】
【0008】
本発明によれば、通信効率を低下させることなく、使用可能な固有識別子の個数を任意に増加させることができる。
【図面の簡単な説明】
【0009】
【
図1】複数台のモータユニットを搭載する製品の例を示す図である。
【
図2】マルチモータシステム103の模式図である。
【
図3】コミュニケーションロボット30の関節を回転させるモータユニットを含むマルチモータシステム103の構成例を示す図である。
【
図4】有線のシリアル通信で利用されるデータフレーム1aの構造を示す図である。
【
図6】RS-485規格の通信時のデータフレーム2aの例を示す図である。
【
図7】データフレーム1aへのデバイスIDの格納方法を示す模式図である。
【
図8】プロセッサ112Aの機能構成を示すブロック図である。
【
図9】端末識別子情報の受信時におけるプロセッサ112Aの動作の一例を示すフローチャートである。
【
図10】端末識別子情報の送信時におけるプロセッサ112Aの動作の一例を示すフローチャートである。
【
図11】非対応端末のチェック処理の流れを示す模式図である。
【発明を実施するための形態】
【0010】
以下、本発明の一実施形態について説明する。
【0011】
昨今、1台の製品に複数台のモータユニット(端末)が搭載される事例が増えてきている。そのような製品では、あるモータユニットが他のモータユニットと互いに通信する必要性が高まっている。本実施形態によるマルチモータシステムは、通信機能を有する複数のモータユニット(端末)と、当該複数のモータユニットを相互に接続する通信ネットワークとを有している。マルチモータシステムでは、あるモータユニットが、他のモータユニットにコマンドを送信する。なお、本実施形態によるマルチモータシステムでは、モータユニット間におけるすべての通信に関与するホスト端末を設ける必要はない。
【0012】
[マルチモータシステムの構成]
以下、マルチモータシステムおよび当該マルチモータシステムを構成するモータユニットの構成の一例について説明する。
【0013】
例えば
図1は、複数台のモータユニットを搭載する製品の一例を示したものである。
【0014】
図1は、コミュニケーションロボット30の外観を示す。コミュニケーションロボット30の、
図1において矢印で示されている箇所(例えば、コミュニケーションロボット30の関節機構等)には、それぞれモータユニットが搭載されている。一般に、1台のコミュニケーションロボット30に対して、約20個またはそれ以上のモータユニットが搭載されうる。多くのモータユニットが搭載されることにより、コミュニケーションロボット30は、複雑な動作をすることが可能になる。
【0015】
本実施形態では、複数のモータユニットが、相互に通信を行いながら、自律的かつ協調して動作する。
【0016】
図2は、複数のモータユニット32a~32eが相互に通信するマルチモータシステム103の模式図である。後述するように、モータユニット32a~32eは、モータおよび種々の回路要素を含んでいる。
【0017】
例えばモータユニット32aは、自身が故障したことを検出した場合、他のモータユニット32bおよび32eに対して、故障したことを示す故障通知コマンドを送信する。モータユニット32bおよび/または32eは、故障通知コマンドを受信すると、受信したことを示す受信応答コマンドをモータユニット32aに送信(返答)する。そして、モータユニット32bおよび/または32eは、故障したモータユニット32aの動作を代替するように動作する。
【0018】
なお、例えばモータユニット32aが上述したコミュニケーションロボット30の1つの関節機構を駆動させるための部品である場合等においては、他のモータユニットがモータユニット32aの機能を完全には代替できない場合もありうる。そのような場合には、モータユニット32bおよび/または32eは、予め定められた範囲内でモータユニット32aの機能を代替するように動作すればよい。
【0019】
なお、モータユニット32aの故障に関する情報は、モータユニット32bおよび32eをそれぞれ経由して、さらにモータユニット32cおよび32dに伝達されてもよい。モータユニット32cおよび32dもまた、予め定められた範囲内でモータユニット32aの機能を代替するように動作すればよい。また、場合によっては、モータユニット32cおよび32dは、補助を行えない(モータユニット32aの機能を代替することができない)ことを示す通知コマンドを、モータユニット32aに対して通知するようにしてもよい。
【0020】
なお、
図2のマルチモータシステム103では、通信可能なモータユニット同士を線で結んで表現しているが、この記載された線および矢印は一例である。
図2においては線で結ばれていないモータユニット同士が相互に通信を行うことができる構成であっても構わない。
【0021】
上述のようなモータユニット間通信を実現するためには、どのモータユニットから送信されたコマンドを受信したのか、および、どのモータユニットに対してコマンドを送信すればよいのか、を各モータユニットが把握する必要がある。そこで、送信元のモータユニットを識別するデータとして、送信元デバイスIDまたは送信元IPアドレス等を利用することができる。送信元デバイスIDまたは送信元IPアドレスは、受信したコマンドに対する応答を送信する場合の送信先を指定する際にも利用されうる。
【0022】
以下、モータユニットの構成と、モータユニット間で行われる通信を説明する。
【0023】
図3は、本実施形態によるコミュニケーションロボット30(
図1)の関節を回転させるモータユニットを含む、マルチモータシステム103の構成例を示す。
図3の例では記載の便宜上、2つのモータユニット106Aおよび106Bが示されている。しかしながら、
図1および
図2に示すように、マルチモータシステム103は、3つ以上のモータユニットを有していてもよい。
【0024】
マルチモータシステム103は、モータユニット106Aおよび106Bを有している。モータユニット106Aは、通信回路110Aと、プロセッサ112Aと、メモリ113Aと、モータ駆動回路114Aと、関節用モータ116Aと、関節機構104Aとを有する。モータユニット106Bも、モータユニット106Aと同様の構成であり、通信回路110Bと、プロセッサ112Bと、メモリ113Bと、モータ駆動回路114Bと、関節用モータ116Bと関節機構104Bとを有する。なお、モータユニット106Aおよび106Bは、インテリジェントモータ(登録商標)と呼ばれることがある。
【0025】
モータユニット106Aおよび106Bは、
図3に示すように通信ネットワークNWを介して互いに直接データフレームを送受信することができる。なお、モータユニット106Aおよび106Bは、直接通信を行う代わりに、例えば中継装置やサーバ等の上位装置等を介して通信を行うようにしてもよい。
【0026】
通信回路110Aおよび110Bはそれぞれバッファ111Aおよび111Bを有している。バッファ111Aおよび111Bには、予め、モータユニット106Aおよび106Bをそれぞれ識別するための識別子が格納されている。当該識別子は、通信可能な範囲の通信ネットワーク内で一意に識別可能な文字および/または数字であればよく、例えば上述した、デバイスごとに重複なく付与されたID(デバイスID)、または、IPアドレスでありうる。
【0027】
データフレームを受信したとき、通信回路110Aおよび110Bは、それぞれ、物理層、データリンク層の処理を行い、データフレームの送信先デバイスIDがバッファ111Aおよび111Bに格納されている自身の識別子と一致するか否かを判定する。一致する場合には、通信回路110Aおよび110Bは当該データフレームの処理を続行し、一致しない場合には当該データフレームを破棄する。
【0028】
なお、Wi-Fi規格による無線通信が行われる場合には、上述の自身の識別子はIPアドレスになる。この場合、通信回路110Aおよび110Bは、データフレームの宛先IPアドレスが自信のIPアドレスと一致するか否かを判定する。その後の処理は上述の処理と同じである。
【0029】
データフレームの処理を続行する場合には、通信回路110Aおよび110Bは、データフレームに、さらにOSI参照モデルにおけるIP層、およびトランスポート層等毎の処理を順次行い、後述する共通データ構造12を抽出する。共通データ構造12には、後述する動作系コマンドフィールド12b等が含まれている。通信回路110Aおよび110Bは、それぞれ、コマンドを抽出し、抽出されたコマンドをプロセッサ112Aおよび112Bに送信する。
【0030】
プロセッサ112Aおよび112Bはいずれも、半導体が集積された信号処理プロセッサである。プロセッサは「信号処理回路」または「制御回路」とも呼ばれる。プロセッサ112Aおよび112Bは、それぞれ、指定された回転速度で関節用モータ116Aおよび116Bを回転させるための信号を生成する。当該信号は、例えばパルス幅変調(PWM;Pulse Width Modulation)信号である。またプロセッサ112Aおよび112Bは、他のモータユニットから送信されたデータフレームに含まれる共通データ構造12に含まれるコマンドおよびデータを解釈し、コマンドの内容に応じた処理を行う。
【0031】
メモリ113Aおよび113Bは、他のモータユニットと、当該他のモータユニットを識別する識別子とが対応付けられたテーブルを予め保持している。つまり、識別子は各モータユニットの通信回路に予め設定され、当該識別子は、他のモータユニットのメモリに保持されている。プロセッサ112Aおよび112Bは、データフレームの送受信を行いたいモータユニットが決まれば、当該モータユニットの識別子を特定し、通信回路110Aおよび110Bに対して指示を行うことができる。
【0032】
モータ駆動回路114Aおよび114Bはそれぞれ、PWM信号に応じた大きさおよび方向で、電流を関節用モータ116Aおよび116Bに流す。これにより、関節用モータ116Aおよび116Bは回転する。
【0033】
なお、コマンドには回転させる速度および時間等が、後述する属性系コマンドフィールド12cおよび後述するデータフィールド12dを利用して指定され得る。プロセッサ112Aおよび112Bは、指定された回転速度および回転時間で関節用モータ116Aおよび116Bが回転するよう、PWM信号を生成すればよい。
【0034】
以下、マルチモータシステムで送受信されるコマンドに関する通信プロトコルを説明する。
【0035】
[マルチモータシステムで用いられる通信プロトコル]
図4は、有線のシリアル通信で利用されるデータフレーム1aの構造を示す。シリアル通信の一例はRS-485規格の通信を想定している。RS-485規格はOSI参照モデルでいう物理層の電気的仕様を策定する。
【0036】
データフレーム1aは各種のデータを包含している。参考のため、
図4の最上段にはOSI参照モデルの層ごとの区分を示す。また
図4の最下段には、各データのデータサイズをバイト単位で表記している。
図4の最も左側の欄は凡例である。
【0037】
データフレーム1aは、例えば、送信先デバイスID10と、送信元デバイスID11と、共通データ構造12とを含む。送信先デバイスID10は、送信先のデバイスを識別する識別子である。送信元デバイスID11は、送信元のデバイスを識別する識別子である。送信先のデバイスおよび送信元のデバイスは、通信機能を有するモータユニットであり得る。識別子は、例えば重複することなく機器ごとに付与されたID(デバイスID)、又はIPアドレスである。共通データ構造12は、後述する1または2のコマンドを含むデータ構造である。
【0038】
【0039】
共通データ構造12は、データ長フィールド12aと、動作系コマンドフィールド12bと、属性系コマンドフィールド12cと、データフィールド12dとを有する。
【0040】
データ長フィールド12aは、共通データ構造12の総バイト数を示す。
【0041】
動作系コマンドフィールド12bは、モータを動作させるための動作系コマンドを示す。動作系コマンドは、当該動作系コマンドに対応する数値(2進数表記)で記述される。動作系コマンドの一例は、ライトデータ(Write Data)、リードデータ(Read Data)、実行(Execution)、および接続(Connect)である。
【0042】
属性系コマンドフィールド12cは、モータに関する属性系コマンドを示す。属性系コマンドもまた、当該コマンドに対応する数値(2進数表記)で記述される。属性系コマンドの一例は、現在の角度(Present Angle)、ターゲット角度(Target Angle)、角度制限(Angle Limit)、シリアル番号(Serial
Number)である。
【0043】
データフィールド12dは、属性系コマンドフィールド12cに対するデータが記述される。データの一例は、角度設定値、回転速度設定値、シリアル番号値である。
【0044】
上述した共通データ構造は、例えば3バイトから7バイトまでの範囲内に収まる、比較的短いデータ長を有する。なお、他の通信プロトコルであるEtherCAT(登録商標)は32バイトの大きさであるため、通信時の混在解消および回線の占有を抑制できる。さらに、動作系コマンドと属性系コマンドとを分けて規定したため、利用者(プログラム者)にとって理解しやすい。
【0045】
[送信先モータユニットおよび送信元モータユニットを示す識別子の例]
以下、モータユニット106Aがモータユニット106Bの現在の回転速度を知りたい場合を一例として説明する。なお、本明細書および図面では、共通データ構造に記述される値を2進数または16進数によって表記する。これらは単に形式が相違するに過ぎず、図面の紙面等との関係で選択されるにすぎない。当業者であれば、これらの実体は同じであることが理解される。なお、16進数の数値には「0x」が付されている。
【0046】
モータユニット106Aはモータユニット106Bに、「モータユニット106Aの識別子+現在の回転速度のリクエスト」を送信する。モータユニット106Aの識別子は、モータユニット106Aを示す送信元デバイスID11(
図4)に記述される。
【0047】
図6は、RS-485規格の通信時のデータフレーム2aの例を示す。データフレーム2aは
図4のデータフレーム1aに対応する。
【0048】
データフレーム2aには、送信先デバイスID10としてモータユニット106Bを示す7ビットの2進数値”0000010”を含む1バイト(8ビット)のデータ”00000010”が記述され、送信元デバイスID11としてモータユニット106Aを示す7ビットの2進数値”0000001”を含む1バイト(8ビット)のデータ”00000001”が記述されている。なお、送信先デバイスIDおよび送信元デバイスIDに記述されるデータについては、後に詳しく説明する。
【0049】
また、共通データ構造12には、動作系コマンドフィールド12bとして、データの読み取りを示す「リードデータ(Read Data)」コマンドに対応する1バイト値”0x01”が記述されている。また、属性系コマンドフィールド12cには、現在の回転速度を示す”Present Speed”に対応する2バイト値”0x00,0x21”が記述されている。他のデータフィールドは本開示には特に関係しない。よって他のデータフィールドの説明は省略する。
【0050】
モータユニット106Bは、例えば自身宛てのコマンドを含むデータフレーム2aを受信する。この場合、モータユニット106Bのプロセッサ112Bは、送信元IDとして付加されている識別子に基づいてメモリ113Bに記憶されているテーブルを参照し、当該データフレームを送信したモータユニットが、例えばモータユニット106Aであることを特定する。
【0051】
モータユニット106Bは、データフレーム2aの共通データ構造12に含まれる動作系コマンドおよび属性系コマンドを解釈して、例えば関節用モータ116Bの現在の回転速度を読み取る。その結果、モータユニット106Bはモータユニット106Aに、「送信元ID情報(モータユニット106B)+現在の回転速度の情報」を送信することができる。なお、モータユニット106Bが送信するデータフレームの具体的な説明は省略する。なお、モータユニット106Bはコマンドを受信した直後に、コマンドを受信したことを示す受信応答コマンドをモータユニット106Aに送信してもよい。
【0052】
[識別子の格納]
以下、本実施形態に係るデータフレーム1aの、送信先デバイスID10および送信元デバイスID11(以下、これらを総称して単に「デバイスID」ということがある。)のデータ領域への識別子の格納方法について説明する。
図4に示したように、本実施形態のデータフレーム1aにおける、送信先デバイスID10の領域のサイズおよび送信元デバイスID11の領域のサイズはそれぞれ1~mバイト(任意のサイズ)である。本実施形態によれば、データフレーム1aにおけるデバイスIDの格納領域の長さを、所望の長さに拡張することができる。
【0053】
図7は、データフレーム1aへのデバイスIDの格納方法を示す模式図である。なお、以下に説明する識別子の格納方法では、デバイスIDの長さを7ビットずつ拡張していく場合について説明するが、これに限られるものではない。
【0054】
本実施形態では、デバイスIDの格納領域(以下、「識別子格納領域」という。)は、上述したように1~mバイトの長さ(任意の長さ)を有する。識別子格納領域を構成するそれぞれの1バイト(8ビット)のデータ領域のうち、先頭のビットには領域拡張情報を示す値が格納される。領域拡張情報とは、当該領域拡張情報が格納されたデータ領域の直後のデータ領域も同一の識別子格納領域を構成するデータ領域であるか否かを表す情報である。
【0055】
なお、1バイトのデータ領域内において領域拡張情報が格納される領域の位置は先頭ビットに限られるものではなく、予め定められたその他の位置(2~8番目のビットのいずれか)であってもよい。
【0056】
なお、本実施形態においては、領域拡張情報の値が「1」である場合、直後のデータ領域も同一の識別子格納領域であることを表し、領域拡張情報の値が「0」である場合、直後のデータ領域は同一の識別子格納領域ではないことを表すものとする。
【0057】
例えばデータ領域の先頭ビット等の1ビットを、領域拡張情報を格納する領域として使用するため、1バイトのデータ領域に格納することができるデバイスIDの長さは7ビットまでである。したがって、デバイスIDのサイズが7ビット以内である場合には、1つのデータ領域にデバイスIDを全て格納することができるため、領域拡張情報が格納される先頭ビットには「0」の値が格納される。
【0058】
例えば、
図7に示すように、デバイスIDが「1001011」である場合、サイズが7ビットであることから、先頭ビットに「0」が格納され、2~8番目のビットにデバイスID「1001011」が格納される。
【0059】
データフレーム1aを受信する端末側は、識別子格納領域のデータ領域の先頭ビットに「0」が格納されていることから、当該データ領域の直後のデータ領域が同一の識別子格納領域ではないことを認識することができる。
【0060】
一方、デバイスIDのサイズが8ビット以上である場合には、1つのデータ領域にデバイスIDの全てを格納することはできない。そのため、複数のデータ領域が同一の識別子格納領域として用いられ、1つのデバイスIDが分割されて当該複数のデータ領域にそれぞれ格納される。
【0061】
例えば、
図7に示すように、デバイスIDが「11010101011100」である場合、サイズが14ビットであることから、デバイスIDが分割されて2つのデータ領域にそれぞれ格納される。1つ目のデータ領域の先頭ビットには「1」が格納される。これにより、直後の2つ目のデータ領域も同一の識別子格納領域であることが示される。そして、1つ目のデータ領域の2~8番目のビットには、デバイスIDの1~7番目のビットの値である「1101010」が格納される。
【0062】
2つ目のデータ領域の先頭ビットには「0」が格納される。これにより、直後の3つ目のデータ領域は同一の識別子格納領域ではないことが示される。そして、2つ目のデータ領域の2~8番目のビットには、デバイスIDの8~14番目のビットの値である「1011100」が格納される。
【0063】
また、例えば、
図7に示すように、デバイスIDが「010111000110100101101」である場合、サイズが21ビットであることから、デバイスIDが分割されて3つのデータ領域にそれぞれ格納される。1つ目のデータ領域の先頭ビットには「1」が格納される。これにより、直後の2つ目のデータ領域も同一の識別子格納領域であることが示される。そして、1つ目のデータ領域の2~8番目のビットには、デバイスIDの1~7番目のビットの値である「0101110」が格納される。
【0064】
2つ目のデータ領域の先頭ビットにも「1」が格納される。これにより、直後の3つ目のデータ領域も同一の識別子格納領域であることが示される。そして、2つ目のデータ領域の2~8番目のビットには、デバイスIDの8~14番目のビットの値である「0011010」が格納される。
【0065】
3つ目のデータ領域の先頭ビットには「0」が格納される。これにより、直後の4つ目のデータ領域は同一の識別子格納領域ではないことが示される。そして、3つ目のデータ領域の2~8番目のビットには、デバイスIDの15~21番目のビットの値である「0101101」が格納される。
【0066】
このように、直後のデータ領域が同一の識別子格納領域であるか否かを示す領域拡張情報が、識別子格納領域を構成する各データ領域に格納される。これにより、識別子格納領域の長さを可変長にすることが可能になる。識別子格納領域の長さを、デバイスIDの長さに合わせた長さに適宜設定することができるため、従来のように識別子格納領域の長さが固定長である場合と比べて、無駄な領域(未使用領域)を大幅に削減させることができる。
【0067】
[プロセッサの機能構成]
以下、
図3に示したプロセッサ112Aの機能構成について説明する。なお、
図3に示したプロセッサ112Bの機能構成も、以下に説明するプロセッサ112Aの機能構成と同様である。
【0068】
図8は、プロセッサ112Aの機能構成を示すブロック図である。
図8に示すように、プロセッサ112Aは、送受信部121と、データ処理部122と、モータ制御部123と、を含んで構成される。
【0069】
送受信部121は、通信ネットワークNWに接続された他の端末(例えば、モータユニット106B)から送信されるデータフレーム1aを、通信回路110Aを介して受信する。また、送受信部121は、データ処理部122によって生成されたデータフレーム1aを、通信回路110Aを介して通信ネットワークNWに接続された他の端末(例えば、モータユニット106B)へ送信する。
【0070】
データ処理部122は、送受信部121が受信したデータフレーム1aに含まれるデータを処理する。また、データ処理部122は、送受信部121が送信するデータフレーム1a、および当該データフレーム1aに含まれるデータを生成するデータ生成部(図示せず)を含む。
【0071】
また、データ処理部122は、送受信部121が受信したデータフレーム1aに含まれる上述した共通データ構造12のデータに基づく命令を、モータ制御部123へ出力する。また、データ処理部122は、モータ制御部123から出力された、例えば関節用モータ116Aに関する情報等を取得する。データ処理部122は、取得した情報に基づいてデータフレーム1aに含めるデータを生成する。
【0072】
また、データ処理部122は、送受信部121が受信したデータフレーム1aに含まれる端末識別子情報(例えば、デバイスID)を取得する際に、当該端末識別子情報を格納する識別子格納領域の所定の位置(例えば、先頭)に位置する所定長の第1データ領域を読み出す。そして、データ処理部122は、当該第1データ領域に含まれる領域拡張情報に基づいて、第1データ領域の直後に位置する所定長の第2データ領域を識別子格納領域に含めるか否かを判断する。
【0073】
また、データ処理部122は、第2データ領域を識別子格納領域に含めると判断した場合、第2データ領域を読み出す。そして、データ処理部122は、当該第2データ領域に含まれる領域拡張情報に基づいて、第2データ領域の直後に位置する第3データ領域を識別子格納領域に含めるか否かを判断する。
【0074】
また、データ処理部122は、送受信部121が送信するデータフレーム1aに含まれる識別子格納領域に端末識別子情報(例えば、デバイスID)を格納する際に、当該端末識別子情報の長さに基づいて、識別子格納領域の所定の位置(例えば、先頭)に位置する所定長の第1データ領域だけでなく当該第1データ領域の直後に位置する所定長の第2データ領域を識別子格納領域に含めるか否かを判断する。
【0075】
そして、データ処理部122は、第2データ領域を識別子格納領域に含めると判断した場合、所定の領域拡張情報(例えば「1」の値)を第1データ領域に格納する。一方、データ処理部122は、第2データ領域を識別子格納領域に含めないと判断した場合、所定の他の領域拡張情報(例えば「0」の値)を第1データ領域に格納する。
【0076】
また、データ処理部122は、第2データ領域を識別子格納領域に含めると判断した場合、端末識別子情報の長さに基づいて、当該第2データ領域の直後に位置する所定長の第3データ領域を識別子格納領域に含めるか否かを判断する。そして、データ処理部122は、当該第3データ領域を識別子格納領域に含めると判断した場合、所定の領域拡張情報(例えば「1」の値)を第2データ領域に格納する。
【0077】
モータ制御部123は、データ処理部122から出力された命令に従って例えば関節用モータ116A等の動作を制御する。また、モータ制御部123は、例えば関節用モータ116A等に関する情報を取得し、当該情報をデータ処理部122へ出力する。
【0078】
[端末識別子情報の受信処理]
以下、端末識別子情報の受信処理の一例について説明する。
図9は、端末識別子情報の受信時におけるプロセッサ112Aの動作の一例を示すフローチャートである。
図9のフローチャートが示す処理は、プロセッサ112Aの送受信部121が、データフレーム1aに含まれる識別子格納領域のデータの受信を始めた際に開始される。
【0079】
プロセッサ112Aのデータ処理部122は、送受信部121が受信したデータの先頭から1バイト分のデータ領域(第1データ領域)を読み出す(ステップS01)。データ処理部122は、読み出した1バイトのデータ領域のうち、2~8番目のビットのデータをメモリ113Aに一時記憶させる(ステップS02)。
【0080】
データ処理部122は、読み出した1バイトのデータ領域の先頭ビットの値(すなわち、領域拡張情報の値)が「1」である場合(ステップS03・Yes)、当該データ領域の直後に位置するデータ領域(第2データ領域)も識別子格納領域に含めると判断する。そして、データ処理部122は、上記読み出したデータ領域の直後に位置する1バイトのデータ領域を、さらに読み出す(ステップS01)。
【0081】
データ処理部122は、読み出したデータ領域の先頭ビットの値(すなわち、領域拡張情報の値)が「0」であるデータ領域を検出するまで、上記のステップS01~ステップS03の理処理を繰り返す。
【0082】
データ処理部122は、読み出した1バイトのデータ領域の先頭ビットの値(すなわち、領域拡張情報の値)が「0」である場合(ステップS03・No)、当該データ領域の直後に位置するデータ領域は識別子格納領域に含めないと判断する。そして、データ処理部122は、メモリ113Aに一時記憶させたデータを順につなげたデータを、端末識別子情報(例えば、デバイスID等)として特定する(ステップS04)。以上で、
図9のフローチャートが示すプロセッサ112Aの動作が終了する。
【0083】
[端末識別子情報の送信処理]
以下、端末識別子情報の送信処理の一例について説明する。
図10は、端末識別子情報の送信時におけるプロセッサ112Aの動作の一例を示すフローチャートである。
図10のフローチャートが示す処理は、プロセッサ112Aのデータ処理部122が、データフレーム1aの識別子格納領域に端末識別子情報(例えば、デバイスID)を格納する際に開始される。
【0084】
データ処理部122は、データフレーム1aの識別子格納領域に格納する対象である端末識別子情報を読み出す(ステップS11)。データ処理部122は、読み出した端末識別子情報のデータ長が7ビットより長い場合(ステップS12・Yes)、1バイトである1つのデータ領域に端末識別子情報の全てを格納することはできないと判断し、端末識別子情報の先頭7ビットのデータを切り出す(ステップS13)。
【0085】
そして、データ処理部122は、先頭ビット(すなわち、領域拡張情報の格納領域)に「1」の値を格納し(ステップS14)、かつ2~8番目のビットに上記切り出した7ビットのデータを格納した(ステップS15)1バイトのデータを、送受信部121へ出力する(ステップS16)。
【0086】
データ処理部122は、上記において切り出した後の端末識別子情報を読み出す(ステップS17)。そして、データ処理部122は、読み出した端末識別子情報(すなわち、切り出した後の残りの端末識別子情報)のデータ長が7ビット以内になるまで、上記のステップS12~ステップS17の処理を繰り返す。
【0087】
データ処理部122は、読み出した端末識別子情報のデータ長が7ビット以内である場合(ステップS12・No)、1バイトである1つのデータ領域に残りの端末識別子情報を全て格納することができると判断する。
【0088】
そして、データ処理部122は、先頭ビット(すなわち、領域拡張情報の格納領域)に「0」の値を格納し(ステップS18)、かつ2番目以降のビットに残りの端末識別子情報を格納した(ステップS19)1バイトのデータを、送受信部121へ出力する(ステップS20)。以上で、
図10のフローチャートが示すプロセッサ112Aの動作が終了する。
【0089】
以上説明したように、本発明の一実施形態に係る端末(モータユニット106Aおよびモータユニット106B)が有する通信機能(以下、「通信装置」という。)は、複数の端末にそれぞれ備えられる通信装置が通信ネットワークを介して互いに通信を行う通信システム(マルチモータシステム103)における通信装置である。当該通信装置は、他の端末から送信されるフレーム(データフレーム1a)を受信する受信部(送受信部121)と、当該受信部が受信するフレームに含まれるデータを処理するデータ処理部122と、を備える。当該データ処理部122は、フレームに含まれる端末識別子情報(例えば、デバイスID)を取得する際に、当該端末識別子情報を格納する識別子格納領域の所定の位置(例えば、先頭)に位置する所定長の第1データ領域を読み出し、当該第1データ領域に含まれる領域拡張情報に基づいて、当該第1データ領域の直後に位置する所定長の第2データ領域を識別子格納領域に含めるか否かを判断する。
【0090】
また、以上説明したように、本発明の一実施形態に係る端末(モータユニット106Aおよびモータユニット106B)が備える通信装置は、他の端末へフレーム(データフレーム1a)を送信する送信部(送受信部121)と、当該送信部が送信するフレームに含まれるデータを生成するデータ処理部122と、を備える。当該データ処理部122は、フレームに含まれる識別子格納領域に端末識別子情報(例えば、デバイスID)を格納する際に、当該端末識別子情報の長さに基づいて、識別子格納領域の所定の位置(例えば、先頭)に位置する所定長の第1データ領域だけでなく当該第1データ領域の直後に位置する所定長の第2データ領域を識別子格納領域に含めるか否かを判断する。そして、データ処理部122は、記第2データ領域を識別子格納領域に含めると判断した場合、所定の領域拡張情報(例えば、「1」の値)を第1データ領域に格納する。
【0091】
上記のような構成を備えることにより、本発明の一実施形態に係る通信装置は、識別子格納領域の長さを、端末識別子情報の長さに合わせた長さに適宜設定することができるため、通信効率を低下させることなく、使用可能な固有識別子情報の個数を任意に増加させることができる。
【0092】
[非対応端末のチェック処理]
使用可能な固有識別子情報の個数を任意に設定することができる通信システムの場合、同一の通信ネットワークに接続される各端末が認識することができる固有識別子情報のデータ長が、それぞれ異なることがある。以下、一例として、同一の通信ネットワーク接続される端末として、1バイトのデータ長の固有識別子情報を認識できる端末(以下、「1バイト対応端末」という。)と、2バイトのデータ長の固有識別子情報を認識できる端末(以下、「2バイト対応端末」という。)とが、混在するような通信システムを考える。
【0093】
このような場合、2バイト対応端末が1バイト対応端末に対して2バイトのデータを送信したとしても、1バイト端末は受信したデータの内容を正しく認識することができない。さらに一般的には、2バイト対応端末は、どの端末が1バイト対応端末であるのかを認識することもできない。
【0094】
しかしながら、上述した本実施形態による通信装置の構成を用いれば、複数バイトごとの処理に対応可能な端末(例えば、2バイト対応端末)が、当該端末よりも少ないバイト数ごとの処理にしか対応していない端末(例えば、1バイト対応端末)の存在を事前にチェックすることが可能になる。このような、非対応端末のチェック処理について、以下に説明する。なお、以下の例では、2バイト対応端末が1バイト対応端末の存在をチェックする場合について説明する。
【0095】
図11は、非対応端末のチェック処理の流れを示す模式図である。なお、非対応端末のチェックを行う2バイト対応端末のデバイスIDは「11110000000111」(データ長:14ビット)であるものとする。また、通信ネットワークNWには、少なくとも1つの1バイト対応端末が接続されており、そのうち1つの1バイト対応端末のデバイスIDは「0000010」(データ長:7ビット)であるものとする。
【0096】
2バイト対応端末は、自己のデバイスIDが14ビットであることから、
図4に示したデータフレーム1aの送信元デバイスID11の領域サイズを2バイトとする。
図11に示すように、送信元デバイスID11の領域に格納されるデータは、先頭バイトの先頭ビットには「1」が格納され、2番目のバイトの先頭ビットには「0」が格納される。そして、先頭バイトの2~8番目のビットと、2番目のバイトの2~8番目のビットとを用いて、2バイト対応端末の14ビットのデバイスIDが格納される。
【0097】
また、2バイト対応端末は、非対応端末の存在をチェックするための試験用データを、
図4に示したデータフレーム1aの送信先デバイスID10の領域に格納する。試験用データは、例えば
図11に示すように、「00000000000000」(データ長:14ビット、全ビットの値が「0」)等の、予め定められたデータであるものとする。
【0098】
2バイト対応端末は、試験用データが14ビットであることから、送信先デバイスID10の領域サイズを2バイトとする。
図11に示すように、送信先デバイスID10の領域に格納されるデータは、先頭バイトの先頭ビットには「1」が格納され、2番目のバイトの先頭ビットには「0」が格納される。そして、先頭バイトの2~8番目のビットと、2番目のバイトの2~8番目のビットとを用いて、14ビットの試験用データが格納される。
【0099】
2バイト対応端末は、送信先デバイスID10の領域に試験用データを格納し、送信元デバイスID11の領域に自己のデバイスIDを格納したデータフレーム1aを、通信ネットワークNWに接続された他の端末に対してブロードキャスト(同報)送信する。
【0100】
通信ネットワークNWに接続された他の端末は、上記ブロードキャスト送信されたデータフレーム1aをそれぞれ受信する。受信した端末が2バイト対応端末である場合、当該2バイト対応端末は、送信先デバイスID10の領域に試験用データが格納されていること、および、送信元デバイスID11の領域に格納された送信元の端末のデバイスIDを正しく認識することができる。
【0101】
ここで、例えば、試験用データおよび送信元の端末のデバイスIDを正しく認識することができた端末は送信元の端末に対して何も応答しない等のルールが、予め定められているものとする。そのため、上記試験用データを受信した2バイト対応端末は、送信元の端末に対して応答を行わない。
【0102】
一方、受信した端末が1バイト対応端末である場合、当該1バイト対応端末は、送信先デバイスID10の領域に格納されたデータの先頭1バイト分のデータ、および、送信元デバイスID11の領域に格納されたデータの先頭1バイト分のデータしか認識することができない。そのため、1バイト対応端末は、送信先デバイスID10の領域に試験用データが格納されていること、および、送信元デバイスID11の領域に格納された送信元の端末のデバイスIDを正しく認識することができない。
【0103】
しかしながら、1バイト対応端末は、送信先デバイスID10の領域の先頭ビットの値が「1」であること、あるいは、送信元デバイスID11の領域の先頭ビットの値が「1」であることから、2バイト以上の長さのデータが送信されたことを認識することは可能である。
【0104】
この場合、1バイト対応端末は、データフレーム1aの送信先デバイスID10の領域の先頭ビットに「0」の値を格納し、2~8番目のビットに試験応答用データを格納する。試験応答用データとは、自己の端末が2バイトでの処理に非対応な端末であることを送信元の端末に対して通知するためのデータである。試験応答用データは、例えば
図11に示すように、「0000000」(データ長:7ビット、全ビットの値が「0」)等の、予め定められたデータであるものとする。
【0105】
また、1バイト対応端末は、データフレーム1aの送信元デバイスID11の領域の先頭ビットに「0」の値を格納し、2~8番目のビットに7ビットの自己のデバイスID「0000010」を格納する。そして、1バイト対応端末は、送信先デバイスID10の領域に試験応答用データを格納し、送信元デバイスID11の領域に自己のデバイスIDを格納したデータフレーム1aを、通信ネットワークNWに接続された他の端末に対してブロードキャスト(同報)送信する。なお、ここでブロードキャスト送信をする理由としては、1バイト対応端末は試験用データを送信した端末のデバイスIDを認識することができず、送信先を特定することができないためである。
【0106】
次に、試験用データを送信した2バイト対応端末は、試験応答用データを送信した1バイト対応端末から送信されたデータフレーム1aを受信する。そして、2バイト対応端末は、送信先デバイスID10の領域に格納された試験応答用データ、および、送信元デバイスID11の領域に格納された送信元の1バイト対応端末のデバイスID「0000010」をそれぞれ認識する。これにより、2バイト対応端末は、デバイスID「0000010」である端末が、1バイト対応端末(非対応端末)であることを認識することができる。
【0107】
このようにして、2バイト対応端末は、1バイト対応端末のデバイスIDのみを、当該1バイト対応端末からそれぞれ送信されるデータフレーム1aによって取得することができる。これにより、2バイト対応端末は、2バイトでの処理に対応していない非対応端末(1バイト対応端末)を特定することができる。
【0108】
以上説明したように、上述した一実施形態に係る通信システム(マルチモータシステム103)は、第1のデータ長(例えば、2バイト)のデータ片ごとに演算処理を行う少なくとも1つの端末(モータユニット)にそれぞれ備えられる第1の通信装置と、前記第1のデータ長より短い第2のデータ長(例えば、1バイト)のデータ片ごとに演算処理を行う少なくとも1つの端末にそれぞれ備えられる第2の通信装置と、が通信ネットワークNWを介して互いに通信を行う通信システムである。
【0109】
第1の通信装置は、他の端末とフレームの送受信を行う第1送受信部と、第1送受信部が送信するフレームである第1フレームに含まれるデータを生成する第1データ生成部と、第2送受信部が送信するフレームである第2フレームであって、第1送受信部が受信する第2フレームに含まれるデータを処理する第1データ処理部と、を備える。第1データ生成部は、第1フレームに含まれる送信元識別子格納領域に第1の通信装置を識別する端末識別子情報を格納し、送信元識別子格納領域の所定の位置(例えば、先頭)に位置する所定長の第1データ領域に所定の領域拡張情報を格納する。
【0110】
第2の通信装置は、他の端末とフレームの送受信を行う第2送受信部と、第2送受信部が送信するフレームである第2フレームに含まれるデータを生成する第2データ生成部と、第1送受信部が送信するフレームである第1フレームであって、第2送受信部が受信する第1フレームに含まれるデータを処理する第2データ処理部と、を備える。第1データ領域に所定の領域拡張情報が格納されている場合、第2データ生成部は、第2フレームに含まれる送信元識別子格納領域に第2の通信装置を識別する端末識別子情報を格納し、第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データを格納する。
【0111】
第1の通信装置は、第2フレームに含まれる送信先識別子格納領域に所定の試験応答用データが格納されている場合、第2の通信装置が、第1のデータ長のデータ片ごとに演算処理を行うことができない通信装置であると判定する。
【0112】
上記の構成により、複数バイトごとの処理に対応可能な端末(例えば、2バイト対応端末)が、当該端末よりも少ないバイト数ごとの処理にしか対応していない端末(例えば、1バイト対応端末)の存在を事前にチェックすることができる。
【0113】
以上、この発明の実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0114】
なお、上述した実施形態における端末(モータユニット106Aおよびモータユニット106B)に備えられた通信装置の一部または全部をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。
【0115】
なお、ここでいう「コンピュータシステム」とは、通信装置に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0116】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信回線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0117】
また、上述した実施形態における通信装置を、LSI(Large Scale Integration)等の集積回路として実現してもよい。通信装置の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【0118】
1a・・・データフレーム、2a・・・データフレーム、12・・・共通データ構造、12a・・・データ長フィールド、12b・・・動作系コマンドフィールド、12c・・・属性系コマンドフィールド、12d・・・データフィールド、21・・・送信元IPアドレス、30・・・コミュニケーションロボット、30b・・・コミュニケーションロボット、32a・・・モータユニット、32b・・・モータユニット、32c・・・モータユニット、32d・・・モータユニット、32e・・・モータユニット、103・・・マルチモータシステム、104A・・・関節機構、104B・・・関節機構、106A・・・モータユニット、106B・・・モータユニット、110A・・・通信回路、110B・・・通信回路、111A・・・バッファ、111B・・・バッファ、112A・・・プロセッサ、112B・・・プロセッサ、113A・・・メモリ、113B・・・メモリ、114A・・・モータ駆動回路、114B・・・モータ駆動回路、116A・・・関節用モータ、116B・・・関節用モータ、121・・・送受信部、122・・・データ処理部、123・・・モータ制御部