ホーム     |    製品購入     |    製品価格一覧    |    サイトマップ    |    会社案内    |    リンク     |    お問い合わせ     
|     製品情報    |     カスタマイズ    |     受託開発    |     オンラインサービス    |     サポート    |     ダウンロード    |
 
 
MultifunctionI/O Sシリーズ ( ADS84Bなど)

今までによせられた質問に対しての回答をの一例を掲載しています。使用や開発の参考にしてください。

 
製品仕様-FAQ
 

SCSIやIDEの代用になるのですか?
MultifunctionI/Oは、このようなプロトコルに特化したインターフェースではないので、代用にはなりません。

動画の入力はできますか?
動画は速度が速いため、MultifunctionI/O_Sシリーズ では扱うことができません。

センサーを直接接続でますか?
多くのセンサーは、抵抗変化であったり、微小電圧出力であったりする上、非直線性もあるので、何らかのセンサーアンプやプリアンプが必要です。しかし、一部のセンサー(電圧出力型の半導体温度センサー)などは直結できます。また、MultifunctionI/O Xシリーズであれば、センサーを直結可能なADR42があります。

消費電力はどのくらいですか?
ADS84でおよそ、5V300mA(1.5W)です。

A/Dコンバータ:16bit100kHzと書かれていますが、これは変換速度が、10マイクロsec/chであるということを意味しているのでしょうか?
おっしゃる通り、10us/chです。ちなみに、チャンネル毎にA/Dをもっているわけではにので、チャンネル切り替えを行いながらのA/D変換は、マルチプレクサの切り替え時間分遅くなります。特に、送り出しインピーダン(Ro)の高いアナログ素子からの入力ではRoとMultifunctionI/Oの入力容量で時定数ができ、マルチプレクサの切り替え時間が長くなります。

PCIバス版とCompactPCIバス3U版の2つがございますが、通常のパソコンのPCIバスにさすのは、PCIバス版の方でよろしいのでしょうか?
通常のパソコンの場合、PCI版です。

AS20はアナログ入力については入力レンジの選択の幅が広く大変便利なのですが、出力が10Vレンジのみで、私の制御したい電源の1〜5Vというレンジに合いません。そこで、出力が最大5Vとなるように改造したAS20を作っていただきたいです。もし可能なら費用がどれほどになるかをお教えいただけないでしょうか?
0-5Vのアナログ出力版であれば、+3200円の改良費で出荷できます。これを1-5Vにするのは、ソフトウェアでお願いします。具体的には、1V分の(20%)のオフセットをアナログ出力値に加えてご使用願います。Dレンジは20%減少しますが、さしあたって、大きな影響はないと思います。

外部機器は何かありますか?
中継基板"MultifunctionI/O-Term85"、テスト・デバッグ基板"MultifunctionI/O-Test"などを用意しております。 他にも、テレメータをはじめ様々な計測器を準備中です。周辺機器の開発依頼も受けております。

長期安定供給は可能ですか?また信頼性は大丈夫でしょうか?
可能です。本製品は、基本的に10年間の安定供給を前提としています。(互換性に支障のないレベルで、部品の差し替えが 行われる可能性はあります)さらに、原則として、弊社で製造するI/Oボードは、製品寿命の最大のボトルネックになる 電界コンデンサに105℃5000時間グレードのものを使用しております。このほか、過電流保護、過入力保護、電源保護回路 などを適切に配置しております。また、発熱要因になりやすい、フォトカプラ入力デジタルインプットを廃止して、LVTTL バッファをフォトカプラ絶縁ブロックの前に配置することにより、発熱を殆どなくすことができました。このLVTTL絶縁DIOは 外部機器の設計面でも楽になります。

リングバッファの大きな機種はないのですか?
MultifunctionI/O XシリーズのPCI版では、非常に大きなリングバッファを搭載しており、バスマスタとの併用で、高速で連続サンプリングすることが可能です。 Sシリーズのリングバッファサイズは256DWORDx2ですが、ADX85-1000Cで3328DWORDx2 + セカンダリPCリングバッファ、ADX11-50MCリーズでは1048576DWORDX2も搭載されます。このため大幅にPCI転送負荷が削減されています。

計測に関して、どのようなサービスをしていますか?
計測用のセンサーアンプボードから、ソフトウェア、リモート計測まで、ほとんどの対応が可能です。弊社までご連絡下さい。アプリケーションとしては、ボイラ、ゴミ処理施設、圧延、ゲーム機器、環境および防災、警備、リハビリ設備など様々な実績がハードウェア・ソフトウェアの両面においてございますので、ご相談ください。

A/D,D/A機能の絶対精度を上げたいのですが?
内蔵のオートゼロキャリブレーションではA/Dのゼロ点のみを調整します。このため、A/Dゲイン、D/Aゼロ点、D/Aゲインなどの絶対精度を上げる場合、外部に校正回路が必要です。また、MultifunctionI/O-Xシリーズであれば、Sシリーズよりも高精度に設計されていますのでXシリーズを選択されるのも一考です。

生態信号の計測を行いたいのですが、絶縁A/Dで、高速のサンプリングの機種が欲しいです?
MultifunctionI/O Xシリーズを推奨します。 絶縁A/Dで、アナログ回路の性能も非常に高いので、最適と思われます。サンプリング速度も1MSPS/16Bitから50MSPS/14Bitまであります。

MultifunctionI/OシリーズプリインストールPCはありますか?他にも、GPIBボードの組み込みや、弊社指定の仕様がありますが対応できるでしょうか?
CompactPCI版、PICMG版、パネルPC版などを用意しております。GPIBボードのインスト−ルもこちらで行えます。 CPU、グラフィックチップ、サウンド、ネットワーク、I/Oスペック、筐体サイズ、周辺(LCD/キーボードなど) OSなどのスペックを教えていただければ、弊社でシステム構築が可能です。

 
開発・API-FAQ
 

APIはVisualBASICからも呼び出すことができるのでしょうか ?
可能です。基本的に、C言語の関数は、VBからも呼び出せるようになっています。拡張子.basファイルをプロジェクトに追加してください。

C++ Builder 5、VisualBasic5.0で開発できますか ?
弊社のドライバで提供する関数は、_stdcallなので、各種言語からの利用が可能です。

LabViewやDASYLabは使えますか ?
LabView6.1では多数実績があります。viファイルは互換性があるので、他のバージョンでも動作する可能性はあります。但し弊社で検証していないので、動作の保障はできません。

ADS84を使ってリアルタイム制御を行おうとしております。いわゆるトリガをかけて、リングバッファを開始させ、約1時間の間データを取り込んでは、ファイルに出力するというものです。同時に、A/Dの値をチェックしてD/AとDOを動かすものです。これは、ADS84の能力で可能でしょか?
ファイル形式にもよりますが、バイナリやテキストファイル程度であれば、サンプリング速度次第です。ただし、CPUやメモリ、ハードディスクの能力によっては、サンプリング周波数に制約が出るケースがあります。また、リアルタイム制御の出力データ生成のための演算の負荷が重いと、同じようにサンプリング周波数に制約が出ます。リアルタイム制御ではリングバッファを使う事によるタイムラグが問題になる場合がありますので、このような場合ポーリングでソフトウェアを開発することになります。

C言語のプログラムで、ADS84Bを制御する際には、御社から提供されるドライバソフトを利用すれば良いかと思いますが、どのような関数で簡単にアクセスできるのか、お教えいただきたいのですが?
弊社の製品は、ドライバのDLLの関数を全て公開しておりますので、そちらを利用すればよいかと思います。もっとも簡単な、A/D変換であれば、以下の4つの関数でアクセスできます。
     ・bADiosOpen  // ドライバのオープン
     ・bADiosAiInitialize  // ハードウェアの各種設定と初期化
     ・bADiosAiReadBpまたはbADiosAiRead  // A/D変換値のポーリング
     ・bADiosClose  // ドライバのクロース
さらに、オートゼロ、リングバッファ+ハードウェア割り込み+トリガ、シーケンシャル取り込み、などの活用で精度や速度面の性能をアップしていくことができます。 こうした情報は、弊社ホームページのダウンロードコーナーでサンプルプログラム や、ドキュメントSDKをダウンロードできるようになっています。

ADS84からパソコンへのデータの取り込み方について質問があります。256ワードのリングバッファを二つ搭載しており、ひとつのバッファがいっぱいになったときに通知がくるわけですが,これですと256個単位でないとのデータを受け取ることができません。ひとつサンプリングするたびにデータを取り込む方法はないのでしょうか?
以下の方法があります。
(1) bADiosAiRead、bADiosAiReadBp関数を使うことで、1ワード単位のA/Dができます。この関数は、ポーリング用で、関数をコールしたときの(ライブの)アナログ値を取得することができます。
(2) さらに、bADiosAiBuffaModeでAD_SINGLE_INTを指定すると、A/D変換の都度割り込みが発生します。ポーリングよりも高速、高時間精度でデータを取り込めます。

A/Dデータリードには、bADiosAiRead、bADiosAiReadBpを使います。注意点ですが、AD_SINGLE_INTで、割り込みA/D変換を行うと、リングバッファ取り込みよりも大量に割り込みが発生します。ゆえに、サンプリングを早めると割り込みが大量発生し、システムを不安定にさせる可能性があります。(4KSPS程度なら、問題ないと思いますが) また、割り込み発生間隔中で、処理が終わらなかったりすると、割り込みの取りこぼしが発生し、1サンプルのデータを失います。割り込みの発生回数は、関数dwIntrCountで取得できますから、この値よりも、アプリケーションで処理した割り込み発生回数のほうが、少なければ、割り込みの取りこぼしを起こしていることになります。割り込みの取りこぼしは、CPU速度とメモリ速度を上げて、OSやソフトウェアの負荷を軽減することで、改善できます。 また、AD_SINGLE_INTを使う場合、bADiosAiInitializeの第一引数は"RESET"としてください。これは、リングバッファ+トリガを使わないことを明示させるためです。AD_SINGLE_INTでも割り込み発生の確認は、ADiosInterruptStatusの第4引数がTRUEでA/D割り込みとなります。(リングバッファ割り込みと共通)
2002/10/1以前に購入された方で、AD_SINGLE_INTをご使用になるには、弊社ホームページから最新のドライバをダウンロードして、アップデートしてください。

bADiosAiInitializeを呼び出すと,割り込みが終了してしまいますか? bADiosAiInitializeでチャンネルを切り替えながら、AD_SINGLE_INTで割り込みA/D変換を 行いたいのですが、毎回割り込みが解除されるため、サンプリング周期が変動してしまうのではないでしょうか ?
bADiosAiInitializeは、安全のため割り込み処理を中断します。また、割り込みの ON/OFFをチャンネル切り替え間で行うのは、オーバーヘッドが大きく、連続動作中に 使用するのは好ましくありません。そこで、チャンネルを切り替えながらA/D変換値の 読み出しを関数があります。
使い方ですが、bMuxにチャンネルを設定し、 lpwAdData、 lpsAdDataから読み出します。 実際には、マルチプレクサの切り替え時間のロスを防ぐため、A/D読み出しを行ってから チャンネルを切り替えます。

extern "C" BOOL __stdcall bADiosChRead(BYTE bMux,LPWORD lpwAdData,BYTE bCardID);
extern "C" BOOL __stdcall bADiosChReadBP(BYTE bMux,short * lpsAdData,BYTE bCardID);

この関数を使うと、以下のような流れになります。

      bADiosAiInitialize(bMux=0)       チャンネル指定
      bADiosInterruptStart(True)
      bADiosAiBuffaMode(AD_SINGLE_INT)
      (割り込み発生時)
      bADiosChReadBP              チャンネル変更とA/D変換値の取得

なお、デジタルフィルタは積和演算なので、複数のチャンネルを順次取り込むと、 チャンネル間の積和演算をかけることになり、4チャンネルの総和になってしまいます。 ゆえに、AD_SINGLE_INTなどで、チャンネル切り替えを行いながら取り込む場合には、 デジタルフィルタを使用しないでください。 10/1以前に購入された方で、これらの新しい関数をご使用になるには、弊社ホームページ から最新のドライバをダウンロードして、アップデートしてください。


以下のような処理を行っております。 複数チャンネルを連続サンプリングし、一定のインターバル(可変)をあけて 同じように複数チャンネル
    (4点)を、連続サンプリングし、これを繰り返したいのですが、 以下のようにしても、うまくいきませんでした。
      (開始処理)
      bADiosAiInitialize(bMux=0)       チャンネル指定
      bADiosInterruptStart(True)
      bADiosAiBuffaMode(AD_SINGLE_INT)
      (割り込み発生時)
      bADiosChReadBP(0,lpsAdData0,bCardID)
      bADiosChReadBP(1,lpsAdData1,bCardID)  
      bADiosChReadBP(2,lpsAdData2,bCardID)
      bADiosChReadBP(3,lpsAdData3,bCardID)

bADiosChReadBPは、ポーリングでもチャンネル切り替え可能です。ただし、AD_SINGLE_INT を使うと、新しいサンプリング=割り込み発生ですから(次のチャンネルをアナログ値を サンプリングするときには、必ず割り込みが発生しますから)上のようにしても、同じ チャンネルの値を読んでしまうことになります。
では実現方法ですが、一定のインターバルで0に戻るような、巡回カウンターをソフトウェア で作成し、カウンター0,1,2,3でチャンネルをリードするようにしたらいかがでしょうか? カウンターはインターバル時間をサンプリング時間で割った値で0に戻るようにします。
この例を以下に示します。割り込みルーチンでカウンタ先頭の、case0-3のみ、A/D値を 読み出しながら次のチャンネルを指定します。そして、ちょうどインターバル時間になった 最後のcaseYで先頭のアナログチャンネルを指定します。残りはdefault文にあるように、 何もせず、カウンターを回すだけです。この間(default文のところ)では、bADiosChReadBP を使っていませんが、単にA/D変換データを読み出さないだけで、サンプリングは行われており、 正確に時間を刻んでいます。ゆえに、正確なインターバル時間が得られます。
割り込みルーチン(Yは、インターバル時間÷サンプリング時間)
     {
     switch(counter)
        {
        case 0 : bADiosChReadBP(1,lpsAdData0,bCardID);
                 counter++;
                 break; case 1 :
        bADiosChReadBP(2,lpsAdData1,bCardID);
                 counter++;
                 break; case 2 :
        bADiosChReadBP(3,lpsAdData2,bCardID);
                 counter++; break; case 3 :
        bADiosChReadBP(ここ何でもよい,lpsAdData3,bCardID);
                 counter++; break;
                 case Y :
        bADiosChReadBP(0,lpsAdData0,bCardID);
                 counter=0; // ここで巡回
                 break; default :counter++;
        }
      }

 
 
 
 
 
          
サポート トップページ

ユーザー登録

ユーザー登録をなされた方のみが、サポートを受けられます。登録方法は、
@オンライン登録(下リンクボタン)
AFAX用PDFフォームのダウンロード
のいずれかをお選びください。
お客様の個人情報は、当社が責任を持って管理します。

オンラインユーザ登録

オンライン サポート

オンライン上から、下記のサポート情報を入手できます。開発・購入の際の参考にしてください。

サンプルプログラム
用語解説
製品のメリット
導入事例

FAQ

今までによせられた質問に対しての回答を掲載しています。
使用や開発の参考にしてください。

Xシリーズ共通 FAQ
FAQ
FAQ
FAQ
FAQ
FAQ

その他、ご相談
電話・ファックス・電子メールなどの方法で迅速にサポートいたします。お気軽にご相談ください。
TEL : 047-393-6136  
FAX : 047-393-6126   
電子メール store@saya-net.com