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(); }
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; } } }
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); }
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()); }
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(); } }
public Result DoPurgeAndPrime(Valve valve) { if (valve is JtValve) { JtValve jtValve = (JtValve)valve; return(this.JtValveLogic(jtValve)); } else { return(this.SvAndGearValveLogic(valve)); } }
/// <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); }
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); } }
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(); } }
public JtDualValve(Card card, Valve valve1, Valve valve2) : base(card, valve1, valve2) { this.jtValve1 = (JtValve)valve1; this.jtValve2 = (JtValve)valve2; }
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()); }
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()); }