|
|
@@ -51,6 +51,7 @@ namespace BPASmartClient.MorkBF |
|
|
|
DataParse();//数据解析 |
|
|
|
ScreenDataServer();//大屏数据上报 |
|
|
|
ActionManage.GetInstance.Send("更新菜单"); |
|
|
|
ThreadManage.GetInstance().Start(FirePot1_Process, "炒锅1流程"); |
|
|
|
DeviceProcessLogShow("MORKF 设备初始化完成"); |
|
|
|
} |
|
|
|
|
|
|
@@ -64,9 +65,7 @@ namespace BPASmartClient.MorkBF |
|
|
|
if (order.MorkOrder.GoodBatchings == null) return; |
|
|
|
OrderCount++; |
|
|
|
DeviceProcessLogShow($"接收到{OrderCount}次订单"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@@ -122,17 +121,8 @@ namespace BPASmartClient.MorkBF |
|
|
|
ActionManage.GetInstance.Register(FirePot_PotReversal, "FirePot_PotReversal");//翻转反转 |
|
|
|
#endregion |
|
|
|
#region 机器人 |
|
|
|
ActionManage.GetInstance.Register(RobotStart, "RobotStart");//机器人启动 |
|
|
|
ActionManage.GetInstance.Register(RobotStop, "RobotStop");//机器人停止 |
|
|
|
ActionManage.GetInstance.Register(RobotReset, "RobotReset");//复位 |
|
|
|
ActionManage.GetInstance.Register(RobotProgramStart, "RobotProgramStart");//程序启动 |
|
|
|
ActionManage.GetInstance.Register(Robot_Pot1AllowInMaterail, "Robot_Pot1AllowInMaterail");//1号炒锅允许机器人投料 |
|
|
|
ActionManage.GetInstance.Register(Robot_Pot1OutFoodInSlowDown, "Robot_Pot1OutFoodInSlowDown");//1号炒锅出餐倒料到减速位 |
|
|
|
ActionManage.GetInstance.Register(Robot_Pot1OutFood, "Robot_Pot1OutFoodInSlowDown");//1号炒锅出餐倒料完成 |
|
|
|
ActionManage.GetInstance.Register(Robot_Pot2AllowInMaterail, "Robot_Pot2AllowInMaterail");//2号炒锅允许机器人投料 |
|
|
|
ActionManage.GetInstance.Register(Robot_Pot2OutFoodInSlowDown, "Robot_Pot2OutFoodInSlowDown");//2号炒锅出餐倒料到减速位 |
|
|
|
ActionManage.GetInstance.Register(Robot_Pot2OutFood, "Robot_Pot2OutFood");//2号炒锅出餐倒料完成 |
|
|
|
ActionManage.GetInstance.Register(RobotActionStart, "Robot_Pot2OutFood");//2号炒锅出餐倒料完成 |
|
|
|
|
|
|
|
ActionManage.GetInstance.Register(RobotAction, "RobotAction");//上使能 |
|
|
|
|
|
|
|
|
|
|
|
#endregion |
|
|
@@ -141,12 +131,8 @@ namespace BPASmartClient.MorkBF |
|
|
|
|
|
|
|
public override void MainTask() |
|
|
|
{ |
|
|
|
if(morkBF.FirePan1_Order.Count>0&& morkBF.FirePot1_InitCompleted&&morkBF.FirePot2_IsAuto&&!morkBF.FirePan1_Busy) |
|
|
|
{ |
|
|
|
ThreadManage.GetInstance().Start(FirePot1_Process, "炒锅1流程"); |
|
|
|
} |
|
|
|
|
|
|
|
if(morkBF.RobotActinQueue.Count>0&&! morkBF.Robot_Origin)//机器人在原点为 |
|
|
|
|
|
|
|
if(morkBF.RobotActinQueue.Count>0&&! morkBF.Robot_Start)//机器人启动 |
|
|
|
{ |
|
|
|
if( morkBF.RobotActinQueue.TryDequeue(out RobotAction_Pot robotAction)) |
|
|
|
{ |
|
|
@@ -158,44 +144,48 @@ namespace BPASmartClient.MorkBF |
|
|
|
|
|
|
|
private void FirePot1_Process() |
|
|
|
{ |
|
|
|
|
|
|
|
if(morkBF.FirePan1_Order.TryDequeue(out FryPotMessages result)) |
|
|
|
if (morkBF.FirePan1_Order.Count > 0 && morkBF.FirePot1_InitCompleted && morkBF.FirePot2_IsAuto && !morkBF.FirePan1_Busy) |
|
|
|
{ |
|
|
|
|
|
|
|
morkBF.FirePan1_Busy = true; |
|
|
|
morkBF.FryPot1_CurrentProcess = result.fryPotProcesses; |
|
|
|
foreach (var item in result.fryPotProcesses) |
|
|
|
if (morkBF.FirePan1_Order.TryDequeue(out FryPotMessages result)) |
|
|
|
{ |
|
|
|
switch (item.fryActions) |
|
|
|
|
|
|
|
morkBF.FirePan1_Busy = true; |
|
|
|
morkBF.FryPot1_CurrentProcess = result.fryPotProcesses; |
|
|
|
foreach (var item in result.fryPotProcesses) |
|
|
|
{ |
|
|
|
case FryAction.冷锅加热: |
|
|
|
FirePot_PotPerHeat(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---冷锅加热完成"); |
|
|
|
break; |
|
|
|
|
|
|
|
case FryAction.热油: |
|
|
|
FirePot_HeatOil(item,1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---热油完成"); |
|
|
|
break; |
|
|
|
case FryAction.加调料: |
|
|
|
FirePot_AddSeasoning(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---加调料完成"); |
|
|
|
break; |
|
|
|
case FryAction.加辅料: |
|
|
|
FirePot_AddAccessories(item,1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---加辅料完成"); |
|
|
|
break; |
|
|
|
case FryAction.炒制菜品: |
|
|
|
FirePot_FryFood(item,1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---炒制菜品完成"); |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
break; |
|
|
|
switch (item.fryActions) |
|
|
|
{ |
|
|
|
case FryAction.冷锅加热: |
|
|
|
FirePot_PotPerHeat(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---冷锅加热完成"); |
|
|
|
break; |
|
|
|
case FryAction.热油: |
|
|
|
FirePot_HeatOil(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---热油完成"); |
|
|
|
break; |
|
|
|
case FryAction.机器人加调料: |
|
|
|
FirePot_RobotGetSeasoning(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---机器人加调料完成"); |
|
|
|
break; |
|
|
|
case FryAction.通道出调料: |
|
|
|
FirePot_PasswayOutSeasoning(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---通道出调料完成"); |
|
|
|
break; |
|
|
|
case FryAction.炒制菜品: |
|
|
|
FirePot_FryFood(item, 1); |
|
|
|
MessageLog.GetInstance.Show("炒锅1---炒制菜品完成"); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
FirePot_StartFire(new object[] { 1, false });//关火 |
|
|
|
Thread.Sleep(result.FryOffStirTime*1000);//关火翻炒时间 |
|
|
|
FirePot_StartStir(new object[] { 1, false });//关闭搅拌 |
|
|
|
Message.MessageLog.GetInstance.Show($"炒锅1炒制{result.GoodName}完成"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void FirePot2_Process() |
|
|
@@ -206,13 +196,21 @@ namespace BPASmartClient.MorkBF |
|
|
|
|
|
|
|
#region 炒锅流程功能 |
|
|
|
|
|
|
|
private bool IsRobotNextWork(List<FryPotProcess> currentProcess, int currentFryTime) |
|
|
|
/// <summary> |
|
|
|
/// 判断下个动作是否需要机器人 |
|
|
|
/// </summary> |
|
|
|
/// <param name="i"></param> |
|
|
|
/// <param name="currentFryTime"></param> |
|
|
|
/// <returns></returns> |
|
|
|
private bool IsRobotNextWork(int i, int currentFryTime) |
|
|
|
{ |
|
|
|
bool res = false; |
|
|
|
if(currentProcess.Count> currentFryTime) |
|
|
|
List<FryPotProcess> currentProcess = new List<FryPotProcess>(); |
|
|
|
currentProcess = i == 1 ? morkBF.FryPot1_CurrentProcess: morkBF.FryPot2_CurrentProcess; |
|
|
|
|
|
|
|
if (currentProcess.Count> currentFryTime) |
|
|
|
{ |
|
|
|
if (currentProcess[currentFryTime + 1].fryActions == FryAction.加调料 || |
|
|
|
currentProcess[currentFryTime + 1].fryActions == FryAction.加辅料 || |
|
|
|
if (currentProcess[currentFryTime + 1].fryActions == FryAction.机器人加调料 || |
|
|
|
currentProcess[currentFryTime + 1].fryActions == FryAction.炒制菜品) |
|
|
|
{ |
|
|
|
res = true; |
|
|
@@ -227,19 +225,11 @@ namespace BPASmartClient.MorkBF |
|
|
|
private void FirePot_PotPerHeat(FryPotProcess item,int i) |
|
|
|
{ |
|
|
|
bool isRobotWork = false; |
|
|
|
if(i == 1)//炒锅1 |
|
|
|
{ |
|
|
|
//FirePot1_SetFireGear(item.FryGear); |
|
|
|
Thread.Sleep(200); |
|
|
|
//FirePot1_StartFire(true); |
|
|
|
isRobotWork = IsRobotNextWork(morkBF.FryPot1_CurrentProcess,item.FryTime); |
|
|
|
} |
|
|
|
else if(i == 2)//炒锅2 |
|
|
|
{ |
|
|
|
//FirePot2_SetFireGear(item.FryGear); |
|
|
|
//FirePot2_StartFire(true); |
|
|
|
isRobotWork = IsRobotNextWork(morkBF.FryPot2_CurrentProcess, item.FryTime); |
|
|
|
} |
|
|
|
|
|
|
|
FirePot_SetFireGear(new object[]{ i, item.FryGear});//设定加热挡位 |
|
|
|
FirePot_StartFire(new object[] { i, true }); |
|
|
|
isRobotWork = IsRobotNextWork(i,item.FryTime);//下个流程动作是否需要机器人 |
|
|
|
|
|
|
|
if (isRobotWork && item.FryDuration > RobotLeadTime) Thread.Sleep((item.FryDuration - RobotLeadTime) * 1000);//提前10秒机器人去取物料 |
|
|
|
else Thread.Sleep(item.FryDuration * 1000); |
|
|
|
|
|
|
@@ -254,91 +244,66 @@ namespace BPASmartClient.MorkBF |
|
|
|
bool isRobotWork = false; |
|
|
|
if (item.FryGear != 0) |
|
|
|
{ |
|
|
|
/* FirePot1_SetFireGear(item.FryGear);*///设定加热挡位 |
|
|
|
//FirePot1_StartFire(true);//开启加热 |
|
|
|
//isRobotWork = IsRobotNextWork(morkBF.FryPot1_CurrentProcess, item.FryTime); |
|
|
|
FirePot_SetFireGear(new object[] { i, item.FryGear });//设定加热挡位 |
|
|
|
FirePot_StartFire(new object[] { i, true }); |
|
|
|
} |
|
|
|
if (item.StirGear != 0) |
|
|
|
{ |
|
|
|
//FirePot1_SetStirGear(item.StirGear);//设定搅拌挡位 |
|
|
|
//FirePot1_StartFire(true);//开启搅拌 |
|
|
|
isRobotWork = IsRobotNextWork(morkBF.FryPot2_CurrentProcess, item.FryTime); |
|
|
|
FirePot_SetStirGear(new object[] { i, item.StirGear });//设定搅拌挡位 |
|
|
|
FirePot_StartStir(new object[] { i, true }); |
|
|
|
|
|
|
|
} |
|
|
|
isRobotWork = IsRobotNextWork(i, item.FryTime); |
|
|
|
if (isRobotWork && item.FryDuration > RobotLeadTime) Thread.Sleep((item.FryDuration - RobotLeadTime) * 1000);//提前10秒机器人去取物料 |
|
|
|
else Thread.Sleep(item.FryDuration * 1000);//加热时间; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 加调料 |
|
|
|
/// 通道出调料 |
|
|
|
/// </summary> |
|
|
|
private void FirePot_AddSeasoning(FryPotProcess item,int i) |
|
|
|
private void FirePot_PasswayOutSeasoning(FryPotProcess item,int i) |
|
|
|
{ |
|
|
|
|
|
|
|
if(i == 1) |
|
|
|
{ |
|
|
|
|
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot { Pot =1,robotActionModel = RobotActionModel.取1号炒锅调料盆倒入1号炒锅}); |
|
|
|
Thread.Sleep(item.FryDuration); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if(i == 2) |
|
|
|
foreach(var acc in item.accessories) |
|
|
|
{ |
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot { Pot = 2, robotActionModel = RobotActionModel.取2号炒锅调料盆倒入2号炒锅 }); |
|
|
|
Thread.Sleep(item.FryDuration); |
|
|
|
FirePot_StartPassWay(new object[] { i, acc.Loc, acc.Qry }); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 加辅料 |
|
|
|
/// 机器人取调料 |
|
|
|
/// </summary> |
|
|
|
private void FirePot_AddAccessories(FryPotProcess item, int i) |
|
|
|
private void FirePot_RobotGetSeasoning(FryPotProcess item, int i) |
|
|
|
{ |
|
|
|
if (i == 1) |
|
|
|
{ |
|
|
|
|
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot { Pot = 1, robotActionModel = RobotActionModel.取1号炒锅辅料盆1倒入1号炒锅 }); |
|
|
|
Thread.Sleep(item.FryDuration); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (i == 2) |
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot |
|
|
|
{ |
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot { Pot = 2, robotActionModel = RobotActionModel.取2号炒锅辅料盆1倒入2号炒锅 }); |
|
|
|
Thread.Sleep(item.FryDuration); |
|
|
|
} |
|
|
|
|
|
|
|
Pot = i, |
|
|
|
MainTask = BPASmartClient.Model.大炒.MainTask.机器人炒制任务, |
|
|
|
subTask1 = (SubTask1)item.accessories[0].Loc + 9, |
|
|
|
subTask2 = (SubTask2)i |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 炒制菜品 |
|
|
|
/// </summary> |
|
|
|
private void FirePot_FryFood(FryPotProcess item, int i) |
|
|
|
{ |
|
|
|
bool isRobotWork = false; |
|
|
|
if (i == 1) |
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot |
|
|
|
{ |
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot { Pot = 1, robotActionModel = (RobotActionModel)item.accessories[0].Loc }); |
|
|
|
while (!morkBF.FirePot1_CompleteSingle[item.accessories[0].Loc])//取菜信号是否完成 |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
isRobotWork = IsRobotNextWork(morkBF.FryPot2_CurrentProcess, item.FryTime); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (i == 2) |
|
|
|
Pot = i, |
|
|
|
MainTask = BPASmartClient.Model.大炒.MainTask.机器人炒制任务, |
|
|
|
subTask1 = (SubTask1)item.accessories[1].Loc, |
|
|
|
subTask2 =(SubTask2)i |
|
|
|
}); |
|
|
|
while (!morkBF.FirePot1_CompleteSingle[item.accessories[0].Loc])//取菜信号是否完成 |
|
|
|
{ |
|
|
|
morkBF.RobotActinQueue.Enqueue(new RobotAction_Pot { Pot = 2, robotActionModel = (RobotActionModel)(item.accessories[0].Loc+19) });//炒制菜品位置 |
|
|
|
while (!morkBF.FirePot2_CompleteSingle[item.accessories[0].Loc])//取菜信号是否完成 |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
isRobotWork = IsRobotNextWork(morkBF.FryPot2_CurrentProcess, item.FryTime); |
|
|
|
|
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
isRobotWork = IsRobotNextWork(i, item.FryTime); |
|
|
|
if (isRobotWork && item.FryDuration > RobotLeadTime) Thread.Sleep((item.FryDuration - RobotLeadTime) * 1000);//提前10秒机器人去取物料 |
|
|
|
else Thread.Sleep(item.FryDuration * 1000);//加热时间; |
|
|
|
} |
|
|
@@ -350,76 +315,50 @@ namespace BPASmartClient.MorkBF |
|
|
|
/// <param name="robotAction"></param> |
|
|
|
private void RobotProcess(RobotAction_Pot robotAction) |
|
|
|
{ |
|
|
|
Robot_Write("GI0",(int)robotAction.robotActionModel); |
|
|
|
while (morkBF.Robot_ActionCallback != (int)robotAction.robotActionModel)//机器人动作执行完动作反馈 |
|
|
|
Robot_Write("GI0", (int)robotAction.MainTask);//设定机器人主要任务 |
|
|
|
while(morkBF.Robot_GI0ActionCallback != (int)robotAction.MainTask)//等待主程序完成反馈 |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
Thread.Sleep(300); |
|
|
|
} |
|
|
|
if(robotAction.Pot == 1)//炒锅1 |
|
|
|
if((int)robotAction.subTask1>0)//任务1 |
|
|
|
{ |
|
|
|
if (robotAction.robotActionModel == RobotActionModel.取1号空盆出餐) |
|
|
|
{ |
|
|
|
Robot_Write("GM520", true);//机器人去出餐倒料减速位置 |
|
|
|
while(!morkBF.Robot_ArriveFirePot1)//机器人到位,请求1#炒锅倒菜 |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
FirePot_StartOutFood(1);//炒锅出餐; |
|
|
|
while (!morkBF.FirePot1_PotOnOutFoodPosition)//炒锅在出餐倒料位置反馈 |
|
|
|
{ |
|
|
|
Thread.Sleep(1000); |
|
|
|
} |
|
|
|
Thread.Sleep(6 * 1000);//等待6s出餐 |
|
|
|
Robot_Write("GM521", true);//机器人出餐到料完成 |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
Robot_Write("GI1", (int)robotAction.subTask1); |
|
|
|
Thread.Sleep(1000); |
|
|
|
while (morkBF.Robot_GI1ActionCallback != (int)robotAction.subTask1)//等待子程序1完成反馈 |
|
|
|
{ |
|
|
|
//FirePot_Write("M11.6", true);//炒锅去投料位置 |
|
|
|
while (!morkBF.FirePot1_PotOnIntoFoodPosition)//等待炒锅允许倒料 |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
Robot_Write("GM531", true);//机器人投料 |
|
|
|
Thread.Sleep(300); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else if (robotAction.Pot == 2) |
|
|
|
if ((int)robotAction.subTask2 > 0)//任务2 |
|
|
|
{ |
|
|
|
if (robotAction.robotActionModel == RobotActionModel.取1号空盆出餐) |
|
|
|
Robot_Write("GI2", (int)robotAction.subTask2); |
|
|
|
Thread.Sleep(1000); |
|
|
|
while (morkBF.Robot_GI2ActionCallback != (int)robotAction.subTask2)//等待子程序2完成反馈 |
|
|
|
{ |
|
|
|
Robot_Write("GM522", true);//炒锅去出餐倒料减速位置 |
|
|
|
while (!morkBF.Robot_ArriveFirePot2)//机器人到位,请求1#炒锅倒菜 |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
FirePot_StartOutFood(2);//炒锅去出餐倒料位置 |
|
|
|
while (!morkBF.FirePot2_PotOnOutFoodPosition)//炒锅在出餐倒料位置反馈 |
|
|
|
{ |
|
|
|
Thread.Sleep(1000); |
|
|
|
} |
|
|
|
Thread.Sleep(6 * 1000);//等待20s出餐 |
|
|
|
Robot_Write("GM523", true);//机器人出餐倒料完成 |
|
|
|
|
|
|
|
Thread.Sleep(300); |
|
|
|
} |
|
|
|
else |
|
|
|
} |
|
|
|
if ((int)robotAction.subTask3 > 0)//任务3 |
|
|
|
{ |
|
|
|
Robot_Write("GI3", (int)robotAction.subTask3); |
|
|
|
Thread.Sleep(1000); |
|
|
|
while (morkBF.Robot_GI3ActionCallback != (int)robotAction.subTask3)//等待子程序3完成反馈 |
|
|
|
{ |
|
|
|
//FirePot_Write("M16.7", true); |
|
|
|
while (!morkBF.FirePot2_PotOnIntoFoodPosition) |
|
|
|
{ |
|
|
|
Thread.Sleep(100); |
|
|
|
} |
|
|
|
Robot_Write("GM531", true); |
|
|
|
Thread.Sleep(300); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
while(!morkBF.Robot_Origin) |
|
|
|
if ((int)robotAction.subTask4 > 0)//任务4 |
|
|
|
{ |
|
|
|
Robot_Write("GI4", (int)robotAction.subTask4); |
|
|
|
Thread.Sleep(1000); |
|
|
|
while (morkBF.Robot_GI4ActionCallback != (int)robotAction.subTask4)//等待主程序4完成反馈 |
|
|
|
{ |
|
|
|
Thread.Sleep(300); |
|
|
|
} |
|
|
|
} |
|
|
|
morkBF.Robot_IsBusy = false; |
|
|
|
MessageLog.GetInstance.Show($"机器人完成[{robotAction.robotActionModel.ToString()}]任务"); |
|
|
|
|
|
|
|
|
|
|
|
MessageLog.GetInstance.Show($"机器人完成[{robotAction.MainTask.ToString()}]任务"); |
|
|
|
} |
|
|
|
|
|
|
|
public override void ReadData() |
|
|
@@ -501,45 +440,7 @@ namespace BPASmartClient.MorkBF |
|
|
|
|
|
|
|
} |
|
|
|
}), 0); |
|
|
|
GetStatus("GM500", new Action<object>((o) => |
|
|
|
{ |
|
|
|
if (o == null) return; |
|
|
|
if (o is bool[] values && values.Length == 7) |
|
|
|
{ |
|
|
|
|
|
|
|
morkBF.FirePot1_CompleteSingle[0] = values[0]; |
|
|
|
morkBF.FirePot1_CompleteSingle[1] = values[1]; |
|
|
|
morkBF.FirePot1_CompleteSingle[2] = values[2]; |
|
|
|
morkBF.Robot_FirePot1OutSeasoning = values[3]; |
|
|
|
morkBF.Robot_FirePot1OutAccessories = values[4]; |
|
|
|
morkBF.Robot_ArriveFirePot1 = values[5]; |
|
|
|
morkBF.Robot_FirePot1OutFoodComplete = values[6]; |
|
|
|
|
|
|
|
} |
|
|
|
}), 1); |
|
|
|
GetStatus("GM510", new Action<object>((o) => |
|
|
|
{ |
|
|
|
if (o == null) return; |
|
|
|
if (o is bool[] values && values.Length == 7) |
|
|
|
{ |
|
|
|
morkBF.FirePot2_CompleteSingle[0] = values[0]; |
|
|
|
morkBF.FirePot2_CompleteSingle[1] = values[1]; |
|
|
|
morkBF.FirePot2_CompleteSingle[2] = values[2]; |
|
|
|
morkBF.Robot_FirePot2OutSeasoning = values[3]; |
|
|
|
morkBF.Robot_FirePot2OutAccessories = values[4]; |
|
|
|
morkBF.Robot_ArriveFirePot2 = values[5]; |
|
|
|
morkBF.Robot_FirePot2OutFoodComplete = values[6]; |
|
|
|
|
|
|
|
} |
|
|
|
}), 1); |
|
|
|
GetStatus("GI5", new Action<object>((o) => |
|
|
|
{ |
|
|
|
if (o == null) return; |
|
|
|
if (o is int[] values && values.Length == 1) |
|
|
|
{ |
|
|
|
morkBF.Robot_ActionCallback = values[0]; |
|
|
|
} |
|
|
|
}), 1); |
|
|
|
|
|
|
|
|
|
|
|
GetStatus("VW2250", new Action<object>((o) => |
|
|
|
{ |
|
|
@@ -836,7 +737,6 @@ namespace BPASmartClient.MorkBF |
|
|
|
{ |
|
|
|
FirePot2_Write("M10.6", true); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
@@ -971,98 +871,33 @@ namespace BPASmartClient.MorkBF |
|
|
|
#endregion |
|
|
|
|
|
|
|
#region 机器人 |
|
|
|
/// <summary> |
|
|
|
/// 机器人启动 |
|
|
|
/// </summary> |
|
|
|
private void RobotStart() |
|
|
|
{ |
|
|
|
Robot_Write("GM600",true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 机器人停止 |
|
|
|
/// </summary> |
|
|
|
private void RobotStop() |
|
|
|
private void RobotAction(object[] o) |
|
|
|
{ |
|
|
|
Robot_Write("GM601", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 机器人复位 |
|
|
|
/// </summary> |
|
|
|
private void RobotReset() |
|
|
|
{ |
|
|
|
Robot_Write("GM602", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 机器人程序重启 |
|
|
|
/// </summary> |
|
|
|
private void RobotProgramStart() |
|
|
|
{ |
|
|
|
Robot_Write("GM603", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 1号炒锅允许机器人投料(炒锅在投料位给出) |
|
|
|
/// </summary> |
|
|
|
private void Robot_Pot1AllowInMaterail() |
|
|
|
{ |
|
|
|
Robot_Write("GM531", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 1号炒锅出餐倒料到减速位 |
|
|
|
/// </summary> |
|
|
|
private void Robot_Pot1OutFoodInSlowDown() |
|
|
|
{ |
|
|
|
Robot_Write("GM620", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 1号炒锅出餐倒料完成 |
|
|
|
/// </summary> |
|
|
|
private void Robot_Pot1OutFood() |
|
|
|
{ |
|
|
|
Robot_Write("GM521", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 2号炒锅允许机器人投料(炒锅在投料位给出) |
|
|
|
/// </summary> |
|
|
|
private void Robot_Pot2AllowInMaterail() |
|
|
|
{ |
|
|
|
Robot_Write("GM530", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 2号炒锅出餐倒料到减速位。开始倒菜 |
|
|
|
/// </summary> |
|
|
|
private void Robot_Pot2OutFoodInSlowDown() |
|
|
|
{ |
|
|
|
Robot_Write("GM522", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 2号炒锅出餐倒料完成 |
|
|
|
/// </summary> |
|
|
|
private void Robot_Pot2OutFood() |
|
|
|
{ |
|
|
|
Robot_Write("GM523", true); |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// |
|
|
|
/// </summary> |
|
|
|
private void RobotActionStart(object o) |
|
|
|
{ |
|
|
|
if (o == null) return; |
|
|
|
if(int.TryParse(o.ToString(), out int value)) |
|
|
|
if (o[0] is int value) |
|
|
|
{ |
|
|
|
Robot_Write("GI0",value); |
|
|
|
switch (value) |
|
|
|
{ |
|
|
|
case 0: |
|
|
|
Robot_Write("GI0", (ushort)(MainTask)o[1]); |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
Robot_Write("GI1", (ushort)(SubTask1)o[1]); |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
Robot_Write("GI2", (ushort)(SubTask2)o[1]); |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
Robot_Write("GI3", (ushort)(SubTask3)o[1]); |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
Robot_Write("GI4", (ushort)(SubTask4)o[1]); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
Thread.Sleep(200); |
|
|
|
} |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
@@ -1082,7 +917,7 @@ namespace BPASmartClient.MorkBF |
|
|
|
IsRun = IsHealth ? IsRun.运行 : IsRun.停止, |
|
|
|
WorkStatus_1 = morkBF.FirePot1_Temperature > 0 ? WorkStatus.工作 : WorkStatus.待机, |
|
|
|
WorkStatus_2 = morkBF.FirePot2_Temperature > 0 ? WorkStatus.工作 : WorkStatus.待机, |
|
|
|
RobotStatu = morkBF.Robot_ActionCallback == 0? WorkStatus.待机 : WorkStatus.工作, |
|
|
|
RobotStatu = WorkStatus.工作, |
|
|
|
Alarm = new List<AlarmModel>(), |
|
|
|
FailuresCount = 0, |
|
|
|
StatsCount = statsModels, |
|
|
|