顯示具有 儀器控制 標籤的文章。 顯示所有文章
顯示具有 儀器控制 標籤的文章。 顯示所有文章

2026年9月1日 星期二

Agilent 34401A 萬用電表 控制介面設計

📺 影片版(約 7 分鐘):想先看實際操作的話可以直接看這支影片,完整步驟、設定與程式碼在下方文字版。
YouTube:https://youtu.be/mpRLVVXrFiQ(winson-DIY 頻道)
最近把閒置的儀器, 全部拿出來檢查是否還可用並寫GUI來控制充分利用一下!
34401A 萬用電表

設計概念:
1. 連接的GPIB介面輸入
2. 電表功能選擇
3. Chart圖形顯示語文字顯示
4. 輸出log顯示與儲存

實際執行驗證結果:
由power supply輸出DC12V由電表量測!



補充一、34401A 規格重點
34401A 是 HP(後來的 Agilent、現在的 Keysight)出的 6½ 位數桌上型萬用電表,雖然是老機種,到現在還是很多實驗室的標準配備:
項目規格
解析度6½ 位數(可切 4½ / 5½ / 6½)
DC 電壓100 mV ~ 1000 V,5 個檔位;10 V 檔 1 年準確度 0.0035% 讀值 + 0.0005% 檔位
AC 電壓100 mV ~ 750 V(True RMS)
DC / AC 電流DC 10 mA ~ 3 A;AC 1 A、3 A
電阻100 Ω ~ 100 MΩ,支援 2 線 / 4 線
其他頻率、週期、導通、二極體
介面GPIB(IEEE-488)、RS-232
讀值速度最快約 1000 筆/秒(4½ 位、NPLC 0.02)

小提醒:除了 1000 V 檔,各檔位都有 20% 超量程,所以 12 V 左右的訊號在自動檔位下仍會落在 10 V 檔,可以解析到 1 µV。

補充二、連線架構與 GPIB 位址
PC(C# WinForms)
   │  VISA(Keysight IO Libraries 或 NI-VISA)
   ▼
GPIB 介面卡 / USB-GPIB 轉接器(板號 GPIB0、GPIB1…)
   │  GPIB 線
   ▼
34401A(GPIB 位址,出廠預設 22,這台設成 24)
VISA 資源字串格式是 GPIB板號::位址::INSTR,這次實際用的是 GPIB1::24::INSTR。
從驗證截圖下方的 log 可以看到,前 4 次都是 Open Instrument Fail!!,把 GPIB 下拉選單從 0 改成 1 之後才連上,儀器回傳的 *IDN? 是:
HEWLETT-PACKARD,34401A,0,11-5-2
重點:電腦上如果裝過不只一張 GPIB 卡或轉接器,板號不一定是 0。開不起來時先用 Keysight Connection Expert 或 NI MAX 掃一次,確認板號和位址,比在程式裡亂試快很多。儀器的位址可以在前面板 Shift → Menu 的 I/O 選單裡查。

補充三、常用 SCPI 指令
GUI 上的「量測功能選擇」,背後就是對應到不同的 SCPI 指令:
功能一次量測(MEASure)先設定(CONFigure)
DC 電壓MEAS:VOLT:DC?CONF:VOLT:DC
AC 電壓MEAS:VOLT:AC?CONF:VOLT:AC
DC 電流MEAS:CURR:DC?CONF:CURR:DC
AC 電流MEAS:CURR:AC?CONF:CURR:AC
2 線電阻MEAS:RES?CONF:RES
4 線電阻MEAS:FRES?CONF:FRES
頻率 / 週期MEAS:FREQ? / MEAS:PER?CONF:FREQ / CONF:PER
導通 / 二極體MEAS:CONT? / MEAS:DIOD?CONF:CONT / CONF:DIOD

其他常用的:
  • *IDN?:讀儀器型號,拿來確認連線
  • *RST;*CLS:重置並清除錯誤狀態
  • READ?:依目前設定觸發一次並讀回
  • VOLT:DC:NPLC 10:積分時間(0.02 / 0.2 / 1 / 10 / 100),越大越準越慢
  • SYST:ERR?:讀錯誤佇列,指令沒反應時先查這個
連續量測的小技巧:MEAS:...? 每次都會重新設定儀器,連續量測會比較慢。比較好的做法是開始時 CONF 一次,之後在迴圈裡只送 READ?。

補充四、C# 程式骨架(VISA.NET)
以下是「連線 → 設定 → 連續讀值」的最小範例,用的是 Keysight IO Libraries 和 NI-VISA 都有提供的 VISA.NET(Ivi.Visa):
using System.Globalization;
using Ivi.Visa;

// 連線
var dmm = (IMessageBasedSession)GlobalResourceManager.Open("GPIB1::24::INSTR");
dmm.TimeoutMilliseconds = 5000;
dmm.Clear();
var io = dmm.FormattedIO;

io.WriteLine("*RST;*CLS");
io.WriteLine("*IDN?");
string idn = io.ReadLine();            // HEWLETT-PACKARD,34401A,0,11-5-2

// 設定一次:DC 電壓、自動檔位
io.WriteLine("CONF:VOLT:DC DEF,DEF");
io.WriteLine("VOLT:DC:NPLC 10");

// 連續讀值(放在背景 Task,按 Stop 時取消)
var sw = System.Diagnostics.Stopwatch.StartNew();
while (!token.IsCancellationRequested)
{
    io.WriteLine("READ?");
    double v = double.Parse(io.ReadLine(), CultureInfo.InvariantCulture);  // "+1.19872270E+01"
    double t = sw.Elapsed.TotalSeconds;
    // UI 執行緒更新:Chart 加點 (t, v)、Logs 加一行
    // $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}] | {v:F6} -- V"
}

// 結束
dmm.Dispose();
幾個實作重點:
  • 量測迴圈不要放在 UI 執行緒:用 Task + CancellationToken,Stop 按鈕只負責取消,畫面才不會卡住
  • 解析讀值要用 InvariantCulture:儀器回的是科學記號字串,系統地區設定不同時可能解析錯誤
  • Chart 用時間當 X 軸:驗證截圖的 X 軸是「時間(秒)」,只保留最近一段(例如 200 點)視窗才不會越畫越慢
  • Timeout 一定要設:儀器關機或線鬆了,ReadLine 才不會一直卡住
  • 斷線後回本地操作:程式結束後前面板若顯示 Rmt 鎖住,按 Shift(Local)就能回到手動操作

補充五、實測結果解讀
驗證時由 power supply 輸出 DC 12 V,log 裡連續 9 筆讀值:
  • 讀值介於 11.987227 ~ 11.987254 V,跳動只有約 27 µV(約 2 ppm),讀值相當穩定
  • 跟 12 V 設定值差約 13 mV(−0.1%),這是 power supply 本身的輸出誤差,不是電表的問題,剛好可以拿 34401A 來校正電源的實際輸出
  • 相鄰兩筆的時間差約 0.43 秒,也就是大約每秒 2.3 筆,以 NPLC 10 的設定來說是合理的;需要更快可以把 NPLC 調小,但雜訊會變大

補充六、延伸應用
  • Logs 存成 CSV(時間, 讀值, 單位),之後可以用 Excel 或 Python 做長時間的穩定度分析
  • 搭配 power supply 一起程式控制,就能做自動化的電壓掃描或負載測試
  • 如果要一次量很多點,可以搭配 34970A 切換開關,做法可以參考之前的文章:PCBA電壓檢測項目-Aglient 34970A


延伸閱讀

2024年9月1日 星期日

Tektronix MSO64B C# GUI Application

Purpose:
為了長時間去偵測TekTronix的MSO64B量到的數據並記錄下來, 因此才有這個專案產生. 利用C#寫的GUI來做這個動作!
Fundamental:
TEKTRONIX太克
6B 系列MSO 混合訊號示波器
GUI:
包含連接儀器控制, 儀器channel顯示控制, 個別channel 顯示 和即時儲存量測資料

Demo:





延伸閱讀

2024年6月25日 星期二

KIKUSUI 的Crank test system

Purpose:
利用C#設計出一個多功能的介面去載入KIKUSUI測試的pattern檔案格式,並且使用GPIB介面傳輸到KIKUSUI儀器上做Crank Pattern的測試.

Fundamental:
KIKUSUI
PBX系列是一種雙極方式(Bipolar)直流穩壓電源,它不用進行正、負極性的輸出端子切換,即可連續通過0,並可連續切換到任何一極。 此外,由於可分別設定恆壓模式(C.V)和恆流模式(C.C),因而除了可作為恆壓電源使用外,還可作為恆流電源、電壓控制電流源使用。 高速時序模式可以進行暫態停電和過渡現象等複雜波形的模擬。
  • 正負0 - 40V 0 - 2.5A
  • 電壓分辨力 1mV
  • Sequence功能
  • GPIB介面
  • 低脈動雜訊(恒壓模式/正常時)
  • 負載的種類和用途的4種工作模式
  • 功率放大器功能
  • 具備設置記憶體和順序控制功能
GPIB
在GPIB控制器中,把器件與 GPIB 匯流排的一種互動作用定義成一種介面功能。
在一個GPIB標準介面匯流排系統中,要進行有效的通訊聯絡至少有至多一個在工作的「講者」、多個「聽者」、1個「控者」三類儀器裝置。

MDI 介面設計:

原廠設計界面:
單一的pattern載入與執行!


改進後的介面可以複選要執行的pattern將其載入儀器並透過執行時的監控功能查看現在執行到哪一個paterns中的哪一個step!


Demo:



增加功能: 
增加GoodWill的Power Supply的power circle Test







延伸閱讀