diff --git a/BPASmartClient.Lebai/LebaiRobot.cs b/BPASmartClient.Lebai/LebaiRobot.cs index 9310d55f..8d7d9a46 100644 --- a/BPASmartClient.Lebai/LebaiRobot.cs +++ b/BPASmartClient.Lebai/LebaiRobot.cs @@ -57,7 +57,6 @@ namespace BPASmartClient.Lebai LebaiHelper.GetInstance().GetRobotModeStatus(); Thread.Sleep(10); }, "获取乐白机器人数据"); - } public override void Stop() @@ -143,9 +142,9 @@ namespace BPASmartClient.Lebai EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) { if (@event == null) return; - if (@event is LebaiRobot_LebaiSenceEvent lebaiSenceEvent) + if (@event is LebaiRobot_SetOutPutEvent lebaiOutputEvent) { - + LebaiHelper.GetInstance().SetOutput(lebaiOutputEvent.Value,lebaiOutputEvent.Pin); } }); @@ -158,10 +157,6 @@ namespace BPASmartClient.Lebai { } - public void SetDO(bool value, int Ch=0) - { - LebaiHelper.GetInstance().SetOutput(value,Ch); - } } } diff --git a/BPASmartClient.Model/乐白机器人/LebaiRobotEvent.cs b/BPASmartClient.Model/乐白机器人/LebaiRobotEvent.cs index 090b189f..b66d1f13 100644 --- a/BPASmartClient.Model/乐白机器人/LebaiRobotEvent.cs +++ b/BPASmartClient.Model/乐白机器人/LebaiRobotEvent.cs @@ -48,7 +48,8 @@ namespace BPASmartClient.Model.乐白机器人 public class LebaiRobot_SetOutPutEvent : BaseEvent { - public int RobotSetOut { get; set; } + public int Pin { get; set; } + public bool Value { get; set; } } } diff --git a/BPASmartClient.MorkF/Control_MorkF.cs b/BPASmartClient.MorkF/Control_MorkF.cs index 9828a889..ef15aaa4 100644 --- a/BPASmartClient.MorkF/Control_MorkF.cs +++ b/BPASmartClient.MorkF/Control_MorkF.cs @@ -95,12 +95,12 @@ namespace BPASmartClient.MorkF //流程 stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T1, RobotActions = new List() { StirFryRobotAction.清洗槽取锅 } }); stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T2, PotActions = new List() { StirFryPotAction.大火持续 }, During = 5 }); - stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T3, RobotActions = new List() { StirFryRobotAction.加入A料 }, PotActions = new List() { StirFryPotAction.加油, StirFryPotAction.搅拌臂下位, StirFryPotAction.低速旋转 }, During = 6 }); + stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T3, RobotActions = new List() { StirFryRobotAction.取A料 }, PotActions = new List() { StirFryPotAction.加油, StirFryPotAction.搅拌臂下位, StirFryPotAction.低速旋转 }, During = 6 }); stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T4, PotActions = new List() { StirFryPotAction.停止旋转, StirFryPotAction.停止火力, StirFryPotAction.搅拌臂上位 } });//加A料 - stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T5, RobotActions = new List() { StirFryRobotAction.加入B料 }, PotActions = new List() { StirFryPotAction.中火持续, StirFryPotAction.搅拌臂下位, StirFryPotAction.快速旋转 }, During = 6 }); + stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T5, RobotActions = new List() { StirFryRobotAction.取B料 }, PotActions = new List() { StirFryPotAction.中火持续, StirFryPotAction.搅拌臂下位, StirFryPotAction.快速旋转 }, During = 6 }); stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T6, PotActions = new List() { StirFryPotAction.停止火力, StirFryPotAction.停止旋转, StirFryPotAction.搅拌臂上位 } });//加B料 - stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T7, RobotActions = new List() { StirFryRobotAction.加入C料 }, PotActions = new List() { StirFryPotAction.中火持续, StirFryPotAction.搅拌臂下位, StirFryPotAction.快速旋转 }, During = 9 }); + stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T7, RobotActions = new List() { StirFryRobotAction.取C料 }, PotActions = new List() { StirFryPotAction.中火持续, StirFryPotAction.搅拌臂下位, StirFryPotAction.快速旋转 }, During = 9 }); stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T8, PotActions = new List() { StirFryPotAction.停止火力, StirFryPotAction.停止旋转, StirFryPotAction.搅拌臂上位 } });//加C料 stirFryBom.AddAction(new StirFryAction() { Time = StirFryTime.T9, PotActions = new List() { StirFryPotAction.中火持续, StirFryPotAction.搅拌臂下位, StirFryPotAction.快速旋转 }, During = 30 }); @@ -519,13 +519,13 @@ namespace BPASmartClient.MorkF case StirFryRobotAction.清洗槽取锅: TakePotTask();//执行取锅操作 break; - case StirFryRobotAction.加入A料: + case StirFryRobotAction.取A料: TakeBurdenATask();//执行取A料操作 break; - case StirFryRobotAction.加入B料: + case StirFryRobotAction.取B料: TakeBurdenATask();//执行取B料操作 break; - case StirFryRobotAction.加入C料: + case StirFryRobotAction.取C料: TakeBurdenCTask();//执行取C料操作 break; case StirFryRobotAction.灶取锅: diff --git a/BPASmartClient.MorkT.Lebai.JC/Control_MORKJC2.cs b/BPASmartClient.MorkT.Lebai.JC/Control_MORKJC2.cs index 34b58cbc..2a87df17 100644 --- a/BPASmartClient.MorkT.Lebai.JC/Control_MORKJC2.cs +++ b/BPASmartClient.MorkT.Lebai.JC/Control_MORKJC2.cs @@ -117,7 +117,6 @@ namespace BPASmartClient.MorkTLebaiJC GoodName = order.MorkOrder.GoodsName, }); } - //morkTLebaiJC.SuborderId = order.MorkOrder.SuborderId; break; case GOODS_TYPE.JUICE: GuMake = order.MorkOrder.MakeID == "2";//判断果汁的冷热 @@ -165,6 +164,83 @@ namespace BPASmartClient.MorkTLebaiJC } }); } + + private bool bFirstTrig_TeaWater = false; + /// + /// 延迟的超时时间 + /// + DateTime delayTimeOut; + private bool bFirstTrig_Coffee = false; + DateTime delayTimeOut_Coffee; + private bool bFirstTrig_Juice = false; + DateTime delayTimeOut_Juice; + public override void MainTask() + { + EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) + { + if (morkTLebaiJC.IsHaveCoffeeCup) + morkTLebaiJC.MakeCoffeeEnd = true; + }); + if (pickUpCoffeeHaveCup) + { + if (!bFirstTrig_Coffee) + { + bFirstTrig_Coffee = true; + delayTimeOut_Coffee = DateTime.Now; + } + if (DateTime.Now.Subtract(delayTimeOut_Coffee).TotalSeconds > 180 ) + { + bFirstTrig_Coffee = false; + if (morkTLebaiJC.IsHaveCoffeeCup) + morkTLebaiJC.MakeCoffeeEnd = true; + } + } + + if (morkTLebaiJC.IsHaveJuiceCup) + { + var Juicestate = GetStatus("GetDeviceStatus"); + if (Juicestate != null) + { + if (Juicestate.Length > 0) + { + var Juicestate1 = Convert.ToString(Juicestate[0], 2); + var Juicestate2 = Juicestate[1]; + if (Juicestate1.IndexOf("0") == 1 && Juicestate2 == 0) + { + morkTLebaiJC.MakeJuiceEnd = true; + } + } + } + //若无状态返回 则加延迟 + if (!bFirstTrig_Juice) + { + bFirstTrig_Juice = true; + delayTimeOut_Juice = DateTime.Now; + } + if (DateTime.Now.Subtract(delayTimeOut_Juice).TotalSeconds > 30) + { + bFirstTrig_Juice = false; + morkTLebaiJC.MakeJuiceEnd = true; + } + } + if (morkTLebaiJC.IsHaveTeaWaterCup) + { + if (!bFirstTrig_TeaWater) + { + bFirstTrig_TeaWater = true; + delayTimeOut = DateTime.Now; + } + if (DateTime.Now.Subtract(delayTimeOut).TotalSeconds >= 50) + { + bFirstTrig_TeaWater = false; + morkTLebaiJC.MakeTeaEnd = true; + } + } + DoCoffee(); + DoJuice(); + DoBoiledTea(); + DoBoiledWater(); + } public void Main() { //开始心跳刷新,根据咖啡机及冰淇淋机来判断 @@ -194,6 +270,10 @@ namespace BPASmartClient.MorkTLebaiJC return batchings[batchingLoc].GoodsType; return GOODS_TYPE.NEITHER; } + /// + /// 乐白的场景结束等待 + /// + /// private void Wait(int value = 101) { while (!((bool)peripheralStatus["RobotOK"] && (int)peripheralStatus["RobotValue"] == value)) @@ -202,11 +282,23 @@ namespace BPASmartClient.MorkTLebaiJC } new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); } - + /// + /// 乐白的场景 + /// + /// private void Sence(int sen) { new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = sen }.Publish(); } + /// + /// 乐白的数字量输出 + /// + /// + /// + private void Output(bool value,int pin) + { + new LebaiRobot_SetOutPutEvent { DeviceId = DeviceId, Pin = pin,Value=value }.Publish(); + } private T GetStatus(string key) { @@ -237,25 +329,26 @@ namespace BPASmartClient.MorkTLebaiJC /// 传感器的输入信号 0:无意义 1:有信号 2:无信号 3:信号不正确 /// int bSensorInput; - /// - /// 延迟的超时时间 - /// - DateTime delayTimeOut; + private bool IsMakeCoffee() { bool bMake = (IsHealth && morkTLebaiJC.morkOrderPushesCoffee.Count > 0 && !morkTLebaiJC.IsHaveCoffeeCup) ? true : false; return bMake; } - private bool IsMakeJuice() { - bool bMake = (IsHealth && morkTLebaiJC.morkOrderPushesJuicer.Count > 0 && !morkTLebaiJC.IsHaveJuiceCup) ? true : false; + bool bMake = (IsHealth && morkTLebaiJC.morkOrderPushesJuicer.Count > 0 && !morkTLebaiJC.IsHaveJuiceCup) ? true : false; return bMake; } private bool IsMakeTeaWater() { - bool bMake = (IsHealth && morkTLebaiJC.morkOrderPushesTea.Count > 0 && morkTLebaiJC.morkOrderPushesWater.Count > 0 && !morkTLebaiJC.IsHaveTeaWaterCup) ? true : false; + bool bMake = (IsHealth && morkTLebaiJC.morkOrderPushesTea.Count > 0 && !morkTLebaiJC.IsHaveTeaWaterCup) ? true : false; + return bMake; + } + private bool IsMakeWater() + { + bool bMake = (IsHealth && morkTLebaiJC.morkOrderPushesWater.Count > 0 && !morkTLebaiJC.IsHaveTeaWaterCup) ? true : false; return bMake; } /// @@ -265,10 +358,10 @@ namespace BPASmartClient.MorkTLebaiJC { if (IsMakeCoffee()) { - if (morkTLebaiJC.morkOrderPushesCoffee.TryDequeue(out OrderLocInfo orderLoc)) + if (morkTLebaiJC.morkOrderPushesCoffee.TryDequeue(out OrderLocInfo orderLoc)) { - morkTLebaiJC.IsHaveCoffeeCup = true; PickUpCoffee();//接咖啡 + morkTLebaiJC.IsHaveCoffeeCup = true; } } else if(morkTLebaiJC.MakeCoffeeEnd) @@ -284,15 +377,16 @@ namespace BPASmartClient.MorkTLebaiJC { if (morkTLebaiJC.morkOrderPushesJuicer.TryDequeue(out OrderLocInfo orderLoc)) { - morkTLebaiJC.IsHaveCoffeeCup = true; PickUpJuicer(); + morkTLebaiJC.IsHaveJuiceCup = true; } - - } else if (morkTLebaiJC.MakeJuiceEnd) + } + else if (morkTLebaiJC.MakeJuiceEnd) { + Thread.Sleep(5000);//延迟五秒,防止接饮料口滴饮料 putJuice(); pickUpJuiceHaveCup = false; - morkTLebaiJC.IsHaveCoffeeCup = false; + morkTLebaiJC.IsHaveJuiceCup = false; morkTLebaiJC.MakeJuiceEnd = false; } } @@ -302,8 +396,8 @@ namespace BPASmartClient.MorkTLebaiJC { if (morkTLebaiJC.morkOrderPushesTea.TryDequeue(out OrderLocInfo orderLoc)) { - morkTLebaiJC.IsHaveTeaWaterCup = true; PickUpTea(); + morkTLebaiJC.IsHaveTeaWaterCup = true; } } else if(morkTLebaiJC.MakeTeaEnd) @@ -316,11 +410,10 @@ namespace BPASmartClient.MorkTLebaiJC } private void DoBoiledWater() { - if (IsMakeTeaWater()) + if (IsMakeWater()) { if (morkTLebaiJC.morkOrderPushesWater.TryDequeue(out OrderLocInfo orderLoc)) { - morkTLebaiJC.IsHaveTeaWaterCup = true; PickUpWater(); } } @@ -348,11 +441,7 @@ namespace BPASmartClient.MorkTLebaiJC if (!pickUpCoffeeHaveCup) { outCupCheck = false; - - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesCoffee.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); - } + OrderChange(morkTLebaiJC.morkOrderPushesCoffee.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); int resultTakeCup = takeCup(); if (resultTakeCup == 1) { @@ -361,8 +450,7 @@ namespace BPASmartClient.MorkTLebaiJC Sence(JuicerModel.JUICE2_接咖啡); Wait(); pickUpCoffeeHaveCup = true; - //new DRCoffee_MakeCoffeeEvent() { DrinkCode = (DrCoffeeDrinksCode)int.Parse(mainMaterialLoc) }.Publish(); //接咖啡控制 //DrCoffeeDrinksCode.热水 //coffeEndCook.Publish();//模拟咖啡制作完成 - //are.WaitOne(1000 * 360); + new DRCoffee_MakeCoffeeEvent() { DrinkCode = (DrCoffeeDrinksCode)int.Parse(mainMaterialLoc) }.Publish(); //接咖啡控制 //DrCoffeeDrinksCode.热水 } else { @@ -386,10 +474,7 @@ namespace BPASmartClient.MorkTLebaiJC new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); Sence(JuicerModel.JUICE2_放咖啡杯); Wait(); - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesCoffee.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); - } + OrderChange(morkTLebaiJC.morkOrderPushesCoffee.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); DeviceProcessLogShow("咖啡制作完成"); } #endregion @@ -402,30 +487,26 @@ namespace BPASmartClient.MorkTLebaiJC #region 接水流程 if (!pickUpHotWaterHaveCup) { - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesWater.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); - } + OrderChange(morkTLebaiJC.morkOrderPushesWater.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); int resultTakeCup = takeCup(); if (resultTakeCup == 1) { new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); Sence(JuicerModel.JUICE2_接开水); Wait(); - new WriteMcu() { TagName = "OutputControl", Address = "1", Value = false }.Publish(); - new WriteMcu() { TagName = "OutputControl", Address = "0", Value = false }.Publish(); + Output(false, 1); + Output(false, 0); Thread.Sleep(100); - new WriteMcu() { TagName = "OutputControl", Address = "0", Value = true }.Publish(); + Output(true, 0); Thread.Sleep(3000); - new WriteMcu() { TagName = "OutputControl", Address = "0", Value = false }.Publish(); + Output(false, 0); Thread.Sleep(100); - new WriteMcu() { TagName = "OutputControl", Address = "1", Value = false }.Publish(); + Output(false, 1); Thread.Sleep(100); - new WriteMcu() { TagName = "OutputControl", Address = "1", Value = true }.Publish(); + Output(true, 1); Thread.Sleep(500); - new WriteMcu() { TagName = "OutputControl", Address = "1", Value = false }.Publish(); - Thread.Sleep(46000); + Output(false, 1); } else { @@ -444,10 +525,7 @@ namespace BPASmartClient.MorkTLebaiJC #region 接茶流程 if (!pickUpHotWaterHaveCup) { - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesTea.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); - } + OrderChange(morkTLebaiJC.morkOrderPushesTea.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); int resultTakeCup = takeCup(); if (resultTakeCup == 1) { @@ -466,6 +544,19 @@ namespace BPASmartClient.MorkTLebaiJC new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); Sence(JuicerModel.JUICE2_接茶水); Wait(); + Output(false, 1); + Output(false, 0); + Thread.Sleep(100); + Output(true, 0); + Thread.Sleep(3000); + Output(false, 0); + Thread.Sleep(100); + + Output(false, 1); + Thread.Sleep(100); + Output(true, 1); + Thread.Sleep(500); + Output(false, 1); pickUpHotWaterHaveCup = true; } else @@ -490,10 +581,7 @@ namespace BPASmartClient.MorkTLebaiJC new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); Sence(JuicerModel.JUICE2_放水杯); Wait(); - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesWater.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); - } + OrderChange(morkTLebaiJC.morkOrderPushesWater.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); DeviceProcessLogShow("茶水制作完成"); } @@ -512,10 +600,7 @@ namespace BPASmartClient.MorkTLebaiJC #region 接果汁流程 if (!pickUpJuiceHaveCup) { - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesJuicer.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); - } + OrderChange(morkTLebaiJC.morkOrderPushesJuicer.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING); int resultTakeCup = takeCup(); JuiceCH = int.Parse(mainMaterialLoc); if (resultTakeCup == 1) @@ -565,6 +650,7 @@ namespace BPASmartClient.MorkTLebaiJC Wait(); break; } + new WriteJuicer() { Value = JuicerNum }.Publish(); pickUpJuiceHaveCup = true; } else @@ -614,10 +700,7 @@ namespace BPASmartClient.MorkTLebaiJC Wait(); break; } - if (morkTLebaiJC.morkOrderPushesCoffee.Count > 0) - { - OrderChange(morkTLebaiJC.morkOrderPushesJuicer.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); - } + OrderChange(morkTLebaiJC.morkOrderPushesJuicer.ElementAt(0).SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); DeviceProcessLogShow("果汁制作完成"); } #endregion @@ -682,7 +765,6 @@ namespace BPASmartClient.MorkTLebaiJC new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); Sence(JuicerModel.JUICE2_二次取杯); Wait(); - new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish(); Sence(JuicerModel.JUICE2_取纸杯检测); Wait(); @@ -780,45 +862,6 @@ namespace BPASmartClient.MorkTLebaiJC } - private bool bFirstTrig = false; - public override void MainTask() - { - EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) - { - if (morkTLebaiJC.IsHaveCoffeeCup) - morkTLebaiJC.MakeCoffeeEnd = true; - }); - var Juicestate = GetStatus("GetDeviceStatus"); - if (Juicestate != null) - { - if (Juicestate.Length > 0) - { - var Juicestate1 = Convert.ToString(Juicestate[0], 2); - var Juicestate2 = Juicestate[1]; - if (Juicestate1.IndexOf("0") == 1 && Juicestate2 == 0) - { - morkTLebaiJC.MakeJuiceEnd= true; - } - } - } - if (morkTLebaiJC.IsHaveTeaWaterCup) - { - if (!bFirstTrig) - { - bFirstTrig = true; - delayTimeOut = DateTime.Now; - } - if (DateTime.Now.Subtract(delayTimeOut).TotalSeconds >= 50) - { - bFirstTrig = false; - morkTLebaiJC.MakeTeaEnd = true; - } - } - DoCoffee(); - DoJuice(); - DoBoiledTea(); - DoBoiledTea(); - } public override void ResetProgram() { } diff --git a/BPASmartClient.MorkT.Lebai.JC/GVL_MorkTLebeiJC.cs b/BPASmartClient.MorkT.Lebai.JC/GVL_MorkTLebeiJC.cs index 72510db6..594115af 100644 --- a/BPASmartClient.MorkT.Lebai.JC/GVL_MorkTLebeiJC.cs +++ b/BPASmartClient.MorkT.Lebai.JC/GVL_MorkTLebeiJC.cs @@ -70,6 +70,7 @@ namespace BPASmartClient.MorkTLebaiJC /// 订单ID /// public string SuborderId = null; + } }