BAComn_Global

{attribute 'global_init_slot' := '49800'}
{attribute 'qualified_only'}
VAR_GLOBAL CONSTANT
// Datatype Ranges:
 {warning disable C0196}
     nMinByte               : BYTE   := 16#00;
     nMaxByte               : BYTE   := 16#FF;
     nMinInt                : INT    := 16#8000;
     nMaxInt                : INT    := 16#7FFF;
     nMinUInt               : UINT   := 16#0000;
     nMaxUInt               : UINT   := 16#FFFF;
     nMinDInt               : DINT   := 16#80000000;
     nMaxDInt               : DINT   := 16#7FFFFFFF;
     nMinUDInt              : UDINT  := 16#00000000;
     nMaxUDInt              : UDINT  := 16#FFFFFFFF;
     fMinReal               : REAL   := -3.402823E+38;
     fMaxReal               : REAL   := 3.402823E+38;
     tMinTime               : TIME   := TO_TIME(0);
     tMaxTime               : TIME   := TO_TIME(16#FFFFFFFF);
     tMinTOD                : TOD    := TO_TOD(0);
     tMaxTOD                : TOD    := TO_TOD(16#FFFFFFFF);
     tMinDATE               : DATE   := TO_DATE(0);
     tMaxDATE               : DATE   := TO_DATE(16#FFFFFFFF);
     tMinDT                 : DT     := TO_DT(0);
     tMaxDT                 : DT     := TO_DT(16#FFFFFFFF);
 {warning restore C0196}

// I/O:
     nIO_RawMin             : INT     := 0;
     nIO_RawMax             : INT     := nMaxInt;
     nIO_Raw0V              : INT     := 0;                 // Raw value for 0V
     nIO_Raw1V              : INT     := (nIO_RawMax / 10); // Raw value for 1V 
     nIO_Raw2V              : INT     := (nIO_Raw1V * 2);   // Raw value for 2V 
     nIO_Raw3V              : INT     := (nIO_Raw1V * 3);   // Raw value for 3V 
     nIO_Raw5V              : INT     := (nIO_Raw1V * 5);   // Raw value for 5V 
     nIO_Raw10V             : INT     := (nIO_Raw1V * 10);  // Raw value for 10V 
END_VAR

// General:
VAR_GLOBAL CONSTANT
 {region 'Time'}
     nMilli2Sek             : UINT    := 1000;
     nSek2Min               : UINT    := 60;
     nMin2Hour              : UINT    := 60;

     n24Hour2Hour           : UDINT   := (24 * 60 * 60);
     n24Hour2Milli          : UDINT   := n24Hour2Hour * 1000;

     udiMaxSecInMilli       : UDINT   := (nMaxUDInt / nMilli2Sek);     // Max. capable value (in [s]) in a UDINT
     udiMaxMinInMilli       : UDINT   := (udiMaxSecInMilli / nSek2Min);// Max. capable value (in [m]) in a UDINT
 {endregion}
 {region 'Characters'}
     bChar_0                : BYTE    := 16#30;
     bChar_1                : BYTE    := 16#31;
     bChar_2                : BYTE    := 16#32;
     bChar_3                : BYTE    := 16#33;
     bChar_4                : BYTE    := 16#34;
     bChar_5                : BYTE    := 16#35;
     bChar_6                : BYTE    := 16#36;
     bChar_7                : BYTE    := 16#37;
     bChar_8                : BYTE    := 16#38;
     bChar_9                : BYTE    := 16#39;
     bChar_Plus             : BYTE    := 16#2B;
     bChar_Minus            : BYTE    := 16#2D;
     bChar_Dot              : BYTE    := 16#2E;
 {endregion}
 {region 'Type'}
     fCloseToZero           : REAL   := 0.00001;   // Comparison value to prevent a division by zero
 {endregion}
 {region 'ADS'}
     tAmsNetID_Loopback     : T_AmsNetIdArr   := [ 127,0,0,1,1,1 ];
     sSymbolSeparator       : STRING(1)       := '.';
 {endregion}
END_VAR