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
}
}