using Autofac;
|
using Bro.Common.Base;
|
using Bro.Common.Helper;
|
using Bro.Common.Interface;
|
using Bro.Common.Model;
|
using Bro.Device.AuboRobot;
|
using Bro.Device.HikCamera;
|
using Bro.Device.OmronFins;
|
using Bro.Device.SeerAGV;
|
using Bro.Device.Station;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Drawing.Design;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using static Bro.Common.Helper.EnumHelper;
|
|
namespace A032.Process
|
{
|
public class ProcessConfig : IStationConfig
|
{
|
#region 设备配置
|
[Category("设备配置")]
|
[Description("PLC配置")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<OmronFinsInitialConfig>), typeof(UITypeEditor))]
|
public List<OmronFinsInitialConfig> PLCConfigCollection { get; set; } = new List<OmronFinsInitialConfig>();
|
|
[Category("设备配置")]
|
[Description("机器人配置")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<AuboRobotInitialConfig>), typeof(UITypeEditor))]
|
public List<AuboRobotInitialConfig> RobotConfigCollection { get; set; } = new List<AuboRobotInitialConfig>();
|
|
[Category("设备配置")]
|
[Description("AGV配置")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<SeerAGVInitialConfig>), typeof(UITypeEditor))]
|
public List<SeerAGVInitialConfig> AGVConfigCollection { get; set; } = new List<SeerAGVInitialConfig>();
|
|
[Category("设备配置")]
|
[Description("相机配置")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<HikCameraInitialConfig>), typeof(UITypeEditor))]
|
public List<HikCameraInitialConfig> CameraConfigCollection { get; set; } = new List<HikCameraInitialConfig>();
|
|
[Category("设备配置")]
|
[Description("AGV小车设备绑定配置,配置绑定的AGV,机器人和相机信息")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<AGVBindUnit>), typeof(UITypeEditor))]
|
public List<AGVBindUnit> AGVBindCollection { get; set; } = new List<AGVBindUnit>();
|
#endregion
|
|
#region 操作配置
|
//[Category("操作配置")]
|
//[Description("PLC监听配置")]
|
//[TypeConverter(typeof(CollectionCountConvert))]
|
//[Editor(typeof(MonitorSetBindEditor), typeof(UITypeEditor))]
|
//public Dictionary<string, MonitorSet> PLCMonitorSet { get; set; } = new Dictionary<string, MonitorSet>();
|
|
/// <summary>
|
/// 操作配置的字典集合
|
/// Key:MethodCode,Value:操作配置
|
/// </summary>
|
[Category("操作配置")]
|
[Description("默认操作配置集合")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(OperationConfigBindEditor), typeof(UITypeEditor))]
|
public Dictionary<string, IOperationConfig> ProcessOpConfigDict { get; set; } = new Dictionary<string, IOperationConfig>();
|
|
//[Category("监听和操作配置")]
|
//[Description("监听操作配置集合")]
|
//[TypeConverter(typeof(CollectionCountConvert))]
|
//[Editor(typeof(ComplexCollectionEditor<MonitorSet>), typeof(UITypeEditor))]
|
//public List<MonitorSet> MonitorSetCollection { get; set; } = new List<MonitorSet>();
|
#endregion
|
|
#region 全局配置
|
[Category("全局配置")]
|
[Description("是否采用离线图片")]
|
public virtual bool IsImageOffline { get; set; } = false;
|
|
[Category("Demo模式")]
|
[Description("是否测试模式 测试模式下始终反馈OK信号")]
|
public virtual bool IsDemoMode { get; set; } = false;
|
|
//[Category("Demo模式")]
|
//[Description("测试模式下程序启动时反馈1至该地址,非测试模式反馈0")]
|
//public int DemoReplayAddress { get; set; }
|
#endregion
|
|
#region 日志和CSV配置
|
[Category("日志配置")]
|
[Description("是否启用日志")]
|
public bool IsLogEnabled { get; set; } = false;
|
|
[Category("日志配置")]
|
[Description("日志文件夹路径")]
|
[Editor(typeof(FoldDialogEditor), typeof(UITypeEditor))]
|
public string LogPath { get; set; }
|
|
//[Category("日志配置")]
|
//[Description("GRR日志文件夹路径")]
|
//[Editor(typeof(FoldDialogEditor), typeof(UITypeEditor))]
|
//public string GRRLogPath { get; set; }
|
|
[Category("CSV文件配置")]
|
[Description("是否做CSV文件输出")]
|
[Browsable(false)]
|
public bool IsCSVOutput { get; set; } = false;
|
|
[Category("CSV文件配置")]
|
[Description("CSV输出文件夹路径")]
|
[Editor(typeof(FoldDialogEditor), typeof(UITypeEditor))]
|
[Browsable(false)]
|
public string CSVFilePath { get; set; }
|
#endregion
|
|
//[Category("PLC相关配置")]
|
//[Description("警报配置列表")]
|
//[TypeConverter(typeof(CollectionCountConvert))]
|
//[Editor(typeof(ComplexCollectionEditor<WarningSet>), typeof(UITypeEditor))]
|
//public List<WarningSet> WarningSets { get; set; } = new List<WarningSet>();
|
|
//[Category("PLC相关配置")]
|
//[Description("产品出列时是否有确认动作。true:有确认动作,确认后产品出列;false:没有确认动作,查询时产品出列")]
|
//public bool IsConfirmWhenProductionDone { get; set; } = false;
|
|
[Category("NG图片保存配置")]
|
[Description("NG图片保存目录")]
|
[Editor(typeof(FoldDialogEditor), typeof(UITypeEditor))]
|
[Browsable(false)]
|
public string NGImageFolderPath { get; set; }
|
|
//[Category("算法配置")]
|
//[Description("是否采用外部算子。true:采用外部算子,false:使用内部算法")]
|
//public bool IsUsingExternalAlgorithem { get; set; } = true;
|
|
[Category("路径相关")]
|
[Description("路径节点配置")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<PathPosition>), typeof(UITypeEditor))]
|
public List<PathPosition> PositionCollection { get; set; } = new List<PathPosition>();
|
|
[Category("路径相关")]
|
[Description("各位置标定矩阵")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<PositionVisionConfig>), typeof(UITypeEditor))]
|
public List<PositionVisionConfig> VisionConfigCollection { get; set; } = new List<PositionVisionConfig>();
|
|
[Category("视觉配置")]
|
[Description("是否启用视觉引导")]
|
public bool IsEnableVisionGuide { get; set; } = false;
|
|
/// <summary>
|
/// 空Tray上料阈值,AGV上的空tray数量不大于该数值时,AGV可以执行空Tray上料任务
|
/// </summary>
|
[Category("阈值设置")]
|
[Description("空Tray上料阈值,AGV上的空tray数量不大于该数值时,AGV可以执行空Tray上料任务")]
|
public int AGV_EmptyTrayThreshold { get; set; } = 0;
|
|
/// <summary>
|
/// 满Tray下料阈值,AGV上的满tray数量不小于该数值时,AGV可以执行满Tray下料任务
|
/// </summary>
|
[Category("阈值设置")]
|
[Description("满Tray下料阈值,AGV上的满tray数量不小于该数值时,AGV可以执行满Tray下料任务")]
|
public int AGV_FullTrayThreshold { get; set; } = 10;
|
|
/// <summary>
|
/// 产线忙时拍照确认等待间隔,以秒为单位
|
/// </summary>
|
[Category("阈值设置")]
|
[Description("产线忙时拍照确认等待间隔,以秒为单位")]
|
public int LineBusyWaitInterval { get; set; } = 60;
|
|
/// <summary>
|
/// 产线忙时拍照重试次数
|
/// </summary>
|
[Category("阈值设置")]
|
[Description("产线忙时拍照重试次数")]
|
public int LineBusyRetryTimes { get; set; } = 10;
|
|
[Category("阈值设置")]
|
[Description("机台压机满Tray数量")]
|
public int Machine_FullTrayNum { get; set; }
|
|
[Category("阈值设置")]
|
[Description("机台压机空Tray数量")]
|
public int Machine_EmptyTrayNum { get; set; }
|
|
#region Ignore
|
[Browsable(false)]
|
[JsonIgnore]
|
public List<OperationCTCollection> CTStatistic { get; set; }
|
|
[Browsable(false)]
|
[JsonIgnore]
|
public bool IsUseMountCorrectionLimit { get; set; }
|
|
[Browsable(false)]
|
[JsonIgnore]
|
public List<Spec> MountCorrectionRanges { get; set; }
|
|
[Category("全局配置")]
|
[Description("超时时间设置,单位为毫秒")]
|
[Browsable(false)]
|
public int TimeOut { get; set; } = 9999;
|
|
//[Category("全局配置")]
|
//[Description("空闲时间设置,当机器空闲时间超过该值,认为机器开始空闲,单位为秒")]
|
//public int IdleTimeThreshold { get; set; } = 60;
|
|
[Category("全局配置")]
|
[Description("站点代码 例如S1")]
|
[ReadOnly(true)]
|
[Browsable(false)]
|
[JsonIgnore]
|
public virtual string StationCode { get; set; }
|
|
[Category("全局配置")]
|
[Description("站点序号,从1开始")]
|
[Browsable(false)]
|
[JsonIgnore]
|
public virtual int SequenceIndex { get; set; }
|
|
[Category("全局配置")]
|
[Description("是否做过站检查")]
|
[Browsable(false)]
|
[JsonIgnore]
|
public virtual bool IsCheckPrePass { get; set; } = false;
|
|
[Category("全局配置")]
|
[Description("是否数据库保存")]
|
[Browsable(false)]
|
[JsonIgnore]
|
public virtual bool IsDBSave { get; set; } = false;
|
#endregion
|
}
|
}
|