sc 1 year ago
parent
commit
577f67a4f1
  1. 56
      ViewModel/MainWindowViewModel.cs

56
ViewModel/MainWindowViewModel.cs

@ -64,10 +64,11 @@ namespace DyeingComputer.ViewModel
UPort(); //启动串口
}
private static double MT05;//主缸排水延时
private static double MT06;//主缸排水延时
private static int MT05;//主缸排水延时
private static int MT06;//主缸排水延时
private static double MT16;//流量计数系数
private static double MT33;//主缸温度偏差
private static double MT90;//呼叫操作员
private static int MT90;//呼叫操作员
void SYS_SET()
{
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
@ -82,10 +83,11 @@ namespace DyeingComputer.ViewModel
pid.OutputUpperLimit = Convert.ToDouble(Selet_sys("MT25"));
pid.OutputLowerLimit = Convert.ToDouble(Selet_sys("MT26"));
MT05 = Convert.ToDouble(Selet_sys("MT05"));//主缸排水延时
MT06 = Convert.ToDouble(Selet_sys("MT06"));//动力排水延时
MT05 = Convert.ToInt16(Selet_sys("MT05"));//主缸排水延时
MT06 = Convert.ToInt16(Selet_sys("MT06"));//动力排水延时
MT16 = Convert.ToDouble(Selet_sys("MT16"));//流量计数系数
MT33 = Convert.ToDouble(Selet_sys("MT33"));//温度偏差参数
MT90 = Convert.ToDouble(Selet_sys("MT90"));//呼叫操作员
MT90 = Convert.ToInt16(Selet_sys("MT90"));//呼叫操作员
}
@ -148,9 +150,9 @@ namespace DyeingComputer.ViewModel
//设置定时器
DispatcherTimer disTimer = new DispatcherTimer
{
Interval = TimeSpan.FromMilliseconds(100) //毫秒
Interval = TimeSpan.FromMilliseconds(500) //毫秒
};
disTimer.Tick += new EventHandler(DisTimer_100MS);//每一秒执行的方法
disTimer.Tick += new EventHandler(DisTimer_500MS);//每一秒执行的方法
disTimer.Start();//计时开始
}//时间周期初始化
@ -165,11 +167,11 @@ namespace DyeingComputer.ViewModel
Work_Temp = Selet_dtm("1010") + " ℃";
Work_Numder = WorkNumder.ToString();
if (LINK_OK) Modbus_link();
// if (LINK_OK) Modbus_link();
if(!SETP_runtime) DIDETime++;
STEP_RUN();
IO_data();
IO_view();
if (!string.IsNullOrEmpty(Name_err.ToString())) Status_Str = Name_err.ToString();
}
@ -180,8 +182,10 @@ namespace DyeingComputer.ViewModel
if (string.IsNullOrEmpty(Name_err.ToString()) && ((Selet_dtm("1010") < 10) || (Selet_dtm("1010") > 160)))
{ Status_Str = Resources.Temperature + Resources.Sensor + Resources.Malfunction; } //温度故障提示
}
void DisTimer_100MS(object sender, EventArgs e)//Tick_Event周期执行事件100MS
void DisTimer_500MS(object sender, EventArgs e)//Tick_Event周期执行事件100MS
{
Modbus_link();
IO_data();
if (!string.IsNullOrEmpty(Name_err.ToString()) && (!ERR_JOG)) //有故障信息,无故障保持
{
ERR_JOG = true;
@ -875,21 +879,25 @@ namespace DyeingComputer.ViewModel
SQLiteHelpers.Close();
}
async void IO_data()//刷新
private async void IO_data()//刷新
{
updata_dtm("1001", LINK_RUN);
updata_dtm("1002", LINK_ERR);
updata_dtm("1010", (Convert.ToDouble(Selet_dta("4001")) + MT33)/10);
updata_dtm("1006", Selet_dta("4006"));
updata_dtm("1015", Selet_dta("4007"));
updata_dtm("1016", Selet_dta("4006") * MT16);
await Task.Run(() =>
{
for (ushort i = 0; i < DO_L; i++) { updata_dtd((i + 2001).ToString(), DO[i]); }
//for (ushort i = 0; i < DQ_L; i++) { updata_dtd((i + 3001).ToString(), DQ[i]); }
for (ushort i = 0; i < DO_L; i++) { updata_dtd((i + 2001).ToString(), DO[i]); }
for (ushort i = 0; i < DQ_L; i++) { DQ[i] = Selet_dtd((i + 3001).ToString()); }
for (ushort i = 0; i < RW_L; i++) { updata_dta((i + 4001).ToString(), RW[i]); }
for (ushort i = 0; i < DW_L; i++) { DW[i] = Convert.ToUInt16(Selet_dta((i + 5001).ToString())); }
});
}
private async void IO_view()
{
await Task.Run(() =>
{
SYSData_A = ToObservableCollection<DATA_A>(dt_a);
@ -914,10 +922,11 @@ namespace DyeingComputer.ViewModel
}
public static bool Selet_dtd(string key)//D寄存器
{
try {
DataRow[] arrRows = dt_d.Select("ID='" + key + "'");
bool index = Convert.ToBoolean(arrRows[0]["DIO"].ToString());
return index;
try
{
DataRow[] arrRows = dt_d.Select("ID='" + key + "'");
bool index = Convert.ToBoolean(arrRows[0]["DIO"].ToString());
return index;
}
catch (Exception ex)
{
@ -927,10 +936,11 @@ namespace DyeingComputer.ViewModel
}
public static int Selet_dta(string key)//A寄存器
{
try {
DataRow[] arrRows = dt_a.Select("ID='" + key + "'");
int index = Convert.ToInt16(arrRows[0]["AIO"].ToString());
return index;
try
{
DataRow[] arrRows = dt_a.Select("ID='" + key + "'");
int index = Convert.ToInt16(arrRows[0]["AIO"].ToString());
return index;
}
catch (Exception ex)
{

Loading…
Cancel
Save