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;

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.