(57)【要約】【課題】通信速度に対して処理能力の低いＣＰＵを使用した場合でも、ＲＴＵモードによるＭｏｄｂｕｓ通信に必用な時間規定を満足する通信装置を提供する。【解決手段】制御回路（ＣＰＵ１１および外部回路１７）が、タイマカウンタ回路１７１のカウント値から、予め設定された第１の時間（ＣＴＯ）、第２の時間（ＦＴＯ）、第３の時間（ＲＴＯ）のそれぞれを監視する比較回路１７２，１７３，１７４の出力により、フレーム内における単位データの受信間隔が第１の時間を超過し、かつ、第２の時間内に受信した場合に対象通信フレーム内の単位データを破棄し、かつ、正常な時間間隔で通信フレームを受信する都度、第３の時間内に応答フレームの送信を行なう。【選択図】図１
2013243509.tif 000002
【特許請求の範囲】
【請求項１】
通信フレーム内における所定の単位データ間の時間間隔を第１の時間、前記通信フレームの最終単位データと続く通信フレームの先頭の単位データとの間の時間間隔を第２の時間、前記通信フレームを受信してから応答フレームを送信するまでの時間を第３の時間とした場合に、前記通信フレーム内における前記単位データの受信は前記第１の時間内であり、前記通信フレームと続く通信フレームとの間における前記単位テータの受信は前記第２の時間を超過し、前記第３の時間内に前記応答フレームを送信する通信装置であって、
受信した前記通信フレーム内における単位データを検出する毎にカウントを開始するタイマカウンタ回路と、
前記タイマカウンタ回路のカウント値から、予め設定された前記第１の時間、前記第２の時間、前記第３の時間のそれぞれを監視する比較回路と、
前記比較回路の出力により、前記フレーム内における単位データを受信した時間間隔が前記第１の時間を超過し、かつ前記第２の時間内に受信した場合に、対象通信フレーム内の前記単位データを破棄し、かつ、破棄されなかった通信フレームを受信する都度、前記第３の時間内に前記応答フレームの送信を行なう制御回路と、
を備えたことを特徴とする通信装置。
【請求項２】
割込み制御回路を更に備え、
前記制御回路は、
前記比較回路から出力される第１の時間超過検出信号と、第２の時間超過検出信号と、前記通信フレーム内における単位データの受信完了検出信号とにより、前記第１の時間超過後であって前記第２の時間超過前にエラーフレームを検出すると前記割込み制御回路を起動し、前記割込み制御回路からの割込み処理要求に基づき、前記第２の時間が超過する前まで、以降受信した前記通信フレーム内における単位データを破棄するか、または受信しない処理を実行することを特徴とする請求項１記載の通信装置。
【請求項３】
前記制御回路は、
前記比較回路から出力される第３の時間超過検出信号に基づき、前記通信フレーム内における単位データの外部への送信を制限することを特徴とする請求項１または２記載の通信装置。
【請求項４】
メモリおよびＤＭＡコントローラを更に備え、
前記制御回路は、
前記比較回路により前記第１の時間超過間検出信号が出力されたときに応答フレームの作成を行なって前記メモリにストアしておき、前記比較回路により前記第２の時間超過検出信号が出力されたときに前記エラーフレームを検出していなければ、前記ＤＭＡコントローラに対して前記応答フレームの送信要求を出力することを特徴とする請求項１〜３のいずれか１項記載の通信装置。
【請求項５】
レジスタインタフェース回路を備え、
前記制御回路は、
前記レジスタインタフェース回路に割当てられた所定のレジスタに一定の値を書き込むことにより、前記比較回路によるそれぞれの時間監視の有効無効を制御することを特徴とする請求項１〜４のいずれか１項記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信装置に関し、具体的には、ＲＴＵモードによるＭｏｄｂｕｓ通信において、ＵＡＲＴを使用して時間規定を満たす通信装置に関する。
【背景技術】
【０００２】
通信プロトコルとして、Ｍｏｄｂｕｓプロトコルを実装したネットワークをＭｏｄｂｕｓ（登録商標）と呼ぶ。Ｍｏｄｂｕｓは、Ｍｏｄｉｃｏｎ社が自社のＰＬＣ(Programmable  Logic  Controller)用に開発した通信プロトコルである。Ｍｏｄｂｕｓ（登録商標）は、現在、産業界におけるデファクト標準の通信プロトコルになっており、センサ等が接続されるフィールド機器を比較的小規模ネットワークに接続するための手段として普及し、その仕様はＷｅｂ（World  Wide  Web）ページ等で公開されている。
【０００３】
例えば、特許文献１には、ＤＣＳ（Distributed  Control  System）やＳＣＡＤＡ（Supervisory  Control  And  Data  Acquisition）等の上位システムとＰＬＣ等の制御機器とを接続するＭｏｄｂｕｓ制御システムの構成例が開示されている。Ｍｏｄｂｕｓ通信には、ＡＳＣＩＩモードとＲＴＵ（Remote  Terminal  Unit）モードとがある。ＡＳＣＩＩモードに関しては、物理層レベルでのプロトコルはＵＡＲＴ（Universal  Asynchronous  Receiver  Transmitter）と同等である。
【０００４】
一方、ＲＴＵモードによる通信には、ＣＴＯ（Character  Time  Out）以下、ＦＴＯ（Frame  Time  Out）以上、ＲＴＯ（Response  Time  Out）以下とする３つの時間規定がある。具体的に、図３に示すように、通信フレーム（ここでは受信フレーム）内におけるデータ（キャラクタ）間の時間間隔をＣＴＯ、通信フレームの最終キャラクタと続く通信フレームの先頭キャラクタとの時間間隔をＦＴＯ、通信フレームを受信してから応答フレームを送信するまでの時間間隔をＲＴＯとした場合に、一つの受信フレームにおけるデータ（キャラクタ）はＣＴＯ時間内に受信し、受信フレーム間におけるデータ（キャラクタ）はＦＴＯ時間を超過して受信し、ＲＴＯ時間内に応答フレームを送信するといった、３つの時間規定を満足する必要がある。
【０００５】
このため、例えば、図４に示すように、通信フレームの単位データとしてのキャラクタ同士の時間間隔がＣＴＯ時間を超過してＦＴＯ時間内に受信した対象通信フレームである受信フレーム＃１と受信フレーム＃２とは破棄する必要がある。また、図５に示すように、通信フレーム（受信フレーム＃１）を受信後、ＲＴＯ時間内に応答フレーム（レスポンスフレーム＃１）を送信する必要があるが、ここで、ＲＴＯ時間内に応答フレームを送信するという時間規定を満たせなかった場合（タイムアウト発生）に応答フレーム（レスポンスフレーム＃１）は送信しない。したがって、送信側では先に送信した通信フレームが正常に受信されなかったものとして再送信する必要がある。
【０００６】
図６に、Ｍｏｄｂｕｓ通信を行うＵＡＲＴを使用した従来の通信装置１００の構成例が示されている。図６に示す通信装置１００は、ＣＰＵ１１０と、メモリ１２０、ＵＡＲＴ１３０、割込み制御回路１４０、レジスタインタフェース回路１５０等の周辺ＬＳＩとが、アドレス、データ、コントロールのためのラインが複数本で構成されるバス１８０を介して共通接続されている。
【０００７】
ＵＡＲＴ１３０は、更に、外部通信インタフェース回路１６０に接続され、この外部通信インタフェース回路１６０を介して外部と通信フレームの送受信を行う。割込み制御回路１４０は、設定されたＦＴＯ時間を超過するとＣＰＵ１１０に対してＦＴＯ超過割込み信号を出力するもので、この割込み制御回路１４０には、タイマカウンタ回路１７１とＦＴＯ設定超過比較回路１７２とからなる外部回路１７０が接続されている。また、レジスタインタフェース回路１５０には、ＣＰＵ１１０によりプログラマブルに値が設定（書き込み）されるＦＴＯ設定レジスタ１５１と、時間計測イネーブルレジスタ１５２とが割当てられており、ここに所定の値が保持される。
【０００８】
ここで、図６を参照しながら従来のＲＴＵモードでのＭｏｄｂｕｓ通信の動作説明を行う。まず、ＣＰＵ１１０は、バス１８０を介して、ＦＴＯ設定レジスタ１５１にＦＴＯ時間を設定する。続いて、ＣＰＵ１１０は、時間計測イネーブルレジスタ１５２に時間計測イネーブル値“１”を設定する。このことにより、ＦＴＯ設定レジスタ１５１は、ＦＴＯ設定値をＦＴＯ設定超過比較回路１７２に出力することができる。また、時間計測イネーブルレジスタ１５２は、設定された時間計測イネーブル値“１”をＦＴＯ設定超過比較回路１７２に出力する。
【０００９】
一方、外部通信インタフェース回路１６０は、外部から通信フレームを受信すると、受信信号をＵＡＲＴ１３０に転送し、これを受けてＵＡＲＴ１３０は、受信したフレームを内蔵するバッファに蓄積する。また、必要に応じてＣＰＵ１１０に割込み信号を出力する。ＣＰＵ１１０は、その割込み信号を受信すると、ＵＡＲＴ１３０の内蔵バッファに蓄積された受信フレームを、バス１８０経由でメモリ１２０に移動する。
【００１０】
ＵＡＲＴ１３０は、受信信号から通信フレーム内のキャラクタのスタートビットを検出すると、スタートビット検出信号をタイマカウンタ回路１７１に出力し、タイマカウンタ回路１７１は、スタートビット検出信号を受信する毎に内部カウンタをクリアしてカウントアップ動作を開始する。タイマカウンタ回路１７１は、カウンタ値が最大値に達すると、その最大値を保持したままカウントアップ動作を停止する。この間、タイマカウンタ回路１７１は、内部カウンタの値をカウント値としてＦＴＯ設定超過比較回路１７２に出力する。
【００１１】
ＦＴＯ設定超過比較回路１７２は、時間計測イネーブ信号が“１”の場合に限り、カウント値≦ＦＴＯ設定値の場合、ＦＴＯ信号としてＦＴＯ時間内であることを示す“０”を割込み制御回路１４０に出力する。一方、カウント値＞ＦＴＯ設定値の場合は、ＦＴＯ信号としてＦＴＯ時間超過を示す“１”を割込み制御回路１４０に出力する。なお、時間計測イネーブル信号が“０”の場合は、常時、ＦＴＯ信号としてＦＴＯ時間内であることを示す“０”を割込み制御回路１４０に出力する。割込み制御回路１４０は、ＦＴＯ信号の“０”から“１”への変化を検出した場合、ＣＰＵ１１０にＦＴＯ割込み信号“１”を出力する。また、割込み制御回路１４０は、ＣＰＵ１１０からのレジスタライトにより、ＦＴＯ割込み信号をクリア（“０”）する。
【００１２】
通信装置１００が、外部から通信フレームを受信すると、外部通信インタフェース回路１６０は、ＵＡＲＴ１３０に受信信号として出力する。これを受けてＵＡＲＴ１３０は、受信したデータを内蔵バッファに蓄積し、必要に応じてＣＰＵ１１０に割込みを発し、ＣＰＵ１１０はその割込みからＵＡＲＴ１３０内に蓄積されたデータをメモリ１２０に移動する。また、ＵＡＲＴ１３０は、受信信号からキャラクタのスタートビットを検出すると、スタートビット検出信号として“１”を出力する。
【００１３】
タイマカウンタ回路１７１は、スタートビット検出信号を受信する毎に、内部カウンタをクリアし、カウントアップ動作を開始する。また、タイマカウンタ回路１７１は、内部カウンタの値をカウント値として．ＦＴＯ設定超過比較回路１７２に出力する。ＦＴＯ設定超過比較回路１７２は、カウント値＞ＦＴＯ設定値を検出すると、割込み制御回路１４０にＦＴＯ時間超過を示す“１”を出力する。これによりＦＴＯ時間が検出される。
【００１４】
割込み制御回路１４０は、ＦＴＯ信号の“０”から“１”への変化を検出すると、ＣＰＵ１１０にＦＴＯ割込み信号として“１”を出力する。ＣＰＵ１１０は、ＦＴＯ割込み信号の“１”を検出することでＦＴＯ時間超過を検出し、応答フレームの送信処理を実行する。なお、送信処理に関する詳細は、本発明と直接関係しないため説明は省略する。以上の動作により、ＦＴＯ時間を満たした応答フレームの送信が実現できる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２０１１−２３４１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上記したように、ＵＡＲＴを使用した従来のＲＴＵモードによるＭｏｄｂｕｓ通信では、タイマカウンタ回路１７１とＦＴＯ設定超過比較回路１７２とにより構成される外部回路１７０により受信タイムアウトの検出機構を備えている。このため、ＦＴＯ時間の設定、およびＦＴＯ設定時間超過の検出は可能であるが、ＣＴＯ、およびＲＴＯ設定時間超過の検出はできず、したがって、図４に示した受信エラー、および図５に示した応答フレームのタイムアウトの処理が正確に実現できないといった問題を有している。
【００１７】
現状は、通信速度に対して十分処理能力の高いＣＰＵ１１０を使用しているため、結果的には上記した時間規定を満足しているが、実際に正しく時間規定を満たしているか否かは不明であり、また、フィールド機器の低消費電力化を目的として処理能力の低いＣＰＵ１１０を使用した場合、それぞれの時間規定を満たすことは困難になる。さらに、タイムアウト設定が複数できる例もあるが、その検出機構のみが搭載されており、送受信とタイムアウトのタイミングが競合した場合に正しく通信フレーム処理ができないことがある。
【００１８】
本発明は上記した課題を解決するためになされたものであり、通信速度に対して処理能力の低いＣＰＵを使用した場合でも、ＲＴＵモードによるＭｏｄｂｕｓ通信に必要な時間規定を満足する通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記した課題を解決するために本発明は、通信フレーム内における所定の単位データ間の時間間隔を第１の時間、前記通信フレームの最終単位データと続く通信フレームの先頭の単位データとの間の時間間隔を第２の時間、前記通信フレームを受信してから応答フレームを送信するまでの時間を第３の時間とした場合に、前記通信フレーム内における前記単位データの受信は、前記第１の時間内であり、前記通信フレームと続く通信フレームとの間の前記単位データの受信は、前記第２の時間を超過し、前記第３の時間内に前記応答フレームを送信する通信装置であって、前記受信したフレーム内における単位データのそれぞれのスタートビットを検出する毎にカウントを開始するタイマカウンタ回路と、前記タイマカウンタ回路のカウント値から、予め設定された前記第１の時間、前記第２の時間、前記第３の時間のそれぞれを監視する比較回路と、前記比較回路の出力により、前記フレーム内における単位データを受信した時間間隔が前記第１の時間を超過するか前記第２の時間内に受信した場合に、対象通信フレーム内の前記単位データを破棄し、かつ、前記通信フレームを受信する都度、前記第３の時間内に前記応答フレームの送信を行なう制御回路と、を備えたことを特徴とする。
【００２０】
本発明によれば、制御回路が、タイマカウンタ回路のカウント値から、予め設定された第１の時間（ＣＴＯ）、第２の時間（ＦＴＯ）、第３の時間（ＲＴＯ）のそれぞれを監視する比較回路の出力により、フレーム内における単位データの受信間隔が第１の時間を超過し、かつ第２の時間内に受信した場合に、対象通信フレーム内の単位データを破棄し、かつ、破棄されなかった通信フレームを受信する都度、第３の時間内に応答フレームの送信を行なう。このように、ＲＴＵモードによるＭｏｄｂｕｓ通信に必要な時間規定を監視し、時間規定違反検出時、不要な送受信データを破棄することにより、通信速度に対して処理能力の低いＣＰＵを使用した場合でも、Ｍｏｄｂｕｓ通信に必要な時間規定を満足する通信装置を実現することができる。また、少量のハードウエアを付加するだけで市販のＵＡＲＴを使用でき、品質向上、および開発効率の向上をはかりながらＭｏｄｂｕｓ通信におけるＲＴＵモードの実装を実現することができる。
【００２１】
なお、本発明において、「受信した通信フレーム内における単位データのそれぞれのスタートビットを検出する毎にカウントを行うタイマカウンタ回路」は、例えば、図１に示す外部回路１７のタイマカウント回路１７１に相当し、「前記タイマカウンタ回路のカウント値から、予め設定された前記第１の時間、前記第２の時間、前記第３の時間のそれぞれを監視する比較回路」は、例えば、図１に示す外部回路１７のＣＴＯ設定超過比較回路１７３，ＦＴＯ設定超過比較回路１７２，ＲＴＯ設定超過比較回路１７４のそれぞれに相当する。また、「前記比較回路の出力により、前記フレーム内における単位データの受信間隔が前記第１の時間を超過し、かつ、前記第２の時間内に受信した場合に対象通信フレーム内の単位データを破棄し、かつ、前記通信フレームを破棄せずに受信する都度、前記第３の時間内に前記応答フレームの送信を行なう制御回路」は、例えば、図１に示す割込み制御回路１４、２１、２２、２３と、外部回路１７のエラーフレーム検出回路１７５、受信マスク回路１７６と、ＣＰＵ１１とが協働して動作することにより実現される。
【００２２】
本発明において、割込み制御回路を更に備え、前記制御回路は、前記比較回路から出力される第１の時間超過検出信号と、第２の時間超過検出信号と、前記通信フレーム内における単位データの受信完了検出信号とにより、前記第１の時間超過後であって前記第２の時間超過前にエラーフレームを検出すると前記割込み制御回路を起動し、前記割込み制御回路からの割込み処理要求に基づき、前記第２の時間が超過する前まで、以降受信した前記通信フレーム内における単位データを破棄するか、または受信しない処理を実行することを特徴とする。本発明によれば、第２の時間設定超過の他に、第１の時間設定超過、第３の時間設定超過、更にはエラーフレームの検出についても割込みで処理することにより、制御回路はこれらを常時監視する必要がなくなるため処理負荷が軽減され、したがって、制御回路を処理能力の低いＣＰＵで実現することができる。
【００２３】
本発明において、前記制御回路は、前記比較回路から出力される第３の時間超過検出信号に基づき、前記通信フレーム内における単位データの外部への送信を制限することを特徴とする。本発明によれば、不要なデータの送信機会が少なくなるため、その分だけ制御回路の処理負荷を軽減することができる。
【００２４】
本発明において、メモリおよびＤＭＡコントローラを更に備え、前記制御回路は、前記比較回路により前記第１の時間超過間検出信号が出力されたときに応答フレームの作成を行なって前記メモリにストアしておき、前記比較回路により前記第２の時間超過検出信号が出力されたときに前記エラーフレームを検出していなければ、前記ＤＭＡコントローラに対して前記応答フレームの送信要求を出力することを特徴とする。本発明によれば、第２の時間設定と第３の時間設定の時間差が短く、時間規定に対して処理能力が不足するＣＰＵを制御回路に使用した場合、制御回路は、第１の時間超過の検出時点で応答フレームの作成を開始してメモリに保存しておき、第２の時間超過検出時点でＤＭＡコントローラを起動してメモリから送信データを転送する構成とすることにより、応答フレーム送信までの処理の効率化を実現できる。
【００２５】
本発明において、レジスタインタフェース回路を更に備え、前記制御回路は、前記レジスタインタフェース回路に割当てられた所定のレジスタに一定の値を書き込むことにより、前記比較回路によるそれぞれの時間監視の有効無効を制御することを特徴とする。本発明によれば、レジスタインタフェース回路により、比較回路に対してそれぞれの時間監視を個別にイネーブル制御を行うことにより、時間規定が無い場合にも対応することができる。
【発明の効果】
【００２６】
本発明によれば、通信速度に対して処理能力の低いＣＰＵを使用した場合でも、ＲＴＵモードによるＭｏｄｂｕｓ通信に必要な時間規定を満足する通信装置を提供することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態１に係る通信装置の構成を示すブロック図である。
【図２】本発明の実施の形態２に係る通信装置の構成を示すブロック図である。
【図３】ＲＴＵモードによるＭｏｄｂｕｓ通信の時間規定を説明するために引用した図である。
【図４】ＲＴＵモードによるＭｏｄｂｕｓ通信の受信エラーを説明するために引用した図である。
【図５】ＲＴＵモードによるＭｏｄｂｕｓ通信のレスポンスタイムアウトを説明するために引用した図である。
【図６】ＲＴＵモードによるＭｏｄｂｕｓ通信を行う従来の通信装置の構成を示すブロック図である。
【発明を実施するための形態】
【００２８】
以下、添付図面を参照して本発明を実施するための実施の形態（以下、単に本実施形態という）について詳細に説明する。
【００２９】
（実施形態１の構成）
図１は、本実施形態１に係る通信装置１０の構成を示すブロック図である。図１に示すように本実施形態１に係る通信装置１０は、図６に示す従来のＲＴＵモードによるＭｏｄｂｕｓ通信を行う通信装置１００に、割込み制御回路２１，２２，２３を周辺ＬＳＩとして付加した。また、従来の通信装置１００が有する外部回路１７０に、少量のハードウエアを付加して外部回路１７として示し、更に、レジスタインタフェース回路１５０に割当てるレジスタの数を増やしてレジスタインタフェース回路１５として示してある。
【００３０】
具体的に、本実施形態１に係る通信装置１０は、ＣＰＵ１１と、メモリ１２、ＵＡＲＴ１３、割込み制御回路１４、２１，２２，２３、レジスタインタフェース回路１５から成る周辺ＬＳＩとが、アドレス、データ、コントロールのためのラインが複数本で構成されるバス１８を介して共通接続されている。ＵＡＲＴ１３は、更に外部通信インタフェース回路１６に接続され、この外部通信インタフェース回路１６を介して外部と通信フレームの送受信を行う。
【００３１】
割込み制御回路１４は、設定されたＦＴＯ時間を超過するとＣＰＵ１１にＦＴＯ超過割込み信号を出力するもので、この割込み制御回路１４には、外部回路１７が接続されている。割込み制御回路２１は、エラーフレームを受信するとＣＰＵ１１にエラーフレーム割込み信号を出力するもので、この割込み制御回路２１には、外部回路１７が接続されている。割込み制御回路２２は、設定されたＣＴＯ時間を超過するとＣＰＵ１１にＣＴＯ超過割込み信号を出力するもので、この割込み制御回路２２には、外部回路１７が接続されている。割込み制御回路２３は、設定されたＲＴＯを超過するとＣＰＵ１１にＲＴＯ超過割込み信号を出力するもので、この割込み制御回路２３には、外部回路１７が接続されている。
【００３２】
外部回路１７は、タイマカウンタ回路１７１と、ＦＴＯ設定超過比較回路１７２の他に、ＣＴＯ設定超過比較回路１７３、ＲＴＯ設定超過比較回路１７４、エラーフレーム検出回路１７５、受信マスク回路１７６、送信マスク回路１７７を含み構成される。また、レジスタインタフェース回路１５には、ＦＴＯ設定レジスタ１５１と時間計測イネーブルレジスタ１５２の他に、新たに、ＣＴＯ設定レジスタ１５３、ＲＴＯ設定レジスタ１５４、カウンタクリアレジスタ１５５が所定の領域に割当てられており、ここに所定の値がＣＰＵ１１によりプログラマブルに書き込まれる構成になっている。
【００３３】
図１によれば、ＣＴＯ設定超過比較回路１７３には、タイマカウンタ回路１７１によりカウントされるカウント値と、ＣＴＯ設定レジスタ１５３に設定された値と、時間計測イネーブルレジスタ１５２に設定された値とが入力され、その出力は、エラーフレーム検出回路１７５、およびＣＴＯ設定超過のための割込みを発する割込み制御回路２２に出力される構成になっている。また、ＲＴＯ設定超過比較回路１７４には、タイマカウンタ回路１７１によりカウントされるカウント値と、ＲＴＯ設定レジスタ１５４に設定された値と、時間計測イネーブルレジスタ１５２に設定された値とが入力され、その出力は、送信マスク回路１７７およびＲＴＯ設定超過のための割込みを発する割込み制御回路２３に出力される構成になっている。
【００３４】
エラーフレーム検出回路１７５は、エラーフレームを検出すると、そのことを割込み制御回路２１、および受信マスク回路１７６に通知する。受信マスク回路１７６は、外部通信インタフェース回路１６から受信信号を取得し、エラーフレーム検出回路１７５からエラーフレーム検出信号を受けると、ＣＰＵ１１による制御の下、ＦＴＯ超過前までの受信した通信フレーム内におけるキャラクタデータを破棄するか、または受信しない処理を実行する。具体的には、ＣＰＵ１１が、既に受信され、メモリ１２に転送されたデータ、またはＵＡＲＴ１３が内蔵するバッファ（図示省略）に保存されたデータを破棄する処理を実行するか、受信マスク回路１７６により、エラーフレーム発生後のデータを受信しない処理を実行する。送信マスク回路１７７は、ＵＡＲＴ１３から送信データを取得し、ＣＰＵ１１による制御の下、ＲＴＯ設定超過比較回路１７４のＲＴＯ信号により通信フレーム内におけるキャラクタデータの外部への送信を制限する。
【００３５】
（実施形態１の動作）
以下、本実施形態１に係る通信装置１０の動作について詳細に説明する。まず、正常フレーム送受信時の動作から説明する。ＣＰＵ１１は、まず、バス１８を介し、レジスタインタフェース回路１５のＣＴＯ設定レジスタ１５３に「キャラクタ時間＋ＣＴＯ時間」を、ＦＴＯ設定レジスタ１５１に、「キャラクタ時間＋ＦＴＯ時間」を、ＲＴＯ設定レジスタ１５４に、「キャラクタ時間＋ＲＴＯ時間」をそれぞれ設定する。ＣＰＵ１１はまた、バス１８を介して、時間計測イネーブルレジスタ１５２に時間計測を許可する値（“１”）を設定する。
【００３６】
一方、外部通信インタフェース回路１６は、外部から通信フレームを受信すると、受信信号を生成して外部回路１７のタイマカウンタ回路１７１、および受信マスク回路１７６に出力する。受信マスク回路１７６は、受信信号を受信すると、受信データをＵＡＲＴ１３へ出力する。ＵＡＲＴ１３は、その受信データを内蔵バッファに蓄積する。また、ＵＡＲＴ１３は必要に応じてＣＰＵ１１に対して割込みを発し、これを受けたＣＰＵ１１は、その割込みからＵＡＲＴ１３内に蓄積されたデータをバス１８経由でメモリ１２に移動する。
【００３７】
タイマカウンタ回路１７１は、受信信号からキャラクタのスタートビットを検出すると、その都度、内部のカウンタをクリアしてカウントアップ動作を開始する。タイマカウンタ回路１７１は、カウンタ値が最大値に達すると、最大値を保持したままカウントアップを停止する。タイマカウンタ回路１７１は、内部カウンタの値をＣＴＯ設定超過比較回路１７３、ＦＴＯ設定超過比較回路１７２、ＲＴＯ設定超過比較回路１７４に出力する。
【００３８】
ここで、ＣＴＯ設定超過比較回路１７３は、時間計測イネーブル信号が“１”であって、カウント値≦ＣＴＯ設定値の場合、ＣＴＯ時間内であることを示すＣＴＯ信号として“０”（ＣＴＯ時間以下）を割込み制御回路２２、およびエラーフレーム検出回路１７５に出力する。一方、カウント値＞ＣＴＯ設定値の場合、ＣＴＯ時間超過を示すＣＴＯ信号（第１の時間超過検出信号）として、“１”を割込み制御回路２２、およびエラーフレーム検出回路１７５に出力する。なお、時間計測イネーブル信号が“０”の場合は、ＣＴＯ信号として常時“１”を出力する。割込み制御回路２２は、ＣＴＯ信号が“０”から“１”に変化した場合、ＣＰＵ１１にＣＴＯ割込み信号として“１”を出力する。また、割込み制御回路２２は、ＣＰＵ１１からのレジスタライトにより、ＣＴＯ割込み信号をクリア（“０”）する。
【００３９】
ＣＴＯ設定超過比較回路１７３が、受信フレーム（スタートビット）からキャラクタ時間＋ＣＴＯ時間の経過を検出することにより、割込み制御回路２２を経由してＣＴＯ割込み信号に“１”が出力される。ＣＰＵ１１は、ＣＴＯ割込み信号を検出することで、ＣＴＯ時間超過を認識して応答フレーム送信の準備を開始する。なお、ＣＴＯ時間経過後も、タイマカウンタ回路１７１の内部カウンタはカウントアップを継続している。
【００４０】
また、ＦＴＯ設定超過比較回路１７２は、時間計測イネーブル信号が“１”であって、カウント値≦ＦＴＯ設定値の場合、ＦＴＯ信号として、割込み制御回路１４およびエラーフレーム検出回路１７５に、ＦＴＯ時間内であることを示す“０”を出力する。一方、カウント値＞ＦＴＯ設定値の場合、ＦＴＯ信号（第２の時間超過信号）として、割込み制御回路１４およびエラーフレーム検出回路１７５に、ＦＴＯ時間超過を示す“１”を出力する。なお、時間計測イネーブル信号が“０”の場合は、ＦＴＯ信号として常時“０”を出力する。
【００４１】
割込み制御回路１４は、ＦＴＯ信号の“０”から“１”への変化を検出した場合、ＣＰＵ１１にＦＴＯ割込み信号として“１”を出力する。また、割込み制御回路１４は、ＣＰＵ１１からのレジスタライトにより、ＦＴＯ割込み信号をクリア（“０”）する。このように、受信フレーム（スタートビット）から「キャラクタ時間＋ＦＴＯ時間」の経過を検出し、上述の回路を経由してＦＴＯ割込み信号としてＣＰＵ１１に“１”が出力される。ＣＰＵ１１は、ＦＴＯ割込み信号の“１”を検出することによりＦＴＯ時間超過を検知し、応答フレームの送信処理を開始し、応答フレームをＵＡＲＴ１３に転送する。なお、ＦＴＯ時間経過後も、タイマカウンタ回路１７１の内部カウンタはカウントアップ動作を継続している。
【００４２】
続いて、ＵＡＲＴ１３は、応答フレームを送信データとして、送信マスク回路１７７、およびタイマカウンタ回路１７１に送信データを出力する。送信マスク回路１７７は、送信データから送信信号を生成し、外部通信インタフェース回路１６を介して不図示の外部機器へ応答フレームを送信する。タイマカウンタ回路１７１は、送信データのスタートビットを検出して内部カウンタの動作を停止する。
【００４３】
ＲＴＯ設定超過比較回路１７４は、時間計測イネーブル信号が“１”であって、カウント値≦ＲＴＯ設定値の場合、割込み制御回路２３に、ＲＴＯ時間内であることを示す“０”を出力する。カウント値＞ＲＴＯ設定値の場合、ＲＴＯ時間超過を示す“１”をＲＴＯ信号（第３の時間超過信号）として割込み制御回路２３に出力する。なお、時間計測イネーブル信号が“０”の場合は、割込み制御回路２３にＲＴＯ信号として常時“０”を出力する。
【００４４】
応答フレームが正常に送信された場合、タイマカウンタ回路１７１の内部カウンタ値は、「キャラクタ時間＋ＲＴＯ時間」以内で停止しているため、ＲＴＯ設定超過比較回路１７４の出力であるＲＴＯ信号として、ＲＴＯ時間内であることを示す“０”が出力される。割込み制御回路２３は、ＲＴＯ信号の“０”から“１”への変化を検出した場合にＲＴＯ割込み信号としてＣＰＵ１１に“１”を出力する。ここでは、正常フレーム送受信時の動作であるため、ＲＴＯ信号は“０”、ＲＴＯ割込み信号も“０”であるため、割込みは発生しない。
【００４５】
次にエラーフレーム受信時の動作について説明する。ＣＴＯ時間経過後でＦＴＯ時間到達未満の場合、ＣＴＯ設定超過比較回路１７３からＣＴＯ信号“１”が、ＦＴＯ設定超過比較回路１７２からＦＴＯ信号“０”が出力される。このとき、エラーフレーム検出回路１７５は、ＣＴＯ信号が“１“で、ＦＴＯ信号が“０”の状態で、受信信号のキャラクタ（スタートビット）を検出すると、割込み制御回路２１、および受信マスク回路１７６にエラーフレーム検出信号として“１”を出力する。なお、一度、エラーフレーム検出信号に“１”を出力すると、ＦＴＯ信号“１”を検出するまでエラーフレーム検出信号として“１”の出力を継続する（ＦＴＯ信号“１”を検出すると“０”を出力する）。
【００４６】
割込み制御回路２１は、エラーフレーム検出信号の“０”から“１”への変化を検出した場合にエラーフレーム割込み信号として“１”を出力する。また、割込み制御回路２１は、ＣＰＵ１１からのレジスタライトにより、エラーフレーム割込み信号をクリア（“０”）する。ＣＰＵ１１は、エラーフレーム割込み信号“１”を検出することでエラーフレームの発生を検知し、エラーフレームを破棄するとともに、応答フレーム送信を実行しない。
【００４７】
エラーフレーム検出信号“１”を検出した受信マスク回路１７６は、エラーフレーム検出信号が“１”の間、受信信号に基づき受信フレームを破棄する、すなわちＵＡＲＴ１３に受信データを転送しない。このことにより、エラーフレーム検出以降の受信データの取得を制限することができる。
【００４８】
次に、応答フレームのタイムアウト検出時の動作について説明する。ここでは、ＲＴＯ時間超過が検出されたと仮定し、ＲＴＯ信号として割込み制御回路２３にＲＴＯ時間超過を示す“１”を出力する。割込み制御回路２３は、ＲＴＯ信号の“０”から“１”への変化を検出した場合、ＣＰＵ１１に、ＲＴＯ割込み信号“１”を出力する。また、割込み制御回路２３は、ＣＰＵ１１からのレジスタライトにより、ＲＴＯ割込み信号をクリア（“０”）する。
【００４９】
ＣＰＵ１１は、ＲＴＯ割込み信号の“１”を検出することで、ＲＴＯ時間超過を検知し、応答フレーム送信処理を実行している場合は中止する。
【００５０】
送信マスク回路１７７は、ＲＴＯ信号の“１”（ＲＴＯ時間超過）を検出すると、ＲＴＯ信号が“１”の間、ＵＡＲＴ１３からの送信データを破棄して外部通信インタフェース回路１６へ出力される送信信号を生成しない。この処理により、既にＣＰＵ１１からＵＡＲＴ１３に応答フレームが転送されてしまっている場合でも、ＲＴＯ時間経過後に送信データを外部通信信号として出力されることを回避している。ＣＰＵ１１は、ＵＡＲＴ１３に内蔵されたバッファ（送信用）が空であることを検出し、ＲＴＯ時間経過後、送信すべきでない応答フレームが破棄されたことを確認する。
【００５１】
ＣＰＵ１１は、バス１８を介してカウンタクリアレジスタ１５５にカウンタクリアデータをライトする。カウンタクリアレジスタ１５５は、カウンタクリアデータのライトを検出すると、タイマカウンタ回路１７１にカウンタクリア要求として“１”を出力する。タイマカウンタ回路１７１は、カウンタクリア信号の“１”を検出すると、タイマカウンタ回路１７１に内蔵されているカウンタをクリアする（ゼロ設定）。この動作により回路全体がアイドル状態に戻る。
【００５２】
（実施形態１の効果）
なお、上記した実施形態１に係る通信装置１０は、通信フレーム（例えば、所定長のキャラクタデータ）内における所定の単位データ（例えば、キャラクタ）間の時間間隔を第１の時間（ＣＴＯ）、通信フレームの最終の単位データと続く通信フレームの先頭の単位データとの間の時間間隔を第２の時間（ＦＴＯ）、通信フレームを受信してから応答フレームを送信するまでの時間間隔を第３の時間（ＲＴＯ）とした場合に、通信フレーム内における単位データの受信は第１の時間内であり、通信フレームと続く通信フレームとの間における単位データの受信は第２の時間を超過し、第３の時間内に応答フレームを送信する時間規定を満足する必要のある通信装置１０に適用される。この通信装置１０において、制御回路は、タイマカウンタ回路１７１のカウント値から、予め設定された第１の時間（ＣＴＯ）、第２の時間（ＦＴＯ）、第３の時間（ＲＴＯ）のそれぞれを監視する比較回路１７２，１７３，１７４の出力により、通信フレーム内における単位データの受信間隔が第１の時間を超過し、かつ、第２の時間内に受信した場合に、対象となる通信フレーム内の単位データを破棄し、かつ、通信フレームを破棄せずに受信する都度、第３の時間内に応答フレームの送信を行なう。したがって、例えば、ＲＴＵモードによるＭｏｄｂｕｓ通信に必要な上記した時間規定を検出し、この時間規定違反を検出したとき不要な送受信データを破棄するＣＰＵ１１と、このＣＰＵ１１と協働して動作する外部回路１７（制御回路）とにより上記した制御回路を実現することにより、通信速度に対して処理能力の低いＣＰＵ１１を使用した場合でも、Ｍｏｄｂｕｓ（ＲＴＵモード）通信に必要な時間規定を満足する回路を実現することができる。
【００５３】
（実施形態２の構成）
図２は、本実施形態２に係る通信装置１０の構成を示すブロック図である。図１に示す実施形態１との構成上の差異は、バス１８に、更にＤＭＡ（Dynamic  Memory  Access）コントローラ２４を接続してＣＰＵ１１の負荷軽減をはかったことにある。このため、外部回路１７に、ＤＭＡコントローラ２４を起動するＤＭＡＣ起動制御回路１７８を付加した。このＤＭＡＣ起動制御回路１７８には、ＦＴＯ設定超過比較回路１７２出力、およびエラーフレーム検出回路１７５出力が接続される。
【００５４】
また、時間規定が無い場合（設定時間が∞）の対応として、レジスタインタフェース回路１５に、時間計測イネーブルレジスタ１５２に代わって、ＲＴＯ計測イネーブルレジスタ１５２ａ、ＦＴＯ計測イネーブルレジスタ１５２ｂ、ＣＴＯ計測イネーブルレジスタ１５２ｃのそれぞれを割当て、それぞれの時間計測を個別にＯＮ／ＯＦＦできるように構成した。
【００５５】
（実施形態２の動作）
ＤＭＡコントローラ起動信号の生成時間規定に対してＣＰＵの処理能力が十分高い場合は図１に示す実施形態１の構成で問題はないが、ＣＰＵ１１として、ＦＴＯ時間とＲＴＯ時間の時間差が短く、処理能力が不足するタイプのものを使用することが考えられる。この場合、ＣＰＵ１１は、ＣＴＯ時間検出時点で応答フレームの作成を開始して予めメモリ１２に保存しておき、ＦＴＯ時間検出時点でＤＭＡコントローラ２４を起動し、メモリ１２からＵＡＲＴ１３へ送信データを転送する機構を設けることで、応答フレーム送信までの処理の効率化を実現することができる。
【００５６】
具体的に、ＵＡＲＴ１３が通信フレームを受信し、ＣＴＯ設定超過比較回路１７３がＣＴＯ設定超過を検出すると、割込み制御回路２２によりＣＴＯ割込み信号がアサートされる。これを受けたＣＰＵ１１は、受信した通信フレームに対応した応答フレームを生成し、メモリ１２の所定の領域に格納しておく。次に、ＦＴＯ設定超過比較回路１７２がＦＴＯ設定超過を検出すると、ＦＴＯ信号“１”が生成され、このＦＴＯ信号は、割込み制御回路１４の他に外部回路１７のＤＭＡＣ起動制御回路１７８にも出力される。ＤＭＡＣ起動制御回路１７８には、他にエラーフレーム検出回路１７５からエラーフレーム検出信号も入力されている。
【００５７】
ＤＭＡＣ起動制御回路１７８は、ＦＴＯ信号が“１”で、エラーフレーム検出信号が“０”の場合、ＤＭＡＣ起動信号として“１”を出力してＤＭＡコントローラ２４を起動する。また、エラーフレーム検出信号が“１”の場合、ＤＭＡＣ起動信号として“０”を出力し、ＤＭＡコントローラ２４を起動しない。すなわち、外部回路１７は、エラーフレームを検出していない場合にＤＭＡコントローラ２４を起動し、エラーフレームを検出した場合はＤＭＡコントローラ２４を起動しない。
【００５８】
ＤＭＡコントローラ２４は、外部回路１７のＤＭＡ起動制御回路１７８によって出力されるＤＭＡＣ起動信号の“１”を検出すると、ＣＰＵ１１が予め生成し、メモリ１２に格納してある応答フレームをメモリ１２から読み出し、ＵＡＲＴ１３へ転送する。このことにより、ＦＴＯ時間とＲＴＯ時間の設定時間差が短く、ＣＰＵ１１の処理能力が不足する場合でも、応答フレーム送信までの処理効率の向上がはかれる。
【００５９】
一方、時間規定が無い場合（設定時間が∞）、ＣＰＵ１１は、レジスタインタフェース回路１５の所定の領域に割当てられた、ＲＴＯ計測イネーブルレジスタ１５２ａ、ＦＴＯ計測イネーブルレジスタ１５２ｂ、ＣＴＯ計測イネーブルレジスタ１５２ｃのそれぞれに対して“０”を設定する。このことにより、ＦＴＯ信号、ＲＴＯ信号がアサートされることはなく（常時“０”出力、かつ、ＣＴＯ信号は常時“１”出力）、時間規定を起点とした動作は発生しないため、時間規定無しの動作を実現することができる。
【００６０】
（実施形態２の効果）
上記した実施形態２に係る通信装置１０によれば、第２の時間設定（ＦＴＯ）と第３の時間設定（ＲＴＯ）の時間差が短く、時間規定に対して処理能力が不足するＣＰＵ１１を制御回路として使用した場合、その制御回路は、第１の時間超過の検出時点で応答フレームの作成を開始してメモリ１２に保存しておき、第２の時間超過検出時点でＤＭＡコントローラ２４を起動してメモリ１２から送信データを転送する構成とすることにより、応答フレーム送信までの処理の効率化を実現できる。また、レジスタインタフェース回路１５により、ＦＴＯ設定超過比較回路１７２、ＣＴＯ設定超過比較回路１７３、ＲＴＯ設定超過比較回路１７４に対してそれぞれの時間監視を個別にイネーブル制御を行うことにより、時間規定が無い場合にも対応することができる。
【００６１】
以上説明のように本発明によれば、通信速度に対して処理能力の低いＣＰＵ１１を使用した場合でも、ＲＴＵモードによるＭｏｄｂｕｓ通信に必用な時間規定を満足する通信装置１０を提供することができる。なお、本実施形態１，２に係る通信装置１０によれば、フィールド機器に適用する場合を例示して説明したが、フィールド機器によらず、ＲＴＵモードでのＭｏｄｂｕｓ通信を実装する機器の全てに適用が可能である。
【００６２】
また、Ｍｏｄｂｕｓ通信を実現するための回路を新規に開発する方法も考えられるが、Ｍｏｄｂｕｓ通信をサポートする場合、ＡＳＣＩＩモードとＲＴＵモードの双方を実装する必要がある。ここで、ＡＳＣＩＩモードは既存のＵＡＲＴで実現できるため、ＡＳＣＩＩモードの実装は既存のＵＡＲＴをそのまま利用することで品質向上、および開発効率向上を実現する。一方、ＲＴＵモードも、時間規定以外はＡＳＣＩＩモードと同様であるため、既存のＵＡＲＴに外部回路を付加する構成とすることで、品質向上、および開発効率向上を実現できる。
【００６３】
以上、本発明の好ましい実施形態について詳述したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されないことは言うまでもない。上記実施形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。またその様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【００６４】
１０…通信装置、１１…ＣＰＵ、１２…メモリ、１３…ＵＡＲＴ、１４，２１，２２，２３…割込み制御回路、１５…レジスタインタフェース回路、１６…外部通信インタフェース回路、１７…外部回路、１８…バス、２４…ＤＭＡコントローラ、１５１…ＦＴＯ設定レジスタ、１５２ａ…ＲＴＯ計測イネーブルレジスタ、１５２ｂ…ＦＴＯ計測イネーブルレジスタ、１５２ｃ…ＣＴＯ計測イネーブルレジスタ、１５３…ＣＴＯ設定レジスタ、１５４…ＲＴＯ設定レジスタ、１５５…カウンタクリアレジスタ、１７１…タイマカウンタ回路、１７２…ＦＴＯ設定超過比較回路、１７３…ＣＴＯ設定超過比較回路、１７４…ＲＴＯ設定超過比較回路、１７５…エラーフレーム検出回路、１７６…受信マスク回路、１７７…送信マスク回路、１７８…ＤＭＡＣ起動制御回路
【図１】
2013243509.tif 000003
【図２】
2013243509.tif 000004
【図３】
2013243509.tif 000005
【図４】
2013243509.tif 000006
【図５】
2013243509.tif 000007
【図６】
2013243509.tif 000008