public static double MathOEE(int count, int ct, DateTime startTime, DateTime endTime) { try { if (count <= 0) { return(0.0); } double oee = 0.0; int second = TimeRange.ExecDateDiffSecond(startTime, endTime); oee = Math.Round((double)(count * ct) / (double)second, 2); if (oee < 0 || double.IsNaN(oee) || Double.IsInfinity(oee)) { oee = 0.0; } // oee = oee * 100; return(oee); } catch { throw; } }
public static double MathProductivity(int count, int op, DateTime startTime, DateTime endTime) { try { if (count <= 0) { return(0.0); } double pt = 0.0; //偏移时间 int second = TimeRange.ExecDateDiffSecond(startTime, endTime); ///换算成小时 double hour = Math.Round((double)second / (double)3600, 2); pt = Math.Round((double)count / (double)(hour * op), 2); if (pt < 0 || double.IsNaN(pt) || Double.IsInfinity(pt)) { pt = 0; } return(pt); } catch { throw; } }
/// <summary> /// /// </summary> /// <param name="count"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <returns></returns> public static string MathOEEToString(int count, int ct, DateTime startTime, DateTime endTime) { try { if (count <= 0) { return("0%"); } double oee = 0.0; int second = TimeRange.ExecDateDiffSecond(startTime, endTime); oee = Math.Round((double)(count * ct) / (double)second, 2); oee = oee * 100; if (oee < 0 || double.IsNaN(oee) || Double.IsInfinity(oee)) { oee = 0; } string ret = String.Format("{0:D2}%", (int)oee); return(ret); } catch { throw; } }
private void Timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { try { CLog.WriteSysLog("开始采集数据处理"); if (TimeRange.ExecDateDiffSecond(collectTime, DateTime.Now) > 5) { collectTime = DateTime.Now; CLog.WriteSysLog(DateTime.Now.ToLongTimeString()); Random r = new Random(); emsaddr = emsArray[r.Next(emsArray.Length)]; count += 1; CLog.WriteSysLog(emsaddr.ToString()); PublicVariable.plcL1.TestChangeThreadFun(String.Format("{0:D2}", Convert.ToInt32(BaseVariable.LineID)), count, emsaddr); } } catch (System.Exception ex) { CLog.WriteSysLog(ex.Message.ToString()); } }
/// <summary> /// 处理换型添加记录 /// </summary> /// <param name="unit"></param> /// <returns></returns> public int ProcessAcqLineData(string lineID, string unitid, EMSUnit unit) { int ret = 0; try { ChangeTimeDAL dal = new ChangeTimeDAL(); ChangeTimeMDL mdl = new ChangeTimeMDL(); unit.SetTime = DateTime.Now; mdl.SetTID(unit.SetTime, lineID, unit.EMS, 0); mdl.PLID = lineID; mdl.UNITID = unitid; mdl.PER_PN = this.ems.EMS.ToString(); mdl.CUR_PN = unit.EMS.ToString(); mdl.TIME_MIG = TimeRange.ExecDateDiffSecond(this.ems.SetTime, unit.SetTime); mdl.PER_TIME = this.ems.SetTime; mdl.CUR_TIME = DateTime.Now; int count = dal.IsUionCOUint(unitid, lineID); if (count <= 0) { mdl.SetTID(unit.SetTime, lineID, unit.EMS, 1); ret = dal.AddChangeUnitItem(mdl); } else { count += 1; mdl.SetTID(unit.SetTime, lineID, unit.EMS, count); ret = dal.AddChangeUnitItem(mdl); } LoadEMS(unit); return(ret); } catch { throw; } }
/// <summary> /// 生产效率 //减去吃饭时间,不减去休息时间 /// </summary> /// <param name="count"></param> /// <param name="op"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <returns></returns> public static string MathProductivityToString(int count, int op, DateTime startTime, DateTime endTime) { try { if (count <= 0) { return("0"); } double pt = 0.0; //偏移时间 int second = TimeRange.ExecDateDiffSecond(startTime, endTime); ///换算成小时 double hour = Math.Round((double)second / (double)3600, 2); pt = Math.Round((double)count / (double)(hour * op), 1); // pt = pt * 100; // string ret = String.Format("{0:D2}", (int)pt); if (pt < 0 || double.IsNaN(pt) || Double.IsInfinity(pt)) { pt = 0; } string ret = String.Format("{0:F1}", pt); return(ret); } catch { throw; } }
/// <summary> /// 更新采集单元数据 /// </summary> /// <param name="mdl"></param> /// <param name="curUnit"></param> /// <returns></returns> public int UpdateAcqUnitData(ref AcqLineItemMDL mdl) { int ret = -1; try { AcqLineDAL acqDal = new AcqLineDAL(); ProductDal pdal = new ProductDal(); //获取PN编码 // ProductionMDL productmdl = pdal.GetProductInfo(mdl.PLID, mdl.EMS); //存在产品编码 if (mdl == null || mdl.PN == string.Empty) { mdl.PN = "N/A"; } mdl.PN = productmdl.PN; ////判断是存在有历史数据,有更新区间信息 ////有历史数据 if (acqDal.AcqUintExist2(mdl.PLID, mdl.EMS, mdl.UNITID) > 0) { //获取当前区间的计数 //int percount = GetLastRangCount(mdl); AcqLineItemMDL lastItem = GetLastUnit(mdl); //加一个脉冲信号 lastItem.PR_COUNT += 1; //加一个脉冲信号 CLog.WriteStationLog("PRE_COUNT", mdl.UNITID + "-" + lastItem.PR_COUNT.ToString()); //更新结束时间 和 当前开始时段的时间信息 mdl.TID = lastItem.TID; mdl.TGNAME = lastItem.TGNAME; mdl.PR_COUNT = lastItem.PR_COUNT; mdl.START_TIME = lastItem.START_TIME; mdl.END_TIME = DateTime.Now; mdl.TIME_LENGTH = TimeRange.ExecDateDiffSecond(lastItem.START_TIME, mdl.END_TIME); mdl.UPDATE_TIME = mdl.END_TIME; ret = acqDal.UpdateAcqLineUint(mdl); } else///当前时段的新项目 { int uintSeq = acqDal.IsUionAcqUint(mdl.UNITID, mdl.PLID); mdl.START_TIME = DateTime.Now; mdl.END_TIME = mdl.START_TIME; //型号发生变化重新计数 同时表示换型了 if (uintSeq > 0) { uintSeq += 1; string strSeq = String.Format("{0:D2}", uintSeq); mdl.SetTID(mdl.START_TIME, mdl.PLID, mdl.TGNAME, strSeq); } // mdl.UPDATE_TIME = DateTime.Now; if (productmdl != null || productmdl.OP != 0) { mdl.START_TIME = DateTime.Now.AddSeconds(-productmdl.OP); } else { mdl.START_TIME = DateTime.Now; } mdl.TIME_LENGTH = TimeRange.ExecDateDiffSecond(mdl.START_TIME, mdl.END_TIME); //更新上一个区间产品的时间 AcqLineDAL updateDal = new AcqLineDAL(); updateDal.UpdateAclineUnitByLastUnit(DateTime.Now, mdl.PLID); // modify by guozq 2018/3/26 //添加采集数据 ret = acqDal.AddAcqLine1(mdl); } } catch { throw; } return(ret); }