IVT REGO 5002, 5003, 5004, 5005 Läs DI
Detaljer
Beskrivning
drivrutin för IVT REGO 5002, 5003, 5004, 5005
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
% Parity: None
% Baud: 9600
%
% READ Digital input
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
% 2011-01-25 Inläsning var förskjuten 1 bit DI0 saknades
%
DEVICETYPE IvtRego5005DI1 NAMED "IVTREGO Läs DI" TYPEID 21340 IS
PARAMETER
Id :"Adress";
PUBLIC
%GH
%DI0 :"Låg temp VVladd"; %10001 Låg temp i laddkrets VV End. 5003
%DI1 :"Låg tryck värme"; %10002 Lågt tryck värme (stoppar allt)
%DI2 :"Buffertank" ; %10003 Buffertank: Ja[1], Nej[0]
%DI3 :"Laddning tappv."; %10004 Tappvattenladdning: Ja[1], Nej[0]
%DI4 :"Låg tryck kyla" ; %10005 B31, lågt tryck kyla
%DI5 :"E11 larm tills."; %10006 E11, larmingång (tillskott)
DI6 :"E21 driftind." ; %10007 E21, driftindikering (värmepump)
DI7 :"G1 larm framl." ; %10008 G1, larmingång (framledning)
DI8 :"E11 driftind." ; %10009 E11, driftindikering (tillskott)
DI9 :"G1 drift framl."; %10010 G1, driftindikering (framledning)
DI10 :"G2 drift värmeb"; %10011 G2, driftindikering (värmebärare)
DI11 :"G3 drift köldb."; %10012 G3, driftindikering (köldbärare)
DI12 :"G5 drift h.gasp"; %10013 G5, driftindikering (hetgaspump)
DI13 :"G7 drift laddn."; %10014 G7, driftindikering (laddning)
DI14 :"Tillåt on/off" ; %10015 receiveblock, tillåt start/stopp (kommunikationshandboken)
DI15 :"E21 summalarm" ; %10016 E21, summalarm
DI16 :"Q21 status 1=VV"; %10017 Q21, status: VV[1], Värme[0]
DI17 :"Summalarm A" ; %10018 Summalarm, A-larm
DI18 :"Summalarm B" ; %10019 Summalarm, B-larm
DI19 :"Summalarm C" ; %10020 Summalarm, C-larm
DI20 :"Q41 VVC 1=Hetg."; %10021 Q41, val av VVC-flöde: Slingtank + Hetgas[0], Hetgas[1] End. 5004
DI21 :"G2 VBpump hög" ; %10022 G2, driftindikering hög hastighet (värmebärarpump) End. 5005
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM ReadDI1 NAMED "Läs DI1-21" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(0); % Start adress
DATA[4] := RWORD(22); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(%IF (DATA & 1) THEN DI0 := 1; ELSE DI0 := 0; ENDIF;
%IF (DATA & 2) THEN DI1 := 1; ELSE DI1 := 0; ENDIF;
%IF (DATA & 4) THEN DI2 := 1; ELSE DI2 := 0; ENDIF;
%IF (DATA & 8) THEN DI3 := 1; ELSE DI3 := 0; ENDIF;
%IF (DATA & 16) THEN DI4 := 1; ELSE DI4 := 0; ENDIF;
%IF (DATA & 32) THEN DI5 := 1; ELSE DI5 := 0; ENDIF;
IF (DATA & 64) THEN DI6 := 1; ELSE DI6 := 0; ENDIF;
IF (DATA & 128) THEN DI7 := 1; ELSE DI7 := 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI8 := 1; ELSE DI8 := 0; ENDIF;
IF (DATA & 2) THEN DI9 := 1; ELSE DI9 := 0; ENDIF;
IF (DATA & 4) THEN DI10:= 1; ELSE DI10:= 0; ENDIF;
IF (DATA & 8) THEN DI11:= 1; ELSE DI11:= 0; ENDIF;
IF (DATA & 16) THEN DI12:= 1; ELSE DI12:= 0; ENDIF;
IF (DATA & 32) THEN DI13:= 1; ELSE DI13:= 0; ENDIF;
IF (DATA & 64) THEN DI14:= 1; ELSE DI14:= 0; ENDIF;
IF (DATA & 128) THEN DI15:= 1; ELSE DI15:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI16:= 1; ELSE DI16:= 0; ENDIF;
IF (DATA & 2) THEN DI17:= 1; ELSE DI17:= 0; ENDIF;
IF (DATA & 4) THEN DI18:= 1; ELSE DI18:= 0; ENDIF;
IF (DATA & 8) THEN DI19:= 1; ELSE DI19:= 0; ENDIF;
IF (DATA & 16) THEN DI20:= 1; ELSE DI20:= 0; ENDIF;
IF (DATA & 32) THEN DI21:= 1; ELSE DI21:= 0; ENDIF;
);
TIMEOUT 1000
END;
END;
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
% Parity: None
% Baud: 9600
%
% READ Digital input
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
% 2011-01-25 Inläsning var förskjuten 1 bit DI0 saknades
%
DEVICETYPE IvtRego5005DI1 NAMED "IVTREGO Läs DI" TYPEID 21340 IS
PARAMETER
Id :"Adress";
PUBLIC
%GH
%DI0 :"Låg temp VVladd"; %10001 Låg temp i laddkrets VV End. 5003
%DI1 :"Låg tryck värme"; %10002 Lågt tryck värme (stoppar allt)
%DI2 :"Buffertank" ; %10003 Buffertank: Ja[1], Nej[0]
%DI3 :"Laddning tappv."; %10004 Tappvattenladdning: Ja[1], Nej[0]
%DI4 :"Låg tryck kyla" ; %10005 B31, lågt tryck kyla
%DI5 :"E11 larm tills."; %10006 E11, larmingång (tillskott)
DI6 :"E21 driftind." ; %10007 E21, driftindikering (värmepump)
DI7 :"G1 larm framl." ; %10008 G1, larmingång (framledning)
DI8 :"E11 driftind." ; %10009 E11, driftindikering (tillskott)
DI9 :"G1 drift framl."; %10010 G1, driftindikering (framledning)
DI10 :"G2 drift värmeb"; %10011 G2, driftindikering (värmebärare)
DI11 :"G3 drift köldb."; %10012 G3, driftindikering (köldbärare)
DI12 :"G5 drift h.gasp"; %10013 G5, driftindikering (hetgaspump)
DI13 :"G7 drift laddn."; %10014 G7, driftindikering (laddning)
DI14 :"Tillåt on/off" ; %10015 receiveblock, tillåt start/stopp (kommunikationshandboken)
DI15 :"E21 summalarm" ; %10016 E21, summalarm
DI16 :"Q21 status 1=VV"; %10017 Q21, status: VV[1], Värme[0]
DI17 :"Summalarm A" ; %10018 Summalarm, A-larm
DI18 :"Summalarm B" ; %10019 Summalarm, B-larm
DI19 :"Summalarm C" ; %10020 Summalarm, C-larm
DI20 :"Q41 VVC 1=Hetg."; %10021 Q41, val av VVC-flöde: Slingtank + Hetgas[0], Hetgas[1] End. 5004
DI21 :"G2 VBpump hög" ; %10022 G2, driftindikering hög hastighet (värmebärarpump) End. 5005
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM ReadDI1 NAMED "Läs DI1-21" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(0); % Start adress
DATA[4] := RWORD(22); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(%IF (DATA & 1) THEN DI0 := 1; ELSE DI0 := 0; ENDIF;
%IF (DATA & 2) THEN DI1 := 1; ELSE DI1 := 0; ENDIF;
%IF (DATA & 4) THEN DI2 := 1; ELSE DI2 := 0; ENDIF;
%IF (DATA & 8) THEN DI3 := 1; ELSE DI3 := 0; ENDIF;
%IF (DATA & 16) THEN DI4 := 1; ELSE DI4 := 0; ENDIF;
%IF (DATA & 32) THEN DI5 := 1; ELSE DI5 := 0; ENDIF;
IF (DATA & 64) THEN DI6 := 1; ELSE DI6 := 0; ENDIF;
IF (DATA & 128) THEN DI7 := 1; ELSE DI7 := 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI8 := 1; ELSE DI8 := 0; ENDIF;
IF (DATA & 2) THEN DI9 := 1; ELSE DI9 := 0; ENDIF;
IF (DATA & 4) THEN DI10:= 1; ELSE DI10:= 0; ENDIF;
IF (DATA & 8) THEN DI11:= 1; ELSE DI11:= 0; ENDIF;
IF (DATA & 16) THEN DI12:= 1; ELSE DI12:= 0; ENDIF;
IF (DATA & 32) THEN DI13:= 1; ELSE DI13:= 0; ENDIF;
IF (DATA & 64) THEN DI14:= 1; ELSE DI14:= 0; ENDIF;
IF (DATA & 128) THEN DI15:= 1; ELSE DI15:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI16:= 1; ELSE DI16:= 0; ENDIF;
IF (DATA & 2) THEN DI17:= 1; ELSE DI17:= 0; ENDIF;
IF (DATA & 4) THEN DI18:= 1; ELSE DI18:= 0; ENDIF;
IF (DATA & 8) THEN DI19:= 1; ELSE DI19:= 0; ENDIF;
IF (DATA & 16) THEN DI20:= 1; ELSE DI20:= 0; ENDIF;
IF (DATA & 32) THEN DI21:= 1; ELSE DI21:= 0; ENDIF;
);
TIMEOUT 1000
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.