Bläddra i källkod

1. 大料站新增用户管理界面,修改参数显示样式。2. 小料站修改参数显示样式。

master
ZhaoGang 1 år sedan
förälder
incheckning
47097ed096
18 ändrade filer med 275 tillägg och 225 borttagningar
  1. +21
    -1
      BPASmartClient.FoodStationTest/Model/GVL/PlcInfos.cs
  2. +6
    -0
      BPASmartClient.FoodStationTest/Model/GVL/VarCommAttribute.cs
  3. +0
    -0
      BPASmartClient.FoodStationTest/Model/GVL/VarMonitor.cs
  4. +24
    -2
      BPASmartClient.FoodStationTest/Model/Par/ConnectParMode.cs
  5. +6
    -1
      BPASmartClient.FoodStationTest/Model/Par/LocaPar.cs
  6. +57
    -21
      BPASmartClient.FoodStationTest/Model/ProcessControl.cs
  7. +3
    -0
      BPASmartClient.FoodStationTest/Model/RawMaterial/AlarmInfo.cs
  8. +3
    -0
      BPASmartClient.FoodStationTest/Model/RawMaterial/DeviceCurrentStatus.cs
  9. +3
    -0
      BPASmartClient.FoodStationTest/Model/Recipe/LocalRecipeDataColl.cs
  10. +20
    -66
      BPASmartClient.FoodStationTest/View/ManualFlowView.xaml
  11. +2
    -2
      BPASmartClient.FoodStationTest/View/RecipeInfosView.xaml
  12. +5
    -76
      BPASmartClient.FoodStationTest/ViewModel/ManualFlowViewModel.cs
  13. +7
    -0
      BPASmartClient.JXJFoodBigStation/App.xaml.cs
  14. +1
    -1
      BPASmartClient.JXJFoodBigStation/View/BomOfMaterialView.xaml
  15. +1
    -1
      BPASmartClient.JXJFoodBigStation/View/ManualFlowView.xaml
  16. +9
    -11
      BPASmartClient.JXJFoodSmallStation/View/ManualFlowView.xaml
  17. +101
    -41
      BPASmartClient.JXJFoodSmallStation/View/RobotView.xaml
  18. +6
    -2
      BPASmartClient.JXJFoodSmallStation/View/SystemParView.xaml

+ 21
- 1
BPASmartClient.FoodStationTest/Model/GVL/PlcInfos.cs Visa fil

@@ -2,19 +2,39 @@

namespace BPASmartClient.FoodStationTest.Model.GVL
{
/// <summary>
/// PLC变量信息
/// </summary>
public class PlcInfos : ObservableObject
{
/// <summary>
/// 变量序号
/// </summary>
public int Count { get { return _Count; } set { _Count = value; OnPropertyChanged(); } }
private int _Count { get; set; }

/// <summary>
/// 变量名称
/// </summary>
public string Name { get { return _Name; } set { _Name = value; OnPropertyChanged(); } }
private string _Name { get; set; }
/// <summary>
/// 变量地址
/// </summary>
public string Address { get { return _Address; } set { _Address = value; OnPropertyChanged(); } }
private string _Address { get; set; }
/// <summary>
/// 变量类型
/// </summary>
public string Type { get { return _Type; } set { _Type = value; OnPropertyChanged(); } }
private string _Type { get; set; }
/// <summary>
/// 变量描述
/// </summary>
public string Describe { get { return _Describe; } set { _Describe = value; OnPropertyChanged(); } }
private string _Describe { get; set; }
/// <summary>
/// 变量值
/// </summary>
public string Value { get { return _Value; } set { _Value = value; OnPropertyChanged(); } }
private string _Value { get; set; }



+ 6
- 0
BPASmartClient.FoodStationTest/Model/GVL/VarCommAttribute.cs Visa fil

@@ -10,7 +10,13 @@ namespace BPASmartClient.FoodStationTest.Model.GVL
Address = address;
Describe = des;
}
/// <summary>
/// 变量信息描述。
/// </summary>
public string Describe { get; set; }
/// <summary>
/// 变量地址
/// </summary>
public string Address { get; set; }
}
}

BPASmartClient.FoodStationTest/Model/VarMonitor.cs → BPASmartClient.FoodStationTest/Model/GVL/VarMonitor.cs Visa fil


+ 24
- 2
BPASmartClient.FoodStationTest/Model/Par/ConnectParMode.cs Visa fil

@@ -2,23 +2,45 @@

namespace BPASmartClient.FoodStationTest.Model.Par
{
/// <summary>
/// 连接参数设置。
/// </summary>
public class ConnectParMode : ObservableObject
{
/// <summary>
/// 海科PLC是否连接
/// </summary>
public bool HKPlcConnect { get { return _mHKPlcConnect; } set { _mHKPlcConnect = value; OnPropertyChanged(); } }
private bool _mHKPlcConnect;
/// <summary>
/// 是否屏蔽料仓报警
/// </summary>
public bool ShieldStockbinAlarm { get { return _mShieldStockbinAlarm; } set { _mShieldStockbinAlarm = value; OnPropertyChanged(); } }
private bool _mShieldStockbinAlarm;


/// <summary>
/// 进桶侧调速电机速度
/// </summary>
public short AxisLoadSpeed { get { return _mAxisLoadSpeed; } set { _mAxisLoadSpeed = value; OnPropertyChanged(); } }
private short _mAxisLoadSpeed;
/// <summary>
/// 过度侧调速电机速度
/// </summary>
public short AxisMidSpeed { get { return _mAxisMidSpeed; } set { _mAxisMidSpeed = value; OnPropertyChanged(); } }
private short _mAxisMidSpeed;
/// <summary>
/// 出桶侧调速电机速度
/// </summary>
public short AxisUnLoadSpeed { get { return _mAxisUnLoadSpeed; } set { _mAxisUnLoadSpeed = value; OnPropertyChanged(); } }
private short _mAxisUnLoadSpeed;
/// <summary>
/// 进桶侧伺服电机速度
/// </summary>
public float Axis1Speed { get { return _mAxis1Speed; } set { _mAxis1Speed = value; OnPropertyChanged(); } }
private float _mAxis1Speed;
/// <summary>
/// 出桶侧伺服电机速度
/// </summary>
public float Axis2Speed { get { return _mAxis2Speed; } set { _mAxis2Speed = value; OnPropertyChanged(); } }
private float _mAxis2Speed;
}


+ 6
- 1
BPASmartClient.FoodStationTest/Model/Par/LocaPar.cs Visa fil

@@ -4,6 +4,9 @@ namespace BPASmartClient.FoodStationTest.Model
{
public class LocalPar
{
/// <summary>
/// 本地模拟配方列表。
/// </summary>
public ObservableCollection<RecipeModel> Recipes { get; set; } = new ObservableCollection<RecipeModel>();

/// <summary>
@@ -15,7 +18,9 @@ namespace BPASmartClient.FoodStationTest.Model
/// 味魔方数量,每个项目应该固定的。
/// </summary>
public int RawMaterialDeviceNum { get; } = 6;

/// <summary>
/// 海科PLC的IP地址。
/// </summary>
public string HK_PLC_IP { get; }
}
}

+ 57
- 21
BPASmartClient.FoodStationTest/Model/ProcessControl.cs Visa fil

@@ -8,8 +8,8 @@ using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Configuration;
using System.Linq;
using System.Printing;
using System.Reflection;
using System.Threading;

@@ -17,31 +17,34 @@ namespace BPASmartClient.FoodStationTest.Model
{
public class ProcessControl
{
private volatile static ProcessControl _Instance;
private static volatile ProcessControl _Instance;
public static ProcessControl GetInstance => _Instance ?? (_Instance = new ProcessControl());
private ProcessControl() { }

private ProcessControl()
{ }

/// <summary>
/// 配方数据
/// </summary>
public ObservableCollection<RemoteRecipeData> RemoteRecipes = new ObservableCollection<RemoteRecipeData>();

/// <summary>
/// 原料的名称和料仓的位置对应
/// </summary>
public Dictionary<string, short> RawMaterialsNamePos = new Dictionary<string, short>();

public ObservableCollection<RawMaterialStockBin> RawMaterialsInfo => Json<DevicePar>.Data.rawMaterialStockBin;

/// <summary>
/// 配方队列
/// </summary>
public ConcurrentQueue<string> RecipeQueueTray1 = new ConcurrentQueue<string>();


/// <summary>
/// 物料集合
/// </summary>
public Dictionary<int, ConcurrentQueue<string>> RecipeQueueTray { get; set; } = new Dictionary<int, ConcurrentQueue<string>>();


public HKDeviceStatus HKDevice = new HKDeviceStatus();

public ObservableCollection<PlcInfos> CommData { get; set; } = new ObservableCollection<PlcInfos>();
@@ -49,8 +52,7 @@ namespace BPASmartClient.FoodStationTest.Model

public DateTime StockBinAlarmTime = DateTime.Now;

//public string? HK_PLC_IP = ConfigurationManager.AppSettings["HKPlc_IP"];
public string? HK_PLC_IP = Json<LocalPar>.Data.HK_PLC_IP;
public string? HK_PLC_IP => Json<LocalPar>.Data.HK_PLC_IP;

public void Init()
{
@@ -115,6 +117,7 @@ namespace BPASmartClient.FoodStationTest.Model
Thread.Sleep(10);
}), "海科PLC实时数据", true);
}

/// <summary>
/// 气缸的传感器值
/// </summary>
@@ -138,6 +141,7 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.Cylinder_JackInfo[26] = HKDevice.HK_PLC_S7.Read<bool>("DB5.DBX4.4").Content;//托盘2_1气缸
GVL_SmallStation.GetInstance.Cylinder_JackInfo[27] = HKDevice.HK_PLC_S7.Read<bool>("DB5.DBX4.5").Content;//托盘2_2气缸
}

/// <summary>
/// DB块的变量实时值
/// </summary>
@@ -198,6 +202,7 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}

/// <summary>
/// 小料站和西门子PLC之间的实时数据
/// </summary>
@@ -235,6 +240,7 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.RobotProgramNum = HKDevice.HK_PLC_S7.Read<byte>("DB3.DBB1").Content;
}
}

public void CancelOrder()
{
if (GVL_SmallStation.GetInstance.Order_Cancel) //订单取消
@@ -289,6 +295,7 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.OrderCancelStep = 3;
}
break;

case 2:
if (HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX42." + index1).Content)
{
@@ -299,10 +306,12 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
break;

case 3:
// SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", true);
GVL_SmallStation.GetInstance.OrderCancelStep = 4;
break;

case 4:

// SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", false);
@@ -310,6 +319,7 @@ namespace BPASmartClient.FoodStationTest.Model
MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}");

break;

case 9:
App.Current.Dispatcher.Invoke(() =>
{
@@ -321,15 +331,18 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.Order_CancelRecipeCode = "";
GVL_SmallStation.GetInstance.OrderCancelStep = 0;
break;

case 20:
GVL_SmallStation.GetInstance.OrderCancelStep = 21;
break;

case 21:

GVL_SmallStation.GetInstance.OrderCancelStep = 29;
MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}");

break;

case 29:
App.Current.Dispatcher.Invoke(() =>
{
@@ -345,12 +358,14 @@ namespace BPASmartClient.FoodStationTest.Model
case 30:
GVL_SmallStation.GetInstance.OrderCancelStep = 31;
break;

case 31:

GVL_SmallStation.GetInstance.OrderCancelStep = 39;
MessageNotify.GetInstance.ShowRunLog($"西门子取消订单完成,订单号:{code}");

break;

case 39:
GVL_SmallStation.GetInstance.Order_Cancel = false;
GVL_SmallStation.GetInstance.Order_CancelRecipeCode = "";
@@ -360,6 +375,7 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}

/// <summary>
/// 将配方添加到配方队列中
/// </summary>
@@ -376,6 +392,7 @@ namespace BPASmartClient.FoodStationTest.Model
{
if (GVL_SmallStation.GetInstance.NotUseSmallStation)
{
//查询都不包含此配方
if (RecipeQueueTray[i].Count == 0 && !RecipeQueueTray[0].Contains(data.RecipeCode) && !RecipeQueueTray[1].Contains(data.RecipeCode) && !RecipeQueueTray[2].Contains(data.RecipeCode) && !RecipeQueueTray[3].Contains(data.RecipeCode) && !RecipeQueueTray[4].Contains(data.RecipeCode))
{
RecipeQueueTray[i].Enqueue(data.RecipeCode);
@@ -404,8 +421,8 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.WindSendDosingStatus = 0;
GVL_SmallStation.GetInstance.WindSendDosing = false;
}

}

/// <summary>
/// 小料站配料
/// </summary>
@@ -413,6 +430,7 @@ namespace BPASmartClient.FoodStationTest.Model
{
if (!GVL_SmallStation.GetInstance.NotUseSmallStation)
{
//如果使用小料站配料,更新查询5个工位的AGV状态。
for (int i = 0; i < 5; i++)
{
switch (GVL_SmallStation.GetInstance.Tray_AGVLogic[i])
@@ -427,6 +445,7 @@ namespace BPASmartClient.FoodStationTest.Model
MessageNotify.GetInstance.ShowRunLog("AGV到位 发送到位信号给plc");
}
break;

case 1:
if (GVL_SmallStation.GetInstance.Station1HaveTray)

@@ -436,6 +455,7 @@ namespace BPASmartClient.FoodStationTest.Model
MessageNotify.GetInstance.ShowRunLog("托盘1有货架");
}
break;

case 2:
if (GVL_SmallStation.GetInstance.AGV_GetTray1Finish && GVL_SmallStation.GetInstance.RecipeProcessStatus[i] == 0)
{
@@ -445,6 +465,7 @@ namespace BPASmartClient.FoodStationTest.Model
MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,发送给海科信号后1s后复位");
}
break;

case 3:
if (HKDevice.HK_PLC_S7.Read<bool>("DB4.DBX10." + i).Content)
{
@@ -455,6 +476,7 @@ namespace BPASmartClient.FoodStationTest.Model
MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,信号复位");
}
break;

default:
break;
}
@@ -482,8 +504,6 @@ namespace BPASmartClient.FoodStationTest.Model
var res = Json<RemoteRecipeDataColl>.Data.Recipes.FirstOrDefault(p => p.RecipeCode == code);
if (/*SiemensDevice.IsConnected &&*/ !GVL_SmallStation.GetInstance.IsUseLocalRecipe)
{


MessageNotify.GetInstance.ShowRunLog($"托盘1,配方{res.RecipeName},配料完成,数据反馈给西门子");
}
else
@@ -502,10 +522,9 @@ namespace BPASmartClient.FoodStationTest.Model
}
else
{
//粉料仓下发配方
//粉料仓下发配方并配料。
if (/*GVL_SmallStation.GetInstance.IsUseWindSend &&*/ GVL_SmallStation.GetInstance.WindSendDosing == false /*&& GVL_SmallStation.GetInstance.Tray_AGVLogic[recipeNum] == 2*/)
{

}
else
{
@@ -516,6 +535,7 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}
//上位机下发配方。并检测下发完成。
if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 0)
{
GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] = 0;
@@ -525,6 +545,7 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] = 1;
MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},下发完成");
}
//需要等待下位机检测确认正确接收到配方。
bool recipeReceviceFinish = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX4." + recipeNum).Content;
if (recipeReceviceFinish && GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 1)
{
@@ -533,11 +554,14 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0;
MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},配方接收完成");
}
//下面是配料流程。
if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 2)
{
for (byte i = 1; i < 16; i++)
//下面是味魔方配料。
for (byte i = 1; i <= Json<LocalPar>.Data.RawMaterialDeviceNum; i++)
{
int indexArr = -1;
//获取配方每个配方的三个桶的位置。
if (GVL_SmallStation.GetInstance.plcReadDataDB3.StockBinAllowIssue[i - 1])
{
switch (recipeNum)
@@ -545,23 +569,29 @@ namespace BPASmartClient.FoodStationTest.Model
case 0:
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe1BarrelPosReserve.ToArray(), p => p == i);
break;

case 1:
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe2BarrelPosReserve.ToArray(), p => p == i);
break;

case 2:
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe3BarrelPosReserve.ToArray(), p => p == i);
break;

case 3:
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe4BarrelPosReserve.ToArray(), p => p == i);
break;

case 4:
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe5BarrelPosReserve.ToArray(), p => p == i);
break;
}
if (indexArr >= 0 && GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum].Get16bitValue((byte)i) == false)
{
//查找每个料仓对应的重量。
int loc_index = Array.FindIndex(RemoteRecipes.ElementAt(index).RawMaterial.ToArray(), p => p.RawMaterialLocation == i);
float weight = RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(loc_index).RawMaterialWeight * 1000;//单位g转换kg
//小于等于0代表这个料仓不需要配料。
if (weight <= 0)
{
if (i >= 1 && i <= 8)
@@ -577,6 +607,7 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] = GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum].SetBitValue((byte)i, false);//配料完成设备写成false
GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum].SetBitValue((byte)i, true);//配料完成设备写成false
}
//写入重量并开始配料
else
{
if (loc_index >= 0)
@@ -597,10 +628,10 @@ namespace BPASmartClient.FoodStationTest.Model
}
if ((DeviceInquire.GetInstance.GetDevice(i).deviceStatus.RunStatus == 3) && indexArr >= 0 && GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum].Get16bitValue((byte)i))
{
//配料完成处理。
int res = Array.FindIndex(RemoteRecipes.ElementAt(index).RawMaterial.ToArray(), p => p.RawMaterialLocation == i);
if (res < 0)
{

}
else
{
@@ -608,10 +639,12 @@ namespace BPASmartClient.FoodStationTest.Model
RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight = DeviceInquire.GetInstance.GetDevice(i).deviceStatus.NowWeightFeedback;
bool info = DeviceInquire.GetInstance.GetDevice(i).StatusReset();
MessageNotify.GetInstance.ShowRunLog($"柔性味魔方,托盘1,配方:{recipeName},{i}号仓,配料完成,下料完成重量:{RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight}");
//查找配料完成的味魔方的报警偏差限值。
float AlarmRange = Math.Abs(RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight - RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).RawMaterialWeight * 1000);
int iIndex = Array.FindIndex(Json<DevicePar>.Data.deviceParModels.ToArray(), p => p.MaterialName == DeviceInquire.GetInstance.GetDevice(i).DeviceName);
if (iIndex >= 0)
{
//如果偏差过大则报警。
if (Math.Abs(Json<DevicePar>.Data.deviceParModels.ElementAt(iIndex).ErrorRange) < AlarmRange)
{
HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true);
@@ -622,6 +655,7 @@ namespace BPASmartClient.FoodStationTest.Model
});
}
}
//对海科PLC写入味魔方配料完成。
if (i >= 1 && i <= 8)
{
string commInfo = HKDevice.HK_PLC_S7.Write("DB4.DBX12." + (i - 1), true).IsSuccess.ToString();
@@ -638,10 +672,13 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}
//配方整体配料完成处理。
bool DosingComple = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX6." + recipeNum).Content;
if ((RTrig.GetInstance("配方配料完成").Start(DosingComple)) || (GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] > 0 && DosingComple))
{
//配方制作完成数量+1
GVL_SmallStation.GetInstance.RecipeDosingCompleNum = GVL_SmallStation.GetInstance.RecipeDosingCompleNum + 1;

GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0;
if (GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] > 0)
{
@@ -661,6 +698,7 @@ namespace BPASmartClient.FoodStationTest.Model
}

GVL_SmallStation.GetInstance.WindSendDosing = false;
//移除配方。
App.Current.Dispatcher.Invoke(() =>
{
Json<RemoteRecipeDataColl>.Data.Recipes.Remove(res);
@@ -689,6 +727,7 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}

/// <summary>
/// 料仓的位置和原料名称的对应
/// </summary>
@@ -706,6 +745,7 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}

/// <summary>
/// PLC的DB3变量列表。初始化PLC读取DB块变量以及流程变量数据。
/// </summary>
@@ -728,8 +768,6 @@ namespace BPASmartClient.FoodStationTest.Model
}
}



foreach (PropertyInfo item in typeof(GVL_SmallStation).GetProperties())
{
if (Attribute.IsDefined(item, typeof(VarCommAttribute)))
@@ -747,6 +785,7 @@ namespace BPASmartClient.FoodStationTest.Model
}
}
}

/// <summary>
/// 注册需要用到的委托,主要是用于手动控制的。
/// </summary>
@@ -951,8 +990,6 @@ namespace BPASmartClient.FoodStationTest.Model
ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB5.DBX5.2", true); }), "StartAxis2Command", true);
ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB5.DBX5.2", false); }), "StopAxis2Command", true);



//将本地配方发送到西门子配方里,执行配料
ActionManage.GetInstance.Register(new Action<Object>((res) =>
{
@@ -1112,8 +1149,8 @@ namespace BPASmartClient.FoodStationTest.Model
HKDevice.HK_PLC_S7.Write("DB4.DBB1", (byte)Value);
}
}), "RobotSetProgramNum", true);

}

/// <summary>
/// 连接海科PLC,并开启重连线程。
/// </summary>
@@ -1154,7 +1191,6 @@ namespace BPASmartClient.FoodStationTest.Model
{
}


Thread.Sleep(50);
}), "设备连接", true);
}
@@ -1243,4 +1279,4 @@ namespace BPASmartClient.FoodStationTest.Model
GVL_SmallStation.GetInstance.RawMaterialsNameCode.TryAdd("0060", "孜然油");
}
}
}
}

+ 3
- 0
BPASmartClient.FoodStationTest/Model/RawMaterial/AlarmInfo.cs Visa fil

@@ -2,6 +2,9 @@

namespace BPASmartClient.FoodStationTest.Model
{
/// <summary>
/// 料仓报警信息。
/// </summary>
public class AlarmInfo
{
/// <summary>


+ 3
- 0
BPASmartClient.FoodStationTest/Model/RawMaterial/DeviceCurrentStatus.cs Visa fil

@@ -2,6 +2,9 @@

namespace BPASmartClient.FoodStationTest.Model
{
/// <summary>
/// 味魔方当前状态。
/// </summary>
public class DeviceCurrentStatus : ObservableObject
{



+ 3
- 0
BPASmartClient.FoodStationTest/Model/Recipe/LocalRecipeDataColl.cs Visa fil

@@ -2,6 +2,9 @@

namespace BPASmartClient.FoodStationTest.Model
{
/// <summary>
/// 本地模拟配方集合。
/// </summary>
internal class LocalRecipeDataColl
{
public ObservableCollection<RemoteRecipeData> Recipes { get; set; } = new ObservableCollection<RemoteRecipeData>();


+ 20
- 66
BPASmartClient.FoodStationTest/View/ManualFlowView.xaml Visa fil

@@ -26,55 +26,6 @@
HorizontalAlignment="left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Button
Name="test1"
Width="200"
Height="40"
Margin="5"
Panel.ZIndex="0"
Command="{Binding Test1Command}"
Content="AGV送托盘完成"
FontSize="20"
Style="{StaticResource ImageButtonStyle}"
Visibility="{Binding VisibilityBtn1}" />
<Button
Name="test2"
Width="200"
Height="40"
Margin="5"
Panel.ZIndex="0"
Command="{Binding Test2Command}"
Content="粉料仓配料完成"
FontSize="20"
Style="{StaticResource ImageButtonStyle}"
Visibility="{Binding VisibilityBtn2}" />
<Button
Name="test3"
Width="200"
Height="40"
Margin="5"
Panel.ZIndex="0"
Command="{Binding Test3Command}"
Content="AGV取托盘完成"
FontSize="20"
Style="{StaticResource ImageButtonStyle}"
Visibility="{Binding VisibilityBtn3}" />
<TextBlock
Width="100"
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7" />
<!--<Button
Width="200"
Height="40"
Margin="5"
Panel.ZIndex="0"
Command="{Binding Test5Command}"
Content="粉料仓提升到位"
FontSize="20"
Style="{StaticResource ImageButtonStyle}" />-->
<Button
Width="200"
Height="40"
@@ -151,13 +102,32 @@
</Grid.RowDefinitions>

<StackPanel Grid.Column="1" Orientation="Vertical">
</StackPanel>
<WrapPanel Grid.Row="0">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="10,0,5,0"
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="海科PLC连接状态:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="{Binding HKPlcIsConnect}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="10,0,5,0"
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="海科plc心跳:" />
Text="海科PLC心跳:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
@@ -166,22 +136,6 @@
Foreground="#FF2AB2E7"
Text="{Binding Heartbeat}" />
</StackPanel>
</StackPanel>
<WrapPanel Grid.Row="0">
<TextBlock
Margin="10,0,5,0"
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="海科plc连接状态:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="{Binding HKPlcIsConnect}" />
</WrapPanel>
<WrapPanel Grid.Row="2">


+ 2
- 2
BPASmartClient.FoodStationTest/View/RecipeInfosView.xaml Visa fil

@@ -141,7 +141,7 @@
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2.5*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
@@ -189,7 +189,7 @@
<DataTemplate>
<Grid x:Name="grb" Height="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2.5*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />


+ 5
- 76
BPASmartClient.FoodStationTest/ViewModel/ManualFlowViewModel.cs Visa fil

@@ -20,54 +20,7 @@ namespace BPASmartClient.FoodStationTest.ViewModel
public ManualFlowViewModel()
{
time = GVL_SmallStation.GetInstance.Time;
Test1Command = new RelayCommand(() =>
{
if (DateTime.Now.Subtract(GVL_SmallStation.GetInstance.LatestIssueRecipe).TotalSeconds <= 10)
{
NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "提示", $"最后一次手动下发订单间隔不足10秒,请稍后再点击。");
return;
}

ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX8.0", PlcVarType = PlcVarType.Bool, Value = true });
//Thread.Sleep(200);
//ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX8.0", PlcVarType = PlcVarType.Bool, Value = false });
//GVL_SmallStation.GetInstance.AGV_PutTray1Finish = true;
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV送托盘完成");

VisibilityBtn1 = Visibility.Hidden;
VisibilityBtn2 = Visibility.Visible;
VisibilityBtn3 = Visibility.Hidden;
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,AGV送托盘完成");

});

Test2Command = new RelayCommand(() =>
{
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX4.0", PlcVarType = PlcVarType.Bool, Value = true });
//Thread.Sleep(200);
//ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX4.0", PlcVarType = PlcVarType.Bool, Value = false });
//GVL_SmallStation.GetInstance.WindSendDosingComple = true;
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,粉料仓配料完成");

VisibilityBtn1 = Visibility.Hidden;
VisibilityBtn2 = Visibility.Hidden;
VisibilityBtn3 = Visibility.Visible;
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,粉料仓配料完成");
});
Test3Command = new RelayCommand(() =>
{
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX10.0", PlcVarType = PlcVarType.Bool, Value = true });
//Thread.Sleep(200);
//ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX10.0", PlcVarType = PlcVarType.Bool, Value = false });
//GVL_SmallStation.GetInstance.AGV_GetTray1Finish = true;
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV取托盘完成");

VisibilityBtn1 = Visibility.Visible;
VisibilityBtn2 = Visibility.Hidden;
VisibilityBtn3 = Visibility.Hidden;
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,AGV取托盘完成");
});

Test4Command = new RelayCommand(() =>
{
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX1.5", PlcVarType = PlcVarType.Bool, Value = true });
@@ -75,16 +28,7 @@ namespace BPASmartClient.FoodStationTest.ViewModel
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,气缸收紧错位复位");
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,气缸收紧错位复位");
});
//Test5Command = new RelayCommand(() =>
//{
// GVL_SmallStation.GetInstance.WindSendAllowAGVPutGet = true;
// MessageNotify.GetInstance.ShowUserLog("手动点击按钮,粉料仓提升到位");
//});
Test6Command = new RelayCommand(() =>
{
ActionManage.GetInstance.Send("AGVPutTrayFinish");
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV放货架流程完成");
});
CLearRecipeInfo = new RelayCommand(() =>
{
App.Current.Dispatcher.Invoke(() =>
@@ -143,12 +87,7 @@ namespace BPASmartClient.FoodStationTest.ViewModel
});
StockbinDosingCompleClear = new RelayCommand(() =>
{
//for (int i = 0; i < GVL_SmallStation.GetInstance.StockInDosingComple.Length; i++)
//{
// GVL_SmallStation.GetInstance.StockInDosingComple[i] = false;
//}
//MessageNotify.GetInstance.ShowUserLog($"手动点击按钮,清除所有手动配料完成信号");
//NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"清除所有手动配料完成信号");
});
CancelRecipeCommand = new RelayCommand(() =>
{
@@ -297,12 +236,9 @@ namespace BPASmartClient.FoodStationTest.ViewModel
});
HKPlcIsConnect = ProcessControl.GetInstance.HKDevice.IsConnected;
}
public RelayCommand Test1Command { get; set; }
public RelayCommand Test2Command { get; set; }
public RelayCommand Test3Command { get; set; }
public RelayCommand Test4Command { get; set; }
public RelayCommand Test5Command { get; set; }
public RelayCommand Test6Command { get; set; }

public RelayCommand TimeSet { get; set; }
public RelayCommand CompletedNumResetCommand { get; set; }
public static bool Heartbeat { get { return _mHeartbeat; } set { _mHeartbeat = value; OnStaticPropertyChanged(); } }
@@ -364,16 +300,9 @@ namespace BPASmartClient.FoodStationTest.ViewModel
private static int _RecipeDosingCompleNum { get; set; }
public static int RecipeDosingCompleNum { get { return _RecipeDosingCompleNum; } set { _RecipeDosingCompleNum = value; OnStaticPropertyChanged(); } }

public static Visibility VisibilityBtn1 { get { return _VisibilityBtn1; } set { _VisibilityBtn1 = value; OnStaticPropertyChanged(); } }
private static Visibility _VisibilityBtn1 = Visibility.Visible;
public static Visibility VisibilityBtn2 { get { return _VisibilityBtn2; } set { _VisibilityBtn2 = value; OnStaticPropertyChanged(); } }
private static Visibility _VisibilityBtn2 = Visibility.Hidden;
public static Visibility VisibilityBtn3 { get { return _VisibilityBtn3; } set { _VisibilityBtn3 = value; OnStaticPropertyChanged(); } }

public string CancelRecipeCode { get { return _CancelRecipeCode; } set { _CancelRecipeCode = value; OnPropertyChanged(); } }
public string _CancelRecipeCode { get; set; }

private static Visibility _VisibilityBtn3 = Visibility.Hidden;


}


+ 7
- 0
BPASmartClient.JXJFoodBigStation/App.xaml.cs Visa fil

@@ -214,6 +214,13 @@ namespace BPASmartClient.JXJFoodBigStation
AssemblyName = "BPASmartClient.CustomResource",
ToggleWindowPath = "Pages.View.PasswordChangeView"
});
UserManager.Add(new SubMenumodel()
{
SubMenuName = "用户管理",
SubMenuPermission = new Permission[] { Permission.管理员 },
AssemblyName = "BPASmartClient.CustomResource",
ToggleWindowPath = "Pages.View.UserManagerView"
});

MenuManage.GetInstance.menuModels.Add(new MenuModel()
{


+ 1
- 1
BPASmartClient.JXJFoodBigStation/View/BomOfMaterialView.xaml Visa fil

@@ -104,11 +104,11 @@
</Grid>
<Grid Grid.Column="1" Margin="5">
<TextBox
Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Width="200"
FontSize="16"
Text="{Binding RawMaterialName}" />
</Grid>


+ 1
- 1
BPASmartClient.JXJFoodBigStation/View/ManualFlowView.xaml Visa fil

@@ -174,7 +174,7 @@
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="plc心跳:" />
Text="PLC心跳:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"


+ 9
- 11
BPASmartClient.JXJFoodSmallStation/View/ManualFlowView.xaml Visa fil

@@ -108,7 +108,7 @@
Content="PLC配方清零"
FontSize="20"
Style="{StaticResource ImageButtonStyle}" />
<WrapPanel Margin="400,0">
<WrapPanel Margin="10,0">
<TextBlock
Margin="10,0,5,0"
VerticalAlignment="Center"
@@ -116,8 +116,7 @@
Foreground="#FF2AB2E7"
Text="订单号:" />
<TextBox
Width="300"
Margin="5"
Width="241"
VerticalAlignment="Center"
FontSize="24"
Text="{Binding CancelRecipeCode}" />
@@ -157,7 +156,7 @@
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="海科plc心跳:" />
Text="海科PLC心跳:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
@@ -173,7 +172,7 @@
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="西门子 连接状态:" />
Text="西门子PLC连接状态:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
@@ -186,7 +185,7 @@
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="海科plc连接状态:" />
Text="海科PLC连接状态:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
@@ -199,7 +198,7 @@
VerticalAlignment="Center"
FontSize="25"
Foreground="#FF2AB2E7"
Text="风送plc连接状态:" />
Text="风送PLC连接状态:" />
<TextBlock
Margin="10"
HorizontalAlignment="Center"
@@ -246,9 +245,8 @@
Foreground="#FF2AB2E7"
Text="ms" />
<Button
Width="100"
Width="179"
Height="40"
Margin="5,0,5,0"
Panel.ZIndex="0"
Command="{Binding TimeSet}"
Content="设置"
@@ -449,7 +447,7 @@
Foreground="#FF2AB2E7"
Text="料仓号:" />
<TextBox
Width="50"
Width="90"
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
@@ -497,7 +495,7 @@
Margin="5,0,5,0"
Panel.ZIndex="0"
Command="{Binding CompletedNumResetCommand}"
Content="完成数目清零"
Content="配方完成数目清零"
FontSize="20"
Style="{StaticResource ImageButtonStyle}" />
</WrapPanel>


+ 101
- 41
BPASmartClient.JXJFoodSmallStation/View/RobotView.xaml Visa fil

@@ -1,12 +1,14 @@
<UserControl x:Class="BPASmartClient.JXJFoodSmallStation.View.RobotView"
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:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:BPASmartClient.JXJFoodSmallStation.ViewModel"
mc:Ignorable="d"
d:DesignHeight="1080" d:DesignWidth="1920">
<UserControl
x:Class="BPASmartClient.JXJFoodSmallStation.View.RobotView"
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:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource"
xmlns:vm="clr-namespace:BPASmartClient.JXJFoodSmallStation.ViewModel"
d:DesignHeight="1080"
d:DesignWidth="1920"
mc:Ignorable="d">
<UserControl.Resources>
<Style x:Key="radioButtonStyle" TargetType="RadioButton">
<Setter Property="Template">
@@ -45,45 +47,101 @@
</Style>
</UserControl.Resources>
<UserControl.DataContext>
<vm:RobotViewModel/>
<vm:RobotViewModel />
</UserControl.DataContext>

<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="4*" />
</Grid.ColumnDefinitions>
<!--#region 表格标题栏设置-->
<Grid>
<StackPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人自动运行模式:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsAutoMode}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人自动运行模式:" />
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="{Binding RobotIsAutoMode}" />
</WrapPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人正在自动运行:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsAutoRun}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人正在自动运行:" />
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="{Binding RobotIsAutoRun}" />
</WrapPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人停止状态:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsStop}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人停止状态:" />
<TextBlock
Margin="49,5"
FontSize="22"
Foreground="Aqua"
Text="{Binding RobotIsStop}" />
</WrapPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人运行正常:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsRun}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人运行正常:" />
<TextBlock
Margin="49,5"
FontSize="22"
Foreground="Aqua"
Text="{Binding RobotIsRun}" />
</WrapPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人运行故障:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsAlarm}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人运行故障:" />
<TextBlock
Margin="49,5"
FontSize="22"
Foreground="Aqua"
Text="{Binding RobotIsAlarm}" />
</WrapPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人在Home点:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsHomed}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人在Home点:" />
<TextBlock
Margin="30,5"
FontSize="22"
Foreground="Aqua"
Text="{Binding RobotIsHomed}" />
</WrapPanel>
<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人运行的程序号:"></TextBlock>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding IsRunProgramNum}"></TextBlock>
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="机器人运行的程序号:" />
<TextBlock
Margin="5"
FontSize="22"
Foreground="Aqua"
Text="{Binding IsRunProgramNum}" />
</WrapPanel>
<!--<WrapPanel>
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="抓空桶完成:"></TextBlock>
@@ -105,37 +163,37 @@
</Grid>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="1*"></RowDefinition>
<RowDefinition Height="7*"></RowDefinition>
<RowDefinition Height="1*" />
<RowDefinition Height="7*" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button
Margin="20,15"
Background="LightGreen"
Command="{Binding SystemStart}"
Content="启动"
FontSize="40"
Background="LightGreen"></Button>
FontSize="40" />
<Button
Grid.Column="1"
Margin="20,15"
Background="OrangeRed"
Command="{Binding SystemStop}"
Content="停止"
FontSize="40"
Background="OrangeRed"></Button>
FontSize="40" />
<Button
Grid.Column="2"
Grid.ColumnSpan="2"
Margin="20,15"
Background="DodgerBlue"
Command="{Binding EStopReset}"
Content="急停复位"
FontSize="40"
Background="DodgerBlue"></Button>
FontSize="40" />
</Grid>
</Grid>
<!--<Grid Grid.Column="2">
@@ -190,7 +248,8 @@
FontSize="32"
Style="{StaticResource ImageButtonStyle}"></Button>
</Grid>
--><!--<ListView
-->
<!--<ListView
Grid.Row="1"
Background="Transparent"
BorderBrush="#00BEFA"
@@ -264,7 +323,8 @@
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>--><!--
</ListView>-->
<!--
<Grid Grid.Row="1" Visibility="Hidden">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>


+ 6
- 2
BPASmartClient.JXJFoodSmallStation/View/SystemParView.xaml Visa fil

@@ -165,6 +165,7 @@
Content="西门子设备连接"
FontFamily="楷体"
FontSize="20"
VerticalContentAlignment="Center"
Foreground="Aqua"
IsChecked="{Binding SiemensConnect}" />
<CheckBox
@@ -173,6 +174,7 @@
Content="粉料仓设备连接"
FontFamily="楷体"
FontSize="20"
VerticalContentAlignment="Center"
Foreground="Aqua"
IsChecked="{Binding WindSendConnect}" />
<CheckBox
@@ -181,6 +183,7 @@
Content="小料站产线PLC设备连接"
FontFamily="楷体"
FontSize="20"
VerticalContentAlignment="Center"
Foreground="Aqua"
IsChecked="{Binding HKPlcConnect}" />

@@ -190,6 +193,7 @@
VerticalAlignment="Center"
Content="屏蔽小料仓数量读取报警"
FontFamily="楷体"
VerticalContentAlignment="Center"
FontSize="20"
Foreground="Aqua"
IsChecked="{Binding ShieldStockbinAlarm}" />
@@ -276,7 +280,7 @@
Text="伺服1速度(进桶侧)" />
<TextBox
Width="50"
Margin="10"
Margin="33,10"
FontSize="16"
Text="{Binding Axis1Speed}" />
<TextBlock
@@ -295,7 +299,7 @@
Text="伺服2速度(出桶侧)" />
<TextBox
Width="50"
Margin="10"
Margin="33,10"
FontSize="16"
Text="{Binding Axis2Speed}" />
<TextBlock


Laddar…
Avbryt
Spara