【NodeRed/シリアル通信】こんな方法もありました。

1 Excel VBAによるシリアル通信

これにこだわる理由は、手軽にできるソフト開発環境がEXCELのVBAだから。

という理由ばかりではありません。
実は、計測用に使用しているパソコンがWindows XP(32bit)の場合もあるのです。

試験装置に接続しているパソコンで収集したい。
そのまま、データ処理までをマクロでコード化して業務を効率化したい。

そして、そのパソコンは社内のネットワークに接続していないし、試験装置の付帯装置として単体で使われている。

そんな場合もあります。
その場合、先日、記事にしたScilabのシリアル通信用のモジュールを組み込んでコードを書くのはダメかもしれません。

現在、公開されている範囲に32bit版もありますが、ソフトの実行処理が重たくて現実的ではないようにも思われます。
それにExcelをベースにしたデータ収集ソフトが作りたいのに、別のソフトを紹介されても困ってしまうのが現実かもしれません。

資金がなく知恵で解決を求められている場合、Excel/VBAに関する情報であふれているし、Chat-GPTに指示すればマクロコードを提供してもらえるのでしょう。

どうしたものでしょう。
昨日、Excel/VBAを使ったシリアル通信に関する記事は非公開/削除といたしました。

お気に入り登録している様子でしたので、
あらためて検索して最新の記事にあたってもらった方がいいと考えてのことです。

このことについて、勤務先の豊田高専でも話題にしました。
Pythonでシリアル通信のやり方など、いろいろです。

こんなアイデアが出てきました。

2 Node-Redでシリアルから送られてくるデータを収集する。

Node-RedはWEBアプリなので、そんなに重くないですし、コードもブロック・プログラミングですから簡単です。

MQTTによるデータ収集コードをPythonで書くと、1日を要しましたが、Node-Redでしたら2時間で動きました。
Node-RedならRaspberryPIにインストールできるので、データ収集ができるわけです。
CSV形式で保存しておけば、Excelでもデータは読める。

簡単な事例ですが、改めて紹介します。

3 Node-Red/シリアル通信によるデータ収集の事例

下の写真は、Node-Redを使い、シリアル通信でデータ収集をする実験装置です。

右側にあるM5-StickからOPTAの入力部に電圧変化でLOW/HIGHの2値信号を送ります。
この電圧変化は、M5のボタンを押すとHIGHになるようにプログラムしておきました。

この時、OPTAはシーケンス制御ではなく、普通のArduino OPTAとして使用しています。
HIGHの入力信号が入ると、シリアルに出力するようにArduino IDEでC言語でコードを書き、転送しています。

通常でしたら、Arduino IDEのシリアルモニタで確認しますが、この場合はNode-Redでシリアルモニタに流れるデータの収集を行いました。

結果はうまく動作しましたので、そんなに無理なことはしていません。
Node.jsなどWindows環境で動作するように環境構築するのが大変だと思われるかもしれません。

しかし、Excel/VBAでシリアル通信を試みるぐらいのスキルがあれば、難しくはないと思います。

分かりやすく、OPTAの代わりにArduino UNOなどを使えば、紛らわしくなかったと思います。
OPTAはArduino PLC IDE(ラダープログラム)でも、Arduino IDE(C言語)でも、どちらでもコードが組めます。

 4 Excel / VBAでのシリアル通信は面倒ですよ

Node-Redのコードも簡単な原理照明実験だったので、10分は掛かりませんでした。
M5のコードもボタンを押したとき、指定したポートをHIGHにするだけでしたので、それも15分ぐらい。
OPTAのコードも15分ぐらいだったと思います。

EXCELだと、VBAのコードが32bitと64bitで変わります。
32bitを請求されたときは、過去のパックアップからデータを検索しました。

そのあともうまく動かない。

そんな理由でメールのやり取りをしたことがあります。
マクロの組込みもできるだけ自動化しましたが、それだけでは動かないこともある。

シリアル通信は非同期通信なので、ユーザーが確認し設定する項目が多いのです。

その辺の手離れの悪さから、Excel VBAによるシリアル通信は止めました。
Node-RedやScilabなどアプリケーションに用意されているシリアル通信のモジュールを使うようにしています。

便利なツールで仕事を簡単にしたいなら、オープンソースでの利用を考えた方が良いと思います。

Node-Redでシリアル通信をした時のブロックプログラムです。
これぐらい簡単です。

Excel VBAだと、データ収集の手順をコード化したり、収集したデータをどこにデータを書き込めばよいか手順をコード化する手間が生じます。
それだけで、1~2日はつぶれます。

逆に、ここまで便利になっているのに、それを使おうとしない理由が分かりません。
情報システム部門との連携がうまく取れないのかな?

とも思います。
システムを組むのなら報酬も請求できます。
しかし、この程度から始まることに、『知っている』というだけで報酬は請求できないですよ。

Excel / VBAのシリアル通信にこだわるあまり、無駄に時間とコストを掛けていませんか?

PAGE TOP