HP Tips & tricks during installation and troubleshooting

From OpenMotics
Jump to navigation Jump to search

Introduction

The HP (Heat Pump) module is made to work in combination OpenMotics. This module will allow to built a full electric solution for Heating and Cooling in combination with a Heatpump. The HP module has following connections:

  • 6x NTC (temperature) probe connections
  • 4x 230VAC outputs
  • 2x Relay outputs (dry contacts)
  • 2x 0-10VDC inputs
  • 2x 0-10VDC outputs
  • 1x Aquastat input


The firmware and hardware of the HVAC module has been developed in 2 versions:

  • A version that communicates over OM bus (only for internal purposes)
  • A version that communicates over the Energy bus (Commercial version)

2 flavours of the HVAC module firmware exists:

  • V6.x.y only works with Gen 3.0 hardware on the OM bus (GEN3)
  • V7.x.y only works with Gen 3.1 hardware on the Energy bus (GEN3)

This document describes the HVAC module tips&tricks over the OM bus.

So the below instructions only work for HP (or HVAC) modules connected to the OM bus with firmware V6.x.y. The below instructions will not work for HVAC modules connected to the energy bus with firmware V7.x.y

Firmware information

Release notes

The Firmware release notes can be found here: HP Module Release Notes

Eeprom Memory Model

The HVAC Memory Model contains the eeprom locations (in DEC and HEX) of the eeprom of the HVAC module and the explanation. Please note that in the rest of this document, the eeprom location is always used in DEC.

Configuration HVAC module

Command line Interface (CLI)

The Brain(+) has a command line interface that interacts directly with the Master processor of the Brain(+). Since the HVAC module communicates directly with the Master processor, it's a good practice to test functionality on this layer before integrating on a higher layer (graphical interface, cloud and others).

The Master processor has a CLI (Command Line Interface) with about 160 different instructions. Details regarding the CLI instruction set can be found here: CLI Reference Guide AIO and AIO Tips & tricks during installation and troubleshooting

In the portal, maintenance mode can be opened (or an UART cable can be used to directly connect to the Brain(+)).

Debug information will also appear on the HVAC module. This information can be seen by connecting an UART cable on the HVAC module (115200 baud).

Connecting the HVAC module

Connecting the HVAC module is easy:

  • Connect an UTP between the Brain(+) and the HVAC module to have the RS485 bus connected. Make sure to insert the termination plug on the first and the last module on the bus.
  • Connect the necessary NTC temperature sensors
  • Connect 230VAC on the HVAC module: The HVAC module doesn't use the power of the RS485 bus but uses its own power supply in case of Brain and/or bus power problem so fail safe can still happen on the HVAC module

Discovery of the HVAC module

Discovery of a new HVAC modules happens fully automatic and no manual actions are needed. In the below example, we plugged a new Input, CAN Control and HVAC module. As you can see below on the CLI output, the 3 modules have been added just after power on of the Brain:

----------Hardware Check------------
FRAM found
EEPROM found (255)
**I2C2 failed, address=152 i2cMode=4**
**DAC5574 not found**
Brain detected
AT24C02 found
MCP7940 RTC found
 -> Clock is running
PCA9534_1 found
PCA9539_1 found
PCA9539_2 found
LM75 found
Std (125kbps) CAN settings used
CAN speed is set at 125kbps
Search started
New Sensor module found: 084.001.126.000
New Input module (I) found: 073.017.243.000
New Can Control module found: 067.051.255.000
New Output module (O) found: 079.001.126.000
Search done

As you can see, 2 modules have the same ID2, ID3 & ID4 (These are the modules generated by the HVAC module). Performing the CLI instruction "error list" or "el" will give following result:

el
--- Total Uptime: 000442 Hours, Last Startup: 17:12:59 31/12/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 29'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.120       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
 01 (O H 008->015) 079.001.126.000 00000   GOOD       (000)  0
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (I E 008->015) 073.017.243.000 00000   GOOD       (016)  1
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (T H 000->007) 084.001.126.000 00000   GOOD       (080)  0
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.051.255.000 00000   GOOD       (016)  1
OK

The 2 modules with "H" in the third column are the modules generated by the HVAC module:

  • 1 output module with ID79.1.126.0: The relays in the HVAC module are linked with this module
  • 1 Sensor module with ID84.1.126.0: The sensors of the HVAC module:
    • Sensor 0-5: External connected NTC's
    • Sensor 6: Not used
    • Sensor 7: Board sensor (Temperature and humidity)

The temperature list can be seen by using following CLI instruction:

sensor list
-Sensor---Temp (Offset)---Hum------Bright---CO2------VOC-----Dali--Setpoint--Th Mode--Name-----------
000 (T)  +22.0'C (+00)     NC       NC      NC       NC     255(0)   NC      000
001 (T)  +23.0'C (+00)     NC       NC      NC       NC     255(0)   NC      000
002 (T)  +23.0'C (+00)     NC       NC      NC       NC     255(0)   NC      000
003 (T)  +22.5'C (+00)     NC       NC      NC       NC     255(0)   NC      000
004 (T)  +22.5'C (+00)     NC       NC      NC       NC     255(0)   NC      000
005 (T)  +22.0'C (+00)     NC       NC      NC       NC     255(0)   NC      000
006 (T)    NC    (+00)     NC       NC      NC       NC     255(0)   NC      000
007 (T)  +27.0'C (+00)    039%      NC      NC       NC     255(0)   NC      000
OK

Note: As of Firmware V6.0.16, a Dim Control module will be added as well.

Configuring the HVAC module

The HVAC module has an onboard eeprom that contains all the configuration parameters. In the beginning of this page, you can find the memory model with all configuration bytes. We'll explain the use of these bytes in the following section.

Configuring the sensor parameters

As you can see in the Eeprom Memory Model, only 2 bytes are used to configure the sensors:

  • Byte 250: On the HVAC module, an UART cable can be connected on which debug information can be displayed. Also, after each temperature measurement of all sensors, a debug line will be printed on the UART console when Byte 250 is put at 0.
  • Byte 251: This byte will program the speed of sensor measurement, each unit is 40ms. Standard non programmed value in eeprom is 255 which means 255x40ms=+/-10s so every 10 seconds a measurement of all sensors is executed.

To have good PID results, a measurement of the sensors every 10 seconds is too slow, a measurement of 1 second should be much better so the value in eeprom should be put at 25. To accomplish this, we need to program this value in the eeprom of the remote HVAC module. To do so, we use the CLI instruction "eeprom write" followed by the 4 ID's of the module (can be the HVAC output or sensor module ID's), followed by the eeprom address and then the byte to be programmed.

eeprom write 79 1 126 0 251 25
OK

To display the temperature measurement on the UART of the HVAC module, use following CLI instruction:

eeprom write 79 1 126 0 250 1
OK

On the UART console of the HVAC module, you now get a temperature measurement every second:

0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+19.5 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+19.5 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+19.5 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+19.5 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+19.5 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+20.0 7:+24.0
0:+19.5 1:+20.5 2:+21.0 3:+20.5 4:+20.5 5:+19.5 7:+24.0

Temperature 0-5 are the external connected NTC's, sensor 7 is the onboard sensor. This onboard sensor cannot be used in the PID filters.

Configuring the PID parameters

Background PID parameters

The PID parameters are programmed in the eeprom of HVAC module. Programming happens by using the CLI instruction "eeprom write" as explained in the previous section.

Each PID filter (PID0, PID1 etc) has a double set of PID parameters, 1 set for Cooling and 1 set for Heating. Switching between cooling and heating happens by changing an eeprom value (see Eeprom byte 252..255). Cooling and Heating can have different behaviour hence the different set of parameters.

Explanation of the parameters:

  • Each Sensor has a setpoint. When for example sensor 4 is linked to PID1, setpoint 4 is used for this PID. The Temperature Sensor linking parameter (Eeprom byte 256, 280, 304 etc)
  • The main application passes the error to the filter via the pid_Error variable (16bits, two's complement). The error is calculated by deducting the setpoint with the actual temperature:
    • Heating: Pid_error= Setpoint - Actual temperature
    • Cooling: Pid_error= Actual temperature - setpoint
  • The three gains are set in Eeprom via Kp, Ki and Kd. These are all 16bit variables representing the gain of each term in 1/256 parts. One LSB is 0.00390625 so to set the integral gain to 5.5 Ki should be set to 1408. ( 1408 * 0.00390625 = 5.5 )
  • The integrator has a time constant that is set thru the Ti variable. The Ti tells the PID-filter how often the I-term should be updated. If Ti is set to 10 then I-term is calculated every 10 times that the filter is called. This is sometimes refered to as 'reset-time'.
  • The I_Clamp is a 16bit variable that is used to prevent wind-up of the integrator. If a large error is present for an extended time period the I-term can grow too big. The I_clamp clamps the I-term to whatever value the variable is set to.
  • The Out_Clamp variable is a 16-bit variable that is used to clamp the final output of the PID-filter to a set-able value.
  • The filter responds with the calculated drive (P+I+D) in the pid_Out variable.
  • The pid_out variable is linked to the programmed output for that pid filter (Eeprom byte 257, 281, 305 etc) in other words, when the pid_out grows, the 0-10V output will increase.

If you look at the eeprom table, you'll see that some of the parameters are split in MSB and LSB:

  • MSB: Most Significant Byte
  • LSB: Least Significant Byte

Example: We want to program Pid_out to 500:

  • In the LSB, a value from 0-255 is represented
  • In the MSB, a value of MSB*256 is represented
  • So the MSB will have 1 as value -> 1*256=256
  • The LSB will have 500-256=244 as value
    • MSB=1
    • LSB=244

Programming PID Filter

Let's start configuring a PID filter:

  • Step 1: First we need to know if we're going to program a Heating or cooling PID filter. In our example we're going to program filter 1 in heating so we need to look at Eeprom byte 304-319(DEC) -> See eeprom table at the beginning of this document. So let's program PID filter 1 in Heating:
eeprom write 79 1 126 0 253 1

For PID0 and PID1, please use different temperature sensors. For the same PID, the same sensor can be used for heating and cooling.

  • Step 2: Let's start with linking the temperature sensor (we're going to sensor 5 so program 5 in byte 304)
eeprom write 79 1 126 0 304 5
  • Step 3: Let's now program the output (we're going to use output 2)
eeprom write 79 1 126 0 305 2

Every time you make an eeprom write in an eeprom filter space, you'll see the feedback of the programming on the UART console of the HVAC module:

-----------------PID1 H CONFIG---------------------------------
 Kp=1792 Ki=128 Kd=256 Ti=255 I_Clamp=100 Out_Clamp=255 Min_Max_Setpt=1: --.-
 PID_Time=255 Sensor_Time=25 Sensor=5 Output=2 pid_debug=0 pid_enabled=0
---------------------------------------------------------------

You can see that Sensor 5 and Output 2 are programmed, pid debug and pid filter are disabled.

  • Step 4: Let's now program the PID parameters
    • Kp=4 -> MSB=4 (256*4), LSB=0 -> Kp=1024
    • Ki=1,5 -> MSB=1 (256*1), LSB=128 (0,5=0.00390625*128) -> Ki=384
    • Kd=2 -> MSB=2 (256*2), LSB=0 -> Kd=512
eeprom write 79 1 126 0 306 4
OK
eeprom write 79 1 126 0 307 0
OK
eeprom write 79 1 126 0 308 1
OK
eeprom write 79 1 126 0 309 128
OK
eeprom write 79 1 126 0 310 2
OK
eeprom write 79 1 126 0 311 0
OK

On the HVAC UART console, we get this:

-----------------PID1 H CONFIG---------------------------------
 Kp=1024 Ki=384 Kd=512 Ti=255 I_Clamp=100 Out_Clamp=255 Min_Max_Setpt=1: --.-
 PID_Time=255 Sensor_Time=25 Sensor=5 Output=2 pid_debug=0 pid_enabled=0
---------------------------------------------------------------

We see the correct PID parameters.

  • Step 5: Let's write 6 in the Ti parameter (How often the I filter needs to be executed before being updated)
eeprom write 79 1 126 0 312 6

Result on the HVAC UART Console:

-----------------PID1 H CONFIG---------------------------------
 Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=100 Out_Clamp=255 Min_Max_Setpt=1: --.-
 PID_Time=255 Sensor_Time=25 Sensor=5 Output=2 pid_debug=0 pid_enabled=0
---------------------------------------------------------------
  • Step 6: Let's now write the clamping values of the I filter (to avoid windup) and the Out value (P+I+D). MSB and LSB values needs to be written. I clamping will be set at 80 and Out value at 255.
eeprom write 79 1 126 0 313 0
OK
eeprom write 79 1 126 0 314 80
OK
eeprom write 79 1 126 0 315 0
OK
eeprom write 79 1 126 0 316 255
OK

Result on the HVAC UART Console:

-----------------PID1 H CONFIG---------------------------------
 Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt=1: --.-
 PID_Time=255 Sensor_Time=25 Sensor=5 Output=2 pid_debug=0 pid_enabled=0
--------------------------------------------------------------- 
  • Step 7: Let's now set the PID execution time. This is the time between 2 execution runs of this PID filter. Since you also have the sensor timing (the time between 2 measurements of all sensors - see Eeprom byte 251), we need the measurement of the sensors to be faster then the execution of the PID filter so make sure the PID execution time is higher then Eeprom byte 251:
eeprom write 79 1 126 0 317 27
  • Step 8: Let's now program the Maximum setpoint this PID filter (in Heating) will accept. This setpoint is written in System Value format. We want to write 62°C so in system value this is equal to 188:
eeprom write 79 1 126 0 318 188

Result on the HVAC UART Console:

-----------------PID1 H CONFIG---------------------------------
 Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt=1:+62.0
 PID_Time=27 Sensor_Time=25 Sensor=5 Output=2 pid_debug=0 pid_enabled=0
---------------------------------------------------------------
  • Step 9: In this step, we will program the FailSafe temperature (in System Value format). This is the setpoint that is automatically loaded at startup or the setpoint temperature that is used when the module goes in Failsafe mode. Please note that this temperature will still be checked against the Min/Max Temperature Setpoint that is programmed and that the Min/Max will always prevail. As an example, we will put 25°C (=114 -> System Value) as Failsafe temperature:
eeprom write 79 1 126 0 320 114

Testing the PID filter

To see what's happening, you have 2 possibilities:

  • Enable debugging on the HVAC module itself (UART-TTL cable must be connected on the HVAC module)
  • Enable debugging on the Brain(+): PID parameters will be displayed on the CLI console of the Brain(+)

Testing the PID filter via the HVAC UART output

To test the PID filter, we will enable the debugging of the live PID calculations and Enable the PID filter:

eeprom write 79 1 126 0 319 2

You will get following info on the HVAC UART console:

* PID(1)H Setpt(5)=+20.0 Temp(5)=+24.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-8 P=-32 I=+0 D=-16 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+24.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-8 P=-32 I=+0 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+24.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-8 P=-32 I=+0 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+24.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-8 P=-32 I=+0 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=+0 D=+2 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-11 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-11 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-11 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-11 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-11 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-11 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-21 D=+0 OUT(2)=+0 *
* PID(1)H Setpt(5)=+20.0 Temp(5)=+23.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=-7 P=-28 I=-21 D=+0 OUT(2)=+0 *

On the console of the Brain(+), you can change setpoint:

thermostat setpoint write 5 60.5

This will result in the output switching on very fast which you can see on the HVAC UART console:

* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+76 P=+304 I=-80 D=+162 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+76 P=+304 I=-80 D=+0 OUT(2)=+224 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=-80 D=+2 OUT(2)=+230 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.5  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+76 P=+304 I=-80 D=-2 OUT(2)=+222 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+14 D=+2 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+14 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+14 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+14 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+14 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+14 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *
* PID(1)H Setpt(5)=+60.5 Temp(5)=+22.0  Kp=1024 Ki=384 Kd=512 Ti=6 I_Clamp=80 Out_Clamp=255 Min_Max_Setpt(1)=+62.0 -> ERR=+77 P=+308 I=+80 D=+0 OUT(2)=+255 *

To see an overview of the programmed thermostat setpoints, you can use the below instruction on the Brain's console:

sensor list

This will give following results:

-Sensor---Temp (Offset)---Hum------Bright---CO2------VOC-----Dali--Setpoint--Th Mode--Name-----------
000 (T)  +19.5'C (+00)     NC       NC      NC       NC     255(0) +65.0'C   ---
001 (T)  +20.0'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   ---
002 (T)  +19.5'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   ---
003 (T)  +19.5'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   ---
004 (T)  +19.5'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   ---
005 (T)  +20.0'C (+00)     NC       NC      NC       NC     255(0) +60.5'C   ---
006 (T)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   ---
007 (T)  +24.0'C (+00)    031%      NC      NC       NC     255(0) -32.0'C   ---
OK

Testing the PID filter via the Brain(+) CLI console

When your installation has Master Firmware V1.0.135 (or higher) and HVAC firmware V6.0.10 (or higher), the calculated PID parameters of the HVAC module can also be displayed on the CLI console. To enable debugging, use following instruction:

pid debug on

When a PID filter is enabled (when disabled, nothing will be displayed) on 1 of the connected HVAC modules, following will appear on the console (example):

17:51:15 084.075.215.000 pid:0 En:1(H) sensor:19.0(3) setpt:22.5 Err:7 P:49 I:0 D:0 Drive=49 Out=49(0)

Explanation:

  • 17:51:15 -> Time
  • 084.075.215.000 -> ID of the HVAC module (important when more then 1 HVAC module is connected)
  • pid:0 -> PID 0 of the HVAC module is used
  • En:1(H) -> Module is enabled (=1) and PÏD filter is in Heating(H) mode. Cooling(C) is also possible
  • sensor:19:0(3) -> Sensor is measuring 19.0 degree celsius en Sensor (3) of this HVAC module is used for this PID filter
  • sept:22.5 -> The thermostat setpoint is now set at 22.5 degree Celsius
  • Err: 7 -> The calculated PID error is 7
  • P:49 -> The calculated P result is 49
  • I:0 -> The calculated I result is 0
  • D:0 -> The calculated D result is 0
  • Drive=49 -> The calculated PID drive (P+I+D) is 49
  • Out=49(0) -> Analog output (0) will be driven with value 49 (0-255)

When the display rate of the debug information is not high enough, the sampling frequency of the HVAC module can be increased by using eeprom memory location 0/4. For example, increase the speed to display every 8 seconds the PID information:

eeprom write 0 4 10
eeprom activate

Testing the HVAC Relays

The HVAC module has 6 built-in relays that can be controlled by the Master processor. All below instruction are performed on the Brain(+) CLI (directly or via Maintenance mode).

First perform an "error list" or "el":

el
--- Total Uptime: 000495 Hours, Last Startup: 17:04:19 09/01/22   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 28'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.121       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
 01 (O H 008->015) 079.001.126.000 00000   GOOD       (000)  0
 02 (O E 016->023) 079.250.088.000 00047   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (I E 008->015) 073.017.243.000 00000   GOOD       (016)  1
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (T H 000->007) 084.001.126.000 00000   GOOD       (016)  0
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.051.255.000 00000   GOOD       (016)  1
OK

You see 3 outputs modules of following type

  • "l" -> Open Collector
  • "O" -> Output Relay module

Following subtypes can be found:

  • "I" -> Internal module. The Open Collector outputs are built-in in the Brain.
  • "H" -> HVAC module, external module.
  • "E" -> External OpenMotics Module. In this case, it's an external Output module.

You also see which outputs are linked to this module. For example, the HVAC module has output 8->15 linked so if we need to trigger one of the outputs of the HVAC module, we need to use this range.

For the HVAC module, only the first 6 outputs are used so in this example, output 8-13 are used.

Switching Output 8 ON:

on 8

Switching Output 8 OFF:

off 8

Overview of the outputs that are ON can be performed by instruction "output status on" or "oso":

oso
**Nr of Outputs ON: 004 (O-000/L-004)**
-Output-Dim-Timer--Type----Name---------
009 (O) 255 65535 ( off )
010 (O) 255 65535 ( off )
016 (O) 255 65535 ( off )
021 (O) 255 65535 ( off )
OK

Testing the 0-10V outputs

Firmware release V6.0.16 and higher also support the manual control of the 0-10V outputs. This manual control is only possible when the output is not used by one of the PID controllers.

First perform an "el" or "error list" to see that the HVAC emulated Dim Control module is present in the module list:

el
--- Total Uptime: 000340 Hours, Last Startup: 00:00:04 01/01/01   ---
--- Module Type: BRAIN+, RS485 mode: 0, Board: 32'C --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.143       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (o I 000->007) 111.000.000.000 00000   GOOD       (000)  1
 01 (o I 008->015) 111.000.000.001 00000   GOOD       (000)  1
 02 (l I 016->023) 108.000.000.002 00000   GOOD       (000)  1
 03 (d I 024->031) 100.000.000.003 00000   GOOD       (000)  1
 04 (O H 032->039) 079.002.192.000 00000   GOOD       (000)  0
 05 (D H 040->047) 068.002.192.000 00000   GOOD       (000)  0
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (T H 000->007) 084.002.192.000 00000   GOOD       (080)  0
OK

You can see that the Dim Control module (D H on line 5) is present ("D" of Dim Control module and "H" of HVAC module).

If you don't find the Dim Control module, perform following steps:

  • First check the firmware version of the HVAC module (must be V6.0.16 or higher)
firmware version
  • If the firmware version is OK, perform a search on the RS485 network:
module discover search
  • The HVAC module should be added now

If we look in the above "el", we see the HVAC Dim Control module on position 5 which represents output 40-47. We have 3 0-10V outputs so only output 40-42 can be used (setting the other outputs will have no effect on any output).

Manually setting a 0-10V output is only possible when the output is not used in an enabled PID controller. To check this, you can perform the following steps:

  • Check if PID0 Heating is enabled (See HVAC eeprom model byte 271):
eeprom read 79 2 192 0 271
271 -> 255
OK
  • Check if PID0 Cooling is enabled (byte 295):
eeprom read 79 2 192 0 295
295 -> 255
OK
  • Check if PID1 Heating is enabled (byte 319):
eeprom read 79 2 192 0 319
319 -> 255
OK
  • Check if PID1 Cooling is enabled (byte 343):
eeprom read 79 2 192 0 343
343 -> 255
OK
  • With the above results, none of the PID controllers are active thus the 0-10V outputs can be used manually (for example put output 42 @+/-5V):
on 42 127
  • Let's link this output (output 42 of the Master or output 2 of the HVAC module) to PID0:
eeprom write 79 2 192 0 257 2
OK
  • Note: When information is written to Eeprom byte 257 (Output PID0) or Eeprom byte 305 (Output PID1), the 3 0-10V outputs are always put @0V until the PID controller takes over or new information is written by the Master to 1 of the HVAC 0-10V outputs
  • Let's now enable the PID0 controller for heating and cooling:
eeprom write 79 2 192 0 271 2
OK
eeprom write 73 2 192 0 295 2
OK
  • Now that the PID0 controller is enabled, the output cannot be overwritten by using:
on 42 255
  • The above instruction will be accepted but will have no effect on the 0-10V output of the HVAC module.

Using the HVAC module via CLI

Displaying PID information

With the below instruction, you can switch on the PID debugging of the HVAC module.

pid debug on

When this instruction is enabled, the pid calculations happening on the HVAC module will be displayed on the CLI console

Setting the PID temperature setpoint and mode

With the instruction "thermostat setpoint write", the PID setpoint as well as the thermostat mode can be set. Mode:

  • Mode.BIT0=0: Thermostat is in Cooling mode
  • Mode.BIT0=1: Thermostat is in Heating mode

Let's put thermostat 8 at 25.0°C and in Heating mode:

thermostat setpoint write 8 25.0 1

To check the thermostat value and mode, using

sensor list
-Sensor---Temp (Offset)---Hum------Bright---CO2------VOC-----Dali--Setpoint--Th Mode--Name-----------
000 (s)  +21.0'C (+00)    054%      NC      NC       NC     255(0) -29.5'C   000
001 (s)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
002 (s)    NC    (+00)     NC       NC      NC       NC     255(0) +22.0'C   000
003 (s)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
004 (s)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
005 (s)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
006 (s)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
007 (s)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
008 (T)  +20.0'C (+00)     NC       NC      NC       NC     255(0) +25.0'C   000
009 (T)  +20.5'C (+00)     NC       NC      NC       NC     255(0) +22.0'C   001
010 (T)  +20.5'C (+00)     NC       NC      NC       NC     255(0) -31.5'C   000
011 (T)  +20.5'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
012 (T)  +20.0'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
013 (T)  +20.0'C (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
014 (T)    NC    (+00)     NC       NC      NC       NC     255(0) -32.0'C   000
015 (T)  +23.0'C (+00)    045%      NC      NC       NC     255(0) -32.0'C   000
OK