FAQ
FAMOS
シーケンス / 関数top
└シーケンス / 関数
ID.s007
Q. エンジンの回転パルスを計測しました。各回転パルス間の時間を求めることはできますか?
A.
関数“SearchLevel”を使用すると簡単に求めることができます。
以下のようなコマンドでパルス間隔を求めることができます。
res = SearchLevel(data, 2, 5, 0, 2, 1, 0, 1)
res1 = CutIndex( res.X, 1, leng?(res.X)-1)
res2 = CutIndex( res.X, 2, leng?(res.X))
DiffTime = Res2-Res1
解説
最初に関数“SearchLevel”を使用して、5Vになった部分を検索します。
結果resには、検索された時間とそのときの値がX、Yのデータとして出力されます。
この結果に対して、インデックスを1つずらした波形を作成します。
これは以下のような処理を行っています。
res1 | 1個目のX座標 | 2個目のX座標 | 3個目のX座標 | 4個目のX座標 |
---|---|---|---|---|
res2 | 2個目のX座標 | 3個目のX座標 | 4個目のX座標 | 5個目のX座標 |
これらの値を減算することにより、各パルス時間間隔を求めることができます。以下にサンプルを示します。
;----------------------------------------------------------------
;サンプルパルスデータ作成
;各パルスの間隔が異なるように設定しています。
;----------------------------------------------------------------
;****************************
; Low=0, High=5のパルスデータを作成します。
;****************************
p=0 ;データ処理経過を%で表示
YUnit p %
show p
data = Leng(0,0)
i=1
While i<=720
data = Join( data, Leng(0,10+2*Mod(i,5))+0) ;0のデータを作成
data = Join( data, Leng(0,10+2*Mod(i,5))+5) ;5のデータを作成
p = i/720*100
i = i+1
End
data = XDel( data, 0.001);サンプルレートの設定
XUnit data s
Show data
CvXAxis( data, 0, 0.2, 0)
CvYAxis( data, data, 0, -1, 6, 10000, -2)
;----------------------------------------------------------------
;
これ以降が実際の処理です。
;----------------------------------------------------------------
;****************************
;トリガーポイントの検出
; 関数"SearchLevel"を使用します。
; 結果は立ち上がりエッジのX,Yデータとなります。
;****************************
res = SearchLevel(data, 2, 5, 0, 2, 1, 0, 1)
CvYAxis( data, Res, 0, -1, 6, 10000+5000+400, -2);データ表示。
実際の処理では必要なし
;****************************
;パルス間隔の計算
;****************************
res1 = CutIndex( res.X, 1, leng?(res.X)-1)
res2 = CutIndex( res.X, 2, leng?(res.X))
DiffTime = Res2-Res1
Show DiffTime ;データ表示。実際の処理では必要なし
CvYAxis( DiffTime, DiffTime, 0, 0, 0, 3000+300, -2)
;データ表示。実際の処理では必要なし
CvXAxis( DiffTime, 1, 20, 0)
;データ表示。実際の処理では必要なし