Mitsubishi värmepump med Procon A1M Modbus modul del 1
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 3
- Uppdaterad
- 2016-09-06
- Skapad
- 2016-09-06
- Kategori
- Kyla, Modbus, Värme, Ventilation
- Visningar
- 3406
Beskrivning
Detta skript är skapat för IMSE UltraBase30/IPX3
Bruksanvisning
.
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 ProconA1Mp1 NAMED "ProconA1Mp1" TYPEID 13029 IS
PARAMETER
Id : "Adress" [""]INT;
PUBLIC
V1 : "Fault Code (decimal) " [""]; % 8000 = No error 6999 = Bad communication with indoor unit (Refer to indoor unit documentation for description of other fault code values)
V2 : "System Type Detected" [""]; % 0 = ATA 1 = ATW
V3 : "Deadband enabled state" [""]; % 0=off 1=on
V4 : "BMS Room Temperature (signed)" ["°C"]DEC1;
V5 : "BMS Virtual Setpoint" ["°C"]DEC1;
V6 : "Deadband Heating Setpoint" ["°C"]DEC1; % Temperature in ºC (default 19ºC). Value must be at least 2ºC lower than the Deadband Cooling Setpoint.
V7 : "Deadband Cooling Setpoint" ["°C"]DEC1; % Temperature in ºC (default 23ºC). Value must be at least 2ºC higher than the Deadband Heating Setpoint
V8 : "System On/Off" [""]; % 0 = System OFF 1 = System ON 2 = Emergency Run (read only value) 3 = Test Run (read only value)
V9 : "Operating Mode" [""]; % 0 = Stop 1 = Hot Water 2 = Heating 3 = Cooling 5 = Freeze Stat 6 = Legionella 7 = Heating-Eco
V10 : "Operating Mode (DHW)" [""]; % 0 = Normal 1 = Eco
V11 : "A/C Mode – Zone 1" [""]; % 0 = Heating Room Temp 1 = Heating Flow Temp 2 = Heating Heat Curve 3 = Cooling Room Temp (not on 13K model) 4 = Cooling Flow Temp 5 = Floor Dryup
V12 : "A/C Mode – Zone 2" [""]; % 0 = Heating Room Temp 1 = Heating Flow Temp 2 = Heating Heat Curve 3 = Cooling Room Temp (not on 13K model) 4 = Cooling Flow Temp 5 = Floor Dryup
V13 : "Set Tank Water Temperature (signed)" ["ºC"]DEC2;
V14 : "H/C Thermostat Target Temperature – Zone 1 (signed)" ["ºC"]DEC2;
V15 : "H/C Thermostat Target Temperature – Zone 2 (signed)" ["ºC"]DEC2;
V16 : "MRC Prohibit " [""]; % Bit packed value: Bit 0 – System On/Off (0 = ON, 1 = Prohibit) Bit 1 – Running Mode (0 = ON, 1 = Prohibit) Bit 2 – Setting Temp (0 = ON, 1 = Prohibit) Bit 3 – Undefined (always 0) Bit 4 – Function Setting (0 = Normal, 1 = Function Setting) Bits 5, 6 and 7 – Undefined (always 0) (Before using this register see note ††)
V17 : "Force DHW" [""]; % 8 0 = Normal 1 = Force DHW
V18 : "Holiday" [""]; % 0 = Normal 1 = Holiday
V19 : "DHW On Prohibit" [""]; % 0 = On 1 = Prohibit
V20 : "Heating On Prohibit – Zone 1" [""]; % 0 = On 1 = Prohibit
V21 : "Cooling On Prohibit – Zone 1" [""]; % 0 = On 1 = Prohibit
V22 : "Heating On Prohibit – Zone 2" [""];
V23 : "Cooling On Prohibit – Zone 2" [""];
V24 : "Capacity Mode" [""]; % 6 0 = COP priority 1 = Capacity priority
V25 : "Capacity Control Ratio" ["%"];
V26 : "Fan Mode" [""]; % 0 = Ordinary 1 = Coercion
V27 : "Current Hour" [""];
V28 : "Current Minute" [""];
V29 : "Outdoor Temperature By BMS (signed)" ["ºC"]DEC1;
V30 : "Setting Water Temperature (signed)" ["ºC"]DEC2;
V31 : "Thermostat Target Temperature – Zone 1 (signed)" ["ºC"]DEC2;
V32 : "Thermostat Target Temperature – Zone 2 (signed)" ["ºC"]DEC2;
V33 : "HC Control Type" [""]; % 0 = Heating 1 = Cooling
V34 : "Defrost" [""]; % 0 = Normal 1 = Standby 2 = Defrost 3 = Waiting Restart
V35 : "Residual Heat Removal" [""]; % 0 = Normal 1 = Prepared 2 = Residual Heat Removal
V36 : "Refrigerant Error Info" [""]; % 0 = Normal 1 = Error (System) 2 = Error (Startup) 3 = Maintenance Error
V37 : "7-Segment Display Error Code Digit 1" [""];
V38 : "7-Segment Display Error Code Digit 2" [""];
V39 : "Status Of Heating" [""]; % 0 = No type 1 = Heating C1 2 = Heating C2 3 = Heating C3 0 = No type 1 = Heating/Cooling A1, Heating/Cooling B1, Heating/Cooling C1 2 = Heating/Cooling A2, Heating/Cooling B2, Heating/Cooling C2 3 = Heating/Cooling A3, Heating/Cooling B3, Heating/Cooling C3
V40 : "Heat Pump Frequency – Master" ["Hz"];
V41 : "Heat Pump Frequency – Slave 1" ["Hz"];
V42 : "Heat Pump Frequency – Slave 2" ["Hz"];
V43 : "Heat Pump Frequency – Slave 3" ["Hz"];
V44 : "Heat Pump Frequency – Slave 4" ["Hz"];
V45 : "Heat Pump Frequency – Slave 5" ["Hz"];
V46 : "Heat Pump Frequency – Slave 6" ["Hz"];
V47 : "Heat Source Status" ["Hz"]; % 0 = H/P 1 = IH 2 = BH 3 = IH + BH 4 = Boiler
V48 : "Temperature Setpoint – Zone 1 (signed)" ["ºC"]DEC2;
V49 : "Temperature Setpoint – Zone 2 (signed)" ["ºC"]DEC2;
V50 : "Flow Temperature Setpoint – Zone 1 (signed)" ["ºC"]DEC2;
V51 : "Flow Temperature Setpoint – Zone 2 (signed)" ["ºC"]DEC2;
V52 : "Legionella Temperature Setpoint (signed)" ["ºC"]DEC2;
V53 : "DHW Temperature Drop (signed)" ["ºC"]DEC2;
V54 : "Room Temperature – Zone 1 (signed)" ["ºC"]DEC2;
V55 : "Room Temperature – Zone 2 (signed)" ["ºC"]DEC2;
V56 : "Refrigerant Liquid Temperature (signed)" ["ºC"]DEC2;
V57 : "Outdoor Ambient Temperature (signed)" ["ºC"]DEC2;
PRIVATE
BAUDRATE 9600;
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(12); % Start address
DATA[4] := RWORD(88); % Antal register att läsa
ANSWER SIZE 181 % (Antal register * 2) + 5
DATA[0] = BYTE(Id);
DATA[1] = BYTE(03);
DATA[2] = BYTE(176); % Antal Bytes
DATA[3] -> RWORD(V1 := DATA;);
DATA[5] -> RWORD(V2 := DATA;);
DATA[7] -> RWORD(V3 := DATA;);
DATA[9] -> RWORD(IF (DATA>=32768) THEN V4:=(DATA-65536)/10; ELSE V4:=DATA/10; ENDIF;);
DATA[13] -> RWORD(V5 := DATA/10;);
DATA[15] -> RWORD(V6 := DATA/10;);
DATA[17] -> RWORD(V7 := DATA/10;);
DATA[29] -> RWORD(V8 := DATA;);
DATA[31] -> RWORD(V9 := DATA;);
DATA[33] -> RWORD(V10 := DATA;);
DATA[35] -> RWORD(V11 := DATA;);
DATA[37] -> RWORD(V12 := DATA;);
DATA[39] -> RWORD(IF (DATA>=32768) THEN V13:=(DATA-65536)/100; ELSE V13:=DATA/100; ENDIF;);
DATA[43] -> RWORD(IF (DATA>=32768) THEN V14:=(DATA-65536)/100; ELSE V14:=DATA/100; ENDIF;);
DATA[47] -> RWORD(IF (DATA>=32768) THEN V15:=(DATA-65536)/100; ELSE V15:=DATA/100; ENDIF;);
DATA[51] -> RWORD(V16 := DATA;);
DATA[53] -> RWORD(V17 := DATA;);
DATA[55] -> RWORD(V18 := DATA;);
DATA[57] -> RWORD(V19 := DATA;);
DATA[59] -> RWORD(V20 := DATA;);
DATA[61] -> RWORD(V21 := DATA;);
DATA[63] -> RWORD(V22 := DATA;);
DATA[65] -> RWORD(V23 := DATA;);
DATA[69] -> RWORD(V24 := DATA;);
DATA[71] -> RWORD(V25 := DATA;);
DATA[73] -> RWORD(V26 := DATA;);
DATA[75] -> RWORD(V27 := DATA;);
DATA[77] -> RWORD(V28 := DATA;);
DATA[79] -> RWORD(IF (DATA>=32768) THEN V29:=(DATA-65536)/10; ELSE V29:=DATA/10; ENDIF;);
DATA[83] -> RWORD(IF (DATA>=32768) THEN V30:=(DATA-65536)/100; ELSE V30:=DATA/100; ENDIF;);
DATA[87] -> RWORD(IF (DATA>=32768) THEN V31:=(DATA-65536)/100; ELSE V31:=DATA/100; ENDIF;);
DATA[91] -> RWORD(IF (DATA>=32768) THEN V32:=(DATA-65536)/100; ELSE V32:=DATA/100; ENDIF;);
DATA[95] -> RWORD(V33 := DATA;);
DATA[113] -> RWORD(V34 := DATA;);
DATA[115] -> RWORD(V35 := DATA;);
DATA[117] -> RWORD(V36 := DATA;);
DATA[119] -> RWORD(V37 := DATA;);
DATA[121] -> RWORD(V38 := DATA;);
DATA[123] -> RWORD(V39 := DATA;);
DATA[125] -> RWORD(V40 := DATA;);
DATA[127] -> RWORD(V41 := DATA;);
DATA[129] -> RWORD(V42 := DATA;);
DATA[131] -> RWORD(V43 := DATA;);
DATA[133] -> RWORD(V44 := DATA;);
DATA[135] -> RWORD(V45 := DATA;);
DATA[137] -> RWORD(V46 := DATA;);
DATA[139] -> RWORD(V47 := DATA;);
DATA[141] -> RWORD(IF (DATA>=32768) THEN V48:=(DATA-65536)/100; ELSE V48:=DATA/100; ENDIF;);
DATA[145] -> RWORD(IF (DATA>=32768) THEN V49:=(DATA-65536)/100; ELSE V49:=DATA/100; ENDIF;);
DATA[149] -> RWORD(V50 := DATA/100;);
DATA[153] -> RWORD(V51 := DATA/100;);
DATA[157] -> RWORD(V52 := DATA/100;);
DATA[161] -> RWORD(V53 := DATA/100;);
DATA[165] -> RWORD(V54 := DATA/100;);
DATA[169] -> RWORD(V55 := DATA/100;);
DATA[173] -> RWORD(V56 := DATA/100;);
DATA[177] -> RWORD(IF (DATA>=32768) THEN V57:=(DATA-65536)/10; ELSE V57:=DATA/10; ENDIF;);
TIMEOUT 300
END;
END;
% - 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 ProconA1Mp1 NAMED "ProconA1Mp1" TYPEID 13029 IS
PARAMETER
Id : "Adress" [""]INT;
PUBLIC
V1 : "Fault Code (decimal) " [""]; % 8000 = No error 6999 = Bad communication with indoor unit (Refer to indoor unit documentation for description of other fault code values)
V2 : "System Type Detected" [""]; % 0 = ATA 1 = ATW
V3 : "Deadband enabled state" [""]; % 0=off 1=on
V4 : "BMS Room Temperature (signed)" ["°C"]DEC1;
V5 : "BMS Virtual Setpoint" ["°C"]DEC1;
V6 : "Deadband Heating Setpoint" ["°C"]DEC1; % Temperature in ºC (default 19ºC). Value must be at least 2ºC lower than the Deadband Cooling Setpoint.
V7 : "Deadband Cooling Setpoint" ["°C"]DEC1; % Temperature in ºC (default 23ºC). Value must be at least 2ºC higher than the Deadband Heating Setpoint
V8 : "System On/Off" [""]; % 0 = System OFF 1 = System ON 2 = Emergency Run (read only value) 3 = Test Run (read only value)
V9 : "Operating Mode" [""]; % 0 = Stop 1 = Hot Water 2 = Heating 3 = Cooling 5 = Freeze Stat 6 = Legionella 7 = Heating-Eco
V10 : "Operating Mode (DHW)" [""]; % 0 = Normal 1 = Eco
V11 : "A/C Mode – Zone 1" [""]; % 0 = Heating Room Temp 1 = Heating Flow Temp 2 = Heating Heat Curve 3 = Cooling Room Temp (not on 13K model) 4 = Cooling Flow Temp 5 = Floor Dryup
V12 : "A/C Mode – Zone 2" [""]; % 0 = Heating Room Temp 1 = Heating Flow Temp 2 = Heating Heat Curve 3 = Cooling Room Temp (not on 13K model) 4 = Cooling Flow Temp 5 = Floor Dryup
V13 : "Set Tank Water Temperature (signed)" ["ºC"]DEC2;
V14 : "H/C Thermostat Target Temperature – Zone 1 (signed)" ["ºC"]DEC2;
V15 : "H/C Thermostat Target Temperature – Zone 2 (signed)" ["ºC"]DEC2;
V16 : "MRC Prohibit " [""]; % Bit packed value: Bit 0 – System On/Off (0 = ON, 1 = Prohibit) Bit 1 – Running Mode (0 = ON, 1 = Prohibit) Bit 2 – Setting Temp (0 = ON, 1 = Prohibit) Bit 3 – Undefined (always 0) Bit 4 – Function Setting (0 = Normal, 1 = Function Setting) Bits 5, 6 and 7 – Undefined (always 0) (Before using this register see note ††)
V17 : "Force DHW" [""]; % 8 0 = Normal 1 = Force DHW
V18 : "Holiday" [""]; % 0 = Normal 1 = Holiday
V19 : "DHW On Prohibit" [""]; % 0 = On 1 = Prohibit
V20 : "Heating On Prohibit – Zone 1" [""]; % 0 = On 1 = Prohibit
V21 : "Cooling On Prohibit – Zone 1" [""]; % 0 = On 1 = Prohibit
V22 : "Heating On Prohibit – Zone 2" [""];
V23 : "Cooling On Prohibit – Zone 2" [""];
V24 : "Capacity Mode" [""]; % 6 0 = COP priority 1 = Capacity priority
V25 : "Capacity Control Ratio" ["%"];
V26 : "Fan Mode" [""]; % 0 = Ordinary 1 = Coercion
V27 : "Current Hour" [""];
V28 : "Current Minute" [""];
V29 : "Outdoor Temperature By BMS (signed)" ["ºC"]DEC1;
V30 : "Setting Water Temperature (signed)" ["ºC"]DEC2;
V31 : "Thermostat Target Temperature – Zone 1 (signed)" ["ºC"]DEC2;
V32 : "Thermostat Target Temperature – Zone 2 (signed)" ["ºC"]DEC2;
V33 : "HC Control Type" [""]; % 0 = Heating 1 = Cooling
V34 : "Defrost" [""]; % 0 = Normal 1 = Standby 2 = Defrost 3 = Waiting Restart
V35 : "Residual Heat Removal" [""]; % 0 = Normal 1 = Prepared 2 = Residual Heat Removal
V36 : "Refrigerant Error Info" [""]; % 0 = Normal 1 = Error (System) 2 = Error (Startup) 3 = Maintenance Error
V37 : "7-Segment Display Error Code Digit 1" [""];
V38 : "7-Segment Display Error Code Digit 2" [""];
V39 : "Status Of Heating" [""]; % 0 = No type 1 = Heating C1 2 = Heating C2 3 = Heating C3 0 = No type 1 = Heating/Cooling A1, Heating/Cooling B1, Heating/Cooling C1 2 = Heating/Cooling A2, Heating/Cooling B2, Heating/Cooling C2 3 = Heating/Cooling A3, Heating/Cooling B3, Heating/Cooling C3
V40 : "Heat Pump Frequency – Master" ["Hz"];
V41 : "Heat Pump Frequency – Slave 1" ["Hz"];
V42 : "Heat Pump Frequency – Slave 2" ["Hz"];
V43 : "Heat Pump Frequency – Slave 3" ["Hz"];
V44 : "Heat Pump Frequency – Slave 4" ["Hz"];
V45 : "Heat Pump Frequency – Slave 5" ["Hz"];
V46 : "Heat Pump Frequency – Slave 6" ["Hz"];
V47 : "Heat Source Status" ["Hz"]; % 0 = H/P 1 = IH 2 = BH 3 = IH + BH 4 = Boiler
V48 : "Temperature Setpoint – Zone 1 (signed)" ["ºC"]DEC2;
V49 : "Temperature Setpoint – Zone 2 (signed)" ["ºC"]DEC2;
V50 : "Flow Temperature Setpoint – Zone 1 (signed)" ["ºC"]DEC2;
V51 : "Flow Temperature Setpoint – Zone 2 (signed)" ["ºC"]DEC2;
V52 : "Legionella Temperature Setpoint (signed)" ["ºC"]DEC2;
V53 : "DHW Temperature Drop (signed)" ["ºC"]DEC2;
V54 : "Room Temperature – Zone 1 (signed)" ["ºC"]DEC2;
V55 : "Room Temperature – Zone 2 (signed)" ["ºC"]DEC2;
V56 : "Refrigerant Liquid Temperature (signed)" ["ºC"]DEC2;
V57 : "Outdoor Ambient Temperature (signed)" ["ºC"]DEC2;
PRIVATE
BAUDRATE 9600;
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(12); % Start address
DATA[4] := RWORD(88); % Antal register att läsa
ANSWER SIZE 181 % (Antal register * 2) + 5
DATA[0] = BYTE(Id);
DATA[1] = BYTE(03);
DATA[2] = BYTE(176); % Antal Bytes
DATA[3] -> RWORD(V1 := DATA;);
DATA[5] -> RWORD(V2 := DATA;);
DATA[7] -> RWORD(V3 := DATA;);
DATA[9] -> RWORD(IF (DATA>=32768) THEN V4:=(DATA-65536)/10; ELSE V4:=DATA/10; ENDIF;);
DATA[13] -> RWORD(V5 := DATA/10;);
DATA[15] -> RWORD(V6 := DATA/10;);
DATA[17] -> RWORD(V7 := DATA/10;);
DATA[29] -> RWORD(V8 := DATA;);
DATA[31] -> RWORD(V9 := DATA;);
DATA[33] -> RWORD(V10 := DATA;);
DATA[35] -> RWORD(V11 := DATA;);
DATA[37] -> RWORD(V12 := DATA;);
DATA[39] -> RWORD(IF (DATA>=32768) THEN V13:=(DATA-65536)/100; ELSE V13:=DATA/100; ENDIF;);
DATA[43] -> RWORD(IF (DATA>=32768) THEN V14:=(DATA-65536)/100; ELSE V14:=DATA/100; ENDIF;);
DATA[47] -> RWORD(IF (DATA>=32768) THEN V15:=(DATA-65536)/100; ELSE V15:=DATA/100; ENDIF;);
DATA[51] -> RWORD(V16 := DATA;);
DATA[53] -> RWORD(V17 := DATA;);
DATA[55] -> RWORD(V18 := DATA;);
DATA[57] -> RWORD(V19 := DATA;);
DATA[59] -> RWORD(V20 := DATA;);
DATA[61] -> RWORD(V21 := DATA;);
DATA[63] -> RWORD(V22 := DATA;);
DATA[65] -> RWORD(V23 := DATA;);
DATA[69] -> RWORD(V24 := DATA;);
DATA[71] -> RWORD(V25 := DATA;);
DATA[73] -> RWORD(V26 := DATA;);
DATA[75] -> RWORD(V27 := DATA;);
DATA[77] -> RWORD(V28 := DATA;);
DATA[79] -> RWORD(IF (DATA>=32768) THEN V29:=(DATA-65536)/10; ELSE V29:=DATA/10; ENDIF;);
DATA[83] -> RWORD(IF (DATA>=32768) THEN V30:=(DATA-65536)/100; ELSE V30:=DATA/100; ENDIF;);
DATA[87] -> RWORD(IF (DATA>=32768) THEN V31:=(DATA-65536)/100; ELSE V31:=DATA/100; ENDIF;);
DATA[91] -> RWORD(IF (DATA>=32768) THEN V32:=(DATA-65536)/100; ELSE V32:=DATA/100; ENDIF;);
DATA[95] -> RWORD(V33 := DATA;);
DATA[113] -> RWORD(V34 := DATA;);
DATA[115] -> RWORD(V35 := DATA;);
DATA[117] -> RWORD(V36 := DATA;);
DATA[119] -> RWORD(V37 := DATA;);
DATA[121] -> RWORD(V38 := DATA;);
DATA[123] -> RWORD(V39 := DATA;);
DATA[125] -> RWORD(V40 := DATA;);
DATA[127] -> RWORD(V41 := DATA;);
DATA[129] -> RWORD(V42 := DATA;);
DATA[131] -> RWORD(V43 := DATA;);
DATA[133] -> RWORD(V44 := DATA;);
DATA[135] -> RWORD(V45 := DATA;);
DATA[137] -> RWORD(V46 := DATA;);
DATA[139] -> RWORD(V47 := DATA;);
DATA[141] -> RWORD(IF (DATA>=32768) THEN V48:=(DATA-65536)/100; ELSE V48:=DATA/100; ENDIF;);
DATA[145] -> RWORD(IF (DATA>=32768) THEN V49:=(DATA-65536)/100; ELSE V49:=DATA/100; ENDIF;);
DATA[149] -> RWORD(V50 := DATA/100;);
DATA[153] -> RWORD(V51 := DATA/100;);
DATA[157] -> RWORD(V52 := DATA/100;);
DATA[161] -> RWORD(V53 := DATA/100;);
DATA[165] -> RWORD(V54 := DATA/100;);
DATA[169] -> RWORD(V55 := DATA/100;);
DATA[173] -> RWORD(V56 := DATA/100;);
DATA[177] -> RWORD(IF (DATA>=32768) THEN V57:=(DATA-65536)/10; ELSE V57:=DATA/10; ENDIF;);
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.