using System; using System.Reflection; using System.Text; using Mesnac.Action.Base; using Mesnac.Codd.Session; using Mesnac.Equips; using System.Data; namespace Mesnac.Action.Compressor { public class PlcData { #region 基本设置 /// /// PLC数据键值类 /// public class DataKeyValue { public class Value { private object value = null; public Value(object obj) { this.value = obj; } public object ToObject() { return this.value; } public int ToInt(int defaultValue) { int iResult = defaultValue; if (this.value != null && this.value != DBNull.Value && int.TryParse(this.value.ToString(), out iResult) ) { return iResult; } return defaultValue; } public int ToInt() { return ToInt(0); } public DateTime ToDateTime(DateTime defaultValue) { DateTime iResult = defaultValue; if (this.value != null && this.value != DBNull.Value && DateTime.TryParse(this.value.ToString(), out iResult) ) { return iResult; } return defaultValue; } public DateTime ToDateTime() { return ToDateTime(DateTime.Now); } public double ToDouble(double defaultValue) { double iResult = defaultValue; if (this.value != null && this.value != DBNull.Value && double.TryParse(this.value.ToString(), out iResult) ) { return iResult; } return defaultValue; } public double ToDouble() { return ToDouble(0.0); } public string ToString(string defaultValue) { string iResult = defaultValue; if (this.value != null && this.value != DBNull.Value ) { return this.value.ToString(); } return defaultValue; } public override string ToString() { return ToString(string.Empty); } } private void Ini() { foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { //if (data.KeyName.Equals(this.FieldKey, StringComparison.CurrentCultureIgnoreCase)) if (data.KeyName==this.FieldKey) { this.EquipKey = data.KeyName; this.EquipRunName = data.RunName; this.EquipData = data; } } } } } private Value getLastVauebeforeMath() { Value Result = null; foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Read || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.KeyName == this.EquipKey) { return new Value(data.LastBeforeMathValue[0]); } } } } } return Result; } private Value getLastValue() { Value Result = null; foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Read || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.KeyName == this.EquipKey) { return new Value(data.Value); } } } } } return Result; } private Value getNowValue() { Value Result = null; foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Read || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.KeyName == this.EquipKey) { return new Value(equip.ReadData(data)); } } } } } return Result; } public DataKeyValue(string name) { this.Name = name; this.FieldKey = name; this.Ini(); } /// /// 配置名称 = 配置key值 /// public string Name { get; private set; } /// /// 配置key值 /// public string FieldKey { get; private set; } /// /// 设备设置值 /// public string EquipKey { get; private set; } /// /// 设备设置值 /// public string EquipRunName { get; private set; } /// /// 设备设置值 /// public Mesnac.Equips.BaseInfo.Data EquipData { get; private set; } /// /// 说明 /// public string Remark { get; private set; } private Value setLastValue = null; /// /// 上一次读取的值 /// public Value LastValue { get { Value value = this.getLastValue(); if (value == null) { value = this.getNowValue(); } if (value == null) { value = setLastValue; } if (value == null) { value = new Value(null); } setLastValue = value; return setLastValue; } set { this.setLastValue = value; } } private Value _setLastValueBeforeMath; public Value LastValuebeforeMath { get { Value value = this.getLastVauebeforeMath(); if (value == null) { value = this.getNowValue(); } if (value == null) { value = _setLastValueBeforeMath; } if (value == null) { value = new Value(null); } _setLastValueBeforeMath = value; return _setLastValueBeforeMath; } set { this._setLastValueBeforeMath = value; } } private Value setNowValue = null; /// /// 读取当前值 /// public Value NowValue { get { Value value = this.getNowValue(); if (value == null) { value = setNowValue; } if (value == null) { value = setLastValue; } if (value == null) { value = new Value(null); } setNowValue = value; return setNowValue; } set { this.setNowValue = value; } } } #endregion #region 单例模式 private static PlcData _this; public static PlcData Instance { get { if (null == _this) _this = new PlcData(); return _this; } } private PlcData() { foreach (PropertyInfo pi in this.GetType().GetProperties()) { if (pi.PropertyType == typeof(DataKeyValue)) { DataKeyValue data = new DataKeyValue(pi.Name); pi.SetValue(this, data, null); } } } #endregion #region GetDataKeyValue public DataKeyValue GetDataKeyValue(string key) { foreach (PropertyInfo pi in this.GetType().GetProperties()) { if (pi.PropertyType == typeof(DataKeyValue)) { DataKeyValue data = (DataKeyValue)pi.GetValue(this, null); if (data.FieldKey.ToLower() == key.ToLower()) { return data; } } } return null; } #endregion #region 向PLC变量中写入值,并不真正下传至PLC /// /// 向PLC变量中写入值,并不真正下传至PLC /// /// /// /// /// /// public bool PlcVarWrite(string equipKey, string runName, int shifting, object dataValue) { BaseAction action = new BaseAction(); StringBuilder log = new StringBuilder(); try { //log.Append("equipKey=[").Append(equipKey).Append("]runName=[").Append(runName); foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Write || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.KeyName == equipKey || (!String.IsNullOrEmpty(data.RunName) && data.RunName == runName)) { try { data.Value = dataValue; return true; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error(ex.Message); return false; } } } } } } //log.Append("]No Find"); return false; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("写入PLC变量值失败:" + ex.Message, ex); return false; } finally { //if (log.Length > "equipKey=[]runName=[]No Find".Length) //{ // action.LogDebug(log.AppendLine("...").ToString()); //} } } /// /// 向PLC变量中写入值,并不真正下传至PLC /// /// /// /// /// public bool PlcVarWriteByDataKey(string equipKey, int shifting, object dataValue) { return PlcVarWrite(equipKey, string.Empty, shifting, dataValue); } /// /// 向PLC变量中写入值,并不真正下传至PLC /// /// /// /// /// public bool PlcVarWriteByDataKey(DataKeyValue dataKey, int shifting, object dataValue) { return PlcVarWriteByDataKey(dataKey.EquipKey, shifting, dataValue); } /// /// 向PLC变量中写入值,并不真正下传至PLC /// /// /// /// public bool PlcVarWriteByDataKey(DataKeyValue dataKey, object dataValue) { return PlcVarWriteByDataKey(dataKey, 0, dataValue); } #endregion #region PlcWrite private bool PlcWrite(string equipKey, string runName, int shifting, object[] dataValue, params bool[] isOutFlag) { BaseAction action = new BaseAction(); StringBuilder log = new StringBuilder(); try { log.Append("equipKey=[").Append(equipKey).Append("]runName=[").Append(runName); foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Write || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { //if (data.KeyName == equipKey || data.RunName == runName) //if (data.KeyName == equipKey) if (data.KeyName == equipKey || (!String.IsNullOrEmpty(data.RunName) && data.RunName == runName)) { int block = 0; if (int.TryParse(group.Block.ToString(), out block)) { log.Append("]shifting=[").Append((group.Start + data.Start + shifting).ToString()); log.Append("]dataLen=[").Append(dataValue.Length); log.Append("]Find Result="); foreach (object v in dataValue) { log.Append(v + ","); } if (equip.Write(block, group.Start + data.Start + shifting, dataValue)) { log.Append("[true]"); return true; } else { log.Append("[false]"); return false; } } } } } } } log.Append("]No Find"); return false; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("下传PLC失败:" + ex.Message, ex); return false; } finally { if (isOutFlag.Length == 0 || isOutFlag[0] == true) { if (log.Length > "equipKey=[]runName=[]No Find".Length) { action.LogDebug(log.AppendLine("...").ToString()); } } } } public bool PlcWriteByRunName(string runName, int shifting, object[] dataValue) { return PlcWrite(string.Empty, runName, shifting, dataValue); } public bool PlcWriteByRunName(string runName, object[] dataValue) { return PlcWriteByRunName(runName, 0, dataValue); } public bool PlcWriteByEquipKey(string equipKey, int shifting, object[] dataValue) { return PlcWrite(equipKey, string.Empty, shifting, dataValue); } public bool PlcWriteByEquipKey(string equipKey, object[] dataValue) { return PlcWriteByEquipKey(equipKey, 0, dataValue); } public bool PlcWriteByDataKey(DataKeyValue dataKey, int shifting, object[] dataValue) { return PlcWriteByEquipKey(dataKey.EquipKey, shifting, dataValue); } public bool PlcWriteByDataKey(DataKeyValue dataKey, object[] dataValue) { return PlcWriteByDataKey(dataKey, 0, dataValue); } //增加是否输出日志 public bool PlcWriteByEquipKey(string equipKey, int shifting, object[] dataValue, bool isOutLog) { return PlcWrite(equipKey, string.Empty, shifting, dataValue, isOutLog); } //增加是否输出日志 public bool PlcWriteByDataKey(DataKeyValue dataKey, int shifting, object[] dataValue, bool isOutLog) { return PlcWriteByEquipKey(dataKey.EquipKey, shifting, dataValue, isOutLog); } //增加是否输出日志 public bool PlcWriteByDataKey(DataKeyValue dataKey, object[] dataValue, bool isOutLog) { return PlcWriteByDataKey(dataKey, 0, dataValue, isOutLog); } #endregion #region 从PLC中读取原始数据的方法 /// /// 从PLC中读取原始数据 /// /// 要读取的设备名称 /// 从PLC读取的值 /// 成功返回true,失败返回false public bool PlcRead(string equipKey, out int[] dataValue) { dataValue = new int[0]; int onelen = 100; int shifting = 0; bool result = false; foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Read || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.KeyName == equipKey) { dataValue = new int[data.Len]; while (true) { #region 本次读取长度 readlen int readlen = 0; if (data.Len - shifting > onelen) { readlen = onelen; } else { readlen = data.Len - shifting; } if (readlen <= 0) { break; } #endregion #region 读取数据 object[] buff; if (equip.Read(group.Block, group.Start + data.Start + shifting, readlen, out buff)) { for (int i = 0; i < buff.Length; i++) { int ivalue = 0; if (buff[i] != null && buff[i] != DBNull.Value && int.TryParse(buff[i].ToString(), out ivalue)) { dataValue[shifting + i] = ivalue; } else { dataValue[shifting + i] = 0; } } shifting += readlen; result = true; } else { break; } if (buff.Length == 0) { break; } #endregion } } } } } } return result; } /// /// 从PLC中读取原始数据 /// /// /// /// public bool PlcRead(DataKeyValue dataKey, out int[] dataValue) { return PlcRead(dataKey.EquipKey, out dataValue); } public object PlcLastValueRead(string equipKey) { foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Read || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.Name == equipKey) { return data.Value; } } } } } return null; } /// /// 读取设备数据 /// /// 设备名称 /// 读取的设备值 /// 读取成功返回true,失败返回false public bool PlcLastValueRead(string equipKey, out int[] dataValue) { dataValue = new int[0]; foreach (Mesnac.Equips.BaseEquip equip in Factory.Instance.AllEquips.Values) { foreach (Mesnac.Equips.BaseInfo.Group group in equip.Group.Values) { if (group.Access == System.IO.FileAccess.Read || group.Access == System.IO.FileAccess.ReadWrite) { foreach (Mesnac.Equips.BaseInfo.Data data in group.Data.Values) { if (data.Name == equipKey) { object ovalue = data.Value; try { if (ovalue is object[]) { object[] ovalues = ovalue as object[]; dataValue = new int[ovalues.Length]; for (int i=0;i /// 获取本地连接 /// /// private DbHelper getLocalHelper() { return new DatabaseAction().NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); } #endregion #region 基本类型 public class DataInfo { public string PlcSchemaField { get; set; } public string EquipRunName { get; set; } public object PlcDataValue { get; set; } } #endregion #region PLCData表写入操作 public bool DataWrite(string dataKey, string equipKey, int shifting, object[] dataValue) { if (string.IsNullOrWhiteSpace(dataKey)) { dataKey = equipKey; } if (string.IsNullOrWhiteSpace(equipKey)) { equipKey = dataKey; } DbHelper dbHelper = getLocalHelper(); dbHelper.CommandType = System.Data.CommandType.Text; dbHelper.ClearParameter(); #region 基于SQL2008语法,不适合SQL2000 //StringBuilder sqlstr = new StringBuilder("INSERT INTO dbo.PlcData (PlcSchemaField ,EquipRunName ,PlcDataValue ,PlcDataIndex,PlcDownState) VALUES "); //for (int i = 0; i < dataValue.Length; i++) //{ // object obj = dataValue[i]; // if (obj == null || obj == DBNull.Value) // { // obj = string.Empty; // } // string key1 = "@PlcSchemaField" + i.ToString(); // string key2 = "@EquipRunName" + i.ToString(); // string key3 = "@PlcDataValue" + i.ToString(); // string key4 = "@PlcDataIndex" + i.ToString(); // sqlstr.Append(" (").Append(key1).Append(",").Append(key2).Append(",").Append(key3).Append(",").Append(key4).Append(",0)"); // if (i < dataValue.Length - 1) // { // sqlstr.AppendLine(","); // } // if (obj is DataInfo) // { // DataInfo data = obj as DataInfo; // dbHelper.AddParameter(key1, string.IsNullOrWhiteSpace(data.PlcSchemaField) ? dataKey : data.PlcSchemaField); // dbHelper.AddParameter(key2, string.IsNullOrWhiteSpace(data.EquipRunName) ? equipKey : data.EquipRunName); // dbHelper.AddParameter(key3, data.PlcDataValue == null ? 0 : data.PlcDataValue); // dbHelper.AddParameter(key4, (shifting + i).ToString()); // } // else // { // dbHelper.AddParameter(key1, dataKey); // dbHelper.AddParameter(key2, equipKey); // dbHelper.AddParameter(key3, obj); // dbHelper.AddParameter(key4, (shifting + i).ToString()); // } //} //插入语句 #endregion #region 支持SQL2000 StringBuilder sqlstr = new StringBuilder("INSERT INTO dbo.PlcData (PlcSchemaField ,EquipRunName ,PlcDataValue ,PlcDataIndex,PlcDownState) "); for (int i = 0; i < dataValue.Length; i++) { object obj = dataValue[i]; if (obj == null || obj == DBNull.Value) { obj = string.Empty; } string key1 = "@PlcSchemaField" + i.ToString(); string key2 = "@EquipRunName" + i.ToString(); string key3 = "@PlcDataValue" + i.ToString(); string key4 = "@PlcDataIndex" + i.ToString(); sqlstr.Append(" (select ").Append(key1).Append(" as PlcSchemaField").Append(",").Append(key2).Append(" as EquipRunName").Append(",").Append(key3).Append(" as PlcDataValue").Append(",").Append(key4).Append(" as PlcDataIndex").Append(",0 as PlcDownState)"); if (i < dataValue.Length - 1) { sqlstr.AppendLine("union all"); } if (obj is DataInfo) { DataInfo data = obj as DataInfo; dbHelper.AddParameter(key1, string.IsNullOrWhiteSpace(data.PlcSchemaField) ? dataKey : data.PlcSchemaField); dbHelper.AddParameter(key2, string.IsNullOrWhiteSpace(data.EquipRunName) ? equipKey : data.EquipRunName); dbHelper.AddParameter(key3, data.PlcDataValue == null ? 0 : data.PlcDataValue); dbHelper.AddParameter(key4, (shifting + i).ToString()); } else { dbHelper.AddParameter(key1, dataKey); dbHelper.AddParameter(key2, equipKey); dbHelper.AddParameter(key3, obj); dbHelper.AddParameter(key4, (shifting + i).ToString()); } } //插入语句 #endregion dbHelper.CommandText = sqlstr.ToString(); dbHelper.ExecuteNonQuery(); return true; } public bool DataWrite(string dataKey, string equipKey, object[] dataValue) { return DataWrite(dataKey, equipKey, 0, dataValue); } public bool DataWrite(string equipKey, object[] dataValue) { return DataWrite(equipKey, equipKey, 0, dataValue); } public bool DataWrite(DataKeyValue dataKey, int shifting, object[] dataValue) { return DataWrite(dataKey.Name, dataKey.EquipRunName, shifting, dataValue); } public bool DataWrite(DataKeyValue dataKey, object[] dataValue) { return DataWrite(dataKey, 0, dataValue); } #endregion #endregion #region 属性 /// /// 计划完成数量 /// public DataKeyValue MixingFinishedCount { get; private set; } /// /// 计划完成数量设定(需配置) /// public DataKeyValue MixingFinishedCountReset { get; private set; } /// /// 胶料称量完成数量 /// public DataKeyValue PloyFinishedCount { get; private set; } /// /// 炭黑称量完成数量 /// public DataKeyValue CarbonFinishedCount { get; private set; } /// /// 粉料称量完成数 /// public DataKeyValue PowderFinishedCount { get; private set; } /// /// 油称量完成数量 /// public DataKeyValue OilFinishedCount { get; private set; } /// /// 油2称量完成数量 /// public DataKeyValue Oil2FinishedCount { get; private set; } /// /// 小料称量完成数量(需配置1)///地址待定 可能是10->99 /// public DataKeyValue XiaoLiaoFinishedCount { get; private set; } /// /// 小料完成数修改(需配置1)///修改完成次数标志 地址待定 /// public DataKeyValue XiaoLiaoCountChange { get; private set; } /// /// 强制输送(需配置1) ///作废 31->254 /// public DataKeyValue CoerceDownload { get; private set; } /// /// 大罐物料(需配置1)///输送下传 输送设置参数 31->250 /// public DataKeyValue BigJarMaterial { get; private set; } /// /// 当前密炼时间 /// public DataKeyValue CurrentMixingTime { get; private set; } /// /// 当前密炼温度 /// public DataKeyValue CurrentMixingTemp { get; private set; } /// /// 当前密炼功率 /// public DataKeyValue CurrentMixingPower { get; private set; } /// /// 当前密炼能量 /// public DataKeyValue CurrentMixingEnergy { get; private set; } /// /// 当前密炼压力 /// public DataKeyValue CurrentMixingPressureRam { get; private set; } /// /// 当前密炼转子转速 /// public DataKeyValue CurrentMixingSpeedRotor { get; private set; } /// /// 当前密炼上顶栓位置(需配置1) ///已经不用了 /// public DataKeyValue CurrentMixingHoopPerstion { get; private set; } /// /// 当前密炼电流 /// public DataKeyValue CurrentMixerCurrent { get; private set; } /// /// 密炼机本控 /// public DataKeyValue MixerAuto { get; private set; } /// /// 密炼机故障 /// public DataKeyValue MixerNormal { get; private set; } /// /// 炭黑称故障 /// public DataKeyValue CarbonNormal { get; private set; } /// /// 炭黑称自动手动 /// public DataKeyValue CarbonAuto { get; private set; } /// /// 油称故障 /// public DataKeyValue OilNormal { get; private set; } /// /// 油称自动手动 /// public DataKeyValue OilAuto { get; private set; } /// /// 粉料秤故障 /// public DataKeyValue FenLiaoNormal { get; private set; } /// /// 粉料秤自动手动 /// public DataKeyValue FenLiaoAuto { get; private set; } /// /// 密炼设定次数 /// public DataKeyValue RecipeSetNumber { get; private set; } /// /// 计划停止 /// public DataKeyValue StopPlan { get; private set; } /// /// 称量设定次数 /// public DataKeyValue WeightSetNumber { get; private set; } /// /// 开始密炼 /// public DataKeyValue StartMix { get; private set; } /// /// 开始称量 /// public DataKeyValue StartWeight { get; private set; } /// /// 终止密炼 /// public DataKeyValue AbortMixing { get; private set; } /// /// 终止称量 /// public DataKeyValue AbortWeight { get; private set; } /// /// 密炼机有料 100->110 /// public DataKeyValue HasMaterial { get; private set; } /// /// 系统复位 /// public DataKeyValue SysReset { get; private set; } /// /// 下位机报表处理标志、存盘标志、完成一车复位 /// public DataKeyValue FinishedBatch { get; private set; } /// /// 完成一车复位 等同 FinishedBatch /// //public DataKeyValue FinishedOneReset { get; private set; } /// /// 密炼开始时间 /// public DataKeyValue MixingStartTime { get; private set; } /// /// 胶料称允许送料标志(用于锁秤判断) /// public DataKeyValue RubSL { get; private set; } /// /// 胶料秤传送控制(胶料称送料标志的下一个地址字),用于胶料称解锁 /// public DataKeyValue RubShusong { get; private set; } /// /// 每车基本信息存盘 /// public DataKeyValue SaveDataPerLot { get; private set; } /// /// 称量物料参数-炭黑-慢称 /// public DataKeyValue CLWLCS_TanHei_MC { get; private set; } /// /// 称量物料参数-炭黑-提前量 /// public DataKeyValue CLWLCS_TanHei_TQ { get; private set; } /// /// 称量物料参数-炭黑-调整值 /// public DataKeyValue CLWLCS_TanHei_TZ { get; private set; } /// /// 称量物料参数-炭黑-点动值 /// public DataKeyValue CLWLCS_TanHei_DD { get; private set; } /// /// 称量物料参数-炭黑-高速称量速率 /// public DataKeyValue CLWLCS_TanHei_HS { get; private set; } /// /// 称量物料参数-炭黑-慢速称量速率 /// public DataKeyValue CLWLCS_TanHei_LS { get; private set; } /// /// 称量物料参数-油1-慢称 /// public DataKeyValue CLWLCS_You_MC1 { get; private set; } /// /// 称量物料参数-油1-提前量 /// public DataKeyValue CLWLCS_You_TQ1 { get; private set; } /// /// 称量物料参数-油1-调整值 /// public DataKeyValue CLWLCS_You_TZ1 { get; private set; } /// /// 称量物料参数-油1-点动值 /// public DataKeyValue CLWLCS_You_DD1 { get; private set; } /// /// 称量物料参数-油2-慢称 /// public DataKeyValue CLWLCS_You_MC2 { get; private set; } /// /// 称量物料参数-油2-提前量 /// public DataKeyValue CLWLCS_You_TQ2 { get; private set; } /// /// 称量物料参数-油2-调整值 /// public DataKeyValue CLWLCS_You_TZ2 { get; private set; } /// /// 称量物料参数-油2-点动值 /// public DataKeyValue CLWLCS_You_DD2 { get; private set; } /// /// 称量物料参数-粉料-慢称(需配置1)///未用 /// public DataKeyValue CLWLCS_FenLiao_MC { get; private set; } /// /// 称量物料参数-粉料-提前量(需配置1)///未用 /// public DataKeyValue CLWLCS_FenLiao_TQ { get; private set; } /// /// 称量物料参数-粉料-调整值(需配置1)///未用 /// public DataKeyValue CLWLCS_FenLiao_TZ { get; private set; } /// /// 称量物料参数-粉料-点动值(需配置1)///未用 /// public DataKeyValue CLWLCS_FenLiao_DD { get; private set; } /// /// 称量物料参数-粉料-高速称量速率(需配置1)///未用 /// public DataKeyValue CLWLCS_FeiLiao_HS { get; private set; } /// /// 称量物料参数-粉料-慢速称量速率(需配置1)///未用 /// public DataKeyValue CLWLCS_FeiLiao_LS { get; private set; } /// /// 系统报警1 /// public DataKeyValue AlarmData1 { get; private set; } /// /// 系统报警2 /// public DataKeyValue AlarmData2 { get; private set; } /// /// 系统报警3 /// public DataKeyValue AlarmData3 { get; private set; } /// /// 系统报警4 /// public DataKeyValue AlarmData4 { get; private set; } /// /// 胶料秤、手动互转,1:手动>>自动;0:自动>>手动 /// public DataKeyValue PloyAuto { get; private set; } public DataKeyValue SaveDataCB { get; private set; } public DataKeyValue SaveMixingData { get; private set; } #endregion #region 修改完成数的相关属性 /// /// 修改胶料完成次数 /// public DataKeyValue ModifyPloyDoneNum { get; private set; } /// /// 修改小料完成次数 /// public DataKeyValue ModifyDrugDoneNum { get; private set; } /// /// 修改炭黑完成次数 /// public DataKeyValue ModifyCBDoneNum { get; private set; } /// /// 修改油1完成次数 /// public DataKeyValue ModifyOil1DoneNum { get; private set; } /// /// 修改油2完成次数 /// public DataKeyValue ModifyOil2DoneNum { get; private set; } /// /// 修改粉料完成次数 /// public DataKeyValue ModifyPowderDoneNum { get; private set; } /// /// 修改密炼完成次数 /// public DataKeyValue ModifyMixDoneNum { get; private set; } /// /// 修改密炼完成次数标志 /// public DataKeyValue ModifyMixDoneNumFlag { get; private set; } #endregion #region 胶料称称量画面和混炼画面用到的属性 /// /// 胶料称量画面-配方名称(需配置) /// public DataKeyValue JLCLHM_RecipMixingName { get; set; } /// /// 胶料称量画面-小料列表 /// public DataKeyValue JLCLHM_SmallMaterialList { get; set; } /// /// 胶料称量画面-条码物料列表 /// public DataKeyValue JLCLHM_BarcodeMaterialList { get; set; } /// /// 胶料列表 /// public DataKeyValue JLCLHM_plyList { get; set; } /// /// 网络状态(需配置) /// public DataKeyValue JLCLHM_netType { get; set; } /// /// 称量信息列表 /// public DataKeyValue RecipeCache_WeightListTable { get; set; } /// /// 控件报警信息 /// public DataKeyValue ContorlAlarmInfo { get; set; } /// /// 条码扫描报警信息 /// public DataKeyValue ScanBarcodeAlarmInfo { get; set; } #endregion #region 循环配方所有数据 public DataKeyValue AllRecipeData23 { get; private set; } public DataKeyValue AllRecipeData24 { get; private set; } #endregion } }