SHARKY 775 (Diehl DE-10-MI004-PTB013)

Detaljer

Typ
Drivrutin
Upplaggd av
Peter Widetun, Abelko Innovation
Version
1
Uppdaterad
2017-03-03
Skapad
2017-03-03
Kategori
Energioptimering, M-bus, Mätare
Visningar
2940

Beskrivning

APPLICATION
The ultrasonic compact energy meter can be used for measuring the energy consumption in heating / cooling application for billing purposes.
FEATURES
> Approval for ultrasonic meter with dynamic range up to 1:250 (qi:qp) in class 2 (depends on meter size), standard 1:100
> Improved power consumption --> longer battery lifetime
> Approved according MID in class 2 and 3 and PTB K 7.2 (cooling)
> High long term stability, tested and verified at independent AGFW test
> Insensitive against dirt
> Versatile possibility of power supply
> Optional with integrated radio, Real Data or Open Metering Standard (868 or 434 MHz)
> Individual remote reading (AMR) with add on modules Plug & Play
> Extensive readable data memory
> 3 communication interfaces (e. g. M-Bus + M-Bus + Radio)
> Significantly improved radio performance

Bruksanvisning

M-bus enheter kopplas via RS485 och konverter till M-bus interface.

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

% SHARKY 775 (Diehl DE-10-MI004-PTB013)
DEVICETYPE energiDeihel NAMED "energiDeihel" TYPEID 170227
IS
% SHARKY 775 (Diehl DE-10-MI004-PTB013)
% Device created 14:46:00 2017-02-27
% Adjusted control of negativ values 170303 (PW)
%
  PARAMETER
    Id :"Address"INT;
  PUBLIC
    IDNr : "ID number"INT;
    rec1 : "Energy"["Wh"]INT;
    rec3 : "Volume"["m³"]DEC2;
    rec4 : "Volume"["m³"]DEC2;
    rec5 : "Power"["W"]DEC2;
    rec6 : "Volume Flow"["m³/h"]DEC2;
    rec7 : "Flow Temperature"["°C"]DEC2;
    rec8 : "Return Temperature"["°C"]DEC2;
    rec9 : "Temperature Difference"["°K"]DEC2;
  PRIVATE
    Exp;
    tmp;
  BAUDRATE 2400;
  PARITY EVEN;
  CHECKSUM SUM8 SKIP 4;
  POSTBYTES 1;

  TELEGRAM Init NAMED "Init" IS
    QUESTION
    DATA[0] := HEX(10);
    DATA[1] := HEX(40);
    DATA[2] := BYTE(Id);
    DATA[3] <- BYTE(DATA :=Id+64;);
    DATA[4] := HEX(16);
  ANSWER SIZE 1
    DATA[0] = HEX(E5);
  TIMEOUT 5000
  END;

  TELEGRAM Read NAMED "Read" IS
    QUESTION
      DATA[0] := HEX(10);
      DATA[1] := HEX(5B);
      DATA[2] := BYTE(Id);
      DATA[3] <- BYTE(DATA :=Id+91;);
      DATA[4] := HEX(16);
    ANSWER SIZE 110
      DATA[0] = HEX(68);
      DATA[1] = HEX(68);
      DATA[2] = HEX(68);
      DATA[3] = HEX(68);
      DATA[4] = HEX(08);
      DATA[5] = BYTE(Id);
      DATA[6] = HEX(72);
      DATA[7] -> BYTE(IDNr := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[8] -> BYTE(IDNr := IDNr + 100*(DATA & HEX(F)) + 1000*(DATA & HEX(F0))/16;);
      DATA[9] -> BYTE(IDNr := IDNr + 10000*(DATA & HEX(F)) + 100000*(DATA & HEX(F0))/16;);
      DATA[10] -> BYTE(IDNr := IDNr + 1000000*(DATA & HEX(F)) + 10000000*(DATA & HEX(F0))/16;);
      DATA[14] = HEX(04);
      % 8 digit BCD 
      DATA[21] -> BYTE(rec1 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[22] -> BYTE(rec1 := rec1 + 100*(DATA & HEX(F)) + 1000*(DATA & HEX(F0))/16;);
      DATA[23] -> BYTE(rec1 := rec1 + 10000*(DATA & HEX(F)) + 100000*(DATA & HEX(F0))/16;);
      DATA[24] -> BYTE(rec1 := rec1 + 1000000*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec1 := 0-rec1; ELSE rec1:=rec1 + 10000000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[20] -> BYTE(Exp := (DATA & 7) - 3; rec1 := rec1*10^Exp;);
      % 8 digit BCD 
      DATA[35] -> BYTE(rec3 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[36] -> BYTE(rec3 := rec3 + 100*(DATA & HEX(F)) + 1000*(DATA & HEX(F0))/16;);
      DATA[37] -> BYTE(rec3 := rec3 + 10000*(DATA & HEX(F)) + 100000*(DATA & HEX(F0))/16;);
      DATA[38] -> BYTE(rec3 := rec3 + 1000000*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec3 := 0-rec3; ELSE rec3:=rec3 + 10000000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[34] -> BYTE(Exp := (DATA & 7) - 6; rec3 := rec3*10^Exp;);
      % 8 digit BCD 
      DATA[41] -> BYTE(rec4 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[42] -> BYTE(rec4 := rec4 + 100*(DATA & HEX(F)) + 1000*(DATA & HEX(F0))/16;);
      DATA[43] -> BYTE(rec4 := rec4 + 10000*(DATA & HEX(F)) + 100000*(DATA & HEX(F0))/16;);
      DATA[44] -> BYTE(rec4 := rec4 + 1000000*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec4 := 0-rec4; ELSE rec4:=rec4 + 10000000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[40] -> BYTE(Exp := (DATA & 7) - 6; rec4 := rec4*10^Exp;);
      % 8 digit BCD 
      DATA[47] -> BYTE(rec5 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[48] -> BYTE(rec5 := rec5 + 100*(DATA & HEX(F)) + 1000*(DATA & HEX(F0))/16;);
      DATA[49] -> BYTE(rec5 := rec5 + 10000*(DATA & HEX(F)) + 100000*(DATA & HEX(F0))/16;);
      DATA[50] -> BYTE(rec5 := rec5 + 1000000*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec5 := 0-rec5; ELSE rec5:=rec5 + 10000000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[46] -> BYTE(Exp := (DATA & 7) - 3; rec5 := rec5*10^Exp;);
      % 6 digit BCD 
      DATA[53] -> BYTE(rec6 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[54] -> BYTE(rec6 := rec6 + 100*(DATA & HEX(F)) + 1000*(DATA & HEX(F0))/16;);
      DATA[55] -> BYTE(rec6 := rec6 + 10000*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec6 := 0-rec6; ELSE rec6:=rec6 + 100000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[52] -> BYTE(Exp := (DATA & 7) - 6; rec6 := rec6*10^Exp;);
      % 4 digit BCD 
      DATA[58] -> BYTE(rec7 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[59] -> BYTE(rec7 := rec7 + 100*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec7 := 0-rec7; ELSE rec7:=rec7 + 1000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[57] -> BYTE(Exp := (DATA & 3) - 3; rec7 := rec7*10^Exp;);
      % 4 digit BCD 
      DATA[62] -> BYTE(rec8 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[63] -> BYTE(rec8 := rec8 + 100*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec8 := 0-rec8; ELSE rec8:=rec8 + 1000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[61] -> BYTE(Exp := (DATA & 3) - 3; rec8 := rec8*10^Exp;);
      % 4 digit BCD 
      DATA[66] -> BYTE(rec9 := (DATA & HEX(F)) + 10*(DATA & HEX(F0))/16;);
      DATA[67] -> BYTE(rec9 := rec9 + 100*(DATA & HEX(F)); IF ((DATA & HEX(F0)) = HEX(F0)) THEN rec9 := 0-rec9; ELSE rec9:=rec9 + 1000*(DATA & HEX(F0))/16; ENDIF;);
      DATA[65] -> BYTE(Exp := (DATA & 3) - 3; rec9 := rec9*10^Exp;);
    TIMEOUT 5000
  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.