(57)【要約】【課題】通信速度が異なるＣＡＮバスに接続された通信モジュール同士が、通信負荷を増大させずに通信できるようにする。【解決手段】複数の異なる通信速度のＣＡＮバスにそれぞれ接続した複数の異なるＣＡＮコントローラと、マイコンに備えられた複数のシリアルポートを接続し、ＣＡＮバスからＣＡＮコントローラおよびシリアルポートを経由して入力されたＣＡＮメッセージを入力のあったシリアルポートＩＤとＣＡＮメッセージＩＤとに基づいて処理することによって、異なる通信速度のＣＡＮバスに接続されたモジュール間のＣＡＮ通信をマイコンに備えられたＣＰＵで制御することを特徴とする通信ユニット。【選択図】図１
2015210667.tif 000002
【特許請求の範囲】
【請求項１】
異なる通信速度のＣＡＮバスにそれぞれ接続された複数のＣＡＮコントローラと、
前記ＣＡＮコントローラとそれぞれ接続された複数のシリアルポートを介して、前記異なる通信速度のＣＡＮバスにそれぞれ接続された装置間のＣＡＮ通信を制御するマイコンと
を有することを特徴とする通信ユニット。
【請求項２】
前記マイコンは、接続されたＣＡＮバスの通信速度が高い順に前記シリアルポートにアクセスしてＣＡＮ信号を受信することを特徴とする請求項１に記載の通信ユニット。
【請求項３】
前記マイコンは、前記シリアルポートの識別情報とＣＡＮメッセージの識別情報との組み合わせに対応する処理内容を定義する定義情報を記憶する記憶部を参照して、前記ＣＡＮ通信を制御する
ことを特徴とする請求項１または２に記載の通信ユニット。
【請求項４】
前記マイコンは、接続されたＣＡＮバスの通信速度が高い順に前記シリアルポートにアクセスしてＣＡＮ信号を送信する
ことを特徴とする請求項１〜３のいずれか一つに記載の通信ユニット。
【請求項５】
前記マイコンは、送信の待機時間が所定値を超えたＣＡＮメッセージに対して、現在送信元に設定されているシリアルポートより通信速度が高いＣＡＮバスに対応したシリアルポートに送信元を変更する
ことを特徴とする請求項１〜４のいずれか一つに記載の通信ユニット。
【請求項６】
コンピュータに、
異なる通信速度のＣＡＮバス上のＣＡＮメッセージを選別し、
選別されたＣＡＮメッセージをシリアル信号に変換し、
前記ＣＡＮメッセージを、当該ＣＡＮメッセージが入力されたシリアルポートのＩＤと当該ＣＡＮメッセージのＩＤとに基づいて制御する、
処理を実行させることを特徴とするＣＡＮ通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ユニットおよびＣＡＮ通信制御プログラムに関する。
【背景技術】
【０００２】
ＣＡＮ（Control  Area  Network）は、シンプルなネットワーク構成のため、低コストで構築できるネットワークである。さらには、ＣＡＮ通信は、故障検出機能が優れており、信頼性が高い通信方式として知られている。
【０００３】
ＣＡＮは、ＣＡＮバスごとにＣＡＮコントローラが１つ設置される。ＣＡＮコントローラは、ＣＡＮを流通する信号が、ＣＡＮ通信のプロトコルに従って各モジュールに正常に伝達されるように制御する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１９６５６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＣＡＮが異なる通信速度のＣＡＮバスを含む場合には、異なるＣＡＮバス上のモジュール同士は直接通信出来ない。そのため、従来は、ゲートウェイを介して異なるＣＡＮバス上のモジュール同士が通信するが、ゲートウェイ設置などにより、ネットワークの構築コストが高くなるととともに、通信負荷が増大するという問題がある。
【０００６】
本発明は、通信速度が異なるＣＡＮバスに接続された通信モジュール同士が、通信負荷を増大させずに通信可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
一態様の通信ユニットは、複数の異なる通信速度のＣＡＮバスにそれぞれ接続された複数のＣＡＮコントローラと、前記ＣＡＮコントローラとそれぞれ接続された複数のシリアルポートを介して、前記異なる通信速度のＣＡＮバスにそれぞれ接続された装置間のＣＡＮ通信を制御するＣＰＵ（Central  Processing  Unit）を有したマイコンと、を有することを特徴とする。
【発明の効果】
【０００８】
通信速度が異なるＣＡＮバスに接続された通信モジュール同士が、通信負荷を増大させずに通信できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係るＣＡＮの構成の一例を示すブロック図である。
【図２】図２は、ＣＡＮコントローラの内部構成の一例を示すブロック図である。
【図３】図３は、マイコンの内部構成の一例を示すブロック図である。
【図４】図４は、処理内容を示すテーブルの一例を示す図である。
【図５】図５は、ＣＡＮコントローラが入力した受信フレームを処理する手順を示すフローチャートである。
【図６】図６は、ＣＡＮコントローラからフレームを受信したマイコンが受信したフレームを処理する手順を示すフローチャートである。
【図７】図７は、マイコンからＣＡＮコントローラへフレーム送信を指令する手順を示すフローチャートである。
【図８】図８は、マイコンからの指示に基づいて、フレーム送信指令が出されたＣＡＮコントローラが送信フレームを生成してＣＡＮバスに送出する手順を示すフローチャートである。
【図９】図９は、実施例２に係る、マイコン１５０が、テーブルを外部メモリに格納して読み込む構成を示す一例を示すブロック図である。
【図１０】図１０は、実施例３に係る出力キューの例を示す図である。
【図１１】図１１は、実施例３に係るキューに所定の待ち時間を超えた送信データが生じた場合の制御を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して本願に係る通信ユニットおよびＣＡＮ通信制御プログラムについて説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
［実施例１に係るＣＡＮの構成］
図１は、実施例１に係るＣＡＮの構成の一例であるＣＡＮ１を示すブロック図である。図１に示すように、ＣＡＮ１は、通信ユニット１００と、バス１０、２０と、モジュール１１、１２、２１、２２とを有する。通信ユニット１００は、ＣＡＮバス１０に接続するＣＡＮコントローラ１１０と、ＣＡＮバス２０に接続するＣＡＮコントローラ１２０と、ＣＡＮバス１０とＣＡＮバス２０との通信を制御するマイクロコントローラ（以下、マイコン１５０とを有する。
【００１２】
ＣＡＮバス１０とＣＡＮバス２０とは通信速度が異なるバスであり、例えば、図１の例では、ＣＡＮバス１０の通信速度が５００ｋｂｐｓであり、ＣＡＮバス２０の通信速度が１２５ｋｂｐｓである。ＣＡＮバス１０に接続されるモジュール１１および１２は、例えば、ＡＢＳ（Antilock  Brake  System）やＥＣＭ（Engine  Control  Module）など、モジュール２１、２２よりも高速通信を行うモジュールである。一方、ＣＡＮバス２０に接続されるモジュール２１、２２は、例えば、ＤＩＭ（Driver  Information  Module）やＣＣＭ（Climate  Control  Module）など、モジュール１１、１２よりも低速通信を行うモジュールである。
【００１３】
ＣＡＮコントローラ１１０およびＣＡＮコントローラ１２０は、それぞれＣＡＮバス１０およびＣＡＮバス２０の通信速度に適応して、モジュール１１、１２、２１、２２とフレーム通信をおこなう。ＣＡＮコントローラ１１０およびＣＡＮコントローラ１２０は、フレームの種類を識別し、フレームから情報を選択して所定規格のシリアルデータへ変換する。そして、ＣＡＮコントローラ１１０およびＣＡＮコントローラ１２０は、マイコン１５０のシリアルポート１５１およびシリアルポート１５２を介してマイコン１５０へシリアルデータを送信する。
【００１４】
ここで、ＣＡＮで流通するフレームには、（１）データフレーム、（２）リモートフレーム、（３）オーバーロードフレーム、（４）エラーフレーム、の４種類がある。フレームは、種類ごとにデータフォーマットが異なる。これらフレームのうちオーバーロードフレーム、エラーフレームは、それぞれオーバーロード、エラーの異常が発生したときに、モジュール１１、１２、２１、２２とマイコン１５０との間でやりとりされるフレームである。他のモジュールにデータを送るデータフレーム、他のモジュールにデータフレームをリクエストするリモートフレームが、通常時にモジュール１１、１２、２１、２２とマイコン１５０との間でやりとりされるフレームである。なお、データフレームおよびリモートフレームは、指令する処理内容に対応するメッセージＩＤを含んでいる。
【００１５】
［実施例１に係るＣＡＮコントローラの構成］
図２は、実施例１に係るＣＡＮコントローラの内部構成の一例を示すブロック図である。実施例１に係るＣＡＮコントローラ１１０は、ＣＡＮＩ／Ｆ（InterFace、以下同様）１１２、メッセージフィルタ１１４、シリアルＩ／Ｆ１１６、送信エンジン１１８を有する。ＣＡＮＩ／Ｆ１１２は、モジュール１１、１２からＣＡＮバス１０を介して受信したフレームの種類を判別し、フレームの種類に応じたフォーマットでフレームから所定情報を抽出して、メッセージフィルタ１１４へ出力する。また、ＣＡＮＩ／Ｆ１１２は、送信エンジン１１８から受け付けたメッセージをフレームへ変換し、ＣＡＮバス１０を介してモジュール１１、１２へ送信する。
【００１６】
メッセージフィルタ１１４は、ＣＡＮＩ／Ｆ１１２から受信した所定情報を種別に基づきフィルタリングして、シリアルＩ／Ｆ１１６へ出力する。シリアルＩ／Ｆ１１６は、メッセージフィルタ１１４から受信したメッセージをシリアル変換し、シリアルポート１５１を介してマイコン１５０へ出力する。
【００１７】
また、シリアルＩ／Ｆ１１６は、シリアルポート１５１からしたメッセージを含むシリアルデータをＣＡＮコントローラ１１０の内部形式のデータへ変換し、送信エンジン１１８へ出力する。送信エンジン１１８は、シリアルＩ／Ｆ１１６から受信したメッセージを含むデータから所定情報を抽出し、所定情報に基づく種類のフォーマットでメッセージを含むデータを生成し、ＣＡＮＩ／Ｆ１１２へ出力する。ＣＡＮＩ／Ｆ１１２は、送信エンジン１１８からメッセージを含むデータを受信すると、フレームに変換してＣＡＮバス１０を介してモジュール１１、１２へ送信する。
【００１８】
図３は、マイコン１５０の内部構成の一例を示すブロック図である。図３では、シリアルポート１５１、１５２から入力されたシリアル信号のうち、ＳＤＡはデータ信号を伝送するデータ線であり、それぞれマイコン１５０を制御するＣＰＵ１５５に接続される。ＳＣＫはクロック線であり、シリアルポート１５１、１５２に対して共通の内部クロック信号が入力される。ＣＰＵ１５５は、テーブル１６０を参照してシリアルポート１５１、１５２が受信したフレームに含まれる情報の内容を特定する。また、ＣＰＵ１５０からシリアルポート１５１、１５２を経由してＣＡＮコントローラ１１０、１２０にフレームの作成と送信を指示する情報を送出する。
【００１９】
図３に示しているシリアル通信は２線式であり、プロトコルとしては、例えば、Ｉ２Ｃ（Inter-Integrated  Circuit、登録商標）バスを用いることができる。なお、図示していないが、３線のシリアル通信プロトコルを採用してもよく、その場合ＳＰＩ（Serial  Peripheral  Interface、登録商標）などを用いることができる。
【００２０】
図４は、テーブル１６０の例で、ＣＰＵに入力された信号に対応する処理を示すものである。ここで、シリアルポート番号１６１は、信号がシリアルポート１５１、１５２のいずれからの信号であるかを示すものである。メッセージＩＤ１６２は、信号が由来するフレームに含まれているＩＤであり、フレームの意図する処理を表すものである。テーブル１６０に示すように、シリアルポート番号１６１、メッセージＩＤ１６２の組み合わせに対応する処理内容１６３がテーブル１６０に登録されている。
【００２１】
例えば、（シリアルポート１、メッセージＩＤ：＃１）に対応する処理として、温度モジュールがこのフレーム（リモートフレーム）を受信した場合にデータを送信することを指示している。また、（シリアルポート１、メッセージＩＤ：＃２）に対応する処理として、表示モジュールがこのフレーム（データフレーム）を受信した場合にデータを読み取って表示することを指示している。マイコン１５０は、温度モジュールでも、表示モジュールでもないので、これらメッセージを受信しても廃棄される。
【００２２】
一方、（シリアルポート２、メッセージＩＤ：＃１）に対応する処理は、エンジンモジュールがそのデータフレームを受信した場合にフレームに含まれるデータを読み取るように指示するものである。また、（シリアルポート２、メッセージＩＤ：＃２）に対応する処理は、マイコンがこのフレーム（データフレーム）を受信した場合にデータを読み取って、所定の演算を行ってパラメータを求め、結果をエンジンモジュールへ送信することを指示している。後者のメッセージを受信した場合にはＣＰＵ１５５は所定の演算を行い、さらにその結果を含むデータフレームをエンジンモジュールへ送信する。
【００２３】
図５は、ＣＡＮコントローラ１１０が入力した受信フレームを処理する例を示すフローチャートである。ＣＡＮＩ／Ｆ１１２は、入力した受信フレームから所定の情報を抽出し（Ｓ１０１）、メッセージフィルタ１１４に解析された情報を送信する（Ｓ１０２）。次にメッセージフィルタ１１４は、受信フレームの内容をマイコン１５０に送信する必要があるかどうかを判定し、送信が必要と判定された場合は（Ｓ１０３、Ｙｅｓ）、シリアルＩ／Ｆ１１６に解析された情報を送信し（Ｓ１０４）、送信先のシリアルポート１５１へ送信する（Ｓ１０５）。一方、受信フレームの内容をマイコン１５０に送信する必要がないと判定した場合は（Ｓ１０３、Ｎｏ）は、受信フレームを廃棄する（Ｓ１０６）。
【００２４】
例えば、ＣＡＮコントローラ１１０が、（３）のオーバーロードフレームを受信した場合には、ＣＡＮコントローラ１１０は、ＣＡＮプロトコルに従い、ＣＡＮコントローラ１１０はオーバーロードフラグを返信するが、オーバーロードフレーム自体はマイコン１５０に送信する必要はないと判定する。
【００２５】
また、ＣＡＮコントローラ１１０は、（４）のエラーフレームを受信した場合には、エラーの状態に応じて、図示しないエラーカウンターの値を増加させるが、エラーフレーム自体はマイコン１５０に送信する必要はないと判定する。
【００２６】
一方、（１）のデータフレーム、（２）のリモートフレームを受信した場合には、フレームからＲＴＲ（Remote  Transmission  Request）、メッセージＩＤなどが抽出される。ここでＲＴＲはフレームがデータフレームであるかリモートフレームであるかを、メッセージＩＤは、データ内容や送信ノードを示す情報である。
【００２７】
なお、上記に示したＣＡＮコントローラの動作は、基本的な機能をいくつか示しただけだが、ＣＡＮコントローラ１１０はＣＡＮプロトコルに規定される通信調停やエラー検出などの基本機能に関する処理も実行する。
【００２８】
また、ＣＡＮコントローラは、メッセージフィルタ１１４は多種多様な選別機能を有し、マイコンの負荷を軽くするような、高機能なものであっても良い。
【００２９】
図６は、ＣＡＮコントローラ１１０からフレームを受信したマイコン１５０が受信したフレームを処理する例を示すフローチャートである。
【００３０】
マイコン１５０は、シリアルポートをＮ個有し、ＣＡＮバスの通信速度が高速な順で、番号の若いポートに接続されているものとする。まず、ｉ＝１にセットし（Ｓ２０１）、ｉ番目のシリアルポート（以後、「シリアルポートｉ」などと呼ぶ）への受信の有無を調べ、受信がない場合は（Ｓ２０２  Ｎｏ）、ｉ＝ｉ＋１に増分して（Ｓ２０６）、ｉ＞Ｎでなければ（Ｓ２０７  Ｎｏ）Ｓ２０２へ戻り、ｉ＞Ｎなら（Ｓ２０７  Ｙｅｓ）Ｓ２０１へ戻る。
【００３１】
マイコン１５０は、Ｓ２０２で受信があった場合には（Ｓ２０２  Ｙｅｓ）、受信されたのがリモートフレームか否かを判定する（Ｓ２０３）。リモートフレームと判定した場合には（Ｓ２０３  Ｙｅｓ）、マイコン１５０は、メッセージＩＤを参照して、マイコン１５０自身が該リモートフレームに対しデータフレームを送信するかどうかを判定する（Ｓ２０４）。送信しないと判定した場合には（Ｓ２０４  Ｎｏ）、マイコン１５０は、フレームを受信したシリアルポートｉ以外のシリアルポートから受信したリモートフレームと同様のリモートフレームを送信するように指示し（Ｓ２０５）、処理を終了する。ここで、受信フレームがリモートフレームかどうかは、フレームに含まれる上述のＲＴＲで判定することができる。
【００３２】
一方、マイコン１５０自身がデータフレームを送信すると判定した場合には（Ｓ２０４  Ｙｅｓ）、マイコン１５０は、ＣＡＮコントローラ１１０からデータフレームを送信するようにシリアルポートｉから指示を出力し（Ｓ２０９）、処理を終了する。
【００３３】
また、受信されたのがリモートフレームでなかった場合は（Ｓ２０３  Ｎｏ）、上述のように、オーバーロードフレームとエラーフレームとは、ＣＡＮコントローラ１１０で遮断されているため、受信したのはデータフレームなので、メッセージＩＤとデータを読み取って必要に応じて対応し（Ｓ２０８）、処理を終了する。
【００３４】
以上、マイコン１５０がＣＡＮコントローラ、シリアルＩ／Ｆを介してＣＡＮバスからフレームを受信する手順の一例を示した。
【００３５】
マイコン１５０は、データフレームの送信を要求するリモートフレームを受信した場合や、受信したデータが所定の条件を満たしていることを他のＣＡＮモジュールに通知する場合などには、ＣＡＮコントローラにフレーム送信を指示する。図４の（シリアルポート２、メッセージＩＤ：＃２）に対応する処理は、データが所定の条件を満たしていることを通知する例である。マイコン１５０からＣＡＮコントローラへのフレーム送信の指令処理を示すフローチャートの例を図７に示す。
【００３６】
まず、ＣＰＵは送信内容と、送信対象とするＣＡＮバスに対応するシリアルポートを決定する（Ｓ３０１）。ここで送信は同一のＣＡＮバスに複数送出しても良いし、複数種類のＣＡＮバスの送出するものでも良い。次に送信フレームがデータフレームを含むかを判定し（Ｓ３０２）、データフレームを含まない場合は（Ｓ３０２  Ｎｏ）Ｓ３０４へ進み、データフレームを含む場合は（Ｓ３０２  Ｙｅｓ）送信データを決定して（Ｓ３０３）からＳ３０４に進む。ここで、マイコン１５０は図６と同様のものとする。Ｓ３０４で、ｉ＝１にセットされたのち、上記送信対象にシリアルポートｉへの送信が含まれているかを調べ、送信が含まれていない場合は（Ｓ３０５  Ｎｏ）、ｉ＝ｉ＋１に増分して（Ｓ３０７）、ｉ＞Ｎでなければ（Ｓ３０８  Ｎｏ）Ｓ３０５へ戻る。上記送信対象にシリアルポートｉへの送信が含まれている場合は（Ｓ３０５  Ｙｅｓ）、シリアルポートｉに送信指令と決定した送信内容とを出力してから（Ｓ３０６）Ｓ３０７に進む。Ｓ３０８でｉ＞Ｎなら（Ｓ３０８  Ｙｅｓ）処理を終了する。
【００３７】
図８は、前述の図７に示した、マイコン１５０からの指示に基づいて、フレーム送信指令が出されたシリアルＩ／Ｆに繋がれたＣＡＮコントローラ１１０が送信フレームを生成してＣＡＮバス１０に送出する処理の例を示すフローチャートである。
【００３８】
マイコン１５０から入力された送信指令は、シリアルＩ／Ｆ１１６を介し送信エンジン１１８に転送され（Ｓ４０１）、送信エンジン１１８は送られた送信指令から所定の情報を抽出してフレームを生成する（Ｓ４０２）。生成したフレームの送信が許可されれば（Ｓ４０３、Ｙｅｓ）、ＣＡＮＩ／Ｆ１１２に生成したフレームを送信し（Ｓ４０４）、ＣＡＮバス１０に対応したＣＡＮ信号に変換して送信する（Ｓ４０５）。一方、フレーム送信が許可されなかった場合（Ｓ４０３、Ｎｏ）、所定時間待機後に（Ｓ４０６）、再度フレーム送信の許可を問い合わせる（Ｓ４０３）。
【００３９】
ここで、フレーム送信が許可されないような場合には、例えば、ＣＡＮコントローラ１１０自身のエラーカウンターが所定値を超えている場合がある。他に、ＣＡＮバス１０に繋がれた他のＣＡＮコントローラからエラーカウンターが所定値を超えていることを通知するエラーフレームを受信しているなどＣＡＮバス１０上での通信がＣＡＮプロトコルで禁止される場合にもフレーム送信は許可されない。さらには、ＣＡＮコントローラ１１０が送信フレーム用のバッファを有し、該バッファ上に生成したフレームより先に送信すべき未送信フレームが残っているような場合などＣＡＮコントローラ１１０自身の構成の問題でフレーム送信が許可されない場合もある。
【００４０】
［実施例１の効果］
上述してきたように、本実施例に係る通信ユニットを用いることで、異なる通信速度のＣＡＮバス上のモジュール間の通信を、ゲートウェイなどを設けることなく、マイコンを介して実現できる。
【００４１】
また、マイコンを介して異なる通信速度のＣＡＮバスにリモートフレームを選択的に送信することができるので、送信フレームの優先度に応じて適切な通信速度のＣＡＮバスを選択して送信する制御が実現する。
【００４２】
さらに、シリアルポート番号１６１とメッセージＩＤ１６２のペアに対し処理を割り当てるテーブルに基づいて処理を決定するので、同一のメッセージＩＤに対しシリアルポート毎に異なる処理を割り当てることができるので、処理の自由度が高くなる。
【実施例２】
【００４３】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００４４】
上記実施例１では、図３のように、マイコン１５０の内部にテーブル１６０を備えた構成をとっていた。しかし、テーブル１６０を予めマイコン内部に所持せずに、外部から読み込ませる構成も考えられる。
【００４５】
図９に示すマイコン１５０は、テーブル１６０を、ＵＳＢ（Universal  Serial  Bus）メモリやＩＣ（Integrated  Circuit）カードなどの外部メモリに格納してマイコンは該外部メモリからテーブル１６０を読み込む構成を示すものである。このように、着脱自在な外部メモリにマイコンの設定を格納すれば、その設定に基づきマイコンを動作させることができるので、マイコンの設定を別のマイコンに適用する処理が容易になる。
【００４６】
［実施例２の効果］
上述してきたように、本実施例ではＣＡＮメッセージに対する処理内容を示すテーブルを外部メモリに記憶させているので、メッセージに対する処理内容の変更が容易である。また、外部メモリの内容は、バックアップが容易であるし、その内容を他の大容量記憶に保存することで、複数の設定を容易に管理できる。
【実施例３】
【００４７】
実施例１では、マイコン１５０は、図７のフローチャートに示すように、ＣＡＮコントローラへフレーム送信を指令する場合、シリアルポート、送信内容を決定した上で、決定されたシリアルポートを介しＣＡＮコントローラへ送信指令、送信内容を出力している（Ｓ３０６）。
【００４８】
しかし、上記のようにフレーム送信するシリアルポートを１つに固定せずに、別のシリアルポートに変更したり、あるいは複数のシリアルポートから送信させたりするようにする制御が考えられる。
【００４９】
具体的には、マイコンからＣＡＮコントローラへ送信指令を出す際に、ＣＡＮコントローラにＣＡＮバスへの送信の可否を問い合わせるようにする。そして、送信が不可能な場合は問い合わせたＣＡＮコントローラからの送信を止め、代わりに、別のＣＡＮコントローラからの送信が可能になるのを待つようにＳ３０６でキューを制御してもよい。
【００５０】
上記のような制御を実現するための、出力キューとキューへの送信データ追加の例を、図１０に示す。出力キュー１７０は、送信するシリアルポート番号１７１、メッセージＩＤ１７２、送信するデータ１７３、および待ち時間１７４を含んでいる。シリアルポート番号１７１はシリアルポート１が最も高速のＣＡＮバスに繋がれており、上にあるフレームほど送信の優先度が高くなっている。いま、Ｓ３０６で決定した送信データは、図１０（ａ）では、送信データ１７７、１７８は、それぞれ矢印で示す出力するシリアルポートの待ちの最後部に挿入される。挿入後のキューは図１０（ｂ）のようになる。そして、図１０（ｂ）キューの上から順に出力可能な送信データが出力されていくことになる。上記のうち待ち時間１７４は、最初は送信データ１７７、１７８のように０だが、キューから送信データが出力される毎に、１ずつ加算されるようになっており、送信データがキューに登録されてから経過した時間を表している。
【００５１】
いま、図１０のように、高速なＣＡＮバスで通信されるデータは緊急性が高いので、そこに繋がれたシリアルポートの送信データが優先されるのは理にかなっている。しかし、通信速度の速い送信データが多い場合は通信速度の速い送信データのみが処理され、通信速度の遅いＣＡＮバスに対応するシリアルポートへの送信データは送信が大幅に遅延する恐れがある。そのような大幅な遅延を避けるために、待ち時間が所定の閾値を超えた送信データは、優先度の高いシリアルポートから送信されるように制御すればよい。
【００５２】
図１１を用いて、所定の閾値を超えた送信データが生じた場合の制御を説明する。まず、送信データをキューから選び出す前に、登録されている送信データ中で、待ち時間が所定の閾値を超えたものがあるかどうかを調べる。図１１（ａ）では、閾値が４と設定されており、矢印で示す最下行の送信データ１７９が待ち時間＝５で、その条件に該当している。図１１（ｂ）で、当該送信データ１７９を抽出し、図１１（ｃ）で、抽出した送信データ１７９のシリアルポート番号を優先して処理されるようにシリアルポート番号１に変更し、同時に待ち時間を０に変更する。そして、変更した送信データ１８０を図１１（ｄ）でシリアルポート１の最後部に挿入する。このように処理することで、前記待ち時間が所定の閾値を超えた送信データの送信の順位が上がるので、キュー上の優先度の低いシリアルポートから送信される送信データの送信が大幅に遅延することが回避できる。
【００５３】
なお、図１１（ｃ）では、抽出したシリアルポート３の送信データ１７９に対応する送信データ１７９を消去している。しかし、消去すると当該送信データは、当初送信先に設定されていたＣＡＮバスには送信されなくなるので、消去せずにそのまま残してもよい。
【００５４】
［実施例３の効果］
上述してきたように、本実施例では  送信フレームの待ち時間が所定の時間を超えた場合に、より通信速度の高いＣＡＮバスから送信されるように制御するので、送信データの送信が大幅に遅延することを回避できる。
【符号の説明】
【００５５】
１０，２０  ＣＡＮバス
１１，１２，２１，２２  モジュール
１００  通信ユニット
１１０，１２０  ＣＡＮコントローラ
１１２  ＣＡＮＩ／Ｆ
１１４  メッセージフィルタで
１１６  シリアルＩ／Ｆ
１１８  送信エンジン
１５０  マイコン
１５１，１５２  シリアルポート
１５５  ＣＰＵ
１６０，１７０  テーブル
１６１，１７１  シリアルポート番号
１６２，１７２  メッセージＩＤ
１６３，１７３  処理内容
１７４  待ち時間
１７７，１７８，１７９，１８０  送信データ
【図１】
2015210667.tif 000003
【図２】
2015210667.tif 000004
【図３】
2015210667.tif 000005
【図４】
2015210667.tif 000006
【図５】
2015210667.tif 000007
【図６】
2015210667.tif 000008
【図７】
2015210667.tif 000009
【図８】
2015210667.tif 000010
【図９】
2015210667.tif 000011
【図１０】
2015210667.tif 000012
【図１１】
2015210667.tif 000013