Seneca Z-4AI
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 3
- Uppdaterad
- 2016-03-21
- Skapad
- 2013-08-27
- Kategori
- IO enheter, Modbus
- Visningar
- 2478
Beskrivning
Seneca Z-4AI (fyra analoga ingångar)
Bruksanvisning
Hur man installerar typdefinitionerna och driftsätter modulerna finns beskrivet i användarmanualen, kapitel 18.7. För inkopplingsanvisningar och liknande, se modulens manual. Den kan hämtas från Senecas hemsida: http://www.seneca.it/
Det finns ett skript för att konfigurera Seneca enheter
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
% Measured value from register 40021-40024 not normalized.
% Channel input value max 2000mV (current 0-20mA) or
% max 10V (voltage 0-10V) gives channel value 0..16000
%
DEVICETYPE SenecaZ4AI NAMED "Seneca Z-4AI" TYPEID 21007
IS
PARAMETER
Id :"Address";
FiltAI1 :"Filter AI1" ["0..6"];
FiltAI2 :"Filter AI2" ["0..6"];
FiltAI3 :"Filter AI3" ["0..6"];
FiltAI4 :"Filter AI4" ["0..6"];
PUBLIC
AI_1 :"AI1" ["%"];
AI_2 :"AI2" ["%"];
AI_3 :"AI3" ["%"];
AI_4 :"AI4" ["%"];
OOR_1 :"OutOfRange AI1";
OOR_2 :"OutOfRange AI2";
OOR_3 :"OutOfRange AI3";
OOR_4 :"OutOfRange AI4";
PRIVATE
BAUDRATE 38400;
CHECKSUM MODBUS SWAPPED;
TELEGRAM ReadInputs NAMED "Read Inputs" IS
QUESTION
DATA[0] := BYTE(Id);
DATA[1] := HEX(03);
DATA[2] := HEX(00);
DATA[3] := HEX(14);
DATA[4] := HEX(00);
DATA[5] := HEX(04);
ANSWER SIZE 13
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[2] = HEX(08);
DATA[3] -> RWORD(
IF DATA > 32767 THEN
AI_1 := (DATA - 65536) / 160;
ELSE
AI_1 := DATA / 160;
ENDIF;
);
DATA[5] -> RWORD(
IF DATA > 32767 THEN
AI_2 := (DATA - 65536) / 160;
ELSE
AI_2 := DATA / 160;
ENDIF;
);
DATA[7] -> RWORD(
IF DATA > 32767 THEN
AI_3 := (DATA - 65536) / 160;
ELSE
AI_3 := DATA / 160;
ENDIF;
);
DATA[9] -> RWORD(
IF DATA > 32767 THEN
AI_4 := (DATA - 65536) / 160;
ELSE
AI_4 := DATA / 160;
ENDIF;
);
TIMEOUT 300
END;
TELEGRAM ReadOverFlow NAMED "Read OverFlow" IS
QUESTION
DATA[0] := BYTE(Id);
DATA[1] := HEX(03);
DATA[2] := HEX(00);
DATA[3] := HEX(02);
DATA[4] := HEX(00);
DATA[5] := HEX(01);
ANSWER SIZE 7
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[2] = HEX(02);
DATA[3] -> RWORD(
IF (FLOOR(DATA / 256) MOD 2 > 0) THEN OOR_1 := 1; ELSE OOR_1 := 0; ENDIF;
IF (FLOOR(DATA / 512) MOD 2 > 0) THEN OOR_1 := 1; ENDIF;
IF (FLOOR(DATA / 1024) MOD 2 > 0) THEN OOR_2 := 1; ELSE OOR_2 := 0; ENDIF;
IF (FLOOR(DATA / 2048) MOD 2 > 0) THEN OOR_2 := 1; ENDIF;
IF (FLOOR(DATA / 4096) MOD 2 > 0) THEN OOR_3 := 1; ELSE OOR_3 := 0; ENDIF;
IF (FLOOR(DATA / 8192) MOD 2 > 0) THEN OOR_3 := 1; ENDIF;
IF (FLOOR(DATA / 16384) MOD 2 > 0) THEN OOR_4 := 1; ELSE OOR_4 := 0; ENDIF;
IF (FLOOR(DATA / 32768) MOD 2 > 0) THEN OOR_4 := 1; ENDIF;
);
TIMEOUT 300
END;
TELEGRAM WriteSettings NAMED "Write Settings" IS
QUESTION
DATA[0] := BYTE(Id);
DATA[1] := HEX(10);
DATA[2] := HEX(00);
DATA[3] := HEX(03);
DATA[4] := HEX(00);
DATA[5] := HEX(04);
DATA[6] := HEX(08);
DATA[7] <- RWORD(
IF FiltAI1 <= 6 THEN DATA := FiltAI1;
ELSE DATA := 0; ENDIF;
);
DATA[9] <- RWORD(
IF FiltAI2 <= 6 THEN DATA := FiltAI2;
ELSE DATA := 0; ENDIF;
);
DATA[11] <- RWORD(
IF FiltAI3 <= 6 THEN DATA := FiltAI3;
ELSE DATA := 0; ENDIF;
);
DATA[13] <- RWORD(
IF FiltAI4 <= 6 THEN DATA := FiltAI4;
ELSE DATA := 0; ENDIF;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(10);
TIMEOUT 300
END;
END;
% Channel input value max 2000mV (current 0-20mA) or
% max 10V (voltage 0-10V) gives channel value 0..16000
%
DEVICETYPE SenecaZ4AI NAMED "Seneca Z-4AI" TYPEID 21007
IS
PARAMETER
Id :"Address";
FiltAI1 :"Filter AI1" ["0..6"];
FiltAI2 :"Filter AI2" ["0..6"];
FiltAI3 :"Filter AI3" ["0..6"];
FiltAI4 :"Filter AI4" ["0..6"];
PUBLIC
AI_1 :"AI1" ["%"];
AI_2 :"AI2" ["%"];
AI_3 :"AI3" ["%"];
AI_4 :"AI4" ["%"];
OOR_1 :"OutOfRange AI1";
OOR_2 :"OutOfRange AI2";
OOR_3 :"OutOfRange AI3";
OOR_4 :"OutOfRange AI4";
PRIVATE
BAUDRATE 38400;
CHECKSUM MODBUS SWAPPED;
TELEGRAM ReadInputs NAMED "Read Inputs" IS
QUESTION
DATA[0] := BYTE(Id);
DATA[1] := HEX(03);
DATA[2] := HEX(00);
DATA[3] := HEX(14);
DATA[4] := HEX(00);
DATA[5] := HEX(04);
ANSWER SIZE 13
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[2] = HEX(08);
DATA[3] -> RWORD(
IF DATA > 32767 THEN
AI_1 := (DATA - 65536) / 160;
ELSE
AI_1 := DATA / 160;
ENDIF;
);
DATA[5] -> RWORD(
IF DATA > 32767 THEN
AI_2 := (DATA - 65536) / 160;
ELSE
AI_2 := DATA / 160;
ENDIF;
);
DATA[7] -> RWORD(
IF DATA > 32767 THEN
AI_3 := (DATA - 65536) / 160;
ELSE
AI_3 := DATA / 160;
ENDIF;
);
DATA[9] -> RWORD(
IF DATA > 32767 THEN
AI_4 := (DATA - 65536) / 160;
ELSE
AI_4 := DATA / 160;
ENDIF;
);
TIMEOUT 300
END;
TELEGRAM ReadOverFlow NAMED "Read OverFlow" IS
QUESTION
DATA[0] := BYTE(Id);
DATA[1] := HEX(03);
DATA[2] := HEX(00);
DATA[3] := HEX(02);
DATA[4] := HEX(00);
DATA[5] := HEX(01);
ANSWER SIZE 7
DATA[0] = BYTE(Id);
DATA[1] = HEX(03);
DATA[2] = HEX(02);
DATA[3] -> RWORD(
IF (FLOOR(DATA / 256) MOD 2 > 0) THEN OOR_1 := 1; ELSE OOR_1 := 0; ENDIF;
IF (FLOOR(DATA / 512) MOD 2 > 0) THEN OOR_1 := 1; ENDIF;
IF (FLOOR(DATA / 1024) MOD 2 > 0) THEN OOR_2 := 1; ELSE OOR_2 := 0; ENDIF;
IF (FLOOR(DATA / 2048) MOD 2 > 0) THEN OOR_2 := 1; ENDIF;
IF (FLOOR(DATA / 4096) MOD 2 > 0) THEN OOR_3 := 1; ELSE OOR_3 := 0; ENDIF;
IF (FLOOR(DATA / 8192) MOD 2 > 0) THEN OOR_3 := 1; ENDIF;
IF (FLOOR(DATA / 16384) MOD 2 > 0) THEN OOR_4 := 1; ELSE OOR_4 := 0; ENDIF;
IF (FLOOR(DATA / 32768) MOD 2 > 0) THEN OOR_4 := 1; ENDIF;
);
TIMEOUT 300
END;
TELEGRAM WriteSettings NAMED "Write Settings" IS
QUESTION
DATA[0] := BYTE(Id);
DATA[1] := HEX(10);
DATA[2] := HEX(00);
DATA[3] := HEX(03);
DATA[4] := HEX(00);
DATA[5] := HEX(04);
DATA[6] := HEX(08);
DATA[7] <- RWORD(
IF FiltAI1 <= 6 THEN DATA := FiltAI1;
ELSE DATA := 0; ENDIF;
);
DATA[9] <- RWORD(
IF FiltAI2 <= 6 THEN DATA := FiltAI2;
ELSE DATA := 0; ENDIF;
);
DATA[11] <- RWORD(
IF FiltAI3 <= 6 THEN DATA := FiltAI3;
ELSE DATA := 0; ENDIF;
);
DATA[13] <- RWORD(
IF FiltAI4 <= 6 THEN DATA := FiltAI4;
ELSE DATA := 0; ENDIF;
);
ANSWER SIZE 8
DATA[0] = BYTE(Id);
DATA[1] = HEX(10);
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.