CTC Echo Zenit i550
Detaljer
Beskrivning
Detta skript är skapat för IMSE UltraBase30/IPX3
Bruksanvisning
.
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
% Skapad med Modbus Creator
% - OBS! Användaren ansvarar själv för att samma TYPID inte används flera gånger i samma apparat.
% TYPID 10000-19999 är för användardefinierade enheter
DEVICETYPE EchoZeniti550 NAMED "EchoZeniti550" TYPEID 10958 IS
PARAMETER
Id : "Adress" [""]INT;
V25 : "wRad sys1 adj" [" ºC"]DEC1;
PUBLIC
V1 : "Brine temp out" [""]DEC1;
V2 : "Brine temp in" [""]DEC1;
V3 : "Flow temp in" [""]DEC1;
V4 : "Outside temp" [""]DEC1;
V5 : "Flow temp out" [""]DEC1;
V6 : "High pressure" [""]DEC1;
V7 : "Low pressure" [""]DEC1;
V8 : "Charge pump value" ["%"]DEC1;
V9 : "Fan brine pump value" [""]DEC1;
V10 : "HPstatus" [""]; % 0 = Compressor_off_start_delay, 1 =Compressor_off_redy_to_start, 2 = Compressor_wait_until_flow, 3 = Comperssor_on_heating, 4 = Defrost_active, 5 = Comperssor_on_cooling, 6 = Compressor_off_blocked, 7 = Compressor_off_alarm, 8 = Function_test
V11 : "Compressor blocks" [""];
V12 : "Alarm1" [""];
V13 : "Alarm2" [""];
V14 : "Alarm3" [""];
V15 : "Alarm4" [""];
V16 : "Compressor operating hours" ["h"];
V18 : "energy heat counter" ["kWh"];
V20 : "Rad sys 1 heat water SP temp" [""]DEC1;
V21 : "Tank heat water SP" [""]DEC1;
V22 : "Holiday period" [""]INT;
V23 : "Hot water temp mode" [""]INT;
V24 : "Rad sys1 adj " [" ºC"]DEC1;
A1 : "Alarm Pump overload" [""]INT;
A2 : "Alarm System pump overload" [""]INT;
A3 : "Alarm Compressor overload" [""]INT;
A4 : "Alarm Risk of freezing" [""]INT;
A5 : "Alarm Low brine flow" [""]INT;
A6 : "Alarm Low brine temp" [""]INT;
A7 : "Alarm low pressure diff" [""]INT;
A8 : "Alarm sensor brine out" [""]INT;
A9 : "Alarm sensor brine in" [""]INT;
A10 : "Alarm sensor heat pump in" [""]INT;
A11 : "Alarm sensor outdoor" [""]INT;
A12 : "Alarm sensor heat pump out" [""]INT;
A13 : "Alarm sensor discharge" [""]INT;
A14 : "Alarm sensor suction gas" [""]INT;
A15 : "Alarm sensor high pressure" [""]INT;
A16 : "Alarm sensor low pressure" [""]INT;
A17 : "Alarm fan" [""]INT;
A18 : "Alarm 4 way valve" [""]INT;
A19 : "Alarm Compressor inverter" [""]INT;
A20 : "Alarm EVO off" [""]INT;
A21 : "Alarm Compressor high current" [""]INT;
A22 : "Alarm Compressor low current" [""]INT;
A23 : "Alarm Phase 1 missing" [""]INT;
A24 : "Alarm Phase 2 missing" [""]INT;
A25 : "Alarm Phase 3 missing" [""]INT;
A26 : "Alarm Phase sequence error" [""]INT;
A27 : "Alarm Communication error softstarter" [""]INT;
PRIVATE
count3;
count6;
tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM Read3 NAMED "Read 3" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(03); % Modbus kommando för att läsa register
DATA[2] <- RWORD(
IF(count3>23) THEN count3 := 0; ENDIF;
IF (count3=0) THEN tmp := 433;
ELSIF (count3=1) THEN tmp := 434;
ELSIF (count3=2) THEN tmp := 435;
ELSIF (count3=3) THEN tmp := 436;
ELSIF (count3=4) THEN tmp := 437;
ELSIF (count3=5) THEN tmp := 440;
ELSIF (count3=6) THEN tmp := 441;
ELSIF (count3=7) THEN tmp := 451;
ELSIF (count3=8) THEN tmp := 452;
ELSIF (count3=9) THEN tmp := 457;
ELSIF (count3=10) THEN tmp := 458;
ELSIF (count3=11) THEN tmp := 459;
ELSIF (count3=12) THEN tmp := 460;
ELSIF (count3=13) THEN tmp := 461;
ELSIF (count3=14) THEN tmp := 462;
ELSIF (count3=15) THEN tmp := 466;
ELSIF (count3=16) THEN tmp := 467;
ELSIF (count3=17) THEN tmp := 470;
ELSIF (count3=18) THEN tmp := 471;
ELSIF (count3=19) THEN tmp := 2025;
ELSIF (count3=20) THEN tmp := 2030;
ELSIF (count3=21) THEN tmp := 2889;
ELSIF (count3=22) THEN tmp := 2891;
ELSIF (count3=23) THEN tmp := 2904;
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(01);
ANSWER SIZE 7 DATA[0] = BYTE(Id);
DATA[1] = BYTE(03);
DATA[3] -> RWORD(
IF (count3=0) THEN IF (DATA>=32768) THEN V1:=(DATA-65536)/10; ELSE V1:=DATA/10; ENDIF;
ELSIF (count3=1) THEN IF (DATA>=32768) THEN V2:=(DATA-65536)/10; ELSE V2:=DATA/10; ENDIF;
ELSIF (count3=2) THEN IF (DATA>=32768) THEN V3:=(DATA-65536)/10; ELSE V3:=DATA/10; ENDIF;
ELSIF (count3=3) THEN IF (DATA>=32768) THEN V4:=(DATA-65536)/10; ELSE V4:=DATA/10; ENDIF;
ELSIF (count3=4) THEN IF (DATA>=32768) THEN V5:=(DATA-65536)/10; ELSE V5:=DATA/10; ENDIF;
ELSIF (count3=5) THEN V6 := DATA/10;
ELSIF (count3=6) THEN V7 := DATA/10;
ELSIF (count3=7) THEN V8 := DATA/10;
ELSIF (count3=8) THEN V9 := DATA/10;
ELSIF (count3=9) THEN V10 := DATA;
ELSIF (count3=10) THEN V11 := DATA;
ELSIF (count3=11) THEN V12 := DATA;
IF(V12 & 8) THEN A1:=1; ELSE A1:=0; ENDIF;
IF(V12 & 16) THEN A2:=1; ELSE A2:=0; ENDIF;
IF(V12 & 32) THEN A3:=1; ELSE A3:=0; ENDIF;
IF(V12 & 128) THEN A4:=1; ELSE A4:=0; ENDIF;
IF(V12 & 2048) THEN A5:=1; ELSE A5:=0; ENDIF;
IF(V12 & 4096) THEN A6:=1; ELSE A6:=0; ENDIF;
IF(V12 & 8192) THEN A7:=1; ELSE A7:=0; ENDIF;
ELSIF (count3=12) THEN V13 := DATA;
IF(V13 & 1) THEN A8:=1; ELSE A8:=0; ENDIF;
IF(V13 & 2) THEN A9:=1; ELSE A9:=0; ENDIF;
IF(V13 & 4) THEN A10:=1; ELSE A10:=0; ENDIF;
IF(V13 & 16) THEN A11:=1; ELSE A11:=0; ENDIF;
IF(V13 & 64) THEN A12:=1; ELSE A12:=0; ENDIF;
IF(V13 & 128) THEN A13:=1; ELSE A13:=0; ENDIF;
IF(V13 & 512) THEN A14:=1; ELSE A14:=0; ENDIF;
IF(V13 & 1024) THEN A15:=1; ELSE A15:=0; ENDIF;
IF(V13 & 2048) THEN A16:=1; ELSE A16:=0; ENDIF;
IF(V13 & 4096) THEN A17:=1; ELSE A17:=0; ENDIF;
IF(V13 & 32768) THEN A18:=1; ELSE A18:=0; ENDIF;
ELSIF (count3=13) THEN V14 := DATA;
IF(V14 & 1) THEN A19:=1; ELSE A19:=0; ENDIF;
IF(V14 & 8192) THEN A20:=1; ELSE A20:=0; ENDIF;
ELSIF (count3=14) THEN V15 := DATA;
IF(V15 & 1) THEN A21:=1; ELSE A21:=0; ENDIF;
IF(V15 & 2) THEN A22:=1; ELSE A22:=0; ENDIF;
IF(V15 & 4) THEN A23:=1; ELSE A23:=0; ENDIF;
IF(V15 & 8) THEN A24:=1; ELSE A24:=0; ENDIF;
IF(V15 & 16) THEN A25:=1; ELSE A25:=0; ENDIF;
IF(V15 & 32) THEN A26:=1; ELSE A26:=0; ENDIF;
IF(V15 & 64) THEN A27:=1; ELSE A27:=0; ENDIF;
ELSIF (count3=15) THEN V16 := DATA*1000;
ELSIF (count3=16) THEN V16 := V16 + DATA;
ELSIF (count3=17) THEN V18 := DATA*10000;
ELSIF (count3=18) THEN V18 := V18 + DATA;
ELSIF (count3=19) THEN V20 := DATA/10;
ELSIF (count3=20) THEN V21 := DATA/10;
ELSIF (count3=21) THEN V22 := DATA;
ELSIF (count3=22) THEN V23 := DATA;
ELSIF (count3=23) THEN IF (DATA>=32768) THEN V24:=(DATA-65536)/10; ELSE V24:=DATA/10; ENDIF;
ENDIF;
count3 := count3+1;
);
TIMEOUT 1000
END;
TELEGRAM WriteRegister NAMED "Write Register" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(06); % Modbus kommando för att skriva ett register
DATA[2] <- RWORD(
IF(count6>0) THEN count6 := 0; ENDIF;
IF (count6=0) THEN DATA := 2904;
ENDIF;
); % Register adress
DATA[4] <- RWORD(
IF (count6=0) THEN IF (V25<0) THEN DATA := ROUND((V25*10)+65536); ELSE DATA := ROUND(V25*10); ENDIF;
ENDIF;
count6 := count6+1;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = BYTE(06);
TIMEOUT 1000
END;
END;
% - OBS! Användaren ansvarar själv för att samma TYPID inte används flera gånger i samma apparat.
% TYPID 10000-19999 är för användardefinierade enheter
DEVICETYPE EchoZeniti550 NAMED "EchoZeniti550" TYPEID 10958 IS
PARAMETER
Id : "Adress" [""]INT;
V25 : "wRad sys1 adj" [" ºC"]DEC1;
PUBLIC
V1 : "Brine temp out" [""]DEC1;
V2 : "Brine temp in" [""]DEC1;
V3 : "Flow temp in" [""]DEC1;
V4 : "Outside temp" [""]DEC1;
V5 : "Flow temp out" [""]DEC1;
V6 : "High pressure" [""]DEC1;
V7 : "Low pressure" [""]DEC1;
V8 : "Charge pump value" ["%"]DEC1;
V9 : "Fan brine pump value" [""]DEC1;
V10 : "HPstatus" [""]; % 0 = Compressor_off_start_delay, 1 =Compressor_off_redy_to_start, 2 = Compressor_wait_until_flow, 3 = Comperssor_on_heating, 4 = Defrost_active, 5 = Comperssor_on_cooling, 6 = Compressor_off_blocked, 7 = Compressor_off_alarm, 8 = Function_test
V11 : "Compressor blocks" [""];
V12 : "Alarm1" [""];
V13 : "Alarm2" [""];
V14 : "Alarm3" [""];
V15 : "Alarm4" [""];
V16 : "Compressor operating hours" ["h"];
V18 : "energy heat counter" ["kWh"];
V20 : "Rad sys 1 heat water SP temp" [""]DEC1;
V21 : "Tank heat water SP" [""]DEC1;
V22 : "Holiday period" [""]INT;
V23 : "Hot water temp mode" [""]INT;
V24 : "Rad sys1 adj " [" ºC"]DEC1;
A1 : "Alarm Pump overload" [""]INT;
A2 : "Alarm System pump overload" [""]INT;
A3 : "Alarm Compressor overload" [""]INT;
A4 : "Alarm Risk of freezing" [""]INT;
A5 : "Alarm Low brine flow" [""]INT;
A6 : "Alarm Low brine temp" [""]INT;
A7 : "Alarm low pressure diff" [""]INT;
A8 : "Alarm sensor brine out" [""]INT;
A9 : "Alarm sensor brine in" [""]INT;
A10 : "Alarm sensor heat pump in" [""]INT;
A11 : "Alarm sensor outdoor" [""]INT;
A12 : "Alarm sensor heat pump out" [""]INT;
A13 : "Alarm sensor discharge" [""]INT;
A14 : "Alarm sensor suction gas" [""]INT;
A15 : "Alarm sensor high pressure" [""]INT;
A16 : "Alarm sensor low pressure" [""]INT;
A17 : "Alarm fan" [""]INT;
A18 : "Alarm 4 way valve" [""]INT;
A19 : "Alarm Compressor inverter" [""]INT;
A20 : "Alarm EVO off" [""]INT;
A21 : "Alarm Compressor high current" [""]INT;
A22 : "Alarm Compressor low current" [""]INT;
A23 : "Alarm Phase 1 missing" [""]INT;
A24 : "Alarm Phase 2 missing" [""]INT;
A25 : "Alarm Phase 3 missing" [""]INT;
A26 : "Alarm Phase sequence error" [""]INT;
A27 : "Alarm Communication error softstarter" [""]INT;
PRIVATE
count3;
count6;
tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM Read3 NAMED "Read 3" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(03); % Modbus kommando för att läsa register
DATA[2] <- RWORD(
IF(count3>23) THEN count3 := 0; ENDIF;
IF (count3=0) THEN tmp := 433;
ELSIF (count3=1) THEN tmp := 434;
ELSIF (count3=2) THEN tmp := 435;
ELSIF (count3=3) THEN tmp := 436;
ELSIF (count3=4) THEN tmp := 437;
ELSIF (count3=5) THEN tmp := 440;
ELSIF (count3=6) THEN tmp := 441;
ELSIF (count3=7) THEN tmp := 451;
ELSIF (count3=8) THEN tmp := 452;
ELSIF (count3=9) THEN tmp := 457;
ELSIF (count3=10) THEN tmp := 458;
ELSIF (count3=11) THEN tmp := 459;
ELSIF (count3=12) THEN tmp := 460;
ELSIF (count3=13) THEN tmp := 461;
ELSIF (count3=14) THEN tmp := 462;
ELSIF (count3=15) THEN tmp := 466;
ELSIF (count3=16) THEN tmp := 467;
ELSIF (count3=17) THEN tmp := 470;
ELSIF (count3=18) THEN tmp := 471;
ELSIF (count3=19) THEN tmp := 2025;
ELSIF (count3=20) THEN tmp := 2030;
ELSIF (count3=21) THEN tmp := 2889;
ELSIF (count3=22) THEN tmp := 2891;
ELSIF (count3=23) THEN tmp := 2904;
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(01);
ANSWER SIZE 7 DATA[0] = BYTE(Id);
DATA[1] = BYTE(03);
DATA[3] -> RWORD(
IF (count3=0) THEN IF (DATA>=32768) THEN V1:=(DATA-65536)/10; ELSE V1:=DATA/10; ENDIF;
ELSIF (count3=1) THEN IF (DATA>=32768) THEN V2:=(DATA-65536)/10; ELSE V2:=DATA/10; ENDIF;
ELSIF (count3=2) THEN IF (DATA>=32768) THEN V3:=(DATA-65536)/10; ELSE V3:=DATA/10; ENDIF;
ELSIF (count3=3) THEN IF (DATA>=32768) THEN V4:=(DATA-65536)/10; ELSE V4:=DATA/10; ENDIF;
ELSIF (count3=4) THEN IF (DATA>=32768) THEN V5:=(DATA-65536)/10; ELSE V5:=DATA/10; ENDIF;
ELSIF (count3=5) THEN V6 := DATA/10;
ELSIF (count3=6) THEN V7 := DATA/10;
ELSIF (count3=7) THEN V8 := DATA/10;
ELSIF (count3=8) THEN V9 := DATA/10;
ELSIF (count3=9) THEN V10 := DATA;
ELSIF (count3=10) THEN V11 := DATA;
ELSIF (count3=11) THEN V12 := DATA;
IF(V12 & 8) THEN A1:=1; ELSE A1:=0; ENDIF;
IF(V12 & 16) THEN A2:=1; ELSE A2:=0; ENDIF;
IF(V12 & 32) THEN A3:=1; ELSE A3:=0; ENDIF;
IF(V12 & 128) THEN A4:=1; ELSE A4:=0; ENDIF;
IF(V12 & 2048) THEN A5:=1; ELSE A5:=0; ENDIF;
IF(V12 & 4096) THEN A6:=1; ELSE A6:=0; ENDIF;
IF(V12 & 8192) THEN A7:=1; ELSE A7:=0; ENDIF;
ELSIF (count3=12) THEN V13 := DATA;
IF(V13 & 1) THEN A8:=1; ELSE A8:=0; ENDIF;
IF(V13 & 2) THEN A9:=1; ELSE A9:=0; ENDIF;
IF(V13 & 4) THEN A10:=1; ELSE A10:=0; ENDIF;
IF(V13 & 16) THEN A11:=1; ELSE A11:=0; ENDIF;
IF(V13 & 64) THEN A12:=1; ELSE A12:=0; ENDIF;
IF(V13 & 128) THEN A13:=1; ELSE A13:=0; ENDIF;
IF(V13 & 512) THEN A14:=1; ELSE A14:=0; ENDIF;
IF(V13 & 1024) THEN A15:=1; ELSE A15:=0; ENDIF;
IF(V13 & 2048) THEN A16:=1; ELSE A16:=0; ENDIF;
IF(V13 & 4096) THEN A17:=1; ELSE A17:=0; ENDIF;
IF(V13 & 32768) THEN A18:=1; ELSE A18:=0; ENDIF;
ELSIF (count3=13) THEN V14 := DATA;
IF(V14 & 1) THEN A19:=1; ELSE A19:=0; ENDIF;
IF(V14 & 8192) THEN A20:=1; ELSE A20:=0; ENDIF;
ELSIF (count3=14) THEN V15 := DATA;
IF(V15 & 1) THEN A21:=1; ELSE A21:=0; ENDIF;
IF(V15 & 2) THEN A22:=1; ELSE A22:=0; ENDIF;
IF(V15 & 4) THEN A23:=1; ELSE A23:=0; ENDIF;
IF(V15 & 8) THEN A24:=1; ELSE A24:=0; ENDIF;
IF(V15 & 16) THEN A25:=1; ELSE A25:=0; ENDIF;
IF(V15 & 32) THEN A26:=1; ELSE A26:=0; ENDIF;
IF(V15 & 64) THEN A27:=1; ELSE A27:=0; ENDIF;
ELSIF (count3=15) THEN V16 := DATA*1000;
ELSIF (count3=16) THEN V16 := V16 + DATA;
ELSIF (count3=17) THEN V18 := DATA*10000;
ELSIF (count3=18) THEN V18 := V18 + DATA;
ELSIF (count3=19) THEN V20 := DATA/10;
ELSIF (count3=20) THEN V21 := DATA/10;
ELSIF (count3=21) THEN V22 := DATA;
ELSIF (count3=22) THEN V23 := DATA;
ELSIF (count3=23) THEN IF (DATA>=32768) THEN V24:=(DATA-65536)/10; ELSE V24:=DATA/10; ENDIF;
ENDIF;
count3 := count3+1;
);
TIMEOUT 1000
END;
TELEGRAM WriteRegister NAMED "Write Register" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(06); % Modbus kommando för att skriva ett register
DATA[2] <- RWORD(
IF(count6>0) THEN count6 := 0; ENDIF;
IF (count6=0) THEN DATA := 2904;
ENDIF;
); % Register adress
DATA[4] <- RWORD(
IF (count6=0) THEN IF (V25<0) THEN DATA := ROUND((V25*10)+65536); ELSE DATA := ROUND(V25*10); ENDIF;
ENDIF;
count6 := count6+1;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = BYTE(06);
TIMEOUT 1000
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.