Produal IML-m

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
4
Uppdaterad
2018-11-21
Skapad
2016-09-22
Kategori
Modbus, Ventilation
Visningar
2234

Beskrivning

Skript för att läsa mätvärden och sätta börvärdet till IML-M:
IML-M med Modbus, för mätning och styrning av luftmängder i luftbehandlingsaggregat. Transmittern innehåller förkonfigurerade karakteristiker för de mest förekommande fabrikaten av fläktar på marknaden och en allmän formel för flödes volymer. Displayen visar alternerande luftmängd och differenstryck eller önskad enhet kan låsas till visningen. Bra nogranhett av mätningen garanteras av den automatiska nollpunktskalibreringen. Lämpligt mätområde kan väljas vid drifttagningen i fyra olika områden.

Bruksanvisning

Ställ in m3/h som enhet
Kompletterande skript för att läsa och ställa P och I värden

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
% - 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
DEVICETYPE IMLm NAMED "IMLm" TYPEID 18947 IS

 PARAMETER
  Id       : "Adress" [""]INT;
  V5 : "Modbus SP" ["%"]DEC1; % can take 10.000 writes!

 PUBLIC
  V1 : "Pressure" ["Pa"];
  V2 : "Flow" ["m3/h"]; % Shows for selected unit
  V3 : "External SP" ["V"]DEC1;
  V4 : "Internal SP" ["%"];

 PRIVATE
  count6;

 BAUDRATE 9600;
 CHECKSUM MODBUS SWAPPED;

 TELEGRAM Read4 NAMED "Read 4" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(04); % Modbus kommando för att läsa register kod 04
   DATA[2] := RWORD(0); % Start address
   DATA[4] := RWORD(4); % Antal register att läsa
  ANSWER SIZE 13 % (Antal register * 2) + 5
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(04);
   DATA[2] = BYTE(8); % Antal Bytes
   DATA[3] -> RWORD(IF (DATA>=32768) THEN V1:=(DATA-65536); ELSE V1:=DATA; ENDIF;);
   DATA[5] -> RWORD(IF (DATA>=32768) THEN V2:=(DATA-65536); ELSE V2:=DATA; ENDIF;);
   DATA[7] -> RWORD(IF (DATA>=32768) THEN V3:=(DATA-65536)/10; ELSE V3:=DATA/10; ENDIF;);
   DATA[9] -> RWORD(IF (DATA>=32768) THEN V4:=(DATA-65536); ELSE V4:=DATA; ENDIF;);
  TIMEOUT 300
 END;

 TELEGRAM WriteRegister NAMED "Write Register" IS
  QUESTION
   DATA[0] := BYTE(Id); % Enhetens Modbus adress
   DATA[1] :=  HEX(06); % Modbus kommando för att skriva ett register
   DATA[2] <- RWORD(
    IF(count6>0) THEN count6 := 0; ENDIF;
    IF (count6=0) THEN DATA := 11;
    ENDIF;
   ); % Register adress
   DATA[4] <- RWORD(
    IF (count6=0) THEN IF (V5<0) THEN DATA := ROUND((V5*10)+65536); ELSE DATA := ROUND(V5*10); ENDIF;
    ENDIF;
    count6 := count6+1;
   );
  ANSWER SIZE 8
   DATA[0] = BYTE(Id);
   DATA[1] = BYTE(06);
  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.