デジタルフィルタとは

デジタルフィルタは信号に含まれる不要なノイズを除去したり、 特定の周波数成分のみを抽出するための信号処理手法です。 PLCのアナログ入力値にはノイズが含まれることが多く、 ローパスフィルタやノッチフィルタを利用することで 安定した制御や測定が可能になります。

概要

OMRON NX/NJシリーズで利用できる デジタルフィルタのサンプルプログラムを紹介します。
アナログ入力に含まれるノイズの除去や、 特定周波数成分の抽出を行うための ローパスフィルタ(LPF)、 ハイパスフィルタ(HPF)、 バンドパスフィルタ(BPF)、 ノッチフィルタなどを ファンクションブロックとして実装しています。
各フィルタの動作波形とサンプルプログラムを公開していますので、 PLCでの信号処理やアナログデータ解析の参考にしてください。

簡易的なデジタルフィルタを作成します

30Hz正弦波に500Hzノイズを加えた元波形

元の波形

元の波形には30Hzの正弦波に500Hzのノイズが含まれています
以下の8種類のフィルタをかけてみます

ローパスフィルタ適用後の波形

ローパスフィルタ

100Hz以上の周波数をカットオフしてノイズを除去します

ハイパスフィルタの波形

ハイパスフィルタ

100Hz以下の周波数をカットオフしてノイズを除去します

バンドパスフィルタの波形

バンドパスフィルタ

30Hzから1オクターブの周波数を通過させます

ノッチフィルタの波形

ノッチフィルタ

30Hzから1オクターブの周波数を除去します

ローシェルフフィルタの波形

ローシェルフフィルタ

100Hz以下の周波数を増幅します

ハイシェルフフィルタの波形

ハイシェルフフィルタ

100Hz以上の周波数を増幅します

ピーキングフィルタの波形

ピーキングフィルタ

30Hzから1オクターブの周波数を増幅します

オールパスフィルタの波形

オールパスフィルタ

カットオフ周波数あたりの位相を変えます

シンボル

各ファンクション共通の入出力変数

入出力
buf
2つ前の入力と出力の記憶(変数を必ず割付けてFB外で使用しないでください)
入力
In
入力値
SampFreq
サンプリング周波数
Freq
カットオフ周波数
BandWidth
帯域幅
gain
増幅量
出力
Result
計算結果

サンプリング周波数はデフォルトは実行するタスクのタスク周期で1スキャンで複数のアナログ値を取得する高速アナログユニットでは設定値に合わせてサンプリング周波数(Hz)を入力してください
以下のグラフは30Hz+500Hzの波形をサンプリング周波数=10000Hzで収集したときにフィルタを通した時のグラフです

LPF (ローパスフィルタ)

カットオフ周波数以下を通すフィルタ

LPF

HPF (ハイパスフィルタ)

カットオフ周波数以上を通すフィルタ

HPF

BPF (バンドパスフィルタ)

カットオフ周波数から帯域幅分のみ通すフィルタ
カットオフ周波数を30Hzとして帯域幅を1オクターブとした場合は30/2から30x2の周波数になるので、15Hzから60Hzを通すことになります

BPF

NotchF (ノッチフィルタ)

カットオフ周波数から帯域幅以外を通すフィルタ
BPFとは逆に15Hzから60Hz以外を通すことになります

Notch

LowShelfF (ローシェルフフィルタ)

カットオフ周波数以下を増幅量で指定した分だけ増幅するフィルタ

LowShelf

HiShelfF (ハイシェルフフィルタ)

カットオフ周波数以上を増幅量で指定した分だけ増幅するフィルタ

HiShelf

PeekingF (ピーキングフィルタ)

カットオフ周波数を中心とした帯域幅分を増幅量で指定した分だけ増幅するフィルタ

Peeking

AllPassF (オールパスフィルタ)

カットオフ周波数周辺のみの位相を変えるフィルタ

AllPass

使用例

ラダー

lpfLadder2

AnalogInのデータを100Hz以下の周波数のみ通すフィルタをかけてFilterAnalogに出力します

ソース

ローパスフィルタ(LPF)

一例としてローパスフィルタは以下のように計算しています

関連ページ

ダウンロード

参考サイト様

簡単なデジタルフィルタの実装

この記事へのコメント