
For **Bulk Milk Chiller (BMC) with Thermal Battery IoT integration**, there is **no universal Modbus register map** because each OEM controller uses its own map. However, for a **custom IoT gateway or controller**, a standard **industrial Modbus register structure** can be designed so SCADA, dairy ERP, or cloud systems can easily integrate.

Below is a **practical Modbus RTU/TCP register map typically used for Milk Chiller monitoring systems**.

---

# 1. Modbus Communication Parameters

Typical configuration used in dairy equipment:

| Parameter | Value        |
| --------- | ------------ |
| Protocol  | Modbus RTU   |
| Interface | RS485        |
| Baud rate | 9600 / 19200 |
| Data bits | 8            |
| Parity    | Even         |
| Stop bits | 1            |
| Slave ID  | 1–247        |

IoT gateway can convert **RS485 → MQTT / HTTP / Cloud**.

---

# 2. Input Registers (Sensor Data)

**Function Code: 04**

| Register | Parameter                 | Unit   | Description           |
| -------- | ------------------------- | ------ | --------------------- |
| 30001    | Milk Temperature          | 0.1 °C | Milk tank temp        |
| 30002    | Thermal Battery Temp      | 0.1 °C | PCM temperature       |
| 30003    | Evaporator Temp           | 0.1 °C | Cooling coil          |
| 30004    | Compressor Discharge Temp | 0.1 °C | Compressor protection |
| 30005    | Ambient Temperature       | 0.1 °C | Outside environment   |
| 30006    | Milk Tank Level           | Liters | From level sensor     |
| 30007    | Milk Flow Rate            | L/min  | Milk intake           |
| 30008    | Compressor Current        | 0.1 A  | Motor load            |
| 30009    | Voltage                   | 0.1 V  | Supply voltage        |
| 30010    | Power Consumption         | W      | Real-time power       |

---

# 3. Holding Registers (Configuration)

**Function Code: 03**

| Register | Parameter                   | Unit   |
| -------- | --------------------------- | ------ |
| 40001    | Milk Cooling Setpoint       | °C     |
| 40002    | Compressor Start Temp       | °C     |
| 40003    | Compressor Stop Temp        | °C     |
| 40004    | Thermal Battery Charge Temp | °C     |
| 40005    | Alarm Temp High             | °C     |
| 40006    | Alarm Temp Low              | °C     |
| 40007    | Compressor Restart Delay    | sec    |
| 40008    | Milk Tank Capacity          | Liters |

---

# 4. Coil Registers (Digital Outputs)

**Function Code: 01**

| Register | Control                     |
| -------- | --------------------------- |
| 00001    | Compressor ON/OFF           |
| 00002    | Agitator Motor              |
| 00003    | Milk Pump                   |
| 00004    | Thermal Battery Charge Mode |
| 00005    | Alarm Buzzer                |
| 00006    | Remote Reset                |

---

# 5. Discrete Inputs (Status)

**Function Code: 02**

| Register | Status                  |
| -------- | ----------------------- |
| 10001    | Compressor Running      |
| 10002    | Agitator Running        |
| 10003    | Power Available         |
| 10004    | Door Open               |
| 10005    | High Temperature Alarm  |
| 10006    | Low Temperature Alarm   |
| 10007    | Thermal Battery Charged |
| 10008    | Sensor Fault            |

---

# 6. Data Logging Registers

For **IoT analytics**

| Register | Parameter                  |
| -------- | -------------------------- |
| 31001    | Total Compressor Run Hours |
| 31002    | Total Energy Consumption   |
| 31003    | Milk Collected Today       |
| 31004    | Cooling Cycles Today       |
| 31005    | Last Alarm Code            |

---

# 7. Alarm Codes

| Code | Alarm                       |
| ---- | --------------------------- |
| 1    | Milk temperature high       |
| 2    | Compressor overload         |
| 3    | Low refrigerant pressure    |
| 4    | Thermal battery not charged |
| 5    | Sensor failure              |
| 6    | Power failure               |

---

# 8. Example Modbus Read

Example: Read milk temperature

```
Slave ID : 01
Function : 04
Register : 30001
Length   : 01
```

Response:

```
01 04 02 00 FA CRC
```

`00FA = 250 → 25.0 °C`

---

# 9. Typical IoT Gateway Architecture

```
BMC Controller
      │
      │ RS485 Modbus
      ▼
IoT Gateway
(ESP32 / STM32 / Linux)
      │
4G / NB-IoT
      │
MQTT
      │
Cloud Dashboard
```

---

# 10. Recommended Sensors for BMC IoT

| Parameter          | Sensor                 |
| ------------------ | ---------------------- |
| Milk temperature   | PT100 / DS18B20        |
| Tank level         | Ultrasonic / Load cell |
| Flow               | Milk flow meter        |
| Power              | Energy meter           |
| Compressor current | Hall current sensor    |

---

💡 **Important practical note**

Most dairy chillers (including those from Promethean Power Systems) **do not expose native Modbus**, so an **external IoT controller** usually reads sensors directly or taps into PLC signals.

---

If you want, I can also provide:

1️⃣ **Complete SAME54 firmware architecture for BMC IoT controller**
2️⃣ **RS485 Modbus gateway firmware with MQTT cloud upload**
3️⃣ **Full hardware BOM (~₹4500 IoT board) for 1000 milk collection centers**.
