using FLY.FeedbackRenZiJia.Common;
using FObjBase;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace FLY.FeedbackRenZiJia.IService
{
public interface IHeatBuf: INotifyPropertyChanged
{
#region 参数
///
/// 加热生效曲线 [2,5,8,5,2]
///
List HeatEffectCurve { get; set; }
///
/// 厚度稳定范围 %, 偏差在范围内,都是稳定的
///
int StableRange { get; set; }
///
/// 厚度稳定范围 %, 加热量变化为0时,偏差在范围内,都是稳定的
///
int StableRange0 { get; set; }
///
/// 对位模式, 加热与厚度相关性阀值, 相关性 >=0.7
///
double ThresholdR { get; set; }
///
/// 对位模式 厚度%差 的极差 >= +4%-4%=8%, 单位%
///
int ThresholdMaxMin { get; set; }
///
/// %
/// 最大sigma, 只有当前的sigma 在 最大sigma 与 最小 sigma 内,才能控制
///
int ThresholdSigmaMax { get; set; }
///
/// 使用这里独立的Kp, 与 HeatCell 不一样
///
bool IsUsedLocalKp { get; set; }
///
/// 本地Kp, 用于判断稳定性
///
double LocalKp { get; set; }
#endregion
#region 状态
///
/// 延时
///
TimeSpan Delay { get; }
#region 对位
///
/// 进入了对位模式
///
bool IsIntoAutoONo { get; }
///
/// 对位模式结果
///
EAutoONoResult AutoONoResult { get; }
///
/// 计算的最佳复位区号
///
int BestOrgBoltNo { get; }
///
/// 计算的最佳复位区号 对应的 加热/厚度
///
double BestKp { get; }
///
/// 计算的最佳复位区号 对应的 加热与厚度相关性
///
double MaxR { get; }
///
/// 计算的最佳复位区号 对应的 厚度%变化极差 单位%
///
double MaxMin { get; }
#endregion
#region 稳定性
///
/// 当前检测出来的厚度数据 稳定状态
///
STABILITY Stability { get; }
///
/// 当前检测出来的厚度数据 的稳定性
///
double CurrR { get; }
///
/// 当前检测出来的厚度数据 2Sigma
///
double Curr2Sigma { get; }
///
/// 当前检测出来的厚度数据,时间
///
DateTime CurrTime { get; }
///
/// 当前检测出来的厚度数据,方向
///
Misc.DIRECTION CurrDirection { get; }
///
/// 当前打散程度。
/// 连续N点都在平均值同一侧为一个块;
/// 这些块的长度平均值/总长度, 为打散度;
/// 打散度越小越好, 最小为 1/NBolts
///
double CurrBreakUp { get; }
#endregion
#region 列表
///
/// 列表最后1个BM
///
int LastBM { get; }
///
/// 列表第1个BM
///
int FirstBM { get; }
#endregion
#region 每个分区状态
bool[] BoltIsStable { get; }
#endregion
#endregion
#region 功能
///
/// 参数应用
///
void Apply();
///
/// 获取记录历史 返回类型为 FlyData_FeedbackHeat
///
/// 记录点
///
///
void GetHeatsData(int bookmark, AsyncCBHandler AsyncDelegate, object AsyncState);
///
/// 清空每个分区的加热记录
///
void ClearBoltHeat();
///
/// 获取每个分区的加热历史 返回 FlyData_BoltHeatRecord
///
/// 分区号
///
///
void GetBoltHeatRecord(int no, AsyncCBHandler AsyncDelegate, object AsyncState);
#endregion
}
///
/// 自动对位模式结果
///
public enum EAutoONoResult
{
///
/// 没开始
///
Idle,
///
/// 计算成功
///
OK,
///
/// 失败,厚度变化%极差太小
///
Err_MaxMin,
///
/// 失败,厚度变化% 与 加热变化 相关性 不够大
///
Err_MaxR,
///
/// 失败,不稳定,被打断
///
Err_Break
}
}