diff --git a/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs b/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs index 1f396f9..f92dd49 100644 --- a/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs +++ b/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs @@ -155,8 +155,6 @@ namespace CapMachine.Wpf.Models.ProModelPars //RunEnable = false; //时间到了触发下载下一步步骤 - - //不为空的数据 if (NextProStepExe == null) { @@ -225,14 +223,30 @@ namespace CapMachine.Wpf.Models.ProModelPars //组装斜坡数据,按照秒为间隔发送 for (var i = 1; i <= NextProStepExe.KeepTime; i++) { - var SlopExStep = new SlopExStep() + + if (i == NextProStepExe.KeepTime) { - StepNo = i, - SV = NextProStepExe.StartSV + (int)(SecStepValue * i), - IsHasEx = false, - }; - ListSlopExStep.Add(SlopExStep); + //最后一个打点步骤数据数据,防止上面的相除得到误差,故在最后一个打点数据用NextProStepExe.EndSV,这样就确保了最后一个打点数据就是EndSV + var SlopExStep = new SlopExStep() + { + StepNo = i, + SV = NextProStepExe.EndSV, + IsHasEx = false, + }; + ListSlopExStep.Add(SlopExStep); + } + else//非最后一个数据,正常累加 + { + var SlopExStep = new SlopExStep() + { + StepNo = i, + SV = NextProStepExe.StartSV + (int)(SecStepValue * i), + IsHasEx = false, + }; + ListSlopExStep.Add(SlopExStep); + } } + //需要发送一次StartSV数据吗? //组装完成开始循环打点 @@ -373,7 +387,7 @@ namespace CapMachine.Wpf.Models.ProModelPars } else { - return RunStepType.Step; + return RunStepType.No; } } diff --git a/CapMachine.Wpf/Models/ProModelPars/RunStepType.cs b/CapMachine.Wpf/Models/ProModelPars/RunStepType.cs index 0db343a..0767337 100644 --- a/CapMachine.Wpf/Models/ProModelPars/RunStepType.cs +++ b/CapMachine.Wpf/Models/ProModelPars/RunStepType.cs @@ -58,6 +58,11 @@ namespace CapMachine.Wpf.Models.ProModelPars /// 带斜率的数据打点执行,只传送SV值 /// 比如速度:0-5000 5秒,此时执行:第一秒:1000,第二秒:2000,第三秒:3000,第四秒:4000,第五秒:5000 /// - SlopCell = 10 + SlopCell = 10, + + /// + /// 不需要发送任何数据 + /// + No = 100 } } diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs index 8e691d0..88ab62a 100644 --- a/CapMachine.Wpf/Services/MachineRtDataService.cs +++ b/CapMachine.Wpf/Services/MachineRtDataService.cs @@ -2949,7 +2949,7 @@ namespace CapMachine.Wpf.Services var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down); if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败"); } - + } break; case RunStepType.StepSV: @@ -2986,7 +2986,7 @@ namespace CapMachine.Wpf.Services var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down); if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败"); } - + } break; case RunStepType.Pid: @@ -3002,7 +3002,7 @@ namespace CapMachine.Wpf.Services var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D); if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败"); } - + } break; case RunStepType.Limit: @@ -3016,7 +3016,7 @@ namespace CapMachine.Wpf.Services var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down); if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败"); } - + } break; case RunStepType.SlopCell: @@ -3028,6 +3028,12 @@ namespace CapMachine.Wpf.Services //速度SV到压缩机 SendSpeedSvToCap(ProRunChannelData.SV); + } + break; + case RunStepType.No: + { + //没有任何动作 + } break; default: diff --git a/CapMachine.Wpf/Services/ProRuntimeService.cs b/CapMachine.Wpf/Services/ProRuntimeService.cs index fc72c30..feff63b 100644 --- a/CapMachine.Wpf/Services/ProRuntimeService.cs +++ b/CapMachine.Wpf/Services/ProRuntimeService.cs @@ -3150,7 +3150,8 @@ namespace CapMachine.Wpf.Services var Data = ListPlcLoadConfigCell.Where(a => a.Name.Contains(Name)); if (Data.Any()) { - return (int)(SV * (Data.FirstOrDefault()!.Precision)); + return (int)Math.Round(SV * (Data.FirstOrDefault()!.Precision)); + //return (int)(SV * (Data.FirstOrDefault()!.Precision)); } else {