【理化学計測】オウンドメディア:電気化学測定(02)
【理化学計測】オウンドメディア:電気化学測定(02)に関するFAQ
QFAMOS 2021以降のバージョンでサンプルデータがどこにあるのか知りたい。
Qエンジンの回転パルスを計測しました。各回転パルス間の時間を求めることはできますか?
FAQ ID:s007
関数“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)
;データ表示。実際の処理では必要なし
Q製品マニュアル
下記よりダウンロードをお願いします。
QWAVファイルの読み込み方法
FAQ ID:u001
Windowsのサウンドレコーダーで録音した音声(WAVファイル)を読み込むことができますか?
可能な場合、読み込み方法を教えてください。
WAVファイルの読み込み方法には2種類あります。
サウンドキットの利用方法
以下の関数を実行してください。
(デフォルトのデータディレクトリー[c:\imc\dat]が参照されていることを前提にしています。)
Data = SndReadF( "Ding", 1)
関数の実行に成功すると、WAVファイルは変数としてFAMOS変数リストに表示されます。
インポートフィルターの利用
インポートフィルターを利用すると2chより多いチャンネル数のWAVファイルを読み込むことができます。
また、インポートフィルターを利用すると、WAVファイルをFAMOS標準形式のデータのように扱うことができます。
Qテーブルビュー: テーブルセルに数値を動的に設定したい
Q入力信号の表示範囲
FAQ ID:x001
Front Endに入力した信号を表示させた場合、51.2 [kHz] サンプリングでは 5 [msec] しか表示されません。
他のサンプリングレートでは以下のようになります。
51.2 kHz | 5 msec |
---|---|
25.6 kHz | 10 msec |
12.8 kHz | 20 msec |
5.12kHz | 50 msec |
これは256ポイントに相当します。
5 [msec] / ( 1/ 51.2 [kHz] ) = 0.005 * 51200 = 256 [point]
入力波形のモニタリングとしては表示範囲、つまりデータ点数が少ないと思います。
フロントエンドの入力は、少し用途が異なります。
フロントエンド入力はオシロスコープのように時系列波形をモニタリングするために用意しています。
信号のレベルなどのチェック用として使用してください。
お客様は恐らく、FFTを行う際に使用する1ウィンドウ幅に相当する時系列波形をご希望になられているのだと思います。
これはトリガーブロックという波形を選択することで表示できます。
操作方法は、
(V7以降) 表示/グラフタブ>ウインドウ>追加・削除を選択してください。
(V6以前) メニュー"ウィンドウ/追加・削除"を選択してください。
ダイアログが表示されますので、"FFT1"タブを選択してください。
"トリガブロック(Triggered Block)"を選択してください。
Qカーソルを使って値を取得する方法
FAQ ID:s009
カーソル位置の値を取得し、Excelにデータを転送します。
カーソルを使って値を取得すると、測定ポイントからずれるので修正しています。
;-----------------------------------------------
;ファイルの指定
;-----------------------------------------------
filename = DlgFileName("c:\imc\dat", "dat", "ファイルを開く", 0)
If TLeng( filename)=0
del FileName
ExitSequence
Else
FAMOS
Load <filename>DATA
del filename
Show DATA
End
;-----------------------------------------------
;ウィンドウ設定
;-----------------------------------------------
CvWin( DATA, 9) ;カーソルのみを表示
CvWin( DATA, 3) ;オーバービューウィンドウを表示
CvWin( DATA, 10) ;ナビゲータを表示
CvXAxis( DATA, XOff?(DATA), XOff?(DATA)+Leng?(DATA)/10*XDel?(DATA), 0)
CvYAxis( DATA, DATA, 0, 0, 0, 50000+4000+200, -2)
;-----------------------------------------------
;ダミーデータ
;-----------------------------------------------
P_X = Leng( 0, 0)
P_Y = Leng( 0, 0)
Point = XYOf( P_X, P_Y)
CvYAxis( DATA, Point, 0, 0, 0, 70000+5000+400, -2)
;-----------------------------------------------
;コメント文字列
;-----------------------------------------------
crlf = TAdd( SvToChar(0x0d), SvToChar(0x0a))
Text = TAdd( "カーソル位置が決定したら<再試行>ボタンを押してください。", crlf)
Text = TAdd( text, "シーケンスを終了する場合、<キャンセル>ボタンを押してください。")
exit=1
While exit
err = BoxMessage("",Text, "!3")
If Err=0
;-----------------------------------------------
;キャンセルならシーケンスを終了
;-----------------------------------------------
exit=0
Else
;-----------------------------------------------
;継続する場合、データを取得してExcelに転送
;-----------------------------------------------
xLeft = CvCursor(DATA,1)
xLeft = xLeft-Mod((xLeft-XOff?( DATA)), XDel?( DATA)) ;測定点に値を設定
P_X = Join( P_X, xLeft) ;測定点をカーブウィンドウに表示
P_Y = Join( P_Y, Value( DATA, xLeft))
Point = XYOf( P_X, P_Y)
Cell_1 = TAdd( "R", TForm( exit, "F00")) ;Excelに転送
Cell_N = TAdd( Cell_1, "C1")
err = DDESet( "Excel","Sheet1", Cell_N, TForm( exit, "F00"), 1)
Cell_N = TAdd( Cell_1, "C2")
err = DDESet( "Excel","Sheet1", Cell_N, xLeft, 1)
Cell_N = TAdd( Cell_1, "C3")
err = DDESet( "Excel","Sheet1", Cell_N, Value( DATA, xLeft), 1)
exit = exit+1
End
End
Qオクターブ分析データの表示
FAQ ID:c021
オクターブ分析されたデータのX軸は周波数スケールで等間隔になるように定義されています。但し、これらの値を以下のようにそのまま表示すると端数が出てしまいます。
このように単なる対数表示ではX/軸ラベルが一般的なオクターブ表示と多少異なりますし、軸の設定も煩雑です。通常、これらの端数を丸めた値を使用しています。
下表は1/3オクターブの中心周波数です。
Center [Hz] |
---|
1000 |
1250 |
1600 |
2000 |
2500 |
3150 |
4000 |
5000 |
6300 |
8000 |
10000 |
そこで、オクターブ分析されたデータのX軸をスケーリングします。スケーリングは以下の式に従います。
中心周波数=10^(スケールパラメータ/10)
X-Scaling | 中心周波数[Hz] |
---|---|
.. | .. |
-3 | 0.5 |
-2 | 0.63 |
-1 | 0.8 |
0 | 1 |
1 | 1.25 |
2 | 1.6 |
3 | 2 |
4 | 2.5 |
5 | 3.15 |
6 | 4 |
7 | 5 |
8 | 6.3 |
9 | 8 |
10 | 10 |
11 | 12.5 |
.. | .. |
20 | 100 |
30 | 1000 |
40 | 10000 |
41 | 12500 |
42 | 16000 |
43 | 20000 |
.. | .. |
このようにスケーリングすることで、X軸データは周波数スケールからリニアスケールに変換され、1/3オクターブではXスケールは0, 1, 2...となります。1/1オクターブでは0, 3, 6, 9, 12...、1/12-オクターブでは0, 0.25, 0.5, 0.75, 1, 1.25...です。
各周波数バンドのX間隔は次のようになります。
Width of Filter Band | Delta-x |
---|---|
1/1オクターブ | 3 |
1/3オクターブ | 1 |
1/12オクターブ | 0.25 |
1/24オクターブ | 0.125 |
FAMOSはこのスケーリングに対応した表示モードを備えていますので、カーブウィンドウに表示させる際にはモードを切り替えるようにしてください。

標準表示モード

オクターブ表示モード
Q変数名に連続した番号を付けているのですが、ループを使って処理できますか?
FAQ ID:s003
例えば、以下のようなチャンネル名(データ)が存在するとします。
Ch1 Ch2 Ch3 : Ch15 Ch16
例えば、これらのチャンネルのデータを切り出す場合、それぞれ処理させると以下のようにプログラムが凡長になってしまいます。
Out01 = Cut( Ch1, 0, 10 ) Out02 = Cut( Ch2, 0, 10 ) Out03 = Cut( Ch3, 0, 10 ) : Out15 = Cut( Ch15, 0, 10 ) Out16 = Cut( Ch16, 0, 10 )
このとき、以下のように文字列関数を使ってチャンネル名を作成します。
Example
_i = 1 While _i <= 16 ;文字列としてチャンネル名を作成します ;---------------------- _temp = TForm( _i, "F00") ; 数値を文字列に変換 _ChName = TAdd( "Ch", _temp) ; 文字列を連結(Ch1) ;データ処理(例:波形の切り出し) ;---------------------- _temp1 = Cut( <_ChName>, 0, 10) ;作成した文字列に対応する変数を処理 ;<>で囲むと文字列に対応した変数を参照できます。 ;出力データの作成 ;---------------------- _Output = TAdd( "Out", _temp) <_Output> = _temp1 _i=_i+1 End Del _* ;必要のない変数を削除
Q凡例を表示させたくない(手動設定)
Q繰り返し加振信号を入力し、任意回数の加振後にFFT解析結果を取得
FAQ ID:x061
下図のようなシステムで加振器に対して繰り返し正弦波を入力します。
数回の正弦波を入力した後、応答信号が振動が安定しているかFFT解析で確認し、結果が安定したら結果を保存することは可能ですか?
マクロを使うと実現できます。
最初にプロジェクトを作成します。
(1) 入力1をFFT1に接続
(2) FFT1を以下のように設定
平均サイズを1
平均形式をエキスポネンシャル
トリガをマニュアルトリガ
(3) 結果を保存するように設定してください。
以上で、スタートボタンを押して計測を開始すると、マニュアルボタンを押す度にFFT解析結果が更新されることを確認してください。
次に信号出力の設定を行います。
(4) 信号出力のサインにサイン1を追加してください。
(5) サイン1のRMSレベルは0Vに設定してください。
(6) サイン1をフロントエンドの出力1に割り当てます。
以上でプロジェクトの設定は完了です。
次にマクロを生成します。新しいマクロを開いてください。
(7) パラメータの設定を以下のように定義します。
T1:浮動小数点型 (加振しない時間)
T2:浮動小数点型 (加振する時間)
Level:浮動小数点型 (出力レベル)
(8) T1、T2、Levelの初期値を設定します。
マクロはこのようになります。
(9) T1、T2、Levelの値をユーザが指定できるようにします。
各パラメータに対してパラメータ値設定コマンドを指定してください。
マクロはこのようになります。
(10) 加振を繰り返すためにループコマンドを挿入します。
(11) ループ内に信号出力のON/OFFを繰り返すように設定します。
(12) FFTアナライザの制御を加えます。以下のように”実行”、”マニュアルトリガ”を加えます。
これによりアナライザは起動し、各ループ毎にFFT解析します。
(13) 最後にストップボタンが押されたらマクロを終了するようにします。
サンプルファイル
Qエクスポートする際にWAVとOR25形式の違いは?
Q測定データが保存されない
FAQ ID:x187
測定後にデータが保存されません。
NVGateでは"表示"と"保存"で、チャンネルをそれぞれ設定可能です。
今回の場合、表示はされているが、保存の設定を行っていないと思われます。
保存の設定は、メニュー”ファイル/保存設定”を選択してください。
このとき、以下を確認してください。
-
ネイティブフォーマット”OR3X”にチェックされているか?
-
保存オプションで”名前を確認”、もしくは”名前を確認しない”にチェックされているか?
この後、”保存設定”クリックします。
このダイアログで保存したい解析内容を選択して、右側のリストに組み込んでください。
Q平均化のパラメータについて教えてください。
FAQ ID:p001
引数は以下のように定義されています。
AveragingType
0 平均化なし
1 線形数値平均(平均化されるスペクトルの量はパラメータ'Reduction'によります)
例えば、Reduction=10と指定した場合、1~10th,11~20th...の平均を表示します。
2 ピークホールド(最大)
Reductionの設定に拘わらず、全てのスペクトラムのピーク値をホールドします。
3 低減化されたスペクトルのピークホールド(最大)
Reductionで設定された回数内でのスペクトラムのピーク値を求めます。
4 ピークホールド(最小)
5 低減化されたスペクトルのピークホールド(最小)
スペクトラムキットで周波数計算を行う場合、下図のようにオーバーラップさせながら指定されたウィンドウ長毎に計算します。
このとき、引数AverageTypeのパラメータを指定することにより、さまざまな結果を取得することができます。
以下のサンプルシーケンスを利用して、参考結果として示します。
; サンプルデータの作成 _t = ramp(0,0.1, 30000) a1 = sqrt(2)*2*sin ( _t *(0.3*PI2)*(_t/400+1) )*(_t/1000+1) xdelta a1 0.001 ; パラメータ設定 AveragingType = 3 Reduction = 5 ; 関数 AmpSpec_Lin1 = AmpSpectrumRMS(a1,512,0,0,Reduction,AveragingType)
また、Reduction=5と指定した場合、5,10,15...番目のブロックが出力されます。
(Y軸の値はブロック数を示しています。5ブロック毎に出力されるため、57/5=11ブロックあります。)
パラメータ:1
線形数値平均します。(平均化されるブロック数はパラメータ'Reduction'に依存します)
例えば、Reduction=5と指定した場合を示します。結果は、ブロック1~5までの平均値を1つの結果として、6~10、11~15...と続きます。
パラメータ:2
Reductionで指定した値により、指定ブロック毎に結果を出力します。
但し、Reductionの設定に拘わらず、計算結果は全てのブロックに対するピーク値を出力します。
下図はReduction=5を指定した例です。
Reduction=1を指定すると、以下のようになります。
パラメータ:3
Reductionで設定された回数内でのスペクトラムのピーク値を求めます。
例えば、Reduction=5を指定すると、1番目の結果は1~5ブロックのピーク値を出力し、2番目の結果には6~10ブロックのピーク値を出力します。
QLOADコマンドで読み込むとエラーになる
FAQ ID:s018
以下のように関数"DlgFileName"などを使ってファイルパスを取得して、このデータを"Load"コマンドで読み込もうとしましたがエラーになる場合とならない場合があります。
どのように対応すればよいでしょうか?
FilePath = DlgFileName( "", "", "", 0)
Load <FilePath>
エラーになる場合に、パスにスペースや括弧などが含まれていませんか?
C:\My Doduments\data.dat
C:\Program Files\Common Files\Imc\Com\Experiments\Demo554\2001-12-04 13-50-21 (1)\Acc1 (01).RAW
関数"Load"はこれらのパスを受け付けません。
対策1
パス名をダブルコーテーションで囲ってください。
(NGの例題) : Load C:\test\data1.dat
(OKの例題) : Load "C:\test\data1.dat"
対策2
このようなパスを選択する可能性がある場合、関数グループ13の"ファイル関数"を使用してください。
以下にサンプルを示します。
;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
;_/
;_/ ファイルパスにスペースや括弧が
;_/ 含まれたデータを読み込むことができません。
;_/
;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
;ダイアログからデータファイルを選択します。
_FName = DlgFileName( "","","",0)
;------------------------------------------
;パスにスペースなどが存在する場合、
;Loadコマンドでは読み込めません。
;以下のコマンドはエラーになります。
;
;Load <FName>
;------------------------------------------
;------------------------------------------
;このような場合、以下のようにグループ13の
;ファイル関数を使用してください。
;------------------------------------------
_ID = FileOpenDSF( _FName, 0)
_Num = FileObjNum?( _ID)
_i=1
While _i<=_Num
_Name = FileObjName?( _ID, _i)
<_Name> = FileObjRead( _ID, _i)
_i=_i+1
End
_err = FileClose( _ID)
Delete _*
Qビット演算
FAQ ID:s022
ビットデータを取得するためには以下の関数を使用してください
;DATAの3ビット目を取得します。 Bit3 = Mod( Floor( Data / 2^3 ), 2)
Example
65535までの値を各ビット毎に取得します。
;サンプルデータの生成 Data_DEC = Ramp( 0, 1, 2^16) i=0 While i<16 Result = "BIT" + TForm( i, "F00") <Result> = Mod( Floor( Data_DEC / 2^i ), 2) SetDataFormat(<Result>, 8, 0, 0) i=i+1 End
ちなみにMicrosoft Excelでは"DEC2BIN"という関数を使用しますが、符号ビット+9bitまでしか計算できません。
Q方向(+X)を設定する必要はありますか?
FAQ ID:x217
MEスコープで伝達関数の結果を読み込みます。方向(+X)を設定する必要はありますか?
あるいはMEで読み込んだ後に指定するほうが良いのでしょうか?
モード解析を実施するためにはDOFの設定が必要です。
DOFの設定はNVGateで行っていただいてもME'Scopeで行っていただいてもどちらでも結構です。
ご都合の良い方で設定をしてください。
- NVGateでDOFの設定をする方法 -
NVGateではASBの以下に示す設定でDOFの設定をする事が出来ます。
- ノードの設定:"アナライザ設定ブラウザ/フロントエンド/入力/入力x/ノード"
- 方向の設定:"アナライザ設定ブラウザ/フロントエンド/入力/入力x/方向"
またシーケンス機能を使用する事でDOFの設定を自動的に行う事が出来ます。
QWindows NT/2000でユーザーアカウントでログインしたらFASファイルが使用できない
FAQ ID:a001
(1)ファイルアシスタントのFASファイルはログインしたユーザーに対して設定されていますか?
FAMOSの各設定(ボタン定義・DLL・FASファイル登録)はユーザー単位で管理されています。
FASファイルの設定が行われているか確認してください。
確認方法はFAMOSを起動して、希望するインポートフィルターがファイルダイアログの”ファイルの種類”に表示されるかです。
(2)希望するインポートフィルターを使ってファイルを読み込んでください。
ここで、正常に読み込めずファイルの読み込みエラーが発生した場合、ファイルアクセス権がユーザーにないと考えられます。
システム管理者に連絡してアクセス権を変更してください。
FASファイルはデフォルトではc:\imc\def内にインストールされます。