sc 1 year ago
parent
commit
a591908f85
  1. 2
      View/TechnologicalProcessView.xaml.cs
  2. 38
      ViewModel/MainWindowViewModel.cs

2
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(); //关闭连接

38
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 <T) THL_mode = 0;
}
else if (THL_mode == 2)//降温
{
TEMP_co = TEMP_co - (STEP_P2 / 60);
TO = pid.PID_iterate(TEMP_co, Selet_dtm("1010"), ts);
TO = pid.PID_iterate(TEMP_co, T, ts);
if (TO > 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(() =>
{

Loading…
Cancel
Save