VOLTECHNO(ボルテクノ)

ガジェットとモノづくりのニッチな情報を伝えるメディア

Jupyter NotebookからRIGOL測定器を遠隔操作する①【LAN接続の方法】

Jupyter NotebookからRIGOL測定器を遠隔操作する①【LAN接続の方法】

直流電源と電子負荷を自動制御してバッテリーのサイクル寿命を測定したい

リチウムイオンバッテリーの性能を評価する場合、バッテリー容量や内部抵抗、最大出力性能などは比較的短時間で測定できますが、充放電を繰り返したときのサイクル回数の測定は長時間の測定時間をかけて作業を行わなければなりません。

サイクル寿命と言えば、リチウムイオンバッテリーの経済性にも関わる重要な項目な訳ですが、互換バッテリーの容量や出力性能に着目している方は増えていても、そのサイクル寿命まで含めた経済性まで言及している方はほとんどおらず、自身としても実際のコスト部分を比較するのであればサイクル寿命についての検証は外せない項目とも思っていたので、そろそろ本腰を入れて取り組んでみようと思い始めていました。

とは言え、菊水あたりの測定器にはバッテリー充放電試験機としてバッテリテスタ PFXシリーズもあるのですが、これは産業用途の製品で300万円くらいする製品なので、個人規模の検証用途で手が出せるものではありません。

菊水電子工業 バッテリテストシステム PFX2000シリーズ

バッテリーのサイクル寿命を個人規模で行う場合、手動で機器の制御を行ったり膨大な測定データを作ったりしなければならず、膨大な時間がかかってしまうために作業としては非現実的です。しかし、最近購入したRIGOLの直流電源と電子負荷装置のデータシートを見たところ、リモートで操作できる強力な機能を備えているらしいので、色々と検証しながらバッテリーのサイクル寿命測定環境を作ってみることにしました。

  • Pythonから測定器をLAN接続でリモート制御
  • バッテリーの充放電サイクルを自動化して、サイクル寿命を測定する
  • これらの制御をNAS上から捜査して自動的にデータ収集するように構成する

そんなわけで、今回の記事ではRIGOLの直流電源装置と電子負荷をLANで接続して、NAS上のPython開発環境からからRIGOLの機器を動かせるかを検証してみます。

NAS上にJupyter Notebookをサクッと構成

早速、SynologyのNAS上にPython環境を構築します。今回使用するのは、ブラウザ上で動作するPython開発環境Jupyter Notebookです。

Jupyter Notebookは1行ずつプログラムを実行・確認できる特徴から対話型実行環境とも呼ばれる開発環境で、データの実行結果がすぐに確認できるため表やグラフ化にも強くデータ解析の分野などによく使われています。

今回はNAS上で動作させるので、Dockerイメージのjupyter/datascience-notebookを使います。Synology NAS上でのDocker操作については下記のページでも解説しているので、参考にしてみてください。


早速、Jupyter Notebookの構成から始めます。SynologyのNASはDSM上からグラフィカルベースで操作できるのでコンテナ操作も比較的簡単に済ませることができます。

Synology NASのDiskStation Managerにアクセスし、Container Managerを起動してjupyter/datascience-notebookをダウンロードします。


ダウンロードが完了したら、コンテナタブに移動して作成ボタンを押してコンテナを作成します。


Jupyter Notebookは単体で動作するイメージなので、データベースやnginxなどのコンテナとのリンクする作業は不要です。外部アクセス用のポート設定と永続化を行えば設定完了するので、そのままコンテナを起動します。


Jupyter Notebookは初回起動時にパスワードを設定しないとログインできないので、そのパスワード設定用のトークンを確認します。起動直後にコンテナの管理画面を開き、ログのタブを見るとするとURLに”token-~~~”と書かれた欄があるので、その文字列をコピーします。


Jupyter Notebookにアクセスすると、ログインページが表示されるので、Tokenダイアログボックスに先程コピーしたトークン文字列を張り付けて、New Passwordダイアログボックスには任意のログインパスワードを入力します。

この手順まで完了すると、パスワード入力でJupyter Notebookにログインできるようになります。

Jupyter NotebookからRIGOLの測定器に接続する

さて、今回はJupyter Notebookのイメージをダウンロードしたつもりでしたが、実際に動いていたのはJupyter Labでした。Labには色々と便利な機能も入っているのですが、今回使用するのはNotebookとTerminalだけです。

インストール直後のJupyter Notebookには、機器に接続するためのライブラリが入っていないので、ランチャーからTerminalを起動してインストールします。


PythonにはVISAに対応した機器を制御するライブラリがあります。ターミナルからvisa関連のライブラリをインストールしておきましょう。

pip install visa vyvisa pyvisa-py

■画面例


ライブラリのインストールが終わったら、ランチャーに戻ってNotebookを起動します。

pyvisaライブラリをインポートしてから、open_resourceの引数に機器のIPアドレスを指定して+IDN?コマンドを送ると機器から識別子が返ってきます。

import pyvisa
inst = pyvisa.ResourceManager().open_resource('TCPIP::***.***.***.***::INSTR')
print(inst.query('*IDN?').strip())

■画面例


*IDN?コマンドでは、メーカー名, 品名, シリアル番号, ファームウェアのバージョンが返っています。画面例では、電子負荷 DL3031と直流電源 DP932Uに*IDN?コマンドを投げた時の応答が返ってきています。

次回はPythonから機器を実際に動かす

今回の記事では、Python開発環境の構築とIPアドレスによる接続する方法について検証しました

Dockerコンテナを操作しているので、ライブラリのインストールやLAN接続でトラブルが発生するかなとも思ったのですが、意外なほどすんなり進んでいます。現在使用しているNASには監視カメラやExmentなども走っているのですが、今のところJupyter Notebookを動かしたときの重さなどは感じていません。

次回は実際にJupyter Notebookから機器を動かしてみます。

Return Top