verified connector library

Kohler Decision-Maker genset controller

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 confirmed at the hardware-verified rung and at no rung below it.

interop-verified

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.

pointaddress (0-based)typescaleunit
l1_l2_voltage0U161
l2_l3_voltage1U161
l3_l1_voltage2U161
l1_l0_voltage3U161
l2_l0_voltage4U161
l3_l0_voltage5U161
l1_current6U161
l2_current7U161
l3_current8U161
frequency9U160.01
total_kw10U161
percent_of_rated_kw11U161
total_power_factor12I160.01
l1_kw13U161
l1_power_factor14I160.01
l2_kw15U161
l2_power_factor16I160.01
l3_kw17U161
l3_power_factor18I160.01
total_kvar19I161
l1_kvar20I161
l2_kvar21I161
l3_kvar22I161
total_kva23U161
l1_kva24U161
l2_kva25U161
l3_kva26U161
oil_pressure32U161
coolant_temperature33I161
engine_speed34U161
local_battery_voltage35U160.1

link settings as documented (unverified): RTU/TCP; default 19200 8N1; unit ID 1; FC 03,06,16; Supports Modbus RTU and TCP protocols depending on the controller model and connection interface.

⚠ Accidental starting can cause severe injury or death. Disconnect battery cables before working on the generator set. — Starkest reads only; we never write a control register.

bench facts as documented (unverified)
terminalsTB10 on APM802, TB5 on Decision-Maker 3+, TB1 on Decision-Maker 340, P20/P19/P18 on Decision-Maker 550, P21 on APM402/DM3000, TB12 on DM3500, TB1 on MPAC 1000, TB2 on MPAC 1500
A/B polarityPositive (+) connects to A terminal, negative (-) connects to B terminal.
termination120 Ohm resistor is located on the base module (APM802) or external 121 Ohm resistor on last device in network.
connectorRJ45 for Ethernet, terminal blocks for RS-485.
isolationSupports both isolated and non-isolated RS-485 connections depending on port used.
shield/groundShield wire should be taped to insulate unused end or connected to shield terminal.
max registers/read100
sentinel values0xFFC0 for unsupported register, 0x7FE0-0x7FFF for unknown signed values, 0xFFE0-0xFFFF for unknown unsigned values.
model register401400
serial register401421
firmware register401002
identification notesRegister 49999 (or 409999) contains the Device ID.
power12 or 24 VDC battery voltage for controllers; 240 VAC/60 Hz power supply connections for APM802 control panel heater.
certificationsMarine third-party approval option (Lloyd's option) supported on select models.
doc revisionTP-6113 12/21p
field reports — community-sourced, unverified (checked 2026-06-11)
  • Kohler APM603/APM604 controllers can abruptly terminate Modbus TCP communications and immediately reset TCP connections if the port is overloaded or multiple concurrent connections are opened without being gracefully closed. [source]
  • Addressing confusion occurs due to Kohler's documentation using 6-digit register formats (e.g., 400001 to 409999), which require standard Modbus clients to drop the leading memory-area digit and address them as 5-digit registers (e.g., 40001). [source]
  • confirmed: Register map (l1_l2_voltage @ 0, oil_pressure @ 32, coolant_temperature @ 33, engine_speed @ 34, local_battery_voltage @ 35) — confirmed by Kohler TP-6113 Modbus Protocol Manual [3.2.1]
  • confirmed: Sentinels (0xFFC0 for unsupported register, 0x7FE0-0x7FFF for unknown signed values) — confirmed by Kohler TP-6113 Section 1 Configurations and Definitions
  • confirmed: Physical terminals (TB10 on APM802, TB5 on Decision-Maker 3+, P20 on Decision-Maker 550) — confirmed by Kohler TP-6113 and related installation manuals
  • confirmed: Default communication settings (19200 baud, Unit ID 1) — confirmed by APM802 configuration documentation

The trust ladder

Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.

If your device isn't here, upload its register map. Generation is free, and the connector keeps the rung it earns under testing.

To prove a connector against your own device, order hardware verification. If it doesn't verify, you don't pay.

Platform builders can license the verified library: machine-readable maps, the firmware matrix, API access.