VAR mIndex : INT; mGetAddress: IL_ECATGetConfigEthercatAddrList ; mGetConfig : IL_ECATGetSlaveConfigInfo ; END_VAR Enum:= TRUE; mGetAddress.MasterName:= ADR(FieldBus.MasterName); mGetAddress.EthercatAddrListAdr:= ADR(Address); mGetAddress.SizeOfEthercatAddrList:= SIZEOF(Address); mGetAddress(Execute:= TRUE); IF mGetAddress.Done THEN Count:= TO_INT(mGetAddress.NumConfigSlaves); mGetConfig.MasterName:= ADR(FieldBus.MasterName); mGetConfig.SlaveAddress:= Address[mIndex]; mGetConfig(Execute:= TRUE); IF mGetConfig.Done THEN mGetConfig(Execute:= FALSE); Name [mIndex]:= mGetConfig.SlaveConfigInfo.SlaveName; Vendor [mIndex]:= mGetConfig.SlaveConfigInfo.SlaveIdentity.VendorId; Product[mIndex]:= mGetConfig.SlaveConfigInfo.SlaveIdentity.ProductCode; IF mGetConfig.SlaveConfigInfo.NumProcessVarsIn > 0 THEN Memory[mIndex].Input := 0; Memory[mIndex].InputOffset:= mGetConfig.SlaveConfigInfo.ProcessDataIn[0].Offset; Memory[mIndex].InputSize := mGetConfig.SlaveConfigInfo.ProcessDataIn[0].Size; END_IF IF mGetConfig.SlaveConfigInfo.NumProcessVarsOut > 0 THEN Memory[mIndex].Output := 0; Memory[mIndex].OutputOffset:= mGetConfig.SlaveConfigInfo.ProcessDataOut[0].Offset; Memory[mIndex].OutputSize := mGetConfig.SlaveConfigInfo.ProcessDataOut[0].Size; END_IF mIndex:= mIndex + 1; IF mIndex >= Count THEN mGetAddress(Execute:= FALSE); mIndex:= 0; Enum:= TRUE; END_IF END_IF IF mGetConfig.Error THEN mGetConfig (Execute:= FALSE); mGetAddress(Execute:= FALSE); Enum:= TRUE; END_IF ELSE mIndex:= 0; END_IF IF mGetAddress.Error THEN mGetAddress(Execute:=FALSE); END_IF