FAQ

FAQ検索結果

検索キーワード:

Qローパスフィルターの適用による波形の立ち上がりへの影響を知りたい。

A
時間軸上でローパスフィルター後のステップ波形の立ち上がり方を比較するサンプルシーケンス(パネル)を用意しました。こちらからzipファイルをダウンロード、解凍してFAMOSに読み込んでください。
このサンプルシーケンス(パネル)はステップ波形にローパスフィルターを適用した後の波形を表示します。
このサンプルシーケンス(パネル)はFAMOS Ver 7.2以降で動作します。

バターワースは周波数特性において0dBの通過帯域が広くカットオフ周波数付近で急峻な傾きを持つという利点がありますが、時系列上ではリンギングが目立ちます。
ベッセルや臨界減衰は周波数特性において通過帯域で徐々にレベルが下がりカットオフ周波数付近でも傾きが緩いことが難点ですが、時系列上ではリンギングがほとんどありません。
上記のような特徴から、バターワースは周波数解析に向き、またリンギングが気にならないような凹凸の繰り返しである振動波形のような波形の解析に向くと言えます。
一方で、車速やギア数など時系列上での波形の形状を見ることが重要な場合には、ベッセルや臨界減衰が向くと言えます。

 

製品詳細はこちら

回答を閉じる

Q各バージョンのリリース時期

A

リリース時期は以下

  • 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すべての極大値、極小値にマーカーを表示したい。

A

複数個所のマーカーを一度に打つことはできませんのでループ文で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社データロガーの計測データフォルダーの読み込み

A
imc社データロガーの計測データフォルダーをまとめて読み込むためのサンプルシーケンスを用意しました。
サンプルシーケンスをダウンロードしてください。

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以降 新機能

A
機能追加の内容については、以下のリンクのWhat’s newをご参照ください。
https://www.toyo.co.jp/mecha/products/detail/imc-famos.html#a07

 

回答を閉じる

Qショートカットボタン、お気に入り

A

同じ関数を何回も使用したり、同じデータ処理やシーケンスを繰り返す場合にそれらの処理をショートカットボタン(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)

A

可能です。

ネットワークライセンスを使用する際にクライアントに対してタイムアウトを設定することができます。
指定した時間内にアクセスがない場合、強制的に排除します。

デフォルトでは50時間です。
この時間を変更することも可能です。

サーバーのコンピュータに”hls32cmd.exe”というプログラムがあります。これを以下のように実行させてください。

  hls32cmd -timeout 180

これでタイムアウトは180分に変更されます。

製品詳細はこちら

回答を閉じる

Q四捨五入するためには?

A

直接、四捨五入する関数はありません。
しかし、関数”Floor”を使用すれば実現できます。
変換したい数値に0.5を加算して関数Floorを実行してください。

【例】
4.4を四捨五入する。

Result = Floor(4.4+0.5)
       = 4


【例】
4.5を四捨五入する。
Result = Floor(4.5+0.5)
       = 5

製品詳細はこちら

回答を閉じる

Qシーケンスを使ってマーカーを表示させる

A

以下の関数を使います。

err = CvAppendMarker( sintest1, 0.002, 1, 0, 1, 1, "test", 0, 0)

注意

上の式を成功させるためには、以下の準備が必要です。

(1)サンプルデータ”Sintest1”をFAMOSに予め読み込んでおく
(2)Sintest1をカーブウィンドウに表示させる

製品詳細はこちら

回答を閉じる

QDDE通信でFFTアナライザー"OROS"をコントロールする方法

A

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セグメントやイベントとはどういう意味ですか?

A

データ形式の種類

u-LOGGER(データロガー)やFAMOS(波形解析ソフト)は、あらゆるデータフォーマットを取り扱うことができるように、以下のデータ形式を用意しています。

標準 標準は単に計測をスタート&ストップしただけのデータ列です。
FAMOSのほとんどの数学関数はこの標準波形を対象としています。
セグメント セグメントは、行列データのことを意味します。
FFT関係の計算などブロック数で決まったものに対して、定義されます。
イベント イベントは、トリガー計測など毎回の測定時間が不定の場合に用いられるデータ形式です。

データがどの形式であるかは、調べたい変数を選択して"変数/プロパティ"で起動するダイアログのデータ形式で確認できます。
下の例は“セグメント波形”です。

例えば、クラスカウトキットやスペクトラムキットの多くの関数は、ブロック数が決まっているため、結果をセグメントで返します。

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

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

ユーザーは”このデータの最大値を求めろ!”と指示しているわけですが、どの最大値を求めればよいのでしょうか?
例えばセグメント波形であればどのセグメントの最大値を求めるのか指示しなければなりません。
この指示の方法は以下を参照してください。

各セグメントの取得方法

セグメント波形を関数で処理したい場合には、Data[1]のようにセグメント番号を指定してデータを取り出します。
この[1]は1番目のセグメントを意味します。

取り出したセグメント = セグメント波形[ セグメント番号 ]

各イベントの取得方法

次のコマンドで取得できます。
取り出したイベント = EventGet( イベント波形, イベント番号, 0)

製品詳細はこちら

回答を閉じる

Qノイズが多い場合のピーク値の検出

A

以下の波形のようにノイズが多く含まれた信号のピーク値を求めます。
ピークとして、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コマンドのオンラインヘルプを表示させるには?

A

オペレーションボックスやシーケンスエディターでコマンドの上にカーソルを置いて

CTRL + F1

キーを押してください。
FAMOSの出力ボックスにオンラインヘルプが表示されます。

製品詳細はこちら

回答を閉じる

Qテキストデータをインポートすることはできますか?

A

可能です。

  • メニュー”ファイル/インポート/ファイル”を選択してください
  • ダイアログの左側のファイルタイプから”テキスト信号ファイル(*.txt)”を選択して、”ディレクトリ”をスキャンします。右側のリストからインポートしたいファイルを選択してください。

注意

テキストファイルは指定されたフォーマットしか受け付けません。

ファイルフォーマットはテキストファイルとしてSignalファイルをエクスポートしたときと同じです。

注意

サンプリングはNVGateで使用できるサンプリング速度しか受け付けません。

製品詳細はこちら

回答を閉じる

Qパルスを5.6 pulse/rev(パルス/回転)など整数値以外に設定するためには?

A

整数値以外のタコ信号を処理するためにはバーチャルタコ(少数付きタコ)を使用してください。

1) タコの定義 (外部同期や入力)

2) バーチャルタコ(小数付きタコ)のソースへタコを接続

3) バーチャルタコ(少数付きタコ)のギア比設定テーブルを使ってタコレシオを設定します。

注意

バーチャルタコ(少数付きタコ)で設定可能な値の範囲は0.001-2です。

注意

バーチャルタコ(少数付きタコ)の回転数はソースで指定したタコ信号にタコレシオを乗じます。

バーチャルタコ(少数付きタコ)回転数 = 外部タコ X タコレシオ

例

例えば、5.6というパルス/回転を設定したいと仮定します。

バーチャルタコ(少数付きタコ)のタコレシオを2より小さくするために、外部タコのパルス/回転=7とします。

これによりバーチャルタコ(少数付きタコ)を

5.6/7 = 0.8

とすれば、希望のパルス/回転を取得できます。

製品詳細はこちら

回答を閉じる

Qライセンスエラーで起動できない

A

起動時にライセンスエラーが表示された場合、メッセージの種類によって原因が分かれます。

Invalid license number ! [1] ライセンスキーが正しくインストールされていません
インストーラCDからライセンスを取り出し、NVGateがインストールされたフォルダに貼り付けてください 詳しくは、ドングルが認識されない(その2)をご参照ください。  
Invalid license number ! [2] ライセンスの有効期限が切れています(デモや修理等で弊社の代替器やスーパードングルを使用している場合のみ)
Invalid license number ! [3] PCの日付がライセンスキーの発行日より古くなっています。 現在の日付に変更してください。

製品詳細はこちら

回答を閉じる

Qウィンドウの追加ダイアログにH1やコヒーレンスが見つからない

A

以下2つの可能性があります。各々ご確認ください。

1. クロススペクトラムが設定されていない
アナライザ設定ブラウザの”FFT1>FFTアナライザ>クロススペクトラム”の設定がなされていないことが原因です。

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

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

2. オプションモードで伝達関数が選択されていない

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

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

製品詳細はこちら

回答を閉じる

Qエディットボックスの内容を検査したい

A

エディットボックスのプロパティで”入力検証”をチェックし、値の範囲を設定します。

製品詳細はこちら

回答を閉じる

QOROSのデータを読み込むためにはどうすればよいですか?

A

OROSデータを読み込むためにはインポートフィルターの登録ファイルして維持に”ファイルの種類”を指定する必要があります。

以下の手順に従って設定・使用してください。

インポートフィルターの入手方法

インポートフィルターの入手はこちらを参照してください。

周波数データ用と時系列データ用の2つのフィルターがあります。

インポートフィルターの登録方法

登録方法はこちらを参照してください。

使用方法

使用方法はこちらを参照してください

OROSの周波数データの拡張子は”AE2”です。

OROSの時系列データの拡張子は”WAV”です。

製品詳細はこちら

回答を閉じる

QFFT解析結果を1/3オクターブで表示

A

;*********************************************************
;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 _*

製品詳細はこちら

回答を閉じる

FAQ一覧へ戻る