Browse Source

morkf

样式分支
NXX 1 year ago
parent
commit
7bf99987c0
16 changed files with 636 additions and 182 deletions
  1. +16
    -0
      BPASmartClient.Device/BaseDevice.cs
  2. +3
    -1
      BPASmartClient.MilkWithTea/View/RecipeConfige.xaml.cs
  3. +17
    -0
      BPASmartClient.MorkBF/BPASmartClient.MorkBF.csproj
  4. +8
    -0
      BPASmartClient.MorkBF/Class1.cs
  5. +136
    -0
      BPASmartClient.MorkBF/Control_MorkBF.cs
  6. +33
    -0
      BPASmartClient.MorkBF/GVL_MorkBF.cs
  7. +65
    -0
      BPASmartClient.MorkBF/Model/BF_Food.cs
  8. +12
    -0
      BPASmartClient.MorkBF/OrderLocInfo.cs
  9. +46
    -0
      BPASmartClient.MorkBF/VIew/DebugView.xaml
  10. +28
    -0
      BPASmartClient.MorkBF/VIew/DebugView.xaml.cs
  11. +50
    -0
      BPASmartClient.MorkBF/VIew/FoodManagerView.xaml
  12. +27
    -0
      BPASmartClient.MorkBF/VIew/FoodManagerView.xaml.cs
  13. +171
    -180
      BPASmartClient.MorkF/Control_MorkF.cs
  14. +0
    -1
      BPASmartClient.MorkF/ViewModel/DebugViewModel.cs
  15. +1
    -0
      BPASmartClient/BPASmartClient.csproj
  16. +23
    -0
      SmartClient.sln

+ 16
- 0
BPASmartClient.Device/BaseDevice.cs View File

@@ -127,6 +127,22 @@ namespace BPASmartClient.Device
} }
} }
} }
/// <summary>
/// 多设备分开写控制
/// </summary>
/// <param name="address"></param>
/// <param name="value"></param>
public void WriteControlExact(string address, object value,int i)
{
if (peripherals != null)
{
if (peripherals.Count > i)
{
peripherals.ElementAt(i).WriteData(address, value);
}
}
}



/// <summary> /// <summary>
/// 设备过程日志显示 /// 设备过程日志显示


+ 3
- 1
BPASmartClient.MilkWithTea/View/RecipeConfige.xaml.cs View File

@@ -43,6 +43,8 @@ namespace BPASmartClient.MilkWithTea.View
private void Button_Click(object sender, RoutedEventArgs e) private void Button_Click(object sender, RoutedEventArgs e)
{ {
this.Close(); this.Close();
} }


@@ -69,7 +71,7 @@ namespace BPASmartClient.MilkWithTea.View
private bool IsMouseOverTarget(Visual target, GetPositionDelegate getPosition) private bool IsMouseOverTarget(Visual target, GetPositionDelegate getPosition)
{ {
Rect bounds = VisualTreeHelper.GetDescendantBounds(target); Rect bounds = VisualTreeHelper.GetDescendantBounds(target);
Point mousePos = getPosition((IInputElement)target);
Point mousePos = getPosition((IInputElement)target);
return bounds.Contains(mousePos); return bounds.Contains(mousePos);
} }




+ 17
- 0
BPASmartClient.MorkBF/BPASmartClient.MorkBF.csproj View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
</PropertyGroup>

<ItemGroup>
<Folder Include="ViewModel\" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" />
</ItemGroup>

</Project>

+ 8
- 0
BPASmartClient.MorkBF/Class1.cs View File

@@ -0,0 +1,8 @@
using System;

namespace BPASmartClient.MorkBF
{
public class Class1
{
}
}

+ 136
- 0
BPASmartClient.MorkBF/Control_MorkBF.cs View File

@@ -0,0 +1,136 @@
using BPA.Message.Enum;
using BPASmartClient.Device;
using BPASmartClient.EventBus;
using BPASmartClient.Helper;
using BPASmartClient.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using static BPASmartClient.EventBus.EventBus;

namespace BPASmartClient.MorkBF
{
public class Control_MorkBF : BaseDevice
{
GVL_MorkBF morkBF = new GVL_MorkBF();

public override DeviceClientType DeviceType => DeviceClientType.MORKCS;

public override void DoMain()
{
CommandRegist();//调试
ServerInit();
DataParse();//数据解析
DeviceProcessLogShow("MORKF 设备初始化完成");
}

private void DataParse()
{
EventBus.EventBus.GetInstance().Subscribe<DoOrderEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBackHandle)
{
if (@event == null) return;
if (@event is DoOrderEvent order)
{
if (order.MorkOrder.GoodBatchings == null) return;
OrderCount++;
DeviceProcessLogShow($"接收到{OrderCount}次订单");

}

});
}

private void ServerInit()
{
//物料信息
EventBus.EventBus.GetInstance().Subscribe<MaterialDeliveryEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
if (@event == null) return;
if (@event is MaterialDeliveryEvent material)
{
orderMaterialDelivery = material.orderMaterialDelivery;

}
});

//配方数据信息
EventBus.EventBus.GetInstance().Subscribe<RecipeBomEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
if (@event == null) return;
if (@event is RecipeBomEvent recipe)
{
recipeBoms = recipe.recipeBoms;
}
});
}
/// <summary>
/// 调试
/// </summary>
/// <exception cref="NotImplementedException"></exception>
private void CommandRegist()
{
}

public override void MainTask()
{
if(morkBF.FirePan1_Order.Count == 0&&!morkBF.FirePan1_Busy)
{
ThreadManage.GetInstance().Start(FirePot1_Process, "炒锅1主进程");
}

if (morkBF.FirePan2_Order.Count == 0 && !morkBF.FirePan2_Busy)
{
ThreadManage.GetInstance().Start(FirePot2_Process, "炒锅2主进程");
}
}

private void FirePot1_Process()
{
morkBF.FirePan1_Busy = true;
morkBF.FirePan1_Date = DateTime.Now;
while (morkBF.FirePan1_Date.AddMinutes(1)> DateTime.Now)
{
Thread.Sleep(500);
}
ThreadManage.GetInstance().StopTask("炒锅1主进程");
}

private void FirePot2_Process()
{
morkBF.FirePan2_Busy = true;
morkBF.FirePan2_Date = DateTime.Now;
while (morkBF.FirePan2_Date.AddMinutes(1) > DateTime.Now)
{
Thread.Sleep(500);
}
ThreadManage.GetInstance().StopTask("炒锅2主进程");
}

public override void ReadData()
{
}

public override void ResetProgram()
{
morkBF = null;
morkBF = new GVL_MorkBF();
}

public override void SimOrder()
{
}

public override void Stop()
{
}
}
}

+ 33
- 0
BPASmartClient.MorkBF/GVL_MorkBF.cs View File

@@ -0,0 +1,33 @@
using BPASmartClient.MorkBF.Model;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPASmartClient.MorkBF
{
internal class GVL_MorkBF
{
/// <summary>
/// 炒锅1订单队列
/// </summary>
public ConcurrentQueue<BF_Food> FirePan1_Order { get; set; } = new ConcurrentQueue<BF_Food>();
/// <summary>
/// 炒锅2订单队列
/// </summary>
public ConcurrentQueue<BF_Food> FirePan2_Order { get; set; } = new ConcurrentQueue<BF_Food>();
/// <summary>
/// 炒锅1忙碌
/// </summary>
public bool FirePan1_Busy = false;
/// <summary>
/// 炒锅2忙碌
/// </summary>
public bool FirePan2_Busy = false;

public DateTime FirePan1_Date;
public DateTime FirePan2_Date;
}
}

+ 65
- 0
BPASmartClient.MorkBF/Model/BF_Food.cs View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPASmartClient.MorkBF.Model
{
public class BF_Food
{
/// <summary>
/// 菜品名称
/// </summary>
public string FoodName { get; set; }
/// <summary>
/// 菜品ID
/// </summary>
public string FoodID { get; set; }

}

public class BF_PotAction
{
/// <summary>
/// 步骤
/// </summary>
public int FryTime
{
get;
set;
}
/// <summary>
/// 时间
/// </summary>
public int During
{
get;
set;
}
/// <summary>
/// 动作
/// </summary>
public string Actions
{
get;
set;
}
/// <summary>
/// 调料
/// </summary>
public List<int> SeasoningLists
{
get;
set;
}
/// <summary>
/// 菜品
/// </summary>
public List<int> MaterialLists
{
get;
set;
}
}
}

+ 12
- 0
BPASmartClient.MorkBF/OrderLocInfo.cs View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPASmartClient.MorkBF
{
internal class OrderLocInfo
{
}
}

+ 46
- 0
BPASmartClient.MorkBF/VIew/DebugView.xaml View File

@@ -0,0 +1,46 @@
<UserControl x:Class="BPASmartClient.MorkBF.VIew.DebugView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BPASmartClient.MorkBF.VIew"
mc:Ignorable="d"
d:DesignHeight="900" d:DesignWidth="1600">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" />
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<GroupBox Header="本地菜品" FontSize="22">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Content="添加新菜谱" Width="120" HorizontalAlignment="Right" Margin="20,0"/>
<ListBox Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding FoodName}"/>
<Button Grid.Column="1" Content="编辑" Command="EditFood"/>
<Button Grid.Column="2" Content="删除" Command="EditFood"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</GroupBox>
</Grid>
</UserControl>

+ 28
- 0
BPASmartClient.MorkBF/VIew/DebugView.xaml.cs View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace BPASmartClient.MorkBF.VIew
{
/// <summary>
/// DebugView.xaml 的交互逻辑
/// </summary>
public partial class DebugView : UserControl
{
public DebugView()
{
InitializeComponent();
}
}
}

+ 50
- 0
BPASmartClient.MorkBF/VIew/FoodManagerView.xaml View File

@@ -0,0 +1,50 @@
<Window x:Class="BPASmartClient.MorkBF.VIew.FoodManagerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BPASmartClient.MorkBF.VIew"
mc:Ignorable="d"
Title="FoodManagerView" Height="450" Width="800" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" WindowStyle="None" AllowsTransparency="True" Background="Transparent">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" />
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Height="45">
<TextBlock Text="菜品名称:" Margin="10,0"/>
<TextBox Text="{Binding FoodName}" Width="160" Margin="10,0" FontSize="16"/>
<Button Content="添加新步骤" Margin="10,0" Style="{StaticResource ButtonStyle}" Height="36" />
<Button Content="保存" Margin="10,0" Style="{StaticResource ButtonStyle}" Height="36" Width="80"/>
<Button Content="退出" Margin="10,0" Style="{StaticResource ButtonStyle}" Height="36" Width="80"/>
</StackPanel>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ComboBox />
<Button Content="删除"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Grid>
</Window>

+ 27
- 0
BPASmartClient.MorkBF/VIew/FoodManagerView.xaml.cs View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace BPASmartClient.MorkBF.VIew
{
/// <summary>
/// FoodManagerView.xaml 的交互逻辑
/// </summary>
public partial class FoodManagerView : Window
{
public FoodManagerView()
{
InitializeComponent();
}
}
}

+ 171
- 180
BPASmartClient.MorkF/Control_MorkF.cs View File

@@ -36,8 +36,6 @@ namespace BPASmartClient.MorkF
{ {
#region 设备控制 #region 设备控制
ActionManage.GetInstance.Register(PLCInite, "InitCommand"); ActionManage.GetInstance.Register(PLCInite, "InitCommand");
ActionManage.GetInstance.Register(FoodPlcInite, "FoodPlcInite");
ActionManage.GetInstance.Register(InitialData, "SimultaorOrder");
ActionManage.GetInstance.Register(StartOrder, "StartOrder"); ActionManage.GetInstance.Register(StartOrder, "StartOrder");
ActionManage.GetInstance.Register(StartLocalOrder, "StartLocalOrder"); ActionManage.GetInstance.Register(StartLocalOrder, "StartLocalOrder");
#endregion #endregion
@@ -45,7 +43,6 @@ namespace BPASmartClient.MorkF
#region 菜品库 #region 菜品库
ActionManage.GetInstance.Register(FoodLibInit, "FoodLibInit"); ActionManage.GetInstance.Register(FoodLibInit, "FoodLibInit");
ActionManage.GetInstance.Register(Electromagnetism, "Electromagnetism"); ActionManage.GetInstance.Register(Electromagnetism, "Electromagnetism");
ActionManage.GetInstance.Register(Electromagnetism, "Electromagnetism");
ActionManage.GetInstance.Register(GetDistance_1, "GetDistance_1"); ActionManage.GetInstance.Register(GetDistance_1, "GetDistance_1");
ActionManage.GetInstance.Register(GetDistance_2, "GetDistance_2"); ActionManage.GetInstance.Register(GetDistance_2, "GetDistance_2");
ActionManage.GetInstance.Register(GetDistance_3, "GetDistance_3"); ActionManage.GetInstance.Register(GetDistance_3, "GetDistance_3");
@@ -78,38 +75,53 @@ namespace BPASmartClient.MorkF
} }


#region 菜品库 #region 菜品库

/// <summary>
/// 菜品库数据写入
/// </summary>
/// <param name="address"></param>
/// <param name="value"></param>
private void MaterailLibrary_Write(string address,object value)
{
WriteControlExact(address, value, 1);
}
/// <summary>
/// 菜品库初始化
/// </summary>
public void FoodLibInit() public void FoodLibInit()
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
/// <summary>
/// 电磁阀启停
/// </summary>
/// <param name="o"></param>
public void Electromagnetism(object o) public void Electromagnetism(object o)
{ {
if (o == null) return; if (o == null) return;
if (o is List<bool> bs && bs.Count == 1) if (o is List<bool> bs && bs.Count == 1)
{ {
WriteControl("", bs[0]);
MaterailLibrary_Write("", bs[0]);
} }
} }
public void GetDistance_1() public void GetDistance_1()
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
public void GetDistance_2() public void GetDistance_2()
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
public void GetDistance_3() public void GetDistance_3()
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
public void PawTurnFront() public void PawTurnFront()
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
public void PawTurnBack() public void PawTurnBack()
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
/// <summary> /// <summary>
/// 设定机械臂的位置 /// 设定机械臂的位置
@@ -118,10 +130,12 @@ namespace BPASmartClient.MorkF
/// <param name="y"></param> /// <param name="y"></param>
public void SetArmPosition(int X, int y) public void SetArmPosition(int X, int y)
{ {
WriteControl("", true);
MaterailLibrary_Write("", true);
} }
#endregion #endregion




/// <summary> /// <summary>
/// 出调料 /// 出调料
/// </summary> /// </summary>
@@ -131,9 +145,9 @@ namespace BPASmartClient.MorkF
if (o == null) return; if (o == null) return;
if (o is List<int> ints && ints.Count == 2) if (o is List<int> ints && ints.Count == 2)
{ {
WriteControl(morkF.PassWayValue[ints[0]], (ushort)ints[1]);//写入通道值
FirePot1_Write(morkF.PassWayValue[ints[0]], (ushort)ints[1]);//写入通道值
Thread.Sleep(400); Thread.Sleep(400);
WriteControl(morkF.StartPassWay[ints[0]], true);//开启通道
FirePot1_Write(morkF.StartPassWay[ints[0]], true);//开启通道
Thread.Sleep(400); Thread.Sleep(400);
} }
} }
@@ -144,43 +158,51 @@ namespace BPASmartClient.MorkF
{ {
foreach (SeasoningList seasoning in seasoningLists) foreach (SeasoningList seasoning in seasoningLists)
{ {
WriteControl(morkF.PassWayValue[seasoning.Loc], (ushort)seasoning.Qty);
FirePot1_Write(morkF.PassWayValue[seasoning.Loc], (ushort)seasoning.Qty);
Thread.Sleep(300); Thread.Sleep(300);
} }
foreach (SeasoningList seasoning in seasoningLists) foreach (SeasoningList seasoning in seasoningLists)
{ {
WriteControl(morkF.StartPassWay[seasoning.Loc], true);
FirePot1_Write(morkF.StartPassWay[seasoning.Loc], true);
Thread.Sleep(300); Thread.Sleep(300);
} }


} }


#region 炒锅1 #region 炒锅1
private void FirePot1_Write(string address,object value)
{
WriteControlExact(address, value, 0);
}
/// <summary> /// <summary>
/// 复位 /// 复位
/// </summary> /// </summary>
public void Plc1Reset() public void Plc1Reset()
{ {
StopFire();
Thread.Sleep(200);
StopStir();
Thread.Sleep(200);
WriteControl("LB5", false);
Thread.Sleep(200);
WriteControl("LB3", false);
Thread.Sleep(200);
WriteControl("LB6", false);
Thread.Sleep(200);
WriteControl("LB7", false);
Thread.Sleep(200);
WriteControl("LB4", false);
Thread.Sleep(200);
WriteControl("LB53", false);
foreach (var item in morkF.StartPassWay.Values)
ThreadManage.GetInstance().Start(new Action(() =>
{ {
StopFire();
Thread.Sleep(200); Thread.Sleep(200);
WriteControl(item, false);
}
StopStir();
Thread.Sleep(200);
FirePot1_Write("LB5", false);
Thread.Sleep(200);
FirePot1_Write("LB3", false);
Thread.Sleep(200);
FirePot1_Write("LB6", false);
Thread.Sleep(200);
FirePot1_Write("LB7", false);
Thread.Sleep(200);
FirePot1_Write("LB4", false);
Thread.Sleep(200);
FirePot1_Write("LB53", false);
foreach (var item in morkF.StartPassWay.Values)
{
Thread.Sleep(200);
FirePot1_Write(item, false);
}
}),"炒锅1初始化");
} }
//加油 //加油
public void AddOil() public void AddOil()
@@ -190,50 +212,50 @@ namespace BPASmartClient.MorkF
//加热启动 //加热启动
public void StartFire() public void StartFire()
{ {
WriteControl("LB1", true);
FirePot1_Write("LB1", true);
Thread.Sleep(200); Thread.Sleep(200);
} }
//加热停止 //加热停止
public void StopFire() public void StopFire()
{ {
WriteControl("LB1", false);
FirePot1_Write("LB1", false);
Thread.Sleep(200); Thread.Sleep(200);
} }
//搅拌启动 //搅拌启动
public void StartStir() public void StartStir()
{ {
WriteControl("LB2", true);
FirePot1_Write("LB2", true);
Thread.Sleep(200); Thread.Sleep(200);
} }
//搅拌启停止 //搅拌启停止
public void StopStir() public void StopStir()
{ {
WriteControl("LB2", false);
FirePot1_Write("LB2", false);
Thread.Sleep(200); Thread.Sleep(200);
} }
//倒菜 //倒菜
public void OutFood() public void OutFood()
{ {
WriteControl("LB3", true);
FirePot1_Write("LB3", true);
MessageLog.GetInstance.Show("倒菜启动"); MessageLog.GetInstance.Show("倒菜启动");
while (!morkF.FryPot1_MaterialIntoPot) while (!morkF.FryPot1_MaterialIntoPot)
{ {
Thread.Sleep(200); Thread.Sleep(200);
} }
WriteControl("LB3", false);
FirePot1_Write("LB3", false);
Thread.Sleep(200); Thread.Sleep(200);
MessageLog.GetInstance.Show("倒菜完成"); MessageLog.GetInstance.Show("倒菜完成");
} }
//搅拌臂去原点位 //搅拌臂去原点位
public void StirArmGoOrigin() public void StirArmGoOrigin()
{ {
WriteControl("LB5", true);
FirePot1_Write("LB5", true);
MessageLog.GetInstance.Show("搅拌臂去原点位"); MessageLog.GetInstance.Show("搅拌臂去原点位");
while (!morkF.ArmOnOrigin) while (!morkF.ArmOnOrigin)
{ {
Thread.Sleep(200); Thread.Sleep(200);
} }
WriteControl("LB5", false);
FirePot1_Write("LB5", false);
Thread.Sleep(200); Thread.Sleep(200);
MessageLog.GetInstance.Show("搅拌臂到达原点位"); MessageLog.GetInstance.Show("搅拌臂到达原点位");


@@ -244,14 +266,14 @@ namespace BPASmartClient.MorkF
{ {
if (!morkF.ArmOnWorking) if (!morkF.ArmOnWorking)
{ {
WriteControl("LB6", true);
FirePot1_Write("LB6", true);
MessageLog.GetInstance.Show("搅拌臂去工作位"); MessageLog.GetInstance.Show("搅拌臂去工作位");
while (!morkF.ArmOnWorking) while (!morkF.ArmOnWorking)
{ {
Thread.Sleep(200); Thread.Sleep(200);
} }


WriteControl("LB6", false);
FirePot1_Write("LB6", false);
Thread.Sleep(200); Thread.Sleep(200);
MessageLog.GetInstance.Show("搅拌臂到达工作位"); MessageLog.GetInstance.Show("搅拌臂到达工作位");
} }
@@ -260,16 +282,16 @@ namespace BPASmartClient.MorkF
//HBOT放盒子到位 //HBOT放盒子到位
public void HBOTGoWork() public void HBOTGoWork()
{ {
WriteControl("LB7", true);
FirePot1_Write("LB7", true);
Thread.Sleep(400); Thread.Sleep(400);
WriteControl("LB7", false);
FirePot1_Write("LB7", false);
} }
//出餐启动 //出餐启动
public void OutMeal() public void OutMeal()
{ {
WriteControl("LB4", true);
FirePot1_Write("LB4", true);
Thread.Sleep(200); Thread.Sleep(200);
WriteControl("LB4", false);
FirePot1_Write("LB4", false);
} }
//加热挡位设定 //加热挡位设定
public void SetFire(object o) public void SetFire(object o)
@@ -277,7 +299,7 @@ namespace BPASmartClient.MorkF
if (o == null) return; if (o == null) return;
if (o is List<int> ints && ints.Count == 1) if (o is List<int> ints && ints.Count == 1)
{ {
WriteControl("LW14", (ushort)ints[0]);
FirePot1_Write("LW14", (ushort)ints[0]);
Thread.Sleep(200); Thread.Sleep(200);


} }
@@ -293,8 +315,9 @@ namespace BPASmartClient.MorkF
if (o == null) return; if (o == null) return;
if (o is List<int> ints && ints.Count == 1) if (o is List<int> ints && ints.Count == 1)
{ {
WriteControl("LW15", (ushort)ints[0]);
FirePot1_Write("LW15", (ushort)ints[0]);
Thread.Sleep(200); Thread.Sleep(200);
} }
} }


@@ -302,33 +325,7 @@ namespace BPASmartClient.MorkF






/// <summary>
/// 订单初始化
/// </summary>
private void InitialData()
{
string subId = Guid.NewGuid().ToString();
//单个订单
//string subId = Guid.NewGuid().ToString();
//morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = subId, MaterialLoc = new List<int>() { 1 } });//A料
//morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = subId, MaterialLoc = new List<int>() { 2 } });//B料
//morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = subId, MaterialLoc = new List<int>() { 3 } });//C料
//morkF.TakePlateQueue.Enqueue(new OrderLocInfo() { SuborderId = subId });
//resultorder.AddRange(new int[] { 1, 2, 3 });

//for (int i = 0; i < morkF.listStirBom.Count; i++)
//{
// morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = subId+i, MaterialLoc = new List<int>() { 1 } });//A料
// morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = subId+i, MaterialLoc = new List<int>() { 2 } });//B料
// morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = subId+i, MaterialLoc = new List<int>() { 3 } });//C料
// morkF.TakePlateQueue.Enqueue(new OrderLocInfo() { SuborderId = subId+i });
// //resultorder.AddRange(new int[] { 1, 2, 3 });
//}



}

/// <summary> /// <summary>
/// 本地菜单下单 /// 本地菜单下单
/// </summary> /// </summary>
@@ -852,15 +849,15 @@ namespace BPASmartClient.MorkF
action((bool[])peripheralStatus[key]);//获取PLC指定地址的状态值 action((bool[])peripheralStatus[key]);//获取PLC指定地址的状态值
} }
} }
/// <summary>
/// 写数据
/// </summary>
/// <param name="address"></param>
/// <param name="value"></param>
private void WriteData(string address, object value)
{
EventBus.EventBus.GetInstance().Publish(new WriteModel() { DeviceId = DeviceId, Address = address, Value = value });
}
///// <summary>
///// 写数据
///// </summary>
///// <param name="address"></param>
///// <param name="value"></param>
//private void WriteData(string address, object value)
//{
// EventBus.EventBus.GetInstance().Publish(new WriteModel() { DeviceId = DeviceId, Address = address, Value = value });
//}


/// <summary> /// <summary>
/// 炒锅初始化 /// 炒锅初始化
@@ -868,21 +865,15 @@ namespace BPASmartClient.MorkF
public void PLCInite() public void PLCInite()
{ {
WriteData("LB0", true);
FirePot1_Write("LB0", true);
while(!morkF.FryPot1_InitialComplete) while(!morkF.FryPot1_InitialComplete)
{ {
Thread.Sleep(500); Thread.Sleep(500);
} }
WriteData("LB0", false);
FirePot1_Write("LB0", false);
} }


/// <summary>
/// 菜品库初始化
/// </summary>
public void FoodPlcInite()
{
WriteData("", true);
}


/// <summary> /// <summary>
@@ -898,98 +889,98 @@ namespace BPASmartClient.MorkF


private void morkSim(object o) private void morkSim(object o)
{ {
if (o == null) return;
if(o is List<int> ins)
{
ThreadManage.GetInstance().Start(new Action(() =>
{
if (morkF.FryPot1_InitialComplete && morkF.AutoMode)//初始化完成&&自动模式&& 锅在原点位置
{
if (!morkF.ArmOnWorking)//搅拌臂是否在工作位
{
StirArmGoWork();
while (!morkF.ArmOnWorking)
{
Thread.Sleep(500);
}
OutSeasoning(new List<int> { 1, 100 });//加油500g
while (!morkF.PassWay1_1Compelete)
{
Thread.Sleep(1000);
}
WriteControl(morkF.StartPassWay[ 1], false);//开启通道关闭
Thread.Sleep(500);
SetFire(new List<int> { ins[1] });//加热三档
StartFire();//开始加热
Thread.Sleep(500);
SetStir(new List<int> { ins[2] });//搅拌二挡
Thread.Sleep(500);
StartStir();//开始搅拌
Thread.Sleep(ins[0]*1000);//加热10s
OutSeasoning(new List<int> { 11, 30 });//加调料1 50g
Thread.Sleep(400);
OutSeasoning(new List<int> { 12, 30 });//加调料2 30g
while (!morkF.PassWay1_11Compelete&& !morkF.PassWay1_12Compelete)
{
Thread.Sleep(1000);
}
//if (o == null) return;
//if(o is List<int> ins)
//{
// ThreadManage.GetInstance().Start(new Action(() =>
// {
// if (morkF.FryPot1_InitialComplete && morkF.AutoMode)//初始化完成&&自动模式&& 锅在原点位置
// {
// if (!morkF.ArmOnWorking)//搅拌臂是否在工作位
// {
// StirArmGoWork();
// while (!morkF.ArmOnWorking)
// {
// Thread.Sleep(500);
// }
// OutSeasoning(new List<int> { 1, 100 });//加油500g
// while (!morkF.PassWay1_1Compelete)
// {
// Thread.Sleep(1000);
// }
// WriteControlExact(morkF.StartPassWay[ 1], false);//开启通道关闭
// Thread.Sleep(500);
// SetFire(new List<int> { ins[1] });//加热三档
// StartFire();//开始加热
// Thread.Sleep(500);
// SetStir(new List<int> { ins[2] });//搅拌二挡
// Thread.Sleep(500);
// StartStir();//开始搅拌
// Thread.Sleep(ins[0]*1000);//加热10s
// OutSeasoning(new List<int> { 11, 30 });//加调料1 50g
// Thread.Sleep(400);
// OutSeasoning(new List<int> { 12, 30 });//加调料2 30g
// while (!morkF.PassWay1_11Compelete&& !morkF.PassWay1_12Compelete)
// {
// Thread.Sleep(1000);
// }
WriteControl(morkF.StartPassWay[11], false);//开启通道关闭
Thread.Sleep(500);
WriteControl(morkF.StartPassWay[12], false);//开启通道信号关闭
// WriteControlExact(morkF.StartPassWay[11], false);//开启通道关闭
// Thread.Sleep(500);
// WriteControlExact(morkF.StartPassWay[12], false);//开启通道信号关闭
Thread.Sleep(500);
OutFood();//倒菜品1
while (!morkF.FryPot1_MaterialIntoPot)//菜品1倒菜完成
{
Thread.Sleep(500);
}
WriteControl("LB53", false);
Thread.Sleep(500);
SetFire(new List<int> { ins[4] });//菜品1加热档
Thread.Sleep(500);
SetStir(new List<int>() { ins[5] });//菜品1搅拌挡
Thread.Sleep(ins[3]*1000);//菜品1炒制时间
OutSeasoning(new List<int> {3, 8 });//加调料3 20g
while (!morkF.PassWay1_3Compelete)
{
Thread.Sleep(1000);
}
WriteControl(morkF.StartPassWay[3], false);//开启通道信号关闭
Thread.Sleep(500);
OutFood();//倒菜菜品2
while (!morkF.FryPot1_MaterialIntoPot)//菜品2倒菜完成
{
Thread.Sleep(500);
}
WriteControl("LB53", false);
Thread.Sleep(500);
SetFire(new List<int> { ins[7] });//菜品2加热档
Thread.Sleep(500);
SetStir(new List<int>() { ins[8] });//菜品2搅拌挡
Thread.Sleep(ins[6] * 1000);//菜品2炒制时间
StopStir();//停止搅拌
Thread.Sleep(500);
StopFire();//停止加热
Thread.Sleep(2000);
StirArmGoOrigin();//搅拌臂回原点位
}
}
}), "模拟炒锅1订单");
}
// Thread.Sleep(500);
// OutFood();//倒菜品1
// while (!morkF.FryPot1_MaterialIntoPot)//菜品1倒菜完成
// {
// Thread.Sleep(500);
// }
// WriteControlExact("LB53", false);
// Thread.Sleep(500);
// SetFire(new List<int> { ins[4] });//菜品1加热档
// Thread.Sleep(500);
// SetStir(new List<int>() { ins[5] });//菜品1搅拌挡
// Thread.Sleep(ins[3]*1000);//菜品1炒制时间
// OutSeasoning(new List<int> {3, 8 });//加调料3 20g
// while (!morkF.PassWay1_3Compelete)
// {
// Thread.Sleep(1000);
// }
// WriteControlExact(morkF.StartPassWay[3], false);//开启通道信号关闭
// Thread.Sleep(500);
// OutFood();//倒菜菜品2
// while (!morkF.FryPot1_MaterialIntoPot)//菜品2倒菜完成
// {
// Thread.Sleep(500);
// }
// WriteControlExact("LB53", false);
// Thread.Sleep(500);
// SetFire(new List<int> { ins[7] });//菜品2加热档
// Thread.Sleep(500);
// SetStir(new List<int>() { ins[8] });//菜品2搅拌挡
// Thread.Sleep(ins[6] * 1000);//菜品2炒制时间
// StopStir();//停止搅拌
// Thread.Sleep(500);
// StopFire();//停止加热
// Thread.Sleep(2000);
// StirArmGoOrigin();//搅拌臂回原点位
// }
// }
// }), "模拟炒锅1订单");
//}
} }


+ 0
- 1
BPASmartClient.MorkF/ViewModel/DebugViewModel.cs View File

@@ -170,7 +170,6 @@ namespace BPASmartClient.MorkF.ViewModel
{ {
#region 设备控制 #region 设备控制
PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); });
FoodPlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("FoodPlcInite"); });
Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); }); Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); });
StartOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartOrder", FoodMenuID); }); StartOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartOrder", FoodMenuID); });
StartLocalOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartLocalOrder"); }); StartLocalOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartLocalOrder"); });


+ 1
- 0
BPASmartClient/BPASmartClient.csproj View File

@@ -29,6 +29,7 @@
<ProjectReference Include="..\BPASmartClient.IoT\BPASmartClient.IoT.csproj" /> <ProjectReference Include="..\BPASmartClient.IoT\BPASmartClient.IoT.csproj" />
<ProjectReference Include="..\BPASmartClient.KLMCoffee\BPASmartClient.KLMCoffee.csproj" /> <ProjectReference Include="..\BPASmartClient.KLMCoffee\BPASmartClient.KLMCoffee.csproj" />
<ProjectReference Include="..\BPASmartClient.Lebai\BPASmartClient.Lebai.csproj" /> <ProjectReference Include="..\BPASmartClient.Lebai\BPASmartClient.Lebai.csproj" />
<ProjectReference Include="..\BPASmartClient.MorkBF\BPASmartClient.MorkBF.csproj" />
<ProjectReference Include="..\BPASmartClient.MorkD\BPASmartClient.MorkD.csproj" /> <ProjectReference Include="..\BPASmartClient.MorkD\BPASmartClient.MorkD.csproj" />
<ProjectReference Include="..\BPASmartClient.MorkF\BPASmartClient.MorkF.csproj" /> <ProjectReference Include="..\BPASmartClient.MorkF\BPASmartClient.MorkF.csproj" />
<ProjectReference Include="..\BPASmartClient.MorkM\BPASmartClient.MorkM.csproj" /> <ProjectReference Include="..\BPASmartClient.MorkM\BPASmartClient.MorkM.csproj" />


+ 23
- 0
SmartClient.sln View File

@@ -172,6 +172,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkMOC", "B
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.MenuLoad", "BPASmart.MenuLoad\BPASmart.MenuLoad.csproj", "{7A7547D3-F2EF-4DA4-AD45-D1B49210082B}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.MenuLoad", "BPASmart.MenuLoad\BPASmart.MenuLoad.csproj", "{7A7547D3-F2EF-4DA4-AD45-D1B49210082B}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.MorkBF", "BPASmartClient.MorkBF\BPASmartClient.MorkBF.csproj", "{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -1626,6 +1628,26 @@ Global
{7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Release|x64.Build.0 = Release|Any CPU {7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Release|x64.Build.0 = Release|Any CPU
{7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Release|x86.ActiveCfg = Release|Any CPU {7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Release|x86.ActiveCfg = Release|Any CPU
{7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Release|x86.Build.0 = Release|Any CPU {7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Release|x86.Build.0 = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|ARM.Build.0 = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|ARM64.Build.0 = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|x64.ActiveCfg = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|x64.Build.0 = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|x86.ActiveCfg = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Debug|x86.Build.0 = Debug|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|Any CPU.Build.0 = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|ARM.ActiveCfg = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|ARM.Build.0 = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|ARM64.ActiveCfg = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|ARM64.Build.0 = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|x64.ActiveCfg = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|x64.Build.0 = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|x86.ActiveCfg = Release|Any CPU
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@@ -1705,6 +1727,7 @@ Global
{BA588F22-87FB-4124-AF62-CA8DC492ED7D} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} {BA588F22-87FB-4124-AF62-CA8DC492ED7D} = {8712125E-14CD-4E1B-A1CE-4BDE03805942}
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} {D5081D7B-3EBB-42C7-8FB9-A889870D08C2} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
{7A7547D3-F2EF-4DA4-AD45-D1B49210082B} = {06F0B369-0483-46DD-82D2-70431FB505C1} {7A7547D3-F2EF-4DA4-AD45-D1B49210082B} = {06F0B369-0483-46DD-82D2-70431FB505C1}
{CD0FBCF1-9C49-4032-96AD-B9E25F86F2A7} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC}


Loading…
Cancel
Save