特許第6626049号(P6626049)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

▶ NECプラットフォームズ株式会社の特許一覧
<>
  • 特許6626049-制御装置、制御方法およびプログラム 図000002
  • 特許6626049-制御装置、制御方法およびプログラム 図000003
  • 特許6626049-制御装置、制御方法およびプログラム 図000004
  • 特許6626049-制御装置、制御方法およびプログラム 図000005
  • 特許6626049-制御装置、制御方法およびプログラム 図000006
  • 特許6626049-制御装置、制御方法およびプログラム 図000007
  • 特許6626049-制御装置、制御方法およびプログラム 図000008
  • 特許6626049-制御装置、制御方法およびプログラム 図000009
  • 特許6626049-制御装置、制御方法およびプログラム 図000010
  • 特許6626049-制御装置、制御方法およびプログラム 図000011
  • 特許6626049-制御装置、制御方法およびプログラム 図000012
  • 特許6626049-制御装置、制御方法およびプログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6626049
(24)【登録日】2019年12月6日
(45)【発行日】2019年12月25日
(54)【発明の名称】制御装置、制御方法およびプログラム
(51)【国際特許分類】
   H04L 1/00 20060101AFI20191216BHJP
   H04L 25/38 20060101ALI20191216BHJP
   G06F 11/10 20060101ALI20191216BHJP
【FI】
   H04L1/00 B
   H04L1/00 A
   H04L25/38 T
   G06F11/10 662
【請求項の数】10
【全頁数】20
(21)【出願番号】特願2017-142458(P2017-142458)
(22)【出願日】2017年7月24日
(65)【公開番号】特開2019-24159(P2019-24159A)
(43)【公開日】2019年2月14日
【審査請求日】2018年11月15日
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】中村 宜永
【審査官】 川口 貴裕
(56)【参考文献】
【文献】 特開平04−082444(JP,A)
【文献】 特開2001−244915(JP,A)
【文献】 米国特許第06229866(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 1/00
G06F 11/10
H04L 25/38
(57)【特許請求の範囲】
【請求項1】
シリアル通信の通信データに付加されたパリティビットに基づいて前記通信データにおけるビット誤りを検知するビット誤り検知手段と、
前記通信データの信号レベルを検出し、検出された前記信号レベルを出力する信号レベル検出手段と、
前記通信データの1ビット分のデータビットの転送時間ごとにタイマ割り込みを発生させるタイマと、
前記信号レベル検出手段によって検出された前記信号レベルの変化を検出してエッジ検出割り込みを発生する割り込み手段と、
前記ビット誤り検知手段によって前記通信データに前記ビット誤りが検出された際に、前記タイマ割り込みと前記エッジ検出割り込みとの関係に基づいて、少なくとも一つの前記データビットによって形成されるビットパターンに応じた論理処理によって前記通信データにおける誤りビットを特定し、特定した前記誤りビットを訂正するビット誤り訂正手段とを備える制御装置。
【請求項2】
前記タイマは、
前記通信データを構成する1ビット分の前記データビットの前記転送時間ごとに前記タイマ割り込みを発生し、
前記割り込み手段は、
前記信号レベル検出手段によって前記信号レベルの切り替わりエッジが検出された際に前記エッジ検出割り込みを発生し、
前記ビット誤り訂正手段は、
前記ビット誤り検知手段によって前記ビット誤りが検知された際に、前記通信データを構成する前記データビットごとの前記転送時間における前記エッジ検出割り込みの回数に基づいて前記誤りビットを特定する請求項1に記載の制御装置。
【請求項3】
前記ビット誤り訂正手段は、
前記ビット誤り検知手段によって前記ビット誤りが検知された際に、複数の前記データビットによって形成される前記ビットパターンの前記信号レベルの遷移と、前記ビットパターンを構成するいずれかの前記データビットの前記転送時間における前記エッジ検出割り込みの回数に基づいて前記誤りビットを特定する請求項2に記載の制御装置。
【請求項4】
前記ビット誤り訂正手段は、
複数の前記データビットによって形成される前記ビットパターンの前記信号レベルの遷移と、前記ビットパターンを構成するいずれかの前記データビットの前記転送時間における前記エッジ検出割り込みの回数とを対応させた判定テーブルを参照して前記誤りビットを特定する請求項3に記載の制御装置。
【請求項5】
前記ビット誤り訂正手段は、
2ビット分の前記データビットによって形成される前記ビットパターンに関して、
前記信号レベルが変化し、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が0回の場合と、
前記信号レベルが変化せず、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が1回の場合とにおいて、1ビット目の前記データビットに前記ビット誤りがあると特定し、前記ビット誤りがあると特定した1ビット目の前記データビットの信号レベルを訂正する請求項3または4に記載の制御装置。
【請求項6】
前記ビット誤り訂正手段は、
3ビット分の前記データビットによって形成される前記ビットパターンの前記信号レベルが、
ローレベル、ローレベル、ローレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が2回の場合と、
ハイレベル、ローレベル、ローレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が1回の場合と、
ローレベル、ローレベル、ハイレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が2回の場合と、
ハイレベル、ローレベル、ハイレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が1回の場合と、
ハイレベル、ハイレベル、ハイレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が2回の場合と、
ローレベル、ハイレベル、ハイレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が1回の場合と、
ハイレベル、ハイレベル、ローレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が2回の場合と、
ローレベル、ハイレベル、ローレベルと遷移する際に、2ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が1回の場合とにおいて、2ビット目の前記データビットに前記ビット誤りがあると特定し、前記ビット誤りがあると特定した2ビット目の前記データビットの信号レベルを訂正する請求項3または4に記載の制御装置。
【請求項7】
請求項1乃至6のいずれか一項に記載の制御装置を含み、前記ビット誤り検知手段の機能をUART(Universal Asynchronous Receiver/Transmitter)回路によって実現し、前記信号レベル検出手段の機能を汎用入出力ポートによって実現し、シリアル通信経路を介して前記通信データを受信する第1の装置。
【請求項8】
請求項7に記載の第1の装置と、
少なくとも前記UART回路を含み、前記シリアル通信経路を介して前記第1の装置に接続される第2の装置とを備える通信システム。
【請求項9】
シリアル通信の通信データに付加されたパリティビットに基づいて前記通信データにおけるビット誤りを検知し、
前記通信データの信号レベルを検出し、
前記通信データの1ビット分のデータビットの転送時間ごとにタイマ割り込みを発生させ、
前記信号レベルの変化を検出してエッジ検出割り込みを発生し、
前記ビット誤り検知手段によって前記通信データに前記ビット誤りが検出された際に、前記タイマ割り込みと前記エッジ検出割り込みとの関係に基づいて、少なくとも一つの前記データビットによって形成されるビットパターンに応じた論理処理によって前記通信データにおける誤りビットを特定し、
特定した前記誤りビットを訂正する制御方法。
【請求項10】
シリアル通信の通信データに付加されたパリティビットに基づいて前記通信データにおけるビット誤りを検知する処理と、
前記通信データの信号レベルを検出する処理と、
前記通信データの1ビット分のデータビットの転送時間ごとにタイマ割り込みを発生する処理と、
前記信号レベルの変化を検出してエッジ検出割り込みを発生する処理と、
前記ビット誤り検知手段によって前記通信データに前記ビット誤りが検出された際に、前記タイマ割り込みと前記エッジ検出割り込みとの関係に基づいて、少なくとも一つの前記データビットによって形成されるビットパターンに応じた論理処理によって前記通信データにおける誤りビットを特定する処理と、
特定した前記誤りビットを訂正する処理とをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シリアル通信における通信データのビット誤りを訂正する制御装置、制御方法およびプログラムに関する。
【背景技術】
【0002】
一般的なシリアル通信においては、パリティビットを用いることによって、通信データの誤り検出を行うことができる。しかし、パリティビットを用いた誤り検出では、通信データのビット誤りを検出できるものの、ビット誤りが発生したデータビットを特定することはできない。そのため、パリティビットを用いた誤り検出には、データ訂正ができないという問題点があった。また、パリティビットを用いた誤り検出では、ビット列中に2ビット以上の誤りを検出できないという問題点があった。
【0003】
特許文献1には、シリアル通信において、誤ってライトされたアドレスを特定する誤り訂正装置について開示されている。特許文献1の装置では、誤ったアドレスにライトされる現象が発生する可能性の高い「1」が「0」に化けてしまう1ビットエラーを仮定し、誤ってライトされてしまったアドレスを推測する。特許文献1の装置によれば、1ビットエラーと、2ビットエラーとを想定し、誤ってライトされたアドレスエラーを2ビットまで訂正できる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2016−76159号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の装置によれば、誤ったアドレスにライトされたデータをエラー発生前の値に訂正できる。しかしながら、特許文献1の装置には、誤ったアドレスにライトされたデータをエラー発生前の値に訂正することはできるものの、通信データを再転送する必要があるという問題点があった。
【0006】
また、ビット訂正用の冗長データや符号を通信データに予め付加することによって、通信データを再転送せずに誤りを訂正することもできる。しかしながら、通信データに冗長データや符号を付加すると、通信データのサイズが大きくなるという問題点があった。
【0007】
本発明の目的は、上述した課題を解決するために、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を実現する制御装置を提供することにある。
【課題を解決するための手段】
【0008】
本発明の制御装置は、シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知するビット誤り検知手段と、通信データの信号レベルのエッジを検出する信号レベル検出手段と、通信データの1ビット送信期間ごとに割り込み信号を発生させるタイマと、信号レベルの変化を検出して割り込み信号を発生する割り込み発生手段と、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定し、特定した誤りビットを訂正するビット誤り訂正手段とを備える。
【0009】
本発明の制御方法においては、シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知し、通信データの信号レベルのエッジを検出し、通信データの1ビット送信期間ごとに割り込み信号を発生させ、信号レベルの変化を検出して割り込み信号を発生し、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定し、特定した誤りビットを訂正する。
【0010】
本発明のプログラムは、シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知する処理と、通信データの信号レベルのエッジを検出する処理と、通信データの1ビット送信期間ごとに割り込み信号を発生する処理と、信号レベルの変化を検出して割り込み信号を発生する処理と、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定する処理と、特定した誤りビットを訂正する処理とをコンピュータに実行させる。
【発明の効果】
【0011】
本発明によれば、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を実現する制御装置を提供することが可能になる。
【図面の簡単な説明】
【0012】
図1】本発明の第1の実施形態に係る制御装置の構成を示すブロック図である。
図2】本発明の第1の実施形態に係る制御装置の処理対象データを構成するデータビットにノイズが発生した例を示すタイムチャートである。
図3】本発明の第1の実施形態に係る制御装置の処理対象データを構成するデータビットにノイズが発生した例を示すタイムチャートである。
図4】本発明の第1の実施形態に係る制御装置の処理対象データを構成するデータビットにノイズが発生した例を示すタイムチャートである。
図5】本発明の第1の実施形態に係る制御装置の処理対象データを構成するパリティビットにノイズが発生した例を示すタイムチャートである。
図6】本発明の第1の実施形態に係る制御装置の処理対象データのビットパターンの読み取り値と割り込み回数をノイズの有無で比較するためのテーブルである。
図7】本発明の第1の実施形態に係る制御装置の全体的な動作について説明するためのフローチャートである。
図8】本発明の第1の実施形態に係る制御装置の受信割り込み処理について説明するためのフローチャートである。
図9】本発明の第1の実施形態に係る制御装置のエッジ検出割り込み処理について説明するためのフローチャートである。
図10】本発明の第1の実施形態に係る制御装置のタイマ割り込み処理について説明するためのフローチャートである。
図11】本発明の第2の実施形態に係る通信システムの構成を示すブロック図である。
図12】本発明の実施形態に係る制御装置を実現するためのハードウェア構成の一例である。
【発明を実施するための形態】
【0013】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きなどを限定するものではない。
【0014】
(第1の実施形態)
まず、本発明の第1の実施形態に係る制御装置について図面を参照しながら説明する。本実施形態の制御装置は、UART(Universal Asynchronous Receiver/Transmitter)を用いたシリアル通信において、通信データに含まれるビット誤りを検出し、検出したビット誤りを訂正する。
【0015】
(構成)
図1は、本実施形態の制御装置10の構成を示すブロック図である。図1のように、本実施形態の制御装置10は、ビット誤り検知部11、信号レベル検出部12、ビット誤り訂正部13、タイマ14、割り込み部15を備える。制御装置10の各構成要素は、図示しない制御部によって制御される。
【0016】
制御装置10は、シリアル信号で送信された波形を入力部(図示しない)から入力とする。制御装置10は、入力した波形をデジタルデータに変換し、ビット誤り検知部11および信号レベル検出部12に振り分ける。
【0017】
ビット誤り検知部11(ビット誤り検知手段とも呼ぶ)は、UART仕様でシリアル信号として送信された通信データを受信する。ビット誤り検知部11は、通信データに付加されたパリティビットに基づいてビット誤りを検知する。例えば、ビット誤り検知部11は、UART回路の機能によって実現できる。
【0018】
信号レベル検出部12(信号レベル検出手段とも呼ぶ)は、入力した処理対象データの信号レベル(High/Low)を検出する。信号レベル検出部12は、検出した信号レベルをビット誤り訂正部13に出力する。信号レベル検出部12は、汎用入出力(I/O:Input / Output)ポートの機能によって実現できる。
【0019】
例えば、信号レベル検出部12は、汎用入出力ポートの入出力設定を有する。信号レベル検出部12は、入出力設定が入力ピン設定であれば、入力信号の信号レベルを検出する。また、信号レベル検出部12は、入出力設定が出力ピン設定であれば、入力信号の信号レベルを出力する。本実施形態では、入出力設定を入力ピン設定に設定して入力信号レベルを検出することに利用する。
【0020】
ビット誤り訂正部13(ビット誤り訂正手段とも呼ぶ)は、処理対象データの信号レベルをビット誤り検知部11から取得する。ビット誤り訂正部13は、ビット誤りの発生パターンに応じた論理処理によって、処理対象データの誤りビットを特定し、特定した誤りビットを訂正する。ビット誤り訂正部13は、データを構成する複数のデータビットが形成するビットパターンと、ビット誤り検知部11への入力信号のレベル変動が検出された際に割り込み(エッジ検出割り込み)の回数との関係に基づいて誤りビットを特定する。
【0021】
タイマ14は、時間計測する機能を有する。タイマ14は、シリアル信号の1ビット送信期間(所定間隔)ごとに割り込み(タイマ割り込み)を発生させて割り込み処理を実行する。
【0022】
割り込み部15(割り込み手段とも呼ぶ)は、イベント発生に起因する信号レベルの変化を検知した際に割り込みを発生させて割り込み処理を実行する。言い換えると、割り込み部15は、ビット誤り検知部11への入力信号のレベル変動が検出された際に割り込み(エッジ検出割り込み)を発生させて割り込み処理を実行する。例えば、割り込み部15は、入力信号のHigh−Low切り替わりエッジ検出によってレベル変動を検出する。また、割り込み部15は、タイマ14が設定した計測時間が経過したら割り込みを発生させて割り込み処理を実行する。
【0023】
例えば、割り込み部15は、ビット誤り検知部11や信号レベル検出部12への入力信号の信号レベルの変化や、タイマ14が計測する時間の経過などのイベント発生時に、それぞれの割り込みベクタテーブルを参照して対応する割り込み処理を実行する。
【0024】
以上が、本実施形態の制御装置10の構成についての説明である。
【0025】
〔検出方法〕
次に、本実施形態の制御装置10が、通信データに発生するビット誤りを検出し、ビット誤りが発生したデータビットを特定する方法について具体的な例を挙げて説明する。以下においては、制御装置10が、スタートビット(L)、8ビットのデータビット、1ビットのパリティビット(偶数)、ストップビット(High)によって構成される信号を受信する例について説明する。なお、以下において、信号レベルは、High(ハイレベルとも呼ぶ)をH、Low(ローレベルとも呼ぶ)をLと記載する。
【0026】
図2図5は、通信データのビットパターンや割り込みのパターンを対応させるタイミングチャートである。なお、図2図5の信号パターンは、本実施形態の制御装置10の処理対象データを構成するビットパターンの一例であり、全てのパターンを示すわけではない。
【0027】
図2図5において、最上段のタイミングチャートは、通信データとして送信された送信信号のビットパターンである。2段目のタイミングチャートは、ビット誤り検知部11によって受信される受信信号のビットパターンである。3段目のタイミングチャートは、信号レベル検出部12に入力される信号のビットパターンである。4段目のタイミングチャートは、信号レベル検出部12に入力される入力信号の信号レベルの変動に起因して割り込み部15が発生させる割り込み(エッジ割り込み)のパターンである。5段目のタイミングチャートは、タイマ14が発生させる割り込み(タイマ割り込み)のパターンである。最下段は、タイマ割り込み間隔ごとのエッジ割り込み発生回数である。図2図5には、受信信号(2段目)および入力信号(3段目)のいずれかのビットにノイズに起因するビット誤りが発生する例を示す。
【0028】
図2は、信号レベルがL→H→L→H→L→H→L→Hと遷移する8ビットのデータ(データ値0x55)のうち4番目のデータビット(H)にノイズが発生する例である。なお、図2のデータは、信号レベルがHのデータビットを4個(偶数個)含むため、パリティビット(偶数)はLである。
【0029】
図2の例では、4番目のデータビット(H)のノイズに起因してエッジ割り込みが発生する。その結果、4番目のデータビット(H)の始まりと終わりに対応するタイマ割り込み間のエッジ割り込み発生回数が2回となる。正常な受信信号であれば、4番目のデータビット(H)の前後でエッジ割り込みが発生するため、対応するタイマ割り込み間のエッジ割り込み発生回数は1回である。そのため、制御装置10は、エッジ割り込み発生回数が2回となる4番目のデータビットにビット誤りがあると特定する。
【0030】
図3は、信号レベルがL→H→H→H→L→H→L→Hと遷移する8ビットのデータ(データ値0x75)のうち4番目のデータビット(H)にノイズが発生する例である。なお、図3のデータは、信号レベルがHのデータビットを5個(奇数個)含むため、パリティビット(偶数)はHである。
【0031】
図3の例では、4番目のデータビット(H)のノイズに起因してエッジ割り込みが発生する。その結果、4番目のデータビット(H)の始まりと終わりに対応するタイマ割り込み間のエッジ割り込み発生回数が1回となる。正常な受信信号であれば、4番目のデータビット(H)の後のみでエッジ割り込みが発生するため、対応するタイマ割り込み間のエッジ割り込み発生回数は0回である。そのため、制御装置10は、エッジ割り込み発生回数が1回となる4番目のデータビットにビット誤りがあると特定する。
【0032】
図4は、信号レベルがH→H→L→H→L→H→L→Hと遷移する8ビットのデータ(データ値0xD5)のうち、ストップビット直後の1番目のデータビット(H)にノイズが発生する例である。なお、図4のデータは、信号レベルがHのデータビットを5個(奇数個)含むため、パリティビット(偶数)はHである。
【0033】
図4の例では、スタートビット直後の1番目のデータビット(H)のノイズに起因してエッジ割り込みが発生する。その結果、1番目のデータビット(H)の終わりに対応するタイマ割り込みまでのエッジ割り込み発生回数が2回となる。正常な受信信号であれば、1番目のデータビット(H)の前のみでエッジ割り込みが発生するため、対応するタイマ割り込みまでのエッジ割り込み発生回数は1回である。そのため、制御装置10は、エッジ割り込み発生回数が2回となる1番目のデータビットにビット誤りがあると特定する。
【0034】
図5は、信号レベルがL→H→L→H→L→H→L→Hと遷移する8ビットのデータ(データ値0x55)に付加されるパリティビット(L)にノイズが発生する例である。なお、図5のデータは、信号レベルがHのデータビットを4個(偶数個)含むため、パリティビット(偶数)はLである。
【0035】
図5の例では、データに付加されるパリティビット(L)のノイズに起因してエッジ割り込みが発生する。その結果、パリティビット(L)の始まりと終わりに対応するタイマ割り込み間のエッジ割り込み発生回数が2回となる。正常な受信信号であれば、パリティビット(L)の前後でエッジ割り込みが発生するため、対応するタイマ割り込み間のエッジ割り込み発生回数は1回である。そのため、制御装置10は、エッジ割り込み発生回数が2回となるパリティビットにビット誤りがあると特定する。
【0036】
以上のように、データを構成するデータビットのいずれかにビット誤りが発生すると、ビット誤りが発生したデータビットに対応するタイマ割り込み間のエッジ割り込み回数が正常時とは異なる値になる。以下において、ビット誤りが発生したデータビットの転送時間におけるエッジ割り込み発生回数に関する規則性について図面を参照しながら説明する。
【0037】
〔判定テーブル〕
図6は、データを構成する3ビット分のビットパターンの波形に関して、その波形の読み取り値と割り込み回数とを対応させた判定テーブル130である。なお、図6の判定テーブル130は、3ビット分のビットパターンの波形に関して、ビット誤りがない場合(正常)と、2ビット目のデータビットにビット誤りがある場合とを比較するためのテーブルである。例えば、判定テーブル130は、制御装置10の内部の図示しない記憶手段に記憶させておけばよい。
【0038】
3ビット分のビットパターンには、判定テーブル130にまとめたように、2の3乗通り(8通り)のパターンがある。判定テーブル130の読み取り値は、各データビットの信号レベル(1ビット目、2ビット目、3ビット目の順)である。判定テーブル130の割り込み回数は、各データビットの転送時間におけるエッジ割り込み発生回数(1ビット目、2ビット目、3ビット目の順)である。なお、ノイズによる信号レベル変動に起因する割り込みは、1回とカウントする。また、割り込み回数欄の「x」は、1ビット目のデータビットの前のデータビットの信号レベルによって異なり、信号レベルが同じ場合は0、異なる場合は1である。
【0039】
ビットパターンAは、信号レベルがL→H→Lと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→1→1となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はL→L→Lとなり、各ビットにおける割り込み回数はx→2→1となる。
【0040】
ビットパターンBは、信号レベルがH→H→Lと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→0→1となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はH→L→Lとなり、各ビットにおける割り込み回数はx→1→1となる。
【0041】
ビットパターンCは、信号レベルがL→H→Hと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→1→0となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はL→L→Hとなり、各ビットにおける割り込み回数はx→2→0となる。
【0042】
ビットパターンDは、信号レベルがH→H→Hと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→0→0となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はH→L→Hとなり、各ビットにおける割り込み回数はx→1→0となる。
【0043】
ビットパターンEは、信号レベルがH→L→Hと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→1→1となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はH→H→Hとなり、各ビットにおける割り込み回数はx→2→1となる。
【0044】
ビットパターンFは、信号レベルがL→L→Hと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→0→1となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はL→H→Hとなり、各ビットにおける割り込み回数はx→1→1となる。
【0045】
ビットパターンGは、信号レベルがH→L→Lと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→1→0となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はH→H→Lとなり、各ビットにおける割り込み回数はx→2→0となる。
【0046】
ビットパターンHは、信号レベルがL→L→Lと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はx→0→0となる。それに対し、2ビット目のデータビットにビット誤りが発生した場合、読み取り値はL→H→Lとなり、各ビットにおける割り込み回数はx→1→0となる。
【0047】
以上が、図6の判定テーブル130にまとめたビットパターンA〜Hにおいてビット誤りが発生した場合の読み取り値とエッジ割り込み発生回数との関係についての説明である。
【0048】
図6の判定テーブル130を踏まえると、連続する2ビット分のビットパターンの信号レベルの遷移において、通信データにノイズが含まれない場合、ビットパターンの読み取り値とエッジ割り込み発生回数との関係は、以下のような組み合わせになる。なお、以下の2ビット分のビットパターンの信号レベルの遷移に関しては、図6の3ビット分のビットパターンのうち2ビット目を1ビット目、3ビット目を2ビット目に読み替えて説明する。
【0049】
読み取り値がH→Lと遷移するパターン(ビットパターンA、B)であれば、2ビット目のビットパターンの割り込み回数は1回である。
【0050】
読み取り値がH→Hと遷移するパターン(ビットパターンC、D)であれば、2ビット目のビットパターンの割り込み回数は0回である。
【0051】
読み取り値がL→Hと遷移するパターン(ビットパターンE、F)であれば、2ビット目のビットパターンの割り込み回数は1回である。
【0052】
読み取り値がL→Lと遷移するパターン(ビットパターンG、H)であれば、2ビット目のビットパターンの割り込み回数は0回である。
【0053】
すなわち、通信データがノイズありで受信された場合、2ビットのビットパターンから以下のように誤りビットが検出される。
【0054】
読み取り値がL→Lであり、2ビット目のデータビットの転送時間におけるエッジ割り込み回数が1回であれば、そのビットパターンの1ビット目のデータビットにはノイズが含まれる(ノイズありビットパターンA、B)。なぜならば、正常なビットパターンであれば、読み取り値がL→Lである場合、割り込み回数は0回になるからである(ノイズなしビットパターンG、H)。すなわち、読み取り値の遷移がL→Lであり、2ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が1回の場合、制御装置10は、1ビット目のデータビットの信号レベルをLからHに訂正する。
【0055】
読み取り値がL→Hであり、2ビット目のデータビットの転送時間におけるエッジ割り込み回数が0回であれば、そのビットパターンの1ビット目のデータビットにはノイズが含まれる(ノイズありビットパターンC、D)。なぜならば、正常なビットパターンであれば、読み取り値がL→Hである場合、割り込み回数は1回になるからである(ノイズなしビットパターンE、F)。すなわち、読み取り値の遷移がL→Hであり、2ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が0回の場合、制御装置10は、1ビット目のデータビットの信号レベルをLからHに訂正する。
【0056】
読み取り値がH→Hであり、2ビット目のデータビットの転送時間におけるエッジ割り込み回数が1回であれば、そのビットパターンの1ビット目のデータビットにはノイズが含まれる(ノイズありビットパターンE、F)。なぜならば、正常なビットパターンであれば、読み取り値がH→Hである場合、割り込み回数は0回になるからである(ノイズなしビットパターンC、D)。すなわち、読み取り値の遷移がH→Hであり、2ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が1回の場合、制御装置10は、1ビット目のデータビットの信号レベルをHからLに訂正する。
【0057】
読み取り値がH→Lであり、2ビット目のデータビットの転送時間におけるエッジ割り込み回数が0回であれば、そのビットパターンの1ビット目のデータビットにはノイズが含まれる(ノイズありビットパターンG、H)。なぜならば、正常なビットパターンであれば、読み取り値がH→Lである場合、割り込み回数は1回になるからである(ノイズなしビットパターンA、B)。すなわち、読み取り値の遷移がH→Lであり、2ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が0回の場合、制御装置10は、1ビット目のデータビットの信号レベルをHからLに訂正する。
【0058】
読み取り値がL→Lの場合に割り込み回数が1回であれば、そのビットパターンの2ビット目には誤りが含まれる。読み取り値がL→Lであるが、割り込み回数1回の場合、実際には先のLがHである。
【0059】
すなわち、2ビット分の前記データビットによって形成されるビットパターンの信号レベルの遷移における誤りビットは、以下の判定基準によって特定される。
【0060】
第1は、信号レベルが変化し、2ビット目のデータビットの転送時間におけるエッジ検出割り込み回数が0回の場合である。
【0061】
第2は、信号レベルが変化せず、2ビット目のデータビットの転送時間におけるエッジ検出割り込み回数が1回の場合である。
【0062】
以上のように、判定テーブル130に示すように、ビットパターンのレベル変化(H/L)と割り込み回数との関係に基づいて、ビット誤りが発生したデータビットを特定し、ビット誤りが発生したデータビットの値を訂正できる。
【0063】
(動作)
次に、本実施形態の制御装置10の動作について図面を参照しながら説明する。
【0064】
図7は、制御装置10の全体的な動作に関するフローチャートである。図7のフローチャートに関しては、制御装置10を動作の主体として説明する。
【0065】
図7において、まず、制御装置10は、ビット誤り検知部11(UART回路)へのシリアル通信のデータ受信割り込み設定(割り込み許可)を行う(ステップS11)。
【0066】
次に、制御装置10は、信号レベル検出部12(I/O入力端子)への入力信号のエッジ検出割り込み設定(割り込み許可)を行う(ステップS12)。
【0067】
ここで、制御装置10は、データを受信すると(ステップS13でYes)、受信したデータを通信用バッファに保持し、受信割り込み処理やエッジ検出割り込み処理、タイマ割り込み処理などの処理を実行する(ステップS14)。一方、制御装置10は、データを受信してない場合(ステップS13でNo)、データを受信するまで待機する。
【0068】
ステップS14の処理の後にデータの受信を継続する場合(ステップS15でYes)、ステップS13に戻る。一方、ステップS14の処理の後にデータの受信を継続しない場合(ステップS15でNo)は図7のフローチャートに沿った処理を終了とする。
【0069】
以上が、図7のフローチャートについての説明である。続いて、図7のフローチャートのステップS14の処理について、図8図10を参照しながら説明する。
【0070】
〔受信割り込み処理〕
図8は、シリアル通信におけるデータ受信時の割り込み処理(受信割り込み処理)に関するフローチャートである。シリアル通信におけるデータ受信時の割り込み処理は、シリアル通信でデータを1バイト受信した際に割り込みが発生して実行される。図8のフローチャートに関しては、制御装置10を動作の主体として説明する。
【0071】
図8において、まず、制御装置10は、受信したデータにパリティエラーが含まれるか否かを検証する(ステップS111)。
【0072】
受信したデータにパリティエラーが含まれる場合(ステップS111でYes)、制御装置10は、エッジ割り込み回数の取得を試みる(ステップS112)。一方、受信したデータにパリティエラーが含まれない場合(ステップS111でYes)、制御装置10は、通信用バッファの保持している受信データを取得する(ステップS113)。なお、ステップS113の後はステップS118に進む。
【0073】
制御装置10は、ステップS112においてエッジ割り込み回数を取得すると(ステップS112でYes)、タイマ割り込みを禁止(停止)する(ステップS114)。一方、制御装置10は、エッジ割り込み回数を取得していない場合(ステップS112でNo)、エッジ割り込み回数の取得を試みる。
【0074】
制御装置10は、ステップS114においてタイマ割り込みを禁止すると、受信データに含まれるビットパターンの信号レベルと、エッジ割り込み回数とを確認し、誤りビットを特定する(ステップS115)。
【0075】
次に、制御装置10は、ビット誤りを訂正する(ステップS116)。制御装置10は、ビット誤りを訂正したデータを取得する。
【0076】
そして、制御装置10は、エッジ割り込み発生回数データをクリアする(ステップS117)。
【0077】
以上が、図8のフローチャートについての説明である。続いて、図9のフローチャートについて説明する。
【0078】
〔エッジ検出割り込み処理〕
図9は、エッジ検出割り込み処理に関するフローチャートである。エッジ検出割り込み処理は、受信信号(I/O入力信号)のレベル変化時に割り込みが発生して実行される。図9のフローチャートに関しては、制御装置10を動作の主体として説明する。
【0079】
図9において、まず、制御装置10は、エッジ検出割り込みをマスク(禁止)する(ステップS121)。
【0080】
データビットがスタートビットの場合(ステップS122でYes)、制御装置10は、タイム割り込みを許可する(ステップS123)。ステップS123の後はステップS126に進む。
【0081】
一方、データビットがスタートビットではない場合(ステップS122でNo)、制御装置10は、入力データの信号レベルを取得する(ステップS124)。
【0082】
次に、制御装置10は、エッジ割り込み発生回数をカウントアップする(ステップS125)。
【0083】
そして、制御装置10は、エッジ検出割り込みを許可する(ステップS126)。
【0084】
以上が、図9のフローチャートについての説明である。続いて、図10のフローチャートについて説明する。
【0085】
〔タイマ割り込み処理〕
図10は、タイマ割り込み処理に関するフローチャートである。タイム割り込み処理は、1ビットの受信時間ごとに実行される。
【0086】
図10において、まず、制御装置10は、エッジ割り込み発生回数を保存する(ステップ131)。
【0087】
以上が、図10のフローチャートについての説明である。
【0088】
ここで、一般的なシリアル通信におけるパリティビットを用いた誤り検出の問題点について説明する。
【0089】
第1の問題点は、パリティビットを用いた一般的な誤り検出では、どのデータビットにビット誤りがあるのかを特定できないことである。
【0090】
シリアル通信では、複数ビットからなる1つのデータに偶数(奇数)パリティを1ビット付与し、パリティビットも含めて、信号レベルがHのデータビットの数が偶数個(奇数個)となるようにしてデータを送信する。そのため、パリティビットの信号レベルが期待値と異なっている場合、ビット誤りが発生したことは確認できる。しかしながら、パリティビットを含めた複数個のデータビットのうちいずれのデータビットにビット誤りが発生したのかまでは特定できない。
【0091】
第2の問題点は、ビット誤りを訂正するためには、通信データ(パケット)サイズを大きくする必要があることである。
【0092】
パリティビットだけではビット誤りが発生したデータビットを特定できない。そのため、ビット誤りが発生したデータビットを特定するためには、水平パリティやハミング符号を付加したり、データを冗長化させたりする必要があり、パケットサイズが増加してしまう。また、ビット誤りの検知によりデータの再送を要求する場合には、送信側に対して再送要求を出すパケットが必要となるとともに、同じサイズのデータが再び通信路を経由して取得する必要がある。
【0093】
次に、上述の一般的なシリアル通信におけるパリティビットを用いた誤り検出における問題点を踏まえて、本実施形態の効果について説明する。
【0094】
本実施形態では、UART(Universal Asynchronous Receiver Transmitter)などのシリアル通信が可能なシステムにおいて、以下の機能を利用する。
【0095】
第1の機能は、通信信号にパリティビットを付加することでデータのビット誤りを検知するシリアル通信機能である。シリアル通信機能は、シリアル信号を受信し、受信したシリアル信号を数値データ化する機能である。
【0096】
第2の機能は、入力信号の信号レベル(High/Low)を認識できる入力端子における信号レベルの変化を検出して割り込みを発生する機能(割り込み処理実行機能)である。
【0097】
第3の機能は、シリアル信号の1ビット送信期間ごとに割り込み(タイマ割り込み)を発生させるタイマ機能である。
【0098】
本実施形態によれば、上述の3つの機能を利用しつつ、以下の効果が得られる。
【0099】
第1の効果は、パリティエラー検知により、シリアル通信におけるビット誤りを訂正できることである。その理由は、データビットごとに信号レベル変化回数をカウントすることにより、ビット誤りが発生したデータビットを特定できるためである。
【0100】
第2の効果は、ビット誤りが発生したデータビットの誤り訂正に要する通信データ(パケット)のサイズを抑えられることである。その理由は、パリティエラーによってビット誤りを検知した際に、通信中のデータビットごとの信号レベル変化回数から訂正するデータビットを特定するため、訂正のための符号を付加する必要がなく、データを再送する必要もないためである。
【0101】
以上のように、本実施形態によれば、通信データの信号レベルの変動回数を監視することによって、ビット誤りが発生したデータビットを特定・訂正できる。その結果、本実施形態の誤り訂正方法によれば、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を提供することが可能になる。
【0102】
(第2の実施形態)
次に、本発明の第2の実施形態に係る通信システムについて図面を参照しながら説明する。本実施形態の通信システムは、シリアル通信によってデータを送信する送信装置と、第1の実施形態の制御装置10を含む受信装置とを備える。
【0103】
図11は、本実施形態の通信システム20の構成を示す概念図である。通信システム20は、受信装置21(第1の装置とも呼ぶ)と送信装置22(第2の装置とも呼ぶ)とを備える。受信装置21と送信装置22とは、通信路230(シリアル通信経路とも呼ぶ)を介してデータ通信可能に接続され、通信路230を介してシリアル通信によってデータを送受信し合う。
【0104】
送信装置22は、UART機能部221を有する制御部220を含む。受信装置21は、UART機能部211、IO信号機能部212、タイマ機能部213、割込機能部214を有する制御部210を含む。なお、送信装置22の制御部220に、受信装置21のIO信号機能部212、タイマ機能部213および割込機能部214と同様の機能を追加し、双方向でシリアルデータを送受信するように構成してもよい。
【0105】
UART機能部211およびUART機能部221は、第1の実施形態のビット誤り検知部11の機能を有する。また、IO信号機能部212、タイマ機能部213および割込機能部214のそれぞれは、第1の実施形態の信号レベル検出部12、タイマ14および割り込み部15のそれぞれに対応する機能を有する。なお、第1の実施形態のビット誤り訂正部13の機能は、制御部210や割込機能部214などに追加すればよい。
【0106】
送信装置22のUART機能部221は、UART仕様によってシリアル通信を行う機能を有する。UART機能部221は、送信機能を利用してシリアルデータを送信する。
【0107】
受信装置21は、送信装置22から送信されたシリアルデータを受信し、受信したシリアルデータをビット誤り検知部11および信号レベル検出部12に入力とする。
【0108】
受信装置21のUART機能部221は、UART仕様によってシリアル通信を行う機能を有する。UART機能部221は、受信機能を利用してシリアルデータを受信する。
【0109】
また、受信装置21のUART機能部221は、受信したシリアルデータのパリティチェックを行なう。受信装置21は、受信したシリアルデータにパリティエラーが発生していない場合、受信したシリアルデータをそのまま受信データとして取得する。一方、受信装置21は、受信したシリアルデータにパリティエラーが発生していた場合、規定の処理手順によってエラー訂正を行ない、正しいデータを取得する。
【0110】
IO信号機能部212は、汎用I/Oポートの機能を有し、入力信号の信号レベルを検出する。
【0111】
タイマ機能部213は、時間計測する機能を有し、入力データの1ビット送信期間ごとに割り込み(タイマ割り込み)を発生させる。
【0112】
割込機能部214は、IO信号機能部212への入力信号のレベル変動を検出した際に割り込み(エッジ検出割り込み)を発生させる。
【0113】
図11には、送信側と受信側とが1対1かつ片方向のシリアル通信を行う構成を示しているが、本実施形態の通信システムは、各構成要素を増設することにより、1対多や多対多かつ双方向の通信システムに拡張することが可能である。
【0114】
以上のように、本実施形態によれば、送信装置22からシリアル通信によって送信した通信データに発生したビット誤りを、受信装置21において訂正する通信システム20を構成できる。
【0115】
本実施形態に係るシリアル通信の誤り訂正方法によれば、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を提供することが可能になる。
【0116】
(ハードウェア)
ここで、本発明の実施形態に係る制御装置を実現するハードウェア構成について、図12のマイクロコンピュータ90を一例として挙げて説明する。なお、図12のマイクロコンピュータ90は、本発明の実施形態の制御装置の処理を実行するための構成例であって、本発明の範囲を限定するものではない。
【0117】
図12のように、マイクロコンピュータ90は、プロセッサ91、メモリ92、UART93、タイマ94、コンバータ95、汎用I/Oポート96を備える(RTC:Real-Time Clock)。プロセッサ91、メモリ92、UART93、タイマ94、コンバータ95および汎用I/Oポート96は、バス99を介して互いに接続される。
【0118】
プロセッサ91は、メモリ92に格納されたプログラムに従って、各種の演算やデータの読み書き、条件判断などといった処理を実行する。
【0119】
メモリ92は、プログラムが格納される領域を有する。例えば、メモリ92は、ROM(Read Only Memory)やRAM(Random Access Memory)として実現される。
【0120】
UART93は、非同期式のシリアル信号とパラレル信号の変換を行う。UART93を用いる通信では、通信速度やデータビット数、パリティビット、ストップビートに関する設定が行われる。UART93は、パリティビットを用いて受信したデータのエラー判定を行う。
【0121】
タイマ94は、時間を測定し、一定間隔で割り込みを発生する。
【0122】
コンバータ95は、アナログの入力信号をデジタル値に変換するA/Dコンバータの機能と、デジタル値をアナログの出力信号に変換するD/Aコンバータの機能とをまとめた構成である。なお、A/Dコンバータの機能と、D/Aコンバータの機能とは、別の構成としてもよい。
【0123】
汎用I/Oポート96は、デジタル信号の入出力に用いられる入出力ポートである。例えば、汎用I/Oポートは、GPIO(General Purpose Input/Output)として実現される。汎用I/Oポート96は、プロセッサと外部の装置との間でデータを授受し合うために、プログラムで扱うデジタル値と信号レベルの変換を相互に行う。
【0124】
以上が、本発明の実施形態に係る制御装置を可能とするためのハードウェア構成の一例である。なお、図12のハードウェア構成は、本発明の実施形態に係る制御装置の演算処理を実行するためのハードウェア構成の一例であって、本発明の範囲を限定するものではない。また、本発明の実施形態に係る制御装置に関する処理をコンピュータに実行させるプログラムも本発明の範囲に含まれる。さらに、本発明の実施形態に係るプログラムを記録したプログラム記録媒体も本発明の範囲に含まれる。
【0125】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【0126】
本発明の実施形態に係るシリアル通信の誤り訂正方法は、シリアル通信を利用したIT(Information Technology)機器やネットワーク等に利用できる。
【符号の説明】
【0127】
10 制御装置
11 ビット誤り検知部
12 信号レベル検出部
13 ビット誤り訂正部
14 タイマ
15 割り込み部
20 通信システム
22 送信装置
21 受信装置
90 マイクロコンピュータ
91 プロセッサ
92 メモリ
93 UART
94 タイマ
95 コンバータ
96 汎用I/Oポート
210 制御部
211 UART機能部
212 IO信号機能部
213 タイマ機能部
214 割込機能部
220 制御部
221 UART機能部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12