Altus PH31XX (PH3100 series) Modbus register map
Also covers PH3120, PH3131, PH3150, PH3151, PH3220, PH3231, PH3250, PH3251
Phase series three-phase power meter with expansion modules: system settings, voltages, currents, powers, power factor, frequency, unbalance, harmonics and alarm status
- Official
- 83 registers
- Modbus TCP and RTU
- Revision 1 · 2026-11-10
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP and RTU
- Unit ID
- 1
- TCP port
- 502default
- Serial
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 83 holding registers
- Groups
- 5
- Translation tables
- 1
- Revision
- 1 · 2026-11-10
- Added
- ()
- File
- maps/altus/ph31xx.mbmap.json · 17 KB · history
- SHA-256
- e687c8f27551080aedbf28c9c369d4ae266874438178ae2259a4d7635036b0ac
- Manufacturer
- altus.com.br
Sources and notes
- Manual de Utilização Série Phase (MU215100) · version Rev. E 09/2015, 2015-09 linked in issue #115; chapter 5 (MODBUS RTU Escravo), tables 5-7 to 5-15
Source: Manual de Utilização Série Phase, Rev. E 09/2015
- Modbus RTU on the RS-485 channel of the PH3100 (terminals 15 TX+, 16 TX-, 17 shield), 1 start, 8 data and 1 stop bit. The manual does not state a default baud rate or parity: 9600 N is a placeholder. Baud rates 2400 to 38400 (register 0x0103); address 1 to 247 (register 0x0100), factory address 1. Only function codes 03, 06 and 16 are described, so every register is a holding register.
- The PH3150/PH3250 Ethernet module serves Modbus TCP/IP, or Modbus RTU over TCP/IP, with one connection. TCP/IP is the factory protocol from PH3100 revision AJ; RTU over TCP needs the PH3101 configurator 2.19 or later. The module's factory IP is given in the manual; the port is not stated here, 502 is assumed.
- Addresses are those printed in the manual (hexadecimal), taken as wire addresses (0-based). The manual warns that masters that start at 1 need address + 1.
- Registers 0x0300 to 0x0320 do not state a unit or decimals. The manual only says to multiply voltages by the VT ratio (register 0x0101) and currents by the CT ratio (register 0x0102). They are given as raw values: check against the display before applying a scale.
- Not included: the energy registers (0x1A00 onward), which split a value into a quotient and a remainder in a way the manual does not make clear, the demand, maximum and minimum tables, the monthly profile registers (addresses in that part of the table are inconsistent) and the harmonic spectrum tables. The harmonics module (PH3131) is required for the harmonic registers.
- Written from the manufacturer's manual; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 0 | uint16 | R | Hardware version number | |||
| HR | 304 | uint16 | R | Software version number | |||
| HR | 1 | uint16 | RW | 0 = 3-phase 3-wire, any other value = 3-phase 4-wire | |||
| HR | 2 | uint16 | R | High word of the operating time; unit not given | |||
| HR | 3 | uint16 | R | Low word of the operating time; unit not given | |||
| HR | 4 | uint16 | RW | V | ×0.1 | Voltage scope, 0 to 690 V | |
| HR | 5 | uint16 | RW | A | ×0.001 | Current scope, 0 to 5 A | |
| HR | 256 | uint16 | RW | Modbus address | |||
| HR | 257 | uint16 | RW | Voltage transformer ratio | |||
| HR | 258 | uint16 | RW | Current transformer ratio | |||
| HR | 259 | uint16 | RW | ||||
| HR | 260 | uint16 | RW | 1 to 15; the manual says seconds in this table and minutes elsewhere | |||
| HR | 301 | uint16 | RW | Pulse constant, 1 to 9600 | |||
| HR | 303 | uint16 | RW | s | Display interval, 2 to 30 s | ||
| HR | 306 | uint16 | RW | s | |||
| HR | 308 | uint16 | RW | Address used by the PROFIBUS module | |||
| HR | 768 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 769 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 770 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 771 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 772 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 773 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 774 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 775 | uint16 | R | Raw value, multiply by the VT ratio; unit and decimals not given | |||
| HR | 776 | uint16 | R | Raw value, multiply by the CT ratio; unit and decimals not given | |||
| HR | 777 | uint16 | R | Raw value, multiply by the CT ratio; unit and decimals not given | |||
| HR | 778 | uint16 | R | Raw value, multiply by the CT ratio; unit and decimals not given | |||
| HR | 779 | uint16 | R | Raw value, multiply by the CT ratio; unit and decimals not given | |||
| HR | 780 | uint16 | R | Raw value; unit and decimals not given | |||
| HR | 781 | uint16 | R | Raw value; unit and decimals not given | |||
| HR | 782 | uint16 | R | Raw value; unit and decimals not given | |||
| HR | 783 | uint16 | R | Raw value; unit and decimals not given | |||
| HR | 784 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 785 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 786 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 787 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 788 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 789 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 790 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 791 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 792 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 793 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 794 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 795 | int16 | R | Raw value; unit and decimals not given | |||
| HR | 796 | uint16 | R | Raw value; unit and decimals not given | |||
| HR | 797 | uint16 | R | Raw value; unit and decimals not given | |||
| HR | 798 | uint16 | R | Unbalance ratio as defined in the manual, (VH - VL) / VH * 1000 | |||
| HR | 799 | uint16 | R | Unbalance ratio as defined in the manual, (IH - IL) / IH * 1000 | |||
| HR | 801 | bool bit 0 | R | 1 = alarm active | |||
| HR | 801 | bool bit 1 | R | 1 = alarm active | |||
| HR | 801 | bool bit 2 | R | 1 = alarm active | |||
| HR | 801 | bool bit 3 | R | 1 = alarm active | |||
| HR | 801 | bool bit 8 | R | Alarm type: 1 = above the limit, 0 = below the limit | |||
| HR | 801 | bool bit 9 | R | Alarm type: 1 = above the limit, 0 = below the limit | |||
| HR | 801 | bool bit 10 | R | Alarm type: 1 = above the limit, 0 = below the limit | |||
| HR | 801 | bool bit 11 | R | Alarm type: 1 = above the limit, 0 = below the limit | |||
| HR | 1632 | uint16 | R | % | ×0.01 | Total harmonic voltage distortion | |
| HR | 1678 | uint16 | R | V | ×0.1 | Voltage in the harmonics block | |
| HR | 1681 | uint16 | R | ° | ×0.1 | ||
| HR | 1684 | uint16 | R | A | ×0.001 | Current in the harmonics block | |
| HR | 1692 | int16 | R | kW | ×0.001 | Signed, -32767 to 32767 | |
| HR | 1695 | int16 | R | kvar | ×0.001 | Signed, -32767 to 32767 | |
| HR | 1698 | uint16 | R | kVA | ×0.001 | ||
| HR | 1633 | uint16 | R | % | ×0.01 | Total harmonic voltage distortion | |
| HR | 1679 | uint16 | R | V | ×0.1 | Voltage in the harmonics block | |
| HR | 1682 | uint16 | R | ° | ×0.1 | ||
| HR | 1685 | uint16 | R | A | ×0.001 | Current in the harmonics block | |
| HR | 1693 | int16 | R | kW | ×0.001 | Signed, -32767 to 32767 | |
| HR | 1696 | int16 | R | kvar | ×0.001 | Signed, -32767 to 32767 | |
| HR | 1699 | uint16 | R | kVA | ×0.001 | ||
| HR | 1634 | uint16 | R | % | ×0.01 | Total harmonic voltage distortion | |
| HR | 1680 | uint16 | R | V | ×0.1 | Voltage in the harmonics block | |
| HR | 1683 | uint16 | R | ° | ×0.1 | ||
| HR | 1686 | uint16 | R | A | ×0.001 | Current in the harmonics block | |
| HR | 1694 | int16 | R | kW | ×0.001 | Signed, -32767 to 32767 | |
| HR | 1697 | int16 | R | kvar | ×0.001 | Signed, -32767 to 32767 | |
| HR | 1700 | uint16 | R | kVA | ×0.001 | ||
| HR | 1644 | uint16 | R | % | ×0.01 | Total harmonic current distortion | |
| HR | 1645 | uint16 | R | % | ×0.01 | Total harmonic current distortion | |
| HR | 1646 | uint16 | R | % | ×0.01 | Total harmonic current distortion | |
| HR | 1647 | uint16 | R | % | ×0.01 | ||
| HR | 1688 | uint16 | R | ° | ×0.1 | ||
| HR | 1689 | uint16 | R | ° | ×0.1 |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).