(57)【要約】【課題】データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を実現する制御装置を提供する。【解決手段】シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知するビット誤り検知手段と、通信データの信号レベルのエッジを検出する信号レベル検出手段と、通信データの１ビット送信期間ごとに割り込み信号を発生させるタイマと、信号レベルの変化を検出して割り込み信号を発生する割り込み発生手段と、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定し、特定した誤りビットを訂正するビット誤り訂正手段とを備える制御装置とする。【選択図】      図１
2019024159.tif 000002
【特許請求の範囲】
【請求項１】
シリアル通信の通信データに付加されたパリティビットに基づいて前記通信データにおけるビット誤りを検知するビット誤り検知手段と、
前記通信データの信号レベルのエッジを検出する信号レベル検出手段と、
前記通信データの１ビット送信期間ごとに割り込み信号を発生させるタイマと、
前記信号レベルの変化を検出して割り込み信号を発生する割り込み発生手段と、
前記ビット誤りの発生パターンに応じた論理処理によって前記通信データにおける誤りビットを特定し、特定した前記誤りビットを訂正するビット誤り訂正手段とを備える制御装置。
【請求項２】
前記タイマは、
前記通信データを構成する１ビット分のデータビットの転送時間ごとにタイマ割り込みを発生し、
前記割り込み手段は、
前記信号レベル検出手段によって前記信号レベルの切り替わりエッジが検出された際にエッジ検出割り込みを発生し、
前記ビット誤り訂正手段は、
前記ビット誤り検知手段によって前記ビット誤りが検知された際に、前記通信データを構成する前記データビットごとの前記転送時間における前記エッジ検出割り込みの回数に基づいて前記誤りビットを特定する請求項１に記載の制御装置。
【請求項３】
前記ビット誤り訂正手段は、
前記ビット誤り検知手段によって前記ビット誤りが検知された際に、複数の前記データビットによって形成される前記ビットパターンの前記信号レベルの遷移と、前記ビットパターンを構成するいずれかの前記データビットの前記転送時間における前記エッジ検出割り込みの回数に基づいて前記誤りビットを特定する請求項２に記載の制御装置。
【請求項４】
前記ビット誤り訂正手段は、
複数の前記データビットによって形成される前記ビットパターンの前記信号レベルの遷移と、前記ビットパターンを構成するいずれかの前記データビットの前記転送時間における前記エッジ検出割り込みの回数とを対応させた判定テーブルを参照して前記誤りビットを特定する請求項３に記載の制御装置。
【請求項５】
前記ビット誤り訂正手段は、
２ビット分の前記データビットによって形成される前記ビットパターンに関して、
前記信号レベルが変化し、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が０回の場合と、
前記信号レベルが変化せず、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が１回の場合とにおいて、１ビット目の前記データビットに前記ビット誤りがあると特定し、前記ビット誤りがあると特定した１ビット目の前記データビットの信号レベルを訂正する請求項３または４に記載の制御装置。
【請求項６】
前記ビット誤り訂正手段は、
３ビット分の前記データビットによって形成される前記ビットパターンの前記信号レベルが、
ローレベル、ローレベル、ローレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が２回の場合と、
ハイレベル、ローレベル、ローレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が１回の場合と、
ローレベル、ローレベル、ハイレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が２回の場合と、
ハイレベル、ローレベル、ハイレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が１回の場合と、
ハイレベル、ハイレベル、ハイレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が２回の場合と、
ローレベル、ハイレベル、ハイレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が１回の場合と、
ハイレベル、ハイレベル、ローレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が２回の場合と、
ローレベル、ハイレベル、ローレベルと遷移する際に、２ビット目の前記データビットの前記転送時間における前記エッジ検出割り込みの回数が１回の場合とにおいて、２ビット目の前記データビットに前記ビット誤りがあると特定し、前記ビット誤りがあると特定した２ビット目の前記データビットの信号レベルを訂正する請求項３または４に記載の制御装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の制御装置を含み、前記ビット誤り検知手段の機能をＵＡＲＴ（Universal Asynchronous Receiver/Transmitter）回路によって実現し、前記信号レベル検出手段の機能を汎用入出力ポートによって実現し、シリアル通信経路を介して前記通信データを受信する第１の装置。
【請求項８】
請求項７に記載の第１の装置と、
少なくとも前記ＵＡＲＴ回路を含み、前記シリアル通信経路を介して前記第１の装置に接続される第２の装置とを備える通信システム。
【請求項９】
シリアル通信の通信データに付加されたパリティビットに基づいて前記通信データにおけるビット誤りを検知し、
前記通信データの信号レベルのエッジを検出し、
前記通信データの１ビット送信期間ごとに割り込み信号を発生させ、
前記信号レベルの変化を検出して割り込み信号を発生し、
前記ビット誤りの発生パターンに応じた論理処理によって前記通信データにおける誤りビットを特定し、
特定した前記誤りビットを訂正する制御方法。
【請求項１０】
シリアル通信の通信データに付加されたパリティビットに基づいて前記通信データにおけるビット誤りを検知する処理と、
前記通信データの信号レベルのエッジを検出する処理と、
前記通信データの１ビット送信期間ごとに割り込み信号を発生する処理と、
前記信号レベルの変化を検出して割り込み信号を発生する処理と、
前記ビット誤りの発生パターンに応じた論理処理によって前記通信データにおける誤りビットを特定する処理と、
特定した前記誤りビットを訂正する処理とをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル通信における通信データのビット誤りを訂正する制御装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
一般的なシリアル通信においては、パリティビットを用いることによって、通信データの誤り検出を行うことができる。しかし、パリティビットを用いた誤り検出では、通信データのビット誤りを検出できるものの、ビット誤りが発生したデータビットを特定することはできない。そのため、パリティビットを用いた誤り検出には、データ訂正ができないという問題点があった。また、パリティビットを用いた誤り検出では、ビット列中に２ビット以上の誤りを検出できないという問題点があった。
【０００３】
特許文献１には、シリアル通信において、誤ってライトされたアドレスを特定する誤り訂正装置について開示されている。特許文献１の装置では、誤ったアドレスにライトされる現象が発生する可能性の高い「１」が「０」に化けてしまう１ビットエラーを仮定し、誤ってライトされてしまったアドレスを推測する。特許文献１の装置によれば、１ビットエラーと、２ビットエラーとを想定し、誤ってライトされたアドレスエラーを２ビットまで訂正できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−７６１５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の装置によれば、誤ったアドレスにライトされたデータをエラー発生前の値に訂正できる。しかしながら、特許文献１の装置には、誤ったアドレスにライトされたデータをエラー発生前の値に訂正することはできるものの、通信データを再転送する必要があるという問題点があった。
【０００６】
また、ビット訂正用の冗長データや符号を通信データに予め付加することによって、通信データを再転送せずに誤りを訂正することもできる。しかしながら、通信データに冗長データや符号を付加すると、通信データのサイズが大きくなるという問題点があった。
【０００７】
本発明の目的は、上述した課題を解決するために、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を実現する制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の制御装置は、シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知するビット誤り検知手段と、通信データの信号レベルのエッジを検出する信号レベル検出手段と、通信データの１ビット送信期間ごとに割り込み信号を発生させるタイマと、信号レベルの変化を検出して割り込み信号を発生する割り込み発生手段と、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定し、特定した誤りビットを訂正するビット誤り訂正手段とを備える。
【０００９】
本発明の制御方法においては、シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知し、通信データの信号レベルのエッジを検出し、通信データの１ビット送信期間ごとに割り込み信号を発生させ、信号レベルの変化を検出して割り込み信号を発生し、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定し、特定した誤りビットを訂正する。
【００１０】
本発明のプログラムは、シリアル通信の通信データに付加されたパリティビットに基づいて通信データにおけるビット誤りを検知する処理と、通信データの信号レベルのエッジを検出する処理と、通信データの１ビット送信期間ごとに割り込み信号を発生する処理と、信号レベルの変化を検出して割り込み信号を発生する処理と、ビット誤りの発生パターンに応じた論理処理によって通信データにおける誤りビットを特定する処理と、特定した誤りビットを訂正する処理とをコンピュータに実行させる。
【発明の効果】
【００１１】
本発明によれば、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を実現する制御装置を提供することが可能になる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態に係る制御装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る制御装置の処理対象データを構成するデータビットにノイズが発生した例を示すタイムチャートである。
【図３】本発明の第１の実施形態に係る制御装置の処理対象データを構成するデータビットにノイズが発生した例を示すタイムチャートである。
【図４】本発明の第１の実施形態に係る制御装置の処理対象データを構成するデータビットにノイズが発生した例を示すタイムチャートである。
【図５】本発明の第１の実施形態に係る制御装置の処理対象データを構成するパリティビットにノイズが発生した例を示すタイムチャートである。
【図６】本発明の第１の実施形態に係る制御装置の処理対象データのビットパターンの読み取り値と割り込み回数をノイズの有無で比較するためのテーブルである。
【図７】本発明の第１の実施形態に係る制御装置の全体的な動作について説明するためのフローチャートである。
【図８】本発明の第１の実施形態に係る制御装置の受信割り込み処理について説明するためのフローチャートである。
【図９】本発明の第１の実施形態に係る制御装置のエッジ検出割り込み処理について説明するためのフローチャートである。
【図１０】本発明の第１の実施形態に係る制御装置のタイマ割り込み処理について説明するためのフローチャートである。
【図１１】本発明の第２の実施形態に係る通信システムの構成を示すブロック図である。
【図１２】本発明の実施形態に係る制御装置を実現するためのハードウェア構成の一例である。
【発明を実施するための形態】
【００１３】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きなどを限定するものではない。
【００１４】
（第１の実施形態）
まず、本発明の第１の実施形態に係る制御装置について図面を参照しながら説明する。本実施形態の制御装置は、ＵＡＲＴ（Universal Asynchronous Receiver/Transmitter）を用いたシリアル通信において、通信データに含まれるビット誤りを検出し、検出したビット誤りを訂正する。
【００１５】
（構成）
図１は、本実施形態の制御装置１０の構成を示すブロック図である。図１のように、本実施形態の制御装置１０は、ビット誤り検知部１１、信号レベル検出部１２、ビット誤り訂正部１３、タイマ１４、割り込み部１５を備える。制御装置１０の各構成要素は、図示しない制御部によって制御される。
【００１６】
制御装置１０は、シリアル信号で送信された波形を入力部（図示しない）から入力とする。制御装置１０は、入力した波形をデジタルデータに変換し、ビット誤り検知部１１および信号レベル検出部１２に振り分ける。
【００１７】
ビット誤り検知部１１（ビット誤り検知手段とも呼ぶ）は、ＵＡＲＴ仕様でシリアル信号として送信された通信データを受信する。ビット誤り検知部１１は、通信データに付加されたパリティビットに基づいてビット誤りを検知する。例えば、ビット誤り検知部１１は、ＵＡＲＴ回路の機能によって実現できる。
【００１８】
信号レベル検出部１２（信号レベル検出手段とも呼ぶ）は、入力した処理対象データの信号レベル（Ｈｉｇｈ／Ｌｏｗ）を検出する。信号レベル検出部１２は、検出した信号レベルをビット誤り訂正部１３に出力する。信号レベル検出部１２は、汎用入出力（Ｉ／Ｏ：Input / Output）ポートの機能によって実現できる。
【００１９】
例えば、信号レベル検出部１２は、汎用入出力ポートの入出力設定を有する。信号レベル検出部１２は、入出力設定が入力ピン設定であれば、入力信号の信号レベルを検出する。また、信号レベル検出部１２は、入出力設定が出力ピン設定であれば、入力信号の信号レベルを出力する。本実施形態では、入出力設定を入力ピン設定に設定して入力信号レベルを検出することに利用する。
【００２０】
ビット誤り訂正部１３（ビット誤り訂正手段とも呼ぶ）は、処理対象データの信号レベルをビット誤り検知部１１から取得する。ビット誤り訂正部１３は、ビット誤りの発生パターンに応じた論理処理によって、処理対象データの誤りビットを特定し、特定した誤りビットを訂正する。ビット誤り訂正部１３は、データを構成する複数のデータビットが形成するビットパターンと、ビット誤り検知部１１への入力信号のレベル変動が検出された際に割り込み（エッジ検出割り込み）の回数との関係に基づいて誤りビットを特定する。
【００２１】
タイマ１４は、時間計測する機能を有する。タイマ１４は、シリアル信号の１ビット送信期間（所定間隔）ごとに割り込み（タイマ割り込み）を発生させて割り込み処理を実行する。
【００２２】
割り込み部１５（割り込み手段とも呼ぶ）は、イベント発生に起因する信号レベルの変化を検知した際に割り込みを発生させて割り込み処理を実行する。言い換えると、割り込み部１５は、ビット誤り検知部１１への入力信号のレベル変動が検出された際に割り込み（エッジ検出割り込み）を発生させて割り込み処理を実行する。例えば、割り込み部１５は、入力信号のＨｉｇｈ−Ｌｏｗ切り替わりエッジ検出によってレベル変動を検出する。また、割り込み部１５は、タイマ１４が設定した計測時間が経過したら割り込みを発生させて割り込み処理を実行する。
【００２３】
例えば、割り込み部１５は、ビット誤り検知部１１や信号レベル検出部１２への入力信号の信号レベルの変化や、タイマ１４が計測する時間の経過などのイベント発生時に、それぞれの割り込みベクタテーブルを参照して対応する割り込み処理を実行する。
【００２４】
以上が、本実施形態の制御装置１０の構成についての説明である。
【００２５】
〔検出方法〕
次に、本実施形態の制御装置１０が、通信データに発生するビット誤りを検出し、ビット誤りが発生したデータビットを特定する方法について具体的な例を挙げて説明する。以下においては、制御装置１０が、スタートビット（Ｌ）、８ビットのデータビット、１ビットのパリティビット（偶数）、ストップビット（Ｈｉｇｈ）によって構成される信号を受信する例について説明する。なお、以下において、信号レベルは、Ｈｉｇｈ（ハイレベルとも呼ぶ）をＨ、Ｌｏｗ（ローレベルとも呼ぶ）をＬと記載する。
【００２６】
図２〜図５は、通信データのビットパターンや割り込みのパターンを対応させるタイミングチャートである。なお、図２〜図５の信号パターンは、本実施形態の制御装置１０の処理対象データを構成するビットパターンの一例であり、全てのパターンを示すわけではない。
【００２７】
図２〜図５において、最上段のタイミングチャートは、通信データとして送信された送信信号のビットパターンである。２段目のタイミングチャートは、ビット誤り検知部１１によって受信される受信信号のビットパターンである。３段目のタイミングチャートは、信号レベル検出部１２に入力される信号のビットパターンである。４段目のタイミングチャートは、信号レベル検出部１２に入力される入力信号の信号レベルの変動に起因して割り込み部１５が発生させる割り込み（エッジ割り込み）のパターンである。５段目のタイミングチャートは、タイマ１４が発生させる割り込み（タイマ割り込み）のパターンである。最下段は、タイマ割り込み間隔ごとのエッジ割り込み発生回数である。図２〜図５には、受信信号（２段目）および入力信号（３段目）のいずれかのビットにノイズに起因するビット誤りが発生する例を示す。
【００２８】
図２は、信号レベルがＬ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈと遷移する８ビットのデータ（データ値０ｘ５５）のうち４番目のデータビット（Ｈ）にノイズが発生する例である。なお、図２のデータは、信号レベルがＨのデータビットを４個（偶数個）含むため、パリティビット（偶数）はＬである。
【００２９】
図２の例では、４番目のデータビット（Ｈ）のノイズに起因してエッジ割り込みが発生する。その結果、４番目のデータビット（Ｈ）の始まりと終わりに対応するタイマ割り込み間のエッジ割り込み発生回数が２回となる。正常な受信信号であれば、４番目のデータビット（Ｈ）の前後でエッジ割り込みが発生するため、対応するタイマ割り込み間のエッジ割り込み発生回数は１回である。そのため、制御装置１０は、エッジ割り込み発生回数が２回となる４番目のデータビットにビット誤りがあると特定する。
【００３０】
図３は、信号レベルがＬ→Ｈ→Ｈ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈと遷移する８ビットのデータ（データ値０ｘ７５）のうち４番目のデータビット（Ｈ）にノイズが発生する例である。なお、図３のデータは、信号レベルがＨのデータビットを５個（奇数個）含むため、パリティビット（偶数）はＨである。
【００３１】
図３の例では、４番目のデータビット（Ｈ）のノイズに起因してエッジ割り込みが発生する。その結果、４番目のデータビット（Ｈ）の始まりと終わりに対応するタイマ割り込み間のエッジ割り込み発生回数が１回となる。正常な受信信号であれば、４番目のデータビット（Ｈ）の後のみでエッジ割り込みが発生するため、対応するタイマ割り込み間のエッジ割り込み発生回数は０回である。そのため、制御装置１０は、エッジ割り込み発生回数が１回となる４番目のデータビットにビット誤りがあると特定する。
【００３２】
図４は、信号レベルがＨ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈと遷移する８ビットのデータ（データ値０ｘＤ５）のうち、ストップビット直後の１番目のデータビット（Ｈ）にノイズが発生する例である。なお、図４のデータは、信号レベルがＨのデータビットを５個（奇数個）含むため、パリティビット（偶数）はＨである。
【００３３】
図４の例では、スタートビット直後の１番目のデータビット（Ｈ）のノイズに起因してエッジ割り込みが発生する。その結果、１番目のデータビット（Ｈ）の終わりに対応するタイマ割り込みまでのエッジ割り込み発生回数が２回となる。正常な受信信号であれば、１番目のデータビット（Ｈ）の前のみでエッジ割り込みが発生するため、対応するタイマ割り込みまでのエッジ割り込み発生回数は１回である。そのため、制御装置１０は、エッジ割り込み発生回数が２回となる１番目のデータビットにビット誤りがあると特定する。
【００３４】
図５は、信号レベルがＬ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈ→Ｌ→Ｈと遷移する８ビットのデータ（データ値０ｘ５５）に付加されるパリティビット（Ｌ）にノイズが発生する例である。なお、図５のデータは、信号レベルがＨのデータビットを４個（偶数個）含むため、パリティビット（偶数）はＬである。
【００３５】
図５の例では、データに付加されるパリティビット（Ｌ）のノイズに起因してエッジ割り込みが発生する。その結果、パリティビット（Ｌ）の始まりと終わりに対応するタイマ割り込み間のエッジ割り込み発生回数が２回となる。正常な受信信号であれば、パリティビット（Ｌ）の前後でエッジ割り込みが発生するため、対応するタイマ割り込み間のエッジ割り込み発生回数は１回である。そのため、制御装置１０は、エッジ割り込み発生回数が２回となるパリティビットにビット誤りがあると特定する。
【００３６】
以上のように、データを構成するデータビットのいずれかにビット誤りが発生すると、ビット誤りが発生したデータビットに対応するタイマ割り込み間のエッジ割り込み回数が正常時とは異なる値になる。以下において、ビット誤りが発生したデータビットの転送時間におけるエッジ割り込み発生回数に関する規則性について図面を参照しながら説明する。
【００３７】
〔判定テーブル〕
図６は、データを構成する３ビット分のビットパターンの波形に関して、その波形の読み取り値と割り込み回数とを対応させた判定テーブル１３０である。なお、図６の判定テーブル１３０は、３ビット分のビットパターンの波形に関して、ビット誤りがない場合（正常）と、２ビット目のデータビットにビット誤りがある場合とを比較するためのテーブルである。例えば、判定テーブル１３０は、制御装置１０の内部の図示しない記憶手段に記憶させておけばよい。
【００３８】
３ビット分のビットパターンには、判定テーブル１３０にまとめたように、２の３乗通り（８通り）のパターンがある。判定テーブル１３０の読み取り値は、各データビットの信号レベル（１ビット目、２ビット目、３ビット目の順）である。判定テーブル１３０の割り込み回数は、各データビットの転送時間におけるエッジ割り込み発生回数（１ビット目、２ビット目、３ビット目の順）である。なお、ノイズによる信号レベル変動に起因する割り込みは、１回とカウントする。また、割り込み回数欄の「ｘ」は、１ビット目のデータビットの前のデータビットの信号レベルによって異なり、信号レベルが同じ場合は０、異なる場合は１である。
【００３９】
ビットパターンＡは、信号レベルがＬ→Ｈ→Ｌと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→１→１となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＬ→Ｌ→Ｌとなり、各ビットにおける割り込み回数はｘ→２→１となる。
【００４０】
ビットパターンＢは、信号レベルがＨ→Ｈ→Ｌと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→０→１となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＨ→Ｌ→Ｌとなり、各ビットにおける割り込み回数はｘ→１→１となる。
【００４１】
ビットパターンＣは、信号レベルがＬ→Ｈ→Ｈと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→１→０となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＬ→Ｌ→Ｈとなり、各ビットにおける割り込み回数はｘ→２→０となる。
【００４２】
ビットパターンＤは、信号レベルがＨ→Ｈ→Ｈと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→０→０となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＨ→Ｌ→Ｈとなり、各ビットにおける割り込み回数はｘ→１→０となる。
【００４３】
ビットパターンＥは、信号レベルがＨ→Ｌ→Ｈと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→１→１となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＨ→Ｈ→Ｈとなり、各ビットにおける割り込み回数はｘ→２→１となる。
【００４４】
ビットパターンＦは、信号レベルがＬ→Ｌ→Ｈと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→０→１となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＬ→Ｈ→Ｈとなり、各ビットにおける割り込み回数はｘ→１→１となる。
【００４５】
ビットパターンＧは、信号レベルがＨ→Ｌ→Ｌと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→１→０となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＨ→Ｈ→Ｌとなり、各ビットにおける割り込み回数はｘ→２→０となる。
【００４６】
ビットパターンＨは、信号レベルがＬ→Ｌ→Ｌと遷移するパターンである。受信信号にビット誤りが発生していない場合、各ビットにおける割り込み回数はｘ→０→０となる。それに対し、２ビット目のデータビットにビット誤りが発生した場合、読み取り値はＬ→Ｈ→Ｌとなり、各ビットにおける割り込み回数はｘ→１→０となる。
【００４７】
以上が、図６の判定テーブル１３０にまとめたビットパターンＡ〜Ｈにおいてビット誤りが発生した場合の読み取り値とエッジ割り込み発生回数との関係についての説明である。
【００４８】
図６の判定テーブル１３０を踏まえると、連続する２ビット分のビットパターンの信号レベルの遷移において、通信データにノイズが含まれない場合、ビットパターンの読み取り値とエッジ割り込み発生回数との関係は、以下のような組み合わせになる。なお、以下の２ビット分のビットパターンの信号レベルの遷移に関しては、図６の３ビット分のビットパターンのうち２ビット目を１ビット目、３ビット目を２ビット目に読み替えて説明する。
【００４９】
読み取り値がＨ→Ｌと遷移するパターン（ビットパターンＡ、Ｂ）であれば、２ビット目のビットパターンの割り込み回数は１回である。
【００５０】
読み取り値がＨ→Ｈと遷移するパターン（ビットパターンＣ、Ｄ）であれば、２ビット目のビットパターンの割り込み回数は０回である。
【００５１】
読み取り値がＬ→Ｈと遷移するパターン（ビットパターンＥ、Ｆ）であれば、２ビット目のビットパターンの割り込み回数は１回である。
【００５２】
読み取り値がＬ→Ｌと遷移するパターン（ビットパターンＧ、Ｈ）であれば、２ビット目のビットパターンの割り込み回数は０回である。
【００５３】
すなわち、通信データがノイズありで受信された場合、２ビットのビットパターンから以下のように誤りビットが検出される。
【００５４】
読み取り値がＬ→Ｌであり、２ビット目のデータビットの転送時間におけるエッジ割り込み回数が１回であれば、そのビットパターンの１ビット目のデータビットにはノイズが含まれる（ノイズありビットパターンＡ、Ｂ）。なぜならば、正常なビットパターンであれば、読み取り値がＬ→Ｌである場合、割り込み回数は０回になるからである（ノイズなしビットパターンＧ、Ｈ）。すなわち、読み取り値の遷移がＬ→Ｌであり、２ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が１回の場合、制御装置１０は、１ビット目のデータビットの信号レベルをＬからＨに訂正する。
【００５５】
読み取り値がＬ→Ｈであり、２ビット目のデータビットの転送時間におけるエッジ割り込み回数が０回であれば、そのビットパターンの１ビット目のデータビットにはノイズが含まれる（ノイズありビットパターンＣ、Ｄ）。なぜならば、正常なビットパターンであれば、読み取り値がＬ→Ｈである場合、割り込み回数は１回になるからである（ノイズなしビットパターンＥ、Ｆ）。すなわち、読み取り値の遷移がＬ→Ｈであり、２ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が０回の場合、制御装置１０は、１ビット目のデータビットの信号レベルをＬからＨに訂正する。
【００５６】
読み取り値がＨ→Ｈであり、２ビット目のデータビットの転送時間におけるエッジ割り込み回数が１回であれば、そのビットパターンの１ビット目のデータビットにはノイズが含まれる（ノイズありビットパターンＥ、Ｆ）。なぜならば、正常なビットパターンであれば、読み取り値がＨ→Ｈである場合、割り込み回数は０回になるからである（ノイズなしビットパターンＣ、Ｄ）。すなわち、読み取り値の遷移がＨ→Ｈであり、２ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が１回の場合、制御装置１０は、１ビット目のデータビットの信号レベルをＨからＬに訂正する。
【００５７】
読み取り値がＨ→Ｌであり、２ビット目のデータビットの転送時間におけるエッジ割り込み回数が０回であれば、そのビットパターンの１ビット目のデータビットにはノイズが含まれる（ノイズありビットパターンＧ、Ｈ）。なぜならば、正常なビットパターンであれば、読み取り値がＨ→Ｌである場合、割り込み回数は１回になるからである（ノイズなしビットパターンＡ、Ｂ）。すなわち、読み取り値の遷移がＨ→Ｌであり、２ビット目のデータビットの転送時間におけるエッジ割り込み発生回数が０回の場合、制御装置１０は、１ビット目のデータビットの信号レベルをＨからＬに訂正する。
【００５８】
読み取り値がＬ→Ｌの場合に割り込み回数が１回であれば、そのビットパターンの２ビット目には誤りが含まれる。読み取り値がＬ→Ｌであるが、割り込み回数１回の場合、実際には先のＬがＨである。
【００５９】
すなわち、２ビット分の前記データビットによって形成されるビットパターンの信号レベルの遷移における誤りビットは、以下の判定基準によって特定される。
【００６０】
第１は、信号レベルが変化し、２ビット目のデータビットの転送時間におけるエッジ検出割り込み回数が０回の場合である。
【００６１】
第２は、信号レベルが変化せず、２ビット目のデータビットの転送時間におけるエッジ検出割り込み回数が１回の場合である。
【００６２】
以上のように、判定テーブル１３０に示すように、ビットパターンのレベル変化（Ｈ／Ｌ）と割り込み回数との関係に基づいて、ビット誤りが発生したデータビットを特定し、ビット誤りが発生したデータビットの値を訂正できる。
【００６３】
（動作）
次に、本実施形態の制御装置１０の動作について図面を参照しながら説明する。
【００６４】
図７は、制御装置１０の全体的な動作に関するフローチャートである。図７のフローチャートに関しては、制御装置１０を動作の主体として説明する。
【００６５】
図７において、まず、制御装置１０は、ビット誤り検知部１１（ＵＡＲＴ回路）へのシリアル通信のデータ受信割り込み設定（割り込み許可）を行う（ステップＳ１１）。
【００６６】
次に、制御装置１０は、信号レベル検出部１２（Ｉ／Ｏ入力端子）への入力信号のエッジ検出割り込み設定（割り込み許可）を行う（ステップＳ１２）。
【００６７】
ここで、制御装置１０は、データを受信すると（ステップＳ１３でＹｅｓ）、受信したデータを通信用バッファに保持し、受信割り込み処理やエッジ検出割り込み処理、タイマ割り込み処理などの処理を実行する（ステップＳ１４）。一方、制御装置１０は、データを受信してない場合（ステップＳ１３でＮｏ）、データを受信するまで待機する。
【００６８】
ステップＳ１４の処理の後にデータの受信を継続する場合（ステップＳ１５でＹｅｓ）、ステップＳ１３に戻る。一方、ステップＳ１４の処理の後にデータの受信を継続しない場合（ステップＳ１５でＮｏ）は図７のフローチャートに沿った処理を終了とする。
【００６９】
以上が、図７のフローチャートについての説明である。続いて、図７のフローチャートのステップＳ１４の処理について、図８〜図１０を参照しながら説明する。
【００７０】
〔受信割り込み処理〕
図８は、シリアル通信におけるデータ受信時の割り込み処理（受信割り込み処理）に関するフローチャートである。シリアル通信におけるデータ受信時の割り込み処理は、シリアル通信でデータを１バイト受信した際に割り込みが発生して実行される。図８のフローチャートに関しては、制御装置１０を動作の主体として説明する。
【００７１】
図８において、まず、制御装置１０は、受信したデータにパリティエラーが含まれるか否かを検証する（ステップＳ１１１）。
【００７２】
受信したデータにパリティエラーが含まれる場合（ステップＳ１１１でＹｅｓ）、制御装置１０は、エッジ割り込み回数の取得を試みる（ステップＳ１１２）。一方、受信したデータにパリティエラーが含まれない場合（ステップＳ１１１でＹｅｓ）、制御装置１０は、通信用バッファの保持している受信データを取得する（ステップＳ１１３）。なお、ステップＳ１１３の後はステップＳ１１８に進む。
【００７３】
制御装置１０は、ステップＳ１１２においてエッジ割り込み回数を取得すると（ステップＳ１１２でＹｅｓ）、タイマ割り込みを禁止（停止）する（ステップＳ１１４）。一方、制御装置１０は、エッジ割り込み回数を取得していない場合（ステップＳ１１２でＮｏ）、エッジ割り込み回数の取得を試みる。
【００７４】
制御装置１０は、ステップＳ１１４においてタイマ割り込みを禁止すると、受信データに含まれるビットパターンの信号レベルと、エッジ割り込み回数とを確認し、誤りビットを特定する（ステップＳ１１５）。
【００７５】
次に、制御装置１０は、ビット誤りを訂正する（ステップＳ１１６）。制御装置１０は、ビット誤りを訂正したデータを取得する。
【００７６】
そして、制御装置１０は、エッジ割り込み発生回数データをクリアする（ステップＳ１１７）。
【００７７】
以上が、図８のフローチャートについての説明である。続いて、図９のフローチャートについて説明する。
【００７８】
〔エッジ検出割り込み処理〕
図９は、エッジ検出割り込み処理に関するフローチャートである。エッジ検出割り込み処理は、受信信号（Ｉ／Ｏ入力信号）のレベル変化時に割り込みが発生して実行される。図９のフローチャートに関しては、制御装置１０を動作の主体として説明する。
【００７９】
図９において、まず、制御装置１０は、エッジ検出割り込みをマスク（禁止）する（ステップＳ１２１）。
【００８０】
データビットがスタートビットの場合（ステップＳ１２２でＹｅｓ）、制御装置１０は、タイム割り込みを許可する（ステップＳ１２３）。ステップＳ１２３の後はステップＳ１２６に進む。
【００８１】
一方、データビットがスタートビットではない場合（ステップＳ１２２でＮｏ）、制御装置１０は、入力データの信号レベルを取得する（ステップＳ１２４）。
【００８２】
次に、制御装置１０は、エッジ割り込み発生回数をカウントアップする（ステップＳ１２５）。
【００８３】
そして、制御装置１０は、エッジ検出割り込みを許可する（ステップＳ１２６）。
【００８４】
以上が、図９のフローチャートについての説明である。続いて、図１０のフローチャートについて説明する。
【００８５】
〔タイマ割り込み処理〕
図１０は、タイマ割り込み処理に関するフローチャートである。タイム割り込み処理は、１ビットの受信時間ごとに実行される。
【００８６】
図１０において、まず、制御装置１０は、エッジ割り込み発生回数を保存する（ステップ１３１）。
【００８７】
以上が、図１０のフローチャートについての説明である。
【００８８】
ここで、一般的なシリアル通信におけるパリティビットを用いた誤り検出の問題点について説明する。
【００８９】
第１の問題点は、パリティビットを用いた一般的な誤り検出では、どのデータビットにビット誤りがあるのかを特定できないことである。
【００９０】
シリアル通信では、複数ビットからなる１つのデータに偶数（奇数）パリティを１ビット付与し、パリティビットも含めて、信号レベルがＨのデータビットの数が偶数個（奇数個）となるようにしてデータを送信する。そのため、パリティビットの信号レベルが期待値と異なっている場合、ビット誤りが発生したことは確認できる。しかしながら、パリティビットを含めた複数個のデータビットのうちいずれのデータビットにビット誤りが発生したのかまでは特定できない。
【００９１】
第２の問題点は、ビット誤りを訂正するためには、通信データ（パケット）サイズを大きくする必要があることである。
【００９２】
パリティビットだけではビット誤りが発生したデータビットを特定できない。そのため、ビット誤りが発生したデータビットを特定するためには、水平パリティやハミング符号を付加したり、データを冗長化させたりする必要があり、パケットサイズが増加してしまう。また、ビット誤りの検知によりデータの再送を要求する場合には、送信側に対して再送要求を出すパケットが必要となるとともに、同じサイズのデータが再び通信路を経由して取得する必要がある。
【００９３】
次に、上述の一般的なシリアル通信におけるパリティビットを用いた誤り検出における問題点を踏まえて、本実施形態の効果について説明する。
【００９４】
本実施形態では、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）などのシリアル通信が可能なシステムにおいて、以下の機能を利用する。
【００９５】
第１の機能は、通信信号にパリティビットを付加することでデータのビット誤りを検知するシリアル通信機能である。シリアル通信機能は、シリアル信号を受信し、受信したシリアル信号を数値データ化する機能である。
【００９６】
第２の機能は、入力信号の信号レベル（Ｈｉｇｈ／Ｌｏｗ）を認識できる入力端子における信号レベルの変化を検出して割り込みを発生する機能（割り込み処理実行機能）である。
【００９７】
第３の機能は、シリアル信号の１ビット送信期間ごとに割り込み（タイマ割り込み）を発生させるタイマ機能である。
【００９８】
本実施形態によれば、上述の３つの機能を利用しつつ、以下の効果が得られる。
【００９９】
第１の効果は、パリティエラー検知により、シリアル通信におけるビット誤りを訂正できることである。その理由は、データビットごとに信号レベル変化回数をカウントすることにより、ビット誤りが発生したデータビットを特定できるためである。
【０１００】
第２の効果は、ビット誤りが発生したデータビットの誤り訂正に要する通信データ（パケット）のサイズを抑えられることである。その理由は、パリティエラーによってビット誤りを検知した際に、通信中のデータビットごとの信号レベル変化回数から訂正するデータビットを特定するため、訂正のための符号を付加する必要がなく、データを再送する必要もないためである。
【０１０１】
以上のように、本実施形態によれば、通信データの信号レベルの変動回数を監視することによって、ビット誤りが発生したデータビットを特定・訂正できる。その結果、本実施形態の誤り訂正方法によれば、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を提供することが可能になる。
【０１０２】
（第２の実施形態）
次に、本発明の第２の実施形態に係る通信システムについて図面を参照しながら説明する。本実施形態の通信システムは、シリアル通信によってデータを送信する送信装置と、第１の実施形態の制御装置１０を含む受信装置とを備える。
【０１０３】
図１１は、本実施形態の通信システム２０の構成を示す概念図である。通信システム２０は、受信装置２１（第１の装置とも呼ぶ）と送信装置２２（第２の装置とも呼ぶ）とを備える。受信装置２１と送信装置２２とは、通信路２３０（シリアル通信経路とも呼ぶ）を介してデータ通信可能に接続され、通信路２３０を介してシリアル通信によってデータを送受信し合う。
【０１０４】
送信装置２２は、ＵＡＲＴ機能部２２１を有する制御部２２０を含む。受信装置２１は、ＵＡＲＴ機能部２１１、ＩＯ信号機能部２１２、タイマ機能部２１３、割込機能部２１４を有する制御部２１０を含む。なお、送信装置２２の制御部２２０に、受信装置２１のＩＯ信号機能部２１２、タイマ機能部２１３および割込機能部２１４と同様の機能を追加し、双方向でシリアルデータを送受信するように構成してもよい。
【０１０５】
ＵＡＲＴ機能部２１１およびＵＡＲＴ機能部２２１は、第１の実施形態のビット誤り検知部１１の機能を有する。また、ＩＯ信号機能部２１２、タイマ機能部２１３および割込機能部２１４のそれぞれは、第１の実施形態の信号レベル検出部１２、タイマ１４および割り込み部１５のそれぞれに対応する機能を有する。なお、第１の実施形態のビット誤り訂正部１３の機能は、制御部２１０や割込機能部２１４などに追加すればよい。
【０１０６】
送信装置２２のＵＡＲＴ機能部２２１は、ＵＡＲＴ仕様によってシリアル通信を行う機能を有する。ＵＡＲＴ機能部２２１は、送信機能を利用してシリアルデータを送信する。
【０１０７】
受信装置２１は、送信装置２２から送信されたシリアルデータを受信し、受信したシリアルデータをビット誤り検知部１１および信号レベル検出部１２に入力とする。
【０１０８】
受信装置２１のＵＡＲＴ機能部２２１は、ＵＡＲＴ仕様によってシリアル通信を行う機能を有する。ＵＡＲＴ機能部２２１は、受信機能を利用してシリアルデータを受信する。
【０１０９】
また、受信装置２１のＵＡＲＴ機能部２２１は、受信したシリアルデータのパリティチェックを行なう。受信装置２１は、受信したシリアルデータにパリティエラーが発生していない場合、受信したシリアルデータをそのまま受信データとして取得する。一方、受信装置２１は、受信したシリアルデータにパリティエラーが発生していた場合、規定の処理手順によってエラー訂正を行ない、正しいデータを取得する。
【０１１０】
ＩＯ信号機能部２１２は、汎用Ｉ／Ｏポートの機能を有し、入力信号の信号レベルを検出する。
【０１１１】
タイマ機能部２１３は、時間計測する機能を有し、入力データの１ビット送信期間ごとに割り込み（タイマ割り込み）を発生させる。
【０１１２】
割込機能部２１４は、ＩＯ信号機能部２１２への入力信号のレベル変動を検出した際に割り込み（エッジ検出割り込み）を発生させる。
【０１１３】
図１１には、送信側と受信側とが１対1かつ片方向のシリアル通信を行う構成を示しているが、本実施形態の通信システムは、各構成要素を増設することにより、１対多や多対多かつ双方向の通信システムに拡張することが可能である。
【０１１４】
以上のように、本実施形態によれば、送信装置２２からシリアル通信によって送信した通信データに発生したビット誤りを、受信装置２１において訂正する通信システム２０を構成できる。
【０１１５】
本実施形態に係るシリアル通信の誤り訂正方法によれば、データの冗長化や再送制御などを抑えて伝送効率を高めるとともに、信頼性の高いシリアル通信環境を提供することが可能になる。
【０１１６】
（ハードウェア）
ここで、本発明の実施形態に係る制御装置を実現するハードウェア構成について、図１２のマイクロコンピュータ９０を一例として挙げて説明する。なお、図１２のマイクロコンピュータ９０は、本発明の実施形態の制御装置の処理を実行するための構成例であって、本発明の範囲を限定するものではない。
【０１１７】
図１２のように、マイクロコンピュータ９０は、プロセッサ９１、メモリ９２、ＵＡＲＴ９３、タイマ９４、コンバータ９５、汎用Ｉ／Ｏポート９６を備える（ＲＴＣ：Real-Time Clock）。プロセッサ９１、メモリ９２、ＵＡＲＴ９３、タイマ９４、コンバータ９５および汎用Ｉ／Ｏポート９６は、バス９９を介して互いに接続される。
【０１１８】
プロセッサ９１は、メモリ９２に格納されたプログラムに従って、各種の演算やデータの読み書き、条件判断などといった処理を実行する。
【０１１９】
メモリ９２は、プログラムが格納される領域を有する。例えば、メモリ９２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）として実現される。
【０１２０】
ＵＡＲＴ９３は、非同期式のシリアル信号とパラレル信号の変換を行う。ＵＡＲＴ９３を用いる通信では、通信速度やデータビット数、パリティビット、ストップビートに関する設定が行われる。ＵＡＲＴ９３は、パリティビットを用いて受信したデータのエラー判定を行う。
【０１２１】
タイマ９４は、時間を測定し、一定間隔で割り込みを発生する。
【０１２２】
コンバータ９５は、アナログの入力信号をデジタル値に変換するＡ／Ｄコンバータの機能と、デジタル値をアナログの出力信号に変換するＤ／Ａコンバータの機能とをまとめた構成である。なお、Ａ／Ｄコンバータの機能と、Ｄ／Ａコンバータの機能とは、別の構成としてもよい。
【０１２３】
汎用Ｉ／Ｏポート９６は、デジタル信号の入出力に用いられる入出力ポートである。例えば、汎用Ｉ／Ｏポートは、ＧＰＩＯ（General Purpose Input/Output）として実現される。汎用Ｉ／Ｏポート９６は、プロセッサと外部の装置との間でデータを授受し合うために、プログラムで扱うデジタル値と信号レベルの変換を相互に行う。
【０１２４】
以上が、本発明の実施形態に係る制御装置を可能とするためのハードウェア構成の一例である。なお、図１２のハードウェア構成は、本発明の実施形態に係る制御装置の演算処理を実行するためのハードウェア構成の一例であって、本発明の範囲を限定するものではない。また、本発明の実施形態に係る制御装置に関する処理をコンピュータに実行させるプログラムも本発明の範囲に含まれる。さらに、本発明の実施形態に係るプログラムを記録したプログラム記録媒体も本発明の範囲に含まれる。
【０１２５】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１２６】
本発明の実施形態に係るシリアル通信の誤り訂正方法は、シリアル通信を利用したＩＴ（Information Technology）機器やネットワーク等に利用できる。
【符号の説明】
【０１２７】
１０    制御装置
１１    ビット誤り検知部
１２    信号レベル検出部
１３    ビット誤り訂正部
１４    タイマ
１５    割り込み部
２０    通信システム
２２    送信装置
２１    受信装置
９０    マイクロコンピュータ
９１    プロセッサ
９２    メモリ
９３    ＵＡＲＴ
９４    タイマ
９５    コンバータ
９６    汎用Ｉ／Ｏポート
２１０    制御部
２１１    ＵＡＲＴ機能部
２１２    ＩＯ信号機能部
２１３    タイマ機能部
２１４    割込機能部
２２０    制御部
２２１    ＵＡＲＴ機能部
【図１】
2019024159.tif 000003
【図２】
2019024159.tif 000004
【図３】
2019024159.tif 000005
【図４】
2019024159.tif 000006
【図５】
2019024159.tif 000007
【図６】
2019024159.tif 000008
【図７】
2019024159.tif 000009
【図８】
2019024159.tif 000010
【図９】
2019024159.tif 000011
【図１０】
2019024159.tif 000012
【図１１】
2019024159.tif 000013
【図１２】
2019024159.tif 000014