HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Instrumation - 計測器のためのPYPIライブラリ

Show HN: Instrumation a PYPI library for Instruments (github.com)

3 pointsby abduznik1 コメント

要約

Instrumationは、RFテストステーション向けのPythonライブラリで、PyVISAの定型コードを削減し、ハードウェアの抽象化レイヤー(HAL)を提供します。デジタルツインモードによるオフライン開発や、スマート自動検出機能により、様々なメーカーの計測器を統一APIで扱えるようになります。これにより、テストロジックの開発に集中できるようになります。

全文翻訳

このプロジェクトをサポートする 情熱を込めて作られたすべてのプロジェクト💙 Instrumation RFテストステーション向けのハイレベルハードウェア抽象化レイヤー(HAL)。PyVISAの定型コードとの格闘をやめ、接続コードではなくテストロジックを記述しましょう。 なぜInstrumationなのか? RFテストベンチの自動化は苦痛です。すべての計測器ブランドには独自の癖があり、SCPIの方言は様々で、スクリプトのテストには物理的なハードウェアがデスク上にある必要があります。Instrumationはこれら3つすべてを解決します。 すべてに対応する単一API — 同じコードがKeysight、Rigol、その他のサポートされているブランドで動作します デジタルツインモード — 現実的なガウスノイズを放出するシミュレートされた計測器でオフラインで開発およびデバッグできます スマート自動検出 — 接続されたデバイスをスキャンし、手動設定なしで適切なドライバーを自動的にロードします 実際のハードウェア検証 Instrumationは実際のラボハードウェアで検証されています。実験レポートをご覧ください: 🔬 AFG ↔ DSOX ループバック検証 — Tektronix AFG3022C + Keysight DSOX2002A によるプラグアンドプレイ自動検出 📡 PXA N9030A スペクトラムアナライザ — 高速での32ビットバイナリトレース転送 🎛️ MXG N5183B シグナルジェネレータ — パルス変調と周波数スイープ 📊 PNA N5232A ネットワークアナライザ — Sパラメータ測定とスミスチャート PyVISA vs Instrumation: 違いを見る 従来のシグナルジェネレータのプログラミング vs. Instrumationを使用した場合: 側面 PyVISA (生のSCPI) Instrumation 検出 手動 — リソース文字列を見つけ、ResourceManagerを管理します 自動 — "AUTO"を渡すだけで、HALがUSB + LANをスキャンします 接続 rm.open_resource("TCPIP0::192.168.1.100::...") — ハードコードされたアドレス connect_instrument("AUTO", "SG") — 型認識ルーティング 設定 sg.write(":FREQ:CW 2.4e9") — 生のSCPI文字列、検証なし sg.set_frequency(2.4e9) — 境界チェック付きの型指定メソッド クリーンアップ sg.close() — 忘れやすい コンテキストマネージャ — 自動的なwithブロッククリーンアップ オフライン開発 接続された実際のハードウェアが必要です デジタルツイン — INSTRUMATION_MODE=SIMを設定して、どこでも開発できます ポータビリティ ベンダー固有のSCPI — ブランドごとに書き直す必要があります 単一API — Keysight、Rigol、Tektronix、Siglent、R&S、Anritsuで動作します サイドバイサイドコード # ─── PyVISA: 8行の定型コード ─── import pyvisa rm = pyvisa.ResourceManager() # 正しいリソースを手動で見つけます... sg = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR") sg.write("*RST") sg.write(":FREQ:CW 2.4e9") sg.write(":POW:AMPL -10") sg.write(":OUTP ON") sg.close() # ─── Instrumation: 5行、設定不要 ─── from instrumation import connect_instrument with connect_instrument("AUTO", "SG") as sg: sg.set_frequency(2.4e9) sg.set_amplitude(-10) sg.set_output(True) リソースマネージャなし。SCPI文字列なし。ハードコードされたアドレスなし。テストロジックのみ。 ライブデータストリーミング Instrumationには、UDP経由でライブ測定値をストリーミングするための組み込みDataBroadcasterが含まれています。これにより、外部依存関係なしでリアルタイムダッシュボードやロガーを構築できます。 ゼロラグ — UDP配信はテストフローをブロックしません。 ゼロコンフィグ — 任意のホスト/ポートにJSONパケットとしてブロードキャストします。 ゼロ依存 — Python標準ライブラリに組み込まれています。 使用方法については、examples/broadcast_demo.pyおよびexamples/dashboard.pyをご覧ください。 機能 自動検出 — VISAおよびシリアルバスをスキャンし、接続されているものを識別します スマートファクトリ — 計測器ブランドを検出し、正しいドライバーをロードします デジタルツイン — オフライン開発およびCIパイプラインのための完全なシミュレーションモード 統合API — 一度書けば、サポートされているどのハードウェアでも動作します 組み込みCSVロギング — テスト結果がすぐにログに記録されます インストール pip install instrumation またはソースからインストールします: git clone https://github.com/abduznik/instrumation.git cd instrumation pip install . Windowsユーザー:物理ハードウェアにアクセスするには、NI-VISAまたはKeysight IO Libraries Suiteが必要になる場合があります。 クイックスタート 実際のハードウェア import instrumation sa = instrumation.connect_instrument("USB0::0x2A8D::...") peak_power = sa.get_peak_value() print(f"Peak Power: {peak_power} dBm") デジタルツイン(ハードウェア不要) # Linux/macOS export INSTRUMATION_MODE=SIM # Windows PowerShell $env:INSTRUMATION_MODE="SIM" from instrumation.factory import get_instrument # コンテキストマネージャを使用したより安全な使用法 with get_instrument("DUMMY_ADDRESS", "DMM") as dmm: print(dmm.get_id()) result = dmm.measure_voltage() print(f"Voltage: {result}") ステーションマネージャ(TOML) station.tomlファイルを使用して、複数の計測器を持つ複雑なテストステーションを管理します。 [instruments.sa_main] driver = "SA" address = "USB0::0x2A8D::0x0101::MY12345678::0::INSTR" [instruments.psu_dut] driver = "PSU" address = "TCPIP0::192.168.1.100::inst0::INSTR" コードでの使用: from instrumation import Station station = Station("station.toml") station.connect() # ドット表記で計測器にアクセスします res = station.instr.sa_main.get_peak_value() print(f"Peak: {res}") station.disconnect() コマンドラインインターフェース Instrumationには、迅速な対話と診断のための強力なCLIが付属しています。 # 接続されているハードウェアをスキャンします instrumentation scan # 簡単な測定を行います instrumentation measure USB0::... DMM measure_voltage # station.toml内の計測器を一覧表示します instrumentation station list # ステーション内の名前付き計測器を使用して測定します instrumentation station measure sa_main get_peak_value APIリファレンス コマンド 説明 scan() すべての接続されているシリアルおよびVISAデバイスを一覧表示します connect() 汎用テストステーション(ボックス+計測器)に自動接続します connect_instrument(addr) 自動ドライバー検出で特定の計測器に接続します プラットフォームサポート プラットフォーム ステータス Windows サポートされています Linux サポートされています Termux (Android) サポートされています macOS サポートされています 開発 # 編集可能モードでインストールします(テストでローカルの変更を認識するために必要) pip install -e . # このプロジェクトはpyproject.toml(PEP 517/518)を使用しています。setup.pyは不要です。 # テスト依存関係をインストールします pip install pytest flake8 # テストを実行します(シミュレーションモード) export INSTRUMATION_MODE=SIM # Linux/macOS pytest 関連プロジェクト instrumentation-report 測定データから構造化されたUUT(Unit Under Test)テストレポートを生成するための軽量Pythonライブラリ。Instrumationと連携してスタンドアロンで動作します。 機能:HTML、Excel、PDFレポート出力 設定可能な条件による自動合否評価 構造化されたセクションとテストテーブル Instrumation測定との簡単な統合 pip install instrumation-report from instrumation_report import Report, Section, TestTable, Measurement report = Report( header=ReportHeader( title="RF Subsystem Validation", engineer="Yan", uut_serial="SN-2024-001", ) ) section = Section(number="1", title="Voltage Tests") table = TestTable(title="Power Supply Checks", sub_number="1.1") table.add(Measurement("3.3V Rail", 3.31, "V", condition=(3.2, 3.4))) section.add_table(table) report.add_section(section) report.generate_html("report.html") report.generate_excel("report.xlsx") 技術スタック 言語:Python 3.7+ ライブラリ:PyVISA、PySerial アーキテクチャ:スマートファクトリパターン、ポリモーフィズム 標準:SCPI(Standard Commands for Programmable Instruments) プロジェクトのサポート Instrumationは、フルタイムのRF技術者の仕事と並行して、空き時間にメンテナンスされています。もしそれがあなたの定型コードの時間を節約したり、テストベンチの自動化を容易にしたりしたのであれば、サポートを検討してください: 商用サポートまたはカスタムドライバー開発?GitHubのIssueまたはDiscussionsからお問い合わせください。 貢献 PRおよびドライバーの貢献を歓迎します。大きな変更については、まずIssueを開いて議論してください。 ライセンス 詳細についてはLICENSEを参照してください。