Stratos VFD 7.2 / 11 kW
Stratos Drives (synthetic) · Variable Frequency Drive
A mid-range 11 kW VFD with a typical 'mostly-clean, partly-quirky' register map. Word order changes between integers and floats; status word uses non-standard bit numbering; one tag uses a sentinel for invalid.
Register map
Documented addresses use Modicon 4xxxx notation. PDU column is the 0-based wire address.
| Doc | PDU | Name | Type | Order | Scale | Unit | R/W | Notes |
|---|---|---|---|---|---|---|---|---|
| 40001 | 0 | drive_status_word | Bitfield | — | — | — | R | bit 0 ready · bit 1 running · bit 2 fault · bit 3 warning · bit 5 at_setpoint · bit 7 reverse |
| 40002 | 1 | operating_mode | Enum | — | — | — | R/W | 0 Off · 1 Local · 2 Remote · 3 Service · 4 Fault-latch |
| 40011 | 10 | motor_frequency | S16 | — | ÷10 | Hz | R | Negative = reverse rotation |
| 40012 | 11 | frequency_setpoint | S16 | — | ÷10 | Hz | R/W | Limit-checked against motor_max_frequency |
| 40021 | 20 | motor_current | U16 | — | ÷100 | A | R | |
| 40023 | 22 | dc_bus_voltage | U16 | — | ÷10 | V | R | |
| 40031 | 30 | lifetime_energy | U32 | ABCD | ×1 | Wh | R | |
| 40041 | 40 | motor_torque | S16 | — | ÷10 | % rated | R | |
| 40071 | 70 | motor_temperature | F32 | CDAB | — | °C | R | Sentinel 0x7FC00000 (NaN) means probe not fitted |
| 40081 | 80 | active_alarm_code | U16 | — | — | — | R | 0 = no alarm; see alarm code table |
| 40091 | 90 | battery_power | S32 | ABCD | ÷10 | kW | R | Negative = charging |
| 40101 | 100 | fault_reset | U16 | — | — | — | R/W | Write 0xA55A to clear latched faults — see quirk #2 |
| 40201 | 200 | motor_max_frequency | U16 | — | ÷10 | Hz | R/W | Persisted to EEPROM on every write — see quirk #3 |
Device quirks
Word order changes between INT and FLOAT
Integers (U32 / S32) are ABCD (high word first). Floats are CDAB. Yes, in the same map. This is documented on page 47, footnote 3 — easy to miss.
fault_reset is a magic-cookie write
Writing 0xA55A clears latched faults. Any other value is silently ignored — no exception, no status change. Always read-back drive_status_word.bit2 to confirm.
motor_max_frequency wears out EEPROM
Every write triggers an EEPROM commit (10⁵ cycle endurance). Do not write per-poll. The integration package must include a 'changed-only' guard.
TCP Unit ID 0xFF only on direct polling
Through any gateway, Unit ID maps to the drive's RTU slave address. A polling client hard-coded to 0xFF will get gateway-path-unavailable (0x0A) the moment a gateway is inserted.
Integration deliverable
- Pre-flight read sweep of every register listed above (no writes).
- Annotated capture (RTU and TCP) of at least one read per type.
- Normalized register map with evidence column.
- Documented handling for each quirk above, with verification steps.
- Defensive write plan: allowlist, read-back, and EEPROM-wear guard.
- Course-internal — no real vendor exists.
- Modbus Application Protocol V1.1b3 for FC and exception behavior.
- Modbus over Serial Line V1.02 for RTU framing and timing assumptions.