RAGCom Kryotherm

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
2
Uppdaterad
2013-09-02
Skapad
2013-08-27
Kategori
AEACom, Kyla, Värme, Ventilation
Visningar
3578

Beskrivning

Drivrutin

Bruksanvisning

Hur man installerar typdefinitionerna och driftsätter modulerna finns beskrivet i användarmanualen, kapitel 18.7.

Juridisk information

Alla skript tillhandahålls i befintligt skick och all användning sker på eget ansvar. Felaktig använding kan leda till skadad eller förstörd utrustning.

Skript kod

AEACOM2 CONFIGURATION
  BAUDRATE 19200;
  SEGMENT LENGTH 200;
  SEGMENTS 64;
  CYCLE TIME 15;
  RESERVED SEGMENTS 0000 0000 0000 0000 0000 0000 0000 0000;
  TRANSMIT SEGMENTS 0000 0000 0000 0000 0000 0000 0000 0000;
  ACCEPT UNKNOWNS;
END;

AEADEVICE RAGCom NAMED "RAG-Com" TYPEID 4658 IS
  PARAMETER
    RAGGroup :"RAG Group";
    Buzz :"Beeper";
  PUBLIC
    PRAGGroup :"RAG Group";
    GT3 :"Room air temp" ["°C"];
    GT4 :"Floor air temp" ["°C"];
    Pot :"Set value displ." ["°C"]; %Börvärdesförskjutning
    Ref :"Set value" ["°C"]; %Börvärde
    Heat :"Heater"; %Status värmebatteri
    Reg :"Controller val."; %Regulatorvärde
    Gtime :"Damper motor" ["%"]; %Gångtid spjäll
  PRIVATE
    Fan;
    BaseRef;
    PotRange;
    PFakt;
    NoHeat;
    Hyst;
    HeatLim;
  MESSAGE MAXSIZE 34
      DATA[4] -> FLOAT(GT3 := ROUND(DATA*10)/10;);
      DATA[8] -> FLOAT(GT4 :=  ROUND(DATA*10)/10;);
      DATA[12] -> FLOAT(Pot :=  ROUND(DATA*10)/10;);
      DATA[16] -> FLOAT(Reg :=  ROUND(DATA*10)/10;);
      DATA[20] -> FLOAT(Gtime :=  ROUND(DATA););
      DATA[24] -> BYTE(Heat :=  ROUND(DATA););
  ACKNOWLEDGE
      DATA[0] := FLOAT(BaseRef); %Basbörvärde
      DATA[4] := FLOAT(PotRange); %Potentiometerförskjutning (maxgräns)
      DATA[8] := FLOAT(PFakt); %P-område
      DATA[12] := FLOAT(Hyst); %Hysteres
      DATA[16] := FLOAT(HeatLim); %Efterbehandlingsgränsvärde
      DATA[20] := BYTE(Fan); %Fläkthastighet
      DATA[21] := BYTE(Buzz); %Summeraktivering
      DATA[22] := BYTE(NoHeat); %Blockering av elvärme
END;

DEVICE
  DEV[1] TO DEV[60] AEACOM 4658 AUTOMATIC;
END;

GROUP RAGGroup0 OF MAX 60 AEACOM TYPEID 4658
  SELECT ONLINE RAGGroup < 2
  ITERATOR Update
  ALIAS
      rag_speed      = CHANNEL[159];
      BaseSetpoint   = PARAMETER[80];
      MaxSetPointAdj = PARAMETER[81];
      BlockHeater    = PARAMETER[82];
      PArea          = PARAMETER[83];
      Hysteresis     = PARAMETER[84];
      HeaterLimit    = PARAMETER[85];
  BEGIN
    PRAGGroup := RAGGroup;
    Fan := rag_speed;
    BaseRef := BaseSetpoint;
    PotRange := MaxSetPointAdj;
    PFakt := PArea;
    NoHeat := BlockHeater;
    Hyst := Hysteresis;
    HeatLim := HeaterLimit;
    Ref := BaseRef + Pot;
  END;
END;

GROUP RAGGroup1 OF MAX 60 AEACOM TYPEID 4658
  SELECT ONLINE RAGGroup = 2
  ITERATOR Update
  ALIAS
      rag_speed      = CHANNEL[159];
      BaseSetpoint   = PARAMETER[86];
      MaxSetPointAdj = PARAMETER[87];
      BlockHeater    = PARAMETER[88];
      PArea          = PARAMETER[89];
      Hysteresis     = PARAMETER[90];
      HeaterLimit    = PARAMETER[91];
  BEGIN
    PRAGGroup := RAGGroup;
    Fan := rag_speed;
    BaseRef := BaseSetpoint;
    PotRange := MaxSetPointAdj;
    PFakt := PArea;
    NoHeat := BlockHeater;
    Hyst := Hysteresis;
    HeatLim := HeaterLimit;
    Ref := BaseRef + Pot;
  END;
END;

GROUP RAGGroup2 OF MAX 60 AEACOM TYPEID 4658
  SELECT ONLINE RAGGroup = 3
  ITERATOR Update
  ALIAS
      rag_speed      = CHANNEL[159];
      BaseSetpoint   = PARAMETER[92];
      MaxSetPointAdj = PARAMETER[93];
      BlockHeater    = PARAMETER[94];
      PArea          = PARAMETER[95];
      Hysteresis     = PARAMETER[96];
      HeaterLimit    = PARAMETER[97];
  BEGIN
    PRAGGroup := RAGGroup;
    Fan := rag_speed;
    BaseRef := BaseSetpoint;
    PotRange := MaxSetPointAdj;
    PFakt := PArea;
    NoHeat := BlockHeater;
    Hyst := Hysteresis;
    HeatLim := HeaterLimit;
    Ref := BaseRef + Pot;
  END;
END;

% Added 061129 PW
GROUP RAGGroup3 OF MAX 60 AEACOM TYPEID 4658
  SELECT ONLINE RAGGroup > 3
  ITERATOR Update
  ALIAS
      damperMax      = PARAMETER[59]; % Max damper position
      za_st41        = CHANNEL[28];   % Supply Air Damper
      controlMode    = CHANNEL[85];   % Controler mode OFF (0), Comfort (1), Economy heating (2), Economy cooling (3)
      %rag_speed     = CHANNEL[159];
      BaseSetpoint   = PARAMETER[92];
      MaxSetPointAdj = PARAMETER[93];
      BlockHeater    = PARAMETER[94];
      PArea          = PARAMETER[95];
      Hysteresis     = PARAMETER[96];
      HeaterLimit    = PARAMETER[97];
  BEGIN
    PRAGGroup := RAGGroup;
    IF (controlMode = 1) AND (za_st41 > (damperMax-1)) THEN
      Fan := 2;
    ELSE
      Fan := 0;
    ENDIF;
    BaseRef := BaseSetpoint;
    PotRange := MaxSetPointAdj;
    PFakt := PArea;
    NoHeat := BlockHeater;
    Hyst := Hysteresis;
    HeatLim := HeaterLimit;
    Ref := BaseRef + Pot;
  END;
END;

GROUP AllRAG OF MAX 60 AEACOM TYPEID 4658
  SELECT ALL
  ITERATOR ChkAlarms
  ALIAS
    ComErrIndex  = CHANNEL[194];
    SensErrIndex = CHANNEL[195];

  BEGIN
    IF First = 1 THEN
      ComErrIndex <- 0;
      SensErrIndex <- 0;
    ENDIF;
    IF (Status = 1) AND (ComErrIndex = 0) THEN
      ComErrIndex <- DevIndex;
    ENDIF; 
    IF (SensErrIndex = 0) AND ((GT3 < 10) OR (GT3 > 40) OR (GT4 < 10) OR (GT4 > 40)) THEN
      SensErrIndex <- DevIndex; 
    ENDIF;
  END;
END;

ROUTINE RAGUpdate
ALIAS
      GR0_MeanGT3 = CHANNEL[160];
      GR0_MaxGT3  = CHANNEL[161];
      GR0_MinGT3  = CHANNEL[162];
      GR0_MeanErr = CHANNEL[163];
      GR0_MeanGT4 = CHANNEL[164];
      GR0_MaxGT4  = CHANNEL[165];
      GR0_MinGT4  = CHANNEL[166];
      GR0_Heaters = CHANNEL[167];
      GR0_MeanCtrlVal = CHANNEL[168];
      GR0_MeanDamperMotor = CHANNEL[169];
    
      GR1_MeanGT3 = CHANNEL[170];
      GR1_MaxGT3  = CHANNEL[171];
      GR1_MinGT3  = CHANNEL[172];
      GR1_MeanErr = CHANNEL[173];
      GR1_MeanGT4 = CHANNEL[174];
      GR1_MaxGT4  = CHANNEL[175];
      GR1_MinGT4  = CHANNEL[176];
      GR1_Heaters = CHANNEL[177];
      GR1_MeanCtrlVal = CHANNEL[178];
      GR1_MeanDamperMotor = CHANNEL[179];
    
      GR2_MeanGT3 = CHANNEL[180];
      GR2_MaxGT3  = CHANNEL[181];
      GR2_MinGT3  = CHANNEL[182];
      GR2_MeanErr = CHANNEL[183];
      GR2_MeanGT4 = CHANNEL[184];
      GR2_MaxGT4  = CHANNEL[185];
      GR2_MinGT4  = CHANNEL[186];
      GR2_Heaters = CHANNEL[187];
      GR2_MeanCtrlVal = CHANNEL[188];
      GR2_MeanDamperMotor = CHANNEL[189];
      
      GR0_RAGCount = CHANNEL[190];
      GR1_RAGCount = CHANNEL[191];
      GR2_RAGCount = CHANNEL[192];
      RAGCountTot  = CHANNEL[193];

      GR3_RAGCount = CHANNEL[196];
      
VAR
  Timer;
  RAGCount;
  LRAGCount;
  Event;
BEGIN
  RAGCount := RAGGroup0.COUNT + RAGGroup1.COUNT + RAGGroup2.COUNT;
  IF RAGCount > LRAGCount THEN Event := 1; ELSE Event := 0; ENDIF;
  LRAGCount := RAGCount;
  RAGCountTot <- RAGCount;
  GR0_RAGCount <- RAGGroup0.COUNT;
  GR1_RAGCount <- RAGGroup1.COUNT;
  GR2_RAGCount <- RAGGroup2.COUNT;
  GR3_RAGCount <- RAGGroup3.COUNT;

  CALL RAGGroup3.Update; % Added 061129 PW
  
  IF (Timer = 0) OR (Event = 1) THEN
    CALL RAGGroup0.Update;
  ELSIF (Timer = 1) OR (Event = 1) THEN
    CALL RAGGroup1.Update;
  ELSIF (Timer = 2) OR (Event = 1) THEN
    CALL RAGGroup2.Update;
  ELSIF Timer = 3 THEN
    GR0_MeanGT3 <- RAGGroup0.GT3.MEAN;
    GR0_MaxGT3 <- RAGGroup0.GT3.MAX;
    GR0_MinGT3 <- RAGGroup0.GT3.MIN;
    GR0_MeanGT4 <- RAGGroup0.GT4.MEAN;
    GR0_MaxGT4 <- RAGGroup0.GT4.MAX;
    GR0_MinGT4 <- RAGGroup0.GT4.MIN;

    GR0_MeanErr <- GR0_MeanGT3 - RAGGroup0.Ref.MEAN;
    GR0_Heaters <- RAGGroup0.Heat.MEAN * 50; %Heater is 0, 1 or 2, scaled to percent
    GR0_MeanCtrlVal <- RAGGroup0.Reg.MEAN;
    GR0_MeanDamperMotor <- RAGGroup0.Gtime.MEAN;
  ELSIF Timer = 4 THEN
    GR1_MeanGT3 <- RAGGroup1.GT3.MEAN;
    GR1_MaxGT3 <- RAGGroup1.GT3.MAX;
    GR1_MinGT3 <- RAGGroup1.GT3.MIN;
    GR1_MeanGT4 <- RAGGroup1.GT4.MEAN;
    GR1_MaxGT4 <- RAGGroup1.GT4.MAX;
    GR1_MinGT4 <- RAGGroup1.GT4.MIN;

    GR1_MeanErr <- GR1_MeanGT3 - RAGGroup1.Ref.MEAN;
    GR1_Heaters <- RAGGroup1.Heat.MEAN * 50; %Heater is 0, 1 or 2, scaled to percent
    GR1_MeanCtrlVal <- RAGGroup1.Reg.MEAN;
    GR1_MeanDamperMotor <- RAGGroup1.Gtime.MEAN;
  ELSIF Timer = 5 THEN
    GR2_MeanGT3 <- RAGGroup2.GT3.MEAN;
    GR2_MaxGT3 <- RAGGroup2.GT3.MAX;
    GR2_MinGT3 <- RAGGroup2.GT3.MIN;
    GR2_MeanGT4 <- RAGGroup2.GT4.MEAN;
    GR2_MaxGT4 <- RAGGroup2.GT4.MAX;
    GR2_MinGT4 <- RAGGroup2.GT4.MIN;

    GR2_MeanErr <- GR2_MeanGT3 - RAGGroup2.Ref.MEAN;
    GR2_Heaters <- RAGGroup2.Heat.MEAN * 50; %Heater is 0, 1 or 2, scaled to percent
    GR2_MeanCtrlVal <- RAGGroup2.Reg.MEAN;
    GR2_MeanDamperMotor <- RAGGroup2.Gtime.MEAN;
  ELSIF Timer = 6 THEN
    CALL AllRAG.ChkAlarms;
  ENDIF;
  
  Timer := Timer + 1;
  IF Timer > 6 THEN Timer := 0; ENDIF;
END;

Användarnas noteringar

Du måste vara inloggad för att göra en notering. Bli medlem eller logga in. Vi använder en moderator som godkänner noteringarna innan de visas.