步骤下发更改
This commit is contained in:
@@ -56,6 +56,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
|
||||
/// <summary>
|
||||
/// 程序步骤集合
|
||||
/// 在ProRuntimeService中已经初始实例化
|
||||
/// </summary>
|
||||
public List<ProStepExe> ListProStepExe { get; set; }
|
||||
|
||||
@@ -118,6 +119,12 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
public DateTime StepEndDt { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 循环扫描每个参数的结束时间是否到达的线程是一个线程循环执行,逐个执行,理论上每个都不同步,有一点点时间差,就是执行步骤会延后一点点
|
||||
/// 我们的打点斜坡数据是自己的定时器执行的,每个参数同步执行,而且是有一点点提前执行的,因为先打点执行循环后再计算结束时间
|
||||
/// 以上的就会造成,当新步骤到来执行时,其实之前的步骤的斜率打点的步骤可能已经打点完毕了,那么是乐见这样的状态,防止了两个的时间冲突问题。
|
||||
/// </summary>
|
||||
|
||||
private DateTime _CurrentDateTime;
|
||||
/// <summary>
|
||||
/// 当前时间
|
||||
@@ -142,7 +149,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
if (NextProStepExe == null)
|
||||
{
|
||||
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
||||
$"【Msg】:没有下一步,当前仪表参数全部执行完毕 ");
|
||||
$"【Msg】:当前仪表参数全部执行完毕 ");
|
||||
|
||||
//为空时不执行后续的数据
|
||||
RunEnable = false;
|
||||
@@ -152,7 +159,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
||||
$"【程序Seg】{CurProStepExe.ProSegName} " +
|
||||
$"【程序步骤】{CurProStepExe.MeterStep} " +
|
||||
$"【Msg】:时间到,开始执行下一步步骤 ");
|
||||
$"【Msg】:新步骤开始执行-----------> ");
|
||||
|
||||
////////首先判断参数是否相同///////////
|
||||
|
||||
@@ -181,8 +188,10 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
//存在坡度数据
|
||||
var SecStepDur = NextProStepExe.EndSV - NextProStepExe.StartSV;
|
||||
var SecStepValue = SecStepDur * 1.0 / NextProStepExe.KeepTime;
|
||||
//先清除数据
|
||||
ListSlopExStep.Clear();
|
||||
|
||||
//如果ListSlopExStep上还在执行打点任务的话,则如何处理
|
||||
//先清除数据,并暂停
|
||||
StopSlopExStep();
|
||||
//组装斜坡数据,按照秒为间隔发送
|
||||
for (var i = 1; i <= NextProStepExe.KeepTime; i++)
|
||||
{
|
||||
@@ -212,6 +221,12 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
CurLoadPID = PidResult == true ? new PID() { P = (short)NextProStepExe.CurConfigPIDDto.P, I = (short)NextProStepExe.CurConfigPIDDto.I, D = (short)NextProStepExe.CurConfigPIDDto.D } : new PID(),
|
||||
RunStepType = GetRunStepType(PidResult, LimitResult, true),
|
||||
});
|
||||
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
||||
$"【程序Seg】{CurProStepExe.ProSegName} " +
|
||||
$"【程序步骤】{CurProStepExe.MeterStep} " +
|
||||
$"【SV】{NextProStepExe.EndSV} " +
|
||||
$"【保持时间】{NextProStepExe.KeepTime} 秒"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -257,7 +272,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
|
||||
//设置下一步步骤运行时间
|
||||
RunEnable = true;
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -313,10 +328,21 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
/// </summary>
|
||||
private void StartSlopExStep()
|
||||
{
|
||||
//用SlopExEnable控制,存在一个可能,就是设置后,立刻执行,那么第一个步骤(第一秒)时间会被压缩,后面就正常了。最大是快一秒了,第一秒提前打点,这是可以接受的。
|
||||
//用SlopExEnable控制,存在一个可能,就是设置后,立刻执行,那么第一个步骤(第一秒)时间会被压缩,后面就正常了。最大是快一秒了,第一秒提前打点,这是可以接受的,
|
||||
//结合步骤的扫描执行,形成时间差,就是新步骤到来时,斜率打点已经执行完毕,防止冲突,乐见这个状态
|
||||
SlopExEnable = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止执行打点任务的执行
|
||||
/// </summary>
|
||||
private void StopSlopExStep()
|
||||
{
|
||||
SlopExEnable = false;
|
||||
//清空数据
|
||||
ListSlopExStep.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 斜率执行步骤集合
|
||||
/// 打点集合
|
||||
@@ -363,15 +389,22 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
$"【斜坡打点值SV】{NoExData.First().SV} " +
|
||||
$"【Msg】:发送斜坡打点 ");
|
||||
|
||||
//执行一个循环打点后判断是否整个打点循环执行完毕
|
||||
if (!ListSlopExStep.Where(a => a.IsHasEx == false).Any())
|
||||
{
|
||||
//执行完毕就标记状态
|
||||
SlopExEnable = false;
|
||||
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
||||
$"【程序Seg】{CurProStepExe.ProSegName} " +
|
||||
$"【程序步骤】{CurProStepExe.MeterStep} " +
|
||||
$"【Msg】:斜坡打点执行完毕 ");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//执行完毕了,没有要执行的数据效率
|
||||
SlopExEnable = false;
|
||||
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
||||
$"【程序Seg】{CurProStepExe.ProSegName} " +
|
||||
$"【程序步骤】{CurProStepExe.MeterStep} " +
|
||||
$"【Msg】:斜坡打点执行完毕 ");
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -385,6 +418,23 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 周期斜坡打点暂停执行
|
||||
/// </summary>
|
||||
public void PauseSlopExCyclePause()
|
||||
{
|
||||
SlopExEnable = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 周期斜坡打点 继续运行
|
||||
/// </summary>
|
||||
public void ContinueSlopExCyclePause()
|
||||
{
|
||||
SlopExEnable = true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 周期定时器
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user