Danelko/Thermokon SR04 CO2 via STC65

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
1
Uppdaterad
2018-10-03
Skapad
2018-10-03
Kategori
Mätare, Modbus, Övriga protokoll
Visningar
1651

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

% EEP A5(165)-09-04 = 
DEVICETYPE SR04CO2 NAMED "SR04 CO2" TYPEID 18347 IS

 PARAMETER
  Id : "Adress" [""]INT;
  Unit : "Enhet (1-32)" [""]INT; 

 PUBLIC
  ORG : "ORG (165)" INT;
  FUNC : "FUNC (9)" INT;
  TYPE : "TYPE (4)" INT;
  T1 : "Temperatur" ["°C"]DEC1;
  CO2 : "CO2" ["ppm"]INT;
  HR3 : "Luftfuktighet" ["%"]DEC2;
  Age : "Värdets ålder" ["sek"]INT;
  HRX : "Fuktsensor" ["Saknas,Finns"]ENUM;
  TSX : "Tempsensor" ["Saknas,Finns"]ENUM;
  
 PRIVATE

 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;

 TELEGRAM Read4 NAMED "Read" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(03); 
   DATA[2] <- RWORD(DATA:=200+((Unit-1)*20);); % Start address
   DATA[4] := RWORD(14); % Antal register att läsa
  ANSWER SIZE 33 % (Antal register * 2) + 5
   DATA[0] = BYTE(Id);
   DATA[1] = HEX(03);
   DATA[2] = BYTE(28); % Antal Bytes
   DATA[3] -> RWORD(FUNC:=DATA;); %200
   DATA[5] -> RWORD(TYPE:=DATA;); %201
   DATA[15] -> RWORD(Age:=DATA;); %206
   DATA[17] -> RWORD(ORG:=DATA;); %207
   DATA[21]-> RWORD(
    IF(DATA&2) THEN TSX:=1; ELSE TSX:=0; ENDIF;
    IF(DATA&4) THEN HRX:=1; ELSE HRX:=0; ENDIF;
   );
   DATA[24] -> BYTE(T1:=DATA*0.2;); %210
   DATA[26] -> BYTE(CO2:=DATA*10;); %211
   DATA[28] -> BYTE(HR3:=DATA/2;); %212
  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.