部分io点修改,添加图片资源,添加注料功能逻辑

This commit is contained in:
sc committed 2025-09-03 19:53:03 +08:00
commit 53eb3be876
9 files changed
+495 -41

No files matched your search

+205 -31
View File
@@ -38,6 +38,7 @@ using static DyeingComputer.UserClass.SqliteHelper;
using static DyeingComputer.ViewModel.MainWindowViewModel;
using static DyeingComputer.Windows.ViewStep;
using static System.Net.WebRequestMethods;
using static System.Security.Cryptography.ECCurve;
using static System.Windows.Forms.AxHost;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
@@ -838,8 +839,8 @@ namespace DyeingComputer.ViewModel
STEP_P1 = Convert.ToDouble(P1);
STEP_P2 = Convert.ToDouble(P2);
STEP_P3 = Convert.ToDouble(P3);
STEP_P4 = Convert.ToDouble(P4);
STEP_P5 = Convert.ToDouble(P5);
STEP_P5 = 0;
STEP_TIME = 0;
SETP_runtime = true;
STEP_finish = false;
break;
@@ -943,6 +944,7 @@ namespace DyeingComputer.ViewModel
STEP_P1 = Convert.ToDouble(P1);
STEP_P2 = Convert.ToDouble(P2);
STEP_P3 = Convert.ToDouble(P3);
STEP_P5 = 0;
SETP_runtime = true;
STEP_finish = false;
break;//药缸加药
@@ -1032,8 +1034,6 @@ namespace DyeingComputer.ViewModel
TimeSpan ts = new TimeSpan(00,00,01);//1秒间隔
private int temp_time10s = 10;//开关周期时间
private bool PH_start = false;
private double TANK1_L,TANK2_L,TANK3_L,TANK1_SL,TANK2_SL,TANK3_SL;//实际加料量|每秒加料量
private double TANK1_Pt, TANK1_Pc, TANK2_Pt, TANK2_Pc, TANK3_Pt, TANK3_Pc;//加料比例开度与模拟
private string TANK1, TANK2, TANK3;//料桶信息
public static string TANK1_DYELOT, TANK2_DYELOT, TANK3_DYELOT;//料单号
private int TANK1_REDYE,TANK1_STEP, TANK2_REDYE, TANK2_STEP, TANK3_REDYE, TANK3_STEP;
@@ -1042,6 +1042,8 @@ namespace DyeingComputer.ViewModel
int TIME_S;
double TO = 0;
double T = 0;
int LT=0;
LiquidDosingController controller;
void STEP_RUN_master()
{
WORK_run = WORK_RUN;
@@ -1407,11 +1409,91 @@ namespace DyeingComputer.ViewModel
// if (errTabler.Rows.Count == 0) Status_Str = Resources.Washing + "(" + Properties.Resources.WaterLevel + ")";
}
else { STEP_finish = true; }
break;//批次水位水洗
break;//批次水位水洗
case "015":
if (STEP_P5 == 0)//入水到水位
{
if (errTabler.Rows.Count == 0) Status_Str = Resources.Washing + ":" + Resources.AddWater + "1";
if (errTabler.Rows.Count == 0) Status_Str = Resources.Washing + "(" + Resources.Overflow + ")";
break;//溢流水洗
if (STEP_P1.ToString() == "1")
{
Updata_dtd("3013", true);
}
else if (STEP_P1.ToString() == "2")
{
Updata_dtd("3014", true);
}
else if (STEP_P1.ToString() == "3")
{
Updata_dtd("3015", true);
}
else if (STEP_P1.ToString() == "4")
{
Updata_dtd("3016", true);
}
if (Selet_dtm("1015") >= STEP_P2) //到达水位
{
ERRinf.ERRinf_d(errTabler, "202");//
STEP_TIME = 0;
STEP_P5 = 1;
}
else
{
if (STEP_TIME > MT44)
{
ERRinf.ERRinf_w(errTabler, Status_Str + "[" + Resources.Abnormal + "]", "202");//写入
}
else
{
STEP_TIME++;
}
}
}
else if (STEP_P5 == 1)//流量水洗
{
if (errTabler.Rows.Count == 0) Status_Str = Resources.Washing + "(" + Resources.Overflow + ")";
Updata_dtd("3020", true);
if (STEP_P1.ToString() == "1")
{
Updata_dtd("3013", true);
}
else if (STEP_P1.ToString() == "2")
{
Updata_dtd("3014", true);
}
else if (STEP_P1.ToString() == "3")
{
Updata_dtd("3015", true);
}
else if (STEP_P1.ToString() == "4")
{
Updata_dtd("3016", true);
}
if (Selet_dtm("1016") >= STEP_P3) //到达水量
{
Updata_dtd("3013", false);
Updata_dtd("3014", false);
Updata_dtd("3015", false);
Updata_dtd("3016", false);
ERRinf.ERRinf_d(errTabler, "202");//
if (errTabler.Rows.Count == 0) Status_Str = Resources.AddWater + ":" + Resources.Finish;
STEP_finish = true;
}
else
{
if (STEP_TIME > MT44)
{
ERRinf.ERRinf_w(errTabler, Status_Str + "[" + Resources.Abnormal + "]", "202");//写入
}
else
{
STEP_TIME++;
}
}
}
break;//溢流水洗
case "017":
if (errTabler.Rows.Count == 0) Status_Str = Resources.Washing + "(" + Properties.Resources.Cooling + ")";
break;//降温水洗
@@ -1480,7 +1562,7 @@ namespace DyeingComputer.ViewModel
if (errTabler.Rows.Count == 0) Status_Str = Resources.Drainage + ":" + Resources.Drainage + "3";
}
Updata_dtd("3020", true);//开排水泵
Updata_dtd("3075", true);//开排水泵
if (Selet_dtm("1015") <= STEP_P2) //排水状态完成
{
ERRinf.ERRinf_d(errTabler, "203");//
@@ -1489,7 +1571,7 @@ namespace DyeingComputer.ViewModel
Updata_dtd("3017", false);
Updata_dtd("3018", false);
Updata_dtd("3019", false);
Updata_dtd("3020", false);//开排水泵
Updata_dtd("3075", false);//开排水泵
if (errTabler.Rows.Count == 0) Status_Str = Resources.Drainage + ":" + Resources.Finish;
STEP_finish = true;
}
@@ -1851,23 +1933,116 @@ namespace DyeingComputer.ViewModel
case "065":
if (STEP_P1 == 1)
{
if ((TANK1_L - Selet_dtm("1017")) > TANK1_SL) { TANK1_Pc = TANK2_Pc - 3.3; }//计算比例
else { TANK1_Pc = TANK1_Pc + 3.3; }
if (((TANK1_Pt - TANK1_Pc) > 5) || ((TANK1_Pt - TANK1_Pc) > -5)) TANK1_Pt = TANK1_Pc;//调整比例
if (STEP_P5 == 0)
{
DosingCurveType Type;
if (STEP_P2 == 1) { Type = DosingCurveType.Parabolic; }
else if (STEP_P2 == 2) { Type = DosingCurveType.Exponential; }
else { Type = DosingCurveType.Linear; }
controller = new LiquidDosingController(
targetTime: STEP_P3 * 60,
maxCapacity: 1000,
curveType: Type,
kP: 0.8, kI: 0.05, kD: 0.1);
controller.StartDosing(Selet_dtm("1017"));
STEP_P5 = 1;
}
else if (STEP_P5 == 1)
{
int valveOpening = Convert.ToInt16(controller.UpdateLevel(Selet_dtm("1017")));
Updata_dta("5005", valveOpening);
if (Selet_dtm("1017") >= MS06)
{
LT = MS07;
Updata_dtd("3035",true);
}
else
{
LT--;
if (LT <= 0)
{
Updata_dtd("3035", false);
STEP_finish = true;
}
}
}
if (errTabler.Rows.Count == 0) Status_Str = Resources.Tank + " 1 :" + Resources.AddTheMedicine;
} //药缸1
else if (STEP_P1 == 2)
{
if ((TANK2_L - Selet_dtm("1018")) > TANK2_SL) { TANK2_Pc = TANK2_Pc - 3.3; }//计算比例
else { TANK2_Pc = TANK2_Pc + 3.3; }
if (((TANK2_Pt - TANK2_Pc) > 5) || ((TANK2_Pt - TANK2_Pc) > -5)) TANK2_Pt = TANK2_Pc;//调整比例
if (STEP_P5 == 0)
{
DosingCurveType Type;
if (STEP_P2 == 1) { Type = DosingCurveType.Parabolic; }
else if (STEP_P2 == 2) { Type = DosingCurveType.Exponential; }
else { Type = DosingCurveType.Linear; }
controller = new LiquidDosingController(
targetTime: STEP_P3 * 60,
maxCapacity: 1000,
curveType: Type,
kP: 0.8, kI: 0.05, kD: 0.1);
controller.StartDosing(Selet_dtm("1018"));
STEP_P5 = 1;
}
else if (STEP_P5 == 1)
{
int valveOpening = Convert.ToInt16(controller.UpdateLevel(Selet_dtm("1018")));
Updata_dta("5006", valveOpening);
if (Selet_dtm("1018") >= MS06)
{
LT = MS07;
Updata_dtd("3045", true);
}
else
{
LT--;
if (LT <= 0)
{
Updata_dtd("3045", false);
STEP_finish = true;
}
}
}
if (errTabler.Rows.Count == 0) Status_Str = Resources.Tank + " 2 :" + Resources.AddTheMedicine;
}//药缸2
else if (STEP_P1 == 3)
{
if ((TANK3_L - Selet_dtm("1019")) > TANK3_SL) { TANK3_Pc = TANK3_Pc - 3.3; }//计算比例
else { TANK3_Pc = TANK3_Pc + 3.3; }
if (((TANK3_Pt - TANK3_Pc) > 5) || ((TANK3_Pt - TANK3_Pc) > -5)) TANK3_Pt = TANK3_Pc;//调整比例
if (STEP_P5 == 0)
{
DosingCurveType Type;
if (STEP_P2 == 1) { Type = DosingCurveType.Parabolic; }
else if (STEP_P2 == 2) { Type = DosingCurveType.Exponential; }
else { Type = DosingCurveType.Linear; }
controller = new LiquidDosingController(
targetTime: STEP_P3 * 60,
maxCapacity: 1000,
curveType: Type,
kP: 0.8, kI: 0.05, kD: 0.1);
controller.StartDosing(Selet_dtm("1019"));
STEP_P5 = 1;
}
else if (STEP_P5 == 1)
{
int valveOpening = Convert.ToInt16(controller.UpdateLevel(Selet_dtm("1019")));
Updata_dta("5007", valveOpening);
if (Selet_dtm("1019") >= MS06)
{
LT = MS07;
Updata_dtd("3035", true);
}
else
{
LT--;
if (LT <= 0)
{
Updata_dtd("3055", false);
STEP_finish = true;
}
}
}
if (errTabler.Rows.Count == 0) Status_Str = Resources.Tank + " 3 :" + Resources.AddTheMedicine;
}//药缸3
break;//药缸加药
@@ -3240,18 +3415,18 @@ namespace DyeingComputer.ViewModel
if (MT18 >= 11) SYSlog = SYSlog + " | " + "11 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1055")));
if (MT18 >= 12) SYSlog = SYSlog + " | " + "12 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1057")));
SYSlog = SYSlog + "\n" + Resources.Cycletime + "Sec";
SYSlog = SYSlog + "\n" + "1 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1030")));
if (MT18 >= 2) SYSlog = SYSlog + " | " + "2 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1031")));
if (MT18 >= 3) SYSlog = SYSlog + " | " + "3 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1032")));
if (MT18 >= 4) SYSlog = SYSlog + "\n" + "4 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1033")));
if (MT18 >= 5) SYSlog = SYSlog + " | " + "5 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1034")));
if (MT18 >= 6) SYSlog = SYSlog + " | " + "6 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1036")));
if (MT18 >= 7) SYSlog = SYSlog + "\n" + "7 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1038")));
if (MT18 >= 8) SYSlog = SYSlog + " | " + "8 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1040")));
if (MT18 >= 9) SYSlog = SYSlog + " | " + "9 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1052")));
if (MT18 >= 10) SYSlog = SYSlog + "\n" + "10 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1054")));
if (MT18 >= 11) SYSlog = SYSlog + " | " + "11 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1056")));
if (MT18 >= 12) SYSlog = SYSlog + " | " + "12 : " + string.Format("{0:D3}", Convert.ToInt16(Selet_dtm("1058")));
SYSlog = SYSlog + "\n" + "1 : " + string.Format("{0:D3}", Selet_dta("4017"));
if (MT18 >= 2) SYSlog = SYSlog + " | " + "2 : " + string.Format("{0:D3}", Selet_dta("4018"));
if (MT18 >= 3) SYSlog = SYSlog + " | " + "3 : " + string.Format("{0:D3}", Selet_dta("4019"));
if (MT18 >= 4) SYSlog = SYSlog + "\n" + "4 : " + string.Format("{0:D3}", Selet_dta("4020"));
if (MT18 >= 5) SYSlog = SYSlog + " | " + "5 : " + string.Format("{0:D3}", Selet_dta("4021"));
if (MT18 >= 6) SYSlog = SYSlog + " | " + "6 : " + string.Format("{0:D3}", Selet_dta("4022"));
if (MT18 >= 7) SYSlog = SYSlog + "\n" + "7 : " + string.Format("{0:D3}", Selet_dta("4023"));
if (MT18 >= 8) SYSlog = SYSlog + " | " + "8 : " + string.Format("{0:D3}", Selet_dta("4024"));
if (MT18 >= 9) SYSlog = SYSlog + " | " + "9 : " + string.Format("{0:D3}", Selet_dta("4025"));
if (MT18 >= 10) SYSlog = SYSlog + "\n" + "10 : " + string.Format("{0:D3}", Selet_dta("4026"));
if (MT18 >= 11) SYSlog = SYSlog + " | " + "11 : " + string.Format("{0:D3}", Selet_dta("4027"));
if (MT18 >= 12) SYSlog = SYSlog + " | " + "12 : " + string.Format("{0:D3}", Selet_dta("4028"));
}//布轮信息
SYSlog = SYSlog + "\n-------------------------------------------------------";
if (SM01 == 1)
@@ -3321,7 +3496,6 @@ namespace DyeingComputer.ViewModel
}
}
public static DataTable dt_d = new DataTable("DIO");