Swegon Golden Gate 2008
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 1
- Uppdaterad
- 2013-08-28
- Skapad
- 2013-08-28
- Kategori
- Modbus, Ventilation
- Visningar
- 3673
Beskrivning
Drivrutin
Bruksanvisning
Hur man installerar typdefinitionerna och driftsätter modulerna finns beskrivet i användarmanualen, kapitel 18.7.
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 SWEGON GOLDEN GATE read input registers 1-20
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading Analog status
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGAnalog1 NAMED "Swegon GG AI1" TYPEID 21213 IS
PARAMETER
Id : "Address";
PUBLIC
% Ver A(4) Ver B
R1 : "Operation mode" [" "]; %Ver A: AHU handterminal menu 1-200
%Ver B: Operationstatus for the AHU 00 = Stop alarm
% 01 = Manual stop
% 02 = Ext.stop
% 03 = RS232 stop
% 04 = S-CL stop
% 10 = Manual LS
% 11 = S-CL LS
% 12 = Ext.LS
% 13 = RS232 LS
% 14 = Prolonged LS
% 20 = Manual HS
% 21 = Ext.HS
% 22 = RS232 HS
% 23 = S-CL HS
% 24 = Prolonged HS
% 30 = SN-Cool
% 31 = Reecooling
% 40 = Manual test OP
% 41 = Duct airflow adj
% 42 = Filtercalibration
%
% Ver A(4) Ver B
R2 : "Delay HS_min" ["m"]; %Remaining time highspeed 0-59 0-59
R3 : "Delay HS_hour" ["h"]; %Remaining time highspeed 0-23 0-23
R4 : "Delay LS_min" ["m"]; %Remaining time lowspeed Not used 0-59
R5 : "Delay LS_hour" ["h"]; %Remaining time lowspeed Not used 0-23
R6 : "SF flow" ["l/s"]; %Supply air fan flow 0-4000l/s 0-8000l/s
R7 : "EF flow" ["l/s"]; %Exhaust air fan flow 0-4000l/s 0-8000l/s
R8 : "SF VAV level" ["%"]; %SA input signal VAV/Forcing func 0-100.0% 0-100.0%
R9 : "EF VAV level" ["%"]; %EA input signal VAV/Forcing func 0-100.0% 0-100.0%
R10 : "SF level" ["%"]; %Running level supply air fan 0-100.0% 0-100.0%
R11 : "EF level" ["%"]; %Running level exhaust air fan 0-100.0% 0-100.0%
R12 : "Heat exch.lev." ["%"]; %Running level heat exchanger 0-100.0% 0-100.0%
R13 : "SA temp" ["°C"]; %Supply air temp 0-40.00°C -55.00-125.00°C
R14 : "OUT-D temp" ["°C"]; %Outdoor air temp -20.00-40.00°C -55.00-125.00°C
R15 : "EA temp" ["°C"]; %Exhaust air temp 0-40.00°C -55.00-125.00°C
R16 : "SA temp setp" ["°C"]; %Supply air regulator temp setpoint 0-40.00°C -55.00-125.00°C
R17 : "FP temp" ["°C"]; %Frost protection temp 0-40.00°C -55.00-125.00°C
R18 : "Reheat level" ["%"]; %Level for reheater coi 0-100.0% 0-100.0%
R19 : "Cooling level" ["%"]; %Level for cooling 0-100.0% 0-100.0%
R20 : "SA filt level" ["%(Pa)"]; %Level for supply air filter 0-100.0% 0-2000Pa
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM AnalogInput1 NAMED "Register 1-20" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(04); % Modbus command "04h" Read registers
DATA[2] := RWORD(0); % Start address register
DATA[4] := RWORD(20); % Number of registers
ANSWER SIZE 45
DATA[0] = BYTE(Id); % ID
DATA[1] = HEX(04); % Modbus command "04h" Read registers
DATA[2] = BYTE(40); % Byte count
DATA[3] -> RWORD(R1 := DATA;);
DATA[5] -> RWORD(R2 := DATA;);
DATA[7] -> RWORD(R3 := DATA;);
DATA[9] -> RWORD(R4 := DATA;);
DATA[11] -> RWORD(R5 := DATA;);
DATA[13] -> RWORD(R6 := DATA;); % 0-4000l/s 0-8000l/s
DATA[15] -> RWORD(R7 := DATA;); % 0-4000l/s 0-8000l/s
DATA[17] -> RWORD(R8 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[19] -> RWORD(R9 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[21] -> RWORD(R10 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[23] -> RWORD(R11 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[25] -> RWORD(R12 := DATA / 10;); % 0-100.0% 0-100.0%
% 0-40.00°C -55.00-125.00°C
DATA[27] -> RWORD(IF DATA > 32767 THEN R13 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R13 := DATA /100;
ENDIF;
);
%-20.00-40.00°C -55.00-125.00°C
DATA[29] -> RWORD(IF DATA > 32767 THEN R14 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R14 := DATA /100;
ENDIF;
);
% 0-40.00°C -55.00-125.00°C
DATA[31] -> RWORD(IF DATA > 32767 THEN R15 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R15 := DATA /100;
ENDIF;
);
% 0-40.00°C -55.00-125.00°C
DATA[33] -> RWORD(IF DATA > 32767 THEN R16 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R16 := DATA /100;
ENDIF;
);
% 0-40.00°C -55.00-125.00°C
DATA[35] -> RWORD(IF DATA > 32767 THEN R17 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R17 := DATA /100;
ENDIF;
);
DATA[37] -> RWORD(R18 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[39] -> RWORD(R19 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[41] -> RWORD(R20 := DATA / 10;); % 0-100.0% 0-2000Pa
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLD GATE read input registers 21-38
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading Analog status
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGAnalog2 NAMED "Swegon GG AI2" TYPEID 21214 IS
PARAMETER
Id : "Address";
PUBLIC
% Ver A(4) Ver B
R21 : "EA filt level" ["%(Pa)"]; %Level for exhaust air filter 0-100.0% 0-2000Pa
R22 : "SF filt alarm" ["Pa"]; %Alarm level for supply air filter Not used 0-2000Pa
R23 : "EF filt alarm" ["Pa"]; %Alarm level for exhaust air filter Not used 0-2000Pa
R24 : "Active alarm" [" "]; %Active alarm No 0-48 0-49
R25 : "Unit version" [" "]; %0=No communication 0-1 0,2
%1=Version 4 or A
%2=Version B
R26 : "Input sts 1-16 " [" "];
R27 : "Input sts 17-32" [" "];
R28 : "Input sts 33-48" [" "];
R29 : "Input sts 49-64" [" "];
R30 : "Input sts 65-77" [" "];
R31 : "SF flow setp" ["l/s"]; %Setpoint supply fan flow 0-4000l/s 0-8000l/s
R32 : "EF flow setp" ["l/s"]; %Setpoint exhaust fan flow 0-4000l/s 0-8000l/s
R33 : "EA temp setp" ["°C"]; %Setpoint exhaust air temperature 0-40.00°C 0-40.00°C
R34 : "SF VAV level" ["%"]; %Level supply fan VAV regulator Not used 0-100.0%
R35 : "EF VAV level" ["%"]; %Level exhaust fan VAV regulator Not used 0-100.0%
R36 : "Operating time" ["days"]; %Operating days 0-9999 0-9999
R37 : "Program version" [" "]; %Program version in GOLD AHU Not used 0-65535
R38 : "Coolforcing lev" ["%"]; %Coolforcing level 0-100.0% 0-100.0%
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM AnalogInput2 NAMED "Register 21-38" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(04); % Modbus command "04h" Read registers
DATA[2] := RWORD(20); % Start address register
DATA[4] := RWORD(18); % Number of registers
ANSWER SIZE 41
DATA[0] = BYTE(Id); % ID
DATA[1] = HEX(04); % Modbus command "04h" Read registers
DATA[2] = BYTE(36); % Byte count
DATA[3] -> RWORD(R21 := DATA / 10;); % 0-100.0% 0-2000Pa
DATA[5] -> RWORD(R22 := DATA;); % Not used 0-2000Pa
DATA[7] -> RWORD(R23 := DATA;); % Not used 0-2000Pa
DATA[9] -> RWORD(R24 := DATA;); % 0-48 0-49
DATA[11] -> RWORD(R25 := DATA;); % 0-1 0,2
DATA[13] -> RWORD(R26 := DATA;); %
DATA[15] -> RWORD(R27 := DATA;); %
DATA[17] -> RWORD(R28 := DATA;); %
DATA[19] -> RWORD(R29 := DATA;); %
DATA[21] -> RWORD(R30 := DATA;); %
DATA[23] -> RWORD(R31 := DATA;); % 0-4000l/s 0-8000l/s
DATA[25] -> RWORD(R32 := DATA;); % 0-4000l/s 0-8000l/s
DATA[27] -> RWORD(R33 := DATA /100;); % 0-40.00°C 0-40.00°C
DATA[29] -> RWORD(R34 := DATA / 10;); % Not used 0-100.0%
DATA[31] -> RWORD(R35 := DATA / 10;); % Not used 0-100.0%
DATA[33] -> RWORD(R36 := DATA;); % 0-9999 0-9999
DATA[35] -> RWORD(R37 := DATA;); % Not used 0-65535
DATA[37] -> RWORD(R38 := DATA / 10;); % 0-100.0% 0-100.0%
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 1-20
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital1 NAMED "Swegon GG DI1" TYPEID 21215 IS
PARAMETER
Id : "Address";
PUBLIC
DI1 : "Cool energy rec"; %Cool energy recovery function
DI2 : "S.Night cooling"; %Summer night cooling
DI3 : "Group alarm A"; %Alarm relay output-A
DI4 : "Group alarm B"; %Alarm relay output-B
DI5 : "Highspeed"; %Operating cases.
DI6 : "Lowspeed"; %Operating cases.
DI7 : "Stop"; %Operating cases.
DI8 : "Heating relay"; %Heating function is active.
DI9 : "Cooling relay 1"; %Cooling function stage 1 is active.
DI10 : "Cooling relay 2"; %Cooling function stage 2 is active.
DI11 : "Cooling cpr 1"; %Compressor 1, in Cooler is active.
DI12 : "Cooling cpr 2"; %Compressor 2, in Cooler is active.
DI13 : "Reserve 1"; %Not used in this version.
DI14 : "Reserve 2"; %Not used in this version.
DI15 : "Digital In 1"; %Input 1, on Ethernet module is active.
DI16 : "Digital In 2"; %Input 2, on Ethernet module is active.
DI17 : "Alarm no. 1"; %
DI18 : "Alarm no. 2"; %
DI19 : "Alarm no. 3"; %
DI20 : "Alarm no. 4"; %
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput1 NAMED "DI 1-20" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(0); % Start adress
DATA[4] := RWORD(20); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI1 := 1; ELSE DI1 := 0; ENDIF;
IF (DATA & 2) THEN DI2 := 1; ELSE DI2 := 0; ENDIF;
IF (DATA & 4) THEN DI3 := 1; ELSE DI3 := 0; ENDIF;
IF (DATA & 8) THEN DI4 := 1; ELSE DI4 := 0; ENDIF;
IF (DATA & 16) THEN DI5 := 1; ELSE DI5 := 0; ENDIF;
IF (DATA & 32) THEN DI6 := 1; ELSE DI6 := 0; ENDIF;
IF (DATA & 64) THEN DI7 := 1; ELSE DI7 := 0; ENDIF;
IF (DATA & 128) THEN DI8 := 1; ELSE DI8 := 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI9 := 1; ELSE DI9 := 0; ENDIF;
IF (DATA & 2) THEN DI10:= 1; ELSE DI10:= 0; ENDIF;
IF (DATA & 4) THEN DI11:= 1; ELSE DI11:= 0; ENDIF;
IF (DATA & 8) THEN DI12:= 1; ELSE DI12:= 0; ENDIF;
IF (DATA & 16) THEN DI13:= 1; ELSE DI13:= 0; ENDIF;
IF (DATA & 32) THEN DI14:= 1; ELSE DI14:= 0; ENDIF;
IF (DATA & 64) THEN DI15:= 1; ELSE DI15:= 0; ENDIF;
IF (DATA & 128) THEN DI16:= 1; ELSE DI16:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI17:= 1; ELSE DI17:= 0; ENDIF;
IF (DATA & 2) THEN DI18:= 1; ELSE DI18:= 0; ENDIF;
IF (DATA & 4) THEN DI19:= 1; ELSE DI19:= 0; ENDIF;
IF (DATA & 8) THEN DI20:= 1; ELSE DI20:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 21-40
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital2 NAMED "Swegon GG DI2" TYPEID 21216 IS
PARAMETER
Id : "Address";
PUBLIC
DI21 : "Alarm no. 5";
DI22 : "Alarm no. 6";
DI23 : "Alarm no. 7";
DI24 : "Alarm no. 8";
DI25 : "Alarm no. 9";
DI26 : "Alarm no. 10";
DI27 : "Alarm no. 11";
DI28 : "Alarm no. 12";
DI29 : "Alarm no. 13";
DI30 : "Alarm no. 14";
DI31 : "Alarm no. 15";
DI32 : "Alarm no. 16";
DI33 : "Alarm no. 17";
DI34 : "Alarm no. 18";
DI35 : "Alarm no. 19";
DI36 : "Alarm no. 20";
DI37 : "Alarm no. 21";
DI38 : "Alarm no. 22";
DI39 : "Alarm no. 23";
DI40 : "Alarm no. 24";
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput2 NAMED "DI 21-40" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(20); % Start adress
DATA[4] := RWORD(20); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI21:= 1; ELSE DI21:= 0; ENDIF;
IF (DATA & 2) THEN DI22:= 1; ELSE DI22:= 0; ENDIF;
IF (DATA & 4) THEN DI23:= 1; ELSE DI23:= 0; ENDIF;
IF (DATA & 8) THEN DI24:= 1; ELSE DI24:= 0; ENDIF;
IF (DATA & 16) THEN DI25:= 1; ELSE DI25:= 0; ENDIF;
IF (DATA & 32) THEN DI26:= 1; ELSE DI26:= 0; ENDIF;
IF (DATA & 64) THEN DI27:= 1; ELSE DI27:= 0; ENDIF;
IF (DATA & 128) THEN DI28:= 1; ELSE DI28:= 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI29:= 1; ELSE DI29:= 0; ENDIF;
IF (DATA & 2) THEN DI30:= 1; ELSE DI30:= 0; ENDIF;
IF (DATA & 4) THEN DI31:= 1; ELSE DI31:= 0; ENDIF;
IF (DATA & 8) THEN DI32:= 1; ELSE DI32:= 0; ENDIF;
IF (DATA & 16) THEN DI33:= 1; ELSE DI33:= 0; ENDIF;
IF (DATA & 32) THEN DI34:= 1; ELSE DI34:= 0; ENDIF;
IF (DATA & 64) THEN DI35:= 1; ELSE DI35:= 0; ENDIF;
IF (DATA & 128) THEN DI36:= 1; ELSE DI36:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI37:= 1; ELSE DI37:= 0; ENDIF;
IF (DATA & 2) THEN DI38:= 1; ELSE DI38:= 0; ENDIF;
IF (DATA & 4) THEN DI39:= 1; ELSE DI39:= 0; ENDIF;
IF (DATA & 8) THEN DI40:= 1; ELSE DI40:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 41-60
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital2 NAMED "Swegon GG DI3" TYPEID 21217 IS
PARAMETER
Id : "Address";
PUBLIC
DI41 : "Alarm no. 25";
DI42 : "Alarm no. 26";
DI43 : "Alarm no. 27";
DI44 : "Alarm no. 28";
DI45 : "Alarm no. 29";
DI46 : "Alarm no. 30";
DI47 : "Alarm no. 31";
DI48 : "Alarm no. 32";
DI49 : "Alarm no. 33";
DI50 : "Alarm no. 34";
DI51 : "Alarm no. 35";
DI52 : "Alarm no. 36";
DI53 : "Alarm no. 37";
DI54 : "Alarm no. 38";
DI55 : "Alarm no. 39";
DI56 : "Alarm no. 40";
DI57 : "Alarm no. 41";
DI58 : "Alarm no. 42";
DI59 : "Alarm no. 43";
DI60 : "Alarm no. 44";
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput3 NAMED "DI 41-60" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(40); % Start adress
DATA[4] := RWORD(20); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI41:= 1; ELSE DI41:= 0; ENDIF;
IF (DATA & 2) THEN DI42:= 1; ELSE DI42:= 0; ENDIF;
IF (DATA & 4) THEN DI43:= 1; ELSE DI43:= 0; ENDIF;
IF (DATA & 8) THEN DI44:= 1; ELSE DI44:= 0; ENDIF;
IF (DATA & 16) THEN DI45:= 1; ELSE DI45:= 0; ENDIF;
IF (DATA & 32) THEN DI46:= 1; ELSE DI46:= 0; ENDIF;
IF (DATA & 64) THEN DI47:= 1; ELSE DI47:= 0; ENDIF;
IF (DATA & 128) THEN DI48:= 1; ELSE DI48:= 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI49:= 1; ELSE DI49:= 0; ENDIF;
IF (DATA & 2) THEN DI50:= 1; ELSE DI50:= 0; ENDIF;
IF (DATA & 4) THEN DI51:= 1; ELSE DI51:= 0; ENDIF;
IF (DATA & 8) THEN DI52:= 1; ELSE DI52:= 0; ENDIF;
IF (DATA & 16) THEN DI53:= 1; ELSE DI53:= 0; ENDIF;
IF (DATA & 32) THEN DI54:= 1; ELSE DI54:= 0; ENDIF;
IF (DATA & 64) THEN DI55:= 1; ELSE DI55:= 0; ENDIF;
IF (DATA & 128) THEN DI56:= 1; ELSE DI56:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI57:= 1; ELSE DI57:= 0; ENDIF;
IF (DATA & 2) THEN DI58:= 1; ELSE DI58:= 0; ENDIF;
IF (DATA & 4) THEN DI59:= 1; ELSE DI59:= 0; ENDIF;
IF (DATA & 8) THEN DI60:= 1; ELSE DI60:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 60
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital4 NAMED "Swegon GG DI4" TYPEID 21218 IS
PARAMETER
Id : "Address";
PUBLIC
DI61 : "Alarm no. 45";
DI62 : "Alarm no. 46";
DI63 : "Alarm no. 47";
DI64 : "Alarm no. 48";
DI65 : "Alarm no. 49";
DI66 : "Alarm no. 50";
DI67 : "Alarm no. 51";
DI68 : "Alarm no. 52";
DI69 : "Alarm no. 53";
DI70 : "Alarm no. 54";
DI71 : "Alarm no. 55";
DI72 : "Alarm no. 56";
DI73 : "Alarm no. 57";
DI74 : "Alarm no. 58";
DI75 : "Alarm no. 59";
DI76 : "Alarm no. 60";
DI77 : "Alarm no. 61";
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput4 NAMED "DI 60" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(60); % Start adress
DATA[4] := RWORD(17); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI61:= 1; ELSE DI61:= 0; ENDIF;
IF (DATA & 2) THEN DI62:= 1; ELSE DI62:= 0; ENDIF;
IF (DATA & 4) THEN DI63:= 1; ELSE DI63:= 0; ENDIF;
IF (DATA & 8) THEN DI64:= 1; ELSE DI64:= 0; ENDIF;
IF (DATA & 16) THEN DI65:= 1; ELSE DI65:= 0; ENDIF;
IF (DATA & 32) THEN DI66:= 1; ELSE DI66:= 0; ENDIF;
IF (DATA & 64) THEN DI67:= 1; ELSE DI67:= 0; ENDIF;
IF (DATA & 128) THEN DI68:= 1; ELSE DI68:= 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI69:= 1; ELSE DI69:= 0; ENDIF;
IF (DATA & 2) THEN DI70:= 1; ELSE DI70:= 0; ENDIF;
IF (DATA & 4) THEN DI71:= 1; ELSE DI71:= 0; ENDIF;
IF (DATA & 8) THEN DI72:= 1; ELSE DI72:= 0; ENDIF;
IF (DATA & 16) THEN DI73:= 1; ELSE DI73:= 0; ENDIF;
IF (DATA & 32) THEN DI74:= 1; ELSE DI74:= 0; ENDIF;
IF (DATA & 64) THEN DI75:= 1; ELSE DI75:= 0; ENDIF;
IF (DATA & 128) THEN DI76:= 1; ELSE DI76:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI77:= 1; ELSE DI77:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
% Device definition for SWEGON GOLDEN GATE read input registers 1-20
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading Analog status
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGAnalog1 NAMED "Swegon GG AI1" TYPEID 21213 IS
PARAMETER
Id : "Address";
PUBLIC
% Ver A(4) Ver B
R1 : "Operation mode" [" "]; %Ver A: AHU handterminal menu 1-200
%Ver B: Operationstatus for the AHU 00 = Stop alarm
% 01 = Manual stop
% 02 = Ext.stop
% 03 = RS232 stop
% 04 = S-CL stop
% 10 = Manual LS
% 11 = S-CL LS
% 12 = Ext.LS
% 13 = RS232 LS
% 14 = Prolonged LS
% 20 = Manual HS
% 21 = Ext.HS
% 22 = RS232 HS
% 23 = S-CL HS
% 24 = Prolonged HS
% 30 = SN-Cool
% 31 = Reecooling
% 40 = Manual test OP
% 41 = Duct airflow adj
% 42 = Filtercalibration
%
% Ver A(4) Ver B
R2 : "Delay HS_min" ["m"]; %Remaining time highspeed 0-59 0-59
R3 : "Delay HS_hour" ["h"]; %Remaining time highspeed 0-23 0-23
R4 : "Delay LS_min" ["m"]; %Remaining time lowspeed Not used 0-59
R5 : "Delay LS_hour" ["h"]; %Remaining time lowspeed Not used 0-23
R6 : "SF flow" ["l/s"]; %Supply air fan flow 0-4000l/s 0-8000l/s
R7 : "EF flow" ["l/s"]; %Exhaust air fan flow 0-4000l/s 0-8000l/s
R8 : "SF VAV level" ["%"]; %SA input signal VAV/Forcing func 0-100.0% 0-100.0%
R9 : "EF VAV level" ["%"]; %EA input signal VAV/Forcing func 0-100.0% 0-100.0%
R10 : "SF level" ["%"]; %Running level supply air fan 0-100.0% 0-100.0%
R11 : "EF level" ["%"]; %Running level exhaust air fan 0-100.0% 0-100.0%
R12 : "Heat exch.lev." ["%"]; %Running level heat exchanger 0-100.0% 0-100.0%
R13 : "SA temp" ["°C"]; %Supply air temp 0-40.00°C -55.00-125.00°C
R14 : "OUT-D temp" ["°C"]; %Outdoor air temp -20.00-40.00°C -55.00-125.00°C
R15 : "EA temp" ["°C"]; %Exhaust air temp 0-40.00°C -55.00-125.00°C
R16 : "SA temp setp" ["°C"]; %Supply air regulator temp setpoint 0-40.00°C -55.00-125.00°C
R17 : "FP temp" ["°C"]; %Frost protection temp 0-40.00°C -55.00-125.00°C
R18 : "Reheat level" ["%"]; %Level for reheater coi 0-100.0% 0-100.0%
R19 : "Cooling level" ["%"]; %Level for cooling 0-100.0% 0-100.0%
R20 : "SA filt level" ["%(Pa)"]; %Level for supply air filter 0-100.0% 0-2000Pa
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM AnalogInput1 NAMED "Register 1-20" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(04); % Modbus command "04h" Read registers
DATA[2] := RWORD(0); % Start address register
DATA[4] := RWORD(20); % Number of registers
ANSWER SIZE 45
DATA[0] = BYTE(Id); % ID
DATA[1] = HEX(04); % Modbus command "04h" Read registers
DATA[2] = BYTE(40); % Byte count
DATA[3] -> RWORD(R1 := DATA;);
DATA[5] -> RWORD(R2 := DATA;);
DATA[7] -> RWORD(R3 := DATA;);
DATA[9] -> RWORD(R4 := DATA;);
DATA[11] -> RWORD(R5 := DATA;);
DATA[13] -> RWORD(R6 := DATA;); % 0-4000l/s 0-8000l/s
DATA[15] -> RWORD(R7 := DATA;); % 0-4000l/s 0-8000l/s
DATA[17] -> RWORD(R8 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[19] -> RWORD(R9 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[21] -> RWORD(R10 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[23] -> RWORD(R11 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[25] -> RWORD(R12 := DATA / 10;); % 0-100.0% 0-100.0%
% 0-40.00°C -55.00-125.00°C
DATA[27] -> RWORD(IF DATA > 32767 THEN R13 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R13 := DATA /100;
ENDIF;
);
%-20.00-40.00°C -55.00-125.00°C
DATA[29] -> RWORD(IF DATA > 32767 THEN R14 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R14 := DATA /100;
ENDIF;
);
% 0-40.00°C -55.00-125.00°C
DATA[31] -> RWORD(IF DATA > 32767 THEN R15 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R15 := DATA /100;
ENDIF;
);
% 0-40.00°C -55.00-125.00°C
DATA[33] -> RWORD(IF DATA > 32767 THEN R16 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R16 := DATA /100;
ENDIF;
);
% 0-40.00°C -55.00-125.00°C
DATA[35] -> RWORD(IF DATA > 32767 THEN R17 := 0 - (1 + (65535-DATA)) / 100; % Negativ ?
ELSE R17 := DATA /100;
ENDIF;
);
DATA[37] -> RWORD(R18 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[39] -> RWORD(R19 := DATA / 10;); % 0-100.0% 0-100.0%
DATA[41] -> RWORD(R20 := DATA / 10;); % 0-100.0% 0-2000Pa
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLD GATE read input registers 21-38
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading Analog status
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGAnalog2 NAMED "Swegon GG AI2" TYPEID 21214 IS
PARAMETER
Id : "Address";
PUBLIC
% Ver A(4) Ver B
R21 : "EA filt level" ["%(Pa)"]; %Level for exhaust air filter 0-100.0% 0-2000Pa
R22 : "SF filt alarm" ["Pa"]; %Alarm level for supply air filter Not used 0-2000Pa
R23 : "EF filt alarm" ["Pa"]; %Alarm level for exhaust air filter Not used 0-2000Pa
R24 : "Active alarm" [" "]; %Active alarm No 0-48 0-49
R25 : "Unit version" [" "]; %0=No communication 0-1 0,2
%1=Version 4 or A
%2=Version B
R26 : "Input sts 1-16 " [" "];
R27 : "Input sts 17-32" [" "];
R28 : "Input sts 33-48" [" "];
R29 : "Input sts 49-64" [" "];
R30 : "Input sts 65-77" [" "];
R31 : "SF flow setp" ["l/s"]; %Setpoint supply fan flow 0-4000l/s 0-8000l/s
R32 : "EF flow setp" ["l/s"]; %Setpoint exhaust fan flow 0-4000l/s 0-8000l/s
R33 : "EA temp setp" ["°C"]; %Setpoint exhaust air temperature 0-40.00°C 0-40.00°C
R34 : "SF VAV level" ["%"]; %Level supply fan VAV regulator Not used 0-100.0%
R35 : "EF VAV level" ["%"]; %Level exhaust fan VAV regulator Not used 0-100.0%
R36 : "Operating time" ["days"]; %Operating days 0-9999 0-9999
R37 : "Program version" [" "]; %Program version in GOLD AHU Not used 0-65535
R38 : "Coolforcing lev" ["%"]; %Coolforcing level 0-100.0% 0-100.0%
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM AnalogInput2 NAMED "Register 21-38" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(04); % Modbus command "04h" Read registers
DATA[2] := RWORD(20); % Start address register
DATA[4] := RWORD(18); % Number of registers
ANSWER SIZE 41
DATA[0] = BYTE(Id); % ID
DATA[1] = HEX(04); % Modbus command "04h" Read registers
DATA[2] = BYTE(36); % Byte count
DATA[3] -> RWORD(R21 := DATA / 10;); % 0-100.0% 0-2000Pa
DATA[5] -> RWORD(R22 := DATA;); % Not used 0-2000Pa
DATA[7] -> RWORD(R23 := DATA;); % Not used 0-2000Pa
DATA[9] -> RWORD(R24 := DATA;); % 0-48 0-49
DATA[11] -> RWORD(R25 := DATA;); % 0-1 0,2
DATA[13] -> RWORD(R26 := DATA;); %
DATA[15] -> RWORD(R27 := DATA;); %
DATA[17] -> RWORD(R28 := DATA;); %
DATA[19] -> RWORD(R29 := DATA;); %
DATA[21] -> RWORD(R30 := DATA;); %
DATA[23] -> RWORD(R31 := DATA;); % 0-4000l/s 0-8000l/s
DATA[25] -> RWORD(R32 := DATA;); % 0-4000l/s 0-8000l/s
DATA[27] -> RWORD(R33 := DATA /100;); % 0-40.00°C 0-40.00°C
DATA[29] -> RWORD(R34 := DATA / 10;); % Not used 0-100.0%
DATA[31] -> RWORD(R35 := DATA / 10;); % Not used 0-100.0%
DATA[33] -> RWORD(R36 := DATA;); % 0-9999 0-9999
DATA[35] -> RWORD(R37 := DATA;); % Not used 0-65535
DATA[37] -> RWORD(R38 := DATA / 10;); % 0-100.0% 0-100.0%
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 1-20
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital1 NAMED "Swegon GG DI1" TYPEID 21215 IS
PARAMETER
Id : "Address";
PUBLIC
DI1 : "Cool energy rec"; %Cool energy recovery function
DI2 : "S.Night cooling"; %Summer night cooling
DI3 : "Group alarm A"; %Alarm relay output-A
DI4 : "Group alarm B"; %Alarm relay output-B
DI5 : "Highspeed"; %Operating cases.
DI6 : "Lowspeed"; %Operating cases.
DI7 : "Stop"; %Operating cases.
DI8 : "Heating relay"; %Heating function is active.
DI9 : "Cooling relay 1"; %Cooling function stage 1 is active.
DI10 : "Cooling relay 2"; %Cooling function stage 2 is active.
DI11 : "Cooling cpr 1"; %Compressor 1, in Cooler is active.
DI12 : "Cooling cpr 2"; %Compressor 2, in Cooler is active.
DI13 : "Reserve 1"; %Not used in this version.
DI14 : "Reserve 2"; %Not used in this version.
DI15 : "Digital In 1"; %Input 1, on Ethernet module is active.
DI16 : "Digital In 2"; %Input 2, on Ethernet module is active.
DI17 : "Alarm no. 1"; %
DI18 : "Alarm no. 2"; %
DI19 : "Alarm no. 3"; %
DI20 : "Alarm no. 4"; %
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput1 NAMED "DI 1-20" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(0); % Start adress
DATA[4] := RWORD(20); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI1 := 1; ELSE DI1 := 0; ENDIF;
IF (DATA & 2) THEN DI2 := 1; ELSE DI2 := 0; ENDIF;
IF (DATA & 4) THEN DI3 := 1; ELSE DI3 := 0; ENDIF;
IF (DATA & 8) THEN DI4 := 1; ELSE DI4 := 0; ENDIF;
IF (DATA & 16) THEN DI5 := 1; ELSE DI5 := 0; ENDIF;
IF (DATA & 32) THEN DI6 := 1; ELSE DI6 := 0; ENDIF;
IF (DATA & 64) THEN DI7 := 1; ELSE DI7 := 0; ENDIF;
IF (DATA & 128) THEN DI8 := 1; ELSE DI8 := 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI9 := 1; ELSE DI9 := 0; ENDIF;
IF (DATA & 2) THEN DI10:= 1; ELSE DI10:= 0; ENDIF;
IF (DATA & 4) THEN DI11:= 1; ELSE DI11:= 0; ENDIF;
IF (DATA & 8) THEN DI12:= 1; ELSE DI12:= 0; ENDIF;
IF (DATA & 16) THEN DI13:= 1; ELSE DI13:= 0; ENDIF;
IF (DATA & 32) THEN DI14:= 1; ELSE DI14:= 0; ENDIF;
IF (DATA & 64) THEN DI15:= 1; ELSE DI15:= 0; ENDIF;
IF (DATA & 128) THEN DI16:= 1; ELSE DI16:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI17:= 1; ELSE DI17:= 0; ENDIF;
IF (DATA & 2) THEN DI18:= 1; ELSE DI18:= 0; ENDIF;
IF (DATA & 4) THEN DI19:= 1; ELSE DI19:= 0; ENDIF;
IF (DATA & 8) THEN DI20:= 1; ELSE DI20:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 21-40
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital2 NAMED "Swegon GG DI2" TYPEID 21216 IS
PARAMETER
Id : "Address";
PUBLIC
DI21 : "Alarm no. 5";
DI22 : "Alarm no. 6";
DI23 : "Alarm no. 7";
DI24 : "Alarm no. 8";
DI25 : "Alarm no. 9";
DI26 : "Alarm no. 10";
DI27 : "Alarm no. 11";
DI28 : "Alarm no. 12";
DI29 : "Alarm no. 13";
DI30 : "Alarm no. 14";
DI31 : "Alarm no. 15";
DI32 : "Alarm no. 16";
DI33 : "Alarm no. 17";
DI34 : "Alarm no. 18";
DI35 : "Alarm no. 19";
DI36 : "Alarm no. 20";
DI37 : "Alarm no. 21";
DI38 : "Alarm no. 22";
DI39 : "Alarm no. 23";
DI40 : "Alarm no. 24";
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput2 NAMED "DI 21-40" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(20); % Start adress
DATA[4] := RWORD(20); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI21:= 1; ELSE DI21:= 0; ENDIF;
IF (DATA & 2) THEN DI22:= 1; ELSE DI22:= 0; ENDIF;
IF (DATA & 4) THEN DI23:= 1; ELSE DI23:= 0; ENDIF;
IF (DATA & 8) THEN DI24:= 1; ELSE DI24:= 0; ENDIF;
IF (DATA & 16) THEN DI25:= 1; ELSE DI25:= 0; ENDIF;
IF (DATA & 32) THEN DI26:= 1; ELSE DI26:= 0; ENDIF;
IF (DATA & 64) THEN DI27:= 1; ELSE DI27:= 0; ENDIF;
IF (DATA & 128) THEN DI28:= 1; ELSE DI28:= 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI29:= 1; ELSE DI29:= 0; ENDIF;
IF (DATA & 2) THEN DI30:= 1; ELSE DI30:= 0; ENDIF;
IF (DATA & 4) THEN DI31:= 1; ELSE DI31:= 0; ENDIF;
IF (DATA & 8) THEN DI32:= 1; ELSE DI32:= 0; ENDIF;
IF (DATA & 16) THEN DI33:= 1; ELSE DI33:= 0; ENDIF;
IF (DATA & 32) THEN DI34:= 1; ELSE DI34:= 0; ENDIF;
IF (DATA & 64) THEN DI35:= 1; ELSE DI35:= 0; ENDIF;
IF (DATA & 128) THEN DI36:= 1; ELSE DI36:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI37:= 1; ELSE DI37:= 0; ENDIF;
IF (DATA & 2) THEN DI38:= 1; ELSE DI38:= 0; ENDIF;
IF (DATA & 4) THEN DI39:= 1; ELSE DI39:= 0; ENDIF;
IF (DATA & 8) THEN DI40:= 1; ELSE DI40:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 41-60
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital2 NAMED "Swegon GG DI3" TYPEID 21217 IS
PARAMETER
Id : "Address";
PUBLIC
DI41 : "Alarm no. 25";
DI42 : "Alarm no. 26";
DI43 : "Alarm no. 27";
DI44 : "Alarm no. 28";
DI45 : "Alarm no. 29";
DI46 : "Alarm no. 30";
DI47 : "Alarm no. 31";
DI48 : "Alarm no. 32";
DI49 : "Alarm no. 33";
DI50 : "Alarm no. 34";
DI51 : "Alarm no. 35";
DI52 : "Alarm no. 36";
DI53 : "Alarm no. 37";
DI54 : "Alarm no. 38";
DI55 : "Alarm no. 39";
DI56 : "Alarm no. 40";
DI57 : "Alarm no. 41";
DI58 : "Alarm no. 42";
DI59 : "Alarm no. 43";
DI60 : "Alarm no. 44";
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput3 NAMED "DI 41-60" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(40); % Start adress
DATA[4] := RWORD(20); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI41:= 1; ELSE DI41:= 0; ENDIF;
IF (DATA & 2) THEN DI42:= 1; ELSE DI42:= 0; ENDIF;
IF (DATA & 4) THEN DI43:= 1; ELSE DI43:= 0; ENDIF;
IF (DATA & 8) THEN DI44:= 1; ELSE DI44:= 0; ENDIF;
IF (DATA & 16) THEN DI45:= 1; ELSE DI45:= 0; ENDIF;
IF (DATA & 32) THEN DI46:= 1; ELSE DI46:= 0; ENDIF;
IF (DATA & 64) THEN DI47:= 1; ELSE DI47:= 0; ENDIF;
IF (DATA & 128) THEN DI48:= 1; ELSE DI48:= 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI49:= 1; ELSE DI49:= 0; ENDIF;
IF (DATA & 2) THEN DI50:= 1; ELSE DI50:= 0; ENDIF;
IF (DATA & 4) THEN DI51:= 1; ELSE DI51:= 0; ENDIF;
IF (DATA & 8) THEN DI52:= 1; ELSE DI52:= 0; ENDIF;
IF (DATA & 16) THEN DI53:= 1; ELSE DI53:= 0; ENDIF;
IF (DATA & 32) THEN DI54:= 1; ELSE DI54:= 0; ENDIF;
IF (DATA & 64) THEN DI55:= 1; ELSE DI55:= 0; ENDIF;
IF (DATA & 128) THEN DI56:= 1; ELSE DI56:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI57:= 1; ELSE DI57:= 0; ENDIF;
IF (DATA & 2) THEN DI58:= 1; ELSE DI58:= 0; ENDIF;
IF (DATA & 4) THEN DI59:= 1; ELSE DI59:= 0; ENDIF;
IF (DATA & 8) THEN DI60:= 1; ELSE DI60:= 0; ENDIF;
);
TIMEOUT 2000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for SWEGON GOLDEN GATE read digital inputs 60
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Note! Telegram for reading digital inputs
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2008-08-08 new script
%
DEVICETYPE SwegonGGDigital4 NAMED "Swegon GG DI4" TYPEID 21218 IS
PARAMETER
Id : "Address";
PUBLIC
DI61 : "Alarm no. 45";
DI62 : "Alarm no. 46";
DI63 : "Alarm no. 47";
DI64 : "Alarm no. 48";
DI65 : "Alarm no. 49";
DI66 : "Alarm no. 50";
DI67 : "Alarm no. 51";
DI68 : "Alarm no. 52";
DI69 : "Alarm no. 53";
DI70 : "Alarm no. 54";
DI71 : "Alarm no. 55";
DI72 : "Alarm no. 56";
DI73 : "Alarm no. 57";
DI74 : "Alarm no. 58";
DI75 : "Alarm no. 59";
DI76 : "Alarm no. 60";
DI77 : "Alarm no. 61";
PRIVATE
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalInput4 NAMED "DI 60" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(02); % Modbus command "02h" read discrete input (bit)
DATA[2] := RWORD(60); % Start adress
DATA[4] := RWORD(17); % Number of inputs
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(02);
DATA[2] = BYTE(3);
DATA[3] -> BYTE(IF (DATA & 1) THEN DI61:= 1; ELSE DI61:= 0; ENDIF;
IF (DATA & 2) THEN DI62:= 1; ELSE DI62:= 0; ENDIF;
IF (DATA & 4) THEN DI63:= 1; ELSE DI63:= 0; ENDIF;
IF (DATA & 8) THEN DI64:= 1; ELSE DI64:= 0; ENDIF;
IF (DATA & 16) THEN DI65:= 1; ELSE DI65:= 0; ENDIF;
IF (DATA & 32) THEN DI66:= 1; ELSE DI66:= 0; ENDIF;
IF (DATA & 64) THEN DI67:= 1; ELSE DI67:= 0; ENDIF;
IF (DATA & 128) THEN DI68:= 1; ELSE DI68:= 0; ENDIF;
);
DATA[4] -> BYTE(IF (DATA & 1) THEN DI69:= 1; ELSE DI69:= 0; ENDIF;
IF (DATA & 2) THEN DI70:= 1; ELSE DI70:= 0; ENDIF;
IF (DATA & 4) THEN DI71:= 1; ELSE DI71:= 0; ENDIF;
IF (DATA & 8) THEN DI72:= 1; ELSE DI72:= 0; ENDIF;
IF (DATA & 16) THEN DI73:= 1; ELSE DI73:= 0; ENDIF;
IF (DATA & 32) THEN DI74:= 1; ELSE DI74:= 0; ENDIF;
IF (DATA & 64) THEN DI75:= 1; ELSE DI75:= 0; ENDIF;
IF (DATA & 128) THEN DI76:= 1; ELSE DI76:= 0; ENDIF;
);
DATA[5] -> BYTE(IF (DATA & 1) THEN DI77:= 1; ELSE DI77:= 0; ENDIF;
);
TIMEOUT 2000
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.