FAQ
FAQ検索結果
検索キーワード:
Qローパスフィルターの適用による波形の立ち上がりへの影響を知りたい。
このサンプルシーケンス(パネル)はステップ波形にローパスフィルターを適用した後の波形を表示します。
このサンプルシーケンス(パネル)はFAMOS Ver 7.2以降で動作します。
バターワースは周波数特性において0dBの通過帯域が広くカットオフ周波数付近で急峻な傾きを持つという利点がありますが、時系列上ではリンギングが目立ちます。
ベッセルや臨界減衰は周波数特性において通過帯域で徐々にレベルが下がりカットオフ周波数付近でも傾きが緩いことが難点ですが、時系列上ではリンギングがほとんどありません。
上記のような特徴から、バターワースは周波数解析に向き、またリンギングが気にならないような凹凸の繰り返しである振動波形のような波形の解析に向くと言えます。
一方で、車速やギア数など時系列上での波形の形状を見ることが重要な場合には、ベッセルや臨界減衰が向くと言えます。
Q各バージョンのリリース時期
リリース時期は以下
- V7.5 2019/12
- V7.4 2018/12
- V7.3 2017/12
- V7.2 2017/1
- V7.1 2016/1
- V7.0 2014/7
- V6.3 2012/12
- V6.2 2011/12
- V6.1 2010/12
Qすべての極大値、極小値にマーカーを表示したい。
複数個所のマーカーを一度に打つことはできませんのでループ文で1つずつマーカーを設定していく必要があります。すべての極大値、極小値はxMax()関数により取得することができます。
例)
Data = Sin(Ramp(0, 0.001, 1000)*PI2*9)*Sin(Ramp(0, 0.001, 1000)*PI2*0.5) ; サンプルデータ
_maxX = xMax(Data, Min(Data)) ; 極大値のX座標
_maxY = Value(Data, _maxX); 極大値
_minX = xMax(-Data, Min(-Data)) ; 極小値のX座標
_minY = Value(Data, _minX); 極小値
_XYmin = XYof(_minX, _minY)
; カーブウィンドウを表示
CwNewWindow("Cv1", "show")
CwSelectWindow("Cv1")
CwAction("reset")
CwPosition(0,0,640,480)
CwNewChannel("append last axis", Data)
; マーカーの表示
_nnn = Leng?(_maxY)
for _iii = 1 to _nnn step 1
CwNewElement("marker")
CwMarkerSet("x.type",1)
CwMarkerSet("x", _minX[_iii] ) ; マーカーを描画する位置のX座標
CwMarkerSet("y.type", 1)
CwMarkerSet("y", _minY[_iii]) ; マーカーを描画する位置のY座標
CwMarkerSet("text","〈auto〉");〈auto〉=X座標とY座標を表示
CwNewElement("marker")
CwMarkerSet("x.type",1)
CwMarkerSet("x", _maxX[_iii] ) ; マーカーを描画する位置のX座標
CwMarkerSet("y.type", 1)
CwMarkerSet("y", _maxY[_iii]); マーカーを描画する位置のY座標
CwMarkerSet("text","〈auto〉");〈auto〉=X座標とY座標を表示
CwMarkerSet("angle", -45)
end
同様の例としまして表示数を上位10個までに限定したサンプルパネルがこちらにありますので、こちらも合わせてご参照ください。
Qimc社データロガーの計測データフォルダーの読み込み
サンプルシーケンスをダウンロードしてください。
FAMOSでサンプルシーケンスを読み込んで実行してください。
試験設定フォルダーを指定し、その下の計測フォルダーごとにグループ変数へ読み込みます。
フォルダー構成の例)

の場合、フォルダー選択ダイアログで Experiment_0001 を選択してください。
_NameType変数に0を指定するとGrData0001, GrData0002, ... とグループ変数名を連番にします。計測フォルダー名をコメントに記載します。
1を指定すると計測フォルダー名をグループ変数名にします。シーケンスで使用するには{2020-06-15 14-00-00 (1)}のように{}で囲む必要があります。
以降のシーケンスでの取り扱いの容易さから 0 を推奨します。
計測データを格納したグループ変数名はグループ変数GrDataNameに登録されています。
シーケンスでは、2つ目の計測データフォルダー内の3つ目のチャンネルは下記の様にアクセスできます。
_data = <GrDataName:[2]>:[3] ; _NameType = 0 の場合
_data = {<GrDataName:[2]>}:[3] ; _NameType = 1 の場合(0 の場合も可能)

QVersion 6.1以降 新機能
https://www.toyo.co.jp/mecha/products/detail/imc-famos.html#a07
Qショートカットボタン、お気に入り
同じ関数を何回も使用したり、同じデータ処理やシーケンスを繰り返す場合にそれらの処理をショートカットボタン(FAMOS Version3)やお気に入りリスト(FAMOS Version4)に登録してクリック一発で実行させることができます。
具体的には以下のような例です。
定期的にデータ処理を行わなければならない場合、この毎回同じ処理を繰り返すと間違いが起きたり、面倒です。ここで簡単なサンプルを作成してお気に入りリストの利用方法を説明します。
準備
最初に簡単なシーケンスを作成してください。
_temp = BoxValue?("周期",1,0) Res = Sin( Ramp(0,pi2/1000, 1000*_temp)) Show Res このシーケンスを”sample.seq”として保存します。
設定
関数リストの横にある”お気に入り”というタブをクリックしてください。次にリストの上で右クリックします。

リストの上で右クリックするとコンテキストメニューが現れますので”新しいエントリー”を選択してください。

設定ダイアログが表示されます。このダイアログでお気に入りリストの内容を設定します。
以下の図では必要な設定を行った様子を示しています。

各項目は以下のような内容です
| 命名 | リストに表示される名称 |
|---|---|
| 実行 | 式を実行させるか、もしくは表示させるだけか |
| ボタン | Ver3互換モードで使用。Ver4では必要ありません |
| 式/命令 | 実行したい式や命令 |
| ツールチップ | リストに表示される簡単な説明 |
| ヘルプテキスト | オンラインヘルプに表示される説明 |
この設定を行うと以下のように表示されます。

実行
準備で作成した”サンプル”リスト項目を選択して”ENTER”ボタンを押してください。
以下のダイアログ表示されますので、希望する周期を設定してください。

OKボタンをクリックすると、以下のカーブウィンドウが表示されます。

Qサーバーからクライアントを強制的に終了できますか?(その2)
Q四捨五入するためには?
Qシーケンスを使ってマーカーを表示させる
QDDE通信でFFTアナライザー"OROS"をコントロールする方法
FFTアナライザーOROSはDDE通信機能を備えていますので、FAMOSからOROSをコントロールすることができます。
サンプル
;解析を開始します--------------------------
err = DDESend( "FP4","Frm_dde","RUN 1")
;解析を停止します--------------------------
err = DDESend( "FP4","Frm_dde","STOP")
;動作状態取得--------------------------
err = DDESend( "FP4","Frm_dde","GET_STATUS")
State = DDEInq( "FP4","Frm_dde","Text_STATUS",1)
;結果の転送(その1)----------------------------
err = DDESend( "FP4","Frm_dde","TRA S,0")
;結果の転送(その2)----------------------------
err = DDESend( "FP4","Frm_dde","EXPORT_RESULT 0,0,test")
注意
アプリケーション名(”FP4”)は各解析モードに応じて変わります。
以下の手順でアプリケーション名を取得してください。
- OROSをインストールしたディレクトリー内の"OR76X.INI"ファイルを開く
- セクション"ANALYZER"のキー"Mode"の値を取得する
- OROSをインストールしたディレクトリー内の"OR25.INI"ファイルを開く
- ”MODE ”と2で取得した文字列を連結したセクションとキー”App”から値を取得
【OR76.INI】
[ANALYZER]
Mode=0 FP4 1.14
【OR25.INI】
[Mode 0 FP4 1.14]
Caption=Real Time FFT Analyzer
Number=&H1&
App=FP4
Qセグメントやイベントとはどういう意味ですか?
データ形式の種類
u-LOGGER(データロガー)やFAMOS(波形解析ソフト)は、あらゆるデータフォーマットを取り扱うことができるように、以下のデータ形式を用意しています。
| 標準 | 標準は単に計測をスタート&ストップしただけのデータ列です。 FAMOSのほとんどの数学関数はこの標準波形を対象としています。 |
|---|---|
| セグメント | セグメントは、行列データのことを意味します。 FFT関係の計算などブロック数で決まったものに対して、定義されます。 |
| イベント | イベントは、トリガー計測など毎回の測定時間が不定の場合に用いられるデータ形式です。 |
データがどの形式であるかは、調べたい変数を選択して"変数/プロパティ"で起動するダイアログのデータ形式で確認できます。
下の例は“セグメント波形”です。

例えば、クラスカウトキットやスペクトラムキットの多くの関数は、ブロック数が決まっているため、結果をセグメントで返します。
【注意】
標準関数の多くはセグメントやイベント構造を持った変数を直接処理できません。
例えば、以下のようなスペクトラム計算された波形に対して最大値を求める関数”Max”を適用するとエラーが発生します。

これは物理的な意味を考えればエラーが発生して当たり前です。
スペクトラム計算された波形データはマトリクス形式で保存されています。
この様子を確認するためには波形エディターでデータを観察してください。

ユーザーは”このデータの最大値を求めろ!”と指示しているわけですが、どの最大値を求めればよいのでしょうか?
例えばセグメント波形であればどのセグメントの最大値を求めるのか指示しなければなりません。
この指示の方法は以下を参照してください。
各セグメントの取得方法
セグメント波形を関数で処理したい場合には、Data[1]のようにセグメント番号を指定してデータを取り出します。
この[1]は1番目のセグメントを意味します。
取り出したセグメント = セグメント波形[ セグメント番号 ]
各イベントの取得方法
次のコマンドで取得できます。
取り出したイベント = EventGet( イベント波形, イベント番号, 0)
Qノイズが多い場合のピーク値の検出
以下の波形のようにノイズが多く含まれた信号のピーク値を求めます。
ピークとして、0.7[sec]付近の正側のピークと0.8[sec]付近の負側のピークを求めます。

最初にノイズ成分に影響されないようにオリジナル波形にローパスフィルターを適用した波形を適用します。
S_100 = Smo( ORIGINAL, 0.10)

次に信号が0を横切ったときを検出します。このとき関数”All0”をします。All0は0を横切ったときのX座標(Array)を返します。
さらに、この結果の何番目(index)が正側のピークを表しているか求めます。
Array = All0( S_100) ;0点を横切る全ての点を抽出
max_x = Pos( S_100, Max(S_100)) ;最大値のX座標を取得
index = Floor( Pos(Array, max_x))+1 ;この変数にピークに対応
するインデックス番号が入力されます。
;X座標に相当するインデックス番号を取得
この変数にピークに対応 するインデックス番号が入力されます。 ;X座標に相当するインデックス番号を取得
この後、正側と負側のピークを検出する区間を切り出します。
p_peak = cut( Original, ValueIndex(Array,index-1),
ValueIndex(Array,index))
m_peak = cut( Original, ValueIndex(Array,index ),
ValueIndex(Array, index+1 ))
切り出された波形に対して、ピーク値を求めます。
plus = Max(p_peak)
minus = Min(p_peak)
以上でピーク値を求めることができます。この結果をカーブウィンドウにプロットするには以下のコマンドを適用すると表示できます。
plus_G = XYof( Pos( p_peak , Max(p_peak)), Max(p_peak)) minus_G = XYof( Pos( m_peak , Min(m_peak)), Min(m_peak))

Qコマンドのオンラインヘルプを表示させるには?
Qテキストデータをインポートすることはできますか?
Qパルスを5.6 pulse/rev(パルス/回転)など整数値以外に設定するためには?
整数値以外のタコ信号を処理するためにはバーチャルタコ(少数付きタコ)を使用してください。
1) タコの定義 (外部同期や入力)
2) バーチャルタコ(小数付きタコ)のソースへタコを接続
3) バーチャルタコ(少数付きタコ)のギア比設定テーブルを使ってタコレシオを設定します。

注意
バーチャルタコ(少数付きタコ)で設定可能な値の範囲は0.001-2です。
注意
バーチャルタコ(少数付きタコ)の回転数はソースで指定したタコ信号にタコレシオを乗じます。
バーチャルタコ(少数付きタコ)回転数 = 外部タコ X タコレシオ
例
例えば、5.6というパルス/回転を設定したいと仮定します。
バーチャルタコ(少数付きタコ)のタコレシオを2より小さくするために、外部タコのパルス/回転=7とします。
これによりバーチャルタコ(少数付きタコ)を
5.6/7 = 0.8
とすれば、希望のパルス/回転を取得できます。
Qライセンスエラーで起動できない
起動時にライセンスエラーが表示された場合、メッセージの種類によって原因が分かれます。
| Invalid license number ! [1] | ライセンスキーが正しくインストールされていません インストーラCDからライセンスを取り出し、NVGateがインストールされたフォルダに貼り付けてください 詳しくは、ドングルが認識されない(その2)をご参照ください。 |
|---|---|
| Invalid license number ! [2] | ライセンスの有効期限が切れています(デモや修理等で弊社の代替器やスーパードングルを使用している場合のみ) |
| Invalid license number ! [3] | PCの日付がライセンスキーの発行日より古くなっています。 現在の日付に変更してください。 |
Qウィンドウの追加ダイアログにH1やコヒーレンスが見つからない
以下2つの可能性があります。各々ご確認ください。
1. クロススペクトラムが設定されていない
アナライザ設定ブラウザの”FFT1>FFTアナライザ>クロススペクトラム”の設定がなされていないことが原因です。

クロススペクトラムをダブルクリックすると、以下のダイアログが表示されます。クロス演算を行いたい組み合わせにチェックしてください。

(補足)
V7以降では、リボンタブから”分析設定>FFT1> ”を選択し、表示されたダイアログで”FFTアナライザ”タブの”マトリクス”からも設定することができます。

2. オプションモードで伝達関数が選択されていない
V7以降
リボンタブから”ホーム>ユーザ設定>一般”からユーザ設定ダイアログを開き、オプションモードの”関数”にチェックが入っているか確認してください。チェックが入っていない場合は、チェックを入れてください。

V6.7以前
ツールバーの”構造モード”ボタン
がチェックされているか(凹んだ状態か)確認してください。チェックされていない(凹んでいない)場合は、クリックしてください。

Qエディットボックスの内容を検査したい
QOROSのデータを読み込むためにはどうすればよいですか?
QFFT解析結果を1/3オクターブで表示
;*********************************************************
;FFT解析結果を1/3オクターブバンドで表示させるサンプル
; FFTした結果は周波数間隔がリニアです。
; 1/3オクターブ表示は対数軸なので、変換が必要になります。
; (高周波では1/3オクターブの1つのバンドに対して
; 複数のFFTした結果が含まれることになります。)
;
;FFT解析結果を変数"_DATA"に予め格納してください
;*********************************************************
;----------------------------
;データ処理する周波数
_StartFreq = 1
_StopFreq = 250
;----------------------------
;----------------------------------------------
;1/3オクターブデータの作成
;このサンプルでは0.1Hzから8000Hzまでのデータを生成しています。
;
; _Startで開始オクターブインデックスを指定します。
; 例: -1=0.1Hz: 0=1Hz: 1=10Hz
;_Octaveでオクターブバンドを指定します。
; 例:3を指定した場合、1~1000Hz
;----------------------------------------------
_Start = -1 ;開始オクターブインデックス
_Octave = 5 ;オクターブバンド
_OctData = GrNew()
;[上側周波数]
_OctData:High = Leng( 0, 10*_Octave)
_OctData:High = XOff( _OctData:High, _Start*10)
;[下側周波数]
_OctData:Low = Leng( 0, 10*_Octave)
_OctData:Low = XOff( _OctData:Low, _Start*10)
;[中心周波数]
_OctData:Center = Leng( 0, 10*_Octave)
_OctData:Center = XOff( _OctData:Center, _Start*10)
_i=1
While _i<=_Octave
;[上側周波数]
_OctData:High[10*(_i-1)+1] =1.12*10^(_Start)
_OctData:High[10*(_i-1)+2] =1.40*10^(_Start)
_OctData:High[10*(_i-1)+3] =1.80*10^(_Start)
_OctData:High[10*(_i-1)+4] =2.24*10^(_Start)
_OctData:High[10*(_i-1)+5] =2.80*10^(_Start)
_OctData:High[10*(_i-1)+6] =3.55*10^(_Start)
_OctData:High[10*(_i-1)+7] =4.50*10^(_Start)
_OctData:High[10*(_i-1)+8] =5.60*10^(_Start)
_OctData:High[10*(_i-1)+9] =7.10*10^(_Start)
_OctData:High[10*(_i-1)+10] =9.00*10^(_Start)
;[下側周波数]
_OctData:Low[10*(_i-1)+1] =0.90*10^(_Start)
_OctData:Low[10*(_i-1)+2] =1.12*10^(_Start)
_OctData:Low[10*(_i-1)+3] =1.40*10^(_Start)
_OctData:Low[10*(_i-1)+4] =1.80*10^(_Start)
_OctData:Low[10*(_i-1)+5] =2.24*10^(_Start)
_OctData:Low[10*(_i-1)+6] =2.80*10^(_Start)
_OctData:Low[10*(_i-1)+7] =3.55*10^(_Start)
_OctData:Low[10*(_i-1)+8] =4.50*10^(_Start)
_OctData:Low[10*(_i-1)+9] =5.60*10^(_Start)
_OctData:Low[10*(_i-1)+10] =7.10*10^(_Start)
;[中心周波数]
_OctData:Center[10*(_i-1)+1] =1.00*10^(_Start)
_OctData:Center[10*(_i-1)+2] =1.25*10^(_Start)
_OctData:Center[10*(_i-1)+3] =1.60*10^(_Start)
_OctData:Center[10*(_i-1)+4] =2.00*10^(_Start)
_OctData:Center[10*(_i-1)+5] =2.50*10^(_Start)
_OctData:Center[10*(_i-1)+6] =3.15*10^(_Start)
_OctData:Center[10*(_i-1)+7] =4.00*10^(_Start)
_OctData:Center[10*(_i-1)+8] =5.00*10^(_Start)
_OctData:Center[10*(_i-1)+9] =6.30*10^(_Start)
_OctData:Center[10*(_i-1)+10] =8.00*10^(_Start)
_Start = _Start+1
_i=_i+1
End
;データ処理する周波数を含むようにインデックスを求めます。
_StartIndex = Floor( Pos( _OctData:Low, _StartFreq))
_StopIndex = Floor( Pos( _OctData:High,
_StopFreq)-0.001)+1
_OctNum = _StopIndex-_StartIndex+1
_OctRes = Leng( 0, _OctNum)
_i=1
While _i<=_OctNum
;FFTデータをオクターブバンド毎に切り出し、その合計値を求めます。
_OctIndex = _StartIndex +(_i -1)
_OctLowFreq = Value(_OctData:Low, _OctIndex)
_OctHighFreq = Value(_OctData:High, _OctIndex)
_OctCutData = Cut( _DATA, _OctLowFreq, _OctHighFreq)
_OctRes[_i] = RMS( _OctCutData)
_i=_i+1
End
;-------------------------------
;他の波形と重ね書きできるようにXY波形にします。
_OctXAxis = Cut( _OctData:Center, _StartIndex, _StopIndex)
OctResult = XYof( _OctXAxis, _OctRes)
Delete _*




