AERL technical documentation

CoolPro — Modbus RTU Communications Protocol Rev 1.0.1

8 pages

Download PDF Print
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Download PDF· Rev 1.0.1
RS485 / Modbus Communications

CoolPro

Modbus RTU Communications Protocol
Doc · CP-MODBUS-RTU
Standard Modbus RTU
Physical RS485 · RJ45
Default baud 9600 bps
Frame 8·N·1
Default address 40
CRC CRC-16 (LSB first)
Document CP-MODBUS-RTU
Revision 1.0.1
Effective 11 / 2026
Product CoolPro
Audience Integrators
Format A4 · 8 pages
Language English (en-AU)

Contents

01 Bus, Connection & SettingsOverview, communication parameters, frame timing, RJ45, topology 02
02 Supported Function Codes0x03 / 0x04 / 0x06 — request & response frames, examples 03
03 Modbus Register MapAddressing, holding registers, telemetry, status, device info 04
04 Data Encoding16-bit / 32-bit encoding, milliunit scaling, worked CRC-16 06
05 Exception CodesStandard Modbus exception responses 07
06 Example TransactionsWorked reads & writes for telemetry, identity and config 07
07 Revision HistoryDocument revision log 08
CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 1 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 01

Bus, Connection & Settings

The CoolPro provides access to real-time measurements and device information via the standard Modbus RTU protocol over RS485.

Communication Parameters

ParameterValue
Baud rate9600 (default); configurable: 9600 / 19200 / 38400 / 57600 / 115200
Data bits8
Stop bits1
ParityNone
Device address40 (default); configurable 1–247
CRCModbus CRC-16 (transmitted LSB first)

Frame Timing

Modbus RTU frames are delimited by idle time on the bus: a frame is treated as complete once the bus has been silent for the inter-frame gap period.

The CoolPro uses a fixed inter-frame gap of approximately 8 ms, independent of the configured baud rate. This is comfortably wider than the 3.5-character silent interval required by the Modbus specification at every supported baud rate, so a standard-compliant master will interoperate without adjustment.

Physical Connection

The CoolPro uses an 8-pin RJ45 connector for its RS485 interface.

RJ45 connector viewed from the front, with the eight contacts numbered 1 through 8 from left to right
RJ45 connector viewed from the front — contacts numbered 1 to 8, left to right.
PinSignal
3RS485-A (non-inverting)
6RS485-B (inverting)
8GND

All other pins are unused.

CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 2 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 01 · continued

Network Topology

The Modbus network is a linear bus, with short stubs branching from ‘T’ connectors on the main backbone to each device. Terminate the bus at both ends with a 120 Ω resistor between the RS485-A and RS485-B signals: at the master (many masters have a built-in or switchable terminator) and at the far end of the backbone.

Modbus RS485 network topology: a master daisy-chained to multiple slave devices on a two-wire bus, each device exposing A, B and G terminals, with a 120 ohm termination resistor fitted across A and B at the far end of the backbone
Linear two-wire RS485 bus — master daisy-chained to slave devices (A / B / G), with 120 Ω termination across A and B at the far end of the backbone (the master end is terminated at the master).
Chapter 02

Supported Function Codes

0x03 Read Holding Registers

Read one or more configuration registers.

Request[Device ID] [0x03] [Start Address High] [Start Address Low] [Quantity High] [Quantity Low] [CRC Low] [CRC High] Response[Device ID] [0x03] [Byte Count] [Data…] [CRC Low] [CRC High]
FrameBytesNotes
Request28 03 00 00 00 01 [CRC]Read 1 register starting at 0 (device address)
Response28 03 02 00 28 [CRC]Byte count = 2, value = 40 (0x0028)
Request28 03 00 00 00 03 [CRC]Read 3 registers starting at 0
Response28 03 06 00 28 00 00 00 00 [CRC]Byte count = 6, three register values
CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 3 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 02 · continued
0x04 Read Input Registers

Read one or more input registers containing measurements or device information.

Request[Device ID] [0x04] [Start Address High] [Start Address Low] [Quantity High] [Quantity Low] [CRC Low] [CRC High] Response[Device ID] [0x04] [Byte Count] [Data…] [CRC Low] [CRC High]
FrameBytesNotes
Request28 04 00 00 00 01 [CRC]Read 1 register starting at 0 (input voltage in mV)
Response28 04 02 5F B4 [CRC]Byte count = 2, value = 24500 (0x5FB4 = 24.5 V)
Request28 04 00 00 00 04 [CRC]Read 4 registers starting at 0 (Vin, Iin, Vout, Iout)
Response28 04 08 5F B4 0C B2 5D C0 0C 80 [CRC]Vin = 24.5 V, Iin = 3.25 A, Vout = 24.0 V, Iout = 3.20 A
0x06 Write Single Register

Write a configuration register (device address, baud rate, or reset trigger).

Request[Device ID] [0x06] [Register High] [Register Low] [Value High] [Value Low] [CRC Low] [CRC High] Response[Device ID] [0x06] [Register High] [Register Low] [Value High] [Value Low] [CRC Low] [CRC High]
FrameBytesNotes
Request28 06 00 00 00 2A [CRC]Write device address = 42
Response28 06 00 00 00 2A [CRC]Echo confirms write
Chapter 03

Modbus Register Map

Addressing

Register reference numbers (4xxxx for holding registers, 3xxxx for input registers) are a documentation convention only. The value placed on the wire is the zero-based PDU address, shown in the Offset column — that is, on-wire address = reference number − 40001 (holding) or − 30001 (input) = the offset.

The function code — not the reference range — selects the address space, so the same on-wire address 0x0000 reads the device address under 0x03 and the input voltage under 0x04.

CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 4 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 03 · continued

Holding Registers (FC 0x03, 0x06)

Configuration registers (read / write). All values are uint16.

Address Offset Description Range Notes
400010Device Address1–247Takes effect after reset
400021Baud Rate Index0–40 = 9600, 1 = 19200, 2 = 38400, 3 = 57600, 4 = 115200; takes effect after reset
400032Reset Command—Write 0xAA55 to trigger a reset; always reads 0
Reset register read-back

Register 40003 is a write-only command trigger. A read always returns 0 regardless of the value last written — this is expected behaviour, not a fault. The written value initiates the reset and is never stored.

Input Registers (FC 0x04) — Live Telemetry (Offsets 0–7)

All values are uint16 with milliunit scaling.

Address Offset Description Unit Conversion
300010Input VoltagemVvoltage_v = value / 1000
300021Input CurrentmAcurrent_a = value / 1000
300032Output VoltagemVvoltage_v = value / 1000
300043Output CurrentmAcurrent_a = value / 1000
300054Temperaturem°Ctemp_c = value / 1000
300065Uptime (Low Word)sLow 16 bits of uptime
300076Uptime (High Word)sHigh 16 bits of uptime
300087Status Flags—Bit field (see below)

Status Flags Bit Field (Register 30008)

A 16-bit bit field. Each bit reports a specific system condition and can be set or cleared independently.

BitHexNameDescription
00x0001System StartupDevice is initialising (cleared once startup completes)
10x0002Daily ResetDaily reset has occurred (uptime counter reset)
20x0004Input Measurement FaultFault communicating with the input measurement sensor
30x0008Output Measurement FaultFault communicating with the output measurement sensor
40x0010Calibration InvalidStored calibration data failed validation
50x0020Calibration MissingNo calibration data stored
60x0040Temperature Sensor FaultFault communicating with the temperature sensor
7–15—ReservedReserved for future use (currently 0)
CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 5 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 03 · continued

Device Information Registers (Offsets 100–107)

Address Offset Description Type Notes
30101100Serial Number Lowuint16Low 16 bits
30102101Serial Number Highuint16High 16 bits
30103102Hardware Revisionuint16e.g. 1, 2, 3
30104103Firmware Major Versionuint16e.g. 1
30105104Firmware Minor Versionuint16e.g. 0
30106105Firmware Patch Versionuint16e.g. 0
30107106Manufacture Date Lowuint16Unix timestamp low word
30108107Manufacture Date Highuint16Unix timestamp high word
Chapter 04

Data Encoding

16-bit registers

  • Byte order: big-endian (MSB first).
  • Example: value 24500 (0x5FB4) is transmitted as [0x5F, 0xB4].

Milliunit scaling

All measurements use milliunits so values carry as integers without floating point:

  • Voltage: millivolts (mV) — divide by 1000 for volts.
  • Current: milliamps (mA) — divide by 1000 for amps.
  • Temperature: millidegrees Celsius (m°C) — divide by 1000 for °C.

For example, an input-voltage reading of 24500 is 24.5 V, and a temperature reading of 25800 is 25.8 °C.

32-bit values

Uptime, serial number and manufacture date span two uint16 registers:

  • Split: low word first, high word second.
  • Byte order: big-endian within each register.

Example — value 70000 (0x00011170) is stored as:

RegisterHexValue
N (low)0x11704464
N+1 (high)0x00011

Reconstruct: (high << 16) | low = 70000. All values are transmitted as integers; no floating-point encoding is used.

Conversion Examples

QuantityRegister valueMeaning
24.5 V2450024500 mV
3.25 A32503250 mA
25.8 °C2580025800 m°C
Uptime 70000 soffset 5 = 4464, offset 6 = 1Combined: 0x0001_1170
CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 6 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 04 · continued

CRC-16

Every frame ends with a 16-bit CRC computed over all preceding bytes using polynomial 0xA001 with an initial value of 0xFFFF, and transmitted low byte first.

Frame (without CRC)CRC-16On the wire (CRC appended, low byte first)
28 04 00 00 00 010x333628 04 00 00 00 01 36 33
28 04 02 5F B40x71DD28 04 02 5F B4 DD 71 (response)
Chapter 05

Exception Codes

Standard Modbus exception responses:

CodeNameDescription
0x01Illegal FunctionFunction code not supported
0x02Illegal Data AddressRegister address invalid
0x03Illegal Data ValueValue out of range
0x04Slave Device FailureDevice cannot process the request
Exception response[Device ID] [Function Code + 0x80] [Exception Code] [CRC Low] [CRC High]
Chapter 06

Example Transactions

All requests are addressed to device ID 0x28 (40). CRC bytes are shown as [CRC]; worked CRC values are given in § Data encoding.

CoolPro · Modbus RTU Protocol · Rev 1.0.1 Page 7 / 8 © 2026 AERL Pty Ltd
CoolPro
Modbus RTU Protocol Rev 1.0.1 8 Nov 2026
Chapter 06 · continued

Example Transactions — Telemetry & Identity

FrameBytesNotes
Read input voltage — FC 0x04, offset 0
Request28 04 00 00 00 01 [CRC]8 bytes total
Response28 04 02 5F B4 [CRC]7 bytes; value 0x5FB4 = 24500 mV = 24.5 V
Read input current — FC 0x04, offset 1
Request28 04 00 01 00 01 [CRC]Read 1 register at offset 1
Response28 04 02 0C B2 [CRC]Value 0x0CB2 = 3250 mA = 3.25 A
Read temperature — FC 0x04, offset 4
Request28 04 00 04 00 01 [CRC]Read 1 register at offset 4
Response28 04 02 64 C8 [CRC]Value 0x64C8 = 25800 m°C = 25.8 °C
Read serial number — FC 0x04, offsets 100–101 (split low / high word)
Request28 04 00 64 00 02 [CRC]Option 1 — read both registers at offset 100
Response28 04 04 30 39 00 00 [CRC]Byte count = 4; Low = 0x3039, High = 0x0000
Request28 04 00 64 00 01 [CRC]Option 2 — read offset 100 individually
Response28 04 02 30 39 [CRC]Low word = 0x3039 = 12345
Request28 04 00 65 00 01 [CRC]Read offset 101 individually
Response28 04 02 00 00 [CRC]High word = 0x0000. Reconstruct: serial = 12345

Example Transactions — Configuration Writes

FrameBytesNotes
Read device address — FC 0x03, holding register 0
Request28 03 00 00 00 01 [CRC]Read 1 register at offset 0
Response28 03 02 00 28 [CRC]Value 0x0028 = 40 (device address)
Write device address — FC 0x06, holding register 0
Request28 06 00 00 00 2A [CRC]New device address = 42 (0x002A)
Response28 06 00 00 00 2A [CRC]Echo. Changes take effect after a device reset
Trigger device reset — FC 0x06, holding register 2
Request28 06 00 02 AA 55 [CRC]Reset trigger value 0xAA55
Response28 06 00 02 AA 55 [CRC]Echo. Device resets immediately after sending the response
Chapter 07

Revision History

Rev.DateChange
12026-06-08Initial customer release
1.0.12026-11-08Bus termination clarified (both ends: the master and the far end of the backbone).