补全其他参数的下载参数
运行 停止 暂停的防呆操作
This commit is contained in:
@@ -20,7 +20,32 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 地址
|
/// 地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Address { get; set; }
|
public string? SvAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Pid_P
|
||||||
|
/// </summary>
|
||||||
|
public string? Pid_PAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Pid_I
|
||||||
|
/// </summary>
|
||||||
|
public string? Pid_IAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Pid_D
|
||||||
|
/// </summary>
|
||||||
|
public string? Pid_DAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Limit_Up
|
||||||
|
/// </summary>
|
||||||
|
public string? Limit_UpAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Limit_Down
|
||||||
|
/// </summary>
|
||||||
|
public string? Limit_DownAddress { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 精度 1,10,100,1000
|
/// 精度 1,10,100,1000
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using CapMachine.Wpf.ChannelModel;
|
using AngleSharp.Dom.Events;
|
||||||
|
using CapMachine.Wpf.ChannelModel;
|
||||||
using CapMachine.Wpf.Services;
|
using CapMachine.Wpf.Services;
|
||||||
using ImTools;
|
using ImTools;
|
||||||
using Masuit.Tools;
|
using Masuit.Tools;
|
||||||
@@ -34,8 +35,13 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
CycleTimer.AutoReset = true;
|
CycleTimer.AutoReset = true;
|
||||||
CycleTimer.Enabled = true;
|
CycleTimer.Enabled = true;
|
||||||
CycleTimer.Start();
|
CycleTimer.Start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否是速度仪表参数
|
||||||
|
/// </summary>
|
||||||
|
public bool IsSpeed { get; set; }=false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 程序执行管道
|
/// 程序执行管道
|
||||||
@@ -96,7 +102,11 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
|
|
||||||
#region 仪表步骤执行时间信息
|
#region 仪表步骤执行时间信息
|
||||||
|
|
||||||
public EventHandler<string> RunTimeCallSglEvent;
|
/// <summary>
|
||||||
|
/// 速度运行结束事件
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<string> SpeedRunEndEvent;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否启用
|
/// 是否启用
|
||||||
@@ -145,12 +155,17 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
//RunEnable = false;
|
//RunEnable = false;
|
||||||
//时间到了触发下载下一步步骤
|
//时间到了触发下载下一步步骤
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//不为空的数据
|
//不为空的数据
|
||||||
if (NextProStepExe == null)
|
if (NextProStepExe == null)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
|
||||||
$"【Msg】:当前仪表参数全部执行完毕 ");
|
$"【Msg】:当前仪表参数全部执行完毕 ");
|
||||||
|
|
||||||
|
//速度执行结束发布事件
|
||||||
|
if (IsSpeed) SpeedRunEndEvent.Invoke(this, "OK");
|
||||||
|
|
||||||
//为空时不执行后续的数据
|
//为空时不执行后续的数据
|
||||||
RunEnable = false;
|
RunEnable = false;
|
||||||
return;
|
return;
|
||||||
@@ -185,6 +200,18 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
////////发送步骤信息///////////
|
////////发送步骤信息///////////
|
||||||
if (NextProStepExe.ExistSlop)
|
if (NextProStepExe.ExistSlop)
|
||||||
{
|
{
|
||||||
|
//存在斜坡数据,SV是通过集合陆续打点写入,但是PID和Limit需要判断是否要写入,只要写一次即可
|
||||||
|
ProRunChannel.Writer.WriteAsync(new ProRunChannelData()
|
||||||
|
{
|
||||||
|
MeterName = MeterName,
|
||||||
|
SV = NextProStepExe.EndSV,
|
||||||
|
ProSegName = NextProStepExe.ProSegName,
|
||||||
|
MeterStep = NextProStepExe.MeterStep,
|
||||||
|
CurLoadLimit = LimitResult == true ? new Limit() { Up = (short)NextProStepExe.CurConfigLimitDto.Up, Down = (short)NextProStepExe.CurConfigLimitDto.Down } : new Limit(),
|
||||||
|
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, false),
|
||||||
|
});
|
||||||
|
|
||||||
//存在坡度数据
|
//存在坡度数据
|
||||||
var SecStepDur = NextProStepExe.EndSV - NextProStepExe.StartSV;
|
var SecStepDur = NextProStepExe.EndSV - NextProStepExe.StartSV;
|
||||||
var SecStepValue = SecStepDur * 1.0 / NextProStepExe.KeepTime;
|
var SecStepValue = SecStepDur * 1.0 / NextProStepExe.KeepTime;
|
||||||
@@ -256,7 +283,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
if (ListProStepExe.Where(x => x.MeterStep == CurProStepExe.MeterStep + 1).Any())
|
if (ListProStepExe.Where(x => x.MeterStep == CurProStepExe.MeterStep + 1).Any())
|
||||||
{
|
{
|
||||||
//存在下一步数据
|
//存在下一步数据
|
||||||
NextProStepExe = ListProStepExe.FirstOrDefault(x => x.MeterStep == CurProStepExe.MeterStep + 1);
|
NextProStepExe = ListProStepExe.FirstOrDefault(x => x.MeterStep == CurProStepExe.MeterStep + 1)!;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -312,6 +339,18 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
{
|
{
|
||||||
return RunStepType.StepSV;
|
return RunStepType.StepSV;
|
||||||
}
|
}
|
||||||
|
else if (pid && limit)
|
||||||
|
{
|
||||||
|
return RunStepType.LimitPid;
|
||||||
|
}
|
||||||
|
else if (limit)
|
||||||
|
{
|
||||||
|
return RunStepType.Limit;
|
||||||
|
}
|
||||||
|
else if (pid)
|
||||||
|
{
|
||||||
|
return RunStepType.Pid;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return RunStepType.Step;
|
return RunStepType.Step;
|
||||||
|
|||||||
@@ -35,6 +35,24 @@ namespace CapMachine.Wpf.Models.ProModelPars
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
StepSV = 4,
|
StepSV = 4,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 正常的步骤信息-Limit 下载数据
|
||||||
|
/// 就是:包括:SV PID和SLIMIT的数据,当然SV PID和SLIMIT跟上次是一样的话,则不需要下载
|
||||||
|
/// </summary>
|
||||||
|
LimitPid = 5,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 正常的步骤信息-Limit 下载数据
|
||||||
|
/// 就是:包括:SV PID和SLIMIT的数据,当然SV PID和SLIMIT跟上次是一样的话,则不需要下载
|
||||||
|
/// </summary>
|
||||||
|
Limit = 6,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 正常的步骤信息-PID 下载数据
|
||||||
|
/// 就是:包括:SV PID和SLIMIT的数据,当然SV PID和SLIMIT跟上次是一样的话,则不需要下载
|
||||||
|
/// </summary>
|
||||||
|
Pid = 7,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 斜率单元
|
/// 斜率单元
|
||||||
/// 带斜率的数据打点执行,只传送SV值
|
/// 带斜率的数据打点执行,只传送SV值
|
||||||
|
|||||||
144
CapMachine.Wpf/Models/ProRunTimeCalc.cs
Normal file
144
CapMachine.Wpf/Models/ProRunTimeCalc.cs
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
using Prism.Mvvm;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Timers;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
|
||||||
|
namespace CapMachine.Wpf.Models
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 程序运行时间统计
|
||||||
|
/// </summary>
|
||||||
|
public class ProRunTimeCalc : BindableBase
|
||||||
|
{
|
||||||
|
public ProRunTimeCalc()
|
||||||
|
{
|
||||||
|
//秒触发一次
|
||||||
|
CycleTimer = new System.Timers.Timer(1000);
|
||||||
|
CycleTimer.Elapsed += ProRunCycleAction;
|
||||||
|
CycleTimer.AutoReset = true;
|
||||||
|
CycleTimer.Enabled = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 程序运行时间周期统计
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
|
private void ProRunCycleAction(object? sender, ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
CalcTime();
|
||||||
|
}));
|
||||||
|
|
||||||
|
//CycleTimer.Stop();
|
||||||
|
|
||||||
|
//CycleTimer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 统计时间
|
||||||
|
/// </summary>
|
||||||
|
private void CalcTime()
|
||||||
|
{
|
||||||
|
ProEndDt = DateTime.Now;
|
||||||
|
|
||||||
|
ProRunTimeStr = ConvertSecToDHMS((int)((ProEndDt - ProStartDt).TotalSeconds - PauseTotalSecTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
private string ConvertSecToDHMS(int totalSeconds)
|
||||||
|
{
|
||||||
|
// 驗證非負(可根據需求調整)
|
||||||
|
if (totalSeconds < 0)
|
||||||
|
return "00:00:00:00";
|
||||||
|
|
||||||
|
int days = totalSeconds / 86400; // 1天 = 86400秒
|
||||||
|
int remainingSeconds = totalSeconds % 86400;
|
||||||
|
|
||||||
|
int hours = remainingSeconds / 3600; // 1小時 = 3600秒
|
||||||
|
remainingSeconds %= 3600;
|
||||||
|
|
||||||
|
int minutes = remainingSeconds / 60; // 1分鐘 = 60秒
|
||||||
|
int seconds = remainingSeconds % 60;
|
||||||
|
|
||||||
|
// 格式化輸出,確保時、分、秒為兩位數
|
||||||
|
return $"{days}天:{hours:D2}时:{minutes:D2}分:{seconds:D2}秒";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 开始计时
|
||||||
|
/// </summary>
|
||||||
|
public void StartProRunTime()
|
||||||
|
{
|
||||||
|
ProStartDt = DateTime.Now;
|
||||||
|
CycleTimer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 暂停计时
|
||||||
|
/// </summary>
|
||||||
|
public void PauseProRunTime()
|
||||||
|
{
|
||||||
|
CycleTimer.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 继续计时
|
||||||
|
/// </summary>
|
||||||
|
public void ContinueProRunTime()
|
||||||
|
{
|
||||||
|
CycleTimer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 结束计时
|
||||||
|
/// </summary>
|
||||||
|
public void EndProRunTime()
|
||||||
|
{
|
||||||
|
CycleTimer.Stop();
|
||||||
|
CalcTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 周期定时器
|
||||||
|
/// </summary>
|
||||||
|
private System.Timers.Timer CycleTimer { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 程序开始的时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ProStartDt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 程序结束的时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ProEndDt { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
private string? _ProRunTimeStr;
|
||||||
|
/// <summary>
|
||||||
|
/// 程序运行时间字符串
|
||||||
|
/// </summary>
|
||||||
|
public string? ProRunTimeStr
|
||||||
|
{
|
||||||
|
get { return _ProRunTimeStr; }
|
||||||
|
set { _ProRunTimeStr = value; RaisePropertyChanged(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 全部的暂停的时间
|
||||||
|
/// 可能暂停多次
|
||||||
|
/// </summary>
|
||||||
|
public int PauseTotalSecTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -71,6 +71,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitConfig()
|
private void InitConfig()
|
||||||
{
|
{
|
||||||
|
//未配置触发器 CanFire 返回值 false
|
||||||
//状态机初始化
|
//状态机初始化
|
||||||
StateMachine = new StateMachine<RunState, RunStateTrig>(RunState.Wait);
|
StateMachine = new StateMachine<RunState, RunStateTrig>(RunState.Wait);
|
||||||
|
|
||||||
@@ -80,54 +81,82 @@ namespace CapMachine.Wpf.Models
|
|||||||
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
||||||
.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
||||||
//.Permit(RunStateTrig.StartTrig, RunState.Run)
|
//.Permit(RunStateTrig.StartTrig, RunState.Run)
|
||||||
//.Permit(RunStateTrig.ResetTrig, RunState.Wait)
|
.PermitIf(RunStateTrig.ResetTrig, RunState.Stop, () => StopPreValid());
|
||||||
.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
//.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
||||||
.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
//.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
||||||
.Ignore(RunStateTrig.ResetTrig)
|
//.Ignore(RunStateTrig.ResetTrig);
|
||||||
.Ignore(RunStateTrig.WaitTrig);
|
//.Ignore(RunStateTrig.ContinueTrig)
|
||||||
|
//.Ignore(RunStateTrig.WaitTrig);
|
||||||
|
|
||||||
StateMachine.Configure(RunState.Alarm)
|
StateMachine.Configure(RunState.Alarm)
|
||||||
.OnEntry(t => AlarmEntryCall())
|
.OnEntry(t => AlarmEntryCall())
|
||||||
.OnExit(t => AlarmExitCall())
|
.OnExit(t => AlarmExitCall())
|
||||||
.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
||||||
.PermitIf(RunStateTrig.ResetTrig, RunState.Wait, () => WaitPreValid())
|
.PermitIf(RunStateTrig.ResetTrig, RunState.Stop, () => StopPreValid());
|
||||||
.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
//.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
||||||
.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
//.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
||||||
.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
//.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
||||||
.Ignore(RunStateTrig.AlarmTrig);
|
//.Ignore(RunStateTrig.ContinueTrig)
|
||||||
|
//.Ignore(RunStateTrig.AlarmTrig);
|
||||||
|
|
||||||
StateMachine.Configure(RunState.Run)
|
StateMachine.Configure(RunState.Run)
|
||||||
.OnEntry(t => RunEntryCall())
|
.OnEntry(t => RunEntryCall())
|
||||||
.OnExit(t => RunExitCall())
|
.OnExit(t => RunExitCall())
|
||||||
.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
//.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
||||||
.PermitIf(RunStateTrig.ResetTrig, RunState.Wait, () => WaitPreValid())
|
.PermitIf(RunStateTrig.ResetTrig, RunState.Stop, () => StopPreValid())
|
||||||
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
||||||
.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
||||||
.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid());
|
||||||
.Ignore(RunStateTrig.StartTrig);
|
//.PermitIf(RunStateTrig.ContinueTrig, RunState.Stop, () => false)
|
||||||
|
//.Ignore(RunStateTrig.ContinueTrig)
|
||||||
|
//.Ignore(RunStateTrig.StartTrig);
|
||||||
|
|
||||||
StateMachine.Configure(RunState.Stop)
|
StateMachine.Configure(RunState.Stop)
|
||||||
.OnEntry(t => StopEntryCall())
|
.OnEntry(t => StopEntryCall())
|
||||||
.OnExit(t => StopExitCall())
|
.OnExit(t => StopExitCall())
|
||||||
.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
||||||
.PermitIf(RunStateTrig.ResetTrig, RunState.Wait, () => WaitPreValid())
|
|
||||||
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
||||||
.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid());
|
||||||
.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
//.PermitIf(RunStateTrig.PauseTrig, RunState.Pause, () => PausePreValid())
|
||||||
.Ignore(RunStateTrig.EndTrig);
|
//.Ignore(RunStateTrig.ContinueTrig)
|
||||||
|
//.Ignore(RunStateTrig.PauseTrig)
|
||||||
|
//.Ignore(RunStateTrig.EndTrig);
|
||||||
|
|
||||||
StateMachine.Configure(RunState.Pause)
|
StateMachine.Configure(RunState.Pause)
|
||||||
.OnEntry(t => PauseEntryCall())
|
.OnEntry(t => PauseEntryCall())
|
||||||
.OnExit(t => PauseExitCall())
|
.OnExit(t => PauseExitCall())
|
||||||
.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
.Permit(RunStateTrig.ContinueTrig, RunState.Run)
|
||||||
.PermitIf(RunStateTrig.ResetTrig, RunState.Wait, () => WaitPreValid())
|
//.PermitIf(RunStateTrig.WaitTrig, RunState.Wait, () => WaitPreValid())
|
||||||
|
.PermitIf(RunStateTrig.ResetTrig, RunState.Stop, () => StopPreValid())
|
||||||
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
.PermitIf(RunStateTrig.AlarmTrig, RunState.Alarm, () => AlarmPreValid())
|
||||||
.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
//.PermitIf(RunStateTrig.StartTrig, RunState.Run, () => RunPreValid())
|
||||||
.PermitIf(RunStateTrig.EndTrig, RunState.Stop, () => StopPreValid())
|
.Permit(RunStateTrig.EndTrig, RunState.Stop);
|
||||||
.Ignore(RunStateTrig.PauseTrig);
|
//.Ignore(RunStateTrig.PauseTrig);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _BtnStartState;
|
||||||
|
/// <summary>
|
||||||
|
/// 界面的开始按钮状态
|
||||||
|
/// </summary>
|
||||||
|
public bool BtnStartState
|
||||||
|
{
|
||||||
|
get { return _BtnStartState; }
|
||||||
|
set { _BtnStartState = value; RaisePropertyChanged(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _BtnEndState;
|
||||||
|
/// <summary>
|
||||||
|
/// 界面的结束按钮状态
|
||||||
|
/// </summary>
|
||||||
|
public bool BtnEndState
|
||||||
|
{
|
||||||
|
get { return _BtnEndState; }
|
||||||
|
set { _BtnEndState = value; RaisePropertyChanged(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region 验证状态
|
#region 验证状态
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -144,7 +173,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show($"WaitTrig-没有满足条件");
|
MessageBox.Show($"WaitTrig-没有满足Wait条件");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -155,17 +184,19 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool FireAlarm()
|
public bool FireAlarm()
|
||||||
{
|
{
|
||||||
var Result = StateMachine.CanFire(RunStateTrig.AlarmTrig);
|
StateMachine.Fire(RunStateTrig.AlarmTrig);
|
||||||
if (Result)
|
return true;
|
||||||
{
|
//var Result = StateMachine.CanFire(RunStateTrig.AlarmTrig);
|
||||||
StateMachine.Fire(RunStateTrig.AlarmTrig);
|
//if (Result)
|
||||||
return true;
|
//{
|
||||||
}
|
// StateMachine.Fire(RunStateTrig.AlarmTrig);
|
||||||
else
|
// return true;
|
||||||
{
|
//}
|
||||||
MessageBox.Show($"AlarmTrig-没有满足条件");
|
//else
|
||||||
return false;
|
//{
|
||||||
}
|
// MessageBox.Show($"AlarmTrig-没有满足条件");
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -182,7 +213,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show($"ResetTrig-没有满足条件");
|
MessageBox.Show($"ResetTrig-没有满足Reset条件");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -201,7 +232,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show($"StartTrig-没有满足条件");
|
MessageBox.Show($"StartTrig-没有满足Start条件");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,7 +251,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show($"EndTrig-没有满足条件");
|
MessageBox.Show($"EndTrig-没有满足End条件");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -239,12 +270,29 @@ namespace CapMachine.Wpf.Models
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show($"PauseTrig-没有满足条件");
|
MessageBox.Show($"PauseTrig-没有满足Pause条件");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 进入 Continue 状态
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool FireContinue()
|
||||||
|
{
|
||||||
|
var Result = StateMachine.CanFire(RunStateTrig.ContinueTrig);
|
||||||
|
if (Result)
|
||||||
|
{
|
||||||
|
StateMachine.Fire(RunStateTrig.ContinueTrig);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show($"ContinueTrig-没有满足Continue条件");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -293,12 +341,13 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// <exception cref="NotImplementedException"></exception>
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
private bool StopPreValid()
|
private bool StopPreValid()
|
||||||
{
|
{
|
||||||
//运行切换到停止
|
return true;
|
||||||
if (StateMachine.State == RunState.Run)
|
////运行切换到停止
|
||||||
{
|
//if (StateMachine.State == RunState.Run)
|
||||||
return true;
|
//{
|
||||||
}
|
// return true;
|
||||||
return false;
|
//}
|
||||||
|
//return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -334,6 +383,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
|
|
||||||
private void StopExitCall()
|
private void StopExitCall()
|
||||||
{
|
{
|
||||||
|
BtnEndState = false;
|
||||||
Console.WriteLine($"{Name}-StopExitCall");
|
Console.WriteLine($"{Name}-StopExitCall");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,6 +392,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void StopEntryCall()
|
private void StopEntryCall()
|
||||||
{
|
{
|
||||||
|
BtnEndState = true;
|
||||||
RunStateMsg = "停止";
|
RunStateMsg = "停止";
|
||||||
Console.WriteLine($"{Name}-StopEntryCall");
|
Console.WriteLine($"{Name}-StopEntryCall");
|
||||||
|
|
||||||
@@ -350,6 +401,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
|
|
||||||
private void RunExitCall()
|
private void RunExitCall()
|
||||||
{
|
{
|
||||||
|
BtnStartState = false;
|
||||||
//退出运行状态
|
//退出运行状态
|
||||||
IsRunState = false;
|
IsRunState = false;
|
||||||
Console.WriteLine($"{Name}-RunExitCall");
|
Console.WriteLine($"{Name}-RunExitCall");
|
||||||
@@ -360,6 +412,7 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void RunEntryCall()
|
private void RunEntryCall()
|
||||||
{
|
{
|
||||||
|
BtnStartState = true;
|
||||||
RunStateMsg = "运行";
|
RunStateMsg = "运行";
|
||||||
Console.WriteLine($"{Name}-RunEntryCall");
|
Console.WriteLine($"{Name}-RunEntryCall");
|
||||||
//进入运行状态
|
//进入运行状态
|
||||||
|
|||||||
@@ -40,6 +40,12 @@ namespace CapMachine.Wpf.Models
|
|||||||
/// 复位 触发
|
/// 复位 触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ResetTrig = 6,
|
ResetTrig = 6,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 继续 触发
|
||||||
|
/// </summary>
|
||||||
|
ContinueTrig = 7,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -117,5 +117,10 @@ namespace CapMachine.Wpf.Models.Tag
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
bool IsMeter { get; set; }
|
bool IsMeter { get; set; }
|
||||||
string AutoHandSwitchAddress { get; set; }
|
string AutoHandSwitchAddress { get; set; }
|
||||||
|
string Pid_PAddress { get; set; }
|
||||||
|
string Pid_IAddress { get; set; }
|
||||||
|
string Pid_DAddress { get; set; }
|
||||||
|
string Limit_UpAddress { get; set; }
|
||||||
|
string Limit_DownAddress { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,31 @@ namespace CapMachine.Wpf.Models.Tag
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string MVAddress { get; set; }
|
public string MVAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Pid_P
|
||||||
|
/// </summary>
|
||||||
|
public string Pid_PAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Pid_I
|
||||||
|
/// </summary>
|
||||||
|
public string Pid_IAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Pid_D
|
||||||
|
/// </summary>
|
||||||
|
public string Pid_DAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Limit_Up
|
||||||
|
/// </summary>
|
||||||
|
public string Limit_UpAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 地址信息 Limit_Down
|
||||||
|
/// </summary>
|
||||||
|
public string Limit_DownAddress { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 地址信息 Index
|
/// 地址信息 Index
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
14
CapMachine.Wpf/PrismEvent/ProRunEvent.cs
Normal file
14
CapMachine.Wpf/PrismEvent/ProRunEvent.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using Prism.Events;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CapMachine.Wpf.PrismEvent
|
||||||
|
{
|
||||||
|
public class ProRunEvent : PubSubEvent<ProRunEventMsg>
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
24
CapMachine.Wpf/PrismEvent/ProRunEventMsg.cs
Normal file
24
CapMachine.Wpf/PrismEvent/ProRunEventMsg.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CapMachine.Wpf.PrismEvent
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 程序运行事件消息
|
||||||
|
/// </summary>
|
||||||
|
public class ProRunEventMsg
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机器
|
||||||
|
/// </summary>
|
||||||
|
public string? Machine { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消息
|
||||||
|
/// </summary>
|
||||||
|
public string? Msg { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -96,6 +96,11 @@ namespace CapMachine.Wpf.Services
|
|||||||
///// </summary>
|
///// </summary>
|
||||||
//public List<TagInfo> ListRtDataModel { get; set; }
|
//public List<TagInfo> ListRtDataModel { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PLC加载配置数据集合
|
||||||
|
/// </summary>
|
||||||
|
public List<PlcLoadConfigCell> ListPlcLoadConfigCell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标签管理中心
|
/// 标签管理中心
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -151,39 +156,39 @@ namespace CapMachine.Wpf.Services
|
|||||||
#region 标签管理
|
#region 标签管理
|
||||||
|
|
||||||
////三电 Sample
|
////三电 Sample
|
||||||
TagManger.AddTag(new Tag<short>("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0, IsMeter = true, });
|
TagManger.AddTag(new Tag<short>("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
//TagManger.AddTag(new Tag<short>("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
|
//TagManger.AddTag(new Tag<short>("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||||||
TagManger.AddTag(new Tag<short>("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
//TagManger.AddTag(new Tag<short>("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
|
//TagManger.AddTag(new Tag<short>("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||||||
TagManger.AddTag(new Tag<short>("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
//TagManger.AddTag(new Tag<short>("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
//TagManger.AddTag(new Tag<short>("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||||||
TagManger.AddTag(new Tag<short>("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
|
TagManger.AddTag(new Tag<short>("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true, SVAddress = "VW5", Pid_PAddress = "VW0", Pid_IAddress = "VW1", Pid_DAddress = "VW2", Limit_UpAddress = "VW3", Limit_DownAddress = "VW4" });
|
||||||
TagManger.AddTag(new Tag<short>("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = false });
|
TagManger.AddTag(new Tag<short>("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = false });
|
||||||
TagManger.AddTag(new Tag<short>("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 10, "V", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
|
TagManger.AddTag(new Tag<short>("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 10, "V", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
|
||||||
TagManger.AddTag(new Tag<short>("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0, IsMeter = false });
|
TagManger.AddTag(new Tag<short>("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0, IsMeter = false });
|
||||||
@@ -1024,6 +1029,18 @@ namespace CapMachine.Wpf.Services
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 程序继续
|
||||||
|
/// 取反
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool SysContinue()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -1140,7 +1157,7 @@ namespace CapMachine.Wpf.Services
|
|||||||
|
|
||||||
while (ThreadEnable)
|
while (ThreadEnable)
|
||||||
{
|
{
|
||||||
|
|
||||||
//await Task.CompletedTask;
|
//await Task.CompletedTask;
|
||||||
|
|
||||||
DiagnosticsTime.Reset();
|
DiagnosticsTime.Reset();
|
||||||
@@ -1589,6 +1606,115 @@ namespace CapMachine.Wpf.Services
|
|||||||
{
|
{
|
||||||
////第一次计时
|
////第一次计时
|
||||||
//stopwatch.Start(); //启动Stopwatch
|
//stopwatch.Start(); //启动Stopwatch
|
||||||
|
switch (ProRunChannelData.RunStepType)
|
||||||
|
{
|
||||||
|
case RunStepType.Step:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Sv
|
||||||
|
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
|
||||||
|
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
|
||||||
|
//Pid
|
||||||
|
var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
|
||||||
|
if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
|
||||||
|
var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
|
||||||
|
if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
|
||||||
|
var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
|
||||||
|
if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
|
||||||
|
//Limit
|
||||||
|
var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
|
||||||
|
if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
|
||||||
|
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.StepPID:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Sv
|
||||||
|
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
|
||||||
|
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
|
||||||
|
//Pid
|
||||||
|
var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
|
||||||
|
if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
|
||||||
|
var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
|
||||||
|
if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
|
||||||
|
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.StepLimit:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Sv
|
||||||
|
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
|
||||||
|
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
|
||||||
|
//Limit
|
||||||
|
var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
|
||||||
|
if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
|
||||||
|
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:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Sv
|
||||||
|
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
|
||||||
|
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RunStepType.LimitPid:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Pid
|
||||||
|
var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
|
||||||
|
if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
|
||||||
|
var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
|
||||||
|
if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
|
||||||
|
var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
|
||||||
|
if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
|
||||||
|
//Limit
|
||||||
|
var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
|
||||||
|
if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
|
||||||
|
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:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Pid
|
||||||
|
var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
|
||||||
|
if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
|
||||||
|
var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
|
||||||
|
if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
|
||||||
|
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:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Limit
|
||||||
|
var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
|
||||||
|
if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
|
||||||
|
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:
|
||||||
|
{
|
||||||
|
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
|
||||||
|
//Sv
|
||||||
|
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
|
||||||
|
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
|
if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
|
||||||
{
|
{
|
||||||
SiemensDrive.Write("D1", (short)ProRunChannelData.SV);
|
SiemensDrive.Write("D1", (short)ProRunChannelData.SV);
|
||||||
@@ -1612,7 +1738,7 @@ namespace CapMachine.Wpf.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Thread.Sleep(50);
|
//Thread.Sleep(50);
|
||||||
//DownLoadPID();
|
//DownLoadPID();
|
||||||
//stopwatch.Stop(); //停止Stopwatch
|
//stopwatch.Stop(); //停止Stopwatch
|
||||||
//Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
|
//Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,8 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
/// <param name="machineRtDataService"></param>
|
/// <param name="machineRtDataService"></param>
|
||||||
/// <param name="dialogService"></param>
|
/// <param name="dialogService"></param>
|
||||||
public MonitorViewModel(ConfigService configService, IEventAggregator eventAggregator,
|
public MonitorViewModel(ConfigService configService, IEventAggregator eventAggregator,
|
||||||
DataRecordService dataRecordService, SysRunService sysRunService, AlarmService alarmService, PPCService pPCService,CanDriveService canDriveService,LinDriveService linDriveService,
|
DataRecordService dataRecordService, SysRunService sysRunService, AlarmService alarmService, PPCService pPCService, CanDriveService canDriveService, LinDriveService linDriveService,
|
||||||
|
ProRuntimeService proRuntimeService,
|
||||||
MachineRtDataService machineRtDataService, IDialogService dialogService)
|
MachineRtDataService machineRtDataService, IDialogService dialogService)
|
||||||
{
|
{
|
||||||
ConfigService = configService;
|
ConfigService = configService;
|
||||||
@@ -39,10 +40,12 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
PPCService = pPCService;
|
PPCService = pPCService;
|
||||||
CanDriveService = canDriveService;
|
CanDriveService = canDriveService;
|
||||||
LinDriveService = linDriveService;
|
LinDriveService = linDriveService;
|
||||||
|
ProRuntimeService = proRuntimeService;
|
||||||
MachineRtDataService = machineRtDataService;
|
MachineRtDataService = machineRtDataService;
|
||||||
DialogService = dialogService;
|
DialogService = dialogService;
|
||||||
TagManager = MachineRtDataService.TagManger;
|
TagManager = MachineRtDataService.TagManger;
|
||||||
_EventAggregator.GetEvent<ChartRtEvent>().Subscribe(GetChartRtEvent);
|
_EventAggregator.GetEvent<ChartRtEvent>().Subscribe(GetChartRtEvent);
|
||||||
|
_EventAggregator.GetEvent<ProRunEvent>().Subscribe(GetProRunEvent);
|
||||||
|
|
||||||
//赋值实例化
|
//赋值实例化
|
||||||
ListHandSwitchData = MachineRtDataService.ListHandSwitchData;
|
ListHandSwitchData = MachineRtDataService.ListHandSwitchData;
|
||||||
@@ -76,6 +79,7 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
public PPCService PPCService { get; }
|
public PPCService PPCService { get; }
|
||||||
public CanDriveService CanDriveService { get; }
|
public CanDriveService CanDriveService { get; }
|
||||||
public LinDriveService LinDriveService { get; }
|
public LinDriveService LinDriveService { get; }
|
||||||
|
public ProRuntimeService ProRuntimeService { get; }
|
||||||
public MachineRtDataService MachineRtDataService { get; }
|
public MachineRtDataService MachineRtDataService { get; }
|
||||||
public IDialogService DialogService { get; }
|
public IDialogService DialogService { get; }
|
||||||
public List<ChartRtValue> ListChartRtValue { get; set; } = new List<ChartRtValue>()
|
public List<ChartRtValue> ListChartRtValue { get; set; } = new List<ChartRtValue>()
|
||||||
@@ -214,6 +218,11 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
return _OperCmd;
|
return _OperCmd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 操作指令执行方法
|
/// 操作指令执行方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -223,59 +232,77 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
switch (Par)
|
switch (Par)
|
||||||
{
|
{
|
||||||
case "开始":
|
case "开始":
|
||||||
|
//状态机运行 用状态机的状态判断逻辑
|
||||||
MachineRtDataService.SysStart();
|
if (this.SysRunServer.MachineRunState1.FireStart())
|
||||||
|
|
||||||
this.SysRunServer.MachineRunState1.FireStart();
|
|
||||||
|
|
||||||
DataRecordService.StartRecord();
|
|
||||||
break;
|
|
||||||
case "结束":
|
|
||||||
MachineRtDataService.SysEnd();
|
|
||||||
|
|
||||||
this.SysRunServer.MachineRunState1.FireEnd();
|
|
||||||
DataRecordService.EndRecord();
|
|
||||||
|
|
||||||
//结束运行的时候,需要将压缩机的速度值设置为0
|
|
||||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
|
||||||
{
|
{
|
||||||
case CanLinEnum.Can:
|
//程序步骤执行开始运行
|
||||||
//获取PLC的SV数据 更新SV的速度值到压缩机
|
ProRuntimeService.StartProRun();
|
||||||
CanDriveService.UpdateSpeedCmdData(0);
|
//运行 一些PLC的状态写入
|
||||||
//itemTag.Value.EngPvValue = 0;
|
MachineRtDataService.SysStart();
|
||||||
break;
|
//开始记录数据
|
||||||
case CanLinEnum.Lin:
|
DataRecordService.StartRecord();
|
||||||
//获取PLC的SV数据 更新SV的速度值到压缩机
|
|
||||||
LinDriveService.UpdateSpeedCmdData(0);
|
|
||||||
//itemTag.Value.EngPvValue = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "结束":
|
||||||
|
//状态机结束 用状态机的状态判断逻辑
|
||||||
|
if (this.SysRunServer.MachineRunState1.FireEnd())
|
||||||
|
{
|
||||||
|
//程序步骤执行结束运行
|
||||||
|
ProRuntimeService.EndProRun();
|
||||||
|
//结束 一些PLC的状态写入
|
||||||
|
MachineRtDataService.SysEnd();
|
||||||
|
//结束记录数据
|
||||||
|
DataRecordService.EndRecord();
|
||||||
|
|
||||||
|
//结束运行的时候,需要将压缩机的速度值设置为0
|
||||||
|
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||||
|
{
|
||||||
|
case CanLinEnum.Can:
|
||||||
|
//获取PLC的SV数据 更新SV的速度值到压缩机
|
||||||
|
CanDriveService.UpdateSpeedCmdData(0);
|
||||||
|
//itemTag.Value.EngPvValue = 0;
|
||||||
|
break;
|
||||||
|
case CanLinEnum.Lin:
|
||||||
|
//获取PLC的SV数据 更新SV的速度值到压缩机
|
||||||
|
LinDriveService.UpdateSpeedCmdData(0);
|
||||||
|
//itemTag.Value.EngPvValue = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "复位":
|
case "复位":
|
||||||
MachineRtDataService.SysReset();
|
//状态机 复位 用状态机的状态判断逻辑
|
||||||
|
if (this.SysRunServer.MachineRunState1.FireReset())
|
||||||
this.SysRunServer.MachineRunState1.FireReset();
|
|
||||||
DataRecordService.EndRecord();
|
|
||||||
|
|
||||||
//结束运行的时候,需要将压缩机的速度值设置为0
|
|
||||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
|
||||||
{
|
{
|
||||||
case CanLinEnum.Can:
|
//程序步骤执行结束运行
|
||||||
//获取PLC的SV数据 更新SV的速度值到压缩机
|
ProRuntimeService.EndProRun();
|
||||||
CanDriveService.UpdateSpeedCmdData(0);
|
//复位 一些PLC的状态写入
|
||||||
//itemTag.Value.EngPvValue = 0;
|
MachineRtDataService.SysReset();
|
||||||
break;
|
//结束记录数据
|
||||||
case CanLinEnum.Lin:
|
DataRecordService.EndRecord();
|
||||||
//获取PLC的SV数据 更新SV的速度值到压缩机
|
|
||||||
LinDriveService.UpdateSpeedCmdData(0);
|
//结束运行的时候,需要将压缩机的速度值设置为0
|
||||||
//itemTag.Value.EngPvValue = 0;
|
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||||
break;
|
{
|
||||||
default:
|
case CanLinEnum.Can:
|
||||||
break;
|
//获取PLC的SV数据 更新SV的速度值到压缩机
|
||||||
|
CanDriveService.UpdateSpeedCmdData(0);
|
||||||
|
//itemTag.Value.EngPvValue = 0;
|
||||||
|
break;
|
||||||
|
case CanLinEnum.Lin:
|
||||||
|
//获取PLC的SV数据 更新SV的速度值到压缩机
|
||||||
|
LinDriveService.UpdateSpeedCmdData(0);
|
||||||
|
//itemTag.Value.EngPvValue = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -287,8 +314,26 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
break;
|
break;
|
||||||
case "暂停":
|
case "暂停":
|
||||||
|
|
||||||
MachineRtDataService.SysPause();
|
//状态机 暂停 用状态机的状态判断逻辑
|
||||||
|
if (this.SysRunServer.MachineRunState1.FirePause())
|
||||||
|
{
|
||||||
|
//程序步骤执行暂停运行
|
||||||
|
ProRuntimeService.PauseProRun();
|
||||||
|
//暂停 一些PLC的状态写入
|
||||||
|
MachineRtDataService.SysPause();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "继续":
|
||||||
|
//状态机 继续 用状态机的状态判断逻辑
|
||||||
|
if (this.SysRunServer.MachineRunState1.FireContinue())
|
||||||
|
{
|
||||||
|
//程序步骤执行继续运行
|
||||||
|
ProRuntimeService.ContinueProRun();
|
||||||
|
//继续 一些PLC的状态写入
|
||||||
|
MachineRtDataService.SysContinue();
|
||||||
|
}
|
||||||
//ShowDialogExpInfo();
|
//ShowDialogExpInfo();
|
||||||
break;
|
break;
|
||||||
case "试验信息":
|
case "试验信息":
|
||||||
@@ -303,6 +348,28 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 程序运行的状态
|
||||||
|
/// 来自于程序的自动调度执行
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
|
private void GetProRunEvent(ProRunEventMsg msg)
|
||||||
|
{
|
||||||
|
switch (msg.Msg)
|
||||||
|
{
|
||||||
|
case "执行完毕":
|
||||||
|
OperCmdCall("结束");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private DelegateCommand<object> _AutoHandCmd;
|
private DelegateCommand<object> _AutoHandCmd;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 操作指令你
|
/// 操作指令你
|
||||||
|
|||||||
@@ -2297,46 +2297,6 @@ namespace CapMachine.Wpf.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private DelegateCommand<string> _ProRunSelectedDelete1;
|
|
||||||
/// <summary>
|
|
||||||
/// 删除命令
|
|
||||||
/// </summary>
|
|
||||||
public DelegateCommand<string> ProRunSelectedDelete1
|
|
||||||
{
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_ProRunSelectedDelete1 = value;
|
|
||||||
}
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_ProRunSelectedDelete1 == null)
|
|
||||||
{
|
|
||||||
_ProRunSelectedDelete1 = new DelegateCommand<string>((p) => ProRunSelectedDelete1Method(p));
|
|
||||||
}
|
|
||||||
return _ProRunSelectedDelete1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ProRunSelectedDelete1Method(string Par)
|
|
||||||
{
|
|
||||||
if (Par.Contains("1"))
|
|
||||||
{
|
|
||||||
ProRuntimeService.EndProRun();
|
|
||||||
}
|
|
||||||
else if (Par.Contains("2"))
|
|
||||||
{
|
|
||||||
ProRuntimeService.PauseProRun();
|
|
||||||
}
|
|
||||||
else if (Par.Contains("3"))
|
|
||||||
{
|
|
||||||
ProRuntimeService.ContinueProRun();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private DelegateCommand _GenProPlcCmd;
|
private DelegateCommand _GenProPlcCmd;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 新增命令
|
/// 新增命令
|
||||||
|
|||||||
@@ -277,7 +277,7 @@
|
|||||||
FontSize="26"
|
FontSize="26"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="LimeGreen"
|
Foreground="LimeGreen"
|
||||||
Text="{Binding MachineRtDataService.CurSysExdInfo.RunTimeMsg}" />
|
Text="{Binding ProRuntimeService.ProRunTimeCalcModel.ProRunTimeStr}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</materialDesign:Card>
|
</materialDesign:Card>
|
||||||
|
|
||||||
@@ -341,14 +341,12 @@
|
|||||||
Width="100"
|
Width="100"
|
||||||
Margin="5,0"
|
Margin="5,0"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Background="Green"
|
|
||||||
BorderBrush="Blue"
|
BorderBrush="Blue"
|
||||||
BorderThickness="2"
|
BorderThickness="2"
|
||||||
Command="{Binding OperCmd}"
|
Command="{Binding OperCmd}"
|
||||||
CommandParameter="开始"
|
CommandParameter="开始"
|
||||||
GroupName="OpRunStop"
|
GroupName="OpRunStop">
|
||||||
IsChecked="{Binding MachineRtDataService.SysExdBoolInfos.StartRunStateQuickTag.Value}"
|
<!-- Style="{StaticResource MaterialDesignChoiceChipSecondaryRadioButton}" Background="Green" IsChecked="{Binding SysRunServer.MachineRunState1.BtnStartState}" -->
|
||||||
Style="{StaticResource MaterialDesignChoiceChipSecondaryRadioButton}">
|
|
||||||
<RadioButton.Content>
|
<RadioButton.Content>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
@@ -364,17 +362,28 @@
|
|||||||
Text="开始" />
|
Text="开始" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</RadioButton.Content>
|
</RadioButton.Content>
|
||||||
|
<RadioButton.Style>
|
||||||
|
<Style BasedOn="{StaticResource MaterialDesignChoiceChipSecondaryRadioButton}" TargetType="RadioButton">
|
||||||
|
<Style.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding SysRunServer.MachineRunState1.BtnStartState}" Value="true">
|
||||||
|
<Setter Property="Background" Value="Green" />
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding SysRunServer.MachineRunState1.BtnStartState}" Value="false">
|
||||||
|
<Setter Property="Background" Value="Gray" />
|
||||||
|
</DataTrigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
</RadioButton.Style>
|
||||||
</RadioButton>
|
</RadioButton>
|
||||||
<RadioButton
|
<RadioButton
|
||||||
Width="100"
|
Width="100"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Background="Green"
|
|
||||||
BorderBrush="Blue"
|
BorderBrush="Blue"
|
||||||
BorderThickness="2"
|
BorderThickness="2"
|
||||||
Command="{Binding OperCmd}"
|
Command="{Binding OperCmd}"
|
||||||
CommandParameter="结束"
|
CommandParameter="结束"
|
||||||
GroupName="OpRunStop"
|
GroupName="OpRunStop">
|
||||||
Style="{StaticResource MaterialDesignChoiceChipSecondaryRadioButton}">
|
<!-- Style="{StaticResource MaterialDesignChoiceChipSecondaryRadioButton}" Background="Green" IsChecked="{Binding SysRunServer.MachineRunState1.BtnEndState}" -->
|
||||||
<RadioButton.Content>
|
<RadioButton.Content>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
@@ -390,6 +399,18 @@
|
|||||||
Text="结束" />
|
Text="结束" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</RadioButton.Content>
|
</RadioButton.Content>
|
||||||
|
<RadioButton.Style>
|
||||||
|
<Style BasedOn="{StaticResource MaterialDesignChoiceChipSecondaryRadioButton}" TargetType="RadioButton">
|
||||||
|
<Style.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding SysRunServer.MachineRunState1.BtnEndState}" Value="true">
|
||||||
|
<Setter Property="Background" Value="Green" />
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding SysRunServer.MachineRunState1.BtnEndState}" Value="false">
|
||||||
|
<Setter Property="Background" Value="Gray" />
|
||||||
|
</DataTrigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
</RadioButton.Style>
|
||||||
</RadioButton>
|
</RadioButton>
|
||||||
|
|
||||||
<!-- 分隔符 -->
|
<!-- 分隔符 -->
|
||||||
@@ -432,6 +453,22 @@
|
|||||||
<TextBlock Text="暂停" />
|
<TextBlock Text="暂停" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button
|
||||||
|
Margin="5,0"
|
||||||
|
Command="{Binding OperCmd}"
|
||||||
|
CommandParameter="继续"
|
||||||
|
Foreground="White">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="2,0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="/Assets/Fonts/#iconfont"
|
||||||
|
FontSize="14"
|
||||||
|
Foreground="White"
|
||||||
|
Text="" />
|
||||||
|
<TextBlock Text="继续" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
Margin="5,0"
|
Margin="5,0"
|
||||||
Command="{Binding OperCmd}"
|
Command="{Binding OperCmd}"
|
||||||
|
|||||||
@@ -523,73 +523,7 @@
|
|||||||
Text="删除" />
|
Text="删除" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
|
||||||
Width="80"
|
|
||||||
Height="25"
|
|
||||||
Margin="2"
|
|
||||||
Background="Yellow"
|
|
||||||
Command="{Binding ProRunSelectedDelete1}"
|
|
||||||
CommandParameter="1"
|
|
||||||
Style="{StaticResource MaterialDesignOutlinedDarkButton}"
|
|
||||||
ToolTip="停止">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<TextBlock
|
|
||||||
Margin="0,0,2,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontFamily="/Assets/Fonts/#iconfont"
|
|
||||||
FontSize="14"
|
|
||||||
Text="" />
|
|
||||||
<TextBlock
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontSize="14"
|
|
||||||
Text="停止" />
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
Width="80"
|
|
||||||
Height="25"
|
|
||||||
Margin="2"
|
|
||||||
Background="Yellow"
|
|
||||||
Command="{Binding ProRunSelectedDelete1}"
|
|
||||||
CommandParameter="2"
|
|
||||||
Style="{StaticResource MaterialDesignOutlinedDarkButton}"
|
|
||||||
ToolTip="暂停">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<TextBlock
|
|
||||||
Margin="0,0,2,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontFamily="/Assets/Fonts/#iconfont"
|
|
||||||
FontSize="14"
|
|
||||||
Text="" />
|
|
||||||
<TextBlock
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontSize="14"
|
|
||||||
Text="暂停" />
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
Width="80"
|
|
||||||
Height="25"
|
|
||||||
Margin="2"
|
|
||||||
Background="Yellow"
|
|
||||||
Command="{Binding ProRunSelectedDelete1}"
|
|
||||||
CommandParameter="3"
|
|
||||||
Style="{StaticResource MaterialDesignOutlinedDarkButton}"
|
|
||||||
ToolTip="继续">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<TextBlock
|
|
||||||
Margin="0,0,2,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontFamily="/Assets/Fonts/#iconfont"
|
|
||||||
FontSize="14"
|
|
||||||
Text="" />
|
|
||||||
<TextBlock
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontSize="14"
|
|
||||||
Text="继续" />
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user