|
|
@ -184,17 +184,17 @@ namespace DyeingComputer.ViewModel |
|
|
|
|
|
|
|
|
|
|
|
public static int WORK_RUN = 0; //运行状态0停止1暂停2运行
|
|
|
|
string STEP_ID = "0"; |
|
|
|
double STEP_P1 = 0; |
|
|
|
double STEP_P2 = 0; |
|
|
|
double STEP_P3 = 0; |
|
|
|
double STEP_P4 = 0; |
|
|
|
double STEP_P5 = 0; |
|
|
|
int SETP_runtime; //步骤开始
|
|
|
|
bool STEP_finish = false; //步骤结束
|
|
|
|
int STEP_TIME = 0; //步骤计时S
|
|
|
|
int THL_mode = 0; //温控模式 0保温 1加热 2降
|
|
|
|
double TEMP_co = 0; //计算温度
|
|
|
|
private string STEP_ID = "0"; |
|
|
|
private double STEP_P1 = 0; |
|
|
|
private double STEP_P2 = 0; |
|
|
|
private double STEP_P3 = 0; |
|
|
|
private double STEP_P4 = 0; |
|
|
|
private double STEP_P5 = 0; |
|
|
|
private int SETP_runtime; //步骤开始
|
|
|
|
private bool STEP_finish = false; //步骤结束
|
|
|
|
private int STEP_TIME = 0; //步骤计时S
|
|
|
|
private int THL_mode = 0; //温控模式 0保温 1加热 2降
|
|
|
|
private double TEMP_co = 0; //计算温度
|
|
|
|
|
|
|
|
public void STEP_START(string ID,double P1,double P2,double P3,double P4,double P5) |
|
|
|
{ |
|
|
@ -213,70 +213,71 @@ namespace DyeingComputer.ViewModel |
|
|
|
updata_dtm("1003", STEP_P2 / 600); |
|
|
|
STEP_TIME = Convert.ToInt16(STEP_P3) * 60; |
|
|
|
WORK_RUN = 2; |
|
|
|
SETP_runtime =1; |
|
|
|
SETP_runtime = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
TimeSpan ts=new TimeSpan(1);//1秒间隔
|
|
|
|
void STEP_RUN() |
|
|
|
{ |
|
|
|
if (WORK_RUN == 2) |
|
|
|
|
|
|
|
/* if (WORK_RUN == 2) |
|
|
|
{ |
|
|
|
// if (SETP_runtime == 1)
|
|
|
|
// {
|
|
|
|
if (STEP_ID == "001") |
|
|
|
if (SETP_runtime == 1) |
|
|
|
{ |
|
|
|
|
|
|
|
double TO = 0; |
|
|
|
double T = Selet_dtm("1010"); //实际温度
|
|
|
|
if (THL_mode == 0) //保温
|
|
|
|
if (STEP_ID == "001") |
|
|
|
{ |
|
|
|
//STEP_TIME--;
|
|
|
|
if (STEP_TIME == 0) { STEP_finish = true; } |
|
|
|
else { STEP_TIME--; } |
|
|
|
TO = pid.PID_iterate(STEP_P1, T, ts); |
|
|
|
if (TO < 0) TO = 0; |
|
|
|
|
|
|
|
int TIME_H = STEP_TIME / 3600; |
|
|
|
int TIME_M = (STEP_TIME - TIME_H * 3600) / 60; |
|
|
|
int TIME_S = STEP_TIME - TIME_H * 3600 - TIME_M * 60; |
|
|
|
Status_Str = Resources.Temperature + Resources.Time + string.Format(" {0:D2}", TIME_H) + ":" + string.Format(" {0:D2}", TIME_M) + ":" + string.Format(" {0:D2}", TIME_S); |
|
|
|
} |
|
|
|
else if (THL_mode == 1)//升温
|
|
|
|
{ |
|
|
|
TEMP_co = TEMP_co + (STEP_P2 / 60); |
|
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
|
if (TO < 0) TO = 0; |
|
|
|
if (STEP_P1 < T) THL_mode = 0; |
|
|
|
|
|
|
|
double TO = 0; |
|
|
|
double T = Selet_dtm("1010"); //实际温度
|
|
|
|
if (THL_mode == 0) //保温
|
|
|
|
{ |
|
|
|
if (STEP_TIME == 0) { STEP_finish = true; } |
|
|
|
else { STEP_TIME--; } |
|
|
|
TO = pid.PID_iterate(STEP_P1, T, ts); |
|
|
|
if (TO < 0) TO = 0; |
|
|
|
|
|
|
|
int TIME_H = STEP_TIME / 3600; |
|
|
|
int TIME_M = (STEP_TIME - TIME_H * 3600) / 60; |
|
|
|
int TIME_S = STEP_TIME - TIME_H * 3600 - TIME_M * 60; |
|
|
|
Status_Str = Resources.Temperature + Resources.Time + string.Format(" {0:D2}", TIME_H) + ":" + string.Format(" {0:D2}", TIME_M) + ":" + string.Format(" {0:D2}", TIME_S); |
|
|
|
} |
|
|
|
else if (THL_mode == 1)//升温
|
|
|
|
{ |
|
|
|
TEMP_co = TEMP_co + (STEP_P2 / 60); |
|
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
|
if (TO < 0) TO = 0; |
|
|
|
if (STEP_P1 < T) THL_mode = 0; |
|
|
|
} |
|
|
|
else if (THL_mode == 2)//降温
|
|
|
|
{ |
|
|
|
TEMP_co = TEMP_co - (STEP_P2 / 60); |
|
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
|
if (TO > 0) TO = 0; |
|
|
|
TO = Math.Abs(TO); |
|
|
|
if (STEP_P1 > T) THL_mode = 0; |
|
|
|
} |
|
|
|
|
|
|
|
updata_dtm("1004", TO); |
|
|
|
updata_dtm("1005", TEMP_co); |
|
|
|
|
|
|
|
} |
|
|
|
else if (THL_mode == 2)//降温
|
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (Name_err == null) |
|
|
|
{ |
|
|
|
TEMP_co = TEMP_co - (STEP_P2 / 60); |
|
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
|
if (TO > 0) TO = 0; |
|
|
|
TO = Math.Abs(TO); |
|
|
|
if (STEP_P1 > T) THL_mode = 0; |
|
|
|
Status_Str = Resources.Await; |
|
|
|
} |
|
|
|
|
|
|
|
updata_dtm("1004", TO); |
|
|
|
updata_dtm("1005", TEMP_co); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// if (Name_err == null)
|
|
|
|
// {
|
|
|
|
// Status_Str = Resources.Await;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
} |
|
|
|
else if (WORK_RUN == 1) |
|
|
|
else if (WORK_RUN == 1) |
|
|
|
{ |
|
|
|
Status_Str = Resources. Paused; |
|
|
|
} |
|
|
|
else if (WORK_RUN == 0) |
|
|
|
Status_Str = Resources.Paused; |
|
|
|
} |
|
|
|
else */ |
|
|
|
if (WORK_RUN == 0) |
|
|
|
{ |
|
|
|
if (Name_err == null) |
|
|
|
{ |
|
|
@ -389,9 +390,9 @@ namespace DyeingComputer.ViewModel |
|
|
|
|
|
|
|
await Task.Run(() => |
|
|
|
{ |
|
|
|
// SYSData_A = ToObservableCollection<DATA_A>(dt_a);
|
|
|
|
// SYSData_D = ToObservableCollection<DATA_D>(dt_d);
|
|
|
|
// SYSData_M = ToObservableCollection<DATA_M>(dt_m);
|
|
|
|
SYSData_A = ToObservableCollection<DATA_A>(dt_a); |
|
|
|
SYSData_D = ToObservableCollection<DATA_D>(dt_d); |
|
|
|
SYSData_M = ToObservableCollection<DATA_M>(dt_m); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|