問題タブ [daq-mx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
labview - マルチチャネルデータを高速で収集するときに Labview チャートを定期的に更新する方法
Labview データ収集プログラムのヘルプを探しています。チャネルごとに 8kHz で 2ms のデータを収集できた場合 (16 データ ポイント) (ナショナル インスツルメンツのデータ収集ボードを使用して 4 つのアナログ チャネルでデータを収集しています)。DAQ-MX 収集タスクは、4 つの波形の 1D 配列を提供します。
データを表示しない場合、すべての計算時間は約 2 ミリ秒であり、処理ループが収集ループより少し遅れても問題ありません。Labview のフロント パネルでチャートを更新すると、許容できない遅延が発生します。表示を非常に迅速に更新する必要はありません。おそらく 5 ~ 10Hz で十分でしょう。しかし、私はこれを設定する方法がわかりません。
私の現在のLabview VIには3つの並列ループがあります
- データ収集のタイムループ
- 分析と処理のループ
- データを TDMS ファイルとしてディスクにキャッシュする優先度の低いループ
データは、キューを使用してコレクション ループから他のループに渡されます。Labviewの例でいくつかのアイデアが得られましたが、行き詰まっています。
提案、参考文献、アイデアをいただければ幸いです。
ありがとう
アジム
フォローアップの質問
eaolson は、表示目的でデータを再サンプリングすることを提案しています。DAQ-MX 読み取りからのデータは、波形の 1 次元配列です。したがって、各チャネルの波形データを何らかの方法で構築または連結する必要があります。次に、フロント パネル チャートを更新する前に、データを再サンプリングします。最善の方法は、データをキューに入れ、表示ループでスタック ビルドをデキューし、画面の解像度に基づいてデータを再サンプリングしてから、グラフを更新することだと思います。他のアプローチはありますか。eaolson が提案した詳細については、(NI Labview フォーラム)[ http://forums.ni.com/ni/board?board.id=170]を参照してください。
アップデート
- グラフの許容可能な更新レートを 5 ~ 10Hz に変更 (Underflow と eaolson に感謝)
- ディスク キャッシュ ループは優先度が低い (thanks eaolson)
- すべての応答に感謝します。
c# - GAC から DLL を使用する実行中のコードをロードするときに System.IO.FileNotFoundException を防止する
サードパーティの API を使用して、一部のデータ取得ハードウェア (DAQmx ドライバーを搭載した National Instruments ハードウェア) にアクセスしています。そのために、ドライバー dll への参照を追加します。
ドライバーがインストールされているマシンでコードを実行しても問題ありません。しかし、ドライバーのないマシンで実行するとSystem.IO.FileNotFoundException
、try/catch でキャッチできないエラーが発生します。
API コードを実行する前に、dll が使用可能であり、そのタイプを使用できるかどうかを確認するにはどうすればよいですか。すべてのマシンがこの種のデータ取得ハードウェアをサポートしているわけではない (したがって、ドライバーがインストールされている) わけではないため、これは重要です。
よくわかりませんが、ドライバーがインストールされているマシンのGACにdllが登録されていると思います。
labview - 見つからないドライバ LabVIEW
LabVIEWで他の人が書いたプログラムを実行しようとしています。プログラムは電圧を記録します。ただし、サブ VI がないため、開きません。
最初は1つだけ欠けていて、残りはそれに接続されているため機能していないと思っていましたが、このフォーラムの誰かが親切にそれを見つけた後、残りのVIはまだ機能しないので、ダウンロードする必要があると思いますまた。しかし、それらを個別に入手するにはあまりにも多くのものがあり、グーグルで検索しても無駄でした.
サブ VI は : Magnet Id, Hardware check, Plot Data and Print, Make Plot Lables, Plot it, Relabel It, Write File header, Record Analog Info, Fix Column Heading, Make Igor Label
etc etc (これは完全なリストではありません)。
ナショナルインスツルメンツの Web サイトから DAQ をダウンロードする必要があると思いますが、どの DAQ かわかりません。Windowsで64ビットLabVIEW 2010を使用しています。誰かが正しいドライバーを選ぶのを手伝ってくれませんか? ありがとう!
matlab - NIボードからデータを取得する際に、matlabでData Missedイベントを回避するにはどうすればよいですか?
波形データ (2 チャネル) とアナログ入力トリガー (プリトリガー モードで設定 - 負の遅延値) を取得するときに、matlab で DataMissed イベントを受信しています。
コードは次のとおりです。
このコードを実行すると、(showdaqevents(ai) を使用して) トリガー イベントが受信された後に Data Missed Events が取得されます。ただし、Data Missed Events のサンプル数は NA であるため、それらがトリガーの後に来るかどうかは完全にはわかりません。
showdaqevents 出力の例を次に示します。
matlabドキュメントの Data Missed Events を調べると、次の2 つの説明があります。
- エンジンが取得速度についていけません。
- ドライバーは、以前に取得したデータが読み取られる前に、ハードウェアの FIFO バッファーに新しいデータを書き込みました。通常、この問題は、BufferingConfig プロパティを使用してメモリ ブロックのサイズを増やすことで回避できます。
daqmem コマンドで利用可能なメモリを増やそうとしましたが、うまくいきませんでした。500000 サンプル/秒、3 つのチャネルはトリガーごとに合計約 90 MB であり、daqmem は 360MB 以上の空き容量をレポートします (バッファモードは Auto に設定されています)。while ループで getdata(ai) を定期的に呼び出してメモリをクリアする必要があるかどうか疑問に思っています。もう 1 つの可能性は、システムのサンプル レートが高すぎることです。
ハードウェア:
- デュアルコア CPU (Athlon X2 3200)、4 GB の RAM、500 GB の SATA ハードディスク
- NI PCI-6122
DataMissed イベントを取得する可能性は、トリガーを押す前にシステムに取得させる時間が長いほど (時間的に) 上がることに注意してください。
私のデータ取得コードに問題はありますか (取得の途中で一時停止することについて最も確信が持てません)? ハードウェア?気にしなくていいものなの?NI ボードを扱うには Visual Studio の方が適していますか?
rhel - RHEL 6.2 64 ビットでの Snort のインストール
RHEL 6.2 に Snort をインストールしています
DAQをインストールしようとしています。
私は走っています
インストールする
エラーを下回っています:
RCE -module -export-dynamic -avoid-version -shared -L/usr/lib -ldnet -o daq_ipq.la -rpath /usr/local/lib/daq daq_ipq_la-daq_ipq.lo -lipq -L/usr/lib - ldnet ../sfbpf/libsfbpf.la ) libtool: 再リンク: gcc -shared .libs/daq_ipq_la-daq_ipq.o -Wl,-rpath -Wl,/usr/local/lib -L/usr/lib -lipq -ldnet - L/usr/local/lib -lsfbpf -Wl,-soname -Wl,daq_ipq.so -o .libs/daq_ipq.so /usr/bin/ld: /usr/lib/libdnet.a(addr.o): 再配置R_X86_64_32 に対して.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/libdnet.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
libtool: install: error: relink
daq_ipq.la' をインストールする前に上記のコマンドで make[2]: * [install-pkglibLTLIBRARIES] エラー 1
make[2]: ディレクトリ `/usr/daq-0.6.2/os-daq-modules' を離れます
make[1]: * [install-am] エラー 2
make[1]: ディレクトリ `/usr/daq-0.6.2/os-daq-modules' を離れます
make: * [install-recursive] エラー 1
助けてください
labview - 波形によって定義された電圧パルスを生成するように DAQ アシスタントを構成するにはどうすればよいですか?
波形パルスをDAQ アシスタントに入力して、DAQ 6259 ボードに目的の電圧パルスを生成させるにはどうすればよいですか?
Simulate Signal Express VI を使用して方形パルス波形を作成しました。
私の目標は、希望するパルス列を生成するために、LabView ユーザーが必要に応じてGUIのノブを使用して周波数とパルス幅を構成できるようにすることです。このパルス列を DAQ 6259 に送信して、電圧パルス列を生成する必要があります。電圧パルス列は、その正確性を検証するためにオシロスコープによってキャプチャされます (つまり、キャプチャされたパルス列は、labview GUI に表示される波形とまったく同じように見えます)。
これを達成できる最も簡単な方法は何ですか?これを行う方法を説明するチュートリアルはありますか?
c - NI USB 6211 読み取りアナログ電圧入力
Cプログラムを介してNI USB-6211に電圧入力を読み取ろうとしています。そのために、インストールされたプログラムに付属のサンプル プログラムをいくつか使用してみましたが、役に立ちませんでした。私はドキュメントを見てきましたが、正直なところ、まったく役に立ちません。
これは私が適応したコードです。(チェックイン中にエラーが発生し、入力を求められます...)
この時点でコードが実行しているのは、1000 という数字を出力することだけです。私はそれがこのコードから来ていると確信しています: float64 data[1000];
. 直接電圧を読み取る方法について知っている人はいますか? フォーマットされていない単なる長い数字の文字列であっても(私はそれを理解できます)。
ありがとう
c++ - NI DAQMX c/c++によるデジタル/アナログ出力生成
C/C++を使用して、NI DAQMXから電圧出力を生成する方法を見つけるのに苦労しています。
NI デバイス ライブラリの使用方法がわかりません。また、役立つ例がオンラインで見つかりません。
これを解決するために共有できる例や洞察はありますか?
nidaqmx - DAQmxCfgDigEdgeStartTrig の使用中にエラーが発生しました
サンプル クロックと「サンプリング開始」トリガーを使用して 8 ビット入力をサンプリングしようとしています。タスクを構成する方法は次のとおりです。
QT Creator で実行すると、次のエラーが表示されます。
DAQmx エラー: 指定されたプロパティはデバイスでサポートされていないか、タスクに適用できません。プロパティ: DAQmx_StartTrig_Type
タスク名: _unnamedTask<0>
ステータス コード: -200452 DAQmx エラー: 指定されたタスクが無効であるか、存在しません。ステータス コード: -200088
以前は、デジタルの代わりにアナログ入力を使用していたとき、問題はありませんでした。チャンネル構成の何が問題なのか、誰にもわかりませんか? PCI6259 と BNC2110 を使用しています。