FAQ

FAMOS

シーケンス / 関数top

シーケンス / 関数

ID.s014

Q. 等級線を使ったレベル判定

A.


データロガーやFFTアナライザーを使って測定したデータに対して、等級線を使用して良否判定する方法を紹介します。

上図において、波形Speedは測定データです。波形は等級線です。
等級線は以下のようなデータを設定しています。

Limit.X Limit.Y
0.5 5
2 3
3 3
3.5 4

例えば、測定波形が等級線を越えた場合、不良品であると仮定します。
設定したレベルを超えたかどうか判断するために関数Subを利用してください。

 Judge = Sub( Speed, Limit, 0

結果は以下のようになります。

  注意:
ここで、結果JudgeのX軸範囲に注目してください。
等級線で設定された範囲のみで計算します。

結果Judgeが0より大きい値を持つとき、不良であることを示します。
0より大きい値を持つかどうかは以下のように簡単に判定することができます。

  IF ?Max( Judge) > 0
Err = BoxMessage( "良否判定","この製品は規格を満たしていません", "!1")
End 

サンプル

測定波形は既に用意されているとします。

;***************************************
;等級線を作成します
;***************************************
    tempX = Leng( 0, 4)
    tempX[1] = 0.5
    tempX[2] = 2
    tempX[3] = 3
    tempX[4] = 3.5
    tempY = Leng( 0, 4)
    tempY[1] = 5
    tempY[2] = 3
    tempY[3] = 3
    tempY[4] = 4
    Limit=XYof( tempX, tempY)

;***************************************
;判定
;***************************************
    Judge = Sub( Speed, Limit,0)
    IFMax( Judge) > 0
        Err = BoxMessage( "良否判定","この製品は規格を満たしていません", "!1")
    End

サンプル

さらに数段階の等級を設定し、等級判定することもできます。
測定波形は既に用意されているとします。

;***************************************
;等級線を作成します
;***************************************
i=1
While i<=7
    tempX = Leng( 0, 4)
    tempX[1] = 0.5
    tempX[2] = 2
    tempX[3] = 3
    tempX[4] = 3.5
    tempY = Leng( 0, 4)
    tempY[1] = 2+i
    tempY[2] = 0+i
    tempY[3] = 0+i
    tempY[4] = 1+i
    FName = TAdd( "Level", TForm( i, "F00"))
     = XYof( tempX, tempY)
    GrChanAppend( Limit, )
    Del
    i=i+1
End

;***************************************
;判定
;***************************************
i=1
While i<=7
    FName = TAdd( "Level", TForm( i, "F00"))
    Judge = Sub( Speed, Limit:,0)
    IF Max( Judge) < 0
        Mes = TAdd( "この製品のレベルは", TForm( i, "F00"))
        Mes = TAdd( Mes, "です。")
        Err = BoxMessage( "レベル判定",Mes, "!1")
        i=7
    End
    i=i+1
End

製品詳細はこちら

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