Vallox Air Handling Unit Read

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
6
Uppdaterad
2016-05-11
Skapad
2014-02-25
Kategori
Övriga protokoll, Värme, Ventilation
Visningar
2797

Beskrivning

This is a partial driver for a Vallox air handling unit.
The protocol is Vallox Bus Protocol 31.12.20013.

OBS! The unit uses NTC temperature sensors with their own translation table. This driver implements a formula that gives resonable values in the 0-30 degrees Celsius range.

Values:
- Input fan (1=on, 0=off)
- output fan (1=on, 0=off)
- Supply air after cell temperature
- Exhaust air temperature
- Extract air temperature
- Error number
- Heating target temperature
- Cell defrosting (1=on, 0=off)
- Freezing prevention (1=on, 0=off)
- Supply setting temperature

Bruksanvisning

Sender emulates a control panel with address 33-47.
Receiver is one of the units mother boards with address 17-31.

The script has been tested with sender=41 and reciever=17.

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

DEVICETYPE VALLOX NAMED "VALLOX" TYPEID 22117 IS
 PARAMETER
  Sender: "Sender";
  Receiver: "Receiver";
 PUBLIC
  V1: "Input fan"; % 1=on, 0=off
  V2: "output fan"; % 1=on, 0=off
  V3: "supply after cell" ["°C"]INT;
  V4: "Exhaust temp" ["°C"]INT;
  V5: "Extract temp" ["°C"]INT;
  V6: "Error number"; 
  V7: "Heating target" ["°C"]INT;
  V8: "Cell defrosting"; % 1=on, 0=off - 6DH kytkin pien. nop. -pyyntö
  V9: "Freeze prevention"; % 1=on, 0=off - 6FH vesipatterin jäätymishälytys
  V10: "Supply setting" ["°C"]INT;
  V11: "After heating" [""]INT;
  V12: "Exchanger bypass" [""]INT;
  
 PRIVATE
  count;
  tmp;
 BAUDRATE 9600;
 CHECKSUM SUM8;
 TELEGRAM ReadDS NAMED "ReadDS" IS
  QUESTION
   DATA[0] := BYTE(1); %Domain
   DATA[1] := BYTE(Sender);
   DATA[2] := BYTE(Receiver);
   DATA[3] := BYTE(0); % Requests are always zero
   DATA[4] <- BYTE(
    IF count > 9 THEN count := 0; ENDIF;
    IF count = 0 THEN tmp := HEX(08);
     ELSIF count = 1 THEN tmp := HEX(31);
     ELSIF count = 2 THEN tmp := HEX(33);
     ELSIF count = 3 THEN tmp := HEX(34);
     ELSIF count = 4 THEN tmp := HEX(36);
     ELSIF count = 5 THEN tmp := HEX(57);
     ELSIF count = 6 THEN tmp := HEX(6D);
     ELSIF count = 7 THEN tmp := HEX(6F);
     ELSIF count = 8 THEN tmp := HEX(A4);
 ELSIF count = 9 THEN tmp := HEX(07);
    ENDIF;
    DATA := tmp;
   );
  ANSWER SIZE 6
   DATA[0] = BYTE(1);
   DATA[1] = BYTE(Receiver);
   DATA[2] = BYTE(Sender);
   DATA[4] -> BYTE(
    IF count = 0 THEN
      IF DATA & 1 THEN V12 := 0; ELSE V12 := 1; ENDIF;
      IF DATA & 8 THEN V1 := 0; ELSE V1 := 1; ENDIF;
      IF DATA & 32 THEN V2 := 0; ELSE V2 := 1; ENDIF;
    ELSIF count = 1 THEN V3 := ROUND(18 + ((DATA - 155) * 4 / 11));
    ELSIF count = 2 THEN V4 := ROUND(18 + ((DATA - 155) * 4 / 11));
    ELSIF count = 3 THEN V5 := ROUND(18 + ((DATA - 155) * 4 / 11));
    ELSIF count = 4 THEN V6 := DATA;
    ELSIF count = 5 THEN V7 := ROUND(18 + ((DATA - 155) * 4 / 11));
    ELSIF count = 6 THEN
     IF DATA & 16 THEN V8 := 1; ELSE V8 := 0; ENDIF;
    ELSIF count = 7 THEN 
     IF DATA & 16 THEN V9 := 1; ELSE V9 := 0; ENDIF;
    ELSIF count = 8 THEN V10 := ROUND(18 + ((DATA - 155) * 4 / 11));
ELSIF count = 9 THEN 
     IF DATA & 32 THEN V11 := 1; ELSE V11 := 0; ENDIF;
    ENDIF;
    count := count + 1;
   );
  TIMEOUT 1000
 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.