測定代行株式会社

お問い合わせ

測定代行株式会社

LabVIEWとPythonを連携する方法

LabVIEWとPythonを連携する方法!
計測制御とデータ解析・AI(重要度計算)の融合

「LabVIEWの強力な機器制御・GUI(画面)を活かしつつ、計算処理だけはPythonの豊富なライブラリ(NumPyやScikit-learnなど)に任せたい」

近年、研究開発や工場の自動化(FA)現場において、計測制御のデファクトスタンダードであるLabVIEWと、データ解析や機械学習、AI分野で圧倒的なシェアを誇るPythonを組み合わせて使いたいというニーズが急速に高まっています。

本ページでは、このような課題を解決する「LabVIEWとPythonの具体的な連携方法」を、実用的なサンプルコード付きで詳しく解説します。今回は、Python側でデータの「重要度(寄与度)」を計算し、その結果をLabVIEW側で受け取るシステムを例に挙げてご紹介します。

なぜLabVIEWとPythonを連携させるのか?

LabVIEWとPythonを連携させる最大のメリットは、「それぞれの得意分野のいいとこ取り」ができる点にあります。

LabVIEWの得意分野

各種計測器の同期制御、PLC・シーケンサー連携、直感的で高度なGUI(ユーザー画面)開発、リアルタイム処理

Pythonの得意分野

最新のAI・機械学習アルゴリズム、高度なデータ統計解析(重要度計算、予測)、豊富なオープンソースライブラリ

LabVIEWからPythonを呼び出すことで、従来のPLCや一般的なプログラム言語だけでは難しかった「計測データのリアルタイムAI解析」や「統計処理に基づいた自動制御」が最小限の工数で実現可能になります。

LabVIEWからPythonを呼び出す2つの手法

LabVIEWからPythonのコードを実行する方法は、主に以下の2種類があります。

■ 1. Pythonノードを使用する(推奨)
LabVIEW 2018以降には、標準機能として「Pythonノード」が搭載されています。ブロックダイアグラム上に配置するだけで、指定したPythonスクリプト(.pyファイル)の関数を直接呼び出し、データの受け渡しを行うことができます。高速かつシンプルな実装が可能です。
■ 2. コマンドライン(システム実行VI)経由で呼び出す
古いバージョンのLabVIEWを使用している場合や、Pythonの環境(仮想環境など)を完全に独立させて実行したい場合は、「システム実行VI」を使用して、バックグラウンドで python script.py を実行し、テキストファイルや標準出力を介してデータをやり取りします。

実践サンプル:Pythonで「データ重要度」を計算し、LabVIEWで結果を表示する

今回は、LabVIEWから複数の計測データをPythonに渡し、Python側で「どのデータが重要か(重要度/寄与度計算)」を算出してLabVIEWに返すサンプルを構築します。

1. Python側のコード(importance_calc.py)

まずは、LabVIEWから呼び出されるPythonスクリプトを作成します。ここでは例として、ランダムフォレスト(機械学習アルゴリズム)を用いて、入力された特徴量(データ)の重要度を計算する関数を定義します。

# -*- coding: utf-8 -*-
import numpy as np
from sklearn.ensemble import RandomForestRegressor

def calculate_importance(data_matrix_flatten, rows, cols):
    """
    LabVIEWから1次元配列として受け取ったデータを2次元に整形し、
    目的変数に対する各計測項目の重要度(Feature Importance)を計算します。
    """
    # 1次元配列を2次元(行列)に変換
    data = np.array(data_matrix_flatten).reshape((rows, cols))
    
    # 最後の列を目的変数(ターゲット)、それ以外を説明変数(計測データ)とする
    X = data[:, :-1]
    y = data[:, -1]
    
    # モデルの訓練(超軽量な設定)
    model = RandomForestRegressor(n_estimators=10, random_state=42)
    model.fit(X, y)
    
    # 各特徴量の重要度を取得
    importances = model.feature_importances_
    
    # LabVIEWが受け取れるようにPythonの標準リスト(float型)に変換して返す
    return [float(val) for val in importances]

2. LabVIEW側の実装手順(Pythonノードの活用)

LabVIEWのブロックダイアグラムで以下の処理を行います。

  • Pythonセッションを開く (Python Session Open):使用するPythonのバージョン(例: 3.9や3.10など)を指定してセッションを開始します。
  • Pythonノードを配置 (Python Node):
    • 「スクリプトパス」に先ほど作成した importance_calc.py を指定します。
    • 「関数名」に calculate_importance を入力します。
    • 「入力」に、LabVIEW側で収集した2次元の計測データ(1次元に変換したもの)と、行列のサイズ(行数・列数)を接続します。
    • 「出力」のデータタイプを「1次元実数配列」に指定します。
  • Pythonセッションを閉じる (Python Session Close):処理が終わったらセッションを破棄し、メモリを解放します。

LabVIEW × Python連携における注意点とトラブル対策

実際にシステムを構築する際、以下のようなポイントで躓くケースが多く見られます。

開発前に必ず確認すべき3つのチェックポイント

  • Pythonのバージョン互換性:お使いのLabVIEWのバージョンによって、サポートしているPythonのバージョンが異なります。事前に互換性チャートを確認する必要があります。
  • データ型の変換エラー:LabVIEWのクラスターや多次元配列をそのままPythonに渡すとエラーになることがあります。基本的には「1次元配列」や「文字列(JSONデータ)」に変換して受け渡しを行うのが、確実でバグを防ぐコツです。
  • ビット数(32bit / 64bit)の一致:LabVIEWが64bit版であれば、インストールするPythonも必ず64bit版である必要があります。これが異なるとセッションを開く時点でエラーとなります。

測定代行株式会社の強み

  • ◆ 高度なデータ解析・AI連携システムの実績
    「LabVIEWとPythonを連携させてリアルタイムAI計測を行いたい」「独自の解析アルゴリズムをLabVIEWへ組み込みたい」といった高度な要求に対し、最適なソフトウェア構造設計を行います。
  • ◆ 古いシステムのバージョン更新・リプレイス
    「過去に作られた古いLabVIEWのシステムを最新のWindows環境にアップデートし、同時にPython連携などの最新機能を拡張したい」というご要望にも、プログラム更新作業の代行から柔軟に対応いたします。
  • ◆ PLC制御からLabVIEWへの自動化移行
    PLCやシーケンサーによる制御環境を、PCの強力な演算能力とPythonのライブラリが活かせるLabVIEWベースの自動制御システムへ移行・連携させるシステム開発もお任せください。

LabVIEW × Python 開発・外注のご相談

「Python連携の環境構築がうまくいかない」「既存の計測制御システムを高度化したい」など、
仕様書がなくても、お打ち合わせから最短で現場で本当に使えるソフトを形にします。

無料相談・お見積りを依頼する

お電話でのご相談はこちら:
048-291-8807
(受付:平日 9:00~18:00)