|
|
@@ -1223,6 +1223,8 @@ namespace TeamAAS_VP.Core
|
|
|
string[] wo = new string[10];
|
|
|
string[] model_num = new string[10];//产品model_num
|
|
|
string[] color = new string[10];//产品color
|
|
|
+ string[] ppid = new string[10];//产品ppid
|
|
|
+ string[] revision = new string[10];//产品revision
|
|
|
/// <summary>
|
|
|
/// 复检结果
|
|
|
/// </summary>
|
|
|
@@ -2579,8 +2581,7 @@ namespace TeamAAS_VP.Core
|
|
|
//询问mes
|
|
|
if (state == 1)
|
|
|
{
|
|
|
- // 这里缺少从MES获取产品配方的内容,需要补充
|
|
|
-
|
|
|
+ //获取过站时间
|
|
|
_LastMesCheckTime[i] = (await _mesService.GetServerTimeAsync(i, code, 2)).Now;
|
|
|
|
|
|
//获取当前工位的配置
|
|
|
@@ -2642,6 +2643,18 @@ namespace TeamAAS_VP.Core
|
|
|
color[i] = colorItem.Replace("color=", "").Trim();
|
|
|
SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
|
|
|
}
|
|
|
+ string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
|
|
|
+ if (ppidItem != null)
|
|
|
+ {
|
|
|
+ ppid[i] = ppidItem.Replace("ppid=", "").Trim();
|
|
|
+ SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ string revisionItem = item.FirstOrDefault(f => f.Contains("revision="));
|
|
|
+ if (revisionItem != null)
|
|
|
+ {
|
|
|
+ revision[i] = revisionItem.Replace("revision=", "").Trim();
|
|
|
+ SendTaskMessage($"revision:{revision[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
|
|
|
//切换产品
|
|
|
if (i == 0)//i=0时才会切换产品
|
|
|
@@ -2735,6 +2748,18 @@ namespace TeamAAS_VP.Core
|
|
|
color[i] = colorItem.Replace("color=", "").Trim();
|
|
|
SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
|
|
|
}
|
|
|
+ string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
|
|
|
+ if (ppidItem != null)
|
|
|
+ {
|
|
|
+ ppid[i] = ppidItem.Replace("ppid=", "").Trim();
|
|
|
+ SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ string revisionItem = item.FirstOrDefault(f => f.Contains("revision="));
|
|
|
+ if (revisionItem != null)
|
|
|
+ {
|
|
|
+ revision[i] = revisionItem.Replace("revision=", "").Trim();
|
|
|
+ SendTaskMessage($"revision:{revision[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
|
|
|
LogHelper.WriteLogMes($"询问mes成功");
|
|
|
SendTaskMessage($"询问mes成功:{response}", MessageLevel.Debug);
|
|
|
@@ -2799,7 +2824,7 @@ namespace TeamAAS_VP.Core
|
|
|
// 上传本站数据
|
|
|
else if (state == 2)
|
|
|
{
|
|
|
- DFC.Clear();
|
|
|
+ DFC.Clear();//CTQ数据集合
|
|
|
|
|
|
//获取当前工位的配置
|
|
|
var stationConfig = _configService.GetDeviceInfo(i);
|
|
|
@@ -2822,6 +2847,7 @@ namespace TeamAAS_VP.Core
|
|
|
Int16 resultIndex = plc.ReadNode<Int16>(string.Format(addressConfig.In_Result.Address, i));
|
|
|
resultIndex = 1;
|
|
|
|
|
|
+ #region 组装结果显示列表信息
|
|
|
AssemblyRecord assemblyRecord = new AssemblyRecord();
|
|
|
assemblyRecord.ProductSN = code;
|
|
|
assemblyRecord.RecipeName = currentProduct.Name;
|
|
|
@@ -2865,14 +2891,13 @@ namespace TeamAAS_VP.Core
|
|
|
_eventAggregator.GetEvent<AssemblyFinishNotification>().Publish(assemblyRecord);
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
await _systemDatabaseService.RecordAssemblyAsync(assemblyRecord);
|
|
|
+ #endregion
|
|
|
|
|
|
LogHelper.WriteLogMes($"【mes开始ADD】");
|
|
|
SendTaskMessage($"mes开始ADD", MessageLevel.Info);
|
|
|
|
|
|
Dictionary<string, string> data = new Dictionary<string, string>();
|
|
|
-
|
|
|
string press = ""; string presstime = ""; string assypress = "";
|
|
|
if (i == 0)
|
|
|
{
|
|
|
@@ -2896,7 +2921,7 @@ namespace TeamAAS_VP.Core
|
|
|
data = gapDict.Copy();
|
|
|
data.Add("AssyPressure1", assypress);
|
|
|
SendTaskMessage($"Gap1:{gapDict["Gap1"]},Gap2:{gapDict["Gap2"]},Gap3:{gapDict["Gap3"]},Gap4:{gapDict["Gap4"]},组装压力:{assypress}", MessageLevel.Info);
|
|
|
- #region 数据
|
|
|
+ #region CSV数据
|
|
|
bool assyPresRes;
|
|
|
if (currentPressure[0] >= currentProduct.GlobalParamEx.AssemblyPressure.PressureDownLimit && currentPressure[0] <= currentProduct.GlobalParamEx.AssemblyPressure.PressureUpLimit)
|
|
|
{
|
|
|
@@ -2905,31 +2930,36 @@ namespace TeamAAS_VP.Core
|
|
|
else assyPresRes = false;
|
|
|
DFC.Clear();
|
|
|
|
|
|
+ string upLimitValue = "", downLimitValue = "", midValue = "", saveppid = "";
|
|
|
+ if (stationConfig.SaveCsvPPID) saveppid = ppid[i];
|
|
|
foreach (var item in gapDict)
|
|
|
{
|
|
|
- string upLimitValue = "", downLimitValue = "";
|
|
|
switch (item.Key)
|
|
|
{
|
|
|
case "Gap1":
|
|
|
upLimitValue = currentProduct.GlobalParamEx.Gap1UpLimit.ToString("F3");
|
|
|
downLimitValue = currentProduct.GlobalParamEx.Gap1DownLimit.ToString("F3");
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.Gap1UpLimit + currentProduct.GlobalParamEx.Gap1DownLimit) / 2).ToString("F3");
|
|
|
break;
|
|
|
case "Gap2":
|
|
|
upLimitValue = currentProduct.GlobalParamEx.Gap2UpLimit.ToString("F3");
|
|
|
downLimitValue = currentProduct.GlobalParamEx.Gap2DownLimit.ToString("F3");
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.Gap2UpLimit + currentProduct.GlobalParamEx.Gap2DownLimit) / 2).ToString("F3");
|
|
|
break;
|
|
|
case "Gap3":
|
|
|
upLimitValue = currentProduct.GlobalParamEx.Gap3UpLimit.ToString("F3");
|
|
|
downLimitValue = currentProduct.GlobalParamEx.Gap3DownLimit.ToString("F3");
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.Gap3UpLimit + currentProduct.GlobalParamEx.Gap3DownLimit) / 2).ToString("F3");
|
|
|
break;
|
|
|
case "Gap4":
|
|
|
upLimitValue = currentProduct.GlobalParamEx.Gap4UpLimit.ToString("F3");
|
|
|
downLimitValue = currentProduct.GlobalParamEx.Gap4DownLimit.ToString("F3");
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.Gap4UpLimit + currentProduct.GlobalParamEx.Gap4DownLimit) / 2).ToString("F3");
|
|
|
break;
|
|
|
}
|
|
|
DFC.Add(new DataFormCtq
|
|
|
{
|
|
|
- PPID = ProductMainSN[i],
|
|
|
+ PPID = saveppid,
|
|
|
PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
CTQ_NAME = item.Key,
|
|
|
@@ -2946,13 +2976,19 @@ namespace TeamAAS_VP.Core
|
|
|
PROCESS_OUTCOME = "Pass",
|
|
|
PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
CTQ_UNIT_OF_MEASURE = "mm",
|
|
|
- ERROR_MESSAGE = ""
|
|
|
+ ERROR_MESSAGE = "",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.AssemblyPressure.PressureDownLimit + currentProduct.GlobalParamEx.AssemblyPressure.PressureUpLimit) / 2).ToString("F3");
|
|
|
DFC.Add(new DataFormCtq
|
|
|
{
|
|
|
- PPID = ProductMainSN[i],
|
|
|
+ PPID = saveppid,
|
|
|
PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
CTQ_NAME = "Assy_Pressure",
|
|
|
@@ -2969,7 +3005,12 @@ namespace TeamAAS_VP.Core
|
|
|
PROCESS_OUTCOME = assyPresRes ? "Pass" : "Fail",
|
|
|
PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
CTQ_UNIT_OF_MEASURE = "kg",
|
|
|
- ERROR_MESSAGE = assyPresRes ? "" : "Assy_Pressure OOS"
|
|
|
+ ERROR_MESSAGE = assyPresRes ? "" : "Assy_Pressure OOS",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
});
|
|
|
#endregion
|
|
|
}
|
|
|
@@ -2996,7 +3037,7 @@ namespace TeamAAS_VP.Core
|
|
|
data.Add("Pressure1", press);
|
|
|
data.Add("PressureTime1", presstime);
|
|
|
SendTaskMessage($"保压压力:{press},保压时间:{presstime}", MessageLevel.Info);
|
|
|
- #region 数据
|
|
|
+ #region CSV数据
|
|
|
bool presRes;
|
|
|
if (currentPressure[1] >= currentProduct.GlobalParamEx.DownPressure.PressureDownLimit && currentPressure[1] <= currentProduct.GlobalParamEx.DownPressure.PressureUpLimit)
|
|
|
{
|
|
|
@@ -3004,9 +3045,12 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
else presRes = false;
|
|
|
DFC.Clear();
|
|
|
+ string midValue = "", saveppid = "";
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureDownLimit + currentProduct.GlobalParamEx.DownPressure.PressureUpLimit) / 2).ToString("F3");
|
|
|
+ if (stationConfig.SaveCsvPPID) saveppid = ppid[i];
|
|
|
DFC.Add(new DataFormCtq
|
|
|
{
|
|
|
- PPID = ProductMainSN[i],
|
|
|
+ PPID = saveppid,
|
|
|
PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
CTQ_NAME = "Pressure",
|
|
|
@@ -3023,11 +3067,17 @@ namespace TeamAAS_VP.Core
|
|
|
PROCESS_OUTCOME = presRes ? "Pass" : "Fail",
|
|
|
PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
CTQ_UNIT_OF_MEASURE = "kg",
|
|
|
- ERROR_MESSAGE = presRes ? "" : "Assy_Pressure OOS"
|
|
|
+ ERROR_MESSAGE = presRes ? "" : "Pressure OOS",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = "",
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
});
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureTime + currentProduct.GlobalParamEx.DownPressure.PressureTime) / 2).ToString("F3");
|
|
|
DFC.Add(new DataFormCtq
|
|
|
{
|
|
|
- PPID = ProductMainSN[i],
|
|
|
+ PPID = saveppid,
|
|
|
PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
CTQ_NAME = "Pressure_time",
|
|
|
@@ -3044,7 +3094,12 @@ namespace TeamAAS_VP.Core
|
|
|
PROCESS_OUTCOME = "Pass",
|
|
|
PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
CTQ_UNIT_OF_MEASURE = "s",
|
|
|
- ERROR_MESSAGE = ""
|
|
|
+ ERROR_MESSAGE = "",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = "",
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
});
|
|
|
#endregion
|
|
|
}
|
|
|
@@ -3517,7 +3572,7 @@ namespace TeamAAS_VP.Core
|
|
|
if (!File.Exists(fullPath))
|
|
|
{
|
|
|
sb.Append("PPID,PROCESS_NAME,PROCESS_START_TIME,CTQ_NAME,CTQ_VALUE,CTQ_LSL,CTQ_USL,PROCESS_END_TIME,SUPPLIER_NAME,COMMODITY_TYPE,REVISION,WO#,MFG_LOT#," +
|
|
|
- "MFG_ASSY_LINE,PROCESS_OUTCOME,PROCESS_MACHINE_ID,CTQ_UNIT_OF_MEASURE,ERROR_MESSAGE");
|
|
|
+ "MFG_ASSY_LINE,PROCESS_OUTCOME,PROCESS_MACHINE_ID,CTQ_UNIT_OF_MEASURE,ERROR_MESSAGE,PD_ATTR_01,PD_ATTR_02,PD_ATTR_03,PD_ATTR_04,PD_ATTR_05");
|
|
|
sb.AppendLine();
|
|
|
}
|
|
|
if (dfcs == null || dfcs.Count() == 0)
|
|
|
@@ -3526,7 +3581,7 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
foreach (var dfc in dfcs)
|
|
|
{
|
|
|
- sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE}");
|
|
|
+ sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE},{dfc.PD_ATTR_01},{dfc.PD_ATTR_02},{dfc.PD_ATTR_03},{dfc.PD_ATTR_04},{dfc.PD_ATTR_05}");
|
|
|
sb.AppendLine();
|
|
|
}
|
|
|
// 使用 StreamWriter 以追加模式打开文件
|