(57)【要約】【課題】本明細書は、コンピュータ間のデータ通信において、欠落したデータを特定し、再送する通信システムを提供する。【解決手段】本明細書が開示する通信システムは、第１通信線と第２通信線で接続されている第１コンピュータと第２コンピュータを備える。第１コンピュータは、第１通信線を介してデータを第２コンピュータへ送信する。第２コンピュータは、（１）それぞれのデータを受信する毎に受信完了を示すＡＣＫ信号を第１コンピュータへ送信し、（２）受信したデータのデータ識別子を確認して欠落しているデータ識別子を検出した場合は欠落しているデータ識別子を第２通信線を介して第１コンピュータへ送信する。第１コンピュータは、ＡＣＫ信号を受信できなかったデータのデータ識別子と第２通信線を介して受信したデータ識別子を照合し、両者が一致する場合は、そのデータ識別子のデータを、第１通信線を介して第２コンピュータへ再送信する。【選択図】図１
2020061655.tif 000002
【特許請求の範囲】
【請求項１】
第１コンピュータと、
第１通信線および第２通信線で前記第１コンピュータと接続されている第２コンピュータと、
を備えており、
前記第１コンピュータと前記第２コンピュータの間で、予め決められた通信周期で、予め決められた個数のデータであってそれぞれが予め決められている自己のデータ識別子を含んでいるデータを送受信することが決められており、
前記第１コンピュータは、前記第１通信線を介して前記通信周期で前記データを前記第２コンピュータへ送信し、
前記第２コンピュータは、
（１）それぞれの前記データを受信する毎に受信完了を示すＡＣＫ信号を、前記第１通信線を介して前記第１コンピュータへ送信し、
（２）受信した前記データの前記データ識別子を確認して欠落している前記データ識別子を検出した場合は欠落している前記データ識別子を前記第２通信線を介して前記第１コンピュータへ送信し、
前記第１コンピュータは、前記ＡＣＫ信号を受信できなかった前記データの前記データ識別子と前記第２通信線を介して受信した前記データ識別子を照合し、
（１）両者が相違する場合は識別子相違を通知する信号を所定のデバイスへ出力し、
（２）両者が一致する場合は、そのデータ識別子の前記データを前記第１通信線を介して前記第２コンピュータへ再送信する、
通信システム。
【請求項２】
前記第２コンピュータは、１回の前記通信周期において、前記ＡＣＫ信号を受信できなかった前記データの前記データ識別子と前記第２通信線を介して受信した前記データ識別子を照合して両者が一致するデータ識別子が複数存在する場合は、予め決められたデータ識別子優先順位に従って優先順位の高い前記データ識別子の前記データから再送信する、請求項１に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書が開示する技術は、２個のコンピュータが通信線を介して接続されている通信システムに関する。
【背景技術】
【０００２】
複数のコンピュータが通信線を介してデータを送受信する通信システムが広く知られている。ここで、コンピュータは、なんらかの機械を制御する制御装置であってもよい。特許文献１には、制御装置間の通信が一時的に途絶えた原因を判定することのできる技術が開示されている。特許文献１に開示されている制御システム（通信システム）は、互いに通信を行う第１コンピュータと第２コンピュータを備えている。第１コンピュータは、第２コンピュータによる定期メッセージの送信が途絶えた期間である途絶期間が生じた場合において、途絶期間が生じた原因が、第２コンピュータのリセットによるものか、それとも一時的な通信経路の異常によるものか、を判定する判定部を有している。判定部は、途絶期間の長さに基づいて、途絶期間が生じた原因の判定を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−９２５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信途絶が生じた場合、受信側のコンピュータでは、受信すべきデータに欠落が生じることになる。本明細書は、２個のコンピュータの間でデータを送受信する通信システムにおいて、通信不良が生じた場合に欠落したデータを確実に特定し、可能であれば欠落したデータを再送することのできる技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書が開示する通信システムは、第１コンピュータと、第１通信線および第２通信線を介して第１コンピュータと通信可能に接続されている第２コンピュータを備えている。第１コンピュータと第２コンピュータの間で、予め決められた通信周期で、予め決められた個数のデータであって自己のデータ識別子を含んでいるデータを送受信することが決められている。送受信するデータの個数と全てのデータ識別子は第１、第２コンピュータのいずれもが記憶している。
【０００６】
第１コンピュータは、第１通信線を介して上記の通信周期で予め決められた個数のデータを第２コンピュータへ送信する。データを受信する第２コンピュータは、次の処理を実行する。（１）それぞれのデータを受信する毎に受信完了を示すＡＣＫ信号を、第１通信線を介して第１コンピュータへ送信する。（２）受信したデータのデータ識別子を確認して欠落しているデータ識別子を検出した場合は欠落していることが判明したデータ識別子を第２通信線を介して第１コンピュータへ送信する。ここで第２コンピュータが送信するデータ識別子は、第２コンピュータが予め記憶しているものである。第１コンピュータは、次の処理を実行する。（１）ＡＣＫ信号を受信できなかったデータのデータ識別子と第２通信線を介して受信したデータ識別子を照合する。両者が相違する場合は識別子相違を通知する信号を所定のデバイスへ出力する。（２）両者が一致する場合は、そのデータ識別子のデータを第１通信線を介して第２コンピュータへ再送信する。
【０００７】
この通信システムは、データの欠落が生じた場合、受信側のコンピュータ（第２コンピュータ）は、データ通信に用いた通信線（第１通信線）とは別の通信線（第２通信線）を使って欠落したデータのデータ識別子を送信元（第１コンピュータ）へ通知する。それゆえ、データ通信に用いた通信線（第１通信線）に異常が生じた場合でも、データ欠落を送信元（第１コンピュータ）に知らせることができる。なお、通信線に断線などの不具合が生じた場合は、それ以上はデータを送ることができないので、両コンピュータは通信を停止することになる。
【０００８】
送信元のコンピュータ（第１コンピュータ）は、ＡＣＫ信号を監視してデータが届いたか否かを確認するだけでなく、ＡＣＫが受信できなかった場合には、第２通信線を通じて第１コンピュータから送られているデータ識別子を使って未達のデータを特定する。すなわち、ＡＣＫが受信できなかったデータのデータ識別子と、第２通信線を介して送られてきたデータ識別子を照合する。両者が一致すれば、そのデータ識別子のデータが未達であることが確定する。その場合は、送信側のコンピュータ（第１コンピュータ）は、欠落したデータを再送する。両者が一致しない場合には、どこかで不具合が生じている可能性が高いので、両コンピュータは通信を停止することになる。
【０００９】
第２コンピュータは、１回の通信周期において、ＡＣＫ信号を受信できなかったデータのデータ識別子と第２通信線を介して受信したデータ識別子を照合して両者が一致するデータ識別子が複数存在する場合は、予め決められたデータ識別子優先順位に従って優先順位の高いデータ識別子のデータから再送信するようにしてもよい。この構成によれば重要なデータを優先的に再送することが可能となる。この構成は、短い通信周期で多数のデータを送る場合に有効である。
【００１０】
本明細書が開示する技術の詳細とさらなる改良は以下の「発明を実施するための形態」にて説明する。
【図面の簡単な説明】
【００１１】
【図１】実施例の通信システムのブロック図である。
【図２】定期通信処理のフローチャートである（受信側）。
【図３】定期通信処理のフローチャートである（送信側）。
【図４】通信チェック処理のフローチャートである。
【発明を実施するための形態】
【００１２】
図面を参照して実施例の通信システム２を説明する。図１に、通信システム２のブロック図を示す。実施例の通信システム２は、電気自動車に実装されている。通信システム２は、走行用のモータを制御する制御コンピュータ１０と、電気自動車の全体を統括する上位コンピュータ２０との間で構築されている。
【００１３】
電気自動車は走行用のモータ１７を備えており、制御コンピュータ１０は、上位コンピュータ２０からの指令に基づいて、モータ１７を制御する。上位コンピュータ２０は、アクセル開度と車速に基づいて、モータ１７の目標出力指令を決定し、制御コンピュータ１０へ送信する。制御コンピュータ１０は、受信した目標出力指令に基づいて、電源１６の出力電力（直流）を、モータ１７の駆動電力（交流）に変換し、モータ１７へ出力する。上位コンピュータ２０は、ブレーキペダルが踏まれたことを検知すると、モータ１７の回転数が、そのときの車速に相当する回転数よりも遅くなるように目標出力指令を調整する。そのような目標出力指令に追従するように制御コンピュータ１０がモータ１７を制御すると、モータ１７は車両の慣性力で出力軸側から逆駆動され、発電する。発電で得られた電力（回生電力）は電源１６の充電に使われる。
【００１４】
制御コンピュータ１０は、複数のＣＰＵ（メインＣＰＵ１２、サブＣＰＵ１３）を有している。サブＣＰＵ１３には、不揮発性のローカルメモリ１４が接続されている。メインＣＰＵ１２とサブＣＰＵ１３は、制御コンピュータ１０の内部バス（通信線）で相互に通信可能に接続されている。サブＣＰＵ１３とローカルメモリ１４も内部バスで接続されている。メインＣＰＵ１２とサブＣＰＵ１３は、モータ１７の制御に関するさまざまな処理を分担して実行する。モータ１７の制御に関する処理については説明を省略する。
【００１５】
上位コンピュータ２０は、メインＣＰＵ２１と、ローカルメモリ２２を備えている。メインＣＰＵ２１とローカルメモリ２２は、内部バス（通信線）で接続されている。上位コンピュータ２０のメインＣＰＵ２１と制御コンピュータ１０のメインＣＰＵ１２は、専用の通信線（専用線５）によって、相互に通信可能に接続されている。
【００１６】
電気自動車の車内には、ネットワーク（コントロールエリアネットワーク：ＣＡＮ４）が張り巡らされており、上位コンピュータ２０と制御コンピュータ１０は、ＣＡＮ４によっても通信可能に接続されている。すなわち、上位コンピュータ２０と制御コンピュータ１０は、２系統の通信線で通信可能に接続されている。ＣＡＮ４には、ほかにもさまざまなデバイスが相互に通信可能に接続されている。例えば、インストルメントパネルの警告灯などを制御するインパネコンピュータ３がＣＡＮ４に接続されている。
【００１７】
上記したように、制御コンピュータ１０と上位コンピュータ２０は、専用線５とＣＡＮ４の２系統の通信線で接続されている。専用線５の方がＣＡＮ４よりも通信速度が速い。制御コンピュータ１０と上位コンピュータ２０は、予め決められた通信周期で予め決められた個数のデータをやり取りすることがプロトコルとして定められている。決められた個数のデータのそれぞれには、特有のデータ識別子が割り当てられている。データ識別子は制御コンピュータ１０と上位コンピュータ２０の双方が記憶しており、受信した側は、受信したデータのデータ識別子を確認することで、データの欠落を検知することができるようになっている。制御コンピュータ１０から上位コンピュータ２０へは、モータ１７に関わる情報を含むデータや、電源１６に関する情報を含むデータなどが送られる。
【００１８】
通信システム２（制御コンピュータ１０と上位コンピュータ２０）は、専用線５を介して定期通信を行うが、定期通信でデータの欠落が生じたときには、ＣＡＮ４も使って、欠落データの再送を行う仕組みを有している。以下、制御コンピュータ１０から上位コンピュータ２０への定期通信の処理について説明する。
【００１９】
図２に、受信側、すなわち、上位コンピュータ２０(メインＣＰＵ２１)が実行する定期通信処理のフローチャートを示す。図２の処理は、予め定められている通信周期で定期的に実行される。送信側、すなわち、制御コンピュータ１０（メインＣＰＵ１２）の処理については後述する。
【００２０】
上位コンピュータ２０は、データを受信すると、直ちにＡＣＫ信号を送信する（ステップＳ２、Ｓ３）。データの受信とＡＣＫ信号の送信は、専用線５を介して行われる。ＡＣＫ信号とは、データを受信したこと（受信完了）を送信元（制御コンピュータ１０）に知らせるための信号である。一回の通信周期に授受されるデータの個数は決まっているが、上位コンピュータ２０は、個々のデータを受信する毎にＡＣＫ信号を制御コンピュータ１０へ送信する。それぞれのデータにはデータの先頭を示すヘッダと終端を示すフッダが含まれており、上位コンピュータ２０は、フッダを識別すると、ＡＣＫ信号を送信する。
【００２１】
データのヘッダには、そのデータが何のデータであるかを示すデータ識別子が含まれている。上位コンピュータ２０は、受信したデータのヘッダからデータ識別子を取り出して、記憶する（ステップＳ４）。図２には示されていないが、データの本体も当然に記憶され、それぞれの用途に応じて使われる。
【００２２】
上位コンピュータ２０は、最後のデータを受信するか（ステップＳ５：ＹＥＳ）、あるいは、最初のデータを受信してから所定の通信時間が経過するまで（ステップＳ６：ＹＥＳ）、データの受信を続ける（ステップＳ５：ＮＯ、Ｓ６：ＮＯ、Ｓ２）。
【００２３】
最後のデータを受信するか（ステップＳ５：ＹＥＳ）、あるいは、最初のデータを受信してから所定の通信時間が経過すると（ステップＳ６：ＹＥＳ）、上位コンピュータ２０は、記憶したデータ識別子の中に、欠落している識別子がないかをチェックする（ステップＳ７）。先に述べたように、プロトコルにより、１回の定期通信で送受信するデータの個数とそれぞれのデータの識別子（データ識別子）が予め定められている。上位コンピュータ２０のローカルメモリ２２には、全てのデータ識別子が格納されている。上位コンピュータ２０は、ステップＳ４で記憶したデータ識別子とローカルメモリ２２に予め格納されているデータ識別子を比較することで、受信すべき全てのデータのデータ識別子が揃っているか否かをチェックすることができる。この処理により、上位コンピュータ２０は、データの欠落の有無を判別することができる。
【００２４】
データの欠落がなかった場合（すなわち、全てのデータが正常に受信できた場合）は、そのまま定期受信処理を終える（ステップＳ８：ＮＯ）。データの欠落が検知された場合には、上位コンピュータ２０は、欠落したデータのデータ識別子を、ＣＡＮ４を介して制御コンピュータ１０へ送る（ステップＳ８：ＹＥＳ、Ｓ９）。ここで送信するデータ識別子は、ローカルメモリ２２に予め格納されているデータ識別子である。
【００２５】
上位コンピュータ２０は、欠落したデータの個数だけ、カウンタを増加させる（ステップＳ１０）。カウンタは、上位コンピュータ２０のプログラム中の変数である。カウンタは、データ欠落の頻度を確かめるために用意されている。カウンタの値が所定の閾値（頻度閾値）を超えると、データ欠落の頻度が高すぎるとして、上位コンピュータ２０は、所定の通信エラー処理を実行する（ステップＳ１１：ＹＥＳ、Ｓ１２）。カウンタの値が頻度閾値を下回っている場合は、そのまま処理を終了する（ステップＳ１１：ＮＯ）。データ欠落は、ビットエラーなどで時折は生じるものであり、ある程度の頻度での発生は許容される。カウンタは、例えば、車両のイグニッションスイッチがオンにされたときにリセットされる。
【００２６】
図２は、定期通信処理のフローチャートである。ステップＳ８にてデータの欠落が検知され、欠落したデータのデータ識別子を制御コンピュータ１０へ送ると、制御コンピュータ１０は、欠落したデータの再送を試みる。制御コンピュータ１０の処理については後述する。再送データの受信処理については説明を省略する。
【００２７】
ステップＳ１２の通信エラー処理は、例えば、上位コンピュータ２０が、ＣＡＮ４を介してインパネコンピュータ３へ、異常発生を通知する信号を送信したり、異常発生を通知するエラーコードをローカルメモリ２２へ出力する処理などである。異常発生を通知する信号を受けたインパネコンピュータ３は、例えば、インストルメントパネルの所定の警告灯を点灯させ、ドライバに異常発生を知らせる。また、ローカルメモリ２２は、不揮発性のメモリであり、後にサービススタッフによって参照される。サービススタッフは、ローカルメモリ２２に記憶されたエラーコードをチェックすることで、車両の状態を知ることができる。
【００２８】
図３に、送信側、すなわち、制御コンピュータ１０（メインＣＰＵ１２）の定期通信処理のフローチャートを示す。制御コンピュータ１０は、まず、決められた個数のデータを準備する（ステップＳ２２）。それぞれのデータのヘッダには、決められたデータ識別子が格納される。次に制御コンピュータ１０は、決められた順番で１個ずつデータを送る。データは、専用線５を介して送られる。１個のデータを送信したら（ステップＳ２３）、制御コンピュータ１０は、決められた時間（ＡＣＫ待ち時間）だけ、上位コンピュータ２０からのＡＣＫ信号を待つ（ステップＳ２４、Ｓ２５）。ＡＣＫ信号を受信したら、制御コンピュータ１０は、次のデータを送信し、再びＡＣＫ信号を待つ（ステップＳ２４：ＹＥＳ、Ｓ２７：ＮＯ、Ｓ２３）。
【００２９】
ＡＣＫ待ち時間が経過してもＡＣＫ信号を受信できない場合には、上位コンピュータ２０がデータを受け取っていないと判断し、そのデータのデータ識別子を記憶する（ステップＳ２５：ＹＥＳ、Ｓ２６）。なお、図２を参照して説明したように、上位コンピュータ２０は、データを受信したら直ちにＡＣＫ信号を送信する（図２、ステップＳ２、Ｓ３）。通信が正常である場合、データを送信してから数ミリ秒程度でＡＣＫ信号が送られてくるはずである。それゆえ、ＡＣＫ待ち時間は、１０ミリ秒程度に設定されていれば十分である。データ識別子を記憶した後、制御コンピュータ１０は、次のデータを送信する（ステップＳ２７：ＮＯ、Ｓ２３）。全てのデータを送信したら、制御コンピュータ１０は、定期通信処理を終了する（ステップＳ２７：ＹＥＳ）。
【００３０】
定期通信処理が終了した後、制御コンピュータ１０は、図４に示す通信チェック処理を実行する。通信チェック処理は、上位コンピュータ２０が受信できなかったデータがあればそれを確認して再送信する処理である。制御コンピュータ１０は、ＡＣＫ信号を受信できなったデータのデータ識別子（図３のステップＳ２６で記憶したデータ識別子）があるか否か、および、ＣＡＮ４を介して上位コンピュータ２０から送られたデータ識別子があるか否かをチェックする（ステップＳ３２）。ＡＣＫ信号不受信のデータ識別子とＣＡＮ４を介して受信したデータ識別子のいずれもがなければ、今回の通信周期においては全てのデータが正常に送信できたとして、処理を終了する。
【００３１】
ＡＣＫ信号不受信のデータ識別子とＣＡＮ４を介して受信したデータ識別子の両方が存在する場合、制御コンピュータ１０は、両者を照合し、両者が一致しているか否かを確認する（ステップＳ３３）。データ識別子が一致していた場合、制御コンピュータ１０は、そのデータ識別子のデータを上位コンピュータ２０へ再送する。このとき、再送すべきデータが複数ある場合には、予め定められているデータ識別子優先順位に従って、優先度の高いデータから再送する（ステップＳ３４：ＹＥＳ、Ｓ３５：ＹＥＳ、Ｓ３７）。例えば、モータ１７の制御に関するデータは、電源１６の電力残量に関するデータよりも高い優先度が設定されている。ステップＳ３４で一致したデータ識別子が一つの場合には、そのデータ識別子に対応するデータを再送すればよい（ステップＳ３５：ＮＯ、Ｓ３６）。こうして、ＡＣＫ信号不受信のデータ識別子と、ＣＡＮ４を介して上位コンピュータ２０から送られたデータ識別子が一致していたら、そのデータ識別子に対応するデータは再送される。
【００３２】
一方、ステップＳ３２において、ＡＣＫ信号不受信のデータ識別子とＣＡＮ４を介して受信したデータ識別子の一方のみが存在する場合、および、ステップＳ３３でデータ識別子を照合した結果が不一致だった場合（ステップＳ３４、ＮＯ）、データの欠落があるがどのデータが欠落しているかを特定することができないので、制御コンピュータ１０は、通信エラー処理を実行する（ステップＳ３８）。
【００３３】
ステップＳ３８の通信エラー処理は、図２のステップＳ１２の通信エラー処理と概ね同じである。例えば、制御コンピュータ１０（メインＣＰＵ１２）が、ＣＡＮ４を介してインパネコンピュータ３へ、異常発生を通知する信号を送信したり、異常発生を通知するエラーコードをサブＣＰＵ１３へ通知する処理などである。別言すれば、制御コンピュータ１０（メインＣＰＵ１２）は、ＡＣＫ信号不受信のデータ識別子とＣＡＮ４を介して受信したデータ識別子の両者が相違する場合は、識別子相違を通知する信号を所定のデバイス（インパネコンピュータ３やサブＣＰＵ１３など）へ出力する。
【００３４】
エラーコードを受信したサブＣＰＵ１３は、そのエラーコードをローカルメモリ１４へ出力する。異常発生を通知する信号を受けたインパネコンピュータ３は、例えば、インストルメントパネルの所定の警告灯を点灯させ、ドライバに異常発生を知らせる。また、ローカルメモリ１４は、上位コンピュータ２０のローカルメモリ２２と同様に不揮発性のメモリであり、後にサービススタッフによって参照される。サービススタッフは、ローカルメモリ１４に記憶されたエラーコードをチェックすることで、車両の状態を知ることができる。
【００３５】
以上、説明したように、図１の通信システム２は、欠落したデータを特定し、可能であれば再送する。制御コンピュータ１０は、ＡＣＫ信号不受信のデータ識別子と、ＣＡＮ４を介して上位コンピュータ２０から送られたデータ識別子を照合することで、欠落したデータを特定する。また、制御コンピュータ１０は、欠落したデータが複数個存在する場合には、予め定められている優先順位に従って、優先度の高いデータから再送する。
【００３６】
実施例で説明した技術に関する留意点を述べる。本明細書が開示する技術は、電気自動車以外にも適用することができる。通信を行うコンピュータは、機械を制御するコントローラであってもよいし、算術処理だけを行うコンピュータであってもよい。
【００３７】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００３８】
２：通信システム
３：インパネコンピュータ
５：専用線
１０：制御コンピュータ
１２、２１：メインＣＰＵ
１３：サブＣＰＵ
１４、２２：ローカルメモリ
１６：電源
１７：モータ
２０：上位コンピュータ
【図１】
2020061655.tif 000003
【図２】
2020061655.tif 000004
【図３】
2020061655.tif 000005
【図４】
2020061655.tif 000006