using Mesnac.Compressor.Data; using Mesnac.Compressor.Entity; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Mesnac.Compressor.Station { public class NoRFIDStation : Common, IStation { /// /// 无RFID托盘的工位直接将产品条码号放到数据表中,没有系统条码之分,这样统计数据只能按最后一次来统计 /// 对于重投次数也不太好统计 /// /// /// public bool PrepareWork(StationInfo station) { //先判断后台开关是否打开在进行逻辑验证 bool iflag = IsOpen(station.stationID); if (iflag) { //主线产品码未扫描到条码下发PLC报警 //大转盘壳体条码 if (station.stationID == "1" || station.stationID == "9"|| station.stationID == "11" || station.stationID == "12"|| station.stationID == "15" || station.stationID == "16") { if (string.IsNullOrEmpty(station.Data.subLineList[1].barcode) || station.Data.subLineList[1].barcode.Equals("ERROR")) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); return false; } else { ICSharpCode.Core.LoggingService.DebugFormatted("{0}收到PLC条码:{1}", station.StationCode, station.Data.subLineList[1].barcode); } } else if (station.stationID == "8") { if (string.IsNullOrEmpty(station.Data.subLineList[2].barcode) || station.Data.subLineList[2].barcode.Equals("ERROR")) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); return false; } else { ICSharpCode.Core.LoggingService.DebugFormatted("{0}收到PLC条码:{1}", station.StationCode, station.Data.subLineList[2].barcode); } } else if(station.stationID == "17" || station.stationID == "18") { if (string.IsNullOrEmpty(station.Data.ProductBarcode) || station.Data.ProductBarcode.Equals("ERROR")) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); return false; } else { ICSharpCode.Core.LoggingService.DebugFormatted("{0}收到PLC条码:{1}", station.StationCode, station.Data.ProductBarcode); } } else if (station.stationID == "19") { if (string.IsNullOrEmpty(station.Data.subLineList[1].barcode) || station.Data.subLineList[1].barcode.Equals("ERROR")) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); return false; } //根据壳体条码查询注油量 else { ICSharpCode.Core.LoggingService.DebugFormatted("{0}收到PLC条码:{1}", station.StationCode, station.Data.subLineList[1].barcode); string ZhuYou = GetZhuYouByKTBarCode(station.Data.subLineList[1].barcode); if (string.IsNullOrEmpty(ZhuYou)) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "未查询到注油量"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.TakeNG); return false; } ICSharpCode.Core.LoggingService.DebugFormatted("查询{0}裸机重量:{1}", station.Data.subLineList[1].barcode, ZhuYou); float cc = float.Parse(ZhuYou); //ICSharpCode.Core.LoggingService.DebugFormatted("查询{0}裸机重量-120后:{1}", station.Data.subLineList[1].barcode, cc); object[] ZhuYouLiang = floatToObject(cc); //向PLC写入裸机重量 bool bflag = WritePLCByByte(station, 20, ZhuYouLiang); if (bflag) { ICSharpCode.Core.LoggingService.DebugFormatted("写入{0}裸机重量:{1}", station.Data.subLineList[1].barcode, ZhuYou); } } } //else if (station.stationID == "8") //{ // if (string.IsNullOrEmpty(station.Data.ProductBarcode) || station.Data.ProductBarcode.Equals("ERROR")) // { // ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); // this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); // return false; // } //} //前盖条码 //else if (station.stationID == "5") //{ // if (string.IsNullOrEmpty(station.Data.subLineList[2].barcode) || station.Data.subLineList[2].barcode.Equals("ERROR")) // { // ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); // this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); // return false; // } //} //静盘条码 else if (station.stationID == "3") { if (string.IsNullOrEmpty(station.Data.subLineList[4].barcode) || station.Data.subLineList[4].barcode.Equals("ERROR")) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); return false; } } //动盘条码 //else if (station.stationID == "12") //{ // if (!station.Data.DP_OpenFlag) // { // if (string.IsNullOrEmpty(station.Data.subLineList[3].barcode) || station.Data.subLineList[3].barcode.Equals("ERROR")) // { // ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); // this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); // return false; // } // } //} //后盖条码 //else if (station.stationID == "15") //{ // if (string.IsNullOrEmpty(station.Data.subLineList[5].barcode) || station.Data.subLineList[5].barcode.Equals("ERROR")) // { // ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码"); // this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode); // return false; // } //} //判断上一工位开关是否打开 string preStationID = GetFirstStationIDByStationID(station.stationID); if (!string.IsNullOrEmpty(preStationID)) { bool iPreflag = IsOpen(preStationID); if (iPreflag) { string LastWorkInfo = ""; if (station.stationID == "3") { //通过静盘条码查询A码 string Sem = getSemiBarcodeAByDongPanCode(station.Data.subLineList[4].barcode); //通过A码查询上工位 if (!string.IsNullOrEmpty(Sem)) { LastWorkInfo = LastWorkProductionInfo(Sem, station.PreTableName, "SemiBarcode"); } else { ICSharpCode.Core.LoggingService.Error(station.StationCode + "检测无上工位信息"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.PreNoWork); return false; } } else { if (station.stationID != "8") { if (station.stationID == "15") { string LastWorkInfo1 = LastWorkProductionInfo(station.Data.subLineList[1].barcode, "T_RP_StationPara_B130_1", "ScanBarcode"); if (string.IsNullOrEmpty(LastWorkInfo1)) { string LastWorkInfo2 = LastWorkProductionInfo(station.Data.subLineList[1].barcode, "T_RP_StationPara_B130_2", "ScanBarcode"); if (!string.IsNullOrEmpty(LastWorkInfo2)) { LastWorkInfo = LastWorkInfo2; } } else { LastWorkInfo = LastWorkInfo1; } } else if (station.stationID == "13" || station.stationID == "14") { //启用绝缘工位互锁后检漏工位判断上工位是否合格业务逻辑 if (station.Data.subLineList[1].barcode == "00000000000000000000") { LastWorkInfo = "1"; } else { LastWorkInfo = LastWorkProductionInfo(station.Data.subLineList[1].barcode, station.PreTableName, "ScanBarcode"); } } else { if (station.stationID == "17"|| station.stationID == "18") { LastWorkInfo = LastWorkProductionInfo(station.Data.ProductBarcode, station.PreTableName, "ScanBarcode"); } else { LastWorkInfo = LastWorkProductionInfo(station.Data.subLineList[1].barcode, station.PreTableName, "ScanBarcode"); } } } } //没有上工位信息 if (string.IsNullOrEmpty(LastWorkInfo)) { ICSharpCode.Core.LoggingService.Error(station.StationCode + "检测无上工位信息"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.PreNoWork); return false; } else { //NG物料拿取 if (LastWorkInfo != "1") { if (LastWorkInfo == "0") { this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.OK); return false; } else { ICSharpCode.Core.LoggingService.Error(station.StationCode + "检测上工位信息不合格,NG物料拿取"); this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.TakeNG); return false; } } } } } //这里加一个物料是否匹配=======//还要加判断,当前工位是否需要判断 //ICSharpCode.Core.LoggingService.Debug("》》》》》》开始写入PLC反馈信号!"); } this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.OK); //ICSharpCode.Core.LoggingService.Debug("》》》》》》写入PLC反馈信号完成!"); return true; } public bool HandleData(StationInfo station) { try { SqlHelper sh = new SqlHelper(); DbHandler db = new DbHandler(); if (station.stationID == "3") { station.Data.ProductBarcode = station.Data.subLineList[4].barcode; } else if (station.stationID == "11" || station.stationID == "12" || station.stationID == "13" || station.stationID == "14" || station.stationID == "15" || station.stationID == "16" || station.stationID == "19" || station.stationID == "20") { station.Data.ProductBarcode = station.Data.subLineList[1].barcode; } else if (station.stationID == "8") { station.Data.ProductBarcode = station.Data.subLineList[2].barcode; } //判断动静盘工位 //if (station.stationID == "12") //{ // if (!station.Data.DP_OpenFlag) // { // //保存绑定动静盘 // //判断是否含有动静盘条码 // string DPBarCode = station.Data.subLineList[3].barcode; // string JPBarCode = station.Data.subLineList[4].barcode; // string ProductBarCode = station.Data.ProductBarcode; // db.InsertDJRelationShip(DPBarCode, JPBarCode); // } //} foreach (subLine s in station.Data.subLineList) { if (!string.IsNullOrEmpty(s.barcode)) { ICSharpCode.Core.LoggingService.Debug(station.StationName + ",支线工位:" + station.StationCode + " ,物料条码:" + s.barcode); } } //插入新数据 string InsertSql = sh.DataInsertSql2(station); db.ExecSql(InsertSql); //更新工位 if (station.stationID != "8") { string ABarCode = getSemiBarcodeAByDongPanCode(station.Data.ProductBarcode); //根据组件码查询A码 if (!string.IsNullOrEmpty(ABarCode)) { if (station.stationID == "20") { /*UPDATE dbo.T_SY_TraceState SET FinishFlag = 1,EndTime = GETDATE(),CurrentStationID = '33',state = 1,NameplateInfo = @serialNum,MarkRecord = @bigCode WHERE SemiBarcode_A = @semibarcode*/ //结束工位 UpdateCompleteStationInfo(ABarCode); ICSharpCode.Core.LoggingService.DebugFormatted("{0}工位,{1}条码工位数据更新成功。", station.stationID, station.Data.ProductBarcode); } else { //根据A码查询M码 //获取系统M码 string Mainbarcode = GetMainBarcode(ABarCode); if (!string.IsNullOrEmpty(Mainbarcode)) { UpdateTraceStation(station.stationID, Mainbarcode); ICSharpCode.Core.LoggingService.DebugFormatted("{0}工位,{1}条码工位数据更新成功。", station.stationID, station.Data.ProductBarcode); } } } } ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + " 保存数据成功。托盘号:" + station.Data.RFIDNo); } catch (Exception e) { ICSharpCode.Core.LoggingService.Info(e.ToString()); return false; } finally { //这里要加一个OK放行 FinishSavePLCWork(station); } return true; } } }