DEVICETYPE i121c NAMED "MTA iCHILL 121C" TYPEID 10807 IS PARAMETER Id : "Adress"; PUBLIC V1 : "On" [""]INT; %1281 bit 0, 1=on V2 : "Real SP" ["°C"]; %1537 V3 : "Chiller SP" ["°C"]; % 1538 V4 : "Heat pump SP" ["°C"]; % 1539 V5 : "Alarm relay" [""]INT; % 2049 bit 11 V6 : "Compressor 1" [""]INT; % 2050 bit 8 relay V7 : "Compressor 2" [""]INT; % 2050 bit 9 relay V8 : "Delivery fan" [""]INT; % 2050 bit 10 relay V9 : "Condensing fan" [""]INT; % 2050 bit 11 relay V10 : "Anti-freeze" [""]INT; % 2050 bit 12 relay V11 : "Pump" [""]INT; % 2050 bit 13 relay V12 : "Solenoid valve" [""]INT; % 2050 bit 14 relay on the water side V13 : "Funct. alarms" [""]; % 3332-3334 collective functional alarms PRIVATE count4; tmp; BAUDRATE 9600; CHECKSUM MODBUS SWAPPED; TELEGRAM Read NAMED "Read" IS QUESTION DATA[0] := BYTE(Id); DATA[1] := HEX(03); DATA[2] <- RWORD( IF(count4>5) THEN count4 := 0; ENDIF; IF (count4=0) THEN tmp := 1281; ELSIF (count4=1) THEN tmp := 1537; ELSIF (count4=2) THEN tmp := 1538; ELSIF (count4=3) THEN tmp := 1539; ELSIF (count4=4) THEN tmp := 2049; ELSIF (count4=5) THEN tmp := 2050; ENDIF; DATA:= tmp; ); DATA[4] := RWORD(1); ANSWER SIZE 7 DATA[0] = BYTE(Id); DATA[1] = BYTE(03); DATA[3] -> RWORD( IF (count4=0) THEN IF DATA&1 THEN V1:=1; ELSE V1:=0; ENDIF; ELSIF (count4=1) THEN V2:=DATA/10; ELSIF (count4=2) THEN V3:=DATA/10; ELSIF (count4=3) THEN V4:=DATA/10; ELSIF (count4=4) THEN IF DATA&2048 THEN V5:=1; ELSE V5:=0; ENDIF; ELSIF (count4=5) THEN IF DATA&256 THEN V3:=1; ELSE V3:=0; ENDIF; IF DATA&512 THEN V4:=1; ELSE V4:=0; ENDIF; IF DATA&1024 THEN V5:=1; ELSE V5:=0; ENDIF; IF DATA&2048 THEN V6:=1; ELSE V6:=0; ENDIF; IF DATA&4096 THEN V7:=1; ELSE V7:=0; ENDIF; IF DATA&8192 THEN V8:=1; ELSE V8:=0; ENDIF; IF DATA&16384 THEN V9:=1; ELSE V9:=0; ENDIF; IF DATA&32768 THEN V10:=1; ELSE V10:=0; ENDIF; IF DATA&65536 THEN V11:=1; ELSE V11:=0; ENDIF; IF DATA&131072 THEN V12:=1; ELSE V12:=0; ENDIF; ENDIF; count4 := count4+1; ); TIMEOUT 300 END; TELEGRAM Read2 NAMED "Read2" IS QUESTION DATA[0] := BYTE(Id); DATA[1] := HEX(03); DATA[2] := RWORD(3332); DATA[4] := RWORD(3); ANSWER SIZE 11 DATA[0] = BYTE(Id); DATA[1] = BYTE(03); DATA[3] -> RWORD( tmp:=DATA; ); DATA[5] -> RWORD( tmp:=tmp+DATA; ); DATA[7] -> RWORD( tmp:=tmp+DATA; IF tmp>0 THEN V13:=1; ELSE V13:=0; ENDIF; ); TIMEOUT 300 END; END;