FIDELIX Digital outputs
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 1
- Uppdaterad
- 2013-08-27
- Skapad
- 2013-08-27
- Kategori
- IO enheter, Modbus
- Visningar
- 2837
Beskrivning
Device definition for FIDELIX Digital outputs
Bruksanvisning
See Fidelix I/O-module specifications (pdf)
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 FIDELIX Digital outputs
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2009-01-12
%
DEVICETYPE FidelixDOUT NAMED "Fidelix DU" TYPEID 21225 IS
PARAMETER
Id : "Adress";
DU1 : "Digital ut 1";
DU2 : "Digital ut 2";
DU3 : "Digital ut 3";
DU4 : "Digital ut 4";
DU5 : "Digital ut 5";
DU6 : "Digital ut 6";
DU7 : "Digital ut 7";
DU8 : "Digital ut 8";
PUBLIC
PRIVATE
Tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalOutput NAMED "Ställ DU" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(10); % Modbus command "0x10" write multiple registers
DATA[2] := RWORD(0); % start register
DATA[4] := RWORD(1); % number of registers to write
DATA[6] := BYTE(2); % number of bytes
DATA[7] <- RWORD(IF DU1 THEN Tmp := 1; ELSE Tmp := 0; ENDIF;
IF DU2 THEN Tmp := Tmp + 2; ENDIF;
IF DU3 THEN Tmp := Tmp + 4; ENDIF;
IF DU4 THEN Tmp := Tmp + 8; ENDIF;
IF DU5 THEN Tmp := Tmp + 16; ENDIF;
IF DU6 THEN Tmp := Tmp + 32; ENDIF;
IF DU7 THEN Tmp := Tmp + 64; ENDIF;
IF DU8 THEN Tmp := Tmp + 128; ENDIF;
DATA := Tmp;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(10);
%DATA[2] = RWORD(0); % start register
%DATA[4] = RWORD(1); % number of registers to write
TIMEOUT 1000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for FIDELIX Digital outputs startvalue
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Ställ startvärde 0 eller 1 för aktivering
% Alla andra värden deaktiverar startvärdet.
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2009-01-12
%
DEVICETYPE FidelixDOUT NAMED "Fidelix DUstart" TYPEID 21226 IS
PARAMETER
Id : "Adress";
DU1 : "Startvärde DU1";
DU2 : "Startvärde DU2";
DU3 : "Startvärde DU3";
DU4 : "Startvärde DU4";
DU5 : "Startvärde DU5";
DU6 : "Startvärde DU6";
DU7 : "Startvärde DU7";
DU8 : "Startvärde DU8";
PUBLIC
PRIVATE
Tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalOutStart NAMED "Ställ DU start" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(10); % Modbus command "0x10" write multiple registers
DATA[2] := RWORD(1); % start register
DATA[4] := RWORD(1); % number of registers to write
DATA[6] := BYTE(2); % number of bytes
DATA[7] <- RWORD(Tmp := 0;
IF DU1=0 THEN Tmp:=Tmp+256; % Bit 0 och 8
ELSIF DU1=1 THEN Tmp:=Tmp+257;
ENDIF;
IF DU2=0 THEN Tmp:=Tmp+512; % Bit 1 och 9
ELSIF DU2=1 THEN Tmp:=Tmp+514;
ENDIF;
IF DU3=0 THEN Tmp:=Tmp+1024; % Bit 2 och 10
ELSIF DU3=1 THEN Tmp:=Tmp+1028;
ENDIF;
IF DU4=0 THEN Tmp:=Tmp+2048; % Bit 3 och 11
ELSIF DU4=1 THEN Tmp:=Tmp+2056;
ENDIF;
IF DU5=0 THEN Tmp:=Tmp+4096; % Bit 4 och 12
ELSIF DU5=1 THEN Tmp:=Tmp+4112;
ENDIF;
IF DU6=0 THEN Tmp:=Tmp+8192; % Bit 5 och 13
ELSIF DU6=1 THEN Tmp:=Tmp+8224;
ENDIF;
IF DU7=0 THEN Tmp:=Tmp+16384; % Bit 6 och 14
ELSIF DU7=1 THEN Tmp:=Tmp+16448;
ENDIF;
IF DU8=0 THEN Tmp:=Tmp+32768; % Bit 7 och 15
ELSIF DU8=1 THEN Tmp:=Tmp+32896;
ENDIF;
DATA := Tmp;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(10);
%DATA[2] = RWORD(1); % start register
%DATA[4] = RWORD(1); % number of registers to write
TIMEOUT 1000
END;
END;
% Device definition for FIDELIX Digital outputs
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2009-01-12
%
DEVICETYPE FidelixDOUT NAMED "Fidelix DU" TYPEID 21225 IS
PARAMETER
Id : "Adress";
DU1 : "Digital ut 1";
DU2 : "Digital ut 2";
DU3 : "Digital ut 3";
DU4 : "Digital ut 4";
DU5 : "Digital ut 5";
DU6 : "Digital ut 6";
DU7 : "Digital ut 7";
DU8 : "Digital ut 8";
PUBLIC
PRIVATE
Tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalOutput NAMED "Ställ DU" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(10); % Modbus command "0x10" write multiple registers
DATA[2] := RWORD(0); % start register
DATA[4] := RWORD(1); % number of registers to write
DATA[6] := BYTE(2); % number of bytes
DATA[7] <- RWORD(IF DU1 THEN Tmp := 1; ELSE Tmp := 0; ENDIF;
IF DU2 THEN Tmp := Tmp + 2; ENDIF;
IF DU3 THEN Tmp := Tmp + 4; ENDIF;
IF DU4 THEN Tmp := Tmp + 8; ENDIF;
IF DU5 THEN Tmp := Tmp + 16; ENDIF;
IF DU6 THEN Tmp := Tmp + 32; ENDIF;
IF DU7 THEN Tmp := Tmp + 64; ENDIF;
IF DU8 THEN Tmp := Tmp + 128; ENDIF;
DATA := Tmp;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(10);
%DATA[2] = RWORD(0); % start register
%DATA[4] = RWORD(1); % number of registers to write
TIMEOUT 1000
END;
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for FIDELIX Digital outputs startvalue
%
% Settings module:
% Parity: None
% Baud: 9600
% Mode: RTU
%
% Ställ startvärde 0 eller 1 för aktivering
% Alla andra värden deaktiverar startvärdet.
%
% Author: Peter Widetun, ABELKO AB Luleå
% History: 2009-01-12
%
DEVICETYPE FidelixDOUT NAMED "Fidelix DUstart" TYPEID 21226 IS
PARAMETER
Id : "Adress";
DU1 : "Startvärde DU1";
DU2 : "Startvärde DU2";
DU3 : "Startvärde DU3";
DU4 : "Startvärde DU4";
DU5 : "Startvärde DU5";
DU6 : "Startvärde DU6";
DU7 : "Startvärde DU7";
DU8 : "Startvärde DU8";
PUBLIC
PRIVATE
Tmp;
BAUDRATE 9600;
CHECKSUM MODBUS SWAPPED;
TELEGRAM DigitalOutStart NAMED "Ställ DU start" IS
QUESTION
DATA[0] := BYTE(Id); % Modbus unit address
DATA[1] := HEX(10); % Modbus command "0x10" write multiple registers
DATA[2] := RWORD(1); % start register
DATA[4] := RWORD(1); % number of registers to write
DATA[6] := BYTE(2); % number of bytes
DATA[7] <- RWORD(Tmp := 0;
IF DU1=0 THEN Tmp:=Tmp+256; % Bit 0 och 8
ELSIF DU1=1 THEN Tmp:=Tmp+257;
ENDIF;
IF DU2=0 THEN Tmp:=Tmp+512; % Bit 1 och 9
ELSIF DU2=1 THEN Tmp:=Tmp+514;
ENDIF;
IF DU3=0 THEN Tmp:=Tmp+1024; % Bit 2 och 10
ELSIF DU3=1 THEN Tmp:=Tmp+1028;
ENDIF;
IF DU4=0 THEN Tmp:=Tmp+2048; % Bit 3 och 11
ELSIF DU4=1 THEN Tmp:=Tmp+2056;
ENDIF;
IF DU5=0 THEN Tmp:=Tmp+4096; % Bit 4 och 12
ELSIF DU5=1 THEN Tmp:=Tmp+4112;
ENDIF;
IF DU6=0 THEN Tmp:=Tmp+8192; % Bit 5 och 13
ELSIF DU6=1 THEN Tmp:=Tmp+8224;
ENDIF;
IF DU7=0 THEN Tmp:=Tmp+16384; % Bit 6 och 14
ELSIF DU7=1 THEN Tmp:=Tmp+16448;
ENDIF;
IF DU8=0 THEN Tmp:=Tmp+32768; % Bit 7 och 15
ELSIF DU8=1 THEN Tmp:=Tmp+32896;
ENDIF;
DATA := Tmp;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(10);
%DATA[2] = RWORD(1); % start register
%DATA[4] = RWORD(1); % number of registers to write
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.