Files
2026-05-29 09:34:04 +08:00

344 lines
14 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using MesServerWork;
using bizFacade;
using System.Threading;
using MisDataSaveDate;
using System.Collections;
//using SystemFramework;
namespace MesServerFunctions
{
partial class FunctionMES
{
/// <summary>
/// 处理WEB页面发送过来的请求m_Command + "|" + m_Value;
/// </summary>
/// <param name="OpName"></param>
/// <param name="Content"></param>
private void WebSubmit(object e)
{
try
{
DoWhatPlc.CustomeEvetnArgs msgEvent = (DoWhatPlc.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
string Content = Convert.ToString(msgEvent.TagValue);
string opName_SubLine = "";
string engineID = "";//工件信息
string[] dataArray = Content.Split('|');
if (dataArray.Length != 2)
return;
string m_Command = dataArray[0].ToString();//消息类型
string m_Value = dataArray[1].ToString();//消息参数
string[] m_Value_array = m_Value.Split('&');//消息参数数量
int m_Value_length = m_Value_array.Length; //消息参数长度
if (MIS_BASE.hashtable_EngineGetOver_EngineTypeID == null)
{
MIS_BASE.InitHashtable_MesServerCode();
}
if (MIS_BASE.hashtable_EngineGetOver_EngineID.ContainsKey(OpName))
{
engineID = MIS_BASE.hashtable_EngineGetOver_EngineID[OpName].ToString();
}
if (MIS_BASE.hashtable_OpNameRepair == null)
{
MIS_BASE.InitHashtable_MesServerCode();
}
DoWhatPlc.CustomeEvetnArgs _e = new DoWhatPlc.CustomeEvetnArgs();
_e.OpName = OpName;
_e.TagValue = m_Value;
//根据请求的命令处理逻辑
switch (m_Command)
{
case "Barcode":
if (m_Value_length > 1) return;
fun_Barcode(_e);
break;
case "ConfirmOkGo"://合格放行
//修改托盘状态
BaseDataSystemMES.BaseData_tagTable_Engine_IsNG_Delete(OpName, engineID);
MIS_BASE.Write_ConfirmOkGo(OpName, true);
MIS_BASE.Write_FalseGO(OpName, false);
Thread.Sleep(1000);
MIS_BASE.Write_ConfirmOkGo(OpName, false);
break;
case "FalseGO"://返修放行
//修改托盘状态
BaseDataSystemMES.BaseData_tagTable_Engine_IsNG_Delete(OpName, engineID);
MIS_BASE.Write_FalseGO(OpName, true);
MIS_BASE.Write_ConfirmOkGo(OpName, false);
Thread.Sleep(1000);
MIS_BASE.Write_FalseGO(OpName, false);
break;
case "NgGO"://不合格放行
//修改托盘状态
//保存不合格信息(必须保存不合格放行信息由于B5A的Moby没有不合格标志位)
BaseDataSystemMES.BaseData_tagTable_Engine_IsNG_Insert(OpName, engineID, "", "");
MIS_BASE.Write_FalseGO(OpName, true);
MIS_BASE.Write_ConfirmOkGo(OpName, false);
Thread.Sleep(1000);
MIS_BASE.Write_FalseGO(OpName, false);
break;
case "OnLineState"://在线0、离线1、屏蔽2
try
{
if (m_Value_length > 1) return;
int a = Convert.ToInt32(m_Value);
if (a <= 2)
{
BaseDataSystemMES.IsOnLine_Update(OpName, m_Value.ToString());
MIS_BASE.Write_OnLineState(OpName, Convert.ToInt32(m_Value));
if (a == 2) SendMessage.AsyncSendMessage_Notice(OpName, "屏蔽MES");
if (a == 0) SendMessage.AsyncSendMessage_Notice(OpName, "启用MES");
}
}
catch
{
}
break;
case "Reset"://复位将MES所有的信息都复位了
SetMoby(OpName);//将MES所有信号清空
break;
case "FixAllow"://重新拧紧
break;
case "IsAutoGetEngineID"://自动手动申请编号(线首)
if (m_Value_length > 1) return;
MIS_BASE.Write_IsAutoGetEngineID(OpName, Convert.ToInt32(m_Value));
break;
case "PartPalletGoOver"://空托盘放行
MIS_BASE.Write_RepairUpline_MES(opName_SubLine, true);
//MIS_BASE.Write_PalletInfo(opName_SubLine, 4);
//MIS_BASE.Write_UpdatePalletOK(opName_SubLine, true);
MIS_BASE.Write_MaterialVerifyOver(opName_SubLine, true);
break;
case "SetMoby"://清空托盘(线首)
SetMoby(OpName);//将MES所有信号清空
break;
case "RepairUplineMES"://返修上线
MIS_BASE.Write_RepairUpline_MES(OpName, true);
break;
case "CancelRepair"://将返修件置为正常件
break;
case "PartPalletCode"://申请写入托盘号
//MIS_BASE.Write_PartPalletCode_PLC(OpName, 1);
break;
case "WritePartPalletCode"://写入托盘号
if (m_Value_length > 1) return;
MIS_BASE.Write_PalletCode(OpName, Convert.ToInt32(m_Value));
break;
case "Normal"://启用正常拧紧工位
MIS_BASE.Write_Normal(OpName, 1);
MIS_BASE.Write_UnNormal(OpName, 0);
break;
case "UnNormal"://启用备用拧紧工位
MIS_BASE.Write_Normal(OpName, 0);
MIS_BASE.Write_UnNormal(OpName, 1);
break;
case "ResetDevice"://复位设备
MIS_BASE.Write_ResetDevice(OpName, true);
System.Threading.Thread.Sleep(1000);
MIS_BASE.Write_ResetDevice(OpName, false);
break;
case "IsNeedRepaire"://返修上线(返修上线点)
if (Convert.ToInt32(m_Value) == 1)
{
//修改托盘状态
MIS_BASE.Write_PalletInfo(OpName, 3);
//通知修改成功
MIS_BASE.Write_UpdatePalletOK(OpName, true);
IsNeedRepaire_OK(OpName);
}
else if (Convert.ToInt32(m_Value) == 0)
{
//直接给出工作完成
MIS_BASE.Write_MaterialVerifyOver(OpName, true);
}
break;
//强制匹配
case "ForceMatch":
if (Convert.ToInt32(m_Value) == 1)
{
ForceMatch(OpName);
}
break;
case "PalletGO":
if (Convert.ToInt32(m_Value) == 1)
{
//直接给出工作完成
MIS_BASE.Write_MaterialVerifyOver(opName_SubLine, true);
}
break;
case "ContinueMatch":
BaseDataSystemMES.QualityVerifyStatus_Hash_Write(OpName, true);
fun_EngineTypeGetOverPLC(_e);
break;
//初始化网页信号
case "IniSingalToWeb":
InitializeSingalToWeb(OpName);
break;
default: break;
}
}
catch(Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:WebSubmit");
}
}
private void SetMoby(string OpName)
{
try
{
//清空Moby时需要将MES信号清空
MIS_BASE.Write_ClearMesMoby(OpName);
BaseDataSystemMES.MesServer_Process_EngineTypeOver(OpName);
SendMessageFun.SendMessage("5123", "1111", OpName);
MIS_BASE.Write_ResetDevice(OpName, true);
System.Threading.Thread.Sleep(1000);
MIS_BASE.Write_ResetDevice(OpName, false);
}
catch
{
}
}
/// <summary>
/// 网页重现登录,恢复关闭前的页面状态
/// </summary>
/// <param name="Opname">工位号</param>
private void InitializeSingalToWeb(string Opname)
{
bool S_WorkStart;//工件到位 DBX0.1
bool S_EngineGetOver;//传递机型 DBX0.4
bool S_FixAllow;//允许工作 DBX3.1
bool S_MaterialVerifyOver;//工作完成 DBX2.3
string S_plcStatus;//DBX501.5 PLC直通1 强制放行 0 正常循环
int IsCompleted = 0;
int S_Match = 0;
int PalletInfo_SubLine = 0;//显示分线托盘状态
MIS_BASE.Read_WorkStart(Opname, out S_WorkStart);
//5 显示订单、机型信息 线首工位用
SendMessage.ShowMoby_FirstOpName(Opname);
//3显示操作指导图片 PicShow_String_FirstOpName
SendMessage.PicShow_FirstOpName(Opname);
//1直接在界面通过选择机型确认工序内容
SendMessage.ProcessList_FirstOpName(Opname);
//界面显示物料信息
SendMessage.MaterialList_FirstOpName(Opname);
// 新增查询PLC直通状态 网页显示
MIS_BASE.Read_TagTypeID(63, Opname, out S_plcStatus);
InitAlarm(Opname);
if (S_plcStatus.ToLower() == "false")
{
SendMessageFun.SendInfomation("PlcStatus", "0", Opname);
}
else
{
SendMessageFun.SendInfomation("PlcStatus", "1", Opname);
}
if (S_WorkStart == true)
{
SendMessageFun.SendInfomation("WorkStart", Convert.ToString(Convert.ToInt32(S_WorkStart)), Opname);
//sendmessage(Opname, Convert.ToInt32(S_WorkStart), "WorkStart_Subline");
}
//sendmessage(Opname, Convert.ToInt32(S_WorkStart), "EngineTypeGetOverMES_Subline");
MIS_BASE.Read_EngineGetOver_PLC(Opname, out S_EngineGetOver);
if (S_EngineGetOver == true)
{
SendMessageFun.SendInfomation("EngineTypeGetOverPLC", Convert.ToString(Convert.ToInt32(S_EngineGetOver)), Opname);
//sendmessage(Opname, Convert.ToInt32(S_EngineGetOver), "EngineTypeGetOverMES_Subline");
}
MIS_BASE.Read_FixAllow(Opname, out S_FixAllow);
if (S_FixAllow == true)
{
SendMessageFun.SendInfomation("FixAllow", Convert.ToString(Convert.ToInt32(S_FixAllow)), Opname);
}
MIS_BASE.Read_MaterialVerifyOver(Opname, out S_MaterialVerifyOver);
if (S_MaterialVerifyOver == true)
{
SendMessageFun.SendInfomation("MaterialVerifyOver", Convert.ToString(Convert.ToInt32(S_MaterialVerifyOver)), Opname);
}
//MIS_BASE.Read_MatchingCompleted(Opname, out IsCompleted); //DBX1.3 是否匹配
//MIS_BASE.Read_Match(Opname, out S_Match); //DBX1.4 匹配结果
//if (IsCompleted == 1 && S_Match == 1)//发送匹配完成和匹配结果信息
//{
// SendMessageFun.SendInfomation("MatchingCompleted", "1", Opname);
// SendMessageFun.SendInfomation("Match", "1", Opname);
// SendMessageFun.SendInfomation("MatchSuccess", "1", Opname);//界面显示匹配成功
//}
//else if (IsCompleted == 1 && S_Match == 0)
//{
// SendMessageFun.SendInfomation("MatchSuccess", "0", Opname);//界面显示匹配失败
//}
//if (MIS_BASE.hashtable_OpNameRepair == null)
//{
// MIS_BASE.InitHashtable_MesServerCode();
//}
//string Opname_SubLine = "";
//if (MIS_BASE.hashtable_OpNameRepair.ContainsKey(Opname))
//{
// Opname_SubLine = MIS_BASE.hashtable_OpNameRepair[Opname].ToString();
//}
//if (Opname_SubLine == "")
//{
// return;
//}
//MIS_BASE.Read_PalletInfo(Opname, out PalletInfo_SubLine);
//sendmessage(Opname, PalletInfo_SubLine, "SubQualityMask");
//SendMessageFun.SendInfomation("ShowMobySubLine", Opname_SubLine, Opname);//显示分线机型及流水号
}
//分线发送工件到位信号函数
private void sendmessage(string OpName, int tagValue, string Command)
{
string SendMessage;
SendMessage = "MES|" + Command + "|" + OpName + "|" + tagValue;
SendMessageFun.AsyncSendMessage(SendMessage);
}
private void InitAlarm(string Opname)
{
FuntionMesRead.Alarm_InitAlarm_Send(Opname, out Hashtable ht);
foreach (DictionaryEntry kv in ht)
{
var TagID = kv.Key.ToString();
var TagValue = kv.Value.ToString();
FuntionMesRead.Send_AlarmMsg(TagID, TagValue);
}
}
}
}