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
2342

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;

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.