Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based as on the wire; word order and scaling are only confirmed at the hardware-verified rung.
Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
| point | address (0-based) | type | scale | unit |
|---|---|---|---|---|
| sw_ver | 0 | U16 | 1 | |
| n_sys_v | 1 | U16 | 1 | |
| vdd_actual | 4 | U16 | 1 | V |
| adc_p12 | 5 | U16 | 1 | V |
| adc_p5 | 6 | U16 | 1 | V |
| adc_fgdrive | 7 | U16 | 1 | V |
| adc_vmeter | 8 | U16 | 1 | V |
| adc_ic_f_shadow | 16 | U16 | 1 | A |
| adc_ia_f_shadow | 17 | U16 | 1 | A |
| adc_vbterm | 18 | U16 | 1 | V |
| adc_va_f_shadow | 19 | U16 | 1 | V |
| adc_vl | 20 | U16 | 1 | V |
| adc_ib_f_shadow | 21 | U16 | 1 | A |
| adc_il | 22 | U16 | 1 | A |
| adc_vbsense | 23 | U16 | 1 | V |
| adc_vb_f_1m | 24 | U16 | 1 | V |
| adc_ib_f_1m | 25 | U16 | 1 | A |
| t_hs | 26 | U16 | 1 | ºC |
| t_batt | 27 | U16 | 1 | ºC |
| t_amb | 28 | U16 | 1 | ºC |
| t_rts | 29 | U16 | 1 | ºC |
| t_ind_u | 30 | U16 | 1 | ºC |
| t_ind_v | 31 | U16 | 1 | ºC |
| t_ind_w | 32 | U16 | 1 | ºC |
| charge_state | 33 | U16 | 1 | |
| array_fault | 34 | U16 | 1 | |
| vb_f | 35 | U16 | 1 | V |
| vb_ref | 36 | U16 | 1 | V |
| vb_ref_charge_slave | 37 | U16 | 1 | V |
| ahc_r | 38 | U32BE | 0.1 | Ah |
| ahc_t | 40 | U32BE | 0.1 | Ah |
| kwhc_r | 42 | U16 | 0.1 | kWh |
| kwhc_t | 43 | U16 | 0.1 | kWh |
| tb_lo_limit_100 | 44 | U16 | 1 | ºC |
| tb_lo_limit_0 | 45 | U16 | 1 | ºC |
| load_state | 46 | U16 | 1 | |
| load_fault | 47 | U16 | 1 | |
| v_lvd | 48 | U16 | 1 | V |
| v_lhvd | 49 | U16 | 1 | V |
| ahl_r | 50 | U32BE | 0.1 | Ah |
| ahl_t | 52 | U32BE | 0.1 | Ah |
| hourmeter | 54 | U32BE | 1 | hours |
| alarm | 56 | U32BE | 1 | |
| dip_switch | 58 | U16 | 1 | |
| led_state | 59 | U16 | 1 | |
| power_out | 60 | U16 | 1 | W |
| sweep_vmp | 61 | U16 | 1 | V |
| sweep_pmax | 62 | U16 | 1 | W |
| sweep_voc | 63 | U16 | 1 | V |
| va_ref | 64 | U16 | 1 | V |
| vb_min_daily | 65 | U16 | 1 | V |
| vb_max_daily | 66 | U16 | 1 | V |
| ahc_daily | 67 | U16 | 1 | Ah |
| ahl_daily | 68 | U16 | 1 | Ah |
| array_fault_daily | 69 | U16 | 1 | |
| load_fault_daily | 70 | U16 | 1 | |
| alarm_daily | 71 | U32BE | 1 | |
| time_ab_daily | 73 | U16 | 1 | sec |
| time_eq_daily | 74 | U16 | 1 | sec |
| time_fl_daily | 75 | U16 | 1 | sec |
| va_max_daily | 76 | U16 | 1 | V |
| charge_led_state | 77 | U16 | 1 | |
| lighting_should_be_on | 78 | U16 | 1 | |
| va_ref_fixed | 79 | U16 | 1 | V |
| va_ref_fixed_pct | 80 | U16 | 1 |
| terminals | Meter RJ-11 interface |
| connector | RJ-11 |
| isolation | Meterbus to Serial Converter (MSC) is required to adapt the Meter interface to an isolated RS-232 interface |
| wiring notes | MSC adapter is a Morningstar accessory. |
| protocol notes | Floating point values are represented in half-precision (designated at f16 or Float16). Any write to EEPROM will set an 'EEPROM changed' fault. The control must be reset to clear this fault. |
| identification notes | Supports basic device identification (stream access) (ID code 0x01). Object 0x00: VendorName ('Morningstar Corp.'), Object 0x01: Product Code ('PS-MPPT-25', 'PS-MPPT-25M', 'PS-MPPT-40', 'PS-MPPT-40M'), Object 0x02: MajorMinorRevision ('v01.01.01') |
| FC 43 device ID | supported |
| doc revision | v04, 11 April 2017 |
| firmware applicability | Version 13 firmware supported |
Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.
Have a device that isn't here? Upload its register map — generation is free, and the connector earns its rung by being proven, not claimed.
Need it proven on your own device? Hardware verification — if it doesn't verify, you don't pay.
Building a platform? License the verified library — machine-readable maps, firmware matrix, API access.