Merge branch 'master' of http://www.scserverddns.top:13000/sc/DyeingComputer
This commit is contained in:
commit
9706eb2758
1 file changed
+55
-20
@@ -23,6 +23,7 @@ using OpenTK.Graphics.ES11;
|
|||||||
using DyeingComputer.Properties;
|
using DyeingComputer.Properties;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using static DyeingComputer.Windows.ViewStep;
|
using static DyeingComputer.Windows.ViewStep;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
|
||||||
namespace DyeingComputer.ViewModel
|
namespace DyeingComputer.ViewModel
|
||||||
@@ -63,22 +64,21 @@ namespace DyeingComputer.ViewModel
|
|||||||
UPort(); //启动串口
|
UPort(); //启动串口
|
||||||
}
|
}
|
||||||
|
|
||||||
double ST11;
|
double MT33;
|
||||||
void SYS_SET()
|
void SYS_SET()
|
||||||
{
|
{
|
||||||
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||||
SQLiteHelpers.Open(); //打开数据库
|
SQLiteHelpers.Open(); //打开数据库
|
||||||
dt_sys = SQLiteHelpers.ExecuteDataSet("select * from System", null).Tables[0]; //读取表写入缓存
|
dt_sys = SQLiteHelpers.ExecuteDataSet("select * from Parameters order by ParameterID desc", null).Tables[0]; //读取表写入缓存
|
||||||
SQLiteHelpers.Close();
|
SQLiteHelpers.Close();
|
||||||
|
|
||||||
ST11 = Convert.ToDouble(Selet_sys("ST11"));//温度偏差参数
|
|
||||||
|
|
||||||
pid.Kp = Convert.ToDouble(Selet_sys("ST01")); //读取pid
|
MT33 = Convert.ToDouble(Selet_sys("MT33"));//温度偏差参数
|
||||||
pid.Ki = Convert.ToDouble(Selet_sys("ST02"));
|
pid.Kp = Convert.ToDouble(Selet_sys("MT21")); //读取pid
|
||||||
pid.Kd = Convert.ToDouble(Selet_sys("ST03"));
|
pid.Ki = Convert.ToDouble(Selet_sys("MT22"));
|
||||||
pid.N = Convert.ToDouble(Selet_sys("ST04"));
|
pid.Kd = Convert.ToDouble(Selet_sys("MT23"));
|
||||||
pid.OutputUpperLimit = Convert.ToDouble(Selet_sys("ST05"));
|
pid.N = Convert.ToDouble(Selet_sys("MT24"));
|
||||||
pid.OutputLowerLimit = Convert.ToDouble(Selet_sys("ST06"));
|
pid.OutputUpperLimit = Convert.ToDouble(Selet_sys("MT25"));
|
||||||
|
pid.OutputLowerLimit = Convert.ToDouble(Selet_sys("MT26"));
|
||||||
}
|
}
|
||||||
DataTable dt_sys = new DataTable();
|
DataTable dt_sys = new DataTable();
|
||||||
public string Selet_sys(string key)//配置缓存
|
public string Selet_sys(string key)//配置缓存
|
||||||
@@ -152,21 +152,21 @@ namespace DyeingComputer.ViewModel
|
|||||||
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||||
{
|
{
|
||||||
Sys_Time = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
|
Sys_Time = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
|
||||||
Work_Temp = (Convert.ToDouble(Selet_dta("4001")) + ST11)/10 + " ℃";
|
Work_Temp = (Convert.ToDouble(Selet_dta("4001")) + MT33) /10 + " ℃";
|
||||||
Work_Numder = WorkNumder.ToString();
|
Work_Numder = WorkNumder.ToString();
|
||||||
// Status_Str = "qweqeqwqqfwfqef";
|
// Status_Str = "qweqeqwqqfwfqef";
|
||||||
|
|
||||||
if (LINK_OK) Modbus_link();
|
if (LINK_OK) Modbus_link();
|
||||||
if (!SETP_runtime) STEP_RUN();
|
|
||||||
|
|
||||||
DIDETime++;
|
DIDETime++;
|
||||||
|
STEP_RUN();
|
||||||
IO_data();
|
IO_data();
|
||||||
}
|
}
|
||||||
void Tick_Event_5S(object sender, EventArgs e)//Tick_Event周期执行事件5S
|
void Tick_Event_5S(object sender, EventArgs e)//Tick_Event周期执行事件5S
|
||||||
{
|
{
|
||||||
if (!LINK_OK) Modbus_link();
|
if (!LINK_OK) Modbus_link();
|
||||||
if (Name_err != null) Status_Str = Name_err.ToString();
|
if (Name_err != null) Status_Str = Name_err.ToString();
|
||||||
if(SETP_runtime) STEP_RUN();
|
// if(SETP_runtime) STEP_RUN();
|
||||||
}
|
}
|
||||||
void DisTimer_100MS(object sender, EventArgs e)//Tick_Event周期执行事件100MS
|
void DisTimer_100MS(object sender, EventArgs e)//Tick_Event周期执行事件100MS
|
||||||
{
|
{
|
||||||
@@ -181,7 +181,12 @@ namespace DyeingComputer.ViewModel
|
|||||||
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;
|
bool SETP_runtime = false; //步骤开始
|
||||||
|
bool STEP_finish = false; //步骤结束
|
||||||
|
int STEP_TIME = 0; //步骤计时S
|
||||||
|
int THL_mode = 0; //温控模式 0保温 1加热 2降
|
||||||
|
double TEMP_co = 0; //计算温度
|
||||||
|
|
||||||
|
|
||||||
public void STEP_START(object sender, AddressUpdateEventArgs e)
|
public void STEP_START(object sender, AddressUpdateEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -192,13 +197,17 @@ namespace DyeingComputer.ViewModel
|
|||||||
STEP_P2 = Convert.ToDouble(e.P2);
|
STEP_P2 = Convert.ToDouble(e.P2);
|
||||||
STEP_P3 = Convert.ToDouble(e.P3);
|
STEP_P3 = Convert.ToDouble(e.P3);
|
||||||
|
|
||||||
updata_dtm("1003",Convert.ToDouble( e.P2)/12);
|
double t_t = Convert.ToDouble(Selet_dtm("1010"));
|
||||||
|
if (STEP_P1 > t_t) { THL_mode = 1; }
|
||||||
|
else if (STEP_P1 < t_t) { THL_mode = 2; }
|
||||||
|
|
||||||
SETP_runtime=true;
|
updata_dtm("1003", STEP_P2 / 60);
|
||||||
//STEP_RUN();
|
STEP_TIME = Convert.ToInt16(STEP_P3) * 60;
|
||||||
|
SETP_runtime =true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TimeSpan ts=new TimeSpan(1);//1秒间隔
|
||||||
void STEP_RUN()
|
void STEP_RUN()
|
||||||
{
|
{
|
||||||
if (SETP_runtime)
|
if (SETP_runtime)
|
||||||
@@ -206,7 +215,33 @@ namespace DyeingComputer.ViewModel
|
|||||||
switch (STEP_ID)
|
switch (STEP_ID)
|
||||||
{
|
{
|
||||||
case "001":
|
case "001":
|
||||||
|
double TO = 0;
|
||||||
|
if (THL_mode == 0) //保温
|
||||||
|
{
|
||||||
|
STEP_TIME--;
|
||||||
|
if (STEP_TIME == 0) STEP_finish = true;
|
||||||
|
|
||||||
|
int TIME_H = STEP_TIME / 3600;
|
||||||
|
int TIME_M = (STEP_TIME - TIME_H * 3600) / 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);
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
else if (THL_mode == 2)//降温
|
||||||
|
{
|
||||||
|
TEMP_co = TEMP_co - (STEP_P2 / 60);
|
||||||
|
TO = pid.PID_iterate(TEMP_co, Selet_dtm("1010"), ts);
|
||||||
|
TO = Math.Abs(TO);
|
||||||
|
if (STEP_P1 > Selet_dtm("1010")) THL_mode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
updata_dtm("1004", TO);
|
||||||
|
updata_dtm("1005", TEMP_co);
|
||||||
break;
|
break;
|
||||||
case "007":
|
case "007":
|
||||||
|
|
||||||
@@ -233,7 +268,7 @@ namespace DyeingComputer.ViewModel
|
|||||||
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 = Properties.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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -343,12 +378,12 @@ namespace DyeingComputer.ViewModel
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Selet_dtm(string key)//M寄存器
|
public double Selet_dtm(string key)//M寄存器
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DataRow[] arrRows = dt_m.Select("ID='" + key+"'");
|
DataRow[] arrRows = dt_m.Select("ID='" + key+"'");
|
||||||
int index = Convert.ToInt16(arrRows[0]["Value"].ToString());
|
double index = Convert.ToDouble(arrRows[0]["Value"].ToString());
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
Reference in new issue
Block a user