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;
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.