|
|
|
@ -74,9 +74,11 @@ namespace ProductionSystem.Forms
|
|
|
|
|
|
|
|
|
|
#region 各工序的采集点位
|
|
|
|
|
Program.BZ1 = Program.MiddlePointKeyValues.Where(m => m.ParaCategory == "BZ1").ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Program.BZ2 = Program.MiddlePointKeyValues.Where(m => m.ParaCategory == "BZ2").ToList();
|
|
|
|
|
|
|
|
|
|
var entity = Program.BZ2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Program.BZ3 = Program.MiddlePointKeyValues.Where(m => m.ParaCategory == "BZ3").ToList();
|
|
|
|
|
Program.BZ4 = Program.MiddlePointKeyValues.Where(m => m.ParaCategory == "BZ4").ToList();
|
|
|
|
@ -162,12 +164,17 @@ namespace ProductionSystem.Forms
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
{
|
|
|
|
|
ShowMiddleData();
|
|
|
|
|
|
|
|
|
|
}, cancellationTokenSource.Token);
|
|
|
|
|
|
|
|
|
|
hslCurveHistory.RemoveAllCurve();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetMiddleData("BZ1_DB");
|
|
|
|
|
ShowMiddleData2();
|
|
|
|
|
ShowMiddleData2();
|
|
|
|
|
ShowMiddleData2();
|
|
|
|
|
ShowMiddleData2();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -519,8 +526,9 @@ namespace ProductionSystem.Forms
|
|
|
|
|
|
|
|
|
|
//条码值
|
|
|
|
|
private PointKeyValue M248 = Program.CommandPointKeyValues.FirstOrDefault(m => m.Key == "D670");
|
|
|
|
|
//步序
|
|
|
|
|
private PointKeyValue M249 = Program.CommandPointKeyValues.FirstOrDefault(m => m.Key == "M249");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 顶部展示PLC采集数据
|
|
|
|
@ -703,122 +711,122 @@ namespace ProductionSystem.Forms
|
|
|
|
|
middleIsCanRound = false;
|
|
|
|
|
Thread.Sleep(Program.ReadPlcRate);
|
|
|
|
|
|
|
|
|
|
//步序
|
|
|
|
|
var M249 = Program.CommandPointKeyValues.FirstOrDefault(m => m.Key == "M249");
|
|
|
|
|
M249.Val = OmronHelper.GetPlcVal(M249.DataType, M249.Address).val;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 模拟一个值
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var d1300Value = GetPlcValue("D1300");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//步骤1水泵1空载
|
|
|
|
|
if(d1300Value == "1")
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//var electricPoint = Program.electricTestPoints.FirstOrDefault(m => m.Key == "M44");
|
|
|
|
|
//var electricStatus = OmronHelper.GetPlcVal(electricPoint.DataType, electricPoint.Address).val;
|
|
|
|
|
//if (electricStatus == "1.000" || electricStatus == "2.000")
|
|
|
|
|
//{
|
|
|
|
|
// SetMiddleData(Program.electricTestPoints, "ElectricTest");
|
|
|
|
|
//}
|
|
|
|
|
#endregion
|
|
|
|
|
//步骤2水泵2空载
|
|
|
|
|
var d1302Value = GetPlcValue("D1302");
|
|
|
|
|
|
|
|
|
|
M249.Val = "23234234234234";
|
|
|
|
|
switch (M249.Val)
|
|
|
|
|
if (d1302Value == "1")
|
|
|
|
|
{
|
|
|
|
|
//空载
|
|
|
|
|
case "2.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//一段速
|
|
|
|
|
case "3.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//二段升速
|
|
|
|
|
case "4.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//二段速稳定
|
|
|
|
|
case "5.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//三段升速度
|
|
|
|
|
case "6.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//三段速稳定
|
|
|
|
|
case "7.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//内漏
|
|
|
|
|
case "8.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
//单驱
|
|
|
|
|
case "9.000":
|
|
|
|
|
BZ1();
|
|
|
|
|
break;
|
|
|
|
|
case "0.000"://设备待机
|
|
|
|
|
hasWriteStepNum = false;
|
|
|
|
|
Program.IsSendStop = false;
|
|
|
|
|
Program.isCanSend = true;
|
|
|
|
|
//读取配置文件
|
|
|
|
|
//var tempNum = IniHelper.Read("Step", "StepNum", "", iniFilePath);
|
|
|
|
|
//if (tempNum == "10")
|
|
|
|
|
//{
|
|
|
|
|
//写入配置文件
|
|
|
|
|
//IniHelper.Write("Step", "StepNum", "0", iniFilePath);
|
|
|
|
|
ClearMiddleData();
|
|
|
|
|
CurveHelper.SetArrEmpty();
|
|
|
|
|
hasWriteCurveSeciont = false;
|
|
|
|
|
//InitCurveSectionData();//初始化曲线区域数据
|
|
|
|
|
// hslCurveHistory.RemoveAllMarkForeSection();//清空曲线区域
|
|
|
|
|
hslCurveHistory.RenderCurveUI(); // 这步很重要
|
|
|
|
|
Program.cureManualReset.Reset();//停止曲线定时器
|
|
|
|
|
Program.timerEnable = false;
|
|
|
|
|
break;
|
|
|
|
|
case "10.000"://停机
|
|
|
|
|
BZ1();
|
|
|
|
|
if (!hasWriteCurveSeciont)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//步骤3水泵3空载
|
|
|
|
|
var d1304Value = GetPlcValue("D1304");
|
|
|
|
|
|
|
|
|
|
if (d1304Value == "1")
|
|
|
|
|
{
|
|
|
|
|
//AddCurveSection(stepChangeCount);
|
|
|
|
|
hslCurveHistory.RenderCurveUI();
|
|
|
|
|
stepChangeCount = 0;//步序变化次数
|
|
|
|
|
tempStepNum = 0;//临时存储步序号
|
|
|
|
|
hasWriteCurveSeciont = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (!hasWriteStepNum)
|
|
|
|
|
|
|
|
|
|
//步骤4外露模式
|
|
|
|
|
var d1306Value = GetPlcValue("D1306");
|
|
|
|
|
|
|
|
|
|
if(d1306Value == "1")
|
|
|
|
|
{
|
|
|
|
|
//写入配置文件
|
|
|
|
|
IniHelper.Write("Step", "StepNum", "10", iniFilePath);
|
|
|
|
|
hasWriteStepNum = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//串口停止发送报文
|
|
|
|
|
Program.isCanSend = false;
|
|
|
|
|
//发送停止报文
|
|
|
|
|
if (Program.ProtocolDeviceHelper == null)
|
|
|
|
|
|
|
|
|
|
//步骤5模式1内漏
|
|
|
|
|
|
|
|
|
|
var d1308 = GetPlcValue("D1308");
|
|
|
|
|
if(d1308 == "1")
|
|
|
|
|
{
|
|
|
|
|
Program.ProtocolDeviceHelper = new ProtocolDeviceHelper();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
Program.ProtocolDeviceHelper.SendStop(Program.ProtocolConigCode, (MsgFormatEnum)Enum.Parse(typeof(MsgFormatEnum), Program.MsgFormat));
|
|
|
|
|
Program.sendManualReset.Reset();
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
var M299 = Program.CommandPointKeyValues.FirstOrDefault(m => m.Key == "M299");
|
|
|
|
|
if (M299 != null)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//步骤6模式2内漏
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (d1308 == "2")
|
|
|
|
|
{
|
|
|
|
|
//停机成功后,反馈PLC
|
|
|
|
|
var writeStopResult = OmronHelper.WriteToPlc(M299.DataType, M299.Address, "1");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
Program.cureManualReset.Reset();//停止曲线定时器
|
|
|
|
|
Program.timerEnable = false;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
//步骤6出厂位置
|
|
|
|
|
var d1310 = GetPlcValue("D1310");
|
|
|
|
|
if (d1310 == "1")
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//请求上位机保存数据
|
|
|
|
|
var d1900 = GetPlcValue("D1900");
|
|
|
|
|
if (d1900 == "8")
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//待机模式
|
|
|
|
|
if (d1900 == "1")
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
middleIsCanRound = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void ShowMiddleData2()
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(Program.ReadPlcRate);
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ1, "BZ1");
|
|
|
|
|
GetPlc(Program.BZ2, "BZ2");
|
|
|
|
|
GetPlc(Program.BZ3, "BZ3");
|
|
|
|
|
GetPlc(Program.BZ4, "BZ4");
|
|
|
|
|
GetPlc(Program.BZ5, "BZ5");
|
|
|
|
|
GetPlc(Program.BZ6, "BZ6");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public string GetPlcValue(string key)
|
|
|
|
|
{
|
|
|
|
|
var entity= Program.CommandPointKeyValues.FirstOrDefault(m => m.Key == key);
|
|
|
|
|
if (entity != null)
|
|
|
|
|
{
|
|
|
|
|
return OmronHelper.GetPlcVal(entity.DataType, entity.Address).val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return "";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 添加曲线区域
|
|
|
|
|
/// </summary>
|
|
|
|
@ -991,60 +999,20 @@ namespace ProductionSystem.Forms
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void BZ1()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ1, "BZ1");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void BZ2()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ2, "BZ2");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BZ3()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ3, "BZ3");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BZ4()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ4, "BZ4");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BZ5()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ5, "BZ5");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BZ6()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GetPlc(Program.BZ6, "BZ6");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void GetPlc(List<PointKeyValue> values,string txt)
|
|
|
|
|
{
|
|
|
|
|
var Bz1 = values;
|
|
|
|
|
for (int i = 0; i < Bz1.Count; i++)
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < values.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
var electricReadResult = OmronHelper.GetPlcVal(Bz1[i].DataType, Bz1[i].Address);
|
|
|
|
|
Bz1[i].Val = electricReadResult.val;
|
|
|
|
|
var electricReadResult = OmronHelper.GetPlcVal(values[i].DataType, values[i].Address);
|
|
|
|
|
values[i].Val = electricReadResult.val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SetMiddleData(Bz1,txt);
|
|
|
|
|
SetMiddleData(values, txt);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1221,14 +1189,16 @@ namespace ProductionSystem.Forms
|
|
|
|
|
}
|
|
|
|
|
this.Invoke(new Action(() =>
|
|
|
|
|
{
|
|
|
|
|
if (middleMyTestResultControls[j].LblItemText == "总状态")
|
|
|
|
|
{
|
|
|
|
|
result = val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
middleMyTestResultControls[j].TestResultText = result == "1.000" ? "OK" : (result == "2.000" ? "NG" : "");
|
|
|
|
|
middleMyTestResultControls[j].TestResultForeColor = Color.White;
|
|
|
|
|
middleMyTestResultControls[j].TestResultBackColor = result == "1.000" ? Color.Green : (result == "2.000" ? Color.Red : Color.Gainsboro);
|
|
|
|
|
middleMyTestResultControls[j].TestValText = val;
|
|
|
|
|
middleMyTestResultControls[j].TestValText = result;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
middleMyTestResultControls[j].TestResultText = "Ok";
|
|
|
|
|
|
|
|
|
|
middleMyTestResultControls[j].TestResultBackColor = Color.Green;
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|