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.Intake.Qingquan.BasicInfo
{
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.RunName.Equals(this.FieldKey, StringComparison.CurrentCultureIgnoreCase))
{
this.EquipKey = data.KeyName;
this.EquipRunName = data.RunName;
this.EquipData = data;
}
}
}
}
}
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 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 PlcWrite
private bool PlcWrite(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 || 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 (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);
}
#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 < ovalues.Length; i++)
{
object obj = ovalues[i];
int ivalue = 0;
if (obj != null && obj != DBNull.Value && int.TryParse(obj.ToString(), out ivalue))
{
dataValue[i] = ivalue;
}
}
return true;
}
else if (ovalue != null && ovalue != DBNull.Value)
{
dataValue = new int[1];
int ivalue = 0;
if (int.TryParse(ovalue.ToString(), out ivalue))
{
dataValue[0] = ivalue;
}
return true;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取PLC设备[" + equipKey + "]数据失败:" + ex.Message, ex);
}
return false;
}
}
}
}
}
return false;
}
#endregion
#region DataWrite
#region 基本函数
///
/// 获取本地连接
///
///
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 1#罐组实时属性
///
/// 自动
///
public DataKeyValue G1_Automatic { get; private set; }
///
/// 手动
///
public DataKeyValue G1_Manual { get; private set; }
///
/// 输送
///
public DataKeyValue G1_Conveying { get; private set; }
///
/// 清扫
///
public DataKeyValue G1_Purging { get; private set; }
///
/// 故障
///
public DataKeyValue G1_Fault { get; private set; }
///
/// 等待确认
///
public DataKeyValue G1_Acknoledge { get; private set; }
///
/// 罐开始标志
///
public DataKeyValue G1_StartFlag { get; private set; }
///
/// 存盘准备好
///
public DataKeyValue G1_SaveFlag { get; private set; }
///
/// 压送罐压力
///
public DataKeyValue G1_TopAir { get; private set; }
///
/// 压送罐出口压力
///
public DataKeyValue G1_ConveyAir { get; private set; }
///
/// 管路压力1
///
public DataKeyValue G1_Bypass1 { get; private set; }
///
/// 管路压力2
///
public DataKeyValue G1_Bypass2 { get; private set; }
///
/// 管路压力3
///
public DataKeyValue G1_Bypass3 { get; private set; }
///
/// 管路压力4
///
public DataKeyValue G1_Bypass4 { get; private set; }
///
/// 管路压力5
///
public DataKeyValue G1_Bypass5 { get; private set; }
///
/// 管路压力6
///
public DataKeyValue G1_Bypass6 { get; private set; }
///
/// 管路压力7
///
public DataKeyValue G1_Bypass7 { get; private set; }
///
/// 管路压力8
///
public DataKeyValue G1_Bypass8 { get; private set; }
///
/// 管路压力9
///
public DataKeyValue G1_Bypass9 { get; private set; }
///
/// 管路压力10
///
public DataKeyValue G1_Bypass10 { get; private set; }
#endregion
#region 2#罐组实时属性
///
/// 自动
///
public DataKeyValue G2_Automatic { get; private set; }
///
/// 手动
///
public DataKeyValue G2_Manual { get; private set; }
///
/// 输送
///
public DataKeyValue G2_Conveying { get; private set; }
///
/// 清扫
///
public DataKeyValue G2_Purging { get; private set; }
///
/// 故障
///
public DataKeyValue G2_Fault { get; private set; }
///
/// 等待确认
///
public DataKeyValue G2_Acknoledge { get; private set; }
///
/// 罐开始标志
///
public DataKeyValue G2_StartFlag { get; private set; }
///
/// 存盘准备好
///
public DataKeyValue G2_SaveFlag { get; private set; }
///
/// 压送罐压力
///
public DataKeyValue G2_TopAir { get; private set; }
///
/// 压送罐出口压力
///
public DataKeyValue G2_ConveyAir { get; private set; }
///
/// 管路压力1
///
public DataKeyValue G2_Bypass1 { get; private set; }
///
/// 管路压力2
///
public DataKeyValue G2_Bypass2 { get; private set; }
///
/// 管路压力3
///
public DataKeyValue G2_Bypass3 { get; private set; }
///
/// 管路压力4
///
public DataKeyValue G2_Bypass4 { get; private set; }
///
/// 管路压力5
///
public DataKeyValue G2_Bypass5 { get; private set; }
///
/// 管路压力6
///
public DataKeyValue G2_Bypass6 { get; private set; }
///
/// 管路压力7
///
public DataKeyValue G2_Bypass7 { get; private set; }
///
/// 管路压力8
///
public DataKeyValue G2_Bypass8 { get; private set; }
///
/// 管路压力9
///
public DataKeyValue G2_Bypass9 { get; private set; }
///
/// 管路压力10
///
public DataKeyValue G2_Bypass10 { get; private set; }
#endregion
#region 3#罐组实时属性
///
/// 自动
///
public DataKeyValue G3_Automatic { get; private set; }
///
/// 手动
///
public DataKeyValue G3_Manual { get; private set; }
///
/// 输送
///
public DataKeyValue G3_Conveying { get; private set; }
///
/// 清扫
///
public DataKeyValue G3_Purging { get; private set; }
///
/// 故障
///
public DataKeyValue G3_Fault { get; private set; }
///
/// 等待确认
///
public DataKeyValue G3_Acknoledge { get; private set; }
///
/// 罐开始标志
///
public DataKeyValue G3_StartFlag { get; private set; }
///
/// 存盘准备好
///
public DataKeyValue G3_SaveFlag { get; private set; }
///
/// 压送罐压力
///
public DataKeyValue G3_TopAir { get; private set; }
///
/// 压送罐出口压力
///
public DataKeyValue G3_ConveyAir { get; private set; }
///
/// 管路压力1
///
public DataKeyValue G3_Bypass1 { get; private set; }
///
/// 管路压力2
///
public DataKeyValue G3_Bypass2 { get; private set; }
///
/// 管路压力3
///
public DataKeyValue G3_Bypass3 { get; private set; }
///
/// 管路压力4
///
public DataKeyValue G3_Bypass4 { get; private set; }
///
/// 管路压力5
///
public DataKeyValue G3_Bypass5 { get; private set; }
///
/// 管路压力6
///
public DataKeyValue G3_Bypass6 { get; private set; }
///
/// 管路压力7
///
public DataKeyValue G3_Bypass7 { get; private set; }
///
/// 管路压力8
///
public DataKeyValue G3_Bypass8 { get; private set; }
///
/// 管路压力9
///
public DataKeyValue G3_Bypass9 { get; private set; }
///
/// 管路压力10
///
public DataKeyValue G3_Bypass10 { get; private set; }
#endregion
#region 4#罐组实时属性
///
/// 自动
///
public DataKeyValue G4_Automatic { get; private set; }
///
/// 手动
///
public DataKeyValue G4_Manual { get; private set; }
///
/// 输送
///
public DataKeyValue G4_Conveying { get; private set; }
///
/// 清扫
///
public DataKeyValue G4_Purging { get; private set; }
///
/// 故障
///
public DataKeyValue G4_Fault { get; private set; }
///
/// 等待确认
///
public DataKeyValue G4_Acknoledge { get; private set; }
///
/// 罐开始标志
///
public DataKeyValue G4_StartFlag { get; private set; }
///
/// 存盘准备好
///
public DataKeyValue G4_SaveFlag { get; private set; }
///
/// 压送罐压力
///
public DataKeyValue G4_TopAir { get; private set; }
///
/// 压送罐出口压力
///
public DataKeyValue G4_ConveyAir { get; private set; }
///
/// 管路压力1
///
public DataKeyValue G4_Bypass1 { get; private set; }
///
/// 管路压力2
///
public DataKeyValue G4_Bypass2 { get; private set; }
///
/// 管路压力3
///
public DataKeyValue G4_Bypass3 { get; private set; }
///
/// 管路压力4
///
public DataKeyValue G4_Bypass4 { get; private set; }
///
/// 管路压力5
///
public DataKeyValue G4_Bypass5 { get; private set; }
///
/// 管路压力6
///
public DataKeyValue G4_Bypass6 { get; private set; }
///
/// 管路压力7
///
public DataKeyValue G4_Bypass7 { get; private set; }
///
/// 管路压力8
///
public DataKeyValue G4_Bypass8 { get; private set; }
///
/// 管路压力9
///
public DataKeyValue G4_Bypass9 { get; private set; }
///
/// 管路压力10
///
public DataKeyValue G4_Bypass10 { get; private set; }
#endregion
#region 1#罐组存盘报表属性
///
/// G1_总时间
///
public DataKeyValue G1_TotalTime { get; private set; }
///
/// G1_加料时间
///
public DataKeyValue G1_ChargeTime { get; private set; }
///
/// G1_憋压时间
///
public DataKeyValue G1_AirationTime { get; private set; }
///
/// G1_压送时间
///
public DataKeyValue G1_DischargeTime { get; private set; }
///
/// G1_清扫时间
///
public DataKeyValue G1_PurgeTime { get; private set; }
///
/// G1_目标罐号
///
public DataKeyValue G1_DestNo { get; private set; }
///
/// G1_目标罐类型
///
public DataKeyValue G1_DestBinType { get; private set; }
///
/// G1_源罐号
///
public DataKeyValue G1_SourceBinNo { get; private set; }
///
/// G1_源罐类型
///
public DataKeyValue G1_SourceBinType { get; private set; }
///
/// G1_目标机台
///
public DataKeyValue G1_DestMixer { get; private set; }
///
/// G1_预留1
///
public DataKeyValue G1_Spare1 { get; private set; }
///
/// G1_预留2
///
public DataKeyValue G1_Spare2 { get; private set; }
#endregion
#region 2#罐组存盘报表属性
///
/// G2_总时间
///
public DataKeyValue G2_TotalTime { get; private set; }
///
/// G2_加料时间
///
public DataKeyValue G2_ChargeTime { get; private set; }
///
/// G2_憋压时间
///
public DataKeyValue G2_AirationTime { get; private set; }
///
/// G2_压送时间
///
public DataKeyValue G2_DischargeTime { get; private set; }
///
/// G2_清扫时间
///
public DataKeyValue G2_PurgeTime { get; private set; }
///
/// G2_目标罐号
///
public DataKeyValue G2_DestNo { get; private set; }
///
/// G2_目标罐类型
///
public DataKeyValue G2_DestBinType { get; private set; }
///
/// G2_源罐号
///
public DataKeyValue G2_SourceBinNo { get; private set; }
///
/// G2_源罐类型
///
public DataKeyValue G2_SourceBinType { get; private set; }
///
/// G2_目标机台
///
public DataKeyValue G2_DestMixer { get; private set; }
///
/// G2_预留1
///
public DataKeyValue G2_Spare1 { get; private set; }
///
/// G2_预留2
///
public DataKeyValue G2_Spare2 { get; private set; }
#endregion
#region 3#罐组存盘报表属性
///
/// G3_总时间
///
public DataKeyValue G3_TotalTime { get; private set; }
///
/// G3_加料时间
///
public DataKeyValue G3_ChargeTime { get; private set; }
///
/// G3_憋压时间
///
public DataKeyValue G3_AirationTime { get; private set; }
///
/// G3_压送时间
///
public DataKeyValue G3_DischargeTime { get; private set; }
///
/// G3_清扫时间
///
public DataKeyValue G3_PurgeTime { get; private set; }
///
/// G3_目标罐号
///
public DataKeyValue G3_DestNo { get; private set; }
///
/// G3_目标罐类型
///
public DataKeyValue G3_DestBinType { get; private set; }
///
/// G3_源罐号
///
public DataKeyValue G3_SourceBinNo { get; private set; }
///
/// G3_源罐类型
///
public DataKeyValue G3_SourceBinType { get; private set; }
///
/// G3_目标机台
///
public DataKeyValue G3_DestMixer { get; private set; }
///
/// G3_预留1
///
public DataKeyValue G3_Spare1 { get; private set; }
///
/// G3_预留2
///
public DataKeyValue G3_Spare2 { get; private set; }
#endregion
#region 4#罐组存盘报表属性
///
/// G4_总时间
///
public DataKeyValue G4_TotalTime { get; private set; }
///
/// G4_加料时间
///
public DataKeyValue G4_ChargeTime { get; private set; }
///
/// G4_憋压时间
///
public DataKeyValue G4_AirationTime { get; private set; }
///
/// G4_压送时间
///
public DataKeyValue G4_DischargeTime { get; private set; }
///
/// G4_清扫时间
///
public DataKeyValue G4_PurgeTime { get; private set; }
///
/// G4_目标罐号
///
public DataKeyValue G4_DestNo { get; private set; }
///
/// G4_目标罐类型
///
public DataKeyValue G4_DestBinType { get; private set; }
///
/// G4_源罐号
///
public DataKeyValue G4_SourceBinNo { get; private set; }
///
/// G4_源罐类型
///
public DataKeyValue G4_SourceBinType { get; private set; }
///
/// G4_目标机台
///
public DataKeyValue G4_DestMixer { get; private set; }
///
/// G4_预留1
///
public DataKeyValue G4_Spare1 { get; private set; }
///
/// G4_预留2
///
public DataKeyValue G4_Spare2 { get; private set; }
#endregion
}
}