Academic Company Events NI Developer Zone Support Solutions Products & Services Contact NI MyNI

Document Type: Tutorial
NI Supported: Yes
Publish Date: Apr 18, 2011


Feedback


Yes No

Related Links - Developer Zone

Related Links - Products and Services

LabVIEW MathScript RT モジュールで、テキストベースの演算処理を Real-Time ハードウェアで実装する

0 ratings | 0.00 out of 5
Read in | Print | PDF

Overview

NI LabVIEW は理工系の人にとって直観的なグラフィカルなデータフローモデルをベースにした、対話的開発環境です。LabVIEW を使用すると、テスト、計測、組込設計ソフトウェアとハードウェアを統合するにあたって、他に類を見ない生産性を実現できます。LabVIEW ではグラフィカルコードとテキストコードを、単一の開発環境で記述できるため、プログラミング、解析、アルゴリズム開発などにおいて、多様なアプローチをとることができます。LabVIEW の MathScript 機能によって、数学指向なテキストプログラミング記述ができ、しかも .m ファイルのネイティブコンパイラが処理します。この機能は、元々、LabVIEW の開発システムおよびプロフェッショナル開発システムに入っていたものですが、リアルタイムOS用に最適化されました。NI は コンパイル後のコードが効率的に動作するように、MathScript の内部構造を変更し、LabVIEW 2009 以降 MathScrhipt RT モジュールとして、新たな製品として実装しました。この文書では、.m ファイルをリアルタムOSに実装する方法を紹介します。

MathScript を使った開発

LabVIEW MathScript RT モジュールで開発するには、2つの方法があります。ひとつめは MathScript ウィンドウという対話型ウィンドウで、手持ちの .m ファイルを読込み、書込み、編集、実行する方法です。これはコマンドラインで、数式やバッチを入力して実行する開発スタイルの代替手段を想定しています。 図1 が MathScript ウィンドウで、LabVIEW メニューの ツール»MathScriptウィンドウを選択して開きます。


[+] Enlarge Image

図 1. MathScript ウィンドウ

MathScript ウィンドウの詳細な使用方法については「Part 2 of Developing Algorithms Using LabVIEW MathScript」(英語)をご参照ください。

LabVIEW MathScript RT モジュールの、もうひとつの使用方法は、MathScript ノードです。図2のような、青い四角い枠で表されます。このノードを使うと、VI から .m ファイルのスクリプトを VI に埋め込み、ノブ、スライド、ボタンなどの制御器や表示器と一緒に使えるようになります。

http:/zone.ni.com/cms/images/devzone/tut/oqxpmpwb9110103687628181940.jpg

図 2. MathScript ノード

MathScript ノードは、プログラミング»ストラクチャパレットの中にあり、.m ファイルを VI に埋め込むことにより、グラフィカルコードとテキストコードのいいとこ取りができます。MathScrhipt ノードの詳細な使用方法については「Part 1 of Developing Algorithms Using LabVIEW MathScript」をご参照ください。

MathScript コードのデバッグ

LabVIEW MathScript RT モジュールには、ブロックダイアグラムに .m ファイルを統合した際に役立つ、様々なデバッグツールが含まれています。

LabVIEW MathScript プローブ

LabVIEW MathScript プローブを使用すると、MathScript ノードの計算結果が期待通りではない場合のデバッグに役立ちます。LabVIEW MathScript プローブで、MathScript ノードが実行中に、内部のデータを見られます。このプローブはスクリプト内部で定義されるすべてのデータや、選択したデータを表示します。MathScript プローブを使うには、ノードの右クリックメニューからプローブを選択します。

デバッグ対象の指定

ノードのデバッグ機能には、以下のようなものが含まれます。

  • ブレークポイント
  • シングルステップ実行
  • ハイライト実行

MathScript ノードの左側の灰色部分は、これらのツールで使用される領域で、次のような情報を表示します。

  • 赤いエラーマークで、エラーのある行を表示する
  • 警告マークを表示する
  • ブレークポイントを表示する

http:/zone.ni.com/cms/images/devzone/tut/image61419.jpg

図 3. MathScript ノードのデバッグ

ブレークポイントを設定/解除するには、その行の先頭にマウスカーソルを持っていって、左クリックするだけです。グラフィカルコードのブレークポイントと同様、ブレークポイントで指定した行を実行する直前で一時停止します。そして必要に応じて、ステップ実行やハイライト実行することで、プログラムの実行を追跡します。また、エラーリストウィンドウは、エラーがあった行を表示します。エラーウィンドウに表示された行を選択し、「エラーを表示」ボタンをクリックすると、LabVIEW はスクリプト中のエラー箇所をハイライトします。

スクリプトのハイライト

スクリプトのハイライト機能は、MathScript ノード内のスクリプトの意味ごとに色分けします。この色づけによって、スクリプトの可読性が向上し、エラーや予期しない結果のデバッグの効率も向上します。MathScript ノードはスクリプトのハイライト方法には2つあります。

シンタックスハイライト (syntax highlighting) はスクリプト内のコードの呼び出し方法によって区別します。組込み関数、ユーザ定義関数、定数、演算子、変数を、それぞれ異なった色で表示します。これにより、ある名前がユーザ定義の関数なのか、MatScript の組込み関数の別名なのか区別できます。

データタイプの種類によっても、ハイライトされます。文字列、ブール、整数、倍精度実数の表示色は、LabVIEW と同一です。色、斜体、太字などはデータの次元数によって異なります。ノードの外側でクリックし、データタイプハイライトの色やフォント属性を有効にできます。

構文ハイライトやデータタイプハイライトを有効にするには、MathScript ノードの内側で右クリックし、ショートカットメニューからスクリプトのハイライト»構文、または、スクリプトのハイライト»データタイプを選択します。シンタックスハイライトがデフォルトです。ただし、シンタックスハイライトとデータタイプハイライトの両方を有効にはできません。

リアルタイムターゲットに実装

LabVIEW MathScript RT モジュール最大の機能は、.m ファイルを、NI CompactRIO や PXI ハードウェアといった、LabVIEW のリアルタイムターゲット上で実行できることです。図4 のように、MathScript を含む VI をリアルタイムハードウェアに実装するには、ドラッグアンドドロップするだけの新プロな操作で実現できます。

http:/zone.ni.com/cms/images/devzone/tut/xchfzwsi4324248652098858899.jpg

図4. .m をリアルタイムターゲットに実装

他の LabVIEW VI と同様に、LabVIEW のプロジェクトエクスプローラはハードウェアにプロイするためのインタフェースを持っています。VI を保存して、その VI をリアルタイムターゲットの下にドラッグするだけで、完了です。

この時、ハードウェアに合わせて、変換をする必要はありません。LabVIEW MathScript エンジンは埋め込まれたスクリプトをコンパイルし、静的型付けされたコードに変換します。この型付け方法により、LabVIEW コンパイラはリアルタイムハードウェア、およびリアルタイムOSに最適化したコードにコンパイルできるのです。LabVIEW はインタプリタではなくて、コンパイラなので、開発者はコンパイル時エラーチェックの恩恵を受けられます。LabVIEW コンパイラは、プログラムの実行前に構文エラーを検出できます。

LabVIEW MathScript RT モジュールの確定性

「リアルタイムハードウェアの確定性」という言い回しは、開発者によって意味が異なります。多くの場合「リアルタイムハードウェアに実装する」ことは、ある程度の確定性が得られるものだと期待されるものです。LabVIEW MathScript RT モジュールは、確定的なスクリプトを開発することに用いられますが、関数呼び出しや演算処理によってジッタが生じることがあり、リアルタイムシステムとしては受け入れられないかも知れません。しかしながら、この種の問題に関する情報は、ユーザには提示されません。

MatScript をタイムクリティカルなループで実行する必要があるのは、アプリケーションのごく一部ですが、.m ファイルをリアルタイムターゲットに実装するプロセスを簡略化するにあたり、適切なフィードバックがあるのは有用だと考えられます。

2010年2月にリリースを予定している LabVIEW MathScript RT モジュールの次のバージョンでは、確定性を強化する予定です。

  • スクリプト言語本体の確定性
  • 関数呼び出しの確定性
  • 確定性の高いスクリプトのガイドライン
  • 非確定的にふるまう可能性のあるコードの警告表示

LabVIEW MathScript RT モジュールをリアルタイム演算処理に使用する方法については、「Developing Real-Time Math Algorithms with NI LabVIEW」をご参照ください。

関連資料

LabVIEW MathScript の概要

30日間使えるNI LabVIEW体験版のダウンロード

Developing Algorithms Using LabVIEW MathScript: Part 1 – The LabVIEW MathScript Node

Developing Algorithms Using LabVIEW MathScript: Part 2  – The LabVIEW MathScript Window

LabVIEW MathScript Example Gallery

0 ratings | 0.00 out of 5
Read in | Print | PDF

Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).