Air-Site Greenmaster luftbehandlingsaggregat

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
4
Uppdaterad
2013-08-15
Skapad
2013-04-07
Kategori
Modbus, Ventilation
Visningar
4229

Beskrivning

begränsad drivrutin

Bruksanvisning

För att start/Stop ska fungera så måste ”remote on/off” tillåtas genom att via
setup-dff:en konfigurera detta under flik 3 ”System Config” och ”Start/Stop Control”-rutan.
Klicka i så att det står ”Use Remote Control”.

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

DEVICETYPE GreenmasterIn NAMED "Greenmaster Läs Input" TYPEID 21330 IS
 PARAMETER
  Id       : "Adress";
 PUBLIC
  V0 : "Verkningsgrad 1" ["%"]; % Beräknad verkningsgrad Alt 1 (GT11-GT31)/(GT41-GT31). 
  V1 : "GF41" ["Pa"]; % Tryck vid =TF
  V2 : "GF41 Flöde" ["l/s"]; % Framräknat flöde via TF (ärvärde vid flödesreglering)
  V3 : "GF42" ["Pa"]; % Tryck vid FF
  V4 : "GF42 Flöde" ["l/s"]; % Framräknat flöde vid FF (ärvärde vid flödesreglering)
  V5 : "GT11 Temp tilluft" ["°C"]DEC1;
  V6 : "GT41 Temp före vvx" ["°C"]DEC1;
  V7 : "GP11 Tilluft" ["Pa"]; % Tryck Tillyft
  V8 : "GP12 Frånluft" ["Pa"]; % Tryck frånluft
  V9 : "Styrvärde TF" ["%"]; % Styrvärde TF tilluftsfläkt (0-4096 motsv 0-100%))
  V10 : "Styrvärde FF" ["%"]; % Styrvärde FF frånluftsfläkt (0-4096 motsv 0-100%)
  V11 : "GT31 Utetemp" ["°C"]DEC1; % Utetemperatur från DUC, kopplas till kanal
  V12 : "Läst Bör GT11" ["°C"]DEC1; % Temperaturbörvärde för GT11
  V13 : "Läst Bör GP11" ["Pa"]; % Tryckbörvärde för GP11 (tryckreglering)
  V14 : "Läst Bör GF41" ["l/s"]; % Flödesbörvärde för GF41 (flödesreglering)
  V15 : "Läst Bör GP12" ["Pa"]; % Tryckbörvärde för GP12 (tryckreglering)
  V16 : "Läst Bör GF42" ["l/s"]; % Flödesbörvärde för GF42 (flödesreglering)
  V17 : "StartStopp"; % 1 är start och 0 är stopp  
 PRIVATE
  cnt;
 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;
 TELEGRAM ReadInput NAMED "Read input" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(03); % Modbus kommando för att läsa input
   DATA[2] := RWORD(20); % Start address
   DATA[4] := RWORD(31); % Number of registers to read
  ANSWER SIZE 67 % (Number of registers * 2) + 5
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(03);
   DATA[2] = BYTE(62); % Byte count
   DATA[3] -> RWORD(V0 := DATA;);
   DATA[27] -> RWORD(IF (DATA>=32768) THEN V1:=(DATA-65536); ELSE V1:=DATA; ENDIF;);
   DATA[29] -> RWORD(V2 := DATA;);
   DATA[32] -> RWORD(IF (DATA>=32768) THEN V3:=(DATA-65536); ELSE V3:=DATA; ENDIF;);
   DATA[33] -> RWORD(V4 := DATA;);
   DATA[35] -> RWORD(IF (DATA>=32768) THEN V5:=(DATA-65536)/10; ELSE V5:=DATA/10; ENDIF;);
   DATA[39] -> RWORD(IF (DATA>=32768) THEN V6:=(DATA-65536)/10; ELSE V6:=DATA/10; ENDIF;
   %V5 := V6 - 4; % Fix för trasig GT11. Använder GT41 som GT11 värde. Ta bort den här raden när det är fixat
   );
   DATA[43] -> RWORD(IF (DATA>=32768) THEN V7:=(DATA-65536); ELSE V7:=DATA; ENDIF;);
   DATA[45] -> RWORD(IF (DATA>=32768) THEN V8:=(DATA-65536); ELSE V8:=DATA; ENDIF;);
   DATA[61] -> RWORD(V9 := ROUND((DATA/4096)*100););
   DATA[63] -> RWORD(V10 := ROUND((DATA/4096)*100););
  TIMEOUT 500
 END;
  TELEGRAM ReadSetpoints NAMED "Read Börvärden" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(03); % Modbus kommando för att läsa input
   DATA[2] <- RWORD(
    IF cnt > 6 THEN cnt := 0; ENDIF;
    IF (cnt = 0) THEN DATA := 7; %; GT31 Utetemp
    ELSIF (cnt = 1) THEN DATA := 560; %561; Läst Bör GT11
    ELSIF (cnt = 2) THEN DATA := 608; %609; Läst Bör GP11
    ELSIF (cnt = 3) THEN DATA := 609; % 616; Läst Bör GF41
    ELSIF (cnt = 4) THEN DATA := 615;% 610; Läst Bör GP12
    ELSIF (cnt = 5) THEN DATA := 616; % 617; Läst Bör GF42
    ELSIF (cnt = 6) THEN DATA := 3;  % 32772
    ENDIF;); % Start address
   DATA[4] := RWORD(1); % Number of registers to read
  ANSWER SIZE 7 % (Number of registers * 2) + 5
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(03);
   DATA[2] = BYTE(2); % Byte count
   DATA[3] -> RWORD(
    IF cnt = 0 THEN IF (DATA>=32768) THEN V11:=(DATA-65536)/10; ELSE V11:=DATA/10; ENDIF;
    ELSIF cnt = 1 THEN  IF (DATA>=32768) THEN V12:=(DATA-65536)/10; ELSE V12:=DATA/10; ENDIF;% V12 := DATA;
    ELSIF cnt = 2 THEN V13 := DATA;
    ELSIF cnt = 3 THEN V14 := DATA;
    ELSIF cnt = 4 THEN V15 := DATA;
    ELSIF cnt = 5 THEN V16 := DATA;
    ELSIF cnt = 6 THEN V17 := DATA;
    ENDIF;
    cnt := cnt + 1;
    );
  TIMEOUT 500
 END;

END;


DEVICETYPE GreenmasterUT NAMED "Greenmaster Skriv" TYPEID 21331 IS
 PARAMETER
  Id       : "Adress";
  V0 : "StartStopp"; % Skriv 1 för start och 0 för stopp
  V1 : "Skriv GT31 Utetemp" ["°C"]DEC1; % Utetemperatur från DUC, kopplas till kanal
  V2 : "Skriv Bör GT11" ["°C"]DEC1; % Temperaturbörvärde för GT11
  V3 : "Skriv Bör GP11" ["Pa"]; % Tryckbörvärde för GP11 (tryckreglering)
  %V4 : "Bör GF41" ["l/s"]; % Flödesbörvärde för GF41 (flödesreglering)
  V5 : "Skriv Bör GP12" ["Pa"]; % Tryckbörvärde för GP12 (tryckreglering)
  %V6 : "Bör GF42" ["l/s"]; % Flödesbörvärde för GF42 (flödesreglering)
 PUBLIC
  
 
 PRIVATE
  cnt;
 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;
 TELEGRAM WriteInput NAMED "Write input" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(06); % Modbus kommando för att skriva
   DATA[2] <- RWORD(
    IF cnt > 3 THEN cnt := 0; ENDIF;
    IF cnt = 0 THEN DATA := 164; %164
    ELSIF cnt = 1 THEN DATA := 37; %37
    ELSIF cnt = 2 THEN DATA := 43; %43
    %ELSIF cnt = 4 THEN DATA := 610;
    ELSIF cnt = 3 THEN DATA := 44; %44
    %ELSIF cnt = 5 THEN DATA := 617;
    ENDIF;
   ); % Start address
   DATA[4] <- RWORD(    
    IF cnt = 0 THEN DATA := (30000 + ROUND(V1 * 10));
    ELSIF cnt = 1 THEN DATA := (30000 + ROUND(V2 * 10));
    ELSIF cnt = 2 THEN DATA := 30000 + ROUND(V3);
    %ELSIF cnt = 4 THEN DATA := V4;
    ELSIF cnt = 3 THEN DATA := 30000 + ROUND(V5);
    %ELSIF cnt = 5 THEN DATA := V6;
    ENDIF;
    cnt := cnt + 1;
  );
  ANSWER SIZE 8
   DATA[0] = BYTE(Id);
   DATA[1] = HEX(06);
  TIMEOUT 500
 END;
 TELEGRAM StartStop NAMED "StartStop" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(06); % Modbus kommando för att skriva
   DATA[2] := RWORD(3); % Start address (32772)
   DATA[4] <- RWORD(DATA := V0;);
  ANSWER SIZE 8
   DATA[0] = BYTE(Id);
   DATA[1] = HEX(06);
  TIMEOUT 500
 END;
END;

DEVICETYPE GreenmasterAL NAMED "Greenmaster Läs Larm" TYPEID 21332 IS
 PARAMETER
  Id       : "Adress";
 PUBLIC
  A1 : "Brand"; % Brandlarm (via DI eller hög temp frånluft)
  A2 : "Säkringslarm"; % Utlöst säkring (via DI3)
  A3 : "GT11 larm"; % Avvikelselarm GT11 börvärde
  A4 : "GP11 larm"; % Avvikelselarm GP11 börvärde
  A5 : "GP12 larm"; % Avvikelselarm GP12 börvärde
  A6 : "TF larm"; % Fläktlarm TF
  A7 : "FF larm"; % Fläktlarm FF
  A8 : "VVX larm 1"; % Låg verkningsgrad VVX
  A9 : "VVX larm 2"; % Tryckvakt GP9 (frysvakt) skall inte återställas förrän efter en viss tid eftersom agg har gått över i en speciell arbetsmod (ST21 stänger och ST23 öppnar) för att bli av med frosten. Nollst av larmet gör att aggr återgår i normal drift.
  A10 : "GP71 larm"; % Filtervakt
  A11 : "GP72 larm"; % Filtervakt
 PRIVATE
 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;
 TELEGRAM ReadInputs NAMED "Read input" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(02); % Modbus kommando för att läsa coils
   DATA[2] := RWORD(400); % Start address
   DATA[4] := RWORD(13); % Number of registers to read
  ANSWER SIZE 7 % ((Number of inputs / 8) + (Rest>0)) + 5
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(02);
   DATA[2] = BYTE(2); % Byte count
   DATA[3]  -> BYTE(
     IF (DATA & 1)   THEN A1 := 1; ELSE A1 := 0; ENDIF;
     IF (DATA & 8)   THEN A2 := 1; ELSE A2 := 0; ENDIF;
     IF (DATA & 16)  THEN A3 := 1; ELSE A3 := 0; ENDIF;
     IF (DATA & 32)  THEN A4 := 1; ELSE A4 := 0; ENDIF;
     IF (DATA & 64)  THEN A5 := 1; ELSE A5 := 0; ENDIF;
     IF (DATA & 128) THEN A6 := 1; ELSE A6 := 0; ENDIF;
   );
   DATA[4]  -> BYTE(
     IF (DATA & 1)   THEN A7 := 1; ELSE A7 := 0; ENDIF;
     IF (DATA & 2)   THEN A8 := 1; ELSE A8 := 0; ENDIF;
     IF (DATA & 4)   THEN A9 := 1; ELSE A9 := 0; ENDIF;
     IF (DATA & 8)   THEN A10 := 1; ELSE A10 := 0; ENDIF;
     IF (DATA & 16)  THEN A11 := 1; ELSE A11 := 0; ENDIF;
   );   
  TIMEOUT 500
 END;
END;

DEVICETYPE GreenmasterACK NAMED "Greenmaster Kvittera Larm" TYPEID 21333 IS
 PARAMETER
  Id : "Adress";
 PUBLIC
  % A1 : "Ack Brand"; % Brandlarm (via DI eller hög temp frånluft)
  A2 : "Ack Säkringslarm"; % Utlöst säkring (via DI3)
  A3 : "Ack GT11 larm"; % Avvikelselarm GT11 börvärde
  A4 : "Ack GP11 larm"; % Avvikelselarm GP11 börvärde
  A5 : "Ack GP12 larm"; % Avvikelselarm GP12 börvärde
  A6 : "Ack TF larm"; % Fläktlarm TF
  A7 : "FF larm"; % Fläktlarm FF
  A8 : "Ack VVX larm 1"; % Låg verkningsgrad VVX
  A9 : "Ack GP72 larm"; % Filtervakt
  A10 : "Ack GP71 larm"; % Filtervakt
  %A11 : "Ack VVX larm 2"; % Tryckvakt GP9 (frysvakt) skall inte återställas förrän efter en viss tid eftersom agg har gått över i en speciell arbetsmod (ST21 stänger och ST23 öppnar) för att bli av med frosten. Nollst av larmet gör att aggr återgår i normal drift.

 PRIVATE
  cnt;
 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;
 TELEGRAM AckAlarm NAMED "Kvittera larm" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(05); % Modbus kommando för att skriva
   DATA[2] <- RWORD(
    IF cnt > 8 THEN cnt := 0; ENDIF;
    IF cnt = 0 THEN DATA := 436;
    ELSIF cnt = 1 THEN DATA := 437;
    ELSIF cnt = 2 THEN DATA := 438;
    ELSIF cnt = 3 THEN DATA := 439;
    ELSIF cnt = 4 THEN DATA := 440;
    ELSIF cnt = 5 THEN DATA := 441;
    ELSIF cnt = 6 THEN DATA := 442;
    ELSIF cnt = 7 THEN DATA := 443;
    ELSIF cnt = 8 THEN DATA := 444;
    %ELSIF cnt = 9 THEN DATA := 445;
    ENDIF;
   ); % Start address
   DATA[4] <- RWORD(    
    IF cnt = 0 THEN IF A2= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 1 THEN IF A3= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 2 THEN IF A4= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 3 THEN IF A5= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 4 THEN IF A6= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 5 THEN IF A7= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 6 THEN IF A8= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 7 THEN IF A9= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ELSIF cnt = 8 THEN IF A10= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    %ELSIF cnt = 9 THEN IF A11= 0 THEN DATA := 0; ELSE DATA := 1; ENDIF;
    ENDIF;
    cnt := cnt + 1;
  );
  ANSWER SIZE 8
   DATA[0] = BYTE(Id);
   DATA[1] = HEX(06);
  TIMEOUT 500
 END;
END;
DEVICETYPE GreenmasterStatus NAMED "GreenmasterStatus" TYPEID 10109 IS
 PARAMETER
  Id       : "Adress";
 PUBLIC
  S1 : "StartStopStatus"; % 1 om aggregatet är stoppat tex från knappsatsen
 PRIVATE
 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;
 TELEGRAM ReadInputs NAMED "Read input" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(01); % Modbus kommando för att läsa status
   DATA[2] := RWORD(33); % Start address
   DATA[4] := RWORD(1); % Number of registers to read
  ANSWER SIZE 6 % ((Number of inputs / 8) + (Rest>0)) + 5
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(01);
   DATA[2] = BYTE(1); % Byte count
   DATA[3]  -> BYTE(
     IF (DATA & 1)   THEN S1 := 1; ELSE S1 := 0; ENDIF;
   );
  TIMEOUT 500
 END;
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.