HIOKI 3193-10 Power Analyzer Tools

GPIB control tools for the HIOKI 3193-10 power analyzer, built for solar MPPT converter efficiency testing.

Hardware Setup

  • HIOKI 3193-10 power analyzer with 9600 input units
  • GPIB-USB adapter: UsbGpib — open-source USB-GPIB adapter, compatible with pyvisa (appears as a USB-TMC device)
  • NI-VISA runtime — provides the VISA layer (visa32.dll)

The UsbGpib adapter connects to the HIOKI's rear GPIB port and is recognized by NI-VISA as a standard USB-TMC instrument, so it works seamlessly with pyvisa.

Requirements

  • Python 3.12+
  • uv package manager
  • NI-VISA runtime (already installed if visa32.dll exists)
  • UsbGpib adapter connected between PC and HIOKI 3193-10

Install

uv sync

Quick Start

# 1. Verify connection
uv run hioki identify

# 2. Configure for MPPT testing (Ch5=solar input, Ch6=MPPT output)
uv run hioki setup-mppt

# 3. Take a single reading
uv run hioki measure

# 4. Monitor continuously (prints to terminal)
uv run hioki monitor

# 5. Monitor with live graph
uv run hioki live

Commands

hioki identify

Show instrument identity, installed options, clock, wiring mode, and response speed.

hioki setup-mppt

One-command setup for MPPT efficiency testing:

  • Ch5: V-auto, I-auto, DC coupling, SLOW (solar panel input)
  • Ch6: V-auto, I-auto, DC coupling, SLOW (MPPT converter output)
  • EFF1 = P6/P5 x 100%
  • Display: Ch5 items on left, Ch6 items on right, with EFF1

Both voltage and current auto-range for best accuracy across the full sweep range.

hioki measure [items...]

Take a single measurement. Default items: U5 I5 P5 U6 I6 P6 EFF1

# Default (MPPT channels)
uv run hioki measure

# Custom items
uv run hioki measure U1 I1 P1 FA

# All 6 channels
uv run hioki measure U1 I1 P1 U2 I2 P2 U3 I3 P3 U4 I4 P4 U5 I5 P5 U6 I6 P6

hioki monitor [items...]

Continuous text-based monitoring with optional CSV logging. When logging to CSV, voltage and current ranges are recorded per sample.

# Default 1-second interval
uv run hioki monitor

# Fast polling, 100 readings, save to CSV
uv run hioki monitor -i 0.5 -n 100 -o data.csv

# Monitor specific items
uv run hioki monitor P5 P6 EFF1

Options:

  • -i, --interval - Seconds between readings (default: 1.0)
  • -n, --count - Number of readings, 0 = infinite (default: 0)
  • -o, --output - CSV output file path (includes U/I range columns)

hioki live [items...]

Real-time graphing monitor. Opens a matplotlib window with live-updating plots grouped by type (voltage, current, power, efficiency).

# Default view
uv run hioki live

# Power and efficiency only, log to file
uv run hioki live -o test_log.csv P5 P6 EFF1

# Fast updates, shorter history
uv run hioki live -i 0.5 --history 100 U5 U6 P5 P6 EFF1

Options:

  • -i, --interval - Seconds between readings (default: 1.0)
  • -o, --output - CSV output file path (includes U/I range columns)
  • --history - Max data points on graph (default: 300)

hioki display-select [items...]

Configure the instrument's front panel display.

# MPPT preset: Ch5 left, Ch6 right, EFF1
uv run hioki display-select --mppt

# Custom 16-item layout
uv run hioki display-select U5 I5 P5 U6 I6 P6 EFF1

Options:

  • -c, --count - Number of display slots: 4, 8, or 16 (default: 16)
  • --mppt - Preset: Ch5 on left, Ch6 on right, with EFF1

hioki efficiency

Configure efficiency calculation formula.

# EFF1 = P6/P5 (default from setup-mppt)
uv run hioki efficiency --numerator P6 --denominator P5

# EFF2 for a different pair
uv run hioki efficiency -f 2 -n P4 -d P3

hioki integration <action>

Control energy integration (Wh, Ah totals).

uv run hioki integration start    # Reset and start integrating
uv run hioki integration status   # Check which channels are running
uv run hioki integration stop     # Stop and print Wh/Ah/time results
uv run hioki integration reset    # Reset counters

hioki send <command>

Send raw SCPI/GPIB commands. Queries (containing ?) return the response.

uv run hioki send *IDN?
uv run hioki send :VOLTage5:RANGe?
uv run hioki send :VOLTage5:RANGe 300
uv run hioki send *RST

Global Options

  • -a, --address - VISA address (auto-detects HIOKI if omitted)
  • --timeout - Communication timeout in ms (default: 5000)

CSV Output Format

When using -o with monitor or live, the CSV includes:

  • timestamp - Date and time of each reading
  • Measurement values (e.g., U5, I5, P5, EFF1)
  • U<ch>_range - Active voltage range per channel (e.g., 150, 300)
  • I<ch>_range - Active current range per channel (e.g., 0.2, 5, 50)

Range columns help identify auto-range transitions and assess measurement accuracy.

Python API

Use the driver directly in your own scripts:

from hioki3193 import Hioki3193

with Hioki3193("GPIB0::1::INSTR") as meter:
    print(meter.idn())

    # Configure
    meter.set_wiring_mode("1P2W")
    meter.set_coupling(5, "DC")
    meter.set_voltage_auto(5, True)
    meter.set_current_auto(5, True)
    meter.set_coupling(6, "DC")
    meter.set_voltage_auto(6, True)
    meter.set_current_auto(6, True)
    meter.set_response_speed("SLOW")
    meter.set_efficiency(1, "P6", "P5")

    # Read
    result = meter.measure("U5", "I5", "P5", "U6", "I6", "P6", "EFF1")
    print(f"Input:  {result.values['P5']:.2f} W")
    print(f"Output: {result.values['P6']:.2f} W")
    print(f"Efficiency: {result.values['EFF1']:.1f}%")

Measurement Items

Code Description Code Description
U1-U6 Voltage per channel I1-I6 Current per channel
P1-P6 Active power S1-S6 Apparent power
Q1-Q6 Reactive power PF1-PF6 Power factor
DEG1-DEG6 Phase angle PK1-PK6 Peak value
FA,FB,FC Frequency EFF1-EFF3 Efficiency
U12,P12... Sum pairs U123,P123... Sum triples
WP1-WP6 Integrated Wh IH1-IH6 Integrated Ah
TIME Integration elapsed time

Error Values

When reading data, these special values indicate errors:

  • +6666.6E+99 - Display blank (no data)
  • +7777.7E+99 - Scaling error (e.g., division by zero in efficiency)
  • +9999.9E+99 - Input over range

Reference

See GPIB_COMMAND_REFERENCE.txt for the complete command reference extracted from the HIOKI 3193-10 manual.

Description
No description provided
Readme 148 KiB
Languages
Python 100%