Calio pump

Detaljer

Typ
Drivrutin
Upplaggd av
Peter Widetun, Abelko Innovation
Version
2
Uppdaterad
2015-12-04
Skapad
2015-11-19
Kategori
IO enheter, Modbus, Vatten och avlopp
Visningar
2832

Beskrivning

% Skapad med Modbus Creator (Korrigerat manuellt 150319 PW)
%
OBS! Användaren ansvarar själv för att samma TYPID inte används flera gånger i samma apparat.
TYPID 10000-19999 är för användardefinierade enheter
Caliopumpen har default adress 17 och kommunicerar med 19200-8-Even-1
150319 (PW) Korrigerat fel i "Write register" och ändrat så att alla register skrivs med multikommando.
151119 (PW) Korrigerat fel i "Read register" Varvtal anges som heltal inte med 1 decimal.
DEVICETYPE Calio NAMED "Calio" TYPEID 14396 IS

Bruksanvisning

Modbusskript för Calio pump.

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

% Skapad med Modbus Creator (Korrigerat manuellt 150319 PW)
%
% - OBS! Användaren ansvarar själv för att samma TYPID inte används flera gånger i samma apparat.
%   TYPID 10000-19999 är för användardefinierade enheter
%
% Caliopumpen har default adress 17 och kommunicerar med 19200-8-Even-1
%
% 150319 (PW) Korrigerat fel i "Write register" och ändrat så att alla register skrivs med multikommando.
% 151119 (PW) Korrigerat fel i "Read register" Varvtal anges som heltal inte med 1 decimal.
%
DEVICETYPE Calio NAMED "Calio" TYPEID 14396 IS

   PARAMETER
    Id : "Adress";
    V6 : "Driftläge" [""]; % 1=konstant tryckreglering, 4=proportionell tryckreglering (default), 8= eco mode, 16=fast varvtalsdrift
   V7 : "Börvärde" ["%"]; % 0-9999 motsv 0-100%
   V8 : "StartStop" [""]; % 0=stop, 1=start (5=stopp, 160=start)

   PUBLIC
    V1 : "SummaLarm" [""];
    V2 : "Uppfodringshöjd" ["m"]DEC1;
    V3 : "Flöde" ["m3/h"]DEC1;
    V4 : "Varvtal" ["per min"]DEC1;
    V5 : "Belastning" ["%"];
    E01 : "Temp överskriden" [""];
    E02 : "Överström" [""];
    E03 : "Internt fel" [""];
    E04 : "Rotor blockerad" [""];
    E05 : "Överbelast/anpassat varvtal" [""];
    E06 : "Spänning hög/låg" [""];

   PRIVATE
    count6;
    count10;

   BAUDRATE 19200;
   PARITY EVEN;
   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 kod 03
   DATA[2] := RWORD(2000); % Start address
   DATA[4] := RWORD(15); % Antal register att läsa
  ANSWER SIZE 35 % (Antal register * 2) + 5
   DATA[0] = BYTE(Id);
    DATA[1] = BYTE(03);
    DATA[2] = BYTE(30); % Antal Bytes
   DATA[3] -> RWORD(
     IF (DATA & 1)  THEN E01:=1; ELSE E01:=0; ENDIF;
     IF (DATA & 2)  THEN E02:=1; ELSE E02:=0; ENDIF;
     IF (DATA & 4)  THEN E03:=1; ELSE E03:=0; ENDIF;
     IF (DATA & 8)  THEN E04:=1; ELSE E04:=0; ENDIF;
     IF (DATA & 16) THEN E05:=1; ELSE E05:=0; ENDIF;
     IF (DATA & 32) THEN E06:=1; ELSE E06:=0; ENDIF;   
     V1 := DATA;
     );
     DATA[7]  -> RWORD(V2 := DATA/10;);
     DATA[11] -> RWORD(V3 := DATA/10;);
     DATA[19] -> RWORD(V4 := DATA;);
     DATA[31] -> RWORD(V5 := DATA;);
    TIMEOUT 1000
   END;

  TELEGRAM WriteRegister NAMED "Write Register" IS
   QUESTION
     DATA[0] := BYTE(Id);     % Enhetens Modbus adress
    DATA[1] := HEX(10);      % Modbus kommando för att skriva flera register
    DATA[2] := RWORD(2100);  % Register adress
    DATA[4] := RWORD(3);     % Antal register att skriva 2100, 2101, 2102
    DATA[6] := BYTE(6);      % antal data bytes 
    DATA[7] <- RWORD(
       IF    V6=1  THEN DATA:=1;         % Driftläge 1  = Konstant tryck 
      ELSIF V6=8  THEN DATA:=8;         % Driftläge 8  = Eco mode 
      ELSIF V6=16 THEN DATA:=16;        % Driftläge 16 = Termostat drift 
      ELSE             DATA:=4;         % Driftläge 1  = Proportionell tryckreglering 
      ENDIF;
     );
     DATA[9] <- RWORD(
       IF    V7<0     THEN DATA:=0;      % Börvärde 0-100%
      ELSIF V7>99.99 THEN DATA:=9999; 
       ELSE                DATA:=V7*100;
       ENDIF;
     );
     DATA[11] <- RWORD(
       IF    V8=1 THEN DATA:=160;       % Pump start = 0xA0
      ELSE            DATA:=5;         % Pump stopp = 0x05
      ENDIF; 
     );

   ANSWER SIZE 8
     DATA[0] = BYTE(Id);     % Id
    DATA[1] = HEX(10);      % Command
   %DATA[2] = RWORD(2100);  % Starting Adress
   %DATA[4] = RWORD(3);     % Number of registers
  
   TIMEOUT 1000
   END;
END; %Caliopump

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.