|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
|
|
|
using System.Runtime.Serialization.Formatters.Soap;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Xml.Serialization;
|
|
|
|
|
using Mesnac.Action.ChemicalWeighing.Entity;
|
|
|
|
|
using System.Configuration;
|
|
|
|
|
|
|
|
|
|
namespace Mesnac.Action.ChemicalWeighing
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 小料称量系统全局常量和变量和方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class Global
|
|
|
|
|
{
|
|
|
|
|
#region 协议头常量
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 协议头常量
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class ProtocalHeader
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 系统全局变量
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 系统全局变量
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class PublicVar
|
|
|
|
|
{
|
|
|
|
|
#region 字段定义
|
|
|
|
|
|
|
|
|
|
private bool _chemicalWeighingPlcOnlineFlag = false;
|
|
|
|
|
private bool _localPlanIsRefresh = false;
|
|
|
|
|
private List<string> _lstRubCtrl = new List<string>();
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 单例实现
|
|
|
|
|
|
|
|
|
|
private static PublicVar instance;
|
|
|
|
|
|
|
|
|
|
public static PublicVar Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (instance == null)
|
|
|
|
|
{
|
|
|
|
|
instance = new PublicVar();
|
|
|
|
|
}
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private PublicVar()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 应用配置变量
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Socket通信侦听的IP地址
|
|
|
|
|
/// </summary>
|
|
|
|
|
public readonly string ListenServerIP = Mesnac.Basic.AppConfigHelper.GetAppSettingValue("ListenServerIP", "127.0.0.1");
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Socket通讯侦听的端口号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public readonly int Port = Mesnac.Basic.AppConfigHelper.GetAppSettingValue("Port", 6666);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region RunSchema配置项
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 单机/网络:0为单机,1为网络
|
|
|
|
|
/// </summary>
|
|
|
|
|
public Mesnac.Action.Base.BaseAction.NetTypes NetType
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
int intNetType = Mesnac.Basic.RunSchema.Instance.GetConfigValue("NetType", 0);
|
|
|
|
|
if (intNetType == 0)
|
|
|
|
|
{
|
|
|
|
|
return Base.BaseAction.NetTypes.Local;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return Base.BaseAction.NetTypes.Net;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 网络服务器连接检测模式:0-网络库检测,1-Ping检测
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int CheckConnectMode
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
int checkConnectMode = Mesnac.Basic.RunSchema.Instance.GetConfigValue("CheckConnectMode", 1);
|
|
|
|
|
return checkConnectMode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 网络数据库服务器IP地址
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string NetDbServerIP
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
string netDbServerIP = Mesnac.Basic.RunSchema.Instance.GetConfigValue("NetDbServerIP", String.Empty);
|
|
|
|
|
return netDbServerIP;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 当前机台编号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string EquipCode
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
string equipCode = Mesnac.Basic.RunSchema.Instance.GetConfigValue("EquipCode", "01001");
|
|
|
|
|
return equipCode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否开启本地测试,一旦开启,则在配方下传、报表存盘时会增加支持测试的逻辑处理
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsLocalTest
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("IsLocalTest", false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// PLC交互最大超时次数(每次500毫秒)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int MaxReadPlcCount
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("MaxReadPlcCount", 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// PLC交互时,清除请求信号前等待的时间,单位(毫秒)默认0秒,主要是方便PLC调试
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int ClearRequestSleep
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("ClearRequestSleep", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 消息窗口显示模式,0-显示3秒自动关闭,1-手动关闭
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int MessageDialogMode
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("MessageDialogMode", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 计划执行方式:0为单个执行,1为连续执行
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int PlanExecuteType
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("PlanExecuteType", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否强制换班
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsForceShift
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("IsForceShift", false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否保存密炼曲线至MSSQLServer数据库
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsSaveMixCurveDataToMsSQL
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("IsSaveMixCurveDataToMsSQL", true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否保存开炼曲线至MSSQL数据库
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsSaveMillCurveDataToMsSQL
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("IsSaveMillCurveDataToMsSQL", true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否保存密炼曲线至InfluxDb数据库
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsSaveMixCurveDataToInfluxDb
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("IsSaveMixCurveDataToInfluxDb", false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否保存开炼曲线至InfluxDb数据库,请先正确配置InfluxDb数据库信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsSaveMillCurveDataToInfluxDb
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("IsSaveMillCurveDataToInfluxDb", false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存同一配方的最大版本数
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int SaveRecipeVersionMaxCount
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("SaveRecipeVersionMaxCount", 5);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 默认小数精度,即保留几位小数
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int DefaultPrecision
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("DefaultPrecision", 3);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 配方下传模式:0:非交互,直接下传;1:交互
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int PlcDownloadMode
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Mesnac.Basic.RunSchema.Instance.GetConfigValue("PlcDownloadMode", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 系统常量定义
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 登录业务GUID
|
|
|
|
|
/// </summary>
|
|
|
|
|
public readonly string LoginGUID = "CD72C0AB64BB4F81824C22A4A4BED295";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 配方数据导出路径
|
|
|
|
|
/// </summary>
|
|
|
|
|
public readonly string RecipeExportPath = System.IO.Path.Combine(ICSharpCode.Core.FileUtility.ApplicationRootPath, "Data", "RecipeDataExport");
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 系统属性定义
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 机台计划刷新标识,在刷新机台计划时设置为true,在更新计划状态后设置为false
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool LocalPlanIsRefresh
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this._localPlanIsRefresh;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this._localPlanIsRefresh = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 属性定义
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 项目名称
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string ProjectWizardName { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 小料称量PLC在线标志
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool ChemicalWeighingPlcOnlineFlag
|
|
|
|
|
{
|
|
|
|
|
get { return _chemicalWeighingPlcOnlineFlag; }
|
|
|
|
|
set { _chemicalWeighingPlcOnlineFlag = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 要展示的报警信息List
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<string> AlarmStrList = new List<string>();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 监控画面是否刷新显示标识(主屏监控画面)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool isFlashFlag = false;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 监控画面是否刷新显示标识(扩展屏监控画面)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool isFlashFlagExtend = false;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 测试时所用变量(测试用)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int alarmNumCount = 0;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 扫码枪条码开始截取位置(三元现场未用到)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int ScanCodeStrStart = 0;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 扫码枪条码结束截取位置(三元现场未用到)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int ScanCodeStrEnd = 10;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 手动秤启用标志
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool ManualWeightFlag = false;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 下传计划的物料信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<Pmt_weigh> currentListPmt_weigh = new List<Pmt_weigh>();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 班次编号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int globalShiftID = 0 ;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|