Microidea EPFCB Modbus register map
Automatic power factor controller with up to 13 capacitor steps, Modbus over RS485 or Ethernet
- Official
- 219 registers
- Revision 1 · 2026-10-18
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 RTUdefault
- Unit ID
- 1default
- TCP port
- 502default
- Serial
- 9600 8E1 · 9600 baud, 8 data bits, even parity, 1 stop bit defaults
- 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
- 142 holding registers, 77 input registers
- Groups
- 7
- Revision
- 1 · 2026-10-18
- Firmware
- 01.07
- Added
- ()
- File
- maps/microidea/epfcb.mbmap.json · 54 KB · history
- SHA-256
- 458c8992c769c967647c5916f282175f3288d7e3f0b0db27adab2a5d190642a9
- Manufacturer
- microidea.it
Sources and notes
- EPFCB - Registers Modbus · version FW 01.07, 2017-11-30 all three pages: input registers and holding registers
Source: Microidea, "EPFCB - Registers Modbus", firmware 01.07 (2017-11-30); https://www.microidea.it/sites/default/files/pdf/EPFC%20MODBUS%20TABLE.pdf
- Power factor controller EPFCB. The manual file is named EPFC and its table is titled EPFCB.
- Serial Modbus must be switched on in the setup (A.05 Serial protocol = Modbus, address 1-199); with A.04 set to Ethernet the controller uses the IP address and port from A.06.
- The manual does not give the order of the two words of a 32-bit or 64-bit value, nor the factory serial settings. Big word order is assumed; check it against the display.
- The single alarm bits of the 32-bit alarm words assume the high word is at the lower address.
- Addresses 0x0048-0x004C and 0x0058-0x005C are not described in the manual.
- Temperatures are in the unit chosen by A.07 (degrees Celsius or Fahrenheit).
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | uint16 | R | ×0.001 | Actual cos phi, sent as cos x 1000 | ||
| IR | 1 | uint16 | R | V | RMS voltage | ||
| IR | 2 | uint32 ABCD | R | A | ×0.01 | RMS current | |
| IR | 4 | int32 ABCD | R | var | Actual reactive power; negative is capacitive | ||
| IR | 6 | int32 ABCD | R | var | |||
| IR | 8 | int32 ABCD | R | W | |||
| IR | 10 | uint16 | R | % | |||
| IR | 11 | uint16 | R | % | |||
| IR | 12 | uint32 ABCD | R | One bit per alarm, 1 = active. The manual lists this as a 16-bit value but uses bit 31, so it is read here as two registers. Bits: 0 voltage too high, 1 voltage too low, 2 current too high, 3 current too low, 4 overcompensation, 5 undercompensation, 6 over temperature, 7 high THD V, 8 high THD I, 9 minimum cos, 10 external over temperature, 31 wrong frequency | |||
| IR | 13 | bool bit 0 | R | ||||
| IR | 13 | bool bit 1 | R | ||||
| IR | 13 | bool bit 2 | R | ||||
| IR | 13 | bool bit 3 | R | ||||
| IR | 13 | bool bit 4 | R | ||||
| IR | 13 | bool bit 5 | R | ||||
| IR | 13 | bool bit 6 | R | ||||
| IR | 13 | bool bit 7 | R | ||||
| IR | 13 | bool bit 8 | R | ||||
| IR | 13 | bool bit 9 | R | ||||
| IR | 13 | bool bit 10 | R | ||||
| IR | 12 | bool bit 15 | R | ||||
| IR | 14 | uint16 | R | Bits: 0 setup parameters error, 1 calibration parameters error, 2 various parameters error, 3 erase EEPROM error | |||
| IR | 14 | bool bit 0 | R | ||||
| IR | 14 | bool bit 1 | R | ||||
| IR | 14 | bool bit 2 | R | ||||
| IR | 14 | bool bit 3 | R | ||||
| IR | 15 | uint16 | R | Bit 0 = step 1 ... bit 12 = step 13, 1 = step inserted | |||
| IR | 15 | bool bit 0 | R | ||||
| IR | 15 | bool bit 1 | R | ||||
| IR | 15 | bool bit 2 | R | ||||
| IR | 15 | bool bit 3 | R | ||||
| IR | 15 | bool bit 4 | R | ||||
| IR | 15 | bool bit 5 | R | ||||
| IR | 15 | bool bit 6 | R | ||||
| IR | 15 | bool bit 7 | R | ||||
| IR | 15 | bool bit 8 | R | ||||
| IR | 15 | bool bit 9 | R | ||||
| IR | 15 | bool bit 10 | R | ||||
| IR | 15 | bool bit 11 | R | ||||
| IR | 15 | bool bit 12 | R | ||||
| IR | 16 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 18 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 20 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 22 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 24 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 26 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 28 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 30 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 32 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 34 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 36 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 38 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 40 | uint32 ABCD | R | var | Reactive power the step really delivers | ||
| IR | 42 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 43 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 44 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 45 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 46 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 47 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 48 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 49 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 50 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 51 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 52 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 53 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 54 | uint16 | R | s | Seconds left before the capacitor is discharged | ||
| IR | 55 | uint16 | R | °C / °F | ×0.1 | In the unit chosen by A.07 | |
| IR | 56 | uint16 | R | ||||
| IR | 57 | uint16 | R | ||||
| IR | 58 | uint16 | R | ||||
| IR | 59 | uint32 ABCD | R | h | Total working hours | ||
| IR | 61 | uint16 | R | V | |||
| IR | 62 | uint32 ABCD | R | A | ×0.01 | ||
| IR | 64 | uint16 | R | % | |||
| IR | 65 | uint16 | R | % | |||
| IR | 66 | uint16 | R | °C / °F | |||
| IR | 67 | uint16 | R | °C / °F | |||
| HR | 0 | uint16 | RW | ||||
| HR | 1 | uint16 | RW | Steps to insert in manual mode: bit 0 = step 1 ... bit 12 = step 13 | |||
| HR | 1 | bool bit 0 | RW | ||||
| HR | 1 | bool bit 1 | RW | ||||
| HR | 1 | bool bit 2 | RW | ||||
| HR | 1 | bool bit 3 | RW | ||||
| HR | 1 | bool bit 4 | RW | ||||
| HR | 1 | bool bit 5 | RW | ||||
| HR | 1 | bool bit 6 | RW | ||||
| HR | 1 | bool bit 7 | RW | ||||
| HR | 1 | bool bit 8 | RW | ||||
| HR | 1 | bool bit 9 | RW | ||||
| HR | 1 | bool bit 10 | RW | ||||
| HR | 1 | bool bit 11 | RW | ||||
| HR | 1 | bool bit 12 | RW | ||||
| HR | 2 | int16 | RW | ×0.01 | Target cos phi: 0.85 to 1.00, or -0.90 to -0.99 for capacitive | ||
| HR | 3 | uint16 | RW | s/step | |||
| HR | 4 | uint16 | RW | ||||
| HR | 5 | uint16 | RW | A | 0 or 5 to 10000 | ||
| HR | 6 | uint16 | RW | ×0.01 | |||
| HR | 7 | uint16 | RW | V | |||
| HR | 8 | uint16 | RW | s | |||
| HR | 9 | int16 | RW | ×0.01 | 0 = disabled, 0.80 to 1.00, or -0.80 to -0.99 for capacitive |
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).