(* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) PROGRAM mod_Read VAR END_VAR (* @END_DECLARATION := '0' *) (*Branje BOOL*) (**) mind_bool[0]:=ComError; mind_bool[1]:=ComSCADA; mind_bool[2]:=ComSCADA1; mind_bool[3]:=ComSCADA2; mind_bool[4]:=ComSCADA3; mind_bool[5]:=napaka_kom_panel; mind_bool[6]:=napaka_kom_scada; mind_bool[7]:=napaka_kom_scada2; mind_bool[8]:=NapakaSenzorSkupno; mind_bool[9]:=NapakaSenzorVlagaHIA1; mind_bool[10]:=NapakaSenzorVlagaHIA2; mind_bool[11]:=NapakaSenzorVlagaHIA3; mind_bool[12]:=NapakaSenzorVlagaHIA4; mind_bool[13]:=NapakaSenzorVlagaHIA5; mind_bool[14]:=NapakaSenzorVlagaHIA6; mind_bool[15]:=NapakaSenzorVlagaHIA7; mind_bool[16]:=NapakaSenzorVlagaHIA8; mind_bool[17]:=NapakaTSTempTIA1; mind_bool[18]:=NapakaTSTempTIA2; mind_bool[19]:=NapakaTSTempTIA3; mind_bool[20]:=NapakaTSTempTIA4; mind_bool[21]:=NapakaTSTempTIA5; mind_bool[22]:=NapakaTSTempTIA6; mind_bool[23]:=NapakaTSTempTIA7; mind_bool[24]:=NapakaTSTempTIA8; mind_bool[25]:=PrevisokaTemp; mind_bool[26]:=razlitjeLAH1; mind_bool[27]:=razlitjeLAH2; mind_bool[28]:=razlitjeLAH3; mind_bool[29]:=razlitjeLAH4; mind_bool[30]:=razlitjeLAH5; mind_bool[31]:=razlitjeLAH6; mind_bool[32]:=razlitjeLAH7; mind_bool[33]:=razlitjeLAH8; mind_bool[34]:=SetDateTime; mind_bool[35]:=SetDateTimeDemand; mind_bool[36]:=SetDateTimeError; mind_bool[37]:=SetDateTimeFinished; mind_bool[38]:=SlabaBaterijaPLC; mind_bool[39]:=TIA1_previs_temp; mind_bool[40]:=TIA2_previs_temp; mind_bool[41]:=TIA3_previs_temp; mind_bool[42]:=TIA4_previs_temp; mind_bool[43]:=TIA5_previs_temp; mind_bool[44]:=TIA6_previs_temp; mind_bool[45]:=TIA7_previs_temp; mind_bool[46]:=TIA8_previs_temp; mind_bool[47]:=ups_alarm; mind_bool[48]:=ups_baterijski_nac; mind_bool[49]:=ups_polnjenje; mind_bool[50]:=UserLoggedIn; mind_bool[51]:=XVH_AlarmOn; (*Branje INT*) (**) mind[0]:=DateTime.Dan; mind[1]:=DateTime.Leto; mind[2]:=DateTime.Leto2; mind[3]:=DateTime.Mesec; mind[4]:=DateTime.Minuta; mind[5]:=DateTime.Sekunda; mind[6]:=DateTime.Ura; mind[7]:=HIA1_vlaga_s; mind[8]:=HIA2_vlaga_s; mind[9]:=HIA3_vlaga_s; mind[10]:=HIA4_vlaga_s; mind[11]:=HIA5_vlaga_s; mind[12]:=HIA6_vlaga_s; mind[13]:=HIA7_vlaga_s; mind[14]:=HIA8_vlaga_s; mind[15]:=TIA1_alarm; mind[16]:=TIA1_temp_s; mind[17]:=TIA2_alarm; mind[18]:=TIA2_temp_s; mind[19]:=TIA3_alarm; mind[20]:=TIA3_temp_s; mind[21]:=TIA4_alarm; mind[22]:=TIA4_temp_s; mind[23]:=TIA5_alarm; mind[24]:=TIA5_temp_s; mind[25]:=TIA6_alarm; mind[26]:=TIA6_temp_s; mind[27]:=TIA7_alarm; mind[28]:=TIA7_temp_s; mind[29]:=TIA8_alarm; mind[30]:=TIA8_temp_s; mind[31]:=UserCurrentLevel; mind[32]:=XVH_UPSstatus; (*Branje UINT*) (**) mind[6000]:=kom_nast_cas_izpada; (*Branje LONG*) (**) (*Branje REAL*) (**) Read_Real(rVar:=rVersion,lo:=4000,hi:=4001); Read_Real(rVar:=XVHdepltedBatery1,lo:=4002,hi:=4003); Read_Real(rVar:=XVHdepltedBatery2,lo:=4004,hi:=4005); Read_Real(rVar:=XVHlowBatery1,lo:=4006,hi:=4007); Read_Real(rVar:=XVHlowBatery2,lo:=4008,hi:=4009); (*Branje STRING*) (**) Read_String(sVar:=Date_Time[0],start:=5000); Read_String(sVar:=Date_Time[1],start:=5015); Read_String(sVar:=Date_Time[2],start:=5030); Read_String(sVar:=Date_Time[3],start:=5045); Read_String(sVar:=UserCurrentName,start:=5060); END_PROGRAM (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) FUNCTION mod_Write_Bool : BOOL VAR_INPUT index: INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) (*vpis iz scade*) CASE index OF (*Pisanje BOOL*) (**) 0:ComError:=Bit_0; 1:ComSCADA:=Bit_0; 2:ComSCADA1:=Bit_0; 3:ComSCADA2:=Bit_0; 4:ComSCADA3:=Bit_0; 5:napaka_kom_panel:=Bit_0; 6:napaka_kom_scada:=Bit_0; 7:napaka_kom_scada2:=Bit_0; 8:NapakaSenzorSkupno:=Bit_0; 9:NapakaSenzorVlagaHIA1:=Bit_0; 10:NapakaSenzorVlagaHIA2:=Bit_0; 11:NapakaSenzorVlagaHIA3:=Bit_0; 12:NapakaSenzorVlagaHIA4:=Bit_0; 13:NapakaSenzorVlagaHIA5:=Bit_0; 14:NapakaSenzorVlagaHIA6:=Bit_0; 15:NapakaSenzorVlagaHIA7:=Bit_0; 16:NapakaSenzorVlagaHIA8:=Bit_0; 17:NapakaTSTempTIA1:=Bit_0; 18:NapakaTSTempTIA2:=Bit_0; 19:NapakaTSTempTIA3:=Bit_0; 20:NapakaTSTempTIA4:=Bit_0; 21:NapakaTSTempTIA5:=Bit_0; 22:NapakaTSTempTIA6:=Bit_0; 23:NapakaTSTempTIA7:=Bit_0; 24:NapakaTSTempTIA8:=Bit_0; 25:PrevisokaTemp:=Bit_0; 26:razlitjeLAH1:=Bit_0; 27:razlitjeLAH2:=Bit_0; 28:razlitjeLAH3:=Bit_0; 29:razlitjeLAH4:=Bit_0; 30:razlitjeLAH5:=Bit_0; 31:razlitjeLAH6:=Bit_0; 32:razlitjeLAH7:=Bit_0; 33:razlitjeLAH8:=Bit_0; 34:SetDateTime:=Bit_0; 35:SetDateTimeDemand:=Bit_0; 36:SetDateTimeError:=Bit_0; 37:SetDateTimeFinished:=Bit_0; 38:SlabaBaterijaPLC:=Bit_0; 39:TIA1_previs_temp:=Bit_0; 40:TIA2_previs_temp:=Bit_0; 41:TIA3_previs_temp:=Bit_0; 42:TIA4_previs_temp:=Bit_0; 43:TIA5_previs_temp:=Bit_0; 44:TIA6_previs_temp:=Bit_0; 45:TIA7_previs_temp:=Bit_0; 46:TIA8_previs_temp:=Bit_0; 47:ups_alarm:=Bit_0; 48:ups_baterijski_nac:=Bit_0; 49:ups_polnjenje:=Bit_0; 50:UserLoggedIn:=Bit_0; 51:XVH_AlarmOn:=Bit_0; (*BOOL*) END_CASE END_FUNCTION (* @SYMFILEFLAGS := '2048' *) FUNCTION mod_Write_dWord : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) (*vpis iz scade*) CASE index OF (*Pisanje LONG*) (**) (*Pisanje REAL*) (**) 4001:rVersion:=Real_0; 4003:XVHdepltedBatery1:=Real_0; 4005:XVHdepltedBatery2:=Real_0; 4007:XVHlowBatery1:=Real_0; 4009:XVHlowBatery2:=Real_0; END_CASE END_FUNCTION (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) FUNCTION mod_Write_String : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) (*vpis iz scade*) CASE index OF (*Pisanje STRING*) (**) 5000:Date_Time[0]:=String_0; 5015:Date_Time[1]:=String_0; 5030:Date_Time[2]:=String_0; 5045:Date_Time[3]:=String_0; 5060:UserCurrentName:=String_0; END_CASE END_FUNCTION (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) FUNCTION mod_Write_Word : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) (*vpis iz scade*) CASE index OF (*Pisanje INT*) (**) 0:DateTime.Dan:=Byte_0; 1:DateTime.Leto:=Byte_0; 2:DateTime.Leto2:=Word_01; 3:DateTime.Mesec:=Byte_0; 4:DateTime.Minuta:=Byte_0; 5:DateTime.Sekunda:=Byte_0; 6:DateTime.Ura:=Byte_0; 7:HIA1_vlaga_s:=Word_01; 8:HIA2_vlaga_s:=Word_01; 9:HIA3_vlaga_s:=Word_01; 10:HIA4_vlaga_s:=Word_01; 11:HIA5_vlaga_s:=Word_01; 12:HIA6_vlaga_s:=Word_01; 13:HIA7_vlaga_s:=Word_01; 14:HIA8_vlaga_s:=Word_01; 15:TIA1_alarm:=Word_01; 16:TIA1_temp_s:=Word_01; 17:TIA2_alarm:=Word_01; 18:TIA2_temp_s:=Word_01; 19:TIA3_alarm:=Word_01; 20:TIA3_temp_s:=Word_01; 21:TIA4_alarm:=Word_01; 22:TIA4_temp_s:=Word_01; 23:TIA5_alarm:=Word_01; 24:TIA5_temp_s:=Word_01; 25:TIA6_alarm:=Word_01; 26:TIA6_temp_s:=Word_01; 27:TIA7_alarm:=Word_01; 28:TIA7_temp_s:=Word_01; 29:TIA8_alarm:=Word_01; 30:TIA8_temp_s:=Word_01; 31:UserCurrentLevel:=Byte_0; 32:XVH_UPSstatus:=Byte_0; (*Pisanje UINT*) (**) 6000:kom_nast_cas_izpada:=Word_01; ; END_CASE END_FUNCTION (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) (*Modbus Slave Example*) PROGRAM PLC_PRG_modnet VAR Slave_Adresa:BYTE:=2; Slave_Port:INT:=502; SlaveSetup:MBS_Setup; SlavePoll:MBS_Poll; SlaveAnswer:MBS_Answer; step: USINT; end :BOOL; i: INT; cycle :BOOL := FALSE; (* First cycle *) OpenDefaultPort: BOOL; Write_16: BOOL; Write_15: BOOL; Write_5: BOOL; j: INT; slavepollwOffset_temp: INT; slaveanswerwCount_temp: INT; slaveanswerwoffset_temp: INT; END_VAR (* @END_DECLARATION := '0' *) (*Modbus Slave Example*) IF Write_16=TRUE THEN (**) FOR j := 0 TO (slaveanswerwCount_temp-1)/15 BY 1 DO (*vpiše se dword, real*) wStr_0:=mind[slaveanswerwoffset_temp+j]; wStr_1:=mind[slaveanswerwoffset_temp+j+1]; wStr_2 :=mind[slaveanswerwoffset_temp+j+2]; wStr_3:=mind[slaveanswerwoffset_temp+j+3]; wStr_4:=mind[slaveanswerwoffset_temp+j+4]; wStr_5 :=mind[slaveanswerwoffset_temp+j+5]; wStr_6:=mind[slaveanswerwoffset_temp+j+6]; wStr_7:=mind[slaveanswerwoffset_temp+j+7]; wStr_8:=mind[slaveanswerwoffset_temp+j+8]; wStr_9:=mind[slaveanswerwoffset_temp+j+9]; wStr_10:=mind[slaveanswerwoffset_temp+j+10]; wStr_11:=mind[slaveanswerwoffset_temp+j+11]; wStr_12:=mind[slaveanswerwoffset_temp+j+12]; wStr_13:=mind[slaveanswerwoffset_temp+j+13]; wStr_14:=mind[slaveanswerwoffset_temp+j+14]; bStr_29:=0; mod_Write_String(index:=slaveanswerwoffset_temp+j); (*vpis real in string*) END_FOR; FOR j := 1 TO slaveanswerwCount_temp-1 BY 2 DO (*vpiše se dword, real*) Word_01:=mind[slaveanswerwoffset_temp+j-1]; Word_23:=mind[slaveanswerwoffset_temp+j]; mod_Write_dWord(index:=slaveanswerwoffset_temp+j); (*vpis real in dword*) END_FOR; FOR j := 0 TO slaveanswerwCount_temp-1 BY 1 DO (*vpiše se word*) Word_01:=mind[slaveanswerwoffset_temp+j]; mod_Write_Word(index:=slaveanswerwoffset_temp+j); (*vpis word*) END_FOR; Write_16:=FALSE; END_IF; IF Write_5=TRUE OR Write_15=TRUE THEN (**) FOR j := 0 TO slaveanswerwCount_temp-1 BY 1 DO Bit_0:=mind_bool[slaveanswerwoffset_temp+j]; mod_Write_Bool(index:=slaveanswerwoffset_temp+j); (*vpis spremembe v spremenljivko*) END_FOR; Write_5:=FALSE; Write_15:=FALSE; END_IF; (*iz scade ni komande za branje*) IF Write_16=FALSE AND Write_5=FALSE AND Write_15=FALSE THEN mod_Read();(*branje spremenljivk za scado*) END_IF (*Close all sockets on corresponding event*) IF cycle = FALSE THEN SysCallbackRegister(INDEXOF(Callback_Stop),event_stop); SysCallbackRegister(INDEXOF(Callback_Reset),event_before_reset); SysCallbackRegister(INDEXOF(Callback_Reset),event_shutdown); cycle := TRUE; END_IF (*Close all connections via application *) IF end = TRUE THEN MBS_CloseAllConnections(); SlaveSetup (xstrobe:= TRUE,bUnitIdentifier:=Slave_Adresa,wDefaultPort:=Slave_Port,xDefaultPortActive:=FALSE); (*Close port*) step := 0; END_IF IF OpenDefaultPort=TRUE THEN SlaveSetup (xstrobe:= TRUE,bUnitIdentifier:=Slave_Adresa,wDefaultPort:=Slave_Port,xDefaultPortActive:=TRUE); (*Close port*) step := 0; OpenDefaultPort:=FALSE; END_IF (* State machine for setup, poll and answer *) CASE step OF 0:(**) SlaveSetup.bUnitIdentifier:=Slave_Adresa;(*Subunitnumber*) slavesetup.wDefaultPort:=Slave_Port;(*Standartport *) SlaveSetup.xAdditionalPortActive:=FALSE;(*Port opened or closed*) SlaveSetup.xSecureMode:=FALSE;(*If TRUE only preset IPs are accepted*) SlaveSetup.tTimeout:=T#3m;(*Timeout if no communication with slave established*) SlaveSetup(xStrobe:=TRUE);(*Strobe starts function*) IF slavesetup.xBusy = FALSE THEN slavesetup(xstrobe := FALSE); step := 1 ; END_IF; 1:(**) SlavePoll(xStrobe:=TRUE);(*Searching for master commands*) IF NOT SlavePoll.xBusy THEN step:=2; SlavePoll(xStrobe:=FALSE); END_IF; 2:(**) step:= 1; CASE SlavePoll.bFunctionCode OF (*Connect accepted pollparameters with answerparameters*) 8:(**)(*Poll answers*) ; 15: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; slaveanswerwoffset_temp:=slaveanswer.woffset; slaveanswerwCount_temp:=slaveanswer.wCount; FOR i := 0 TO slaveanswer.wCount-1 BY 1 DO mind_bool[slaveanswer.woffset+i] := slavepoll.xarData[i];(*Write to Data-array*) END_FOR; slaveanswer.xarData:=slavepoll.xarData; Write_15:=TRUE; 16: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; slaveanswerwoffset_temp:=slaveanswer.woffset; slaveanswerwCount_temp:=slaveanswer.wCount; FOR i := 0 TO slaveanswer.wCount-1 BY 1 DO mind[slaveanswer.woffset+i] := slavepoll.warData[i];(*Write to Data-array*) END_FOR; slaveanswer.wardata := slavepoll.warData; Write_16:=TRUE; 1,2: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; FOR i:= 0 TO slavepoll.wcount-1 BY 1 DO slaveanswer.xarData[i]:=mind_bool[slavepoll.woffset+i]; (*Read from Data-array*) END_FOR 3,4: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; FOR i:= 0 TO slaveanswer.wCount-1 BY 1 DO slaveanswer.warData[i]:=mind[slavepoll.woffset+i];(*Read from Data-array*) END_FOR 5: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; mind_bool[slavepoll.woffset]:=slavepoll.xarData[0];(*Write to Data-array*) slaveanswer.wOffset:=slavepoll.wOffset; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.xarData := slavepoll.xardata; slaveanswerwoffset_temp:=slaveanswer.woffset; slaveanswerwCount_temp:=slaveanswer.wCount; Write_5:=TRUE; 6: slaveanswer.bFunctionCode:= slavepoll.bFunctionCode; mind[slavepoll.woffset]:= slavepoll.warData[0];(*Write to Data-array*) slaveanswer.wOffset:= slavepoll.wOffset; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wardata := slavepoll.wardata; 23: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wOffset:=slavepoll.wOffset; slaveanswer.wCount:=slavepoll.wCount; FOR i:= 0 TO slavepoll.wCountAdd-1 BY 1 DO mind[slavepoll.woffsetadd+i] := slavepoll.warData[i];(*Write to Data-array*) END_FOR; FOR i := 0 TO slavepoll.wCount BY 1 DO slaveanswer.warData[i] := mind[1+slavepoll.woffset+i];(*Read from Data-array*) END_FOR; END_CASE; IF slavepoll.xAvailable = TRUE THEN slaveanswer();(*When Data ready, send answer*) END_IF END_CASE; END_PROGRAM (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) FUNCTION Read_dWord : BOOL VAR_INPUT dVAR: DWORD; lo:INT; hi:INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) DWord_0:=dVar;mind[lo]:=Word_01;mind[hi]:=Word_23; END_FUNCTION (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) FUNCTION Read_Real : BOOL VAR_INPUT rVAR: REAL; lo:INT; hi:INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) Real_0:=rVar;mind[lo]:=Word_01;mind[hi]:=Word_23; END_FUNCTION (* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) FUNCTION Read_String : BOOL VAR_INPUT sVar: STRING; start:INT; END_VAR VAR END_VAR (* @END_DECLARATION := '0' *) String_0:=LEFT (sVar,29); mind[start]:=wStr_0; mind[start+1]:=wStr_1; mind[start+2]:=wStr_2; mind[start+3]:=wStr_3; mind[start+4]:=wStr_4; mind[start+5]:=wStr_5; mind[start+6]:=wStr_6; mind[start+7]:=wStr_7; mind[start+8]:=wStr_8; mind[start+9]:=wStr_9; mind[start+10]:=wStr_10; mind[start+11]:=wStr_11; mind[start+12]:=wStr_12; mind[start+13]:=wStr_13; bStr_29:=0; mind[start+14]:=wStr_14; END_FUNCTION (* @GLOBAL_VARIABLE_LIST := 'Global_Variables_Modnet' *) (* @PATH := '' *) (* @SYMFILEFLAGS := '2048' *) VAR_GLOBAL (*delovno polje za modnet komunikacijo*) mind :ARRAY [0..9999] OF WORD; mind_bool :ARRAY [0..9999] OF BOOL; (*Buffer-Array*) (*Delovni markerji //*) Bit_0 AT %MX0.0 : BOOL; Byte_0 AT %MB0 : BYTE; Byte_1 AT %MB1 : BYTE; Byte_2 AT %MB2 : BYTE; Byte_3 AT %MB3 : BYTE; Real_0 AT %MR0:REAL; DWord_0 AT %MD0:DWORD; Word_01 AT %MW0:WORD; Word_23 AT %MW2:WORD; String_0 AT %MW10:STRING; wStr_0 AT %MW10:WORD; wStr_1 AT %MW12:WORD; wStr_2 AT %MW14:WORD; wStr_3 AT %MW16:WORD; wStr_4 AT %MW18:WORD; wStr_5 AT %MW20:WORD; wStr_6 AT %MW22:WORD; wStr_7 AT %MW24:WORD; wStr_8 AT %MW26:WORD; wStr_9 AT %MW28:WORD; wStr_10 AT %MW30:WORD; wStr_11 AT %MW32:WORD; wStr_12 AT %MW34:WORD; wStr_13 AT %MW36:WORD; wStr_14 AT %MW38:WORD; bStr_00 AT %MB10:BYTE; bStr_01 AT %MB11:BYTE; bStr_02 AT %MB12:BYTE; bStr_03 AT %MB13:BYTE; bStr_04 AT %MB14:BYTE; bStr_05 AT %MB15:BYTE; bStr_06 AT %MB16:BYTE; bStr_07 AT %MB17:BYTE; bStr_08 AT %MB18:BYTE; bStr_09 AT %MB19:BYTE; bStr_10 AT %MB20:BYTE; bStr_11 AT %MB21:BYTE; bStr_12 AT %MB22:BYTE; bStr_13 AT %MB23:BYTE; bStr_14 AT %MB24:BYTE; bStr_15 AT %MB25:BYTE; bStr_16 AT %MB26:BYTE; bStr_17 AT %MB27:BYTE; bStr_18 AT %MB28:BYTE; bStr_19 AT %MB29:BYTE; bStr_20 AT %MB30:BYTE; bStr_21 AT %MB31:BYTE; bStr_22 AT %MB32:BYTE; bStr_23 AT %MB33:BYTE; bStr_24 AT %MB34:BYTE; bStr_25 AT %MB35:BYTE; bStr_26 AT %MB36:BYTE; bStr_27 AT %MB37:BYTE; bStr_28 AT %MB38:BYTE; bStr_29 AT %MB39:BYTE; (********************************************) END_VAR (* @OBJECT_END := 'Global_Variables_Modnet' *) (* @CONNECTIONS := Global_Variables_Modnet FILENAME : '' FILETIME : 0 EXPORT : 0 NUMOFCONNECTIONS : 0 *)