別個の機器から同期データ収集について

このQ&Aのポイント
  • 測定関連のソフトウェア開発した方、意見をお願いいたします!USB接続式のI/OデータログデバイスとRS232対応の測定器をパソコンに接続して、データを同期して収集する方法について検討しています。
  • プログラム的にはデータを取り込んで時系列に並べ、指定の条件でデータを記録しますが、ハードウェア的な問題や測定システムのアブノーマルさについて意見を頂きたいです。
  • また、別個の機器をトリガとして受ける場合には、どのような方法が一般的なのかアドバイスを頂きたいです。
回答を見る
  • ベストアンサー

別個の機器から同期データ収集について

測定関連のソフトウェア開発した方、是非意見をお願いいたします! USB接続式のI/Oデータログデバイス((1)とします)と、RS232対応の測定器((2)とします)をパソコンに接続して、同期した形でデータを収集してこれないか検討しています。 (1)は1bitのみ使い、この1bitのオンをトリガとして、オフするまでデータを取り込みます。 サンプリングレートはともに1000Hzで、収集時間は可能な限り、無限大とします。 このような場合、プログラム的には(1)のデータ1000個を取り込み、(2)のデータを1000個取り込んで、ふたつを時系列に並べたとき、(1)のデータ列で"1"になったところの(2)のデータを測定対象としてデータ記録しますが、ハードウェア的に、RS232機器とUSBのクロックが違うため、長時間動かすと徐々にずれて行きます。 ズレると(1)が(2)に比べて早ければ((2)よりもはやくバッファがたまる)、(2)のバッファが1000個になるまで待つ処理を組んでやったとしても、(1)のバッファがオーバーフローする可能性があり、ソフトウェア的に回避する事は不可能に見えます。 お聞きしたいのはこうした測定システムはアブノーマルかということです。普通はそんなことしないよ、的な意見があれば幸いです。 逆に、別個の機器をトリガとして受けるならこうした方法が一般的だよという、アドバイスもあればお手数ですが御教授いただけるとありがたく思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • techa
  • ベストアンサー率60% (41/68)
回答No.2

各測定器が同期しない状態では、そもそもデータ事態を同期させること自体がもんだいがあるのではないですか? こういう場合は、トリガとなる共通の信号を各測定器に与えて、測定をスタートさせてそれぞれのデータの相関とします。 双方のデータ測定完了を待って次回のトリガ入力待ちとします。 こうすることで、データとしての同期は誤差範囲に収めることができますが、最低速の測定器からのデータ取得完了に足を引きずられることになります。 この点については機器選定ミスもしくは構成に問題があるといえるので、そのあたりをどうするか、というプログラム以前の問題に立ち返るべきなのではないでしょうか。 構成の変更ができない場合、データ欠落があるむねのログを残しておくということで、告知だけでもしておくのがよさそうですね。

scheimpflug
質問者

お礼

御回答ありがとうございます。 こういったプログラムをするのは現在、勉強中でして、ハードウェア的に同期のとれていないものをなんとかソフト的に同期がとれないかな、と半ば祈りみたいな気持ちで取り組んでましたが、原理的に考えて無理なんですよね。 通常、専門家のかたがされる場合でも、「同期がとれないから無理」といって断るような内容でしょうか? いずれにしても、お付き合いくださり、ありがとうございました。

その他の回答 (2)

  • techa
  • ベストアンサー率60% (41/68)
回答No.3

各測定器が同期しない状態では、そもそもデータ事態を同期させること自体がもんだいがあるのではないですか? こういう場合は、トリガとなる共通の信号を各測定器に与えて、測定をスタートさせてそれぞれのデータの相関とします。 双方のデータ測定完了を待って次回のトリガ入力待ちとします。 こうすることで、データとしての同期は誤差範囲に収めることができますが、最低速の測定器からのデータ取得完了に足を引きずられることになります。 この点については機器選定ミスもしくは構成に問題があるといえるので、そのあたりをどうするか、というプログラム以前の問題に立ち返るべきなのではないでしょうか。 構成の変更ができない場合、データ欠落があるむねのログを残しておくということで、告知だけでもしておくのがよさそうですね。

  • techa
  • ベストアンサー率60% (41/68)
回答No.1

USBを使うか否かにかかわらず、根本的な問題がありますね。RS232Cの測定器からのデータ転送速度はどの程度になっていますか?9600bpsの時1バイトの転送で1msとなりますから、IO側のサンプルレートが1kHzだとすると、シリアル側から1バイト転送でやっとですね。データの真偽判定とデリミタを加えて処理を行おうとすると、10倍ぐらいの転送速度が必要に思えます。 で、通信速度が満足できるとした場合、念のため、低速側デバイスの速度に合わせるため、双方のデバイス用に十分なバッファをおいて速度の不均衡を緩和する方策をとるのが一般です。(リングバッファ形式をとるのが一般的なのでしょうか) 問題なのはおっしゃるように、バッファあふれがでたときの処理ではないかと思います。これを完全に回避するのを防ぐには1000個のデータがたまるのを待つのではなく、逐次的に読み出してバッファを開けていくことと、バッファの量を双方のデバイスからのデータ速度比以上の量を確保することで、ある程度は回避できそうです。 データの取得速度に開きがある場合の計測というのはある種当たり前に存在している状況ですので、それをいかに実装するのかが腕のみせどころとなります。 ただ、これが成立するのはあくまで、ハード側で本当に同期したデータである場合だけです。 ご指定の環境で、データ自体同期しているかどうかの保証がないようにおもうのですがいかがでしょうか?

scheimpflug
質問者

補足

懇切丁寧な御回答ありがとうございます。 RS232の速度は115200bpsですが、おっしゃられるように、二つのデバイスは、まったく関連がありません。パソコン上の設定で二つのデバイスのサンプルレートと取込バッファを同一に指定し、取込を同時に開始するという手順です。 ためしに、取り込んだ回数をログしていくプログラムを組んで見ましたが、USBのほうがRS232のデータ取込に比べ、若干早いようで、4,5分するとちょうど1000個分ずれていました。つまり、RS232の取込が4,5分したら1秒おくれになったということです。 ということは、こういう場合、ハードウェア的にたとえばRS232測定器のクロックをUSB機器に与えてハードウェア的に同期してやるなどの作業が必要になるということですね?

関連するQ&A

  • データ収集・保存ソフト

    はじめまして データ収集、保管ソフトを探しています。 2次元コードを読み取り、そのコードの内容(英数10桁)、読み取った時間をパソコンに保存したい。できれば決められた時間にその内容を印字したいと思っています。 コードリーダーはOmron製またはCognex製のカメラを検討しています。 パソコンとはRS232CまたはEthernetでの通信になるかと思います。 コードリーダー、通信手順は別として、いわゆるトレーサビリティデータを収集、保管できる市販ソフトをご存知の方おりますでしょうか? よろしくお願いします。

  • 熱電対によるデータ収集について

    熱電対により温度測定をし、そのデータを測定器とPCによるデータロガーで記録していますが、データロガー(測定器本体)が誤動作してしまい、うまく測定できません。以下に、状況を示しますので、どなたかアドバイスをいただければ幸いです。 1.被測定物は石英管にヒーター線を巻いたものであり、真空槽内に設置してある。被測定物の駆動電源はサイリスタレギュレータによる。 2.熱電対はKタイプ、ガイシによるシースをかぶせて石英管内側に設置。 3.測定器の誤動作とは、データ収集時(スキャン時)に電源の瞬断のような動作が発生。瞬間的に測定器が初期化画面になり、時にエラーが出て止まってしまう。 4.PCを使わず、測定器の内部メモリーに書き込むようにしても同様の誤動作が発生。 5.熱電対-測定器の結線は、熱電対を温調器入力に接続し、温調器入力端子からパラレルに測定器に入力。 6.熱電対のライン(補償導線)とGND間をオシロスコープで観察したところ、60Hz200V(0-P)の波形が観測された。

  • シリアル通信でのデータ取りこぼし

    はじめまして。 現在、計測機器からシリアル通信で測定値を取得しています。 その測定機器は1秒間当たり、1000データ測定できるのですが、 プログラムで収集した際、取りこぼしが多く発生します。 取りこぼしがないよう収集するには どうすれば、いいのか、教えていただけないでしょうか? よろしくお願いします。 動作の流れは  (1)測定ボタンを押す  (2)1秒間測定する (1000データ) → 保存 ◆教えてほしい箇所  (3)1秒後自動的に終了する 環境  OS:Windows XP  プログラム:VB.NET 2008  通信:RS232C  測定データ1個当たり:X.XXXX (6桁)

  • PCからNCフライスにデータ転送できない

    当方職場で大隈豊和機械のNCフライスの「2R-NC」制御機械「OH-OSP-HMG」を 使用しております。 先々月からパソコンとNCフライスをシリアルケーブルでつないで プログラムを転送しておりましたが、 今日突然「読み込み バッファ オーバーフロー」というエラーが出て パソコンからNCフライスへのプログラムの転送ができなくなりました。 詳しい状況は以下のとおりです。 ・NCフライスのRS232Cの端子とパソコンをシリアルのクロスケーブルで  USBに変換して繋いでいます。 ・windows8でNCターミナルというフリーソフトを使いプログラムを転送していました。 ・今日「2560 RS232C 読込み バッファ オーバーフロー エラー」  というエラーがでてデータの転送ができなくなりました。 ・逆にNCフライス内のデータPCに転送するのは問題無くできます。 ・午前中に問題なくパソコンからNCに転送できたデータを  試しにもう一度送ってみたら上記のエラーがでて転送できませんでした ・パソコンとNCフライス双方とも再起動してみましたが改善しませんでした。 一体何が原因でどうしたら改善しますでしょうか? どなたかご教授をお願い致します。

  • RS-232C経由マルチメータを使用して自動計測でバッファがオーバフローします

    現在RS232C経由でデジタルマルチメータ(KEITHLEY 2000 MULTIMETER)の自動計測をしようとしています(C#.NET)。 timerで高速制御(10msぐらいで電圧値がほしい)しようとすると、KEITHLEYのバッファがオーバーフローして困っています。timerをゆっくり(200msぐらい)にするとちゃんとデータを送ってきてくれます。 そこで、最速の時間分解能で計測するために、PCから、マルチメータのバッファの中身が0だったら、次の電圧値要求を送るというようにしたいのですが、「バッファの中身が0だったら」という命令が分かりません。 どのようにしたらよいでしょうか。また他のいいやり方はあるのでしょうか。

  • USB接続機器の調子が悪い

    PCに対してUSB接続している機器の調子が悪く、困っています。 センサー系の装置で、ある種の情報収集のためにPCとつないでいるのですが、 不定期に調子が悪くなって、情報収集が途中で止まったり機器としての通信が 不完全になったりします。 機器はUSBからのバスパワーで動作しています。 使っているPCのUSB挿し込み口はフルに利用しておりまして、 ひょっとして、PC内部のUSBハブでの電源供給やデータ処理に 問題があるのかもしれないと考えています。 (1)USBポートをフルに活用していて、USB接続機器の動作が不安定になる。   (USB接続機器がPCとデータ通信をしない機器の場合) (2)USBポートをフルに活用していて、USB接続機器とPC間のデータ通信が  不安定になる ・・・というような事例はございますでしょうか。 そういう経験をお持ちの方がおられたら、ぜひ、どう解決したか ご教示いただきたくお願いいたします。

  • 測定機器接続PCとネット接続PCのデータ交換について

    よろしく御願いいたします。 1)測定機器に接続しているPCが3台あります。 2)ネットワークに接続しているPCが1台あります。 3)測定機器に接続しているPCはネットワークには接続したくありません(基本的に)。 4)現在は測定機器に接続しているPCに蓄積しているデータを2)項のPCに移動する際はUSBメモリを毎回利用しています。 5)上記作業が面倒なので、測定機器に接続しているPCのデータを2)項のPCの共有ファイルにデータ保管したいと考えています。 6)当方のパソコンの知識があまり詳しくありません。 従って、出来るだけ簡単な方法で上記の希望を叶えたいです。 7)測定機器同士の距離はそれぞれ2m以内にあるのですが、測定機器とネットワーク接続PCとの距離は約10mあります。 8)これらを可能とするための費用は作業が簡単であれば高価でも構いません。 何か、希望を満たす手段などありましたらご教授頂けます様御願いいたします。 よろしく御願いいたします。

  • ハイパーターミナルを用いて測定機器とPC接続したのですが・・・

    RS232のケーブルを用いて、測定機器とPCを接続しハイパーターミナルを用いて、測定結果をCSV形式でPCで受信したのですが、ハイパーターミナルの画面上にCSV形式のデータが表示されただけで、どのようにCSVのデータをエクセルに読み込ませればよいのかわかりません。 また、得られたデータは送られたデータの後半だけで、前半部分が切れて残っていせん。どのような設定にすればよいか教えていただければ幸いです。 使用しているPCのOSはWindows98です。 宜しくお願いします。

  • GPSデータ(NMEA)受信

    USB接続のGPS受信機の購入を検討中で、 GPS受信機よりNMEAデータのUTCを取得したいと考えています、 NMEAデータ取得の方法について教えてください。 プログラム上(VB.net,C#)より RS232CのようにUSBのポートに接続し、 ボーレートを設定して受信すればよいのでしょうか? NMEAデータがRS232Cシリアル通信のように垂れ流されてくるイメージなのですが、 問題ないでしょうか?

  • USBシリアルコンバータ

    RS-232cのコネクタをもつ計測器で、電力などをオンライン測定したいのですが、私のパソコンはUSBポートしかなく、ラトックシステム社のUSBシリアルコンバータREX-USB60Fを購入しました。 コンバータと、計測器のインストールは終わったのに、いざ繋げてみても何故か測定できません。 メッセージには 接続を確認して下さい と出ます。 ちなみにRS-232cポートをもつPCでは測定できたのですが… どうしたら接続できるでしょうか? どなたか教えてください