using CapMachine.Model;
using CapMachine.Wpf.Models.ProModelPars;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CapMachine.Wpf.Tool
{
public class CALCHelper
{
///
/// 计算斜率-分
///
public static int GetSlop(double Value1, double Value2, int TimeSed)
{
var diff = Value2 - Value1;
var TimeMin = TimeSed * 1.0 / 60;
if (TimeSed == 0) return 0;
var Result = (int)Math.Ceiling(diff / TimeMin);
if (Result > 9999)
{
return 9999;
}
if (Result < -1999)
{
return -1999;
}
return Result;
}
///
/// 计算斜率-秒-DB表
///
public static int GetSlopSed(double Value1, double Value2, int TimeSed)
{
var diff = Value2 - Value1;
//var TimeMin = TimeSed * 1.0 / 60;
if (TimeSed == 0) return 0;//0应该是OFF功能
var Result = diff / TimeSed;
if (Result > 2000)
{
return 2000;
}
if (Result < -1999.9)
{
return -1999;
}
if (Result >= 0)
{
return (int)Math.Ceiling(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
else
{
return (int)Math.Floor(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
//return (int)Math.Ceiling(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
///
/// 计算斜率-分鐘-DB表
///
public static int GetSlopMinute(double Value1, double Value2, int TimeSed)
{
var diff = Value2 - Value1;
var TimeMin = TimeSed * 1.0 / 60;
if (TimeSed == 0) return 0;//0应该是OFF功能
var Result = diff / TimeMin;
if (Result > 2000)
{
return 2000;
}
if (Result < -1999.9)
{
return -1999;
}
if (Result >= 0)
{
return (int)Math.Ceiling(Result * 10);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
else
{
return (int)Math.Floor(Result * 10);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
}
///
/// 计算斜率-小时-DB表
///
public static int GetSlopHour(double Value1, double Value2, int TimeSed)
{
var diff = Value2 - Value1;
var TimeHour = TimeSed * 1.0 / 3600;
if (TimeSed == 0) return 0;//0应该是OFF功能
var Result = diff / TimeHour;
if (Result > 2000)
{
return 2000;
}
if (Result < -1999.9)
{
return -1999;
}
if (Result >= 0)
{
return (int)Math.Ceiling(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
else
{
return (int)Math.Floor(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
}
///
/// 计算斜率-秒-DB表 CV
///
public static int GetSlopCVMinute(double Value1, double Value2, int TimeSed)
{
var diff = Value2 - Value1;
//var TimeMin = TimeSed * 1.0 / 60;
if (TimeSed == 0) return 0;//0应该是OFF功能
var Result = diff / TimeSed;
if (Result > 2000)
{
return 2000;
}
if (Result < -1999.9)
{
return -1999;
}
if (Result >= 0)
{
return (int)Math.Ceiling(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
else
{
return (int)Math.Floor(Result);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
}
}
/////
///// 计算斜率-秒-DB表
/////
//public static int GetSlopSed(double Value1, double Value2, int TimeSed)
//{
// var diff = Value2 - Value1;
// //var TimeMin = TimeSed * 1.0 / 60;
// if (TimeSed == 0) return 0;//0应该是OFF功能
// var Result = diff / TimeSed;
// if (Result > 2000)
// {
// return 2000 * 10;
// }
// if (Result < -1999.9)
// {
// return -1999 * 10;
// }
// return (int)Math.Ceiling(Result * 10);//乘以10是DB表的通信上的范围数据要求的,实际显示x.x
//}
///
/// SV值的数据获取
///
///
///
///
public static int GetQuickSV(double sourceData, short accuracy)
{
return (int)(sourceData * (int)Math.Pow(10, accuracy));
}
///
/// 比较是否有改变的数据
///
///
///
///
///
public static bool CpStepExecuteCompareInfo(ProStepExe NextData, ProStepExe CurrentData, string Field)
{
switch (Field)
{
case "PID":
if (NextData.PIDNo == CurrentData.PIDNo) return true;
return false;
case "SV":
if (NextData.EndSV == CurrentData.EndSV) return true;
return false;
case "Limit":
if (NextData.LimitNo == CurrentData.LimitNo) return true;
return false;
case "Alarm":
if (NextData.AlarmNo == CurrentData.AlarmNo) return true;
return false;
default:
return false;
}
}
///
/// 比较是否有改变的数据
///
///
///
///
///
public static bool KpStepExecuteCompareInfo(ProStepExe NextData, ProStepExe CurrentData, string Field)
{
switch (Field)
{
case "PID":
if (NextData.PIDNo == CurrentData.PIDNo) return true;
return false;
case "SV":
if (NextData.EndSV == CurrentData.EndSV) return true;
return false;
case "Limit":
if (NextData.LimitNo == CurrentData.LimitNo) return true;
return false;
case "Alarm":
if (NextData.AlarmNo == CurrentData.AlarmNo) return true;
return false;
default:
return false;
}
}
///
/// 判断Limit下载的次序
///
///
///
///
public static int CpStepExecuteLimitCompareInfo(ProStepExe NextData, ProStepExe CurrentData)
{
if (NextData.CurConfigLimitDto.Down >= CurrentData.CurConfigLimitDto.Up)
{
//先下载Up,后下载Down
return 1;
}
if (NextData.CurConfigLimitDto.Up <= CurrentData.CurConfigLimitDto.Down)
{
//先下载Down,后下载Up
return 3;
}
//正常下载 Down和Up顺序都可以
return 2;
}
///
/// 判断Limit下载的次序
///
///
///
///
public static int KpStepExecuteLimitCompareInfo(ProStepExe NextData, ProStepExe CurrentData)
{
if (NextData.CurConfigLimitDto.Down >= CurrentData.CurConfigLimitDto.Up)
{
//先下载Up,后下载Down
return 1;
}
if (NextData.CurConfigLimitDto.Up <= CurrentData.CurConfigLimitDto.Down)
{
//先下载Down,后下载Up
return 3;
}
//正常下载 Down和Up顺序都可以
return 2;
}
//private long GetProDur(QuickStep quickStep)
//{
// return 0;
//}
}
}