using System;
using System.Data;
using System.Windows.Forms;
using MesServerWork;
using MisDataFunDll;
using MisDataSaveDate;
namespace MesServerFunctions
{
partial class FunctionMES
{
///
/// PLC传递机型处理
///
///
///
private void EngineTypeGetOver_PLC(object e)
{
try
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
int tagValue = Convert.ToInt32(msgEvent.TagValue);
//判断PLC机型与MES机型是否一致
if (tagValue == 1)
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MIS", "PLC传递机型!");
MIS_BASE.Write_TagValueByTagTypeID(34, OpName, false); // 复位报警(MES)
// 1.读取来件信息,有可能来一个件 有可能同时来两个件,来空托盘不交互
string part1;
string part2;
MIS_BASE.Read_TagValueByTagTypeID(203, OpName, out part1);
MIS_BASE.Read_TagValueByTagTypeID(204, OpName, out part2);
// 2.判断PLC工件是否写入
if ((part2 == "" && part1 == "") || (part2 == null && part1 == null) || (part2.Length < 5 && part1.Length < 5))
{
//不允许工作
MIS_BASE.Write_FixAllow(OpName, false);
// MES报警
MIS_BASE.Write_TagValueByTagTypeID(34, OpName, true);
string msg = "【" + OpName + "】" + "PLC两个产品信息为空,part1:" + part1 + ",part2:" + part2;
SendMessage.AsyncSendMessage_Notice(OpName, msg);
MisDataFun.LogRecording_OP(OpName, "ERROR", "EngineTypeGetOver", msg);
return;
}
bool part1_IsOk = true;
bool part2_IsOk = true;
// 3.记录工件的进站数据
if (part1 != null && part1 != "" && part1.Length > 5)
{
// 查询是否 不允许工作
MisDataFun.Get_NotAllowWork(part1, OpName, out bool NotAllowWork);
if (NotAllowWork)
{
MIS_BASE.Write_NotAllowWork(OpName, true); // 不允许工作
part1_IsOk = false;
}
else
{
// 调用进站接口
CallWebService.Call_miFindCustomAndSfcData(OpName, part1, out string code, out string message);
if (code == "0")
{
string msg = "进站成功:" + part1;
MisDataFun.LogRecording_OP(OpName, "INFO", "MOM", msg);
MisDataFun.OpName_MIS_MOBY_Insert_JZ(OpName, part1);
}
else
{
part1_IsOk = false;
string msg = "进站失败:" + part1 + ",code:" + code + ",message:" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg);
}
}
}
if (part2 != null && part2 != "" && part2.Length > 5)
{
// 查询是否 不允许工作
MisDataFun.Get_NotAllowWork(part2, OpName, out bool NotAllowWork);
if (NotAllowWork)
{
MIS_BASE.Write_NotAllowWork(OpName, true); // 不允许工作
part2_IsOk = false;
}
else
{
// 调用进站接口
CallWebService.Call_miFindCustomAndSfcData(OpName, part2, out string code, out string message);
if (code == "0")
{
string msg = "进站成功:" + part2;
MisDataFun.LogRecording_OP(OpName, "INFO", "MOM", msg);
MisDataFun.OpName_MIS_MOBY_Insert_JZ(OpName, part2);
}
else
{
part2_IsOk = false;
string msg = "进站失败:" + part2 + ",code:" + code + ",message:" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg);
}
}
}
// 两个件都进站成功了 才允许工作
if(part1_IsOk && part2_IsOk)
{
MIS_BASE.Write_FixAllow(OpName, true); // 允许PLC工作(MES)
}
}
else
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MIS", "PLC传递机型取消!");
MIS_BASE.Write_FixAllow(OpName, false); // 允许PLC拧紧工作(MES)
MIS_BASE.Write_NotAllowWork(OpName, false); // 不允许工作
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:EngineTypeGetOver_PLC");
}
}
///
/// PLC传递机型处理
///
///
///
private void EngineTypeGetOver_PLC_part1Ng(object e)
{
try
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
int tagValue = Convert.ToInt32(msgEvent.TagValue);
//判断PLC机型与MES机型是否一致
if (tagValue == 1)
{
MisDataFun.LogRecording_OP(OpName, "INFO", "EngineTypeGetOver_PLC_part1Ng", "PLC产品1Ng传递机型!");
MIS_BASE.Write_TagValueByTagTypeID(34, OpName, false); // 复位报警(MES)
// 1.读取来件信息,有可能来一个件 有可能同时来两个件,来空托盘不交互
string part1;
MIS_BASE.Read_TagValueByTagTypeID(203, OpName, out part1);
// 2.判断PLC工件是否写入
if (part1 == "" || part1 == null || part1.Length < 5)
{
// MES报警
MIS_BASE.Write_TagValueByTagTypeID(34, OpName, true);
string msg = "【" + OpName + "】" + "PLC位置1产品信息为空,part1:" + part1;
SendMessage.AsyncSendMessage_Notice(OpName, msg);
MisDataFun.LogRecording_OP(OpName, "ERROR", "EngineTypeGetOver_PLC_part1Ng", msg);
return;
}
// 3.记录工件的进站数据
if (part1 != null && part1 != "" && part1.Length > 5)
{
string msg;
// 查询是否 不允许工作
MisDataFun.Get_NotAllowWork(part1, OpName, out bool NotAllowWork);
if (NotAllowWork)
{
MIS_BASE.Write_NotAllowWork(OpName, true); // 不允许工作
msg = "产品不合格,不允许工作!" + part1;
MisDataFun.LogRecording_OP(OpName, "INFO", "EngineTypeGetOver_PLC_part1Ng", msg);
}
else
{
msg = "产品1PLC中记录不合格,但PLCS中记录合格!" + part1;
MisDataFun.LogRecording_OP(OpName, "ERROR", "EngineTypeGetOver_PLC_part1Ng", msg);
}
}
}
else
{
MisDataFun.LogRecording_OP(OpName, "INFO", "EngineTypeGetOver_PLC_part1Ng", "PLC产品1Ng传递机型取消!");
MIS_BASE.Write_NotAllowWork(OpName, false); // 不允许工作
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:EngineTypeGetOver_PLC");
}
}
///
/// PLC传递机型处理
///
///
///
private void EngineTypeGetOver_PLC_part2Ng(object e)
{
try
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
int tagValue = Convert.ToInt32(msgEvent.TagValue);
//判断PLC机型与MES机型是否一致
if (tagValue == 1)
{
MisDataFun.LogRecording_OP(OpName, "INFO", "EngineTypeGetOver_PLC_part2Ng", "PLC产品2Ng传递机型!");
MIS_BASE.Write_TagValueByTagTypeID(34, OpName, false); // 复位报警(MES)
// 1.读取来件信息,有可能来一个件 有可能同时来两个件,来空托盘不交互
string part2;
MIS_BASE.Read_TagValueByTagTypeID(204, OpName, out part2);
// 2.判断PLC工件是否写入
if (part2 == "" || part2 == null || part2.Length < 5)
{
// MES报警
MIS_BASE.Write_TagValueByTagTypeID(34, OpName, true);
string msg = "【" + OpName + "】" + "PLC位置2产品信息为空,part2:" + part2;
SendMessage.AsyncSendMessage_Notice(OpName, msg);
MisDataFun.LogRecording_OP(OpName, "ERROR", "EngineTypeGetOver_PLC_part2Ng", msg);
return;
}
// 3.记录工件的进站数据
if (part2 != null && part2 != "" && part2.Length > 5)
{
string msg;
// 查询是否 不允许工作
MisDataFun.Get_NotAllowWork(part2, OpName, out bool NotAllowWork);
if (NotAllowWork)
{
MIS_BASE.Write_NotAllowWork(OpName, true); // 不允许工作
msg = "产品2不合格,不允许工作!" + part2;
MisDataFun.LogRecording_OP(OpName, "INFO", "EngineTypeGetOver_PLC_part2Ng", msg);
}
else
{
msg = "产品2PLC中记录不合格,但PLCS中记录合格!" + part2;
MisDataFun.LogRecording_OP(OpName, "ERROR", "EngineTypeGetOver_PLC_part2Ng", msg);
}
}
}
else
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MIS", "PLC产品2Ng传递机型取消!");
MIS_BASE.Write_NotAllowWork(OpName, false); // 不允许工作
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:EngineTypeGetOver_PLC");
}
}
}
}