LabVIEW +
ソフト開発 +
実験・研究装置開発 +
システム開発 +
納入事例 +
会社概要 +
「LabVIEWの強力な機器制御・GUI(画面)を活かしつつ、計算処理だけはPythonの豊富なライブラリ(NumPyやScikit-learnなど)に任せたい」
近年、研究開発や工場の自動化(FA)現場において、計測制御のデファクトスタンダードであるLabVIEWと、データ解析や機械学習、AI分野で圧倒的なシェアを誇るPythonを組み合わせて使いたいというニーズが急速に高まっています。
本ページでは、このような課題を解決する「LabVIEWとPythonの具体的な連携方法」を、実用的なサンプルコード付きで詳しく解説します。今回は、Python側でデータの「重要度(寄与度)」を計算し、その結果をLabVIEW側で受け取るシステムを例に挙げてご紹介します。
LabVIEWとPythonを連携させる最大のメリットは、「それぞれの得意分野のいいとこ取り」ができる点にあります。
各種計測器の同期制御、PLC・シーケンサー連携、直感的で高度なGUI(ユーザー画面)開発、リアルタイム処理
最新のAI・機械学習アルゴリズム、高度なデータ統計解析(重要度計算、予測)、豊富なオープンソースライブラリ
LabVIEWからPythonを呼び出すことで、従来のPLCや一般的なプログラム言語だけでは難しかった「計測データのリアルタイムAI解析」や「統計処理に基づいた自動制御」が最小限の工数で実現可能になります。
LabVIEWからPythonのコードを実行する方法は、主に以下の2種類があります。
python script.py
今回は、LabVIEWから複数の計測データをPythonに渡し、Python側で「どのデータが重要か(重要度/寄与度計算)」を算出してLabVIEWに返すサンプルを構築します。
まずは、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]
LabVIEWのブロックダイアグラムで以下の処理を行います。
importance_calc.py
calculate_importance
実際にシステムを構築する際、以下のようなポイントで躓くケースが多く見られます。
「Python連携の環境構築がうまくいかない」「既存の計測制御システムを高度化したい」など、 仕様書がなくても、お打ち合わせから最短で現場で本当に使えるソフトを形にします。
お電話でのご相談はこちら: 048-291-8807 (受付:平日 9:00~18:00)