Пример #1
0
        //BaseController should use reflection
        //and not generics as we do not know the types at design time
        public static MHEControl CreateMHEControlGeneric <T, U>(IControllable assem, ProtocolInfo info)
            where T : ProtocolInfo
            where U : MHEControl
        {
            MHEControl protocolConfig = null; //generic plc config object

            try
            {
                if (info == null)
                {
                    var          i            = (T)Activator.CreateInstance(typeof(T), null);
                    ProtocolInfo protocolInfo = i; //generic plc config object constructor argument type
                    protocolInfo.assem = assem.Name;
                    object[] args = { protocolInfo, assem };
                    var      ctr  = (U)Activator.CreateInstance(typeof(U), args);
                    protocolConfig = ctr;
                }
                else
                {
                    object[] args = { info, assem };
                    var      ctr  = (U)Activator.CreateInstance(typeof(U), args);
                    info.assem     = assem.Name;
                    protocolConfig = ctr;
                }
            }
            catch (Exception e)
            {
                Experior.Core.Environment.Log.Write("Can't create control!", Color.Red);
                Environment.Log.Write(e.Message, Color.Red);
            }
            return(protocolConfig);
        }
Пример #2
0
        public MHEControl CreateMHEControl(IControllable assem, ProtocolInfo info)
        {
            sorterElement = assem as SorterElement;

            MHEControl protocolConfig = null;  //generic plc config object

            if (assem is SorterElement)
            {
                protocolConfig = CreateMHEControlGeneric <SorterATCInfo, MHEControl_Sorter>(assem, info);
            }
            else if (assem is CommunicationPoint)
            {
                protocolConfig = CreateMHEControlGeneric <MHEControl_CommPointInfo, MHEControl_CommPoint>(assem, info);
            }
            else
            {
                Experior.Core.Environment.Log.Write("Can't create MHE Control, object is not defined in the 'CreateMHEControl' of the controller", Color.Red);
                return(null);
            }
            //......other assemblies should be added here....do this with generics...correction better to do this with reflection...That is BaseController should use reflection
            //and not generics as we do not know the types at design time and it means that the above always has to be edited when adding a new MHE control object.
            protocolConfig.ParentAssembly = (Assembly)assem;
            controls.Add(protocolConfig);
            return(protocolConfig as MHEControl);
        }
Пример #3
0
        public MHEControl CreateMHEControl(IControllable assem, ProtocolInfo info)
        {
            MHEControl protocolConfig = null;  //generic plc config object
            //ProtocolInfo protocolInfo = null;  //generic plc config object constructor argument type
            Dictionary <string, Type> dt = new Dictionary <string, Type>();

            if (assem is CommunicationPoint)
            {
                protocolConfig = CreateMHEControlGeneric <CommPointDatcomInfo, MHEControl_CommPoint>(assem, info);
            }
            else if (assem is MergeDivertConveyor)
            {
                protocolConfig = CreateMHEControlGeneric <MergeDivertDatcomInfo, MHEControl_MergeDivert>(assem, info);
            }
            else if (assem is Transfer)
            {
                protocolConfig = CreateMHEControlGeneric <TransferDatcomInfo, MHEControl_Transfer>(assem, info);
            }
            else if (assem is StraightAccumulationConveyor)
            {
                protocolConfig = CreateMHEControlGeneric <ManualPickingDatcomInfo, MHEControl_ManualPicking>(assem, info);
            }
            else if (assem is BeltSorterDivert)
            {
                protocolConfig = CreateMHEControlGeneric <BeltSorterDivertDatcomInfo, MHEControl_BeltSorterDivert>(assem, info);
            }
            else if (assem is AngledDivert)
            {
                protocolConfig = CreateMHEControlGeneric <AngledDivertDatcomInfo, MHEControl_AngledDivert>(assem, info);
            }
            else if (assem is ThreeWaySwitch)
            {
                protocolConfig = CreateMHEControlGeneric <ThreeWaySwitchDatcomInfo, MHEControl_ThreeWaySwitch>(assem, info);
            }
            else if (assem is PickDoubleLift)
            {
                protocolConfig = CreateMHEControlGeneric <PickDoubleLiftDatcomInfo, MHEControl_PickDoubleLift>(assem, info);
            }
            else
            {
                Experior.Core.Environment.Log.Write("Can't create MHE Control, object is not defined in the 'CreateMHEControl' of the controller");
                return(null);
            }
            //......other assemblies should be added here....do this with generics...correction better to do this with reflection...That is BaseController should use reflection
            //and not generics as we do not know the types at design time and it means that the above always has to be edited when adding a new MHE control object.
            protocolConfig.ParentAssembly = (Assembly)assem;
            return(protocolConfig as MHEControl);
        }
Пример #4
0
        public MHEControl CreateMHEControl(IControllable assem, ProtocolInfo info)
        {
            MHEControl protocolConfig    = null; //generic plc config object
            Dictionary <string, Type> dt = new Dictionary <string, Type>();

            if (assem is PalletCrane)
            {
                protocolConfig = CreateMHEControlGeneric <PalletCraneATCInfo, MHEControl_PalletCrane>(assem, info);
            }

            else
            {
                Experior.Core.Environment.Log.Write("Can't create MHE Control, object is not defined in the 'CreateMHEControl' of the controller");
                return(null);
            }
            //......other assemblies should be added here....do this with generics...correction better to do this with reflection...That is BaseController should use reflection
            //and not generics as we do not know the types at design time and it means that the above always has to be edited when adding a new MHE control object.
            protocolConfig.ParentAssembly = (Assembly)assem;
            controls.Add(protocolConfig);
            return(protocolConfig as MHEControl);
        }
Пример #5
0
        /// <summary>
        /// Creates the correct type of object to display to the user. This will depend on type of kit
        /// The communication point uses this to display the relevent fields to the user.
        /// Defined in BK10PLC.cs
        /// </summary>
        /// <param name="assem"></param>
        /// <returns></returns>
        public MHEControl CreateMHEControl(IControllable assem, ProtocolInfo info)
        {
            MHEControl   protocolConfig = null; //generic plc config object
            ProtocolInfo protocolInfo   = null; //generic plc config object constructor argument type

            //ProtocolInfo protocolInfo = new ProtocolInfo();  //generic plc config object constructor argument type

            if (assem is MultiShuttle)
            {
                if (info is MultiShuttleSimInfo) // create the defined protocol info
                {
                    info.assem     = assem.Name;
                    protocolConfig = new MHEControl_MultiShuttleSimulation(info as MultiShuttleSimInfo, assem as MultiShuttle);
                }
                else //create a new protocol info
                {
                    protocolInfo       = new MultiShuttleSimInfo();
                    protocolInfo.assem = assem.Name;
                    protocolConfig     = new MHEControl_MultiShuttleSimulation(protocolInfo as MultiShuttleSimInfo, assem as MultiShuttle);
                }
            }
            else if (assem is MergeDivertConveyor)
            {
                if (info is MergeDivertSimulationInfo)
                {
                    ((MergeDivertSimulationInfo)info).assem = assem.Name;
                    protocolConfig = new MHEControl_MergeDivert(info as MergeDivertSimulationInfo, assem as MergeDivertConveyor);
                }
                else //create a new protocol info
                {
                    protocolInfo       = new MergeDivertSimulationInfo();
                    protocolInfo.assem = assem.Name;
                    protocolConfig     = new MHEControl_MergeDivert(protocolInfo as MergeDivertSimulationInfo, assem as MergeDivertConveyor);
                }
            }
            else if (assem is AngledDivert)
            {
                if (info is AngledDivertSimulationInfo)
                {
                    ((AngledDivertSimulationInfo)info).assem = assem.Name;
                    protocolConfig = new MHEControl_AngledDivert(info as AngledDivertSimulationInfo, assem as AngledDivert);
                }
                else //create a new protocol info
                {
                    protocolInfo       = new AngledDivertSimulationInfo();
                    protocolInfo.assem = assem.Name;
                    protocolConfig     = new MHEControl_AngledDivert(protocolInfo as AngledDivertSimulationInfo, assem as AngledDivert);
                }
            }
            else if (assem is Transfer)
            {
                if (info is TransferSimulationInfo)
                {
                    ((TransferSimulationInfo)info).assem = assem.Name;
                    protocolConfig = new MHEControl_Transfer(info as TransferSimulationInfo, assem as Transfer);
                }
                else //create a new protocol info
                {
                    protocolInfo       = new TransferSimulationInfo();
                    protocolInfo.assem = assem.Name;
                    protocolConfig     = new MHEControl_Transfer(protocolInfo as TransferSimulationInfo, assem as Transfer);
                }
            }

            else
            {
                Experior.Core.Environment.Log.Write("Can't create PLC config object ");
                return(null);
            }
            //......other assemblies should be added here....do this with generics
            protocolConfig.ParentAssembly = (Assembly)assem;
            return(protocolConfig as MHEControl);
        }