(57)【特許請求の範囲】
【請求項１】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、
ネットワークに接続され、該ネットワーク上に送信メッセージを送信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いて前記送信メッセージを送信し、
前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、
該送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成する送信プロトコル処理手段と、
該送信プロトコル処理手段によって生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信データに戻すことにより送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、
前記送信データ記憶手段に記憶された前記送信データと、前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定し、一致した場合にのみ前記送信プロトコル処理によって生成された前記送信メッセージを前記ネットワークコントローラに要求して送信する送信データ比較手段とを有することを特徴とする自動車制御システム。
【請求項２】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、
ネットワークに接続され、該ネットワーク上に送信メッセージを送信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いて前記送信メッセージを送信し、
前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、
該送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成し、該送信メッセージを前記ネットワークコントローラに要求して送信する送信プロトコル処理手段と、
該送信プロトコル処理送信手段によって生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信データに戻すことにより送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、
前記送信データ記憶手段に記憶された前記送信データと、前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定する送信データ比較手段とを有することを特徴とする自動車制御システム。
【請求項３】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、ネットワークに接続され、該ネットワーク上に受信メッセージを受信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いて受信メッセージを受信し、前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、
該受信メッセージ記憶手段に記憶された前記受信メッセージを入力し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成する受信プロトコル処理手段と、
該受信プロトコル処理手段によって生成された前記受信データを入力し、前記入力された受信メッセージを元の受信メッセージに戻すことにより受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、
前記受信メッセージ記憶手段に記憶された受信メッセージと、前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定し、一致した場合にのみ前記受信プロトコル処理手段により生成された前記受信データをアプリケーションプログラムに渡す受信メッセージ比較手段とを有することを特徴とする自動車制御システム。
【請求項４】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、ネットワークに接続され、該ネットワーク上に受信メッセージを受信するネットワークコントローラとを有し、前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いて受信メッセージを受信し、前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、
該受信メッセージ記憶手段に記憶された前記受信メッセージを入力し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成し、該受信データを前記アプリケーションプログラムに渡す受信プロトコル処理手段と、
該受信プロトコル処理手段によって前記アプリケーションプログラムに渡された前記受信データを入力し、前記入力された受信データを元の受信メッセージに戻すことにより受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、
前記受信メッセージ記憶手段に記憶された受信メッセージと、前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定する受信メッセージ比較手段と、を有することを特徴とする自動車制御システム。
【請求項５】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、ネットワークに接続され、該ネットワーク上に送信メッセージを送信するとともに、ネットワーク上から受信メッセージを受信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いてメッセージを送受信し、前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、
前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、
前記送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成するとともに、受信データを入力し、前記入力された受信データを元の受信メッセージに戻すことにより受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージを読み出し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成するとともに、前記送信プロトコル処理手段によって生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信データに戻すことにより送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、
前記送信データ記憶手段に記憶された前記送信データと該送信データに対応する前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定し、一致した場合にのみ前記送信プロトコル処理手段によって生成された前記送信メッセージを前記ネットワークコントローラに要求して送信する送信データ比較手段と、前記受信メッセージ記憶手段に記憶された前記受信メッセージと、該受信メッセージに対応する前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定し、一致した場合にのみ前記受信プロトコル処理手段により生成された前記受信データをアプリケーションプログラムに渡す受信メッセージ比較手段とを有することを特徴とする自動車制御システム。
【請求項６】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、
ネットワークに接続され、該ネットワーク上に送信メッセージを送信するとともに、ネットワーク上から受信メッセージを受信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いてメッセージを送受信し、前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、
前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、
前記送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成し、該送信メッセージを前記ネットワークコントローラに要求して送信するとともに、受信データを入力し、所定の送信プロトコル処理を行って受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージを入力し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成するとともに、前記送信プロトコル処理手段によって生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信データに戻すことにより送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、
前記送信データ記憶手段に記憶された前記送信データと該送信データに対応する前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定する送信データ比較手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージと、該受信メッセージに対応する前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定し、一致した場合にのみ前記受信プロトコル処理手段により生成された前記受信データをアプリケーションプログラムに渡す受信メッセージ比較手段とを有することを特徴とする分散システム。
【請求項７】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットは、アプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、
ネットワークに接続され、該ネットワーク上に送信メッセージを送信するとともに、ネットワーク上から受信メッセージを受信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いてメッセージを送受信する分散システムにおいて、前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、
前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、
前記送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成するとともに、前記アプリケーションプログラムに渡された受信データを入力し、所定の送信プロトコル処理を行って受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージを入力し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成し、該受信データを前記アプリケーションプログラムに渡すとともに、前記送信プロトコル処理手段によって生成された前記送信メッセージを入力し、前記送信メッセージを元の送信データに戻すことにより送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、
前記送信データ記憶手段に記憶された前記送信データと該送信データに対応する前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定し、一致した場合にのみ前記送信プロトコル処理手段によって生成された前記送信メッセージを前記ネットワークコントローラに要求して送信する送信データ比較手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージと、該受信メッセージに対応する前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定する受信メッセージ比較手段とを有することを特徴とする自動車制御システム。
【請求項８】
複数の制御ユニットが互いに通信を行う自動車制御システムであって、前記制御ユニットはアプリケーションプログラムを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、
ネットワークに接続され、該ネットワーク上に送信メッセージを送信するとともに、ネットワーク上から受信メッセージを受信するネットワークコントローラとを有し、
前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いてメッセージを送受信する分散システムにおいて、前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、
前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、
前記送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成し、該送信メッセージを前記ネットワークコントローラに要求して送信するとともに、前記アプリケーションプログラムに渡された受信データを入力し、所定の送信プロトコル処理を行って受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージを入力し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成し、該受信データを前記アプリケーションプログラムに渡すとともに、前記送信プロトコル処理手段によって生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信データに戻すことにより送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、
前記送信データ記憶手段に記憶された前記送信データと該送信データに対応する前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定する送信データ比較手段と、
前記受信メッセージ記憶手段に記憶された前記受信メッセージと、該受信メッセージに対応する前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定する受信メッセージ比較手段とを有することを特徴とする自動車制御システム。
【請求項９】
請求項１，５または７のいずれかにおいて、前記送信プロトコル処理手段は、
前記送信データ記憶手段に記憶された送信データを入力し、所定のエラー検出符号化処理を行い、エラー検出符号化送信データを生成するエラー検出符号化手段と、
該エラー検出符号化手段により生成された前記エラー検出符号化送信データを入力し、所定の送信プロトコル処理を行い、前記ネットワークコントローラに渡すための送信メッセージを生成するエラー検出符号化データ送信プロトコル処理手段とを有し、
前記受信プロトコル処理手段は、
前記送信プロトコル処理手段により生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信データに戻すことによりエラー検出符号化送信メッセージ受信等価変換データを生成するエラー検出符号化受信プロトコル処理手段と、
前記エラー検出符号化受信プロトコル処理手段により生成された前記エラー検出符号化送信メッセージ受信等価変換データを入力し、所定のエラー検出復号化処理を行い、前記送信メッセージ受信等価変換データを生成し、前記エラー検出符号化送信メッセージ受信等価変換データに誤りがあれば、該エラー検出符号化送信メッセージ受信等価変換データに誤りがあることを検出するエラー検出復号化処理手段とを有することを特徴とする自動車制御システム。
【請求項１０】
請求項２，６または８において、前記送信プロトコル処理手段は、
前記送信データ記憶手段に記憶された送信データを入力し、所定のエラー検出符号化処理を行い、エラー検出符号化送信データを生成するエラー検出符号化手段と、
該エラー検出符号化手段により生成された前記エラー検出符号化送信データを入力し、所定の送信プロトコル処理を行い、前記ネットワークコントローラに渡すための送信メッセージを生成し、該送信メッセージを前記ネットワークコントローラに要求して送信するエラー検出符号化データ送信プロトコル処理手段とを有し、
前記受信プロトコル処理手段は、
前記送信プロトコル処理手段により生成された前記送信メッセージを入力し、前記入力された送信メッセージを元の送信メッセージに戻すことによりエラー検出符号化送信メッセージ受信等価変換データを生成するエラー検出符号化受信プロトコル処理手段と、
前記エラー検出符号化受信プロトコル処理手段により生成された前記エラー検出符号化送信メッセージ受信等価変換データを入力し、所定のエラー検出復号化処理を行い、前記送信メッセージ受信等価変換データを生成し、前記エラー検出符号化送信メッセージ受信等価変換データに誤りがあれば、該エラー検出符号化送信メッセージ受信等価変換データに誤りがあることを検出するエラー検出復号化処理手段とを有することを特徴とする自動車制御システム。
【請求項１１】
請求項３，５または６のいずれかにおいて、前記受信プロトコル処理手段は、
前記受信メッセージ記憶手段に記憶された受信メッセージを入力し、所定の受信プロトコル処理を行い、エラー検出符号化受信データを生成するエラー検出符号化受信プロトコル処理手段と、
該エラー検出符号化受信プロトコル処理手段により生成された前記エラー検出符号化受信データを入力し、所定のエラー検出復号化処理を行い、前記アプリケーションプログラムに渡すための受信データを生成し、前記エラー検出符号化受信データに誤りがあれば、該エラー検出符号化受信データに誤りがあることを検出するエラー検出復号化処理手段とを有し、
前記送信プロトコル処理手段は、
前記受信プロトコル処理手段により生成された前記受信データを入力し、所定のエラー検出符号化処理を行い、エラー検出符号化受信データを生成するエラー検出符号化手段と、
該エラー検出符号化手段により生成された前記エラー検出符号化受信データを入力し、前記入力されたエラー検出符号化受信データを元の受信データに戻すことにより受信データ送信等価変換メッセージを生成するエラー検出符号化データ送信プロトコル処理手段とを有することを特徴とするシステム。
【請求項１２】
請求項４，７または８のいずれかにおいて、前記受信プロトコル処理手段は、
前記受信メッセージ記憶手段に記憶された受信メッセージを入力し、所定の受信プロトコル処理を行い、エラー検出符号化受信データを生成するエラー検出符号化受信プロトコル処理手段と、
該エラー検出符号化受信プロトコル処理手段により生成された前記エラー検出符号化受信データを入力し、所定のエラー検出復号化処理を行い、前記アプリケーションプログラムに渡すための受信データを生成し、前記エラー検出符号化受信データに誤りがあれば、該エラー検出符号化受信データに誤りがあることを検出し、前記エラー検出符号化受信データに誤りがあることを検出しない場合のみ、前記受信データを前記アプリケーションプログラムに渡すエラー検出復号化処理手段とを有し、
前記送信プロトコル処理手段は、
前記受信プロトコル処理手段により生成された前記受信データを入力し、所定のエラー検出符号化処理を行い、エラー検出符号化受信データを生成するエラー検出符号化手段と、
該エラー検出符号化手段により生成された前記エラー検出符号化受信データを入力し、前記入力されたエラー検出符号化受信データを元の受信データに戻すことにより前記受信データ送信等価変換メッセージを生成するエラー検出符号化データ送信プロトコル処理手段とを有することを特徴とする自動車制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はネットワーク接続された分散システムに係り、特に、メッセージデータがメッセージ送受信処理中に破壊されていないことを保証するのに好適な高信頼分散システムに関する。
【０００２】
【従来の技術】
ネットワークによりメッセージを送受信する場合、ネットワーク通信をハードウェアで実現するネットワークコントローラと、ネットワークコントローラを用いてネットワーク通信を行う通信ソフトウェアを用いる。アプリケーションプログラム内に格納されたデータを送信する場合、データを送信プロトコル処理してネットワークコントローラに書き込む。また、受信の場合は、ネットワークコントローラに到着したメッセージを受信プロトコル処理してアプリケーションプログラム内に書き込む。このようにデータを送受信する際のアプリケーションプログラムとネットワークコントローラ間の送受信プロトコル処理は通信ソフトウェアを使って処理される。通信ソフトウェアにバグが存在したり、通信ソフトウェアが使用するレジスタやメモリが一時的にしろ破壊されたり、何らかの要因によりデータの内容が変化する場合、送受信プロトコル処理により破壊されたデータの内容が送受信される。送受信プロトコル処理によりデータの内容が破壊されていないことを保証するために、例えば、同じ送受信プロトコル処理を実現する、複数の異なる人物で作成された複数バージョンの通信ソフトウェアを使用する方法がある。この方法は１つのバージョンの通信ソフトウェアで送受信プロトコル処理された結果と別のバージョンの通信ソフトウェアで送受信プロトコル処理された結果が一致することを確認することでデータの内容が破壊されていないことを保証する。
【０００３】
【発明が解決しようとする課題】
しかしながら上記従来技術では、複数バージョンの通信ソフトウェアを作成する必要があるという問題がある。そこで本発明は、１バージョンの通信ソフトウェアで送受信プロトコル処理することによりデータの内容が破壊されていないことを保証できる手段を提供することを目的とする。
【０００４】
【課題を解決するための手段】
上記目的を達成するため本発明では、次のように構成される。
【０００５】
（１）アプリケーションプログラムを記憶するメモリと、該メモリに記憶された前記アプリケーションプログラムを実行するＣＰＵと、ネットワークに接続され、該ネットワーク上に送信メッセージを送信するとともに、ネットワーク上から受信メッセージを受信するネットワークコントローラとを有し、前記メモリに記憶された前記アプリケーションプログラムを前記ＣＰＵで実行しながら、前記ネットワークコントローラを用いてメッセージを送受信する分散システムにおいて、前記アプリケーションプログラムが生成した送信データを記憶する送信データ記憶手段と、前記ネットワークコントローラから受信した前記受信メッセージを記憶する受信メッセージ記憶手段と、前記送信データ記憶手段に記憶された前記送信データを入力し、所定の送信プロトコル処理を行って前記ネットワークコントローラに渡すための送信メッセージを生成するとともに、受信データを入力し、所定の送信プロトコル処理を行って受信データ送信等価変換メッセージを生成する送信プロトコル処理手段と、前記受信メッセージ記憶手段に記憶された前記受信メッセージを読み出し、所定の受信プロトコル処理を行って前記アプリケーションプログラムに渡すための受信データを生成するとともに、前記送信プロトコル処理手段によって生成された前記送信メッセージを入力し、所定の受信プロトコル処理を行って送信メッセージ受信等価変換データを生成する受信プロトコル処理手段と、前記送信データ記憶手段に記憶された前記送信データと該送信データに対応する前記受信プロトコル処理手段により生成された前記送信メッセージ受信等価変換データとが一致するかを判定し、一致した場合にのみ前記送信プロトコル処理手段によって生成された前記送信メッセージを前記ネットワークコントローラに要求して送信する送信データ比較手段と、前記受信メッセージ記憶手段に記憶された前記受信メッセージと、該受信メッセージに対応する前記送信プロトコル処理手段により生成された前記受信データ送信等価変換メッセージとが一致するかを判定し、一致した場合にのみ前記受信プロトコル処理手段により生成された前記受信データをアプリケーションプログラムに渡す受信メッセージ比較手段と、を有する。
【０００６】
送信データ記憶手段は、送信データが格納されている記憶領域であり、アプリケーションプログラム内にある。受信メッセージ記憶手段は、ネットワークから送られてきたメッセージを格納する領域で、ネットワークコントローラ内にある。送信プロトコル処理手段は、アプリケーション内にある送信データをネットワークへ送信するためのプロトコル処理を行う。受信プロトコル処理手段は、ネットワークコントローラに届いたメッセージをアプリケーション内に届けるためのプロトコル処理を行う。送信データ比較手段は、アプリケーション内の送信データを送信プロトコル処理手段により、送信メッセージを生成して、ネットワークコントローラに書き込み、その書き込んだ送信メッセージを受信プロトコル処理手段により元の送信データに戻し、アプリケーション内にある送信データと、受信プロトコル処理手段により得た送信データとを比較し、等しければ、ネットワークコントローラに送信要求を出す。なお、アプリケーション内の送信データを送信プロトコル処理手段により、送信メッセージを生成して、ネットワークコントローラに書き込み、その書き込んだ送信メッセージを受信プロトコル処理手段により得た送信データを送信メッセージ受信等価変換データと呼ぶ。受信メッセージ比較手段は、ネットワークコントローラに届いた受信メッセージを受信プロトコル処理手段でアプリケーションに書き込むための受信データを生成し、その受信データを送信プロトコル処理手段によりネットワーク送信できるメッセージを生成し、ネットワークコントローラに届いたメッセージと、送信プロトコル処理手段により生成されたメッセージとを比較して、等しければ受信データをアプリケーション内に書き込む。なお、受信データを送信プロトコル処理手段により生成したメッセージを受信データ送信等価変換メッセージと呼ぶ。
【０００７】
これにより、送信では、アプリケーションプログラム内にある送信データから送信プロトコル処理手段により生成したメッセージをネットワークコントローラに書き込み、そのネットワークコントローラに書き込まれた送信メッセージを受信プロトコル処理手段により送信メッセージ受信等価変換データを生成し、該送信メッセージ受信等価変換データとアプリケーションプログラム内にある送信メッセージと一致することを確認してから送信することにより、ネットワークコントローラに書き込まれた送信メッセージが正しいことを保証する。また、受信では、ネットワークコントローラに届いたメッセージを受信プロトコル処理手段により受信データを生成し、その受信データを送信プロトコル処理手段により受信データ送信等価変換メッセージを生成し、該受信データ送信等価変換メッセージとネットワークコントローラに届いたメッセージとを比較することで、受信データが正しく生成されたことを保証する。
【０００８】
また、好ましくは、上記（１）において、前記送信プロトコル処理手段は、前記送信データ記憶手段に記憶された送信データを入力し、所定のエラー検出符号化処理を行い、エラー検出符号化送信データを生成するエラー検出符号化手段と、該エラー検出符号化手段により生成された前記エラー検出符号化送信データを入力し、所定の送信プロトコル処理を行い、前記ネットワークコントローラに渡すための送信メッセージを生成するエラー検出符号化データ送信プロトコル処理手段とを有し、
前記受信プロトコル処理手段は、前記送信プロトコル処理手段により生成された前記送信メッセージを入力し、所定の受信プロトコル処理を行い、エラー検出符号化送信メッセージ受信等価変換データを生成するエラー検出符号化受信プロトコル処理手段と、前記エラー検出符号化受信プロトコル処理手段により生成された前記エラー検出符号化送信メッセージ受信等価変換データを入力し、所定のエラー検出復号化処理を行い、前記送信メッセージ受信等価変換データを生成し、前記エラー検出符号化送信メッセージ受信等価変換データに誤りがあれば、該エラー検出符号化送信メッセージ受信等価変換データに誤りがあることを検出するエラー検出復号化処理手段と、を有する。
【０００９】
エラー検出符号化手段は、アプリケーションプログラム内にある送信データをエラー検出可能な符号化で変換する。エラー検出復号化処理手段は、エラー検出符号化手段により変換されたデータを元のデータに戻すとともに、データの内容が変わっていないかのエラーの有無を検出する。エラー検出符号化データ送信プロトコル処理手段は、エラー検出符号化手段により変換された送信データを送信プロトコル処理し、生成したメッセージをネットワークコントローラに書き込む。エラー検出符号化受信プロトコル処理手段は、ネットワークコントローラに届いたメッセージを受信プロトコル処理し、エラー検出符号化手段により変換された受信データを生成する。
【００１０】
これにより、送信では、正しくエラー検出符号化手段により変換した送信データがネットワークコントローラに書き込まれたことを保証する。受信では、ネットワークコントローラに届いたメッセージをエラー検出符号化受信プロトコル処理手段として、送信側でエラー検出符号化手段により変換されたデータを生成し、該データをエラー検出復号化処理手段により元のデータに戻すとともに、データの内容が正しいことが保証できる。
【００１１】
【発明の実施の形態】
（１）本発明の一実施例
（ａ）本発明の一実施例の全体構成
図１は本発明の一実施例である高信頼分散システムの構成を示したものである。高信頼分散システムは制御ユニット２０００および２０６０がネットワーク２００５で接続されている。本発明のネットワークは、例えば、オープン・デバイスネット・ベンダー・アソシエーション(Open DeviceNet Vendor Association）社発行，デバイスネット（DeviceNet）仕様書（ボリューム１（Volume １），リリース２.０(Release２.０），１９９８年），第２章２.１〜２.８に記載されているＣＡＮ(Controller Area Network）を用いる。制御ユニット２０００は、ＣＰＵ２００１，メモリ２００２，ＣＡＮコントローラ２００３で構成され、それらはバス２００４で接続されている。各制御ユニットは、例えば、ハイブリッド電気自動車制御システムを構成する、エンジンを制御するためのエンジン制御ユニット，モータを制御するモータ制御ユニット，変速機を制御する変速機制御ユニット，スロットルを制御するスロットル制御ユニット，ブレーキを制御するブレーキ制御ユニットである。各制御ユニットはネットワーク２００５であるＣＡＮで接続され、他の制御ユニットと通信することにより動作する。ＣＡＮコントローラ２００３は、ネットワーク２００５を介して、他の制御ユニット2060に内蔵されるＣＡＮコントローラと接続されている。メモリ２００２には、アプリケーションプログラム２００６，高信頼通信ソフト２０８０，ＯＳＥＫ−    COM2008，ＣＡＮドライバ２００９，ＯＳ２０５０が記憶されている。ここで、ＯＳＥＫ−ＣＯＭは、オー・エス・イー・ケイ（ＯＳＥＫ）発行、オー・エス・イー・ケイ／ブイ・ディー・エックス コミュニケーション（ＯＳＥＫ／ＶＤＸ Communication）仕様書（バージョン２.１(Version２.１），リビジョン１    （revision１），１９９８年）に記載されているＯＳＥＫ−ＣＯＭプロトコルを処理するプログラムである。ＯＳＥＫ−ＣＯＭ２００８は、課題を解決するための手段記載の所定の送信プロトコル処理および受信プロトコル処理に対応する。CPU2001 は、メモリ２００２に記憶されているプログラムを読み出して、プログラム処理を実行する。ＯＳ２０５０は複数のタスクを並行に実行できるマルチタスク機能を持つ。ＣＡＮコントローラ２００３は、ネットワーク２００５を介して、他の制御ユニット２０６０とのメッセージ送信，メッセージ受信を行うハードウェアである。ＣＡＮコントローラ２００３は、課題を解決するための手段記載のネットワークコントローラに対応する。
【００１２】
以下、高信頼通信ソフト２０８０，ＯＳＥＫ−COM2008 ，ＣＡＮドライバ2009，ＣＡＮコントローラ２００３，アプリケーションプログラム２００６，OS2050、の順に詳細に説明する。
【００１３】
（ｂ）高信頼通信ソフト
高信頼通信ソフト２０８０について詳細に説明する。まず高信頼通信ソフト２０８０のソフトウェア構成について説明する。高信頼通信ソフト２０８０は、図１に示すように、メッセージテーブル２０７２，通信エラー処理２０７３，メッセージ通信処理２０７４で構成される。
【００１４】
まず、メッセージテーブル２０７２について詳細に説明する。図２７は、メッセージテーブル２０７２の詳細な構成図である。メッセージテーブル２０７２は、メッセージ名４０５１，MessageID4052，DataSize4053 で構成される。メッセージ名４０５１は、ＯＳＥＫ−COM2008 に複数用意されるメッセージオブジェクトを一意に決めるデータを記憶する領域であり、例えば、メッセージオブジェクトａ２０１５を指すポインタとする。MessageID4052 は、メッセージＩＤを記憶する領域である。DataSize4053はメッセージのデータサイズを記憶する領域である。
【００１５】
次に、メッセージ通信処理２０７４について詳細に説明する。図２９はメッセージ通信処理２０７４の詳細な構成図である。メッセージ通信処理２０７４は、メッセージ送信処理２０７０，メッセージ受信処理２０７１，サム処理２０７５，チェックサム処理２０７６,一時受信データ２０７７,一時送信データ２０７８で構成される。メッセージ送信処理２０７０は、課題を解決するための手段記載のエラー検出符号化データ送信プロトコル処理手段に対応する。メッセージ受信処理２０７１は、課題を解決するための手段記載のエラー検出符号化受信プロトコル処理手段に対応する。サム処理２０７５は、課題を解決するための手段記載のエラー検出符号化手段に対応する。チェックサム処理２０７６はエラー検出復号化処理手段に対応する。サム処理２０７５およびチェックサムサム処理2076については後で詳細に説明する。
【００１６】
まず、一時受信データ２０７７と一時送信データ２０７８について説明する。一時受信データ２０７７は、課題を解決するための手段記載のエラー検出符号化送信データを記憶する領域に対応する。一時送信データ２０７８は、課題を解決するための手段記載のエラー検出符号化受信データを記憶する領域に対応する。一時受信データ２０７７と一時送信データ２０７８は、メッセージデータを記憶する領域であり、メッセージ通信処理２０７４が呼ばれるときに領域（２０７７，２０７８）が確保され、メッセージ通信処理２０７４が終了するときに確保された領域（２０７７，２０７８）は消滅する。
【００１７】
次に、メッセージ送信処理２０７０について説明する。図２２はメッセージ送信処理２０７０の流れを示すフローチャートである。図２２を用いて、メッセージ送信処理を説明する。
【００１８】
ステップ７５０１では、サム処理２０７５を使って、送信するデータをサム処理し、その結果生成したデータを一時送信データ２０７８に書き込む。ステップ７０５１で生成したデータは、課題を解決するための手段記載のエラー検出符号化送信データおよびエラー検出符号化送信に対応する。送信データが格納されているアドレスはメッセージ送信処理２０７０を呼ぶときに引数で渡される。サム処理２０７５については後で記述する。ステップ７５０１でサム処理するデータが格納されている領域は、課題を解決するための手段記載の送信データ記憶手段に対応する。
【００１９】
ステップ７５０２では、一時送信データ２０７８のデータを、ＯＳＥＫ−    COM2008 のメッセージ通信処理２０９０の、メッセージ送信処理２０１０を使って送信処理する。
【００２０】
ステップ７５０３では、ＯＳＥＫ−COM2008 のメッセージ通信処理２０９０のメッセージ受信処理２０１１を使って受信処理したデータを、一時受信データ２０７７に書き込む。
【００２１】
ステップ７５０４では、一時受信データ２０７７のデータを、チェックサム処理２０７６を使ってチェックサム処理し、その結果生成したデータを一時受信データ２０７７に書き込む。チェックサム処理２０７６については後で記述する。ステップ７５０４で生成したデータは課題を解決するための手段記載の送信メッセージ受信等価変換データに対応する。
【００２２】
ステップ７５０５では、ステップ７５０４でチェックサム処理した結果が正常かを判定する。
【００２３】
正常ならば、ステップ７５０７で、アプリケーションプログラム２００６内にある送信データと、一時受信データ２０７７とが一致するか比較する。送信データが格納されたアドレスはメッセージ送信処理２０７０を呼ぶときに引数で渡される。
【００２４】
一致すれば、ステップ７５０８で、ＣＡＮドライバ２００９のメッセージ通信処理２０４０の、送信司令処理２０３７を使って送信する。
【００２５】
一致しなければ、ステップ７５０９で、通信エラー処理２０７３を起動する。
ステップ７５０５で正常でなければ、ステップ７５１０で、通信エラー処理  ２０７３を起動する。
【００２６】
ステップ７５０５，ステップ７５０７，ステップ７５０８，ステップ７５０９の一連の処理は、課題を解決するための手段記載の送信データ比較手段に対応する。
【００２７】
次に、メッセージ受信処理２０７１について詳細に説明する。図２３は、メッセージ受信処理２０７１の流れを示すフローチャートである。図２３を用いて、メッセージ受信処理について説明する。
【００２８】
ステップ７６０１では、ＯＳＥＫ−COM2008 のメッセージ通信処理２０９０の、メッセージ受信処理２０１１を使って受信処理したデータを、一時受信データ２０７７に書き込む。
【００２９】
ステップ７６０２では、一時受信データ２０７７のデータを、チェックサム処理２０７６を使ってチェックサム処理し、その結果生成したデータをアプリケーションプログラム２００６内の書き込み先アドレスに書き込む。書き込み先アドレスはメッセージ受信処理２０７１が呼ばれるとき引数で渡される。
【００３０】
ステップ７６０３では、ステップ７６０２でチェックサム処理した結果が正常かを判定する。
【００３１】
正常であれば、ステップ７６０４でサム処理２０７５を使って、ステップ7602で書き込んだアプリケーションプログラム２００６内のデータをサム処理し、その結果生成したデータを一時送信データ２０７８に書き込む。ステップ７６０４で生成したデータは、課題を解決するための手段記載のエラー検出符号化送信メッセージ受信等価変換データに対応する。
【００３２】
ステップ７６０６で、一時受信データ２０７７と一時送信データ２０７８が一致するか比較する。
【００３３】
一致しなければ、ステップ７６０７で、通信エラー処理２０７３を起動する。ステップ７６０３で正常でなければ、ステップ７６０８で通信エラー処理2073を起動する。
【００３４】
ステップ７６０３，ステップ７６０４，ステップ７６０６，ステップ７６０７の一連の処理は、課題を解決するための手段記載の受信メッセージ比較手段に対応する。
【００３５】
次に、サム処理２０７５について詳細に説明する。サム処理は、課題を解決するための手段記載の所定のエラー検出符号化処理に対応する。サム処理はデータをバイト長に区切り、区切られた全データをバイト長単位で加算して全加算値がゼロとなるバイト長のデータを付加する処理である。加算の際の桁上げは無視する。図２５は、サム処理２０７５の流れを示すフローチャートである。図２５を用いて、サム処理２０７５について説明する。
【００３６】
ステップ７７０１で、サム処理するデータを書き込み先アドレスにコピーする。書き込み先アドレスはサム処理２０７５が呼ばれるときに引数で渡される。
【００３７】
ステップ７７０２で、サム処理するデータをバイト単位に区切り、各バイト単位のデータの総和を求める。
【００３８】
ステップ７７０３で、ステップ７７０２で求めた総和に足してゼロになるバイトサイズのデータを求める。
【００３９】
ステップ７７０４で、ステップ７７０３で求めたデータをステップ７７０１で書き込んだデータの最後に付けるように書き込む。
【００４０】
最後に、チェックサム処理２０７６について詳細に説明する。チェックサム処理は、課題を解決するための手段記載の所定のエラー検出復号化処理に対応する。チェックサム処理はデータをバイト長に区切り、区切られた全データをバイト長単位で加算して全加算値がゼロとなることを確認するとともに、サム処理時に付加されたデータを削除する。加算の際の桁上げは無視する。図２４は、チェックサム処理２０７６の流れを示すフローチャートである。図２４を用いて、チェックサム処理２０７６について説明する。
【００４１】
ステップ７８０１で、チェックサム処理するデータを書き込み先アドレスにコピーする。書き込み先アドレスはサム処理２０７５が呼ばれるときに引数で渡される。
【００４２】
ステップ７８０２で、チェックサム処理するデータをバイト単位に区切り、各バイト単位のデータの総和を求める。
【００４３】
ステップ７８０３で、ステップ７８０３で求めた総和がゼロか判定する。
【００４４】
ゼロであれば、ステップ７８０４で、リターンパラメータを０に設定する。
【００４５】
ゼロでなければステップ７８０５で、リターンパラメータを１に設定する。
【００４６】
ステップ７８０６で、リターンパラメータを返して終了する。
【００４７】
（ｃ）ＯＳＥＫ−ＣＯＭ
次にＯＳＥＫ−ＣＯＭのソフトウェア構成について詳細に説明する。ＯＳＥＫ−COM2008 は、メッセージオブジェクトａ２０１５，メッセージオブジェクトｂ２０１６，メッセージオブジェクトｃ２０１７等の複数のメッセージオブジェクト，メッセージ通信処理２０９０で構成される。なお、本実施例で用いられるメッセージには、Queuedメッセージ，Unqueuedメッセージの２種類がある。
Queuedメッセージは、キューイングが必要で上書き不可能なメッセージである。Unqueuedメッセージは、キューイングが不要で、上書き可能なメッセージである。
【００４８】
図４は、メッセージオブジェクトａ２０１５の詳細なソフトウェア構成図を示したものである。メッセージオブジェクトａ２０１５は、メッセージの基本的情報を記憶するsMsgObj3001，メッセージのステータス情報を記憶するStatus3007,メッセージデータ値を記憶するData3008，メッセージデータ値の読み出し用記憶領域であるBuffer3009，メッセージがユニット外へ通信する場合の情報を記憶するsMsgNetParams3013，メッセージがQueuedメッセージの場合に、Queued メッセージの情報を記憶するsQueuedMsgInfo3018，Queuedメッセージを構成するFIFO情報を記憶するsQueuedMsgObjA3022,sQueuedMsgObjB3030等の複数のsQueuedMsgObj，Queuedメッセージのステータス情報を記憶するStatus3024，Status3032等の複数のStatus，Queuedメッセージのデータ値を記憶するFIFOBufferA3029，       FIFOBufferB3037等の複数のFIFOBuffer，ゼロであるNULL3011，NULL3038 等の複数のＮＵＬＬ、で構成される。
【００４９】
Status3007は、sMsgObjのステータス(送信メッセージの場合は送信完了：E_OK，送信未完：E_COM_LOCKED，受信の場合は、新規メッセージ到着：E_OK，新規メッセージ未到着：E_COM_NOMSGのいずれか)を記憶する領域である。Status3024は、sQueuedMsgObjA3022の状態（新規メッセージ到着：E_OK，新規メッセージ未到着：E_COM_NOMSG，バッファあふれ：E_COM_LIMITのいずれか）を記憶する領域である。Status3032は、sQueuedMsgObjB3030の状態（新規メッセージ到着：E_OK，新規メッセージ未到着：E_COM_NOMSG，バッファあふれ：E_COM_LIMIT）を記憶する領域である。Data3008は、メッセージのデータを記憶する領域である。
Buffer3009は、メッセージがUnqueuedメッセージの場合（３０１２）、Data3008のバッファである。FIFOBufferA3029は、メッセージがQueued メッセージの場合（３０１２)、Data3008のバッファである。FIFOBufferB3037は、メッセージが  Queuedメッセージの場合（３０１２）、Data3008のバッファである。
【００５０】
sMsgObj3001は、Size3002，StatusRef3003，DataRef3004，sQueuedMsgInfoRef3005，sMsgNetParamsRef3006，Check3050で構成される。Size3002 は、メッセージのデータサイズを記憶する領域である。StatusRef3003は、Status3007 へのポインタである。DataRef3004は、Data3008へのポインタである。
sQueuedMsgInfoRef3005は、メッセージがQueuedメッセージの場合(３０１２）、sQueuedMsgInfo3018へのポインタである。sQueuedMsgInfoRef3005 は、メッセージがUnqueuedメッセージの場合（３０１２）、NULL3011へのポインタである。
sMsgNetParamsRef3006は、メッセージ送信、または、メッセージ受信が、ネットワーク２００５経由の場合（３０１０）、sMsgNetParams3013 へのポインタである。sMsgNetParamsRef3006は、メッセージ送信、または、メッセージ受信が、ネットワーク２００５経由でない場合（３０１０）、NULL3011へのポインタである。Check3050は、高信頼通信機能の使用の有無を記憶する領域である。
【００５１】
sMsgNetParams3013は、TransferDir3014，TransferMode3015，TimePeriod3016，Handle3017で構成される。TransferDir3014 は、メッセージが送信メッセージであるか、メッセージが受信メッセージであるかを記憶する領域である。
TransferMode3015は、Periodicalメッセージ送信を利用するか、Periodicalメッセージ送信を利用しないかを記憶する領域である。Periodicalメッセージ送信を利用すると、アプリケーションプログラムは周期時間ごとにメッセージ送信が行える。TimePeriod3016は、Periodicalメッセージ送信を利用する場合、その周期時間を記憶する領域である。Handle3017は、メッセージのメッセージＩＤを記憶する領域である。
【００５２】
sQueuedMsgInfo3018は、QueueDepth3019，NRec3020，sQueuedMsgObjRef3021で構成される。QueueDepth3019は、FIFOBufferのキューイング深さを記憶する領域である。NRec3020は、メッセージオブジェクト利用者数を記憶する領域である。例えば、APa2012，APb2013の２つのアプリケーションプログラムが、１つのメッセージオブジェクトａ２０１５を利用する場合、NRec3020は２となる。図４は、NRec3020が２の場合を示しており、メッセージオブジェクトａ２０１５は、２つのsQueuedMsgObj（３０２２，３０３０），２つのStatus(３０２４，３０３２）、２つのFIFOBuffer（３０２９，３０３７）を持つ構成となる。
sQueuedMsgObjRef3021は、sQueuedMsgObjへのポインタである。
【００５３】
sQueuedMsgObjの構成について、sQueuedMsgObjA3022を例として説明する。
sQueuedMsgObjA3022は、StatusRef3023，BoundaryDataRef3025，WriteDataRef  3026，ReadDataRef3027，sQueuedMsgObjRef3028，TaskID3041で構成される。
【００５４】
StatusRef3023は、Status3024へのポインタである。BoundaryDataRef3025は、FIFOBufferA3029の先頭アドレスである。WriteDataRef3026は、FIFOBufferA3029の書き込みアドレスである。ReadDataRef3027は、FIFOBufferA3029の読み出しアドレスである。sQueuedMsgObjRef3028は、sQueuedMsgObjB3030へのポインタである。sQueuedMsgObjB3030の構成は、sQueuedMsgObjA302２の構成と同様である。ただし、sQueuedMsgObjRef3036はNULL3038へのポインタである。TaskID3041はメッセージを受信するタスクＩＤを記憶する領域である。
【００５５】
次にＯＳＥＫ−ＣＯＭのメッセージ通信処理２０９０について説明する。図２８にメッセージ通信処理２０９０のソフトウェア構成を示す。メッセージ通信処理２０９０は、メッセージ送信処理２０１０，メッセージ受信処理２０１１，UnqueuedMessage送信処理２０９１，QueuedMessage送信処理２０９２，メッセージオブジェクト更新処理２０９３，メッセージオブジェクトQueuedMessage 更新処理２０９４，メッセージデータ読み込み処理２０９５，メッセージオブジェクト読み込みデータ更新処理２０９６，高信頼ＣＡＮデータ読み込み処理２０９７，一時受信データ２０９８から構成される。一時受信データ２０９８はメッセージ通信処理２０９０が呼ばれたときに確保されるメッセージデータ記憶領域であり、メッセージ通信処理２０９０が終了すると一時受信データ２０９８はなくなる。
【００５６】
次にＯＳＥＫ−ＣＯＭのメッセージ通信処理２０９０の各処理について説明する。
【００５７】
まず、メッセージ送信処理２０１０について詳細に説明する。メッセージ送信処理２０１０は、高信頼通信ソフト２０８０が、ＯＳＥＫ−COM2008 を用いて実際のメッセージ送信を行うためのプログラムである。本実施例では、ＯＳＥＫ−ＣＯＭのメッセージ送信処理は、それを呼び出した高信頼通信ソフト２０８０のタスクで実行されるものとする。図５は、メッセージ送信処理２０１０の流れを示すフローチャートである。図５を用いて、メッセージ送信処理２０１０について説明する。
【００５８】
まずステップ１００で、メッセージ名からメッセージ送信で利用するメッセージオブジェクトを決定する。メッセージ名はメッセージ送信処理２０１０を呼び出すとき引数として渡される。以下、メッセージオブジェクトａを例に説明する。
【００５９】
ステップ１０１では、sMsgNetParamsRef3006を参照して、メッセージ送信がユニット内の通信か、ネットワーク２００５経由であるか判定する（３０１０）。
ユニット内の通信の場合、ステップ１０２で、メッセージオブジェクト更新処理２０９３を使って、送信データをData3008に書き込む。なお送信データが記憶されているアドレスは、メッセージ送信処理を呼び出すとき引数として渡される。
【００６０】
送信するメッセージがUnqueuedメッセージの場合（３０１２）、Data3008を  Buffer3009に書き込む。
【００６１】
送信するメッセージがQueuedメッセージの場合（３０１２），Data3008を    FIFOBuffer（３０２９，３０３７）に書き込む。
【００６２】
メッセージ送信がユニット内の通信でない場合、すなわち、ネットワーク経由の通信の場合、ステップ１０３で、TransferDir3014 を参照して、送信するメッセージが送信メッセージであるか判定する。
【００６３】
次にステップ１０４で、送信するメッセージがQueuedメッセージであるか判定する（３０１２）。
【００６４】
送信するメッセージがQueuedメッセージの場合（３０１２）、ステップ１０５で、QueuedMessage送信処理２０９２を使ってQueued メッセージ送信処理を行う。
【００６５】
送信するメッセージがUnqueuedメッセージの場合(３０１２)、ステップ１０６で、UnqueuedMessage 送信処理２０９１を使ってUnqueuedメッセージ送信処理を行う。
【００６６】
図６は、メッセージオブジェクト更新処理２０９３の詳細を示すフローチャートである。
【００６７】
まずステップ２００で、送信するメッセージのデータを、Data3008に書き込む。送信するメッセージのデータの記憶されているアドレスはメッセージオブジェクト更新処理２０９３を読み出すとき引数として渡される。
【００６８】
ステップ２０１では、メッセージオブジェクト読み込みデータ更新処理2096を使って、送信するメッセージがUnqueuedメッセージの場合(３０１２)，Data3008をBuffer3009に書き込む。
【００６９】
送信するメッセージがQueuedメッセージの場合（３０１２）、Data3008を    FIFOBuffer（３０２９，３０３７）に書き込む。
【００７０】
図７は、メッセージオブジェクト読み込みデータ更新処理２０９６の詳細を示すフローチャートである。例としてメッセージオブジェクトａ２０１５を用いて説明する。
【００７１】
まずステップ３００で、送信するメッセージがQueuedメッセージであるか判定する（３０１２）。
【００７２】
送信するメッセージがQueuedメッセージである場合、ステップ３０１で、メッセージオブジェクトQueuedMessage 更新処理２０９４を使って、Data3008を    FIFOBuffer（３０２９，３０３７）へ書き込む。
【００７３】
送信するメッセージがUnqueuedメッセージの場合、まずステップ３０２で    DataRef3004，Size3002を参照して、Buffer3009 の書き込みアドレスを決定する。
【００７４】
次にステップ３０３で、Data3008をBuffer3009へ書き込む。
【００７５】
図８は、メッセージオブジェクトQueuedMessage 更新処理２０９４の詳細を示すフローチャートである。例としてメッセージオブジェクトａ２０１５を用いて説明する。
【００７６】
まずステップ４００で、Size3002を参照して、送信するメッセージのデータサイズを決定する。
【００７７】
ステップ４０１では、DataRef3004を参照して、Data3008 のアドレスを決定する。
【００７８】
ステップ４０２では、最初に更新するsQueuedMsgObjを決定する。
sQueuedMsgObjRef3021が指すsQueuedMsgObjA3022とする。
【００７９】
次にステップ４０３の条件が成立する間、すなわち、上記決定したアドレスがＮＵＬＬでない間、ステップ４０４からステップ４１１の手順を繰り返し、
Data3008をFIFOBuffer（３０２９，３０３７）へ書き込む。Data3008から
FIFOBufferＡ３０２９への書き込みを例に、ステップ４０４からステップ４１１を説明する。
【００８０】
ステップ４０４では、FIFOBufferA3029 があふれているか判定する。すなわち、ＦＩＦＯバッファがフルに詰まっているかを判定する。
【００８１】
あふれている場合は、ステップ４０５で、Status3024に、FIFOBufferA3029 があふれたことを示す値を書き込む。
【００８２】
あふれていない場合は、まずステップ４０６で、WriteDataRef3026を参照して、Data3008をFIFOBufferA3029へ書き込む。
【００８３】
次にステップ４０７で、WriteDataRef3026を更新する。
【００８４】
ステップ４０８では、メッセージ属性テーブル２０２１のLIMIT4007 を参照して、ＣＡＮドライバ２００９のバッファａ２０１８があふれているか判定する。
あふれている場合はステップ４０９で、Status3024に、バッファａ２０１８があふれていることを示す値を書き込む。
【００８５】
あふれていない場合はステップ４１０で、Status3024に、バッファａ２０１８があふれていないことを示す値を書き込む。
【００８６】
ステップ４１１では、sQueuedMsgObjRef3028を参照して、sQueuedMsgObjB3030のアドレスを決定する。
【００８７】
図９は、QueuedMessage 送信処理２０９２の詳細を示すフローチャートである。例としてメッセージオブジェクトａ２０１５を用いて説明する。
【００８８】
まずステップ５００で、TransferMode3015を参照して、Periodicalメッセージ送信を利用するか判定する。
【００８９】
Periodicalメッセージ送信を利用する場合は、ステップ５０１でTimePeriod  3016を参照して、Periodicalメッセージ送信を行う。
【００９０】
Periodicalメッセージ送信を利用しない場合は、まずステップ５０２で、    Size3002を参照して、送信するメッセージのデータサイズを決定する。
【００９１】
次にステップ５０３で、DataRef3004 を参照して、Data3008のアドレスを決定する。
【００９２】
ステップ５０４では、Handle3017を参照して、送信するメッセージのメッセージＩＤを決定する。
【００９３】
ステップ５０５では、ＣＡＮドライバ２００９のメッセージ送信処理２０３２を呼び出し、ＣＡＮコントローラ２００３を用いて、ネットワーク２００５へメッセージを送信する。ＣＡＮドライバのメッセージ送信処理２０３２については後述する。
【００９４】
ステップ５０６では、ステップ５０５のリターンパラメータから、Data6003に送信するメッセージを書き込めたか判定する。
【００９５】
書き込めた場合には、まずステップ５０７で、送信するメッセージのデータを、Data3008に書き込む。送信するメッセージデータのアドレスはQueuedMessage送信処理２０９２を呼ぶときに引数で渡される。
【００９６】
次にステップ５０８で、メッセージオブジェクト読み込みデータ更新処理2096を使って、Data3008をFIFOBuffer（３０２９，３０３７）へ書き込む。
【００９７】
図１０は、UnqueuedMessage 送信処理２０９１の詳細を示すフローチャートである。例としてメッセージオブジェクトａ２０１５を用いて説明する。
【００９８】
まずステップ７００で、TransferMode3015を参照して、Periodicalメッセージ送信を利用するか判定する。
【００９９】
Periodicalメッセージ送信を利用する場合には、ステップ７０１で、
TimePeriod3016を参照して、Periodicalメッセージ送信を行う。
【０１００】
Periodicalメッセージ送信を利用しない場合には、まずステップ７０２で、
Size3002を参照して、送信するメッセージのデータサイズを決定する。
【０１０１】
次にステップ７０３で、DataRef3004 を参照して、Data3008のアドレスを決定する。
【０１０２】
ステップ７０４では、Handle3017を参照して、送信するメッセージのメッセージＩＤを決定する。
【０１０３】
ステップ７０５では、ＣＡＮドライバ２００９のメッセージ送信処理２０３２を使って、ネットワーク２００５へメッセージを送信する。
【０１０４】
ステップ７０６では、ステップ７０５のリターンパラメータから、Data6003に送信するメッセージを書き込めたか判定する。
【０１０５】
書き込めた場合には、まずステップ７０７で、送信するメッセージのデータを、Data3008に書き込む。送信するメッセージデータのアドレスは
UnqueuedMessage送信処理２０９１を呼ぶときに引数で渡される。
【０１０６】
次にステップ７０８で、メッセージオブジェクト読み込みデータ更新処理2096を使って、Data3008をBuffer3009へ書き込む。
【０１０７】
次に、ＯＳＥＫ−ＣＯＭのメッセージ受信処理２０１１について詳細に説明する。メッセージ受信処理２０１１は、高信頼通信ソフト２０８０が、ＯＳＥＫ−COM2008 を用いて実際のメッセージ受信を行うためのプログラムである。本実施例では、ＯＳＥＫ−ＣＯＭのメッセージ受信処理は、それを呼び出した高信頼通信ソフト２０８０のタスクで実行されるものとする。図１１は、メッセージ受信処理２０１１の流れを示すフローチャートである。図１１を用いて、メッセージ受信処理２０１１について説明する。
【０１０８】
まず、ステップ９００で、メッセージ名からメッセージ受信で利用するメッセージオブジェクトを決定する。メッセージ名はメッセージ受信処理２０１１を呼び出すとき引数として渡される。以下、例としてメッセージオブジェクトａとする。
【０１０９】
次にステップ９０１で、TransferDir3014 を参照して、受信するメッセージが受信メッセージであるか判定する。
【０１１０】
受信メッセージの場合、まずステップ９０２で、DataRef3004を参照して、   Data3008のアドレスを決定する。
【０１１１】
ステップ９０３では、Handle3017を参照して、受信するメッセージのメッセージＩＤを決定する。
【０１１２】
ステップ９０８では、Check3050 を参照して、高信頼受信処理を行うか否かを判定する。
【０１１３】
Check ありの場合、ステップ９０９で高信頼ＣＡＮデータ読み込み処理2097を使って受信データをData3008に書き込む。
【０１１４】
Ｃｈｅｃｋなしの場合、ステップ９０４は、ＣＡＮドライバのメッセージ受信処理２０３３を使って、Data3008へ受信するメッセージのデータを書き込む。
【０１１５】
ＣＡＮドライバのメッセージ受信処理２０３３については後述する。
【０１１６】
ステップ９０５では、ステップ９０４のリターンパラメータから、バッファ
ａ２０１８からData3008へ受信するメッセージのデータを書き込めたか判定する。
【０１１７】
書き込めた場合には、ステップ９０６で、メッセージオブジェクト読み込みデータ更新処理２０９６を使って、受信するメッセージがUnqueuedメッセージの場合(３０１２)、Data3008をBuffer3009へ書き込む。受信するメッセージがQueuedメッセージの場合（３０１２）、Data3008をFIFOBuffer（３０２９，３０３７）へ書き込む。
【０１１８】
ステップ９０７で、メッセージデータ読み込み処理２０９５を使って、メッセージオブジェクト内のデータを受信データに書き込む。受信データのアドレスはメッセージ受信処理２０１１を呼ぶときに引数として渡される。
【０１１９】
ステップ９０１で受信するメッセージが受信メッセージでない場合、ステップ９１０ではTransferDir3014 を参照して、受信するメッセージが送信メッセージであるか判定する。
【０１２０】
送信メッセージの場合、ステップ９１１でＣＡＮコントローラ内データ読み込み処理２０３５を使って、ＣＡＮコントローラの送信・受信メールボックス2023にあるデータを受信データに書き込む。受信データのアドレスはメッセージ受信処理２０１１を呼ぶときに引数として渡される。
【０１２１】
ステップ９１２では、リターンパラメータを正常終了を示す値とする。
【０１２２】
送信メッセージでない場合、ステップ９１３で、メッセージデータ読み込み処理２０９５を使って、メッセージオブジェクト内のデータを受信データに書き込む。受信データのアドレスはメッセージ受信処理２０１１を呼ぶときに引数として渡される。
【０１２３】
図１２は、メッセージデータ読み込み処理２０９５の詳細を示すフローチャートである。例としてメッセージオブジェクトａ２０１５を用いて説明する。
【０１２４】
まずステップ１１００で、Size3002を参照して、受信メッセージのデータサイズを決定する。
【０１２５】
次にステップ１１０１で、受信するメッセージがQueuedメッセージであるか判定する（３０１２）。
【０１２６】
Queuedメッセージである場合、まずステップ１１０２で、実行しているタスクＩＤとsQueuedMsgObjRef(３０２２，３０３０）のTaskID(３０４１，３０４２）が一致するsQueuedMsgObjのアドレスを決定する。例では、sQueuedMsgObjA3022のアドレスとする。
【０１２７】
次にステップ１１０３で、Status3024を参照して、FIFOBufferA3029 に受信メッセージがあるか判定する。
【０１２８】
受信メッセージがある場合、まずステップ１１０４で、ReadDataRef3027 を参照して、FIFOBufferA3029 から受信データ格納領域へデータを書き込む。受信データ格納領域のアドレスはメッセージデータ読み込み処理２０９５を呼び出すときに引数で渡される。
【０１２９】
次にステップ１１０５で、ReadDataRef3027を更新する。
【０１３０】
そしてステップ１１０６で、FIFOBufferA3029は空か判定する。
【０１３１】
空であればステップ１１０７で、Status3024に、FIFOBufferA3029 は空であることを示す値を格納する。
【０１３２】
空でなければステップ１１０８で、Status3024に、FIFOBufferA3029 は空でないことを示す値を格納する。
【０１３３】
ステップ１１０１の判定で、Queuedメッセージでない場合、まずステップ1109で、DataRef3004，Size3002 を参照して、Buffer3009の読み込みアドレスを決定する。
【０１３４】
次にステップ１１１０で、Buffer3009から受信データ格納領域へデータを書き込む。受信データ格納領域のアドレスはメッセージデータ読み込み処理２０９５を呼び出すときに引数で渡される。
【０１３５】
そしてステップ１１１１で、Status3007に、Buffer3009は空であることを示す値を格納する。
【０１３６】
図２６は、高信頼ＣＡＮデータ読み込み処理２０９７の詳細を示すフローチャートである。例としてメッセージオブジェクトａ２０１５，バッファａ２０１８を用いる。
【０１３７】
まず、ステップ９５０で、ＣＡＮドライバのメッセージ送信処理２０３２を使って、バッファａ２０１８からメッセージオブジェクトａのData3008へ受信するメッセージのデータを書き込む。
【０１３８】
次に、ステップ９５１でＣＡＮデータ読み込み処理２０３６を使って、バッファａ２０１８から一時受信データ２０９８へ受信するメッセージのデータを書き込む。
【０１３９】
ステップ９５３で、Data3008のデータ値と一時受信データ２０９８のデータ値が一致するか比較する。
【０１４０】
一致する場合には、ステップ９５４で、ステップ９５０のリターンパラメータから、バッファａ２０１８からメッセージオブジェクトａのData3008へ受信するメッセージのデータを書き込めたか判定する。
【０１４１】
書き込めた場合には、ステップ９５５で、メッセージオブジェクト読み込みデータ更新処理２０９６を使って受信するメッセージがUnqueuedメッセージの場合（３０１２）、Data3008をBuffer3009へ書き込む。
【０１４２】
受信するメッセージがQueuedメッセージの場合（３０１２）、Data3008を    FIFOBuffer（３０２９，３０３７）へ書き込む。
【０１４３】
ステップ９５６で、メッセージデータ読み込み処理２０９５を使ってメッセージオブジェクトａ２０１５から受信データ格納領域にデータを書き込む。受信データ格納領域のアドレスは、高信頼ＣＡＮデータ読み込み処理２０９７が呼ばれるときに引数で渡される。
【０１４４】
ステップ９５８では、ステップ９５６で書き込んだ受信データのデータ値と  Data3008のデータ値が一致しているか判定する。
【０１４５】
一致しない場合には、ステップ９５９で、通信エラー処理２０７３を起動する。
【０１４６】
また、ステップ９５３で一致しない場合にも、ステップ９６０で通信エラー処理２０７３を起動する。
【０１４７】
（ｄ）ＣＡＮドライバ
次にＣＡＮドライバ２００９について詳細に説明する。ＣＡＮドライバ2009はＣＡＮコントローラ２００３を使ってメッセージの送受信を行うソフトウェアである。まずＣＡＮドライバの構成について説明する。ＣＡＮドライバ２００９は、図１に示すように、バッファ２０３１，メッセージ属性テーブル２０２１，メッセージ通信処理２０４０で構成される。
【０１４８】
バッファ２０３１は、バッファａ２０１８，バッファｂ２０１９，バッファｃ２０２０等の複数のバッファで構成される。バッファ２０３１を構成するバッファの数は、送信・受信メールボックス２０２３を構成するメールボックスの数だけ用意し、各バッファは、各メールボックスの専用バッファとする。例えば、メールボックスａ２０２８の専用バッファをバッファａ２０１８とした場合、バッファａ２０１８は、メールボックスａ２０２８のＤａｔａ６００３と同様の、メッセージのデータ格納領域である。
【０１４９】
図１３は、メッセージ属性テーブル２０２１の詳細な構成図である。メッセージ属性テーブル２０２１は、メールボックス番号４００１，MessageID4002，   DataSize4003，QUEUED4004，LOCKED4005，NOMSG4006，LIMIT4007，CHECK4008 で構成される。メールボックス番号４００１は、各メールボックスのメールボックス番号を記憶する領域である。MessageID4002 は、各メールボックス番号ごとに、メールボックスに登録されたメッセージＩＤを記憶する領域である。DataSize4003は、各メールボックス番号ごとに、メールボックスに登録されたメッセージのデータサイズを記憶する領域である。MessageID4002，DataSize4003 は、例えば、メールボックスａ２０２８を構成するMessageID6001，DataSize6002 と同様の記憶領域である。QUEUED4004は、各メールボックス番号ごとに、メッセージがQueuedメッセージであるか、Unqueuedメッセージであるかを記憶する領域である。メッセージがQueuedメッセージである場合にビットセットされる。LOCKED4005は、各メールボックス番号ごとに、メールボックスに格納されたメッセージが、メッセージ送信要求を受けて、ネットワーク２００５へのメッセージ送信を実行中であるか、メッセージ送信要求を受けておらず、ネットワーク２００５へのメッセージ送信を行っていないかを記憶する領域である。LOCKED4005は、メールボックスに格納されたメッセージが、メッセージ送信要求を受けて、ネットワーク２００５へのメッセージ送信を実行中である場合にビットセットされる。
NOMSG4006 は、各メールボックス番号ごとに、バッファ２０３１に受信メッセージが貯まっているか、受信メッセージが貯まっていないかを記憶する領域である。ＮＯＭＳＧ４００６は、バッファ２０３１に受信メッセージが貯まっていない場合にビットセットされる。LIMIT4007 は、各メールボックス番号ごとに、バッファ２０３１に受信メッセージが限度まで貯まっているか、受信メッセージが限度まで貯まっていないかを記憶する領域である。LIMIT4007 は、バッファ2031の各バッファに受信メッセージが限度まで貯まっている場合にビットセットされる。本実施例ではQueuedメッセージ，Unqueuedメッセージを扱うため、例えば、バッファ２０３１にQueuedメッセージをキューイングするＦＩＦＯバッファ等を設ける必要がある。Unqueuedメッセージは、キューイングが不要なメッセージである。バッファ２０３１の各バッファをＦＩＦＯバッファとして実装した場合、
ＦＩＦＯバッファあふれのときにLIMIT4007はビットセットされる。CHECK4008は、通信の高信頼機能を使うか否かを記憶する領域である。例えば、メッセージオブジェクトａ２０１５のCheck3050と同様の記憶領域である。
【０１５０】
次にＣＡＮドライバのメッセージ通信処理２０４０について説明する。図３０は本実施例のＣＡＮドライバのメッセージ通信処理を示す図である。メッセージ通信処理２０４０は、メッセージ送信処理２０３２，メッセージ受信処理２０３３，メッセージ送信・受信完了割り込み処理２０３４，ＣＡＮコントローラ内データ読み込み処理２０３５，ＣＡＮデータ読み込み処理２０３６，送信司令処理２０３７，高信頼メモリコピー処理２０３８から構成される。
【０１５１】
まずＣＡＮドライバのメッセージ送信処理２０３２について詳細に説明する。メッセージ送信処理２０３２は、送信データを送信する処理である。図１４は、ＣＡＮドライバの送信処理２０３２の流れを示すフローチャートである。図１４を用いて、ＣＡＮドライバの送信処理を説明する。
【０１５２】
まずステップ６００で、メッセージ属性テーブル２０２１を用いて、送信するメッセージのメッセージＩＤから、メールボックス番号を決定する。
【０１５３】
次にステップ６０１で、LOCKED4005にビットセットされているか判定する。ビットセットされている場合は、メールボックス２０２３のData6003に格納された送信データが未送信であるので、ステップ６０２で、リターンパラメータに、  Data6003に送信するメッセージを書き込めなかったことを示す値を格納する。
【０１５４】
ビットセットされていない場合は、まずステップ６０３で、LOCKED4005にビットセットする。
【０１５５】
次にステップ６０４で、書き込み元のデータからData6003に書き込む。書き込み元のデータのアドレスはＣＡＮドライバの送信処理２０３２が呼ばれるときに引数で渡される。
【０１５６】
ステップ６０７で、CHECK4008 により、通信の高信頼機能を使うか、使わないかを判定する。
【０１５７】
通信の高信頼機能を使わない場合、ステップ６０５で、TXPR5002にビットセットして、ＣＡＮコントローラ２００３にネットワーク２００５へのメッセージ送信を要求する。
【０１５８】
ステップ６０６では、リターンパラメータに、Data6003に送信するメッセージを書き込めたことを示す値を格納する。
【０１５９】
次にＣＡＮドライバのメッセージ受信処理２０３３について詳細に説明する。図１５は、ＣＡＮドライバのメッセージ受信処理２０３３の流れを示すフローチャートである。図１５を用いて、ＣＡＮドライバの受信処理を説明する。例として、受信メッセージはバッファａ２０１８を使用するとする。
【０１６０】
まずステップ１０００で、メッセージ属性テーブル２０２１を用いて、受信するメッセージのメッセージＩＤから、メールボックス番号を決定する。
【０１６１】
ステップ１００１では、MBIMR5005にビットセットする。
【０１６２】
ステップ１００２では、NOMSG4006にビットセットされているか判定する。
【０１６３】
ステップ１００２の判定においてビットセットされている場合は、ステップ
１００３で、リターンパラメータに、バッファａ２０１８に受信するメッセージが書き込まれていないことを示す値を格納する。
【０１６４】
ステップ１００２の判定においてビットセットされていない場合は、まずステップ１００４で、LIMIT4007 にビットセットされているか判定する。
【０１６５】
ステップ１００４の判定においてビットセットされている場合は、まずステップ１００５で、リターンパラメータには、バッファａ２０１８があふれていることを示す値を格納する。
【０１６６】
次にステップ１００６で、LIMIT4007をクリアする。
【０１６７】
ステップ１００４の判定においてビットセットされていない場合は、ステップ１００７で、リターンパラメータには、バッファａ２０１８があふれていないことを示す値を格納する。
【０１６８】
そしてステップ１００８では、バッファａ２０１８から受信データ格納領域へ受信するメッセージのデータを書き込む。受信データ格納領域のアドレスはメッセージ受信処理２０３３が呼ばれるときに引数で渡される。
【０１６９】
ステップ１００９では、NOMSG4006にビットセットする。
【０１７０】
ステップ１０１０では、MBIMR5005をクリアする。
【０１７１】
次に、ＣＡＮドライバのメッセージ送信・受信完了割り込み処理２０３４について詳細に説明する。図１６は、メッセージ送信・受信完了割り込み処理2034の流れを示すフローチャートである。図１６を用いて、メッセージ送信・受信完了割り込み処理について説明する。
【０１７２】
まずステップ８００で、ＣＡＮコントローラ２００３は、メッセージ送信完了割り込みか判定する。
【０１７３】
メッセージ送信完了割り込みである場合は、ステップ８０１の条件が成立する間、すなわち、ＣＡＮコントローラ２００３のメールボックス数だけ、メールボックス番号の小さいものから順番に、ステップ８０２からステップ８０４の手順を繰り返して実行する。
【０１７４】
ステップ８０２で、TXACK5003 にビットセットされているか判定する。
【０１７５】
ビットセットされている場合は、まずステップ８０３で、LOCKED4005をクリアする。
【０１７６】
次にステップ８０４で、TXACK5003をクリアする。
【０１７７】
ステップ８０５では、メッセージ送信完了割り込みフラグをクリアする。
【０１７８】
ステップ８０６で、ＣＡＮコントローラ２００３は、メッセージ受信完了割り込みか判定する。
【０１７９】
メッセージ受信完了割り込みである場合は、ステップ８０７の条件が成立する間、すなわち、ＣＡＮコントローラ２００３のメールボックス数だけ、メールボックス番号の小さいものから順番に、ステップ８０８からステップ８１５の手順を繰り返して実行する。
【０１８０】
ステップ８０８で、RXPR5004 にビットセットされているか判定する。
【０１８１】
ビットセットされている場合は、ステップ８０９で、QUEUED4004にビットセットされているか判定する。
【０１８２】
ステップ８０９の判定で、ビットセットされている場合は、ステップ８１０で、NOMSG4006にビットセットされているか判定する。
【０１８３】
ステップ８１０の判定で、ビットセットされている場合は、ステップ８１１で、高信頼メモリコピー処理２０３８を使って、メールボックス２０２３からバッファ２０３１へ受信メッセージを書き込み、正しく書き込まれたかチェックする。正しく書き込まれていない場合、通信エラー処理２０７３が起動される。
【０１８４】
ステップ８１０の判定で、ビットセットされていない場合は、ステップ８１２で、LIMIT4007にビットセットする。
【０１８５】
ステップ８０９の判定で、ビットセットされていない場合は、ステップ８１３で、高信頼メモリコピー処理２０３８を使って、メールボックス２０２３からバッファ２０３１へ受信メッセージを書き込み、正しく書き込まれたかチェックする。正しく書き込まれていない場合、通信エラー処理２０７３が起動される。
【０１８６】
ステップ８１４では、NOMSG4006をクリアする。
【０１８７】
ステップ８１５では、RXPR5004をクリアする。
【０１８８】
次にＣＡＮデータ読み込み処理２０３６について詳細に説明する。図１８はＣＡＮデータ読み込み処理２０３６の流れを示すフローチャートである。図１８を用いて、ＣＡＮデータ読み込み処理について説明する。例として受信するメッセージは、バッファａ２０１８を使用するとする。
【０１８９】
まず、ステップ７００１で、メッセージ属性テーブル２０２１を用いて、受信するメッセージのメッセージＩＤから、メールボックス番号を決定する。
【０１９０】
ステップ７００２では、ＭＢＩＭＲ５００５にビットセットする。
【０１９１】
ステップ７００３では、バッファａ２０１８から受信データ格納領域へ受信するメッセージのデータを書き込む。受信データ格納領域のアドレスはＣＡＮデータ読み込み処理２０３６が呼ばれるときに引数で渡される。
【０１９２】
ステップ７００４では、MBIMR5005をクリアする。
【０１９３】
次に高信頼メモリコピー処理２０３８について詳細に説明する。図１９は高信頼メモリコピー処理２０３８の流れを示すフローチャートである。図１９を用いて、高信頼メモリコピー処理について説明する。
【０１９４】
まず、ステップ７１０１で、書き込み元のデータを書き込み先のデータ格納領域にコピーする。
【０１９５】
ステップ７１０３で、書き込み元のデータと書き込み先のデータが一致するか比較する。
【０１９６】
一致しない場合、ステップ７１０４で、通信エラー処理２０７３を起動する。
次に送信司令処理２０３７について詳細に説明する。図２０は送信司令処理２０３７の流れを示すフローチャートである。図２０を用いて、送信司令処理について説明する。
【０１９７】
ステップ７３０２で、メッセージ属性テーブル２０２１を用いて、送信するメッセージのメッセージＩＤから、メールボックス番号を決定する。
【０１９８】
ステップ７３０３で、TXPR5002にビットセットして、ＣＡＮコントローラ2003にネットワーク２００５へのメッセージ送信を要求する。
【０１９９】
次にＣＡＮコントローラ内データ読み込み処理２０３５について詳細に説明する。図２１はＣＡＮコントローラ内データ読み込み処理２０３５の流れを示すフローチャートである。図２１を用いて、ＣＡＮコントローラ内データ読み込み処理２０３５について説明する。
【０２００】
ステップ７４０１で、メッセージ属性テーブル２０２１を用いて、受信するメッセージのメッセージＩＤから、メールボックス番号を決定する。
【０２０１】
ステップ７４０２で、ステップ７４０１で求めたメールボックス番号により、ＣＡＮコントローラの送信・受信メールボックス２０２３のアドレスを特定する。
【０２０２】
ステップ７４０３で、ステップ７４０２で特定された送信・受信メールボックス２０２３のアドレスに格納されているメッセージデータを、書き込み先データにコピーする。書き込み先データのアドレスは、ＣＡＮコントローラ内データ読み込み処理２０３５が呼ばれるときに引数で渡される。
【０２０３】
（ｅ）ＣＡＮコントローラ
次にＣＡＮコントローラについて詳細に説明する。ＣＡＮコントローラ2003が使用する通信プロトコルはＣＡＮプロトコルである。ＣＡＮプロトコルは、各メッセージに固有なメッセージＩＤを持たせる。メッセージＩＤには優先順位が割り当てられ、ネットワーク２００５の優先順位制御（バスアービトレーション）はメッセージＩＤの優先順位に基づいて行われる。メッセージＩＤによるバスアービトレーションについて説明する。例えば、制御ユニット２０００が、ネットワーク２００５を介して、制御ユニット２０００と同様な構成を持つ、複数の制御ユニットに接続された場合を考える。各制御ユニットが同時に、ネットワーク２００５へメッセージを送信する場合、各メッセージの内で、最も優先順位の高いメッセージＩＤを持つメッセージを送信する制御ユニットだけが、ネットワーク２００５の使用権を獲得して(バスアービトレーションに勝つ)、優先的にネットワーク２００５へメッセージを送信することができる。
【０２０４】
次にＣＡＮコントローラの構成について詳細に説明する。ＣＡＮコントローラ２００３は、コントロールレジスタ２０２２，送信・受信メールボックス2023,優先順位制御部２０２４，送信バッファ２０２５，受信フィルタ２０２７，受信バッファ２０２６で構成される。受信バッファ２０２６は、課題を解決するための手段記載の受信メッセージ記憶手段に対応する。以下、これらについて詳細に説明する。
【０２０５】
送信・受信メールボックス２０２３について説明する。送信・受信メールボックス２０２３は、メールボックスａ２０２８，メールボックスｂ２０２９，メールボックスｃ２０３０等の複数のメールボックスで構成され、送信メッセージ，受信メッセージを格納する。図２は、メールボックスａ２０２８の詳細な構成図である。メールボックスａ２０２８は、メールボックス番号６００４，        MessageID6001，DataSize6002，Data6003 で構成される。メールボックス番号６００４は、送信・受信メールボックス２０２３の各メールボックスごとに固有に与えられる、メールボックス番号を記憶する領域である。MessageID6001 は、送信メッセージ，受信メッセージのメッセージＩＤを記憶する領域である。メールボックスａ２０２８は、MessageID6001 を持つ送信メッセージ，受信メッセージのみを格納する。DataSize6002は、格納する送信メッセージ，受信メッセージのデータサイズを記憶する領域である。Data6003は、送信メッセージ，受信メッセージのデータ格納領域である。メールボックスｂ２０２９，メールボックス
ｃ２０３０の詳細な構成は、メールボックスａ２０２８と同様である。
【０２０６】
図３は、コントロールレジスタ２０２２の詳細な構成図である。コントロールレジスタ２０２２は、メールボックス番号５００１，TXPR5002，TXACK5003，   RXPR5004，MBIMR5005 で構成される。メールボックス番号５００１は、各メールボックスごとに、メールボックス番号を記憶する領域である。TXPR5002は、各メールボックス番号ごとに、メッセージ送信要求を記憶する領域であり、ＣＡＮコントローラ２００３にメッセージ送信を要求するときに、ビットセットする。  TXACK5003 は、各メールボックス番号ごとに、メッセージ送信完了を記憶する領域であり、ＣＡＮコントローラ２００３がメッセージ送信を完了したときに、ビットセットされる。RXPR5004は、各メールボックス番号ごとに、メッセージ受信完了を記憶する領域であり、ＣＡＮコントローラ２００３がメッセージ受信を完了したときに、ビットセットされる。MBIMR5005 は、各メールボックス番号ごとに、メッセージ送信完了時、または、メッセージ受信完了時の割り込み禁止を記憶する領域であり、メッセージ送信完了時、または、メッセージ受信完了時の、ＣＡＮコントローラ２００３からCPU2001 への割り込みを禁止にするときに、ビットセットする。
【０２０７】
優先順位制御部２０２４は、メッセージ送信要求が発生したときに、対応するメールボックスのメッセージを、送信バッファ２０２５へ転送する。また、同時に複数のメッセージ送信要求が発生したとき、対応する各メールボックスに格納されているメッセージＩＤを比較して、最も優先順位の高いメッセージＩＤを格納しているメールボックスのメッセージを、送信バッファ２０２５へ転送する。送信バッファ２０２５は、優先順位制御部２０２４から転送されたメッセージを格納する。格納されたメッセージは、メッセージＩＤによるバスアービトレーションに参加する。メッセージＩＤによるバスアービトレーションに勝った場合、メッセージはネットワーク２００５へ送信される。メッセージＩＤによるバスアービトレーションに負けた場合、メッセージはネットワーク２００５へ送信されず、次のバスアービトレーションの機会を待つ。メッセージＩＤによるバスアービトレーションに負けた場合、かつ、より優先順位の高いメッセージＩＤを持つメッセージに対してメッセージ送信要求が発生している場合、優先順位制御部２０２４は、より優先順位の高いメッセージＩＤを格納しているメールボックスのメッセージを、送信バッファ２０２５へ転送する。
【０２０８】
受信バッファ２０２６は、ネットワーク２００５からの受信メッセージを格納する。
【０２０９】
受信フィルタ２０２７は、受信バッファ２０２６に格納されたメッセージのメッセージＩＤと、各メールボックスに登録されたメッセージＩＤを比較して、同一のメッセージＩＤがあれば対応するメールボックスヘメッセージを格納する。次に、メモリ２００２に記憶されている、アプリケーションプログラム2006,ＯＳＥＫ−COM2008 ，ＣＡＮドライバ２００９，高信頼通信ソフト２０８０，OS2050について詳細に説明する。
【０２１０】
（ｆ）アプリケーションプログラム
アプリケーションプログラムについて説明する。アプリケーションプログラム２００６は、図１に示すように、APa2012，APb2013，APc2014 等の複数のアプリケーションプログラムで構成される。本実施例ではこれらのアプリケーションプログラムはそれぞれ別のタスクとして実行される。
【０２１１】
（ｇ）ＯＳ
次に、OS2050について詳細に説明する。OS2050は、タスク優先順位管理テーブル２０５１とタスクのスケジューリングを行うスケジューラ２０５２と起動するタスク２０５３を持つ。タスク優先順位管理テーブル２０５１を用いたスケジューラ２０５２のタスクスケジューリングの方法について説明する。
【０２１２】
図１７は、タスク優先順位管理テーブルの構成図である。図１７を用いて、タスク優先順位管理テーブルの構成について説明する。タスク優先順位管理テーブルは、タスクID1200とタスク優先順位１２０１で構成される。例えば、タスクＩＤの優先順位がタスクＡ，タスクＢ，タスクＣの順で高いとすると、タスクＩＤの優先順位に対応して、起動するタスクもタスクの優先順位も１，２，３の順で高くなるように、タスク優先管理テーブルはあらかじめ設定しておく。スケジューラ２０５２は、タスク優先順位管理テーブル２０５１を参照して、タスク優先順位が高いタスクを優先的に起動する。
【０２１３】
（２）本発明の一実施例の効果
本発明の一実施例によれば、アプリケーションプログラム内のデータを送信するときはアプリケーションプログラム内のデータをサム処理し、そのサム処理されたデータがメールボックスに書き込まれ、メールボックスに書き込まれたデータをさらにチェックサム処理して元のデータに戻し、異常が検出しないことを確認することで、サム処理とサム処理されたデータの内容が破壊されることなくメールボックスに書き込まれたことを保証できる。さらに、チェックサム処理後のデータがアプリケーション内の送信するデータが一致していることを確認することで、サム処理し、メールボックスに書き込んだデータがアプリケーション内の送信するデータであることを保証できる。したがって、送信データが正常にサム処理され、サム処理後のデータがメールボックスに内容が破壊されることなく書き込まれたことを保証できる。
【０２１４】
またデータの受信のときは、メールボックス内の到着データをＣＡＮドライバ内，ＯＳＥＫ−ＣＯＭのメッセージオブジェクト，高信頼通信ソフト内に順次書き込みし、その度に書き込み元のデータと一致する到着データとＣＡＮドライバ内の書き込んだデータが一致することを確認することで、メールボックス内の到着データの内容が破壊されることなく高信頼通信ソフト内に書き込まれたことを保証できる。高信頼通信ソフト内の到着データをチェックサム処理し、異常が検出されないことを確認することで、メールボックスに書き込まれたデータの内容が破壊されていないことを保証できる。チェックサム処理したデータをアプリケーション内に書き込み、その書き込んだデータをさらにサム処理し、そのサム処理後のデータを高信頼通信ソフト内にメールボックスから届けられたデータとが一致することを確認することで、チェックサム処理が正常に処理されたこととアプリケーション内にデータの内容が破壊されることなく書き込まれたことを保証できる。これらによって、本発明によれば、送信元のアプリケーションプログラムのデータの内容が破壊されることなく受信先のアプリケーションプログラムに届けられることを保証できる。
【０２１５】
また、本発明によれば、サム処理，チェックサム処理，高信頼通信ソフト，
ＯＳＥＫ−ＣＯＭ，ＣＡＮドライバともに複数バージョン作成する必要がなく、開発期間を短縮できる。
【０２１６】
また、本発明によれば、送信処理時間は、サム処理時間，チェックサム処理時間，ＯＳＥＫ−ＣＯＭ以下の送信処理時間，ＯＳＥＫ−ＣＯＭ以下の簡単な受信処理時間の和となり、サム処理と、チェックサム処理と、ＯＳＥＫ−ＣＯＭ以下の簡単な受信処理時間がＯＳＥＫ−ＣＯＭ以下の送信処理に比べ十分小さければ、本発明の送信処理時間は、ＯＳＥＫ−ＣＯＭ以下の送信時間となる。一方、従来技術の送信処理時間は、複数バージョンのＯＳＥＫ−ＣＯＭ以下の送信処理を各々実行する時間の和となる。したがって、本発明の送信処理時間は従来技術の送信処理時間に比べて小さくすることができる。
【０２１７】
また、本発明によれば、受信処理時間は、ＯＳＥＫ−ＣＯＭ以下の受信処理時間，チェックサム処理時間，サム処理時間の和となり、サム処理とチェックサム処理の処理時間がＯＳＥＫ−ＣＯＭ以下の受信処理に比べ十分小さければ、本発明の受信処理時間はＯＳＥＫ−ＣＯＭ以下の受信処理時間となる。一方、従来技術の受信処理時間は複数バージョンのＯＳＥＫ−ＣＯＭ以下の受信処理を各々実行する処理時間の和となる。したがって、本発明の受信処理時間は、従来技術の受信処理時間にに比べて小さくすることができる。
【０２１８】
（３）本発明の他の実施例（１）
本発明の一実施例では、送信処理でサム処理したデータをＯＳＥＫ−ＣＯＭの送信プロトコル処理によりメールボックスに書き込んで、そのメールボックスのデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理し、さらに、チェックサム処理して、メールボックスに書かれたデータの内容が破壊されていないことを確認し、さらにチェックサム処理後のデータをアプリケーション内の送信データと比較して一致することを確認してから送信司令を出していたが、ＯＳＥＫ−ＣＯＭの送信プロトコル処理で、メールボックスに書き込んだ直後で送信司令を出してネットワークに送信してもよい。これにより、再度、メールボックスに書き込んだデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理して、さらにチェックサム処理する時間が削減できるので送信処理時間を小さくできる。メールボックスに書かれたデータの内容が破壊されていたとしても、受信側のチェックサム処理で検出できる。また、高信頼通信ソフトはＣＡＮドライバの送信司令処理を使わずに済み、ＯＳＥＫ−ＣＯＭの送受信プロトコル処理のみで済む。また、ＣＡＮドライバはメールボックスに書き込んだ直後に送信司令を出すか否かを判定する処理を削除することができる。
【０２１９】
（４）本発明の他の実施例（２）
本発明の他の実施例（１）では、アプリケーションプログラム内の送信データをサム処理し、ＯＳＥＫ−ＣＯＭの送信プロトコル処理でメールボックスに書き込んだ直後で送信司令を出してネットワークに送信したが、その後にメールボックスに書かれたデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理し、さらに、チェックサム処理し、チェックサム処理後のデータとアプリケーションプログラム内の送信データとが一致することを確認してもよい。これにより、送信後ではあるが、データの内容が破壊されていないことを保証できる。
【０２２０】
（５）本発明の他の実施例（３）
本発明の一実施例では、高信頼通信ソフトの受信処理で、高信頼通信ソフト内の受信したデータをチェックサム処理し、チェックサム処理したデータをアプリケーションプログラム内に書き込んでから、アプリケーションプログラム内に書き込んだデータをサム処理し、サム処理したデータと高信頼通信ソフト内の受信したデータが一致することを確認しているが、アプリケーションプログラム内に書き込んだデータをサム処理した後、チェックサム処理したデータを一時高信頼通信ソフト内に記憶しておき、そのデータをサム処理し、サム処理したデータと高信頼通信ソフト内の受信したデータが一致することを確認しておいてから、チェックサム処理した一時高信頼ソフトに記憶しておいてデータをアプリケーションプログラム内に書き込み、一時高信頼ソフトに記憶しておいてデータとアプリケーションプログラム内に書き込まれたデータが一致することを確認してもよい。これにより、チェックサム処理後のデータの内容が正しいことを判定してからアプリケーション内に書き込むことができる。
【０２２１】
（６）本発明の他の実施例（４）
本発明の一実施例では、高信頼通信ソフト内の受信データをチェックサム処理し、チェックサム処理した受信データをアプリケーションプログラム内に書き込んでから、アプリケーションプログラム内に書き込んだ受信データをサム処理し、サム処理した受信データと高信頼通信ソフト内の受信データとが一致することを確認しているが、サム処理した受信データとＯＳＥＫ−ＣＯＭのメッセージオブジェクト内の受信データとが一致するか比較してもよい。これにより、OSEK−ＣＯＭの受信プロトコル処理で、ＯＳＥＫ−ＣＯＭのメッセージオブジェクトから高信頼ソフト内に書き込まれる受信データと、書き込み元のメッセージオブジェクトの受信データとが一致するかの確認処理を削減する効果がある。また、サム処理した受信データと高信頼通信ソフト内の受信データとが一致することを確認する代わりに、サム処理した受信データとＣＡＮドライバ内バッファの受信データとが一致するか比較してもよい。これにより、ＣＡＮドライバでＣＡＮドライバ内のバッファからＯＳＥＫ−ＣＯＭのメッセージオブジェクトに書き込まれる受信データと書き込み元のＣＡＮドライバ内の受信データとが一致することを確認する処理と、ＯＳＥＫ−ＣＯＭの受信プロトコル処理で、ＯＳＥＫ−ＣＯＭのメッセージオブジェクトから高信頼ソフト内に書き込まれる受信データと、書き込み元のメッセージオブジェクトの受信データとが一致するかの確認処理とが削減できる。また、サム処理した受信データと高信頼通信ソフト内の受信データとが一致することを確認する代わりに、サム処理した受信データとメールボックス内の受信データとが一致するか比較してもよい。これによりＣＡＮドライバでメールボックスからＣＡＮドライバ内バッファに書き込まれる受信データと書き込み元のメールボックス内の受信データとが一致することを確認する処理と、
ＣＡＮドライバ内のバッファからＯＳＥＫ−ＣＯＭのメッセージオブジェクトに書き込まれる受信データと書き込み元のＣＡＮドライバ内の受信データとが一致することを確認する処理と、ＯＳＥＫ−ＣＯＭの受信プロトコル処理で、OSEK−ＣＯＭのメッセージオブジェクトから高信頼ソフト内に書き込まれる受信データが書き込み元のメッセージオブジェクトの受信データと一致するかの確認処理とが削減できる。
【０２２２】
（７）本発明の他の実施例（５）
本発明の一実施例では、送信の場合、高信頼通信ソフトでアプリケーションプログラム内の送信データをサム処理し、ＯＳＥＫ−ＣＯＭの送信プロトコル処理でサム処理したデータをＣＡＮコントローラに書き込み、ＣＡＮコントローラに書き込んだデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理で受信し、受信したデータをチェックサム処理してアプリケーションプログラム内の送信データと比較していたが、アプリケーションプログラム内の送信データをサム処理せずにＯＳＥＫ−ＣＯＭの送信処理でＣＡＮコントローラに書き込み、ＣＡＮコントローラに書き込んだデータをＯＳＥＫ−ＣＯＭの受信処理で受信し、受信したデータとアプリケーション内の送信データとを比較してもよい。この場合、サム処理とチェックサム処理が不要な分だけ処理時間を短縮できるとともにサム処理とチェックサム処理の内容を格納する記憶領域を削減できる効果がある。サム処理とチェックサム処理を削除した場合、受信では、ＣＡＮネットワークに届いたデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理で受信データをアプリケーションプログラム内に書き込み、アプリケーションプログラム内に書き込んだ受信データをサム処理することなくＯＳＥＫ−ＣＯＭの送信プロトコル処理し、得られたデータとＣＡＮネットワークに届いたデータを比較する。これにより、受信処理時間を短縮できる。
【０２２３】
【発明の効果】
本発明の一実施例によれば、アプリケーションプログラム内のデータを送信するときはアプリケーションプログラム内のデータをサム処理し、そのサム処理されたデータがメールボックスに書き込まれ、メールボックスに書き込まれたデータをさらにチェックサム処理して元のデータに戻し、異常が検出しないことを確認することで、サム処理とサム処理されたデータの内容が破壊されることなくメールボックスに書き込まれたことを保証できる。さらに、チェックサム処理後のデータがアプリケーション内の送信するデータが一致していることを確認することで、サム処理し、メールボックスに書き込んだデータがアプリケーション内の送信するデータであることを保証できる。したがって、送信データが正常にサム処理され、サム処理後のデータがメールボックスに内容が破壊されることなく書き込まれたことを保証できる。
【０２２４】
またデータの受信のときは、メールボックス内の到着データをＣＡＮドライバ内，ＯＳＥＫ−ＣＯＭのメッセージオブジェクト，高信頼通信ソフト内に順次書き込みし、その度に書き込み元のデータと一致する到着データとＣＡＮドライバ内の書き込んだデータが一致することを確認することで、メールボックス内の到着データの内容が破壊されることなく高信頼通信ソフト内に書き込まれたことを保証できる。高信頼通信ソフト内の到着データをチェックサム処理し、異常が検出されないことを確認することで、メールボックスに書き込まれたデータの内容が破壊されていないことを保証できる。チェックサム処理したデータをアプリケーション内に書き込み、その書き込んだデータをさらにサム処理し、そのサム処理後のデータを高信頼通信ソフト内にメールボックスから届けられたデータとが一致することを確認することで、チェックサム処理が正常に処理されたこととアプリケーション内にデータの内容が破壊されることなく書き込まれたことを保証できる。これらによって、本発明によれば、送信元のアプリケーションプログラムのデータの内容が破壊されることなく受信先のアプリケーションプログラムに届けられることを保証できる。
【０２２５】
また、本発明によれば、サム処理，チェックサム処理，高信頼通信ソフト，
ＯＳＥＫ−ＣＯＭ，ＣＡＮドライバともに複数バージョン作成する必要がなく、開発期間を短縮できる。
【０２２６】
また、本発明によれば、送信処理時間は、サム処理時間，チェックサム処理時間，ＯＳＥＫ−ＣＯＭ以下の送信処理時間，ＯＳＥＫ−ＣＯＭ以下の簡単な受信処理時間の和となり、サム処理と、チェックサム処理と、ＯＳＥＫ−ＣＯＭ以下の簡単な受信処理時間がＯＳＥＫ−ＣＯＭ以下の送信処理に比べ十分小さければ、本発明の送信処理時間は、ＯＳＥＫ−ＣＯＭ以下の送信時間となる。一方、従来技術の送信処理時間は、複数バージョンのＯＳＥＫ−ＣＯＭ以下の送信処理を各々実行する時間の和となる。したがって、本発明の送信処理時間は従来技術の送信処理時間に比べて小さくすることができる。
【０２２７】
また、本発明によれば、受信処理時間は、ＯＳＥＫ−ＣＯＭ以下の受信処理時間，チェックサム処理時間，サム処理時間の和となり、サム処理とチェックサム処理の処理時間がＯＳＥＫ−ＣＯＭ以下の受信処理に比べ十分小さければ、本発明の受信処理時間はＯＳＥＫ−ＣＯＭ以下の受信処理時間となる。一方、従来技術の受信処理時間は複数バージョンのＯＳＥＫ−ＣＯＭ以下の受信処理を各々実行する処理時間の和となる。したがって、本発明の受信処理時間は、従来技術の受信処理時間に比べて小さくすることができる。
【０２２８】
本発明の他の実施例（１）では、本発明の一実施例で、送信処理でサム処理したデータをＯＳＥＫ−ＣＯＭの送信プロトコル処理によりメールボックスに書き込んで、そのメールボックスのデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理し、さらに、チェックサム処理して、メールボックスに書かれたデータの内容が破壊されていないことを確認し、さらにチェックサム処理後のデータをアプリケーション内の送信データと比較して一致することを確認してから送信司令を出していたが、ＯＳＥＫ−ＣＯＭの送信プロトコル処理で、メールボックスに書き込んだ直後で送信司令を出してネットワークに送信する。これにより、再度、メールボックスに書き込んだデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理して、さらにチェックサム処理する時間が削減できるので送信処理時間を小さくできる。メールボックスに書かれたデータの内容が破壊されていたとしても、受信側のチェックサム処理で検出できる。また、高信頼通信ソフトはＣＡＮドライバの送信司令処理を使わずに済み、ＯＳＥＫ−ＣＯＭの送受信プロトコル処理のみで済む。また、ＣＡＮドライバはメールボックスに書き込んだ直後に送信司令を出すか否かを判定する処理を削除することができる。
【０２２９】
本発明の他の実施例（２）では、本発明の他の実施例（１）で、アプリケーションプログラム内の送信データをサム処理し、ＯＳＥＫ−ＣＯＭの送信プロトコル処理でメールボックスに書き込んだ直後で送信司令を出してネットワークに送信したが、その後にメールボックスに書かれたデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理し、さらに、チェックサム処理し、チェックサム処理後のデータとアプリケーションプログラム内の送信データとが一致することを確認する。これにより、送信後ではあるが、データの内容が破壊されていないことを保証できる。
【０２３０】
本発明の他の実施例（３）では、本発明の一実施例で、高信頼通信ソフトの受信処理で、高信頼通信ソフト内の受信したデータをチェックサム処理し、チェックサム処理したデータをアプリケーションプログラム内に書き込んでから、アプリケーションプログラム内に書き込んだデータをサム処理し、サム処理したデータと高信頼通信ソフト内の受信したデータが一致することを確認しているが、アプリケーションプログラム内に書き込んだデータをサム処理した後、チェックサム処理したデータを一時高信頼通信ソフト内に記憶しておき、そのデータをサム処理し、サム処理したデータと高信頼通信ソフト内の受信したデータが一致することを確認しておいてから、チェックサム処理した一時高信頼ソフトに記憶しておいてデータをアプリケーションプログラム内に書き込み、一時高信頼ソフトに記憶しておいてデータとアプリケーションプログラム内に書き込まれたデータが一致することを確認する。これにより、チェックサム処理後のデータの内容が正しいことを判定してからアプリケーション内に書き込むことができる。
【０２３１】
本発明の他の実施例（４）では、本発明の一実施例で、高信頼通信ソフト内の受信データをチェックサム処理し、チェックサム処理した受信データをアプリケーションプログラム内に書き込んでから、アプリケーションプログラム内に書き込んだ受信データをサム処理し、サム処理した受信データと高信頼通信ソフト内の受信データとが一致することを確認しているが、サム処理した受信データとＯＳＥＫ−ＣＯＭのメッセージオブジェクト内の受信データとが一致するか比較する。これにより、ＯＳＥＫ−ＣＯＭの受信プロトコル処理で、ＯＳＥＫ−COMのメッセージオブジェクトから高信頼ソフト内に書き込まれる受信データと、書き込み元のメッセージオブジェクトの受信データとが一致するかの確認処理を削減する効果がある。また、サム処理した受信データと高信頼通信ソフト内の受信データとが一致することを確認する代わりに、サム処理した受信データとＣＡＮドライバ内バッファの受信データとが一致するか比較する。これにより、ＣＡＮドライバでＣＡＮドライバ内のバッファからＯＳＥＫ−ＣＯＭのメッセージオブジェクトに書き込まれる受信データと書き込み元のＣＡＮドライバ内の受信データとが一致することを確認する処理と、ＯＳＥＫ−ＣＯＭの受信プロトコル処理で、ＯＳＥＫ−ＣＯＭのメッセージオブジェクトから高信頼ソフト内に書き込まれる受信データと、書き込み元のメッセージオブジェクトの受信データとが一致するかの確認処理とが削減できる。また、サム処理した受信データと高信頼通信ソフト内の受信データとが一致することを確認する代わりに、サム処理した受信データとメールボックス内の受信データとが一致するか比較する。これによりＣＡＮドライバでメールボックスからＣＡＮドライバ内バッファに書き込まれる受信データと書き込み元のメールボックス内の受信データとが一致することを確認する処理と、ＣＡＮドライバ内のバッファからＯＳＥＫ−ＣＯＭのメッセージオブジェクトに書き込まれる受信データと書き込み元のＣＡＮドライバ内の受信データとが一致することを確認する処理と、ＯＳＥＫ−ＣＯＭの受信プロトコル処理で、ＯＳＥＫ−ＣＯＭのメッセージオブジェクトから高信頼ソフト内に書き込まれる受信データが書き込み元のメッセージオブジェクトの受信データと一致するかの確認処理とが削減できる。
【０２３２】
本発明の他の実施例（５）では、本発明の一実施例で、送信の場合、高信頼通信ソフトでアプリケーションプログラム内の送信データをサム処理し、ＯＳＥＫ−ＣＯＭの送信プロトコル処理でサム処理したデータをＣＡＮコントローラに書き込み、ＣＡＮコントローラに書き込んだデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理で受信し、受信したデータをチェックサム処理してアプリケーションプログラム内の送信データと比較していたが、アプリケーションプログラム内の送信データをサム処理せずにＯＳＥＫ−ＣＯＭの送信処理でＣＡＮコントローラに書き込み、ＣＡＮコントローラに書き込んだデータをＯＳＥＫ−ＣＯＭの受信処理で受信し、受信したデータとアプリケーション内の送信データとを比較する。この場合、サム処理とチェックサム処理が不要な分だけ処理時間を短縮できるとともにサム処理とチェックサム処理の内容を格納する記憶領域を削減できる効果がある。サム処理とチェックサム処理を削除した場合、受信では、ＣＡＮネットワークに届いたデータをＯＳＥＫ−ＣＯＭの受信プロトコル処理で受信データをアプリケーションプログラム内に書き込み、アプリケーションプログラム内に書き込んだ受信データをサム処理することなくＯＳＥＫ−ＣＯＭの送信プロトコル処理し、得られたデータとＣＡＮネットワークに届いたデータを比較する。これにより、受信処理時間を短縮できる。
【図面の簡単な説明】
【図１】本発明の一実施例である高信頼分散システムの構成図である。
【図２】本発明の一実施例である高信頼分散システムの制御ユニット中のＣＡＮコントローラを構成するメールボックスａ２０２８の詳細な構成図である。
【図３】本発明の一実施例のＣＡＮコントローラのコントロールレジスタ２０２２の詳細な構成図である。
【図４】本発明の一実施例である高信頼分散システムの制御ユニット中のＯＳＥＫ−ＣＯＭを構成するメッセージオブジェクトａ２０１５の詳細な構成図である。
【図５】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージ送信処理２０１０の流れを示すフローチャートである。
【図６】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージオブジェクト更新処理2093の流れを示すフローチャートである。
【図７】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージオブジェクト読み込みデータ更新処理２０９６の流れを示すフローチャートである。
【図８】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージオブジェクト            QueuedMessage更新処理２０９４の流れを示すフローチャートである。
【図９】本発明の一実施例のＯＳＥＫ−ＣＯＭのQueuedMessage 送信処理２０９２の流れを示すフローチャートである。
【図１０】本発明の一実施例のＯＳＥＫ−ＣＯＭのUnqueuedMessage 送信処理２０９１の流れを示すフローチャートである。
【図１１】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージ受信処理２０１１の流れを示すフローチャートである。
【図１２】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージデータ読み込み処理2095の流れを示すフローチャートである。
【図１３】本発明の一実施例である高信頼分散システムの制御ユニット中のＣＡＮドライバを構成するメッセージ属性テーブル２０２１の詳細な構成図である。
【図１４】本発明の一実施例のＣＡＮドライバのメッセージ送信処理２０３２の流れを示すフローチャートである。
【図１５】本発明の一実施例のＣＡＮドライバのメッセージ受信処理２０３３の流れを示すフローチャートである。
【図１６】本発明の一実施例のＣＡＮドライバのメッセージ送信・受信完了割り込み処理２０３４の流れを示すフローチャートである。
【図１７】本発明の一実施例である高信頼分散システムの制御ユニット中のＯＳを構成するタスク優先順位管理テーブル２０５１の詳細な構成図である。
【図１８】本発明の一実施例のＣＡＮドライバのＣＡＮデータ読み込み処理２０３６の流れを示すフローチャートである。
【図１９】本発明の一実施例のＣＡＮドライバの高信頼メモリコピー処理２０３８の流れを示すフローチャートである。
【図２０】本発明の一実施例のＣＡＮドライバの送信司令処理２０３７の流れを示すフローチャートである。
【図２１】本発明の一実施例のＣＡＮドライバのＣＡＮコントローラ内データ読み込み処理２０３５の流れを示すフローチャートである。
【図２２】本発明の一実施例の高信頼性ソフトのメッセージ送信処理２０７０の流れを示すフローチャートである。
【図２３】本発明の一実施例の高信頼性ソフトのメッセージ受信処理２０７１の流れを示すフローチャートである。
【図２４】本発明の一実施例の高信頼性ソフトのチェックサム処理２０７６の流れを示すフローチャートである。
【図２５】本発明の一実施例の高信頼性ソフトのサム処理２０７５の流れを示すフローチャートである。
【図２６】本発明の一実施例のＯＳＥＫ−ＣＯＭの高信頼ＣＡＮデータ読み込み処理2097の流れを示すフローチャートである。
【図２７】本発明の一実施例の高信頼性ソフトのメッセージテーブル２０７２の詳細な構成図である。
【図２８】本発明の一実施例のＯＳＥＫ−ＣＯＭのメッセージ通信処理２０９０の詳細な構成図である。
【図２９】本発明の一実施例の高信頼性ソフトのメッセージ通信処理２０７４の詳細な構成図である。
【図３０】本発明の一実施例のＣＡＮドライバのメッセージ通信処理２０４０の詳細な構成図である。
【符号の説明】
２０００…制御ユニット、２００１…ＣＰＵ、２００２…メモリ、２００３…ＣＡＮコントローラ、２００４…バス、２００５…ネットワーク、２００６…アプリケーションプログラム、２００８…ＯＳＥＫ−ＣＯＭ、２００９…ＣＡＮドライバ、２０２１…メッセージ属性テーブル、２０２２…コントロールレジスタ、２０２３…送信・受信メールボックス、２０２４…優先順位制御部、２０２５…送信バッファ、２０２６…受信バッファ、２０２７…受信フィルタ、２０３１…バッファ、２０４０…ＣＡＮドライバのメッセージ通信処理、２０５０…ＯＳ、２０５１…タスク優先順位管理テーブル、２０５２…スケジューラ、２０７２…メッセージテーブル、２０７３…通信エラー処理、２０７４…高信頼通信ソフトのメッセージ通信処理、２０８０…高信頼通信ソフト、２０９０…ＯＳＥＫ−ＣＯＭのメッセージ通信処理。
【図１】
0003687373.tif 000002
【図２】
0003687373.tif 000003
【図３】
0003687373.tif 000004
【図４】
0003687373.tif 000005
【図５】
0003687373.tif 000006
【図６】
0003687373.tif 000007
【図７】
0003687373.tif 000008
【図８】
0003687373.tif 000009
【図９】
0003687373.tif 000010
【図１０】
0003687373.tif 000011
【図１１】
0003687373.tif 000012
【図１２】
0003687373.tif 000013
【図１３】
0003687373.tif 000014
【図１４】
0003687373.tif 000015
【図１５】
0003687373.tif 000016
【図１６】
0003687373.tif 000017
【図１７】
0003687373.tif 000018
【図１８】
0003687373.tif 000019
【図１９】
0003687373.tif 000020
【図２０】
0003687373.tif 000021
【図２１】
0003687373.tif 000022
【図２２】
0003687373.tif 000023
【図２３】
0003687373.tif 000024
【図２４】
0003687373.tif 000025
【図２５】
0003687373.tif 000026
【図２６】
0003687373.tif 000027
【図２７】
0003687373.tif 000028
【図２８】
0003687373.tif 000029
【図２９】
0003687373.tif 000030
【図３０】
0003687373.tif 000031