@@ -15,7 +15,7 @@ namespace HBLConsole.Factory | |||||
private volatile static SimpleFactory _Instance; | private volatile static SimpleFactory _Instance; | ||||
public static SimpleFactory GetInstance => _Instance ?? (_Instance = new SimpleFactory()); | public static SimpleFactory GetInstance => _Instance ?? (_Instance = new SimpleFactory()); | ||||
//private SimpleFactory() { ActionManage.GetInstance.Register(new Action(() => { GetInterfaceData(); }), "ResetProgram"); } | |||||
private SimpleFactory() { ActionManage.GetInstance.Register(new Action(() => { GetInterfaceData(); }), "ResetProgram"); } | |||||
public AbstractMessageServer GetAbsMessageServer => _GetAbsMessageServer ?? (_GetAbsMessageServer = GetAbstractMessageServer()); | public AbstractMessageServer GetAbsMessageServer => _GetAbsMessageServer ?? (_GetAbsMessageServer = GetAbstractMessageServer()); | ||||
private AbstractMessageServer _GetAbsMessageServer; | private AbstractMessageServer _GetAbsMessageServer; | ||||
@@ -116,7 +116,7 @@ namespace HBLConsole.Factory | |||||
ActionManage.GetInstance.Register(new Action<object>((o) => { control?.SimOrder(o); }), "SimOrder"); | ActionManage.GetInstance.Register(new Action<object>((o) => { control?.SimOrder(o); }), "SimOrder"); | ||||
ActionManage.GetInstance.Register(new Action<object>((o) => { control?.IotBroadcast(o); }), "IotBroadcast"); | ActionManage.GetInstance.Register(new Action<object>((o) => { control?.IotBroadcast(o); }), "IotBroadcast"); | ||||
ConnectHelper.GetInstance.Init(); | ConnectHelper.GetInstance.Init(); | ||||
GetControlBase(); | |||||
//GetControlBase(); | |||||
} | } | ||||
@@ -22,7 +22,7 @@ namespace HBLConsole.MORKD | |||||
{ | { | ||||
Main(); | Main(); | ||||
ReadData(); | ReadData(); | ||||
//ResetProgram(); | |||||
ResetProgram(); | |||||
} | } | ||||
public void DataParse<T>(T order) | public void DataParse<T>(T order) | ||||
@@ -63,66 +63,62 @@ namespace HBLConsole.MORKD | |||||
}), "InitCommand"); | }), "InitCommand"); | ||||
} | } | ||||
//bool Initing = false; | |||||
//bool Initing { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 复位程序 | /// 复位程序 | ||||
/// </summary> | /// </summary> | ||||
//private void ResetProgram() | |||||
//{ | |||||
// ThreadManage.GetInstance.StartLong(new Action(() => | |||||
// { | |||||
// if (RTrig.GetInstance("ResetProgram").Start(Initing)) | |||||
// { | |||||
// ThreadManage.GetInstance.StopTask("MainTask", new Action(() => | |||||
// { | |||||
// ThreadManage.GetInstance.StopTask("ReadPLCData", new Action(() => | |||||
// { | |||||
// mORKD = null; | |||||
// mORKD = new GVL_MORKD(); | |||||
// ActionManage.GetInstance.Send("ResetProgram"); | |||||
// ReadData(); | |||||
// Main(); | |||||
// })); | |||||
// })); | |||||
// } | |||||
// Thread.Sleep(10); | |||||
// }), "ResetProgram"); | |||||
//} | |||||
private void ResetProgram() | |||||
{ | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
if (RTrig.GetInstance("ResetProgram").Start(DeviceData.Initing)) | |||||
{ | |||||
ThreadManage.GetInstance.StopTask("MainTask", new Action(() => | |||||
{ | |||||
ThreadManage.GetInstance.StopTask("ReadPLCData", new Action(() => | |||||
{ | |||||
mORKD = null; | |||||
mORKD = new GVL_MORKD(); | |||||
ActionManage.GetInstance.Send("ResetProgram"); | |||||
ReadData(); | |||||
Main(); | |||||
})); | |||||
})); | |||||
} | |||||
Thread.Sleep(10); | |||||
}), "ResetProgram"); | |||||
} | |||||
public void Main() | public void Main() | ||||
{ | { | ||||
//ThreadManage.GetInstance.StartLong(new Action(() => | |||||
//{ | |||||
mORKD.AllowRun = mORKD.InitComplete && !mORKD.TemperatureReached; | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
mORKD.AllowRun = mORKD.InitComplete && !mORKD.TemperatureReached; | |||||
TakeBowlTask(); | |||||
TakeBowlTask(); | |||||
TakeNoodleTask(); | |||||
TakeNoodleTask(); | |||||
OutNoodleTask(); | |||||
OutNoodleTask(); | |||||
SingleDetect(); | |||||
SingleDetect(); | |||||
TurntableControl(); | |||||
TurntableControl(); | |||||
OutSoupTask(); | |||||
OutSoupTask(); | |||||
TakeSoupTask(); | |||||
TakeSoupTask(); | |||||
// Thread.Sleep(10); | |||||
Thread.Sleep(10); | |||||
//}), "MainTask"); | |||||
}), "MainTask"); | |||||
} | } | ||||
public void ReadData() | public void ReadData() | ||||
{ | { | ||||
//ThreadManage.GetInstance.StartLong(new Action(() => | |||||
//{ | |||||
ModbusTcpHelper.GetInstance.Readbool(1120, 30, new Action<bool[]>((bools) => | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
ModbusTcpHelper.GetInstance.Readbool(1120, 30, new Action<bool[]>((bools) => | |||||
{ | { | ||||
mORKD.InitComplete = bools[0]; | mORKD.InitComplete = bools[0]; | ||||
mORKD.TurntableInPlace = bools[1]; | mORKD.TurntableInPlace = bools[1]; | ||||
@@ -151,33 +147,33 @@ namespace HBLConsole.MORKD | |||||
})); | })); | ||||
ModbusTcpHelper.GetInstance.Readbool(1280, 11, new Action<bool[]>((bools) => | |||||
{ | |||||
mORKD.TurntableLowerLimit = bools[0]; | |||||
mORKD.TurntableUpLimit = bools[1]; | |||||
for (int i = 0; i < 5; i++) | |||||
ModbusTcpHelper.GetInstance.Readbool(1280, 11, new Action<bool[]>((bools) => | |||||
{ | { | ||||
mORKD.SoupMaterialShortage[i] = bools[2 + i]; | |||||
} | |||||
mORKD.TurntableLowerLimit = bools[0]; | |||||
mORKD.TurntableUpLimit = bools[1]; | |||||
for (int i = 0; i < 5; i++) | |||||
{ | |||||
mORKD.SoupMaterialShortage[i] = bools[2 + i]; | |||||
} | |||||
for (int i = 0; i < 3; i++) | |||||
{ | |||||
mORKD.OutMealDetect[i] = bools[7 + i]; | |||||
} | |||||
for (int i = 0; i < 3; i++) | |||||
{ | |||||
mORKD.OutMealDetect[i] = bools[7 + i]; | |||||
} | |||||
mORKD.TemperatureReached = bools[10]; | |||||
})); | |||||
mORKD.TemperatureReached = bools[10]; | |||||
})); | |||||
var ResLoc = ModbusTcpHelper.GetInstance.Read(720, ReadType.HoldingRegisters); | |||||
if (ResLoc != null) | |||||
{ | |||||
if (ResLoc is ushort loc) | |||||
var ResLoc = ModbusTcpHelper.GetInstance.Read(720, ReadType.HoldingRegisters); | |||||
if (ResLoc != null) | |||||
{ | { | ||||
mORKD.TurntableFeedbackloc = loc; | |||||
if (ResLoc is ushort loc) | |||||
{ | |||||
mORKD.TurntableFeedbackloc = loc; | |||||
} | |||||
} | } | ||||
} | |||||
// Thread.Sleep(100); | |||||
//}), "ReadPLCData"); | |||||
Thread.Sleep(100); | |||||
}), "ReadPLCData"); | |||||
} | } | ||||
public void SimOrder<T>(T simOrder) | public void SimOrder<T>(T simOrder) | ||||
@@ -102,16 +102,9 @@ namespace HBLConsole.MORKIC | |||||
iceCreamMachine = new IceCreamMachine(com_IceCream, (BaudRates)Enum.Parse(typeof(BaudRates), baud_IceCream)); | iceCreamMachine = new IceCreamMachine(com_IceCream, (BaudRates)Enum.Parse(typeof(BaudRates), baud_IceCream)); | ||||
icchipMachine = new ICChipMachine(com_ICChip, (BaudRates)Enum.Parse(typeof(BaudRates), baud_ICChip)); | icchipMachine = new ICChipMachine(com_ICChip, (BaudRates)Enum.Parse(typeof(BaudRates), baud_ICChip)); | ||||
//咖啡机开启主线程 | |||||
coffeeMachine.Start(); | |||||
//冰淇淋机开启主线程 | |||||
iceCreamMachine.Start(); | |||||
icchipMachine.Start(); | |||||
new ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish(); | |||||
Main(); | Main(); | ||||
ReadData(); | ReadData(); | ||||
Main(); | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | ThreadManage.GetInstance.StartLong(new Action(() => | ||||
{ | { | ||||
@@ -200,7 +193,8 @@ namespace HBLConsole.MORKIC | |||||
}), "MORK-IC心跳刷新"); | }), "MORK-IC心跳刷新"); | ||||
ThreadManage.GetInstance.Start(new Action(() => | ThreadManage.GetInstance.Start(new Action(() => | ||||
{ | { | ||||
while (!LebaiHelper.GetInstance.IsConnected) { | |||||
while (!LebaiHelper.GetInstance.IsConnected) | |||||
{ | |||||
Thread.Sleep(10); | Thread.Sleep(10); | ||||
} | } | ||||
LebaiHelper.GetInstance.Scene(LebaiHelper.SENCE_欢迎); | LebaiHelper.GetInstance.Scene(LebaiHelper.SENCE_欢迎); | ||||
@@ -353,32 +347,32 @@ namespace HBLConsole.MORKIC | |||||
are.Set(); | are.Set(); | ||||
} | } | ||||
public void Main() | |||||
{ | |||||
//咖啡机开启主线程 | |||||
coffeeMachine.Start(); | |||||
//冰淇淋机开启主线程 | |||||
iceCreamMachine.Start(); | |||||
icchipMachine.Start(); | |||||
new ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish(); | |||||
//开始心跳刷新,根据咖啡机及冰淇淋机来判断 | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
//GeneralConfig.Healthy = true; | |||||
//GeneralConfig.Healthy = | |||||
// LebaiHelper.GetInstance.IsConnected && | |||||
// MorkIStatus.GetInstance().CanDo && | |||||
// MorkCStatus.GetInstance().CanDo; | |||||
GeneralConfig.Healthy = | |||||
LebaiHelper.GetInstance.IsConnected && | |||||
MorkCStatus.GetInstance().CanDo; | |||||
GeneralConfig.Healthy = true; | |||||
Thread.Sleep(100); | |||||
}), "MORK-IC心跳刷新"); | |||||
//public void Main() | |||||
//{ | |||||
// //咖啡机开启主线程 | |||||
// coffeeMachine.Start(); | |||||
// //冰淇淋机开启主线程 | |||||
// iceCreamMachine.Start(); | |||||
// icchipMachine.Start(); | |||||
// new ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish(); | |||||
// //开始心跳刷新,根据咖啡机及冰淇淋机来判断 | |||||
// ThreadManage.GetInstance.StartLong(new Action(() => | |||||
// { | |||||
// //GeneralConfig.Healthy = true; | |||||
// //GeneralConfig.Healthy = | |||||
// // LebaiHelper.GetInstance.IsConnected && | |||||
// // MorkIStatus.GetInstance().CanDo && | |||||
// // MorkCStatus.GetInstance().CanDo; | |||||
// GeneralConfig.Healthy = | |||||
// LebaiHelper.GetInstance.IsConnected && | |||||
// MorkCStatus.GetInstance().CanDo; | |||||
// GeneralConfig.Healthy = true; | |||||
// Thread.Sleep(100); | |||||
// }), "MORK-IC心跳刷新"); | |||||
//} | |||||
public void ReadData() | public void ReadData() | ||||
{ | { | ||||
@@ -36,71 +36,94 @@ namespace HBLConsole.MORKS | |||||
//WriteRecipeBoms(); | //WriteRecipeBoms(); | ||||
ReadData(); | ReadData(); | ||||
Main(); | Main(); | ||||
//ResetProgram(); | |||||
ResetProgram(); | |||||
MessageLog.GetInstance.Show("MORKS 设备初始化完成"); | MessageLog.GetInstance.Show("MORKS 设备初始化完成"); | ||||
} | } | ||||
private void ResetProgram() | |||||
{ | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
if (RTrig.GetInstance("ResetProgram").Start(DeviceData.Initing)) | |||||
{ | |||||
ThreadManage.GetInstance.StopTask("MainTask", new Action(() => | |||||
{ | |||||
ThreadManage.GetInstance.StopTask("ReadPLCData", new Action(() => | |||||
{ | |||||
mORKS = null; | |||||
mORKS = new GVL_MORKS(); | |||||
ActionManage.GetInstance.Send("ResetProgram"); | |||||
ReadData(); | |||||
Main(); | |||||
})); | |||||
})); | |||||
} | |||||
Thread.Sleep(10); | |||||
}), "ResetProgram"); | |||||
} | |||||
/// <summary> | /// <summary> | ||||
/// 数据读取 | /// 数据读取 | ||||
/// </summary> | /// </summary> | ||||
public void ReadData() | public void ReadData() | ||||
{ | { | ||||
//ThreadManage.GetInstance.StartLong(new Action(() => | |||||
//{ | |||||
ModbusTcpHelper.GetInstance.Readbool(323, 3, new Action<bool[]>((bools) => | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
ModbusTcpHelper.GetInstance.Readbool(323, 3, new Action<bool[]>((bools) => | |||||
{ | { | ||||
mORKS.RobotTakeNoodle = bools[0]; | mORKS.RobotTakeNoodle = bools[0]; | ||||
mORKS.RobotOutMeal = bools[1]; | mORKS.RobotOutMeal = bools[1]; | ||||
mORKS.MoveTurntable = bools[2]; | mORKS.MoveTurntable = bools[2]; | ||||
})); | })); | ||||
ModbusTcpHelper.GetInstance.Readbool(1120, 16, new Action<bool[]>((bools) => | |||||
{ | |||||
mORKS.InitComplete = bools[0]; | |||||
mORKS.TakeBowlIdle = bools[1]; | |||||
mORKS.TemperatureReached = bools[2]; | |||||
mORKS.AllowFallNoodle = bools[3]; | |||||
mORKS.RbTakeNoodleComplete = bools[4]; | |||||
mORKS.RbFallNoodleComplete = bools[5]; | |||||
mORKS.RbOutMealComplete = bools[6]; | |||||
mORKS.RobotIdle = bools[7]; | |||||
mORKS.TakeMealDetect = bools[8]; | |||||
mORKS.MissingBowl = bools[9]; | |||||
DeviceData.Initing = bools[10]; | |||||
mORKS.TurntableLowerLimit = bools[11]; | |||||
mORKS.MissingBowlSignal2 = bools[12]; | |||||
mORKS.TurntableUpLimit = bools[13]; | |||||
mORKS.TurntableMoveInPlace = bools[15]; | |||||
})); | |||||
ModbusTcpHelper.GetInstance.Readbool(1136, 6, new Action<bool[]>((bools) => | |||||
{ | |||||
for (int i = 0; i < 6; i++) | |||||
ModbusTcpHelper.GetInstance.Readbool(1120, 16, new Action<bool[]>((bools) => | |||||
{ | { | ||||
mORKS.NoodleCookerStatus[i] = bools[i]; | |||||
} | |||||
})); | |||||
mORKS.InitComplete = bools[0]; | |||||
mORKS.TakeBowlIdle = bools[1]; | |||||
mORKS.TemperatureReached = bools[2]; | |||||
mORKS.AllowFallNoodle = bools[3]; | |||||
mORKS.RbTakeNoodleComplete = bools[4]; | |||||
mORKS.RbFallNoodleComplete = bools[5]; | |||||
mORKS.RbOutMealComplete = bools[6]; | |||||
mORKS.RobotIdle = bools[7]; | |||||
mORKS.TakeMealDetect = bools[8]; | |||||
mORKS.MissingBowl = bools[9]; | |||||
DeviceData.Initing = bools[10]; | |||||
mORKS.TurntableLowerLimit = bools[11]; | |||||
mORKS.MissingBowlSignal2 = bools[12]; | |||||
mORKS.TurntableUpLimit = bools[13]; | |||||
mORKS.TurntableMoveInPlace = bools[15]; | |||||
})); | |||||
ModbusTcpHelper.GetInstance.Readbool(1136, 6, new Action<bool[]>((bools) => | |||||
{ | |||||
for (int i = 0; i < 6; i++) | |||||
{ | |||||
mORKS.NoodleCookerStatus[i] = bools[i]; | |||||
} | |||||
})); | |||||
ModbusTcpHelper.GetInstance.Readbool(1144, 6, new Action<bool[]>((bools) => | |||||
{ | |||||
for (int i = 0; i < 6; i++) | |||||
ModbusTcpHelper.GetInstance.Readbool(1144, 6, new Action<bool[]>((bools) => | |||||
{ | { | ||||
mORKS.CookNoodlesComplete[i] = bools[i]; | |||||
} | |||||
})); | |||||
for (int i = 0; i < 6; i++) | |||||
{ | |||||
mORKS.CookNoodlesComplete[i] = bools[i]; | |||||
} | |||||
})); | |||||
//var ResLoc = ModbusTcpHelper.GetInstance.Read(286, ReadType.HoldingRegisters); | |||||
//if (ResLoc != null) | |||||
//{ | |||||
// if (ResLoc is ushort loc) | |||||
// { | |||||
// mORKS.TurntableFeedbackloc = loc; | |||||
// } | |||||
//} | |||||
//var ResLoc = ModbusTcpHelper.GetInstance.Read(286, ReadType.HoldingRegisters); | |||||
//if (ResLoc != null) | |||||
//{ | |||||
// if (ResLoc is ushort loc) | |||||
// { | |||||
// mORKS.TurntableFeedbackloc = loc; | |||||
// } | |||||
//} | |||||
// Thread.Sleep(500); | |||||
//}), "ReadPLCData"); | |||||
Thread.Sleep(500); | |||||
}), "ReadPLCData"); | |||||
} | } | ||||
public void SimOrder<T>(T simOrder) | public void SimOrder<T>(T simOrder) | ||||
@@ -208,26 +231,26 @@ namespace HBLConsole.MORKS | |||||
public void Main() | public void Main() | ||||
{ | { | ||||
//ThreadManage.GetInstance.StartLong(new Action(() => | |||||
//{ | |||||
mORKS.AllowRun = mORKS.InitComplete; | |||||
//mORKS.AllowRun = mORKS.InitComplete && mORKS.TemperatureReached; | |||||
//GeneralConfig.Healthy = true; | |||||
GeneralConfig.Healthy = mORKS.AllowRun; | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
mORKS.AllowRun = mORKS.InitComplete; | |||||
//mORKS.AllowRun = mORKS.InitComplete && mORKS.TemperatureReached; | |||||
//GeneralConfig.Healthy = true; | |||||
GeneralConfig.Healthy = mORKS.AllowRun; | |||||
TakeBowlTask(); | |||||
TakeBowlTask(); | |||||
TakeNoodleTask(); | |||||
TakeNoodleTask(); | |||||
OutNoodleTask(); | |||||
OutNoodleTask(); | |||||
SingleDetect(); | |||||
SingleDetect(); | |||||
TurntableControl(); | |||||
TurntableControl(); | |||||
//Thread.Sleep(100); | |||||
Thread.Sleep(100); | |||||
//}), "MainTask"); | |||||
}), "MainTask"); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||