Thermokon SAB0x
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 3
- Uppdaterad
- 2018-02-20
- Skapad
- 2017-05-15
- Kategori
- Allmän automation, Modbus, Övrig utrustning, Trådlöst, Värme, Ventilation
- Visningar
- 2704
Beskrivning
.
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
DEVICETYPE SAB0x NAMED "SAB0x" TYPEID 18748 IS
PARAMETER
Id : "Adress" INT;
Unit : "Enhet (1-32)" INT;
W1:"Skriv Öppning" ["%"]INT;
W4:"Skriv Ingen service" ["Nej,Ja"]ENUM;
W5:"Skriv Sommarläge" ["Nej,Ja"]ENUM;
W6:"Skriv Stängt valv" ["Nej,Ja"]ENUM;
W7:"Skriv Öppet valv" ["Nej,Ja"]ENUM;
W8:"Skriv Lift set" ["Nej,Ja"]ENUM;
W9:"Skriv Run init seq" ["Nej,Ja"]ENUM;
PUBLIC
V1:"Temperatur" ["°C"]DEC2;
V2:"Värdets ålder" ["sek"]INT;
V3:"Öppning" ["%"]INT;
V4:"Ingen service" ["Nej,Ja"]ENUM;
V5:"Sommarläge" ["Nej,Ja"]ENUM;
V6:"Stängt valv" ["Nej,Ja"]ENUM;
V7:"Öppet valv" ["Nej,Ja"]ENUM;
V8:"Lift set" ["Nej,Ja"]ENUM;
V9:"Run init seq" ["Nej,Ja"]ENUM;
V10:"Batteri ok" ["Nej,Ja"]ENUM;
V11:"Fönster" ["stängd,öppen"]ENUM;
V12:"Fel" ["Nej,Ja"]ENUM;
PRIVATE
tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM ReadUnit NAMED "Läs enheten" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(03);
DATA[2] <- RWORD(DATA:=2006+((Unit-1)*20);); % Start address
DATA[4] := RWORD(5); % Antal register att läsa
ANSWER SIZE 15 % (Antal register * 2) + 5
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[2] = BYTE(10); % Antal Bytes
DATA[3] -> RWORD(V2:=DATA;);
DATA[5] -> RWORD(V3:=DATA;);
DATA[7] -> RWORD(
V4:=0;
IF DATA=0 THEN V4:=1; ENDIF;
V5:=0;
V6:=0;
V7:=0;
V8:=0;
V9:=0;
IF DATA&8 THEN V5:=1; ENDIF;
IF DATA&16 THEN V6:=1; ENDIF;
IF DATA&32 THEN V7:=1; ENDIF;
IF DATA&64 THEN V8:=1; ENDIF;
IF DATA&128 THEN V9:=1; ENDIF;
);
DATA[9] -> RWORD(
V10:=0;
V11:=0;
V12:=0;
IF DATA&8 THEN V10:=1; ENDIF;
IF DATA&4 THEN V11:=1; ENDIF;
IF DATA&2 THEN V12:=1; ENDIF;
);
DATA[11] -> RWORD(V1:=DATA/10;);
TIMEOUT 300
END;
TELEGRAM WriteOpen NAMED "Skriv Öppning" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(6); % Modbus kommando för att skriva ett register
DATA[2] := RWORD(2007+((Unit-1)*20)); % Register adress
DATA[4] <- RWORD(DATA:=W1;);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = BYTE(06);
TIMEOUT 300
END;
TELEGRAM WriteService NAMED "Skriv Service" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(6); % Modbus kommando för att skriva ett register
DATA[2] := RWORD(2008+((Unit-1)*20)); % Register adress
DATA[4] <- RWORD(
IF W4=1 THEN DATA:=0; ELSE
tmp:=0;
IF W5=1 THEN tmp:=tmp+8;
ELSIF W6=1 THEN tmp:=tmp+16;
ELSIF W7=1 THEN tmp:=tmp+32;
ELSIF W8=1 THEN tmp:=tmp+64;
ELSIF W9=1 THEN tmp:=tmp+128;
ENDIF;
ENDIF;
DATA:=tmp;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = BYTE(06);
TIMEOUT 300
END;
END;
PARAMETER
Id : "Adress" INT;
Unit : "Enhet (1-32)" INT;
W1:"Skriv Öppning" ["%"]INT;
W4:"Skriv Ingen service" ["Nej,Ja"]ENUM;
W5:"Skriv Sommarläge" ["Nej,Ja"]ENUM;
W6:"Skriv Stängt valv" ["Nej,Ja"]ENUM;
W7:"Skriv Öppet valv" ["Nej,Ja"]ENUM;
W8:"Skriv Lift set" ["Nej,Ja"]ENUM;
W9:"Skriv Run init seq" ["Nej,Ja"]ENUM;
PUBLIC
V1:"Temperatur" ["°C"]DEC2;
V2:"Värdets ålder" ["sek"]INT;
V3:"Öppning" ["%"]INT;
V4:"Ingen service" ["Nej,Ja"]ENUM;
V5:"Sommarläge" ["Nej,Ja"]ENUM;
V6:"Stängt valv" ["Nej,Ja"]ENUM;
V7:"Öppet valv" ["Nej,Ja"]ENUM;
V8:"Lift set" ["Nej,Ja"]ENUM;
V9:"Run init seq" ["Nej,Ja"]ENUM;
V10:"Batteri ok" ["Nej,Ja"]ENUM;
V11:"Fönster" ["stängd,öppen"]ENUM;
V12:"Fel" ["Nej,Ja"]ENUM;
PRIVATE
tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM ReadUnit NAMED "Läs enheten" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(03);
DATA[2] <- RWORD(DATA:=2006+((Unit-1)*20);); % Start address
DATA[4] := RWORD(5); % Antal register att läsa
ANSWER SIZE 15 % (Antal register * 2) + 5
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[2] = BYTE(10); % Antal Bytes
DATA[3] -> RWORD(V2:=DATA;);
DATA[5] -> RWORD(V3:=DATA;);
DATA[7] -> RWORD(
V4:=0;
IF DATA=0 THEN V4:=1; ENDIF;
V5:=0;
V6:=0;
V7:=0;
V8:=0;
V9:=0;
IF DATA&8 THEN V5:=1; ENDIF;
IF DATA&16 THEN V6:=1; ENDIF;
IF DATA&32 THEN V7:=1; ENDIF;
IF DATA&64 THEN V8:=1; ENDIF;
IF DATA&128 THEN V9:=1; ENDIF;
);
DATA[9] -> RWORD(
V10:=0;
V11:=0;
V12:=0;
IF DATA&8 THEN V10:=1; ENDIF;
IF DATA&4 THEN V11:=1; ENDIF;
IF DATA&2 THEN V12:=1; ENDIF;
);
DATA[11] -> RWORD(V1:=DATA/10;);
TIMEOUT 300
END;
TELEGRAM WriteOpen NAMED "Skriv Öppning" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(6); % Modbus kommando för att skriva ett register
DATA[2] := RWORD(2007+((Unit-1)*20)); % Register adress
DATA[4] <- RWORD(DATA:=W1;);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = BYTE(06);
TIMEOUT 300
END;
TELEGRAM WriteService NAMED "Skriv Service" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(6); % Modbus kommando för att skriva ett register
DATA[2] := RWORD(2008+((Unit-1)*20)); % Register adress
DATA[4] <- RWORD(
IF W4=1 THEN DATA:=0; ELSE
tmp:=0;
IF W5=1 THEN tmp:=tmp+8;
ELSIF W6=1 THEN tmp:=tmp+16;
ELSIF W7=1 THEN tmp:=tmp+32;
ELSIF W8=1 THEN tmp:=tmp+64;
ELSIF W9=1 THEN tmp:=tmp+128;
ENDIF;
ENDIF;
DATA:=tmp;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = BYTE(06);
TIMEOUT 300
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.