|
@ -183,28 +183,27 @@ namespace DyeingComputer.ViewModel |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static int WORK_RUN = 0; //运行状态0停止1暂停2运行
|
|
|
string STEP_ID = "0"; |
|
|
string STEP_ID = "0"; |
|
|
double STEP_P1 = 0; |
|
|
double STEP_P1 = 0; |
|
|
double STEP_P2 = 0; |
|
|
double STEP_P2 = 0; |
|
|
double STEP_P3 = 0; |
|
|
double STEP_P3 = 0; |
|
|
double STEP_P4 = 0; |
|
|
double STEP_P4 = 0; |
|
|
double STEP_P5 = 0; |
|
|
double STEP_P5 = 0; |
|
|
bool SETP_runtime = false; //步骤开始
|
|
|
int SETP_runtime; //步骤开始
|
|
|
bool STEP_finish = false; //步骤结束
|
|
|
bool STEP_finish = false; //步骤结束
|
|
|
int STEP_TIME = 0; //步骤计时S
|
|
|
int STEP_TIME = 0; //步骤计时S
|
|
|
int THL_mode = 0; //温控模式 0保温 1加热 2降
|
|
|
int THL_mode = 0; //温控模式 0保温 1加热 2降
|
|
|
double TEMP_co = 0; //计算温度
|
|
|
double TEMP_co = 0; //计算温度
|
|
|
|
|
|
|
|
|
|
|
|
public void STEP_START(string ID,double P1,double P2,double P3,double P4,double P5) |
|
|
public void STEP_START(AddressUpdateEventArgs e) |
|
|
|
|
|
{ |
|
|
{ |
|
|
if (e.StepID == "001") |
|
|
if (ID == "001") |
|
|
{ |
|
|
{ |
|
|
STEP_ID = "001"; |
|
|
STEP_ID = "001"; |
|
|
STEP_P1 = Convert.ToDouble(e.P1); |
|
|
STEP_P1 = Convert.ToDouble(P1); |
|
|
STEP_P2 = Convert.ToDouble(e.P2); |
|
|
STEP_P2 = Convert.ToDouble(P2); |
|
|
STEP_P3 = Convert.ToDouble(e.P3); |
|
|
STEP_P3 = Convert.ToDouble(P3); |
|
|
|
|
|
|
|
|
double t_t = Convert.ToDouble(Selet_dtm("1010")); |
|
|
double t_t = Convert.ToDouble(Selet_dtm("1010")); |
|
|
if (STEP_P1 > t_t) { THL_mode = 1; } |
|
|
if (STEP_P1 > t_t) { THL_mode = 1; } |
|
@ -213,18 +212,21 @@ namespace DyeingComputer.ViewModel |
|
|
TEMP_co = t_t; |
|
|
TEMP_co = t_t; |
|
|
updata_dtm("1003", STEP_P2 / 600); |
|
|
updata_dtm("1003", STEP_P2 / 600); |
|
|
STEP_TIME = Convert.ToInt16(STEP_P3) * 60; |
|
|
STEP_TIME = Convert.ToInt16(STEP_P3) * 60; |
|
|
SETP_runtime =true; |
|
|
WORK_RUN = 2; |
|
|
|
|
|
SETP_runtime =1; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TimeSpan ts=new TimeSpan(1);//1秒间隔
|
|
|
TimeSpan ts=new TimeSpan(1);//1秒间隔
|
|
|
void STEP_RUN() |
|
|
void STEP_RUN() |
|
|
{ |
|
|
{ |
|
|
if (SETP_runtime) |
|
|
if (WORK_RUN == 2) |
|
|
{ |
|
|
{ |
|
|
switch (STEP_ID) |
|
|
// if (SETP_runtime == 1)
|
|
|
|
|
|
// {
|
|
|
|
|
|
if (STEP_ID == "001") |
|
|
{ |
|
|
{ |
|
|
case "001": |
|
|
|
|
|
double TO = 0; |
|
|
double TO = 0; |
|
|
double T = Selet_dtm("1010"); //实际温度
|
|
|
double T = Selet_dtm("1010"); //实际温度
|
|
|
if (THL_mode == 0) //保温
|
|
|
if (THL_mode == 0) //保温
|
|
@ -238,14 +240,14 @@ namespace DyeingComputer.ViewModel |
|
|
int TIME_H = STEP_TIME / 3600; |
|
|
int TIME_H = STEP_TIME / 3600; |
|
|
int TIME_M = (STEP_TIME - TIME_H * 3600) / 60; |
|
|
int TIME_M = (STEP_TIME - TIME_H * 3600) / 60; |
|
|
int TIME_S = STEP_TIME - TIME_H * 3600 - TIME_M * 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); |
|
|
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)//升温
|
|
|
else if (THL_mode == 1)//升温
|
|
|
{ |
|
|
{ |
|
|
TEMP_co = TEMP_co + (STEP_P2 / 60); |
|
|
TEMP_co = TEMP_co + (STEP_P2 / 60); |
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
if (TO < 0) TO = 0; |
|
|
if (TO < 0) TO = 0; |
|
|
if (STEP_P1 <T) THL_mode = 0; |
|
|
if (STEP_P1 < T) THL_mode = 0; |
|
|
} |
|
|
} |
|
|
else if (THL_mode == 2)//降温
|
|
|
else if (THL_mode == 2)//降温
|
|
|
{ |
|
|
{ |
|
@ -258,35 +260,33 @@ namespace DyeingComputer.ViewModel |
|
|
|
|
|
|
|
|
updata_dtm("1004", TO); |
|
|
updata_dtm("1004", TO); |
|
|
updata_dtm("1005", TEMP_co); |
|
|
updata_dtm("1005", TEMP_co); |
|
|
break; |
|
|
|
|
|
case "007": |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
case "008": |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
case "013": |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
} |
|
|
case "015": |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
case "017": |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
// }
|
|
|
default: break; |
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if (Name_err == null)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// Status_Str = Resources.Await;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
} |
|
|
} |
|
|
|
|
|
else if (WORK_RUN == 1) |
|
|
|
|
|
{ |
|
|
|
|
|
Status_Str = Resources. Paused; |
|
|
} |
|
|
} |
|
|
else |
|
|
else if (WORK_RUN == 0) |
|
|
{ |
|
|
{ |
|
|
if (Name_err == null) |
|
|
if (Name_err == null) |
|
|
{ |
|
|
{ |
|
|
int TIMEH = DIDETime / 3600; |
|
|
int TIMEH = DIDETime / 3600; |
|
|
int TIMEM = (DIDETime - TIMEH * 3600) / 60; |
|
|
int TIMEM = (DIDETime - TIMEH * 3600) / 60; |
|
|
int TIMES = DIDETime - TIMEH*3600 - TIMEM*60; |
|
|
int TIMES = DIDETime - TIMEH * 3600 - TIMEM * 60; |
|
|
Status_Str = Resources.Dide + string.Format(" {0:D4}", TIMEH) +":"+ string.Format(" {0:D2}", TIMEM) + ":" + string.Format(" {0:D2}", TIMES); |
|
|
Status_Str = Resources.Dide + string.Format(" {0:D4}", TIMEH) + ":" + string.Format(" {0:D2}", TIMEM) + ":" + string.Format(" {0:D2}", TIMES); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -389,9 +389,9 @@ namespace DyeingComputer.ViewModel |
|
|
|
|
|
|
|
|
await Task.Run(() => |
|
|
await Task.Run(() => |
|
|
{ |
|
|
{ |
|
|
SYSData_A = ToObservableCollection<DATA_A>(dt_a); |
|
|
// SYSData_A = ToObservableCollection<DATA_A>(dt_a);
|
|
|
SYSData_D = ToObservableCollection<DATA_D>(dt_d); |
|
|
// SYSData_D = ToObservableCollection<DATA_D>(dt_d);
|
|
|
SYSData_M = ToObservableCollection<DATA_M>(dt_m); |
|
|
// SYSData_M = ToObservableCollection<DATA_M>(dt_m);
|
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|