using System; using System.Data; using bizFacade; using MesServerWork; namespace MesServerFunctions { partial class Functions_BASE_29 { /// /// 分线上总线的数量 /// public static int SubLineLoadPartCount = 2; /// /// 分线上总线已经匹配的数量 /// public static int SubLineLoadPartCountMatch = 0; /// /// 正常逻辑工作 /// /// /// /// /// /// private void EngineTypeGetOver_PLC_Work(string SubOpName, int SubEngineTypeID, string SubEngineType, string SubEngineID, int SubPartPallet_Code,string OrderForm) { int MES_QualityMask = 1; int IsrepairBarcode = 0;//拆解返修标志 string OpName = ""; //string OrderForm = "";//订单号 string repairBarcode = "";//拆解返修条码 DataTable dt;//读取订单信息 BaseDataSystemMES.GetEngineID_Select(SubOpName, SubEngineID, out dt); if (dt != null) { if (dt.Rows.Count > 0) { //OrderForm = Convert.ToString(dt.Rows[0]["订单号"]); IsrepairBarcode = Convert.ToInt32(dt.Rows[0]["拆解标志"]); repairBarcode = Convert.ToString(dt.Rows[0]["拆解返修条码"]); } } //第一步,系统记录到位工件信息,发送总线WEB显示 BaseDataSystemMES.OpName_MIS_MOBY_Insert(SubOpName, OrderForm,SubEngineTypeID, SubEngineType, SubEngineID, SubPartPallet_Code, 0, IsrepairBarcode, repairBarcode); if (MIS_BASE.hashtable_OpNameRepair == null) { MIS_BASE.InitHashtable_MesServerCode(); } if (MIS_BASE.hashtable_OpNameRepair.ContainsKey(SubOpName))//获取总工位号 { OpName = MIS_BASE.hashtable_OpNameRepair[SubOpName].ToString(); } if (OpName == "") { return; } SaveMobyMessage(OpName, SubEngineTypeID, SubEngineType, SubEngineID, OrderForm); SendInfomation("ShowMobySubLine", SubOpName, OpName); //第二步,判断分线合格标志 MIS_BASE.Read_PalletInfo(SubOpName, out MES_QualityMask); SendInfomation("SubQualityMask", Convert.ToString(MES_QualityMask), OpName);//将分线合格标志发送到Web页面进行显示 if (MES_QualityMask != 1) if (MES_QualityMask != 1) { //工作完成 MIS_BASE.Write_MaterialVerifyOver(OpName, true); SendInfomation("NgGO", "1", SubOpName);//显示不合格标志 return; } //第三步,匹配 Match(SubOpName, SubEngineID, SubEngineTypeID, SubEngineType);//匹配 } /// /// 保存MOBY信息 /// /// /// /// /// private void SaveMobyMessage(string OpName, int engineTypeID, string engineType, string engineID, string orderForm) { if (MIS_BASE.hashtable_EngineGetOver_EngineTypeID == null) { MIS_BASE.InitHashtable_MesServerCode(); } if (MIS_BASE.hashtable_EngineGetOver_EngineTypeID.ContainsKey(OpName)) { MIS_BASE.hashtable_EngineGetOver_EngineTypeID[OpName] = engineTypeID; } if (MIS_BASE.hashtable_EngineGetOver_EngineType.ContainsKey(OpName)) { MIS_BASE.hashtable_EngineGetOver_EngineType[OpName] = engineType; } if (MIS_BASE.hashtable_EngineGetOver_EngineID.ContainsKey(OpName)) { MIS_BASE.hashtable_EngineGetOver_EngineID[OpName] = engineID; } if (MIS_BASE.hashtable_EngineGetOver_OrderForm.ContainsKey(OpName)) { MIS_BASE.hashtable_EngineGetOver_OrderForm[OpName] = orderForm; } } /// /// 正常匹配分线和总线 /// /// /// 分线工件号 /// 分线工件机型代码 /// 分线工件机型 private void Match(string opName_SubLine, string engineID_SubLine, int engineTypeID_SubLine, string engineType_SubLine) { try { bool m_EngineGetOver_PLC; int engineTypeID; int partPallet_Code; int PalletInfo = 1;//分线合格标志 string opName = "";//总线工件信息 string engineID; string engineType; string AlarmStr; if (MIS_BASE.hashtable_OpNameRepair == null) { MIS_BASE.InitHashtable_MesServerCode(); } //读取总线信息(工位号 传递机型 合格标志) if (MIS_BASE.hashtable_OpNameRepair.ContainsKey(opName_SubLine))//获取总工位号 { opName = MIS_BASE.hashtable_OpNameRepair[opName_SubLine].ToString(); } if (opName == "") { return; } MIS_BASE.Read_EngineGetOver_PLC(opName, out m_EngineGetOver_PLC);//1:读取总线工件到位的传递机型信号。 if (!m_EngineGetOver_PLC) return;//必须工件同时到位才能进行匹配 //判断分线数据是否合格 //if (!BaseDataSystemMES.QulityDataVerify(opName, engineID_SubLine, out AlarmStr) && !BaseDataSystemMES.QualityVerifyStatus_Hash_Read(opName)) //{ // SendInfomation("LineoutAlert", AlarmStr, opName); // return; //} //MIS_BASE.Read_PalletInfo(opName, out PalletInfo);//总线合格标识 //if (PalletInfo != 1) return;//总线不合格时,由人工确认强制匹配 string OrderForm; MIS_BASE.GetEngineTypeFromPLC(opName, out engineTypeID, out engineType, out engineID, out partPallet_Code,out OrderForm);//获取总线的信息 if (engineType == engineType_SubLine) { //分线上总线数据转移 BaseDataSystemMES.MailLineAndSubLineData_Insert(engineID, engineTypeID, engineType, engineID_SubLine); MIS_BASE.Write_Match(opName, true);//匹配结果 MIS_BASE.Write_MatchingCompleted(opName, true); //匹配完成 //发送匹配结果信息 sendmessage(opName, 1, "Match");//匹配结果 SendInfomation("MatchSuccess", "1", opName);//界面显示匹配成功 BaseDataSystemMES.SubLineLoadPartCountMatch_Select(opName, out SubLineLoadPartCountMatch); SubLineLoadPartCountMatch = SubLineLoadPartCountMatch + 1; BaseDataSystemMES.SubLineLoadPartCountMatch_Update(opName, SubLineLoadPartCountMatch); if (SubLineLoadPartCountMatch== SubLineLoadPartCount) { MIS_BASE.Write_FixAllow(opName, true);//允许PLC工作 SubLineLoadPartCountMatch = 0; BaseDataSystemMES.SubLineLoadPartCountMatch_Update(opName, SubLineLoadPartCountMatch); } } else { MIS_BASE.Write_Match(opName, false);//匹配结果 MIS_BASE.Write_MatchingCompleted(opName, true);//匹配完成 AsyncSendMessage_Notice(opName, "机型匹配失败"); SendInfomation("MatchSuccess", "0", opName);//界面显示匹配失败 sendmessage(opName, 0, "Match");//匹配结果 } } catch { } } /// /// 强制匹配分线和总线 /// /// private void ForceMatch(string opName) { try { bool m_EngineGetOver_PLC_SubLine; bool m_EngineGetOver_PLC; int engineTypeID_SubLine; int engineTypeID; int partPallet_Code_SubLine; int partPallet_Code; string opName_SubLine = "";//分线工件信息 string engineID_SubLine; string engineType_SubLine; string engineID; string engineType; if (MIS_BASE.hashtable_OpNameRepair == null) { MIS_BASE.InitHashtable_MesServerCode(); } //获取分线中间交互工位号 if (MIS_BASE.hashtable_OpNameRepair.ContainsKey(opName)) { opName_SubLine = MIS_BASE.hashtable_OpNameRepair[opName].ToString(); } if (opName_SubLine == "") { return; } MIS_BASE.Read_EngineGetOver_PLC(opName_SubLine, out m_EngineGetOver_PLC_SubLine);//1:读取分线工件到位的传递机型信号。 if (!m_EngineGetOver_PLC_SubLine) return;//必须工件同时到位才能进行匹配 MIS_BASE.Read_EngineGetOver_PLC(opName, out m_EngineGetOver_PLC);//2:读取总线工件到位的传递机型信号。 if (!m_EngineGetOver_PLC) return;//必须工件同时到位才能进行匹配 string OrderForm; MIS_BASE.GetEngineTypeFromPLC(opName_SubLine, out engineTypeID_SubLine, out engineType_SubLine, out engineID_SubLine, out partPallet_Code_SubLine,out OrderForm);//获取分线的信息 MIS_BASE.GetEngineTypeFromPLC(opName, out engineTypeID, out engineType, out engineID, out partPallet_Code,out OrderForm); BaseDataSystemMES.MailLineAndSubLineData_Insert(engineID, engineTypeID, engineType, engineID_SubLine);//分线上总线数据转移 MIS_BASE.Write_Match(opName, true);//匹配结果 MIS_BASE.Write_MatchingCompleted(opName, true);//匹配完成 SendInfomation("MatchSuccess", "1", opName);//界面显示匹配成功 MIS_BASE.Write_FixAllow(opName, true);//允许PLC工作 //发送匹配完成和匹配结果信息 sendmessage(opName, 1, "MatchingComplete");//匹配完成 sendmessage(opName, 1, "Match");//匹配结果 } catch { } } } }