feat: 增加LG/TCS-AGV接口并完善物料校验与Function逻辑

This commit is contained in:
XingCheng3
2026-07-16 16:47:45 +08:00
parent 7303ddde9a
commit 8e44e11248
74 changed files with 4324 additions and 1091 deletions

View File

@@ -1,15 +1,16 @@
using System;
using System.Data;
using System.Windows.Forms;
using System.Xml.Linq;
//using SystemFramework;
using MesServerWork;
using MisDataFunDll;
//using SystemFramework;
namespace MesServerFunctions
{
partial class FunctionMES
{
object lockBarcodeEngineTypeGetOver = new object();
/// <summary>
/// PLC传递机型处理
/// </summary>
@@ -17,56 +18,123 @@ namespace MesServerFunctions
/// <param name="tagValue"></param>
private void EngineTypeGetOver_PLC(object e)
{
string opName = "";
lock (lockBarcodeEngineTypeGetOver)
{
try
{
DeviceDriver_BasicData.CustomeEvetnArgs msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
//int tagValue = Convert.ToInt32(msgEvent.TagValue);
if(msgEvent.TagValueUp.ToString() == "6")
opName = OpName;
int tagValue = Convert.ToInt32(msgEvent.TagValue);
//判断PLC机型与MES机型是否一致
if (tagValue == 1)
{
MIS_BASE.Write_FixAllow(OpName, false);
string Program_No = "";
MisDataFun.GetEngineType_Order(OpName, Program_No, out int EngineTypeID, out string EngineType, out string EngineID, out string OrderForm, out int isCheckOk, out int planCount, out int haveUplaodCount, out int remainingQuantity, out string msg2);
if (isCheckOk == 2)
bool MesRead = false;
int EngineTypeID;//机型代码
int PartPallet_Code;//托盘编号
string EngineType;//机型
string EngineID;//工件编号
int EngineTypeID_MES;//机型代码
string EngineType_MES;//机型
string EngineID_MES;//工件编号
string OrderForm_MES;
//上线工位清MES传递机型信号
MIS_BASE.Write_EngineTypeGetOver_MES(OpName, false);
MIS_BASE.Read_QualityData_Read_CF(OpName, out MesRead);
//第一步判断允许保存和保存完成信号是否全部被清空若未清空则通知复位MES&PLC
if (MesRead)
{
string msg = "【" + OpName + "】" + msg2;
SendMessage.AsyncSendMessage_Notice(OpName, msg);
MyLog4Net.MyLogHelper.Error("PartLoad", msg);
//未能清空信号,请求复位
string msg = "【" + OpName + "】" + "未能清空MesRead信号请求复位";
SendMessageFun.SendInfomation("AskReset", "1", OpName);
MyLog4Net.MyLogHelper.Error("EngineTypeGetOver", msg);
return;
}
string OrderForm;
MIS_BASE.GetEngineTypeFromPLC(OpName, out EngineTypeID, out EngineType, out EngineID, out PartPallet_Code, out OrderForm);
MIS_BASE.GetEngineTypeFromPLC_MES(OpName, out EngineTypeID_MES, out EngineType_MES, out EngineID_MES, out OrderForm_MES);
// 读取MES区数据 校验MES区数据是否符合 同时判断是否此工件已工作过,若已工作过则弹出弹窗提示
if (EngineTypeID == EngineTypeID_MES & EngineID == EngineID_MES & EngineType == EngineType_MES & OrderForm == OrderForm_MES)
{
if (EngineTypeID == 0 || EngineID == "" || EngineType == "" || OrderForm == "")
{
string msg = "【" + OpName + "】" + "传递机型数据为空!";
MyLog4Net.MyLogHelper.Error("EngineTypeGetOver", msg);
SendMessage.AsyncSendMessage_Notice(OpName, msg);
return;
}
DataTable checkTable = MisDataFun.WorkOrderCheck(OpName, EngineID_MES, OrderForm_MES, EngineType_MES);
int result = Convert.ToInt32(checkTable.Rows[0]["result"]);
string resultMsg = checkTable.Rows[0]["msg"].ToString();
if (result != 2)
{
if (result == 3)
{
string msg = "【" + OpName + "】" + resultMsg;
MyLog4Net.MyLogHelper.Error("EngineTypeGetOver", msg);
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
//写入到数据库的[北汽福田工位状态监控MOBY]表中
MisDataFun.OpName_MIS_MOBY_Insert(OpName, MisDataFun.MobyTagType.EngineTypeID, EngineTypeID.ToString());
MisDataFun.OpName_MIS_MOBY_Insert(OpName, MisDataFun.MobyTagType.EngineType, EngineType);
MisDataFun.OpName_MIS_MOBY_Insert(OpName, MisDataFun.MobyTagType.EngineID, EngineID);
MisDataFun.OpName_MIS_MOBY_Insert(OpName, MisDataFun.MobyTagType.OrderForm, OrderForm);
MisDataFun.OpName_MIS_MOBY_Insert(OpName, MisDataFun.MobyTagType.PartPallet_Code, PartPallet_Code.ToString());
//MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineTypeID, EngineTypeID.ToString());
//MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineType, EngineType);
//MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineID, EngineID);
//MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.OrderForm, OrderForm);
EngineTypeGetOver_PLC_Work(OpName, EngineTypeID, EngineType, EngineID, PartPallet_Code, OrderForm);
SendMessageFun.SendMessage("5123", "11111", OpName);
// 将工序数据转入临时表中
//BaseDataSystemMES.ProcessDataToTemp(OpName, EngineTypeID, OrderForm, EngineID);
}
else
{
string msg = "【" + OpName + "】" + resultMsg;
MyLog4Net.MyLogHelper.Error("EngineTypeGetOver", msg);
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
return;
}
else
{
MIS_BASE.Write_EngineTypeID_MES(OpName, EngineTypeID);
MIS_BASE.Write_EngineType_MES(OpName, EngineType);
MIS_BASE.Write_EngineID_MES(OpName, EngineID);
MIS_BASE.Write_OrderForm_MES(OpName, OrderForm);
MisDataFun.OpName_MIS_MOBY_Insert(OpName, MisDataFun.MobyTagType.WorkStartIn, DateTime.Now.ToString());
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineTypeID, EngineTypeID.ToString());
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineType, EngineType);
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineID, EngineID);
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.OrderForm, OrderForm);
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineTypeID_MES, EngineTypeID.ToString());
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineType_MES, EngineType);
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.EngineID_MES, EngineID);
MisDataFun.OpName_MIS_MOBY_Insert(OpName,MisDataFun.MobyTagType.OrderForm_MES, OrderForm);
MIS_BASE.Write_EngineTypeID_MES(OpName, EngineTypeID);
MIS_BASE.Write_EngineType_MES(OpName, EngineType);
MIS_BASE.Write_EngineID_MES(OpName, EngineID);
MIS_BASE.Write_OrderForm_MES(OpName, OrderForm);
EngineTypeGetOver_PLC_Work(OpName, EngineTypeID, EngineType, EngineID, 0, OrderForm);
string msg = "【" + OpName + "】" + "PLC与MES信息不一致";
MyLog4Net.MyLogHelper.Error("EngineTypeGetOver", msg);
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
}
else
{
MIS_BASE.Write_FixAllow(OpName, false);
}
}
catch (Exception err)
{
// 保存出错日志 1.申请上线 2.传递机型 3.允许保存 4.扫码
MisDataSaveDate.FuntionMesRead.Alarm_SaveFileLog4Error(System.Reflection.MethodBase.GetCurrentMethod().Name, e, "Fun1053", err);
////ApplicationLog.WriteLog(err, "Function02:EngineTypeGetOver_PLC");
string logOpName = string.IsNullOrWhiteSpace(opName) ? "Function1051_EngineGetOver" : opName;
string logText = $"EngineTypeGetOver异常异常={err.Message}";
MisDataSaveDate.Helper.ApiLogHelper.SaveMesLog(logOpName, logText, MisDataSaveDate.Helper.MesLogType.ERROR);
MyLog4Net.MyLogHelper.Error("Function1051_EngineGetOver", $"{logText}{Environment.NewLine}{err}");
}
}
}
}
}