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 } }