(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0026】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
(実施の形態1)
図1は、実施の形態1における通信システム1の要部構成を示すブロック図である。通信システム1は、車両に好適に搭載され、中継装置2、N(=3)個の通信線3,4,5及び6つの通信装置30,31,40,41,50,51を備える。中継装置2は、N(=3)個の通信線3,4,5夫々に接続されている。
【0027】
通信線3に2つの通信装置30,31が各別に接続されている。通信線4に2つの通信装置40,41が各別に接続されている。通信線5に2つの通信装置50,51に接続されている。
このように、6つの通信装置30,31,40,41,50,51夫々はN(=3)個の通信線3,4,5中の1つに接続されている。
【0028】
6つの通信装置30,31,40,41,50,51夫々は、車両に搭載された図示しない電気機器を制御するECUである。6つの通信装置30,31,40,41,50,51は互いに通信し、通信装置30,31,40,41,50,51の通信によって、複数の電気機器を連動させる制御処理が実現される。中継装置2は、6つの通信装置30,31,40,41,50,51間の通信を中継する。
【0029】
中継装置2及び通信装置30,31は通信線3を介して互いにメッセージ、所謂データフレームを送受信する。中継装置2及び通信装置40,41は通信線4を介して互いにメッセージを送受信する。中継装置2及び通信装置50,51は通信線5を介して互いにメッセージを送受信する。中継装置2は、通信線3,4,5の中で異なる通信線に接続される複数の通信装置の通信を中継する。
【0030】
6つの通信装置30,31,40,41,50,51夫々は、中継装置2からメッセージを受信し、中継装置2にメッセージを送信する。中継装置2は、6つの通信装置30,31,40,41,50,51からメッセージを受信し、6つの通信装置30,31,40,41,50,51にメッセージを送信する。中継装置2は、例えば、通信装置30が通信線3を介して送信したメッセージを、通信線4に接続されている通信装置40と、通信線5に接続されている通信装置50とに送信する。
【0031】
中継装置2は、送信禁止を示すメッセージを6つの通信装置30,31,40,41,50,51夫々に送信する。6つの通信装置30,31,40,41,50,51夫々は、送信禁止を示すメッセージを受信した場合、メッセージの送信を停止する。送信禁止を示すメッセージは禁止情報に相当する。
【0032】
通信線3,4,5夫々は、所謂ツイストペア線であり、撚り合わされた図示しない2つの導線によって構成される。また、メッセージは複数のビットのデータによって構成され、1ビットのデータは、「0」(ドミナント)又は「1」(リセッシブ)で表される。
【0033】
通信装置30,31夫々は、通信線3を構成する2つの導線に電圧を印加することによって、1ビットのデータを送信する。具体的に、通信装置30,31夫々は、2つの導線間の電圧差が所定電圧以上の一定電圧、例えば2Vとなるように、2つの導線夫々に電圧を印加する。これにより、データ「0」が送信される。また、通信装置30,31夫々は、2つの導線間の電圧差が所定電圧未満の一定電圧、例えば、0Vとなるように、2つの導線夫々に電圧を印加する。これにより、データ「1」が送信される。所定電圧は例えば1Vである。
【0034】
更に、通信装置30,31夫々は、通信線3を構成する2つの導線間の電圧差を検出することによって、1ビットのデータ「0」又は「1」を受信する。通信装置30,31夫々は、検出した電圧差が所定電圧以上である場合、データ「0」を受信し、検出した電圧差が所定電圧未満である場合、データ「1」を受信する。
【0035】
データ「0」及び「1」が通信線3に同時に送信された場合、通信線3を構成する2つの導線間の電圧差は所定電圧以上となり、データ「0」が受信される。
【0036】
通信装置40,41夫々は、通信装置30,31と同様に1ビットのデータを送受信する。通信装置30,31の送受信の説明において、通信線3及び通信装置30,31夫々を通信線4及び通信装置40,41に置き換えることによって、通信装置40,41の送受信を説明することができる。
同様に、通信装置50,51夫々も、通信装置30,31と同様に1ビットのデータを送受信する。通信装置30,31の送受信の説明において、通信線3及び通信装置30,31夫々を通信線5及び通信装置50,51に置き換えることによって、通信装置50,51の送受信を説明することができる。
【0037】
図2はメッセージの構成の説明図である。通信線3,4,5夫々を介した通信、即ち、メッセージの送受信は、CAN(Controller Area Network)プロトコルに従って行われる。CAN通信で用いられるメッセージは、
図2に示されているように、SOF(Start Of Frame)、アービトレーションフィールド、コントロールフィールド、データフィールド、CRC(Cyclic Redundancy Check)フィールド、ACK(Acknowledge)及びEOF(End Of Frame)によって構成される。
【0038】
SOFは1つのビットによって構成され、このビットのデータは「0」(ドミナント)である。SOFはメッセージの開始を示す。
通信線3,4,5夫々において、複数のメッセージが同時に送信された場合、アービトレーション(調停)が行われる。アービトレーションフィールドには、メッセージの種類を表すメッセージID(Identification Data)とRTR(Remote Transmission Request)ビットとが含まれる。メッセージIDはアービトレーションに用いられる。
【0039】
コントロールフィールドに含まれるデータは、データフィールドの長さを示す。データフィールドはメッセージの中核をなし、データフィールドに含まれるデータは、メッセージの具体的な内容を示す。CRCフィールドは複数のビットのデータによって構成される。CRCフィールドに含まれるデータはコード及びCRC境界を示す。コードは、例えば、15ビットのデータによって表され、CRC境界は1ビットのデータによって表される。
【0040】
ACKは、1ビットのデータによって構成され、メッセージが正しく受信されたか否かの確認に用いられる。EOFに含まれるデータはメッセージの終了を示す。EOFは、例えば、夫々が「1」(リセッシブ)である7ビットのデータによって構成される。
【0041】
通信線3を介した通信で行われるアービトレーションを説明する。中継装置2及び通信装置30,31夫々は、メッセージのSOFから順に1ビットのデータを送信する。ここで、中継装置2及び通信装置30,31夫々は、通信線3を構成する2つの導線間の電圧差も検出している。
【0042】
中継装置2及び通信装置30,31夫々は、アービトレーションフィールドに含まれるデータを送信している間、送信したデータと、通信線3を介して送信されているデータとが一致しているか否かを判定する。前述したように、データ「0」(ドミナント)及び「1」(リセッシブ)が同時に通信線3に送信された場合、データ「0」が通信線3を介して送信される。中継装置2及び通信装置30,31夫々は、データ「1」を送信したにも関わらず、データ「0」が通信線3を介して送信されている場合、データの送信を停止する。このように、アービトレーションが行われる。
【0043】
通信線3において、メッセージIDが同一である複数のメッセージが中継装置2及び通信装置30,31から送信されることはない。中継装置2及び通信装置30,31の中で、アービトレーションフィールドに含まれるデータの送信を完了した1つの装置が、メッセージを送信する送信権を獲得し、このメッセージの送信が終了するまで他の装置がメッセージを送信することはない。
【0044】
通信線4,5夫々を介した通信で行われるアービトレーションも、通信線3を介した通信で行われるアービトレーションと同様に行われる。通信線3を介した通信で行われるアービトレーションの説明において、通信線3及び通信装置30,31を、通信線4及び通信装置40,41に置き換えることによって、通信線4を介した通信で行われるアービトレーションを説明することができる。同様に、通信線3を介した通信で行われるアービトレーションの説明において、通信線3及び通信装置30,31を、通信線5及び通信装置50,51に置き換えることによって、通信線5を介した通信で行われるアービトレーションを説明することができる。
【0045】
図3は通信装置30の要部構成を示すブロック図である。通信装置30は、制御部60、通信部61、入力部62、出力部63、記憶部64及びタイマ65を有する。これらはバス66に接続されている。通信部61は、バス66の他に通信線3に接続されている。
【0046】
通信部61は、所謂、CANドライバであり、図示しないCPU(Central Processing Unit)を有する。通信部61は、通信線3を介してメッセージを送信する送信処理と、通信線3を介してメッセージを受信する受信処理とを行う。受信処理において、通信部61が受信するメッセージには、送信禁止を示すメッセージを含む。通信部61は、受信処理において、受信したメッセージが通信線3を介したメッセージの送信禁止を示していない場合、受信したメッセージを制御部60に通知する。通信部61は、受信したメッセージが通信線3を介したメッセージの送信禁止を示している場合、即ち、送信禁止を示すメッセージを中継装置2から受信した場合、メッセージの送信禁止を制御部60に通知する。通信部61は禁止受信部として機能する。
【0047】
入力部62には、車両に搭載されている図示しない種々のセンサの出力結果、又は、車両に設けられている操作用のスイッチのオン/オフ等を示す信号が入力される。入力部62は、入力された信号の内容を制御部60に通知する。
出力部63は、車両に搭載された電気機器に接続されており、制御部60の指示に従って、動作を制御するための信号を電気機器に出力する。電気機器は、出力部63から出力された信号に応じて、作動又は停止等を行う。
【0048】
タイマ65は、制御部60の指示に従って、計時の開始及び終了を行う。タイマ65が計時している計時時間は、制御部60によって、タイマ65から読み出される。
記憶部64は不揮発性メモリであり、記憶部64には制御プログラムが記憶されている。記憶部64には、更に、通信部61が通信線3を介して送信すべきデータが記憶される送信データ領域が設けられている。記憶部64に記憶されている内容の読み出し及び書き込みは制御部60によって行われる。
【0049】
制御部60は、記憶部64に記憶されている制御プログラムを実行することによって種々の処理を実行する。具体的には、制御部60は、通信部61が受信したデータ、及び/又は、入力部62に入力された内容に基づいて、制御信号を出力部63に出力させ、出力部63に接続されている電気機器の動作を制御する。
【0050】
また、制御部60は、入力部62に入力された内容に応じて、通信部61が通信線3を介して送信すべきデータを生成し、生成したデータを記憶部64の送信データ領域に記憶する。
更に、制御部60は、通信部61の送信を制御する送信制御処理を実行する。
【0051】
図4は、通信装置30の制御部60が実行する送信制御処理の手順を示すフローチャートである。制御部60は送信制御処理を周期的に実行する。制御部60は、まず、通信部61からメッセージの送信禁止が通知されたか否かを判定する(ステップS1)。制御部60は、送信禁止が通知されたと判定した場合(S1:YES)、タイマ65に指示して計時を開始させ(ステップS2)、タイマ65が計時している計時時間が待機時間以上であるか否かを判定する(ステップS3)。待機時間は、一定であり、予め記憶部64に記憶されている。待機時間は例えば300〜500マイクロ秒である。
【0052】
制御部60は、計時時間が待機時間未満であると判定した場合(S3:NO)、ステップS3を再び実行し、計時時間が待機時間以上となるまで待機する。制御部60は、計時時間が待機時間以上であると判定した場合(S3:YES)、タイマ65に指示して計時を終了させる(ステップS4)。
【0053】
制御部60は、送信禁止が通知されていないと判定した場合(S1:NO)、又は、ステップS4を実行した後、記憶部64の送信データ領域に送信すべきデータが記憶されているか否かを判定する(ステップS5)。制御部60は、送信すべきデータが記憶されていないと判定した場合(S5:NO)、送信制御処理を終了する。この場合、制御部60は、次の周期が到来した場合、送信制御処理を再開する。
【0054】
制御部60は、送信すべきデータが記憶されていると判定した場合(S5:YES)、記憶部64の送信データ領域に記憶されているデータの送信を指示するデータ送信指示を通信部61に出力する(ステップS6)。
通信部61は、制御部60からデータ
送信指示が入力された場合に送信処理を実行する。通信部61は、送信処理において、データの送信の成功及び失敗を制御部60に通知する。
【0055】
制御部60は、ステップS6を実行した後、通信部61からデータの送信失敗が通知されたか否かを判定する(ステップS7)。制御部60は、送信失敗が通知されていないと判定した場合(ステップS7:NO)、通信部61からデータの送信成功が通知されたか否かを判定する(ステップS8)。
【0056】
制御部60は、送信成功が通知されていないと判定した場合(S8:NO)、ステップS7を実行し、送信成功又は送信失敗が通信部61から通知されるまで待機する。制御部60は、送信失敗が通知された場合(S7:YES)、送信制御処理を終了する。この場合も、制御部60は、次の周期が到来した場合、送信制御処理を再開する。再開した送信制御処理では、前回の送信制御処理で送信に失敗したデータが記憶部64の送信データ領域から削除されていないため、制御部60は、同一のデータを通信部61に送信させる。
【0057】
制御部60は、送信成功が通知されたと判定した場合(S8:YES)、通信部61が送信したデータを記憶部64の送信データ領域から削除し(ステップS9)、送信制御処理を終了する。この場合も、制御部60は、次の周期が到来した場合、送信制御処理を再開する。再開した送信制御処理では、前回の送信制御処理で送信に成功したデータが記憶部64の送信データ領域から削除されているため、制御部60は、記憶部64の送信データ領域に記憶されている新たなデータを通信部61に送信させる。
【0058】
図5は、通信装置30の通信部61が実行する送信処理の手順を示すフローチャートである。前述したように、通信部61は、制御部60からデータ送信指示が入力された場合に送信処理を実行する。そして、通信部61は、制御部60からデータ送信指示が入力されない限り、送信処理を実行することはない。
【0059】
通信部61は、通信線3を介したメッセージの送信が可能であるか否かを判定する(ステップS11)。通信部61は、通信線3を介したメッセージの送信が行われているか否かに基づいて、メッセージの送信が可能であるか否かを判定する。夫々が「1」(リセッシブ)である7ビットのデータによってメッセージのEOFが構成されている場合においては、通信部61は、7ビット以上連続してデータ「1」を検出しているときに、メッセージの送信が可能であると判定する。同様の場合において、通信部61は、7ビット以上連続してデータ「1」を検出していないときに、メッセージの送信が不可能であると判定する。夫々が「1」(リセッシブ)である7ビットのデータによってEOFが構成されている場合、通信システム1において送受信されるメッセージでは、7ビット連続してデータ「1」が示されることはない。
【0060】
通信部61は、メッセージの送信が可能であると判定した場合(S11:YES)、記憶部64の送信データ領域に記憶されているデータがデータフィールドに含まれているメッセージを生成する(ステップS12)。次に、通信部61は、ステップS12で生成したメッセージの1ビットのデータを送信する(ステップS13)。送信処理では、通信部61は、ステップS13を繰り返し実行し、メッセージのSOFを構成する1ビットのデータから、順次、メッセージのデータを送信する。
【0061】
次に、通信部61は、メッセージの送信を停止すべきか否かを判定する(ステップS14)。アービトレーションの説明で述べたように、通信部61は、データ「1」(リセッシブ)を送信したにもかかわらず、データ「0」(ドミナント)が通信線3を介して送信されていた場合、メッセージの送信を停止すべきと判定する。通信部61は、送信したデータと、通信線3を介して送信されているデータとが一致している場合、メッセージの送信を停止すべきではないと判定する。
【0062】
通信部61は、メッセージの送信が不可能であると判定した場合(S11:NO)、又は、メッセージの送信を停止すべきであると判定した場合(S14:YES)、メッセージの送信失敗を制御部60に通知し(ステップS15)、送信処理を終了する。
【0063】
通信部61は、メッセージの送信を停止すべきではないと判定した場合(S14:NO)、メッセージの送信権を獲得したか否かを判定する(ステップS16)。アービトレーションの説明で述べたように、通信部61は、メッセージのアービトレーションフィールドに含まれているデータの送信が完了した場合にメッセージの送信権を獲得したと判定する。通信部61は、アービトレーションフィールドに含まれているデータの送信が完了していない場合にメッセージの送信権を獲得していないと判定する。
【0064】
通信部61は、メッセージの送信権を獲得していないと判定した場合(S16:NO)、ステップS13を実行し、メッセージの送信を停止すべきと判定するか、又は、メッセージの送信権を獲得したと判定するまでメッセージのデータを1ビットずつ送信する。
【0065】
通信部61は、メッセージの送信権を獲得したと判定した場合(S16:YES)、ステップS13と同様に、ステップS12で生成したメッセージの1ビットのデータを送信する(ステップS17)。通信部61は、ステップS13と同様に、ステップS17も繰り返し実行する。ステップS17で通信部61が送信するデータは、アービトレーションフィールド以降に含まれるメッセージのデータである。
【0066】
通信部61は、ステップS17を実行した後、メッセージの送信が完了したか否かを判定する(ステップS18)。通信部61は、メッセージの送信が完了していないと判定した場合(S18:NO)、ステップS17を実行し、メッセージの送信が完了するまでメッセージのデータを1ビットずつ送信する。通信部61は、メッセージの送信が完了したと判定した場合(S18:YES)、メッセージの送信成功を制御部60に通知し(ステップS19)、送信処理を終了する。
【0067】
図6は通信装置30の通信部61が実行する受信処理の手順を示すフローチャートである。通信部61は、メッセージのSOFを検出した場合、又は、送信処理で送信を停止すべきと判定した場合に受信処理を実行する。
【0068】
通信部61は、メッセージの1ビットのデータを受信し(ステップS21)、メッセージの受信が完了したか否かを判定する(ステップS22)。通信部61は、メッセージの受信が完了していないと判定した場合(S22:NO)、ステップS21に実行し、メッセージの受信が完了するまで、1ビットのデータを順次受信する。
【0069】
通信部61は、メッセージの受信が完了したと判定した場合(S22:YES)、受信したメッセージが、メッセージの送信禁止を示しているか否かを判定する(ステップS23)。通信部61は、受信したメッセージが送信禁止を示していると判定した場合(S23:YES)、メッセージの送信禁止を制御部60に通知する(ステップS24)。
【0070】
通信部61は、受信したメッセージが、メッセージの送信禁止を示していないと判定した場合(S23:NO)、又は、ステップS24を実行した後、受信処理を終了する。
【0071】
なお、通信部61は、受信処理で受信したメッセージが送信禁止を示していない場合、受信したメッセージ夫々について、メッセージIDに基づいて、通信装置30に送信されたメッセージであるか否かを判定する。通信部61は、通信装置30に送信されたメッセージではないと判定した場合、このメッセージを破棄する。通信部61は、通信装置30に送信されたメッセージであると判定した場合、このメッセージに含まれるデータを制御部70に通知し、制御部70は、前述したように、通信部61が受信したデータに基づいて、制御信号を出力部63に出力させ、出力部63に接続されている電気機器の動作を制御する。
【0072】
通信装置31,40,41,50,51夫々は、通信装置30と同様に構成され、制御部60、通信部61、入力部62、出力部63、記憶部64及びタイマ65を有する。通信装置30の構成の説明において、通信装置30を通信装置31に置き換えることによって、通信装置31の構成を説明することができる。通信装置30の構成の説明において、通信線3を通信線4に置き換え、かつ、通信装置30を通信装置40又は通信装置41に置き換えることによって、通信装置40又は通信装置41の構成を説明することができる。通信装置30の構成の説明において、通信線3を通信線5に置き換え、かつ、通信装置30を通信装置50又は通信装置51に置き換えることによって、通信装置50又は通信装置51の構成を説明することができる。
【0073】
以上のように、通信装置30,31,40,41,50,51夫々の通信部61が、受信処理において、送信禁止を示すメッセージを受信した場合、制御部60は、送信制御処理において、通信部61が、送信禁止を示すメッセージを受信してから待機時間が経過するまで、通信部61にデータ送信指示を出力しない。このため、通信部61は、送信禁止を示すメッセージを受信してから待機時間が経過するまで、メッセージの送信を停止する。制御部60は、通信部61が、送信禁止を示すメッセージを受信してから待機時間が経過した後において、記憶部64の送信データ領域に送信すべきデータが記憶されている場合、データ送信指示を通信部61に出力し、通信部61はメッセージの送信を再開する。
【0074】
図7は中継装置2の要部構成を示すブロック図である。中継装置2は、制御部70、N(=3)個の通信部71,72,73及び記憶部74を有する。これらはバス75に接続されている。通信部71,72,73夫々は、バス75の他に、通信線3,4,5に接続されている。
【0075】
通信部71も、通信部61と同様に、所謂、CANドライバであり、図示しないCPUを有する。通信部71は、通信線3を介してメッセージを送信する送信処理と、通信線3を介してメッセージを受信する受信処理とを行う。
通信部72,73夫々は通信部71と同様に作用する。通信部71の作用の説明において、通信線3及び通信部71を通信線4及び通信部72に置き換えることによって通信部72の作用を説明することができる。通信部71の作用の説明において、通信線3及び通信部71を通信線5及び通信部73に置き換えることによって通信部73の作用を説明することができる。
【0076】
記憶部74は不揮発性メモリである。記憶部74には制御プログラムが記憶されている。また、記憶部74には、通信部71,72,73が通信線3,4,5を介して送信すべきメッセージが記憶されている送信メッセージ領域が設けられている。通信部71,72,73が受信処理で受信したメッセージは、記憶部74の送信メッセージ領域に記憶される。記憶部74に記憶されている内容の読み出し及び書き込みは制御部60によって行われる。
【0077】
制御部70は、記憶部74に記憶されている制御プログラムを実行することによって、通信部71,72,73の送信を制御する送信制御処理を実行する。制御部70が送信制御処理を実行するために、記憶部74には、メッセージIDとメッセージの送信に用いられる通信線3,4,5との対応関係を示すメッセージ対応表が記憶されている。
【0078】
図8はメッセージ対応表の内容を示す図表である。メッセージ対応表には、メッセージID毎に、通信線3,4,5の中でメッセージの送信に用いられる通信線が示されている。「○」はメッセージの送信に用いられることを示している。「−」はメッセージの送信に用いられないことを示している。また、通信線3,4,5の中でメッセージの送信に用いられる通信線の数が2以上である場合、メッセージの同時送信が必要であるか又は不要であるかが示されている。
【0079】
メッセージIDが「A1」であるメッセージについては、2つの通信線3,4がメッセージの送信に用いられ、通信線3,4夫々を介して同時にメッセージを送信することは不要である。メッセージIDが「A2」であるメッセージについては、2つの通信線4,5がメッセージの送信に用いられ、通信線4,5夫々を介して同時にメッセージを送信することが必要である。メッセージIDが「A3」であるメッセージについては、1つの通信線5がメッセージの送信に用いられる。
【0080】
図9及び
図10は、中継装置2の制御部70が実行する送信制御処理の手順を示すフローチャートである。制御部70は送信制御処理を周期的に実行する。制御部60は、記憶部74の送信メッセージ領域に送信すべきメッセージが記憶されているか否かを判定する(ステップS31)。制御部60は、送信すべきメッセージが記憶されていると判定した場合(S31:YES)、送信すべきメッセージのメッセージIDとメッセージ対応表とに基づいて、メッセージを出力する通信線を決定する(ステップS32)。例えば、メッセージIDが「A2」である場合、メッセージを出力する通信線を通信線4,5に決定する。
【0081】
次に、制御部70は、送信すべきメッセージのメッセージIDとメッセージ対応表とに基づいて、メッセージを同時に送信すべきか否かを判定する(ステップS33)。制御部70は、例えば、メッセージIDが「A1」又は「A3」である場合、メッセージを同時に送信すべきではないと判定する。制御部70は、例えば、メッセージIDが「A2」である場合、メッセージを同時に送信すべきであると判定する。
【0082】
制御部70は、メッセージを同時に送信すべきではないと判定した場合(S33:NO)、記憶部74の送信メッセージ領域に記憶されているメッセージの送信を指示するメッセージ送信指示を、ステップS32で決定した通信線に接続されている通信部に出力する(ステップS34)。制御部70は、例えば、ステップS32でメッセージの送信に用いる通信線を通信線5に決定した場合、通信部73にメッセージ送信指示を出力する。
【0083】
通信部71,72,73夫々は、制御部70からメッセージ送信指示が入力された場合に送信処理を実行する。通信部71,72,73夫々は、送信処理において、メッセージの送信の成功及び失敗を制御部70に通知する。
【0084】
制御部70は、通信部71,72,73の中でメッセージの送信処理を実行している通信部の少なくとも1つから送信失敗が通知されたか否かを判定する(ステップS35)。制御部70は、送信処理を実行している通信部の少なくとも1つから送信失敗が通知されたと判定した場合(S35:YES)、メッセージ送信指示を、通信部71,72,73の中で送信失敗を通知した通信部に出力する(ステップS36)。その後、制御部70は再びステップS35を実行する。
【0085】
制御部70は、送信失敗が通知されていない場合(S35:NO)、通信部71,72,73の中でメッセージの送信処理を実行している全ての通信部から送信成功が通知されたか否かを判定する(ステップS37)。制御部70は、全ての通信部から送信成功が通知されていないと判定した場合(S37:NO)、ステップS35を実行し、メッセージの送信が成功するまで、メッセージ送信指示の出力、又は、待機を行い続ける。
【0086】
制御部70は、送信成功が通知された場合(S37:YES)、送信されたメッセージを記憶部74の送信メッセージ領域から削除する(ステップS38)。制御部70は、送信すべきメッセージが記憶されていないと判定した場合(S31:NO)、又は、ステップS38を実行した後、送信制御処理を終了する。制御部70は、次の周期が到来した場合、送信制御処理を再開する。
【0087】
制御部70は、メッセージを同時に送信すべきであると判定した場合(S33:YES)、送信禁止を示すメッセージの送信を指示する禁止送信指示を、ステップS32で決定した通信線夫々に接続されている通信部に出力する(ステップS39)。制御部70は、例えば、ステップS32でメッセージの送信に用いる通信線を2つの通信線4,5に決定した場合、通信部72,73に禁止送信指示を出力する。
メッセージを同時に送信すべきである場合、当然のことながら、ステップS32で決定される通信線の数は、K(K:2以上N以下の整数)個である。従って、ステップS39では、制御部70は、禁止送信指示をステップS32で決定したK個の通信線夫々に接続されているK個の通信部に出力する。
【0088】
通信部71,72,73夫々は、制御部70から禁止送信指示が入力された場合も送信処理を実行する。通信部71,72,73夫々は、送信処理において、送信禁止を示すメッセージの送信の成功及び失敗を制御部70に通知する。
【0089】
制御部70は、通信部71,72,73の中で、送信禁止を示すメッセージの送信処理を実行しているK個の通信部の少なくとも1つから送信失敗が通知されたか否かを判定する(ステップS40)。制御部70は、K個の通信部の少なくとも1つから送信失敗が通知されたと判定した場合(S40:YES)、禁止送信指示を、通信部71,72,73の中で送信失敗を通知した通信部に出力する(ステップS41)。その後、制御部70は再びステップS40を実行する。
【0090】
制御部70は、通信部71,72,73の中で、送信禁止を示すメッセージの送信処理を実行しているK個の通信部のいずれからも送信失敗が通知されていない場合(S40:NO)、通信部71,72,73の中で、送信禁止を示すメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されたか否かを判定する(ステップS42)。制御部70は、送信禁止を示すメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されていないと判定した場合(S42:NO)、ステップS40を実行し、送信禁止を示す全てのメッセージの送信が成功するまで、禁止送信指示の出力、又は、待機を行い続ける。
【0091】
制御部70は、送信禁止を示すメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されたと判定した場合(S42:YES)、ステップS34と同様に、記憶部74の送信メッセージ領域に記憶されているメッセージの送信を指示するメッセージ送信指示を、ステップS32で決定したK個の通信線夫々に接続されているK個の通信部に出力する(ステップS43)。
【0092】
ステップS43でメッセージ送信指示を出力するK個の通信部は、ステップS39で禁止送信指示を出力したK個の通信部である。このため、ステップS43でメッセージ送信指示を出力したK個の通信部夫々に接続しているK個の通信線を介して、メッセージは送信されていない。従って、ステップS43でメッセージ送信指示を出力されたK個の通信部夫々はメッセージの送信失敗を制御部70に通知することはない。
【0093】
制御部70は、ステップS43を実行した後、通信部71,72,73の中で、記憶部74の送信メッセージ領域に記憶されているメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されたか否かを判定する(ステップS44)。制御部70は、メッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されていないと判定した場合(S44:NO)、ステップS44を再び実行し、メッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されるまで待機する。
【0094】
制御部70は、メッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されたと判定した場合(S44:YES)、送信されたメッセージを記憶部74の送信メッセージ領域から削除し(ステップS45)、送信制御処理を終了する。その後、制御部70は、次の周期が到来した場合、送信制御処理を再開する。
【0095】
図11は、中継装置2の通信部71が実行する送信処理の手順を示すフローチャートである。前述したように、通信部71は、制御部70からメッセージ送信指示又は禁止送信指示が入力された場合に送信処理を実行する。
通信部72,73は通信部71と同様の送信処理を実行する。通信部71が実行する送信処理の説明において、通信線3、通信装置30及び通信部71夫々を通信線4、通信装置40及び通信部72に置き換えることによって通信部72が実行する送信処理を説明することができる。通信部71が実行する送信処理の説明において、通信線3、通信装置30及び通信部71夫々を通信線5、通信装置50及び通信部73に置き換えることによって通信部73が実行する送信処理を説明することができる。
【0096】
通信部71は、通信装置30の通信部61が実行する送信処理のステップS11と同様に、通信線3を介したメッセージの送信が可能であるか否かを判定する(ステップS51)。通信部71は、メッセージの送信が可能であると判定した場合(S51:YES)、メッセージの1ビットのデータを送信する(ステップS52)。メッセージ送信指示が入力された通信部71が実行する送信処理のステップS52では、通信部71は、記憶部74の送信メッセージ領域に記憶されているメッセージの1ビットのデータを送信する。禁止送信指示が入力された通信部71が実行する送信処理のステップS52では、通信部71は、送信禁止を示すメッセージの1ビットのデータを送信する。
【0097】
次に、通信部71は、通信装置30の通信部61が実行する送信処理のステップS14と同様に、メッセージの送信を停止すべきか否かを判定する(ステップS53)。通信部61は、メッセージの送信が不可能であると判定した場合(S51:NO)、又は、メッセージの送信を停止すべきであると判定した場合(S53:YES)、メッセージの送信失敗を制御部70に通知し(ステップS54)、送信処理を終了する。
【0098】
通信部71は、メッセージの送信を停止すべきではないと判定した場合(S53:NO)、通信装置30の通信部61が実行する送信処理のステップS16と同様に、メッセージの送信権を獲得したか否かを判定する(ステップS55)。通信部71は、メッセージの送信権を獲得していないと判定した場合(S55:NO)、ステップS52を実行し、メッセージの送信を停止すべきと判定するか、又は、メッセージの送信権を獲得したと判定するまでメッセージのデータを1ビットずつ送信する。
【0099】
通信部71は、メッセージの送信権を獲得したと判定した場合(S55:YES)、ステップS52と同様に、メッセージの1ビットのデータを送信する(ステップS56)。通信部71は、ステップS52と同様に、ステップS56も繰り返し実行する。ステップS56で通信部71が送信するデータは、アービトレーションフィールド以降に含まれるメッセージのデータである。
【0100】
通信部71は、ステップS56を実行した後、メッセージの送信が完了したか否かを判定する(ステップS57)。通信部71は、メッセージの送信が完了していないと判定した場合(S57:NO)、ステップS56を実行し、メッセージの送信が完了するまでメッセージのデータを1ビットずつ送信する。通信部71は、メッセージの送信が完了したと判定した場合(S57:YES)、メッセージの送信成功を制御部70に通知し(ステップS58)、送信処理を終了する。
【0101】
図12は、中継装置2の通信部71が実行する受信処理の手順を示すフローチャートである。通信部71は、メッセージのSOFを検出した場合、又は、送信処理で送信を停止すべきと判定した場合に受信処理を実行する。
通信部72,73は通信部71と同様の受信処理を実行する。通信部71が実行する受信処理の説明において、通信部71を通信部72に置き換えることによって通信部72が実行する受信処理を説明することができる。通信部71が実行する受信処理の説明において、通信部71を通信部73に置き換えることによって通信部73が実行する受信処理を説明することができる。
【0102】
通信部71は、メッセージの1ビットのデータを受信し(ステップS61)、メッセージの受信が完了したか否かを判定する(ステップS62)。通信部61は、メッセージの受信が完了していないと判定した場合(S62:NO)、ステップS61に実行し、メッセージの受信が完了するまで、1ビットのデータを順次受信する。
【0103】
通信部71は、メッセージの受信が完了したと判定した場合(S62:YES)、受信処理を終了する。
なお、通信部71は、受信処理で受信したメッセージ夫々について、メッセージIDに基づいて、中継装置2に送信されたメッセージであるか否かを判定する。通信部71は、中継装置2に送信されたメッセージではないと判定した場合、このメッセージを破棄する。通信部71は、中継装置2に送信されたメッセージであると判定した場合、このメッセージを記憶部74の送信メッセージ領域に記憶する。
【0104】
以上のように、中継装置2の通信部71,72,73中の少なくとも2つは、N(=3)個の通信線3,4,5中のK個の通信線を介してメッセージの同時送信を行う場合、該K個の通信線に接続されている通信装置の通信部61に、送信禁止を示すメッセージを送信して、これらの通信装置が行うメッセージの送信を禁止する。例えば、通信部72,73は、2つの通信線4,5を介してメッセージの同時送信を行う場合、通信装置40,41,50,51夫々の通信部61に、送信禁止を示すメッセージを送信して、通信装置40,41,50,51の通信部61が行うメッセージの送信を禁止する。
通信部71,72,73夫々は禁止送信部として機能する。
【0105】
従って、例えば、中継装置2の通信部72,73が通信装置40,50にメッセージIDが「A2」であるメッセージを同時に送信する必要がある場合、事前に、2つの通信線3,4に接続されている4つの通信装置40,41,50,51の通信部61に、送信禁止を示すメッセージを送信する。これにより、2つの通信線3,4に接続されている4つの通信装置40,41,50,51夫々の送信が禁止されるので、通信部72,73は、2つの通信線4,5を介してメッセージの同時送信を確実に行うことができる。この例では、データの送受信が禁止される通信線の数Kは2である。
【0106】
中継装置2の通信部71,72,73中の少なくとも2つは、K個の通信線夫々に接続されている通信装置のメッセージの送信が禁止されている間に、K個の通信線夫々を介して共通のメッセージを送信する。例えば、メッセージIDが「A2」である場合、中継装置2の通信部72,73は、2つの通信線4,5夫々に接続されている通信装置40,41,50,51のメッセージの送信が禁止されている間に、2つの通信線4,5夫々を介して、メッセージIDが「A2」である共通のメッセージを送信する。これにより、例えば、通信装置40,50において、2つの通信線4,5夫々を介した共通のメッセージの同時受信が実現される。この例でも、データの送受信が禁止される通信線の数Kは2である。
通信部71,72,73夫々はデータ送信部としても機能する。
【0107】
前述したように、通信装置30,31,40,41,50,51夫々の通信部61は、送信禁止を示すメッセージを受信してから待機時間が経過した後、メッセージの送信を再開する。
これにより、通信装置30,31,40,41,50,51夫々において、簡単な構成でメッセージの送信を許可することができる。
【0108】
中継装置2の通信部71,72,73夫々は、N(=3)個の通信線3,4,5中の1つを介して、特定のメッセージ、具体的には、同時送信が必要とされるメッセージを受信する。通信部71,72,73中の1つが特定のメッセージを受信した場合に、通信部71,72,73中の少なくとも2つは、送信禁止を示すメッセージを送信して、メッセージの送信を禁止する。例えば、通信部71によって、メッセージIDが「A2」であるメッセージが受信された場合、通信部72,73は、送信禁止を示すメッセージを、通信線4,5を介して送信し、通信装置40,41,50,51のメッセージの送信を禁止する。その後、メッセージIDが「A2」であるメッセージの同時送信が行われる。通信部71,72,73夫々はデータ受信部としても機能する。
【0109】
(実施の形態2)
実施の形態1においては、通信装置30,31,40,41,50,51夫々の通信部61は、送信禁止を示すメッセージを受信してから待機時間が経過した後、メッセージの送信を再開する。しかしながら、通信部61がメッセージの送信を再開するタイミングは、送信禁止を示すメッセージを受信してから待機時間が経過した場合に限定されない。通信部61は、中継装置2の通信部71,72,73中の1つから送信許可を示すメッセージを受信した場合に、メッセージの送信を再開してもよい。
【0110】
以下では、実施の形態2について実施の形態1と異なる点を説明する。後述する構成を除く他の構成については実施の形態1と同様であるため、同様の符号を付してその詳細な説明を省略する。送信許可を示すメッセージは許可情報に相当する。
【0111】
実施の形態2における通信システム1は、実施の形態1における通信システム1と同様に構成されている。実施の形態2における通信システム1に関して、通信装置30,31,40,41,50,51夫々の制御部60が実行する送信制御処理と、通信装置30,31,40,41,50,51夫々の通信部61が実行する受信処理と、中継装置2の制御部70が実行する送信制御処理とが実施の形態1と異なる。通信装置30,31,40,41,50,51夫々の通信部61は、受信処理において、受信したメッセージが、メッセージの送信許可を示している場合、メッセージの送信許可を制御部60に通知する。
【0112】
図13は、実施の形態2における通信装置30の制御部60が実行する送信制御処理の手順を示すフローチャートである。制御部60は、実施の形態1と同様に、送信制御処理を周期的に実行する。実施の形態2における制御部60が実行する送信制御処理のステップS71,S73〜S77は、実施の形態1における制御部60が実行する送信制御処理のステップS1,S5〜S9と同様である。このため、ステップS71,S73〜S77の詳細な説明を省略する。
【0113】
制御部60は、通信部61からメッセージの送信禁止が通知されたと判定した場合(S71:YES)、通信部61からメッセージの送信許可が通知されたか否かを判定する(ステップS72)。制御部60は、送信許可が通知されていないと判定した場合(S72:NO)、ステップS72を実行し、通信部61からメッセージの送信許可が通知されるまで待機する。制御部60は、メッセージの送信禁止が通知されていないと判定した場合(S71:NO)、又は、メッセージの送信許可が通知されたと判定した場合(S72:YES)、ステップS73を実行する。
【0114】
図14は通信装置30の通信部61が実行する受信処理の手順を示すフローチャートである。実施の形態2における通信部61も、実施の形態1と同様に、メッセージのSOFを検出した場合、又は送信処理で送信を停止すべきと判定した場合に受信処理を実行する。実施の形態2における通信部61が実行する受信処理のステップS81〜S84は、実施の形態1における通信部61が実行する受信処理のステップS21〜S24と同様である。このため、ステップS81〜S84の詳細な説明を省略する。
【0115】
通信部61は、受信したメッセージが、メッセージの送信禁止を示していないと判定した場合(S83:NO)、受信したメッセージが、メッセージの送信許可を示しているか否かを判定する(ステップS85)。通信部61は、受信したメッセージが、メッセージの送信許可を示していると判定した場合(S85:YES)、メッセージの送信許可を制御部60に通知する(ステップS86)。
【0116】
通信部61は、受信したメッセージが、ステップS84,S86のいずれか一方を実行した後、又は、メッセージの送信許可を示していないと判定した場合(S85:NO)、受信処理を終了する。
【0117】
なお、実施の形態2においても、通信部61は、受信処理で受信したメッセージが送信禁止又は送信許可を示していない場合、受信したメッセージ夫々について、メッセージIDに基づいて、通信装置30に送信されたメッセージであるか否かを判定する。通信部61は、通信装置30に送信されたメッセージではないと判定した場合、このメッセージを破棄する。通信部61は、通信装置30に送信されたメッセージであると判定した場合、このメッセージに含まれるデータを制御部70に通知し、制御部70は、通信部61が受信したデータに基づいて、制御信号を出力部63に出力させ、出力部63に接続されている電気機器の動作を制御する。
【0118】
実施の形態2においても、通信装置31,40,41,50,51夫々は、通信装置30と同様に構成される。通信装置30の構成の説明において、通信装置30を通信装置31に置き換えることによって、通信装置31の構成を説明することができる。通信装置30の構成の説明において、通信線3を通信線4に置き換え、かつ、通信装置30を通信装置40又は通信装置41に置き換えることによって、通信装置40又は通信装置41の構成を説明することができる。通信装置30の構成の説明において、通信線3を通信線5に置き換え、かつ、通信装置30を通信装置50又は通信装置51に置き換えることによって、通信装置50又は通信装置51の構成を説明することができる。
【0119】
以上のように、通信装置30,31,40,41,50,51夫々の通信部61は、送信許可を示すメッセージを中継装置2から受信する。受信処理において通信部61が、送信禁止を示すメッセージを受信した場合、制御部60は、送信制御処理において、通信部61が、送信許可を示すメッセージを受信するまで、通信部61にデータ送信指示を出力しない。このため、通信部61は、送信禁止を示すメッセージを受信してから送信許可を示すメッセージを受信するまで、メッセージの送信を停止する。制御部60は、通信部61が、送信許可を示すメッセージを受信した場合において、記憶部64の送信データ領域に送信すべきデータが記憶されているとき、データ送信指示を通信部61に出力し、通信部61はメッセージの送信を再開する。通信部61は許可受信部としても機能する。
【0120】
図15及び
図16は、中継装置2の制御部70が実行する送信制御処理の手順を示すフローチャートである。制御部70は、実施の形態2と同様に、送信制御処理を周期的に実行する。実施の形態2における制御部70が実行する送信制御処理のステップS91〜S105は、実施の形態1における制御部70が実行する送信制御処理のステップS31〜S45と同様である。このため、ステップS91〜S105の詳細な説明を省略する。
【0121】
制御部70は、ステップS105を実行した後、送信許可を示すメッセージの送信を指示する許可送信指示を、ステップS92で決定したK個の通信線夫々に接続されているK個の通信部に出力する(ステップS106)。制御部70は、例えば、ステップS92でメッセージの送信に用いるK個の通信線を通信線4,5に決定した場合、通信部72,73に許可送信指示を出力する。
【0122】
通信部71,72,73夫々は、制御部70から許可送信指示が入力された場合も送信処理を実行する。通信部71,72,73夫々は、送信処理において、送信許可を示すメッセージの送信の成功及び失敗を制御部70に通知する。
【0123】
制御部70は、通信部71,72,73の中で、送信許可を示すメッセージの送信処理を実行しているK個の通信部の少なくとも1つから送信失敗が通知されたか否か判定する(ステップS107)。制御部70は、複数の通信部の少なくとも1つから送信失敗が通知されたと判定した場合(S107:YES)、許可送信指示を、通信部71,72,73の中で送信失敗を通知した通信部に出力する(ステップS108)。その後、制御部70は再びステップS107を実行する。
【0124】
制御部70は、通信部71,72,73の中で、送信許可を示すメッセージの送信処理を実行しているK個の通信部のいずれからも送信失敗が通知されていない場合(S107:NO)、通信部71,72,73の中で、送信許可を示すメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されたか否かを判定する(ステップS109)。制御部70は、送信許可を示すメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されていないと判定した場合(S109:NO)、ステップS107を実行し、送信許可を示す全てのメッセージの送信が成功するまで、許可送信指示の出力、又は、待機を行い続ける。
【0125】
制御部70は、送信許可を示すメッセージの送信処理を実行しているK個の通信部の全てから送信成功が通知されたと判定した場合(S109:YES)、送信制御処理を終了する。その後、制御部70は、次の周期が到来した場合、送信制御処理を再開する。
【0126】
通信部71,72,73夫々は、制御部70からメッセージの送信指示、禁止送信指示又は許可送信指示が入力された場合に実施の形態1と同様の送信処理を実行する。送信処理では、通信部71,72,73夫々は、実施の形態2と同様に、メッセージ送信指示が入力されている場合、記憶部74の送信メッセージ領域に記憶されているメッセージを送信し、禁止送信指示が入力されている場合、送信禁止を示すメッセージを送信する。実施の形態2では、通信部71,72,73夫々は、更に、許可送信指示が入力されている場合、送信許可を示すメッセージを送信する。
【0127】
以上のように、中継装置2の通信部71,72,73中の少なくとも2つは、N(=3)個の通信線3,4,5中のK個の通信線を介してメッセージの同時送信を行う場合、該K個の通信線に接続されている通信装置の通信部61に、送信禁止を示すメッセージを送信して、これらの通信装置の通信部61が行うメッセージの送信を禁止した後、K個の通信線を介して共通のメッセージを送信する。通信部71,72,73中の少なくとも2つは、共通のメッセージを送信した後、K個の通信線に接続されている通信装置の通信部61に、送信許可を示すメッセージを送信して、これらの通信装置が行うメッセージの送信を許可する。例えば、通信部72,73は、2つの通信線4,5を介して通信部72,73がメッセージの同時送信を行う場合、通信装置40,41,50,51夫々の通信部61に、送信禁止を示すメッセージを送信して、通信装置40,41,50,51の通信部61が行うメッセージの送信を禁止した後、2つの通信線4,5を介して共通のメッセージを送信する。通信部72,73は、共通のメッセージを送信した後、2つの通信線4,5に接続されている通信装置40,41,50,51夫々の通信部61に、送信許可を示すメッセージを送信して、通信装置40,41,50,51の通信部61が行うメッセージの送信を許可する。
通信部71,72,73夫々は許可送信部として機能する。
【0128】
通信装置30,31,40,41,50,51の通信部61は、送信禁止を示すメッセージを受信した場合にメッセージの送信を停止し、送信許可を示すメッセージを受信した場合にメッセージの送信を再開する。例えば、通信装置30の通信部61は、中継装置2の通信部71から、送信禁止を示すメッセージを受信した場合にメッセージの送信を停止し、送信許可を示すメッセージを受信した場合に、通信線3を介してメッセージの送信を再開する。
【0129】
通信装置30,31,40,41,50,51夫々の通信部61は、送信禁止を示すメッセージを受信してから、送信許可を示すメッセージを受信するまで、メッセージの送信を再開することはない。このため、例えば、中継装置2の通信部72,73は、2つの通信線3,4夫々を介したデータの送信が確実に禁止されている状態でメッセージの同時送信を行うことができる。この例では、データの送受信が禁止される通信線の数Kは2である。
【0130】
実施の形態2において、通信装置30,31,40,41,50,51夫々の通信部61がメッセージの送信を再開する構成を除く他の構成は、実施の形態1と同様である。このため、実施の形態2における通信システム1は、実施の形態1における通信システム1が奏する効果の中で、送信禁止を示すメッセージを受信してから待機時間が経過した後にメッセージの送信を再開する構成によって得られる効果を除く他の効果を奏する。
【0131】
なお、実施の形態1,2において、中継装置2の通信部71,72,73中の複数の通信部は、メッセージの同時送信を行う場合に、送信されるメッセージは、通信部71,72,73中の1つが受信したメッセージに限定されない。
【0132】
また、中継装置2の通信部71,72,73中の複数の通信部は、同時送信を行う場合に、相互に異なるメッセージを送信してもよい。例えば、中継装置2の通信部72,73夫々は、通信装置40,41,50,51が行うメッセージの送信を禁止している間に、2つの通信線4,5夫々を介して、相互に異なるメッセージを送信してもよい。例えば、通信装置40,50が同時に受信する必要があるメッセージは同一であるとは限らない。
【0133】
また、中継装置2には、外部装置、例えばダイアグツールが着脱可能に接続されていてもよい。この場合、中継装置2は、外部装置から特定のメッセージを受信したときに、N(=3)個の通信線3,4,5中の複数の通信線を介してメッセージの同時送信を行ってもよい。
【0134】
更に、中継装置2に接続されている通信線の数Nは、3に限定されず、2又は4以上の整数であってもよい。更に、メッセージの同時送信が行われる通信線の数Kは2に限定されず、2以上N以下であればよい。通信システム1が備える通信装置の数は6に限定されず、2以上5以下、又は、7以上であってもよい。更に、1つの通信線に接続することができる通信装置の数も2つに限定されず、1又は3以上であってもよい。
【0135】
また、通信システム1において、電気機器の動作の制御を行う通信装置の代わりに、電気機器の動作の制御を行わない通信装置を用いてもよい。通信線を介した通信で用いられるプロトコルは、CANプロトコルに限定されず、例えば、CAN_FD(Controller Area Network with Flexible Data Rate)プロトコルであってもよい。この場合、メッセージの構成において、データフィールドの送信速度は、他の部分の送信速度よりも速く、例えば、他の部分の送信速度の4倍である。
【0136】
開示された実施の形態1,2は、全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上述の説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。