Regin läs Input och Holding register
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 1
- Uppdaterad
- 2013-04-18
- Skapad
- 2013-04-18
- Kategori
- Modbus, Ventilation
- Visningar
- 2580
Beskrivning
Special lösning För ett ventilationsaggregat. Lösningen använder modbus heltal och flyttal med skalning istället för IEEE formatet Regin vanligen använder
Bruksanvisning
Det här skriptet är gjort för en speciell lösning av Regin :
MODBUS Slave Protocol
Revision 2.0-0-14, Date: 2010-09-14
Värt att notera är att i Regins RegMap.txt fil betyder adress 200 Input register 0 och att adress 300 betyder Holding register 0
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 ReginInput NAMED "ReginInput" TYPEID 21425 IS
PARAMETER
Id : "Adress";
PUBLIC
V1 : "LA1_TF1_SEL" [""];
V2 : "LA1_FF1_SEL" [""];
V3 : "LA1_P1_PB" [""];
V4 : "BGF1_Brandf" [""];
V5 : "LA1_TF1_SP" [""]DEC1;
V6 : "LA1_FF1_SP" [""]DEC1;
V7 : "LA1_VR_SP" [""]DEC1;
V8 : "LA1_Frysv" [""]DEC1;
V9 : "LA1_GT1" ["°C"]DEC1;
V10 : "LA1_GT2" ["°C"]DEC1;
V11 : "LA1_GT3" ["°C"]DEC1;
V12 : "LA1_GT4" ["°C"]DEC1;
V13 : "LA1_GT8" ["°C"]DEC1;
V14 : "LA1_GP1" ["l/s"]DEC1;
V15 : "LA1_GP2" ["l/s"]DEC1;
V16 : "LA1_SV1" ["%"]DEC1;
V17 : "LA1_ST3" ["%"]DEC1;
V18 : "LA1_TF1_FRO" ["%"]DEC1;
V19 : "LA1_FF1_FRO" ["%"]DEC1;
V20 : "LA1_VVX" ["%"]DEC1;
PRIVATE
count3;
count4;
tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM Read3 NAMED "Read 3" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(03); % Modbus kommando för att läsa register
DATA[2] <- RWORD(
IF(count3>7) THEN count3 := 0; ENDIF;
IF (count3=0) THEN tmp := 0;
ELSIF (count3=1) THEN tmp := 1;
ELSIF (count3=2) THEN tmp := 2;
ELSIF (count3=3) THEN tmp := 3;
ELSIF (count3=4) THEN tmp := 4;
ELSIF (count3=5) THEN tmp := 6;
ELSIF (count3=6) THEN tmp := 8;
ELSIF (count3=7) THEN tmp := 10;
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(01);
ANSWER SIZE 7
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[3] -> RWORD(
IF (count3=0) THEN V1 := DATA;
ELSIF (count3=1) THEN V2 := DATA;
ELSIF (count3=2) THEN V3 := DATA;
ELSIF (count3=3) THEN V4 := DATA;
ELSIF (count3=4) THEN V5 := DATA/10;
ELSIF (count3=5) THEN V6 := DATA/10;
ELSIF (count3=6) THEN V7 := DATA/10;
ELSIF (count3=7) THEN V8 := DATA/10;
ENDIF;
count3 := count3+1;
);
TIMEOUT 2000
END;
TELEGRAM Read4 NAMED "Read 4" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(04); % Modbus kommando för att läsa register
DATA[2] <- RWORD(
IF(count4>11) THEN count4 := 0; ENDIF;
IF (count4=0) THEN tmp := 0;
ELSIF (count4=1) THEN tmp := 2;
ELSIF (count4=2) THEN tmp := 4;
ELSIF (count4=3) THEN tmp := 6;
ELSIF (count4=4) THEN tmp := 8;
ELSIF (count4=5) THEN tmp := 10;
ELSIF (count4=6) THEN tmp := 12;
ELSIF (count4=7) THEN tmp := 14;
ELSIF (count4=8) THEN tmp := 16;
ELSIF (count4=9) THEN tmp := 18;
ELSIF (count4=10) THEN tmp := 20;
ELSIF (count4=11) THEN tmp := 22;
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(01);
ANSWER SIZE 7
DATA[0] = BYTE(Id);
DATA[1] = HEX(04);
DATA[3] -> RWORD(
IF (count4=0) THEN V9 := DATA/10;
ELSIF (count4=1) THEN V10 := DATA/10;
ELSIF (count4=2) THEN V11 := DATA/10;
ELSIF (count4=3) THEN V12 := DATA/10;
ELSIF (count4=4) THEN V13 := DATA/10;
ELSIF (count4=5) THEN V14 := DATA/10;
ELSIF (count4=6) THEN V15 := DATA/10;
ELSIF (count4=7) THEN V16 := DATA/10;
ELSIF (count4=8) THEN V17 := DATA/10;
ELSIF (count4=9) THEN V18 := DATA/10;
ELSIF (count4=10) THEN V19 := DATA/10;
ELSIF (count4=11) THEN V20 := DATA/10;
ENDIF;
count4 := count4+1;
);
TIMEOUT 2000
END;
END;
PARAMETER
Id : "Adress";
PUBLIC
V1 : "LA1_TF1_SEL" [""];
V2 : "LA1_FF1_SEL" [""];
V3 : "LA1_P1_PB" [""];
V4 : "BGF1_Brandf" [""];
V5 : "LA1_TF1_SP" [""]DEC1;
V6 : "LA1_FF1_SP" [""]DEC1;
V7 : "LA1_VR_SP" [""]DEC1;
V8 : "LA1_Frysv" [""]DEC1;
V9 : "LA1_GT1" ["°C"]DEC1;
V10 : "LA1_GT2" ["°C"]DEC1;
V11 : "LA1_GT3" ["°C"]DEC1;
V12 : "LA1_GT4" ["°C"]DEC1;
V13 : "LA1_GT8" ["°C"]DEC1;
V14 : "LA1_GP1" ["l/s"]DEC1;
V15 : "LA1_GP2" ["l/s"]DEC1;
V16 : "LA1_SV1" ["%"]DEC1;
V17 : "LA1_ST3" ["%"]DEC1;
V18 : "LA1_TF1_FRO" ["%"]DEC1;
V19 : "LA1_FF1_FRO" ["%"]DEC1;
V20 : "LA1_VVX" ["%"]DEC1;
PRIVATE
count3;
count4;
tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM Read3 NAMED "Read 3" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(03); % Modbus kommando för att läsa register
DATA[2] <- RWORD(
IF(count3>7) THEN count3 := 0; ENDIF;
IF (count3=0) THEN tmp := 0;
ELSIF (count3=1) THEN tmp := 1;
ELSIF (count3=2) THEN tmp := 2;
ELSIF (count3=3) THEN tmp := 3;
ELSIF (count3=4) THEN tmp := 4;
ELSIF (count3=5) THEN tmp := 6;
ELSIF (count3=6) THEN tmp := 8;
ELSIF (count3=7) THEN tmp := 10;
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(01);
ANSWER SIZE 7
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[3] -> RWORD(
IF (count3=0) THEN V1 := DATA;
ELSIF (count3=1) THEN V2 := DATA;
ELSIF (count3=2) THEN V3 := DATA;
ELSIF (count3=3) THEN V4 := DATA;
ELSIF (count3=4) THEN V5 := DATA/10;
ELSIF (count3=5) THEN V6 := DATA/10;
ELSIF (count3=6) THEN V7 := DATA/10;
ELSIF (count3=7) THEN V8 := DATA/10;
ENDIF;
count3 := count3+1;
);
TIMEOUT 2000
END;
TELEGRAM Read4 NAMED "Read 4" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := HEX(04); % Modbus kommando för att läsa register
DATA[2] <- RWORD(
IF(count4>11) THEN count4 := 0; ENDIF;
IF (count4=0) THEN tmp := 0;
ELSIF (count4=1) THEN tmp := 2;
ELSIF (count4=2) THEN tmp := 4;
ELSIF (count4=3) THEN tmp := 6;
ELSIF (count4=4) THEN tmp := 8;
ELSIF (count4=5) THEN tmp := 10;
ELSIF (count4=6) THEN tmp := 12;
ELSIF (count4=7) THEN tmp := 14;
ELSIF (count4=8) THEN tmp := 16;
ELSIF (count4=9) THEN tmp := 18;
ELSIF (count4=10) THEN tmp := 20;
ELSIF (count4=11) THEN tmp := 22;
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(01);
ANSWER SIZE 7
DATA[0] = BYTE(Id);
DATA[1] = HEX(04);
DATA[3] -> RWORD(
IF (count4=0) THEN V9 := DATA/10;
ELSIF (count4=1) THEN V10 := DATA/10;
ELSIF (count4=2) THEN V11 := DATA/10;
ELSIF (count4=3) THEN V12 := DATA/10;
ELSIF (count4=4) THEN V13 := DATA/10;
ELSIF (count4=5) THEN V14 := DATA/10;
ELSIF (count4=6) THEN V15 := DATA/10;
ELSIF (count4=7) THEN V16 := DATA/10;
ELSIF (count4=8) THEN V17 := DATA/10;
ELSIF (count4=9) THEN V18 := DATA/10;
ELSIF (count4=10) THEN V19 := DATA/10;
ELSIF (count4=11) THEN V20 := DATA/10;
ENDIF;
count4 := count4+1;
);
TIMEOUT 2000
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.