Objective
Your task is to design a demand-controlled ventilation system in Niagara 4 (N4) using primitive logic blocks. The system must vary the supply fan speed based on CO₂ concentration and occupancy, ensuring good indoor air quality while minimizing energy consumption.
This challenge tests your ability to translate functional requirements into a reliable control strategy using Niagara’s primitive logic blocks. It simulates the type of workflow you’d encounter when implementing a DCV strategy in a building management system.
Instructions
Setup
- Inputs
CO2Sensor(numeric): Measured CO₂ level in parts per million (ppm).OccupancySensor(boolean): Indicates whether the space is occupied (true) or unoccupied (false).TimeSchedule(boolean): Active (true) during building operating hours.ManualOverride(boolean): Forces the fan to a user-defined speed.
- Parameters
CO2Setpoint(numeric): Desired maximum CO₂ level (e.g., 800 ppm).UnoccupiedFanSpeed(numeric): Minimum fan speed when unoccupied (e.g., 20%).OccupiedMinFanSpeed(numeric): Minimum fan speed when the zone is occupied (e.g., 50%).OccupiedMaxFanSpeed(numeric): Maximum fan speed when the zone is occupied (e.g., 100%).AlarmCO2Level(numeric): CO₂ level that triggers an alarm condition (e.g., 1200 ppm).OverrideFanSpeed(numeric): Fan speed to apply whenManualOverrideis true (e.g., 100%).
- Outputs
FanSpeed(numeric): The commanded fan speed (0–100%).HighCO2Alarm(boolean): Alarm indicator if CO₂ exceedsAlarmCO2Level.
Logic Requirements
- Occupied vs. Unoccupied Operation
- When
TimeScheduleis active andOccupancySensoristrue:- The fan speed must at least be
OccupiedMinFanSpeed. - As CO₂ approaches the
CO2Setpoint, the fan speed should increase proportionally, up toOccupiedMaxFanSpeed.
- The fan speed must at least be
- When
TimeScheduleis inactive orOccupancySensorisfalse:- The fan speed should revert to
UnoccupiedFanSpeed.
- The fan speed should revert to
- Proportional Control (Demand-Controlled Ventilation)
- If
CO2Sensoris belowCO2Setpoint, maintain the fan at the minimum speed for occupied mode (OccupiedMinFanSpeed). - If
CO2Sensorrises aboveCO2Setpoint, ramp up the fan speed linearly until it reachesOccupiedMaxFanSpeedat or above theAlarmCO2Level. - Use a deadband or hysteresis around the
CO2Setpointto avoid frequent adjustments in fan speed due to minor CO₂ fluctuations.
- Alarm Condition
- If
CO2SensorexceedsAlarmCO2Level, setHighCO2Alarmtotrue. - While in alarm, the fan should run at the maximum speed (
OccupiedMaxFanSpeed) if the system is in occupied mode. - Once
CO2Sensorfalls back below theAlarmCO2Levelminus a small deadband, clear the alarm.
- Manual Override
- If
ManualOverrideistrue, theFanSpeedshould be forced toOverrideFanSpeedregardless of CO₂ or occupancy conditions. - The manual override resets (returns to automatic control) at the start of the next active
TimeScheduleperiod.
- Fail-Safe / Minimum Constraints
- In all cases, ensure
FanSpeednever goes below 0% or above 100%. - Prevent rapid oscillations by applying a small delay or rate-limiting logic if necessary.
Tools
Leverage Niagara 4’s primitive logic blocks (comparators, numeric ranges, latches, hysteresis blocks, etc.) and methods such as:
- Comparators (Greater Than, Less Than) to evaluate CO₂ levels vs. setpoints.
- Math blocks (Add, Subtract, Multiply, Divide) for scaling or linear interpolation between
OccupiedMinFanSpeedandOccupiedMaxFanSpeed. - Hysteresis or Deadband blocks to prevent rapid toggling around the setpoint or alarm threshold.
- Boolean Logic blocks (And, Or, Not) to handle occupancy and scheduling conditions.
- Timer or Delay blocks (optional) to smooth out transitions if needed.
Testing
- CO₂ Ramping
- Gradually increase the
CO2Sensorvalue from well below the setpoint to above the alarm threshold. - Verify that the
FanSpeedtransitions from minimum to maximum appropriately. - Confirm that
HighCO2Alarmis set when crossingAlarmCO2Leveland cleared after falling below it (with deadband).
- Occupancy & Schedule
- Toggle
OccupancySensorbetweentrueandfalsewhileTimeScheduleis active. - Ensure the system moves from
UnoccupiedFanSpeedto at leastOccupiedMinFanSpeedwhen occupied, and vice versa. - Set
TimeScheduleinactive and confirm fan speed reverts toUnoccupiedFanSpeed.
- Manual Override
- Enable
ManualOverrideand verifyFanSpeedis forced toOverrideFanSpeed. - Simulate the next schedule period transition and confirm the system returns to normal automatic logic.
- Alarm Handling
- Drive
CO2Sensorabove theAlarmCO2Level. - Ensure
HighCO2Alarmis triggered andFanSpeedis atOccupiedMaxFanSpeed(if occupied). - Drop
CO2Sensorbelow the alarm threshold minus deadband; confirm alarm is cleared.
Submission
- File: Save and submit your completed Niagara 4 station (
.bogfile) as a reply to this post. - Documentation: Include a brief explanation of how your logic blocks interconnect and how they fulfill the requirements (hysteresis usage, manual override, scaling for fan speed, etc.).
Real-world conditions, hardware constraints, and site-specific guidelines may influence your actual implementation—this exercise is for educational purposes.
Good luck, and happy engineering!
