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; namespace Mesnac.Action.Feeding { /// /// 上辅机系统全局常量和变量和方法 /// public class Global { #region 协议头常量 /// /// 协议头常量 /// public class ProtocalHeader { /// /// 计划执行协议头 /// 郑立兵于2013-8月添加 /// public const string ReceiveExecPlanNumber = "9101"; //计划执行协议头 /// /// 车数(计划数)修改协议头 /// 郑立兵于2013-9月添加 /// public const string ReceiveModifyPlanNumber = "9102"; //车数(计划数)修改协议头 /// /// Send计划协议头 /// public const string ReceivePlanIpNumber = "9990";//Send计划协议头 /// /// Send判断密炼及其秤状态提示 /// public const string ReceiveMixStatuIpNumber = "9991";//Send判断密炼及其秤状态提示 /// /// Send配方下传状态 /// public const string ReceiveRecipeDownLoadStatu = "9992";//Send配方下传状态 //{ // 0:正在下传基础配方...... // 18:正在下传炭黑称量配方...... // 36:正在下传油称量配方...... // 54:正在下传胶料称量配方...... // 72:正在下传密炼配方...... // 85:正在开始称量...... // 95:正在开始密炼...... // 100:下传完毕! // 101:计划信息更新成功 //} /// /// Send Plc A区 /// public const string ReceiveFirstPlcIpNumber = "9993"; //Send Plc A区 /// /// Send Plc B区 /// public const string ReceiveSecondPlcIpNumber = "9994"; //Send Plc B区 /// /// /Base Info /// public const string ReceiveBaseStatu = "9995";//Base Info /// /// Alam Data /// public const string ReceiveAlarmDataIpNumber = "9997";//Alam Data /// /// 接收到称量参数协议头 /// public const string ReceiveWeighParamIpNumber = "9998";//接收到称量参数协议头 /// /// rubset:...:|ruberror...:|ThSet:...:|Therror...:|YSet:...:|Yerror:...:|/ /// public const string ReceiveMixingIpNumber = "9999"; public const string ReceiveThirdStatusIpNumber = "5555"; /// /// 实时生产时,"条码生成打印表" 每插入一条记录,则发送此消息 格式:7002:架子条码/ /// public const string ReceiveJiepian = "7002"; //实时生产时,"条码生成打印表" 每插入一条记录,则发送此消息 格式:7002:架子条码/ /// /// 实时密炼曲线,用于向生产网络发送实时密炼曲线 /// public const string ReceiveCurveData = "6789";//实时密炼曲线,用于向生产网络发送实时密炼曲线 /// /// 新配方开始生产时,产生的"车条码"的基数 /// public const string ReceivePfbarcode = "9900"; //新配方开始生产时,产生的"车条码"的基数 /// /// 胶料存盘数据 格式:9996:XX:XX:/ /// public const string ReceiveSavePlyData = "9996";//胶料存盘数据 格式:9996:XX:XX:/ /// /// 计划号 /// public const string ReceivePlanIdIpNumber = "9100";//计划号 /// /// 增加对于小料当成胶料来处理,但混炼步骤中有加小药步骤(即小料和胶料分开加)的情况 /// public const string ReceiveHaveAddXLTag = "9300"; //2005-08-16 增加对于小料当成胶料来处理,但混炼步骤中有加小药步骤(即小料和胶料分开加)的情况 /// /// 上辅机定义的状态点的状态信息 /// public const string ReceiveSFJStatus = "9601"; //2005-10-14 上辅机定义的状态点的状态信息 /// /// 密炼机定义的状态点的状态信息 /// public const string ReceiveMixerStatus = "9602"; //2005-10-14 密炼机定义的状态点的状态信息 /// /// 密炼机定义的状态点的状态信息 /// public const string ReceiveXFJStatus = "9603"; //2005-10-14 下辅机定义的状态点的状态信息 /// /// 要求输送系统强制输送 /// public const string RecvSSReachBottom = "8848"; // 要求输送系统强制输送 //2006-2-10 /// /// 0:计划开始;1:计划终止或者计划完成 /// public const string ReceivePlanExecInfo = "8300"; //0:计划开始;1:计划终止或者计划完成 /// /// 当前生产的物料的累计车次号由上辅机发送 /// public const string ReceiveMonthId = "9255"; //2006-05-18 当前生产的物料的累计车次号由上辅机发送 /// /// 当扫描的条码追溯重量或数量使用完毕后,向胶料秤客户端发送报警提示信息 /// public const string ReceiveBarWarning = "9500"; //2006-12-18 当扫描的条码追溯重量或数量使用完毕后,向胶料秤客户端发送报警提示信息 /// /// 接收网络修改计划次数 /// public const string RecipeModifyPlanNum = "9501"; //接收网络修改计划次数 /// /// 接收网络修改计划次数并修改完成 /// public const string ModifyPlanNumFinish = "9502"; //接收网络修改计划次数并修改完成 /// /// 当班生产人员卡片 /// public const string ReceiveWorkerBarcode = "8100"; //当班生产人员卡片 /// /// 修改车数 /// public const string SendModifyNum = "8000"; /// /// Receive要显示的计划协议头 格式:date|shfit /// public const string SelectPlanIpNumber = "8001";//Receive要显示的计划协议头 格式:date|shfit /// /// Receive计划协议头 格式:date|shift|Name+code+set+finish~Name+code+set+finish........~ /// public const string SendPlanIpNumber = "8002";//Receive计划协议头 格式:date|shift|Name+code+set+finish~Name+code+set+finish........~ /// /// Receive确认协议头 /// public const string SendEnterIpNumber = "8003"; //Receive确认协议头 /// /// Receive取消协议头 /// public const string SendESCIpNumber = "8004"; //Receive取消协议头 /// /// 0 Or 1;0:单个下传1:连续运行 /// public const string SendExcPlanIpNumber = "8005"; //0 Or 1;0:单个下传1:连续运行 /// /// Receive Stop Plan /// public const string SendStopPlanIpNumber = "8006"; //Receive Stop Plan /// /// Reset /// public const string SendResetInNumber = "8007"; //Reset /// /// 子系统增加计划 格式:8008+":"+配方编码(14位)+":"+计划数 /// public const string SendAddPlanIpNumbar = "8008"; //子系统增加计划 格式:8008+":"+配方编码(14位)+":"+计划数 //2005-06-07 /// /// 当班生产人员卡片 /// public const string SendWorkerBarcode = "8100"; //当班生产人员卡片 //2005-06-09 /// /// 扫描的架子条码 /// public const string SendMaterBarcode = "8200"; //扫描的架子条码 //2005-07-11 //网络新下达的计划提示协议头 /// /// 网络新下达的计划提示协议头 /// public const string SendNetNewPlan = "7771"; //2011-03-18 //网络新下达的计划提示协议头 public const string SendNewMessage = "7772"; //2006-4-18 /// /// 气力输送发送过来的日罐料位信息 /// public const string SendWareInfo = "8500"; //气力输送发送过来的日罐料位信息 /// /// 条码扫描错误信号 /// public const string SendBarRight = "8311"; //条码扫描错误信号 2006-05-18 /// /// 开始维修标志 /// public const string SendRepair = "8322"; //开始维修标志 2007-8-8 //2011-10-21 /// /// 网络罐设置变化 /// public const string SendWareChange = "8400"; //网络罐设置变化 /// /// 修改计划数 /// public const string SendModifyPlanNum = "9501"; //修改计划数 /// /// 锁定胶料秤输送 /// public const string SendLockRubWeigh = "5555"; //锁定胶料秤输送 /// /// 掺用胶料扫描 /// public const string SendChanYong = "3701"; //掺用胶料扫描 /// /// 掺用胶料扫描 /// public const string SendStopChanYong = "3702"; //掺用胶料扫描 } #endregion #region 系统全局变量 /// /// 系统全局变量 /// public class PublicVar { #region 单例实现 private static PublicVar instance; public static PublicVar Instance { get { if (instance == null) { instance = new PublicVar(); } return instance; } } private PublicVar() { } #endregion /// /// 项目名称 /// public string ProjectWizardName { get; set; } /// /// 当前生产车数取余等于1的车条码 /// public string FirstLotBarCode { get; set; } /// /// 当前生产车数取余等于1的车的物料 /// public string FirstLotMaterCode { get; set; } /// /// 当前架子的起始车次号 /// public int FirstLotSerialId { get; set; } /// /// 当前架子的最后一车车次 /// public int LastLotNum { get; set; } /// /// 当前架子的计划号 /// public string FirstLotPlanId { get; set; } /// /// 炭黑扫描机台 /// public string G_CBEquip { get; set; } } #endregion #region 业务辅助方法 /// /// 解析二进制位 /// /// 要解析的变量 /// 解析的长度 /// 返回解析的二进制值数组 public static int[] ParseBinaryValue(int x, int len) { int[] result = new int[len]; int b = 1; for (int i = 0; i < len; i++) { result[i] = (x & b) == 0 ? 0 : 1; b = b << 1; } return result; } /// /// 根据称重类型获取物料类型(根据上辅机业务,物料类型目前只分为:炭黑、油料、粉料、胶料) /// /// 称重类型 /// 返回向物料表中添加的物料类型 public static string GetMaterialTypeByWeightType(string weightType) { string materialType = String.Empty; switch (weightType.Trim()) { case "0": materialType = "炭黑"; break; case "1": materialType = "油1"; break; case "2": materialType = "胶料"; break; case "3": materialType = "小料"; break; case "4": materialType = "粉料"; break; case "5": materialType = "油2"; break; default: materialType = String.Empty; break; } return materialType; } /// /// 根据称量类型获取罐的类型0-炭黑,1-油1,3-粉料,5-油2 /// /// 称量类型 /// 返回对应的罐的类型 public static string GetJarTypeByWeightType(string weightType) { string jarType = String.Empty; switch (weightType.Trim()) { case "0": jarType = "炭黑"; break; case "1": jarType = "油1"; break; case "2": jarType = "胶料没有罐"; break; case "3": jarType = "粉料"; break; case "4": jarType = "小料没有罐"; break; case "5": jarType = "油2"; break; default: jarType = "获取失败"; break; } return jarType; } #endregion } }