(57)【要約】【課題】FlexRayを用いた車載ネットワークシステムにおいて制御タスクを正しく実行させるには、通信サイクル内で全データの送受信を完了させることによりデータの同時性を保障する必要がある。【解決手段】通信サイクルに同期して、制御タスクをコールする。また、通信サイクル内のフレームを、連続するフレームのまとまりである、前半スロット群と後半スロット群に２分割する。前半スロット群のスロット中に、データ送受信部は後半スロット群の送信フレームをライトし、後半スロット群の受信フレームをリードする。後半スロット群のスロット中では、それぞれ前半スロット群の送信フレームのライトと受信フレームのリードを行う。【効果】ネットワーク資源を全て活用しながら、１通信サイクルで１制御サイクルの全てのデータの送受信を行えるため、データの同時性を保証できる。【選択図】  図２
2011097124.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードが共通のネットワークに接続され、前記ノードは送信バッファと受信バッファと通信制御手段を内蔵し、通信は一定周期の通信サイクルで行い、前記通信サイクルは予め指定された通信時間に分割された複数のスロットで構成され、かつ前記通信制御手段は車両の制御データを含むフレームを予め指定されたスロットを介して送受信する時分割多重通信方式を用いる車載ネットワーク装置であって、
前記通信制御手段の送信は、送信バッファから読み出して予め指定されたスロットへ送信し、通信制御手段の受信は、予め指定されたスロットのフレームを受信バッファへ書き込み、
前記ノードは制御タスクとデータ送受信手段を持ち、前記制御タスクは通信サイクル内の予め指定された時刻において呼び出しされ入力データの受信と、制御と、出力データの送信を行い、かつ前記通信サイクルと同期した制御サイクルで実行され、
前記データ送受信手段の入力データの受信は、予め指定された受信バッファのフレームに予め指定された変換を行い入力データを生成し、
前記データ送受信手段の出力データの送信は、出力データに予め指定された変換を行いフレームを生成して予め指定された送信バッファに書き込み、
前記複数のスロットを、連続した１つ以上のスロットの集合から成る前半スロット群と後半スロット群に２分割し、
前記データ送受信手段は、ある通信サイクルの前半スロット群に対応する出力データの送信を、前記ある通信サイクルの後半スロット群のスロットに割当てられた時間中に実行し、前記ある通信サイクルの後半スロット群に対応する出力データの送信を、前記ある通信サイクルの次の通信サイクルの前半スロット群のスロットに割当てられた時間中に実行することを特徴とする車載ネットワーク装置。
【請求項２】
請求項１において、
前記次の通信サイクルの前記前半スロットに対応する入力データの受信を前記ある通信サイクルの後半スロットに割当てられた時間中に実行し、
前記ある通信サイクルの後半スロット群に対応する入力データの受信を前記ある通信サイクルの前半スロットに割当てられた時間中に実行することを特徴とする車載ネットワーク装置。
【請求項３】
複数のノードが共通のネットワークに接続され、前記ノードは送信バッファと受信バッファと通信制御手段とを内蔵し、
前記ネットワーク内の通信は一定周期の通信サイクルで行い、
前記通信サイクルは予め指定された通信時間に分割された複数のスロットで構成され、
かつ前記通信制御手段車両の制御データを含むはフレームを予め指定されたスロットを介して送受信する時分割多重通信方式を用いる車載ネットワーク装置であって、
前記通信制御手段の送信は、送信バッファから読み出して予め指定されたスロットへ送信し、通信制御手段の受信は、予め指定されたスロットのフレームを受信バッファへ書き込み、
前記ノードは制御タスクとデータ送受信手段を持ち、
前記制御タスクは通信サイクル内の予め指定された時刻において呼び出しされ入力データの受信と、制御と、出力データの送信を行い、かつ前記通信サイクルと同期した制御サイクルで実行され、
前記データ送受信手段の入力データの受信は、予め指定された受信バッファのフレームに予め指定された変換を行って入力データを生成し、
前記データ送受信手段の出力データの送信は、出力データに予め指定された変換を行いフレームを生成して予め指定された送信バッファに書き込み、
前記通信サイクルは、前記通信サイクル内のある時刻から前記通信サイクル終了時刻までに、フレームの送受信が行われない、若しくは前記空き時間以内にスロットがない空き時間を有し、
前記制御タスクの実行時間は前記空き時間以外の範囲で実行され、かつ前記通信サイクルをまたがないように前記制御タスクの開始時刻が設定され、
ある通信サイクルの前記空き時間の間に、前記データ送受信手段が前記ある通信サイクルの制御タスクで生成された全ての出力データを送信バッファに書込み、前記通信制御手段が前記ある通信サイクルの次の通信サイクルで送信することを特徴とする車載ネットワーク装置。
【請求項４】
請求項３において、前記空き時間以内に、前記データ送受信手段が前記次の通信サイクルで使用される全ての入力データを、前記ある通信サイクルで受信することを特徴とする車載ネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実時間処理に用いられるリアルタイム制御ネットワークに関するものである。車両制御用のネットワークや、産業用コンピュータ等に用いることができる。
【背景技術】
【０００２】
近年の車載ネットワークでは、通信のリアルタイム性を保障するために、イベントトリガ型通信、すなわち、時間同期通信のネットワークを使用するようになった。例えば、引用文献１で示されているFlexRayは、時間同期通信のひとつである。FlexRayでは、通信の１周期を通信サイクルとよぶ。通信サイクルは複数のスロットで構成され、各コントローラにあらかじめ割当てられる。各コントローラの通信制御部は、ネットワーク上のほかの通信制御部と同期しており、スロットの開始に合わせて、指定されたスロットのフレームを受信バッファへ書き込むことでネットワークより受信できる。また、通信制御部は、送信バッファから読み出して予め指定されたスロットへ送信することで、ネットワークに送信できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００８−５０９５８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
FlexRayを用いた車載ネットワークシステムにおいて制御タスクを正しく実行させるには、１制御サイクルで使用する入力データの受信と、１制御サイクルで生成した出力データの送信を、１制御サイクルで完了させ、データの同時性を保障する必要がある。データ同時性が保障されない場合、データのサンプリング周期にずれが生じ、制御タスクの制御が成立しないと云う課題がある。
【０００５】
本発明の目的は、１制御サイクルで使用する入力データの受信と、１制御サイクルで生成した出力データの送信を、１制御サイクルで完了させ、データの同時性を保障することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するための本発明は、複数のノードが共通のネットワークに接続され、前記ノードは送信バッファと受信バッファと通信制御手段を内蔵し、通信は一定周期の通信サイクルで行い、通信サイクルは予め指定された通信時間に分割された複数のスロットで構成され、かつ通信制御手段は車両の制御データを含むフレームを予め指定されたスロットを介して送受信する時分割多重通信方式を用いる車載ネットワーク装置であって、通信制御手段の送信は、送信バッファから読み出して予め指定されたスロットへ送信し、通信制御手段の受信は、予め指定されたスロットのフレームを受信バッファへ書き込み、ノードは制御タスクとデータ送受信手段を持ち、制御タスクは通信サイクル内の予め指定された時刻において呼び出しされ入力データの受信と、制御と、出力データの送信を行い、データ送受信手段の入力データの受信は、予め指定された受信バッファのフレームに予め指定された変換を行い入力データを生成し、データ送受信手段の出力データの送信は、出力データに予め指定された変換を行いフレームを生成して予め指定された送信バッファに書き込み、複数のスロットを、連続した１つ以上のスロットの集合から成る前半スロット群と後半スロット群に２分割し、データ送受信手段は、ある通信サイクルの前半スロット群に対応する出力データの送信を、ある通信サイクルの後半スロット群のスロット中に実行し、ある通信サイクルの後半スロット群に対応する出力データの送信を、ある通信サイクルの次の通信サイクルの前半スロット群のスロットに割当てられた時間中に実行することを特徴とする車載ネットワーク装置である。
【０００７】
また、複数のノードが共通のネットワークに接続され、ノードは送信バッファと受信バッファと通信制御手段とを内蔵し、ネットワーク内の通信は一定周期の通信サイクルで行い、通信サイクルは予め指定された通信時間に分割された複数のスロットで構成され、かつ通信制御手段車両の制御データを含むフレームを予め指定されたスロットを介して送受信する時分割多重通信方式を用いる車載ネットワーク装置であって、通信制御手段の送信は、送信バッファから読み出して予め指定されたスロットへ送信し、通信制御手段の受信は、予め指定されたスロットのフレームを受信バッファへ書き込み、ノードは制御タスクとデータ送受信手段を持ち、制御タスクは通信サイクル内の予め指定された時刻において呼び出しされ入力データの受信と、制御と、出力データの送信を行い、データ送受信手段の入力データの受信は、予め指定された受信バッファのフレームに予め指定された変換を行って入力データを生成し、データ送受信手段の出力データの送信は、出力データに予め指定された変換を行いフレームを生成して予め指定された送信バッファに書き込み、通信サイクルは、通信サイクル内のある時刻から通信サイクル終了時刻までに、フレームの送受信が行われない、若しくは空き時間以内にスロットがない空き時間を有し、ある通信サイクルの空き時間の間に、データ送受信手段がある通信サイクルの制御タスクで生成された全ての出力データを、ある通信サイクルの次の通信サイクルで送信することを特徴とする車載ネットワーク装置である。
【発明の効果】
【０００８】
本発明によれば、FlexRayを用いた車載ネットワークシステムにおいて、１制御サイクルで使用する入力データの受信と、１制御サイクルで生成した出力データの送信を、１制御サイクルで完了させ、データの同時性を保障することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例１の構成図。
【図２】実施例２の構成図。
【図３】送信バッファと受信バッファ。
【図４】フレームテーブル。
【図５】フレーム送受信テーブル。
【図６】スロット群送受信テーブル。
【図７】割込み時刻テーブル。
【図８】実施例１の通信サイクル。
【図９】実施例１のシーケンス図。
【図１０】割込み管理部のフローチャート。
【図１１】データ送受信部のフローチャート。
【図１２】制御タスクのフローチャート。
【図１３】実施例２の通信サイクル。
【図１４】分割点のスロットＩＤの決定方式。
【図１５】データ送受信部のフローチャート。
【図１６】実施例２のシーケンス図。
【図１７】割込み時刻テーブル。
【図１８】データ送受信部のフローチャート。
【図１９】実施例３のシーケンス図。
【発明を実施するための形態】
【００１０】
以下に本発明の実施の形態を詳細に説明する。
【実施例１】
【００１１】
実施例１では、制御サイクルと通信サイクルを同期させ、通信サイクル内のスロットをスロット群として２分割し、それぞれのスロット群ごとにデータ送受信部１０を実行し、出力データを送信する実施例を示す。以下、本実施例を説明する。
【００１２】
実施例１のシステム構成を、図２に示す。コントローラ１，２はネットワーク３に接続されている。コントローラの数は３以上でもよい。コントローラ１，２内部には、通信制御部４，受信バッファ５，送信バッファ６，制御タスク７，入力データ８，出力データ９，データ送受信部１０，割込み管理部１１，フレームテーブル１２，フレーム群送受信テーブル１３，割込み時刻テーブルがある。通信制御部４，受信バッファ５，送信バッファ６，制御タスク７，入力データ８，出力データ９，割込み管理部１１，フレームテーブル１２は、実施例１と同一のものである。割込み時刻テーブル１６は、前半スロット群のフレーム送信のためと、後半スロット群のフレームのために夫々データ送受信部１０を呼び出すため、図１７に示すように３エントリ持つ。グローバルタイマ１６１には、通信サイクル開始時刻と制御タスク開始時刻と分割点２２を設定する。
【００１３】
実施例１の通信サイクルの構成を、図１３に示す。通信サイクル１９は、スロット２０を１つ以上含んでいる。スロット２０には、多くとも１つのフレームが通信される。制御タスクは、制御タスク実行時間２６が通信サイクルを跨がないように、制御タスク開始時刻１７を予め計算し、割込み時刻テーブル１６に設定する。
【００１４】
通信サイクルＭの制御タスク開始時刻１７から、通信サイクルＭ＋１の制御タスク開始時刻１７までの時間が、制御サイクル２１である。分割点２２は、後半スロット群２４の先頭となるスロットの開始時刻である。分割点２２は、制御タスク終了時刻３０よりも後ろに設定する。前半スロット群の出力データの送信は、分割点２２からから前半スロット群データ送受信部実行時間２７の終了まで実行される。後半スロット群の出力データの送信は、通信サイクル開始時刻、後半スロット群データ送受信部実行時間２５の終了時刻まで実行される。前半スロット群データ送受信部実行時間２７は、前半スロット群に含まれる送信フレーム数に比例する。後半スロット群データ送受信部実行時間２５は、後半スロット群に含まれる送信フレーム数に比例する。余裕時間ＴＡ２８は、後半スロット群データ送受信部実行時間２５の終了時刻から制御タスク開始時間１７までの時間である。余裕時間ＴＢ２９は、前半スロット群データ送受信部実行時間２７の終了時刻から通信サイクル開始時刻までの時間である。
【００１５】
分割点２２は、図１４に示すように、予め｜余裕時間ＴＡ−余裕時間ＴＢ｜が最小となるように分割点を決定する。これにより、余裕時間ＴＡ２８と余裕時間ＴＢ２９を均等にでき、割込みなどの遅延があってもデータ送受信部の処理がデットラインを守れる可能性が向上する。
【００１６】
スロット群送受信テーブル１４の構成を、図６に示す。スロット群送受信テーブル１４は、スロット群のフレームＩＤを指定するテーブルである。エントリは、前半スロット群と後半スロット群の２つであり、夫々のスロット群が含むフレームＩＤを指定する。本実施例では、１個のスロット群につき１６個のフレームを指定できるが、１個以上の任意の個数で指定してもよい。また、エントリごとに、データ送受信部１０をコールするグローバルタイマ１４１をエントリごとに設定する。前半スロット群のグローバルタイム１４１は、分割点の時刻を設定する。後半スロット群のグローバルタイム１４１は、通信サイクル開始時刻である０を設定する。
【００１７】
データ送受信部１０は、割込み管理部１１から呼び出されたときに、出力データ９の送信を行う。図１５に、データ送受信部１０のフローチャートを示す。まず、割込み管理部１１から呼び出されると、通信制御部４よりグローバルタイムＴをリードする（１３０１）。次に、スロット群送受信テーブル１４よりＴと同一のグローバルタイム１４１のエントリＥ１を検索する（１３０２）。次に、エントリＥ１のフレームＩＤ１４２〜１４３からフレームＦを順に選択する（１３０３）。次に、制御タスク７が生成した出力データ９から送信フレームを作成する。具体的には、フレームテーブル１２より、フレームＦと合致するフレームＩＤ１２１のエントリＥ２を選択する（１３０５）。その後、エントリＥ１のスロットＩＤ１３３の送信バッファに、エントリＥ２の出力データ１２２〜出力データ１２３をライトする（１３０６）。全てのフレームＦを選択すると、終了する（１３０４）。
【００１８】
本実施例のコントローラ１における、制御タスクの出力データの出力からフレームの送信までの送信シーケンスを、図１６に示す。１１８，１２０，１２２，１２３はコントローラ１が、通信サイクルＭ＋１において送信する送信フレームを示す。
【００１９】
制御サイクルＭの送信シーケンスを説明する。通信制御部４は、制御タスク開始時刻１７になると、グローバルタイマ割込みを発生し（２２０１）、割込み管理部１１を経由して（２２０２）制御タスクをコールする（２２０３）。制御タスク７では、制御演算を完了させた後、他のコントローラに送信するデータを、出力データ９として全てライトする。制御演算が完了しているため、制御サイクルＭの全て出力データ９であることが保証される。次に、通信制御部４は、分割点２２になると、グローバルタイマ割込みを発生し（２２０４）、割込み管理部１１を経由して（２２０５）データ送受信部１０をコールする（２２０６）。データ送受信部１０では、前半スロット群に含まれる送信フレーム１１８，１２０，１２２に対応する送信バッファ６へ、出力データ９をライトする。次に、通信制御部４は、通信サイクル開始時刻になると、グローバルタイマ割込みを発生し（２２０７）、割込み管理部１１を経由して（２２０８）データ送受信部１０をコールする（２２０９）。データ送受信部１０では、後半スロット群に含まれる送信フレーム１２３に対応する送信バッファ６へ、出力データ９をライトする。通信サイクルＭ＋１が始まると、通信制御部４は、送信バッファ６のフレームを、対応するスロットから送信する（２２１０，２２１１，２２１２，２２１３）。２２０６の終了までフレーム１１８，１２０，１２２の送信は行われず、２２０９の終了までフレーム１２３の送信は行われず、且つ、２２１０〜２２１３で送信されるフレームは、制御サイクルＭの制御タスクが生成した出力データのみを含む。このため、１通信サイクルでの出力データの同時性を保証できる。
【実施例２】
【００２０】
実施例２では、制御サイクルと通信サイクルを同期させ、通信サイクル内のスロットをスロット群として２分割し、それぞれのスロット群ごとにデータ送受信部１０を実行し、入力データを受信し、出力データを送信する実施例を示す。以下、本実施例を説明する。
【００２１】
実施例２のシステム構成は、図２に示す実施例１と同一である。
【００２２】
実施例２の通信サイクルの構成も、図１３に示す実施例１と同一である。ただし、前半スロット群の出力データの送信に加え、前半スロット群の入力データの受信が、分割点２２から前半スロット群データ送受信部実行時間２７の終了まで実行される。また、後半スロット群の出力データの送信に加え、後半スロット群の入力の受信が、通信サイクル開始時刻，後半スロット群データ送受信部実行時間２５の終了時刻まで実行される。前半スロット群データ送受信部実行時間２７は、前半スロット群に含まれるフレーム数に比例する。後半スロット群データ送受信部実行時間２５は、後半スロット群に含まれるフレーム数に比例する。余裕時間ＴＡ２８は、後半スロット群データ送受信部実行時間２５の終了時刻から制御タスク開始時間１７までの時間である。余裕時間ＴＢ２９は、前半スロット群データ送受信部実行時間２７の終了時刻から通信サイクル開始時刻までの時間である。
【００２３】
分割点２２は、図１４に示すように、予め｜余裕時間ＴＡ−余裕時間ＴＢ｜が最小となるように分割点を決定する。これにより、余裕時間ＴＡ２８と余裕時間ＴＢ２９を均等にでき、割込みなどの遅延があってもデータ送受信部の処理がデットラインを守れる可能性が向上する。
【００２４】
データ送受信部１０は、割込み管理部１１から呼び出されたときに、出力データ９の送信を行う。図１８に、データ送受信部１０のフローチャートを示す。まず、割込み管理部１１から呼び出されると、通信制御部４よりグローバルタイムＴをリードする（１４０１）。次に、スロット群送受信テーブル１４よりＴと同一のグローバルタイム１４１のエントリＥ１を検索する（１４０２）。次に、エントリＥ１のフレームＩＤ１４２，１４３からフレームＦを順に選択する（１４０３）。次に、フレーム群送受信テーブル１３から、フレームＦと合致するフレームＩＤ１３１のエントリＥ２を選択する（１４０５）。
【００２５】
その後、Ｅ２の種別１３２をリードする（１４０６）。種別１３２が「送信」であれば（１４０７）、制御タスク７が生成した出力データ９から送信フレームを作成する。具体的には、フレームテーブル１２より、フレームＦと合致するフレームＩＤ１２１のエントリＥ３を選択する（１４０８）。
【００２６】
その後、エントリＥ２のスロットＩＤ１３３の送信バッファに、エントリＥ３の出力データ１２２〜出力データ１２３をライトする（１４０９）。また、種別１３２が「受信」であれば（１４０７）、受信バッファ５からフレームをリードし、入力データ８をリードする。具体的には、フレームテーブル１２より、フレームＦと合致するフレームＩＤ１２１のエントリＥ３を選ぶ。その後、エントリＥ３の入力データ１２２〜入力データ１２３に、エントリＥ２のスロットＩＤ１３３の受信バッファをライトする。全てのフレームＦを選択すると、終了する（１４０４）。
【００２７】
本実施例のコントローラ１における、制御タスクのフレームの受信から入力データの入力までの受信シーケンスを、図１９に示す。１１２，１１４，１１７はコントローラ１が、通信サイクルＭにおいて受信する受信フレームを示す。
【００２８】
通信サイクルＭの受信シーケンスを説明する。通信サイクルＭが始まると、通信制御部４は、受信バッファ５へ、対応するスロットからフレームを受信する（２３０１，２３０２，２３０６）。次に、通信制御部４は、分割点２２になると、グローバルタイマ割込みを発生し（２３０３）、割込み管理部１１を経由して（２３０４）データ送受信部１０をコールする（２３０５）。データ送受信部１０では、前半スロット群に含まれる受信フレーム１１２，１１４に対応する受信バッファ５から、入力データ８へライトする。次に、通信制御部４は、通信サイクル開始時刻になると、グローバルタイマ割込みを発生し（２３０７）、割込み管理部１１を経由して（２３０８）データ送受信部１０をコールする（２２０９）。データ送受信部１０では、後半スロット群に含まれる受信フレーム１１７に対応する受信バッファ５から、入力データ８へライトする。通信制御部４は、制御タスク開始時刻１７になると、グローバルタイマ割込みを発生し（２３１０）、割込み管理部１１を経由して（２３１１）制御タスクをコールする（２３１２）。制御タスク７では、制御演算の開始前に、他のコントローラから受信するデータを、入力データ８として全てリードする。２３０５の開始前までにフレーム１１２，１１４が受信され、２３０９の開始前までにフレーム１１７が受信され、且つ、２３０１，２３０２，２３０６で受信されたフレームは、他のコントローラの制御サイクルＭ−１の制御タスクが生成した出力データのみを含む。このため、１通信サイクルでの入力データの同時性を保証できる。
【００２９】
なお、本実施例の送信シーケンスは、実施例１と同様であるので、データの同時性が保障されるのは言うまでもない。
【実施例３】
【００３０】
実施例３では、制御サイクルと通信サイクルを同期させると同時に、通信サイクル中に空き時間に、データ送受信しない空き時間１５を設け、その間にデータ送受信部が全データのリード，ライトを行う実施例を示す。通信サイクル内の空き時間１５とは、通信サイクル内のある時刻から通信サイクル終了時刻までの時間で、空き時間１５内のスロットを用いてフレームの送受信が行われないか、もしくは、空き時間１５以内にスロットがない時間（ネットワークアイドルタイム）である。
【００３１】
図１に、実施例１のシステム構成を示す。コントローラ１，２はネットワーク３に接続されている。コントローラの数は３以上でもよい。コントローラ１，２内部には、通信制御部４，受信バッファ５，送信バッファ６，制御タスク７，入力データ８，出力データ９，データ送受信部１０，割込み管理部１１，フレームテーブル１２，フレーム群送受信テーブル１３，割込み時刻テーブル１６がある。
【００３２】
図８に、実施例１の通信サイクルの構成を示す。通信サイクル１９は、スロット２０を１つ以上含んでいる。スロット２０には、多くとも１つのフレームが通信される。通信サイクル１９は、空き時間１５が１つ含まれる。空き時間１５の間は、フレームは通信されない。ここで、フレームとは、コントローラが搭載される車両の制御データのほかにフレームＩＤなどを含むヘッダや、ＣＲＣなどを含むトレーラなどを含んでいる。制御データとしては、各種センサからの値や、各種アクチュエータへの指令値、また各コントロールユニット間の指令値がある。空き時間１５は、空き時間開始時刻１８から、通信サイクル１９の終了時刻まで続く。制御タスクは、空き時間１５以外の範囲で実行されるように、制御タスク開始時刻１７を予め計算し、割込み時刻テーブル１６に設定する。通信サイクルＭの制御タスク開始時刻１７から、通信サイクルＭ＋１の制御タスク開始時刻１７までの時間が制御サイクル２１である。
【００３３】
通信制御部４は、時間同期通信を行うハードウェアであり、FlexRayの通信コントローラと同等の機能を持つ。通信制御部４は、グローバルタイマ，通信サイクルカウンタ，スロットカウンタを持つ。コントローラ１，コントローラ２の通信制御部４は、通信サイクルを交換し、常に同じ値になるように制御している。スロットカウンタは、通信サイクルの開始時点を０としてカウントアップされる。通信制御部４は、スタティックセグメントを用いてフレーム送信やフレーム受信を行うときの、通信サイクルとスロットのフィルタリング条件を保持している。フレーム送信のフィルタリング条件と、現在の通信サイクルとスロットが合致すると、通信制御部４はフレームごとに割当てられた送信バッファ６を送信する。また、フレーム受信のフィルタリング条件と、通信サイクルとスロットが合致すると、通信制御部４はネットワーク３からフレームを受信し、フレームごとに静的に割当てられた受信バッファ５に保存する。ダイナミックセグメントを用いてフレーム送信を行うときは、フィルタリング条件に合致し、かつ、送信要求がデータ送受信部からなされた時に、通信制御部４は送信バッファ６を送信する。なお、その他の詳細な構成は、公知技術を用いて実現可能である。
【００３４】
通信制御部４は、予め指定したグローバルタイマになると割込みを発生することができる。グローバルタイマの割込み時刻は、制御タスク７やデータ送受信部１０を呼び出しするタイミングに設定しておく。グローバルタイマの割込み時刻を１つしか設定できない通信制御部４の場合は、割込み発生時に、割込み管理部１１において、次の割込み時刻を設定する。
【００３５】
送信バッファ６，受信バッファ５の構成を図３に示す。スロットごとエントリが設けられており、フレームが１つ格納できる。種別が「受信」であると受信バッファ、「送信」であると送信バッファとなる。
【００３６】
制御タスク７は、エンジンやブレーキ等、車載機器の制御を行うプログラムである。制御タスクは、通信サイクル内の予め指定された時刻において、割込み管理部１１により呼び出される。
【００３７】
図１２に、制御タスク７のフローチャートを示す。制御タスク７が呼び出されると、まず、入力データ８をリードする（１２０１）。次に、入力データ８を入力として、車載機器の制御プログラムを実行する（１２０２）。最後に、制御プログラムの実行結果を、出力データ９へライトする（１２０３）。データ送受信部１０は、割込み管理部１１から呼び出されたときに、出力データ９の送信と、入力データ８の受信を行う。
【００３８】
図１１に、データ送受信部１０のフローチャートを示す。まず、割込み管理部１１から呼び出されると、フレーム群送受信テーブル１３の先頭から順にエントリＥ１を選択する（１１０１）。フレーム群送受信テーブル１３のエントリを全て選択していれば終了する（１１０２）。エントリＥ１があれば、フレームＩＤ１３１と種別１３２をリードする（１１０３）。種別１３２が「送信」であれば（１１０４）、制御タスク７が生成した出力データ９から送信フレームを作成する。具体的には、フレームテーブル１２より、フレームＩＤ１３１と合致するフレームＩＤ１２１のエントリＥ２を選択する（１１０５）。その後、エントリＥ１のスロットＩＤ１３３の送信バッファに、エントリＥ２の出力データ１２２〜出力データ１２３をライトする（１１０６）。また、種別１３２が「受信」であれば（１１０４）、受信バッファ５からフレームをリードし、入力データ８をリードする。具体的には、フレームテーブル１２より、フレームＩＤ１３１と合致するフレームＩＤ１２１のエントリＥ２を選ぶ。その後、エントリＥ２の入力データ１２２〜入力データ１２３に、エントリＥ１のスロットＩＤ１３３の受信バッファをライトする。
【００３９】
割込み管理部１１は、データ送受信部１０と、制御タスク７を呼び出しする割込みハンドラである。通信制御部４は、グローバルタイマの割込みが発生すると、割込み管理部１１を呼び出す。
【００４０】
図１０に、割込み管理部のフローチャートを示す。まず、割込み管理部１１は、グローバルタイマＴ１をリードし（１１０１）、割込み時刻テーブル１６から、グローバルタイムＴ１と一致する行を検索する（１００２）。合致する行の処理１６３を参照し（１００４）、「制御タスク」であれば、制御タスクを呼び出す（１００５）。タスクの呼び出しは、オペレーティングシステムを介して行う。車載システムのオペレーティングシステムは、ＯＳＥＫが主流である。ＯＳＥＫにおけるタスクの呼び出しについては、公知技術を用いて実現できる。処理１６３が「データ送受信部」であれば、データ送受信部１０を呼び出す（１００６）。また、割込み時刻テーブル１６の次のエントリより、グローバルタイムＴ２をリードし（１００７）、通信制御部４のグローバルタイマ割込みのグローバルタイムとして設定する（１００９）。もし、割込み時刻テーブル１６の次のエントリがなければ、割込み時刻テーブルの先頭のグローバルタイマ割込み時刻を、通信制御部４のグローバルタイマ割込みのグローバルタイムとして設定する（１０１０）。
【００４１】
フレーム群送受信テーブル１３は、コントローラ１が送受信するフレームを指定するテーブルである。構成を図５に示す。フレームごとにエントリが設けられており、フレームＩＤ１３１，種別１３２，スロットＩＤ１３３を指定する。種別１３２は「送信」されるフレームであるか、「受信」されるフレームであるかを示す。スロットＩＤ１３３は、フレームＩＤで指定されたフレームの使用するスロットを指定する。スロットＩＤとフレームＩＤを全て等しくすることができれば、スロットＩＤ１３３は必要ない。
【００４２】
フレームテーブル１２は、フレームの構成を指定するテーブルである。図５に構成を示す。フレームごとにエントリが設けられており、各フレームに収められるデータのＩＤを指定する。本実施例では、出力データと入力データのサイズが１バイト固定であるが、１ビット、１ワード単位でも指定できる。また、本実施例では、出力データと入力データがフレームにつき８個指定されているが、１個以上の個数でも指定できる。
【００４３】
割込み時刻テーブル１６は、通信制御部４が割込みを発生させるべきグローバルタイム１６１と、そのときの処理種別１６２を指定するテーブルである。図７に割込み時刻テーブル１６の構成を示す。割込み時刻テーブル１６のエントリは、処理が「制御タスク」であるものを１つ含む。これにより、制御タスクを通信サイクルに同期して呼び出しすることができる。また、処理が「データ送受信部」であるものを少なくとも１つ含む。このエントリのグローバルタイム１６１は、空き時間１５の開始時刻を設定する。１スロットの時間は、グローバルタイムの整数倍で決められている。たとえば、グローバルタイムの１０倍が１スロットの時間とすると、空き時間１５の開始時刻のグローバルタイムは、通信サイクル開始時刻から空き時間開始時刻までのスロット数×１０から求まる。これを、グローバルタイム１６１に予め設定する。これにより、割込み管理部１１が、データ送受信部を空き時間開始時刻に呼び出すことができる。
【００４４】
本実施例のコントローラ１における、制御タスクの出力データの出力からフレームの送信までの送信シーケンスと、フレームの受信から制御タスクの入力データの入力までの受信シーケンスを、図９に示す。１０１はコントローラ１が送信する送信フレーム、１０２は、コントローラ１が受信する受信フレームを示す。
【００４５】
まず、制御サイクルＭの送信シーケンスを説明する。通信制御部４は、制御タスク開始時刻１７になると、グローバルタイマ割込みを発生し（２００１）、割込み管理部１１を経由して（２００２）制御タスクをコールする（２００３）。制御タスク７では、制御演算を完了させた後、他のコントローラに送信するデータを、出力データ９として全てライトする。制御演算が完了しているため、制御サイクルＭの全て出力データ９であることが保証される。次に、通信制御部４は、空き時間開始時刻１８になると、グローバルタイマ割込みを発生し（２００４）、割込み管理部１１を経由して（２００５）データ送受信部１０をコールする（２００６）。データ送受信部１０では、出力データ９を全て、送信バッファ６にライトする。通信サイクルＭ＋１が始まると、通信制御部４は、送信バッファ６のフレームを、対応するスロットから送信する（２００７，２００８，２００９，２０１０）。２００４〜２００６の終了までフレームの送信は行われず、且つ、２００７〜２０１０で送信されるフレームは、制御サイクルＭの制御タスクが生成した出力データのみを含む。これにより、１通信サイクルでの出力データの同時性を保証できる。
【００４６】
次に、受信シーケンスを説明する。まず、通信サイクルＭが開始すると、通信制御部４は、対応するスロットから受信バッファ５のフレームを受信する（２１０１，２１０２，２１０３）。次に、通信制御部４は、空き時間開始時刻１８になると、グローバルタイマ割込みを発生し（２１０４）、割込み管理部１１を経由して（２１０５）データ送受信部１０をコールする（２１０６）。データ送受信部１０では、全受信バッファ５を、入力データ８にライトする。２１０６の間、新たな受信フレームは来ないので、受信バッファ５のフレームは、全て通信サイクルＭで受信されたフレームであることが保証される。通信サイクルＭ＋１の制御タスク開始時刻１７になると、通信制御部４は、グローバルタイマ割込みを発生し（２１０７）、割込み管理部１１を経由して（２１０８）制御タスクをコールする（２１０９）。制御タスク７では、制御演算前に、他のコントローラから受信するデータを、入力データ８として全てリードする。制御演算前であるため、入力データ８は、通信サイクルＭで受信した受信フレームの入力データ８あることが保証される。送信シーケンスにより、受信フレームは、１制御サイクルで同時性を保つことが保障されているので、１制御サイクルでの入力データの同時性を保障されることになる。
【００４７】
実施例１，実施例２，実施例３では、１制御サイクルの全ての入力データ、出力データの送受信を１通信サイクルで実行し、データの同時性を保障することができる。
【００４８】
また、実施例３では、データ送受信部と通信制御部が送信バッファ，受信バッファに排他的にリード，ライトするため、確実に１制御サイクル以内に入力データのリードと、出力データのライトを行うことができる。
【００４９】
特に、実施例１によれば、入力データと出力データのデータ量にかかわらず、空き時間１５を必要としない。したがって、ネットワーク資源が有効に活用できる利点がある。さらに｜余裕時間ＴＡ−余裕時間ＴＢ｜が最小となるように分割点を決定することにより、前半スロット群のデータ送受信部の処理のデットラインと後半スロット群のデータ送受信部の処理のデットラインを均等にでき、割込みなどの遅延により、データ送受信部の処理がデットラインを守れない可能性を低減できる。
【符号の説明】
【００５０】
１，２  コントローラ
３  ネットワーク
４  通信制御部
５  受信バッファ
６  送信バッファ
７  制御タスク
８  入力データ
９  出力データ
１０  データ送受信部
１１  割込み管理部
１２  フレームテーブル
１３  フレーム群送受信テーブル
１４  スロットル群送受信テーブル
１５  空き時間
１６  割込み時刻テーブル
１７  制御タスク開始時刻
１８  空き時間開始時刻
１９  通信サイクル
２０  スロット
２１  制御サイクル
２２  分割点
２３  前半スロット群
２４  後半スロット群
２５  後半スロット群データ送受信部実行時間
２６  制御タスク実行時間
２７  前半スロット群データ送受信部実行時間
２８  余裕時間ＴＡ
２９  余裕時間ＴＢ
３０  制御タスク終了時刻
１００  フレーム
１０１  送信フレーム
１０２  受信フレーム
１６１  グローバルタイム
１６２  処理種別
２００  スロット群
１３０１，１３０２，１３０３，１３０４，１３０５，１３０６，１４０１，１４０２，１４０３，１４０４，１４０５，１４０６，１４０７，１４０８，１４０９，１４１０  フローチャート
２００１，２００２，２００３，２００４，２００５，２００６，２００７，２００８，２００９，２０１０，２１０１，２１０２，２１０３，２１０４，２１０５，２１０６，２１０７，２１０８，２１０９，２２０１，２２０２，２２０３，２２０４，２２０５，２２０６，２２０７，２２０８，２２０９，２２１０，２２１１，２２１２，２２１３，２３０１，２３０２，２３０３，２３０４，２３０５，２３０６，２３０７，２３０８，２３０９，２３１０，２３１１，２３１２  シーケンス図のライフライン
【図１】
2011097124.tif 000003
【図２】
2011097124.tif 000004
【図３】
2011097124.tif 000005
【図４】
2011097124.tif 000006
【図５】
2011097124.tif 000007
【図６】
2011097124.tif 000008
【図７】
2011097124.tif 000009
【図８】
2011097124.tif 000010
【図９】
2011097124.tif 000011
【図１０】
2011097124.tif 000012
【図１１】
2011097124.tif 000013
【図１２】
2011097124.tif 000014
【図１３】
2011097124.tif 000015
【図１４】
2011097124.tif 000016
【図１５】
2011097124.tif 000017
【図１６】
2011097124.tif 000018
【図１７】
2011097124.tif 000019
【図１８】
2011097124.tif 000020
【図１９】
2011097124.tif 000021