Skip to content

Protocol Reference

Single source of truth: protocol/fnirsi_dps150.ksy

Overview

Property Value
ID fnirsi_dps150
Title FNIRSI DPS-150 Serial Protocol
KS version 0.11
Endian le
License MIT

Enumerations

start_byte

Value (hex) Name
0xA1 query_or_response
0xB0 start_session_magic
0xB1 write_command
0xC1 connect_ctrl

command_id

Value (hex) Name
0x00 connect_ctrl
0xC0 push_vin_a
0xC1 set_voltage
0xC2 set_current
0xC3 push_output
0xC4 push_vin_c
0xDB set_output
0xDE get_device_name
0xDF get_fw_version
0xE0 get_hw_version
0xE1 ready_status
0xE2 push_vin_b
0xE3 push_max_current
0xFF get_full_status

connect_state

Value (hex) Name
0x00 disconnect
0x01 connect

output_state

Value (hex) Name
0x00 disabled
0x01 enabled

Command Catalogue

Hex Name Payload type Description
0x00 connect_ctrl connect_payload Payload for CMD connect_ctrl (0x00). DATA = 0x01 → [...]
0xC0 push_vin_a float32_payload Single IEEE 754 32-bit LE float (voltage in V or [...]
0xC1 set_voltage float32_payload Single IEEE 754 32-bit LE float (voltage in V or [...]
0xC2 set_current float32_payload Single IEEE 754 32-bit LE float (voltage in V or [...]
0xC3 push_output push_output_payload CMD 0xc3 – periodic output measurement push (LEN=12, [...]
0xC4 push_vin_c float32_payload Single IEEE 754 32-bit LE float (voltage in V or [...]
0xDB set_output output_enable_payload Payload for CMD set_output (0xdb). DATA = 0x01 → [...]
0xDE get_device_name string_payload Variable-length ASCII string (no NUL terminator).
0xDF get_fw_version string_payload Variable-length ASCII string (no NUL terminator).
0xE0 get_hw_version string_payload Variable-length ASCII string (no NUL terminator).
0xE1 ready_status ready_payload Device ready status (CMD 0xe1).
0xE2 push_vin_b float32_payload Single IEEE 754 32-bit LE float (voltage in V or [...]
0xE3 push_max_current float32_payload Single IEEE 754 32-bit LE float (voltage in V or [...]
0xFF get_full_status full_status_payload CMD 0xff – full status blob (LEN=0x8b = 139 bytes). [...]

Payload Types

output_enable_payload

Payload for CMD set_output (0xdb).

Field Type Description
state u8 (enum: output_state)

connect_payload

Payload for CMD connect_ctrl (0x00).

Field Type Description
state u8 (enum: connect_state)

ready_payload

Device ready status (CMD 0xe1).

Field Type Description
ready u8 0x01 = device ready, 0x00 = not ready.

string_payload

Variable-length ASCII string (no NUL terminator).

Field Type Description
value bytes (rest)

float32_payload

Single IEEE 754 32-bit LE float (voltage in V or current in A).

Field Type Description
value f32 LE

push_output_payload

CMD 0xc3 – periodic output measurement push (LEN=12, three floats).

Field Type Description
vout f32 LE Measured output voltage [V].
iout f32 LE Measured output current [A].
pout f32 LE Measured output power [W]. Confirmed from capture row 12827: Vout≈8.45 V, Iout≈0.0077 A → Pout≈0.065 W.

full_status_payload

CMD 0xff – full status blob (LEN=0x8b = 139 bytes).

Field Type Description
vin f32 LE Measured input voltage [V].
vset f32 LE Current voltage set-point [V].
iset f32 LE Current current limit [A].
vout f32 LE Measured output voltage [V] (0 when output off).
iout f32 LE Measured output current [A] (0 when output off).
pout f32 LE Measured output power [W] (0 when output off).
vin2 f32 LE Secondary input voltage measurement [V] – TBD.
vset2 f32 LE Duplicate / channel-2 Vset – TBD.
iset2 f32 LE Duplicate / channel-2 Iset – TBD.
presets preset ×5 Five stored presets (Vset, Iset each).
max_voltage f32 LE Device maximum output voltage [V] (30.0).
max_current f32 LE Device maximum output current [A] (5.1).
max_power f32 LE Device maximum output power [W] (150.0 = DPS-150).
max_temp f32 LE Maximum temperature [°C]? (80.0 – TBD).
unknown_f f32 LE Unknown float at offset 92 – TBD.
remainder bytes (rest) Mixed-type tail (offsets 96–138). Layout TBD.

preset

One stored preset (Vset + Iset pair).

Field Type Description
vset f32 LE Preset voltage set-point [V].
iset f32 LE Preset current limit [A].

Checksum

Every frame ends with a 1-byte checksum:

CHKSUM = (CMD + LEN + Σ DATA bytes) mod 256

The DIR and START bytes are excluded from the checksum calculation. Confirmed by byte-exact comparison against captured frames.