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
- 4645
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;
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.