using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Collections.ObjectModel;
namespace FLY.FeedbackRenZiJia.IService
{
public interface IHeatCellService : INotifyPropertyChanged
{
#region 参数
///
/// HeatOffset = ThickPercent * Kp
///
double Kp { get; set; }
///
/// 输出平滑的阀值,只有超出阀值,才平滑
///
double ThresholdHeatSigma { get; set; }
///
/// 自控时,不能调整总体上升下降
///
bool IsForbidUpDown { get; set; }
///
/// 厚度控制线 , 厚度% 大于 厚度控制线 自动才会加热控制
///
int CtrlLine { get; set; }
///
/// 最大加热量 默认100%
///
int MaxHeat { get; set; }
#endregion
#region 对位
///
/// 自动对位
///
bool IsAutoONo { get; set; }
///
/// 当前正在自动对位模式
///
AutoONoStatusEnum AutoONoStatus { get; }
///
/// 自动对位模式 信息
///
string AutoONoMsg { get; }
///
/// 自动对位 那幅空的图
///
long AutoONoId0 { get; }
///
/// 自动对位 加热后生效的图
///
long AutoONoId1 { get; }
#endregion
#region 状态
///
/// 对应的100% 数据,单位是% 数量是 ChannelCnt
///
double[] ThickPercents { get; }
///
/// 当前方向的加热策略,必须保证 0~100
///
int[] Heats { get; }
///
/// 加热偏移量
///
int[] Offsets { get; }
///
/// Heats+Offsets+Base, 必须保证0~100
///
int[] PreHeats { get; }
///
/// PreHeat 每3个计算的sigma, 最大值
///
double MaxHeatSigma { get; }
#endregion
#region 功能
///
/// 参数应用
///
void Apply();
///
/// 手动调整加热增量
///
///
///
void ModifyOffset(int idx, int change);
///
/// 参数是 baseheatoffset 的增量
///
///
void ModifyBase(int change);
///
/// 清空HeatOffset
///
void ClearOffsets();
///
/// 清空PreHeats
///
void ClearPreHeats();
///
/// 执行 HeatOffset = ThickPercent * Factor
///
void Cal();
///
/// 平滑 PreHeats
///
void Smooth();
///
/// 加热输出应用
/// Heats = PreHeats, Offsets = 0, Base = 0
///
void HeatApply();
#endregion
}
public enum AutoONoStatusEnum
{
///
/// 等待 没有加热,厚度稳定
///
Init,
///
/// 厚度已经稳定,对位加热, 等待结果
///
Step2,
///
/// 成功找到准确的复位区号与Kp
///
Success,
///
/// 失败,对位过程有大波动
///
Fail
}
}