(58)【調査した分野】(Int.Cl.,DB名)
請求項1乃至6のいずれか一項に記載の制御装置を含み、前記ビット誤り検知手段の機能をUART(Universal Asynchronous Receiver/Transmitter)回路によって実現し、前記信号レベル検出手段の機能を汎用入出力ポートによって実現し、シリアル通信経路を介して前記通信データを受信する第1の装置。
【発明を実施するための形態】
【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】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。