web-dev-qa-db-ja.com

SIMULINKとLabVIEWの広範な比較

私は自分の仕事のためにこれら2つのうちどちらを購入するかを決定しようとしています。 SIMULINKを使用しましたが、LabVIEWは使用していません。両方を使用したことがあり、詳細を提供したい人はいますか?私の調査基準は、使いやすさ、ライブラリとテンプレート関数の可用性、リアルタイムのプロービング機能、COTSハードウェアインターフェイスの機会、コード生成の品質、テスト容易性の設計(つまり、ユニット/受け入れテストの生成の容易さ)などです。より多くの基準で私を教育したい人は、ぜひそうしてください!

SIMULINKとLabVIEWについて知らない人のために-これらは両方とも、グラフィカルデータフローモデリング(およびコード生成)を目的としたドメイン固有言語(DSL)です。これらは多産業ツールであり、エンジニアリング設計とモデリングに非常に頻繁に使用されます。

[〜#〜] important [〜#〜]-SIMULINKとLabVIEWがリアルタイムプロービングを提供しているかどうかを知りたいと思っています。たとえば、シミュレートしたいモデルがあります。そのモデルの特定のビルディングブロックに関連付けられた変数がある場合、シミュレーションが続行されるにつれてそれらが変化するのを見ることができますか? SIMULINKにはステップバイステップのデバッガーがあるため、それは確かに不可能であることを私は知っています。 LabVIEWで同様のことは何も知りません。

私は実際にLabVIEWを使用したことがなく、仕事用のインターネットにダウンロード制限と管理者権限の問題があるため、一時的にLabVIEWを取得できません。これが、私が結論を出すためにNIのWebサイトだけを使用できない理由です。この問題に対処するホワイトペーパーが利用できる場合は、私も知りたいです:)

最後の投稿以降の更新

私はMATLABコードジェネレーターを使用しましたが、それが最良であるとは言いません。ただし、SIMULINK Embedded Coderは最高のコードジェネレーターであり、ほぼ独自のコードジェネレーターであると聞いています。これがセーフティクリティカルなシステム設計、つまりセーフティクリティカルなサブシステムモデルからコードを生成するのに適しているかどうかを誰かが確認できますか? Mathworksは、完全に柔軟な本番レベルのC/C++コード生成を実現するために、常にギャップを埋めようとしていることを知っています。

理想的な答えは、「何をしようとしているかに応じて、両方を少し使用する」ということです。そして興味深いことに、私はその方向に向かっていると思います。 ATEOTD、それはたくさんのお金であり、「うまく」使われる必要があります。

前もって感謝します。

8
ha9u63ar

私はSimulinkの経験がまったくないので、LVについてのみコメントしますが、ウィキペディアでSimulinkについて簡単に読むと、主にシミュレーションとモデリングに焦点が当てられていることがわかりますが、LabVIEWではそうではありません。

さて、まず第一に、LVはDSLではありません。どのプロジェクトにも使用したくないでしょうが、これは汎用プログラミング言語であり、それを考慮に入れる必要があります。 NIにはLV用のシミュレーションツールキットがあることを知っています。それがあなたが求めているものである場合に役立つかもしれませんが、私はそれについてまったく経験がありません。私が見た画像は、シミュレーションのためにLVに特別な種類の図を追加していることを示しているように見えました。

第二に、LVはいかなる種類のハードウェアにも制限されていません。これは汎用言語であるため、ハードウェアをまったく使用しないコード、NIのハードウェアを使用または実行するコード、またはハードウェアを使用するコードを記述できます(DLL) =呼び出し、.NETアセンブリ、RS232、TCP、GPIB、またはその他の考えられるオプション)。さまざまなデバイス用のLVドライバのコレクションは非常に多く、ドライバの品質は通常、誰が作成したかによって異なります。

第三に、LVでリアルタイムに確実にプローブできます。 CやJavaの場合と同じようにコードを記述し、それを実行すると、いくつかのデバッグオプションがあります。

  1. シングルステッピング。 LVが並列であるため、これは実際にはそれほど一般的ではありません。
  2. 実行の強調表示。これにより、さまざまなワイヤのすべての値が表示されながら、コードがスローモーションで実行されます。
  3. プローブ。各ワイヤーが持っていた最後の値を示します。ワイヤーは、変数がテキストベースの言語で行うのと同じ機能を果たします。これはリアルタイムで更新され、私はあなたが望むものだと思います。
  4. ワイヤ値を保持します。これにより、データがワイヤを通過した後でもワイヤをプローブできます。これは、変数を使用したテキストベースのIDEで得られるものと似ています。 LVでは、ワイヤーの値は一時的なものであるため、通常はありません。そのため、明示的に要求しない限り、値は保持されません。

もちろん、コードについて話しているので、コードを記述して値をグラフや数値インジケーターで画面に表示したり、ファイルに記録したりすることもできます。したがって、実際にプローブする必要はありません。分析コードなどを追加することもできます。

第4に、完全に機能する評価モードでLVをダウンロードして実行してみることができます。私の記憶が正しければ、NIは現在、サイトに登録すると7日、次に45日を与えます。仕事用のコンピューターでそれができない場合は、自宅で試すことができます。ダウンロードだけに問題がある場合は、最寄りのNIオフィスに連絡して、DVDの送付を依頼してみてください。

モデリングとシミュレーションについては何も知らないので、やりたいことをするために実際にどのようなコードを書かなければならないのかわかりません。 NIに特別なモジュールがある場合、それは通常のコードで完全にカバーできるものではないと思います(少なくとも元の表記が必要な場合はそうではありません)が、何をするコードを書くことができればと思いますあなたがCで欲しいなら、あなたがそれをLVで書くことができないはずの理由はありません(もちろん、あなたがLVでコードを書く方法を知っていると仮定して)。

6
Yair

1995年からlabVIEWを使用し、2000年からSimulinkを使用しました。現在は、制御システムの設計、labVIEW RealTimeを使用したロボットシステムのシミュレーションおよびMATALAB/Simulink/DSPACEを使用した自動車用ECUに携わっています。

LabVIEWは測定システムに重点を置いており、動的シミュレーションではMATLAB/SIMULINKに重点を置いているため、

複雑なシミュレーションを実行し、コントローラーまたはプラントの複雑なシミュレーションモデルを作成/デバッグする場合は、Simulink + RealTimeWorkShop + StateFlowChartを使用します。 LabVIEWには、動的シミュレーション用の効率的なコードジェネレータがありません。 RTWは、より小さく最速のコードを生成します。

主な作業がマシン用のコントローラとGUIを備えたシステムの開発である場合、またはコントローラを現場に配備したい場合は、labVIEWを使用してください。

主な作業が、優れたGUIを備えた柔軟なHILまたはSILシステムの開発である場合は、VeriStandを使用できます。 VeristandはSimulinkコードとLabVIEWコードを混在させることができます。

また、予算が大きく(非常に大きい)、自動車制御のプロトタイプで作業している場合、DSPACEハードウェアは自動車用ECUSの迅速な開発、または電力回路を開発するためのOPALに非常に適しています。ただし、コントローラーのプロトタイプまたはHILテストの場合のみ。

COTSハードウェアの観点から:Mathworksはハードウェアを製造していません-> Matlab/Simulinkはいくつかのベンダーのハードウェアをサポートしています。

NationalInstrumentsはハードウェアの製造/販売-> LabVIEW Real Timeは、NationalInstrumentsハードウェアのサポートに重点を置いています。 COTSの完全な代替品はありません。

16
Jesus Alfonso

最良の答えの多くは、最終的な設計要件に依存する必要があります。製品を開発していますか?もしそうなら、あなたは開発のどの段階にいますか?それとも研究をしていますか?

私は最近、あなたと同じように比較を行いました。私はLVを知っていますが、NI HWはボリュームが非常に高いため、よりハードウェアでスケーラブルなオプションに移行したいと考えていました。つまり、私の会社は製品に移行したいと考えていました。 LVとNIHWが提供するのは、柔軟性です。 Cと比較して、コードを非常にすばやく変更できます。一方、LVはCほど多くの異なるHWプラットフォームで実行されません。したがって、リアルタイム制御とデータ収集に適した安価なプラットフォームを見つけたいと思いました。たとえば、製品を3万ドルで販売したい場合、コントローラーはその15,000ドルの費用をかけません。最終的にはDiamondSystems LinuxSBCになりました。興味深いことに、Simulinkはmostの高価なハードウェアを使用することになりました!それは多くの柔軟性を持っていて、コードを生成するだけでなく、プラントとコントローラーをモデル化することができました。しかし、その後、LVもそれを行うことができます。

Yairが書いたように、LVには優れたデバッグツールがたくさんあります。あまり知られていない、より興味深いツールの1つは、SubVIの 呼び出されたときに一時停止 オプションです。これにより、実行が一時停止している間、SubVIの入力と出力を好きなだけ試すことができます。

1
Adrian Keister

皆さんは本当に興味があるかもしれません LabVIEW用の制御設計とシミュレーションモジュール 。多くのシミュレーションを実行し、将来的にはSimulinkと競合する可能性があります。私は制御エンジニアではありませんが、簡単なテストに使用することがあります。LabVIEWの哲学に精通しているので、最初からSimulinkを習得して作業を行う必要がないことを嬉しく思います。

0
akson128

MATLABとSimulinkは、制御システムの設計とシミュレーションの事実上の標準です。 Simulinkコントローラーモデルは、プラントモデルと組み合わせてオフラインシミュレーションに使用でき、組み込みターゲットへのリアルタイム実装に至るまで使用できます。これは、広範な組み込みライブラリとアラカルトの専用ライブラリを備えた一般的なシミュレーションフレームワークであり、Cおよびその他の言語でカスタムブロック(S-functionブロック)を作成することで拡張できます。これには、非リアルタイムシミュレーションの実行中に、グラフ、数値表示、ゲージなどに値を表示する機能が含まれています。 The Mathworksのリアルタイムターゲットサポートには、x86(xPCターゲット)といくつかの埋め込みターゲット(MPC555など)が含まれ、他のターゲットにはサードパーティのサポートがあります。前述のdSPACEは、非常に強力なハードウェアのサポートを含む完全なプロトタイピングコントローラを提供します。 xPC Targetには、多数のCOTSPCデータ収集カードのサポートが含まれています。リアルタイムのターゲットサポートには、グラフ、数値表示ゲージなどのGUI要素が含まれます。

0
mark

私が理解しているように(私は実際に怒りでそれを使用したことはありません)、LabViewはNIハードウェアのみをサポートし、よりハードウェア指向です。 Simulinkは、データ収集用であれ、リアルタイム実装用であれ、複数のベンダーのハードウェアをサポートしますが、ユーザーが自分のハードウェアに接続するには少し多くの作業が必要になる場合があります(LabViewよりプラグアンドプレイが少ない)。一方、Simulinkは、モデリングとシミュレーション、制御設計、検証と妥当性確認、コード生成、ハードウェアインザループなど、モデルベースの設計プロセス全体をサポートするツールを提供します。

免責事項:私はMathWorksで働いていました。

0
am304