Caliopump Modbus

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
6
Uppdaterad
2015-04-21
Skapad
2015-01-19
Kategori
Modbus, Värme
Visningar
3459

Beskrivning

Drivrutin till Calio cirkulationspumpar

Bruksanvisning

Modbus kan alltid läsas från enheten men för styrning måste pumpen sättas i driftläge Modbus i displayen. OBSERVERA prioritet för styrning:
1. extern start/stop och bryggkoppling
2. Börvärdesinst via 0-10V
3. Manuella inställningar via displayen
4. Inställningar via Modbus

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.
%
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/10;);
    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.