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)
;データ表示。実際の処理では必要なし


製品詳細はこちら

<< シーケンス / 関数に関するFAQ一覧へ戻る