diff --git a/BPASmartClient.MorkF/Control_MorkF.cs b/BPASmartClient.MorkF/Control_MorkF.cs index fd636efb..321e375e 100644 --- a/BPASmartClient.MorkF/Control_MorkF.cs +++ b/BPASmartClient.MorkF/Control_MorkF.cs @@ -6,8 +6,8 @@ using BPASmartClient.Helper; using BPASmartClient.Message; using BPASmartClient.Model; using BPASmartClient.Model.PLC; -using static BPASmartClient.EventBus.EventBus; using BPA.Models; +using static BPASmartClient.EventBus.EventBus; namespace BPASmartClient.MorkF { @@ -16,18 +16,27 @@ namespace BPASmartClient.MorkF public override DeviceClientType DeviceType => DeviceClientType.MORKSF; GVL_MorkF morkF = new GVL_MorkF();//全局对象声明 - //private OrderMaterialDelivery orderMaterialDelivery { get; set; } = new OrderMaterialDelivery(); - //private RecipeBoms recipeBoms { get; set; } = new RecipeBoms(); - //int OrderCount; + public StirFryBom stirFryBom = new StirFryBom();//创建获取流程的对象 + //public bool ProcessError { get; set; }//流程错误 /// /// 入口 /// public override void DoMain() { - ReadData(); //plc状态量读取 + ServerInit(); DataParse();//数据解析 - //Main(); - //ResetProgram(); + ThreadManage.GetInstance().StartLong(new Action(() => + { + IsHealth = true; + ReadData(); + Thread.Sleep(10); + }), "ReadPLCData"); + ThreadManage.GetInstance().StartLong(new Action(() => + { + MainTask(); + Thread.Sleep(10); + }), "MainTask"); + MessageLog.GetInstance.Show("MORKF 设备初始化完成"); } @@ -46,7 +55,8 @@ namespace BPASmartClient.MorkF //{ GetStatus("M0.1", new Action((bools) => { - morkF.InitialComplete = bools[0]; + Initing = bools[0]; + morkF.InitialComplete = Initing; })); GetStatus("M1.0", new Action((bools) => { @@ -151,80 +161,163 @@ namespace BPASmartClient.MorkF { if (ushort.TryParse(res.BatchingLoc, out ushort loc)) { - if (loc >= 1 && loc <= 5) - { - if (morkF.TakeMaterialQueue.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) - morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { Loc = ushort.Parse(res.BatchingLoc), SuborderId = order.MorkOrder.SuborderId, BatchingId = res.BatchingId }); - } - else if (loc >= 10 && loc <= 11) - { - int index = 0; - if (recipeBoms != null) - { - index = Array.FindIndex(recipeBoms.RecipeIds?.ToArray(), p => p.RecipeId == order.MorkOrder.RecipeId); - index++; - } - if (morkF.TakePlateQueue.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) - morkF.TakePlateQueue.Enqueue(new OrderLocInfo() - { - Loc = ushort.Parse(res.BatchingLoc), - SuborderId = order.MorkOrder.SuborderId, - RecipeNumber = (index >= 1 && index <= 10) ? (ushort)index : (ushort)0 - }); - } + //if (morkF.TakeMaterialQueue.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) + //将一个商品的ABC料位置存入队列 + morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = order.MorkOrder.SuborderId, BatchingId = res.BatchingId, MaterialLoc = ushort.Parse(res.BatchingLoc) }); } + + + + //int index = 0; + //if (recipeBoms != null) + //{ + // index = Array.FindIndex(recipeBoms.RecipeIds?.ToArray(), p => p.RecipeId == order.MorkOrder.RecipeId); + // index++; + //} + if (morkF.TakePlateQueue.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) + morkF.TakePlateQueue.Enqueue(new OrderLocInfo() + { + SuborderId = order.MorkOrder.SuborderId, + BatchingId = res.BatchingId + //RecipeNumber = (index >= 1 && index <= 10) ? (ushort)index : (ushort)0 + }); + + } } + } }); } + + + //} /// - /// 流程控制 + /// 主任务 /// public override void MainTask() { - //ThreadManage.GetInstance().StartLong(new Action(() => - //{ - IsHealth = true; //心跳 TakePlatelTask(); - TakePotTask(); - TakeVegBurdenATask(); - TakeMeatBurdenATask(); - TakeVegBurdenBTask(); - TakeBurdenCTask(); - StartCookingTask(); - OutDishTask(); - CleanPotTask(); TurntableControl(); + ProcessExecute(); SingleProcess(); + } + //机器人,锅灶流程执行 + public void ProcessExecute() + { + if (!morkF.ProcessExcuteLock) + { + morkF.ProcessExcuteLock = true; + Task.Run(new Action(() => + { + if (!morkF.RoobotIdle && morkF.InitialComplete && morkF.TakeMaterialQueue.Count > 0 && morkF.TakePlateQueue.Count > 0) + { + foreach (var res in stirFryBom.StirFryActions)//遍历所有流程 + { + MessageLog.GetInstance.Show($"执行流程{res.Time}"); + //机器人线程 + Task taskRobot = Task.Run(new Action(() => + { + foreach (var temp in res.RobotActions) + { + switch (temp) + { + case StirFryRobotAction.清洗槽取锅: + TakePotTask();//执行取锅操作 + break; + case StirFryRobotAction.取A料: + TakeBurdenATask();//执行取A料操作 + break; + case StirFryRobotAction.加入B料: + TakeBurdenBTask();//执行取B料操作 + break; + case StirFryRobotAction.加入C料: + TakeBurdenCTask();//执行取C料操作 + break; + case StirFryRobotAction.灶取锅: + OutDishTask();//执行出餐操作 + CleanPotTask();//洗锅操作 + break; + } + // Task.Delay(2000).Wait();//单一操作延时 + } + + })); + //炒锅线程操作 + Task taskPot = Task.Run(new Action(() => + { + foreach (var temp in res.PotActions) + { + switch (temp) + { + case StirFryPotAction.NONE: + break; + case StirFryPotAction.大火t1s: + KitchenAdjustGears(3); + Task.Delay(1000).Wait(); //大火加热1s//执行大火锅干操作 + break; + case StirFryPotAction.加油: + AddOil();//注油//执行加油操作 + break; + case StirFryPotAction.中火t2s: + KitchenAdjustGears(2); + Task.Delay(2000).Wait();//执行操作 + break; + case StirFryPotAction.小火持续: + KitchenAdjustGears(1); + break; + case StirFryPotAction.大火持续: + KitchenAdjustGears(3); + break; + case StirFryPotAction.停止火力: + KitchenAdjustGears(0);//关闭灶加热 + break; + case StirFryPotAction.搅拌臂上位: + TurnUpStatusDetect();//执行搅拌臂上位操作 + break; + case StirFryPotAction.搅拌臂下位: + TurnDownStatusDetect();//执行搅拌臂下位操作 + break; + case StirFryPotAction.低速旋转: + TurnMachineGearsControl(1);//执行搅拌臂速度1挡操作 + break; + case StirFryPotAction.快速旋转: + TurnMachineGearsControl(3);//执行搅拌臂速度3挡操作 + break; + case StirFryPotAction.停止旋转: + TurnMachineGearsControl(0);//执行搅拌臂速度0挡操作 + break; + } + // Task.Delay(2000).Wait();//单一操作延时 + } + })); + Task.WhenAll(taskRobot, taskPot);//等待所有线程结束 + Task.Delay(res.During).Wait();//当前流程延迟 + } + } + else + { + morkF.ProcessExcuteLock = false;//解除流程互锁 + } + })); + } - //}), "MainTask"); } /// /// 信号处理 /// private void SingleProcess() { - //转台互锁解除 - if (morkF.TakeMaterialComplete && morkF.TurnTableLock) - { - morkF.TurnTableLock = false; - } - //待定 - if (morkF.TakeVegALock && morkF.TakeMeatALock && morkF.TakeVegBLock) - { - morkF.TakeAllBurdenComplete = true; - } + + //出餐完成,相应变量复位 if (morkF.OutMealComplete) { morkF.TakePlateLock = false; morkF.TakePotLock = false; - morkF.TakeVegALock = false; - morkF.TakeMeatALock = false; - morkF.TakeVegBLock = false; - morkF.TakeBurdenCLcok = false; + morkF.PotInPlace = false; + morkF.ProcessExcuteLock = false; } } @@ -235,7 +328,7 @@ namespace BPASmartClient.MorkF private void TurntableControl() { //正常轮询 - if (morkF.InitialComplete && morkF.TakeMaterialQueue.Count > 0 && !morkF.TurnTableLock) + if (morkF.TakeMaterialQueue.Count > 0 && !morkF.TurnTableLock) { var result = orderMaterialDelivery.BatchingInfo.Where(p => p.BatchingId == morkF.TakeMaterialQueue.ElementAt(0).BatchingId).ToList(); if (result != null) @@ -266,76 +359,142 @@ namespace BPASmartClient.MorkF StartTakePlate(); morkF.CurrentOrderId = order.SuborderId; morkF.TakePlateLock = true; //订单完成后置false - MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】执行取碗控制,位置:[{order.Loc}]"); + morkF.OutMealComplete = false; + OrderChange(morkF.CurrentOrderId, ORDER_STATUS.COOKING); + MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】执行取碗控制"); } } + else + { + MessageLog.GetInstance.ShowEx($"订单【{ morkF.CurrentOrderId}】取碗失败"); + } + } /// /// 取锅到灶台 /// /// - private void TakePotTask() + private async void TakePotTask() { - if (!morkF.RoobotIdle && morkF.InitialComplete && morkF.TakePlateQueue.Count > 0 && !morkF.CleanModule && morkF.CleanComplete && !morkF.KitchenOneStatus && !morkF.TakePotLock) + + if (morkF.TakePlateQueue.Count > 0) { + while (!(!morkF.CleanModule && morkF.CleanComplete && !morkF.KitchenOneStatus))//等待清洗1准备就绪 + { + Task.Delay(5).Wait(); + } + while (morkF.RoobotIdle)//等待机器人空闲 + { + Task.Delay(5).Wait(); + } TakePotToKitchen(); - morkF.TakePotLock = true; //订单完成后置false + // morkF.TakePotLock = true; //订单完成后置false + EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M1.5", Value = false });//清洗模组1完成复位 MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】执行取锅到灶台控制"); + while (!morkF.PutPotToKitchenComlete) + { + Task.Delay(5).Wait(); + } + morkF.PotInPlace = morkF.PutPotToKitchenComlete;//锅到位 + } + } /// /// 取素菜A料 /// - private void TakeVegBurdenATask() - { - if (!morkF.RoobotIdle && morkF.PotInPlace && morkF.TurnMachineUpComplete && !morkF.TakeVegALock && morkF.AllowTakeMaterial) - { - - if (morkF.TakeMaterialQueue.TryDequeue(out OrderLocInfo order)) + private void TakeBurdenATask() + { + if (morkF.TakeMaterialQueue.Count > 0) + { + TurnUpStatusDetect(); + //while (!morkF.TurnMachineUpComplete)//等待翻转机上升完成以及取料完成 + //{ + // Task.Delay(5).Wait(); + //} + //EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.1", Value = false });//翻转机上升完成复位 + //MessageLog.GetInstance.Show($"翻转机上升执行完成"); + while (morkF.RoobotIdle || !morkF.PotInPlace)//等待机器人空闲以及锅到位 { - int loc = order.Loc; - TakeBurden(loc); - morkF.TakeVegALock = true;//订单完成置false - morkF.AllowTakeMaterial = false; - MessageLog.GetInstance.Show($"订单【{ order.SuborderId},翻转机上升完成,执行取素菜A控制"); + Task.Delay(5).Wait(); } - } - } - /// - /// 取荤菜A料 - /// - private void TakeMeatBurdenATask() - { - if (!morkF.RoobotIdle && morkF.PotInPlace && morkF.TurnMachineUpComplete && morkF.TakeVegALock && !morkF.TakeMeatALock && morkF.AllowTakeMaterial) - { if (morkF.TakeMaterialQueue.TryDequeue(out OrderLocInfo order)) { - int loc = order.Loc; + int loc = order.MaterialLoc; TakeBurden(loc); - morkF.TakeMeatALock = true;//订单完成置false - morkF.AllowTakeMaterial = false; - MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,,翻转机上升完成,执行取荤菜A控制"); + //morkF.TakeVegALock = true;//订单完成置false + // morkF.AllowTakeMaterial = false; + + MessageLog.GetInstance.Show($"订单【{ order.SuborderId},执行取A料"); + } + //等待取料完成 + while (!morkF.TakeMaterialComplete) + { + Task.Delay(5).Wait(); + } + //转台互锁解除 + if (morkF.TurnTableLock) + { + morkF.TurnTableLock = false; } } } + ///// + ///// 取荤菜A料 + ///// + //private void TakeBurdenATask() + //{ + // if (!morkF.RoobotIdle && morkF.PotInPlace && morkF.TurnMachineUpComplete && morkF.TakeVegALock && !morkF.TakeMeatALock && morkF.AllowTakeMaterial&& morkF.TakeMaterialQueue.Count > 0) + // { + // if (morkF.TakeMaterialQueue.TryDequeue(out OrderLocInfo order)) + // { + // int loc = 0; + // TakeBurden(loc); + // morkF.TakeMeatALock = true;//订单完成置false + // morkF.AllowTakeMaterial = false; + // MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,,翻转机上升完成,执行取荤菜A控制"); + // } + // } + //} /// /// 取素菜B料 /// - private void TakeVegBurdenBTask() - { - if (!morkF.RoobotIdle && morkF.PotInPlace && morkF.TurnMachineUpComplete && morkF.TakeMeatALock && !morkF.TakeVegBLock && morkF.AllowTakeMaterial) - { + private void TakeBurdenBTask() + { + if (morkF.TakeMaterialQueue.Count > 0) + { + TurnUpStatusDetect(); + //while (!morkF.TurnMachineUpComplete)//等待翻转机上升完成以及取料完成 + //{ + // Task.Delay(5).Wait(); + //} + //EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.1", Value = false });//翻转机上升完成复位 + //MessageLog.GetInstance.Show($"翻转机上升执行完成"); + while (morkF.RoobotIdle || !morkF.PotInPlace)//等待机器人空闲以及锅到位 + { + Task.Delay(5).Wait(); + } if (morkF.TakeMaterialQueue.TryDequeue(out OrderLocInfo order)) { - int loc = order.Loc; + int loc = order.MaterialLoc; TakeBurden(loc); - morkF.TakeVegBLock = true;//订单完成置false - morkF.AllowTakeMaterial = false; + //morkF.TakeVegBLock = true;//订单完成置false + //morkF.AllowTakeMaterial = false; MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,,翻转机上升完成,执行取素菜B控制"); } + //等待取料完成 + while (!morkF.TakeMaterialComplete) + { + Task.Delay(5).Wait(); + } + //转台互锁解除 + if (morkF.TurnTableLock) + { + morkF.TurnTableLock = false; + } } } /// @@ -344,17 +503,38 @@ namespace BPASmartClient.MorkF /// private void TakeBurdenCTask() { - if (!morkF.RoobotIdle && morkF.PotInPlace && morkF.TurnMachineUpComplete && morkF.TakeAllBurdenComplete && !morkF.TakeBurdenCLcok && morkF.AllowTakeMaterial) + if (morkF.TakeMaterialQueue.Count > 0) { + TurnUpStatusDetect(); + //while (!morkF.TurnMachineUpComplete)//等待翻转机上升完成以及取料完成 + //{ + // Task.Delay(5).Wait(); + //} + //EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.1", Value = false });//翻转机上升完成复位 + //MessageLog.GetInstance.Show($"翻转机上升执行完成"); + while (morkF.RoobotIdle || !morkF.PotInPlace)//等待机器人空闲以及锅到位 + { + Task.Delay(5).Wait(); + } if (morkF.TakeMaterialQueue.TryDequeue(out OrderLocInfo order)) { - int loc = order.Loc; + int loc = order.MaterialLoc; TakeBurden(loc); - morkF.TakeBurdenCLcok = true;//订单完成置false - morkF.AllowTakeMaterial = false; - morkF.TakeAllBurdenComplete = false; + //morkF.TakeBurdenCLcok = true;//订单完成置false + //morkF.AllowTakeMaterial = false; + //morkF.TakeAllBurdenComplete = false; MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,,翻转机上升完成,执行取调味品C料控制"); } + //等待取料完成 + while (!morkF.TakeMaterialComplete) + { + Task.Delay(5).Wait(); + } + //转台互锁解除 + if (morkF.TurnTableLock) + { + morkF.TurnTableLock = false; + } } } /// @@ -418,11 +598,21 @@ namespace BPASmartClient.MorkF /// private void OutDishTask() { - if (!morkF.RoobotIdle && morkF.CookingComplete && morkF.ProvidePlateComplete && !morkF.CleanModule) + TurnUpStatusDetect(); + //while (!morkF.TurnMachineUpComplete)//等待翻转机上升完成以及取料完成 + //{ + // Task.Delay(5).Wait(); + //} + //EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.1", Value = false });//翻转机上升完成复位 + //MessageLog.GetInstance.Show($"翻转机上升执行完成"); + while (morkF.RoobotIdle || morkF.CleanModule || !morkF.ProvidePlateComplete)//等待条件满足 { - RobotOutMeal(); - MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】正在出餐"); + Task.Delay(5).Wait(); } + RobotOutMeal(); + EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M1.2", Value = false });//供盘复位 + MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】正在出餐"); + } /// @@ -430,12 +620,19 @@ namespace BPASmartClient.MorkF /// private void CleanPotTask() { - if (morkF.PlaceRinseTableComplete && !morkF.CleanModule) + + while (!morkF.PlaceRinseTableComplete || morkF.CleanModule) { - CleanModuleControl("Start"); - Task.Delay(5000).Wait(); - CleanModuleControl("Stop"); + Task.Delay(5).Wait(); } + OrderChange(morkF.CurrentOrderId, ORDER_STATUS.COMPLETED_COOK); + MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】出餐完成"); + CleanModuleControl("Start"); + morkF.OutMealComplete = true; + Task.Delay(5000).Wait(); + CleanModuleControl("Stop"); + + } /// /// 任务复位重启 @@ -468,27 +665,49 @@ namespace BPASmartClient.MorkF /// public void TurnDownStatusDetect() { - TurnMachineOrientControl("Down"); - while (!morkF.TurnMachineDownComplete)//等待翻转机下降完成 + //if (ProcessError) + //{ + // return; + //} + if (morkF.PotInPlace) { - Task.Delay(5).Wait(); + //等待取料完成 + while (!morkF.TakeMaterialComplete) + { + Task.Delay(5).Wait(); + } + TurnMachineOrientControl("Down"); + + while (!morkF.TurnMachineDownComplete)//等待翻转机下降完成 + { + Task.Delay(5).Wait(); + } + EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.3", Value = false });//复位 + + + MessageLog.GetInstance.Show($"翻转机下降完成"); } - EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.3", Value = false });//复位 - MessageLog.GetInstance.Show($"翻转机下降执行完成"); + } /// /// 翻转机上升及状态检测 /// public void TurnUpStatusDetect() { - TurnMachineOrientControl("Top");//翻转机上升 - morkF.AllowTakeMaterial = true; - while (!morkF.TurnMachineUpComplete || !morkF.TakeMaterialComplete)//等待翻转机上升完成以及取料完成 + //if (ProcessError) + //{ + // return; + //} + if (morkF.PotInPlace) { - Task.Delay(5).Wait(); + TurnMachineOrientControl("Top");//翻转机上升 + while (!morkF.TurnMachineUpComplete || !morkF.TakeMaterialComplete)//等待翻转机上升完成以及取料完成 + { + Task.Delay(5).Wait(); + } + EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.1", Value = false }); + MessageLog.GetInstance.Show("翻转机上升完成"); } - EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.1", Value = false }); - MessageLog.GetInstance.Show("翻转机上升执行完成"); } private void GetStatus(string key, Action action) { @@ -511,40 +730,47 @@ namespace BPASmartClient.MorkF /// public void KitchenAdjustGears(int number) { - switch (number) + //if (ProcessError) + //{ + // return; + //} + if (morkF.PotInPlace) { - case 0: - WriteData("352", new bool[] { false, false, false, false, false, false, false, false });//0000 0000 - break; - case 1: - WriteData("352", new bool[] { true, false, false, false, false, false, false, false });//0000 0001 - break; - case 2: - WriteData("352", new bool[] { false, true, false, false, false, false, false, false });//0000 0010 - break; - case 3: - WriteData("352", new bool[] { true, true, false, false, false, false, false, false });//0000 0011 - break; - case 4: - WriteData("352", new bool[] { false, false, true, false, false, false, false, false });//0000 0100 - break; - case 5: - WriteData("352", new bool[] { true, false, true, false, false, false, false, false });//0000 0101 - break; - case 6: - WriteData("352", new bool[] { false, true, true, false, false, false, false, false });//0000 0110 - break; - case 7: - WriteData("352", new bool[] { true, true, true, false, false, false, false, false });//0000 0111 - break; - case 8: - WriteData("355", new bool[] { false, false, false, true, false, false, false, false });//0000 1000 - break; - case 9: - WriteData("352", new bool[] { true, false, false, true, false, false, false, false });//0000 1001 - break; + switch (number) + { + case 0: + WriteData("352", new bool[] { false, false, false, false, false, false, false, false });//0000 0000 + break; + case 1: + WriteData("352", new bool[] { true, false, false, false, false, false, false, false });//0000 0001 + break; + case 2: + WriteData("352", new bool[] { false, true, false, false, false, false, false, false });//0000 0010 + break; + case 3: + WriteData("352", new bool[] { true, true, false, false, false, false, false, false });//0000 0011 + break; + case 4: + WriteData("352", new bool[] { false, false, true, false, false, false, false, false });//0000 0100 + break; + case 5: + WriteData("352", new bool[] { true, false, true, false, false, false, false, false });//0000 0101 + break; + case 6: + WriteData("352", new bool[] { false, true, true, false, false, false, false, false });//0000 0110 + break; + case 7: + WriteData("352", new bool[] { true, true, true, false, false, false, false, false });//0000 0111 + break; + case 8: + WriteData("355", new bool[] { false, false, false, true, false, false, false, false });//0000 1000 + break; + case 9: + WriteData("352", new bool[] { true, false, false, true, false, false, false, false });//0000 1001 + break; + } + MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】,加热档位调至{number}挡"); } - MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】,加热档位调至{number}挡"); } public void TurnMaterialStore(int loc) { @@ -594,13 +820,20 @@ namespace BPASmartClient.MorkF /// public void AddOil() { - WriteData("M2.7", true); - MessageLog.GetInstance.Show("开始注油"); - while (!morkF.FallOilComplete) + //if (ProcessError) + //{ + // return; + //} + if (morkF.PotInPlace) { - Task.Delay(5).Wait(); + WriteData("M2.7", true); + MessageLog.GetInstance.Show("开始注油"); + while (!morkF.FallOilComplete) + { + Task.Delay(5).Wait(); + } + MessageLog.GetInstance.Show("注油完成"); } - MessageLog.GetInstance.Show("注油完成"); } /// /// 翻转机方向控制 @@ -621,14 +854,36 @@ namespace BPASmartClient.MorkF /// public void TurnMachineGearsControl(int gear) { - switch (gear) - { - case 0: WriteData("M7.0", true); break;//关闭翻炒机 - case 1: WriteData("M7.1", true); break;//翻炒机1挡 - case 2: WriteData("M7.2", true); break;//翻炒机2挡 - case 3: WriteData("M7.3", true); break;//翻炒机3挡 + //if (gear != 0) + //{ + // while (!morkF.TurnMachineDownComplete)//等待翻转机下降完成 + // { + // Task.Delay(5).Wait(); + // } + // EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.3", Value = false });//复位 + // MessageLog.GetInstance.Show($"翻转机下降完成"); + //} + //if (ProcessError) + //{ + // return; + //} + if (morkF.PotInPlace) + { + //while (!morkF.TurnMachineDownComplete)//等待翻转机下降完成 + //{ + // Task.Delay(5).Wait(); + //} + //EventBus.EventBus.GetInstance().Publish(new WriteModel() { Address = "M8.3", Value = false });//复位 + switch (gear) + { + case 0: WriteData("M7.0", true); Task.Delay(1000).Wait(); break;//关闭翻炒机 + case 1: WriteData("M7.1", true); break;//翻炒机1挡 + case 2: WriteData("M7.2", true); break;//翻炒机2挡 + case 3: WriteData("M7.3", true); break;//翻炒机3挡 + } + + MessageLog.GetInstance.Show($"翻转机档位调至{gear}挡"); } - MessageLog.GetInstance.Show($"翻转机档位调至{gear}挡"); } /// /// 取A,B,C料 diff --git a/BPASmartClient.MorkF/GVL_MorkF.cs b/BPASmartClient.MorkF/GVL_MorkF.cs index 4340a2d5..b08a3621 100644 --- a/BPASmartClient.MorkF/GVL_MorkF.cs +++ b/BPASmartClient.MorkF/GVL_MorkF.cs @@ -120,6 +120,14 @@ namespace BPASmartClient.MorkF /// public bool CookingComplete { get; set; } /// + /// 注油完成 + /// + public bool AddOilComplete { get; set; } + /// + /// 倒料完成 + /// + public bool FallMaterialComplete { get; set; } + /// /// 供盘互锁 /// public bool TakePlateLock { get; set; } @@ -151,6 +159,8 @@ namespace BPASmartClient.MorkF /// 转台互锁 /// public bool TurnTableLock { get; set; } + + public bool ProcessExcuteLock { get; set; } /// /// 开始取料标志 /// diff --git a/BPASmartClient.MorkF/OrderLocInfo.cs b/BPASmartClient.MorkF/OrderLocInfo.cs index af776bb2..0b1813e5 100644 --- a/BPASmartClient.MorkF/OrderLocInfo.cs +++ b/BPASmartClient.MorkF/OrderLocInfo.cs @@ -9,7 +9,7 @@ namespace BPASmartClient.MorkF internal class OrderLocInfo { public string SuborderId { get; set; } - public ushort Loc { get; set; } + public ushort MaterialLoc { get; set; } public ushort RecipeNumber { get; set; } public int BatchingId { get; set; } } diff --git a/BPASmartClient/App.config b/BPASmartClient/App.config index e1353de6..0aa2990e 100644 --- a/BPASmartClient/App.config +++ b/BPASmartClient/App.config @@ -19,6 +19,14 @@ + + +