FIDELIX Digital outputs UltraBase
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 3
- Uppdaterad
- 2019-01-07
- Skapad
- 2013-04-07
- Kategori
- IO enheter, Modbus
- Visningar
- 2513
Beskrivning
Drivrutin för Fidelix Digital output i UltraBase
Bruksanvisning
Aktivera telegram "Ställ DU" för att uppdatera utgångar. Alla utgångar kommer att ställas. Sätt lämpligt uppdateringsintervall t.ex 5 sekunder.
Aktivera telegram "Ställ DU start" bara om startvärdet för utgångar måste anta ett visst värde när Fidelix modulen startas. Lämpligt uppdateringsintervall 60 sekunder eller mer.
Ställ startvärde 0 eller 1 för aktivering. Alla andra värden (t.ex. -1) deaktiverar startvärdet.
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" INT;
DU1 : "Digital ut 1" INT;
DU2 : "Digital ut 2" INT;
DU3 : "Digital ut 3" INT;
DU4 : "Digital ut 4" INT;
DU5 : "Digital ut 5" INT;
DU6 : "Digital ut 6" INT;
DU7 : "Digital ut 7" INT;
DU8 : "Digital ut 8" INT;
DU1_Start : "Startvärde DU1" INT;
DU2_Start : "Startvärde DU2" INT;
DU3_Start : "Startvärde DU3" INT;
DU4_Start : "Startvärde DU4" INT;
DU5_Start : "Startvärde DU5" INT;
DU6_Start : "Startvärde DU6" INT;
DU7_Start : "Startvärde DU7" INT;
DU8_Start : "Startvärde DU8" INT;
PUBLIC
PRIVATE
Tmp;
BAUDRATE 9600;
CHRGAPTIMEOUT 5;
CHECKSUM MODBUS SWAPPED;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ställ digital ut 1-8
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;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for FIDELIX Digital outputs startvalue
%
% Aktivera och ställ startvärde för utgång 1-8.
% Startvärde 0 = Aktivera startvärde 0
% Startvärde 1 = Aktivera startvärde 1
% Alla andra startvärden avaktiverar startvärdet.
%
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_Start=0 THEN Tmp:=Tmp+256; % Bit 0 och 8
ELSIF DU1_Start=1 THEN Tmp:=Tmp+257;
ENDIF;
IF DU2_Start=0 THEN Tmp:=Tmp+512; % Bit 1 och 9
ELSIF DU2_Start=1 THEN Tmp:=Tmp+514;
ENDIF;
IF DU3_Start=0 THEN Tmp:=Tmp+1024; % Bit 2 och 10
ELSIF DU3_Start=1 THEN Tmp:=Tmp+1028;
ENDIF;
IF DU4_Start=0 THEN Tmp:=Tmp+2048; % Bit 3 och 11
ELSIF DU4_Start=1 THEN Tmp:=Tmp+2056;
ENDIF;
IF DU5_Start=0 THEN Tmp:=Tmp+4096; % Bit 4 och 12
ELSIF DU5_Start=1 THEN Tmp:=Tmp+4112;
ENDIF;
IF DU6_Start=0 THEN Tmp:=Tmp+8192; % Bit 5 och 13
ELSIF DU6_Start=1 THEN Tmp:=Tmp+8224;
ENDIF;
IF DU7_Start=0 THEN Tmp:=Tmp+16384; % Bit 6 och 14
ELSIF DU7_Start=1 THEN Tmp:=Tmp+16448;
ENDIF;
IF DU8_Start=0 THEN Tmp:=Tmp+32768; % Bit 7 och 15
ELSIF DU8_Start=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.