IMSE MxM28
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Daniel Carlson, Abelko Innovation
- Version
- 13
- Uppdaterad
- 2016-11-02
- Skapad
- 2015-01-15
- Kategori
- IO enheter, Modbus
- Visningar
- 6492
Beskrivning
Typdefinition för Abelkos expansionsmodul MxM28 som ingår IMSE-familjen. Detta skript används då modulen kopplas som en modbus-enhet.
Modulen har 8 universalingångar, 8 digitala ingångar, 6 analoga utgångar och 6 digitala reläutgångar.
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for IMSE MxM28
%
% Settings module:
% Parity: None
% Baud: 38400
% Mode: RTU
%
% Factory default
% Address: 1
%
% Author: Daniel Carlson, ABELKO AB Luleå
%
% History: 2014-03-28 DC initial version
% 2015-09-03 DC Answer size of telegram GetDI1-8 shall be 21, not 20
% 2016-05-13 DC Munit added for counters and frequency
%
DEVICETYPE IMSE_MxM28 NAMED "IMSE_MxM28" TYPEID 21465 IS
PARAMETER
%%%%%%%%%%%%%%%%%%%%%%
% Address of this unit
Addr: "Address" [""] INT
| (sv) "Adress"
| (en) "Address"
| (MENU) "YES";
%%%%%%%%%%%%%%%%%%%%%%%
% Communication timeout
ComTimeout: "Com timeout" [""] INT
| (sv) "Kommunikationstimeout"
| (en) "Communication timeout"
| (MENU) "YES";
%%%%%%%%%%%%%%%%
% Reset counters
DI1_CounterReset :"DI1 Reset counter" [""] INT
| (sv) "DI1 Nollställ räknare"
| (en) "DI1 Reset counter"
| (NODE) "DI1";
DI2_CounterReset :"DI2 Reset counter" [""] INT
| (sv) "DI2 Nollställ räknare"
| (en) "DI2 Reset counter"
| (NODE) "DI2";
DI3_CounterReset :"DI3 Reset counter" [""] INT
| (sv) "DI3 Nollställ räknare"
| (en) "DI3 Reset counter"
| (NODE) "DI3";
DI4_CounterReset :"DI4 Reset counter" [""] INT
| (sv) "DI4 Nollställ räknare"
| (en) "DI4 Reset counter"
| (NODE) "DI4";
DI5_CounterReset :"DI5 Reset counter" [""] INT
| (sv) "DI5 Nollställ räknare"
| (en) "DI5 Reset counter"
| (NODE) "DI5";
DI6_CounterReset :"DI6 Reset counter" [""] INT
| (sv) "DI6 Nollställ räknare"
| (en) "DI6 Reset counter"
| (NODE) "DI6";
DI7_CounterReset :"DI7 Reset counter" [""] INT
| (sv) "DI7 Nollställ räknare"
| (en) "DI7 Reset counter"
| (NODE) "DI7";
DI8_CounterReset :"DI8 Reset counter" [""] INT
| (sv) "DI8 Nollställ räknare"
| (en) "DI8 Reset counter"
| (NODE) "DI8";
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Reset counter overflow flag
DI1_OverflowFlagReset :"DI1 Reset overflow flag" [""] INT
| (sv) "DI1 Nollställ fullindikering"
| (en) "DI1 Reset overflow flag"
| (NODE) "DI1";
DI2_OverflowFlagReset :"DI2 Reset overflow flag" [""] INT
| (sv) "DI2 Nollställ fullindikering"
| (en) "DI2 Reset overflow flag"
| (NODE) "DI2";
DI3_OverflowFlagReset :"DI3 Reset overflow flag" [""] INT
| (sv) "DI3 Nollställ fullindikering"
| (en) "DI3 Reset overflow flag"
| (NODE) "DI3";
DI4_OverflowFlagReset :"DI4 Reset overflow flag" [""] INT
| (sv) "DI4 Nollställ fullindikering"
| (en) "DI4 Reset overflow flag"
| (NODE) "DI4";
DI5_OverflowFlagReset :"DI5 Reset overflow flag" [""] INT
| (sv) "DI5 Nollställ fullindikering"
| (en) "DI5 Reset overflow flag"
| (NODE) "DI5";
DI6_OverflowFlagReset :"DI6 Reset overflow flag" [""] INT
| (sv) "DI6 Nollställ fullindikering"
| (en) "DI6 Reset overflow flag"
| (NODE) "DI6";
DI7_OverflowFlagReset :"DI7 Reset overflow flag" [""] INT
| (sv) "DI7 Nollställ fullindikering"
| (en) "DI7 Reset overflow flag"
| (NODE) "DI7";
DI8_OverflowFlagReset :"DI8 Reset overflow flag" [""] INT
| (sv) "DI8 Nollställ fullindikering"
| (en) "DI8 Reset overflow flag"
| (NODE) "DI8";
%%%%%%%%%%%%%%%%
% Flank Settings
DI1_FlankSettings: "DI1 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI1 Flankinställning"
| (en) "DI1 Flank setting"
| (NODE) "DI1"
| (MENU) "YES";
DI2_FlankSettings: "DI2 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI2 Flankinställning"
| (en) "DI2 Flank setting"
| (NODE) "DI2"
| (MENU) "YES";
DI3_FlankSettings: "DI3 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI3 Flankinställning"
| (en) "DI3 Flank setting"
| (NODE) "DI3"
| (MENU) "YES";
DI4_FlankSettings: "DI4 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI4 Flankinställning"
| (en) "DI4 Flank setting"
| (NODE) "DI4"
| (MENU) "YES";
DI5_FlankSettings: "DI5 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI5 Flankinställning"
| (en) "DI5 Flank setting"
| (NODE) "DI5"
| (MENU) "YES";
DI6_FlankSettings: "DI6 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI6 Flankinställning"
| (en) "DI6 Flank setting"
| (NODE) "DI6"
| (MENU) "YES";
DI7_FlankSettings: "DI7 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI7 Flankinställning"
| (en) "DI7 Flank setting"
| (NODE) "DI7"
| (MENU) "YES";
DI8_FlankSettings: "DI8 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI8 Flankinställning"
| (en) "DI8 Flank setting"
| (NODE) "DI8"
| (MENU) "YES";
%%%%%%%%%%%%%%
% Trip voltage
DI_TripVoltage: "DI Trip voltage" ["10V,4V"] ENUM
| (sv) "DI Omslagsspänning"
| (en) "DI Trip voltage"
| (MENU) "YES";
%%%%%%%%%%%%%%%%
% Digital output
DO1: "DO1" [""] INT
| (sv) "DO1"
| (en) "DO1"
| (NODE) "DO1";
DO2: "DO2" [""] INT
| (sv) "DO2"
| (en) "DO2"
| (NODE) "DO2";
DO3: "DO3" [""] INT
| (sv) "DO3"
| (en) "DO3"
| (NODE) "DO3";
DO4: "DO4" [""] INT
| (sv) "DO4"
| (en) "DO4"
| (NODE) "DO4";
DO5: "DO5" [""] INT
| (sv) "DO5"
| (en) "DO5"
| (NODE) "DO5";
DO6: "DO6" [""] INT
| (sv) "DO6"
| (en) "DO6"
| (NODE) "DO6";
%%%%%%%%%%%%%%%%%%%%%%
% Universal input type
UI1_Type: "UI1_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI1 Typ av mätning"
| (en) "UI1 Measurement type"
| (NODE) "UI1"
| (MENU) "YES";
UI2_Type: "UI2_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI2 Typ av mätning"
| (en) "UI2 Measurement type"
| (NODE) "UI2"
| (MENU) "YES";
UI3_Type: "UI3_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI3 Typ av mätning"
| (en) "UI3 Measurement type"
| (NODE) "UI3"
| (MENU) "YES";
UI4_Type: "UI4_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI4 Typ av mätning"
| (en) "UI4 Measurement type"
| (NODE) "UI4"
| (MENU) "YES";
UI5_Type: "UI5_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI5 Typ av mätning"
| (en) "UI5 Measurement type"
| (NODE) "UI5"
| (MENU) "YES";
UI6_Type: "UI6_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI6 Typ av mätning"
| (en) "UI6 Measurement type"
| (NODE) "UI6"
| (MENU) "YES";
UI7_Type: "UI7_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI7 Typ av mätning"
| (en) "UI7 Measurement type"
| (NODE) "UI7"
| (MENU) "YES";
UI8_Type: "UI8_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI8 Typ av mätning"
| (en) "UI8 Measurement type"
| (NODE) "UI8"
| (MENU) "YES";
%%%%%%%%%%%%%%%%
% Resistor Range
UI1_Range : "UI1_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI1 Mätområde"
| (en) "UI1 Measurement range"
| (NODE) "UI1"
| (MENU) "COND, UI1_Type, =, 0";
UI2_Range : "UI2_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI2 Mätområde"
| (en) "UI2 Measurement range"
| (NODE) "UI2"
| (MENU) "COND, UI2_Type, =, 0";
UI3_Range : "UI3_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI3 Mätområde"
| (en) "UI3 Measurement range"
| (NODE) "UI3"
| (MENU) "COND, UI3_Type, =, 0";
UI4_Range : "UI4_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI4 Mätområde"
| (en) "UI4 Measurement range"
| (NODE) "UI4"
| (MENU) "COND, UI4_Type, =, 0";
UI5_Range : "UI5_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI5 Mätområde"
| (en) "UI5 Measurement range"
| (NODE) "UI5"
| (MENU) "COND, UI5_Type, =, 0";
UI6_Range : "UI6_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI6 Mätområde"
| (en) "UI6 Measurement range"
| (NODE) "UI6"
| (MENU) "COND, UI6_Type, =, 0";
UI7_Range : "UI7_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI7 Mätområde"
| (en) "UI7 Measurement range"
| (NODE) "UI7"
| (MENU) "COND, UI7_Type, =, 0";
UI8_Range : "UI8_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI8 Mätområde"
| (en) "UI8 Measurement range"
| (NODE) "UI8"
| (MENU) "COND, UI8_Type, =, 0";
%%%%%%%%%%%%%%%
% Analog output
AO1: "AO1" ["V"] DEC2
| (sv) "AO1"
| (en) "AO1"
| (NODE) "AO1";
AO2: "AO2" ["V"] DEC2
| (sv) "AO2"
| (en) "AO2"
| (NODE) "AO2";
AO3: "AO3" ["V"] DEC2
| (sv) "AO3"
| (en) "AO3"
| (NODE) "AO3";
AO4: "AO4" ["V"] DEC2
| (sv) "AO4"
| (en) "AO4"
| (NODE) "AO4";
AO5: "AO5" ["V"] DEC2
| (sv) "AO5"
| (en) "AO5"
| (NODE) "AO5";
AO6: "AO6" ["V"] DEC2
| (sv) "AO6"
| (en) "AO6"
| (NODE) "AO6";
PUBLIC
%%%%%%%%%%%%%%%%%%%%%%%
% Cable sequence number
CSN: "CSN" [""] INT
| (sv) "Kabelsekvensnummer"
| (en) "Cable sequence number"
| (MENU) "YES";
%%%%%%%%%%%%%%%
% Digital input
DI1 :"DI1" [""] INT
| (sv) "DI1"
| (en) "DI1"
| (NODE) "DI1";
DI2 :"DI2" [""] INT
| (sv) "DI2"
| (en) "DI2"
| (NODE) "DI2";
DI3 :"DI3" [""] INT
| (sv) "DI3"
| (en) "DI3"
| (NODE) "DI3";
DI4 :"DI4" [""] INT
| (sv) "DI4"
| (en) "DI4"
| (NODE) "DI4";
DI5 :"DI5" [""] INT
| (sv) "DI5"
| (en) "DI5"
| (NODE) "DI5";
DI6 :"DI6" [""] INT
| (sv) "DI6"
| (en) "DI6"
| (NODE) "DI6";
DI7 :"DI7" [""] INT
| (sv) "DI7"
| (en) "DI7"
| (NODE) "DI7";
DI8 :"DI8" [""] INT
| (sv) "DI8"
| (en) "DI8"
| (NODE) "DI8";
%%%%%%%%%%%
% Frequency
DI1_Freq :"DI1 Frequency" ["Hz"] DEC2
| (sv) "DI1 Frekvens"
| (en) "DI1 Frequency"
| (NODE) "DI1"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI2_Freq :"DI2 Frequency" ["Hz"] DEC2
| (sv) "DI2 Frekvens"
| (en) "DI2 Frequency"
| (NODE) "DI2"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI3_Freq :"DI3 Frequency" ["Hz"] DEC2
| (sv) "DI3 Frekvens"
| (en) "DI3 Frequency"
| (NODE) "DI3"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI4_Freq :"DI4 Frequency" ["Hz"] DEC2
| (sv) "DI4 Frekvens"
| (en) "DI4 Frequency"
| (NODE) "DI4"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI5_Freq :"DI5 Frequency" ["Hz"] DEC2
| (sv) "DI5 Frekvens"
| (en) "DI5 Frequency"
| (NODE) "DI5"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI6_Freq :"DI6 Frequency" ["Hz"] DEC2
| (sv) "DI6 Frekvens"
| (en) "DI6 Frequency"
| (NODE) "DI6"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI7_Freq :"DI7 Frequency" ["Hz"] DEC2
| (sv) "DI7 Frekvens"
| (en) "DI7 Frequency"
| (NODE) "DI7"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI8_Freq :"DI8 Frequency" ["Hz"] DEC2
| (sv) "DI8 Frekvens"
| (en) "DI8 Frequency"
| (NODE) "DI8"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
%%%%%%%%%
% Counter
DI1_Counter :"DI1 Counter" [""] INT
| (sv) "DI1 Räknare"
| (en) "DI1 Counter"
| (NODE) "DI1"
| (MUNIT) "pulses";
DI2_Counter :"DI2 Counter" [""] INT
| (sv) "DI2 Räknare"
| (en) "DI2 Counter"
| (NODE) "DI2"
| (MUNIT) "pulses";
DI3_Counter :"DI3 Counter" [""] INT
| (sv) "DI3 Räknare"
| (en) "DI3 Counter"
| (NODE) "DI3"
| (MUNIT) "pulses";
DI4_Counter :"DI4 Counter" [""] INT
| (sv) "DI4 Räknare"
| (en) "DI4 Counter"
| (NODE) "DI4"
| (MUNIT) "pulses";
DI5_Counter :"DI5 Counter" [""] INT
| (sv) "DI5 Räknare"
| (en) "DI5 Counter"
| (NODE) "DI5"
| (MUNIT) "pulses";
DI6_Counter :"DI6 Counter" [""] INT
| (sv) "DI6 Räknare"
| (en) "DI6 Counter"
| (NODE) "DI6"
| (MUNIT) "pulses";
DI7_Counter :"DI7 Counter" [""] INT
| (sv) "DI7 Räknare"
| (en) "DI7 Counter"
| (NODE) "DI7"
| (MUNIT) "pulses";
DI8_Counter :"DI8 Counter" [""] INT
| (sv) "DI8 Räknare"
| (en) "DI8 Counter"
| (NODE) "DI8"
| (MUNIT) "pulses";
%%%%%%%%%%%%%%%%%%
% Counter overflow
DI1_Overflow :"DI1 Counter Overflow" [""] INT
| (sv) "DI1 Räknare full"
| (en) "DI1 Counter overflow"
| (NODE) "DI1";
DI2_Overflow :"DI2 Counter Overflow" [""] INT
| (sv) "DI2 Räknare full"
| (en) "DI2 Counter overflow"
| (NODE) "DI2";
DI3_Overflow :"DI3 Counter Overflow" [""] INT
| (sv) "DI3 Räknare full"
| (en) "DI3 Counter overflow"
| (NODE) "DI3";
DI4_Overflow :"DI4 Counter Overflow" [""] INT
| (sv) "DI4 Räknare full"
| (en) "DI4 Counter overflow"
| (NODE) "DI4";
DI5_Overflow :"DI5 Counter Overflow" [""] INT
| (sv) "DI5 Räknare full"
| (en) "DI5 Counter overflow"
| (NODE) "DI5";
DI6_Overflow :"DI6 Counter Overflow" [""] INT
| (sv) "DI6 Räknare full"
| (en) "DI6 Counter overflow"
| (NODE) "DI6";
DI7_Overflow :"DI7 Counter Overflow" [""] INT
| (sv) "DI7 Räknare full"
| (en) "DI7 Counter overflow"
| (NODE) "DI7";
DI8_Overflow :"DI8 Counter Overflow" [""] INT
| (sv) "DI8 Räknare full"
| (en) "DI8 Counter overflow"
| (NODE) "DI8";
%%%%%%%%%%%%%%%
% Short circuit
DI_ShortCirc: "DI Short Circuit" [""] INT
| (sv) "DI Kortslutning"
| (en) "DI Short circuit"
| (MENU) "YES";
%%%%%%%%%%%%%
% DO Override
DO1_Overridden : "DO1 Manually overriden" [""] INT
| (sv) "DO1 Manuelt styrd"
| (en) "DO1 Manually overriden"
| (NODE) "DO1";
DO2_Overridden : "DO2 Manually overriden" [""] INT
| (sv) "DO2 Manuelt styrd"
| (en) "DO2 Manually overriden"
| (NODE) "DO2";
DO3_Overridden : "DO3 Manually overriden" [""] INT
| (sv) "DO3 Manuelt styrd"
| (en) "DO3 Manually overriden"
| (NODE) "DO3";
DO4_Overridden : "DO4 Manually overriden" [""] INT
| (sv) "DO4 Manuelt styrd"
| (en) "DO4 Manually overriden"
| (NODE) "DO4";
DO5_Overridden : "DO5 Manually overriden" [""] INT
| (sv) "DO5 Manuelt styrd"
| (en) "DO5 Manually overriden"
| (NODE) "DO5";
DO6_Overridden : "DO6 Manually overriden" [""] INT
| (sv) "DO6 Manuelt styrd"
| (en) "DO6 Manually overriden"
| (NODE) "DO6";
%%%%%%%%%%%%%%%%%%%%%%%
% Universal input value
UI1 : "UI1" [""] DEC2
| (sv) "UI1"
| (en) "UI1"
| (NODE) "UI1"
| (MUNIT) "IOC, UI1_Type"
| (RANGE) "IOC, UI1_Type, SRV, UI1_Range, R, 0-10, R, 0-20, R, 0/1";
UI2 : "UI2" [""] DEC2
| (sv) "UI2"
| (en) "UI2"
| (NODE) "UI2"
| (MUNIT) "IOC, UI2_Type"
| (RANGE) "IOC, UI2_Type, SRV, UI2_Range, R, 0-10, R, 0-20, R, 0/1";
UI3 : "UI3" [""] DEC2
| (sv) "UI3"
| (en) "UI3"
| (NODE) "UI3"
| (MUNIT) "IOC, UI3_Type"
| (RANGE) "IOC, UI3_Type, SRV, UI3_Range, R, 0-10, R, 0-20, R, 0/1";
UI4 : "UI4" [""] DEC2
| (sv) "UI4"
| (en) "UI4"
| (NODE) "UI4"
| (MUNIT) "IOC, UI4_Type"
| (RANGE) "IOC, UI4_Type, SRV, UI4_Range, R, 0-10, R, 0-20, R, 0/1";
UI5 : "UI5" [""] DEC2
| (sv) "UI5"
| (en) "UI5"
| (NODE) "UI5"
| (MUNIT) "IOC, UI5_Type"
| (RANGE) "IOC, UI5_Type, SRV, UI5_Range, R, 0-10, R, 0-20, R, 0/1";
UI6 : "UI6" [""] DEC2
| (sv) "UI6"
| (en) "UI6"
| (NODE) "UI6"
| (MUNIT) "IOC, UI6_Type"
| (RANGE) "IOC, UI6_Type, SRV, UI6_Range, R, 0-10, R, 0-20, R, 0/1";
UI7 : "UI7" [""] DEC2
| (sv) "UI7"
| (en) "UI7"
| (NODE) "UI7"
| (MUNIT) "IOC, UI7_Type"
| (RANGE) "IOC, UI7_Type, SRV, UI7_Range, R, 0-10, R, 0-20, R, 0/1";
UI8 : "UI8" [""] DEC2
| (sv) "UI8"
| (en) "UI8"
| (NODE) "UI8"
| (MUNIT) "IOC, UI8_Type"
| (RANGE) "IOC, UI8_Type, SRV, UI8_Range, R, 0-10, R, 0-20, R, 0/1";
%%%%%%%%%%%%%%%%%%%%%%%%
% Universal input status
UI1_Status : "UI1 Status" [""] INT
| (sv) "UI1 Status"
| (en) "UI1 Status"
| (NODE) "UI1";
UI2_Status : "UI2 Status" [""] INT
| (sv) "UI2 Status"
| (en) "UI2 Status"
| (NODE) "UI2";
UI3_Status : "UI3 Status" [""] INT
| (sv) "UI3 Status"
| (en) "UI3 Status"
| (NODE) "UI3";
UI4_Status : "UI4 Status" [""] INT
| (sv) "UI4 Status"
| (en) "UI4 Status"
| (NODE) "UI4";
UI5_Status : "UI5 Status" [""] INT
| (sv) "UI5 Status"
| (en) "UI5 Status"
| (NODE) "UI5";
UI6_Status : "UI6 Status" [""] INT
| (sv) "UI6 Status"
| (en) "UI6 Status"
| (NODE) "UI6";
UI7_Status : "UI7 Status" [""] INT
| (sv) "UI7 Status"
| (en) "UI7 Status"
| (NODE) "UI7";
UI8_Status : "UI8 Status" [""] INT
| (sv) "UI8 Status"
| (en) "UI8 Status"
| (NODE) "UI8";
%%%%%%%%%%%%%
% AO Override
AO1_Overridden : "AO1 Manually overriden" [""] DEC2
| (sv) "AO1 Manuelt styrd"
| (en) "AO1 Manually overriden"
| (NODE) "AO1";
AO2_Overridden : "AO2 Manually overriden" [""] DEC2
| (sv) "AO2 Manuelt styrd"
| (en) "AO2 Manually overriden"
| (NODE) "AO2";
AO3_Overridden : "AO3 Manually overriden" [""] DEC2
| (sv) "AO3 Manuelt styrd"
| (en) "AO3 Manually overriden"
| (NODE) "AO3";
AO4_Overridden : "AO4 Manually overriden" [""] DEC2
| (sv) "AO4 Manuelt styrd"
| (en) "AO4 Manually overriden"
| (NODE) "AO4";
AO5_Overridden : "AO5 Manually overriden" [""] DEC2
| (sv) "AO5 Manuelt styrd"
| (en) "AO5 Manually overriden"
| (NODE) "AO5";
AO6_Overridden : "AO6 Manually overriden" [""] DEC2
| (sv) "AO6 Manuelt styrd"
| (en) "AO6 Manually overriden"
| (NODE) "AO6";
PRIVATE
BAUDRATE 38400;
CHECKSUM MODBUS SWAPPED;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Telegrams used for settting values in the unit
TELEGRAM SetDISettings NAMED "SetDISettings"
| (sv) "Ställ DI-inställningar"
| (en) "Set DI settings"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(92); % Start register
DATA[4] := RWORD(9); % Number of registers to write
DATA[6] := BYTE(18); % Numer of bytes of data, two for each register
DATA[7] := RWORD(DI1_CounterReset + DI1_OverflowFlagReset*2 + DI1_FlankSettings*4);
DATA[9] := RWORD(DI2_CounterReset + DI2_OverflowFlagReset*2 + DI2_FlankSettings*4);
DATA[11] := RWORD(DI3_CounterReset + DI3_OverflowFlagReset*2 + DI3_FlankSettings*4);
DATA[13] := RWORD(DI4_CounterReset + DI4_OverflowFlagReset*2 + DI4_FlankSettings*4);
DATA[15] := RWORD(DI5_CounterReset + DI5_OverflowFlagReset*2 + DI5_FlankSettings*4);
DATA[17] := RWORD(DI6_CounterReset + DI6_OverflowFlagReset*2 + DI6_FlankSettings*4);
DATA[19] := RWORD(DI7_CounterReset + DI7_OverflowFlagReset*2 + DI7_FlankSettings*4);
DATA[21] := RWORD(DI8_CounterReset + DI8_OverflowFlagReset*2 + DI8_FlankSettings*4);
DATA[23] := RWORD(DI_TripVoltage);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(92);
DATA[4] = RWORD(9);
TIMEOUT 300
END;
TELEGRAM SetComTimeout NAMED "SetCommunicationTimeout"
| (sv) "Ställ kommunikationstimeout"
| (en) "Set Communication timeout"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(6); % Modbus command "6" write single register
DATA[2] := RWORD(101); % Start register
DATA[4] := RWORD(ComTimeout);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(6);
DATA[2] = RWORD(101);
TIMEOUT 300
END;
TELEGRAM SetDO1_6 NAMED "SetDO1-6"
| (sv) "Ställ DO1-DO6"
| (en) "Set DO1-DO6"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(102); % Start register
DATA[4] := RWORD(6); % Number of registers to write
DATA[6] := BYTE(12); % Numer of bytes of data, two for each DO
DATA[7] := RWORD(DO1);
DATA[9] := RWORD(DO2);
DATA[11] := RWORD(DO3);
DATA[13] := RWORD(DO4);
DATA[15] := RWORD(DO5);
DATA[17] := RWORD(DO6);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(102);
DATA[4] = RWORD(6);
TIMEOUT 300
END;
TELEGRAM SetUISettings NAMED "SetUISettings"
| (sv) "Ställ UI-inställningar"
| (en) "Set UI settings"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(108); % Start register
DATA[4] := RWORD(8); % Number of registers to write
DATA[6] := BYTE(16); % Numer of bytes of data, two for each DO
DATA[7] := RWORD(UI1_Type*64 + UI1_Range);
DATA[9] := RWORD(UI2_Type*64 + UI2_Range);
DATA[11] := RWORD(UI3_Type*64 + UI3_Range);
DATA[13] := RWORD(UI4_Type*64 + UI4_Range);
DATA[15] := RWORD(UI5_Type*64 + UI5_Range);
DATA[17] := RWORD(UI6_Type*64 + UI6_Range);
DATA[19] := RWORD(UI7_Type*64 + UI7_Range);
DATA[21] := RWORD(UI8_Type*64 + UI8_Range);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(108);
DATA[4] = RWORD(8);
TIMEOUT 300
END;
TELEGRAM SetAO1_6 NAMED "SetAO1-6"
| (sv) "Ställ AO1-AO6"
| (en) "Set AO1-AO6"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(116); % Start register
DATA[4] := RWORD(12); % Number of registers to write
DATA[6] := BYTE(24); % Numer of bytes of data, two for each AO
DATA[7] := RINT32(AO1 * 1000);
DATA[11] := RINT32(AO2 * 1000);
DATA[15] := RINT32(AO3 * 1000);
DATA[19] := RINT32(AO4 * 1000);
DATA[23] := RINT32(AO5 * 1000);
DATA[27] := RINT32(AO6 * 1000);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(116);
DATA[4] = RWORD(12);
TIMEOUT 300
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Telegrams used for getting values from the unit
TELEGRAM GetCSN NAMED "GetCSN"
| (sv) "Hämta kabelsekvensnummer"
| (en) "Get cable sequence number"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(0); % Start register
DATA[4] := RWORD(1); % Number of registers to read
ANSWER SIZE 7
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(2) ; % Numer of bytes of data
CSN := RWORD[3];
TIMEOUT 300
END;
TELEGRAM GetDI1_8 NAMED "GetDI1-8"
| (sv) "Hämta DI1-DI8"
| (en) "Get DI1-DI8"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(1); % Start register
DATA[4] := RWORD(8); % Number of registers to read
ANSWER SIZE 21
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(16); % Numer of bytes of data, two for each DI
DI1 := RWORD[3];
DI2 := RWORD[5];
DI3 := RWORD[7];
DI4 := RWORD[9];
DI5 := RWORD[11];
DI6 := RWORD[13];
DI7 := RWORD[15];
DI8 := RWORD[17];
TIMEOUT 300
END;
TELEGRAM GetFreqAndCounterDI1_8 NAMED "GetDI1-8FreqAndCounter"
| (sv) "Hämta frekvens och räknare för DI1-DI8"
| (en) "Get frequency and counter for DI1-DI8"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(9); % Start register
DATA[4] := RWORD(32); % Number of registers to read
ANSWER SIZE 69
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(64); % Numer of bytes of data, two for each DI
DI1_Freq := RWORD32[3] / 1000;
DI2_Freq := RWORD32[7] / 1000;
DI3_Freq := RWORD32[11] / 1000;
DI4_Freq := RWORD32[15] / 1000;
DI5_Freq := RWORD32[19] / 1000;
DI6_Freq := RWORD32[23] / 1000;
DI7_Freq := RWORD32[27] / 1000;
DI8_Freq := RWORD32[31] / 1000;
DI1_Counter := RWORD32[35];
DI2_Counter := RWORD32[39];
DI3_Counter := RWORD32[43];
DI4_Counter := RWORD32[47];
DI5_Counter := RWORD32[51];
DI6_Counter := RWORD32[55];
DI7_Counter := RWORD32[59];
DI8_Counter := RWORD32[63];
TIMEOUT 300
END;
TELEGRAM GetDIStatus NAMED "GetDIStatus"
| (sv) "Hämta status för DI"
| (en) "Get DI status"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(41); % Start register
DATA[4] := RWORD(9); % Number of registers to read
ANSWER SIZE 23
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(18); % Numer of bytes of data
DI1_Overflow := RWORD[3];
DI2_Overflow := RWORD[5];
DI3_Overflow := RWORD[7];
DI4_Overflow := RWORD[9];
DI5_Overflow := RWORD[11];
DI6_Overflow := RWORD[13];
DI7_Overflow := RWORD[15];
DI8_Overflow := RWORD[17];
DI_ShortCirc := RWORD[19];
TIMEOUT 300
END;
TELEGRAM GetDOManualOverrideStatusIstatus NAMED "GetDOManualOverrideStatus"
| (sv) "Hämta status för manuell styrning av DO1-6"
| (en) "Get manual override status for DO1-6"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(50); % Start register
DATA[4] := RWORD(6); % Number of registers to read
ANSWER SIZE 17
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(12); % Numer of bytes of data
DO1_Overridden := RWORD[3];
DO2_Overridden := RWORD[5];
DO3_Overridden := RWORD[7];
DO4_Overridden := RWORD[9];
DO5_Overridden := RWORD[11];
DO6_Overridden := RWORD[13];
TIMEOUT 300
END;
TELEGRAM GetUI1_8 NAMED "GetUI1_8"
| (sv) "Hämta UI1-UI8"
| (en) "Get UI1-UI8"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(56); % Start register
DATA[4] := RWORD(16); % Number of registers to read
ANSWER SIZE 37
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(32); % Numer of bytes of data
UI1 := RINT32[3] / 1000;
UI2 := RINT32[7] / 1000;
UI3 := RINT32[11] / 1000;
UI4 := RINT32[15] / 1000;
UI5 := RINT32[19] / 1000;
UI6 := RINT32[23] / 1000;
UI7 := RINT32[27] / 1000;
UI8 := RINT32[31] / 1000;
TIMEOUT 300
END;
TELEGRAM GetUI1_8Status NAMED "GetUI1_8Status"
| (sv) "Hämta status för UI1-UI8"
| (en) "Get UI1-UI8 status"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(72); % Start register
DATA[4] := RWORD(8); % Number of registers to read
ANSWER SIZE 21
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(16); % Numer of bytes of data
UI1_Status := RWORD[3];
UI2_Status := RWORD[5];
UI3_Status := RWORD[7];
UI4_Status := RWORD[9];
UI5_Status := RWORD[11];
UI6_Status := RWORD[13];
UI7_Status := RWORD[15];
UI8_Status := RWORD[17];
TIMEOUT 300
END;
TELEGRAM GetAO1_6Status NAMED "GetAO1_6Status"
| (sv) "Hämta status för AO1-AO6"
| (en) "Get AO1-AO6 status"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(80); % Start register
DATA[4] := RWORD(12); % Number of registers to read
ANSWER SIZE 29
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(24); % Numer of bytes of data
AO1_Overridden := RINT32[3] / 1000;
AO2_Overridden := RINT32[7] / 1000;
AO3_Overridden := RINT32[11] / 1000;
AO4_Overridden := RINT32[15] / 1000;
AO5_Overridden := RINT32[19] / 1000;
AO6_Overridden := RINT32[23] / 1000;
TIMEOUT 300
END;
END;
% Device definition for IMSE MxM28
%
% Settings module:
% Parity: None
% Baud: 38400
% Mode: RTU
%
% Factory default
% Address: 1
%
% Author: Daniel Carlson, ABELKO AB Luleå
%
% History: 2014-03-28 DC initial version
% 2015-09-03 DC Answer size of telegram GetDI1-8 shall be 21, not 20
% 2016-05-13 DC Munit added for counters and frequency
%
DEVICETYPE IMSE_MxM28 NAMED "IMSE_MxM28" TYPEID 21465 IS
PARAMETER
%%%%%%%%%%%%%%%%%%%%%%
% Address of this unit
Addr: "Address" [""] INT
| (sv) "Adress"
| (en) "Address"
| (MENU) "YES";
%%%%%%%%%%%%%%%%%%%%%%%
% Communication timeout
ComTimeout: "Com timeout" [""] INT
| (sv) "Kommunikationstimeout"
| (en) "Communication timeout"
| (MENU) "YES";
%%%%%%%%%%%%%%%%
% Reset counters
DI1_CounterReset :"DI1 Reset counter" [""] INT
| (sv) "DI1 Nollställ räknare"
| (en) "DI1 Reset counter"
| (NODE) "DI1";
DI2_CounterReset :"DI2 Reset counter" [""] INT
| (sv) "DI2 Nollställ räknare"
| (en) "DI2 Reset counter"
| (NODE) "DI2";
DI3_CounterReset :"DI3 Reset counter" [""] INT
| (sv) "DI3 Nollställ räknare"
| (en) "DI3 Reset counter"
| (NODE) "DI3";
DI4_CounterReset :"DI4 Reset counter" [""] INT
| (sv) "DI4 Nollställ räknare"
| (en) "DI4 Reset counter"
| (NODE) "DI4";
DI5_CounterReset :"DI5 Reset counter" [""] INT
| (sv) "DI5 Nollställ räknare"
| (en) "DI5 Reset counter"
| (NODE) "DI5";
DI6_CounterReset :"DI6 Reset counter" [""] INT
| (sv) "DI6 Nollställ räknare"
| (en) "DI6 Reset counter"
| (NODE) "DI6";
DI7_CounterReset :"DI7 Reset counter" [""] INT
| (sv) "DI7 Nollställ räknare"
| (en) "DI7 Reset counter"
| (NODE) "DI7";
DI8_CounterReset :"DI8 Reset counter" [""] INT
| (sv) "DI8 Nollställ räknare"
| (en) "DI8 Reset counter"
| (NODE) "DI8";
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Reset counter overflow flag
DI1_OverflowFlagReset :"DI1 Reset overflow flag" [""] INT
| (sv) "DI1 Nollställ fullindikering"
| (en) "DI1 Reset overflow flag"
| (NODE) "DI1";
DI2_OverflowFlagReset :"DI2 Reset overflow flag" [""] INT
| (sv) "DI2 Nollställ fullindikering"
| (en) "DI2 Reset overflow flag"
| (NODE) "DI2";
DI3_OverflowFlagReset :"DI3 Reset overflow flag" [""] INT
| (sv) "DI3 Nollställ fullindikering"
| (en) "DI3 Reset overflow flag"
| (NODE) "DI3";
DI4_OverflowFlagReset :"DI4 Reset overflow flag" [""] INT
| (sv) "DI4 Nollställ fullindikering"
| (en) "DI4 Reset overflow flag"
| (NODE) "DI4";
DI5_OverflowFlagReset :"DI5 Reset overflow flag" [""] INT
| (sv) "DI5 Nollställ fullindikering"
| (en) "DI5 Reset overflow flag"
| (NODE) "DI5";
DI6_OverflowFlagReset :"DI6 Reset overflow flag" [""] INT
| (sv) "DI6 Nollställ fullindikering"
| (en) "DI6 Reset overflow flag"
| (NODE) "DI6";
DI7_OverflowFlagReset :"DI7 Reset overflow flag" [""] INT
| (sv) "DI7 Nollställ fullindikering"
| (en) "DI7 Reset overflow flag"
| (NODE) "DI7";
DI8_OverflowFlagReset :"DI8 Reset overflow flag" [""] INT
| (sv) "DI8 Nollställ fullindikering"
| (en) "DI8 Reset overflow flag"
| (NODE) "DI8";
%%%%%%%%%%%%%%%%
% Flank Settings
DI1_FlankSettings: "DI1 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI1 Flankinställning"
| (en) "DI1 Flank setting"
| (NODE) "DI1"
| (MENU) "YES";
DI2_FlankSettings: "DI2 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI2 Flankinställning"
| (en) "DI2 Flank setting"
| (NODE) "DI2"
| (MENU) "YES";
DI3_FlankSettings: "DI3 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI3 Flankinställning"
| (en) "DI3 Flank setting"
| (NODE) "DI3"
| (MENU) "YES";
DI4_FlankSettings: "DI4 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI4 Flankinställning"
| (en) "DI4 Flank setting"
| (NODE) "DI4"
| (MENU) "YES";
DI5_FlankSettings: "DI5 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI5 Flankinställning"
| (en) "DI5 Flank setting"
| (NODE) "DI5"
| (MENU) "YES";
DI6_FlankSettings: "DI6 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI6 Flankinställning"
| (en) "DI6 Flank setting"
| (NODE) "DI6"
| (MENU) "YES";
DI7_FlankSettings: "DI7 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI7 Flankinställning"
| (en) "DI7 Flank setting"
| (NODE) "DI7"
| (MENU) "YES";
DI8_FlankSettings: "DI8 Pulse edge" ["Positiv,Negativ,Båda"] ENUM
| (sv) "DI8 Flankinställning"
| (en) "DI8 Flank setting"
| (NODE) "DI8"
| (MENU) "YES";
%%%%%%%%%%%%%%
% Trip voltage
DI_TripVoltage: "DI Trip voltage" ["10V,4V"] ENUM
| (sv) "DI Omslagsspänning"
| (en) "DI Trip voltage"
| (MENU) "YES";
%%%%%%%%%%%%%%%%
% Digital output
DO1: "DO1" [""] INT
| (sv) "DO1"
| (en) "DO1"
| (NODE) "DO1";
DO2: "DO2" [""] INT
| (sv) "DO2"
| (en) "DO2"
| (NODE) "DO2";
DO3: "DO3" [""] INT
| (sv) "DO3"
| (en) "DO3"
| (NODE) "DO3";
DO4: "DO4" [""] INT
| (sv) "DO4"
| (en) "DO4"
| (NODE) "DO4";
DO5: "DO5" [""] INT
| (sv) "DO5"
| (en) "DO5"
| (NODE) "DO5";
DO6: "DO6" [""] INT
| (sv) "DO6"
| (en) "DO6"
| (NODE) "DO6";
%%%%%%%%%%%%%%%%%%%%%%
% Universal input type
UI1_Type: "UI1_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI1 Typ av mätning"
| (en) "UI1 Measurement type"
| (NODE) "UI1"
| (MENU) "YES";
UI2_Type: "UI2_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI2 Typ av mätning"
| (en) "UI2 Measurement type"
| (NODE) "UI2"
| (MENU) "YES";
UI3_Type: "UI3_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI3 Typ av mätning"
| (en) "UI3 Measurement type"
| (NODE) "UI3"
| (MENU) "YES";
UI4_Type: "UI4_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI4 Typ av mätning"
| (en) "UI4 Measurement type"
| (NODE) "UI4"
| (MENU) "YES";
UI5_Type: "UI5_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI5 Typ av mätning"
| (en) "UI5 Measurement type"
| (NODE) "UI5"
| (MENU) "YES";
UI6_Type: "UI6_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI6 Typ av mätning"
| (en) "UI6 Measurement type"
| (NODE) "UI6"
| (MENU) "YES";
UI7_Type: "UI7_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI7 Typ av mätning"
| (en) "UI7 Measurement type"
| (NODE) "UI7"
| (MENU) "YES";
UI8_Type: "UI8_Type" ["Ohm,Volt,mA,DI"] ENUM
| (sv) "UI8 Typ av mätning"
| (en) "UI8 Measurement type"
| (NODE) "UI8"
| (MENU) "YES";
%%%%%%%%%%%%%%%%
% Resistor Range
UI1_Range : "UI1_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI1 Mätområde"
| (en) "UI1 Measurement range"
| (NODE) "UI1"
| (MENU) "COND, UI1_Type, =, 0";
UI2_Range : "UI2_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI2 Mätområde"
| (en) "UI2 Measurement range"
| (NODE) "UI2"
| (MENU) "COND, UI2_Type, =, 0";
UI3_Range : "UI3_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI3 Mätområde"
| (en) "UI3 Measurement range"
| (NODE) "UI3"
| (MENU) "COND, UI3_Type, =, 0";
UI4_Range : "UI4_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI4 Mätområde"
| (en) "UI4 Measurement range"
| (NODE) "UI4"
| (MENU) "COND, UI4_Type, =, 0";
UI5_Range : "UI5_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI5 Mätområde"
| (en) "UI5 Measurement range"
| (NODE) "UI5"
| (MENU) "COND, UI5_Type, =, 0";
UI6_Range : "UI6_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI6 Mätområde"
| (en) "UI6 Measurement range"
| (NODE) "UI6"
| (MENU) "COND, UI6_Type, =, 0";
UI7_Range : "UI7_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI7 Mätområde"
| (en) "UI7 Measurement range"
| (NODE) "UI7"
| (MENU) "COND, UI7_Type, =, 0";
UI8_Range : "UI8_Range " ["Auto,250,2500,25000,250000"] ENUM
| (sv) "UI8 Mätområde"
| (en) "UI8 Measurement range"
| (NODE) "UI8"
| (MENU) "COND, UI8_Type, =, 0";
%%%%%%%%%%%%%%%
% Analog output
AO1: "AO1" ["V"] DEC2
| (sv) "AO1"
| (en) "AO1"
| (NODE) "AO1";
AO2: "AO2" ["V"] DEC2
| (sv) "AO2"
| (en) "AO2"
| (NODE) "AO2";
AO3: "AO3" ["V"] DEC2
| (sv) "AO3"
| (en) "AO3"
| (NODE) "AO3";
AO4: "AO4" ["V"] DEC2
| (sv) "AO4"
| (en) "AO4"
| (NODE) "AO4";
AO5: "AO5" ["V"] DEC2
| (sv) "AO5"
| (en) "AO5"
| (NODE) "AO5";
AO6: "AO6" ["V"] DEC2
| (sv) "AO6"
| (en) "AO6"
| (NODE) "AO6";
PUBLIC
%%%%%%%%%%%%%%%%%%%%%%%
% Cable sequence number
CSN: "CSN" [""] INT
| (sv) "Kabelsekvensnummer"
| (en) "Cable sequence number"
| (MENU) "YES";
%%%%%%%%%%%%%%%
% Digital input
DI1 :"DI1" [""] INT
| (sv) "DI1"
| (en) "DI1"
| (NODE) "DI1";
DI2 :"DI2" [""] INT
| (sv) "DI2"
| (en) "DI2"
| (NODE) "DI2";
DI3 :"DI3" [""] INT
| (sv) "DI3"
| (en) "DI3"
| (NODE) "DI3";
DI4 :"DI4" [""] INT
| (sv) "DI4"
| (en) "DI4"
| (NODE) "DI4";
DI5 :"DI5" [""] INT
| (sv) "DI5"
| (en) "DI5"
| (NODE) "DI5";
DI6 :"DI6" [""] INT
| (sv) "DI6"
| (en) "DI6"
| (NODE) "DI6";
DI7 :"DI7" [""] INT
| (sv) "DI7"
| (en) "DI7"
| (NODE) "DI7";
DI8 :"DI8" [""] INT
| (sv) "DI8"
| (en) "DI8"
| (NODE) "DI8";
%%%%%%%%%%%
% Frequency
DI1_Freq :"DI1 Frequency" ["Hz"] DEC2
| (sv) "DI1 Frekvens"
| (en) "DI1 Frequency"
| (NODE) "DI1"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI2_Freq :"DI2 Frequency" ["Hz"] DEC2
| (sv) "DI2 Frekvens"
| (en) "DI2 Frequency"
| (NODE) "DI2"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI3_Freq :"DI3 Frequency" ["Hz"] DEC2
| (sv) "DI3 Frekvens"
| (en) "DI3 Frequency"
| (NODE) "DI3"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI4_Freq :"DI4 Frequency" ["Hz"] DEC2
| (sv) "DI4 Frekvens"
| (en) "DI4 Frequency"
| (NODE) "DI4"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI5_Freq :"DI5 Frequency" ["Hz"] DEC2
| (sv) "DI5 Frekvens"
| (en) "DI5 Frequency"
| (NODE) "DI5"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI6_Freq :"DI6 Frequency" ["Hz"] DEC2
| (sv) "DI6 Frekvens"
| (en) "DI6 Frequency"
| (NODE) "DI6"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI7_Freq :"DI7 Frequency" ["Hz"] DEC2
| (sv) "DI7 Frekvens"
| (en) "DI7 Frequency"
| (NODE) "DI7"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
DI8_Freq :"DI8 Frequency" ["Hz"] DEC2
| (sv) "DI8 Frekvens"
| (en) "DI8 Frequency"
| (NODE) "DI8"
| (MUNIT) "Hertz"
| (RANGE) "0-200";
%%%%%%%%%
% Counter
DI1_Counter :"DI1 Counter" [""] INT
| (sv) "DI1 Räknare"
| (en) "DI1 Counter"
| (NODE) "DI1"
| (MUNIT) "pulses";
DI2_Counter :"DI2 Counter" [""] INT
| (sv) "DI2 Räknare"
| (en) "DI2 Counter"
| (NODE) "DI2"
| (MUNIT) "pulses";
DI3_Counter :"DI3 Counter" [""] INT
| (sv) "DI3 Räknare"
| (en) "DI3 Counter"
| (NODE) "DI3"
| (MUNIT) "pulses";
DI4_Counter :"DI4 Counter" [""] INT
| (sv) "DI4 Räknare"
| (en) "DI4 Counter"
| (NODE) "DI4"
| (MUNIT) "pulses";
DI5_Counter :"DI5 Counter" [""] INT
| (sv) "DI5 Räknare"
| (en) "DI5 Counter"
| (NODE) "DI5"
| (MUNIT) "pulses";
DI6_Counter :"DI6 Counter" [""] INT
| (sv) "DI6 Räknare"
| (en) "DI6 Counter"
| (NODE) "DI6"
| (MUNIT) "pulses";
DI7_Counter :"DI7 Counter" [""] INT
| (sv) "DI7 Räknare"
| (en) "DI7 Counter"
| (NODE) "DI7"
| (MUNIT) "pulses";
DI8_Counter :"DI8 Counter" [""] INT
| (sv) "DI8 Räknare"
| (en) "DI8 Counter"
| (NODE) "DI8"
| (MUNIT) "pulses";
%%%%%%%%%%%%%%%%%%
% Counter overflow
DI1_Overflow :"DI1 Counter Overflow" [""] INT
| (sv) "DI1 Räknare full"
| (en) "DI1 Counter overflow"
| (NODE) "DI1";
DI2_Overflow :"DI2 Counter Overflow" [""] INT
| (sv) "DI2 Räknare full"
| (en) "DI2 Counter overflow"
| (NODE) "DI2";
DI3_Overflow :"DI3 Counter Overflow" [""] INT
| (sv) "DI3 Räknare full"
| (en) "DI3 Counter overflow"
| (NODE) "DI3";
DI4_Overflow :"DI4 Counter Overflow" [""] INT
| (sv) "DI4 Räknare full"
| (en) "DI4 Counter overflow"
| (NODE) "DI4";
DI5_Overflow :"DI5 Counter Overflow" [""] INT
| (sv) "DI5 Räknare full"
| (en) "DI5 Counter overflow"
| (NODE) "DI5";
DI6_Overflow :"DI6 Counter Overflow" [""] INT
| (sv) "DI6 Räknare full"
| (en) "DI6 Counter overflow"
| (NODE) "DI6";
DI7_Overflow :"DI7 Counter Overflow" [""] INT
| (sv) "DI7 Räknare full"
| (en) "DI7 Counter overflow"
| (NODE) "DI7";
DI8_Overflow :"DI8 Counter Overflow" [""] INT
| (sv) "DI8 Räknare full"
| (en) "DI8 Counter overflow"
| (NODE) "DI8";
%%%%%%%%%%%%%%%
% Short circuit
DI_ShortCirc: "DI Short Circuit" [""] INT
| (sv) "DI Kortslutning"
| (en) "DI Short circuit"
| (MENU) "YES";
%%%%%%%%%%%%%
% DO Override
DO1_Overridden : "DO1 Manually overriden" [""] INT
| (sv) "DO1 Manuelt styrd"
| (en) "DO1 Manually overriden"
| (NODE) "DO1";
DO2_Overridden : "DO2 Manually overriden" [""] INT
| (sv) "DO2 Manuelt styrd"
| (en) "DO2 Manually overriden"
| (NODE) "DO2";
DO3_Overridden : "DO3 Manually overriden" [""] INT
| (sv) "DO3 Manuelt styrd"
| (en) "DO3 Manually overriden"
| (NODE) "DO3";
DO4_Overridden : "DO4 Manually overriden" [""] INT
| (sv) "DO4 Manuelt styrd"
| (en) "DO4 Manually overriden"
| (NODE) "DO4";
DO5_Overridden : "DO5 Manually overriden" [""] INT
| (sv) "DO5 Manuelt styrd"
| (en) "DO5 Manually overriden"
| (NODE) "DO5";
DO6_Overridden : "DO6 Manually overriden" [""] INT
| (sv) "DO6 Manuelt styrd"
| (en) "DO6 Manually overriden"
| (NODE) "DO6";
%%%%%%%%%%%%%%%%%%%%%%%
% Universal input value
UI1 : "UI1" [""] DEC2
| (sv) "UI1"
| (en) "UI1"
| (NODE) "UI1"
| (MUNIT) "IOC, UI1_Type"
| (RANGE) "IOC, UI1_Type, SRV, UI1_Range, R, 0-10, R, 0-20, R, 0/1";
UI2 : "UI2" [""] DEC2
| (sv) "UI2"
| (en) "UI2"
| (NODE) "UI2"
| (MUNIT) "IOC, UI2_Type"
| (RANGE) "IOC, UI2_Type, SRV, UI2_Range, R, 0-10, R, 0-20, R, 0/1";
UI3 : "UI3" [""] DEC2
| (sv) "UI3"
| (en) "UI3"
| (NODE) "UI3"
| (MUNIT) "IOC, UI3_Type"
| (RANGE) "IOC, UI3_Type, SRV, UI3_Range, R, 0-10, R, 0-20, R, 0/1";
UI4 : "UI4" [""] DEC2
| (sv) "UI4"
| (en) "UI4"
| (NODE) "UI4"
| (MUNIT) "IOC, UI4_Type"
| (RANGE) "IOC, UI4_Type, SRV, UI4_Range, R, 0-10, R, 0-20, R, 0/1";
UI5 : "UI5" [""] DEC2
| (sv) "UI5"
| (en) "UI5"
| (NODE) "UI5"
| (MUNIT) "IOC, UI5_Type"
| (RANGE) "IOC, UI5_Type, SRV, UI5_Range, R, 0-10, R, 0-20, R, 0/1";
UI6 : "UI6" [""] DEC2
| (sv) "UI6"
| (en) "UI6"
| (NODE) "UI6"
| (MUNIT) "IOC, UI6_Type"
| (RANGE) "IOC, UI6_Type, SRV, UI6_Range, R, 0-10, R, 0-20, R, 0/1";
UI7 : "UI7" [""] DEC2
| (sv) "UI7"
| (en) "UI7"
| (NODE) "UI7"
| (MUNIT) "IOC, UI7_Type"
| (RANGE) "IOC, UI7_Type, SRV, UI7_Range, R, 0-10, R, 0-20, R, 0/1";
UI8 : "UI8" [""] DEC2
| (sv) "UI8"
| (en) "UI8"
| (NODE) "UI8"
| (MUNIT) "IOC, UI8_Type"
| (RANGE) "IOC, UI8_Type, SRV, UI8_Range, R, 0-10, R, 0-20, R, 0/1";
%%%%%%%%%%%%%%%%%%%%%%%%
% Universal input status
UI1_Status : "UI1 Status" [""] INT
| (sv) "UI1 Status"
| (en) "UI1 Status"
| (NODE) "UI1";
UI2_Status : "UI2 Status" [""] INT
| (sv) "UI2 Status"
| (en) "UI2 Status"
| (NODE) "UI2";
UI3_Status : "UI3 Status" [""] INT
| (sv) "UI3 Status"
| (en) "UI3 Status"
| (NODE) "UI3";
UI4_Status : "UI4 Status" [""] INT
| (sv) "UI4 Status"
| (en) "UI4 Status"
| (NODE) "UI4";
UI5_Status : "UI5 Status" [""] INT
| (sv) "UI5 Status"
| (en) "UI5 Status"
| (NODE) "UI5";
UI6_Status : "UI6 Status" [""] INT
| (sv) "UI6 Status"
| (en) "UI6 Status"
| (NODE) "UI6";
UI7_Status : "UI7 Status" [""] INT
| (sv) "UI7 Status"
| (en) "UI7 Status"
| (NODE) "UI7";
UI8_Status : "UI8 Status" [""] INT
| (sv) "UI8 Status"
| (en) "UI8 Status"
| (NODE) "UI8";
%%%%%%%%%%%%%
% AO Override
AO1_Overridden : "AO1 Manually overriden" [""] DEC2
| (sv) "AO1 Manuelt styrd"
| (en) "AO1 Manually overriden"
| (NODE) "AO1";
AO2_Overridden : "AO2 Manually overriden" [""] DEC2
| (sv) "AO2 Manuelt styrd"
| (en) "AO2 Manually overriden"
| (NODE) "AO2";
AO3_Overridden : "AO3 Manually overriden" [""] DEC2
| (sv) "AO3 Manuelt styrd"
| (en) "AO3 Manually overriden"
| (NODE) "AO3";
AO4_Overridden : "AO4 Manually overriden" [""] DEC2
| (sv) "AO4 Manuelt styrd"
| (en) "AO4 Manually overriden"
| (NODE) "AO4";
AO5_Overridden : "AO5 Manually overriden" [""] DEC2
| (sv) "AO5 Manuelt styrd"
| (en) "AO5 Manually overriden"
| (NODE) "AO5";
AO6_Overridden : "AO6 Manually overriden" [""] DEC2
| (sv) "AO6 Manuelt styrd"
| (en) "AO6 Manually overriden"
| (NODE) "AO6";
PRIVATE
BAUDRATE 38400;
CHECKSUM MODBUS SWAPPED;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Telegrams used for settting values in the unit
TELEGRAM SetDISettings NAMED "SetDISettings"
| (sv) "Ställ DI-inställningar"
| (en) "Set DI settings"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(92); % Start register
DATA[4] := RWORD(9); % Number of registers to write
DATA[6] := BYTE(18); % Numer of bytes of data, two for each register
DATA[7] := RWORD(DI1_CounterReset + DI1_OverflowFlagReset*2 + DI1_FlankSettings*4);
DATA[9] := RWORD(DI2_CounterReset + DI2_OverflowFlagReset*2 + DI2_FlankSettings*4);
DATA[11] := RWORD(DI3_CounterReset + DI3_OverflowFlagReset*2 + DI3_FlankSettings*4);
DATA[13] := RWORD(DI4_CounterReset + DI4_OverflowFlagReset*2 + DI4_FlankSettings*4);
DATA[15] := RWORD(DI5_CounterReset + DI5_OverflowFlagReset*2 + DI5_FlankSettings*4);
DATA[17] := RWORD(DI6_CounterReset + DI6_OverflowFlagReset*2 + DI6_FlankSettings*4);
DATA[19] := RWORD(DI7_CounterReset + DI7_OverflowFlagReset*2 + DI7_FlankSettings*4);
DATA[21] := RWORD(DI8_CounterReset + DI8_OverflowFlagReset*2 + DI8_FlankSettings*4);
DATA[23] := RWORD(DI_TripVoltage);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(92);
DATA[4] = RWORD(9);
TIMEOUT 300
END;
TELEGRAM SetComTimeout NAMED "SetCommunicationTimeout"
| (sv) "Ställ kommunikationstimeout"
| (en) "Set Communication timeout"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(6); % Modbus command "6" write single register
DATA[2] := RWORD(101); % Start register
DATA[4] := RWORD(ComTimeout);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(6);
DATA[2] = RWORD(101);
TIMEOUT 300
END;
TELEGRAM SetDO1_6 NAMED "SetDO1-6"
| (sv) "Ställ DO1-DO6"
| (en) "Set DO1-DO6"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(102); % Start register
DATA[4] := RWORD(6); % Number of registers to write
DATA[6] := BYTE(12); % Numer of bytes of data, two for each DO
DATA[7] := RWORD(DO1);
DATA[9] := RWORD(DO2);
DATA[11] := RWORD(DO3);
DATA[13] := RWORD(DO4);
DATA[15] := RWORD(DO5);
DATA[17] := RWORD(DO6);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(102);
DATA[4] = RWORD(6);
TIMEOUT 300
END;
TELEGRAM SetUISettings NAMED "SetUISettings"
| (sv) "Ställ UI-inställningar"
| (en) "Set UI settings"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(108); % Start register
DATA[4] := RWORD(8); % Number of registers to write
DATA[6] := BYTE(16); % Numer of bytes of data, two for each DO
DATA[7] := RWORD(UI1_Type*64 + UI1_Range);
DATA[9] := RWORD(UI2_Type*64 + UI2_Range);
DATA[11] := RWORD(UI3_Type*64 + UI3_Range);
DATA[13] := RWORD(UI4_Type*64 + UI4_Range);
DATA[15] := RWORD(UI5_Type*64 + UI5_Range);
DATA[17] := RWORD(UI6_Type*64 + UI6_Range);
DATA[19] := RWORD(UI7_Type*64 + UI7_Range);
DATA[21] := RWORD(UI8_Type*64 + UI8_Range);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(108);
DATA[4] = RWORD(8);
TIMEOUT 300
END;
TELEGRAM SetAO1_6 NAMED "SetAO1-6"
| (sv) "Ställ AO1-AO6"
| (en) "Set AO1-AO6"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(16); % Modbus command "16" write multiple registers
DATA[2] := RWORD(116); % Start register
DATA[4] := RWORD(12); % Number of registers to write
DATA[6] := BYTE(24); % Numer of bytes of data, two for each AO
DATA[7] := RINT32(AO1 * 1000);
DATA[11] := RINT32(AO2 * 1000);
DATA[15] := RINT32(AO3 * 1000);
DATA[19] := RINT32(AO4 * 1000);
DATA[23] := RINT32(AO5 * 1000);
DATA[27] := RINT32(AO6 * 1000);
ANSWER SIZE 8
DATA[0] = BYTE(Addr);
DATA[1] = BYTE(16);
DATA[2] = RWORD(116);
DATA[4] = RWORD(12);
TIMEOUT 300
END;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Telegrams used for getting values from the unit
TELEGRAM GetCSN NAMED "GetCSN"
| (sv) "Hämta kabelsekvensnummer"
| (en) "Get cable sequence number"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(0); % Start register
DATA[4] := RWORD(1); % Number of registers to read
ANSWER SIZE 7
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(2) ; % Numer of bytes of data
CSN := RWORD[3];
TIMEOUT 300
END;
TELEGRAM GetDI1_8 NAMED "GetDI1-8"
| (sv) "Hämta DI1-DI8"
| (en) "Get DI1-DI8"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(1); % Start register
DATA[4] := RWORD(8); % Number of registers to read
ANSWER SIZE 21
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(16); % Numer of bytes of data, two for each DI
DI1 := RWORD[3];
DI2 := RWORD[5];
DI3 := RWORD[7];
DI4 := RWORD[9];
DI5 := RWORD[11];
DI6 := RWORD[13];
DI7 := RWORD[15];
DI8 := RWORD[17];
TIMEOUT 300
END;
TELEGRAM GetFreqAndCounterDI1_8 NAMED "GetDI1-8FreqAndCounter"
| (sv) "Hämta frekvens och räknare för DI1-DI8"
| (en) "Get frequency and counter for DI1-DI8"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(9); % Start register
DATA[4] := RWORD(32); % Number of registers to read
ANSWER SIZE 69
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(64); % Numer of bytes of data, two for each DI
DI1_Freq := RWORD32[3] / 1000;
DI2_Freq := RWORD32[7] / 1000;
DI3_Freq := RWORD32[11] / 1000;
DI4_Freq := RWORD32[15] / 1000;
DI5_Freq := RWORD32[19] / 1000;
DI6_Freq := RWORD32[23] / 1000;
DI7_Freq := RWORD32[27] / 1000;
DI8_Freq := RWORD32[31] / 1000;
DI1_Counter := RWORD32[35];
DI2_Counter := RWORD32[39];
DI3_Counter := RWORD32[43];
DI4_Counter := RWORD32[47];
DI5_Counter := RWORD32[51];
DI6_Counter := RWORD32[55];
DI7_Counter := RWORD32[59];
DI8_Counter := RWORD32[63];
TIMEOUT 300
END;
TELEGRAM GetDIStatus NAMED "GetDIStatus"
| (sv) "Hämta status för DI"
| (en) "Get DI status"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(41); % Start register
DATA[4] := RWORD(9); % Number of registers to read
ANSWER SIZE 23
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(18); % Numer of bytes of data
DI1_Overflow := RWORD[3];
DI2_Overflow := RWORD[5];
DI3_Overflow := RWORD[7];
DI4_Overflow := RWORD[9];
DI5_Overflow := RWORD[11];
DI6_Overflow := RWORD[13];
DI7_Overflow := RWORD[15];
DI8_Overflow := RWORD[17];
DI_ShortCirc := RWORD[19];
TIMEOUT 300
END;
TELEGRAM GetDOManualOverrideStatusIstatus NAMED "GetDOManualOverrideStatus"
| (sv) "Hämta status för manuell styrning av DO1-6"
| (en) "Get manual override status for DO1-6"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(50); % Start register
DATA[4] := RWORD(6); % Number of registers to read
ANSWER SIZE 17
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(12); % Numer of bytes of data
DO1_Overridden := RWORD[3];
DO2_Overridden := RWORD[5];
DO3_Overridden := RWORD[7];
DO4_Overridden := RWORD[9];
DO5_Overridden := RWORD[11];
DO6_Overridden := RWORD[13];
TIMEOUT 300
END;
TELEGRAM GetUI1_8 NAMED "GetUI1_8"
| (sv) "Hämta UI1-UI8"
| (en) "Get UI1-UI8"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(56); % Start register
DATA[4] := RWORD(16); % Number of registers to read
ANSWER SIZE 37
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(32); % Numer of bytes of data
UI1 := RINT32[3] / 1000;
UI2 := RINT32[7] / 1000;
UI3 := RINT32[11] / 1000;
UI4 := RINT32[15] / 1000;
UI5 := RINT32[19] / 1000;
UI6 := RINT32[23] / 1000;
UI7 := RINT32[27] / 1000;
UI8 := RINT32[31] / 1000;
TIMEOUT 300
END;
TELEGRAM GetUI1_8Status NAMED "GetUI1_8Status"
| (sv) "Hämta status för UI1-UI8"
| (en) "Get UI1-UI8 status"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(72); % Start register
DATA[4] := RWORD(8); % Number of registers to read
ANSWER SIZE 21
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(16); % Numer of bytes of data
UI1_Status := RWORD[3];
UI2_Status := RWORD[5];
UI3_Status := RWORD[7];
UI4_Status := RWORD[9];
UI5_Status := RWORD[11];
UI6_Status := RWORD[13];
UI7_Status := RWORD[15];
UI8_Status := RWORD[17];
TIMEOUT 300
END;
TELEGRAM GetAO1_6Status NAMED "GetAO1_6Status"
| (sv) "Hämta status för AO1-AO6"
| (en) "Get AO1-AO6 status"
IS
QUESTION
DATA[0] := BYTE(Addr); % Modbus unit address
DATA[1] := BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] := RWORD(80); % Start register
DATA[4] := RWORD(12); % Number of registers to read
ANSWER SIZE 29
DATA[0] = BYTE(Addr); % Modbus unit address
DATA[1] = BYTE(3); % Modbus command "03h" read multiple registers
DATA[2] = BYTE(24); % Numer of bytes of data
AO1_Overridden := RINT32[3] / 1000;
AO2_Overridden := RINT32[7] / 1000;
AO3_Overridden := RINT32[11] / 1000;
AO4_Overridden := RINT32[15] / 1000;
AO5_Overridden := RINT32[19] / 1000;
AO6_Overridden := RINT32[23] / 1000;
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.