增加线性工件校准 增加信号变化日志记录
This commit is contained in:
@@ -39,6 +39,12 @@ namespace MesWork
|
||||
tagValue = msgEvent.TagValue.ToString();
|
||||
break;
|
||||
}
|
||||
// ── 监控变量变化记录(首次值除外,不影响主流程)──
|
||||
if (!ValueT(isFirstValue))
|
||||
{
|
||||
var signalName = string.IsNullOrWhiteSpace(alarmMsg) ? tagID : alarmMsg;
|
||||
SaveSignalChangeLog(opName, tagTypeCodeID, signalName, tagValue);
|
||||
}
|
||||
// ── 报警处理(编码900~2000)──
|
||||
if (tagTypeCodeID >= 900 & tagTypeCodeID < 2000)
|
||||
{
|
||||
@@ -61,7 +67,8 @@ namespace MesWork
|
||||
switch (tagTypeCodeID)
|
||||
{
|
||||
case 2: // 工件到位/离开
|
||||
WritePLC_IF(112, opName, 0); // 报警代码清空
|
||||
// WritePLC_IF(112, opName, 0); // 报警代码清空
|
||||
ClearStationDisplay(opName);
|
||||
break;
|
||||
case 14: // PLC心跳 → 回写PC心跳
|
||||
WritePLC_IF(15, opName, tagValue);
|
||||
@@ -108,6 +115,22 @@ namespace MesWork
|
||||
WeighingPage?.AppendLog(errMsg);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 记录监控变量变化,异常不影响PLC主流程。
|
||||
/// </summary>
|
||||
private void SaveSignalChangeLog(string opName, int tagTypeCodeID, string signalName, string tagValue)
|
||||
{
|
||||
try
|
||||
{
|
||||
B_DB_Opera.Event_Signal_Log(opName, tagTypeCodeID, signalName, tagValue);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// 变化记录失败不干涉PLC信号主流程
|
||||
}
|
||||
}
|
||||
|
||||
// ====================================================================
|
||||
// 称重交互核心方法
|
||||
// ====================================================================
|
||||
@@ -123,6 +146,35 @@ namespace MesWork
|
||||
// Hanging模式
|
||||
return opName == "OP10" ? "放油前" : "放油后";
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 清除工位显示信息(工件离开时调用)
|
||||
/// </summary>
|
||||
private void ClearStationDisplay(string opName)
|
||||
{
|
||||
try
|
||||
{
|
||||
int stIdx = WeighingPage?.GetStationIndex(opName) ?? 1;
|
||||
|
||||
// 清除工件信息
|
||||
WeighingPage?.UpdateStationInfo(stIdx, "", "", "");
|
||||
|
||||
// 清除油量参数信息
|
||||
WeighingPage?.UpdateOilInfo(stIdx, 0, 0, 0, 0, 0);
|
||||
|
||||
// 清除结果信息
|
||||
WeighingPage?.UpdateOilResult(stIdx, 0, 0);
|
||||
WeighingPage?.ClearSaveResult(stIdx);
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
WeighingPage?.AppendLog($"[{opName}] 清除显示异常:{err.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 码块数据转换:将产品编号统一转大写,并拆分出订货号与产品编号
|
||||
/// 支持格式:
|
||||
@@ -192,7 +244,7 @@ namespace MesWork
|
||||
if (!B_DB_Opera.QueryWorkpieceByOrderNo(orderNo, out string matchedModelNo, out decimal addOilQty, out decimal extractOilQty, out decimal density,
|
||||
out decimal residualOilUpperLimit, out decimal residualOilLowerLimit)) // 根据订货号 查询基本参数
|
||||
{
|
||||
WritePLC_IF(112, opName, 3); // 报警代码=3,机型错误
|
||||
// WritePLC_IF(112, opName, 3); // 报警代码=3,机型错误
|
||||
LogWeighingFallback(opName, engineNo, "请求工作", $"订货号[{orderNo}]未匹配到工件参数,使用PLC机型[{modelNo}]继续允许工作", AID);
|
||||
// 兜底机制:参数资料缺失不再卡PLC,请求保存时若无法正常更新记录会生成异常完成记录。
|
||||
WritePLC_IF(66, opName, true);
|
||||
@@ -213,7 +265,7 @@ namespace MesWork
|
||||
// 空中放油后:查找最新放油前记录(无论是否完成,支持多次测量)
|
||||
if (!B_DB_Opera.QueryWeighingBeforeOil(engineNo, out _, out decimal preWeight, out _, out _, out _))
|
||||
{
|
||||
WritePLC_IF(112, opName, 3);
|
||||
// WritePLC_IF(112, opName, 3);
|
||||
LogWeighingFallback(opName, engineNo, "请求工作-放油后", "未找到放油前记录,继续允许工作,保存时按异常放油后记录处理", AID);
|
||||
}
|
||||
else
|
||||
@@ -235,7 +287,7 @@ namespace MesWork
|
||||
}
|
||||
else
|
||||
{
|
||||
WritePLC_IF(112, opName, 1); // 报警代码=1,获取数据失败
|
||||
// WritePLC_IF(112, opName, 1); // 报警代码=1,获取数据失败
|
||||
engineNo = string.IsNullOrWhiteSpace(rawCodeBlock) ? $"未知产品_{opName}_{DateTime.Now:yyyyMMddHHmmss}" : rawCodeBlock.Trim();
|
||||
LogWeighingFallback(opName, engineNo, "请求工作", $"码块数据转换失败,原始码值=[{rawCodeBlock}],仍允许工作", AID);
|
||||
// 兜底机制:产品解析失败时仍给允许工作,后续保存阶段会按异常产品记录并判不合格。
|
||||
@@ -245,7 +297,7 @@ namespace MesWork
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
WritePLC_IF(112, opName, 1); // 报警代码=1,获取数据失败
|
||||
//WritePLC_IF(112, opName, 1); // 报警代码=1,获取数据失败
|
||||
B_DB_Opera.SaveLog_Response($"【{opName}】请求工作处理失败:{err.Message}", AID);
|
||||
}
|
||||
}
|
||||
@@ -295,6 +347,7 @@ namespace MesWork
|
||||
|
||||
long curveWeighingRecordId = 0;
|
||||
B_DB_Opera.UpdateStationComplete(engineNo, opName, weight); // 过站记录保存最终采用重量
|
||||
WeighingPage?.UpdateFinalWeight(WeighingPage?.GetStationIndex(opName) ?? 1, weight);
|
||||
string weighType = GetWeighingType(opName);
|
||||
decimal oilReleaseQty = 0;
|
||||
decimal residualOilQty = 0;
|
||||
@@ -393,7 +446,7 @@ namespace MesWork
|
||||
catch (Exception err)
|
||||
{
|
||||
CurveCollector_EndSegment(opName, 0);
|
||||
WritePLC_IF(112, opName, 2); // 报警代码=2,保存失败
|
||||
// WritePLC_IF(112, opName, 2); // 报警代码=2,保存失败
|
||||
B_DB_Opera.SaveLog_Response($"【{opName}】保存处理失败:{err.Message}", AID);
|
||||
WeighingPage?.AppendLog($"[{opName}] ❌ 保存异常:{err.Message}");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user