(57)【要約】【課題】サンプリング周期に同期したタイミングでノイズが入力端子に印加された場合には、誤動作を起こすことがあった。このような事情に鑑み、エッジパルスの侵入にかかわらず、入力信号を誤りなく正確にフィルタ処理できる入力信号フィルタ処理方法を提供する。【解決手段】所定のサンプリング周期Ｔで入力信号のサンプリングを行う入力信号フィルタ処理方法であって、サンプリング期間途中でエッジパルスＰＥを検出するステップと、エッジパルスが検出されないときは、そのときのバックアップ値ＢＵをステータスＳＴにコピーした上で、次のサンプリング値ＳＧをバックアップ値ＢＵとして保持すルーチンと、エッジパルスが検出されたときは、バックアップ値ＢＵのステータスＳＴへのコピーをスキップした上で、次のサンプリング値ＳＧをバックアップ値ＢＵとして保持すルーチンとを備える。【選択図】図１
2009237882.tif 000002
【特許請求の範囲】
【請求項１】
所定のサンプリング周期で入力信号のサンプリングを行う入力信号フィルタ処理方法であって、
サンプリング期間途中でエッジパルスを検出するステップと、
エッジパルスが検出されないときは、そのときのバックアップ値をステータスにコピーした上で、次のサンプリング値をバックアップ値として保持すルーチンと、
エッジパルスが検出されたときは、バックアップ値のステータスへのコピーをスキップした上で、次のサンプリング値をバックアップ値として保持すルーチンとを備えた入力信号フィルタ処理方法。
【請求項２】
前記エッジパルスが検出されたときのルーチンは、エッジ情報フラグをクリアし、入力エッジ割り込みを許可し、入力エッジ割り込み処理においてエッジ情報フラグをセットし、次いで入力エッジ割り込みを禁止する請求項１に記載の入力信号フィルタ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は所定のサンプリング周期で入力信号のサンプリングを行う入力信号フィルタ処理方法にかかわり、外乱ノイズ等の影響を抑制して入力信号を正しくフィルタ処理する技術に関する。
【背景技術】
【０００２】
生産工場等に設置されるファクトリオートメーション（ＦＡ）の制御装置として、論理回路を自由に置き換えられるコントローラであるプログラマブルコントローラ（ＰＣ：Programmable Controller）が用いられている。このプログラマブルコントローラは、複数のモジュールから構成されている。複数のモジュールとしては、電源モジュール、ＣＰＵモジュール、入力モジュール、出力モジュール、通信モジュール等がある。ＣＰＵモジュールは、内部にＣＰＵ、Ｉ／Ｏメモリ、プログラムメモリ等を有する（例えば特許文献１参照）。入力モジュールにはセンサ等の入力機器が接続され、出力モジュールにはアクチュエータ等の外部機器が接続される。入力モジュールと出力モジュールとがＣＰＵモジュールで連係される。センサ等の入力機器は制御対象の状態をセンシングしてその情報を入力モジュールに入力し、ＣＰＵモジュールで演算を行い、その演算結果に基づいて出力モジュールに出力し、これに応答してアクチュエータ等の外部機器を駆動制御する。
【０００３】
上記のプログラマブルコントローラにおいて、入力モジュールでは、スイッチやセンサ等を外部接点としてそのＯＮ／ＯＦＦ信号をＣＰＵモジュールに入力する。出力モジュールではＣＰＵモジュールの制御信号に応答して内部接点をＯＮ／ＯＦＦしてアクチュエータ等の外部機器への電源の供給／遮断を行って外部機器をＯＮ／ＯＦＦ駆動する。このような接点のＯＮ／ＯＦＦ信号などの入力信号は、プログラマブルコントローラの制御動作上、入出力モジュールの配置環境によるノイズの影響を受けないようにフィルタ処理して安定化させることが必要である。
【０００４】
図５は入力モジュールの概略を示す。１は入力モジュール、２は入力回路、３は入力フィルタ回路、４は信号入力端子、５は電源入力端子、６はセンサ、７は電源、８はＣＰＵモジュールである。センサ６からの入力信号Ｓinが信号入力端子３から入力回路２の入力フィルタ回路３に取り込まれる。入力フィルタ回路３は、“Ｈ”，“Ｌ”に変化する入力信号Ｓinの“Ｈ”，“Ｌ”変化をできるだけ忠実なかたちで内部に取り込んで、波形整形し、ＣＰＵモジュール８に渡す。
【０００５】
入力フィルタ回路３は、一定のサンプリング周期Ｔで入力信号Ｓinをサンプリングし、フィルタ処理するようになっている。従来技術では、そのサンプリング周期Ｔごとのサンプルタイミングにおいてのみサンプリングするようになっている。図６はその動作を示すフローチャートである。
【０００６】
ステップｎ１において、サンプリング値ＳＧがバックアップ値ＢＵに一致するかを判断する。一致するときは、ステップｎ２をスキップし、ステップｎ３でサンプリング値ＳＧをバックアップする（バックアップ値ＢＵ←サンプリング値ＳＧ）。
【０００７】
ステップｎ１の判断で、一致しないときは、ステップｎ２に進み、サンプリング値ＳＧをステータスＳＴ（フィルタ出力）にコピーした上で、さらにステップｎ３でサンプリング値ＳＧをバックアップする（バックアップ値ＢＵ←サンプリング値ＳＧ）。
【０００８】
まず、入力信号にノイズ等に起因するエッジパルスが侵入しない場合の動作を図７で説明する。下向き矢印ｔ１〜ｔ９はサンプルタイミングである。図７において、平行線はイコールのことで、サンプリング値ＳＧがバックアップ値ＢＵに等しいことを意味している。また、平行線に斜め線を交差させたものはノットイコールのことで、サンプリング値ＳＧがバックアップ値ＢＵに不一致であることを意味している。
【０００９】
サンプルタイミングｔ１では、入力信号のサンプリング値ＳＧ＝“Ｌ”（ローレベル）である。この直前まで、バックアップ値ＢＵは“Ｌ”である。したがって、ステップｎ１の判断はサンプリング値ＳＧ＝バックアップ値ＢＵであるので、バックアップ値ＢＵをステータスＳＴへコピーするステップｎ２はスキップして、ステップｎ３に進み、サンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。このときのステータスＳＴは、現在までの履歴から“Ｌ”となっている（ステータスＳＴ＝“Ｌ”）。
【００１０】
次のサンプルタイミングｔ２では、サンプリング値ＳＧは“Ｌ”であり、バックアップ値ＢＵは“Ｌ”であるので、サンプルタイミングｔ１の場合と同様の動作となる。すなわち、ステップｎ１でサンプリング値ＳＧ＝バックアップ値ＢＵであり、ステップｎ２はスキップし、ステップｎ３でサンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。
【００１１】
次のサンプルタイミングｔ３、さらにその次のサンプルタイミングｔ４でも同様の動作となる（バックアップ値ＢＵ←“Ｌ”）。
【００１２】
次のサンプルタイミングｔ５では、サンプリング値ＳＧは“Ｈ”（ハイレベル）である。この直前まで、バックアップ値ＢＵは“Ｌ”である。したがって、ステップｎ１の判断はサンプリング値ＳＧ≠バックアップ値ＢＵの不一致であるので、ステップｎ２に進み、サンプリング値ＳＧ＝“Ｈ”をステータスＳＴにコピーする（ステータスＳＴ←“Ｈ”；ステータスＳＴの変化）。そして、ステップｎ３では、サンプリング値ＳＧ＝“Ｈ”をバックアップする（バックアップ値ＢＵ←“Ｈ”）。これにより、フィルタ出力（ステータスＳＴ）は“Ｈ”に反転する。
【００１３】
次のサンプルタイミングｔ６では、サンプリング値ＳＧ＝“Ｈ”であり、バックアップ値ＢＵは“Ｈ”であるので、ステップｎ２はスキップし、ステップｎ３でサンプリング値ＳＧ＝“Ｈ”をバックアップする（バックアップ値ＢＵ←“Ｈ”）。
【００１４】
次のサンプルタイミングｔ７でも同様の動作となる（バックアップ値ＢＵ←“Ｈ”）。
【００１５】
次のサンプルタイミングｔ８では、サンプリング値ＳＧは“Ｌ”、バックアップ値ＢＵは“Ｈ”であり、ステップｎ１の判断はサンプリング値ＳＧ≠バックアップ値ＢＵの不一致であるので、ステップｎ２に進み、サンプリング値ＳＧ＝“Ｌ”をステータスＳＴにコピーする（ステータスＳＴ←“Ｌ”；ステータスＳＴの変化）。そして、ステップｎ３では、サンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。これにより、フィルタ出力（ステータスＳＴ）は“Ｌ”に反転する。
【００１６】
以上のようにして、入力信号の“Ｌ”／“Ｈ”の変化がフィルタ出力（ステータスＳＴ）に正しく反映される。
【００１７】
なお、入力信号をフィルタする技術としては例えば特許文献２が提案されている。
【特許文献１】特開２００５−２５９０７９号公報
【特許文献２】特開２００７−１５６８４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかし、図６のフローチャートに従う処理を行う従来技術の場合、入力信号にノイズ等に起因するエッジパルスが侵入すると、フィルタ出力に誤差が生じる可能性がある。これを図８で説明する。
【００１９】
サンプルタイミングｔ１では、入力信号のサンプリング値ＳＧは“Ｌ”である。この直前まで、バックアップ値ＢＵは“Ｌ”である。ステップｎ１の判断はサンプリング値ＳＧ＝バックアップ値ＢＵとなり、ステップｎ２はスキップして、ステップｎ３でサンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。このときのステータスＳＴは、現在までの履歴から“Ｌ”となっている（ステータスＳＴ＝“Ｌ”）。
【００２０】
次のサンプルタイミングｔ２までの間に、エッジパルスＰＥ１が侵入する。ただし、この従来技術の場合、サンプリングするのは一定のサンプリング周期Ｔごとのサンプルタイミングｔ１，ｔ２，ｔ３，ｔ４…のみであるので、このサンプリング期間途中のエッジパルスＰＥ１自体のサンプリングは行われない。サンプリングしないので、直接の影響はない。
【００２１】
次のサンプルタイミングｔ２では、サンプリング値ＳＧは“Ｌ”であり、バックアップ値ＢＵは“Ｌ”であるので、サンプルタイミングｔ１の場合と同様の動作となる。すなわち、ステップｎ１でサンプリング値ＳＧ＝バックアップ値ＢＵ、ステップｎ２はスキップし、ステップｎ３でサンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。
【００２２】
次のサンプルタイミングｔ３では、エッジパルスＰＥ２がちょうどタイミング的に同時に侵入している。したがって、エッジパルスＰＥ２がサンプリングされる。サンプリング値ＳＧ＝“Ｈ”となる。この直前まで、バックアップ値ＢＵは“Ｌ”である。したがって、ステップｎ１の判断はサンプリング値ＳＧ≠バックアップ値ＢＵの不一致であるので、ステップｎ２に進み、サンプリング値ＳＧ＝“Ｈ”をステータスＳＴにコピーする（ステータスＳＴ←“Ｈ”；ステータスＳＴの変化）。そして、ステップｎ３では、サンプリング値ＳＧ＝“Ｈ”をバックアップする（バックアップ値ＢＵ←“Ｈ”）。これにより、フィルタ出力（ステータスＳＴ）は“Ｈ”に反転する。この反転が誤動作である。
【００２３】
次のサンプルタイミングｔ４までの間に、エッジパルスＰＥ３が侵入する。ただし、これはサンプリングされない。
【００２４】
次のサンプルタイミングｔ４では、エッジパルスＰＥ４がちょうどタイミング的に同時に侵入している。したがって、エッジパルスＰＥ４がサンプリングされる。サンプリング値ＳＧ＝“Ｈ”となる。この直前まで、バックアップ値ＢＵは“Ｈ”である。したがって、サンプリング値ＳＧ＝バックアップ値ＢＵの一致であるので、ステップｎ２はスキップし、ステップｎ３では、サンプリング値ＳＧ＝“Ｈ”をバックアップする（バックアップ値ＢＵ←“Ｈ”）。
【００２５】
入力信号は、サンプルタイミングｔ１からサンプルタイミングｔ５の直前までは本来は“Ｌ”である。それにもかかわらず、フィルタ出力（ステータスＳＴ）は、サンプルタイミングｔ３から“Ｈ”に反転しており、入力信号とは異なったものとなっている。すなわち、誤動作を起こしている。
【００２６】
次に、別の局面として、サンプルタイミングｔ１１では、入力信号のサンプリング値ＳＧは“Ｈ”である。この直前まで、バックアップ値ＢＵは“Ｈ”である。ステップｎ１の判断はサンプリング値ＳＧ＝バックアップ値ＢＵとなり、ステップｎ２はスキップして、ステップｎ３でサンプリング値ＳＧ＝“Ｈ”をバックアップする（バックアップ値ＢＵ←“Ｈ”）。このときのステータスＳＴは、現在までの履歴から“Ｈ”となっている（ステータスＳＴ＝“Ｈ”）。
【００２７】
次のサンプルタイミングｔ１２では、エッジパルスＰＥ５がちょうどタイミング的に同時に侵入している。したがって、エッジパルスＰＥ５がサンプリングされる。サンプリング値ＳＧ＝“Ｌ”となる。この直前まで、バックアップ値ＢＵは“Ｈ”である。したがって、ステップｎ１の判断はサンプリング値ＳＧ≠バックアップ値ＢＵの不一致であるので、ステップｎ２に進み、サンプリング値ＳＧ＝“Ｌ”をステータスＳＴにコピーする（ステータスＳＴ←“Ｌ”；ステータスＳＴの変化）。そして、ステップｎ３では、サンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。これにより、フィルタ出力（ステータスＳＴ）は“Ｌ”に反転する。この反転が誤動作である。
【００２８】
次のサンプルタイミングｔ１３までの間に、エッジパルスＰＥ６が侵入する。ただし、これはサンプリングされない。
【００２９】
次のサンプルタイミングｔ１３では、エッジパルスＰＥ７がちょうどタイミング的に同時に侵入している。したがって、エッジパルスＰＥ７がサンプリングされる。サンプリング値ＳＧ＝“Ｌ”となる。この直前まで、バックアップ値ＢＵは“Ｌ”である。したがって、サンプリング値ＳＧ＝バックアップ値ＢＵの一致であるので、ステップｎ２はスキップし、ステップｎ３では、サンプリング値ＳＧ＝“Ｌ”をバックアップする（バックアップ値ＢＵ←“Ｌ”）。
【００３０】
入力信号は、サンプルタイミングｔ１１からサンプルタイミングｔ１４の直後までは本来は“Ｈ”である。それにもかかわらず、フィルタ出力（ステータスＳＴ）は、サンプルタイミングｔ１２から“Ｌ”に反転しており、入力信号とは異なったものとなっている。すなわち、誤動作を起こしている。
【００３１】
以上のように、従来技術においては、サンプリング周期に同期したタイミングでノイズが入力端子に印加された場合には、誤動作を起こすことがあった。
【００３２】
本発明は、このような事情に鑑みて創作したものであり、エッジパルスの侵入にかかわらず、入力信号を誤りなく正確にフィルタ処理できる入力信号フィルタ処理方法を提供することを目的としている。
【課題を解決するための手段】
【００３３】
本発明による入力信号フィルタ処理方法は、所定のサンプリング周期で入力信号のサンプリングを行う入力信号フィルタ処理方法であって、
サンプリング期間途中でエッジパルスを検出するステップと、
エッジパルスが検出されないときは、そのときのバックアップ値をステータスにコピーした上で、次のサンプリング値をバックアップ値として保持すルーチンと、
エッジパルスが検出されたときは、バックアップ値のステータスへのコピーをスキップした上で、次のサンプリング値をバックアップ値として保持すルーチンとを備えたものである。
【００３４】
上記構成において、前記エッジパルスが検出されたときのルーチンは、エッジ情報フラグをクリアし、入力エッジ割り込みを許可し、入力エッジ割り込み処理においてエッジ情報フラグをセットし、次いで入力エッジ割り込みを禁止するという態様がある。
【００３５】
上記の構成では、サンプリング周期ごとに入力信号をサンプリングすることに加えて、サンプリング期間途中でのエッジパルス検出をフィルタ条件に加えている。エッジパルスが検出されれば、そのサンプリング期間の次のサンプリング値はフィルタ出力（ステータス）に反映させないでおき、エッジパルスが検出されなかったサンプリング期間では、バックアップ値をフィルタ出力（ステータス）に反映させるので、従来技術ではフィルタ処理できなかったサンプリング周期に同期した入力ノイズを実効的にフィルタ出力（ステータス）から除去することができ、入力信号を誤りなく正確にフィルタ処理することが可能となる。
【００３６】
また、入力エッジ割り込みの禁止により、エッジパルス検出および入力エッジ割り込み処理はサンプリング期間内で１回しか受け付けないため、入力端子に細かい周期の入力信号が複数あるいは多数入った場合でも、ＣＰＵの負荷はほとんど増加しない。
【発明の効果】
【００３７】
本発明によれば、サンプリング周期に同期したノイズが印加された場合でも、誤動作が発生せず、入力信号を安定かつ早期に確定できるようにフィルタ処理することができる。
【発明を実施するための最良の形態】
【００３８】
以下、本発明にかかわる入力信号フィルタ処理方法の実施の形態を図面を用いて詳細に説明する。
【００３９】
図１はハードウェア構成を示す。このハードウェアは、プログラマブルコントローラ等に内蔵することができ、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ等や、インターフェース等を含むマイコン、その他で構成され、機能的に、サンプリング回路１０と、バックアップ値メモリ２０と、演算処理部３０とを備えている。サンプリング回路１０は、所定のサンプリング周期Ｔでのサンプリングに加えて、サンプリング周期Ｔよりも短い周期でエッジパルスを監視する機能を有している。サンプリング値ＳＧがバックアップされたバックアップ値ＢＵはバックアップ値メモリ２０に格納されるようになっている。演算処理部３０は、サンプリング回路１０とバックアップ値メモリ２０との協働により、本実施の形態の入力信号フィルタ処理方法を実行する。
【００４０】
図２は本発明の実施の形態における入力信号フィルタ処理方法の処理の手順を示すフローチャートである。図２（ａ）はメインルーチンを示すフローチャート、図２（ｂ）は入力エッジ割り込みのルーチンを示すフローチャートである。
【００４１】
ステップＳ１において、サンプリング期間途中でエッジパルスを検出したかを判断し、エッジパルス検出がないときはステップＳ２に進み、エッジパルス検出があったときはステップＳ３に進む。
【００４２】
エッジパルス検出がなくてステップＳ２に進むと、現在のバックアップ値ＢＵをステータスＳＴにコピーする（ステータスＳＴ←バックアップ値ＢＵ）。次いでステップＳ４に進み、サンプリング値ＳＧをバックアップする（バックアップ値ＢＵ←サンプリング値ＳＧ）。
【００４３】
一方、エッジパルス検出があってステップＳ３に進むと、それまでのエッジ情報フラグＦｅをゼロクリアする（Ｆｅ←０）。この場合、前回のエッジ情報フラグＦｅが“０”である場合もあるし、“１”である場合もあるが、いずれにしてもゼロクリアする。そして、ステップＳ３でさらに、入力エッジ割り込みを許可する。
【００４４】
入力エッジ割り込みのルーチンは図２（ｂ）に示されている。この入力エッジ割り込みに進むと、エッジ情報フラグＦｅに“１”を立てる（Ｆｅ←１）。これは、サンプリング期間途中でエッジパルスが検出された異常状態であることを保持していることを意味する。次いで、入力エッジ割り込みを禁止する。すなわち、一度でも、サンプリング期間途中でのエッジパルス検出があれば、以降はサンプリング期間途中での入力エッジ割り込みを行わないことで、ＣＰＵの負担を軽減している。そして、メインルーチンに戻る。
【００４５】
入力エッジ割り込み処理によって、サンプリング期間途中でエッジパルスがいくつ生じるかランダムであるが、最初の１つのエッジパルスを検出すると、２つ目以降のエッジパルスの検出は行わないようにしている。
【００４６】
メインルーチンに戻ると、次のサンプリングタイミングでのサンプリング値ＳＧを正しいものとしてバックアップし、バックアップ値ＢＵ←サンプリング値ＳＧとする。このエッジパルス検出のルート（Ｓ１→Ｓ３→Ｓ４）では、バックアップ値ＢＵをステータスＳＴにコピーするステップをスキップしている。これは、サンプリング期間途中でのエッジパルス検出に基づくデータ値は無効とするとの扱いに相当している。
【００４７】
以上のように、サンプル期間途中でエッジパルス検出がなければ、サンプリング値ＳＧの確定ということになるので、現在のバックアップ値ＢＵをステータスＳＴにコピーし、フィルタ出力として表示部に出力する。そして、次のサンプリングタイミングでのサンプリング値ＳＧを正しいものとしてバックアップし、バックアップ値ＢＵ←サンプリング値ＳＧとする。
【００４８】
次に具体例を説明する。
【００４９】
まず、入力信号にノイズ等に起因するエッジパルスが侵入しない場合の動作を図３で説明する。
【００５０】
サンプルタイミングｔ１からサンプルタイミングｔ２にかけては、エッジパルス検出がない（ステップＳ１でＮＯ）。バックアップ値ＢＵ＝“Ｌ”をステータスＳＴにコピーする（ステップＳ２）。これで、ステータスＳＴ＝“Ｌ”となる。このときのサンプルタイミングｔ２でのサンプリング値ＳＧは“Ｌ”であり、そのサンプリング値ＳＧをバックアップする（ステップＳ４）。これで、バックアップ値ＢＵ＝サンプリング値ＳＧ＝“Ｌ”となる。
【００５１】
次にサンプルタイミングｔ２からサンプルタイミングｔ３にかけても、エッジパルス検出がないので、バックアップ値ＢＵ＝“Ｌ”をステータスＳＴにコピーする（ステータスＳＴ＝“Ｌ”）。さらに、“Ｌ”のサンプリング値ＳＧをバックアップする（バックアップ値ＢＵ＝“Ｌ”）。
【００５２】
次にサンプルタイミングｔ３からサンプルタイミングｔ４にかけても、エッジパルス検出がないので、バックアップ値ＢＵ＝“Ｌ”をステータスＳＴにコピーする（ステータスＳＴ＝“Ｌ”）。さらに、“Ｌ”のサンプリング値ＳＧをバックアップする（バックアップ値ＢＵ＝“Ｌ”）。
【００５３】
次にサンプルタイミングｔ４からサンプルタイミングｔ５にかけては、立ち上がりのエッジパルス検出がある（ステップＳ１でＹＥＳ）。エッジ情報フラグＦｅをクリアし、入力エッジ割り込みを許可する（ステップＳ３）。入力エッジ割り込みに進むと、エッジ情報フラグＦｅをセットし（Ｆｅ←１）、入力エッジ割り込みを禁止する（ステップＳ１１）。次のサンプリングタイミングｔ５でのサンプリング値ＳＧ＝“Ｈ”を正しいものとしてバックアップし、バックアップ値ＢＵ←“Ｈ”とする。このエッジパルス検出では、バックアップ値ＢＵをステータスＳＴにコピーするステップをスキップし、サンプリング期間途中でのエッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｌ”が維持される。
【００５４】
サンプルタイミングｔ５からサンプルタイミングｔ６にかけては、エッジパルス検出がない（ステップＳ１でＮＯ）。バックアップ値ＢＵ＝“Ｈ”をステータスＳＴにコピーする（ステップＳ２）。これで、ステータスＳＴ＝“Ｈ”となる。このときのサンプリング値ＳＧは“Ｈ”であり、そのサンプリング値ＳＧをバックアップする（ステップＳ４）。これで、バックアップ値ＢＵ＝サンプリング値ＳＧ＝“Ｈ”となる。
【００５５】
次にサンプルタイミングｔ６からサンプルタイミングｔ７にかけても、エッジパルス検出がないので、バックアップ値ＢＵ＝“Ｈ”をステータスＳＴにコピーする（ステータスＳＴ＝“Ｈ”）。さらに、“Ｈ”のサンプリング値ＳＧをバックアップする（バックアップ値ＢＵ＝“Ｈ”）。
【００５６】
次にサンプルタイミングｔ７からサンプルタイミングｔ８にかけては、立ち下がりのエッジパルス検出がある（ステップＳ１でＹＥＳ）。エッジ情報フラグＦｅをクリアし、入力エッジ割り込みを許可する（ステップＳ３）。入力エッジ割り込みに進むと、エッジ情報フラグＦｅをセットし（Ｆｅ←１）、入力エッジ割り込みを禁止する（ステップＳ１１）。次のサンプリングタイミングｔ８でのサンプリング値ＳＧ＝“Ｌ”を正しいものとしてバックアップし、バックアップ値ＢＵ←“Ｌ”とする。このエッジパルス検出では、バックアップ値ＢＵをステータスＳＴにコピーするステップをスキップし、サンプリング期間途中でのエッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｈ”が維持される。
【００５７】
以上のように、入力信号の“Ｌ”／“Ｈ”の変化がフィルタ出力（ステータスＳＴ）に正しく反映されている。
【００５８】
次に、入力信号にノイズ等に起因するエッジパルスが侵入した場合の動作を図４で説明する。
【００５９】
サンプルタイミングｔ１からサンプルタイミングｔ２にかけて、エッジパルスＰＥ１が検出される（ステップＳ１でＹＥＳ）。エッジ情報フラグＦｅをクリアし、入力エッジ割り込みを許可する（ステップＳ３）。入力エッジ割り込みに進むと、エッジ情報フラグＦｅをセットし（Ｆｅ←１）、入力エッジ割り込みを禁止する（ステップＳ１１）。次のサンプリングタイミングｔ２でのサンプリング値ＳＧ＝“Ｌ”を正しいものとしてバックアップし、バックアップ値ＢＵ←“Ｌ”とする。このエッジパルス検出では、バックアップ値ＢＵをステータスＳＴにコピーするステップをスキップし、サンプリング期間途中でのエッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｌ”が維持される。
【００６０】
次にサンプルタイミングｔ２からサンプルタイミングｔ３にかけて、エッジパルスＰＥ２が検出され、前述同様の入力エッジ割り込み処理を行い、次のサンプリングタイミングｔ３でのサンプリング値ＳＧ＝“Ｈ”をバックアップし、バックアップ値ＢＵ←“Ｈ”とする。ステータスＳＴへのバックアップ値ＢＵのコピーはスキップし、エッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｌ”が維持される。
【００６１】
次にサンプルタイミングｔ３からサンプルタイミングｔ４にかけて、エッジパルスＰＥ３が検出され、前述同様の入力エッジ割り込み処理を行う。次のエッジパルスＰＥ４は、割り込み禁止のため、検出の対象とはならない。次のサンプリングタイミングｔ４でのサンプリング値ＳＧ＝“Ｈ”をバックアップし、バックアップ値ＢＵ←“Ｈ”とする。ステータスＳＴへのバックアップ値ＢＵのコピーはスキップし、エッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｌ”が維持される。
【００６２】
次にサンプルタイミングｔ４からサンプルタイミングｔ５にかけては、立ち上がりのエッジパルス検出がある。前述同様の入力エッジ割り込み処理を行う。次のサンプリングタイミングｔ５でのサンプリング値ＳＧ＝“Ｈ”をバックアップし、バックアップ値ＢＵ←“Ｈ”とする。ステータスＳＴへのバックアップ値ＢＵのコピーはスキップし、エッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｌ”が維持される。
【００６３】
次にサンプルタイミングｔ５からサンプルタイミングｔ６にかけては、エッジパルス検出がないので、バックアップステータスＳＴは元の“Ｌ”が維持される。値ＢＵ＝“Ｈ”をステータスＳＴにコピーする（ステータスＳＴ＝“Ｈ”；ステータスＳＴの変化）。そして、サンプリング値ＳＧ＝“Ｈ”をバックアップする（バックアップ値ＢＵ＝“Ｈ”）。ここでの処理で、フィルタ出力（ステータスＳＴ）が“Ｌ”から“Ｈ”に反転する。
【００６４】
次にサンプルタイミングｔ６からサンプルタイミングｔ７にかけては、エッジパルスＰＥ５が検出され、前述同様の入力エッジ割り込み処理を行い、次のサンプリングタイミングｔ７でのサンプリング値ＳＧ＝“Ｌ”をバックアップし、バックアップ値ＢＵ←“Ｌ”とする。ステータスＳＴへのバックアップ値ＢＵのコピーはスキップし、エッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｈ”が維持される。
【００６５】
次にサンプルタイミングｔ７からサンプルタイミングｔ８にかけて、エッジパルスＰＥ６が検出され、前述同様の入力エッジ割り込み処理を行う。次のエッジパルスＰＥ７は、割り込み禁止のため、検出の対象とはならない。次のサンプリングタイミングｔ８でのサンプリング値ＳＧ＝“Ｌ”をバックアップし、バックアップ値ＢＵ←“Ｌ”とする。ステータスＳＴへのバックアップ値ＢＵのコピーはスキップし、エッジパルス検出に基づくデータ値は無効とする。ステータスＳＴは元の“Ｈ”が維持される。
【００６６】
以上のように、入力信号の“Ｌ”／“Ｈ”の変化がフィルタ出力（ステータスＳＴ）に正しく反映されている。
【００６７】
入力信号は、サンプルタイミングｔ１からサンプルタイミングｔ５の直前までは本来は“Ｌ”である。ただし、エッジパルスＰＥ１〜ＰＥ４が侵入している。フィルタ出力（ステータスＳＴ）は、サンプルタイミングｔ１からサンプルタイミングｔ６まで“Ｌ”を維持し、入力信号に侵入したエッジパルスＰＥ１〜ＰＥ４はネグレクトされている。すなわち、エッジパルスに起因する誤動作は防止されている。サンプルタイミングｔ５からサンプルタイミングｔ９にかけての本来“Ｈ”の入力信号についても、それに対応するフィルタ出力（ステータス）はサンプルタイミングｔ６以降“Ｈ”を維持し、入力信号に侵入したエッジパルスＰＥ５〜ＰＥ７はネグレクトされている。すなわち、エッジパルスに起因する誤動作は防止されている。
【産業上の利用可能性】
【００６８】
本発明の入力信号フィルタ処理方法は、特にプログラマブルコントローラの入力モジュールにおいて、サンプリング周期に同期したノイズが印加された場合でも誤動作を発生させず、入力信号を安定かつ早期に確定するフィルタ処理技術等として有用である。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態における入力信号フィルタ処理方法を実施するハードウェア構成を示す概略構成図
【図２】本発明の実施の形態における入力信号フィルタ処理方法の処理の手順を示すフローチャート
【図３】本発明の実施の形態における入力信号フィルタ処理方法において、入力信号にノイズ等に起因するエッジパルスが侵入しない場合の動作を示すタイミングチャート
【図４】本発明の実施の形態における入力信号フィルタ処理方法において、入力信号にノイズ等に起因するエッジパルスが侵入した場合の動作を示すタイミングチャート
【図５】従来技術におけるプログラマブルコントローラの入力モジュールの概略構成図
【図６】従来技術における入力信号フィルタ処理方法の処理の手順を示すフローチャート
【図７】従来の技術における入力信号フィルタ処理方法において、入力信号にノイズ等に起因するエッジパルスが侵入しない場合の動作を示すタイミングチャート
【図８】従来の技術における入力信号フィルタ処理方法において、入力信号にノイズ等に起因するエッジパルスが侵入した場合の動作を示すタイミングチャート
【符号の説明】
【００７０】
１０  サンプリング回路１
２０  バックアップ値メモリ
３０  演算処理部
ＰＥ１〜ＰＥ７  エッジパルス
【図１】
2009237882.tif 000003
【図２】
2009237882.tif 000004
【図３】
2009237882.tif 000005
【図４】
2009237882.tif 000006
【図５】
2009237882.tif 000007
【図６】
2009237882.tif 000008
【図７】
2009237882.tif 000009
【図８】
2009237882.tif 000010