System Air Corrigo läs status register

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
1
Uppdaterad
2016-02-29
Skapad
2016-02-29
Kategori
Modbus, Ventilation
Visningar
2582

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 SysAirStatus NAMED "SystemAirCorrigoStatus" TYPEID 22124 IS

 PARAMETER
  Id       : "Adress";

 PUBLIC
  V1 : "GP61/62" [""];
  V2 : "Driftsvar CP01" [""];
  V3 : "Rot.vakt VX01" [""];
  V4 : "Extern drift" [""];
  V5 : "Brandlarm" [""];
  V6 : "Extern brytare" [""];
  V7 : "FF-Ind motorsk" [""];
  V8 : "TF-Ind motorsk" [""];
  V9 : "Cp01" [""];
  V10 : "ST11" [""];
  V11 : "DO3" [""];
  V12 : "P-Kyla" [""];
  V13 : "Kylsteg 1" [""];
  V14 : "Kylsteg 2" [""];
  V15 : "Summalarm" [""];
  V16 : "Summalarm A" [""];
  V17 : "Summalarm B" [""];

 PRIVATE

 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;

 TELEGRAM Read2 NAMED "Read 2" 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(13); % Start address
   DATA[4] := RWORD(173); % Antal register att läsa
  ANSWER SIZE 27 % (Antal register / 8) avrundat uppåt + 5
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(02);
   DATA[2] = BYTE(22); % Antal Bytes
   DATA[3] -> BYTE(
    IF (DATA & 1) THEN V1 := 1; ELSE V1 := 0; ENDIF;
    IF (DATA & 2) THEN V2 := 1; ELSE V2 := 0; ENDIF;
    IF (DATA & 4) THEN V3 := 1; ELSE V3 := 0; ENDIF;
    IF (DATA & 8) THEN V4 := 1; ELSE V4 := 0; ENDIF;
    IF (DATA & 16) THEN V5 := 1; ELSE V5 := 0; ENDIF;
    IF (DATA & 32) THEN V6 := 1; ELSE V6 := 0; ENDIF;
    IF (DATA & 64) THEN V7 := 1; ELSE V7 := 0; ENDIF;
    IF (DATA & 128) THEN V8 := 1; ELSE V8 := 0; ENDIF;
   );
   DATA[4] -> BYTE(
    IF (DATA & 16) THEN V9 := 1; ELSE V9 := 0; ENDIF;
    IF (DATA & 32) THEN V10 := 1; ELSE V10 := 0; ENDIF;
    IF (DATA & 64) THEN V11 := 1; ELSE V11 := 0; ENDIF;
    IF (DATA & 128) THEN V12 := 1; ELSE V12 := 0; ENDIF;
   );
   DATA[5] -> BYTE(
    IF (DATA & 1) THEN V13 := 1; ELSE V13 := 0; ENDIF;
    IF (DATA & 2) THEN V14 := 1; ELSE V14 := 0; ENDIF;
    IF (DATA & 4) THEN V15 := 1; ELSE V15 := 0; ENDIF;
   );
   DATA[24] -> BYTE(
    IF (DATA & 8) THEN V16 := 1; ELSE V16 := 0; ENDIF;
    IF (DATA & 16) THEN V17 := 1; ELSE V17 := 0; ENDIF;
   );
  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.