1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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 参数
/// <summary>
/// HeatOffset = ThickPercent * Kp
/// </summary>
double Kp { get; set; }
/// <summary>
/// 输出平滑的阀值,只有超出阀值,才平滑
/// </summary>
double ThresholdHeatSigma { get; set; }
/// <summary>
/// 自控时,不能调整总体上升下降
/// </summary>
bool IsForbidUpDown { get; set; }
/// <summary>
/// 厚度控制线 , 厚度% 大于 厚度控制线 自动才会加热控制
/// </summary>
int CtrlLine { get; set; }
/// <summary>
/// 最大加热量 默认100%
/// </summary>
int MaxHeat { get; set; }
#endregion
#region 对位
/// <summary>
/// 自动对位
/// </summary>
bool IsAutoONo { get; set; }
/// <summary>
/// 当前正在自动对位模式
/// </summary>
AutoONoStatusEnum AutoONoStatus { get; }
/// <summary>
/// 自动对位模式 信息
/// </summary>
string AutoONoMsg { get; }
/// <summary>
/// 自动对位 那幅空的图
/// </summary>
long AutoONoId0 { get; }
/// <summary>
/// 自动对位 加热后生效的图
/// </summary>
long AutoONoId1 { get; }
#endregion
#region 状态
/// <summary>
/// 对应的100% 数据,单位是% 数量是 ChannelCnt
/// </summary>
double[] ThickPercents { get; }
/// <summary>
/// 当前方向的加热策略,必须保证 0~100
/// </summary>
int[] Heats { get; }
/// <summary>
/// 加热偏移量
/// </summary>
int[] Offsets { get; }
/// <summary>
/// Heats+Offsets+Base, 必须保证0~100
/// </summary>
int[] PreHeats { get; }
/// <summary>
/// PreHeat 每3个计算的sigma, 最大值
/// </summary>
double MaxHeatSigma { get; }
#endregion
#region 功能
/// <summary>
/// 参数应用
/// </summary>
void Apply();
/// <summary>
/// 手动调整加热增量
/// </summary>
/// <param name="idx"></param>
/// <param name="change"></param>
void ModifyOffset(int idx, int change);
/// <summary>
/// 参数是 baseheatoffset 的增量
/// </summary>
/// <param name="change"></param>
void ModifyBase(int change);
/// <summary>
/// 清空HeatOffset
/// </summary>
void ClearOffsets();
/// <summary>
/// 清空PreHeats
/// </summary>
void ClearPreHeats();
/// <summary>
/// 执行 HeatOffset = ThickPercent * Factor
/// </summary>
void Cal();
/// <summary>
/// 平滑 PreHeats
/// </summary>
void Smooth();
/// <summary>
/// 加热输出应用
/// Heats = PreHeats, Offsets = 0, Base = 0
/// </summary>
void HeatApply();
#endregion
}
public enum AutoONoStatusEnum
{
/// <summary>
/// 等待 没有加热,厚度稳定
/// </summary>
Init,
/// <summary>
/// 厚度已经稳定,对位加热, 等待结果
/// </summary>
Step2,
/// <summary>
/// 成功找到准确的复位区号与Kp
/// </summary>
Success,
/// <summary>
/// 失败,对位过程有大波动
/// </summary>
Fail
}
}