(* @PATH := '\/Modnet' *) (* @SYMFILEFLAGS := '2048' *) PROGRAM mod_Read VAR END_VAR (* @END_DECLARATION := '0' *) (*Branje BOOL*) (**) mind_bool[0]:=Alarm_E5M; mind_bool[1]:=ComSCADA; mind_bool[2]:=ComSCADA1; mind_bool[3]:=E5_F1_delovanje; mind_bool[4]:=E5_F1_napaka; mind_bool[5]:=E5_F2_delovanje; mind_bool[6]:=E5_F2_napaka; mind_bool[7]:=E5_F3_delovanje; mind_bool[8]:=E5_F3_napaka; mind_bool[9]:=E5_Q0_vkljuceno; mind_bool[10]:=E5_U1_delovanje; mind_bool[11]:=E5_U1_napaka; mind_bool[12]:=E5_U2_delovanje; mind_bool[13]:=E5_U2_napaka; mind_bool[14]:=E5_U3_delovanje; mind_bool[15]:=E5_U3_napaka; mind_bool[16]:=ErrComCybro; mind_bool[17]:=ErrComPort2; mind_bool[18]:=KLIMA_SPLIT1_delovanje; mind_bool[19]:=KLIMA_SPLIT1_napaka; mind_bool[20]:=KLIMA_SPLIT2_delovanje; mind_bool[21]:=KLIMA_SPLIT2_napaka; mind_bool[22]:=KomunikacijaErr; mind_bool[23]:=N_E5_F1_napaka; mind_bool[24]:=N_E5_F2_napaka; mind_bool[25]:=N_E5_F3_napaka; mind_bool[26]:=N_E5_U1_napaka; mind_bool[27]:=N_E5_U2_napaka; mind_bool[28]:=N_E5_U3_napaka; mind_bool[29]:=napaka_kom_panel; mind_bool[30]:=napaka_kom_scada; mind_bool[31]:=NapakaSenzorSkupno; mind_bool[32]:=NapakaSenzorVlagaHIA1; mind_bool[33]:=NapakaSenzorVlagaHIA2; mind_bool[34]:=NapakaSenzorVlagaHIA3; mind_bool[35]:=NapakaTSTempTIA1; mind_bool[36]:=NapakaTSTempTIA2; mind_bool[37]:=NapakaTSTempTIA3; mind_bool[38]:=PrevisokaTemp; mind_bool[39]:=razlitje_vode_LAH1; mind_bool[40]:=razlitje_vode_LAH2; mind_bool[41]:=SetDateTime; mind_bool[42]:=SetDateTimeDemand; mind_bool[43]:=SetDateTimeError; mind_bool[44]:=SetDateTimeFinished; mind_bool[45]:=SlabaBaterijaPLC; mind_bool[46]:=TIA1_previs_temp; mind_bool[47]:=TIA2_previs_temp; mind_bool[48]:=TIA3_previs_temp; mind_bool[49]:=ups_alarm; mind_bool[50]:=ups_baterijski_nac; mind_bool[51]:=ups_polnjenje; mind_bool[52]:=UserLoggedIn; mind_bool[53]:=VentilatorjiAlarm; mind_bool[54]:=VentilatorjiCybro.I_ERR_Vent1; mind_bool[55]:=VentilatorjiCybro.I_ERR_Vent2; mind_bool[56]:=VentilatorjiCybro.I_ERR_Vent3; mind_bool[57]:=VentilatorjiCybro.SAvtomatsko_Vent1; mind_bool[58]:=VentilatorjiCybro.SAvtomatsko_Vent2; mind_bool[59]:=VentilatorjiCybro.SAvtomatsko_Vent3; mind_bool[60]:=VentilatorjiCybro.SRocno_Vent1; mind_bool[61]:=VentilatorjiCybro.SRocno_Vent2; mind_bool[62]:=VentilatorjiCybro.SRocno_Vent3; mind_bool[63]:=VentilatorjiNapaka; mind_bool[64]:=XVH_AlarmOn; mind_bool[65]:=XVH_KonvekorErr; mind_bool[66]:=napaka_kom_scada2; mind_bool[67]:=ComSCADA2; mind_bool[68]:=ComSCADA3; (*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]:=RezimVent1; mind[11]:=RezimVent2; mind[12]:=RezimVent3; mind[13]:=TIA1_alarm; mind[14]:=TIA1_temp_s; mind[15]:=TIA2_alarm; mind[16]:=TIA2_temp_s; mind[17]:=TIA3_alarm; mind[18]:=TIA3_temp_s; mind[19]:=UserCurrentLevel; mind[20]:=VentilatorjiCybro.Alarm_lucka; mind[21]:=VentilatorjiCybro.HisterezaTEMP_HI; mind[22]:=VentilatorjiCybro.HisterezaTEMP_LO; mind[23]:=VentilatorjiCybro.HisterezaVLAGA_HI; mind[24]:=VentilatorjiCybro.HisterezaVLAGA_LO; mind[25]:=VentilatorjiCybro.Hitrost_Vent1_MAX; mind[26]:=VentilatorjiCybro.Hitrost_Vent1_MIN; mind[27]:=VentilatorjiCybro.O_Hitrost_Vent1; mind[28]:=VentilatorjiCybro.O_Hitrost_Vent2; mind[29]:=VentilatorjiCybro.O_Hitrost_Vent3; mind[30]:=VentilatorjiCybro.TempSKUPNA; mind[31]:=VentilatorjiCybro.VlagaSKUPNA; mind[32]:=XVH_KlimaSplitStatus[1]; mind[33]:=XVH_KlimaSplitStatus[2]; mind[34]:=XVH_UPSstatus; mind[35]:=kom_nast_cas_izpada; (*Branje UINT*) (**) (*Branje LONG*) (**) (*Branje REAL*) (**) (*Branje STRING*) (**) Read_String(sVar:=UserCurrentName,start:=5000); 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:Alarm_E5M:=Bit_0; 1:ComSCADA:=Bit_0; 2:ComSCADA1:=Bit_0; 3:E5_F1_delovanje:=Bit_0; 4:E5_F1_napaka:=Bit_0; 5:E5_F2_delovanje:=Bit_0; 6:E5_F2_napaka:=Bit_0; 7:E5_F3_delovanje:=Bit_0; 8:E5_F3_napaka:=Bit_0; 9:E5_Q0_vkljuceno:=Bit_0; 10:E5_U1_delovanje:=Bit_0; 11:E5_U1_napaka:=Bit_0; 12:E5_U2_delovanje:=Bit_0; 13:E5_U2_napaka:=Bit_0; 14:E5_U3_delovanje:=Bit_0; 15:E5_U3_napaka:=Bit_0; 16:ErrComCybro:=Bit_0; 17:ErrComPort2:=Bit_0; 18:KLIMA_SPLIT1_delovanje:=Bit_0; 19:KLIMA_SPLIT1_napaka:=Bit_0; 20:KLIMA_SPLIT2_delovanje:=Bit_0; 21:KLIMA_SPLIT2_napaka:=Bit_0; 22:KomunikacijaErr:=Bit_0; 23:N_E5_F1_napaka:=Bit_0; 24:N_E5_F2_napaka:=Bit_0; 25:N_E5_F3_napaka:=Bit_0; 26:N_E5_U1_napaka:=Bit_0; 27:N_E5_U2_napaka:=Bit_0; 28:N_E5_U3_napaka:=Bit_0; 29:napaka_kom_panel:=Bit_0; 30:napaka_kom_scada:=Bit_0; 31:NapakaSenzorSkupno:=Bit_0; 32:NapakaSenzorVlagaHIA1:=Bit_0; 33:NapakaSenzorVlagaHIA2:=Bit_0; 34:NapakaSenzorVlagaHIA3:=Bit_0; 35:NapakaTSTempTIA1:=Bit_0; 36:NapakaTSTempTIA2:=Bit_0; 37:NapakaTSTempTIA3:=Bit_0; 38:PrevisokaTemp:=Bit_0; 39:razlitje_vode_LAH1:=Bit_0; 40:razlitje_vode_LAH2:=Bit_0; 41:SetDateTime:=Bit_0; 42:SetDateTimeDemand:=Bit_0; 43:SetDateTimeError:=Bit_0; 44:SetDateTimeFinished:=Bit_0; 45:SlabaBaterijaPLC:=Bit_0; 46:TIA1_previs_temp:=Bit_0; 47:TIA2_previs_temp:=Bit_0; 48:TIA3_previs_temp:=Bit_0; 49:ups_alarm:=Bit_0; 50:ups_baterijski_nac:=Bit_0; 51:ups_polnjenje:=Bit_0; 52:UserLoggedIn:=Bit_0; 53:VentilatorjiAlarm:=Bit_0; 54:VentilatorjiCybro.I_ERR_Vent1:=Bit_0; 55:VentilatorjiCybro.I_ERR_Vent2:=Bit_0; 56:VentilatorjiCybro.I_ERR_Vent3:=Bit_0; 57:VentilatorjiCybro.SAvtomatsko_Vent1:=Bit_0; 58:VentilatorjiCybro.SAvtomatsko_Vent2:=Bit_0; 59:VentilatorjiCybro.SAvtomatsko_Vent3:=Bit_0; 60:VentilatorjiCybro.SRocno_Vent1:=Bit_0; 61:VentilatorjiCybro.SRocno_Vent2:=Bit_0; 62:VentilatorjiCybro.SRocno_Vent3:=Bit_0; 63:VentilatorjiNapaka:=Bit_0; 64:XVH_AlarmOn:=Bit_0; 65:XVH_KonvekorErr:=Bit_0; 66:napaka_kom_scada2:=Bit_0; 67:ComSCADA2:=Bit_0; 68:ComSCADA3:=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*) (**) 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: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:RezimVent1:=Byte_0; 11:RezimVent2:=Byte_0; 12:RezimVent3:=Byte_0; 13:TIA1_alarm:=Word_01; 14:TIA1_temp_s:=Word_01; 15:TIA2_alarm:=Word_01; 16:TIA2_temp_s:=Word_01; 17:TIA3_alarm:=Word_01; 18:TIA3_temp_s:=Word_01; 19:UserCurrentLevel:=Byte_0; 20:VentilatorjiCybro.Alarm_lucka:=Word_01; 21:VentilatorjiCybro.HisterezaTEMP_HI:=Word_01; 22:VentilatorjiCybro.HisterezaTEMP_LO:=Word_01; 23:VentilatorjiCybro.HisterezaVLAGA_HI:=Word_01; 24:VentilatorjiCybro.HisterezaVLAGA_LO:=Word_01; 25:VentilatorjiCybro.Hitrost_Vent1_MAX:=Word_01; 26:VentilatorjiCybro.Hitrost_Vent1_MIN:=Word_01; 27:VentilatorjiCybro.O_Hitrost_Vent1:=Word_01; 28:VentilatorjiCybro.O_Hitrost_Vent2:=Word_01; 29:VentilatorjiCybro.O_Hitrost_Vent3:=Word_01; 30:VentilatorjiCybro.TempSKUPNA:=Word_01; 31:VentilatorjiCybro.VlagaSKUPNA:=Word_01; 32:XVH_KlimaSplitStatus[1]:=Byte_0; 33:XVH_KlimaSplitStatus[2]:=Byte_0; 34:XVH_UPSstatus:=Byte_0; 35:kom_nast_cas_izpada:=Word_01; (*Pisanje UINT*) (**) ; 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 *)