(57)【要約】【課題】  ボーレートを変化させて通信接続コマンドを入力する相手装置との通信においても、その入力から通信接続コマンド周期を検知し、自身のボーレートを相手装置の周期に合わせたものへ変更することで、正常に送受信可能なボーレートを設定することを可能にした通信装置を提供する。【解決手段】  通信装置は、外部機器と通信を行う通信手段と、前記通信手段のボーレートを変更するボーレート設定手段と、前記通信手段で受信する通信接続コマンドを送信しているボーレートの変更周期を検出する周期検出手段と、を有し、前記通信手段は、前記周期検出手段が検出したボーレート変更周期に基づきボーレートを変更する、ことを特徴とする。【選択図】  図１
2017034448.tif 000002
【特許請求の範囲】
【請求項１】
外部機器と通信を行う通信手段と、
前記通信手段のボーレートを変更するボーレート設定手段と、
前記通信手段で受信する通信接続コマンドを送信しているボーレートの変更周期を検出する周期検出手段と、
を有し、
前記通信手段は、前記周期検出手段が検出したボーレート変更周期に基づきボーレートを変更する、
ことを特徴とする通信装置。
【請求項２】
前記通信手段が受信した信号に基づき、前記通信接続コマンドの受信エラーを検出する受信エラー検出手段を有し、前記周期検出手段は、前記通信手段によって検出された受信エラーに基づいて前記ボーレート変更周期を検出する、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記周期検知手段が前記ボーレート変更周期を検出するまでは、前記受信エラーが検出されると、前記通信手段はボーレートを切り替えることを特徴とする請求項２に記載の通信装置。
【請求項４】
前記周期検知手段は、前記ボーレート設定手段にボーレートを所定の時間、固定させ、前記受信エラーが検出される回数に基づきボーレート変更周期を検出する、ことを特徴とする請求項１または２に記載の通信装置。
【請求項５】
前記周期検知手段は、前記通信手段で設定可能なボーレートのうち、最も遅いボーレートで前記通信接続コマンドを受信するために要する時間に基づいて定められた所定の時間内で検知された１つ以上の受信エラーを１つの受信エラーとして扱う、ことを特徴とする請求項３または４に記載の通信装置。
【請求項６】
前記周期検知手段は、最も遅いボーレートで前記通信接続コマンドを受信するために要する時間に基づいて定められる所定の時間内に、前記受信エラーの発生数が変化した回数に基づきボーレート変更周期を検出する、ことを特徴とする請求項１または２に記載の通信装置。
【請求項７】
前記周期検出手段が前記ボーレート変更周期を検出した後、通信接続が完了するまで、前記通信手段は前記ボーレート変更周期でボーレートを変更する、ことを特徴とする請求項１乃至６のいずれか１項に記載の通信装置。
【請求項８】
請求項１乃至７のいずれか１項に記載の通信装置を備えるレンズ装置。
【請求項９】
請求項１乃至７のいずれか１項に記載の通信装置を備えるレンズ装置と、該レンズ装置と通信するカメラ装置を含む撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関し、特に、例えばボーレートを任意に変更可能とするマイクロプロセッサなどを搭載する二つの装置間で、ボーレートを合わせて通信を行う通信装置及びそれを有するレンズ装置及び撮像装置に関するものである。
【背景技術】
【０００２】
従来、データ交信を行う二つの装置間でボーレート設定用データを用いるボーレート設定方法は、二つの装置間のうち、一方のボーレートは変化せず、他方のボーレートを順次変更することで正常に送受信可能なボーレートを設定するものである。
【０００３】
例えば、特許文献１ではデータ交信を行う二つの装置間でボーレート設定用データを用いて、未知のボーレートで設定用データを送信する送信側に対して、受信側がボーレートを順次変更して一致させる方法が開示されている。
【０００４】
特許文献２では、ボーレートチェック用データを用いて、送信側がチェック用データを送信し、受信側が一致したという返信をするまで、送信側がボーレートを順次変更してことでボーレートを一致させる構成が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−６４６１６号公報
【特許文献２】特開平５−２３６０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特許文献に開示された従来技術では、データ交信を行う二つの装置が、双方ともにボーレートを変化させると、正常に送受信可能なボーレートを設定することができなくなってしまう。例えば、２件の特許文献に記載のいずれの方法も、一方がボーレートの変わらない他一方に合わせる目的でボーレートを変更する。だが、他一方も同様のプロセスでボーレートを変更するならば、一方がボーレートを変更する時、他一方も同時に別のボーレートへ変更するから、いつまでもボーレート変更に食い違いが起きて、正常に送受信可能なボーレートを設定できない場合がある。
【０００７】
本発明の目的は、ボーレートを変化させて通信接続コマンドを入力する相手装置との通信においても、その入力から通信接続コマンド周期を検知し、自身のボーレートを相手装置の周期に合わせたものへ変更することで、正常に送受信可能なボーレートを設定することを可能にした通信装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明の通信装置は、外部機器と通信を行う通信手段と、前記通信手段のボーレートを変更するボーレート設定手段と、前記通信手段で受信する通信接続コマンドを送信しているボーレートの変更周期を検出する周期検出手段と、を有し、前記通信手段は、前記周期検出手段が検出したボーレート変更周期に基づきボーレートを変更する、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ボーレートを変化させて通信接続コマンドを入力する相手装置との通信においても、その入力から通信接続コマンド周期を検知し、自身のボーレートを相手装置の周期に合わせたものへ変更することで、正常に送受信可能なボーレートを設定することを可能にした通信装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例１における、通信装置Ａ１００と通信装置Ｂ２００の構成を示す
【図２】実施例１における、ボーレート設定部Ａ１３０の処理フローチャート示す
【図３】実施例１における、ボーレート設定部Ｂ２３０の処理フローチャートを示す
【図４】調歩同期式シリアル通信に用いられる電文のバイトフォーマットの一例を示す
【図５】実施例１における、装置間でボーレートが食い違う場合のボーレート遷移を示す
【図６】実施例１における、装置間でボーレートが決定するまでのボーレート遷移を示す
【図７】実施例２における、通信装置Ａ１００と通信装置Ｂ２００の構成を示す
【図８】実施例２における、ボーレート設定部Ａ３３０の処理フローチャート示す
【図９】実施例２における、装置間でボーレートが食い違う場合のボーレート遷移を示す
【図１０】実施例２における、装置間でボーレート決定までのボーレート遷移を示す
【図１１】実施例３における、通信装置Ａ１００と通信装置Ｂ２００の構成を示す
【図１２】実施例３における、ボーレート設定部Ａ５３０の処理フローチャート示す
【図１３】実施例３における、装置間でボーレートが食い違う場合のボーレート遷移を示す
【図１４】送受信のボーレートが異なる場合に、受信されるデータの違いを示す
【図１５】実施例３における、装置間でボーレート決定までのボーレート遷移を示す
【発明を実施するための形態】
【００１１】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
【実施例１】
【００１２】
以下、図１〜図６を参照して、本発明の第１の実施例である通信装置について説明する。本実施例では、通信装置の一例として、調歩同期式シリアル通信を行い、予め定められた複数のボーレートの中から、通信装置間で通信可能なボーレートを決定する通信装置を例に説明する。
【００１３】
図１は、本発明の第１の実施例である通信装置の構成を示している。
通信装置Ａ１００は、データ送受信部Ａ１１０（通信手段）、送受信データ処理部Ａ１２０（受信エラー検出手段）、ボーレート設定部Ａ１３０（周期検出手段）で構成される。
【００１４】
データ送受信部Ａ１１０は、外部機器と接続し通信データを送受信することが可能である。また、ボーレート設定部Ａ１３０と接続されており、ボーレート設定部で設定されたボーレートを確認し、そのボーレートで外部との通信を行う。
【００１５】
送受信データ処理部Ａ１２０は、データ送受信部Ａ１１０に接続されており、データ送受信部Ａ１１０が受信したデータを確認し、通信接続コマンドの処理や受信エラーの検知を行う。また、送受信データ処理部Ａ１２０は、作成した応答コマンドを送信データとしてデータ送受信部Ａ１１０に設定する。
【００１６】
ボーレート設定部Ａ１３０は、送受信データ処理部Ａ１２０と接続されており、送受信データ処理部Ａ１２０が処理した通信接続コマンドや、検知した受信エラーを確認し、通信で用いるボーレートの設定を行う。さらに、複数の受信エラーから通信接続コマンド周期（ボーレート変更周期）を検知して、通信で用いるボーレートの設定を行う。本明細書内では、通信接続コマンド周期は、通信接続を確立するために送信側のデータ送受信部がボーレートを一通り変更する時間のことを指すものとする。すなわち、複数のボーレートでの送信可能なデータ送受信部である場合は、複数のボーレートでの通信接続コマンドの送信が一巡する時間を指すものとする。
【００１７】
通信装置Ｂ２００は、データ送受信部Ｂ２１０、送受信データ処理部Ｂ２２０と、ボーレート設定部Ｂ２３０から構成される。
【００１８】
通信装置Ａ１００、データ送受信部Ａ１１０、送受信データ処理部Ａ１２０、ボーレート設定部Ａ１３０と、通信装置Ｂ２００、データ送受信部Ｂ２１０、送受信データ処理部Ｂ２２０、ボーレート設定部Ｂ２３０の基本的な構成は同一である。
【００１９】
ただし、ボーレート設定部Ｂ２３０は、ボーレート設定部Ａ１３０と異なり、通信接続コマンド周期を検知しない。
【００２０】
送受信データ処理部Ｂ２２０は、通信可能なボーレートが決定するまで、一定間隔で送信データである通信接続コマンドを生成して、データ送受信部Ｂ２１０に設定する。
【００２１】
データ送受信部Ａ１１０とデータ送受信部Ｂ２１０は接続されており、相互に通信を行う。
【００２２】
通信装置Ａ１００は、Ａ[bps]とＢ[bps]の２つのボーレートで通信可能で、ボーレート設定部Ａ１３０のボーレート初期値はＡ[bps]であり、受信エラーによってボーレートを変更する。また、受信エラーを複数検知し、通信接続コマンド周期検知後は、通信接続コマンド周期に従ってボーレートを変更する。さらに、通信接続コマンドを受信し、その処理を完了させることで、通信可能なボーレートを決定する。通信可能なボーレートが決定すると、送受信データ処理部Ａ１２０で、送信データである応答コマンドを生成して、データ送受信部Ａ１１０に設定する。ボーレート決定以後は、そのボーレートで通信を行う。
【００２３】
通信装置Ｂ２００は、Ａ[bps]とＣ[bps]の２つのボーレートで通信可能で、ボーレート設定部Ｂ２３０のボーレート初期値はＣ[bps]で、一定時間経過によってボーレートを変更する。また、応答コマンドを受信し、その処理を完了させることで、通信可能なボーレートを決定する。ボーレート決定以後は、そのボーレートで通信を行う。
【００２４】
このように構成することによって、送受信データ処理部Ｂ２２０で生成された送信データはデータ送受信部Ｂ２１０、データ送受信部Ａ１１０を介して送受信データ処理部Ａ１２０に入力することが可能となる。また受信したデータから送受信データ処理部Ａ１２０は返信データを生成し、データ送受信部Ａ１１０、データ送受信部Ｂ２１０を介して送受信データ処理部Ｂ２２０に入力することが可能となる。従って、通信装置Ａ１００と通信装置Ｂ２００は相互に情報を交換することが可能となる。また、ボーレート設定部Ａ１３０と、ボーレート設定部Ｂ２３０を用いて、相互に通信ボーレートを変換しても、通信装置Ａ１００は、通信装置Ｂ２００と同一のボーレートに設定することが可能である。
【００２５】
次に図２、図３を用いて、ボーレート設定部Ａ１３０と、ボーレート設定部Ｂ２３０によって、相互に通信ボーレートが変更されても、通信装置Ａ１００が、通信装置Ｂ２００に合わせて通信ボーレートを変更し、同一のボーレートにする処理について説明する。
【００２６】
図２は、ボーレート設定部Ａ１３０のボーレート決定までの処理を示すフローチャートである。
【００２７】
Ｓ２０１では、ボーレートを初期値に設定し、Ｓ２０２へ進む。
Ｓ２０２では、送受信データ処理部Ａ１２０が通信接続コマンドを処理したかを確認し、処理していればＳ２０３へ進む。処理してない場合はＳ２０４へ進む。
Ｓ２０３では、ボーレートを決定し、処理を終了する。
Ｓ２０４では、送受信データ処理部Ａ１２０が受信エラーを検知したかを確認し、検知していればＳ２０５へ進む。検知していない場合はＳ２０２へ戻る。
Ｓ２０５では、送受信データ処理部Ａ１２０で検知された受信エラーの数をカウントし、Ｓ２０６へ進む。
Ｓ２０６では、送受信データ処理部Ａ１２０でこれまでカウントした受信エラーが３以上で、通信接続コマンド周期Ｔ[sec]を検知可能ならば、Ｓ２０８へ進む。検知不可能であれば、Ｓ２０７へ進む。
Ｓ２０７では、ボーレートを変更し、すなわち、Ａ[bps]ならばＢ[bps]に、Ｂ[bps]ならばＡ[bps]に設定し、Ｓ２０２へ進む。
Ｓ２０８では、通信接続コマンド周期Ｔ[sec]経過したかを判定する。経過していれば、Ｓ２０７へ進む。経過していなければ、Ｓ２０２へ戻る。
【００２８】
図３は、ボーレート設定部Ｂ２３０のボーレート決定までの処理を示すフローチャートである。
【００２９】
Ｓ３０１では、ボーレートを初期値に設定し、Ｓ３０２へ進む。
Ｓ３０２では、送受信データ処理部Ｂ２２０が応答コマンドを処理したかを確認し、処理していればＳ３０３へ進む。処理してない場合はＳ３０４へ進む。
【００３０】
Ｓ３０３では、ボーレートを決定し、処理を終了する。
Ｓ３０４では、一定時間が経過したか判定し、経過していれば、Ｓ３０５へ進み、経過していなければ、Ｓ３０２へ戻る。
Ｓ３０５では、ボーレートを変更し、すなわち、Ｃ[bps]ならばＡ[bps]に、Ａ[bps]ならばＣ[bps]に設定し、Ｓ２０２へ戻る。
【００３１】
以上の処理フローにより、通信装置Ａ１００が、通信装置Ｂ２００に合わせて通信ボーレートを変更し、同一のボーレートにすることが可能である。
【００３２】
次に、図４と図５を用いて、エラー検知で通信接続コマンドを検知し、通信接続コマンドの間隔から、通信接続コマンド周期を検知する方法を説明する。
【００３３】
図４は、調歩同期式通信に用いられる電文のバイトフォーマットの一例を示している。データ送受信部Ａ１１０では、電文のスタートビットを受信した後、データビット(8bit）、パリティビット(1bit)、ストップビット(1bit)のいずれか１つでも検知すべき検知位置において規定値を検知しない場合に、受信エラーが発生する。
【００３４】
また、通信接続コマンドを用いてボーレートを決定する通信装置は、ボーレートが決定するまで、通信接続コマンドのみを送受信し続ける。従って、通信接続コマンドのみを送受信する環境では、受信エラーの発生は、通信接続コマンドを受信したと考えることができる。
【００３５】
図５は、互いにボーレートが一致しない通信接続コマンドを送信する側と受信する側において、送信側の通信接続コマンドによって、受信側でエラーが発生することを示している。受信エラーの検知によって、通信接続コマンドの発生がわかるので、図に示すように受信エラーを３つ検知し、通信接続コマンドの受信時間が３つわかれば、それらの組み合わせで第１と第２の通信接続コマンド間隔がわかる。ここで２つの通信接続コマンド間隔から通信接続コマンド周期Ｔ[sec]が求められる。
【００３６】
以上の図４と図５を用いて説明したとおり、エラー検知で、通信接続コマンドの受信間隔を検知し、その間隔から通信接続コマンド周期を検知できる。
【００３７】
最後に、図２、図３、図６を用いて、本発明の第１の実施例である通信装置が相互の通信ボーレートを変更し、送受信可能なボーレートを決定し、通信することが可能であることについて説明する。
【００３８】
図６は、通信装置Ａ１００と通信装置Ｂ２００が、図２で示すボーレート設定部Ａ１３０と、図３で示すボーレート設定部Ｂ２３０の処理に従い、最終的に相互のボーレートを一致させるまでのボーレートの遷移を示すタイミング図である。
【００３９】
図６にはそれぞれ通信装置Ａ１００と通信装置Ｂ２００が配置されている。矩形の実線はボーレート設定部Ａ１３０と、ボーレート設定部Ｂ２３０の処理に従って変化するボーレートを示し、矩形の実線近傍のコメントは各通信装置における発生イベントを表している。矢印は通信接続コマンドまたは応答コマンドが通信装置間で送受信されていることを意味する。各通信装置の最下部にあるＴ１〜Ｔ５の記号が割り当てられた直線は、説明をし易くするために時間で区切られた時間区間を示す。
【００４０】
区間［Ｔ１−Ｔ２］では、通信が開始され、ボーレート設定部Ａ１３０は通信装置のボーレートを初期値のＡ[bps]に設定（Ｓ２０１）する。ボーレート設定部Ｂ２３０は通信装置のボーレートを初期値Ｃ[bps]に設定（Ｓ３０１）にする。データ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ１３０は、通信接続コマンド処理がない（Ｓ２０２）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ２０４）し、カウント（Ｓ２０５）する。そして、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ２０６）ので、ボーレートをＢ[bps]に変更（Ｓ２０７）する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過（Ｓ３０４）したことを確認し、ボーレートをＡ[bps]に変更（Ｓ３０５）する。
【００４１】
区間［Ｔ２−Ｔ３］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ１３０は、通信接続コマンド処理がない（Ｓ２０２）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ２０４）し、カウント（Ｓ２０５）する。そして、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ２０６）ので、ボーレートをＡ[bps]に変更（Ｓ２０７）する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過（Ｓ３０４）したことを確認し、ボーレートをＣ[bps]に変更（Ｓ３０５）する。
【００４２】
区間［Ｔ３−Ｔ４］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ１３０は、通信接続コマンド処理がない（Ｓ２０２）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ２０４）し、カウント（Ｓ２０５）する。そして、検知した受信エラーが３つ以上であるので、通信接続コマンド周期Ｔ[sec]検知している（Ｓ２０６）ことと、通信接続コマンド周期Ｔ[sec]経過していない（Ｓ２０８）ので、ボーレートを変更しない。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過（Ｓ３０４）したことを確認し、ボーレートをＡ[bps]に変更（Ｓ３０５）する。
【００４３】
区間［Ｔ４−Ｔ５］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信時と受信時のボーレートが一致するので、通信接続コマンドが処理される。ボーレート設定部Ａ１３０は、送受信データ処理部Ａ１２０が通信接続コマンドを処理した（Ｓ２０２）ことを確認して、ボーレートを決定（Ｓ２０３）する。通信接続コマンドが処理されたので、データ送受信部Ａ１１０が、応答コマンドをＡ[bps]でデータ送受信部Ｂ２１０に送信する。データ送受信部Ｂ２１０がＡ[bps]で受信する。送信側と受信側のボーレートが一致するので、応答コマンドが処理される。ボーレート設定部Ｂ２３０は、送受信データ処理部Ｂ２２０が応答コマンドを処理した（Ｓ３０２）ことを確認して、ボーレートを決定（Ｓ３０３）する。
【００４４】
以上、通信装置Ａ１００は、ボーレートを変化させて通信接続コマンドを入力する通信装置Ｂ２００との通信における通信接続コマンド周期を検出し、該周期に基づいてボーレートを変更することで送受信可能なボーレートを決定し、通信可能とする。
【実施例２】
【００４５】
続いて、以下、図１、図３、図７〜図１０を参照して、本発明の第２の実施例による、通信装置について説明する。本実施例では、通信装置の一例として、調歩同期式シリアル通信を行い、予め定められた複数のボーレートの中から、通信装置間で通信可能なボーレートを決定する通信装置を例に説明する。
【００４６】
図７は、本発明の第２の実施例で通信装置の構成を示している。なお、図１と同様の構成については同符号を付し、説明を省略する。
【００４７】
ボーレート設定部Ａ３３０は、図１のボーレート設定部Ａ１３０と、ほぼ同じ動作をするが、異なる判断にて動作するため別符号を付す。また、異なる部分のみ説明する。
【００４８】
ボーレート設定部Ａ３３０は、受信エラーによってボーレートを変更した後、一定時間変更後のボーレートを維持する。また、受信エラーを複数検知し、通信接続コマンド周期検知後は、通信接続コマンド周期に従ってボーレートを変更する。
【００４９】
次に、図８を用いて、ボーレート設定部Ａ３３０による、通信装置Ａ１００が、通信装置Ｂ２００に合わせて通信ボーレートを変更し、同一のボーレートにする処理について説明する。
【００５０】
図８は、ボーレート設定部Ａ３３０のボーレート決定までの処理を示すフローチャートである。
【００５１】
Ｓ８００では、通信接続コマンド周期Ｔ[sec]検知を示すフラグ「ＣｏｍＦｒｅＦｌｇ」を「ＯＦＦ」に設定し、Ｓ８０１へ進む。
Ｓ８０１では、ボーレートを初期値に設定し、Ｓ８０２へ進む。
Ｓ８０２では、送受信データ処理部Ａ１２０が通信接続コマンドを処理したかを確認し、処理していればＳ８０３へ進む。処理していない場合はＳ８０４へ進む。
Ｓ８０３では、ボーレートを決定し、処理を終了する。
Ｓ８０４では、送受信データ処理部Ａ１２０が受信エラーを検知したかを確認し、検知していればＳ８０５へ進む。検知していない場合はＳ８０２へ戻る。
Ｓ８０５では、通信接続コマンド周期Ｔ[sec]検知済みを示すフラグ「ＣｏｍＦｒｅＦｌｇ」が「ＯＮ」ならば、Ｓ８１５へ進む。そうでないならば、Ｓ８０６へ進む。
Ｓ８０６では、ボーレートをＡ[bps]からＢ[bps]に設定し、Ｓ８０７へ進む。
Ｓ８０７では、送受信データ処理部Ａ１２０が通信接続コマンドを処理したかを確認し、処理していればＳ８０３へ進む。処理してない場合はＳ８０８へ進む。
【００５２】
Ｓ８０８では、送受信データ処理部Ａ１２０が受信エラーを検知したかを確認し、検知していればＳ８０９へ進む。検知していない場合はＳ８０７へ進む。
Ｓ８０９では、送受信データ処理部Ａ１２０で検知された受信エラーをカウントし、Ｓ８１０へ進む。
Ｓ８１０では、一定時間が経過したか判定し、経過していれば、Ｓ８１１へ進み、経過していなければ、Ｓ８０７へ戻る。
Ｓ８１１では、送受信データ処理部Ａ１２０でこれまで発生した受信エラーのカウント数が３以上であるかを判定し、条件を満たすならＳ８１２へ進む。満たさなければ、Ｓ８１３へ進む。
Ｓ８１２では、接続コマンド周期Ｔ[sec]を検知した値に設定して、Ｓ８１４へ進む。
Ｓ８１３では、接続コマンド周期Ｔ[sec]を規定値に設定して、Ｓ８１４へ進む。
Ｓ８１４では、通信接続コマンド周期Ｔ[sec]検知済みを示すフラグ「ＣｏｍＦｒｅＦｌｇ」を「ＯＮ」に設定して、Ｓ８１６へ進む。
Ｓ８１５では、通信接続コマンド周期Ｔ[sec]経過したかを判定する。経過していなければ、Ｓ８０２へ戻る。経過していれば、Ｓ８１６へ進む。
Ｓ８１６ではボーレートを変更し、すなわち、Ａ[bps]ならばＢ[bps]に、Ｂ[bps]ならばＡ[bps]に設定し、Ｓ８０２へ戻る。
【００５３】
以上の処理フローにより、通信装置Ａ１００が、通信装置Ｂ２００に合わせて通信ボーレートを変更し、同一のボーレートで通信を開始することが可能である。
【００５４】
次に、図９を用いて、受信エラーを検知することで、通信接続コマンドの受信間隔を検知し、その間隔から通信接続コマンド周期を検知する方法を説明する。
【００５５】
図９は、互いにボーレートが一致しない通信接続コマンドを送信する側と受信する側において、送信側の通信接続コマンドによって、受信側でエラーが発生することを示している。受信エラーの発生の検知によって、通信接続コマンドの発生がわかるので、図に示すように受信エラーの発生を３つ検知し、通信接続コマンドの受信時間が３つわかれば、それらの組み合わせで第１と第２の通信接続コマンド間隔がわかる。ここで２つの通信接続コマンド間隔から通信接続コマンド周期Ｔ[sec]が求められる。
【００５６】
以上の図９を用いて説明したとおり、受信エラーの発生を検知することで、通信接続コマンドの受信間隔を検知し、その間隔から通信接続コマンド周期を検知できる。
【００５７】
最後に、図３、図８、図１０を用いて、本発明の第２の実施例である通信装置が相互の通信ボーレートを変更し、送受信可能なボーレートを決定し、通信することが可能であることについて説明する。図１０の記載内容の説明は、図６と等しいので省略する。
【００５８】
区間［Ｔ１−Ｔ２］では、通信が開始され、通信接続コマンド周期Ｔ[sec]検知済みを示すフラグ「ＣｏｍＦｒｅＦｌｇ」を「ＯＦＦ」に設定（Ｓ８００）し、ボーレート設定部Ａ３３０は通信装置のボーレートを初期値のＡ[bps]に設定（Ｓ８０１）する。ボーレート設定部Ｂ２３０は通信装置のボーレートを初期値Ｃ[bps]に設定（Ｓ３０１）にする。データ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ３３０は、通信接続コマンド処理がない（Ｓ８０２）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ８０４）する。そして、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ８０５）ことを確認し、ボーレートをＢ[bps]に変更（Ｓ８０６）する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間が経過（Ｓ３０４）したことを確認し、ボーレートをＡ[bps]に変更（Ｓ３０５）する。
【００５９】
区間［Ｔ２−Ｔ３］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ３３０は、通信接続コマンド処理がない（Ｓ８０７）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ８０８）し、カウント（Ｓ８０９）する。一定時間が経過していない（Ｓ８１０）ので、ボーレートを変更しない（固定しておく）。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間が経過（Ｓ３０４）したことを確認し、ボーレートをＣ[bps]に変更（Ｓ３０５）する。
【００６０】
区間［Ｔ３−Ｔ４］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ３３０は、通信接続コマンド処理がない（Ｓ８０７）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ８０８）し、カウント（Ｓ８０９）する。一定時間が経過していない（Ｓ８１０）ので、ボーレートを変更しない（固定しておく）。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間が経過（Ｓ３０４）したことを確認し、ボーレートをＡ[bps]に変更（Ｓ３０５）する。
【００６１】
区間［Ｔ４−Ｔ５］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ３３０は、通信接続コマンド処理がない（Ｓ８０７）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ８０８）し、カウント（Ｓ８０９）する。そして、一定時間が経過している（Ｓ８１０）ことを確認し、これまで発生した受信エラーカウントが３つ以上ある（Ｓ８１１）ので、通信接続コマンド周期Ｔ[sec]を検知した値に設定（Ｓ８１２）する。さらに、通信接続コマンド周期Ｔ[sec]検知済みを示すフラグ「ＣｏｍＦｒｅＦｌｇ」を「ＯＮ」に設定（Ｓ８１４）する。そして、ボーレートをＡ[bps]に変更（Ｓ８１６）する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間が経過（Ｓ３０４）したことを確認し、ボーレートをＣ[bps]に変更（Ｓ３０５）する。
【００６２】
区間［Ｔ５−Ｔ６］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信側と受信側のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ３３０は、通信接続コマンド処理がない（Ｓ８０２）ことと、送受信データ処理部Ａ１２０の受信エラーの検知を確認（Ｓ８０４）する。そして、通信接続コマンド周期Ｔ[sec]を検知済みである（Ｓ８０５）ことを確認し、通信接続コマンド周期Ｔ[sec]経過していない（Ｓ８１５）ので、ボーレートを変更しない。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間が経過（Ｓ３０４）したことを確認し、ボーレートをＡ[bps]に変更（Ｓ３０５）する。
【００６３】
区間［Ｔ６−Ｔ７］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信側と受信側のボーレートが一致するので、通信接続コマンドが処理される。ボーレート設定部Ａ３３０は、送受信データ処理部Ａ１２０の通信接続コマンドの処理を確認（Ｓ８０２）して、ボーレートを決定（Ｓ８０３）する。通信接続コマンドが処理されたので、データ送受信部Ａ１１０が、応答コマンドをＡ[bps]でデータ送受信部Ｂ２１０に送信する。データ送受信部Ｂ２１０がＡ[bps]で受信する。送信側と受信側のボーレートが一致するので、応答コマンドが処理される。ボーレート設定部Ｂ２３０は、送受信データ処理部Ｂ２２０が応答コマンドを処理した（Ｓ３０２）ことを確認して、ボーレートを決定（Ｓ３０３）する。
【００６４】
以上、通信装置Ａ１００は、ボーレートを変化させて通信接続コマンドを入力する通信装置Ｂ２００との通信における通信接続コマンド周期を検知し、ボーレートを該周期に基づいて変更することで、送受信可能なボーレートを決定し、通信可能とする。
【実施例３】
【００６５】
続いて、以下、図１、図３、図１１〜図１５を参照して、本発明の第３の実施例による、通信装置について説明する。本実施例では、通信装置の一例として、調歩同期式シリアル通信を行い、予め定められた複数のボーレートの中から、通信装置間で通信可能なボーレートを決定する通信装置を例に説明する。
【００６６】
図１１は、本発明の第３の実施例で通信装置の構成を示している。なお、図１と同様の構成については同符号を付し、説明を省略する。
【００６７】
ボーレート設定部Ａ５３０は、図１のボーレート設定部Ａ１３０と、ほぼ同じ動作をするが、異なる判断にて動作するため別符号を付す。また、異なる部分のみ説明する。
【００６８】
ボーレート設定部Ａ５３０は、一定時間経過によってボーレートを変更する。また、受信エラー発生数の変化を複数検知し、通信接続コマンド周期検知後は、通信接続コマンド周期に従ってボーレートを変更する。
【００６９】
実施例３におけるボーレート設定部Ｂ２３０は、通信接続するまでボーレートを一定の時間ごとに変更する。ボーレートを一定とする時間の長さは、一定間隔で送信データである通信接続コマンドが生成される時間間隔よりも長いことが、実施例１や実施例２の場合とは異なる。ボーレートを一定とする時間の長さは、ボーレートが一致せずに、通信接続コマンドを再送する場合、少なくとも同じボーレートで通信接続コマンドを２回以上送信できる長さである。
【００７０】
次に、図１２を用いて、ボーレート設定部Ａ５３０による、通信装置Ａ１００が、通信装置Ｂ２００に合わせて通信ボーレートを変更し、同一のボーレートにする処理について説明する。
【００７１】
図１２は、ボーレート設定部Ａ５３０のボーレート決定までの処理を示すフローチャートである。
【００７２】
Ｓ１２０１では、ボーレートを初期値に設定し、Ｓ１２０２へ進む。ここで初期値は、ボーレート設定部Ａ５３０で設定可能な最速のボーレートであることが望ましいが、これに限定されることはない。
Ｓ１２０２では、送受信データ処理部Ａ１２０が通信接続コマンドを処理したかを確認し、処理していればＳ１２０３へ進む。処理してない場合はＳ１２０４へ進む。
Ｓ１２０３では、ボーレートを決定し、処理を終了する。
Ｓ１２０４では、送受信データ処理部Ａ１２０でこれまでカウントした受信エラー発生数の変化が３回以上で、通信接続コマンド周期Ｔ[sec]を検知可能ならば、Ｓ１２１１へ進む。検知不可能であれば、Ｓ１２０５へ進む。
Ｓ１２０５では、一定時間が経過したか判定し、経過していれば、Ｓ１２０６へ進み、
経過していなければ、Ｓ１２０２へ戻る。
Ｓ１２０６では、ボーレートをＡ[bps]からＢ[bps]に設定し、Ｓ１２０７へ進む。
Ｓ１２０７では、送受信データ処理部Ａ１２０が通信接続コマンドを処理したかを確認し、処理していればＳ１２０３へ進む。処理してない場合はＳ１２０８へ進む。
【００７３】
Ｓ１２０８では、送受信データ処理部Ａ１２０が受信エラー発生数の変化を検知したかを確認し、検知していればＳ１２０９へ進む。検知していない場合はＳ１２０７へ進む。
Ｓ１２０９では、受信エラー発生数の変化の回数をカウントする。そして、Ｓ１２１０へ進む。
Ｓ１２１０では、送受信データ処理部Ａ１２０でこれまでカウントした受信エラー発生数の変化の回数が３以上で、通信接続コマンド周期Ｔ[sec]を検知可能ならば、Ｓ１２１２へ進む。検知不可能であれば、Ｓ１２０７へ戻る。
Ｓ１２１１では、通信接続コマンド周期Ｔ[sec]経過したかを判定する。経過していなければ、Ｓ１２０２へ戻る。経過していれば、Ｓ１２１２へ進む。
Ｓ１２１２では、ボーレートを変更し、すなわち、Ａ[bps]ならばＢ[bps]に設定し、Ｂ[bps]ならばＡ[bps]に変更し、Ｓ１２０２へ戻る。
【００７４】
以上の処理フローにより、通信装置Ａ１００が、通信装置Ｂ２００に合わせて通信ボーレートを変更し、同一のボーレートにすることが可能である。
【００７５】
次に、図１３、図１４を用いて、受信エラー発生数の変化から、ボーレート変化を検知し、ボーレートの変化から通信接続コマンド周期を検知する方法を説明する。
【００７６】
図１３は、互いにボーレートが一致しない通信接続コマンドを送信する側と受信する側において、送信側の通信接続コマンドに依存して受信側で異なる態様でエラーが発生することを説明する図である。送信された１つの通信接続コマンドに対して受信側で発生するエラーの数が、送受信側双方のボーレートに依存して異なることを示している。受信エラーの検知によって、通信接続コマンドの発生がわかる。また、１つの通信接続コマンドに対して受信側で発生する受信エラー発生数の変化によって、送信側のボーレートの変化がわかる。従って、図に示すように受信エラー発生数の変化を３つ検知し、通信接続コマンドの受信時間が３つわかれば、それらの組み合わせで第１と第２の通信接続コマンド間隔がわかる。ここで２つの通信接続コマンド間隔から通信接続コマンド周期Ｔ[sec]が求められる。
【００７７】
図１４は、１つの通信接続コマンドに対して受信側で発生するエラーの数が、送信側のボーレートと受信側のボーレートによって異なることを示している。図の（Ａ）送信電文は、送信側機器から送信される電文のパルスを表している。（Ｂ）送信データ9800[bps]は、（Ａ）送信電文をボーレート9800[bps]で電文に変換する際に元となるデータである。（Ｃ）受信電文は、受信側機器で受信される電文のパルスを表している。（Ｄ）受信データ19.2k[bps]は、（Ｃ）受信電文をボーレート19.2k[bps]で受信した際に、電文から変換されたデータである。（Ｅ）受信電文は、受信側機器で受信される電文のパルスを表している。（Ｆ）受信データ３８．４ｋ［ｂｐｓ］は、（Ｅ）受信電文をボーレート38.4k[bps]で受信した際に、電文から変換されたデータである。ここで（Ａ）送信電文と（Ｃ）受信電文、（Ｅ）受信電文は全く同じ電文である。
【００７８】
受信ボーレートが早い場合、受信側で、最初にスタートビットを検知して電文解釈をした時点では、まだ、１つの通信接続コマンドの送信は完了していない（図１４の（Ｃ）、（Ｅ））。最初の受信でエラーとなる場合、再び電文を受信しようとするが、この時点でまだ送信中の１つ目の通信接続コマンドの信号をスタートビットであると擬似検知して、２回目の電文を受信し始める。このようにして、受信側のボーレートが送信側のボーレートより早い場合は、ボーレートが合致せず受信エラーが発生するときには１つの通信接続コマンドに対して複数の受信エラーが発生する。また、送信側のボーレート設定部Ｂ２３０では、応答コマンド処理がない場合は、同じボーレートで複数の通信接続コマンドを送信し、その通信接続コマンド同士の間隔は通信接続コマンドを送信している時間に対して十分に長い。受信エラーが発生する場合は、通信接続コマンドが送信されている間隔にほぼ等しい間隔を開けて複数の受信エラーが発生する。
【００７９】
このように、同一の（Ａ）送信電文と（Ｃ）受信電文と（Ｅ）受信電文でも、送受信のボーレートによって、送信データと受信データが異なり、受信データの数も異なる。だから、受信データの数に応じて受信エラー発生数も変化する。従って、受信側のボーレートが一定の時に、受信エラーの１つのセット内の受信エラー数が変化した時は、送信側のボーレートが変化したと考えることができる。
【００８０】
ここで、「受信エラー発生数」とは、所定時間内に発生した受信エラーの数であって、送信された１つの通信接続コマンドに対応して発生する受信エラーである。また、通常、送信側では、通信接続コマンドを送信した後に、その応答を待つための応答コマンド受信待機時間があり、応答コマンド受信待機時間の中で応答コマンドを受信しなかった場合に、次の通信接続コマンドを送信する。従って、設定可能な受信ボーレートの範囲の中で最も小さい（最も遅い）ボーレートで通信接続コマンドを受信に要する時間以上で、かつ、応答コマンド受信待機時間より短い所定の時間内に、発生した受信エラーを「受信エラー発生数」と定義する。ここで、応答コマンド受信待機時間は通信接続コマンドの送信時間に対して十分に長く、例えば、応答コマンド受信待機時間は通信接続コマンドの送信時間の２０倍以上、あるいは１００倍以上の所定の長さの時間が設定される。受信側の通信装置Ａから、送信側の通信装置Ｂに設定されている応答コマンド受信待機時間は不透明である可能性もある。従って、設定可能な受信ボーレートの範囲の中で最も小さい（最も遅い）ボーレートで通信接続コマンドを受信に要する時間の１〜１０倍の所定の時間内に、発生した受信エラーを「受信エラー発生数」と定義してもよい。
【００８１】
以上の図１３と図１４を用いて説明したとおり、受信エラー発生数の変化から、ボーレート変化を検知し、ボーレートの変化から通信接続コマンド周期を検知できる。
【００８２】
最後に、図３、図１２、図１５を用いて、本発明の第３の実施例である通信装置が相互の通信ボーレートを変更し、送受信可能なボーレートを決定し、通信することが可能であることについて説明する。図１５の記載内容の説明は、図６と等しいので省略する。
【００８３】
区間［Ｔ１−Ｔ２］では、通信が開始され、ボーレート設定部Ａ５３０は通信装置のボーレートを初期値のＡ[bps]に設定（Ｓ１２０１）する。ボーレート設定部Ｂ２３０は通信装置のボーレートを初期値Ｃ[bps]に設定（Ｓ３０１）にする。データ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０２）ことと、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ１２０４）こと、一定時間経過していない（Ｓ１２０５）ことを確認する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過（Ｓ３０４）していないことを確認する。続けて再度、データ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０２）ことと、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ１２０４）こと、一定時間経過している（Ｓ１２０５）ことを確認して、ボーレートをＢ[bps]に変更する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過している（Ｓ３０４）ことを確認して、ボーレートをＡ[bps]に変更する。
【００８４】
区間［Ｔ２−Ｔ３］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知していない（Ｓ１２０８）ことを確認する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過していない（Ｓ３０４）ことを確認する。続けて再度、データ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知していない（Ｓ１２０８）ことを確認する。Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過している（Ｓ３０４）ことを確認し、ボーレートをＣ[bps]に変更する。
【００８５】
区間［Ｔ３−Ｔ４］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。さらに送信ボーレートが一定で受信ボーレートが変化したので、受信エラー発生数は変化する。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知している（Ｓ１２０８）ことを確認する。さらに、受信エラー発生数の変化をカウント（Ｓ１２０９）して、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ１２１０）ことを確認する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過していない（Ｓ３０４）ことを確認する。続けて再度、データ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知していない（Ｓ１２０８）ことを確認する。Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過している（Ｓ３０４）ことを確認し、ボーレートをＡ[bps]に変更する。
【００８６】
区間［Ｔ４−Ｔ５］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。さらに送信ボーレートが一定で受信ボーレートが変化したので、受信エラー発生数は変化する。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知している（Ｓ１２０８）ことを確認する。さらに、受信エラー発生数の変化をカウント（Ｓ１２０９）して、通信接続コマンド周期Ｔ[sec]を検知していない（Ｓ１２１０）ことを確認する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過していない（Ｓ３０４）ことを確認する。続けて再度、データ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知していない（Ｓ１２０８）ことを確認する。Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過している（Ｓ３０４）ことを確認し、ボーレートをＣ[bps]に変更する。
【００８７】
区間［Ｔ５−Ｔ６］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＢ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。さらに送信ボーレートが一定で受信ボーレートが変化したので、受信エラー発生数は変化する。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０７）ことと、送受信データ処理部Ａ１２０の受信エラー発生数の変化を検知している（Ｓ１２０８）ことを確認する。さらに、受信エラー発生数の変化をカウント（Ｓ１２０９）して、カウント数が３以上であるので、通信接続コマンド周期Ｔ[sec]を検知している（Ｓ１２１０）ことを確認して、ボーレートをＡ[bps]に変更する。ボーレート設定部Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過していない（Ｓ３０４）ことを確認する。続けて再度、データ送受信部Ｂ２１０が、通信接続コマンドをＣ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信時と受信時のボーレートが異なるので、受信エラーとなる。ボーレート設定部Ａ５３０は、通信接続コマンド処理がない（Ｓ１２０２）ことと、通信接続コマンド周期Ｔ[sec]を検知している（Ｓ１２０４）こと、通信接続コマンド周期Ｔ[sec]経過していない（Ｓ１２１１）ことを確認する。Ｂ２３０は、応答コマンド処理がない（Ｓ３０２）まま一定時間経過している（Ｓ３０４）ことを確認し、ボーレートをＡ[bps]に変更する。
【００８８】
区間［Ｔ６−Ｔ７］では、再びデータ送受信部Ｂ２１０が、通信接続コマンドをＡ[bps]で送信する。データ送受信部Ａ１１０がＡ[bps]で受信する。送信時と受信時のボーレートが一致するので、通信接続コマンドが処理される。ボーレート設定部Ａ５３０は、送受信データ処理部Ａ１２０の通信接続コマンドの処理を確認（Ｓ１２０２）して、ボーレートを決定（Ｓ１２０３）する。通信接続コマンドが処理されたので、データ送受信部Ａ１１０が、応答コマンドをＡ[bps]で送信する。データ送受信部Ｂ２１０がＡ[bps]で受信する。送信時と受信時のボーレートが一致するので、応答コマンドが処理される。ボーレート設定部Ｂ２３０は、送受信データ処理部Ｂ２２０が応答コマンドを処理した（Ｓ３０２）ことを確認して、ボーレートを決定（Ｓ３０３）する。
【００８９】
なお、ボーレート設定部Ｂ２３０は通信接続するまでボーレートを一定の時間ごとに変更するが、本実施例３においては、ボーレートを一定とする時間の長さは、通信接続コマンドを２回送信できる長さである場合を例示した。しかし、実施例３の本発明はこれに限定されることはない。ボーレートを一定とする時間の長さは、通信接続コマンドを１回送信できる長さであっても、３回以上送信できる長さであってもよい。実施例３の構成においては、ボーレートを一定で通信している時間内における通信接続コマンドが送信される回数に依らずに、確実に通信接続コマンド周期を検出することが可能である。なお、実施例１、２での説明においては説明の簡略化のために、データ送受信部Ａ１１０は、１つの通信接続コマンドを受けた時に、送受信側のボーレートが一致しない場合は、受信エラーが１回発生するものとして説明した。実際には、実施例３で説明したように、受信ボーレートが送信ボーレートより大きい場合には、１つの通信接続コマンドに対して複数の受信エラー（フレーミングエラー）が発生する。実際には、選択肢として使用するボーレートで通信接続コマンドを送信する時間に対して、データ送受信部Ｂ２１０が通信接続コマンドを送信してから次の通信接続コマンドを送信するまでの待機時間である応答コマンド受信待機時間は十分に長く設定される。このことを利用して、１つの通信接続コマンドに対して発生する受信エラー（フレーミングエラー）を１つのエラーとして取り扱うようにすることで、実施例１，２の発明は詳述したとおりに実行することができる。例えば、通信接続コマンドを送信する時間に関連して設定された所定の時間内に発生した受信エラーを１つのエラーとして取り扱ってもよい。設定可能な受信ボーレート範囲の中で最も小さい（最も遅い）ボーレートで通信接続コマンドの受信に要する時間の１〜１０倍の所定の時間内に、発生した受信エラーを、１つのエラーとして取り扱ってもよい。また、応答コマンド受信待機時間に関連して設定された所定の時間以上互いに離れて発生した受信エラーは異なるエラーとして取り扱ってもよい。
【００９０】
以上、通信装置Ａ１００は、ボーレートを変化させて通信接続コマンドを入力する通信装置Ｂ２００との通信における通信接続コマンド周期を検知し、ボーレートを該周期に基づいて変更することで、送受信可能なボーレートを決定し、通信可能とする。
【００９１】
また、例えば、交信する２つの通信装置が互いに送受信する通信接続コマンドの間隔を一定間隔としたが、不定間隔であってもよい。その場合には、コマンド間隔の検知として、実際に通信接続コマンドを送信する時間をμsec 単位で行うように設定し、応答コマンド受信待機時間をmsec単位で行うように設定する。そうすると、この双方の時間差を基に通信接続コマンド間隔を検知することができる。これに、実施例３で示すエラー発生数の変化によるボーレートの変化を検知する方法を組み合わせれば、通信接続コマンド周期を検知することができる。その結果、自身のボーレートを相手装置の周期に合わせたものへ変更することで、正常に送受信可能なボーレートを決定し、通信することが可能である。
【００９２】
また、例えば、交信する２つの通信装置が予め定められた通信可能なボーレートを２種類としたが、２種類以上であってもよい。その場合には、コマンド間隔の検知として、検知するエラー発生数の最大と最小の極値を検知して、その極値の間隔から通信接続コマンド周期を検知する事ができる。その結果、自身のボーレートを相手装置の周期に合わせたものへ変更することで、正常に送受信可能なボーレートを決定し、通信することが可能である。
【００９３】
本発明の通信装置を有するレンズ装置、及び該レンズ装置と該レンズ装置を操作するデマンドとカメラ装置を含む撮像装置によって、通信接続する互いのボーレートの仕様の差異に関わらず、汎用性の高いレンズ装置、撮像装置を提供することができる。
【００９４】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【００９５】
１１０  データ送受信部（通信手段）
１３０  ボーレート設定部（ボーレート設定手段、周期検出手段）
【図１】
2017034448.tif 000003
【図２】
2017034448.tif 000004
【図３】
2017034448.tif 000005
【図４】
2017034448.tif 000006
【図５】
2017034448.tif 000007
【図６】
2017034448.tif 000008
【図７】
2017034448.tif 000009
【図８】
2017034448.tif 000010
【図９】
2017034448.tif 000011
【図１０】
2017034448.tif 000012
【図１１】
2017034448.tif 000013
【図１２】
2017034448.tif 000014
【図１３】
2017034448.tif 000015
【図１４】
2017034448.tif 000016
【図１５】
2017034448.tif 000017