Example #1
0
        public static bool GetVioSts(this IVioEx vioex, bool status = true)
        {
            int sts;

            vioex.DriverCard.GetDo(vioex.Port, out sts);
            return((sts == 1) == status);
        }
Example #2
0
        public TransTask(int id, string name, Station station) : base(id, name, station)
        {
            DualStartButton = new DualStartButton()
            {
                DiStart1 = station.Machine.Find <IDiEx>("DiStart1"),
                DiStart2 = station.Machine.Find <IDiEx>("DiStart2"),
            };

            MultiSensorCheck = new MultiDiSensorCheck()
            {
                DISensors = new List <IDiEx>()
                {
                    station.Machine.Find <IDiEx>("DiSensor1"),
                    station.Machine.Find <IDiEx>("DiSensor2"),
                }
            };

            MultiClampCylinders = new MultiClampCylinders()
            {
                Clamps = new List <ICylinderEx>()
                {
                    station.Machine.Find <ICylinderEx>("FBCY"),
                    station.Machine.Find <ICylinderEx>("LRCY"),
                }
            };


            Platform = station.Machine.Find <PlatformEx>("TransPlatform");

            VioMeasureStart  = station.Machine.Find <IVioEx>("VioMeasureStart");
            VioMeasureFinish = station.Machine.Find <IVioEx>("VioMeasureFinish");
        }
Example #3
0
        public static bool SetVio(this IVioEx vioex, StationTask task, bool status = true)
        {
            task?.AbortIfCancel(nameof(SetVio));
            task?.JoinIfPause();

            vioex.DriverCard.SetDo(vioex.Port, status ? 1 : 0);
            task?.Log($"{vioex.Name} SetVio {vioex.Port} {status} success", LogLevel.Debug);
            return(true);
        }
Example #4
0
        public static bool WaitVioAndClear(this IVioEx vioex, StationTask task, bool status = true,
                                           bool clearStatus = false, int timeout = -1)
        {
            if (!WaitVio(vioex, task, status, timeout))
            {
                return(false);
            }

            SetVio(vioex, task, clearStatus);
            return(true);
        }
Example #5
0
        public TransTask(int id, string name, Station station) : base(id, name, station)
        {
            DualStartButton = new DualStartButton
            {
                DiStart1 = station.Machine.Find <IDiEx>("DiStart1"),
                DiStart2 = station.Machine.Find <IDiEx>("DiStart2")
            };

            FinSensorCheck = new MultiDiSensorCheck
            {
                DISensors = new List <IDiEx>()
                {
                    station.Machine.Find <IDiEx>("DiSensor2"),
                    station.Machine.Find <IDiEx>("DiSensor3"),
                    station.Machine.Find <IDiEx>("DiSensor1"),
                }
            };


            CarrierLoader = new CarrierLoader()
            {
                Task    = this,
                CyLeft  = station.Machine.Find <ICylinderEx>("LCY"),
                CyBack  = station.Machine.Find <ICylinderEx>("BCY"),
                CyFront = station.Machine.Find <ICylinderEx>("FCY"),
                CyRight = station.Machine.Find <ICylinderEx>("RCY"),


                Vaccum1 = station.Machine.Find <IDoEx>("DOVaccum1"),
                Vaccum2 = station.Machine.Find <IDoEx>("DOVaccum2"),

                VaccumSensor1 = station.Machine.Find <IDiEx>("DiVaccum1"),
                VaccumSensor2 = station.Machine.Find <IDiEx>("DiVaccum2"),

                CarrierSensor1 = station.Machine.Find <IDiEx>("DiSensor2"),
                CarrierSensor2 = station.Machine.Find <IDiEx>("DiSensor3"),
            };


            VioMeasureStart  = station.Machine.Find <IVioEx>("VioMeasureStart");
            VioMeasureFinish = station.Machine.Find <IVioEx>("VioMeasureFinish");


            Platform = station.Machine.Find <PlatformEx>("TransPlatform");
        }
Example #6
0
        public MeasureTask(int id, string name, Station station) : base(id, name, station)
        {
            VioMeasureStart  = station.Machine.Find <IVioEx>("VioMeasureStart");
            VioMeasureFinish = station.Machine.Find <IVioEx>("VioMeasureFinish");


            Camera = new ThermoCameraA();


            Platform = station.Machine.Find <PlatformEx>("MeasurePlatform");

            var toFilePos = new Func <double[], double[]>(d => (new PosXYZ(d) - new PosXYZ(Platform["Origin"]?.Data())).Data());
            var toMovePos = new Func <double[], double[]>(d => (new PosXYZ(d) + new PosXYZ(Platform["Origin"]?.Data())).Data());

            Platform.PosConvertFuncs.Clear();
            Platform.PosConvertFuncs.Add("FILE", toFilePos);
            Platform.PosConvertFuncs.Add("MOVE", toMovePos);
        }
Example #7
0
        public static bool WaitVio(this IVioEx vioex, StationTask task, bool status = true, int timeout = -1)
        {
            task?.AbortIfCancel(nameof(WaitVio));
            task?.JoinIfPause();

            timeout = timeout < 0 ? int.MaxValue : timeout;

            var err = $"{vioex.Name} WaitVio {vioex.Port} {status}";
            var t   = 0;

            while (t++ <= timeout)
            {
                var sts = 0;
                vioex.DriverCard.GetDo(vioex.Port, out sts);
                if (sts == 1 == status)
                {
                    task?.Log($"{err} success", LogLevel.Debug);
                    return(true);
                }

                if (task != null)
                {
                    task.JoinIfPause();
                    task.AbortIfCancel(nameof(WaitVio));
                }
                else
                {
                    Application.DoEvents();
                }

                Thread.Sleep(1);
            }

            task?.Log($"{err} timeout", LogLevel.Error);
            return(false);
        }