(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-30
(45)【発行日】2024-09-09
(54)【発明の名称】マスタスレーブ通信システムおよびその制御方法
(51)【国際特許分類】
H04L 61/50 20220101AFI20240902BHJP
H04L 12/40 20060101ALI20240902BHJP
【FI】
H04L61/50
H04L12/40 Z
(21)【出願番号】P 2020085945
(22)【出願日】2020-05-15
【審査請求日】2023-04-18
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100125254
【氏名又は名称】別役 重尚
(72)【発明者】
【氏名】猪 浩一朗
【審査官】前田 健人
(56)【参考文献】
【文献】米国特許出願公開第2017/0294092(US,A1)
【文献】特開2015-109608(JP,A)
【文献】特開平10-271138(JP,A)
【文献】特開2012-195659(JP,A)
【文献】米国特許出願公開第2019/0114274(US,A1)
【文献】特表2014-503970(JP,A)
【文献】米国特許第06745270(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/40
H04L 61/50
(57)【特許請求の範囲】
【請求項1】
マスタノードと、固有でないアドレスである初期アドレスを保持する複数のスレーブノードとを含むマスタスレーブ通信システムであって、
前記複数
のスレーブノードの
各々のアドレスを、前記初期アドレスから、前記初期アドレスとは異なる前記
複数のスレーブノードの
各々に対応する固有アドレスに変更する
変更処理を実行する変更手段と、
前記変更手段によ
り前記複数のスレーブノードの各々のアドレスが、対応する固有アドレスに変更された後に、前記初期アドレスを用いて、前記
複数のスレーブノードとの通信を試みる試行手段と、
を有し、
前記変更手段は、前記試行手段による試行結果
が通信の成立を示す場合に、前記変更処理を再び実行することを特徴とするマスタスレーブ通信システム。
【請求項2】
前記試行結果が通信の不成立を示した場
合、前記
複数のスレーブノードの
各々の動作状態が正常であると判別する
判別手段をさらに有することを特徴とする請求項1に記載のマスタスレーブ通信システム。
【請求項3】
前記判別手段は、前記試行結果が通信の成立を示した場
合、前記
複数のスレーブノードのうち少なくとも1つの動作状態が正常でないと判別することを特徴とする請求
項2に記載のマスタスレーブ通信システム。
【請求項4】
前記判別手段は、前記試行結果が通信の成立を示した場
合、前記
複数のスレーブノードのうち少なくとも1つは初期状態にリセットされていると判別することを特徴とする請求項
2に記載のマスタスレーブ通信システム。
【請求項5】
前記マスタノードと前記複数のスレーブノードとは、I2C通信方式を用いて通信され、
前記
変更手段は、
前記試行手段による試行結果として、前記
複数のスレーブノードに接続されたシリアルデータバスの状態が
データを正常に受信したことを示すACKである場合に、
前記変更処理を再び実行することを特徴とする請求項
1に記載のマスタスレーブ通信システム。
【請求項6】
前記試行手段は、前記複数のスレーブノードの全てに電力を供給した状態で、前記初期アドレスを用いて、前記複数のスレーブノードとの通信を試み、
前記試行結果が通信の成立を示す場
合、前記試行手段は、前記
複数のスレーブノード
の各々に対する電力の供給を停止した後に、再度、前記
複数のスレーブノード
の各々に電力を供給した状態で、前記初期アドレスを用いて、前記
複数のスレーブノードとの通信を試みることを特徴とする請求項
1に記載のマスタスレーブ通信システム。
【請求項7】
前記マスタノードは、前記複数のスレーブノードと通信を行う電子デバイスであることを特徴とする請求項1乃至6のいずれか1項に記載の通信システム。
【請求項8】
マスタノードと、固有でないアドレスである初期アドレスを保持する複数のスレーブノードとを含むマスタスレーブ通信システムの制御方法であって、
前記複数
のスレーブノードの
各々のアドレスを、前記初期アドレスから、前記初期アドレスとは異なる前記
複数のスレーブノードの
各々に対応する固有アドレスに変更
する変更処理を実行し、
前記変更処理が完了した後に、前記初期アドレスを用いて、前記
複数のスレーブノードとの通信を試み、
前記変更処理の完了後における前記初期アドレスを用いた通信の試行結果
が通信の成立を示す場合に、前記変更処理を再び実行することを特徴とするマスタスレーブ通信システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マスタスレーブ通信システムおよびその制御方法に関する。
【背景技術】
【0002】
電子デバイスとしてのマスタノードが複数のスレーブノードと通信を行うマスタスレーブ通信システムが知られている。一般に、マスタノードとスレーブノードの通信には、当該スレーブノードに割り当てられたアドレス(スレーブアドレス)を指定して、任意のスレーブノードとマスタノードとの間の通信を確立する方法がとられている。マスタスレーブ通信システムの1つであるI2C通信においては、
図10に示すような通信方式が採用される。
【0003】
まず、マスタノードから、スタートコンディション(S)信号、接続したいスレーブアドレス信号、マスタ側がリードかライトかを指示するR/W信号が送信される。スレーブノードが信号を受け取ると、スレーブノードからACKが返信される。その後、マスタ側がライトとなる場合は、マスタノードからデータ信号が送信され、スレーブノードが信号を受け取るとスレーブノードからACKが返信される。一方、マスタ側がリードとなる場合は、スレーブノードからデータ信号が送信され、マスタノードが信号を受け取るとマスタノードからACKが返信される。最後にマスタノードからストップコンディション信号(P)が送信され、スレーブノードとの通信が終了する。
【0004】
ここで信号を受け取る側が信号を正しく受け取れなかった場合、ACKが返信されずNCK状態となる。このマスタスレーブ通信システムにおいては、複数のスレーブノードにはそれぞれに固有のアドレスが割り当てられる必要がある。その方法としては、特許文献1に記載されるように、マスタノードからスレーブノードそれぞれに固有のスレーブアドレスを設定することで、それぞれのスレーブノードへの通信を可能にする方式が知られている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、マスタノードは、各スレーブノードが正常に動作しているかどうかという動作状態を判別するためには、それぞれのスレーブノードのスレーブアドレスを指定して通信を行い、通信が確立するかどうかを確認する必要がある。例えば、
図9に示すようにスレーブノードA、B、Cの各々との通信の確立を1つ1つ確認し、つまりスレーブノードの各々からACKが返信されることを確認する必要がある。スレーブノードの数が多い場合、確認には長い時間を要してしまう。複数のスレーブノードの動作状態の判別に長時間を要すると、マスタスレーブ通信システムが搭載されている機器全体の円滑な制御ができないおそれがある。
【0007】
本発明は、複数のスレーブノードの動作状態を短時間で判別することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために本発明は、マスタノードと、固有でないアドレスである初期アドレスを保持する複数のスレーブノードとを含むマスタスレーブ通信システムであって、前記複数のスレーブノードの各々のアドレスを、前記初期アドレスから、前記初期アドレスとは異なる前記複数のスレーブノードの各々に対応する固有アドレスに変更する変更処理を実行する変更手段と、前記変更手段により前記複数のスレーブノードの各々のアドレスが、対応する固有アドレスに変更された後に、前記初期アドレスを用いて、前記複数のスレーブノードとの通信を試みる試行手段と、を有し、前記変更手段は、前記試行手段による試行結果が通信の成立を示す場合に、前記変更処理を再び実行することを特徴とする。
【発明の効果】
【0009】
本発明によれば、複数のスレーブノードの動作状態を短時間で判別することができる。
【図面の簡単な説明】
【0010】
【
図1】マスタスレーブ通信システムの構成を概略的に示すブロック図である。
【
図2】スレーブノードAの構成を概略的に示すブロック図である。
【
図4】スレーブアドレス設定処理を示すフローチャートである。
【
図5】スレーブアドレス設定処理を示す
図4の続きのフローチャートである。
【
図6】スレーブアドレスの変更を説明する図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態を説明する。
【0012】
図1は、本発明の一実施の形態に係るマスタスレーブ通信システムの構成を概略的に示すブロック図である。
図1において、マスタスレーブ通信システム1000(以下、通信システム1000)は、マスタCPU100、及び複数のスレーブノードを備える。本実施の形態では、一例として、通信システム1000が、3つのスレーブノード、具体的にはスレーブノードA111、スレーブノードB112、及びスレーブノードC113を備える構成について説明する。なお、通信システム1000が備えるスレーブノードの個数は3つに限られず、2つ、又は4つ以上であっても良い。例えば、スレーブノードのアドレスのデータ長が8ビットである場合、スレーブノードの最大個数は、2
8-1、つまり、255となる。
【0013】
電子デバイスとしてのマスタCPU100は、1つ以上のマスタノード及びマスタROM104を備える。本実施の形態では、一例として、通信システム1000が、1つのマスタノード、具体的に、マスタノード101を備える構成について説明する。
【0014】
マスタノード101は、データ出力端子(SDA)及びクロック出力端子(CLKout)を備える。データ出力端子は、シリアルデータバス102に接続され、クロック出力端子は、クロック信号線103に接続される。シリアルデータバス102及びクロック信号線103には、それぞれスレーブノードA111、スレーブノードB112、及びスレーブノードC113が並列に接続される。このように、通信システム1000では、1つのマスタノードに対して複数のスレーブノードがぶらさがるように接続される。
【0015】
通信システム1000では、通信方式として、例えば、I2C通信が使用される。I2C通信では、マスタノード101が、クロック出力端子からクロック信号線103にシリアル通信用のクロック信号を出力する。クロック信号の立上りエッジ時におけるシリアルデータバス102の論理によって、シリアルデータが確定する。すなわち、スレーブノードA111、スレーブノードB112、及びスレーブノードC113のうち、マスタノード101によって指定されたスレーブノードは、当該クロック信号の立上りエッジ時におけるシリアルデータバス102のデータ信号を読み取る。以下では、マスタノード101がシリアルデータバス102及びクロック信号線103を介して各スレーブノードと行う通信を「マスタスレーブ通信」と称する。
【0016】
マスタCPU100は、スレーブノードA111、スレーブノードB112、及びスレーブノードC113へ電力を供給する。
図1において、マスタCPU100は、電源線121からスレーブノードA111へ電力を供給し、電源線122からスレーブノードB112へ電力を供給し、電源線123からスレーブノードC113へ電力を供給する。なお、以下では、電源線121からスレーブノードA111へ供給される電力を「Vcc-A」とする。電源線122からスレーブノードB112へ供給される電力を「Vcc-B」とする。電源線123からスレーブノードC113へ供給される電力を「Vcc-C」とする。マスタCPU100は、電力の供給のオンオフ制御を電源線121~123毎に個別に実施可能である。マスタROM104は、複数の変更アドレスを格納する。各変更アドレスは、マスタスレーブ通信にて使用される各スレーブノードのアドレスを設定する後述するスレーブアドレス設定処理(
図4、
図5)にて使用される。変更アドレスは、各スレーブノードに対応する固有のアドレス(固有アドレス)であり、各スレーブノードの変更アドレスは互いに異なるアドレスである。
【0017】
I2C通信では、スレーブノードA111、スレーブノードB112及びスレーブノードC113は、通信システム1000内での通信に用いられるそれぞれ固有のスレーブアドレスを有している。マスタノード101は、通信対象とするスレーブノードが有しているスレーブアドレスを指定することで、スレーブノードA111、スレーブノードB112もしくはスレーブノードC113のいずれかが通信対象として選択される。マスタノード101は、選択されたスレーブノードと通信を行う。
【0018】
I2C通信では、シリアルデータバス102及びクロック信号線103は、抵抗を介して電源Vddにプルアップされている。この電源Vddの電圧は、マスタノード101やスレーブノードへ供給される電圧(Vcc)と同等である。シリアルデータバス102及びクロック信号線103には複数のスレーブノードが接続されるため、それぞれのノードのシリアルデータバス102及びクロック信号線103につながる端子はオープンドレイン構成をとる。各スレーブノードの端子は、常時は入力モードにしてハイインピーダンス状態となる。
【0019】
なお、本実施の形態では、スレーブノードA111、スレーブノードB112、及びスレーブノードC113は互いに同様の構成であるので、以下では、代表してスレーブノードA111の構成を説明する。なお、以下では、スレーブノードB112の構成要素については、スレーブノードA111の構成要素の符号末尾の「A」を「B」と読み替える。また、スレーブノードC113の構成要素について、スレーブノードA111の構成要素の符号末尾の「A」を「C」と読み替える。
【0020】
図2は、スレーブノードA111の構成を概略的に示すブロック図である。
図2において、スレーブノードA111は、シリアル/パラレル変換部201A、受信アドレスレジスタ202A、内部アドレスレジスタ203A、スレーブCPU204A、及びスレーブROM205Aを備える。シリアル/パラレル変換部201A、受信アドレスレジスタ202A、スレーブCPU204Aは、内部バス206Aを介して互いに接続されている。スレーブROM205Aおよび内部アドレスレジスタ203Aは、スレーブCPU204Aと接続されている。
【0021】
シリアル/パラレル変換部201Aは、シリアルデータバス102及びクロック信号線103と接続される。シリアル/パラレル変換部201Aは、マスタノード101から出力されたクロック信号の立上りエッジのタイミングで、マスタノード101から出力されたデータ信号を取り込む。シリアル/パラレル変換部201Aは、取り込んだデータ信号に基づくシリアルデータをパラレルデータに変換して内部バス206Aに出力する。また、シリアル/パラレル変換部201Aは、内部バス206Aを介して受信したパラレルデータをシリアルデータに変換して、当該シリアルデータのデータ信号をシリアルデータバス102へ出力する。
【0022】
受信アドレスレジスタ202Aは、マスタノード101から受信したシリアル情報に含まれる変更アドレスを保持する。スレーブCPU204Aは、スレーブノードA111の全体的な動作制御を司る演算装置である。スレーブROM205Aは、スレーブCPU204Aによる制御に必要な各種情報を格納する。各種情報は、例えば、スレーブノードA111の初期アドレスを含む。初期アドレスは、マスタノード101と初期通信を確立するために用いられる。初期アドレスは、各スレーブノード間で共通であるが、いずれの変更アドレスとも異なる。
【0023】
スレーブノードA111には、電源線121を介してマスタCPU100から電力(Vcc-A)が供給される。マスタCPU100から電力が供給されない(Vccオフ)と、スレーブノードA111において、スレーブCPU204Aやシリアル/パラレル変換部201A等のスレーブノードA111内の各ブロックは動作しない。従って、スレーブノードA111は、シリアルデータバス102及びクロック信号線103から切断された状態となり、マスタノード101と通信不可能な状態となる。この状態は、実質的に、スレーブノードA111がマスタノード101と未接続状態である。
【0024】
マスタCPU100から電力が供給される(Vccオン)と、スレーブCPU204Aが起動すると共に、スレーブROM205Aに格納されている初期スレーブアドレスが内部アドレスレジスタ203Aに転送される。また、シリアル/パラレル変換部201A等のスレーブノードA111内の各ブロックが動作可能となる。従って、スレーブノードA111は、シリアルデータバス102及びクロック信号線103に接続された状態となり、マスタノード101と通信可能な状態となる。この状態は、実質的に、スレーブノードA111がマスタノード101と接続状態である。
【0025】
図3(a)、(b)で、I2C通信方式における通信タイミングについて説明する。
図3(a)は、I2C通信のタイミングチャートである。ここでは、8ビットを1セットとして通信を行う場合について説明する。まず、マスタノード101はスタートコンディション(S)信号を出力する。スタートコンディションとは、マスタノード101がクロック信号線103上のクロック信号論理がHighの時に、シリアルデータバス102上のシリアルデータ論理をLowにした状態のことである。スタートコンディション(S)信号を出力することが、I2C通信開始の合図となる。
【0026】
続いてマスタノード101は、クロック信号線103にクロック信号を出力するのと同期して、シリアルデータバス102に8ビットのデータを出力する。スレーブノードは、当該クロック信号の立上りエッジ時におけるシリアルデータバス102のシリアルデータ論理によって、シリアルデータを確定する。その後、必要なデータを受け取ったことを確認したら、スレーブノードはシリアルデータバス102上にACKを出力する。ここで、ACKを出力するというのは、シリアルデータバス102の信号レベルをLowにすることである。シリアルデータバス102はACK状態となる。
【0027】
一方、必要なデータを受け取ったことを確認できない場合は、スレーブノードはシリアルデータバス102に対して何も制御しない。従って、シリアルデータバス102上はNCK状態となる。
図1に示すようにシリアルデータバス102は抵抗を介してプルアップされていることにより、シリアルデータバス102に対して何も制御しないと、シリアルデータバス102の信号レベルがHighになる。すなわち、シリアルデータバス102はNCK状態となる。
【0028】
図3(b)は、マスタ側からスレーブアドレスを指定してI2C通信を行う場合の通信のタイミングチャートである。まず、マスタノード101はスタートコンディション(S)信号を出力する。マスタノード101は、クロック信号線103にクロック信号を出力するのと同期して、シリアルデータバス102にスレーブアドレス値を上位ビットから7ビット分出力する(A6~A0)。続いて、マスタノード101は、その後の通信でマスタ側が送信となるか受信となるかを指示するためのR/W信号を出力する。マスタ側が送信となる場合、R/W信号はLowであり、マスタ側が受信となる場合、R/W信号はHighである。
【0029】
スレーブノードは、シリアルデータバス102から受け取ったスレーブアドレスが自身のスレーブアドレスと一致すればACKを出力する。例えば、スレーブノードA111は、
図2に示すシリアル/パラレル変換部201Aを介して変換されたパラレルデータのアドレス情報を受信アドレスレジスタ202Aに格納する。そしてスレーブノードA111は、受信アドレスレジスタ202Aに格納したアドレス情報と内部アドレスレジスタ203Aに格納されているアドレス情報とが一致した場合に、ACKを出力する。従って、シリアルデータバス102はACK状態となる。
【0030】
一方、シリアルデータバス102から受け取ったスレーブアドレスデータが内部アドレスレジスタ203Aに格納されているアドレス情報と一致しない場合、スレーブノードA111は、シリアルデータバス102の制御をしない。従って、シリアルデータバス102はNCK状態となる。この後のデータ送信の動作は、上述したスレーブアドレス送信と同様であるため、説明を割愛する。
【0031】
図4、
図5は、通信システム1000により実行されるスレーブアドレス設定処理を示すフローチャートである。この処理は、マスタCPU100と各スレーブCPUとの協働により実現される。そのために、マスタCPU100は、マスタROM104に格納されたプログラムをマスタCPU100に備わるRAMに展開して実行する。これに加えて、各スレーブCPUが、各スレーブROMに格納されたプログラムを各スレーブノードに備わるRAMに展開して実行する。この処理において、マスタCPU100は、本願発明における変更手段としての役割を果たす。
【0032】
この処理は、例えば、マスタCPU100に通信開始の指示が入力されると開始される。この処理の初期状態では、マスタCPU100から全てのスレーブノードへの電力の供給が停止されていることとする。つまり、スレーブノードA111、スレーブノードB112、及びスレーブノードC113が、マスタノード101と未接続状態である。
【0033】
ステップS301では、通信システム1000は、マスタCPU100からスレーブノードA111、スレーブノードB112及びスレーブノードC113の中の1つ、例えば、スレーブノードA111へ電力(Vcc-A)を供給する。
【0034】
ステップS302では、通信システム1000は、電力が供給されたスレーブノードA111の初期設定を行う。具体的には、スレーブノードA111では、スレーブCPU204Aが、スレーブROM205Aに格納された初期アドレスを内部アドレスレジスタ203Aへ転送する。これにより、初期アドレスがスレーブノードA111のスレーブアドレスとして設定される。初期アドレスは、例えば、二進数で表される値である。本実施の形態では、一例として、初期アドレスを「0000100」とする。
【0035】
ステップS303では、通信システム1000は、マスタノード101により、スレーブノードA111のスレーブアドレス「0000100」を指定して、マスタノード101及びスレーブノードA111のマスタスレーブ通信を開始する。そのために、マスタノード101は、スレーブノードA111のアドレス「0000100」を示すデータ信号をシリアルデータバス102へ出力する。スレーブノードA111においては、シリアル/パラレル変換部201Aが上記データ信号を受信すると、上記データ信号が示すアドレス(以下、「指定アドレス」という)を受信アドレスレジスタ202Aに格納される。
【0036】
ステップS304では、通信システム1000は、マスタノード101及びスレーブノードA111のマスタスレーブ通信を確立するための処理を実行する。そのために、スレーブノードA111において、スレーブCPU204Aは、受信アドレスレジスタ202Aに格納された指定アドレスと、内部アドレスレジスタ203Aに保持されたアドレスとを比較する。ここでは、内部アドレスレジスタ203Aに保持されたアドレスは、スレーブノードA111のスレーブアドレスとして設定された初期アドレス「0000100」である。そして、これら2つのアドレスを比較した結果、2つのアドレスが一致した場合、通信システム1000は、マスタノード101及びスレーブノードA111のマスタスレーブ通信を確立する。
【0037】
ステップS305では、通信システム1000は、スレーブノードA111のスレーブアドレスを変更する。具体的には、マスタノード101は、マスタROM104に格納された第1の変更アドレスを、シリアルデータバス102を介してスレーブノードA111へ送信する。ここで、第1の変更アドレスは、初期アドレスと異なるアドレスであって、マスタスレーブ通信におけるスレーブノードA111に固有のアドレス、例えば、「0000101」である。スレーブノードA111は、受信した第1の変更アドレスを内部アドレスレジスタ203Aへ転送する。これにより、スレーブノードA111のスレーブアドレスが、
図6に示すように、初期アドレス「0000100」から変更後のアドレス「0000101」に切り替わる。
【0038】
ステップS306では、通信システム1000は、第1の変更アドレス「0000101」を指定して、マスタノード101及びスレーブノードA111のマスタスレーブ通信を開始する処理を実行する。
【0039】
ステップS307では、通信システム1000は、マスタノード101及びスレーブノードA111のマスタスレーブ通信を確立したか否かを判別する。スレーブノードA111のスレーブアドレスが、初期アドレス「0000100」から第1の変更アドレス「0000101」に正常に切り替わっていれば、通信は確立する。
【0040】
ステップS307の判別の結果、マスタノード101及びスレーブノードA111のマスタスレーブ通信が確立しない場合、スレーブノードA111のスレーブアドレスが初期アドレスから第1の変更アドレスに正常に切り替わっていない。この場合、マスタCPU100は、ステップS303の処理に戻る。一方、マスタノード101及びスレーブノードA111のマスタスレーブ通信が確立した場合、スレーブノードA111のスレーブアドレスが初期アドレスから第1の変更アドレスに正常に切り替わっている。この場合、通信システム1000は、処理をステップS308に進める。
【0041】
ステップS308では、通信システム1000は、スレーブノードA111以外のスレーブノード、例えば、スレーブノードB112のアドレスの設定を開始する。具体的には、通信システム1000は、マスタCPU100からスレーブノードB112へ電力(Vcc-B)を供給する。このとき、スレーブノードA111には電力が供給され続け、スレーブノードA111のスレーブアドレス「000101」の設定は保持される。
【0042】
ステップS309では、通信システム1000は、電力が供給されたスレーブノードB112の初期設定を行う。具体的には、ステップS302と同様に、スレーブノードB112において、スレーブCPUが、スレーブROMに格納された初期アドレスを、スレーブノードB112のスレーブアドレスとして設定する。ここで、スレーブノードB112のスレーブROMに格納された初期アドレスは、スレーブノードA111のスレーブROM205Aに格納された初期アドレスと同じアドレス「0000100」である。
【0043】
ステップS310では、通信システム1000は、マスタノード101により、スレーブノードB112のスレーブアドレス「0000100」を指定して、マスタノード101及びスレーブノードB112のマスタスレーブ通信を開始する。そのために、マスタノード101は、スレーブノードB112のアドレス「0000100」を示すデータ信号をシリアルデータバス102へ出力する。スレーブノードB112においては、受信したデータ信号が示す指定アドレスが受信アドレスレジスタに格納される。
【0044】
ステップS311では、マスタノード101及びスレーブノードB112のマスタスレーブ通信を確立するための処理を実行する。そのために、スレーブノードB112において、スレーブCPUは、受信アドレスレジスタに格納された指定アドレスと、内部アドレスレジスタに保持されたアドレス(初期アドレス)とを比較する。そして、これら2つのアドレスを比較した結果、2つのアドレスが一致した場合、通信システム1000は、マスタノード101及びスレーブノードB112のマスタスレーブ通信を確立する。
【0045】
ステップS312では、通信システム1000は、スレーブノードB112のスレーブアドレスを変更する。具体的には、マスタノード101は、マスタROM104に格納された第2の変更アドレスを、シリアルデータバス102を介してスレーブノードB112へ送信する。ここで、第2の変更アドレスは、初期アドレス及び第1の変更アドレスのいずれとも異なるアドレスであって、マスタスレーブ通信システムにおけるスレーブノードB112に固有のアドレス、例えば、「0000110」である。スレーブノードB112は、受信した第2の変更アドレスを内部アドレスレジスタへ転送する。これにより、スレーブノードB112のスレーブアドレスが、
図6に示すように、初期アドレス「0000100」から第2の変更アドレス「0000110」に切り替わる。
【0046】
ステップS313では、通信システム1000は、第2の変更アドレス「0000110」を指定して、マスタノード101及びスレーブノードB112のマスタスレーブ通信を開始する処理を実行する。
【0047】
ステップS314では、通信システム1000は、マスタノード101及びスレーブノードB112のマスタスレーブ通信が確立したか否かを判別する。スレーブノードB112のスレーブアドレスが、初期アドレス「0000100」から第2の変更アドレス「0000110」に正常に切り替わっていれば、通信は確立する。
【0048】
ステップS314の判別の結果、マスタノード101及びスレーブノードB112のマスタスレーブ通信が確立しない場合、スレーブノードB112のアドレスが初期アドレスから第2の変更アドレスに正常に切り替わっていない。この場合、通信システム1000は、ステップS310の処理に戻る。一方、マスタノード101及びスレーブノードB112のマスタスレーブ通信が確立した場合、スレーブノードB112のアドレスが初期アドレスから第2の変更アドレスに正常に切り替わっている。この場合、通信システム1000は、ステップS315に処理を進める。
【0049】
ステップS315では、通信システム1000は、スレーブノードA111、スレーブノードB112以外のスレーブノードであるスレーブノードC113のアドレスの設定を開始する。具体的には、通信システム1000は、マスタCPU100からスレーブノードC113へ電力(Vcc-C)を供給する。このとき、スレーブノードA111及びスレーブノードB112には電力が供給され続け、スレーブノードA111のアドレス「0000101」の設定及びスレーブノードB112のアドレス「0000110」の設定は保持される。
【0050】
ステップS316では、通信システム1000は、電力が供給されたスレーブノードC113の初期設定を行う。具体的には、ステップS309と同様に、スレーブノードC113において、スレーブCPUが、スレーブROMに格納された初期アドレスを、スレーブノードC113のスレーブアドレスとして設定する。ここで、スレーブノードC113のスレーブROMに格納された初期アドレスは、スレーブノードA111のスレーブROM205Aに格納された初期アドレスと同じアドレス「0000100」である。
【0051】
ステップS317では、通信システム1000は、マスタノード101により、スレーブノードC113のスレーブアドレス「0000100」を指定して、マスタノード101及びスレーブノードC113のマスタスレーブ通信を開始する。そのために、マスタノード101は、スレーブノードC113のアドレス「0000100」を示すデータ信号をシリアルデータバス102へ出力する。スレーブノードC113においては、受信したデータ信号が示す指定アドレスが受信アドレスレジスタに格納される。
【0052】
ステップS318では、マスタノード101及びスレーブノードC113のマスタスレーブ通信を確立するための処理を実行する。そのために、スレーブノードC113において、スレーブCPUは、受信アドレスレジスタに格納された指定アドレスと、内部アドレスレジスタに保持されたアドレス(初期アドレス)とを比較する。そして、これら2つのアドレスを比較した結果、2つのアドレスが一致した場合、通信システム1000は、マスタノード101及びスレーブノードC113のマスタスレーブ通信を確立する。
【0053】
ステップS319では、通信システム1000は、スレーブノードC113のスレーブアドレスを変更する。具体的には、マスタノード101は、マスタROM104に格納された第3の変更アドレスを、シリアルデータバス102を介してスレーブノードC113へ送信する。ここで、第3の変更アドレスは、初期アドレス、第1、第2の変更アドレスのいずれとも異なるアドレスであって、マスタスレーブ通信システムにおけるスレーブノードC113に固有のアドレス、例えば、「0000111」である。スレーブノードC113は、受信した第3の変更アドレスを内部アドレスレジスタへ転送する。これにより、スレーブノードC113のスレーブアドレスが、
図6に示すように、初期アドレス「0000100」から第3の変更アドレス「0000111」に切り替わる。
【0054】
ステップS320では、通信システム1000は、第3の変更アドレス「0000111」を指定して、マスタノード101及びスレーブノードC113のマスタスレーブ通信を開始する処理を実行する。
【0055】
ステップS321では、通信システム1000は、マスタノード101及びスレーブノードC113のマスタスレーブ通信が確立したか否かを判別する。スレーブノードC113のスレーブアドレスが、初期アドレス「0000100」から第3の変更アドレス「0000111」に正常に切り替わっていれば、通信は確立する。
【0056】
ステップS321の判別の結果、マスタノード101及びスレーブノードC113のマスタスレーブ通信が確立しない場合、スレーブノードC113のアドレスが初期アドレスから第3の変更アドレスに正常に切り替わっていない。この場合、通信システム1000は、ステップS317の処理に戻る。一方、マスタノード101及びスレーブノードC113のマスタスレーブ通信が確立した場合、スレーブノードC113のアドレスが初期アドレスから第3の変更アドレスに正常に切り替わっている。この場合、通信システム1000は、
図4,
図5に示す処理を終了する。
【0057】
図7は、状態判別処理を示すフローチャートである。この処理は、マスタCPU100が、マスタROM104に格納されたプログラムをマスタCPU100に備わるRAMに展開して実行することにより実現される。この処理は、スレーブアドレス設定処理(
図4、
図5)の実行後、つまり、各スレーブノードのスレーブアドレスが、それぞれに固有のアドレスに変更された後に実行される。この処理は、スレーブアドレス設定処理の実行直後、あるいはデータ送受信を実施しようとする前に開始される。なお、この処理は、状態判別の指示が入力されると開始されるようにしてもよい。この処理において、マスタCPU100は、本願発明における試行手段、判別手段としての役割を果たす。
【0058】
ところで、各スレーブノードは、電力が供給されなくなったときや、外来ノイズの影響を受けたときに初期状態にリセットされ、何らかの要因で電力が瞬断されたときにもリセットされる。また、各スレーブノードは、リセットされると、自身のスレーブアドレス(内部アドレスレジスタに格納されるもの)が固有のアドレスから初期アドレスに戻る。スレーブノードのリセット状態においてはスレーブアドレスは初期アドレスに維持される。通常、スレーブアドレス設定処理(
図4、
図5)の実行後は、全てのスレーブノードにおいて、スレーブアドレスは初期アドレスから固有のアドレスに変更されている。ところが、スレーブアドレスの変更が適切に実施されなかったり、上記したリセット等の事情があったりした場合は、スレーブアドレスが初期アドレスに戻ってしまっている可能性がある。
【0059】
その一方、スレーブノードの各々との通信の確立を1つ1つ確認するには長い時間を要する。そこで、本実施の形態では、マスタCPU100は、初期アドレスを用いた通信の試みにより、正常でないスレーブノードの存在の有無を調べる。
【0060】
まず、ステップS701では、マスタCPU100は、通信を試みる全てのスレーブノードへ電力を供給すると共に、全てのスレーブノードに対して初期アドレスでの通信を試みる。すなわち、
図8に示すように、マスタCPU100は、シリアルデータバス102に対して初期アドレスを送信する。これにより実質的に、全てのスレーブノード(ここではスレーブノードA111、B112、C113)へ一斉に初期アドレスが送信される。各スレーブノードでは、受信アドレスレジスタに初期アドレスが格納される。
【0061】
ステップS702では、マスタCPU100は、シリアルデータバス102がACK状態となっているか否かを判別する。ここで、各スレーブCPUは、受信アドレスレジスタに格納された初期アドレスと、スレーブアドレス(内部アドレスレジスタに保持されたアドレス)の両者が一致すればシリアルデータバス102へACKを出力する。各スレーブノードが正常に動作していればスレーブアドレスは固有アドレスとなっているのでACKが出力される。しかし、両者が一致しないスレーブノードのスレーブCPUは、シリアルデータバス102へNCKを出力する。従って、スレーブアドレスが初期アドレスとなっているスレーブノードが1つでもあれば、シリアルデータバス102はACK状態となる。しかし、全てのスレーブノードでスレーブアドレスが固有アドレスとなっている場合は、シリアルデータバス102はNCK状態となる。
【0062】
ステップS702の判別の結果、シリアルデータバス102がACK状態となっていない場合は、マスタCPU100は処理をステップS703に進める。従って、シリアルデータバス102がNCK状態となっている場合は、マスタCPU100は処理をステップS703に進める。シリアルデータバス102がACK状態となっていないことは、試行結果が「通信の不成立」を示した場合に該当する。これは、ACKを出力したスレーブノードが1つもなかったことを意味する。従って、ステップS703では、マスタCPU100は、全てのスレーブノードの動作状態が正常であると判別する。その後、マスタCPU100は、
図7に示す処理を終了する。
【0063】
一方、ステップS702の判別の結果、シリアルデータバス102がACK状態となっている場合は、マスタCPU100は処理をステップS704に進める。シリアルデータバス102がACK状態となっていることは、試行結果が「通信の成立」を示した場合に該当する。これは、ACKを出力したスレーブノードが少なくとも1つ存在したことを意味する。そこで、マスタCPU100は、ステップS704で、少なくとも1つのスレーブノードの動作状態が正常でないと判別する。言い換えると、マスタCPU100は、各スレーブノードのうち少なくとも1つは初期状態にリセットされていると判別する。
【0064】
ステップS705では、マスタCPU100は、通信を試みた全てのスレーブノードに対する電力の供給を停止(電力オフ)する。その後、ステップS706で、
図4、
図5に示すスレーブアドレス設定処理と同様の処理を再度実行する。これにより、マスタCPU100は、各スレーブノードの内部アドレスレジスタに、それぞれに固有のアドレスを保持させる。その後、マスタCPU100は、処理をステップS701に戻す。なお、ステップS701へ戻る処理が所定回数繰り返されてもステップS703へ移行しない場合は、エラーを報知すると共に、
図7に示す処理を終了してもよい。
【0065】
このように、マスタCPU100は、シリアルデータバス102がACK状態かどうかを確認することで、少なくとも1つのスレーブノードが異常なのか、それとも全スレーブノードが正常なのか、を判別することができる。
【0066】
本実施の形態によれば、マスタCPU100は、スレーブノードのスレーブアドレスを初期アドレスから固有アドレスへ変更した後に、初期アドレスを用いて、各スレーブノードとの通信を試みる。そして、その試行結果に基づいて、各スレーブノードの動作状態を判別する。すなわち、各スレーブノードに接続されたシリアルデータバス102の状態がACKであるか否かによって、少なくとも1つのスレーブノードが異常なのか、全スレーブノードが正常なのか、を判別することができる。よって、複数のスレーブノードの動作状態を短時間で判別することができる。
【0067】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【符号の説明】
【0068】
100 マスタCPU
101 マスタノード
111 スレーブノードA
112 スレーブノードB
113 スレーブノードC
1000 マスタスレーブ通信システム