IVT REGO 5002, 5003, 5004, 5005

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
3
Uppdaterad
2018-05-21
Skapad
2013-04-07
Kategori
Modbus, Värme
Visningar
9268

Beskrivning

drivrutin för IVT REGO 5002, 5003, 5004, 5005.
För IMSE UltraBase30 använd de uppdelade skripten

Bruksanvisning

READ Analog input 21-40 (Alarms)
Larmstatus i REGO
1: Normal /Ej larm
2: Blockerad
3: Kvitterad
4: reserverad
5: Återgången
6: reserverad
7: Utlöst

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
%       Mode:   RTU
%
% READ/WRITE Digital output
%
% 9 digitala utgångar kan ställas från devicet.
% Ta bort kommentartecken (%) för de utgångar som skall styras.
% Uppdatera telegrammen för Läs och Ställ med de valda utgångarna.
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%
DEVICETYPE IvtRego5005DOSET NAMED "IVTREGO StällDU" TYPEID 21341 IS

  PARAMETER
    Id :"Adress";

    %DO1  : "Tidkanal A-Larm";  %00001 Tidkanal A-Larm
    %DO2  : "Tidkanal B-Larm";  %00002 Tidkanal B-Larm
    %DO3  : "Tidkanal Dagtid";  %00003 Tidkanal Dagtid
    %DO4  : "SMS 0=Res 1=Ord";  %00004 SMSsend1: Reserv[0], Ordinarie[1]
    %DO5  : "SMS Kvittering" ;  %00005 SMSsend1, Kvittering
    %DO6  : "SMS 0=Off, 1=On";  %00006 SMSsend1: Från[0], Till[1+]
    %DO7  : "E21 Ext.start"  ;  %00007 E21, externstart
    %DO8  : "T1 Ange gfel FL";  %00008 Ange, T1, givarfel (framledning)
    %DO9  : "T3 Ange gfel ST";  %00009 Ange, T3, givarfel (slingtank)
    %DO10 : "Sendbl. VP klar";  %00010 sendblock, värmepumpen klar (kommunikationshandboken)
    %DO11 : "G1 Ange drift"  ;  %00011 Ange, G1, driftindikering
    %DO12 : "E11 Ange drift" ;  %00012 Ange, E11, driftindikering
    %DO13 : "G3 Ext.start KB";  %00013 G3, externstart (köldbärare)
     DO14 : "E21 block. VP"  ;  %00014 E21, blockering (värmepump)
    %DO15 : "E11 Tillåt t.s.";  %00015 E11, tillåt (tillskott)
    %DO16 : "G5 Extern start";  %00016 G5, externstart (underkylare) (endast G-maskiner)
    %DO17 : "B21 Lågt tryck" ;  %00017 B21, lågt tryck (värme) (stoppar allt)
    %DO18 : "G1 Ext.start FL";  %00018 G1, externstart (framledning)
    %DO19 : "E21 Ange larm"  ;  %00019 Ange, E21, larm
    %DO20 : "Tillåt On/Off"  ;  %00020 receiveblock, tillåt start/stopp (kommunikationshandboken)



  PUBLIC
    %rDO1  : "Tidkanal A-Larm";
    %rDO2  : "Tidkanal B-Larm";
    %rDO3  : "Tidkanal Dagtid";
    %rDO4  : "SMS 0=Res 1=Ord";
    %rDO5  : "SMS Kvittering" ;
    %rDO6  : "SMS 0=Off, 1=On";
    %rDO7  : "E21 Ext.start"  ;
    %rDO8  : "T1 Ange gfel FL";
    %rDO9  : "T3 Ange gfel ST";
    %rDO10 : "Sendbl. VP klar";
    %rDO11 : "G1 Ange drift"  ;
    %rDO12 : "E11 Ange drift" ;
    %rDO13 : "G3 Ext.start KB";
     rDO14 : "E21 block. VP"  ;
    %rDO15 : "E11 Tillåt t.s.";
    %rDO16 : "G5 Extern start";
    %rDO17 : "B21 Lågt tryck" ;
    %rDO18 : "G1 Ext.start FL";
    %rDO19 : "E21 Ange larm"  ;
    %rDO20 : "Tillåt On/Off"  ;

  PRIVATE
    Cnt;

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM ReadDISET1 NAMED "Läs DU1-20" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(01);       % Modbus command "01h" read discrete input (bit)
      DATA[2]  := RWORD(0);      % Start adress
      DATA[4]  := RWORD(20);     % Number of inputs

    ANSWER SIZE 8
      DATA[0]   = BYTE(Id);
      DATA[1]   = HEX(01);
      DATA[2]   = BYTE(3);
     %DATA[3]  -> BYTE(
     %  IF (DATA & 1)   THEN rDO1 := 1; ELSE rDO1 := 0; ENDIF;
     %  IF (DATA & 2)   THEN rDO2 := 1; ELSE rDO2 := 0; ENDIF;
     %  IF (DATA & 4)   THEN rDO3 := 1; ELSE rDO3 := 0; ENDIF;
     %  IF (DATA & 8)   THEN rDO4 := 1; ELSE rDO4 := 0; ENDIF;
     %  IF (DATA & 16)  THEN rDO5 := 1; ELSE rDO5 := 0; ENDIF;
     %  IF (DATA & 32)  THEN rDO6 := 1; ELSE rDO6 := 0; ENDIF;
     %  IF (DATA & 64)  THEN rDO7 := 1; ELSE rDO7 := 0; ENDIF;
     %  IF (DATA & 128) THEN rDO8 := 1; ELSE rDO8 := 0; ENDIF;
     %);
      DATA[4]  -> BYTE(
     %  IF (DATA & 1)   THEN rDO9 := 1; ELSE rDO9 := 0; ENDIF;
     %  IF (DATA & 2)   THEN rDO10:= 1; ELSE rDO10:= 0; ENDIF;
     %  IF (DATA & 4)   THEN rDO11:= 1; ELSE rDO11:= 0; ENDIF;
     %  IF (DATA & 8)   THEN rDO12:= 1; ELSE rDO12:= 0; ENDIF;
     %  IF (DATA & 16)  THEN rDO13:= 1; ELSE rDO13:= 0; ENDIF;
        IF (DATA & 32)  THEN rDO14:= 1; ELSE rDO14:= 0; ENDIF;
     %  IF (DATA & 64)  THEN rDO15:= 1; ELSE rDO15:= 0; ENDIF;
     %  IF (DATA & 128) THEN rDO16:= 1; ELSE rDO16:= 0; ENDIF;
      );
     %DATA[5]  -> BYTE(
     %  IF (DATA & 1)   THEN rDO17:= 1; ELSE rDO17:= 0; ENDIF;
     %  IF (DATA & 2)   THEN rDO18:= 1; ELSE rDO18:= 0; ENDIF;
     %  IF (DATA & 4)   THEN rDO19:= 1; ELSE rDO19:= 0; ENDIF;
     %  IF (DATA & 8)   THEN rDO20:= 1; ELSE rDO20:= 0; ENDIF;
     %);

    TIMEOUT 1000
  END;

  TELEGRAM WriteDISET1 NAMED "Ställ DU1-20" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(05);       % Modbus command "05h" Set coil status (bit)
      DATA[2]  <- RWORD(         %
        IF Cnt>8 THEN Cnt:=0; ENDIF;
        IF    Cnt=0 THEN DATA := 13;  %00014 E21, blockering (värmepump)
        ELSIF Cnt=1 THEN DATA := 13;  % "
        ELSIF Cnt=2 THEN DATA := 13;  % "
        ELSIF Cnt=3 THEN DATA := 13;  % "
        ELSIF Cnt=4 THEN DATA := 13;  % "
        ELSIF Cnt=5 THEN DATA := 13;  % "
        ELSIF Cnt=6 THEN DATA := 13;  % "
        ELSIF Cnt=7 THEN DATA := 13;  % "
        ELSIF Cnt=8 THEN DATA := 13;  % "
        ENDIF;
      );
      DATA[4]  <- RWORD(
        IF    Cnt=0 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=1 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=2 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=3 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=4 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=5 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=6 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=7 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ELSIF Cnt=8 THEN IF DO14 THEN DATA:=65280; ELSE DATA:=0; ENDIF;
        ENDIF;
        Cnt := Cnt + 1;
      );

    ANSWER SIZE 8
      DATA[0]   = BYTE(Id);
      DATA[1]   = HEX(05);

    TIMEOUT 1000
  END;

END;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% READ Analog input 1-20 (Alarms)
% Larmstatus i REGO
% 1: Normal /Ej larm
% 2: Blockerad
% 3: Kvitterad
% 4: reserverad
% 5: Återgången
% 6: reserverad
% 7: Utlöst
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%
DEVICETYPE IvtRego5005AI1 NAMED "IVTREGO AI1-20" TYPEID 21342 IS

  PARAMETER
    Id :"Adress";

  PUBLIC
  R01 :  "Givarfel T1 FrL" ;  %30001 Larm01, T1 framledning givarfel
  R02 :  "Givarfel T2 UTE" ;  %30002 Larm02, T2 ute givarfel
  R03 :  "Larm T1Reg.avv." ;  %30003 Larm03, T1 regleravvikelse
  R04 :  "Larm T3Låg SliT" ;  %30004 Larm04, T3 slingtank låg temperatur
  R05 :  "Givarfel T9 Vin" ;  %30005 Larm05, T9 värme in givarfel
  R06 :  "Givarf T10 KBin" ;  %30006 Larm06, T10 köldbärare in givarfel
  R07 :  "Givarf T11 KBut" ;  %30007 Larm07, T11 köldbärare ut givarfel
  R08 :  "Larm elfel KPR"  ;  %30008 Larm08, Kompressor elfel
  R09 :  "Larm G3Överhet." ;  %30009 Larm09, G3 överhettad
  R10 :  "Givarfel T3 ST"  ;  %30010 Larm10, T3 slingtank givarfel
  R11 :  "Larm KPR överh." ;  %30011 Larm11, Kompressor överhettad
  R12 :  "Givarfel T6 Het" ;  %30012 Larm12, T6 hetgas givarfel
  R13 :  "Larm T6Hög HetG" ;  %30013 Larm13, T6 hetgas hög temperatur
  R14 :  "Givarfel T8 Vut" ;  %30014 Larm14, T8 värme ut givarfel
  R15 :  "Larm tryck Förå" ;  %30015 Larm15, Förångare lågt tryck
  R16 :  "Larm tryck Kyla" ;  %30016 Larm16, B31 lågt tryck kyla
  R17 :  "Larm sum E11 TS" ;  %30017 Larm17, E11 tillskott summalarm
  R18 :  "Larm tryck Kond" ;  %30018 Larm18, Kondensor högt tryck
  R19 :  "Larm fasfö. KPR" ;  %30019 Larm19, Kompressor fasföljdfel
  R20 :  "Larm drift G1FL" ;  %30020 Larm20, G1 framledning driftfel

  PRIVATE

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM ReadAI1 NAMED "Läs AI1-20larm" IS
  QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(0);      % Start address register
      DATA[4]  := RWORD(20);     % Number of registers

  ANSWER SIZE 45
    DATA[0]   = BYTE(Id);      % ID
    DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
    DATA[2]   = BYTE(40);      % Byte count
    DATA[3]  -> RWORD(R01:= DATA;);  % Larm01  Larmstatus i REGO
    DATA[5]  -> RWORD(R02:= DATA;);  % Larm02  1: Normal /Ej larm
    DATA[7]  -> RWORD(R03:= DATA;);  % Larm03  2: Blockerad
    DATA[9]  -> RWORD(R04:= DATA;);  % Larm04  3: Kvitterad
    DATA[11] -> RWORD(R05:= DATA;);  % Larm05  4: reserverad
    DATA[13] -> RWORD(R06:= DATA;);  % Larm06  5: Återgången
    DATA[15] -> RWORD(R07:= DATA;);  % Larm07  6: reserverad
    DATA[17] -> RWORD(R08:= DATA;);  % Larm08  7: Utlöst
    DATA[19] -> RWORD(R09:= DATA;);  % Larm09
    DATA[21] -> RWORD(R10:= DATA;);  % Larm10
    DATA[23] -> RWORD(R11:= DATA;);  % Larm11
    DATA[25] -> RWORD(R12:= DATA;);  % Larm12
    DATA[27] -> RWORD(R13:= DATA;);  % Larm13
    DATA[29] -> RWORD(R14:= DATA;);  % Larm14
    DATA[31] -> RWORD(R15:= DATA;);  % Larm15
    DATA[33] -> RWORD(R16:= DATA;);  % Larm16
    DATA[35] -> RWORD(R17:= DATA;);  % Larm17
    DATA[37] -> RWORD(R18:= DATA;);  % Larm18
    DATA[39] -> RWORD(R19:= DATA;);  % Larm19
    DATA[41] -> RWORD(R20:= DATA;);  % Larm20

    TIMEOUT 1000
  END;
END;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% READ Analog input 21-40 (Alarms)
% Larmstatus i REGO
% 1: Normal /Ej larm
% 2: Blockerad
% 3: Kvitterad
% 4: reserverad
% 5: Återgången
% 6: reserverad
% 7: Utlöst
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%
DEVICETYPE IvtRego5005AI2 NAMED "IVTREGO AI21-40" TYPEID 21343 IS

  PARAMETER
    Id :"Adress";

  PUBLIC
  R21 :  "Larm Minnesbatt";  %30021 Larm21, Minnesbatteri dåligt
  R22 :  "Larm Systemlösn";  %30022 Larm22, Ogiltig systemlösning
  R23 :  "Larm Handl. Utg";  %30023 Larm23, Utgång i handläge
  R24 :  "Larm T8Hög Vut" ;  %30024 Larm24, T8 värme ut hög temperatur
  R25 :  "Larm T3Hög ST"  ;  %30025 Larm25, T3 slingtank hög temperatur
  R26 :  "Larm Konden.sil";  %30026 Larm26, Kondensor igensatt sil
  R27 :  "Larm Kondensflö";  %30027 Larm27, Kondensflöde för stort
  R28 :  "Larm Förång.sil";  %30028 Larm28, Förångare igensatt sil
  R29 :  "Larm E21 Gå.Tid";  %30029 Larm29, E21 för kort gångtid
  R30 :  "Larm E11 Låg te";  %30030 Larm30, E11 tillskott låg temperatur
  R31 :  "Larm T9Hög Vin" ;  %30031 Larm31, T9 värme in hög temperatur
  R32 :  "Larm T10LågKBin";  %30032 Larm32, T10 köldbärare in låg temperatur
  R33 :  "Larm T11LågKBut";  %30033 Larm33, T11 köldbärare ut låg temperatur
  R34 :  "Larm G2Överhet.";  %30034 Larm34, G2 överhettad
  R35 :  "AI1-mode (0-4)" ;  %30035 AI1: Används ej, T3 slingtank, T3 regulator, T18 regulator, T18 VPshunt
  R36 :  "Värmepumpstyp"  ;  %30036 Värmepumpstyp: 1F[0], 2F[1]
  R37 :  "Tillskottstyp"  ;  %30037 Tillskottstyp: Ingen[0], El[1], Olja[2], FJV[3]
  R38 :  "Eftervärme VV"  ;  %30038 Eftervärmning VV: Ingen[0], El[1], FJV[2]
  R39 :  "Värme VV steg2" ;  %30039 Värmning VV steg2: Ingen[0], Hetgas[1]
  R40 :  "Värme VV steg1" ;  %30040 Värmning VV steg1: Ingen[0], Värmepump[1]

  PRIVATE

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM ReadAI1 NAMED "Läs AI21-40" IS
  QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(20);     % Start address register
      DATA[4]  := RWORD(20);     % Number of registers

  ANSWER SIZE 45
    DATA[0]   = BYTE(Id);      % ID
    DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
    DATA[2]   = BYTE(40);      % Byte count
    DATA[3]  -> RWORD(R21:= DATA;);  %Larm21  Larmstatus i REGO
    DATA[5]  -> RWORD(R22:= DATA;);  %Larm22  1: Normal /Ej larm
    DATA[7]  -> RWORD(R23:= DATA;);  %Larm23  2: Blockerad
    DATA[9]  -> RWORD(R24:= DATA;);  %Larm24  3: Kvitterad
    DATA[11] -> RWORD(R25:= DATA;);  %Larm25  4: reserverad
    DATA[13] -> RWORD(R26:= DATA;);  %Larm26  5: Återgången
    DATA[15] -> RWORD(R27:= DATA;);  %Larm27  6: reserverad
    DATA[17] -> RWORD(R28:= DATA;);  %Larm28  7: Utlöst
    DATA[19] -> RWORD(R29:= DATA;);  %Larm29
    DATA[21] -> RWORD(R30:= DATA;);  %Larm30
    DATA[23] -> RWORD(R31:= DATA;);  %Larm31
    DATA[25] -> RWORD(R32:= DATA;);  %Larm32
    DATA[27] -> RWORD(R33:= DATA;);  %Larm33
    DATA[29] -> RWORD(R34:= DATA;);  %Larm34
    DATA[31] -> RWORD(R35:= DATA;);  %AI1
    DATA[33] -> RWORD(R36:= DATA;);  %Värmepumpstyp
    DATA[35] -> RWORD(R37:= DATA;);  %Tillskottstyp
    DATA[37] -> RWORD(R38:= DATA;);  %Eftervärmning VV
    DATA[39] -> RWORD(R39:= DATA;);  %Värmning VV steg2
    DATA[41] -> RWORD(R40:= DATA;);  %Värmning VV steg1

    TIMEOUT 1000
  END;
END;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% READ Analog input 41-60
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%
DEVICETYPE IvtRego5005AI3 NAMED "IVTREGO AI41-60" TYPEID 21344 IS

  PARAMETER
    Id :"Adress";

  PUBLIC
  R41 :  "Förvärmning VV"        ;  %30041 Förvärmning VV: Ingen[0], Värmesystem [1], FJV[2]
  R42 :  "Systemlösning"         ;  %30042 Systemlösning (4 siffror)
  R43 :  "Ärvärde T1 FL"   ["°C"];  %30043 Ärvärde, T1 framledning  10*
  R44 :  "Ärvärde T2 UTE"  ["°C"];  %30044 Ärvärde, T2 ute          10*
  R45 :  "Ärvärde T3 ST"   ["°C"];  %30045 Ärvärde, T3 slingtank    10*
  R46 :  "Ärvärde T6 HetG" ["°C"];  %30046 Ärvärde, T6 hetgas       10*
  R47 :  "Ärvärde T8 Vut"  ["°C"];  %30047 Ärvärde, T8 värme ut     10*
  R48 :  "Ärvärde T9 Vin"  ["°C"];  %30048 Ärvärde, T9 värme in     10*
  R49 :  "Ärvärde T10 Kin" ["°C"];  %30049 Ärvärde, T10 kyla in     10*
  R50 :  "Ärvärde T11 Kut" ["°C"];  %30050 Ärvärde, T11 kyla ut     10*
  R51 :  "Börvärde T1 FL"  ["°C"];  %30051 Börvärde, T1 framledning 10*
  R52 :  "Graddagar"             ;  %30052 Graddagar
  R53 :  "Drifttid E11 TS"       ;  %30053 Drifttid, E11 (Tillskott)
  R54 :  "Starter  E11 TS"       ;  %30054 Starter, E11 (Tillskott)
  R55 :  "Drifttid E21 VP"       ;  %30055 Drifttid, E21 (Värmepump)
  R56 :  "Starter  E21 VP"       ;  %30056 Starter, E21 (Värmepump)
  R57 :  "Drifttid G1 RaP"       ;  %30057 Drifttid, G1 (Radiatorpump)
  R58 :  "Starter  G1 RaP"       ;  %30058 Starter, G1 (Radiatorpump)
  R59 :  "Drifttid G5 HGP"       ;  %30059 Drifttid, G5 (Hetgaspump)
  R60 :  "Starter  G5 HGP"       ;  %30060 Starter, G5 (Hetgaspump)

  PRIVATE

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM ReadAI1 NAMED "Läs AI41-60" IS
  QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(40);     % Start address register
      DATA[4]  := RWORD(20);     % Number of registers

  ANSWER SIZE 45
    DATA[0]   = BYTE(Id);      % ID
    DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
    DATA[2]   = BYTE(40);      % Byte count
    DATA[3]  -> RWORD(R41:= DATA;);  % Förvärmning VV: Ingen[0], Värmesystem [1], FJV[2]
    DATA[5]  -> RWORD(R42:= DATA;);  % Systemlösning (4 siffror)

    DATA[7]  -> RWORD(IF (DATA>=32768) THEN R43:=(DATA-65536)/10; ELSE R43:=DATA/10; ENDIF;);  % Ärvärde T1 framledning   10*
    DATA[9]  -> RWORD(IF (DATA>=32768) THEN R44:=(DATA-65536)/10; ELSE R44:=DATA/10; ENDIF;);  % Ärvärde T2 ute           10*
    DATA[11] -> RWORD(IF (DATA>=32768) THEN R45:=(DATA-65536)/10; ELSE R45:=DATA/10; ENDIF;);  % Ärvärde T3 slingtank     10*
    DATA[13] -> RWORD(IF (DATA>=32768) THEN R46:=(DATA-65536)/10; ELSE R46:=DATA/10; ENDIF;);  % Ärvärde T6 hetgas        10*
    DATA[15] -> RWORD(IF (DATA>=32768) THEN R47:=(DATA-65536)/10; ELSE R47:=DATA/10; ENDIF;);  % Ärvärde T8 värme ut      10*
    DATA[17] -> RWORD(IF (DATA>=32768) THEN R48:=(DATA-65536)/10; ELSE R48:=DATA/10; ENDIF;);  % Ärvärde T9 värme in      10*
    DATA[19] -> RWORD(IF (DATA>=32768) THEN R49:=(DATA-65536)/10; ELSE R49:=DATA/10; ENDIF;);  % Ärvärde T10 kyla in      10*
    DATA[21] -> RWORD(IF (DATA>=32768) THEN R50:=(DATA-65536)/10; ELSE R50:=DATA/10; ENDIF;);  % Ärvärde T11 kyla ut      10*
    DATA[23] -> RWORD(IF (DATA>=32768) THEN R51:=(DATA-65536)/10; ELSE R51:=DATA/10; ENDIF;);  % Börvärde T1 framledning  10*

    DATA[25] -> RWORD(R52:= DATA;);  % Graddagar
    DATA[27] -> RWORD(R53:= DATA;);  % Drifttid E11 (Tillskott)
    DATA[29] -> RWORD(R54:= DATA;);  % Starter  E11 (Tillskott)
    DATA[31] -> RWORD(R55:= DATA;);  % Drifttid E21 (Värmepump)
    DATA[33] -> RWORD(R56:= DATA;);  % Starter  E21 (Värmepump)
    DATA[35] -> RWORD(R57:= DATA;);  % Drifttid G1  (Radiatorpump)
    DATA[37] -> RWORD(R58:= DATA;);  % Starter  G1  (Radiatorpump)
    DATA[39] -> RWORD(R59:= DATA;);  % Drifttid G5  (Hetgaspump)
    DATA[41] -> RWORD(R60:= DATA;);  % Starter  G5  (Hetgaspump)

    TIMEOUT 1000
  END;
END;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% READ Analog input 61-80 (Alarms)
% Larmstatus i REGO
% 1: Normal /Ej larm
% 2: Blockerad
% 3: Kvitterad
% 4: reserverad
% 5: Återgången
% 6: reserverad
% 7: Utlöst
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%          2012-12-21 chnged T3/4,18 to T3/4.18
%
DEVICETYPE IvtRego5005AI4 NAMED "IVTREGO AI61-80" TYPEID 21345 IS

  PARAMETER
    Id :"Adress";

  PUBLIC
  R61 :  "Driftt. G7LaddP"; %30061 Drifttid, G7 (Laddpump)
  R62 :  "Starter G7LaddP"; %30062 Starter, G7 (Laddpump)
  R63 :  "Driftt. Q21Vent"; %30063 Drifttid, Q21 (Växelventil)
  R64 :  "Starter Q21Vent"; %30064 Starter, Q21 (Växelventil)
  R65 :  "Status Q10Shunt"; %30065 Status, Q10 (Shunt)
  R66 :  "Status Q21VXV"  ; %30066 Status, Q21 (VXV)
  R67 :  "Status Q40Shunt"; %30067 Status, Q40 (Shunt)
  R68 :  "Larm B31FlödeKy"; %30068 Larmstatus no.35, B31 lågt flöde kyla
  R69 :  "Larm S.spänning"; %30069 Larmstatus no.36, Tillfällig låg systemspänning
  R70 :  "Givarfel T4VV"  ; %30070 Larmstatus no.37, T4 varmvatten givarfel
  R71 :  "Givarfel T7VVac"; %30071 Larmstatus no.38, T7 VV-ackumulator givarfel
  R72 :  "Larm B21Tryck V"; %30072 Larmstatus no.39, B21 lågt tryck värme
  R73 :  "Larm T4VV Reg.a"; %30073 Larmstatus no.40, T4 varmvatten regleravvikelse
  R74 :  "Larm Kom.fel"   ; %30074 Larmstatus no.41, Kommunikationsfel
  R75 :  "Status KPR"     ; %30075 Status kompressor: 0=Från,  1=Pumpstart, 2=Kontroll, 3=Kompressorstart, 4=Drift, 5=Stannar, 6=Larm
  R76 :  "Börvär. T3/4.18"; %30076 T3/T4 (E21), T18 (E22) – Börvärde                   5004
  R77 :  "T4 Temp VV"     ; %30077 T4 Varmvatten (E22)                            10*  5004
  R78 :  "T7 Temp AckTank"; %30078 T7 AckTank (E22)                               10*  5004
  R79 :  "T18 Fjärrvärme" ; %30079 T18 Fjärrvärme (E22) samma börvärde som T1     10*  5004
  R80 :  "Drifttid G2VBp" ; %30080 Drifttid, G2 låg hastighet (värmebärarpump)    10*  5004


  PRIVATE

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM ReadAI4 NAMED "Läs AI61-80" IS
  QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(60);     % Start address register
      DATA[4]  := RWORD(20);     % Number of registers

  ANSWER SIZE 45
    DATA[0]   = BYTE(Id);      % ID
    DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
    DATA[2]   = BYTE(40);      % Byte count
    DATA[3]  -> RWORD(R61:= DATA;);
    DATA[5]  -> RWORD(R62:= DATA;);
    DATA[7]  -> RWORD(R63:= DATA;);
    DATA[9]  -> RWORD(R64:= DATA;);
    DATA[11] -> RWORD(R65:= DATA;);
    DATA[13] -> RWORD(R66:= DATA;);
    DATA[15] -> RWORD(R67:= DATA;);
    DATA[17] -> RWORD(R68:= DATA;);
    DATA[19] -> RWORD(R69:= DATA;);
    DATA[21] -> RWORD(R70:= DATA;);
    DATA[23] -> RWORD(R71:= DATA;);
    DATA[25] -> RWORD(R72:= DATA;);
    DATA[27] -> RWORD(R73:= DATA;);
    DATA[29] -> RWORD(R74:= DATA;);
    DATA[31] -> RWORD(R75:= DATA;);
    DATA[33] -> RWORD(R76:= DATA;);  %Börvärde 5004

    DATA[35] -> RWORD(IF (DATA>=32768) THEN R77:=(DATA-65536)/10; ELSE R77:=DATA/10; ENDIF;);  %10*  5004
    DATA[37] -> RWORD(IF (DATA>=32768) THEN R78:=(DATA-65536)/10; ELSE R78:=DATA/10; ENDIF;);  %10*  5004
    DATA[39] -> RWORD(IF (DATA>=32768) THEN R79:=(DATA-65536)/10; ELSE R79:=DATA/10; ENDIF;);  %10*  5004
    DATA[41] -> RWORD(IF (DATA>=32768) THEN R80:=(DATA-65536)/10; ELSE R80:=DATA/10; ENDIF;);  %10*  5004

    TIMEOUT 1000
  END;
END;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% READ Analog input 81-100
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%
DEVICETYPE IvtRego5005AI5 NAMED "IVTREGO AI-100" TYPEID 21346 IS

  PARAMETER
    Id :"Adress";

  PUBLIC
  R81 :  "Starter G2 VBp";  %30081 Starter, G2 låg hastighet (värmebärarpump) 10*  5002, 5004
 %R82 :  "";                %30082
 %R83 :  "";                %30083
 %R84 :  "";                %30084
 %R85 :  "";                %30085
 %R86 :  "";                %30086
 %R87 :  "";                %30087
 %R88 :  "";                %30088
 %R89 :  "";                %30089
 %R90 :  "";                %30090
  R91 :  "Larm KPR strömb"; %30091 Larmstatus no.46, Kompressor strömbrytare 5004
 %R92 :  "";                %30092
 %R93 :  "";                %30093
 %R94 :  "";                %30094
 %R95 :  "";                %30095
 %R96 :  "";                %30096
 %R97 :  "";                %30097
 %R98 :  "";                %30098
 %R99 :  "";                %30099
  R100:  "Rego Version" ;   %30100 Rego500X Versionsnummer (X = Värmepumpstyp)

  PRIVATE

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM ReadAI4 NAMED "Läs AI61-80" IS
  QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(80);     % Start address register
      DATA[4]  := RWORD(20);     % Number of registers

  ANSWER SIZE 45
    DATA[0]   = BYTE(Id);      % ID
    DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
    DATA[2]   = BYTE(40);      % Byte count
    DATA[3]  -> RWORD(R81 := DATA/10;);  %10*  5004
   %DATA[5]  -> RWORD(R82 := DATA;);
   %DATA[7]  -> RWORD(R83 := DATA;);
   %DATA[9]  -> RWORD(R84 := DATA;);
   %DATA[11] -> RWORD(R85 := DATA;);
   %DATA[13] -> RWORD(R86 := DATA;);
   %DATA[15] -> RWORD(R87 := DATA;);
   %DATA[17] -> RWORD(R88 := DATA;);
   %DATA[19] -> RWORD(R89 := DATA;);
   %DATA[21] -> RWORD(R90 := DATA;);
    DATA[23] -> RWORD(R91 := DATA;);     %KPR strömbrytare 5004
   %DATA[25] -> RWORD(R92 := DATA;); 
   %DATA[27] -> RWORD(R93 := DATA;); 
   %DATA[29] -> RWORD(R94 := DATA;); 
   %DATA[31] -> RWORD(R95 := DATA;); 
   %DATA[33] -> RWORD(R96 := DATA;); 
   %DATA[35] -> RWORD(R97 := DATA;); 
   %DATA[37] -> RWORD(R98 := DATA;); 
   %DATA[39] -> RWORD(R99 := DATA;); 
    DATA[41] -> RWORD(R100:= DATA;);     %Rego500X Versionsnummer

    TIMEOUT 1000
  END;
END;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IVT REGO 5002, 5003, 5004, 5005
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% Telegram for setting Analog status
% Select registers for setting. 
% Maximum 9 registers can be selected in a device.
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2010-02-12 inital version
%
DEVICETYPE IvtRego5005AO1 NAMED "IVTREGO StällAU" TYPEID 21347 IS

  PARAMETER
    Id         : "Adress";

   %S01 : "X1 Kurva FramL"  ["°C"];  %40001 X1, framledningskurva (T1/T2)
   %S02 : "X2 Kurva FramL"  ["°C"];  %40002 X2, framledningskurva (T1/T2)
   %S03 : "X3 Kurva FramL"  ["°C"];  %40003 X3, framledningskurva (T1/T2)
   %S04 : "X4 Kurva FramL"  ["°C"];  %40004 X4, framledningskurva (T1/T2)
   %S05 : "X5 Kurva FramL"  ["°C"];  %40005 X5, framledningskurva (T1/T2)
   %S06 : "X6 Kurva FramL"  ["°C"];  %40006 X6, framledningskurva (T1/T2)
   %S07 : "X7 Kurva FramL"  ["°C"];  %40007 X7, framledningskurva (T1/T2)
   %S08 : "Y1 Kurva FramL"  ["°C"];  %40008 Y1, framledningskurva (T1/T2)
   %S09 : "Y2 Kurva FramL"  ["°C"];  %40009 Y2, framledningskurva (T1/T2)
   %S10 : "Y3 Kurva FramL"  ["°C"];  %40010 Y3, framledningskurva (T1/T2)
   %S11 : "Y4 Kurva FramL"  ["°C"];  %40011 Y4, framledningskurva (T1/T2)
   %S12 : "Y5 Kurva FramL"  ["°C"];  %40012 Y5, framledningskurva (T1/T2)
   %S13 : "Y6 Kurva FramL"  ["°C"];  %40013 Y6, framledningskurva (T1/T2)
   %S14 : "Y7 Kurva FramL"  ["°C"];  %40014 Y7, framledningskurva (T1/T2)
   %S15 : "Min temp FramL"  ["°C"];  %40015 Minbegränsning, framledningskurva (T1/T2)
   %S16 : "Max temp FramL"  ["°C"];  %40016 Maxbegränsning, framledningskurva (T1/T2)
   %S17 : "BV-förskjFramL"  ["°C"];  %40017 Parallelförskjutning, framledningskurva (T1/T2) 10*
   %S18 : "RegFrL P-värde"  [""];    %40018 Regulator P, framledning (T1)     10*
   %S19 : "RegFrL I-värde"  [""];    %40019 Regulator I, framledning (T1)
   %S20 : "RegFrL D-värde"  [""];    %40020 Regulator D, framledning (T1)     10*
   %S21 : "RegFrL D-max"    [""];    %40021 Regulator Dmax, framledning (T1)
   %S22 : "RegFjV P-värde"  [""];    %40022 Regulator P, fjärrvärme (T18)     10*
   %S23 : "RegFjV I-värde"  [""];    %40023 Regulator I, fjärrvärme (T18)
   %S24 : "RegFjV D-värde"  [""];    %40024 Regulator D, fjärrvärme (T18)     10*
   %S25 : "RegFjV D-max"    [""];    %40025 Regulator Dmax, fjärrvärme (T18)
   %S26 : "Larmg.T3 hög"    ["°C"];  %40026 Larmgräns, hög temperatur (T3)
   %S27 : "Larmg.T3 låg"    ["°C"];  %40027 Larmgräns, låg temperatur (T3)
   %S28 : "Startg.T2"       ["°C"];  %40028 Startgräns, G1 (T2)                             10*
   %S29 : "Startg.T2direk"  ["°C"];  %40029 Direktstartsgräns, G1 (T2)                      10*
   %S30 : "Stoppg.T2"       ["°C"];  %40030 Stoppgräns, G1 (T2)                             10*
   %S31 : "Startg.T1 hyst"  ["°C"];  %40031 Starthysteres, tillskottsvärme (T1)             10*
   %S32 : "Stoppg.T1 hyst"  ["°C"];  %40032 Stopphysteres, varmvattenladdning (T1)          10*
   %S33 : "Fördröj status"  ["min"]; %40033 Fördröjning Statusförändring kompressor (minuter)
   %S34 : "Motionskör G1"   ["t"];   %40034 Motionskörning, G1 (kalendertimme)
   %S35 : "Startg.T3 ladd"  ["°C"];  %40035 Startgräns, slingtanksladdning (T3)
   %S36 : "Stoppg.T3 ladd"  ["°C"];  %40036 Stoppgräns, slingtanksladdning (T3)
   %S37 : "Ming.T1 ladd"    ["°C"];  %40037 Minbegränsning, T1 vid slingtanksladdning (grader under T1 börvärde)
   %S38 : "Fråntid ladd"    [""];    %40038 Tidskonstant, frånkoppling slingtanksladdning om under minbegränsning
   %S39 : "Startt.A Vard"   [""];    %40039 Tidkanal A-Larm Vardag Fr.o.m. Kl.
   %S40 : "Stoppt.A Vard"   [""];    %40040 Tidkanal A-Larm Vardag T.o.m. Kl.
   %S41 : "Startt.A Lörd"   [""];    %40041 Tidkanal A-Larm Lördag Fr.o.m. Kl.
   %S42 : "Stoppt.A Lörd"   [""];    %40042 Tidkanal A-Larm Lördag T.o.m. Kl.
   %S43 : "Startt.A Sönd"   [""];    %40043 Tidkanal A-Larm Söndag Fr.o.m. Kl.
   %S44 : "Stoppt.A Sönd"   [""];    %40044 Tidkanal A-Larm Söndag T.o.m. Kl.
   %S45 : "Startt.B Vard"   [""];    %40045 Tidkanal B-Larm Vardag Fr.o.m. Kl.
   %S46 : "Stoppt.B Vard"   [""];    %40046 Tidkanal B-Larm Vardag T.o.m. Kl.
   %S47 : "Startt.B Lörd"   [""];    %40047 Tidkanal B-Larm Lördag Fr.o.m. Kl.
   %S48 : "Stoppt.B Lörd"   [""];    %40048 Tidkanal B-Larm Lördag T.o.m. Kl.
   %S49 : "Startt.B Sönd"   [""];    %40049 Tidkanal B-Larm Söndag Fr.o.m. Kl.
   %S50 : "Stoppt.B Sönd"   [""];    %40050 Tidkanal B-Larm Söndag T.o.m. Kl.
   %S51 : "Fördröj Res.A"   [""];    %40051 Fördröjning Reserv A-Larm
   %S52 : "Fördröj Res.B"   [""];    %40052 Fördröjning Reserv B-Larm
   %S53 : "Larmsänd (0-2)"  [""];    %40053 Larmsändning: Från[0], Till[1], Auto[2]
   %S54 : "Startt.Dag Var"  [""];    %40054 Tidkanal Dagtid Vardag Fr.o.m. Kl.
   %S55 : "Stoppt.Dag Var"  [""];    %40055 Tidkanal Dagtid Vardag T.o.m. Kl.
   %S56 : "Startt.Dag Lör"  [""];    %40056 Tidkanal Dagtid Lördag Fr.o.m. Kl.
   %S57 : "Stoppt.Dag Lör"  [""];    %40057 Tidkanal Dagtid Lördag T.o.m. Kl.
   %S58 : "Startt.Dag Sön"  [""];    %40058 Tidkanal Dagtid Söndag Fr.o.m. Kl.
   %S59 : "Stoppt.Dag Sön"  [""];    %40059 Tidkanal Dagtid Söndag T.o.m. Kl.
   %S60 : "Status Dag"      [""];    %40060 Status, dagtidskanal (SMS)
   %S61 : "Max koppl.diff"  ["°C"];  %40061 Maximal kopplingsdifferens (T1)
   %S62 : "Min koppl.diff"  ["°C"];  %40062 Minimal kopplingsdifferens (T1)
   %S63 : "Tid koppl.diff"  [""];    %40063 Tidskonstant för kopplingsdifferens (T1)
   %S64 : "Larm kvittering" [""];    %40064 Larmkvittering (ange no.xx, se larmstatus)
   %S65 : "Larm blockering" [""];    %40065 Larmblockering (ange no.xx, se larmstatus)
   %S66 : "Larm block. av"  [""];    %40066 Larmavblockering (ange no.xx, se larmstatus)
   %S67 : "Larmg.T1reg.avv" ["°C"];  %40067 Larmgräns, regleravvikelse framledning (T1)
   %S68 : "Startfördr.G1FL" [""];    %40068 Startfördröjning, G1 (Framledning)
   %S69 : "Stoppfördr.G1FL" [""];    %40069 Stoppfördröjning, G1 (Framledning)
   %S70 : "Startfördr.E11T" [""];    %40070 Startfördröjning, E11 (Tillskott)
   %S71 : "Stoppfördr.E11T" [""];    %40071 Stoppfördröjning, E11 (Tillskott)
   %S72 : "Larmfördr.T3låg" [""];    %40072 Larmfördröjning, låg temperatur slingtank (T3)
   %S73 : "Larmfördr.T3hög" [""];    %40073 Larmfördröjning, hög temperatur slingtank (T3)
   %S74 : "BV-funk (0-1)"   [""];    %40074 Börvärdesfunktion T1: Kurva[0], Fast[1]
   %S75 : "T7-funk (0-2)"   [""];    %40075 Funktion T7: Från[0], Ute(T2)[1], VV-ackumulator(T7)[2]
   %S76 : "Status Rego5055" [""];    %40076 Status Rego5055 (används ej)
   %S77 : "Stoppg.T3STladd" ["°C"];  %40077 Stoppgräns, slingtanksladdning (T3)           10*
   %S78 : "Ärvärde T5 rum"  ["°C"];  %40078 Ärvärde, T5 rumsgivare                        10*
   %S79 : "Börvärdesförskj" ["°C"];  %40079 Börvärdesförskjutning, T5 rumsgivare          10*
    S80 : "Börvärde T1 FL"  ["°C"];  %40080 Fast börvärde, T1 framledning                 10*
   %S81 : "Ärvärde  T1 FL"  ["°C"];  %40081 Ärvärde, T1 framledning                       10*
   %S82 : "Ärvärde  T2 UTE" ["°C"];  %40082 Ärvärde, T2 ute                               10*
   %S83 : "Ärvärde  T3 ST"  ["°C"];  %40083 Ärvärde, T3 slingtank                         10*
   %S84 : "Klocka minuter"  [""];    %40084 Klocka, minuter [0-59]
   %S85 : "Klocka timmar"   [""];    %40085 Klocka, timmar [0-23]
   %S86 : "Klocka datum"    [""];    %40086 Klocka, datum [1-31]
   %S87 : "Klocka veckodag" [""];    %40087 Klocka, veckodag [1-7, 1=måndag]
   %S88 : "Klocka vecka"    [""];    %40088 Klocka, vecka [1-53]
   %S89 : "Klocka år"       [""];    %40089 Klocka, år [0-99]
   %S90 : "Klocka månad"    [""];    %40090 Klocka, månad [1-12]
   %S91 : "Börv. E21/E22"   ["°C"];  %40091 T3/T4 (E21), T18 (E22) – Börvärde
   %S92 : "Startg.T3SLladd" ["°C"];  %40092 T3 Slingtanksladdning, starthysteres  10*

  PUBLIC

  PRIVATE
    Cnt;

  BAUDRATE 9600;
  CHECKSUM MODBUS SWAPPED;

  TELEGRAM WriteSet NAMED "Ställ register" IS

    QUESTION
      DATA[0] := BYTE(Id);                 % Modbus unit address
      DATA[1] := HEX(06);                  % Modbus command "0x06" write singel register
      DATA[2] <- RWORD(                    % Register address
        IF Cnt>8 THEN Cnt:=0; ENDIF;
        IF    Cnt=0 THEN DATA:=79;         %40080 Fast börvärde, T1 framledning 10*
        ELSIF Cnt=1 THEN DATA:=79;
        ELSIF Cnt=2 THEN DATA:=79;
        ELSIF Cnt=3 THEN DATA:=79;
        ELSIF Cnt=4 THEN DATA:=79;
        ELSIF Cnt=5 THEN DATA:=79;
        ELSIF Cnt=6 THEN DATA:=79;
        ELSIF Cnt=7 THEN DATA:=79;
        ELSIF Cnt=8 THEN DATA:=79;
        ENDIF;
      );
      DATA[4]  <- RWORD(                   % Register value
        IF    Cnt=0 THEN DATA:=(S80*10);   %40080 Fast börvärde, T1 framledning 10*
        ELSIF Cnt=1 THEN DATA:=(S80*10);
        ELSIF Cnt=2 THEN DATA:=(S80*10);
        ELSIF Cnt=3 THEN DATA:=(S80*10);
        ELSIF Cnt=4 THEN DATA:=(S80*10);
        ELSIF Cnt=5 THEN DATA:=(S80*10);
        ELSIF Cnt=6 THEN DATA:=(S80*10);
        ELSIF Cnt=7 THEN DATA:=(S80*10);
        ELSIF Cnt=8 THEN DATA:=(S80*10);
        ENDIF;
        Cnt:=Cnt+1;
      );

    ANSWER SIZE 8
      DATA[0] = BYTE(Id);
      DATA[1] = HEX(06);

    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.