diff --git a/ViewModel/MainWindowViewModel.cs b/ViewModel/MainWindowViewModel.cs index e6fd244..e0c6409 100644 --- a/ViewModel/MainWindowViewModel.cs +++ b/ViewModel/MainWindowViewModel.cs @@ -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)); } - } - else if (THL_mode == 2) { Updata_dta("4001", (int)(Selet_dta("4001") - Selet_dta("5002") / 100*_rd)); } + 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)); } + + + + + } public static DataTable dt_d = new DataTable("DIO");