(57)【要約】      （修正有）【課題】１つのマスタと複数のスレーブとをデイジーチェーンで接続する伝送路における転送データの衝突を回避できるシリアル通信システムおよび通信設定方法を提供する。【解決手段】シリアル通信システムは、１つのマスタと複数のスレーブとがデイジーチェーンで接続される。マスタのデータ処理部１１は、第１の計測手段として機能するカウンタ１２と第１の設定手段とを有する。第１の計測手段は、各スレーブとの間における遅延を計測する。第１の設定手段は、第１の計測手段により計測した遅延が小さい順に各スレーブに転送番号を設定する。スレーブのデータ処理部２１は、第２の計測手段と第２の設定手段とを有する。第２の計測手段は、他のスレーブとの間の遅延を計測する。第２の設定手段は、第１の設定手段により設定された転送番号と第２の計測手段により計測する他のスレーブとの間の遅延とに基づいてデータの転送タイミングを設定する。【選択図】図１
2017005364.tif 000002
【特許請求の範囲】
【請求項１】
１つのマスタと複数のスレーブとがデイジーチェーンで接続されるシリアル通信システムにおいて、
前記マスタは、
各スレーブとの間における遅延を計測する第１の計測手段と、
前記第１の計測手段により計測した遅延が小さい順に各スレーブに転送番号を設定する第１の設定手段と、を有し、
前記各スレーブは、
他のスレーブとの間の遅延を計測する第２の計測手段と、
前記第１の設定手段により設定された転送番号と前記第２の計測手段により計測する他のスレーブとの間の遅延とに基づいて、データの転送タイミングを設定する第２の設定手段と、
を有するシリアル通信システム。
【請求項２】
前記マスタの前記第１の計測手段は、計測対象のスレーブに対してコマンドデータを送信してから前記計測対象のスレーブからレスポンスデータを受信するまでのカウント値を遅延として計測する、
前記請求項１に記載のシリアル通信システム。
【請求項３】
前記マスタは、さらに、前記第１の計測手段により計測するスレーブとの間の遅延が規定値以上である場合に、当該スレーブの接続エラーを判断する判断手段を有する、
前記請求項１又は２の何れかに記載のシリアル通信システム。
【請求項４】
前記各スレーブは、直前の転送番号のスレーブからのレスポンスデータを受信するタイミングに基づいて当該スレーブの入力データ転送タイミングを設定する、
前記請求項１乃至３の何れか１項に記載のシリアル通信システム。
【請求項５】
前記各スレーブは、当該シリアル通信システムにおいて転送番号が最後のスレーブからのレスポンスデータを受信するタイミングに基づいて当該スレーブのレスポンスデータ転送タイミングを設定する設定手段を有する、
前記請求項１乃至４の何れか１項に記載のシリアル通信システム。
【請求項６】
１つのマスタと複数のスレーブとがデイジーチェーンで接続されるシリアル通信システムに用いられる通信設定方法であって、
前記マスタが各スレーブとの間における遅延を計測し、
前記計測した前記マスタと前記各スレーブとの間の遅延が小さい順に各スレーブに転送番号を設定し、
前記各スレーブが他のスレーブとの間の遅延を計測し、
前記設定された転送番号と前記計測された他のスレーブとの間の遅延とに基づいて、データの転送タイミングを設定する、
通信設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、シリアル通信システムおよび通信設定方法に関する。
【背景技術】
【０００２】
１つのマスタと複数のスレーブがデイジーチェーンで接続されるシリアル通信システムは、マスタと各スレーブ間のデータ転送が伝送路によって遅延する。シリアル通信システムにおいては、データ転送のタイミングの設定によっては伝送路の遅延によるデータが衝突する発生する可能性がある。図１５は、シリアル通信システムにおいて転送データが衝突する例を示す図である。図１５に示すように、マスタから最も遠方にあるスレーブまでの伝送距離が長く、マスタ近傍のスレーブからのレスポンスデータとマスタ遠方にあるスレーブからの転送データが衝突している。シリアル通信システムでは、データの衝突を回避することを前提としたデータ転送のタイミングの設定を容易に行えるものが要望されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２１８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の課題を解決するために、１つのマスタと複数のスレーブとをデイジーチェーンで接続する伝送路における転送データの衝突を回避できるシリアル通信システムおよび通信設定方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、シリアル通信システムは、１つのマスタと複数のスレーブとがデイジーチェーンで接続される。マスタは、第１の計測手段と第１の設定手段とを有する。第１の計測手段は、各スレーブとの間における遅延を計測する。第１の設定手段は、第１の計測手段により計測した遅延が小さい順に各スレーブに転送番号を設定する。各スレーブは、第２の計測手段と第２の設定手段とを有する。第２の計測手段は、他のスレーブとの間の遅延を計測する。第２の設定手段は、第１の設定手段により設定された転送番号と第２の計測手段により計測する他のスレーブとの間の遅延とに基づいてデータの転送タイミングを設定する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るシリアル通信システムの構成例を示す図である。
【図２】図２は、実施形態に係るシリアル通信システムのマスタにおける初期化動作全体の流れを説明するためのフローチャートである。
【図３】図３は、実施形態に係るシリアル通信システムの各スレーブにおける初期化動作の流れを説明するためのフローチャートである。
【図４】図４は、実施形態に係るシリアル通信システムのマスタにおける第１の初期化動作の流れを説明するためのフローチャートである。
【図５】図５は、実施形態に係るシリアル通信システムの各スレーブにおける第１の初期動作の流れを説明するためのフローチャートである。
【図６】図６は、実施形態に係るシリアル通信システムのマスタにおける第２の初期化動作の流れを説明するためのフローチャートである。
【図７】図７は、実施形態に係るシリアル通信システムの各スレーブにおける第２の初期化動作の流れを説明するためのフローチャートである。
【図８】図８は、実施形態に係るシリアル通信システムの１つの構成例を示す図である。
【図９】図９は、実施形態に係るシリアル通信システムにおいてマスタから各スレーブへ転送するコマンドデータのパケットの構成例を示す。
【図１０】図１０は、実施形態に係るシリアル通信システムにおいて各スレーブからマスタへ転送するレスポンスデータのパケットの構成例を示す。
【図１１】図１１は、実施形態に係るシリアル通信システムにおいて転送番号１のスレーブと転送番号２のスレーブとが入力データ転送タイミングを設定する様子を示すチャートである。
【図１２】図１２は、実施形態に係るシリアル通信システムにおいて、転送番号３のスレーブが入力データ転送タイミングを設定する様子を示すチャートである。
【図１３】図１３は、実施形態に係るシリアル通信システムの各スレーブがレスポンスデータ転送タイミングを設定する様子を示すチャートである。
【図１４】図１４は、実施形態に係るシリアル通信システムの各スレーブがレスポンスデータ転送タイミングを設定する様子を示すチャートである。
【図１５】図１５は、従来のシリアル通信システムにおける転送データの衝突の様子を示す図である。
【発明を実施するための形態】
【０００７】
以下、実施形態について図面を参照して説明する。  
図１は、本実施形態に係るシリアル通信システムの構成例を示す図である。  
図１に示すように、シリアル通信システムは、１つのマスタＭと複数のスレーブＳ（Ｓａ、Ｓｂ、…、Ｓｐ）とで構成される。１つのマスタＭと複数のスレーブＳとは、デイジーチェーンで接続される。システム通信システムは、所定の最大個数（図１に示す構成では、１６個）までのスレーブＳが接続可能である。各スレーブＳは、ユニークなスレーブ番号が付与される。マスタＭは、各スレーブＳをスレーブ番号で指定できる。
【０００８】
マスタＭと各スレーブＳとは、出力用伝送路３ａと入力用伝送路３ｂとで接続される。出力用伝送路３ａは、マスタＭと各スレーブＳとがそれぞれデータを入出力できる半二重通信が可能な伝送路である。入力用伝送路３ｂは、各スレーブＳからマスタＭへのデータ転送のみが可能となる。出力用伝送路３ａと入力用伝送路３ｂとは、マスタＭと各スレーブＳとをデイジーチェーンで接続するものであれば良く、例えば、通信ケーブルにより実現される。
【０００９】
マスタＭは、データ処理部１１とカウンタ１２とを有する。データ処理部１１は、種々のデータ処理を行うものであり、第１の設定手段および判断手段として機能する。データ処理部１１は、ＣＰＵなどのプロセッサおよび各種のメモリ（ＲＯＭ、ＲＡＭ、書換え可能な不揮発性メモリ）を有する。データ処理部１１において、プロセッサが内部メモリに記憶したプログラムを実行することにより種々の処理を実現する。例えば、データ処理部１１は、データの処理としてシリアル／パラレル変換処理などを行う。また、データ処理部１１は、当該マスタに接続されるスレーブの総数の初期値を内部メモリに記憶する。
【００１０】
また、データ処理部１１は、設定値などを記憶するメモリ１１ａを有する。例えば、メモリ１１ａは、当該システムにおけるスレーブの総数を示す初期値と記憶する。また、メモリ１１ａは、後述する初期化動作によって決定する各スレーブＳに付与する転送番号を記憶する。また、メモリ１１ａは、各スレーブＳについて、実際にコマンドを送信してから当該コマンドのレスポンスを受信するまでのカウント値（遅延）を記憶する。また、メモリ１１ａは、各スレーブＳに、コマンドを送信してから当該コマンドのレスポンスを受信するまでのカウント値に対する許容値としての規定値を記憶する。
【００１１】
カウンタ１２は、カウント値を計数する。カウンタ１２は、データ処理部１１により動作が制御され、第１の計測手段として機能する。例えば、カウンタ１２は、データ処理部１１の制御に従ってカウントを開始する。また、カウンタ１２は、データ処理部１１の制御によってカウント値がリセットされる。
【００１２】
各スレーブＳは、データ処理部２１、番号スイッチ２２、入出力回路２３、およびカウンタ２４を有する。データ処理部２１は、種々の処理を実行するものであり、第２の設定手段として機能する。データ処理部２１は、ＣＰＵなどのプロセッサおよび各種のメモリ（ＲＯＭ、ＲＡＭ、書換え可能な不揮発性メモリなど）を有する。データ処理部２１において、プロセッサが内部のメモリに記憶したプログラムを実行することにより種々の処理を実現する。例えば、データ処理部２１は、データの処理としてシリアル／パラレル変換処理などを行う。
【００１３】
また、データ処理部２１は、設定値などを記憶するメモリ２１ａを有する。また、データ処理部２１は、処理機能の１つとして、タイミング生成部２５を有する。タイミング生成部２５は、プロセッサがプログラムを実行することにより実現する。例えば、タイミング生成部２５は、カウンタ２４が計数するカウンタ値を元に当該スレーブＳがデータ転送を行うタイミングを決定する。また、タイミング生成部２５は、データを転送するタイミングを示す設定値をメモリ２１ａに記憶する。
【００１４】
例えば、タイミング生成部２５は、入力データの転送タイミングを示す入力データ転送タイミング、及び、レスポンスデータの転送タイミングを示すレスポンスデータ転送タイミングをメモリ２１ａに記憶する。入力データ転送タイミング及びレスポンスデータ転送タイミングは、例えば、転送データのパケットにおけるスタートマークを検知した際に、カウンタ２４が計数を開始するカウント値に対する設定値として設定される。
【００１５】
番号スイッチ２２は、スレーブを特定するためのスレーブ番号を決定するスイッチである。番号スイッチ２２は、当該システム内で同一の番号を取らなければ（ユニークな番号であれば）良く、任意のスレーブ番号を設定できる。図１では、各スレーブＳａ、Ｓｂ、…、Ｓｐに対して、スレーブ番号１、２、…、１６を付与した例を示している。
【００１６】
入出力回路２３は、モータ或いはセンサなどを駆動するための回路である。例えば、駆動装置として機能するスレーブは、モータなどの駆動源を駆動させるための回路として入出力回路を有する。また、物体の状態などを検知する検知装置として機能するスレーブは、物体の状態などを検知するためのセンサを駆動する回路としての入出力回路２３を有する。
【００１７】
カウンタ２４は、カウント値を計数する。カウンタ２４は、データ処理部２１により動作が制御され、第２の計測手段として機能する。例えば、カウンタ２４は、データ処理部２１の制御に応じて、カウントを開始する。また、カウンタ２４は、データ処理部２１の制御によりカウント値がリセットされる。
【００１８】
次に、本実施形態に係るシステム通信システムの動作について説明する。  
本実施形態に係るシリアル通信システムは、電源が投入されると、初期化動作する。シリアル通信システムは、初期化動作として、第１の初期化動作と第２の初期化動作とを実行する。  
第１の初期化動作は、各スレーブに転送番号を割り当てる処理である。第１の初期化動作は、マスタＭと各スレーブＳとの間の伝送路による遅延時間を計測（カウント）し、計測した遅延時間に基づいて各スレーブに転送番号を割り当てる。第２の初期化動作は、各スレーブがデータの転送タイミングを設定する処理である。第２の初期化動作は、各スレーブ間の遅延時間を計測し、計測した各スレーブ間の遅延時間に基づいて各スレーブがデータの転送タイミングを設定する。
【００１９】
図２は、実運用としてのマスタＭにおけるキャリブレーション動作（初期化動作）全体の流れを説明するためのフローチャートである。図３は、実運用としての各スレーブＳにおける初期化動作の流れを説明するためのフローチャートである。  
マスタＭのデータ処理部１１は、電源が投入されると（Ｓ１０）、第１の初期化動作を開始、各スレーブＳに対して第１の初期化動作の開始を通知する（Ｓ１１）。
【００２０】
第１の初期化動作の開始を通知した場合、データ処理部１１は、第１の初期化動作を実行する（Ｓ１２）。第１の初期化動作の実行に係るマスタＭの動作については、後で詳細に説明する。データ処理部１１は、第１の初期化動作において、エラーを判断した場合（Ｓ１３、ＮＯ）、初期化動作を終了する。また、第１の初期化動作が正常に終了した場合（Ｓ１３、ＹＥＳ）、データ処理部１１は、各スレーブＳに対して第１の初期化動作の終了を通知する（Ｓ１４）。
【００２１】
第１の初期化動作が終了した場合、データ処理部１１は、各スレーブに対して第２の初期化動作の開始を通知する（Ｓ１５）。第２の初期化動作の開始を通知した後、データ処理部１１は、第２の初期化動作を実行する（Ｓ１６）。なお、第２の初期化動作の実行に係るマスタＭの動作については、後で詳細に説明する。第２の初期化動作が正常に終了した場合、データ処理部１１は、各スレーブに対して第２の初期化動作の終了を通知し（Ｓ１７）、一連の初期化動作を終了する。
【００２２】
また、各スレーブＳは、マスタＭからの指示に応じて動作する。まず、各スレーブＳのデータ処理部２１は、電源が投入されると（Ｓ２０）、マスタＭからのデータが受信可能な状態となる。データ処理部２１は、マスタＭからの第１の初期化動作の開始の通知を受信すると（Ｓ２１、ＹＥＳ）、第１の初期化動作を実行する（Ｓ２２）。第１の初期化動作の実行に係る各スレーブＳの動作については、後で詳細に説明する。第１の初期化動作を実行した後、データ処理部２１は、マスタＭからの第１の初期化動作の終了の通知を受信すると（Ｓ２３、ＹＥＳ）、第１の初期化動作を終了する。
【００２３】
第１の初期化動作を終了した場合、データ処理部２１は、マスタＭからの第２の初期化動作の開始の通知を受信すると（Ｓ２４、ＹＥＳ）、第２の初期化動作を実行する（Ｓ２５）。第２の初期化動作の実行に係る各スレーブＳの動作については、後で詳細に説明する。第２の初期化動作を実行した後、データ処理部２１は、マスタＭからの第２の初期化動作の終了の通知を受信すると（Ｓ２６、ＹＥＳ）、第１の初期化動作を終了する。
【００２４】
次に、本実施形態に係るシリアル通信システムにおける第１の初期化動作について説明する。  
図４は、マスタＭにおける第１の初期化動作の流れを説明するためのフローチャートである。  
以下の説明では、当該システムにおけるスレーブの総数がＮ個であり、各スレーブＳには、それぞれ１〜Ｎのスレーブ番号が与えられているものとする。また、マスタＭは、スレーブの総数Ｎをデータ処理部１１のメモリ１１ａに記憶しているものとする。なお、スレーブ番号がｎのスレーブＳは、スレーブ［ｎ］とも記載するものとする。
【００２５】
第１の初期動作において、マスタＭのデータ処理部１１は、まず、変数ｎを初期値に設定（ｎ＝１）する（Ｓ１１０）。変数ｎを初期化した後、データ処理部１１は、スレーブ番号がｎのスレーブ［ｎ］に対するテストコマンドデータ１を出力用伝送路３ａにより送信する（Ｓ１１１）。スレーブ［ｎ］に対するテストコマンドデータ１は、スレーブ番号ｎをアドレスとするコマンドデータである。また、データ処理部１１は、テストコマンドデータ１を送信するタイミングで、カウンタ１２によるカウントを開始する（Ｓ１１２）。これにより、カウンタ１２は、テストコマンドデータ１を送信してからの経過時間を示すカウント値を計数する。
【００２６】
テストコマンドデータ１を送信した後、データ処理部１１は、テストコマンドデータ１に対するスレーブ［ｎ］からのレスポンス（テストレスポンスデータ１）の受信待ちとなる（Ｓ１１３）。テストレスポンスデータ１の受信待ち状態において、データ処理部１１は、カウンタ１２のカウント値が規定値以上となったか否かを監視する（Ｓ１１４）。つまり、データ処理部１１は、カウンタ１２のカウント値が規定値以上になるまで、テストレスポンスデータ１の受信待ちとする。
【００２７】
また、テストレスポンスデータ１を受信する前にカウント値が規定値以上となった場合、つまり、規定時間以上待ってもスレーブ［ｎ］からのテストレスポンスデータ１を受信できない場合（Ｓ１１４、ＹＥＳ）、データ処理部１１は、カウンタ１２をリセットし（Ｓ１１５）、再びスレーブ［ｎ］にテストコマンドデータ１´を送信する（Ｓ１１６）。また、テストコマンドデータ１´を送信する際、データ処理部１１は、リセットしたカウンタ１２によるカウントを開始する（Ｓ１１７）。これにより、カウンタ１２は、テストコマンドデータ１´を送信してからの経過時間を示すカウント値を計数する。
【００２８】
テストコマンドデータ１´を送信した後、データ処理部１１は、スレーブ［ｎ］からのレスポンスデータ（テストレスポンスデータ１又はテストレスポンスデータ１´）の受信待ち状態となる（Ｓ１１８、Ｓ１１９）。スレーブ［ｎ］からのレスポンスデータの受信待ち状態において、データ処理部１１は、カウンタ１２のカウント値が規定値以上となったか否かを監視する（Ｓ１２０）。つまり、データ処理部１１は、カウンタ１２のカウント値が規定値以上になるまで、スレーブ［ｎ］からのレスポンスデータの受信待ちとする。
【００２９】
テストコマンドデータ１´を送信した後に先に送信したテストコマンドデータ１に対するテストレスポンスデータ１を受信した場合（Ｓ１１８、ＮＯ）、データ処理部１１は、テストレスポンスデータ１を受信するまでのカウント値が規定値を越えているため、エラーと判断し（Ｓ１２１）、初期化動作を終了する。テストコマンドデータ１´を送信した後にテストレスポンスデータ１を受信した場合、テストコマンドデータ１を送信してから規定値以上の時間が経過しているため、データ処理部１１は、マスタＭとスレーブＳ［ｎ］との間の伝送路が規定時間内にレスポンスデータを受信できないほど長い（伝送路が長すぎる）と判断する。この場合、データ処理部１１は、初期化動作を中止するとともに、伝送路が長すぎるためのエラーである旨を外部へ報知するようにしても良い。
【００３０】
また、テストレスポンスデータ１´を受信する前にカウンタ１２のカウント値が規定値以上となった場合、つまり、テストコマンドデータ１´を送信してから規定時間以上待ってもテストレスポンスデータ１´を受信できない場合（Ｓ１２０、ＹＥＳ１）、データ処理部１１は、エラーと判断し（Ｓ１２２）、第１の初期化動作を終了する。つまり、テストレスポンスデータ１及びテストレスポンスデータ１´が規定時間内に受信できない場合、データ処理部１１は、スレーブ［ｎ］の故障或いは接続エラーによって、スレーブ［ｎ］からのレスポンスデータが受信できない状態であると判断とする。この場合、データ処理部１１は、初期化動作を中止するとともに、スレーブ［ｎ］の故障或いは接続エラーである旨を外部へ報知するようにしても良い。
【００３１】
また、カウンタ１２のカウント値が規定値以上となる前にスレーブ［ｎ］からのテストレスポンスデータ１を受信した場合（Ｓ１１３、ＮＯ）、又は、カウンタ１２のカウント値が規定値以上となる前にスレーブ［ｎ］からテストレスポンスデータ１´を受信した場合（Ｓ１１９、ＮＯ）、データ処理部１１は、テストレスポンスデータ１、又は、テストレスポンスデータ１´を受信した時点でのカウンタ１２のカウント値を取得する（Ｓ１２３）。データ処理部１１は、取得したカウント値をスレーブ［ｎ］に対応するカウント値［ｎ］としてメモリ１１ａに記憶する（Ｓ１２４）。これにより、データ処理部１１は、ｎ個のスレーブに対応するｎ個のカウンタ値（カウント値［１］〜［ｎ］）をメモリ１１ａに記憶する。例えば、データ処理部１１は、ｎ個のカウント値を小さい順に並び替えてメモリ１１ａに記憶する。
【００３２】
カウンタ値［ｎ］をメモリ１１ａに記憶すると、データ処理部１１は、ｎが最大値Ｎ（スレーブ総数）であるか否かを判断する（Ｓ１２５）。ｎがスレーブ総数Ｎでないと判断した場合（Ｓ１２５、ＮＯ）、データ処理部１１は、ｎをインクリメントすることによりｎ＝ｎ＋１とし（Ｓ１２６）、カウンタ１２をリセットする（Ｓ１２７）。カウンタ１２をリセットすると、データ処理部１１は、Ｓ１１１へ戻り、上述の処理を実行する。すなわち、データ処理部１１は、上記Ｓ１１１〜Ｓ１２７の処理をｎがスレーブ総数Ｎとなるまで繰り返し実行する。これにより、データ処理部１１は、Ｎ個の各スレーブに対して、マスタＭがコマンドを送信してからレスポンスを受信するまでのカウント値（カウンタ値［１］〜［Ｎ］）を計測できる。
【００３３】
ｎがスレーブ総数Ｎであると判断した場合（Ｓ１２５、ＹＥＳ１）、データ処理部１１は、Ｎ個のカウント値に基づいてＮ個の各スレーブに対する転送番号を決定する（Ｓ１２８）。データ処理部１１は、カウンタ値が小さい順に各スレーブに対する転送番号を決定する。すなわち、カウント値［ｎ］は、マスタＭとスレーブ［ｎ］との間の伝送時間を示し、カウンタ値が小さければ小さいほど、スレーブ［ｎ］がマスタＭに近いことを示す。つまり、小さい順に並べたＮ個のカウンタ値は、各カウンタ値に対応するＮ個のスレーブがマスタＭから近い順番を示す。従って、データ処理部１１は、Ｎ個のカウント値が小さい順にＮ個のスレーブに転送番号を付与することにより、マスタから近い順番で各スレーブに転送番号を付与する。
【００３４】
各スレーブに対する転送番号を決定すると、データ処理部１１は、各スレーブに対して転送番号を設定する（Ｓ１２９）。例えば、データ処理部１１は、決定した転送番号の順に、各スレーブに転送番号を与える。スレーブ番号１のスレーブ[１]が転送番号１である場合、データ処理部１１は、スレーブ［１］に対して（スレーブ番号１をアドレスとする）転送番号１を転送する。これに対して、スレーブ［１］は、自身の転送番号１を設定する。次に、スレーブ番号３のスレーブ[３]が転送番号２である場合、データ処理部１１は、スレーブ［３］に対して（スレーブ番号３をアドレスとする）転送番号２を転送する。これにより、スレーブ［３］は、自身の転送番号２を設定する。以上のような処理を各スレーブに対して実行することにより、データ処理部１１は、実測する遅延時間に基づいて各スレーブに転送番号を設定する。
【００３５】
次に、第１の初期動作における各スレーブＳの動作について説明する。  
図５は、各スレーブＳにおける第１の初期動作の流れを説明するためのフローチャートである。  
各スレーブＳのデータ処理部２１は、マスタＭからの第１の初期化動作の開始指示に応じて第１の初期化動作を開始する。第１の初期化動作において、各スレーブＳのデータ処理部２１は、出力用伝送路３ａによりマスタＭからのデータが受信可能な状態となっている。各スレーブＳのデータ処理部２１は、テストコマンドデータ１を受信すると（Ｓ１３０、ＹＥＳ１）、自身宛のテストコマンドデータ１であるかを判断する（Ｓ１３１）。
【００３６】
例えば、データ処理部２１は、スレーブ［ｎ］をアドレスとするテストコマンドデータ１を受信すると、自身のスレーブ番号が「ｎ」であるかを判断する。自身宛のテストコマンドデータ１を受信した場合（Ｓ１３１、ＹＥＳ１）、データ処理部２１は、受信したテストコマンドデータ１に対するテストレスポンスデータ１を入力用伝送路３ｂにより送信する（Ｓ１３２）。
【００３７】
また、各スレーブＳのデータ処理部２１は、テストコマンドデータ１´を受信した場合（Ｓ１３３、ＹＥＳ１）、受信したテストコマンドデータ１´が自身宛であるかを判断する（Ｓ１３４）。例えば、データ処理部２１は、スレーブ［ｎ］をアドレスとするテストコマンドデータ１´を受信した場合、自身のスレーブ番号が「ｎ」であるかを判断する。自身宛のテストコマンドデータ１´を受信した場合（Ｓ１３４、ＹＥＳ１）、データ処理部２１は、受信したテストコマンドデータ１´に対するテストレスポンスデータ１´を入力用伝送路３ｂにより送信する（Ｓ１３５）。
【００３８】
また、各スレーブＳのデータ処理部２１は、転送番号を受信した場合（Ｓ１３６、ＹＥＳ１）、受信した転送番号が自身宛であるかを判断する（Ｓ１３７）。例えば、データ処理部２１は、スレーブ［ｎ］をアドレスとする転送番号を受信した場合、自身のスレーブ番号が「ｎ」であるかを判断する。自身宛の転送番号を受信した場合（Ｓ１３７、ＹＥＳ１）、データ処理部２１は、受信した転送番号をメモリ２１ａに記憶することにより、自身の転送番号を設定する（Ｓ１３８）。また、データ処理部２１は、第１の初期化動作の終了通知を受信した場合（Ｓ１３９、ＹＥＳ１）、第１の初期化動作を終了する。
【００３９】
上記のような、第１の初期化動作によれば、マスタは、実施にコマンドを送信してからレスポンスを受信するまでの時間（実測する時間）に従って、各スレーブに対する転送番号を決定できる。このため、本システムでは、マスタと各スレーブとの間で、実際に生じる遅延時間に基づく転送番号を設定できる。この結果として、各スレーブのスレーブ番号と転送番号とが一致するように手作業でスレーブを設定する必要がなく、スレーブを追加したり、付け替えたりした場合であっても最適な転送番号の設定が容易に行える。
【００４０】
次に、本実施形態に係るシリアル通信システムにおける第２の初期化動作について説明する。  
図６は、マスタＭにおける第２の初期化動作の流れを説明するためのフローチャートである。  
以下の説明では、当該システムにおけるスレーブの総数がＮ個であり、各スレーブＳには、それぞれ１〜Ｎのスレーブ番号が与えられているものとする。また、マスタＭは、スレーブの総数Ｎをデータ処理部１１のメモリ１１ａに記憶しているものとする。なお、スレーブ番号がｎのスレーブＳは、スレーブ［ｎ］とも記載するものとする。
【００４１】
第２の初期動作において、マスタＭのデータ処理部１１は、まず、変数ｍを初期値（ｍ＝１）とする（Ｓ２１０）。変数ｍを初期化した後、データ処理部１１は、スレーブ番号がｍのスレーブに対するテストコマンドデータ２を出力用伝送路３ａにより送信する（Ｓ２１１）。例えば、転送番号ｍのスレーブＳがスレーブ番号ｎである場合、データ処理部１１は、スレーブ［ｎ］をアドレスとするテストコマンドデータ２を送信する。
【００４２】
テストコマンドデータ２を送信した後、データ処理部１１は、転送番号がｍのスレーブからのテストコマンドデータ２に対するテストレスポンスデータ２を受信待ちとなる（Ｓ２１２）。転送番号ｍのスレーブからテストレスポンスデータ２を受信すると（Ｓ２１２、ＹＥＳ）、データ処理部１１は、変数ｍが最大値（スレーブ総数Ｎ）であるか否かを判断する（Ｓ２１３）。ｍが最大値でないと判断した場合（Ｓ２１３、ＮＯ）、データ処理部１１は、変数ｍをインクリメント（ｍ＝ｍ＋１）とし（Ｓ２１４）、Ｓ２１１から処理を再度実行する。  
また、ｍが最大値Ｎであると判断した場合（Ｓ２１３、ＹＥＳ）、データ処理部１１は、第２の初期化動作を終了する。
【００４３】
図７は、各スレーブＳにおける第２の初期化動作の流れを説明するためのフローチャートである。  
各スレーブＳのデータ処理部２１は、マスタＭからの第２の初期化動作の開始指示に応じて第２の初期化動作を開始する。第２の初期化動作において、各スレーブＳのデータ処理部２１は、マスタＭからのデータが受信可能な状態となっている。各スレーブＳのデータ処理部２１は、テストコマンドデータ２を受信すると（Ｓ２２０、ＹＥＳ）、カウンタ２４によるカウントを開始とともに（Ｓ２２１）、受信したテストコマンドデータ２が自身宛であるかを判断する（Ｓ２２２）。例えば、データ処理部２１は、スレーブ［ｎ］をアドレスとするテストコマンドデータ２を受信すると、自身のスレーブ番号が「ｎ」であるかを判断する。
【００４４】
受信したテストコマンドデータ１が自身宛であると判断した場合（Ｓ２２２、ＹＥＳ）、データ処理部２１は、自身の転送番号が「１」であるか否か判断する（Ｓ２２３）。自身の転送番号が「１」であると判断した場合（Ｓ２２３、ＹＥＳ）、入力用伝送路３ｂにより受信したテストコマンドデータ２に対応するテストレスポンスデータ２を送信する（Ｓ２２４）。テストレスポンスデータ２を送信する際、データ処理部２１は、テストレスポンスデータ２を送信した時点でのカウンタ２４のカウント値を自身の入力データ転送タイミングとしてメモリ２１ａに記憶する（Ｓ２２５）。
【００４５】
また、自身の転送番号が「１」でないと判断した場合（Ｓ２２３、ＮＯ）、データ処理部２１は、既にメモリ２１ａに記憶されている入力データ転送タイミングに従ってテストレスポンスデータ２を出力用伝送路３ａに送信する（Ｓ２２６）。上述したように、マスタＭは、テストコマンドデータ２を転送番号が小さい順に出力する。このため、転送番号が「１」でないスレーブは、入力データ転送タイミングが既にメモリ２１ａに記憶されている。従って、データ処理部２１は、入力データ転送タイミングでテストレスポンスデータ２を出力できる。すなわち、データ処理部２１は、自身の転送番号が「１」でないと判断した場合、カウンタ２４が計数するカウンタ値が自身のメモリ２１ａに記憶している入力データ転送タイミングになった時点で、テストレスポンスデータ２を出力用伝送路３ａに送信する。
【００４６】
テストレスポンスデータ２を送信すると、データ処理部２１は、転送番号ｍが最大値（スレーブ総数Ｎ）であるか否かを判断する（Ｓ２２７）。転送番号ｍが最大値でないと判断した場合（Ｓ２２７、ＮＯ）、データ処理部２１は、Ｓ２２０へ戻り、次のテストコマンドデータ２の受信待ちとなる。
【００４７】
また、転送番号ｍが最大値であると判断した場合（Ｓ２２７、ＹＥＳ）、データ処理部２１は、テストレスポンスデータ２の送信完了時のカウント値に「１」を加えた値（カウント値＋１）をレスポンスデータ転送タイミングとしてメモリ２１ａに記憶する（Ｓ２２８）。レスポンスデータ転送タイミングを記憶した後、データ処理部２１は、Ｓ２２０へ戻り、次のデータの受信待ちとなる。この後、マスタＭから終了通知を受信すると（Ｓ２３６、ＹＥＳ）、データ処理部２１は、第２の初期化動作を終了する。
【００４８】
また、受信したテストコマンドデータ２が自身宛でないと判断した場合（Ｓ２２２、ＮＯ）、データ処理部２１は、転送番号ｍのスレーブからのテストレスポンスデータ２の受信待ちとなる（Ｓ２３１）。転送番号ｍのスレーブからのテストレスポンスデータ２を受信すると（Ｓ２３１、ＹＥＳ）、データ処理部２１は、自身の転送番号が「ｍ＋１」であるかを判断する（Ｓ２３２）。
【００４９】
自身の転送番号が「ｍ＋１」であると判断した場合（Ｓ２３２、ＹＥＳ）、データ処理部２１は、転送番号ｍのスレーブからのテストレスポンスデータ２の受信完了時のカウント値に「１」を加えた値（カウント値＋１）を入力データ転送タイミングとしてメモリ２１ａに記憶する（Ｓ２３３）。入力データ転送タイミングを記憶した後、データ処理部２１は、Ｓ２２０へ戻り、次のテストコマンドデータ２の受信待ちとなる。
【００５０】
また、自身の転送番号が「ｍ＋１」でないと判断した場合（Ｓ２３２、ＮＯ）、データ処理部２１は、転送番号ｍが最大値（スレーブ総数Ｎ）であるか否かを判断する（Ｓ２３４）。転送番号ｍが最大値でないと判断した場合（Ｓ２３４、ＮＯ）、データ処理部２１は、Ｓ２２０へ戻り、次のテストコマンドデータ２の受信待ちとなる。
【００５１】
また、転送番号ｍが最大値であると判断した場合（Ｓ２３４、ＹＥＳ）、データ処理部２１は、転送番号ｍのスレーブからのテストレスポンスデータ２の受信完了時のカウント値に「１」を加えた値（カウント値＋１）をレスポンスデータ転送タイミングとしてメモリ２１ａに記憶する（Ｓ２３５）。レスポンスデータ転送タイミングを記憶した後、データ処理部２１は、Ｓ２２０へ戻り、次のデータの受信待ちとなる。この後、マスタＭから終了通知を受信すると（Ｓ２３６、ＹＥＳ）、データ処理部２１は、第２の初期化動作を終了する。
【００５２】
上記のような第２の初期化動作によれば、各スレーブは、実際に各スレーブ間の遅延を計測し、計測した遅延と各スレーブの転送番号とに応じて入力データ転送タイミングとレスポンスデータ転送タイミングとを設定できる。各スレーブが、各スレーブ間の遅延に応じて、転送データの衝突が起こらず、かつ、マージンを最小とするデータ転送のタイミングを設定できる。
【００５３】
次に、シリアル通信システムの具体例を挙げて、キャリブレーション動作（第１の初期化動作及び第２の初期化動作）について説明する。  
図８は、１つのマスタＭと５つのスレーブＳ１、Ｓ３、Ｓ４、Ｓ２、Ｓ５とで構成するシリアル通信システムの構成例である。  
図８に示す構成例において、マスタＭのメモリ１１ａは、当該システムにおけるスレーブ総数の初期値として「５」を記憶する。また、スレーブＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５は、それぞれスレーブ番号が１、２、３、４、５と割り振られているものとする。ただし、５個のスレーブＳ１〜Ｓ５は、スレーブＳ１、Ｓ３、Ｓ４、Ｓ２、Ｓ５の順に、マスタＭに電気的に近いものとする。
【００５４】
マスタＭは、電源が投入されると、データ処理部１１により第１の初期化動作と第２の初期化動作とを実行する。  
まず、第１の初期化動作として、マスタＭのデータ処理部１１は、スレーブ番号１のスレーブＳ１に対し、スレーブ番号１をアドレスとするテストコマンドデータ１を転送する。マスタＭのデータ処理部１１は、テストコマンドデータ１を転送すると同時にカウンタ１２によるカウントを開始する。
【００５５】
これに対して、スレーブＳ１のデータ処理部２１は、テストコマンドデータ１を受信すると、テストレスポンスデータ１をマスタＭ宛に転送する。  
マスタＭのデータ処理部１１は、テストレスポンスデータ１を受信すると、テストレスポンスデータ１を受け取った時のカウンタ１２のカウント値をスレーブＳ１との間の遅延時間を示すカウント値を取得する。データ処理部１１は、スレーブＳ１との間の遅延時間を示すカウント値をカウント値［１］としてメモリ１１ａに記憶する。
【００５６】
スレーブＳ１からのテストレスポンスデータ１を受け取った後、マスタＭのデータ処理部１１は、スレーブ番号２のスレーブＳ２に対するテストコマンドデータ１を転送し、上述の処理を繰り返すことにより、マスタＭとスレーブＳ２との間の遅延時間を示すカウント値［２］をメモリ１１ａに記憶する。さらに、マスタＭのデータ処理部１１は、スレーブＳ３、スレーブＳ４、スレーブＳ５についても、上述の処理を実行することにより、カウント値［３］、カウント値［４］、カウント値［５］をメモリ１１ａに記憶する。
【００５７】
当該システムにおける５個のスレーブに対する遅延時間（カウント値［１］〜［５］）を取得すると、マスタＭのデータ処理部１１は、カウント値の小さい（遅延時間の短い）スレーブから順に転送番号を与える。
【００５８】
図８に示す例では、スレーブＳ１、Ｓ３、Ｓ４、Ｓ２、Ｓ５の順に、マスタＭに電気的に近いため、カウンタ値の小さい順は、カウント値［１］、カウント値［３］、カウント値［４］、カウント値［２］、カウント値［５］となる。従って、マスタＭのデータ処理部１１は、スレーブＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５の転送番号を「１」、「４」、「２」、「３」、「５」に決定する。転送番号は、スレーブからマスタへ転送されるパケットの入力データを転送する順番を決める番号である。
【００５９】
５個の各スレーブに対する転送番号を決定すると、マスタＭのデータ処理部１１は、決定した転送番号の順に、各スレーブに転送番号を設定する。  
まず、マスタＭのデータ処理部１１は、スレーブ番号１のスレーブＳ１に転送番号「１」を設定する。マスタＭのデータ処理部１１は、スレーブ番号１のスレーブＳ１に対して転送番号の設定を要求するコマンドとして、スレーブ番号１をアドレスとするコマンドにより転送番号「１」を転送する。転送番号「１」を受け取ったスレーブＳ１は、自身のタイミング生成部２５に転送番号「１」を設定（記憶）する。
【００６０】
次に、マスタＭのデータ処理部１１は、スレーブ番号３のスレーブＳ３に転送番号「２」を設定する。データ処理部１１は、スレーブＳ３に対し、スレーブ番号３をアドレスとするコマンドにより転送番号「２」を転送する。転送番号「２」を受け取ったスレーブＳ３は、自身のタイミング生成部２５に転送番号「２」を設定（記憶）する。
【００６１】
次に、マスタＭのデータ処理部１１は、スレーブ番号４のスレーブＳ４に転送番号「３」を設定する。データ処理部１１は、スレーブＳ４に対し、スレーブ番号４をアドレスとするコマンドにより転送番号「３」を転送する。転送番号「３」を受け取ったスレーブＳ４は、自身のタイミング生成部２５に転送番号「３」を設定（記憶）する。
【００６２】
次に、マスタＭのデータ処理部１１は、スレーブ番号２のスレーブＳ２に転送番号「４」を設定する。データ処理部１１は、スレーブＳ２に対し、スレーブ番号２をアドレスとするコマンドにより転送番号「４」を転送する。転送番号「４」を受け取ったスレーブＳ２は、自身のタイミング生成部２５に転送番号「４」を設定（記憶）する。
【００６３】
次に、マスタＭのデータ処理部１１は、スレーブ番号５のスレーブＳ５に転送番号「５」を設定する。データ処理部１１は、スレーブＳ５に対し、スレーブ番号５をアドレスとするコマンドにより転送番号「５」を転送する。転送番号「５」を受け取ったスレーブＳ５は、自身のタイミング生成部２５に転送番号「５」を設定（記憶）する。  
以上の処理により、図８に示す各スレーブＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５には、マスタＭから電気的に近い（遅延が短い）順に転送番号が設定される。
【００６４】
図８に示すシリアル通信システムは、上述の第１の初期化動作によって設定された転送番号を用いて、データ転送が行われる。  
図９及び図１０は、マスタＭと各スレーブＳ間のデータ転送に用いるパケットの構成を示す。図９は、マスタＭから各スレーブＳへ転送するコマンドデータのパケット構成例を示す。図１０は、各スレーブＳからマスタＭへ転送するレスポンスデータのパケット構成例を示す。
【００６５】
図９に示すパケットでは、スタートマークに続いて、転送番号が「１」に設定されたスレーブＳ１の出力データ、転送番号が「２」に設定されたスレーブＳ３の出力データ、転送番号が「３」に設定されたスレーブＳ４の出力データ、転送番号が「４」に設定されたスレーブＳ２の出力データ、転送番号が「５」に設定されたスレーブＳ５の出力データ、コマンドアドレス、および、コマンドデータが並べられた構成となる。
【００６６】
図１０に示すパケットでは、スタートマークに続いて、転送番号が「１」に設定されたスレーブＳ１の入力データ、転送番号が「２」に設定されたスレーブＳ３の入力データ、転送番号が「３」に設定されたスレーブＳ４の入力データ、転送番号が「４」に設定されたスレーブＳ２の入力データ、転送番号が「５」に設定されたスレーブＳ５の入力データ、および、レスポンスデータが並べられた構成となる。
【００６７】
図９及び図１０に示すように、上記第１の初期化動作により決定される転送番号に基づくパケットは、スレーブ番号の順に各スレーブのデータを並べたものではなく、マスタに電気的に近い順に割り当てた転送番号の順に各スレーブのデータを並べたものとなる。
【００６８】
さらに、第１の初期化処理においては、マスタＭのデータ処理部１１は、マスタＭと各スレーブＳとの間の遅延時間が規定時間内であることを確認する。  
シリアル通信システムでは、スレーブＳからマスタＭへの入力データは、規定時間以内に転送されなければならないものとする。このため、マスタＭのデータ処理部１１は、テストコマンドデータ１を転送してからのカウンタ１２のカウント値が規定値（規定カウント）以内にスレーブからテストレスポンスデータ１を受信したか否かを判断する。
【００６９】
規定カウント以内にテストレスポンスデータ１が受信できない場合、マスタＭのデータ処理部１１は、再度の確認のため、テストコマンドデータ１´を転送する。スレーブはテストコマンドデータ１’を受け取ると、テストレスポンスデータ１’をマスタへ転送する。
【００７０】
マスタＭのデータ処理部１１は、テストコマンドデータ１’を転送する際にカウンタ１２のカウント値をリセットし、再びカウントを行う。マスタＭのデータ処理部１１は、テストコマンドデータ１’を転送してからカウンタ１２のカウント値が規定カウント以内にスレーブからのテストレスポンスデータ１’が受け取れない場合、該スレーブが故障している、または接続に問題があると判断する。この場合、データ処理部１１は、スレーブ故障又は接続エラーとして初期化動作を中断する。
【００７１】
また、マスタがテストコマンドデータ１’を転送した後、カウンタ１２のカウント値が規定カウント以内にテストレスポンスデータ１’を受信した場合、マスタＭのデータ処理部１１は、該スレーブが立ち上がり時間のバラつきにより、テストコマンドデータ１を受け取れなかったと判断する。この場合、データ処理部１１は、テストコマンドデータ１’を転送してからテストレスポンスデータ１’を受信するまでのカウント値に基づいて転送番号を決定する。
【００７２】
また、テストコマンドデータ１’を転送した後にテストレスポンスデータ１を受信した場合、つまり、規定カウント値を越えた後にテストレスポンスデータ１を受信した場合、マスタＭのデータ処理部１１は、該スレーブとの伝送路による遅延時間が、入力データが転送されるべき規定時間を超えており、伝送距離が長すぎると判断する。この場合、データ処理部１１は、伝送距離が長すぎるためのエラーとして初期化動作を中断する。
【００７３】
次に、図８に示す構成のシリアル通信システムにおける第２の初期化動作を説明する。  
第１の初期化動作により５個の全てのスレーブに転送番号に割当てられた場合、マスタＭのデータ処理部１１は、第２の初期化動作を実行する。  
図１１は、転送番号「１」のスレーブＳ１と転送番号「２」のスレーブＳ３とが、入力データ転送タイミングを設定する様子を示すチャートである。また、図１２は、転送番号「３」のスレーブＳ４が、入力データ転送タイミングを設定する様子を示すチャートである。
【００７４】
第２の初期化動作として、マスタＭのデータ処理部１１は、転送番号１のスレーブＳ１に対し、スレーブ番号１をアドレスするテストコマンドデータ２を転送する。テストコマンドデータ２は、出力用伝送路３ａを介して全てのスレーブに転送される。各スレーブＳ１〜Ｓ５のデータ処理部２１は、それぞれテストコマンドデータ２を受け取り次第、自身の持つカウンタ２４のカウントを開始する。
【００７５】
スレーブＳ１のデータ処理部２１は、図１１に示すように、テストコマンドデータ２を受け取り次第、カウンタ２４のカウントを開始すると共に、出力用伝送路３ａを介してテストレスポンスデータ２を転送する。テストレスポンスデータ２は、出力用伝送路３ａを介して他のスレーブＳ２〜Ｓ５が受け取る。スレーブＳ１のデータ処理部２１は、テストレスポンスデータ２を送信した際のカウンタ２４のカウント値を、入力データ転送タイミングとしてタイミング生成部２５に設定（記憶）する。
【００７６】
また、転送番号２のスレーブＳ３のデータ処理部２１は、図１１に示すように、転送番号１のスレーブＳ１からのテストレスポンスデータ２の受信を完了した際、その時点でのカウンタ２４のカウント値に基づいて入力データ転送タイミングをタイミング生成部２５に設定（記憶）する。つまり、スレーブＳ３のタイミング生成部２５は、カウンタ２４のカウント値に「１」を加えた値（スレーブＳ１からのテストレスポンスデータ２の受信完了の直後となるタイミング）を入力データ転送タイミングとしてタイミング生成部２５に設定（記憶）する。
【００７７】
マスタＭのデータ処理部１１は、転送番号１のスレーブＳ１からテストレスポンスデータ２を受け取ると、出力用伝送路３ａを介して転送番号２のスレーブＳ３に対するテストコマンドデータ２を転送する。スレーブＳ３のデータ処理部２１は、図１２に示すように、テストコマンドデータ２を受け取り次第カウンタ２４のカウントを開始した後、自身のタイミング生成部２５に設定されている入力データ転送タイミングで、出力用伝送路３ａを介してテストレスポンスデータ２を転送する。転送番号３のスレーブＳ４のデータ処理部２１は、転送番号２のスレーブＳ３からのテストレスポンスデータ２の受信が完了した際、カウンタ２４のカウント値に「１」を加えた値を入力データ転送タイミングとして、タイミング生成部２５に設定（記憶）する。
【００７８】
マスタＭのデータ処理部１１は、転送番号２のスレーブＳ３からテストレスポンスデータ２を受け取ると、出力用伝送路３ａを介して転送番号３のスレーブＳ４に対するテストコマンドデータ２を転送する。スレーブＳ４のデータ処理部２１は、テストコマンドデータ２を受け取り次第カウンタ２４のカウントを開始した後、自身のタイミング生成部２５に設定されている入力データ転送タイミングで、出力用伝送路３ａを介してテストレスポンスデータ２を転送する。転送番号４のスレーブＳ２のデータ処理部２１は、転送番号３のスレーブＳ４からのテストレスポンスデータ２の受信が完了した際、カウンタ２４のカウント値に「１」を加えた値を入力データ転送タイミングとしてタイミング生成部２５に設定（記憶）する。
【００７９】
また、マスタＭのデータ処理部１１は、転送番号３のスレーブＳ４からテストレスポンスデータ２を受け取ると、出力用伝送路３ａを介して転送番号４のスレーブＳ２に対するテストコマンドデータ２を転送する。スレーブＳ２のデータ処理部２１は、テストコマンドデータ２を受け取り次第カウンタ２４のカウントを開始した後、自身のタイミング生成部２５に設定されている入力データ転送タイミングで、出力用伝送路３ａを介してテストレスポンスデータ２を転送する。転送番号５のスレーブＳ５のデータ処理部２１は、転送番号４のスレーブＳ２からのテストレスポンスデータ２の受信が完了した際、カウンタ２４のカウント値に「１」を加えた値を入力データ転送タイミングとしてタイミング生成部２５に設定（記憶）する。  
以上の処理によって、全てのスレーブは、自身の入力データ転送タイミングをタイミング生成部２５に設定する。
【００８０】
また、本シリアル通信システムは、各スレーブが入力データ転送タイミングを設定した後、各スレーブがレスポンスデータ転送タイミングを設定する。各スレーブが設定するレスポンスデータ転送タイミングは、転送番号が最大値（「５」）のスレーブ（スレーブＳ５）から転送されるテストレスポンスデータ２の送受信タイミングに基づいて設定される。例えば、スレーブＳ５は、自身がテストレスポンスデータ２の送信を完了するタイミングに基づいて設定する。スレーブＳ２、Ｓ４、Ｓ３及びＳ１は、スレーブＳ５からのテストレスポンスデータ２の受信を完了するタイミングに基づいて設定する。
【００８１】
図１３及び図１４は、各スレーブがレスポンスデータ転送タイミングを設定する様子を示すチャートである。  
すなわち、マスタＭのデータ処理部１１は、転送番号４のスレーブＳ２からテストレスポンスデータ２を受け取ると、出力用伝送路３ａを介して転送番号５のスレーブＳ５に対するテストコマンドデータ２を転送する。スレーブＳ５のデータ処理部２１は、テストコマンドデータ２を受け取り次第カウンタ２４のカウントを開始した後、自身のタイミング生成部２５に設定されている入力データ転送タイミングで、出力用伝送路３ａを介してテストレスポンスデータ２を転送する。
【００８２】
さらに、転送番号５のスレーブＳ５のデータ処理部２１は、テストレスポンスデータ２を転送した後、自身の転送番号「５」が最大値であると判断し、自身がテストレスポンスデータ２の送信を完了した際のカウンタ２４のカウント値に「１」を加えた値（自身がテストレスポンスデータ２を送信した直後となるタイミング）をレスポンスデータ転送タイミングとしてタイミング生成部２５に設定（記憶）する。
【００８３】
また、スレーブＳ５のデータ処理部２１が転送するテストレスポンスデータ２（転送番号が最大値のスレーブからのテストレスポンスデータ２）は、出力用伝送路３ａを介して、他の全てのスレーブが受け取る。  
すなわち、転送番号「４」のスレーブＳ２のデータ処理部２１は、スレーブＳ５からのテストレスポンスデータ２を受け取ると、転送番号が最大（本システムでは「５」）のスレーブからのテストレスポンスデータ２を受信した事を判断する。スレーブＳ２のデータ処理部２１は、スレーブＳ５からのテストレスポンスデータ２の受信が完了した際のカウンタ２４のカウント値に「１」を加えた値（転送番号が最大値のスレーブＳ５からのテストレスポンスデータ２を受信した直後となるタイミング）を自身のレスポンスデータ転送タイミングとしてタイミング生成部２５に設定（記憶）する。
【００８４】
また、スレーブＳ４、Ｓ３、Ｓ１の各データ処理部２１は、スレーブＳ２と同様に、スレーブＳ５からのテストレスポンスデータ２の受信が完了した際のカウンタ２４のカウント値に「１」を加えた値を自身のレスポンスデータ転送タイミングとしてそれぞれタイミング生成部２５に設定（記憶）する。
【００８５】
上述した第２の初期化動作によって、全てのスレーブは、自身の入力データ転送タイミングとレスポンスデータ転送タイミングとを自身のタイミング生成部に設定する。これにより、本シリアル通信システムは、各スレーブが転送するレスポンスデータと各スレーブが転送する入力データとが衝突しない、最小のマージンでの転送タイミングの設定を実現できる。
【００８６】
以上のように、本実施形態によれば、１つのマスタと複数のスレーブがデイジーチェーンにて接続されるシリアル通信システムにおいて、マスタは、各スレーブとの伝送路の持つ遅延時間を把握し、各スレーブがデータを転送する順番を、マスタから電気的に近いスレーブから順に自動的に割り振る。これにより、本実施形態に係るシリアル通信システムは、スレーブ間の転送データの衝突を回避することができる。
【００８７】
また、各スレーブは、他のスレーブからデータを受け取るタイミングに基づいて自身のデータ転送のタイミングを決定し、決定したデータ転送のタイミングを記憶する。これにより、本実施形態に係るシリアル通信システムは、各スレーブからマスタへのデータ転送が、他のスレーブのデータと衝突が発生しない最小のマージンを持って実施することできる。
【００８８】
さらに、本実施形態によれば、マスタは、スレーブとの伝送路のもつ遅延時間と規定時間を比較することにより、当該シリアル通信システムが正常に接続されているか判断する。これにより、本実施形態に係るシリアル通信システムは、初期化動作において、接続状態が正常であるか否かを確認できる。
【００８９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９０】
Ｍ…マスタ、Ｓ（Ｓａ〜Ｓｐ、Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５）…スレーブ、３ａ…出力用伝送路、３ｂ…入力用伝送路、１０…データ処理部、１１ａ…メモリ、１２…カウンタ、２０…データ処理部、２１ａ…メモリ、２２…番号スイッチ、２３…入出力回路、２４…カウンタ、２５…タイミング生成部。
【図１】
2017005364.tif 000003
【図２】
2017005364.tif 000004
【図３】
2017005364.tif 000005
【図４】
2017005364.tif 000006
【図５】
2017005364.tif 000007
【図６】
2017005364.tif 000008
【図７】
2017005364.tif 000009
【図８】
2017005364.tif 000010
【図９】
2017005364.tif 000011
【図１０】
2017005364.tif 000012
【図１１】
2017005364.tif 000013
【図１２】
2017005364.tif 000014
【図１３】
2017005364.tif 000015
【図１４】
2017005364.tif 000016
【図１５】
2017005364.tif 000017