特開2015-222845(P2015-222845A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
<>
  • 特開2015222845-情報処理装置 図000003
  • 特開2015222845-情報処理装置 図000004
  • 特開2015222845-情報処理装置 図000005
  • 特開2015222845-情報処理装置 図000006
  • 特開2015222845-情報処理装置 図000007
  • 特開2015222845-情報処理装置 図000008
  • 特開2015222845-情報処理装置 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2015-222845(P2015-222845A)
(43)【公開日】2015年12月10日
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
   H04L 1/00 20060101AFI20151113BHJP
   H04L 1/16 20060101ALI20151113BHJP
   H04L 29/08 20060101ALI20151113BHJP
   H04L 1/12 20060101ALI20151113BHJP
【FI】
   H04L1/00 A
   H04L1/16
   H04L13/00 307Z
   H04L1/12
【審査請求】未請求
【請求項の数】3
【出願形態】OL
【全頁数】14
(21)【出願番号】特願2014-105762(P2014-105762)
(22)【出願日】2014年5月22日
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】100100310
【弁理士】
【氏名又は名称】井上 学
(74)【代理人】
【識別番号】100098660
【弁理士】
【氏名又は名称】戸田 裕二
(74)【代理人】
【識別番号】100091720
【弁理士】
【氏名又は名称】岩崎 重美
(72)【発明者】
【氏名】堀田 雅也
(72)【発明者】
【氏名】石山 和人
(72)【発明者】
【氏名】渡辺 省三
【テーマコード(参考)】
5K014
5K034
【Fターム(参考)】
5K014DA02
5K014FA05
5K034AA05
5K034HH06
5K034HH09
5K034HH10
5K034HH11
5K034MM03
(57)【要約】
【課題】
上位装置から下位装置へのデータ送信で厳密にデータの整合性を保障する場合、上位装置から分割したデータを送信し下位装置で組み直したデータを上位装置に返信し上位装置で送信データと返信データをコンペアして、データが不一致であった場合は上位装置から分割データ全てを下位装置に再送することでデータの整合性を保障する。この方式は低速な通信回線を使用する環境の上位装置ではデータの不一致で致命的な処理時間が掛かる。
【解決手段】
上位装置でデータを送信単位に分割したデータのチェックサム値を生成し下位装置にデータを送信し下位装置で受信し組み直した受信データのチェックサム値を生成し上位装置にその値を返信し上位装置は送信時のチェックサム値と下位装置から受信したチェックサム値をコンペアし一致したら次の送信単位のデータを送信し、不一致なら下位装置にデータを再送する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
送信データを格納する送信バッファと送信データのチェックサム値を格納する送信チェックサムバッファと前記送信バッファに格納された送信データを分割して分割データごとに下位装置に順次送信する手段とを備えた上位装置と、受信データを格納する受信バッファと受信データのチェックサム値を格納する第1の受信チェックサムバッファと前記第1の受信チェックサムバッファの値を格納する第2の受信チェックサムバッファと上位装置から受信した分割データを前記受信バッファに順次格納する手段とを備えた下位装置と、前記上位装置と前記下位装置の間でのデータ送受信に使用する通信回線で構成される情報処理装置であって、前記上位装置は分割データを下位装置に送信する際に当該送信する分割データのチェックサム値を生成し生成したチェックサム値と前記送信チェックサムバッファの値を加算して前記送信チェックサムバッファに格納し当該分割データを下位装置に送信し、前記下位装置は上位装置から分割データを受信した場合には当該受信した分割データを前記受信バッファに格納し前記第1の受信チェックサムバッファの値を前記第2の受信チェックサムバッファに格納し、前記受信バッファに格納した分割データのチェックサム値を生成し生成したチェックサム値と前記第1の受信チェックサムバッファの値を加算して前記第1の受信チェックサムバッファに格納し、前記第1の受信チェックサムバッファに格納された受信チェックサム値を前記上位装置に返信し、前記上位装置は前記送信チェックサムバッファの値と前記下位装置から受信した受信チェックサム値が一致した場合に次の分割データを送信することを特徴とする情報処理装置。
【請求項2】
前記上位装置は前記送信チェックサムバッファの値と前記下位装置から受信した受信チェックサム値が不一致の場合には前記下位装置に送信した分割データを再送し、前記下位装置は前記上位装置から再送の分割データを受信した場合には当該受信した再送の分割データを前記受信バッファに格納し前記第2の受信チェックサムバッファの値を前記第1の受信チェックサムバッファに格納し、前記受信バッファに格納した再送の分割データのチェックサム値を生成し生成したチェックサム値と前記第1の受信チェックサムバッファの値を加算して前記第1の受信チェックサムバッファに格納し、前記第1の受信チェックサムバッファに格納された受信チェックサム値を前記上位装置に返信することを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記上位装置と前記下位装置の間のデータ送受信にはペイロード部を有する通信データが使用され、前記上位装置は下位装置に送信する分割データと当該分割データの下位装置における処理内容を指示するフラグを前記ペイロード部に格納して当該通信データを下位装置に送信し、前記下位装置は前記上位装置に送信する受信チェックサム値を前記ペイロード部に格納して当該通信データを前記上位装置に送信することを特徴とする請求項1記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置においてRS232Cのような低速な回線を使用してデータ送受信を行う場合のデータ整合性チェック方式及び不整合時のデータ再送方式に関するものである。
【背景技術】
【0002】
厳密にデータの整合性を保障する必要がある場合は、下位装置で組み直したデータを上位装置に返信し上位装置で送信したデータと返信されたデータをコンペアして一致することを確認する処理し、コンペアしたデータが不一致であった場合は、上位装置から分割したデータ全てを下位装置に再送することでデータの整合性を保障する処理が挙げられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2014−11770号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上位装置から下位装置にデータ送信する場合に、上位装置がデータを分割して下位装置に送信し下位装置は分割して受信したデータを組み直し上位装置が送信したデータの整合性を保障する場合、一般的には個々のデータ送信に対し巡回冗長検査(CRC)やフレーミングエラーを検出することでデータの整合性チェックの代わりとしている。
【0005】
厳密にデータの整合性を保障する必要がある場合は、下位装置で組み直したデータを上位装置に返信し上位装置で送信したデータと返信されたデータをコンペアして一致することを確認する必要がある。コンペアしたデータが不一致であった場合は、上位装置から分割したデータ全てを下位装置に再送することでデータの整合性を保障する。
【0006】
ただしこの方式であるとデータが一致した場合でも上記一般的な方式の処理時間の二倍を要し、上位装置でデータの不一致の場合にはさらに処理時間が必要となるが、低速な通信回線を使用する場合では致命的な処理時間がかかることが課題である。
【0007】
本発明の目的は、前述した課題を解決し、データ送受信を含む処理時間を短縮し、かつデータの整合性を保障する方式を提供する。
【課題を解決するための手段】
【0008】
上記課題を解決するために、データを送信する単位に分割し送信単位ごとに下位装置に送信する際に送信済みデータとこれから下位装置に送信するデータのチェックサム値を生成し下位装置にデータを送信する上位装置と受信したデータを受信済みデータと組み直し組み直したデータのチェックサム値を生成し生成したチェックサム値を上位装置に返信する下位装置と上位装置と下位装置の間でのデータ送受信に使用する通信回線で構成される情報処理装置において、上位装置は送信単位ごとに下位装置に送信する際に送信済みデータとこれから下位装置に送信するデータのチェックサム値を生成し下位装置にデータを送信し、下位装置は受信したデータを受信済みデータと組み直して組み直したデータのチェックサム値を生成し生成したチェックサム値を上位装置に返信し、上位装置は送信する際に生成したチェックサム値と下位装置から受信したチェックサム値をコンペアして一致するかを確認しチェックサム値が一致した場合は次の送信単位のデータを送信し、チェックサム値が不一致の場合には下位装置に送信したデータを再送し、下位装置は上位装置から再送されたデータを受信した場合再送前のデータを破棄し再送されたデータと受信済みデータを組み直して組み直したデータのチェックサム値を生成し生成したチェックサム値を上位装置に返信し、上位装置は送信する際に生成したチェックサム値と下位装置から受信したチェックサム値をコンペアして一致した場合は再送したデータと送信済みデータの整合性がチェックできたものとして次の送信単位のデータを送信する。上位装置において全ての送信単位に対する処理が終了することでデータの整合性を保障することを特徴とする。
【発明の効果】
【0009】
1)上位装置が送信した分割データと下位装置で組み直したデータの不一致を検出した場合にデータを再送することで不一致なデータを修正し、最終的なデータの整合性を保障できる。
2)データの不一致を検出した場合の上位装置から下位装置へのデータの再送回数を最小限にすることを可能としデータ送受信量を低減し処理時間を少なく出来るため、低速な回線でも使用できる。
【図面の簡単な説明】
【0010】
図1】上位装置、下位装置のハードウェア関連図
図2図1の通信で使用する通信フォーマット図
図3図2の特殊処理フラグの値及び特殊処理内容表
図4図2図3のデータ送受信の通常処理時の処理フロー図
図5図2図3のデータ送受信のチェックサム値不一致検出時の処理フロー図
図6図4図5の上位装置10の主処理プログラム16の処理フロー図
図7図4図5の下位装置20の主処理プログラム26の処理フロー図
【発明を実施するための形態】
【0011】
以下、本発明の実施例を図面を用いて説明する。
【0012】
図1は本発明の実施例を示す上位装置、下位装置のハードウェア構造図であり、10は上位装置、101はメモリ102上のプログラムを動作させるCPU、102はプログラムやバッファを展開するメモリ、16は上位装置10の主な動作を処理するメインプログラム(主処理プログラム)、17は主処理プログラム16から指示されて通信回線30を経由して下位装置20とデータを送受信するプログラム(通信制御プログラム)、11は通信制御プログラム17がデータを送受信するバッファ(通信バッファ)、12は主処理プログラム16が下位装置20にデータを送信する際に下位装置20に送信済みのデータとこれから下位装置20に送信するデータのチェックサム値を格納するバッファ(チェックサムバッファ)、15は主処理プログラム16が設定し上位装置10が送信する送信データ14について下位装置20が行なう処理方法を指示する情報を格納するバッファ(処理制御情報バッファ)、13は主処理プログラム16が下位装置20に送信するデータを格納するバッファ(送信バッファ)、14は主処理プログラム16が送信する送信バッファ13に格納されるデータ(送信データ)、141〜14nは送信データ14を送信する単位に分割した送信単位ごとのデータ(Data[1]〜Data[n])で主処理プログラム16によりデータを送信する単位に分割し送信単位ごとに下位装置20に送信する。
【0013】
20は下位装置、201はメモリ202上のプログラムを動作させるCPU、202はプログラムやバッファを展開するメモリ、26は下位装置20の主な動作を処理するメインプログラム(主処理プログラム)、27は主処理プログラム26から指示されて通信回線30を経由して上位装置10とデータを送受信するプログラム(通信制御プログラム)、21は通信制御プログラム27がデータを送受信するバッファ(通信バッファ)、22は主処理プログラム26が上位装置10から受信し受信バッファ24にData[1]251からData[n]25nの順番どおり格納した受信済みデータで生成したチェックサム値を格納するバッファ(チェックサムバッファ)、23は主処理プログラム26が上位装置10から再送されたデータを受信した場合に当該データの再送前に前回生成したチェックサム値を格納するバッファ(前のチェックサムバッファ)、28は主処理プログラム26が上位装置10で指示した処理方法に従い処理した結果を格納するバッファ(処理結果情報バッファ)、24は下位装置20が受信したデータを格納するバッファ(受信バッファ)、25は主処理プログラム26が受信した受信バッファ24に格納するデータ(受信データ)、251〜25nは受信データ25の受信した受信単位ごとのデータ(Data[1]〜Data[n])であり主処理プログラム26により受信した1つの受信単位のデータ(Data[x]25x)を受信バッファ24にData[1]241からData[n]25nの順に格納し受信データ25を組み直す。
【0014】
30は上位装置10と下位装置20の間でのデータ送受信に使用する通信回線、103は上位装置10と通信回線30を接続するハードウェア(回線ポート)、203は下位装置20と通信回線30を接続するハードウェア(回線ポート)であり、通信制御プログラム17が回線ポート103を介しデータを送受信し、通信制御プログラム27が回線ポート203を介してデータの送受信を行う。
【0015】
図2は上位装置10と下位装置20間の通信で使用する通信フォーマットを説明する図であり、60は上位装置10と下位装置20の間の通信回線30を経由して送受信されるデータの集合体(通信データ)、61は送信される通信データ60の先頭データであることを示すスタートフラグ部、62は通信データ60を受信した装置で通信データ60が正しく受信されたかの判定結果を返すステータス部 、63は通信バッファ11または通信バッファ21のデータを格納するペイロード部、64はスタートフラグ61からペイロード部63まで送信するデータの整合性をチェックするCRCの値を設定するCRC部、65は通信データ60の最終データであることを示すエンドフラグ部で構成される。
【0016】
上位装置10から下位装置20へ通信データ60を送信する場合は、上位装置10の通信制御プログラム17が通信データ60のスタートフラグ部61から1バイトずつ順にデータを送信し、ペイロード部63を送信し終えた時点でCRC部64に計算したCRC値を設定して送信し、エンドフラグ部65を送信して送信処理を完了し、下位装置20の通信制御プログラム27は通信データ60のスタートフラグ部61を受信した時点から受信処理を開始しエンドフラグ部65を受信した時点で受信処理を終了し、受信したCRC部64の値をチェックし、異常が無い場合ペイロード部63のデータを通信バッファ21に格納する。
【0017】
下位装置20から上位装置10へ通信データ60を返信する場合は、下位装置20の通信制御プログラム27が通信データ60のスタートフラグ部61から1バイトずつ順にデータを送信し、ステータス部62に正常応答値(ACK)を設定して送信し、ペイロード部63を送信し終えた時点でCRC部64に計算した値を設定して送信し、エンドフラグ部65を送信して返信処理を完了し、上位装置10の通信制御プログラム17は通信データ60のスタートフラグ部61を受信した時点から受信処理を開始しエンドフラグ部65を受信した時点で受信処理を終了し、受信したCRC部64の値をチェックし異常が無い場合ステータス部62の値をチェックしACKが格納されていれば1回の送受信が完了する。
【0018】
下位装置20の通信制御プログラム27でCRC部64の値をチェックし、異常があった場合は通信データ60のスタートフラグ部61から1バイトずつ順にデータを送信し、ステータス部62に異常応答値(NACK)を設定して送信しペイロード部63を送信し終えた時点でCRC部64に計算した値を設定して送信し、エンドフラグ部65を送信して返信処理を完了し、上位装置10の通信制御プログラム17は前記手順で受信したステータス部62の値にNACKが格納されている場合は通信バッファ11の内容を前記手順で下位装置20へ再送し、前記手順で下位装置20から受信したステータス部62の値にACKが格納されていることで1回の送受信が完了する。
【0019】
40は上位装置10から下位装置20へ通信データ60を送信する場合のペイロード部63に相当するデータ(送信時ペイロード部)、41は主処理プログラム16が設定し主処理プログラム26で行うデータ領域42の処理方法を制御する情報の格納部(通信制御情報領域)、42は主処理プログラム16が格納し主処理プログラム26が読み出すデータData[1]〜Data[n]の格納部(データ領域)、411は主処理プログラム16が設定し、主処理プログラム26でデータ領域42のデータを受信バッファ24に書き込む位置の格納部(アドレス部)、412は主処理プログラム16が設定し、主処理プログラム26でデータ領域42のデータを受信バッファ24に書き込む長さの格納部(データ長部)、413は主処理プログラム16が設定し、主処理プログラム26でチェックサムバッファ22に格納する値を生成する方法を制御するフラグの格納部(特殊処理フラグ部)で構成される。
【0020】
50は下位装置20から上位装置10へ通信データ60を返信する場合のペイロード部63に相当するデータ(返信時ペイロード部)、51は主処理プログラム26が特殊処理フラグ部413の値に従い処理した結果の格納部(処理結果情報領域)、511から513は上位装置10から受信した送信時ペイロード部40の411から413の値を格納する領域、514は主処理プログラム26が特殊処理フラグ部413の値に従い生成したチェックサムバッファ22の値を格納し、主処理プログラム16でチェックサムバッファ12の値と一致するかをチェックするために使用される値の格納部(チェックサム部)で構成される。
【0021】
図3は上位装置10の主処理プログラム16が図2の特殊処理フラグ部413に設定する値及び下位装置20の主処理プログラム26での特殊処理フラグ部413の値に応じて行う処理内容を示す一覧表である。特殊処理フラグ部413の値は、上位装置10の主処理プログラム16が設定し、下位装置20の主処理プログラム26で生成し図2のチェックサム部514に格納するチェックサム値の生成方法を制御するものであり、上位装置10の主処理プログラム16が送信単位ごと分割した送信データ14を下位装置20に送信する際に、最初のデータ(Data[1]141)を送信する場合は特殊処理フラグ部413に値0xF001を設定して送信し、二回目以降のデータ(Data[x]14x)を送信する場合は特殊処理フラグ部413に値0xF002を設定して送信し、送信したデータが不一致で再送信する場合は特殊処理フラグ部413に値0xF003を設定して送信し、最後のデータ(Data[n]14n)を送信する場合は特殊処理フラグ部413に値0xF00Fを設定して送信する。
【0022】
下位装置20の主処理プログラム26では特殊処理フラグ部413の値に従い、特殊処理フラグ部413の値が0xF001の場合はチェックサムバッファ22の値と前のチェックサムバッファ23の値をクリアし、最初に受信したデータ(Data[1]251)のみで生成したチェックサム値をチェックサムバッファ22に格納し、チェックサムバッファ22の値をチェックサム部514に格納して上位装置10に返信する。特殊処理フラグ部413の値が0xF002の場合はチェックサムバッファ22の値を前のチェックサムバッファ23に保存しチェックサムバッファ22の値と当該受信したデータ(Data[x]25x)で生成したチェックサム値とを加算し、その値をチェックサムバッファ22に格納し、チェックサムバッファ22の値をチェックサム部514に格納して上位装置10に返信する。特殊処理フラグ部413の値が0xF003の場合はチェックサムバッファ22の値を破棄し、前のチェックサムバッファ23の値をチェックサムバッファ22に格納し、チェックサムバッファ22の値と当該受信したデータ(Data[x]25x)で生成したチェックサム値とを加算し、その値をチェックサムバッファ22に格納し、チェックサムバッファ22の値をチェックサム部514に格納して上位装置10に返信する。特殊処理フラグ部413の値が0xF00Fの場合はチェックサムバッファ22の値を前のチェックサムバッファ23に保存し、チェックサムバッファ22の値と当該受信したデータ(Data[n]25n)で生成したチェックサム値とを加算し、その値をチェックサムバッファ22に格納し、チェックサムバッファ22の値をチェックサム部514に格納して上位装置10に返信する。
【0023】
図4は本発明の実施例を示し上位装置10と下位装置20との間のデータ送受信で通常処理時の送受信データと特殊処理フラグの設定値を示す処理フローである。基本的な動作の仕組みは、送信バッファ13の送信データ14をData[1]141〜Data[n]14nの送信単位に分割し送信単位毎に順次送受信する。一回の送受信は送信バッファ13のData[n-1]14n−1の送受信を例にすると、上位装置10の主処理プログラム16は通信データ60の送信時ペイロード部40の特殊処理フラグ部413に図3の特殊処理フラグ部413の値0xF002を設定し、通信データ60の送信時ペイロード部40のデータ領域42に送信バッファ13のData[n-1] 14n−1を格納し、チェックサムバッファ12の値とData[n-1] 14n−1で生成したチェックサム値と加算した値をチェックサムバッファ12に格納し、下位装置20に通信データ60を送信する(S421)。
【0024】
下位装置20の主処理プログラム26は受信した通信データ60の送信時ペイロード部40のデータ領域42のデータを受信バッファ24のData[n-1]25n−1に格納し(S422)、通信データ60の送信時ペイロード部40の特殊処理フラグ部413の値を判定し、図3に示す特殊処理フラグ部413の値0xF002の特殊処理を行い受信済みデータのチェックサムバッファ22の値と当該受信したData[n-1]で生成したチェックサム値と加算した値をチェックサムバッファ22に格納し(S423)、通信データ60の返信時ペイロード部50のチェックサム部514にチェックサムバッファ22の値を格納し、上位装置10に通信データ60を返信する(S424)。
【0025】
上位装置10の主処理プログラム16は自身が保持するチェックサムバッファ12の値と下位装置20から受信した通信データ60の返信時ペイロード部50のチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が一致することでData[n-1]の送受信は終了し(S425)、次のData[n]の送受信に移る。
【0026】
以下、図4のフローに基づき説明を行う。
【0027】
上位装置10の主処理プログラム16は最初のData[1]141の送受信処理として特殊処理フラグ部413に値0xF001を設定し、Data[1]141をデータ領域42に格納し、Data[1]141で生成したチェックサム値をチェックサムバッファ12に格納し、下位装置20に送信時ペイロード部40の内容を送信する(S401)。
【0028】
下位装置20の主処理プログラム26は受信したデータ領域42のデータをData[1]251に格納し(S402)、特殊処理フラグ部413の値を判定し、0xF001であることからチェックサムバッファ22の値をクリアしData[1]251で生成したチェックサム値をチェックサムバッファ22に格納し(S403)、チェックサム部514にチェックサムバッファ22の値を格納し、上位装置10に返信時ペイロード部50の内容を返信する(S404)。
【0029】
上位装置10の主処理プログラム16はチェックサムバッファ12の値と下位装置20から受信したチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が一致するためData[1]141の送受信処理は終了し(S405)、次のData[2]142の送受信処理に移る。
【0030】
上位装置10の主処理プログラム16は次のData[2]142の送受信処理として特殊処理フラグ部413に値0xF002を設定し、Data[2]142をデータ領域42に格納し、チェックサムバッファ12の値とData[2]142で生成したチェックサム値とを加算した値をチェックサムバッファ12に格納し、下位装置20に送信時ペイロード部40の内容を送信する(S411)。
【0031】
下位装置20の主処理プログラム26は受信したデータ領域42のデータをData[2]252に格納し(S412)、特殊処理フラグ部413の値を判定し、0xF002であることからチェックサムバッファ22の値とData[2]252で生成したチェックサム値とを加算した値をチェックサムバッファ22に格納し(S413)、チェックサム部514にチェックサムバッファ22の値を格納し、上位装置10に返信時ペイロード部50の内容を返信する(S414)。
【0032】
上位装置10の主処理プログラム16はチェックサムバッファ12の値と下位装置20から受信したチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が一致するためData[2]142の送受信処理は終了し(S415)、次の送受信処理に移る。以降はData[n-1]14n−1まで同様の処理を繰り返す。
【0033】
上位装置10の主処理プログラム16は最後のData[n]14nの送受信処理として特殊処理フラグ部413に0xF00Fを設定しData[n]14nをデータ領域42に格納しチェックサムバッファ12の値とData[n]14nで生成したチェックサム値とを加算した値をチェックサムバッファ12に格納し、下位装置20に送信時ペイロード部40の内容を送信する(S431)。
【0034】
下位装置20の主処理プログラム26は受信したデータ領域42のデータをData[n]25nに格納し(S432)特殊処理フラグ部413の値を判定し0xF00Fであることからチェックサムバッファ22の値とData[n]25nで生成したチェックサム値とを加算した値をチェックサムバッファ22に格納し(S433)、チェックサム部514にチェックサムバッファ22の値を格納し、上位装置10に返信時ペイロード部50の内容を返信する(S434)。
【0035】
上位装置10の主処理プログラム16はチェックサムバッファ12の値と下位装置20から受信したチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が一致するためData[n]14nの送受信処理は終了し(S435)、全データData[1]141〜Data[n]14nの送信処理が終了し、受信データ25の整合性が保障される。
【0036】
図5は本発明の実施例を示し上位装置10と下位装置20との間のチェックサム値不一致検出時の送受信データと特殊処理フラグの設定値を示す処理フローである。以下、図5のフローに基づきS513においてデータ領域42のデータをData[2]252に格納する際誤ったData[2’]252’に化けてしまいチェックサム値不一致が発生した場合を説明する。Data[1]251については図4のS401〜S405と同じ処理のため省略する(S501〜S505)。
【0037】
上位装置10の主処理プログラム16は次のData[2]142の送受信処理として特殊処理フラグ部413に値0xF002を設定し、Data[2]142をデータ領域42に格納し、チェックサムバッファ12の値とData[2]142で生成したチェックサム値とを加算した値をチェックサムバッファ12に格納し、下位装置20に送信時ペイロード部40の内容を送信する(S511)。
【0038】
下位装置20の主処理プログラム26は受信したデータ領域42のデータをData[2]252に格納し(S512)、特殊処理フラグ部413の値を判定し、0xF002であることからチェックサムバッファ22の値と誤った受信データData[2’]252’で生成したチェックサム値とを加算した値をチェックサムバッファ22に格納し(S513)、チェックサム部514にチェックサムバッファ22の値を格納し、上位装置10に返信時ペイロード部50の内容を返信する(S514)。
【0039】
上位装置10の主処理プログラム16はチェックサムバッファ12の値と下位装置20から受信したチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が不一致であるため送受信処理は終了せず(S515)、Data[2]142の再送信処理に移る。主処理プログラム16はData[2]142の再送信処理として特殊処理フラグ部413に値0xF003を設定し、データ領域42のデータは再送信前のまま下位装置20に送信時ペイロード部40の内容を送信する(S521)。
【0040】
下位装置20の主処理プログラム26は特殊処理フラグ部413の値を判定し、0xF003であるため前回受信したData[2’]252’を破棄し、受信したデータ領域42のデータをData[2]252に格納し(S522)、再送前のチェックサム値である前のチェックサムバッファ23の値をチェックサムバッファ22に格納し、チェックサムバッファ22の値とData[2]252で生成したチェックサム値とを加算した値をチェックサムバッファ22に格納し(S523)、チェックサム部514にチェックサムバッファ22の値を格納し、上位装置10に返信時ペイロード部50の内容を返信する(S524)。
【0041】
上位装置10の主処理プログラム16はチェックサムバッファ12の値と下位装置20から受信したチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が一致するため再送信処理は終了し(S525)、次の送受信処理に移る。Data[3]253〜Data[n]25nについても図4のS421からS435と同様に処理される(S531〜S555)。Data[n]25nの送受信処理の最後のS555において主処理プログラム16でチェックサムバッファ12の値と下位装置20から受信したチェックサム部514の値をコンペアして一致するかを確認し、チェックサム値が一致するためData[n]25nの送受信処理は終了(S555)し、全データData[1]141〜Data[n]14nの送受信処理が終了する。Data[2]252の再送信処理によって不一致を検出したデータを修正することができ、最終的な受信データ25の整合性が保障され、全データData[1]141〜Data[n]14nを再送信するよりもデータ送受信量を低減することにより処理時間を少なくでき、低速な回線でも使用できる。
【0042】
図6図4図5における上位装置10側のデータ送受信及びデータ整合性チェック方式の実施例を示すフローチャートである。以下、図6のフローチャートに基づき説明を行う(図2で示す通信制御プログラム17及び通信データ60における処理は本フローでは割愛する)。
【0043】
上位装置10の主処理プログラム16は、送信カウントを1に設定し、チェックサムバッファ12をクリアし(S101)、送信バッファ13の送信データ14をData[1]141〜Data[n]14nの送信単位に分割し(S102)、通信バッファ11の特殊処理フラグ部413に特殊処理フラグ値0xF001を格納する(S103)。送信バッファ13のData[送信カウント]を通信バッファ11のデータ領域42に格納し、通信バッファ11のアドレス部411に送信カウントの値を格納し、通信バッファ11のデータ長部412にData[送信カウント]のデータ長を格納し(S104)、下位装置20に送信するData[送信カウント]のチェックサム値を生成し、チェックサムバッファ12の値に加算した値をチェックサムバッファ12に格納し(S105)、通信制御プログラム17で下位装置20へ通信バッファ11の内容を送信(通信制御プログラム17の送信処理の内容は省略(図2説明を参照))し(S106)、下位装置20からのACK応答受信待ち(S120)となる。
【0044】
主処理プログラム16は通信制御プログラム17にて下位装置20からのACK応答を受信すると(S107)、送信済みデータのチェックサムバッファ12の値と下位装置20から受信した通信バッファ11のチェックサム部514の値をコンペアし一致しているか確認し(S108)、不一致の場合、送信したデータは不整合と判断し、データを再送信するため、通信バッファ11の特殊処理フラグ部413に特殊処理フラグ値0xF003を格納し(S114)、S106〜S108を実施する。S108のチェックサム値のコンペアで一致する場合、送信カウントを1加算し(S109)、次の送信単位データData[送信カウント]があるか確認し(S110)、次の送信単位データがある場合、次の送信単位のデータが最後のData[n]14nかを確認する(S111)。S111において最後のData[n]14nではない場合、次の送信単位データを送信するため、通信バッファ11の特殊処理フラグ部413に特殊処理フラグ値0xF002を格納し(S112)、再度S104〜S110を実施する。S111において最後のData[n]14nである場合、最後の送信単位データを送信するため、通信バッファ11の特殊処理フラグ部413に特殊処理フラグ値0xF00Fを格納し(S113)、再度S104〜S110を実施する。
【0045】
S110において次の送信単位データが無い場合、上位装置10の主処理プログラム16において全ての送信単位に対する処理が終了したこととなり、不一致を検出したデータを修正することができ最終的な受信データ25の整合性が保障され、全データData[1]141〜Data[n]14nを再送信するよりもデータ送受信量を低減することにより処理時間を少なくでき、低速な回線でも使用できる。
【0046】
図7図4図5における下位装置20側のデータ送受信及びデータ整合性チェック方式の実施例を示すフローチャートである。以下、図7のフローチャートに基づき説明を行う(図2で示す通信制御プログラム27及び通信データ60における処理は本フローでは割愛する)。
【0047】
下位装置20の主処理プログラム26は、通信制御プログラム27にて上位装置10から通信バッファ21に送信時ペイロード部40の内容を受信(通信制御プログラム27での受信処理の内容は省略(図2説明を参照))し(S201)、通信バッファ21のデータ領域42の内容を受信バッファ24のData[通信バッファ21のアドレス部411の値]に格納し(S202)、通信バッファ21の特殊処理フラグ部413の値を判定する(S203)。
【0048】
通信バッファ21の特殊処理フラグ部413の値が0xF001の場合(S204)、チェックサムバッファ22の値と前のチェックサムバッファ23をクリアし(S206)、受信バッファ24のData[1]のチェックサム値を生成し、チェックサムバッファ22に格納し(S207)、通信バッファ21のチェックサム部514にチェックサムバッファ22の値を格納し(S214)、通信制御プログラム27にて上位装置10に通信バッファ21の内容を返信する(S215)。
【0049】
通信バッファ21の特殊処理フラグ部413の値が0xF002または0xF00Fの場合(S208)、チェックサムバッファ22の値を前のチェックサムバッファ23に保存し(S209)、受信バッファ24のData[通信バッファ21のアドレス部411の値]のチェックサム値を生成し、チェックサムバッファ22の値と加算した値をチェックサムバッファ22に格納し(S210)、通信バッファ21のチェックサム部514にチェックサムバッファ22の値を格納し(S214)、通信制御プログラム27にて上位装置10に通信バッファ21の内容を返信する(S215)。
【0050】
通信バッファ21の特殊処理フラグ部413の値が0xF003の場合(S211)、チェックサムバッファ22の値を破棄し、前のチェックサムバッファ23の値をチェックサムバッファ22に格納し(S212)、受信バッファ24のData[通信バッファ21のアドレス411]のチェックサム値を生成し、チェックサムバッファ22の値と加算した値をチェックサムバッファ22に格納し(S210)、通信バッファ21のチェックサム部514にチェックサムバッファ22の値を格納し(S214)、通信制御プログラム27にて上位装置10に通信バッファ21の内容を返信する(S215)。
【符号の説明】
【0051】
10・・・上位装置 11・・・上位装置の通信バッファ 12・・・上位装置のチェックサムバッファ 13・・・上位装置の送信バッファ 14・・・上位装置の送信単位に分割した送信データ 16・・・上位装置の主処理プログラム 20・・・下位装置 21・・・下位装置の通信バッファ 22・・・下位装置のチェックサムバッファ 23・・・下位装置の前回のチェックサムバッファ 24・・・下位装置の受信バッファ 25・・・下位装置の送信単位に分割された受信データ 26・・・下位装置の主処理プログラム 30・・・通信回線 40・・・上位装置から下位装置へ送信する通信バッファのフォーマット 413・・・上位装置から送信する特殊処理フラグ格納部 42・・・上位装置から送信するデータ領域 50・・・下位装置から上位装置へ送信する通信バッファのフォーマット 514・・・下位装置から送信するチェックサム格納部
図1
図2
図3
図4
図5
図6
図7