Caliopump Modbus
Detaljer
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
%
% - 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.