05-21-2013 11:14 PM
いつもお世話になっております.
表題の件で質問です.
実現したいこと
アプリケーションユーザがテキストで作成した処理コードを,LabVIEWで作成したアプリケーションで読み込んで,
処理を実行する.
フォーミュラノードへテキストを入力して処理が実現できればと考えていたのですが,
フォーミュラノードは数値しか入力できないようなので,代替え手段を探しています.
どなたかご教授をお願いします.
05-22-2013 11:08 AM
ご存知のとおり、フォーミュラノードの入出力は数値データしか対応していません。
テキストで作成した処理コードをLabVIEWで読み込まれたいとのことですが、
C++やMATLAB といったテキスト言語のコードをLabVIEWで処理をするといったことを考えているのでしょうか。
05-22-2013 07:52 PM
ご返答ありがとうございます.
ご指摘の通り,テキスト言語のコードをLabVIEWで処理させたいと考えています.
アプリケーションユーザが,装置の制御方式を自由にカスタマイズできることようにすることが目的です.
ユーザが制御方式をテキストベースでコードを記述し,それをLabVIEWアプリケーションに読み込ませて
制御を実行できるように考えています.
何か方法がないか,ご教授をお願いします.
05-22-2013
11:28 PM
- 最終編集日:
04-01-2025
10:15 AM
、編集者:
Content Cleaner
kendo_keisoku 様
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部 小野と申します。
kendo_keisoku 様のご要望の理解のため、
いくつか質問をさせていただいてもよろしいでしょうか。
・予めいくつかの制御方式をEXEにプログラムしておき、
フロントパネル上でパラメータや制御方式を選択するということだけでは充分ではないということでしょうか。
・具体的なプログラミング言語の指定はございますでしょうか。
以下に、お客様のご要望に近いと思われる方法をいくつかご案内させていただきます。
1) Mathscriptノード http://www.ni.com/white-paper/3502/ja
概要 MATLAB構文で記述されたスクリプトを、LabVIEWが解釈し、実行します。
2) DLLの呼び出し http://www.ni.com/white-paper/4877/ja
概要 他言語で作成したDLLを、LabVIEWから呼び出し、機能を使用する
私が現在描いているお客様が実現したい動作は2)に近いと思っているのですが、
いかがでしょうか。
この場合、実際には、
I)他言語で制御方式を記述したDLLを作成
II)LabVIEWで作成したEXEでDLLを指定し、呼び出す
という2段構成になってしまうと思います。
上記内容をご確認いただけますでしょうか。
宜しくお願い申し上げます。
日本ナショナルインスツルメンツ 技術部
小野
05-22-2013 11:44 PM
日本ナショナルインスツルメンツ
小野様
ご回答ありがとうございます.
ご質問に返答いたします.
>・予めいくつかの制御方式をEXEにプログラムしておき、
> フロントパネル上でパラメータや制御方式を選択するということだけでは充分ではないということでしょうか。
「制御方式」というよりは,制御式,つまり数式をアプリケーションユーザが編集してアプリケーションに読み込ませて
制御を行わせたいのです.
数式である以上,どのような式になるか不明なためテキストを読み込ませて柔軟に対応できるようにと考えています.
>・具体的なプログラミング言語の指定はございますでしょうか。
特にはございませんが,できれば汎用的な言語(C言語,MATLABスクリプト)にしたいと考えています.
提示していただいた方法について,質問があります.
1)Mathscriptノードについて
Mathscriptノードを使用するにあたって,LabVIEWの特別なパッケージを購入しておく必要があるでしょうか?
以上,よろしくお願いいたします.
05-23-2013
02:15 AM
- 最終編集日:
04-01-2025
10:16 AM
、編集者:
Content Cleaner
kendo_keisoku 様
お世話になっております。。
日本ナショナルインスツルメンツ技術部 小野でございます。
ご質問にお答えします。
>>Mathscriptノードを使用するにあたって,LabVIEWの特別なパッケージを購入しておく必要があるでしょうか?
----LabVIEW開発システムまたはプロフェッショナル開発システムを既にお持ちの場合は、新たにご購入いただく必要はございません。
ベースパッケージをお持ちのお客様は別途ご購入して頂く必要がございます。
[NI LabVIEW MathScript RTモジュール、Windows用]
http://sine.ni.com/nips/cds/view/p/lang/ja/nid/209854
ここでいくつか注意点がございます。
(1)まず、MathScript RTモジュールはMatlabと互換性はあるものの、完全な互換性がないことです。
あくまで.mファイルスクリプト構文をLabVIEWが解釈し、実行を行います。
MATLABをLabVIEW上から呼び出したい場合は、その端末に別途MATLABがインストールされている必要がございます。
(2)次に、Math/MATLABスクリプトを使用して開発を行うことを想定した場合ですが、
LabVIEWで作成したexeアプリケーションでは、MathScriptに渡すデータ(制御目標値等)を操ることはできますが
MathScript自体の編集を行うことができません。
これを実現するためにはLabVIEWの開発環境が必要になります。
上記内容をご確認いただけますでしょうか。
宜しくお願い申し上げます。
日本ナショナルインスツルメンツ技術部
小野
05-24-2013 09:08 AM
横槍で恐縮です。
そこそこの数式でよければ、LabVIEW上でも処理可能です。
「上級フォーミュラ解析」には数式解析のviが入っているので、Eval Formula Node.vi で一気に処理するか、
または Parse Formula Node.vi で一回最初に解析しておいて、その解析情報に、毎回変わる変数値を与えて
評価させる Eval Parsed Formula Node.vi を繰り返し呼び出すかすることで、プログラム的に
数式、入力変数名、出力変数名をいじりながらその数式に代入して値を得ることができます。
添付の例(ver.6で古いですが)では、文字列制御器に数式 " f=5*sin(x/2)+y*y+4 " が入っていて、
このうち入力変数が "x" , "y" で、出力変数が "f" である、という情報を与えてあって、実行させると
1秒おきに適当にx,yを作り出しながら、数式に x, y を代入して f を計算し、一緒にプロットしています。
実行途中で数式を書き換えると、プロットしている f は新しい数式で計算されます。
従って、テキストから読み込んだ数式文字列で演算するように書き換えることも可能です。
(この例では、毎回数式構文解析させるのではなく、数式や変数名が書き換えられた時だけ構文解析させています)
この構文解析では、四則演算、( )付きの式、ちょっとした数学関数は扱えます。
(あまり種類は多くないですが、sin, cos, exp, ln, sqrt などは使える)
いわゆるフォーミュラノードで記述可能な関数より少なかったと思います。
(フォーミュラノードが、LabVIEW本体のコンパイラが処理するのに対して、
上級フォーミュラ解析viは、解析ルーチンをviのダイアグラムで実装しているため)
なので、その程度の式で済むのであれば、こういった方法もあります、というご提案です。
なお、添付のviでは式は1つで出力変数も1つですが、セミコロンで区切って複数の式を並べることもでき、
出力変数を2個・3個・・と増やすこともできます。
私はこの方法を使って、データを任意の関数に最小二乗フィット探索させるものを作ったりしています。
05-25-2013 01:55 AM
催促みたいですみませんが、VI 添付されてなかったみたいです。
質問投稿者ではありませんが、ShiraishiさんのVI に興味がありますので、よろしくお願いします
05-25-2013 05:08 AM
あ、本当ですね。
操作上は添付して投稿しているのですが、添付できていないみたいで。
(そういえば以前も、絵をファイルで添付すると絵が入っていなくて、仕方なく本文中に絵を挿入するようにしていましたが、
全般的に添付の投稿が失敗するのかも知れません。この投稿も、viを添付する操作はしていますが、うまく添付出来ているかどうか)
05-25-2013 05:15 AM
添付できてませんね・・・・
viのフロントパネルとダイアグラムを絵で貼り付けてみます。