JEFF RD-KMK

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
1
Uppdaterad
2013-08-27
Skapad
2013-08-27
Kategori
Modbus, Övrig utrustning
Visningar
2531

Beskrivning

Device definition for JEFF RD-KMK

Bruksanvisning

Jeff RD-KMK Modbus Installations- och användarmanual v1.30 (pdf)

Notering!
Summalarm har status 0 för LARM och status 1 för NORMAL
Läst "Börvärde SV1" antas ha värde 0-100% !!!

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 JEFF RD-KMK
% Read registers 1-9 analog values and 16-17 digital values          
%
% Settings module:
%       Parity: None
%       Baud:   9600
%       Mode:   RTU
%
% Notering!
% Summalarm har status 0 för LARM och status 1 för NORMAL
% Läst "Börvärde SV1" antas ha värde 0-100% !!!
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2009-06-10 inital version
%
DEVICETYPE JeffData NAMED "JEFF data" TYPEID 21310 IS

  PARAMETER
    Id  : "Adress";

   %S1  : "Börvärde";

  PUBLIC
    
    % Analoga värden
    R1 : "GT1 Temp Framl."["°C"]; % 1 Givare GT1, Framledning till KMK, -30,0  70,0 °C
    R2 : "GT2 Temp Retur" ["°C"]; % 2 Givare GT2, Retur från KMK        -30,0  70,0 °C
    R3 : "GT3 Temp Ute"   ["°C"]; % 3 Givare GT3, Utetemperatur         -30,0  70,0 °C
    R4 : "GT4 Temp Ventil"["°C"]; % 4 Givare GT4, Trevägsventil         -30,0  70,0 °C
    R5 : "GT5 Temp"       ["°C"]; % 5 Givare GT5                        -30,0  70,0 °C
    R6 : "Analog IN"      ["%"];  % 6 Analog ingång 6 0-10V               0   100   %
    R7 : "Analog UT 1"    ["%"];  % 7 Analog utgång 1                     0   100   %
    R8 : "Analog UT 2"    ["%"];  % 8 Analog utgång 2                     0   100   %
    R9 : "Börvärde SV1"   ["%"];  % 9 Börvärde SV1                        0   100,0

% Digitala status
                       % 15 Relästatus,        0    1
D1 : "Fläktsetg 1";    %    bit 1 Fläktsteg 1 FRÅN/TILL
D2 : "Fläktsetg 2";    %    bit 2 Fläktsteg 2 FRÅN/TILL
D3 : "Fläktsetg 3";    %    bit 3 Fläktsteg 3 FRÅN/TILL
D4 : "Fläktsetg 4";    %    bit 4 Fläktsteg 4 FRÅN/TILL
D5 : "Relä 5"     ;    %    bit 5 Relä      5 FRÅN/TILL
D6 : "Boosterpump";    %    bit 6 Boosterpump FRÅN/TILL
D7 : "Summalarm";      %    bit 7 Summalarm   Larm/Normal

                       % 16 Digitala ingångar D0, D1           0    1
D8 : "Förregling KMK"; %    bit 1 Förregling från kylmaskiner FRÅN/TILL
D9 : "Larmingång CP";  %    bit 2 Larmingång CP               FRÅN/TILL

  PRIVATE
  
  BAUDRATE 9600;

  CHECKSUM MODBUS SWAPPED;

  TELEGRAM DataIn1 NAMED "Läs analog data" 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 1-1
      DATA[4]  := RWORD(9);      % Number of registers

    ANSWER SIZE 23
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
     %DATA[2]   = BYTE(18);      % Byte count
      DATA[3]  -> RWORD(IF DATA > 32767 THEN    % Negativ ?
                          R1 := (DATA - 65536) / 10;
                        ELSE    
                          R1 := DATA / 10;
                        ENDIF;
                        );
      DATA[5]  -> RWORD(IF DATA > 32767 THEN    % Negativ ?
                          R2 := (DATA - 65536) / 10;
                        ELSE    
                          R2 := DATA / 10;
                        ENDIF;
                        );
      DATA[7]  -> RWORD(IF DATA > 32767 THEN    % Negativ ?
                          R3 := (DATA - 65536) / 10;
                        ELSE    
                          R3 := DATA / 10;
                        ENDIF;
                        );
      DATA[9]  -> RWORD(IF DATA > 32767 THEN    % Negativ ?
                          R4 := (DATA - 65536) / 10;
                        ELSE    
                          R4 := DATA / 10;
                        ENDIF;
                        );
      DATA[11] -> RWORD(IF DATA > 32767 THEN    % Negativ ?
                          R5 := (DATA - 65536) / 10;
                        ELSE    
                          R5 := DATA / 10;
                        ENDIF;
                        );
      DATA[13]  -> RWORD(R6 := DATA;);
      DATA[15]  -> RWORD(R7 := DATA;);
      DATA[17]  -> RWORD(R8 := DATA;);
      DATA[19]  -> RWORD(R9 := DATA;);

    TIMEOUT 1000

  END;

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

    ANSWER SIZE 9
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
     %DATA[2]   = BYTE(4);       % Byte count
      DATA[3]  -> RWORD(IF DATA AND  1 THEN D1:=1; ELSE D1:=0; ENDIF;
                        IF DATA AND  2 THEN D2:=1; ELSE D2:=0; ENDIF;
                        IF DATA AND  4 THEN D3:=1; ELSE D3:=0; ENDIF;
                        IF DATA AND  8 THEN D4:=1; ELSE D4:=0; ENDIF;
                        IF DATA AND 16 THEN D5:=1; ELSE D5:=0; ENDIF;
                        IF DATA AND 32 THEN D6:=1; ELSE D6:=0; ENDIF;
                        IF DATA AND 64 THEN D7:=1; ELSE D7:=0; ENDIF;
                        );
      DATA[5]  -> RWORD(IF DATA AND  1 THEN D8:=1; ELSE D8:=0; ENDIF;
                        IF DATA AND  2 THEN D9:=1; ELSE D9:=0; ENDIF;
                        );

    TIMEOUT 1000

  END;


  %TELEGRAM DataUt NAMED "Ställ börvärde" IS
  %  
  %  QUESTION
  %    DATA[0] := BYTE(Id);      % Modbus unit address
  %    DATA[1] := BYTE(6);       % Modbus command "06h" Write singel register
  %    DATA[2] := RWORD(30);     % Start address register 31-1
  %    DATA[4] := RWORD(S1);     % Börvärde temp 5-50
  %
  %  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.