From db149553ba81b6bb0adcf7bbc57c8656cdb0108d Mon Sep 17 00:00:00 2001
From: ZhaoGang <15196688790@163.com>
Date: Fri, 30 Jun 2023 18:03:43 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=B7=E7=A7=91=E8=B0=83=E8=AF=95=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BPASmartClient.MorkCL.csproj | 4 +-
BPASmartClient.MorkCL/Control_MorkCL.cs | 158 +++++++++++++-----
BPASmartClient.MorkCL/GVL_MorkCL.cs | 48 +++++-
.../Model/Control/FryingPanGet.cs | 15 +-
.../Model/Control/FryingPanSet.cs | 28 +++-
.../Model/Control/RobotGet.cs | 4 +-
.../Model/Control/RobotSet.cs | 22 ++-
.../Model/Json/ConnectPar.cs | 32 ++--
.../Server/FryingPanServer.cs | 6 +-
BPASmartClient.MorkCL/Server/RobotServer.cs | 12 +-
BPASmartClient.MorkCL/View/Debug.xaml | 24 ++-
.../ViewModel/DebugViewModel.cs | 18 ++
.../ViewModel/ItemStorageViewModel.cs | 8 +-
13 files changed, 295 insertions(+), 84 deletions(-)
create mode 100644 BPASmartClient.MorkCL/ViewModel/DebugViewModel.cs
diff --git a/BPASmartClient.MorkCL/BPASmartClient.MorkCL.csproj b/BPASmartClient.MorkCL/BPASmartClient.MorkCL.csproj
index c111e642..945c9e55 100644
--- a/BPASmartClient.MorkCL/BPASmartClient.MorkCL.csproj
+++ b/BPASmartClient.MorkCL/BPASmartClient.MorkCL.csproj
@@ -6,9 +6,7 @@
true
-
- $(DefineConstants);FORMAL
-
+
diff --git a/BPASmartClient.MorkCL/Control_MorkCL.cs b/BPASmartClient.MorkCL/Control_MorkCL.cs
index 2717cf98..83ca143b 100644
--- a/BPASmartClient.MorkCL/Control_MorkCL.cs
+++ b/BPASmartClient.MorkCL/Control_MorkCL.cs
@@ -8,6 +8,7 @@ using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Net.WebSockets;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
@@ -63,10 +64,10 @@ namespace BPASmartClient.MorkCL
#if !FORMAL
devices[EDeviceType.炒锅1].Init(Json.Data.FryingPanIP1);
- devices[EDeviceType.炒锅2].Init(Json.Data.FryingPanIP2);
+ //devices[EDeviceType.炒锅2].Init(Json.Data.FryingPanIP2);
devices[EDeviceType.机器人].Init(Json.Data.RobotIP);
- devices[EDeviceType.压力锅].Init(Json.Data.PressureCookerIP);
- devices[EDeviceType.外部设备].Init(Json.Data.PPortName);
+ //devices[EDeviceType.压力锅].Init(Json.Data.PressureCookerIP);
+ //devices[EDeviceType.外部设备].Init(Json.Data.PPortName);
ManualActionRegiester();
#endif
@@ -98,7 +99,7 @@ namespace BPASmartClient.MorkCL
if (TaskList.ContainsKey(res)) TaskList.TryRemove(res, out _);
}
- private void FryingPanControl(EDeviceType et, ControlData cd)
+ private async void FryingPanControl(EDeviceType et, ControlData cd)
{
DeviceProcessLogShow($"开始执行-{cd.Name} 任务");
if (TaskList.ContainsKey(et) && TaskList[et].Cts.IsCancellationRequested) return;
@@ -106,35 +107,38 @@ namespace BPASmartClient.MorkCL
{
if (cd.ControlFuncs.TryDequeue(out FuncModel fm))
{
- //var device = (FryingPanServer)devices[et];
- //var robot = (RobotServer)devices[EDeviceType.机器人];
+ var device = (FryingPanServer)devices[et];
+ var robot = (RobotServer)devices[EDeviceType.机器人];
int index = (ushort)et - 1;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}。");
switch (fm.eFunc)
{
case EFunc.搅拌启动:
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-写入搅拌频率-{fm.funcPars.ElementAt(0).ParValue.ToString()}HZ。");
- //device.MixingFrequencySet(fm.funcPars.ElementAt(0).ParValue.ToString());
+ device.MixingFrequencySet(fm.funcPars.ElementAt(0).ParValue.ToString());
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-写入搅拌频率-{fm.funcPars.ElementAt(0).ParValue.ToString()}HZ完成。");
+
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-写入开始搅拌。");
- //device.StirStartOrStop = true;
+ device.StirStartOrStop = true;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-写入开始搅拌完成。");
+
break;
case EFunc.搅拌停止:
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-写入停止搅拌。");
- //device.StirStartOrStop = false;
+ device.StirStartOrStop = false;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-写入停止搅拌完成。");
break;
case EFunc.加热启动:
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置加热挡位-【{fm.funcPars.ElementAt(0).ParValue.ToString()}】。");
- //device.HeatingGearSet(fm.funcPars.ElementAt(0).ParValue.ToString());
+ device.HeatingGearSet(fm.funcPars.ElementAt(0).ParValue.ToString());
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置加热挡位完成,设置加热启动。");
- //device.HeatStartOrStop = true;
+
+ device.HeatStartOrStop = true;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置加热启动完成。");
break;
case EFunc.加热停止:
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置加热停止。");
- //device.HeatStartOrStop = false;
+ device.HeatStartOrStop = false;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置加热停止完成。");
break;
case EFunc.添加调料:
@@ -142,8 +146,10 @@ namespace BPASmartClient.MorkCL
var Seasoning = SqliteHelper.GetInstance.GetSeasoning().FirstOrDefault(p => p.Id == fm.funcPars.ElementAt(0).Id);
if (Seasoning != null)
{
- //device.CuttingControl(Seasoning.Loc.ToString(), fm.funcPars.ElementAt(1).ParValue.ToString());
+ //TODO:应该为下料完成就关闭。
+ device.CuttingControl(Seasoning.Loc.ToString(), fm.funcPars.ElementAt(1).ParValue.ToString());
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-执行下料,下料位置:{Seasoning.Loc.ToString()},下料重量:【{fm.funcPars.ElementAt(1).ParValue.ToString()}】。");
+
}
else
{
@@ -164,26 +170,33 @@ namespace BPASmartClient.MorkCL
//device.CuttingControl(Seasoning.Loc.ToString(), fm.funcPars.ElementAt(1).ParValue.ToString());
var ingredientes = Json.Data.IngredientsStorage[ingre_index];
//TODO:机器人下发取料
- DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-执行下料,控制取{ingre_index}库物料,下料名称:{ingredientes.Name.ToString()},下料重量:【{fm.funcPars.ElementAt(1).ParValue.ToString()}】。");
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-执行下料,控制取{ingre_index+1}库物料,下料名称:{ingredientes.Name.ToString()},下料重量:【{fm.funcPars.ElementAt(1).ParValue.ToString()}】。");
- DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{ingre_index.ToString()}】,子任务【{et}】。");
- //robot.RobotTaskControl(ingre_index.ToString(), et);
- DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{ingre_index.ToString()}】,子任务【{et}】完成。");
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{ingre_index+1.ToString()}】,子任务【{et}】。");
+ robot.RobotTaskControl(ingre_index+1.ToString(), et);
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{ingre_index+1.ToString()}】,子任务【{et}】完成。");
+
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅回原点。");
+ device.FryingPanHome = true;
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅回原点完成。");
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待炒锅到投料位置。");
- //device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);//等待炒锅到投料位置
+ device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);//等待炒锅到投料位置
+ device.FryingPanHome = false;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待炒锅到投料位置完成。");
+
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待机器人到投料位置。");
- //robot.MaterialPouringRequest[index].Wait(Cts: TaskList[et].Cts); //等待机器人到投料位置
+ robot.MaterialPouringRequest[index].Wait(Cts: TaskList[et].Cts); //等待机器人到投料位置
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待机器人到投料位置完成。");
+
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置允许机器人开始投料。");
- //robot.AllowPourVegetables(et);//允许机器人开始投料
+ robot.AllowPourVegetables(et);//允许机器人开始投料
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置允许机器人开始投料完成。");
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-开始等待机器人投料完成。");
- //robot.MaterialPouringComplete[index].Wait(Cts: TaskList[et].Cts); //等待机器人投料完成
+ robot.MaterialPouringComplete[index].Wait(Cts: TaskList[et].Cts); //等待机器人投料完成
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-机器人投料完成。");
Json.Data.IngredientsStorage[ingre_index] = new ItemStorage();
@@ -197,20 +210,22 @@ namespace BPASmartClient.MorkCL
}
break;
case EFunc.添加辅料:
- MaterialBase mb = new MaterialBase();
- if (fm.eFunc == EFunc.添加辅料)
- mb = SqliteHelper.GetInstance.GetAccessories().FirstOrDefault(p => p.Id == fm.funcPars.ElementAt(0).Id);
- else mb = SqliteHelper.GetInstance.GetIngredients().FirstOrDefault(p => p.Id == fm.funcPars.ElementAt(0).Id);
- DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{mb.Loc.ToString()}】,子任务【{et}】。");
- //robot.RobotTaskControl(mb.Loc.ToString(), et);
- DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{mb.Loc.ToString()}】,子任务【{et}】完成。");
+ MaterialBase mb = SqliteHelper.GetInstance.GetAccessories().FirstOrDefault(p => p.Id == fm.funcPars.ElementAt(0).Id);
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{(mb.Loc+12).ToString()}】,子任务【{et}】。");
+ robot.RobotTaskControl((mb.Loc+12).ToString(), et);
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人任务【{(mb.Loc+12).ToString()}】,子任务【{et}】完成。");
+
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅回原点。");
+ device.FryingPanHome = true;
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅回原点完成。");
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待炒锅到投料位置。");
- //device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);//等待炒锅到投料位置
+ device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);//等待炒锅到投料位置
+ device.FryingPanHome = false;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待炒锅到投料位置完成。");
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待机器人到投料位置。");
- //robot.MaterialPouringRequest[index].Wait(Cts: TaskList[et].Cts); //等待机器人到投料位置
+ robot.MaterialPouringRequest[index].Wait(Cts: TaskList[et].Cts); //等待机器人到投料位置
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待机器人到投料位置完成。");
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置允许机器人开始投料。");
@@ -218,36 +233,69 @@ namespace BPASmartClient.MorkCL
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置允许机器人开始投料完成。");
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-开始等待机器人投料完成。");
- //robot.MaterialPouringComplete[index].Wait(Cts: TaskList[et].Cts); //等待机器人投料完成
+ robot.MaterialPouringComplete[index].Wait(Cts: TaskList[et].Cts); //等待机器人投料完成
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-机器人投料完成。");
break;
case EFunc.炒锅回原点位:
+
+
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅回原点。");
- //device.FryingPanHome = true;
+ device.FryingPanHome = true;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅回原点完成。");
+
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-等待回原点完成。");
+ device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);
+ device.FryingPanHome = false;
+
break;
case EFunc.出餐启动:
+
+ device.DiningOutStart = false;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人取空盆。");
- //robot.RobotTaskControl("1", et);//取空盆
+ //TODO:正常应该是哪个有空盆取哪个。
+ robot.RobotTaskControl("21", et);//取空盆
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置机器人取空盆完成,等待机器人到出菜位置。");
- //robot.DiningOutRequest[index].Wait(Cts: TaskList[et].Cts);//等待机器人到出菜位置
+
+ robot.DiningOutRequest[index].Wait(Cts: TaskList[et].Cts);//等待机器人到出菜位置
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-机器人已到出餐位置,出餐启动。");
- //device.DiningOutStart = true;
+ device.DiningOutStart = true;
+
+ device.OutDinningSlowDownFlag.Wait(Cts: TaskList[et].Cts) ;
+ robot.ModerateInPlace(et);
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-到达出餐减速位。");
+
+ device.OutDinningFinsh.Wait(Cts: TaskList[et].Cts);
+ robot.DiningOutComplete(et);
+
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-出餐完成。");
+ //回到投料位置就复位。
+ Thread.Sleep(500);
+ device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);
+ device.DiningOutStart = false;
break;
case EFunc.炒锅清洗:
- DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置超过清洗。");
- //device.FryingPanClear = true;
+ DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅清洗。");
+ device.FryingPanClear = true;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-炒锅清洗已写入。");
+
+ Thread.Sleep(500);
+ device.CleanFinish.Wait(Cts: TaskList[et].Cts);
+ device.FryingPanClear = false;
break;
case EFunc.炒锅回投料位置:
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅到调料位置。");
- //device.FryingPanFeedingLoc = true;
+ device.FryingPanFeedingLoc = true;
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置炒锅到调料位置完成。");
+
+ //回到投料位置就复位。
+
+ Thread.Sleep(500);
+ device.FeedingLocFB.Wait(Cts: TaskList[et].Cts);
+ device.DiningOutStart = false;
break;
case EFunc.去指定炒制位:
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置去指定炒制位。");
- //device.SetStirFryingLoc(fm.funcPars.ElementAt(0).ParValue.ToString());
+ device.SetStirFryingLoc(fm.funcPars.ElementAt(0).ParValue.ToString());
DeviceProcessLogShow($"{cd.Name}-任务执行-{fm.eFunc.ToString()}-设置去指定炒制位【{fm.funcPars.ElementAt(0).ParValue.ToString()}】完成。");
break;
case EFunc.炒制:
@@ -280,6 +328,31 @@ namespace BPASmartClient.MorkCL
//这两个是字段。直接赋值
morkCL.FeedingLocFB1 = fryingPan1.FeedingLocFB;
morkCL.FeedingLocFB2=fryingPan2.FeedingLocFB;
+ morkCL.CleanFinish1 = fryingPan1.CleanFinish;
+ morkCL.CleanFinish2 = fryingPan2.CleanFinish;
+ morkCL.OutDinningFinsh1 = fryingPan1.OutDinningFinsh;
+ morkCL.OutDinningFinsh2 = fryingPan2.OutDinningFinsh;
+ morkCL.OutDinningSlowDownFlag1 = fryingPan1.OutDinningSlowDownFlag;
+ morkCL.OutDinningSlowDownFlag2 = fryingPan2.OutDinningSlowDownFlag;
+
+ if (fryingPan1.FeedingLocFB)
+ {
+ robot.AllowPourVegetables(EDeviceType.炒锅1);
+ }
+ else
+ {
+ robot.DisablePourVegetables(EDeviceType.炒锅1);
+ }
+
+ if (fryingPan2.FeedingLocFB)
+ {
+ robot.AllowPourVegetables(EDeviceType.炒锅2);
+ }
+ else
+ {
+ robot.DisablePourVegetables(EDeviceType.炒锅2);
+ }
+
foreach (var property in propertyInfos)
{
@@ -358,10 +431,13 @@ namespace BPASmartClient.MorkCL
{
ActionManage.GetInstance.Register((object location) =>
{
- if (String.IsNullOrEmpty(location.ToString()) &&location.ToString().Length>=0)
+ var loc = location.ToString();
+ if (!String.IsNullOrEmpty(loc) && loc.Length>=0)
{
var robot = (RobotServer)devices[EDeviceType.机器人];
- robot.WarehousingControl(location.ToString());
+ robot.WarehousingControl(loc);
+ //会卡死。
+ //robot.WarehousingComplete[(Convert.ToInt32(loc)-1)].Wait();
}
},"ItemStorage",true);
diff --git a/BPASmartClient.MorkCL/GVL_MorkCL.cs b/BPASmartClient.MorkCL/GVL_MorkCL.cs
index a5fef689..2e6b8b17 100644
--- a/BPASmartClient.MorkCL/GVL_MorkCL.cs
+++ b/BPASmartClient.MorkCL/GVL_MorkCL.cs
@@ -59,6 +59,23 @@ namespace BPASmartClient.MorkCL
[VariableMonitor("1号炒锅-通道出料完成反馈(1-3)", "LB110")]
public bool[] ChannelDisCom1 { get; set; } = new bool[3];
+ ///
+ /// 清洗完成
+ ///
+ [VariableMonitor("1号炒锅-清洗完成", "LB113")]
+ public bool CleanFinish1 { get; set; }
+
+ ///
+ /// 倒菜出餐完成。
+ ///
+ [VariableMonitor("1号炒锅-倒菜出餐完成", "LB114")]
+ public bool OutDinningFinsh1 { get; set; }
+ ///
+ /// 炒锅倒菜减速位
+ ///
+ [VariableMonitor("1号炒锅-倒菜减速位", "LB115")]
+ public bool OutDinningSlowDownFlag1 { get; set; }
+
///
/// 当前锅底温度
///
@@ -127,6 +144,24 @@ namespace BPASmartClient.MorkCL
[VariableMonitor("2号炒锅-通道出料完成反馈(1-3)", "LB110")]
public bool[] ChannelDisCom2 { get; set; } = new bool[3];
+
+ ///
+ /// 清洗完成
+ ///
+ [VariableMonitor("2号炒锅-清洗完成", "LB113")]
+ public bool CleanFinish2 { get; set; }
+
+ ///
+ /// 倒菜出餐完成。
+ ///
+ [VariableMonitor("2号炒锅-倒菜出餐完成", "LB114")]
+ public bool OutDinningFinsh2 { get; set; }
+
+ ///
+ /// 炒锅倒菜减速位
+ ///
+ [VariableMonitor("2号炒锅-倒菜减速位", "LB115")]
+ public bool OutDinningSlowDownFlag2 { get; set; }
///
/// 当前锅底温度
///
@@ -154,19 +189,19 @@ namespace BPASmartClient.MorkCL
///
/// 倒料请求
///
- [VariableMonitor("机器人-倒料请求-[1:1号炒锅,2:2号炒锅,3:高压锅]", "LW22")]
- public bool[] MaterialPouringRequest = new bool[3];
+ [VariableMonitor("机器人-倒料请求-[1,2:炒锅,3:高压锅]", "LW22")]
+ public bool[] MaterialPouringRequest { get; set; } = new bool[3];
///
/// 倒料完成
///
- [VariableMonitor("机器人-倒料完成-[1:1号炒锅,2:2号炒锅,3:高压锅]", "LW22")]
- public bool[] MaterialPouringComplete = new bool[3];
+ [VariableMonitor("机器人-倒料完成-[1,2:炒锅,3:高压锅]", "LW22")]
+ public bool[] MaterialPouringComplete { get; set; } = new bool[3];
///
/// 出餐请求,机器人到位请求炒锅出餐
///
- [VariableMonitor("机器人-出餐请求-[1:1号炒锅,2:2号炒锅,3:高压锅]", "LW22")]
+ [VariableMonitor("机器人-出餐请求-[1,2:炒锅,3:高压锅]", "LW22")]
public bool[] DiningOutRequest { get; set; } = new bool[3];
///
@@ -212,12 +247,13 @@ namespace BPASmartClient.MorkCL
///
[VariableMonitor("电子秤当前重量", "0")]
public float CurrentWeight { get; set; }
- //TODO:正式使用解除注释。
+#if !FORMAL
///
/// 空箱子检测
///
//[VariableMonitor("出餐箱子在位检测", "0")]
//public bool[] BoxDetection { get; set; } = new bool[4];
+#endif
#endregion
}
}
diff --git a/BPASmartClient.MorkCL/Model/Control/FryingPanGet.cs b/BPASmartClient.MorkCL/Model/Control/FryingPanGet.cs
index 3cc9e8b9..9bd49f36 100644
--- a/BPASmartClient.MorkCL/Model/Control/FryingPanGet.cs
+++ b/BPASmartClient.MorkCL/Model/Control/FryingPanGet.cs
@@ -29,7 +29,7 @@ namespace BPASmartClient.MorkCL.Model.Control
public bool[] StirFryingLocFB { get; set; } = new bool[4];
///
- /// 炒锅在出餐位置反馈
+ /// 炒锅在出餐位置反馈,投料位置和原点在同一个点。
///
public bool DiningOutLocFB { get; set; }
@@ -47,7 +47,20 @@ namespace BPASmartClient.MorkCL.Model.Control
/// 通道出料完成反馈(1-3)
///
public bool[] ChannelDisCom { get; set; } = new bool[3];
+ ///
+ /// 清洗完成
+ ///
+ public bool CleanFinish;
+ ///
+ /// 倒菜出餐完成。
+ ///
+ public bool OutDinningFinsh;
+
+ ///
+ /// 炒锅倒菜减速位
+ ///
+ public bool OutDinningSlowDownFlag;
///
/// 当前锅底温度
///
diff --git a/BPASmartClient.MorkCL/Model/Control/FryingPanSet.cs b/BPASmartClient.MorkCL/Model/Control/FryingPanSet.cs
index bfdd373f..83096254 100644
--- a/BPASmartClient.MorkCL/Model/Control/FryingPanSet.cs
+++ b/BPASmartClient.MorkCL/Model/Control/FryingPanSet.cs
@@ -19,6 +19,11 @@ namespace BPASmartClient.MorkCL.Model.Control
///
public bool HeatStartOrStop { get { return default; } set { MyModbus.Write("LB3".ToModbusAdd(), value); } }
+ ///
+ /// 通道下料启动
+ ///
+ //public bool ChnnelDisStart { get { return default; } set { MyModbus.Write("LB3".ToModbusAdd(), value); } }
+
///
/// 通道下料启动控制(1-3)
///
@@ -26,13 +31,18 @@ namespace BPASmartClient.MorkCL.Model.Control
/// 通道需求值
public void CuttingControl(string Num, string demandValue)
{
+
if (ushort.TryParse(Num, out ushort ChannelNum) && ushort.TryParse(demandValue, out ushort value))
if (ChannelNum >= 1 && ChannelNum <= 3)
{
- byte[] VWOffset = new byte[3] { 6, 8, 10 };
- byte[] LBOffset = new byte[3] { 6, 7, 0 };
- MyModbus.Write($"VW10{VWOffset[ChannelNum - 1]}".ToModbusAdd(), value);
+ byte[] VWOffset = new byte[3] { 3, 4, 5 };
+ byte[] LBOffset = new byte[3] { 6, 7, 8 };
+ MyModbus.Write($"LW{VWOffset[ChannelNum - 1]}".ToModbusAdd(), value);
MyModbus.Write($"LB{LBOffset[ChannelNum - 1]}".ToModbusAdd(), true);
+ //扫描周期较短,不等下料完成读为0,就已经过了,添加一个延时。
+ Thread.Sleep(500);
+ ChannelDisCom[ChannelNum - 1].Wait();
+ MyModbus.Write($"LB{LBOffset[ChannelNum - 1]}".ToModbusAdd(), false);
}
}
@@ -45,8 +55,9 @@ namespace BPASmartClient.MorkCL.Model.Control
if (ushort.TryParse(value, out ushort Gear))
if (Gear >= 1 && Gear <= 8)
{
- MyModbus.Write($"VW100".ToModbusAdd(), Gear);
+ MyModbus.Write($"LW0".ToModbusAdd(), Gear);
MyModbus.Write($"LB9".ToModbusAdd(), true);
+ MyModbus.Write($"LB9".ToModbusAdd(), false);
}
}
@@ -59,8 +70,9 @@ namespace BPASmartClient.MorkCL.Model.Control
if (ushort.TryParse(value, out ushort Frequency))
if (Frequency >= 0 && Frequency <= 50)
{
- MyModbus.Write($"VW102".ToModbusAdd(), Frequency);
+ MyModbus.Write($"LW1".ToModbusAdd(), Frequency*100);
MyModbus.Write($"LB10".ToModbusAdd(), true);
+ MyModbus.Write($"LB10".ToModbusAdd(), false);
}
}
@@ -73,8 +85,9 @@ namespace BPASmartClient.MorkCL.Model.Control
if (ushort.TryParse(value, out ushort Frequency))
if (Frequency >= 0 && Frequency <= 50)
{
- MyModbus.Write($"VW104".ToModbusAdd(), Frequency);
+ MyModbus.Write($"LW2".ToModbusAdd(), Frequency);
MyModbus.Write($"LB11".ToModbusAdd(), true);
+ MyModbus.Write($"LB11".ToModbusAdd(), false);
}
}
@@ -108,6 +121,9 @@ namespace BPASmartClient.MorkCL.Model.Control
if (loc >= 1 && loc <= 4)
{
MyModbus.Write($"LB{loc + 15}".ToModbusAdd(), true);
+ Thread.Sleep(500);
+ StirFryingLocFB[loc - 1].Wait();
+ MyModbus.Write($"LB{loc + 15}".ToModbusAdd(), false);
}
}
diff --git a/BPASmartClient.MorkCL/Model/Control/RobotGet.cs b/BPASmartClient.MorkCL/Model/Control/RobotGet.cs
index d60184d1..ad854dd8 100644
--- a/BPASmartClient.MorkCL/Model/Control/RobotGet.cs
+++ b/BPASmartClient.MorkCL/Model/Control/RobotGet.cs
@@ -14,12 +14,12 @@ namespace BPASmartClient.MorkCL.Model.Control
///
/// 倒料请求
///
- public bool[] MaterialPouringRequest = new bool[3];
+ public bool[] MaterialPouringRequest { get; set; } = new bool[3];
///
/// 倒料完成
///
- public bool[] MaterialPouringComplete = new bool[3];
+ public bool[] MaterialPouringComplete { get; set; } = new bool[3];
///
/// 出餐请求,机器人到位请求炒锅出餐
diff --git a/BPASmartClient.MorkCL/Model/Control/RobotSet.cs b/BPASmartClient.MorkCL/Model/Control/RobotSet.cs
index cdc9d907..b00b0c4e 100644
--- a/BPASmartClient.MorkCL/Model/Control/RobotSet.cs
+++ b/BPASmartClient.MorkCL/Model/Control/RobotSet.cs
@@ -54,7 +54,27 @@ namespace BPASmartClient.MorkCL.Model.Control
break;
}
}
-
+ ///
+ /// 禁止机器人倒菜到炒锅。
+ ///
+ /// 炒锅类型
+ public void DisablePourVegetables(EDeviceType num)
+ {
+ switch (num)
+ {
+ case EDeviceType.炒锅1:
+ MyModbus.Write("GM500".ToModbusAdd(), false);
+ break;
+ case EDeviceType.炒锅2:
+ MyModbus.Write("GM501".ToModbusAdd(), false);
+ break;
+ case EDeviceType.压力锅:
+ MyModbus.Write("GM502".ToModbusAdd(), false);
+ break;
+ default:
+ break;
+ }
+ }
///
/// 出餐减速到位
///
diff --git a/BPASmartClient.MorkCL/Model/Json/ConnectPar.cs b/BPASmartClient.MorkCL/Model/Json/ConnectPar.cs
index 69e0c041..5315c472 100644
--- a/BPASmartClient.MorkCL/Model/Json/ConnectPar.cs
+++ b/BPASmartClient.MorkCL/Model/Json/ConnectPar.cs
@@ -8,26 +8,38 @@ namespace BPASmartClient.MorkCL.Model.Json
{
public class ConnectPar
{
- //1号炒锅
- public string FryingPanIP1 { get; } = "192.168.0.1";
+ ///
+ /// 1号炒锅
+ ///
+ public string FryingPanIP1 { get; } = "192.168.6.100";
public string FryingPanPort1 { get; } = "502";
- //2号炒锅
- public string FryingPanIP2 { get; } = "192.168.0.2";
+ ///
+ /// 2号炒锅
+ ///
+ public string FryingPanIP2 { get; } = "192.168.6.101";
public string FryingPanPort2 { get; } = "502";
- //压力锅
- public string PressureCookerIP { get; } = "192.168.0.3";
+ ///
+ /// 压力锅
+ ///
+ public string PressureCookerIP { get; } = "192.168.6.102";
public string PressureCookerPort { get; } = "502";
- //机器人
- public string RobotIP { get; } = "192.168.0.4";
+ ///
+ /// 机器人
+ ///
+ public string RobotIP { get; } = "192.168.6.103";
public string RobotPort { get; } = "502";
- //电子秤端口号
+ ///
+ /// 电子秤端口号
+ ///
public string ESPortName { get; } = "COM1";
- //外设端口号
+ ///
+ /// 外设端口号
+ ///
public string PPortName { get; } = "COM2";
}
}
diff --git a/BPASmartClient.MorkCL/Server/FryingPanServer.cs b/BPASmartClient.MorkCL/Server/FryingPanServer.cs
index 24b30b3e..7e355ffd 100644
--- a/BPASmartClient.MorkCL/Server/FryingPanServer.cs
+++ b/BPASmartClient.MorkCL/Server/FryingPanServer.cs
@@ -19,7 +19,7 @@ namespace BPASmartClient.MorkCL.Server
{
TaskManage.GetInstance.StartLong(new Action(() =>
{
- MyModbus.Read("LB100".ToModbusAdd(), 13).OnSuccess(s =>
+ MyModbus.Read("LB100".ToModbusAdd(), 16).OnSuccess(s =>
{
InitComplete = s[0];
StatusMode = s[1];
@@ -32,6 +32,10 @@ namespace BPASmartClient.MorkCL.Server
WashingPotLocFB = s[9];
for (byte i = 0; i < 3; i++) ChannelDisCom[i] = s[i + 10];
+
+ CleanFinish = s[13];
+ OutDinningFinsh = s[14];
+ OutDinningSlowDownFlag = s[15];
});
diff --git a/BPASmartClient.MorkCL/Server/RobotServer.cs b/BPASmartClient.MorkCL/Server/RobotServer.cs
index 799bfc27..e5d00e70 100644
--- a/BPASmartClient.MorkCL/Server/RobotServer.cs
+++ b/BPASmartClient.MorkCL/Server/RobotServer.cs
@@ -19,9 +19,9 @@ namespace BPASmartClient.MorkCL.Server
{
TaskManage.GetInstance.StartLong(new Action(() =>
{
- MyModbus.Read("M600".ToModbusAdd(), 9).OnSuccess(s =>
- {
- for (byte i = 0; i < 3; i++)
+ MyModbus.Read("GM600".ToModbusAdd(), 9).OnSuccess(s =>
+ {
+ for (byte i = 0; i < 3; i++)
{
MaterialPouringRequest[i] = s[i * 3];
MaterialPouringComplete[i] = s[i * 3 + 1];
@@ -29,9 +29,9 @@ namespace BPASmartClient.MorkCL.Server
}
});
- MyModbus.Read("M630".ToModbusAdd(), 12).OnSuccess(s =>
- {
- for (byte i = 0; i < s.Length; i++) WarehousingComplete[i] = s[i];
+ MyModbus.Read("GM630".ToModbusAdd(), 12).OnSuccess(s =>
+ {
+ for (byte i = 0; i < s.Length; i++) WarehousingComplete[i] = s[i];
});
MyModbus.Read("GI5".ToModbusAdd(), 1).OnSuccess(s => { TaskFeedback = (RobotMainTask)s; });
diff --git a/BPASmartClient.MorkCL/View/Debug.xaml b/BPASmartClient.MorkCL/View/Debug.xaml
index 9963d4bf..e36dd551 100644
--- a/BPASmartClient.MorkCL/View/Debug.xaml
+++ b/BPASmartClient.MorkCL/View/Debug.xaml
@@ -5,16 +5,34 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BPASmartClient.MorkCL.View"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:vm="clr-namespace:BPASmartClient.MorkCL.ViewModel"
d:DesignHeight="450"
d:DesignWidth="800" Name="调试界面"
mc:Ignorable="d">
+
+
+
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BPASmartClient.MorkCL/ViewModel/DebugViewModel.cs b/BPASmartClient.MorkCL/ViewModel/DebugViewModel.cs
new file mode 100644
index 00000000..61e528e6
--- /dev/null
+++ b/BPASmartClient.MorkCL/ViewModel/DebugViewModel.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkCL.ViewModel
+{
+ public class DebugViewModel:NotifyBase
+ {
+ public DebugViewModel()
+ {
+
+ }
+
+ public int HeatGear { get; set; }
+ }
+}
diff --git a/BPASmartClient.MorkCL/ViewModel/ItemStorageViewModel.cs b/BPASmartClient.MorkCL/ViewModel/ItemStorageViewModel.cs
index e4a55858..354f706e 100644
--- a/BPASmartClient.MorkCL/ViewModel/ItemStorageViewModel.cs
+++ b/BPASmartClient.MorkCL/ViewModel/ItemStorageViewModel.cs
@@ -10,13 +10,13 @@ namespace BPASmartClient.MorkCL.ViewModel
public ItemStorageViewModel()
{
//加载读取数据。
- //AddTestData();
+ AddTestData();
ActionManage.GetInstance.Register(() =>
{
IngredientsItorage = new ObservableCollection(Json.Data.IngredientsStorage);
AccessoriesItorage = new ObservableCollection(Json.Data.AccessoriesStorage);
- },"RefreshItemStorage");
+ },"RefreshItemStorage",true);
ActionManage.GetInstance.Register((() =>
@@ -31,7 +31,7 @@ namespace BPASmartClient.MorkCL.ViewModel
if (o!=null)
{
#if !FORMAL
- ScaleCurrentWeight = (float)o;
+ // ScaleCurrentWeight = (float)o;
#else
ScaleCurrentWeight = 1.23f;
#endif
@@ -55,7 +55,7 @@ namespace BPASmartClient.MorkCL.ViewModel
item.Name = ingredients.Name;
item.IsEmploy = true;
item.Weight = ScaleCurrentWeight;
- ActionManage.GetInstance.Send("ItemStorage", IngredientsItorage.IndexOf(item));
+ ActionManage.GetInstance.Send("ItemStorage", IngredientsItorage.IndexOf(item)+1);
Json.Data.IngredientsStorage = IngredientsItorage.ToArray();
Json.Save();