(57)【要約】【課題】上位装置から下位装置へのデータ送信で厳密にデータの整合性を保障する場合、上位装置から分割したデータを送信し下位装置で組み直したデータを上位装置に返信し上位装置で送信データと返信データをコンペアして、データが不一致であった場合は上位装置から分割データ全てを下位装置に再送することでデータの整合性を保障する。この方式は低速な通信回線を使用する環境の上位装置ではデータの不一致で致命的な処理時間が掛かる。【解決手段】上位装置でデータを送信単位に分割したデータのチェックサム値を生成し下位装置にデータを送信し下位装置で受信し組み直した受信データのチェックサム値を生成し上位装置にその値を返信し上位装置は送信時のチェックサム値と下位装置から受信したチェックサム値をコンペアし一致したら次の送信単位のデータを送信し、不一致なら下位装置にデータを再送する。【選択図】  図１
2015222845.tif 000002
【特許請求の範囲】
【請求項１】
送信データを格納する送信バッファと送信データのチェックサム値を格納する送信チェックサムバッファと前記送信バッファに格納された送信データを分割して分割データごとに下位装置に順次送信する手段とを備えた上位装置と、受信データを格納する受信バッファと受信データのチェックサム値を格納する第１の受信チェックサムバッファと前記第１の受信チェックサムバッファの値を格納する第２の受信チェックサムバッファと上位装置から受信した分割データを前記受信バッファに順次格納する手段とを備えた下位装置と、前記上位装置と前記下位装置の間でのデータ送受信に使用する通信回線で構成される情報処理装置であって、前記上位装置は分割データを下位装置に送信する際に当該送信する分割データのチェックサム値を生成し生成したチェックサム値と前記送信チェックサムバッファの値を加算して前記送信チェックサムバッファに格納し当該分割データを下位装置に送信し、前記下位装置は上位装置から分割データを受信した場合には当該受信した分割データを前記受信バッファに格納し前記第１の受信チェックサムバッファの値を前記第２の受信チェックサムバッファに格納し、前記受信バッファに格納した分割データのチェックサム値を生成し生成したチェックサム値と前記第１の受信チェックサムバッファの値を加算して前記第１の受信チェックサムバッファに格納し、前記第１の受信チェックサムバッファに格納された受信チェックサム値を前記上位装置に返信し、前記上位装置は前記送信チェックサムバッファの値と前記下位装置から受信した受信チェックサム値が一致した場合に次の分割データを送信することを特徴とする情報処理装置。
【請求項２】
前記上位装置は前記送信チェックサムバッファの値と前記下位装置から受信した受信チェックサム値が不一致の場合には前記下位装置に送信した分割データを再送し、前記下位装置は前記上位装置から再送の分割データを受信した場合には当該受信した再送の分割データを前記受信バッファに格納し前記第２の受信チェックサムバッファの値を前記第１の受信チェックサムバッファに格納し、前記受信バッファに格納した再送の分割データのチェックサム値を生成し生成したチェックサム値と前記第１の受信チェックサムバッファの値を加算して前記第１の受信チェックサムバッファに格納し、前記第１の受信チェックサムバッファに格納された受信チェックサム値を前記上位装置に返信することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記上位装置と前記下位装置の間のデータ送受信にはペイロード部を有する通信データが使用され、前記上位装置は下位装置に送信する分割データと当該分割データの下位装置における処理内容を指示するフラグを前記ペイロード部に格納して当該通信データを下位装置に送信し、前記下位装置は前記上位装置に送信する受信チェックサム値を前記ペイロード部に格納して当該通信データを前記上位装置に送信することを特徴とする請求項１記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置においてRS232Cのような低速な回線を使用してデータ送受信を行う場合のデータ整合性チェック方式及び不整合時のデータ再送方式に関するものである。
【背景技術】
【０００２】
厳密にデータの整合性を保障する必要がある場合は、下位装置で組み直したデータを上位装置に返信し上位装置で送信したデータと返信されたデータをコンペアして一致することを確認する処理し、コンペアしたデータが不一致であった場合は、上位装置から分割したデータ全てを下位装置に再送することでデータの整合性を保障する処理が挙げられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１１７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上位装置から下位装置にデータ送信する場合に、上位装置がデータを分割して下位装置に送信し下位装置は分割して受信したデータを組み直し上位装置が送信したデータの整合性を保障する場合、一般的には個々のデータ送信に対し巡回冗長検査(CRC)やフレーミングエラーを検出することでデータの整合性チェックの代わりとしている。
【０００５】
厳密にデータの整合性を保障する必要がある場合は、下位装置で組み直したデータを上位装置に返信し上位装置で送信したデータと返信されたデータをコンペアして一致することを確認する必要がある。コンペアしたデータが不一致であった場合は、上位装置から分割したデータ全てを下位装置に再送することでデータの整合性を保障する。
【０００６】
ただしこの方式であるとデータが一致した場合でも上記一般的な方式の処理時間の二倍を要し、上位装置でデータの不一致の場合にはさらに処理時間が必要となるが、低速な通信回線を使用する場合では致命的な処理時間がかかることが課題である。
【０００７】
本発明の目的は、前述した課題を解決し、データ送受信を含む処理時間を短縮し、かつデータの整合性を保障する方式を提供する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、データを送信する単位に分割し送信単位ごとに下位装置に送信する際に送信済みデータとこれから下位装置に送信するデータのチェックサム値を生成し下位装置にデータを送信する上位装置と受信したデータを受信済みデータと組み直し組み直したデータのチェックサム値を生成し生成したチェックサム値を上位装置に返信する下位装置と上位装置と下位装置の間でのデータ送受信に使用する通信回線で構成される情報処理装置において、上位装置は送信単位ごとに下位装置に送信する際に送信済みデータとこれから下位装置に送信するデータのチェックサム値を生成し下位装置にデータを送信し、下位装置は受信したデータを受信済みデータと組み直して組み直したデータのチェックサム値を生成し生成したチェックサム値を上位装置に返信し、上位装置は送信する際に生成したチェックサム値と下位装置から受信したチェックサム値をコンペアして一致するかを確認しチェックサム値が一致した場合は次の送信単位のデータを送信し、チェックサム値が不一致の場合には下位装置に送信したデータを再送し、下位装置は上位装置から再送されたデータを受信した場合再送前のデータを破棄し再送されたデータと受信済みデータを組み直して組み直したデータのチェックサム値を生成し生成したチェックサム値を上位装置に返信し、上位装置は送信する際に生成したチェックサム値と下位装置から受信したチェックサム値をコンペアして一致した場合は再送したデータと送信済みデータの整合性がチェックできたものとして次の送信単位のデータを送信する。上位装置において全ての送信単位に対する処理が終了することでデータの整合性を保障することを特徴とする。
【発明の効果】
【０００９】
１）上位装置が送信した分割データと下位装置で組み直したデータの不一致を検出した場合にデータを再送することで不一致なデータを修正し、最終的なデータの整合性を保障できる。
２）データの不一致を検出した場合の上位装置から下位装置へのデータの再送回数を最小限にすることを可能としデータ送受信量を低減し処理時間を少なく出来るため、低速な回線でも使用できる。
【図面の簡単な説明】
【００１０】
【図１】上位装置、下位装置のハードウェア関連図
【図２】図１の通信で使用する通信フォーマット図
【図３】図２の特殊処理フラグの値及び特殊処理内容表
【図４】図２、図３のデータ送受信の通常処理時の処理フロー図
【図５】図２、図３のデータ送受信のチェックサム値不一致検出時の処理フロー図
【図６】図４、図５の上位装置１０の主処理プログラム１６の処理フロー図
【図７】図４、図５の下位装置２０の主処理プログラム２６の処理フロー図
【発明を実施するための形態】
【００１１】
以下、本発明の実施例を図面を用いて説明する。
【００１２】
図１は本発明の実施例を示す上位装置、下位装置のハードウェア構造図であり、１０は上位装置、１０１はメモリ１０２上のプログラムを動作させるCPU、１０２はプログラムやバッファを展開するメモリ、１６は上位装置１０の主な動作を処理するメインプログラム（主処理プログラム）、１７は主処理プログラム１６から指示されて通信回線３０を経由して下位装置２０とデータを送受信するプログラム（通信制御プログラム）、１１は通信制御プログラム１７がデータを送受信するバッファ（通信バッファ）、１２は主処理プログラム１６が下位装置２０にデータを送信する際に下位装置２０に送信済みのデータとこれから下位装置２０に送信するデータのチェックサム値を格納するバッファ（チェックサムバッファ）、１５は主処理プログラム１６が設定し上位装置１０が送信する送信データ１４について下位装置２０が行なう処理方法を指示する情報を格納するバッファ（処理制御情報バッファ）、１３は主処理プログラム１６が下位装置２０に送信するデータを格納するバッファ（送信バッファ）、１４は主処理プログラム１６が送信する送信バッファ１３に格納されるデータ（送信データ）、１４１〜１４ｎは送信データ１４を送信する単位に分割した送信単位ごとのデータ（Ｄａｔａ[1]〜Ｄａｔａ[n]）で主処理プログラム１６によりデータを送信する単位に分割し送信単位ごとに下位装置２０に送信する。
【００１３】
２０は下位装置、２０１はメモリ２０２上のプログラムを動作させるCPU、２０２はプログラムやバッファを展開するメモリ、２６は下位装置２０の主な動作を処理するメインプログラム（主処理プログラム）、２７は主処理プログラム２６から指示されて通信回線３０を経由して上位装置１０とデータを送受信するプログラム（通信制御プログラム）、２１は通信制御プログラム２７がデータを送受信するバッファ（通信バッファ）、２２は主処理プログラム２６が上位装置１０から受信し受信バッファ２４にＤａｔａ[1]２５１からＤａｔａ[n]２５ｎの順番どおり格納した受信済みデータで生成したチェックサム値を格納するバッファ（チェックサムバッファ）、２３は主処理プログラム２６が上位装置１０から再送されたデータを受信した場合に当該データの再送前に前回生成したチェックサム値を格納するバッファ（前のチェックサムバッファ）、２８は主処理プログラム２６が上位装置１０で指示した処理方法に従い処理した結果を格納するバッファ（処理結果情報バッファ）、２４は下位装置２０が受信したデータを格納するバッファ（受信バッファ）、２５は主処理プログラム２６が受信した受信バッファ２４に格納するデータ（受信データ）、２５１〜２５ｎは受信データ２５の受信した受信単位ごとのデータ（Ｄａｔａ[1]〜Ｄａｔａ[n]）であり主処理プログラム２６により受信した１つの受信単位のデータ（Ｄａｔａ[x]２５ｘ）を受信バッファ２４にＤａｔａ[1]２４１からＤａｔａ[n]２５ｎの順に格納し受信データ２５を組み直す。
【００１４】
３０は上位装置１０と下位装置２０の間でのデータ送受信に使用する通信回線、１０３は上位装置１０と通信回線３０を接続するハードウェア（回線ポート）、２０３は下位装置２０と通信回線３０を接続するハードウェア（回線ポート）であり、通信制御プログラム１７が回線ポート１０３を介しデータを送受信し、通信制御プログラム２７が回線ポート２０３を介してデータの送受信を行う。
【００１５】
図２は上位装置１０と下位装置２０間の通信で使用する通信フォーマットを説明する図であり、６０は上位装置１０と下位装置２０の間の通信回線３０を経由して送受信されるデータの集合体（通信データ）、６１は送信される通信データ６０の先頭データであることを示すスタートフラグ部、６２は通信データ６０を受信した装置で通信データ６０が正しく受信されたかの判定結果を返すステータス部 、６３は通信バッファ１１または通信バッファ２１のデータを格納するペイロード部、６４はスタートフラグ６１からペイロード部６３まで送信するデータの整合性をチェックするCRCの値を設定するCRC部、６５は通信データ６０の最終データであることを示すエンドフラグ部で構成される。
【００１６】
上位装置１０から下位装置２０へ通信データ６０を送信する場合は、上位装置１０の通信制御プログラム１７が通信データ６０のスタートフラグ部６１から1バイトずつ順にデータを送信し、ペイロード部６３を送信し終えた時点でCRC部６４に計算したCRC値を設定して送信し、エンドフラグ部６５を送信して送信処理を完了し、下位装置２０の通信制御プログラム２７は通信データ６０のスタートフラグ部６１を受信した時点から受信処理を開始しエンドフラグ部６５を受信した時点で受信処理を終了し、受信したCRC部６４の値をチェックし、異常が無い場合ペイロード部６３のデータを通信バッファ２１に格納する。
【００１７】
下位装置２０から上位装置１０へ通信データ６０を返信する場合は、下位装置２０の通信制御プログラム２７が通信データ６０のスタートフラグ部６１から1バイトずつ順にデータを送信し、ステータス部６２に正常応答値（ＡＣＫ）を設定して送信し、ペイロード部６３を送信し終えた時点でCRC部６４に計算した値を設定して送信し、エンドフラグ部６５を送信して返信処理を完了し、上位装置１０の通信制御プログラム１７は通信データ６０のスタートフラグ部６１を受信した時点から受信処理を開始しエンドフラグ部６５を受信した時点で受信処理を終了し、受信したCRC部６４の値をチェックし異常が無い場合ステータス部６２の値をチェックしＡＣＫが格納されていれば１回の送受信が完了する。
【００１８】
下位装置２０の通信制御プログラム２７でCRC部６４の値をチェックし、異常があった場合は通信データ６０のスタートフラグ部６１から1バイトずつ順にデータを送信し、ステータス部６２に異常応答値（ＮＡＣＫ）を設定して送信しペイロード部６３を送信し終えた時点でCRC部６４に計算した値を設定して送信し、エンドフラグ部６５を送信して返信処理を完了し、上位装置１０の通信制御プログラム１７は前記手順で受信したステータス部６２の値にＮＡＣＫが格納されている場合は通信バッファ１１の内容を前記手順で下位装置２０へ再送し、前記手順で下位装置２０から受信したステータス部６２の値にＡＣＫが格納されていることで１回の送受信が完了する。
【００１９】
４０は上位装置１０から下位装置２０へ通信データ６０を送信する場合のペイロード部６３に相当するデータ（送信時ペイロード部）、４１は主処理プログラム１６が設定し主処理プログラム２６で行うデータ領域４２の処理方法を制御する情報の格納部（通信制御情報領域）、４２は主処理プログラム１６が格納し主処理プログラム２６が読み出すデータＤａｔａ[1]〜Ｄａｔａ[n]の格納部（データ領域）、４１１は主処理プログラム１６が設定し、主処理プログラム２６でデータ領域４２のデータを受信バッファ２４に書き込む位置の格納部（アドレス部）、４１２は主処理プログラム１６が設定し、主処理プログラム２６でデータ領域４２のデータを受信バッファ２４に書き込む長さの格納部（データ長部）、４１３は主処理プログラム１６が設定し、主処理プログラム２６でチェックサムバッファ２２に格納する値を生成する方法を制御するフラグの格納部（特殊処理フラグ部）で構成される。
【００２０】
５０は下位装置２０から上位装置１０へ通信データ６０を返信する場合のペイロード部６３に相当するデータ（返信時ペイロード部）、５１は主処理プログラム２６が特殊処理フラグ部４１３の値に従い処理した結果の格納部（処理結果情報領域）、５１１から５１３は上位装置１０から受信した送信時ペイロード部４０の４１１から４１３の値を格納する領域、５１４は主処理プログラム２６が特殊処理フラグ部４１３の値に従い生成したチェックサムバッファ２２の値を格納し、主処理プログラム１６でチェックサムバッファ１２の値と一致するかをチェックするために使用される値の格納部（チェックサム部）で構成される。
【００２１】
図３は上位装置１０の主処理プログラム１６が図２の特殊処理フラグ部４１３に設定する値及び下位装置２０の主処理プログラム２６での特殊処理フラグ部４１３の値に応じて行う処理内容を示す一覧表である。特殊処理フラグ部４１３の値は、上位装置１０の主処理プログラム１６が設定し、下位装置２０の主処理プログラム２６で生成し図２のチェックサム部５１４に格納するチェックサム値の生成方法を制御するものであり、上位装置１０の主処理プログラム１６が送信単位ごと分割した送信データ１４を下位装置２０に送信する際に、最初のデータ（Ｄａｔａ[1]１４１）を送信する場合は特殊処理フラグ部４１３に値0xF001を設定して送信し、二回目以降のデータ（Ｄａｔａ[x]１４ｘ）を送信する場合は特殊処理フラグ部４１３に値0xF002を設定して送信し、送信したデータが不一致で再送信する場合は特殊処理フラグ部４１３に値0xF003を設定して送信し、最後のデータ（Ｄａｔａ[n]１４ｎ）を送信する場合は特殊処理フラグ部４１３に値0xF00Fを設定して送信する。
【００２２】
下位装置２０の主処理プログラム２６では特殊処理フラグ部４１３の値に従い、特殊処理フラグ部４１３の値が0xF001の場合はチェックサムバッファ２２の値と前のチェックサムバッファ２３の値をクリアし、最初に受信したデータ（Ｄａｔａ[1]２５１）のみで生成したチェックサム値をチェックサムバッファ２２に格納し、チェックサムバッファ２２の値をチェックサム部５１４に格納して上位装置１０に返信する。特殊処理フラグ部４１３の値が0xF002の場合はチェックサムバッファ２２の値を前のチェックサムバッファ２３に保存しチェックサムバッファ２２の値と当該受信したデータ（Ｄａｔａ[x]２５ｘ）で生成したチェックサム値とを加算し、その値をチェックサムバッファ２２に格納し、チェックサムバッファ２２の値をチェックサム部５１４に格納して上位装置１０に返信する。特殊処理フラグ部４１３の値が0xF003の場合はチェックサムバッファ２２の値を破棄し、前のチェックサムバッファ２３の値をチェックサムバッファ２２に格納し、チェックサムバッファ２２の値と当該受信したデータ（Ｄａｔａ[x]２５ｘ）で生成したチェックサム値とを加算し、その値をチェックサムバッファ２２に格納し、チェックサムバッファ２２の値をチェックサム部５１４に格納して上位装置１０に返信する。特殊処理フラグ部４１３の値が0xF00Fの場合はチェックサムバッファ２２の値を前のチェックサムバッファ２３に保存し、チェックサムバッファ２２の値と当該受信したデータ（Ｄａｔａ[n]２５ｎ）で生成したチェックサム値とを加算し、その値をチェックサムバッファ２２に格納し、チェックサムバッファ２２の値をチェックサム部５１４に格納して上位装置１０に返信する。
【００２３】
図４は本発明の実施例を示し上位装置１０と下位装置２０との間のデータ送受信で通常処理時の送受信データと特殊処理フラグの設定値を示す処理フローである。基本的な動作の仕組みは、送信バッファ１３の送信データ１４をＤａｔａ[1]１４１〜Ｄａｔａ[n]１４ｎの送信単位に分割し送信単位毎に順次送受信する。一回の送受信は送信バッファ１３のＤａｔａ[n-1]１４ｎ−１の送受信を例にすると、上位装置１０の主処理プログラム１６は通信データ６０の送信時ペイロード部４０の特殊処理フラグ部４１３に図３の特殊処理フラグ部４１３の値0xF002を設定し、通信データ６０の送信時ペイロード部４０のデータ領域４２に送信バッファ１３のＤａｔａ[n-1] １４ｎ−１を格納し、チェックサムバッファ１２の値とＤａｔａ[n-1] １４ｎ−１で生成したチェックサム値と加算した値をチェックサムバッファ１２に格納し、下位装置２０に通信データ６０を送信する（Ｓ４２１）。
【００２４】
下位装置２０の主処理プログラム２６は受信した通信データ６０の送信時ペイロード部４０のデータ領域４２のデータを受信バッファ２４のＤａｔａ[n-1]２５ｎ−１に格納し（Ｓ４２２）、通信データ６０の送信時ペイロード部４０の特殊処理フラグ部４１３の値を判定し、図３に示す特殊処理フラグ部４１３の値0xF002の特殊処理を行い受信済みデータのチェックサムバッファ２２の値と当該受信したＤａｔａ[n-1]で生成したチェックサム値と加算した値をチェックサムバッファ２２に格納し（Ｓ４２３）、通信データ６０の返信時ペイロード部５０のチェックサム部５１４にチェックサムバッファ２２の値を格納し、上位装置１０に通信データ６０を返信する（Ｓ４２４）。
【００２５】
上位装置１０の主処理プログラム１６は自身が保持するチェックサムバッファ１２の値と下位装置２０から受信した通信データ６０の返信時ペイロード部５０のチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が一致することでＤａｔａ[n-1]の送受信は終了し（Ｓ４２５）、次のＤａｔａ[n]の送受信に移る。
【００２６】
以下、図４のフローに基づき説明を行う。
【００２７】
上位装置１０の主処理プログラム１６は最初のＤａｔａ[1]１４１の送受信処理として特殊処理フラグ部４１３に値0xF001を設定し、Ｄａｔａ[1]１４１をデータ領域４２に格納し、Ｄａｔａ[1]１４１で生成したチェックサム値をチェックサムバッファ１２に格納し、下位装置２０に送信時ペイロード部４０の内容を送信する（Ｓ４０１）。
【００２８】
下位装置２０の主処理プログラム２６は受信したデータ領域４２のデータをＤａｔａ[1]２５１に格納し（Ｓ４０２）、特殊処理フラグ部４１３の値を判定し、0xF001であることからチェックサムバッファ２２の値をクリアしＤａｔａ[1]２５１で生成したチェックサム値をチェックサムバッファ２２に格納し（Ｓ４０３）、チェックサム部５１４にチェックサムバッファ２２の値を格納し、上位装置１０に返信時ペイロード部５０の内容を返信する（Ｓ４０４）。
【００２９】
上位装置１０の主処理プログラム１６はチェックサムバッファ１２の値と下位装置２０から受信したチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が一致するためＤａｔａ[1]１４１の送受信処理は終了し（Ｓ４０５）、次のＤａｔａ[2]１４２の送受信処理に移る。
【００３０】
上位装置１０の主処理プログラム１６は次のＤａｔａ[2]１４２の送受信処理として特殊処理フラグ部４１３に値0xF002を設定し、Ｄａｔａ[2]１４２をデータ領域４２に格納し、チェックサムバッファ１２の値とＤａｔａ[2]１４２で生成したチェックサム値とを加算した値をチェックサムバッファ１２に格納し、下位装置２０に送信時ペイロード部４０の内容を送信する（Ｓ４１１）。
【００３１】
下位装置２０の主処理プログラム２６は受信したデータ領域４２のデータをＤａｔａ[2]２５２に格納し（Ｓ４１２）、特殊処理フラグ部４１３の値を判定し、0xF002であることからチェックサムバッファ２２の値とＤａｔａ[2]２５２で生成したチェックサム値とを加算した値をチェックサムバッファ２２に格納し（Ｓ４１３）、チェックサム部５１４にチェックサムバッファ２２の値を格納し、上位装置１０に返信時ペイロード部５０の内容を返信する（Ｓ４１４）。
【００３２】
上位装置１０の主処理プログラム１６はチェックサムバッファ１２の値と下位装置２０から受信したチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が一致するためＤａｔａ[2]１４２の送受信処理は終了し（Ｓ４１５）、次の送受信処理に移る。以降はＤａｔａ[n-1]１４ｎ−１まで同様の処理を繰り返す。
【００３３】
上位装置１０の主処理プログラム１６は最後のＤａｔａ[n]１４ｎの送受信処理として特殊処理フラグ部４１３に0xF00Fを設定しＤａｔａ[n]１４ｎをデータ領域４２に格納しチェックサムバッファ１２の値とＤａｔａ[n]１４ｎで生成したチェックサム値とを加算した値をチェックサムバッファ１２に格納し、下位装置２０に送信時ペイロード部４０の内容を送信する（Ｓ４３１）。
【００３４】
下位装置２０の主処理プログラム２６は受信したデータ領域４２のデータをＤａｔａ[n]２５ｎに格納し（Ｓ４３２）特殊処理フラグ部４１３の値を判定し0xF00Fであることからチェックサムバッファ２２の値とＤａｔａ[n]２５ｎで生成したチェックサム値とを加算した値をチェックサムバッファ２２に格納し（Ｓ４３３）、チェックサム部５１４にチェックサムバッファ２２の値を格納し、上位装置１０に返信時ペイロード部５０の内容を返信する（Ｓ４３４）。
【００３５】
上位装置１０の主処理プログラム１６はチェックサムバッファ１２の値と下位装置２０から受信したチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が一致するためＤａｔａ[n]１４ｎの送受信処理は終了し（Ｓ４３５）、全データＤａｔａ[1]１４１〜Ｄａｔａ[n]１４ｎの送信処理が終了し、受信データ２５の整合性が保障される。
【００３６】
図５は本発明の実施例を示し上位装置１０と下位装置２０との間のチェックサム値不一致検出時の送受信データと特殊処理フラグの設定値を示す処理フローである。以下、図５のフローに基づきＳ５１３においてデータ領域４２のデータをＤａｔａ[2]２５２に格納する際誤ったＤａｔａ[2’]２５２’に化けてしまいチェックサム値不一致が発生した場合を説明する。Ｄａｔａ[1]２５１については図４のＳ４０１〜Ｓ４０５と同じ処理のため省略する（Ｓ５０１〜Ｓ５０５）。
【００３７】
上位装置１０の主処理プログラム１６は次のＤａｔａ[2]１４２の送受信処理として特殊処理フラグ部４１３に値0xF002を設定し、Ｄａｔａ[2]１４２をデータ領域４２に格納し、チェックサムバッファ１２の値とＤａｔａ[2]１４２で生成したチェックサム値とを加算した値をチェックサムバッファ１２に格納し、下位装置２０に送信時ペイロード部４０の内容を送信する（Ｓ５１１）。
【００３８】
下位装置２０の主処理プログラム２６は受信したデータ領域４２のデータをＤａｔａ[2]２５２に格納し（Ｓ５１２）、特殊処理フラグ部４１３の値を判定し、0xF002であることからチェックサムバッファ２２の値と誤った受信データＤａｔａ[2’]２５２’で生成したチェックサム値とを加算した値をチェックサムバッファ２２に格納し（Ｓ５１３）、チェックサム部５１４にチェックサムバッファ２２の値を格納し、上位装置１０に返信時ペイロード部５０の内容を返信する（Ｓ５１４）。
【００３９】
上位装置１０の主処理プログラム１６はチェックサムバッファ１２の値と下位装置２０から受信したチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が不一致であるため送受信処理は終了せず（Ｓ５１５）、Ｄａｔａ[2]１４２の再送信処理に移る。主処理プログラム１６はＤａｔａ[2]１４２の再送信処理として特殊処理フラグ部４１３に値0xF003を設定し、データ領域４２のデータは再送信前のまま下位装置２０に送信時ペイロード部４０の内容を送信する（Ｓ５２１）。
【００４０】
下位装置２０の主処理プログラム２６は特殊処理フラグ部４１３の値を判定し、0xF003であるため前回受信したＤａｔａ[2’]２５２’を破棄し、受信したデータ領域４２のデータをＤａｔａ[2]２５２に格納し（Ｓ５２２）、再送前のチェックサム値である前のチェックサムバッファ２３の値をチェックサムバッファ２２に格納し、チェックサムバッファ２２の値とＤａｔａ[2]２５２で生成したチェックサム値とを加算した値をチェックサムバッファ２２に格納し（Ｓ５２３）、チェックサム部５１４にチェックサムバッファ２２の値を格納し、上位装置１０に返信時ペイロード部５０の内容を返信する（Ｓ５２４）。
【００４１】
上位装置１０の主処理プログラム１６はチェックサムバッファ１２の値と下位装置２０から受信したチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が一致するため再送信処理は終了し（Ｓ５２５）、次の送受信処理に移る。Ｄａｔａ[3]２５３〜Ｄａｔａ[n]２５ｎについても図４のＳ４２１からＳ４３５と同様に処理される（Ｓ５３１〜Ｓ５５５）。Ｄａｔａ[n]２５ｎの送受信処理の最後のＳ５５５において主処理プログラム１６でチェックサムバッファ１２の値と下位装置２０から受信したチェックサム部５１４の値をコンペアして一致するかを確認し、チェックサム値が一致するためＤａｔａ[n]２５ｎの送受信処理は終了（Ｓ５５５）し、全データＤａｔａ[1]１４１〜Ｄａｔａ[n]１４ｎの送受信処理が終了する。Ｄａｔａ[2]２５２の再送信処理によって不一致を検出したデータを修正することができ、最終的な受信データ２５の整合性が保障され、全データＤａｔａ[1]１４１〜Ｄａｔａ[n]１４ｎを再送信するよりもデータ送受信量を低減することにより処理時間を少なくでき、低速な回線でも使用できる。
【００４２】
図６は図４、図５における上位装置１０側のデータ送受信及びデータ整合性チェック方式の実施例を示すフローチャートである。以下、図６のフローチャートに基づき説明を行う（図２で示す通信制御プログラム１７及び通信データ６０における処理は本フローでは割愛する）。
【００４３】
上位装置１０の主処理プログラム１６は、送信カウントを１に設定し、チェックサムバッファ１２をクリアし（Ｓ１０１）、送信バッファ１３の送信データ１４をＤａｔａ[1]１４１〜Ｄａｔａ[n]１４ｎの送信単位に分割し（Ｓ１０２）、通信バッファ１１の特殊処理フラグ部４１３に特殊処理フラグ値0xF001を格納する（Ｓ１０３）。送信バッファ１３のＤａｔａ[送信カウント]を通信バッファ１１のデータ領域４２に格納し、通信バッファ１１のアドレス部４１１に送信カウントの値を格納し、通信バッファ１１のデータ長部４１２にＤａｔａ[送信カウント]のデータ長を格納し（Ｓ１０４）、下位装置２０に送信するＤａｔａ[送信カウント]のチェックサム値を生成し、チェックサムバッファ１２の値に加算した値をチェックサムバッファ１２に格納し（Ｓ１０５）、通信制御プログラム１７で下位装置２０へ通信バッファ１１の内容を送信（通信制御プログラム１７の送信処理の内容は省略（図２説明を参照））し（Ｓ１０６）、下位装置２０からのＡＣＫ応答受信待ち（Ｓ１２０）となる。
【００４４】
主処理プログラム１６は通信制御プログラム１７にて下位装置２０からのＡＣＫ応答を受信すると（Ｓ１０７）、送信済みデータのチェックサムバッファ１２の値と下位装置２０から受信した通信バッファ１１のチェックサム部５１４の値をコンペアし一致しているか確認し（Ｓ１０８）、不一致の場合、送信したデータは不整合と判断し、データを再送信するため、通信バッファ１１の特殊処理フラグ部４１３に特殊処理フラグ値0xF003を格納し（Ｓ１１４）、Ｓ１０６〜Ｓ１０８を実施する。Ｓ１０８のチェックサム値のコンペアで一致する場合、送信カウントを１加算し（Ｓ１０９）、次の送信単位データＤａｔａ[送信カウント]があるか確認し（Ｓ１１０）、次の送信単位データがある場合、次の送信単位のデータが最後のＤａｔａ[n]１４ｎかを確認する（Ｓ１１１）。Ｓ１１１において最後のＤａｔａ[n]１４ｎではない場合、次の送信単位データを送信するため、通信バッファ１１の特殊処理フラグ部４１３に特殊処理フラグ値0xF002を格納し（Ｓ１１２）、再度Ｓ１０４〜Ｓ１１０を実施する。Ｓ１１１において最後のＤａｔａ[n]１４ｎである場合、最後の送信単位データを送信するため、通信バッファ１１の特殊処理フラグ部４１３に特殊処理フラグ値0xF00Fを格納し（Ｓ１１３）、再度Ｓ１０４〜Ｓ１１０を実施する。
【００４５】
Ｓ１１０において次の送信単位データが無い場合、上位装置１０の主処理プログラム１６において全ての送信単位に対する処理が終了したこととなり、不一致を検出したデータを修正することができ最終的な受信データ２５の整合性が保障され、全データＤａｔａ[1]１４１〜Ｄａｔａ[n]１４ｎを再送信するよりもデータ送受信量を低減することにより処理時間を少なくでき、低速な回線でも使用できる。
【００４６】
図７は図４、図５における下位装置２０側のデータ送受信及びデータ整合性チェック方式の実施例を示すフローチャートである。以下、図７のフローチャートに基づき説明を行う（図２で示す通信制御プログラム２７及び通信データ６０における処理は本フローでは割愛する）。
【００４７】
下位装置２０の主処理プログラム２６は、通信制御プログラム２７にて上位装置１０から通信バッファ２１に送信時ペイロード部４０の内容を受信（通信制御プログラム２７での受信処理の内容は省略（図２説明を参照））し（Ｓ２０１）、通信バッファ２１のデータ領域４２の内容を受信バッファ２４のＤａｔａ[通信バッファ２１のアドレス部４１１の値]に格納し（Ｓ２０２）、通信バッファ２１の特殊処理フラグ部４１３の値を判定する（Ｓ２０３）。
【００４８】
通信バッファ２１の特殊処理フラグ部４１３の値が0xF001の場合（Ｓ２０４）、チェックサムバッファ２２の値と前のチェックサムバッファ２３をクリアし（Ｓ２０６）、受信バッファ２４のＤａｔａ[1]のチェックサム値を生成し、チェックサムバッファ２２に格納し（Ｓ２０７）、通信バッファ２１のチェックサム部５１４にチェックサムバッファ２２の値を格納し（Ｓ２１４）、通信制御プログラム２７にて上位装置１０に通信バッファ２１の内容を返信する（Ｓ２１５）。
【００４９】
通信バッファ２１の特殊処理フラグ部４１３の値が0xF002または0xF00Fの場合（Ｓ２０８）、チェックサムバッファ２２の値を前のチェックサムバッファ２３に保存し（Ｓ２０９）、受信バッファ２４のＤａｔａ[通信バッファ２１のアドレス部４１１の値]のチェックサム値を生成し、チェックサムバッファ２２の値と加算した値をチェックサムバッファ２２に格納し（Ｓ２１０）、通信バッファ２１のチェックサム部５１４にチェックサムバッファ２２の値を格納し（Ｓ２１４）、通信制御プログラム２７にて上位装置１０に通信バッファ２１の内容を返信する（Ｓ２１５）。
【００５０】
通信バッファ２１の特殊処理フラグ部４１３の値が0xF003の場合（Ｓ２１１）、チェックサムバッファ２２の値を破棄し、前のチェックサムバッファ２３の値をチェックサムバッファ２２に格納し（Ｓ２１２）、受信バッファ２４のＤａｔａ[通信バッファ２１のアドレス４１１]のチェックサム値を生成し、チェックサムバッファ２２の値と加算した値をチェックサムバッファ２２に格納し（Ｓ２１０）、通信バッファ２１のチェックサム部５１４にチェックサムバッファ２２の値を格納し（Ｓ２１４）、通信制御プログラム２７にて上位装置１０に通信バッファ２１の内容を返信する（Ｓ２１５）。
【符号の説明】
【００５１】
１０・・・上位装置  １１・・・上位装置の通信バッファ  １２・・・上位装置のチェックサムバッファ  １３・・・上位装置の送信バッファ  １４・・・上位装置の送信単位に分割した送信データ  １６・・・上位装置の主処理プログラム  ２０・・・下位装置  ２１・・・下位装置の通信バッファ  ２２・・・下位装置のチェックサムバッファ  ２３・・・下位装置の前回のチェックサムバッファ  ２４・・・下位装置の受信バッファ  ２５・・・下位装置の送信単位に分割された受信データ  ２６・・・下位装置の主処理プログラム  ３０・・・通信回線  ４０・・・上位装置から下位装置へ送信する通信バッファのフォーマット  ４１３・・・上位装置から送信する特殊処理フラグ格納部  ４２・・・上位装置から送信するデータ領域  ５０・・・下位装置から上位装置へ送信する通信バッファのフォーマット  ５１４・・・下位装置から送信するチェックサム格納部
【図１】
2015222845.tif 000003
【図２】
2015222845.tif 000004
【図３】
2015222845.tif 000005
【図４】
2015222845.tif 000006
【図５】
2015222845.tif 000007
【図６】
2015222845.tif 000008
【図７】
2015222845.tif 000009