« 入力信号をサンプリングして出力してみます。 | トップページ | 入力信号のOR(論理和)をしてみます »

2010年12月18日

入力信号のレベル2回一致のフィルタを作ります

入力信号のレベル2回一致のフィルタを作ります。

外部からの入力信号にノイズが載ってしまうことがあります。

それで、ノイズを除去するためによく使う方法が、

入力信号をある間隔でサンプリングして、その値が複数回連続一致したら、内部に取り込無と言う方法です。

ここでは、1秒毎サンプリングで2回連続一致で取り込むプログラムを書いてみます。

Mosbench

入力ポートは5121番ポートを使用します。

昨日説明しましたが、仮想IOポートです。

5121番ポートをリードした値をstatusという変数に代入しています。

その前の行で、statusをstatus_oldと言う変数へ代入しています。

これで、status_oldは、5121番ポートを1秒前にリードした値になります。

先頭に「if」(もし)と書いてある行で、

status == status_old

とありますが、1秒前のリード値と今回のリード値が同じなら、

次の行を実行しなさいと言う命令になります。

つまり、

1秒前のリード値と今回のリード値が同じなら、

今回のリード値を2113番ポートに出力します。

このプログラムを実行すると、以下の波形になります。

Photo_2

7秒から6秒のところをみてください。

入力のHighを2回サンプリングすると、出力がHighになります。

9秒のところのように、

1回だけHighをサンプリングしても、出力はHighにはなりません。

また、

3秒のところのように、

出力がHighになっている状態で、入力Lowを1回サンプリングしても

出力はHighのままです。

★今日のまとめ

サンプリングデータの更新

if文の使用例(2つの変数が同じだったら、指定処理を行う)

■Link: 「高性能制御を簡単に、みんなに!」  

簡単 お手軽 低コスト Windows リアルタイムIO制御環境 【MOSBench EY(モスベンチ いいわい)】

MOSBench EY(リアルタイムWindows入門)

プライムモーション社(みんなで手軽にWindowsリアルタイムIO制御)

プライムモーション(Windowsで手軽にリアルタイムIO制御)

プライムモーション社(RTEXとパルスの16軸マルチタスクコントローラ)

プライムモーション(RTEXとパルス列のマルチプロセスコントローラ)

|

« 入力信号をサンプリングして出力してみます。 | トップページ | 入力信号のOR(論理和)をしてみます »

パソコンでI/O制御」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 入力信号をサンプリングして出力してみます。 | トップページ | 入力信号のOR(論理和)をしてみます »