¶Ô±ÈÐÂÎļþ |
| | |
| | | //using iWare_SCADA_BusinessLogical.BLL; |
| | | //using iWare_SCADA_BusinessLogical.Utils; |
| | | //using iWare_SCADA_Model; |
| | | //using System; |
| | | //using System.Collections.Generic; |
| | | //using System.Data; |
| | | //using System.Globalization; |
| | | //using System.IO; |
| | | //using System.Linq; |
| | | //using System.Text; |
| | | //using System.Threading; |
| | | //using System.Threading.Tasks; |
| | | //using System.Web.UI.WebControls; |
| | | |
| | | //namespace iWare_SCADA_BusinessLogical |
| | | //{ |
| | | // /// <summary> |
| | | // /// OP05 ææ å®ææ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ |
| | | // /// </summary> |
| | | // public class DataCaptureHandler_OP0501 : DataCaptureHandler |
| | | // { |
| | | // public static readonly DataCaptureHandler_OP0501 Instance = new DataCaptureHandler_OP0501(); |
| | | |
| | | // public DataCaptureHandler_OP0501() |
| | | // { |
| | | // } |
| | | |
| | | // public override string WorkingProcedure |
| | | // { |
| | | // get { return _dataCaptureConfig.WorkingProcedure; } |
| | | // } |
| | | |
| | | // public override string DataCapturePointCode |
| | | // { |
| | | // get { return _dataCaptureConfig.DataCapturePointCode; } |
| | | // } |
| | | // public override string DataCapturePointCname |
| | | // { |
| | | // get { return _dataCaptureConfig.DataCapturePointCname; } |
| | | // } |
| | | // public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig) |
| | | // { |
| | | |
| | | // } |
| | | // public override void DataCaptureStart() |
| | | // { |
| | | // if (IsCaptureflag) |
| | | // { |
| | | // //// plcè¿æ¥ |
| | | // //var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig); |
| | | // //if (plcService == null) |
| | | // //{ |
| | | // // SystemValue.lbl_Alert_OP0501 = $"{RandomHelper.GenerateRandomCode(4)} æ²¡ææ¾å°{_dataCaptureConfig.WorkingProcedure}çPLC设å¤"; |
| | | // // return; |
| | | // //} |
| | | // //if (plcService != null && !plcService.IsConnected) |
| | | // //{ |
| | | // // plcService.Close(); |
| | | // // plcService.OpenService(); |
| | | // //} |
| | | |
| | | // while (true) |
| | | // { |
| | | // ThreadStatusMonitor threadStatusMonitor = new ThreadStatusMonitor(); |
| | | // threadStatusMonitor.Threadcode = DataCapturePointCode; |
| | | // threadStatusMonitor.Threadcname = DataCapturePointCname; |
| | | // threadStatusMonitor.Threadendtime = DateTime.Now; |
| | | // //threadStatusMonitor.Threadlastmodifytime = DateTime.Now; |
| | | // threadStatusMonitor.Threadstatue = 0; |
| | | // threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString(); |
| | | // try |
| | | // { |
| | | // ////_dataCaptureConfig |
| | | // //if (plcService == null || !plcService.IsConnected) |
| | | // //{ |
| | | // // SystemValue.lbl_Alert_OP0501 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLCè¿æ¥å·²æå¼ï¼æ£å¨å°è¯æå¼!"; |
| | | // // plcService.Close(); |
| | | // // plcService.OpenService(); |
| | | // // Thread.Sleep(100); |
| | | // // continue; |
| | | // //} |
| | | // //else |
| | | // { |
| | | // //var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType)); |
| | | // //if (SystemValue.value_OP0501.Equals("0") && value.ToString().Equals("1")) |
| | | // {//å½ä¸ä¸æ è®°ä½0ï¼å½åè·åæ 记为1æ¶ï¼ |
| | | // //触åæä½, å¹¶ç»éæåéèµå¼ä¸º1 |
| | | // //ä¸å¡ä»£ç |
| | | // //读ç å®ææ²¡å¥ä¸å¡æä½ï¼è·åäºç»´ç ï¼ç¶åæ¾å°éåä¸ |
| | | // #region ä»å·¥æ§æºè·åç¸å
³äºç»´ç |
| | | // var path = ConfigHelper.GetConfigString("WorkPeiceIDPath");//æç æºæç äºç»´ç è·¯å¾ |
| | | // //æ«æå
±äº«ç®å½å¹¶å°æ°çæä»¶æ«æè¿å ä¸è¬èæå¨15ç§å·¦å³ï¼å¯ä»¥ç¡®è®¤ä¸ä¸ï¼ |
| | | // //æ«æä¿®æ¹æ¶é´å¨ä¸æ¬¡æ«ææ¶é´ä¹å10ç§å°å½åæ¶é´çä¹é´çæä»¶ |
| | | // var dataTime = CommonManager.Instance.CheackPath(Environment.CurrentDirectory + "\\LastModifyTime\\OP05-LastScapTime.txt", 4, -10); |
| | | // var scapEndTime = DateTimeHelper.GetDateTime(); |
| | | // var newFiles = FileHelper.DetectNewFilesCSV(path, 60, Convert.ToDateTime(dataTime), scapEndTime); |
| | | |
| | | |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), |
| | | // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯å¼å§:{dataTime}"); |
| | | |
| | | // foreach (System.IO.FileInfo file in newFiles) |
| | | // { |
| | | // threadStatusMonitor.Threadlastmodifytime = DateTime.Now; |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), |
| | | // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,æä»¶å:{file.FullName}"); |
| | | // DataTable dt = null; |
| | | // dt = CSVHelper.ReadCSV(file.FullName); |
| | | // if (dt == null) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // lock (SystemValue.lock5QRcodeList) |
| | | // { |
| | | // #region æ¸
è¿æç¼å |
| | | // try |
| | | // { |
| | | // //æ¸
è¿æç¼å |
| | | // var lstRemoveKey = SystemValue.QRcodeList |
| | | // .Where(p => p.Value < DateTimeHelper.GetDateTime().AddMinutes(-600)) |
| | | // .Select(p => p.Key).ToList(); |
| | | // if (lstRemoveKey.Count > 0) |
| | | // { |
| | | // foreach (var key in lstRemoveKey) SystemValue.QRcodeList.Remove(key); |
| | | // Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"æ¸
é¤ç¼åæ°éï¼ï¼{lstRemoveKey.Count}ï¼ å©ä½ç¼åæ°éï¼ï¼{SystemValue.QRcodeList.Count}ï¼"); |
| | | // } |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // Log4NetHelper.WriteErrorLog(LogType.PLCOP05, "æ¸
é¤åè¦æ¥æIDç¼åé误ï¼", ex); |
| | | // } |
| | | // #endregion |
| | | |
| | | // ////çééè¦å¤ççäºç»´ç ä¿¡æ¯ |
| | | // //DataRow[] drArr = dt.Select(" æ«ç ç»æ='æå'"); //æ¥è¯¢ |
| | | // //DataTable dtNew = dt.Clone(); |
| | | // //for (int i = 0; i < drArr.Length; i++) |
| | | // //{ |
| | | // // var now = DateTime.Now; |
| | | // // var list = drArr[i]["æ¶é´"].ToString().Split(':'); |
| | | // // var d = new DateTime(now.Year, now.Month, now.Day, Convert.ToInt32(list[0]), Convert.ToInt32(list[1]), Convert.ToInt32(list[2]), DateTimeKind.Local); |
| | | // // //and æ¶é´> '19:19:34:547' |
| | | // // if (Convert.ToDateTime(DateTime.Now.ToShortDateString() + " " +drArr[i]["æ¶é´"]).TimeOfDay> Convert.ToDateTime(DateTime.Now.ToShortDateString() + " 19:19:34:547").TimeOfDay) |
| | | // // dtNew.ImportRow(drArr[i]); |
| | | // // //è·åå°ç工件å·å¼å¸¸ |
| | | // // SystemValue.lbl_Alert_OP0501 = $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"; |
| | | // // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), |
| | | // // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"); |
| | | // //} |
| | | // DataTable newDt = new DataTable(); |
| | | // var dates = file.Name.Split('-', '.'); |
| | | // var date = string.Format("{0:D4}-{1:D2}-{2:D2}", int.Parse(dates[0]), int.Parse(dates[1]), int.Parse(dates[2])); |
| | | // if (DateTimeHelper.GetDateTime().Date != Convert.ToDateTime(date) && DateTimeHelper.GetDateTime().AddDays(-1).Date != Convert.ToDateTime(date)) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // DataRow[] filteredRows = new DataRow[dt.Rows.Count]; |
| | | // if (dt.Rows.Count > 0) |
| | | // { |
| | | // int j = 0; |
| | | // var cache = DataCache.GetCache("OP501-LastTime"); |
| | | // DateTime? lasttime = null; |
| | | // if (cache != null) |
| | | // { |
| | | // lasttime = Convert.ToDateTime(cache); |
| | | // } |
| | | |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), |
| | | // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,å·¥ä»¶ææ°æ¶é´:{(cache == null ? "æ ç¼å" : cache.ToString())}"); |
| | | // for (int i = dt.Rows.Count - 1; i >= 0; i--) |
| | | // {//éåºï¼å³ä¼å
读åæå䏿¡æ°æ® |
| | | // string timeValue = " "; |
| | | // try |
| | | // { |
| | | // timeValue = dt.Rows[i]["æ¶é´"].ToString(); |
| | | // string[] timeComponents = timeValue.Split(':'); |
| | | // string correctedTime = string.Format("{0:D2}:{1:D2}:{2:D2}", int.Parse(timeComponents[0]), int.Parse(timeComponents[1]), int.Parse(timeComponents[2])); |
| | | // var newTime = date + " " + correctedTime; |
| | | // dt.Rows[i]["æ¶é´"] = newTime; |
| | | |
| | | // var currrentTime = Convert.ToDateTime(dt.Rows[i]["æ¶é´"]); |
| | | // if (cache == null) |
| | | // { |
| | | // if (j == 0) |
| | | // { |
| | | // if (currrentTime > DateTimeHelper.GetDateTime().AddHours(-10)) |
| | | // { |
| | | // lasttime = currrentTime; |
| | | // } |
| | | // } |
| | | // var oldTime = DateTime.Now.AddMinutes(-10); |
| | | // if (currrentTime <= oldTime) |
| | | // {//妿exceléçæ¶é´è¦æ¯ å½åå10åéæ¶é´è¦æ©ï¼é£ä¹æå°±å¿½ç¥ä¸å¤çã |
| | | // break; |
| | | // } |
| | | // filteredRows[j] = dt.Rows[i]; |
| | | // } |
| | | // else |
| | | // { |
| | | // var cacheTime = Convert.ToDateTime(cache); |
| | | // if (currrentTime <= cacheTime) |
| | | // {//妿exceléçæ¶é´è¦æ¯ æç¼åä¸çæ¶é´è¦æ©ï¼é£ä¹æå°±å¿½ç¥ä¸å¤çã |
| | | // break; |
| | | // } |
| | | // filteredRows[j] = dt.Rows[i]; |
| | | // } |
| | | |
| | | // if (currrentTime > DateTimeHelper.GetDateTime().AddHours(-10)) |
| | | // { |
| | | // if (lasttime != null && lasttime < currrentTime) |
| | | // { |
| | | // lasttime = currrentTime; |
| | | // } |
| | | // } |
| | | // j++; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // SystemValue.lbl_Alert_OP0501 = $" {_dataCaptureConfig.WorkingProcedure}æä»¶ææ æ¶é´[{timeValue}]å¼å¸¸ï¼è¯·æ¥çæ¥å¿ï¼"; |
| | | // Log4NetHelper.WriteErrorLog(LogType.PLCOP05, $" {_dataCaptureConfig.WorkingProcedure}æä»¶ææ æ¶é´,åºç°å¼å¸¸ï¼", ex); |
| | | // } |
| | | // } |
| | | |
| | | // filteredRows = filteredRows.Where(item => item != null).ToArray(); |
| | | // // 设置ç¼åå¼ |
| | | // DateTime absoluteExpiration = DateTime.Now.AddDays(30); |
| | | // TimeSpan slidingExpiration = TimeSpan.FromMinutes(20); |
| | | // if (slidingExpiration == TimeSpan.Zero) |
| | | // { |
| | | // absoluteExpiration = DateTime.Now.AddDays(30); |
| | | // } |
| | | // else |
| | | // { |
| | | // absoluteExpiration = DateTime.MaxValue; |
| | | // } |
| | | // DataCache.SetCache("OP501-LastTime", lasttime, absoluteExpiration, slidingExpiration); |
| | | // if (filteredRows.Count() <= 0) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // if (file.LastAccessTime < Convert.ToDateTime(dataTime)) continue; |
| | | // using (StreamWriter writer = new StreamWriter(Environment.CurrentDirectory + "\\OP05-LastScapTime.txt", false)) |
| | | // { |
| | | // dataTime = file.LastAccessTime.ToString(); |
| | | // writer.Write(dataTime); |
| | | // } |
| | | // Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"读åå°{filteredRows.Count()}è¡æ°æ®ï¼æ¶é´èå´æ¯{filteredRows[j - 1]["æ¶é´"]}-{filteredRows[0]["æ¶é´"]}"); |
| | | // } |
| | | |
| | | // //// 工件å·ï¼äºç»´ç å¼ï¼ |
| | | // //string WorkPieceID = dt.Rows[0][""].ToString(); |
| | | // //if (WorkPieceID.Length != 22) |
| | | // //{ |
| | | // // //è·åå°ç工件å·å¼å¸¸ |
| | | // // SystemValue.lbl_Alert_HMI01 = $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"; |
| | | // // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), |
| | | // // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"); |
| | | // //} |
| | | |
| | | |
| | | // //SystemValue.QRcodeList.Add("", DateTimeHelper.GetDateTime());//äºç»´ç æ·»å å°åè¡¨ä¸ |
| | | |
| | | // WorkPieceLog wplog = new WorkPieceLog(); |
| | | // wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | // wplog.WorkingProcedure = _dataCaptureConfig.WorkingProcedure; ; |
| | | // //wplog.EquipmentID = WorkingProcedure; |
| | | // wplog.Remarks = "cs"; |
| | | // wplog.MonitoringPoint = DataCapturePointCode; |
| | | // //wplog.CreatedUserName = DataCapturePointCode; |
| | | // SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, DataCapturePointCode, DataCapturePointCname); |
| | | // wplog.CreatedTime = DateTimeHelper.GetDateTime(); |
| | | // wplog.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | // wplog.UpdatedUserName = Environment.MachineName + "èªå¨" + Thread.CurrentThread.ManagedThreadId.ToString(); |
| | | // wplog.IsDeleted = false; |
| | | // wplog.EquipmentID = _dataCaptureConfig.EquipmentID; |
| | | |
| | | // wplog.OnlineTime = DateTimeHelper.GetDateTime();//ç»ä¸çº¿æ¶é´ç¨ |
| | | |
| | | // //wplog.QualityState = 1; |
| | | // wplog.QualityState = (int)QualityStateEnum.OK;//é»è®¤åæ ¼ï¼OP05é»è®¤åæ ¼ |
| | | |
| | | // wplog.ProcessingDuration = 1; |
| | | // wplog.MachineToolState = 1; |
| | | // wplog.AlertType = 1; |
| | | // wplog.WorkPieceNumber = 1; |
| | | // wplog.WorkPieceOnlineTime = Convert.ToDateTime(dataTime); |
| | | // wplog.WorkPieceOfflineTime = Convert.ToDateTime(dataTime).AddHours(1); |
| | | // wplog.WorkPieceStartMachiningTime = Convert.ToDateTime(dataTime); |
| | | // wplog.WorkPieceEndMachiningTime = DateTime.Now.AddDays(7); |
| | | // wplog.KnifeEdgeNumber = 10; |
| | | // wplog.KnifeToolLife = 10; |
| | | // wplog.KnifeToolEarlyWarningLife = 3; |
| | | // wplog.KnifeToolSurplusLife = 10; |
| | | |
| | | // foreach (var item in filteredRows) |
| | | // { |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), |
| | | // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,读å工件äºç»´ç :{item["ææ å
容"].ToString()}"); |
| | | |
| | | // if (item == null) break; |
| | | // wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | // wplog.WorkPieceID = item["ææ å
容"].ToString(); |
| | | // wplog.OfflineTime = Convert.ToDateTime(dataTime); |
| | | // wplog.Remarks = item["æ¶é´"].ToString() + "|" + item["ææ å
容"].ToString() + "|" + item["ææ å
容"].ToString() + "|" + item["æ«ç ç级"].ToString() + "|" + item["æ«ç ç»æ"].ToString(); |
| | | // WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), null, _dataCaptureConfig.IsFeedback); |
| | | |
| | | // threadStatusMonitor.Threadstatue = 1; |
| | | // } |
| | | |
| | | |
| | | // } |
| | | // } |
| | | |
| | | |
| | | // #endregion |
| | | // //var fileCount = ((iWare_SCADA_BusinessLogical.Utils.FindFiles)newFiles).; |
| | | // //Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"æ«æå®æï¼å
±æ«æå°ï¼ï¼{fileCount.Count()}ï¼ä¸ªæä»¶"); |
| | | // } |
| | | // //SystemValue.value_OP0501 = value.ToString(); |
| | | // } |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // threadStatusMonitor.ErrorMsg = $" {_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯,åºç°å¼å¸¸ï¼è¯·æ¥çæ¥å¿ï¼"; |
| | | |
| | | // SystemValue.lbl_Alert_OP0501 = $" {_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯,åºç°å¼å¸¸ï¼è¯·æ¥çæ¥å¿ï¼"; |
| | | // Log4NetHelper.WriteErrorLog(LogType.PLCOP05, $" {_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯,åºç°å¼å¸¸ï¼", ex); |
| | | // } |
| | | // finally |
| | | // { |
| | | // WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor); |
| | | // } |
| | | // //线ç¨å¤ä¹
æ§è¡ä¸æ¬¡ï¼ä¸å
å«ä¸å¡å¤çæ¶é´ï¼ |
| | | // if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10) |
| | | // { |
| | | // Thread.Sleep(3000); |
| | | // } |
| | | // else |
| | | // { |
| | | // Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value); |
| | | // } |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // SystemValue.lbl_Alert_OP0501 = $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ä¸åæ ¡éªï¼è¯·ç¡®è®¤é
置信æ¯ï¼"; |
| | | // Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ä¸åæ ¡éªï¼è¯·ç¡®è®¤é
ç½®å¼å¸¸"); |
| | | // } |
| | | |
| | | // } |
| | | |
| | | // } |
| | | //} |