Crest Condensing Boiler: Modbus and BACnet Communication Instructions
This manual provides guidelines for implementing Modbus and BACnet communication with Lochinvar Crest boilers.
Definitions
Abbreviation or Acronym | Meaning |
---|---|
ASCII | American Standard Code for Information Interchange |
BACnet | A data communication protocol for Building Automation and Control Networks |
BAS | Building Automation System |
Baud (Baud Rate) | Number of data bits transmitted per second (bps) |
EMS | Energy Management System |
FDX | Full-Duplex |
HDX | Half-Duplex |
Hex | Hexadecimal Number (0 - 9, A - F) |
I/O Box | Input/Output (I/O) |
LSB | Least Significant Byte |
ModBus® | A serial, half-duplex data transmission protocol developed by AEG Modicon |
MSB | Most Significant Byte |
RS232 | A standard for serial, full-duplex (FDX) transmission of data based on the RS232 Standard |
RS485 | A standard for serial transmission of data based on the RS-485 Standard |
RTU | Remote Terminal Unit |
Minimum System Requirements
- BAS system or computer with a serial or USB port with a converter to RS-485.
- Shielded twisted pair communication cable.
ModBus Configuration
The ModBus or BACnet communication board uses ten dip switches for configuration (address, baud rate, parity). The first eight set the address, the ninth sets the baud rate, and the tenth sets the parity.
Addressing
The ModBus addressing space has 256 addresses: 0 for broadcast, 1-247 for unique devices, and 248-255 reserved. Addresses are set by switches in the 1 position, with values added together. For example, setting switches 2, 5, and 6 to the 1 position results in an address of 50 (2 + 16 + 32 = 50).
Timing Specifications
The baud rate for the ModBus board is selectable with Dip switch #9 (0=9600 bps, 1=19200 bps). Messages are started by 3.5 character times of silence, with a maximum delay of 1.5 character times between frames. For Crest models, the timeout is programmable (5-120 seconds, default 10 seconds). For Hellcat models, the timeout is 300 seconds. If temperatures are not updated, the boiler reverts to internal sensors. If commands are not refreshed every 4 minutes, the boiler reverts to its own inputs.
Parity
Parity is set by Dip switch #10 (0=No Parity, 1=Even Parity). No Parity uses two stop bits; Even Parity uses one.
Data Transmission Mode
Lochinvar ModBus communication uses ModBus RTU mode for efficiency.
ModBus Board Diagnostics
The board has three LEDs: two yellow (D5 for transmission, D6 for reception) and one green (D7 for internal faults). Internal faults are indicated by LED patterns: Normal Operation (1 sec on/1 sec off), Controller Fault (continuous on), No Burner Control Communication (0.5 sec on/1.5 sec off), No ModBus Communication (1.5 sec on/0.5 sec off).
ModBus Function Set
The following ModBus functions are supported:
Function | Sub Function (Dec) | Sub Function (HEX) | Description |
---|---|---|---|
1 | 01 | Read Coil Status | |
2 | 02 | Read Input Status | |
3 | 03 | Read Holding Registers | |
4 | 04 | Read Input Registers | |
5 | 05 | Force Single Coil | |
6 | 06 | Preset Single Register | |
7 | 07 | Read Exception Status | |
8 | 08 | 00 | Diagnostic - Return Query Data |
01 | Diagnostic - Restart Communication | ||
02 | Diagnostic - Return Diagnostic Register | ||
04 | Diagnostic - Force Listen Mode | ||
0A | Diagnostic - Clear Counters and Diagnostic Registers | ||
0B | Diagnostic - Return Bus Message Count | ||
0C | Diagnostic - Bus Communication Error Count | ||
0D | Diagnostic - Bus Exception Error Count | ||
0E | Diagnostic - Return Slave Message Count | ||
0F | Diagnostic - Return Communication Error Count | ||
10 | Diagnostic - Return Slave NAK Count | ||
11 | Diagnostic - Return Slave Busy Count | ||
12 | Diagnostic - Return Bus Character Overrun Count | ||
14 | Diagnostic - Clear Overrun Counter and Flag | ||
11 | 0B | Get Communication Event Counter | |
12 | 0C | Get Communication Event Log | |
15 | 0F | Write Multiple Coils | |
16 | 10 | Write Multiple Registers | |
17 | 11 | Report Slave ID | |
23 | 17 | Read / Write Multiple Registers |
ModBus Exception Codes
These codes indicate errors during ModBus communication:
Code | Name | Meaning |
---|---|---|
01 | ILLEGAL FUNCTION | The function code is not supported or the device is in the wrong state. |
02 | ILLEGAL DATA ADDRESS | The data address in the query is invalid. |
03 | ILLEGAL DATA VALUE | A value in the query data field is not allowable. |
04 | SLAVE DEVICE FAILURE | An unrecoverable error occurred on the slave device. |
05 | ACKNOWLEDGE | The slave device accepted the request but requires a long time to process it. |
06 | SLAVE DEVICE BUSY | The slave device is engaged in a long duration program command. |
08 | MEMORY PARITY ERROR | A consistency check failed on the extended file area. |
0A | GATEWAY PATH UNAVAILABLE | The gateway could not allocate an internal communication path. |
0B | GATEWAY TARGET DEVICE FAILED TO RESPOND | No response was obtained from the target device. |
ModBus Memory Map
Primary Data Tables
Table | Data Type | Read / Write |
---|---|---|
Discrete Inputs | Single Bit | Read Only |
Coils | Single Bit | Read / Write |
Input Registers | 16-Bit Word | Read Only |
Holding Registers | 16-Bit Word | Read / Write |
Crest Boiler Memory Map
This section details the ModBus memory map for Crest boilers, including Coils, Discrete Inputs, and Holding Registers with their respective addresses, descriptions, default values, units, and ranges.
Configuration Bits (Address 40001): These bits control how the boiler uses internal or BAS inputs. Bit 0 enables the boiler, Bit 1 controls the Tank Thermostat, Bit 2 handles Rate Command/10-10V Input/Setpoint Command, Bit 3 is for Tank Setpoint, Bit 4 for System Supply Temperature, Bit 5 for Outdoor Temperature, Bit 6 for Tank Temperature, and Bit 7 for System Return Temperature. Bits 8-15 are unused.
BACnet Configuration
The BACnet communication board uses ten dip switches for configuration (address and baud rate). The first seven set the address, the eighth selects °F/°C, and the ninth and tenth set the baud rate.
Addressing
The BACnet local addressing space has 256 addresses, with a maximum usable address of 127. Addresses are set by switches in the 1 position, with values added together. The Device Instance is calculated by adding a model-dependent base address to the local address. For example, 610000 (base for FB 751-2001) + 50 (local address) = 610050 (Device Instance).
°F/°C Setting: Dip switch #8 controls temperature units: OFF for Celsius, ON for Fahrenheit.
Device Name: The default device name is "MTR-01 BACnet," which can be changed.
Timing Specifications
The baud rate for the BACnet board is selectable with Dip switches #9 and #10. Possible baud rates are 9600, 19200, 38400, and 76800 bps. Similar to ModBus, temperature updates are critical, and a timeout period (5-120 seconds for Crest, 300 seconds for Hellcat) is used to prevent issues if data is not received. Commands must be refreshed every 4 minutes.
Communication Board Diagnostics
The board has three LEDs: two yellow (D5 for transmission, D6 for reception) and one green (D7 for internal faults). Internal faults are indicated by LED patterns: Normal Operation (1 sec on/1 sec off), Controller Fault (continuous on), No Burner Control Communication (0.5 sec on/1.5 sec off), No BACnet Communication (1.5 sec on/0.5 sec off).
BACnet Memory Map
Primary Data Tables
Object Type | Data Type | Read / Write |
---|---|---|
Binary Input (BI) | Single Bit | Read Only |
Binary Value (BV) | Single Bit | Read / Write |
Analog Input (AI) | 16-Bit Word | Read Only |
Analog Value (AV) | 16-Bit Word | Read / Write |
Memory Map
This section details the BACnet memory map, including Binary Values, Binary Inputs, and Analog Inputs/Values, with object names, types, instances, units, and ranges.
Wiring Requirements
Note that System Supply/Return Temperature and Tank Temperature need to be refreshed every few seconds by the BAS to prevent fluctuations. If not provided, the boiler reverts to internal control. Other control signals must be refreshed every 4 minutes.
Physical Wiring
RS-485 Communication Bus:
- Maximum Length: 4000 feet
- Cable Specification: 24 AWG / A,B (twisted pair) and GND Shielded, 120 ohm impedance.
- Maximum Load: 32 units (32 nodes).
- Termination: Requires 120 ohm impedance matching resistors on each end.
- Connections: A = positive, B = negative.
Typical Boiler System Wiring
Illustrates physical configurations for cascade systems (with and without individual monitoring) and direct control systems using BACnet or Modbus RS485 communication.
Unit Operation
Unit Operation with ModBus / BACnet Communications
To control a Crest boiler via a Building Management System (BMS) using ModBus or BACnet, select one of three Demand Configuration options via Main Menu >> Setup >> BMS.
The ModBus communication timer (5-120 seconds) ensures timely data communication and provides fail-safe operation. It resets with each ModBus write command. Lochinvar recommends setting this timer to the shortest value.
Ensure correct configuration bits are sent to holding register 40001 (Object AV0) and data/enable signals to registers 40002-40007 (Objects AV1-AV6) per the demand configuration.
Demand Configuration: ENABLE = ACTIVE; BMS = INACTIVE
Unit controlled by local setpoints and an enable signal via ModBus/BACnet. Sensors and limiting devices wired to the terminal strip, except for the enable signal.
Object | Holding Registers | Definition | Bit Value (HEX) | Action |
---|---|---|---|---|
AV0 | 40001 | Configuration | 00 01 | Set Configuration to read 40002 |
AV1 | 40002 | Coils | 00 01 | Enables unit (00 00 disables unit) |
Demand Configuration: ENABLE = ACTIVE; BMS = ACTIVE
Unit controlled by an enable signal. Setpoint determined by control parameters and a rate command via ModBus/BACnet (0-100% modulation). Sensors and limiting devices wired to the terminal strip, except for enable and 0-10V BMS signals.
Object | Holding Registers | Definition | Bit Value (HEX) | Action |
---|---|---|---|---|
AV0 | 40001 | Configuration | 00 05 | Set Configuration to read 40002 & 3 |
AV1 | 40002 | Coils | 00 10 | Enables unit (00 00 disables unit) |
AV2 | 40003 | Rate Command | 00 ## | Sets Modulation % or Setpoint |
Demand Configuration: ENABLE = INACTIVE; BMS = ACTIVE
Unit controlled by setting modulation setpoint (0-100%) or setpoint via control parameters. Rate command is 0-100% of modulation. Sensors and limiting devices wired to terminal strip, except for 0-10Vdc signal.
Object | Holding Registers | Definition | Bit Value (HEX) | Action |
---|---|---|---|---|
AV0 | 40001 | Configuration | 00 04 | Set Configuration to read 40003 |
AV2 | 40003 | Rate Command | 00 00 | Sets Modulation % or Setpoint |
Hot Water Generation
Can be accomplished via direct control (tank thermostat/sensor wired to unit) or remote control (sensors/thermostat values available via ModBus/BACnet).
DHW with remote control:
For proper response to hot water calls, set the following holding registers:
Object | Holding Registers | Definition | Bit Value (HEX) | Action |
---|---|---|---|---|
AV0 | 40001 | Configuration | 00 4A | Set Configuration to read 40002, 4 & 5 |
AV1 | 40002 | Coils | 00 10 | Enables Tank Tstat (00 00 disables unit) |
AV3 | 40004 | Tank Setpoint | 0# ## | Sets Setpoint |
AV4 | 40005 | Tank Temperature | 0# ## | Passes tank temp from remote sensor |
Cascade
To operate in cascade, configure the leader boiler per demand configurations. Connect remaining boilers via normal cascade wiring. Cascade control is automatic through the leader. With ModBus/BACnet on the leader only, total cascade information is available. To see individual unit temperatures, each unit needs a communication board. Units can be monitored individually without control.
Monitoring Only
Crest boilers can operate with internal controls. ModBus/BACnet can be configured as a monitoring device by polling the communication board for read-only variables.
Rate and Temperature Conversions
Rate
Rate commands can be percent modulation or a desired setpoint, based on BMS Type setting. Modulation percentage is a direct hexadecimal conversion. For example:
Rate % | HEX |
---|---|
0 | 00 |
20 | 14 |
45 | 2D |
60 | 3C |
80 | 50 |
95 | 5F |
100 | 64 |
For desired setpoints, hexadecimal values are determined through linear interpolation using BMS Setup Menu parameters (BMS temperature set-point at low/high analog input). The formula is provided for converting desired setpoint to voltage, then to percentage and hexadecimal.
Temperature
Boiler passes temperature data in degrees Celsius. Decimal values must be divided by 10. Conversions between Fahrenheit (TF) and Celsius (TC) are provided:
- TC = (5/9) * (TF-32)
- TF = (9/5) * TC + 32
Example: 80°F = 26.7°C. Transmitted data: 26.7 * 10 = 267 (Decimal), 10B (HEX).
Example: 155°F = 68.3°C. Transmitted data: 683 (Decimal), 2AB (HEX).
Troubleshooting
Problems communicating over ModBus can be addressed by checking the following items in order:
Physical Layer
- Check power to all components (Boiler, Gateway, BAS Master).
- Check wire lengths and proper shield grounding.
- Check A, B terminal connections and for 120 ohm terminating resistors.
- Check for broken wires.
Communications
- Check Dip Switch Configuration of MTR-01 Board.
- Check Baud Rate (9600, 19200).
- Check Parity.
- Check Slave ID.
- Check Port Setting on Master, Gateway, and Computers.
ModBus Error Codes
Refer to page 6 for ModBus Exception Codes. Also check ModBus PDU, Slave ID, ModBus Command, and configuration bits for Holding Registers 40001-40007.
Unit Status Codes
Boiler state codes on the Building Screen indicate the boiler's current activity. Compare these to the command issued. If they don't agree, check communication and configuration.
Crest Only: Status Codes (Input Register 30014 or Analog Input AI13)
- 2: Heat Demand blocked due to high absolute outlet temperature.
- 3: Heat Demand blocked due to high absolute flue temperature.
- 4: Heat Demand blocked due to high absolute Delta T.
- 8: Heat Demand blocked due to Low 24 VAC.
- 10: Block due to switch OFF boiler.
- 11: No heat demand requested.
- 12: Block due to line frequency.
- 16: Service function.
- 30: Heat demand activated by Freeze Protection.
- 40: Lockout.
Crest Only: Blocking Codes (Input Register 30015 or Analog Input AI14)
- 0: No blocking.
- 5: Blocking Due to Low 24 VAC Supply.
- 6: Blocking MRHL is open.
- 8: Blocking due to Switched OFF boiler.
- 10: Blocking due to High Delta T.
- 11: Blocking due to high outlet water temperature.
- 15: Blocking due to high flue temperature.
- 7: Blocking due to high outdoor temperature.
Crest Only: Lockout Codes (Input Register 30016 or Analog Input AI15)
NOTICE: Lockout codes change constantly; use status code 40 for notification.
- 5: Rapid Temperature Change on Pre-Mix Sensor 2 (S14).
- 15: Rapid Temperature Change on Tank Sensor (S4).
- 25: Pre-Mix Sensor 2 (S14)-Short.
- 35: Flue Sensor (S3) – Short.
- 37: Outlet Sensor (S1) – Short.
- 45: High temperature differential between S12 and S14.
- 146: Small Blower Proving Switch Not Closed.
- 164: Flame Current Circuit Failed.
- 166: Blocked Drain Switch Open.
- 167: Gas Pressure Switch Open.
- 170: Low Water Cut-Off Open.
- 177: Flue Sensor Short.
- 180: Inlet Sensor Open.
- 193: Outlet Sensor Open.
- 230: Fan speed low.
- 231: Fan speed high.
- 232: Flame fail running.
- 233: Flame fail ignition.
- 239: External MRHL.
- 241: Large Gas Valve Relay Failure.
- 243: Combustion Feedback during rest.
- 247: Proof-of-closure feedback fault - open.
- 254: Too many Resets.
Hellcat Only: Status Codes (Input Register 30014 or Analog Input AI13)
- 0: Service Mode.
- 2: Domestic hot water.
- 3: Cascade (DHW).
- 4: Cascade (CH).
- 5: BMS 1-10V.
- 6: Central heating.
- 10: Frost protection.
- 11: No demand requested.
Hellcat Only: Lockout Codes (Input Register 30016 or Analog Input AI15)
NOTICE: Lockout codes change constantly; use status code 40 for notification.
- 121: High gas pressure switch open during run.
- 122: Low gas pressure switch open during run.
- 123: High & low gas pressure switches open during run.
- 124: Blocked drain recycle.
- 126: Flue damper recycle.
- 129: Blocked vent recycle.
- 160: Gas Valve 1 low power fault.
- 161: Gas valve 1 high power fault.
- 162: Gas Valve 2 low power fault.
- 163: Gas Valve 2 high power fault.
- 176: Internal sensing fault.
- 177: Internal sensing fault.
- 189: Flue Temp Maximum.
- 190: Outlet Temp MRHL.
- 191: Outlet Temp ARHL.
- 192: Outlet Water sensor shorted.
- 193: Outlet Water sensor opened.
- 194: Inlet Water sensor shorted.
- 195: Inlet Water sensor opened.
- 197: Flue sensor shorted.
- 198: Flue sensor opened.
- 199: LWCO.
- 204: CRC Error.
- 205: EEPROM Programmed.
- 206: Programming Error.
- 207: EEPROM Write Error.
- 221: High gas pressure switch open during purge.
- 222: Low gas pressure switch open during purge.
- 223: High and Low gas pressure switch open during purge.
- 224: Blocked drain switch open during purge.
- 226: Flue damper proving switch open during purge.
- 227: Internal Fault.
- 229: Blocked Vent switch open during purge.
- 230: Fan speed low.
- 231: Fan speed high.
- 232: Flame fail running.
- 233: Flame fail ignition.
- 237: Flame out-of-sequence.
- 239: External MRHL.
- 242: Combustion Feedback during rest.
- 243: Combustion Feedback during purge.
- 246: Proof-of-closure feedback fault - closed.
- 247: Proof-of-closure feedback fault - open.
- 248: Air Proving Switch fault - closed.
- 249: Air Proving Switch fault - open.
- 250: Too many Resets.
- 251: Combustion Feedback during run.
- 254: Too many Resets.
Installation / Replacement Procedure
- Turn OFF main electrical power and manual gas shutoff.
- Unplug wire harnesses from the communication board.
- Unscrew mounting nuts, remove the communication board.
- Install the new communication board and replace mounting nuts.
- Reconnect wire harnesses.
- Turn ON main electrical power and gas shutoff.
- Configure the communication board and unit controls per this manual.