| | |
| | | using static Hanhe.iWCS.TaizhouGEMTwoProtocol.ProtocolAnalysis; |
| | | using log4net.Appender; |
| | | using System.Net.Configuration; |
| | | using static System.Runtime.CompilerServices.RuntimeHelpers; |
| | | using System.Reflection.Emit; |
| | | |
| | | namespace Hanhe.iWCS.TaizhouGEMTwoProtocol |
| | | { |
| | |
| | | |
| | | internal static void CheckPackingLineFullThree(Settings.PlcInfo plc) |
| | | { |
| | | string trayCode = ""; |
| | | var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | { |
| | | dataNum = 25, |
| | | addr = plc.readAddr, |
| | | host = plc.ip, |
| | | port = plc.port |
| | | }); |
| | | if(result != null && result.errCode == 0) |
| | | { |
| | | if (result.result[0] == 1) |
| | | { |
| | | //获取物料信息 根据托盘码区分 |
| | | trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//托盘码 |
| | | |
| | | |
| | | var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("trayCode", trayCode)), "TimeCuoInfoComTwo"); |
| | | if (infoPack != null) |
| | | { |
| | | string empCode = RemoveNull(GetTrayCode(result.result.Skip(1).Take(5).ToArray()));//员工编码 |
| | | string machineCode = RemoveNull(GetTrayCode(result.result.Skip(9).Take(1).ToArray()));//包装机号 |
| | | int needWeight = Convert.ToInt32(Completion(result.result[10]) + Completion(result.result[11]), 2);//产品需求重量 |
| | | int oneWeight = Convert.ToInt32(Completion(result.result[12]) + Completion(result.result[13]), 2);//单托毛重 |
| | | int readWeight = Convert.ToInt32(Completion(result.result[14]) + Completion(result.result[15]), 2);//单托净重 |
| | | int fcWeight = Convert.ToInt32(Completion(result.result[16]) + Completion(result.result[17]), 2);//单托复称重量 |
| | | int trayType = Convert.ToInt32(Completion(result.result[18]), 2);//托盘类型 |
| | | int addState = Convert.ToInt32(Completion(result.result[19]), 2);//叠包层数 |
| | | int bagNumber = Convert.ToInt32(Completion(result.result[20]), 2);//袋号 |
| | | int productTime = Convert.ToInt32(Completion(result.result[21]) + Completion(result.result[22]), 2);//生产日期 |
| | | string timeCuoTwo = Convert.ToInt32(Completion(result.result[23]) + Completion(result.result[24]), 2).ToString(); //时间戳 |
| | | |
| | | UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("trayCode", trayCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight) |
| | | .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType) |
| | | .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime); |
| | | //产品批次号 产品型号 物料名称 计量单位均可在erp表中根据物料编码获取 |
| | | |
| | | result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | { |
| | | dataNum = 15, |
| | | addr = plc.readAddr + 131, |
| | | host = plc.ip, |
| | | port = plc.port |
| | | }); |
| | | |
| | | string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString()); |
| | | UpdateBuilder update = Update.Set("materialCode", materialCode).Set("createTime",DateTime.Now); |
| | | MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), update, UpdateFlags.None); |
| | | |
| | | var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel |
| | | { |
| | | host = plc.ip, |
| | | addr = plc.writeAddr, |
| | | data = 1, |
| | | port = plc.port |
| | | }); |
| | | CMMLog.Debug($"写入设备{plc.location}通道{plc.writeAddr}里面数据为1."); |
| | | } |
| | | } |
| | | } |
| | | |
| | | var xxPlc = Settings.GetPlcInfo().Where(a => a.deviceType == "27" && a.enable == 1).FirstOrDefault(); |
| | | if(xxPlc != null) |
| | | { |
| | | result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | { |
| | | dataNum = 1, |
| | | addr = plc.readAddr + 1, |
| | | host = plc.ip, |
| | | port = plc.port |
| | | }); |
| | | CMMLog.Info($"下线口 ip:{plc.ip},port:{plc.port},addr:{plc.writeAddr + 1},reuslt:{JsonConvert.SerializeObject(result)}."); |
| | | if(result != null && result.errCode == 0) |
| | | { |
| | | if (result.result[0] == 1) |
| | | { |
| | | var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | { |
| | | dataNum = 2, |
| | | dataNum = 26, |
| | | addr = plc.readAddr + 8, |
| | | host = plc.ip, |
| | | port = plc.port |
| | | }); |
| | | CMMLog.Info($"下线口 ip:{plc.ip},port:{plc.port},addr:{plc.writeAddr + 8},reuslt:{JsonConvert.SerializeObject(resultTime)}."); |
| | | if (resultTime.errCode == 0) |
| | | { |
| | | string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString(); |
| | | TimeCuoInfoComTwo time = null; |
| | | var timeTwo = MongoDBSingleton.Instance.Find<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), "TimeCuoInfoComTwo"); |
| | | if(timeTwo.Count > 0) |
| | | string empCode = RemoveNull(GetTrayCode(resultTime.result.Skip(2).Take(5).ToArray()));//员工编码 |
| | | string machineCode = RemoveNull(GetTrayCode(resultTime.result.Skip(10).Take(1).ToArray()));//包装机号 |
| | | int needWeight = Convert.ToInt32(Completion(resultTime.result[11]) + Completion(resultTime.result[12]), 2);//产品需求重量 |
| | | int oneWeight = Convert.ToInt32(Completion(resultTime.result[13]) + Completion(resultTime.result[14]), 2);//单托毛重 |
| | | int readWeight = Convert.ToInt32(Completion(resultTime.result[15]) + Completion(resultTime.result[16]), 2);//单托净重 |
| | | int fcWeight = Convert.ToInt32(Completion(resultTime.result[17]) + Completion(resultTime.result[18]), 2);//单托复称重量 |
| | | int trayType = Convert.ToInt32(Completion(resultTime.result[19]), 2);//托盘类型 |
| | | int addState = Convert.ToInt32(Completion(resultTime.result[20]), 2);//叠包层数 |
| | | int bagNumber = Convert.ToInt32(Completion(resultTime.result[21]), 2);//袋号 |
| | | int productTime = Convert.ToInt32(Completion(resultTime.result[22]) + Completion(resultTime.result[23]), 2);//生产日期 |
| | | |
| | | result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | { |
| | | time = timeTwo.OrderBy(a => a.createTime).FirstOrDefault(); |
| | | MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("_id", time._id),Update.Set("TimeCuo", timeCuoData)); |
| | | } |
| | | string wmstaskno = ""; |
| | | WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, time.employeeId, true); |
| | | } |
| | | } |
| | | } |
| | | dataNum = 15, |
| | | addr = plc.readAddr + 140, |
| | | host = plc.ip, |
| | | port = plc.port |
| | | }); |
| | | CMMLog.Info($"下线口,ip:{plc.ip},port:{plc.port},addr:{plc.readAddr + 140},result:{JsonConvert.SerializeObject(result)}"); |
| | | string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString()); |
| | | |
| | | CMMLog.Info($"下线口:timeCuoData:{timeCuoData},empCode:{empCode},machineCode:{machineCode},needWeight:{needWeight},oneWeight:{oneWeight},readWeight:{readWeight}" + |
| | | $",fcWeight:{fcWeight},trayType:{trayType},addState:{addState},bagNumber:{bagNumber},productTime:{productTime},TimeCuo:{timeCuoData}"); |
| | | var timeTwo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuoData), "TimeCuoInfoComTwo"); |
| | | if (timeTwo == null) |
| | | { |
| | | MongoDBSingleton.Instance.Insert<TimeCuoInfoComTwo>(new TimeCuoInfoComTwo |
| | | { |
| | | timeCuo = timeCuoData, |
| | | employeeId = empCode, |
| | | packingMachineNumber = machineCode, |
| | | needWeight = needWeight, |
| | | oneWeight = oneWeight, |
| | | realWeight = readWeight, |
| | | FCWeight = fcWeight, |
| | | trayType = trayType.ToString(), |
| | | isFold = addState, |
| | | bagNumber = bagNumber, |
| | | productData = productTime.ToString(), |
| | | TimeCuo = timeCuoData, |
| | | materialCode = materialCode |
| | | }, "TimeCuoInfoComTwo"); |
| | | } |
| | | else |
| | | { |
| | | CMMLog.Info("下线口设备未配置"); |
| | | var query1 = Query.EQ("TimeCuo", timeCuoData); |
| | | UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight) |
| | | .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType.ToString()) |
| | | .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime.ToString()).Set("TimeCuo", timeCuoData) |
| | | .Set("materialCode", materialCode); |
| | | MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(query1, updateBuilder, "TimeCuoInfoComTwo", UpdateFlags.None); |
| | | } |
| | | string wmstaskno = ""; |
| | | WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, empCode, true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //string trayCode = ""; |
| | | //var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | //{ |
| | | // dataNum = 25, |
| | | // addr = plc.readAddr, |
| | | // host = plc.ip, |
| | | // port = plc.port |
| | | //}); |
| | | //CMMLog.Info($"贴标机获取信息,ip:{plc.ip},port:{plc.port},addr:{plc.readAddr},result:{JsonConvert.SerializeObject(result)}"); |
| | | //if(result != null && result.errCode == 0) |
| | | //{ |
| | | // if (result.result[0] == 1) |
| | | // { |
| | | // //获取物料信息 根据托盘码区分 |
| | | // trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//托盘码 |
| | | // |
| | | // if (!string.IsNullOrEmpty(trayCode)) |
| | | // { |
| | | // var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("trayCode", trayCode)), "TimeCuoInfoComTwo"); |
| | | // if (infoPack == null) |
| | | // { |
| | | // string empCode = RemoveNull(GetTrayCode(result.result.Skip(1).Take(5).ToArray()));//员工编码 |
| | | // string machineCode = RemoveNull(GetTrayCode(result.result.Skip(9).Take(1).ToArray()));//包装机号 |
| | | // int needWeight = Convert.ToInt32(Completion(result.result[10]) + Completion(result.result[11]), 2);//产品需求重量 |
| | | // int oneWeight = Convert.ToInt32(Completion(result.result[12]) + Completion(result.result[13]), 2);//单托毛重 |
| | | // int readWeight = Convert.ToInt32(Completion(result.result[14]) + Completion(result.result[15]), 2);//单托净重 |
| | | // int fcWeight = Convert.ToInt32(Completion(result.result[16]) + Completion(result.result[17]), 2);//单托复称重量 |
| | | // int trayType = Convert.ToInt32(Completion(result.result[18]), 2);//托盘类型 |
| | | // int addState = Convert.ToInt32(Completion(result.result[19]), 2);//叠包层数 |
| | | // int bagNumber = Convert.ToInt32(Completion(result.result[20]), 2);//袋号 |
| | | // int productTime = Convert.ToInt32(Completion(result.result[21]) + Completion(result.result[22]), 2);//生产日期 |
| | | // string timeCuoTwo = Convert.ToInt32(Completion(result.result[23]) + Completion(result.result[24]), 2).ToString(); //时间戳 |
| | | // |
| | | // UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("trayCode", trayCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight) |
| | | // .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType) |
| | | // .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime); |
| | | // //产品批次号 产品型号 物料名称 计量单位均可在erp表中根据物料编码获取 |
| | | // |
| | | // result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | // { |
| | | // dataNum = 15, |
| | | // addr = plc.readAddr + 131, |
| | | // host = plc.ip, |
| | | // port = plc.port |
| | | // }); |
| | | // CMMLog.Info($"贴标机,ip:{plc.ip},port:{plc.port},addr:{plc.readAddr + 131},result:{JsonConvert.SerializeObject(result)}"); |
| | | // string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString()); |
| | | // UpdateBuilder update = Update.Set("materialCode", materialCode).Set("createTime", DateTime.Now); |
| | | // MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), update, UpdateFlags.None); |
| | | // |
| | | // var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel |
| | | // { |
| | | // host = plc.ip, |
| | | // addr = plc.writeAddr, |
| | | // data = 1, |
| | | // port = plc.port |
| | | // }); |
| | | // CMMLog.Debug($"贴标机,写入 ip:{plc.ip},port:{plc.port},addr:{plc.writeAddr}的数据为1."); |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | // |
| | | //var xxPlc = Settings.GetPlcInfo().Where(a => a.deviceType == "27" && a.enable == 1).FirstOrDefault(); |
| | | //if(xxPlc != null) |
| | | //{ |
| | | // if (CheckStartFree(plc.location)) |
| | | // { |
| | | // result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | // { |
| | | // dataNum = 1, |
| | | // addr = plc.readAddr + 1, |
| | | // host = plc.ip, |
| | | // port = plc.port |
| | | // }); |
| | | // |
| | | // CMMLog.Debug($"下线口 ip:{plc.ip},port:{plc.port},addr:{plc.writeAddr + 1},reuslt:{JsonConvert.SerializeObject(result)}."); |
| | | // if (result != null && result.errCode == 0) |
| | | // { |
| | | // if (result.result[0] == 1) |
| | | // { |
| | | // var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | // { |
| | | // dataNum = 2, |
| | | // addr = plc.readAddr + 8, |
| | | // host = plc.ip, |
| | | // port = plc.port |
| | | // }); |
| | | // CMMLog.Debug($"下线口 ip:{plc.ip},port:{plc.port},addr:{plc.writeAddr + 8},reuslt:{JsonConvert.SerializeObject(result)}."); |
| | | // if (resultTime.errCode == 0) |
| | | // { |
| | | // string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString(); |
| | | // TimeCuoInfoComTwo time = null; |
| | | // var timeTwo = MongoDBSingleton.Instance.Find<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), "TimeCuoInfoComTwo"); |
| | | // if (timeTwo.Count > 0) |
| | | // { |
| | | // time = timeTwo.OrderBy(a => a.createTime).FirstOrDefault(); |
| | | // MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("_id", time._id), Update.Set("TimeCuo", timeCuoData)); |
| | | // } |
| | | // string wmstaskno = ""; |
| | | // WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, time.employeeId, true); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // CMMLog.Info("下线口设备未配置"); |
| | | //} |
| | | |
| | | } |
| | | #endregion |