ちょっと変わったマニアな作品が集結

今までは、測定系をVB等で制御していました。
しかし、世の中はVBは無くなって.netに移行しつつあります。
そこで、.netに移行するか、Labviewにするか迷っています。
とりあえず、Labviewを勉強しているのですが、難しいです。
あまり、日本語の資料も存在しないみたいなので・・・

そこで、Labviewを扱える方に質問です。
Labviewって良いですか?
また、どうやって勉強したのですか?
なにか良い方法があったら教えて下さい。

漠然とした質問で申し訳ありません。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

私はDOSパソコンの時代にQuick-BasicでGPIB経由で装置制御していたのですが、Windows化してマイクロソフトもQBをサポートしなくなったので、やむなくLabViewに移行しました。

参考書も買ったのですが、結局LabViewのマニュアルと付属のサンプルプログラムで勉強するしか無かったですね。でも、プログラム経験の有る方なら、GPIBで2,3台の装置を単純制御する程度なら、1週間ほどで出来ると思いますよ。
以下は私の個人的感想ですが、
<長所>
1.小規模な実験装置制御を手軽にやるには極めて簡単に出来る。
2.実験中にモニターする程度のグラフィックは簡単に作れる。
3.GPIB制御とDA入出力には便利な機能が備わっている。
4.実験装置制御プログラムの標準となりつつあるので、今後実験装置側もLabView対応が増えると思われるなど将来性は高い。
5.GPIBボードなど、そろそろNI社製以外の対応品も出てきたので、ハードも安くなってきた。
6.グラフィックプログラムというのが、視覚的に楽しめる要素もある。
<短所>
1.BASICやFORTRAN、Cなどのシーケンス系プログラムとは全く思想の異なるグラフィックプログラムなので、慣れるまでとっつきにくい。(特に並列処理には注意を要する)
2.文字処理やファイル処理の細かい設定がしにくいので、複雑なプログラムは意外と面倒だし、既存のプログラムからの移行もしにくい。
3.処理速度が遅いのと、プログラムサイズが2次元的に広がっていくので、大規模なプログラムは作りにくい。
4.周りに相談出来る知り合い、頼れる参考書が少ない。

日本語だとLabViewでのプログラム製作を請け負っている会社OCSのサイト
http://www.ocs-lv.co.jp/LabVIEW/ や
日本のNIサイトの
http://newsgroups.ni.com/cgi-bin/dnewsweb.cgi?cm …
が多少助けになります。
英語を苦にしないなら、NI米国サイトの
http://exchange.ni.com/servlet/ProcessRequest?RH …
は、かなり豊富な情報が有ります。
    • good
    • 0

わたしは、VBどころか、Basicのプログラミングの経験は


まったくありませんが、この1年間で、測定用プログラムを
4本LabVIEWで作りました。
デジタルマルチメーター4台をGPIBで動かしています。
LabVIEWの強味はなんと言っても、この手軽さでは
ないでしょうか?
ただし、逆にハード・ソフトの事を全く知らなくても
とりあえず、それなりの物が出来てしまう怖さもあります。
弱みは、やはり情報源が少なすぎ。
価格が高いと言うことですね。
前者は英語が得意な人なら問題ありません。
アメリカではVBユーザーよりも多いですから、英文の
本やホームページは沢山あります。

ちなみに私はもう、VB等テキストベースの言語には
とてもやる気がなくなってしまいました。
    • good
    • 0

私の場合LabViewが仕事に使えるかもしれないと思って資料を集めたり、


営業マンを呼んだりしましたが、結局採用しませんでした。

不採用の理由は、仕事の内容がLabViewを使うまでのことはないと判断した
からです。それとNational Instruments(NI社)のMLを見た感じでは
結構使い勝手が大変そうだし、VBなどと比べるとあまりにもユーザーが少ない
ので、何かあったとき(ソフトのバグなど)に情報交換できる人も少ない。
場合によってはお手上げになるという不安も感じました。

その点少し大変でも、全部自作するとその心配がない。
要はLabViewが提供するコンポーネントを利用しなくても、
自作できる程度のコンポーネントで十分事足りる仕事だったというわけです。

測定器との接続がRS232Cだけなら、あえてLabViewを使わなくてもいいと
思います。(私の場合はこれです)
ただNI社のGPIBボードを使っているとかいうのなら、
やはりNI社のLabViewはハードに合っているのでベストかと。

LabViewの勉強方法は、NI社がやってる有料セミナーがあります。
あと先ほど触れたML。それとLabViewの日本語解説本は図書館でみたことが
あります。確か工業高校だったか高専の先生が書かれた本でした。
書名は失念しましたが。

正規ユーザーになれば、電話やメールとかで使い方が聞けるかと思います。
    • good
    • 0
この回答へのお礼

貴重なご意見をありがとうございます。
ちなみに、測定系はGPIBで組んでいます。
だから、Labviewかな~と思ったんですよね。
別にVBで間に合っているのですが・・・

日本語解説本は多分「井上泰典」さんの本だと思います。
NIのMLは知りませんでした。
いろいろとありがとうございました。

お礼日時:2003/01/27 18:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC# シリアル通信でデータ受信時の欠損について

Visualstudio 2013 を使用して C# で開発を行っています。

SerialPort Classを使用してデータの送受信をするプログラムを作成しているのですが、
非同期でデータを受信する際にどうしてもうまくデータを取得出来ません。

5Byteのデータは正常に取得できるのですが、
その直後にくる40Byteのデータは、真ん中あたりの10数Byteや最後の10数Byteしか取れません。


serialPort.DataReceived に登録したイベント関数の中身です。

--------------------------------------------------------------------------------------
private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
bytesRead = 0;
// Initialize a buffer to hold the received data
byte[] buffer = new byte[this.serialPort.ReadBufferSize];

try
{
bytesRead = this.serialPort.Read(buffer, 0, buffer.Length);
if (true == serialPort.IsOpen)
{
serialPort.DiscardInBuffer();//受信バッファをクリアする
}

}
catch (Exception ex)
{
DataLog.Exception(ex);
}

//派生クラス用の処理
DeviceClassEventArgs _DeviceClassEventArgs = new DeviceClassEventArgs(buffer, bytesRead);
DeviceClassEvent(this, _DeviceClassEventArgs);
}
--------------------------------------------------------------------------------------

ネットの情報を参考に、
ReceivedBytesThreshold の値を期待するデータ量に逐一変えることで
とりあえず正常に取ることが出来たのですが、これでいいのでしょうか?
期待するデータ量がわからなかった場合は使えないのかなとも思います。

データが欠損してしまう理由、
上記の対処法以外の一般的な対処法など有りましたら教えて下さい。

その他参考になるページ等ありましたら教えていただけると大変助かります。

Visualstudio 2013 を使用して C# で開発を行っています。

SerialPort Classを使用してデータの送受信をするプログラムを作成しているのですが、
非同期でデータを受信する際にどうしてもうまくデータを取得出来ません。

5Byteのデータは正常に取得できるのですが、
その直後にくる40Byteのデータは、真ん中あたりの10数Byteや最後の10数Byteしか取れません。


serialPort.DataReceived に登録したイベント関数の中身です。

-------------------------------------------------------------------------------...続きを読む

Aベストアンサー

DataReceivedイベントが発生したときでも、
シリアルポートへの受信はまだ継続している可能性があるので
不用意にバッファクリアしてはいけない。
非同期の受信処理は、何かと難しいのです。

private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
  bytesRead = 0;
  // Initialize a buffer to hold the received data
  byte[] buffer = new byte[this.serialPort.ReadBufferSize];

  try
  {
    //bytesRead = this.serialPort.Read(buffer, 0, buffer.Length);
    //if (true == serialPort.IsOpen)
    //{
    // serialPort.DiscardInBuffer();//受信バッファをクリアする
    //}

    // 受信バッファにデータがなくなるまで繰り返し読込む
    while (true)
    {
      if (0 == serialPort.BytesToRead)
      {
        break;
      }
      buffer[bytesRead] = (byte)serialPort.ReadByte();
      bytesRead++;
      System.Threading.Thread.Sleep(0);

      // シリアルポートの受信バッファには、
      // ・必要なブロックの途中から受信している。
      // ・次のブロックの先頭部分も受信されている。
      // 可能性があるので、ここで必要なブロックだけRead()できたことを確認する。
      if (必要なブロックが正常に読めたか確認する関数())
      {
        break;
      }
    }
  }
  catch (Exception ex)
  {
    DataLog.Exception(ex);
  }

  //派生クラス用の処理
  DeviceClassEventArgs _DeviceClassEventArgs = new DeviceClassEventArgs(buffer, bytesRead);
  DeviceClassEvent(this, _DeviceClassEventArgs);
}

DataReceivedイベントが発生したときでも、
シリアルポートへの受信はまだ継続している可能性があるので
不用意にバッファクリアしてはいけない。
非同期の受信処理は、何かと難しいのです。

private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
  bytesRead = 0;
  // Initialize a buffer to hold the received data
  byte[] buffer = new byte[this.serialPort.ReadBufferSize];

  try
  {
    //bytesRead = this.serialPort.Read(buffer, 0, buffer.Le...続きを読む

QLabVIEWでEXCELファイルを操作できる?

ナショナルインスツルメンツ社のLabVIEW7.1を使用している者です。
以下に記載します作業をLabVIEWで実現したいのですが、
LabVIEWでEXCELファイルを操作(起動、マクロの実行、終了)
することは可能でしょうか?

1)LabVIEWからEXCELファイルを起動。
2)EXCELのVBAでバイナリデータを読込み、
  アスキーデータに変換した後、CSVファイルに保存。
3)LabVIEWでCSVファイルを読込み、データ解析。

※LabVIEWで直接、バイナリデータをアスキー変換できれば
 良いのですが、事情があってEXCELのVBAを利用するしか
 方法がない状況です。

上述の作業が可能であれば、その具体的な方法につきまして
ご教授して頂きたく、お願いする次第です。

愚問かもしれませんが、困っております。
宜しくお願いします。

Aベストアンサー

NIのサイトに「Run Excel Macro from LabVIEW」って例がありますね。

参考URL:http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=B45EACE3D9D856A4E034080020E74861

QLabviewとは,こういうことでしょうか

こんにちは,Labviewについて興味がありますが,いまいち私がそのありがたみを理解しているか不安です.

例えば,電気化学の実験をするとしますと,
定電位・定電流電源装置(ポテンシオスタット),
関数発生器(ファンクションジェネレーター)
オシロスコープ

などが必要となりますが,

LabviewとPCとデータ収集ボードがあり,
これらでバーチャル計測機を構成すれば,
以上の装置は要らないで済むとういことでしょうか?

けれども,ここで新たな疑問が・・・・

例えば定電位実験ならば,
ポテンシオスタットが 絶えず電位をモニターして,
一定の電位に保ってくれるわけですが,
そのポテンシオスタットの中には,定電位制御するための
抵抗やらオペアンプやらの実際の回路物が入っているわけですよね.

LabviewとPCとデータ収集ボードでバーチャルな計測器を
作るわけですが,その場合,実際の回路なしに,どうやって
定電位制御するのでしょうか?

何かとんでもない誤解をしているかも知れず,
不安です.お教え頂ければとても助かります.

よろしくお願いします.

こんにちは,Labviewについて興味がありますが,いまいち私がそのありがたみを理解しているか不安です.

例えば,電気化学の実験をするとしますと,
定電位・定電流電源装置(ポテンシオスタット),
関数発生器(ファンクションジェネレーター)
オシロスコープ

などが必要となりますが,

LabviewとPCとデータ収集ボードがあり,
これらでバーチャル計測機を構成すれば,
以上の装置は要らないで済むとういことでしょうか?

けれども,ここで新たな疑問が・・・・

例えば定電位実験ならば,
...続きを読む

Aベストアンサー

> DAQボード一枚で,そのアナログ出力チャネルの数だけ,
> ポテンシオスタットが用意できる訳ですよね?

そう言うことになりますね。
そのような用途にはとても便利で強力なツールです。
私は一人のユーザに過ぎず、特に詳しいわけではありませんが、おたずねの

> 純粋なプログラミングならばできますが,Labviewを使ってこんなことができますでしょうか.

についてでしたら、きっと大丈夫だと思います。

先にご紹介したサイト「Love!LabVIEW」の「VIプログラミング研究室」にあるサンプルVI中に、波形データが閾値とクロスした点をピックアップするVIがありますが、多少はご参考になるでしょうか。

LabVIEWには多数の組み込み関数があるので、上記の例のように、大抵はそのグラフィックシンボルを組み合わせて配線するだけで入出力の演算処理ができます。
またそれとは別に、VI中に数式をそのまま書き込んで演算させ、その結果を制御出力させることもできますので、お尋ねのような用途に使うことは十分可能と思われます。

LabVIEWに関しては下記サイトなどもご参考になるかもしれません。

LabVIEW World
http://www.ocs-lv.co.jp/LabVIEW/

以上、研究のお役に立てば幸いです。

> DAQボード一枚で,そのアナログ出力チャネルの数だけ,
> ポテンシオスタットが用意できる訳ですよね?

そう言うことになりますね。
そのような用途にはとても便利で強力なツールです。
私は一人のユーザに過ぎず、特に詳しいわけではありませんが、おたずねの

> 純粋なプログラミングならばできますが,Labviewを使ってこんなことができますでしょうか.

についてでしたら、きっと大丈夫だと思います。

先にご紹介したサイト「Love!LabVIEW」の「VIプログラミング研究室」にあるサンプルVI...続きを読む

QCOMポート通信をモニターしたい

現在、PCと組み込み系の端末との間でRS-232C通信をさせています。このRS-232C通信のTXとRXのデータのタイミングなどをモニターできるソフトはありませんでしょうか?

現在RS-232C通信をさせているのですが、組み込み系の端末側にはTCP-RS232C通信変換のモジュールを取り付けていて、PC側もTCP-RS232C変換させるソフトを使用しています。


TCP-RS232C通信変換のモジュールはWIZNET社製のWIZ110SRというのを使用しています。

PC側ではTCP-RS232C通信変換ソフトでWIZNET社製のWIZ VSPというソフトを使用して、TCPで受けたデータをRS-232Cに変換して受信プログラムソフトに転送しています。


このPC側の受信ソフトとTCPへ変換する間のCOMポートの通信をモニターできるようなソフトというものはありませんでしょうか?

どうぞ、ご教授頂きますようお願い致します。

Aベストアンサー

PC自体のCOMポート(USB-Serial変換でも)なら、ソフトでどうにかできる場合もあるでしょうが……

ご使用の機器の場合、PCからはネットワーク端末に見える…のではないでしょうか?
ドライバでCOMポートとして見えるのですか?
# 後者ならソフトで何とかできる…かも知れません。

こちらの組み込み系開発ではラインアイ社の機器を使用しています。
http://www.lineeye.co.jp/html/product_le2500.html
http://www.lineeye.co.jp/html/product_le3500.html
などですね。
http://www.lineeye.co.jp/html/product_LE-200PS.html
http://www.lineeye.co.jp/html/product_LE-150PS.html
でも用途によっては十分かも知れません。
# 組み込み開発に使うのであれば1台あった方が何かと便利です。
# それなりに高機能なので…値段も結構しますけどね。

Q第一章→第一節・・・その次は?

よく目次で
第一章○○○
 第一節△△△
 第二節□□□
第二章◇◇◇~
とありますよね?その第一節をさらに分けたい場合、第一何となるのでしょうか。
ご存知の方よろしくお願いします。

Aベストアンサー

たまたま手元に「公用文作成の手引き」という冊子があります。
役所で使用する文書規定の本です。

これによると、章、節、項までは皆さんのおっしゃる通り。

さらに、「項目を細別する見出し符号は以下による。」とあります。

第一章 第二章・・・
 第一節 第二節・・・
  第一項 第二項・・・
   第1 第2
    1 2 3
     (1) (2) (3)
      ア イ ウ
       (ア) (イ) (ウ)
        A B C
         (A) (B) (C)
          a b c
          (a) (b) (c)

注1:「第1」を省略して「1」からはじめても良い。
注2:「イ」「ロ」「ハ」「ニ」は用いない。


以上のように書いてありました。
しかし、何にせよ法律で決まっているわけでもないし、通常は
自分の好みで選択して、問題ないと思います。

Q「ご連絡いたします」は敬語として正しい?

連絡するのは、自分なのだから、「ご」を付けるのは
おかしいのではないか、と思うのですが。
「ご連絡いたします。」「ご報告します。」
ていうのは正しい敬語なのでしょうか?

Aベストアンサー

「お(ご)~する(いたす)」は、自分側の動作をへりくだる謙譲語です。
「ご連絡致します」も「ご報告致します」も、正しいです。

文法上は参考URLをご覧ください。

参考URL:http://www.nihongokyoshi.co.jp/manbou_data/a5524170.html

Qロータリーエンコーダ 信号(A,B,Z相)処理

こんにちは。

ロータリーエンコーダを用いて回転速度・距離の測定を試みています。出力信号(A,B,Z相)の計測・記録まではできたのですが、それらの信号が何を意味するものなのか理解ができていません。その信号から回転速度・距離をどのように算出すればよろしいのでしょうか?教えてください。なお、使用しているロータリーエンコーダは http://www.mutoheng.com/~deji/rotaryencoder/index.html#UN です。

Aベストアンサー

A相、B相を見てればほぼ事足ります。
Z相は一回転に一度だけ出る信号です。

まず、一回転で何パルス来るエンコーダなのかを調べます。
50、100、125、360、1000、2000といろいろ種類があるようですが、買ったエンコーダのパルス数がどこかに書いてると思います。
何パルス来たのか分かれば回転数と、初期位置から何パルス分の角度なのかが分かります。
例えば、1000パルスのエンコーダで200パルス目は360/1000×200=72度回転したと言う事がわかります。
ココでZ相を利用すると、電源投入時などに一回転させればz相を基準として、起動時の初期位置の角度を関係なく角度の検出も出来ます。

A相、B相の波形を良く見ると
A相0110011001
B相0011001100
の様になっています。
A相が0の時にB相が立ち上がれば正転、A相が1の時にB相が立ち上がれば逆転などと言う事も分かります。

回転速度の求め方は、一回転で1000パルスのエンコーダなら、例えば0.5秒間に20000パルス来たとします。
すると20000/1000*0.5=20回転/秒と言う事がわかります。

距離は回転数と角度が分かり、タイヤ?の円周が分かれば簡単に求められますよね?

A相、B相を見てればほぼ事足ります。
Z相は一回転に一度だけ出る信号です。

まず、一回転で何パルス来るエンコーダなのかを調べます。
50、100、125、360、1000、2000といろいろ種類があるようですが、買ったエンコーダのパルス数がどこかに書いてると思います。
何パルス来たのか分かれば回転数と、初期位置から何パルス分の角度なのかが分かります。
例えば、1000パルスのエンコーダで200パルス目は360/1000×200=72度回転したと言う事がわかります。
ココでZ相を利用すると、電源投入時などに...続きを読む

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

Q遮断周波数のゲインがなぜ-3dBとなるのか?

私が知っている遮断周波数の知識は・・・
遮断周波数とはシステム応答の限界であり、それを超えると減衰する。
<遮断周波数の定義>
出力電力が入力電力の1/2となる周波数を指す。
電力は電圧の2乗に比例するので
Vout / Vin = 1 / √2
となるので
ゲインG=20log( 1 / √2 )=-3dB
となる。

ここで、なぜ出力電力が入力電力の1/2(Vout / Vin = 1 / √2)
となるのでしょうか?
定義として見るにしてもなぜこう定義するのか
ご存じの方いらっしゃいましたら教えて下さい。

Aベストアンサー

>ここで、なぜ出力電力が入力電力の1/2(Vout / Vin = 1 / √2)
>となるのでしょうか?
>定義として見るにしてもなぜこう定義するのか

端的に言えば、
"通過するエネルギー"<"遮断されるエネルギー"
"通過するエネルギー">"遮断されるエネルギー"
が、変わる境目だからです。

>遮断周波数とはシステム応答の限界であり、それを超えると減衰する。
これは、少々誤解を招く表現です。
減衰自体は"遮断周波数"に至る前から始まります。(-3dBに至る前に、-2dBとか、-1dBになる周波数があります)

QExcelでエラー(#N/Aなど)値を含む範囲で最大値や最小値をもとめ

Excelでエラー(#N/Aなど)値を含む範囲で最大値や最小値をもとめようとすると、エラーが返ってしまいます。
エラーを無視して最大値や最小値を求めることは出来ないのでしょうか?

Aベストアンサー

基本的にエラーを出ないような数式にすることをお勧めしますが、どうしてもエラーを含む場合にも最大値を計算したいなら以下のような配列数式を利用します。

=MAX(IF(ISNUMBER(範囲),範囲,""))

配列数式にするため、入力後Ctrl+Shift+Enterで確定してください。


人気Q&Aランキング