DesignBuilder-logo

Connexion

Script de modulation Débit de ventilation mécanique selon CO2 en CVC Détaillé

Publié dans Script EMS

Le script EMS ci-dessous permet de moduler le débit de soufflage d'une zone selon sa concentration en CO2 et des paramètres min/max de concentration et de % de débit.

Cela permet d'obtenir un comportement VAV sur CO2 en CVC Détaillé en utilisant une CTA VAC (remarque technique : E+ ne permet pas de contrôler une bouche VAV).

 

Version : 6.1

Préquis : Module Script

Script :

! Ce programme nécessite :
! - Cocher le contrôle du CO2 au niveau Site > Détail du site
! - Utiliser le CVC Détaillé
! - Utiliser une CTA VAC uniquement

! Description du programme
! Il module le débit d'air dans chaque zone selon la concentration en ppm du CO2.
! Le débit d'air varie entre un minimum (fraction à saisir ci-dessous) et 100%.
! La concentration min et max de CO2 de l'onglet Activité de chaque zone sont réutilisées pour :
! * décider lorsque le débit est à son min
! * définir la pente de la droite de modulation du débit

! A noter
! Le code suivant crée ce mécanisme pour toute zone occupée. Vous devez filtrer les zones sur leur nom ou prédéfinition (voir Aide DesignBuilder) pour éviter de générer ce code sur des zones non raccordées à la centrale d'air.

! Modifications à faire dans le code ci-dessous
! Changer par le nom exact de l'objet du schéma CVC détaillé :
! > Dans la CTA les deux ventilateurs : DISTRIBUTION AIR CTA VENTILATEUR SOUFFLAGE et DISTRIBUTION AIR CTA VENTILATEUR EXTRACTION
! > Changer la fraction minimale du débit d'air

<ForAllOccupiedZones>
EnergyManagementSystem:Sensor,
<LoopZoneVariableName>_ConcentrationCO2Air,
<LoopZoneIDFName>,
Zone Air CO2 Concentration;

EnergyManagementSystem:Actuator,
<LoopZoneVariableName>_BoucheDebitMassique,
<LoopZoneIDFName> SIMPLE FLUX VAC SANS RéCHAUFFAGE,
AirTerminal:SingleDuct:ConstantVolume:NoReheat,
Mass Flow Rate;

EnergyManagementSystem:InternalVariable,
<LoopZoneVariableName>_BoucheDebitMax,
<LoopZoneIDFName> SIMPLE FLUX VAC SANS RéCHAUFFAGE,
AirTerminal:SingleDuct:ConstantVolume:NoReheat Maximum Mass Flow Rate;
<LoopNextZone>

! Nom à changer
EnergyManagementSystem:Actuator,
Fan_Air_Mass_Flow_Rate_DISTRIBUTION_AIR_CTA_VENTILATEUR_SOUFFLAGE,
DISTRIBUTION AIR CTA VENTILATEUR SOUFFLAGE,
Fan,
Fan Air Mass Flow Rate;

! Nom à changer
EnergyManagementSystem:Actuator,
Fan_Air_Mass_Flow_Rate_DISTRIBUTION_AIR_CTA_VENTILATEUR_EXTRACTION,
DISTRIBUTION AIR CTA VENTILATEUR EXTRACTION,
Fan,
Fan Air Mass Flow Rate;

EnergyManagementSystem:ProgramCallingManager,
AppelControleVentilMecaCO2,
InsideHVACSystemIterationLoop,
ControleVentilMecaCO2;

EnergyManagementSystem:Program,
ControleVentilMecaCO2,

SET debitTotal = 0,

<ForAllOccupiedZones>
! CO2 dans la zone
SET ZoneCO2 = <LoopZoneVariableName>_ConcentrationCO2Air,
! Récupération concentration min CO2 de la zone (onglet Activité)
SET ZoneCO2Min = <LoopZoneAttribute CO2MinConcentration>,
! Fraction minimale du débit.
! A changer selon vos besoins.

SET FactZoneCO2Min = 0.3,

! Récupération concentration max CO2 de la zone (onglet Activité)
SET ZoneCO2Max = <LoopZoneAttribute CO2MaxConcentration>,
SET FactZoneCO2Max = 1,

IF ZoneCO2 <= ZoneCO2Min,
SET Fact = FactZoneCO2Min,
ELSEIF ZoneCO2 >= ZoneCO2Max,
SET Fact = FactZoneCO2Max,
ELSE,
SET pente = (FactZoneCO2Max - FactZoneCO2Min) / (ZoneCO2Max - ZoneCO2Min),
SET Cste = (FactZoneCO2Min + FactZoneCO2Max - pente * (ZoneCO2Min + ZoneCO2Max)) / 2,
SET Fact = pente * ZoneCO2 + Cste,
ENDIF,

SET <LoopZoneVariableName>_BoucheDebitMassique = Fact * <LoopZoneVariableName>_BoucheDebitMax,

SET debitTotal = debitTotal + <LoopZoneVariableName>_BoucheDebitMassique,

<LoopNextZone>

! Mise à jour des débits de la CTA
! Nom à remplacer par ceux des ventilateurs tel qu'ils apparaissent dans le schéma.
SET Fan_Air_Mass_Flow_Rate_DISTRIBUTION_AIR_CTA_VENTILATEUR_SOUFFLAGE = debitTotal,
SET Fan_Air_Mass_Flow_Rate_DISTRIBUTION_AIR_CTA_VENTILATEUR_SOUFFLAGE = debitTotal,
;

! extra outputs for viewing in the results viewer
<If BuildingAttribute HourlyOutput = 1 Then>
Output:Variable, *, Zone Air CO2 Concentration, hourly;
<Endif>
<If BuildingAttribute TimesteplyOutput = 1 Then>
Output:Variable, *, Zone Air CO2 Concentration, timestep;
<Endif>