Calec ST II
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Peter Widetun, Abelko Innovation
- Version
- 1
- Uppdaterad
- 2017-05-29
- Skapad
- 2017-05-29
- Kategori
- Modbus
- Visningar
- 2852
Beskrivning
Läser energi, volym, massa, effekt, flöde, temp värme och temp kyla.
Skriptet förberett för inläsning av samtliga register vilket innefattar 3 energier, 2 volymer, 3 räkneverk, 3 temperaturer, massa, effekt, flöde volym, flöde massa och densitet.
Eget telegram för läsning status. som kan utökas för inläsning av t.ex. drift-tid och larm-tid.
Skriptet använder modulens default-inställning: 19200 baud och jämn paritet.
Bruksanvisning
Aktivering av telegram för status-inläsning ger uppdatering enligt inställt intervall.
För "Läs värden" telegrammet bör intervallet väljas till 1 sekund. Det innebär att varje värdet blir uppdaterat var 7:e sekund, eftersom bara ett värde läses per sekund.
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 CALEC ST II
%
% General device parameters
% 0 Device C0=ST, C1=MASSE, C2=Flow, C4=BDE, C7=TGR, C8=BDV, C9=DTF
% 1 Status 0=OK, 1=ERROR, 2=ALARM
% 2 Medium 04=Cold, 0C=Heat, 07=Water, 0F=Unknown
% 4-5 Serial Number 0…99999999
% 6-7 Operating hours 0…99999999
% 8-9 Error hours 0…99999999
% 10-11 Alarm hours 0…99999999
% 12-13 Firmware Version
% 14-15 Hardware Version
% 20 Address 1-247
% 21 Baud rate 0=300, 1=2400, 2=9600, 3=19200, 4=38400
% 22 Parity 0=even, 1=odd, 2=none
%
% IEEE754 Float values represented in 2 registers,
% unit readable in next register: 0=kWh, 1=m3, 2=t(ton), 3=no unit, 10=kW, 11=m3/h, 12=t/h, 13=°C, 14=K, 15=kg/m3
% 100-101, 102 Energy 1 [KWh]
% 110-111, 112 Energy 2 [KWh] (BDE, BDV, DTF, TGR)
% 120-121, 122 Energy 3 [KWh] (BDE, BDV, DTF, TGR)
% 200-201, 202 Volume 1 [m3]
% 210-211, 212 Volume 2 [m3] (BDE, BDV, DTF)
% 300-301, 302 Mass [t]
% 400-401, 402 Counter 1 [kwh]=0, [m3]=1, [t]=2, No unit=3
% 410-411, 412 Counter 2 [kwh]=0, [m3]=1, [t]=2, No unit=3
% 420-421, 422 Counter 3 [kwh]=0, [m3]=1, [t]=2, No unit=3
% 500-501, 502 Power [KW]
% 600-601, 602 Volume flow [m3/h]
% 700-701, 702 Mass flow [t/h]
% 800-801, 802 Temp Hot [°C]
% 810-811, 812 Temp Cold [°C]
% 820-821, 822 Temp diff [K]
% 900-901, 902 Density [kg/m3]
%
% Settings module:
% Parity: Even
% Baud: 19200
% Mode: RTU
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2017-05-29 inital version
%
DEVICETYPE CALEC_STII NAMED "Calec_ST_II" TYPEID 21490 IS
PARAMETER
Id : "Adress";
PUBLIC
%R0 : "Enhetstyp" ; % C0=ST, C1=MASSE, C2=Flow, C4=BDE, C7=TGR, C8=BDV, C9=DTF
R1 : "Status" ; % 0=OK, 1=ERROR, 2=ALARM
%R2 : "Medium" ; % 04=Cold, 0C=Heat, 07=Water, 0F=Unknown
%R4 : "Ser_Nummer" ; % 0…99999999, 2 registers
%R6 : "Op_tid" ; % 0…99999999, 2 registers
%R8 : "Fel_tid" ; % 0…99999999, 2 registers
%R10 : "Larm_tid" ; % 0…99999999, 2 registers
%R12 : "SW_Ver" ; % , 2 registers
%R14 : "HW_Ver" ; % , 2 registers
%R20 : "Adress" ; % 1-247
%R21 : "Baudrate" ; % 0=300, 1=2400, 2=9600, 3=19200, 4=38400
%R22 : "Paritet" ; % 0=even, 1=odd, 2=none
R100 : "Energi_1" ["kWh"] ; % IEEE754 Float values, 2 registers (4 bytes)
%R110 : "Energi_2" ["kWh"] ;
%R120 : "Energi_3" ["kWh"] ;
R200 : "Volym_1" ["m3"] ;
%R210 : "Volym_2" ["m3"] ;
R300 : "Massa" ["t"] ;
%R400 : "Räknare_1" ["kWh"] ; % [kwh]=0, [m3]=1, [t]=2, No unit=3
%R410 : "Räknare_2" ["kWh"] ; % [kwh]=0, [m3]=1, [t]=2, No unit=3
%R420 : "Räknare_3" ["kWh"] ; % [kwh]=0, [m3]=1, [t]=2, No unit=3
R500 : "Effekt" ["kW"] ;
R600 : "Flöde" ["m3/h"] ; % Flöde volym m3 per timme
%R700 : "Flöde" ["t/h"] ; % Flöde mass ton per timme
R800 : "Temp_Varm" ["°C"] ;
R810 : "Temp_Kall" ["°C"] ;
%R820 : "Temp_Diff" ["K"] ;
%R900 : "Densitet" ["kg/m3"];
PRIVATE
cnt;
tmp;
BAUDRATE 19200;
PARITY EVEN;
CHECKSUM MODBUS SWAPPED;
TELEGRAM CValues NAMED "Läs värden" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := BYTE(3); % Modbus kommando för att läsa register
DATA[2] <- RWORD( % Start adress register to read
cnt := cnt + 1;
IF (cnt>6) THEN cnt := 0; ENDIF;
IF (cnt=0) THEN tmp := 100; % 0 Energi_1
ELSIF (cnt=1) THEN tmp := 200; % 1 Volym_1
ELSIF (cnt=2) THEN tmp := 300; % 2 Massa
ELSIF (cnt=3) THEN tmp := 500; % 3 Effekt
ELSIF (cnt=4) THEN tmp := 600; % 4 Flöde_volym
ELSIF (cnt=5) THEN tmp := 800; % 5 Temp_Het
ELSE tmp := 810; % 6 Temp_Kall
ENDIF;
DATA:= tmp;
);
DATA[4] := RWORD(2); % Läs 2 register, IEEE754 Float values
ANSWER SIZE 9 % 5 + 2*antal register
DATA[0] = BYTE(Id); % Check ID
DATA[1] = BYTE(3); % Check kommando
%DATA[2] = BYTE(4); % Check antal byte
DATA[3] -> FLOAT( % Uppdatera värde
IF (cnt=0) THEN R100 := DATA; % 0 Energi_1
ELSIF (cnt=1) THEN R200 := DATA; % 1 Volym_1
ELSIF (cnt=2) THEN R300 := DATA; % 2 Massa
ELSIF (cnt=3) THEN R500 := DATA; % 3 Effekt
ELSIF (cnt=4) THEN R600 := DATA; % 4 Flöde_volym
ELSIF (cnt=5) THEN R800 := DATA; % 5 Temp_Het
ELSIF (cnt=6) THEN R810 := DATA; % 6 Temp_Kall
ENDIF;
);
TIMEOUT 300
END;
TELEGRAM CStatus NAMED "Läs status" IS
QUESTION
DATA[0] := BYTE(Id); % Enhetens Modbus adress
DATA[1] := BYTE(3); % Modbus kommando för att läsa register
DATA[2] := RWORD(1); % Start adress register att läsa
DATA[4] := RWORD(1); % Antal register
ANSWER SIZE 7 % 5 + (2*antal register)
DATA[0] = BYTE(Id); % Check Id
DATA[1] = BYTE(3); % Check kommando
%DATA[2] = BYTE(2); % Check antal byte
DATA[3] -> RWORD(R1 := DATA;); % Uppdatera status
TIMEOUT 300
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.