キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

PythonとLabVIEWを統合して使おう!

日本NIの荒深(あらふか)です。東京都西部と神奈川県相模原市の技術営業をしております。

 

今回はLabVIEWと他の開発環境との接続性について紹介したいと思います。その中でもPythonをメインに触れたいと思います。

 

近年、Pythonは機械学習やAIの分野では、物凄い勢いで存在感を高めております。Pythonのプログラムを学ぶ一般書籍も豊富に出版されており、Pythonを学ぶ環境も揃ってきた感じがあります。

 

そのPythonLabVIEWを統合して使えるのをご存じでしょうか?LabVIEW2018からPython関数が追加され、PythonコードをLabVIEWから呼び出せるようになりました。Python関数はLabVIEWベースパッケージに入っているので、どのパッケージをお持ちでも使えます。関数パレットの「接続」→「Python」にあります。

 

Python関数 - LabVIEW 2018ヘルプ

https://www.ni.com/docs/en-US/bundle/labview-api-ref/page/menus/categories/computer/python-node-mnu....

 

この関数が追加されたことで、LabVIEWには用意されていないが、Pythonに用意されているライブラリを使って、LabVIEW環境で統合して使うなんてことも可能となります。例えばLabVIEWNIハードウエアで計測プログラムを作ります。そしてPythonの機械学習ライブラリとして有名なscikit-learnを含むPythonコードを作ります。LabVIEWでの計測結果をPython関数経由でPython側に渡して、Pythonコードで処理された結果を再度Python関数を介してLabVIEW側に持ってきて、結果をグラフ表示させます。このような感じで、Pythonにしか無いライブラリとLabVIEWの計測プログラムを統合することができます。

 

それでは添付のサンプルプログラムを見てみましょう。まずPythonコード(ExamplePythonModule.py)ですが、以下のように4つの関数を含むコードとなっております。

 

ExamplePythonCode.jpg

 

次に添付のLabVIEWプログラムを見てみましょう。プロジェクト内には5つのサンプルVIがありますが、その中のPythonNode_AddTwoIntegers.viを見てみます。なお本サンプルプログラムはLabVIEW2018以降であれば、デフォルトで以下のディレクトリにあります(201xのxはお持ちのバージョンに合わせて下さい)。

 

C:\Program Files (x86)\National Instruments\LabVIEW 201x\examples\Connectivity\Python

 

PythonNode_AddTwoIntegers.jpg

 

このサンプルは引数としてabを渡し、ExamplePythonModule.py内のAdd関数にて演算された戻り値a+bをLabVIEWに返してくるというサンプルです。このようにPythonコードで演算された結果がLabVIEWに返ってくるのが分かるかと思います。

 

この機能はC言語などで作ったDLLLabVIEWからコールするのに「ライブラリ関数呼び出しノード」を使ったり、MATLABのスクリプトをLabVIEWからコールするのに「MATLABスクリプト」を使ったりするのに似た機能です。

 

Python関数を使う際の注意点は以下です。

・Pythonのバージョン(32ビットか64ビット)とLabVIEWのバージョン(32ビットか64ビット)は同じにする必要があります(日本でLabVIEWを使う方の多くが32ビット版LabVIEW日本語版をお使いのはずなので、必然的に32ビット版Pythonを使う必要があります)

・Python関数を使用するには、 Python 2.7または3.6をインストールする必要があります(サポートされていないバージョンでもPython関数が動作する場合もありますが、NIではサポートされているバージョンのPythonのみを使用することを推奨しています)

・Anacondaのディストリビューションはサポートされていないので、Pythonの公式ページよりダウンロードしてインストールする必要があります

Pythonコードを呼び出すパスに2バイト文字(日本語など)があるとエラーコード1671が出るので、フォルダ名を含むパスは英語表記のみにする

・Pythonコードをネットワーク上に保存して呼び出すとエラーコード1671が出るので、PythonコードはローカルPC上に置く

・Python関数は、Real-TimeまたはFPGAターゲットではサポートされていない

Python関数は次のデータタイプをサポートしています

-数値

-配列 (多次元配列を含む)

-文字列

-クラスタ

- ブール(LabVIEW2019以降)

 

以上のように、近年のLabVIEWは他の開発環境と”繋がる”ことをとても意識した作りになっております。是非、近年注目されているPythonとLabVIEWを統合して、みなさんだけのプログラムを作ってみてください。

 

<参考情報>
Pythonの公式ページ
https://www.python.org/

 

Installing Python for Calling Python Code
https://www.ni.com/en/support/documentation/supplemental/18/installing-python-for-calling-python-cod...

 

LabVIEWとConda Python環境の統合について
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000015C6tSAE&l=ja-JP

 

Error 1671 Using Python Script Stored on Network Drive in LabVIEW
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019W6ISAU&l=ja-JP

 

Pythonノード - LabVIEW 2018ヘルプ
https://www.ni.com/docs/en-US/bundle/labview-api-ref/page/functions/python-node.html

 

Pythonセッションを開く 関数 - LabVIEW 2018ヘルプ
https://www.ni.com/docs/en-US/bundle/labview-api-ref/page/functions/open-python-session.html

 


この記事を書いた人

荒深 容好(あらふか まさよし)

岐阜県山県市生まれ。高校卒業後は8年ほど大阪に住む。
日本ナショナルインスツルメンツ(NI)にて東京都西部と神奈川県相模原市を担当。

F1が大好きで、F1レーサーになりたいと思い、カートレースを始めるも、そこまで速くない自分に気付き、

今はF1を見て楽しむF1ファン。好きなレーサーはアイルトン・セナ→ミカ・ハッキネン→ルイス・ハミルトンと

10年周期で変わっている。前職では消防車(主に救助工作車)を作っていた。 
ご相談・お問い合わせなどありましたら、こちらよりお気軽にお問い合わせください。

メッセージ1/2
14,074件の閲覧回数

データタイプは、LabVIEW 2019よりブールもサポートしています。

メッセージ2/2
13,814件の閲覧回数