Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

DAQmx ExcelVBAで複数のDigitalLineを一つの関数で制御する方法について

Excel VBA でUSB-6009やPCI-6513の制御を試みています。

任意のラインを出来るだけ同時に近いタイミング(数msec以下)で動作させたいのですが、サンプルにあるように1ラインずつの制御をFor Loop や Do Loop で繰り返してみたのですが、数十msec以上かかるので使えません。

VBAはVB6ベースの開発環境なので、符号なしの整数を使う関数がサポートされていないためDAQmxWriteDegitalLinesを使うしかないので色々と試して見ましたが、引数の意味もよくわからないので困っています。DAQmxWriteDigitalU8に変わる関数やそのサンプルコードがあれば教えてください。

0 Kudos
Message 1 of 7
(5,409 Views)

I didnt understand Robot Sad

0 Kudos
Message 2 of 7
(5,362 Views)

I'm trying to control DAQmx devices like USB-6009 or PCI-6513 using Excel VBA. And, some output lines must be turn on in same time. But, in VBA environment, the unsigned integer can not be utilized. So, the function "DAQmxWriteDigitalU8" is not enabled. The loop sequence is too slow to use in my spec. Please let me know how to use "DAQmxWriteDigitalLines" for some output lines control in a few millisecond.

0 Kudos
Message 3 of 7
(5,352 Views)

Cm7さん、こんにちは。

 

VBのサンプルでよければ、すべてのプログラム>>National Instruments>>NI-DAQmx>>Text-Based Code Supportにあります。

引数の説明も、Text-Based Code Support>>NI-DAQmx .NET Helpにヘルプがありますので、参考になるかと思います。

 

VBAのヘルプはありませんが、Measurement Studioのヘルプであれば、以下ウェブサイトにあります。

NI Measurement Studio Help

http://127.0.0.1:47873/help/1-4560/ms.help?method=f1&query=FUsingNIMStudioHelp&product=vs&productver...

 

また、"Excel VBAでUSB-6009やPCI-6513の制御を試みている"とありますが、デバイスで出来る動作はAI,AO,DIOなどあるかと思いますが、具体的にどういった動作をされたいのでしょうか?

0 Kudos
Message 4 of 7
(5,312 Views)

hozaki様 ご教示ありがとうございます。

 

具体的には複数のデジタルラインを指定して、同時にTrueにしたりFalseにしたりする動作です。

 

タスクを作成しておけば、DAQmxWriteDigitalLinesで希望するポートの希望する1本のラインをTrueにできます。

ループを組めば指定したラインを入り切りできるのですが、できるだけ同時に入り切り動作をさせたいのです。

 

VBAはVB6ベースで、符号なしの整数をサポートしてないようです。

ですので、DAQmxWriteDigitalU8のように、数値で指定する事ができないようなのです。

 

また、マニュアルにはuInt8[ ]と書いてあるのですが、配列で設定しても上手くいきませんでした。

これもuIntが使えないためかも知れません。

https://decibel.ni.com/content/docs/DOC-19654

で紹介されているサンプルでも配列が使われているのですが、実は配列要素が指定されていて、複数のLine

を一度に動作させるものではないようです。

 

お示しいただいたサンプルは探して見ます。

全てのユーザー以下のフォルダなどにあったサンプルは確認しましたが、配列の要素を一つずつ指定するもの

で、ループ動作でした。

 

それと、せっかくご教示いただいたリンクではウェッブページは開けませんでした。

 

よろしくお願いします。

 

0 Kudos
Message 5 of 7
(5,302 Views)

hozaki様

全てのプログラムから「テキストベースコードサポート」を見てみましたが、Visual StudioをインストールしていないせいかCのサンプルしかありませんでした。英語ですが、VB6のヘルプファイルはありました。

いろいろ調べて見たのですが、VBは.NETから変数などの取り扱いも含め大きく違っているようで、VBAの参考としては残念ながら使えないように思います。間違っておりましたらご指摘ください。

よろしくお願いいたします。

 

0 Kudos
Message 6 of 7
(5,278 Views)

VIで作ってみました。

左上のNo1が1ラインづつコントロールするダイアグラムです。

複数のラインを入り切りするには、1Line1Porintのブール入力を配列にしてループを組みますが、

これでは、同時には動作できません。

 

No2はブール配列を、No3は整数で、No4はさらに複数のポートも一つの整数で同時に制御できます。

VBAでNo2またはNo3、できればNo4のプログラムが作りたい希望ですが、No1しかできません。

よろしくお願いします。

 

I could make program like No1 only in VBA.
But, I want to make a program like No4.

 

0 Kudos
Message 7 of 7
(5,248 Views)