(57)【要約】【課題】通信機能内蔵制御装置において、通信処理の負荷を減らしつつ、通信に要する遅延時間をソフト介入なしで実現することを目的とする。【解決手段】上記目的は、複数の通信相手に通信する通信手段と、受信完了割込みが必要なモードと受信割込みが不要なモードを判定する判定手段を有し、前記判定手段により前記受信割込みが不要と判断した場合に送信データを１つ以上の通信相手に送信すると共に、前記送信相手と異なる第２の送信相手に仮想的に送信することを特徴とする通信機能内蔵制御装置によって達成される。【選択図】図１
2008022101.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信相手に通信する通信手段を有し、送信データを１つ以上の通信相手に送信すると共に、同一の通信相手に対し所定の空き時間を設けるために前記送信相手と異なる第２の送信相手に仮想的に送信することを特徴とする通信機能内蔵制御装置。
【請求項２】
複数の通信相手に通信する通信手段と、受信完了割込みが必要なモードと受信割込みが不要なモードを判定する判定手段を有し、前記判定手段により前記受信割込みが不要と判断した場合に送信データを１つ以上の通信相手に送信すると共に、前記送信相手と異なる第２の送信相手に仮想的に送信することを特徴とする通信機能内蔵制御装置。
【請求項３】
複数の通信相手に通信する通信手段と、受信完了割込みが必要なモードと受信割込みが不要なモードを判定する判定手段を有し、前記判定手段により前記受信割込みが必要と判断した場合に送信データを１つ以上の通信相手に送信すると共に、前記送信相手と異なる第２の送信相手に仮想的に送信することを特徴とする通信機能内蔵制御装置。
【請求項４】
請求項２ないし３に記載の通信機能内蔵制御装置において、受信完了割込みモードでの通信が完了した時点で、次の通信モードが受信完了割込みモードであった場合に、受信不要なモードに戻ることなく、続けて受信完了割込みモードを継続し、受信完了割込みが必要なモードの通信要求がなくなった時点で、受信不要なモードへ切り替えることを特徴とする通信機能内蔵制御装置。
【請求項５】
請求項２ないし４に記載の通信機能内蔵制御装置において、受信完了割込みモードでの通信が所定の時間継続した場合は、受信不要で送信するデータを一通り受信完了割込みモードにて送信することを特徴とする通信機能内蔵制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、センサや、ネットワークを介した外界の状態からアクチュエータを制御する制御装置に係わり、特に、制御装置に内蔵されたマイコンおよび周辺ＩＣ間の通信機能を有した制御装置に関する。
【背景技術】
【０００２】
自動車エンジン制御装置においては、クランク角センサ信号などの入力をもとに、燃料量や噴射タイミングを制御する。エンジン制御は、高機能化にともない、多くの情報を元に高度な制御が要求され、入出力数は増加している。近年、エンジンを制御する制御装置は、マイコンが内蔵されているが、コスト的な制約のため、入出力数がマイコン自体がもつ数よりも多い場合は、周辺ＩＣと通信することにより出力を制御するようになった。さらに、診断機能も法規制により要求され、ＩＣ自体に診断機能を有し、通信により診断情報を入手するようになった。このような制御装置の構成にともない、通信処理がソフトウェア負荷へ影響する度合いが大きくなった。特開平６−２６１０９９号公報においては、通信処理の負荷を減らす構成として、通信割込みを要するモードと通信割込みを要しないモードとを備え、それらを切り替えている。また、通信プロトコルに関しては、ＳＰＩ
（Serial Peripheral Interface）が仕様されているものがある（特許文献２，３参照）。ＳＰＩ通信は、マスタースレーブ型のシリアル通信プロトコルであり、クロックに同期してマスタとスレーブのデータを交換するのが特徴である。
【０００３】
【特許文献１】特開平６−２６１０９９号公報
【特許文献２】ＵＳ６８８０５３０  Ｂ２
【特許文献３】ＵＳ６６８４８６２  Ｂ２
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特開平６−２６１０９９号公報においては、通常は、通信割込みを要しないモードで動作し、大量データ通信の場合は、通信割込みを要するモードへ切替、終了時は通信割込みを要しないモードへ戻る構成になっており、割込みを要するモードの通信が連続で発生した場合は、不要な切替が発生する。また、複数の相手に送信する場合には、一旦、割込みを発生させ、受信処理をした後に、異なる相手との通信をするために、相手を変える度に割込みが必要となる。
【課題を解決するための手段】
【０００５】
本発明では、このような課題を解決するために、次のように構成される。
【０００６】
複数の通信相手に通信する通信手段と、受信完了割込みが必要なモードと受信割込みが不要なモードを判定する判定手段を有し、前記判定手段により前記受信割込みが不要と判断した場合に送信データを１つ以上の通信相手に送信すると共に、前記送信相手と異なる第２の送信相手に仮想的に送信する。
【発明の効果】
【０００７】
本発明によれば、通信処理の負荷を低減しつつ、ハードウェア制約に基づく通信遅延をソフトウェアの処理介入なしに生成できる。
【発明を実施するための最良の形態】
【０００８】
ハードウェア構成を変更することなく、ソフトウェアを工夫することで通信処理の負荷を低減した通信機能内蔵の制御装置を実現した。
【実施例１】
【０００９】
図１は、制御装置の構成を示したものである。制御装置１は、センサ２やアクチュエータ３と接続し、また、ネットワーク４を介して、他の制御装置５と接続されている。もちろん、制御装置１に接続するセンサ２，アクチュエータ３，ネットワーク４，他の制御装置５は複数あってもよい。制御装置１は、マイコンＡ１１，マイコンＢ６，IC_A７，IC_B８，IC_C９およびIC_D１０がある。さらに、仮想＿Ａ７１と仮想＿Ｂ７２とをつなぐポートが用意されているが、仮想＿Ａ７１と仮想＿Ｂ７２は、物理的には存在しない。マイコンＡ１１は、メモリ１１１，ＣＰＵ１１２，周辺モジュール１１３がある。周辺モジュールを介して、ネットワーク４，センサ２，アクチュエータ３，マイコンＢ６，IC_A７，IC_B８，IC_C９およびIC_D１０と接続されている。メモリ１１１には、アプリケーションプログラム１１１１，デバイスドライバ１１１２，ＯＳ１１１３がある。デバイスドライバ１１１２には、ＳＰＩ通信に関連して、モード切替処理１１１２１，割込み不要モード処理１１１２２，割込みモード処理１１１２３を有する。
【００１０】
図２は、マイコンＡ１１のデバイスドライバ１１１２のＳＰＩ通信ソフト部に関連した図である。デバイスドライバは、通信ソフトとＳＰＩドライバに分かれている。アプリケーションプログラムは、通信ソフトに対して要求を渡す。通信ソフトは、渡された要求に応じて、マイコンＢ，IC_A７，IC_B８，IC_C９，IC_D１０に対して通信する相手を判別し、通信する。周辺モジュールである、SPI_A１１１３１は、マイコンＢ６と接続されている。SPI_B１１１３２はIC_A７とIC_B８および仮想＿Ａ７１に接続されている。SPI_C
１１１３３はIC_C９とIC_D１０および仮想＿Ｂ７２に接続されている。なお、仮想＿Ａ
７１と仮想＿Ｂ７２は物理的には存在しない。
【００１１】
図３はマイコンＢ６へ送信する処理の流れを示したものである。アプリケーションプログラムからイベント２０１にて送信開始関数にて要求が出されたとき、通信ソフトはジョブキューに登録する。ジョブキューに登録されたジョブは、ＳＰＩドライバにより処理され、ジョブ名に対応する送信処理を起動する。図６にジョブ−関数対応表１１１２１３に示してある。ジョブＭｉＢ１１１２１３１に対応する送信関数は、ＳｅｎｄマイコンＢであり、ＳｅｎｄマイコンＢにて、データＣ０からデータＣ７および、送信先をセットし、送信開始する。送信が完了すると、送信完了割込みにより、ＳＰＩドライバの割込みハンドラが起動され、ジョブＭｉＢに対する受信処理であるＲｘマイコンＢを起動し、受信処理される。イベント２０２では、イベント２０１と同様の処理がされるが、送信データはＣ８からＣ１５がセットされる例である。なお図中のマＢはマイコンＢを表す。
【００１２】
図４は、割込み不要モードと割込みモードとの切替を要した通信の流れを示した図である。初期状態は割込みモードとなっている。送信バッファに、イベント２０３にて送信データにｄ０からｄ３を、送信先を仮想＿ＡとIC_AとIC_Bとをセットする。イベント２０４にて、割込み不要モードスタート関数にて、送信バッファのインデックス０から３までが繰り返し送信される。イベント２０５にて信号ＳｉｇＡの値を１にセットする要求がある。データセット関数にて、ＳｉｇＡの値を１にセットしたデータｄ４がセットされる。イベント２０６にて、診断の要求がある場合、ジョブ診断１がジョブキューにセットされる。ＳＰＩジョブ登録関数は、割込み不要モードから割込みモードへモードを切り替え、登録されたジョブ診断１の送信関数であるＳｅｎｄ診断１を起動する。Ｓｅｎｄ診断１は、送信データｅ０からｅ３１をセットし、送信先を仮想＿Ａ，IC_A，IC_Bをｔａｂｌｅ２のようにセットする。IC_AとIC_Bは、それぞれ、一定の遅延時間以上空けて通信する制約がある。本実施例では、その遅延時間は、２回分の送信時間を当てれば遅延を満たす値であるとする。ここで、最初の２回には仮想＿Ａ、３回目でIC_Aが送信先に設定されている。これは、送信開始するときに、もし、IC_Aに対しての通信で終了した場合、すぐにIC_Aを送信すると遅延時間を満たせなくなることを考量して、２回分のIC_Aが受け取らない通信を設けている。
【００１３】
イベント２０８では、別のジョブ診断２がエントリされているが、ジョブ診断１が送信中のため、このタイミングでは送信処理はされない。ジョブ診断１の受信処理が終了し、ジョブ診断１がジョブキューから取り出され、次のジョブ診断２が処理される。このとき、ジョブ診断２に対応する送信処理が起動される。送信処理は、ｅ３２からｅ３７のデータをセットし、送信する。送信完了時にＳＰＩドライバはジョブ診断２に対応する受信処理を起動する。ジョブ診断２が完了すると、他に要求のあるジョブはないため、割込み不要モードへ切り替わり、元のように、送信バッファのインデックス０から３までを繰り返し送信する。また、イベント２０７では、信号ＳｉｇＢの値を１にセットする要求があり、信号ＳｉｇＢが１になるようなデータｄ６をセットする。イベント２１１では、信号
ＳｉｇＡの値を０にセットする要求があり、ＳｉｇＡの値を０にするデータｄ６がセットされる。
【００１４】
このように、割込み不要モードでは、ハードウェアが繰り返しデータを送信することで、完了割込みが発生しないため、不要な受信処理を起動することがなくなる。また、仮想デバイスに送信することで、ハード的に遅延を発生することができ、ソフトの負荷を減らすことができる。さらに、送信データを変更したい場合は、送信バッファの送信データを変更するのみで実現できる。また、IC_Aへの送信を取りやめたい場合は、送信先をIC_Aから仮想デバイスに更新することで実現できる。また、割込みモードで使用する送信バッファは、割り込み不要モードで使うバッファ領域を避けている。これにより、割込み不要モードで送信するデータは、割込みモード動作中でも、イベント２０７やイベント２１１のようにモードに関係なく送信データを更新することができる。なお、図中の仮Ａは仮想＿Ａを、I_AはIC_Aを、I_BはIC_Bをそれぞれ表す。
【００１５】
図５は、ＳＰＩドライバが提供する関数とデータを示した図である。モード切替処理
１１１２１には、割込み不要モードスタート１１１２１１，ＳＰＩジョブ登録111212，ジョブー関数対応表１１１２１３，ジョブキュー１１１２１４がある。割込み不要モード処理１１１２２には、データセット１１１２２１，データリード１１１２２２，コマンドセット１１１２２３がある。割込みモード処理には、データセットテーブル１１１２３１，データリードテーブル１１１２３２，割込みモード送信開始１１１２３３，割込み処理
１１１２３４がある。
【００１６】
図６は、ジョブー関数対応表１１１２１３を示す。SPI_1の表とSPI_2の表である。
【００１７】
図７は、送信バッファに更新するテーブルを示す。ｔａｂｌｅ１は、図４のイベント
２０３で使用したテーブルの内容である。ｔａｂｌｅ２は、イベント２０６で使用したテーブルの内容である。送信先のIC_Aに着目すると、間に２回分以上、他のデバイスに送信し、遅延を設けている設定となっている。IC_Bに対しても同様である。
【００１８】
図８は、ＳＰＩジョブ登録の処理フローである。ジョブキューが空であれば、ｊｏｂをジョブキューに登録し、送信処理を起動する。このとき、割込み不要モードで動作中であれば、割込みモードへ切り替える。ジョブキューが空でなければｊｏｂをジョブキューに登録して処理を終了する。
【００１９】
図９は、割込み不要モードスタートの処理フローである。指定したｌｅｎが０であれば、割込み不要モード処理は何もせずに処理を終了する。ｌｅｎが０でなければ、startからｌｅｎの長さを繰り返し通信するようにレジスタ設定する。その後、通信開始する。設定したｓｔａｒｔとｌｅｎは保存しておく。
【００２０】
図１０は、データセットテーブルの処理フローである。指定したテーブルの先頭番地から送信バッファのｓｔａｒｔ番目へｌｅｎの長さ分コピーする。
【００２１】
図１１は、データセットの処理フローである。送信バッファのｉｎｄｅｘ番目のデータにｄａｔａを更新する。
【００２２】
図１２は、データリードの処理フローである。受信バッファのｉｎｄｅｘ番目のデータを報告する。
【００２３】
図１３は、コマンドセットの処理フローである。送信バッファのｉｎｄｅｘ番目の送信先にｄａｔａを更新する。
【００２４】
図１４は、データリードテーブルの処理フローである。受信バッファのｓｔａｒｔ番目からrx_data_ptrの番地へｌｅｎ分コピーする。
【００２５】
図１５は、割込みモード送信開始の処理フローである。最初に通信を停止する。次に、送信バッファのｓｔａｒｔ番目から通信を開始し、ｌｅｎ分送信したら完了割込みが入るようにレジスタ設定する。最後に通信開始する。
【００２６】
図１６は、割込み処理の処理フローである。本割込み処理は、SPI_1，SPI_2，SPI_3 の各モジュール毎に各々用意されている。まず、割込みビットをクリアし、ジョブキューから現在のｊｏｂに対応する受信処理を起動する。最後に、次のキュー処理を起動する。
【００２７】
図１７は、次のキュー処理の処理フローである。ジョブキューから現在のｊｏｂを取り出す。次に、ジョブキューが空であれば、割込み不要モード開始を実行する。このとき、ｓｔａｒｔとｌｅｎは前回保存しておいた値を指定する。図３のように割込み不要モードを使用しない場合は、初期値の値を指定することになり、ｌｅｎ＝０により、割込みモードへは切り替わらない。ジョブキューが空でなければ、次のｊｏｂの送信処理を起動する。
【００２８】
図１８は、ジョブマイコンＢの送信処理であるＳｅｎｄマイコンＢ１１１２１３８と受信処理であるＲｘマイコンＢ１１１２１３９の処理フローである。ＳｅｎｄマイコンＢ
１１１２１３８はデータセットテーブル関数を用いて、８バイトのデータと送信先をセットする。ＲｘマイコンＢ１１１２１３９は、データリードテーブル関数を用いて受信バッファのデータをtable_miB_rxにコピーする。
【００２９】
図１９は、ジョブ診断１の送信処理であるＳｅｎｄ診断１と受信処理であるＲｘ診断１の処理フローである。Ｓｅｎｄ診断１は、データセットテーブル関数を用いて、データと送信先をセットし、送信開始する。Ｒｘ診断１は、データリードテーブル関数を用いて受信バッファのデータをコピーし、診断解析する。
【００３０】
図２０は、ジョブ診断２の送信処理であるＳｅｎｄ診断２と受信処理であるＲｘ診断２の処理フローである。Ｓｅｎｄ診断２は、データセットテーブル関数を用いて、データと送信先をセットし、送信開始する。Ｒｘ診断２は、データリードテーブル関数を用いて受信バッファのデータをコピーし、診断解析する。
【産業上の利用可能性】
【００３１】
本発明は、自動車制御をはじめとして、通信機能を内蔵した制御装置に適用可能である。
【図面の簡単な説明】
【００３２】
【図１】制御装置構成図。
【図２】デバイスドライバの通信部構成図。
【図３】割込み不要モードなしの通信タイミングチャート。
【図４】割込み不要モードと割込みモードの切り替え通信タイミングチャート。
【図５】ＳＰＩドライバ構成図。
【図６】ジョブー関数対応表。
【図７】送信テーブル。
【図８】ＳＰＩジョブ登録の処理フロー。
【図９】割込み不要モードスタートの処理フロー。
【図１０】データセットテーブルの処理フロー。
【図１１】データセットの処理フロー。
【図１２】データリードの処理フロー。
【図１３】コマンドセットの処理フロー。
【図１４】データリードテーブルの処理フロー。
【図１５】割込みモード送信開始の処理フロー。
【図１６】割込み処理の処理フロー。
【図１７】次のキュー処理の処理フロー。
【図１８】ＳｅｎｄマイコンＢとＲｘマイコンＢの処理フロー。
【図１９】Ｓｅｎｄ診断１とＲｘ診断１の処理フロー。
【図２０】Ｓｅｎｄ診断２とＲｘ診断２の処理フロー。
【符号の説明】
【００３３】
１…制御装置、２…センサ、３…アクチュエータ、４…ネットワーク、５…制御装置１に接続した制御装置、６…マイコンＢ、７…IC_A、８…IC_B、９…IC_C、１０…IC_D、
１１…マイコンＡ、１１１…メモリ、１１２…ＣＰＵ、１１３…周辺モジュール、1111…アプリケーションプログラム、１１１２…デバイスドライバ、１１１３…ＯＳ。
【図１】
2008022101.tif 000003
【図２】
2008022101.tif 000004
【図３】
2008022101.tif 000005
【図４】
2008022101.tif 000006
【図５】
2008022101.tif 000007
【図６】
2008022101.tif 000008
【図７】
2008022101.tif 000009
【図８】
2008022101.tif 000010
【図９】
2008022101.tif 000011
【図１０】
2008022101.tif 000012
【図１１】
2008022101.tif 000013
【図１２】
2008022101.tif 000014
【図１３】
2008022101.tif 000015
【図１４】
2008022101.tif 000016
【図１５】
2008022101.tif 000017
【図１６】
2008022101.tif 000018
【図１７】
2008022101.tif 000019
【図１８】
2008022101.tif 000020
【図１９】
2008022101.tif 000021
【図２０】
2008022101.tif 000022