ExampleRoomAutomation (FB)

FUNCTION_BLOCK ExampleRoomAutomation

Example room automation

This example function block implements a very simple room temperature control using a fan coil to demonstrate:

  • how to implement a complex control strategy in CFC using CODESYS Building Automation library function blocks

  • how to use certain room automation related function blocks

  • how to use SequenceControl

This example involves following real world application aspects:

  • presence controlled energy level

  • room temperature control using a fan coil Fancoil3Stage

  • energy optimization (night cooling, energy lock, summer compensation)

  • fast heat / cool at “pre-comfort”

  • window alarm

Watch out for comments in the implementation where those aspects are covered.

../../../_images/ExampleRoomAutomation.png
  1. outdoor air temperatur sensor

  2. room control panel including indoor air temperatur sensor, manual control elements (presence, temperature setpoint, fan speed)

  3. presence sensor

  4. fan coil (4-pipe system)

  5. window actuator

  6. window contact

Air types

Air types - terms, abbreviations and colors oriented towards DIN EN 16798-3 - see ExampleAirConditioning1.

Presence controlled energy level

In this example energy level is selected by local information - presence information from room control panel and presence sensor. More complex scenarios might involve using a “pre-comfort” energy level controlled by building managment system / room occupancy control system. To keep the example simple, xPrecomfort := TRUE does switch the energy level from “economy” to “pre-comfort”, but doesnt effect an active energy level “comfort”. Dealing with “pre-comfort” is a bit more complex in real world applications.

Night cooling

Cooling down the room using cooler outdoor air is done using HeatCoolUsingOutdoorAir.

Energy lock

The energy lock function prevents energy consumption if window is opened. Nevertheless building protection is taken care for running the sequence controller with the related building protection setpoints. In case control actions are executed and energy is spent xBuildingProtectionActive is signalling this. The energy lock does imply an on-delay, so window needs to be open for tEnergyLockOnDelay before building protection setpoints are used. Also there is a tEnergyLockMaxTime limiting the duration of the energy lock function.

Sommer compensation

Sommer compensation is done shifting the setpoints (in “comfort” energy level only) using a CommandVariable to adjust setpoints.

Fast heat / cool

Fast heat / cool is about to bring a room the “comfort” conditions during “pre-comfort” mode because a switch to “comfort” is going to happen soon. Common use case - hotel receptionist does a checkin procedure, starting fast heat / cool right away.

Window alarm

Window alarm is signalled, if room is not occupied, window contact is signalling open window and night cooling does not open the window.

Manual fan control

Manual fan control can be done via room control panel if room is occupied.

Hints

Unused pins of function block instances are hidden, so refer to the function block documentation for more details.

Caveats

To keep complexity as low as possible this example omits the following real world application aspects worth mentioning:

  • configuration missing (configuration of m_energyLevelSetpoint, m_sequenceControl etc. is not exposed on the ExampleAirConditioning1 VAR_INPUT section)

  • input consistency checks (implausible measurement values, …)

  • simplistic energy level selection - usually their is more complex state machinery in room control panel / building managment system / room occupancy control system

  • “pre-comfort” energy level controlled by building managment system / room occupancy control system

  • xError / eErrorID not computed from xError / eErrorID of function block instances used, see ExampleAirConditioning2 how to do this

  • sensor / actuator process I/O not mapped (FB sensor inputs, m_windowActuator, m_valveHeat, m_valveCool, m_condensatePump, …)

InOut:

Scope

Name

Type

Initial

Comment

Input

xEnable

BOOL

TRUE

Enable

xPresenceSetting

BOOL

TRUE

Presence signalled by room control panel

rIdaTemp

REAL

22.0

Indoor air temperature signalled by room control panel

usiFanStageManual

USINT (0..3)

0

Fan speed manual control requested by room control panel - 0 => off, or stage 1 .. 3

xFanStageManual

BOOL

FALSE

Fan speed manual manual control requested by room control panel.

xPrecomfort

BOOL

FALSE

Enables the “pre-comfort” energy level.

xFastHeatCool

BOOL

FALSE

Enables the fast heat / cool mode.

xPresence

BOOL

TRUE

Presence signalled by presence sensor

rOdaTemp

REAL

10.0

Outdoor air temperature

xWindowOpen

BOOL

FALSE

Window contact signalling open window.

xNightCooling

BOOL

FALSE

Enable night cooling

xEnergyLock

BOOL

FALSE

Enable energy lock

tEnergyLockOnDelay

TIME

TIME#10s0ms

Energy lock on-delay

tEnergyLockMaxTime

TIME

TIME#10m0s0ms

Energy lock maximum duration

xSummerCompensation

BOOL

FALSE

Enable summer compensation

xReset

BOOL

FALSE

Reset

itfDateTimeProvider

Util.IDateTimeProvider

Globals.g_dtpDateTimeProvider

Source for the current date and time information in milliseconds since 1.1.1970 00:00:00.000

Output

eLevel

EnergyLevel

Energy level

eMode

HeatCoolOperationMode

Operation mode.

xWindowAlarm

BOOL

Window alarm

xBuildingProtectionActive

BOOL

There are control actions / energy consumption to keep indoor air temperature in the building protection setpoint range.