diff --git a/View/TechnologicalProcessView.xaml.cs b/View/TechnologicalProcessView.xaml.cs index d0a36de..c45f008 100644 --- a/View/TechnologicalProcessView.xaml.cs +++ b/View/TechnologicalProcessView.xaml.cs @@ -43,7 +43,7 @@ namespace DyeingComputer.View string sql_script = "select * from ProgramSteps where ProgramID = '" + workName + "'"; if (sql != null) sql.Clear(); //清空缓存 - sql = SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取计划表写入缓存 + sql = SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取表写入缓存 name.Text = SQLiteHelpers.ExecuteScalar("select ProgramName from ProgramName where ProgramID = '" + workName + "'", null).ToString(); SQLiteHelpers.Close(); //关闭连接 diff --git a/ViewModel/MainWindowViewModel.cs b/ViewModel/MainWindowViewModel.cs index 72bb2bc..f355130 100644 --- a/ViewModel/MainWindowViewModel.cs +++ b/ViewModel/MainWindowViewModel.cs @@ -62,6 +62,10 @@ namespace DyeingComputer.ViewModel CountDown(); //启动循环任务 SQL_data(); //读数据库 UPort(); //启动串口 + + + AddressUpdateEventArgs e = new AddressUpdateEventArgs("1","001","0","0","120","30","60","0","0"); + STEP_START(e); } double MT33; @@ -72,13 +76,16 @@ namespace DyeingComputer.ViewModel dt_sys = SQLiteHelpers.ExecuteDataSet("select * from Parameters order by ParameterID desc", null).Tables[0]; //读取表写入缓存 SQLiteHelpers.Close(); - MT33 = Convert.ToDouble(Selet_sys("MT33"));//温度偏差参数 pid.Kp = Convert.ToDouble(Selet_sys("MT21")); //读取pid pid.Ki = Convert.ToDouble(Selet_sys("MT22")); pid.Kd = Convert.ToDouble(Selet_sys("MT23")); pid.N = Convert.ToDouble(Selet_sys("MT24")); pid.OutputUpperLimit = Convert.ToDouble(Selet_sys("MT25")); pid.OutputLowerLimit = Convert.ToDouble(Selet_sys("MT26")); + MT33 = Convert.ToDouble(Selet_sys("MT33"));//温度偏差参数 + + + } DataTable dt_sys = new DataTable(); public string Selet_sys(string key)//配置缓存 @@ -152,14 +159,15 @@ namespace DyeingComputer.ViewModel void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S { Sys_Time = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); - Work_Temp = (Convert.ToDouble(Selet_dta("4001")) + MT33) /10 + " ℃"; + + Work_Temp = Selet_dtm("1010") + " ℃"; Work_Numder = WorkNumder.ToString(); // Status_Str = "qweqeqwqqfwfqef"; if (LINK_OK) Modbus_link(); DIDETime++; - STEP_RUN(); + IO_data(); } void Tick_Event_5S(object sender, EventArgs e)//Tick_Event周期执行事件5S @@ -188,7 +196,7 @@ namespace DyeingComputer.ViewModel double TEMP_co = 0; //计算温度 - public void STEP_START(object sender, AddressUpdateEventArgs e) + public void STEP_START(AddressUpdateEventArgs e) { if (e.StepID == "001") { @@ -201,7 +209,8 @@ namespace DyeingComputer.ViewModel if (STEP_P1 > t_t) { THL_mode = 1; } else if (STEP_P1 < t_t) { THL_mode = 2; } - updata_dtm("1003", STEP_P2 / 60); + TEMP_co = t_t; + updata_dtm("1003", STEP_P2 / 600); STEP_TIME = Convert.ToInt16(STEP_P3) * 60; SETP_runtime =true; } @@ -216,10 +225,14 @@ namespace DyeingComputer.ViewModel { case "001": double TO = 0; + double T = Selet_dtm("1010"); //实际温度 if (THL_mode == 0) //保温 { - STEP_TIME--; - if (STEP_TIME == 0) STEP_finish = true; + //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; @@ -229,15 +242,17 @@ namespace DyeingComputer.ViewModel else if (THL_mode == 1)//升温 { TEMP_co = TEMP_co + (STEP_P2 / 60); - TO = pid.PID_iterate(TEMP_co, Selet_dtm("1010"), ts); - if (STEP_P1 < Selet_dtm("1010")) THL_mode = 0; + TO = pid.PID_iterate(TEMP_co, T, ts); + if (TO < 0) TO = 0; + if (STEP_P1 0) TO = 0; TO = Math.Abs(TO); - if (STEP_P1 > Selet_dtm("1010")) THL_mode = 0; + if (STEP_P1 > T) THL_mode = 0; } updata_dtm("1004", TO); @@ -360,6 +375,7 @@ namespace DyeingComputer.ViewModel { updata_dtm("1001", LINK_RUN); updata_dtm("1002", LINK_ERR); + updata_dtm("1010", (Convert.ToDouble(Selet_dta("4001")) + MT33)/10); await Task.Run(() => {