|
|
@ -1054,7 +1054,7 @@ namespace DyeingComputer.ViewModel |
|
|
|
{ |
|
|
|
TO = pid.PID_iterate(STEP_P1, T, ts); |
|
|
|
TEMP_co = STEP_P1; |
|
|
|
if (TO < 0) TO = 0; |
|
|
|
//if (TO < 0) TO = 0;
|
|
|
|
|
|
|
|
TIME_H = STEP_TIME / 3600; |
|
|
|
TIME_M = (STEP_TIME - TIME_H * 3600) / 60; |
|
|
@ -1063,11 +1063,6 @@ namespace DyeingComputer.ViewModel |
|
|
|
if (STEP_TIME <= 0) |
|
|
|
{ |
|
|
|
STEP_finish = true; |
|
|
|
Updata_dtm("1004", 0); |
|
|
|
Updata_dtd("3009", false); |
|
|
|
Updata_dtd("3010", false); |
|
|
|
Updata_dta("5001", 0); |
|
|
|
Updata_dta("5002", 0); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
@ -1079,9 +1074,16 @@ namespace DyeingComputer.ViewModel |
|
|
|
if (STEP_P1 > TEMP_co) TEMP_co = TEMP_co + (STEP_P2 / 60); |
|
|
|
TO = pid.PID_iterate(TEMP_co, T, ts); |
|
|
|
if (TO < 0) TO = 0; |
|
|
|
if ((TEMP_co < T) || (T - TEMP_co > 3)) TO = 0; |
|
|
|
if (TEMP_co < T-0.5) |
|
|
|
{ |
|
|
|
TO = 0; |
|
|
|
pid.ResetController(); |
|
|
|
} |
|
|
|
if (STEP_P1 < T) |
|
|
|
{ |
|
|
|
Updata_dta("5001", 0); |
|
|
|
Updata_dtm("1004", 0); |
|
|
|
TO = 0; |
|
|
|
THL_mode = 0; |
|
|
|
TIME_M = 0; |
|
|
|
} |
|
|
@ -1111,6 +1113,9 @@ namespace DyeingComputer.ViewModel |
|
|
|
TO = Math.Abs(TO); |
|
|
|
if (STEP_P1 > T) |
|
|
|
{ |
|
|
|
Updata_dta("5002", 0); |
|
|
|
Updata_dtm("1005", 0); |
|
|
|
TO = 0; |
|
|
|
THL_mode = 0; |
|
|
|
TIME_M = 0; |
|
|
|
} |
|
|
@ -1136,8 +1141,33 @@ namespace DyeingComputer.ViewModel |
|
|
|
Updata_dtm("1005", TEMP_co); |
|
|
|
if (MT12 == 1)//输出类型0开关1模拟
|
|
|
|
{ |
|
|
|
if (THL_mode == 2) Updata_dta("5002", Convert.ToInt16(TO)); |
|
|
|
if (THL_mode == 1) Updata_dta("5001", Convert.ToInt16(TO)); |
|
|
|
if (THL_mode == 2) |
|
|
|
{ |
|
|
|
Updata_dta("5002", Convert.ToInt16(TO)); |
|
|
|
Updata_dta("5001", 0); |
|
|
|
Updata_dtd("3010", true); |
|
|
|
Updata_dtd("3009", false); |
|
|
|
} |
|
|
|
if (THL_mode == 1) |
|
|
|
{ |
|
|
|
Updata_dta("5001", Convert.ToInt16(TO)); |
|
|
|
Updata_dta("5002", 0); |
|
|
|
Updata_dtd("3009", true); |
|
|
|
Updata_dtd("3010", false); |
|
|
|
} |
|
|
|
if (THL_mode == 0) |
|
|
|
{ |
|
|
|
if (TO > 0) |
|
|
|
{ |
|
|
|
Updata_dta("5001", Convert.ToInt16(TO)); |
|
|
|
Updata_dta("5002", 0); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Updata_dta("5002", Convert.ToInt16(TO)); |
|
|
|
Updata_dta("5001", 0); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
@ -1156,6 +1186,14 @@ namespace DyeingComputer.ViewModel |
|
|
|
else { Updata_dtd("3009", false); }//升温
|
|
|
|
} |
|
|
|
} |
|
|
|
if (STEP_finish) |
|
|
|
{ |
|
|
|
Updata_dtm("1004", 0); |
|
|
|
Updata_dtd("3009", false); |
|
|
|
Updata_dtd("3010", false); |
|
|
|
Updata_dta("5001", 0); |
|
|
|
Updata_dta("5002", 0); |
|
|
|
} |
|
|
|
break;//功能模块001温度控制
|
|
|
|
case "007": |
|
|
|
if (STEP_P1.ToString() == "1") |
|
|
@ -3228,14 +3266,21 @@ namespace DyeingComputer.ViewModel |
|
|
|
private void Simulate()//模拟
|
|
|
|
{ |
|
|
|
double _rd = (double)_random.Next(1, 5) / 10; |
|
|
|
if (THL_mode == 1 || THL_mode == 0) { |
|
|
|
if (THL_mode == 1 || THL_mode == 0) |
|
|
|
{ |
|
|
|
if (Selet_dta("4001") > 16) |
|
|
|
{ |
|
|
|
Updata_dta("4001", (int)(Selet_dta("4001") + Selet_dta("5001") / 100 * _rd)); |
|
|
|
Updata_dta("4001", (int)(Selet_dta("4001") - _rd)); |
|
|
|
Updata_dta("4001", (int)(Selet_dta("4001") - _rd/10)); |
|
|
|
} |
|
|
|
Updata_dta("4001", (int)(Selet_dta("4001") + Selet_dta("5001") / 50 * _rd)); |
|
|
|
} |
|
|
|
else if (THL_mode == 2) { Updata_dta("4001", (int)(Selet_dta("4001") - Selet_dta("5002") / 100*_rd)); } |
|
|
|
else if (THL_mode == 2) |
|
|
|
{ Updata_dta("4001", (int)(Selet_dta("4001") - Selet_dta("5002") / 100*_rd)); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static DataTable dt_d = new DataTable("DIO"); |
|
|
|