% 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 Flaktwoods_eQPrime NAMED "Fläktwoods eQ Prime" TYPEID 10000 IS PARAMETER Id : "Adress" INT; W15 : "wBMS tidstyrprogram steg/temp" ["Auto,Av,EkonSt1,EkonSt2,KomfSt2,EkonSt3,KomfSt3"]ENUM; W16 : "wKomfort värmebörvärde" ["°C"]DEC1; W17 : "wMin tillufttemperaturbörvärde" ["°C"]DEC1; W18 : "wMax tillufttemperaturbörvärde" ["°C"]DEC1; W19 : "wAktivera stödvärme" ["Av,På"]ENUM; W20 : "wUtetemperatur" ["°C"]DEC1; W21 : "wRumstemperatur" ["°C"]DEC1; W22 : "wStöddrift värme start" ["°C"]DEC1; W23 : "wStöddrift värme börvärde" ["°C"]DEC1; PUBLIC V1 : "Fläktlarm" [""]INT; V2 : "Frånluftfläktlarm" [""]INT; V3 : "Värmeåtervinningslarm" [""]INT; V4 : "Värmepumplarm" [""]INT; V5 : "Tilluftfilterlarm" [""]INT; V6 : "Frånluftfilterlarm" [""]INT; V7 : "Brandlarm" [""]INT; V8 : "Manuellt driftläge" [""]INT; V9 : "Modbus kommunikationslarm" [""]INT; V10 : "Frysskydds temperaturlarm" [""]INT; V11 : "Utespläll driftläge" [""]INT; V12 : "Avluftspjäll driftläge" [""]INT; V13 : "Tilluftspjäll utsignal" ["%"]INT; V14 : "Frånluftfläkt utsignal" ["%"]INT; V15 : "Värmeåtervinning utsignal" ["%"]INT; V16 : "Brandspjäll utsignal" ["%"]INT; V17 : "Värme utsignal" ["%"]INT; V18 : "Värmepump start signal" ["%"]INT; G1 : "BMS tidsstyrprogram steg/temp" ["Auto,Av,EkonSt1,EkonSt2,KomfSt2,EkonSt3,KomfSt3"]ENUM; G2 : "Komfort temperaturbörvärde" ["°C"]DEC1; G3 : "Utetemperatur" ["°C"]DEC1; G4 : "Rumstemperatur" ["°C"]DEC1; G5 : "Aktivera stödvärme" [""]INT; G6 : "Stöddrift värme start" ["°C"]INT; G7 : "Stöddrift värme börvärde" ["°C"]INT; I2 : "Utetemperatur" ["°C"]DEC1; I3 : "Tillufttemperatur" ["°C"]DEC1; I4 : "Frysskyddstemperatur" ["°C"]DEC1; I5 : "Rumstemperatur" ["°C"]DEC1; I6 : "Frånluffttemperatur" ["°C"]DEC1; I7 : "Avluftstemperatur" ["°C"]DEC1; I8 : "Vårmeåtervinning tillufttemperatur" ["°C"]DEC1; I9 : "Tilluftflöde" ["l/s"]DEC1; I10 : "Frånluftflöde" ["l/s"]; I11 : "Tillufttryck" ["Pa"]; I12 : "Frånlufttryck" ["Pa"]; I13 : "Aktuellt börvärde tilluftfläkt" ["l/s Pa"]; I14 : "Aktuellt börvärde frånluftfläkt" ["l/s Pa"]; PRIVATE count3; tmp; BAUDRATE 9600; CHECKSUM MODBUS SWAPPED; TELEGRAM ReadDiscrete NAMED "Läs diskreta" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(02); % Modbus kommando för att läsa register kod 02 DATA[2] := RWORD(25); % Start address DATA[4] := RWORD(57); % Antal register att läsa ANSWER SIZE 13 % (Antal register / 8) avrundat uppåt + 5 DATA[0] = BYTE(Id); DATA[1] = BYTE(02); DATA[2] = BYTE(8); % Antal Bytes DATA[3] -> BYTE( IF (DATA & 1) THEN V1 := 1; ELSE V1 := 0; ENDIF; IF (DATA & 16) THEN V2 := 1; ELSE V2 := 0; ENDIF; ); DATA[4] -> BYTE( IF (DATA & 64) THEN V3 := 1; ELSE V3 := 0; ENDIF; ); DATA[5] -> BYTE( IF (DATA & 8) THEN V4 := 1; ELSE V4 := 0; ENDIF; ); DATA[8] -> BYTE( IF (DATA & 32) THEN V5 := 1; ELSE V5 := 0; ENDIF; IF (DATA & 64) THEN V6 := 1; ELSE V6 := 0; ENDIF; IF (DATA & 128) THEN V7 := 1; ELSE V7 := 0; ENDIF; ); DATA[9] -> BYTE( IF (DATA & 8) THEN V8 := 1; ELSE V8 := 0; ENDIF; IF (DATA & 16) THEN V9 := 1; ELSE V9 := 0; ENDIF; ); DATA[10] -> BYTE( IF (DATA & 1) THEN V10 := 1; ELSE V10 := 0; ENDIF; ); TIMEOUT 300 END; TELEGRAM ReadInput NAMED "Läs Input" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(04); % Modbus kommando för att läsa register kod 04 DATA[2] := RWORD(24); % Start address DATA[4] := RWORD(17); % Antal register att läsa ANSWER SIZE 39 % (Antal register * 2) + 5 DATA[0] = BYTE(Id); DATA[1] = BYTE(04); DATA[2] = BYTE(34); % Antal Bytes DATA[3] -> RWORD(V11 := DATA;); DATA[5] -> RWORD(V12 := DATA;); DATA[11] -> RWORD(V13 := DATA;); DATA[15] -> RWORD(V14 := DATA;); DATA[25] -> RWORD(V15 := DATA;); DATA[29] -> RWORD(V16 := DATA;); DATA[33] -> RWORD(V17 := DATA;); DATA[35] -> RWORD(V18 := DATA;); TIMEOUT 300 END; TELEGRAM Readinput2 NAMED "Läs input2" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(04); % Modbus kommando för att läsa register kod 04 DATA[2] := RWORD(71); % Start address DATA[4] := RWORD(42); % Antal register att läsa ANSWER SIZE 89 % (Antal register * 2) + 5 DATA[0] = BYTE(Id); DATA[1] = BYTE(04); DATA[2] = BYTE(84); % Antal Bytes DATA[3] -> RWORD(IF (DATA>=32768) THEN I2:=(DATA-65536)/10; ELSE I2:=DATA/10; ENDIF;); DATA[5] -> RWORD(IF (DATA>=32768) THEN I3:=(DATA-65536)/10; ELSE I3:=DATA/10; ENDIF;); DATA[7] -> RWORD(I4 := DATA/10;); DATA[9] -> RWORD(I5 := DATA/10;); DATA[11] -> RWORD(I6 := DATA/10;); DATA[13] -> RWORD(I7 := DATA/10;); DATA[15] -> RWORD(I8 := DATA/10;); DATA[49] -> RWORD(I9 := DATA;); DATA[51] -> RWORD(I10 := DATA;); DATA[53] -> RWORD(I11 := DATA;); DATA[55] -> RWORD(I12 := DATA;); DATA[83] -> RWORD(I13 := DATA;); DATA[85] -> RWORD(I14 := DATA;); TIMEOUT 300 END; TELEGRAM ReadHolding NAMED "Läs Holding" 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>6) THEN count3 := 0; ENDIF; IF (count3=0) THEN tmp := 5; ELSIF (count3=1) THEN tmp := 21; ELSIF (count3=2) THEN tmp := 59; ELSIF (count3=3) THEN tmp := 61; ELSIF (count3=4) THEN tmp := 284; ELSIF (count3=5) THEN tmp := 73; ELSIF (count3=6) THEN tmp := 74; 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 G1 := DATA; ELSIF (count3=1) THEN G2 := DATA/10; ELSIF (count3=2) THEN IF (DATA>=32768) THEN G3:=(DATA-65536)/10; ELSE G3:=DATA/10; ENDIF; ELSIF (count3=3) THEN IF (DATA>=32768) THEN G4:=(DATA-65536)/10; ELSE G4:=DATA/10; ENDIF; ELSIF (count3=4) THEN G5 := DATA; ELSIF (count3=5) THEN G6 := DATA/10; ELSIF (count3=6) THEN G7 := DATA/10; ENDIF; count3 := count3+1; ); TIMEOUT 300 END; TELEGRAM Write1 NAMED "Skriv BMS tidstyrprogram" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=5;); % Register adress DATA[4] <- RWORD(DATA := W15;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write2 NAMED "Skriv Komfort värmebörvärde" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=21;); % Register adress DATA[4] <- RWORD(DATA := W16*10;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write3 NAMED "Skriv min Tillufttemperaturbörvärde" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=33;); % Register adress DATA[4] <- RWORD(DATA := W17*10;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write4 NAMED "Skriv max Tillufttemperaturbörvärde" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=34;); % Register adress DATA[4] <- RWORD(DATA := W18*10;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write5 NAMED "Skriv Aktivera stödvärme" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=483;); % Register adress DATA[4] <- RWORD(DATA := W19;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write6 NAMED "Skriv Utetemperatur" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=59;); % Register adress DATA[4] <- RWORD(DATA := W20;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write7 NAMED "Skriv Rumstemperatur" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=61;); % Register adress DATA[4] <- RWORD(DATA := W21*10;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write8 NAMED "Skriv Stöddrift värme start" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=73;); % Register adress DATA[4] <- RWORD(DATA := W22*10;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; TELEGRAM Write9 NAMED "Skriv Stöddrift värme börvärde" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD(DATA:=74;); % Register adress DATA[4] <- RWORD(DATA := W23*10;); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; END;