Overview
NI LabVIEW は理工系の人にとって直観的なグラフィカルなデータフローモデルをベースにした、対話的開発環境です。LabVIEW を使用すると、テスト、計測、組込設計ソフトウェアとハードウェアを統合するにあたって、他に類を見ない生産性を実現できます。LabVIEW ではグラフィカルコードとテキストコードを、単一の開発環境で記述できるため、プログラミング、解析、アルゴリズム開発などにおいて、多様なアプローチをとることができます。LabVIEW の MathScript 機能によって、数学指向なテキストプログラミング記述ができ、しかも .m ファイルのネイティブコンパイラが処理します。この機能は、元々、LabVIEW の開発システムおよびプロフェッショナル開発システムに入っていたものですが、リアルタイムOS用に最適化されました。NI は コンパイル後のコードが効率的に動作するように、MathScript の内部構造を変更し、LabVIEW 2009 以降 MathScrhipt RT モジュールとして、新たな製品として実装しました。この文書では、.m ファイルをリアルタムOSに実装する方法を紹介します。
Table of Contents
MathScript を使った開発
LabVIEW MathScript RT モジュールで開発するには、2つの方法があります。ひとつめは MathScript ウィンドウという対話型ウィンドウで、手持ちの .m ファイルを読込み、書込み、編集、実行する方法です。これはコマンドラインで、数式やバッチを入力して実行する開発スタイルの代替手段を想定しています。 図1 が MathScript ウィンドウで、LabVIEW メニューの ツール»MathScriptウィンドウを選択して開きます。
図 1. MathScript ウィンドウ
MathScript ウィンドウの詳細な使用方法については「Part 2 of Developing Algorithms Using LabVIEW MathScript」(英語)をご参照ください。
LabVIEW MathScript RT モジュールの、もうひとつの使用方法は、MathScript ノードです。図2のような、青い四角い枠で表されます。このノードを使うと、VI から .m ファイルのスクリプトを VI に埋め込み、ノブ、スライド、ボタンなどの制御器や表示器と一緒に使えるようになります。

図 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 ノードの左側の灰色部分は、これらのツールで使用される領域で、次のような情報を表示します。
- 赤いエラーマークで、エラーのある行を表示する
- 警告マークを表示する
- ブレークポイントを表示する

図 3. MathScript ノードのデバッグ
ブレークポイントを設定/解除するには、その行の先頭にマウスカーソルを持っていって、左クリックするだけです。グラフィカルコードのブレークポイントと同様、ブレークポイントで指定した行を実行する直前で一時停止します。そして必要に応じて、ステップ実行やハイライト実行することで、プログラムの実行を追跡します。また、エラーリストウィンドウは、エラーがあった行を表示します。エラーウィンドウに表示された行を選択し、「エラーを表示」ボタンをクリックすると、LabVIEW はスクリプト中のエラー箇所をハイライトします。
スクリプトのハイライト
スクリプトのハイライト機能は、MathScript ノード内のスクリプトの意味ごとに色分けします。この色づけによって、スクリプトの可読性が向上し、エラーや予期しない結果のデバッグの効率も向上します。MathScript ノードはスクリプトのハイライト方法には2つあります。
シンタックスハイライト (syntax highlighting) はスクリプト内のコードの呼び出し方法によって区別します。組込み関数、ユーザ定義関数、定数、演算子、変数を、それぞれ異なった色で表示します。これにより、ある名前がユーザ定義の関数なのか、MatScript の組込み関数の別名なのか区別できます。
データタイプの種類によっても、ハイライトされます。文字列、ブール、整数、倍精度実数の表示色は、LabVIEW と同一です。色、斜体、太字などはデータの次元数によって異なります。ノードの外側でクリックし、データタイプハイライトの色やフォント属性を有効にできます。
構文ハイライトやデータタイプハイライトを有効にするには、MathScript ノードの内側で右クリックし、ショートカットメニューからスクリプトのハイライト»構文、または、スクリプトのハイライト»データタイプを選択します。シンタックスハイライトがデフォルトです。ただし、シンタックスハイライトとデータタイプハイライトの両方を有効にはできません。
リアルタイムターゲットに実装
LabVIEW MathScript RT モジュール最大の機能は、.m ファイルを、NI CompactRIO や PXI ハードウェアといった、LabVIEW のリアルタイムターゲット上で実行できることです。図4 のように、MathScript を含む VI をリアルタイムハードウェアに実装するには、ドラッグアンドドロップするだけの新プロな操作で実現できます。

図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」をご参照ください。
関連資料
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
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/).

