コード例 #1
0
        private void BtnSave_Click(object sender, EventArgs e)
        {
            string tag = this.GetType().Name;

            if (this.valve.ValveSeries == ValveSeries.喷射阀)
            {
                JtValve jtValve = (JtValve)this.valve;
                ValvePrmMgr.Instance.FindBy(this.valve.ValveType).JtValvePrm = jtValve.Prm;
                CompareObj.CompareProperty(jtValve.Prm, this.jtValvePrmBackUp, null, tag);
            }
            else if (this.valve.ValveSeries == ValveSeries.螺杆阀)
            {
                SvValve svValve = (SvValve)this.valve;
                ValvePrmMgr.Instance.FindBy(this.valve.ValveType).SvValvePrm = svValve.Prm;
                CompareObj.CompareProperty(svValve.Prm, this.svValvePrmBackUp, null, tag);
            }
            else if (this.valve.ValveSeries == ValveSeries.齿轮泵阀)
            {
                GearValve gearValve = (GearValve)this.valve;
                ValvePrmMgr.Instance.FindBy(this.valve.ValveType).GearValvePrm = gearValve.Prm;
                CompareObj.CompareProperty(gearValve.Prm, this.gearValvePrmBackUp, null, tag);
            }

            Machine.Instance.SaveValveSettings();
            this.Close();
        }
コード例 #2
0
        private void BtnReset_Click(object sender, EventArgs e)
        {
            //if (MessageBox.Show("Reset Valve Setting?", "Valve Setting", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
            if (MessageBox.Show("将阀参数设置为默认值?", "阀设置", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
            {
                //设置为默认
                Machine.Instance.ResetValveSettings();

                if (this.valve.ValveSeries == ValveSeries.喷射阀)
                {
                    JtValve jtValve = (JtValve)valve;
                    this.propertyGrid1.SelectedObject = jtValve.Prm;
                }
                else if (this.valve.ValveSeries == ValveSeries.螺杆阀)
                {
                    SvValve svValve = (SvValve)valve;
                    this.propertyGrid1.SelectedObject = svValve.Prm;
                }
                else if (this.valve.ValveSeries == ValveSeries.齿轮泵阀)
                {
                    GearValve gearValve = (GearValve)valve;
                    this.propertyGrid1.SelectedObject = gearValve.Prm;
                }
            }
        }
コード例 #3
0
        public ValveSettingForm Setup(Valve valve)
        {
            this.valve = valve;

            if (this.valve.ValveSeries == ValveSeries.喷射阀)
            {
                JtValve jtValve = (JtValve)valve;
                LngPropertyProxyTypeDescriptor proxyObj = new LngPropertyProxyTypeDescriptor(jtValve.Prm, this.GetType().Name);
                this.propertyGrid1.SelectedObject = proxyObj;
                this.jtValvePrmBackUp             = (JtValvePrm)jtValve.Prm.Clone();
            }
            else if (this.valve.ValveSeries == ValveSeries.螺杆阀)
            {
                SvValve svValve = (SvValve)valve;
                LngPropertyProxyTypeDescriptor proxyObj = new LngPropertyProxyTypeDescriptor(svValve.Prm, this.GetType().Name);
                this.propertyGrid1.SelectedObject = proxyObj;
                this.svValvePrmBackUp             = (SvValvePrm)svValve.Prm.Clone();
            }
            else if (this.valve.ValveSeries == ValveSeries.齿轮泵阀)
            {
                GearValve gearValve = (GearValve)valve;
                LngPropertyProxyTypeDescriptor proxyObj = new LngPropertyProxyTypeDescriptor(gearValve.Prm, this.GetType().Name);
                this.propertyGrid1.SelectedObject = proxyObj;
                this.gearValvePrmBackUp           = (GearValvePrm)gearValve.Prm.Clone();
            }

            return(this);
        }
コード例 #4
0
        private Result JtValveDoPrime(JtValve valve)
        {
            if (Machine.Instance.Robot.IsSimulation)
            {
                return(Result.OK);
            }
            Result result = Result.OK;

            // 手动吐液需要重置胶阀状态
            if (Machine.Instance.Robot.RobotIsXYZU || Machine.Instance.Robot.RobotIsXYZUV)
            {
                result = valve.ResetValveTilt(Machine.Instance.Robot.DefaultPrm.VelU, Machine.Instance.Robot.AxisU.Prm.Acc);
                if (!result.IsOk)
                {
                    return(result);
                }
            }
            Logger.DEFAULT.Info(LogCategory.MANUAL | LogCategory.RUNNING, this.GetType().Name, "do prime start");
            //排胶
            result = Machine.Instance.Robot.MoveToLocAndReply(Machine.Instance.Robot.SystemLocations.PrimeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            valve.SprayCycleAndWait((short)valve.Prm.PrimeDotsCount);
            Logger.DEFAULT.Info(LogCategory.MANUAL | LogCategory.RUNNING, this.GetType().Name, "do prime end");
            return(Machine.Instance.Robot.MoveSafeZAndReply());
        }
コード例 #5
0
 private void btnValve2Spray_Click(object sender, EventArgs e)
 {
     if (Machine.Instance.Valve1.ValveSeries == Drive.ValveSystem.ValveSeries.喷射阀)
     {
         JtValve valve2 = (JtValve)Machine.Instance.Valve2;
         if (this.nudValve2.Value == 0)
         {
             Machine.Instance.Valve2.Spraying();
             Valve2isSpraying = true;
         }
         else
         {
             Machine.Instance.Valve2.SprayCycle((short)this.nudValve2.Value);
             if (Machine.Instance.Valve2.weightPrm.SingleDotWeight > 0)
             {
                 GlueManagerMgr.Instance.UpdateGlueRemainWeight(1, Machine.Instance.Valve2.weightPrm.SingleDotWeight * (int)this.nudValve2.Value);
             }
             Valve2isSpraying = true;
             int tempTime = Machine.Instance.Valve2.Prm.JtValvePrm.OnTime + Machine.Instance.Valve2.Prm.JtValvePrm.OffTime;
             if (tempTime > 0)
             {
                 timer2.Interval = (short)this.nudValve1.Value * (tempTime) / 1000;
                 timer2.Start();
             }
         }
     }
     else if (Machine.Instance.Valve2.ValveSeries == ValveSeries.螺杆阀 ||
              Machine.Instance.Valve2.ValveSeries == ValveSeries.齿轮泵阀)
     {
         Machine.Instance.Valve2.Spraying();
     }
 }
コード例 #6
0
 public Result DoPurgeAndPrime(Valve valve)
 {
     if (valve is JtValve)
     {
         JtValve jtValve = (JtValve)valve;
         return(this.JtValveLogic(jtValve));
     }
     else
     {
         return(this.SvAndGearValveLogic(valve));
     }
 }
コード例 #7
0
        /// <summary>
        /// 手动打线,供四方位角度校准时使用
        /// </summary>
        /// <returns></returns>
        public Result ManualDispense(PointD start, PointD end, double posZ, LineParam lineParam, bool isWeight, double weight)
        {
            Result result = Result.OK;

            PointD accStart = new PointD(), decelEnd = new PointD();
            double speed = 0, intervalSec = 0;

            PointD[] points = null;

            //胶量模式
            if (isWeight)
            {
                this.GetManualWtLineParam(start, end, lineParam, weight, out accStart, out decelEnd, out speed, out points, out intervalSec);
            }
            //速度模式
            else
            {
                this.GetManualNormalLineParam(start, end, lineParam, out accStart, out decelEnd, out speed, out points, out intervalSec);
            }

            //执行打线
            // 移动到加速区间起始位置
            Log.Dprint("move to position XY : " + accStart);
            result = Machine.Instance.Robot.MovePosXYAndReply(accStart,
                                                              FluidProgram.Current.MotionSettings.VelXY, FluidProgram.Current.MotionSettings.AccXY);
            if (!result.IsOk)
            {
                return(result);
            }

            // 到指定高度
            result = Machine.Instance.Robot.MovePosZAndReply(posZ, lineParam.DownSpeed, lineParam.DownAccel);
            if (!result.IsOk)
            {
                return(result);
            }

            //开始走直线出胶
            if (Machine.Instance.Valve1.ValveSeries == ValveSeries.喷射阀)
            {
                JtValve jtValve = Machine.Instance.Valve1 as JtValve;
                jtValve.FluidManualLine(accStart, start, end, decelEnd, speed, points, intervalSec, FluidProgram.Current.MotionSettings.WeightAcc);
            }

            return(result);
        }
コード例 #8
0
 public Result DoPrime(Valve valve)
 {
     if (valve is JtValve)
     {
         JtValve jtValve = (JtValve)valve;
         return(this.JtValveDoPrime(jtValve));
     }
     else if (valve is SvValve)
     {
         SvValve svValve = (SvValve)valve;
         return(this.SvValveDoPrime(svValve));
     }
     else if (valve is GearValve)
     {
         GearValve gearValve = (GearValve)valve;
         return(this.GearValveDpPrime(gearValve));
     }
     else
     {
         return(Result.FAILED);
     }
 }
コード例 #9
0
 private void btnValve2Spray_Click(object sender, EventArgs e)
 {
     if (Machine.Instance.Valve1.ValveSeries == Drive.ValveSystem.ValveSeries.喷射阀)
     {
         JtValve valve2 = (JtValve)Machine.Instance.Valve2;
         if (this.nudValve2.Value == 0)
         {
             Machine.Instance.Valve2.Spraying();
             Valve2isSpraying = true;
         }
         else
         {
             Machine.Instance.Valve2.SprayCycle((short)this.nudValve2.Value);
             Valve2isSpraying = true;
             timer2.Interval  = (short)this.nudValve2.Value * (Machine.Instance.Valve2.Prm.JtValvePrm.OnTime + Machine.Instance.Valve2.Prm.JtValvePrm.OffTime) / 1000;
         }
     }
     else if (Machine.Instance.Valve2.ValveSeries == ValveSeries.螺杆阀 ||
              Machine.Instance.Valve2.ValveSeries == ValveSeries.齿轮泵阀)
     {
         Machine.Instance.Valve2.Spraying();
     }
 }
コード例 #10
0
 public JtDualValve(Card card, Valve valve1, Valve valve2) : base(card, valve1, valve2)
 {
     this.jtValve1 = (JtValve)valve1;
     this.jtValve2 = (JtValve)valve2;
 }
コード例 #11
0
        private Result JtValveDoPurge(JtValve valve)
        {
            if (Machine.Instance.Robot.IsSimulation)
            {
                return(Result.OK);
            }
            Result result = Result.OK;

            // 手动清洗需要重置胶阀状态
            if (Machine.Instance.Robot.RobotIsXYZU || Machine.Instance.Robot.RobotIsXYZUV)
            {
                result = valve.ResetValveTilt(Machine.Instance.Robot.DefaultPrm.VelU, Machine.Instance.Robot.AxisU.Prm.Acc);
                if (!result.IsOk)
                {
                    return(result);
                }
            }
            Logger.DEFAULT.Info(LogCategory.MANUAL | LogCategory.RUNNING, this.GetType().Name, "do purge start");
            result = Result.OK;
            PointD purgeCentor = Machine.Instance.Robot.CalibPrm.PurgeLoc.ToNeedle(valve.ValveType);
            double r           = valve.Prm.PrePurgeRadius;
            double rHalf       = r * 0.5;
            double rHalfSqrt3  = r * Math.Sqrt(3) * 0.5;

            PointD[] pts = new PointD[]
            {
                new PointD(purgeCentor.X + r, purgeCentor.Y),
                new PointD(purgeCentor.X + rHalf, purgeCentor.Y + rHalfSqrt3),
                new PointD(purgeCentor.X - rHalf, purgeCentor.Y + rHalfSqrt3),
                new PointD(purgeCentor.X - r, purgeCentor.Y),
                new PointD(purgeCentor.X - rHalf, purgeCentor.Y - rHalfSqrt3),
                new PointD(purgeCentor.X + rHalf, purgeCentor.Y - rHalfSqrt3)
            };

            result = Machine.Instance.Robot.MoveToLocAndReply(Machine.Instance.Robot.SystemLocations.PurgeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            if (valve.Prm.EnablePrePurgeVaccum)
            {
                DoType.真空清洗.Set(true);
            }
            for (int i = 0; i < valve.Prm.PrePurgeCount; i++)
            {
                foreach (PointD pt in pts)
                {
                    Machine.Instance.Robot.MovePosXYAndReply(pt, valve.Prm.PrePurgerSpeed);
                }
            }
            result = Machine.Instance.Robot.MovePosXYAndReply(Machine.Instance.Robot.CalibPrm.PurgeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            if (valve.Prm.EnablePrePurgeVaccum)
            {
                DoType.真空清洗.Set(false);
            }
            Logger.DEFAULT.Info(LogCategory.MANUAL | LogCategory.RUNNING, this.GetType().Name, "do purge end");
            return(Machine.Instance.Robot.MoveSafeZAndReply());
        }
コード例 #12
0
        private Result JtValveLogic(JtValve valve)
        {
            if (Machine.Instance.Robot.IsSimulation)
            {
                return(Result.OK);
            }

            Result result = Result.OK;

            // 需要重置胶阀状态
            if (Machine.Instance.Robot.RobotIsXYZU || Machine.Instance.Robot.RobotIsXYZUV)
            {
                result = valve.ResetValveTilt(Machine.Instance.Robot.DefaultPrm.VelU, Machine.Instance.Robot.AxisU.Prm.Acc);
                if (!result.IsOk)
                {
                    return(result);
                }
            }

            //排胶
            result = Machine.Instance.Robot.MoveToLocAndReply(Machine.Instance.Robot.SystemLocations.PrimeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            valve.SprayCycleAndWait((short)valve.Prm.PrimeDotsCount);

            //清洗
            PointD purgeCenter = Machine.Instance.Robot.CalibPrm.PurgeLoc.ToNeedle(valve.ValveType);
            double r           = valve.Prm.PrePurgeRadius;
            double rHalf       = r * 0.5;
            double rHalfSqrt3  = r * Math.Sqrt(3) * 0.5;

            PointD[] pts = new PointD[6]
            {
                new PointD(purgeCenter.X + r, purgeCenter.Y),
                new PointD(purgeCenter.X + rHalf, purgeCenter.Y + rHalfSqrt3),
                new PointD(purgeCenter.X - rHalf, purgeCenter.Y + rHalfSqrt3),
                new PointD(purgeCenter.X - r, purgeCenter.Y),
                new PointD(purgeCenter.X - rHalf, purgeCenter.Y - rHalfSqrt3),
                new PointD(purgeCenter.X + rHalf, purgeCenter.Y - rHalfSqrt3)
            };
            result = Machine.Instance.Robot.MoveToLocAndReply(Machine.Instance.Robot.SystemLocations.PurgeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            if (valve.Prm.EnablePrePurgeVaccum)
            {
                DoType.真空清洗.Set(true);
            }
            for (int i = 0; i < valve.Prm.PrePurgeCount; i++)
            {
                foreach (var pt in pts)
                {
                    result = Machine.Instance.Robot.MovePosXYAndReply(pt, valve.Prm.PrePurgerSpeed);
                    if (result == Result.FAILED)
                    {
                        return(result);
                    }
                }
            }
            result = Machine.Instance.Robot.MovePosXYAndReply(Machine.Instance.Robot.CalibPrm.PurgeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            if (valve.Prm.EnablePrePurgeVaccum)
            {
                DoType.真空清洗.Set(false);
            }

            //排胶
            result = Machine.Instance.Robot.MoveToLocAndReply(Machine.Instance.Robot.SystemLocations.PrimeLoc.ToNeedle(valve.ValveType));
            if (result == Result.FAILED)
            {
                return(result);
            }
            valve.SprayCycleAndWait((short)valve.Prm.PrimeDotsCount);

            //擦纸带
            if (valve.Prm.ScrapeEnable)
            {
                result = Machine.Instance.Robot.MoveToLocAndReply(Machine.Instance.Robot.SystemLocations.ScrapeLoc.ToNeedle(valve.ValveType));
                if (result == Result.FAILED)
                {
                    return(result);
                }
                DoType.擦纸带.Set(true);
                //保持一定时间
                Thread.Sleep(TimeSpan.FromSeconds(valve.Prm.ScrapeTime));
                DoType.擦纸带.Set(false);
            }

            return(Machine.Instance.Robot.MoveSafeZAndReply());
        }