| | |
| | | { |
| | | if (SystemValue.isStartedImitateModel) |
| | | { |
| | | var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig); |
| | | //var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig); |
| | | |
| | | |
| | | WorkPieceLog wplog = new WorkPieceLog(); |
| | | wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wplog.WorkingProcedure = WorkingProcedure; |
| | | wplog.EquipmentID = WorkingProcedure; |
| | | wplog.Remarks = WorkingProcedure; |
| | | wplog.MonitoringPoint = DataCapturePointCode; |
| | | wplog.CreatedTime = DateTimeHelper.GetDateTime(); |
| | | wplog.CreatedUserName = DataCapturePointCode; |
| | | wplog.IsDeleted = false; |
| | | //var valuecol = plcService.ReadValuePoint("2050", "28", 25, typeof(string)); |
| | | //WorkPieceLog wplog = new WorkPieceLog(); |
| | | //wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | //wplog.WorkingProcedure = WorkingProcedure; |
| | | //wplog.EquipmentID = WorkingProcedure; |
| | | //wplog.Remarks = WorkingProcedure; |
| | | //wplog.MonitoringPoint = DataCapturePointCode; |
| | | //wplog.CreatedTime = DateTimeHelper.GetDateTime(); |
| | | //wplog.CreatedUserName = DataCapturePointCode; |
| | | //wplog.IsDeleted = false; |
| | | ////var valuecol = plcService.ReadValuePoint("2050", "28", 25, typeof(string)); |
| | | |
| | | wplog.EquipmentID = _dataCaptureConfig.EquipmentID; |
| | | wplog.WorkPieceID = WorkPieceID; |
| | | wplog.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | wplog.UpdatedUserName = DataCapturePointCode; |
| | | wplog.OnlineTime = DateTimeHelper.GetDateTime();//给上线时间用 |
| | | //wplog.EquipmentID = _dataCaptureConfig.EquipmentID; |
| | | //wplog.WorkPieceID = WorkPieceID; |
| | | //wplog.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | //wplog.UpdatedUserName = DataCapturePointCode; |
| | | //wplog.OnlineTime = DateTimeHelper.GetDateTime();//给上线时间用 |
| | | |
| | | //var valueid = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, _dataCaptureConfig.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType)); |
| | | //wplog.WorkPieceID = PLCManger.GetWorkPieceIDForPLC(_dataCaptureConfig, plcService); |
| | | if (wplog.WorkPieceID.Length != 22) |
| | | {//获取到的工件号异常 |
| | | return; |
| | | } |
| | | else |
| | | {//获取其他配置的待采集项 |
| | | ////var valueid = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, _dataCaptureConfig.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType)); |
| | | ////wplog.WorkPieceID = PLCManger.GetWorkPieceIDForPLC(_dataCaptureConfig, plcService); |
| | | //if (wplog.WorkPieceID.Length != 22) |
| | | //{//获取到的工件号异常 |
| | | // return; |
| | | //} |
| | | //else |
| | | //{//获取其他配置的待采集项 |
| | | |
| | | //foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode)) |
| | | //{ |
| | | // var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType)); |
| | | // wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//给动态字段赋值 |
| | | // //foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode)) |
| | | // //{ |
| | | // // var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType)); |
| | | // // wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//给动态字段赋值 |
| | | |
| | | //} |
| | | } |
| | | //读取二维码后更新数据库 |
| | | WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), plcService, _dataCaptureConfig.IsFeedback); |
| | | // //} |
| | | //} |
| | | ////读取二维码后更新数据库 |
| | | //WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), plcService, _dataCaptureConfig.IsFeedback); |
| | | |
| | | |
| | | return; |
| | |
| | | //plcService.Close(); |
| | | //plcService.OpenService(); |
| | | } |
| | | string value_01 = ""; |
| | | string value_01 = "FALSE";//注意:默认是FALSE 【Editby shaocx,2024-09-05】 |
| | | while (true) |
| | | { |
| | | threadStatusMonitor.ErrorMsg = ""; |
| | |
| | | //string hostname = Environment.MachineName; |
| | | |
| | | object value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType)); |
| | | if (value_01.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE")) |
| | | {//当上一标记位0,当前获取标记为1时, |
| | | //触发操作, 并给静态变量赋值为1 |
| | | //业务代码 |
| | | threadStatusMonitor.Threadlastmodifytime = DateTime.Now; |
| | | WorkPieceLog wplog = new WorkPieceLog(); |
| | | WorkPieceLog wplog = null; |
| | | |
| | | var value_bool = value.ToString().ToUpper().Equals("TRUE"); |
| | | if (value_bool) |
| | | { |
| | | wplog = new WorkPieceLog(); |
| | | wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wplog.WorkingProcedure = WorkingProcedure; |
| | | wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ; |
| | | wplog.Remarks = WorkingProcedure; |
| | | wplog.MonitoringPoint = DataCapturePointCode; |
| | | //wplog.CreatedUserName = DataCapturePointCode; |
| | | SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, DataCapturePointCode, DataCapturePointCname); |
| | | wplog.CreatedTime = DateTimeHelper.GetDateTime(); |
| | | wplog.CreatedUserName = DataCapturePointCode; |
| | | wplog.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString(); |
| | | wplog.OnlineTime = DateTimeHelper.GetDateTime(); |
| | |
| | | |
| | | //监控测试数据,模拟,测试 |
| | | MonitorHelper.MonitorTestForOP3501(_dataCaptureConfig, value, colConfig, wplog); |
| | | |
| | | //特殊处理OP50 【Editby shaocx,2024-08-16】 |
| | | string sideValue = GetSideForOP50(plcService, wplog); |
| | | wplog.MonitoringPoint += sideValue; |
| | | wplog.CreatedUserName = wplog.MonitoringPoint; |
| | | |
| | | //读取二维码后更新数据库 |
| | | WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), plcService, _dataCaptureConfig.IsFeedback); |
| | | |
| | | threadStatusMonitor.Threadstatue = 1; |
| | | |
| | | //监控上线 |
| | | MonitorHelper.MonitorTestForLine(_dataCaptureConfig, value, colConfig, wplog.WorkPieceID); |
| | | } |
| | | value_01 = value.ToString(); |
| | | if (wplog != null) |
| | | { |
| | | var isRight = SystemBussinessHelper.ValidateIsRightWorkPieceID(wplog.WorkPieceID); |
| | | if (isRight) |
| | | { |
| | | #region 处理业务 |
| | | |
| | | if (value_01.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE")) |
| | | {//当上一标记位0,当前获取标记为1时, |
| | | //触发操作, 并给静态变量赋值为1 |
| | | //业务代码 |
| | | threadStatusMonitor.Threadlastmodifytime = DateTime.Now; |
| | | |
| | | //特殊处理OP50 【Editby shaocx,2024-08-16】 |
| | | string sideValue = GetSideForOP50(plcService, wplog); |
| | | wplog.MonitoringPoint += sideValue; |
| | | //wplog.CreatedUserName = wplog.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, wplog.MonitoringPoint, DataCapturePointCname); |
| | | |
| | | //读取二维码后更新数据库 |
| | | WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), plcService, _dataCaptureConfig.IsFeedback); |
| | | |
| | | threadStatusMonitor.Threadstatue = 1; |
| | | |
| | | } |
| | | value_01 = value.ToString(); |
| | | |
| | | #endregion |
| | | } |
| | | } |
| | | } |
| | | threadStatusMonitor.Remarks = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}"; |
| | | if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10) |
| | | { |
| | | threadStatusMonitor.ThreadFrequency = 5000; |
| | | Thread.Sleep(5000); |
| | | threadStatusMonitor.ThreadFrequency = 700; |
| | | Thread.Sleep(700); |
| | | } |
| | | else |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="plcService"></param> |
| | | /// <returns></returns> |
| | | //private string GetSideForOP50(PLCService plcService, WorkPieceLog wplog) |
| | | //{ |
| | | // try |
| | | // { |
| | | // if (!(DataCapturePointCode.Contains("OP5001A") || DataCapturePointCode.Contains("OP5001B"))) |
| | | // { |
| | | // return ""; |
| | | // } |
| | | // string title = $"读取 {DataCapturePointCode}工序时,获取OP50的哪个面,工件号:{wplog.WorkPieceID}"; |
| | | |
| | | // int i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.0"); |
| | | // if (i_value_M88 == 1) |
| | | // { |
| | | // title += ",返回1"; |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | // return "1"; |
| | | // } |
| | | |
| | | // i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.2"); |
| | | // if (i_value_M88 == 1) |
| | | // { |
| | | // title += ",返回2"; |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | // return "2"; |
| | | // } |
| | | |
| | | // i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.4"); |
| | | // if (i_value_M88 == 1) |
| | | // { |
| | | // title += ",返回3"; |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | // return "3"; |
| | | // } |
| | | |
| | | // i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.6"); |
| | | // if (i_value_M88 == 1) |
| | | // { |
| | | // title += ",返回4"; |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | // return "4"; |
| | | // } |
| | | |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序时,无效数值,获取OP50的哪个面,i_value_M88:{i_value_M88},工件号:{wplog.WorkPieceID}"); |
| | | // return ""; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序时异常,获取OP50的哪个面,工件号:{wplog.WorkPieceID}", ex); |
| | | // return ""; |
| | | // } |
| | | //} |
| | | /// <summary> |
| | | /// 获取OP50的某个工位的哪个面 |
| | | /// </summary> |
| | | /// <param name="plcService"></param> |
| | | /// <returns></returns> |
| | | private string GetSideForOP50(PLCService plcService, WorkPieceLog wplog) |
| | | { |
| | | try |
| | |
| | | { |
| | | return ""; |
| | | } |
| | | string title = $"读取 {DataCapturePointCode}工序时,获取OP50的哪个面,工件号:{wplog.WorkPieceID}"; |
| | | |
| | | int i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.0"); |
| | | if (i_value_M88 == 1) |
| | | object value_M88 = plcService.ReadValuePointV2("M88", PLCManger.GetTypeForString("int")); |
| | | int i_value_M88 = 0; |
| | | var isRight = int.TryParse(value_M88.ToString(), out i_value_M88); |
| | | Log4NetHelper.WriteInfoLog(LogType.MonitorOP50Side, $"读取 {DataCapturePointCode}工序监控测量标记数据,获取OP50的哪个面,i_value_M88:{i_value_M88},工件号:{wplog.WorkPieceID}"); |
| | | if (isRight) |
| | | { |
| | | title += ",返回1"; |
| | | Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | return "1"; |
| | | if (i_value_M88 == 64) |
| | | { |
| | | return "1"; |
| | | } |
| | | else if (i_value_M88 == 16384) |
| | | {//原定为16384为正在旋转,监控下来,发现 16384应该是工位1的问题 【Editby shaocx,2024-06-12】 |
| | | return "1"; |
| | | } |
| | | else if (i_value_M88 == 256) |
| | | { |
| | | return "2"; |
| | | } |
| | | else if (i_value_M88 == 1024) |
| | | { |
| | | return "3"; |
| | | } |
| | | else if (i_value_M88 == 4096) |
| | | { |
| | | return "4"; |
| | | } |
| | | } |
| | | |
| | | i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.2"); |
| | | if (i_value_M88 == 1) |
| | | { |
| | | title += ",返回2"; |
| | | Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | return "2"; |
| | | } |
| | | |
| | | i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.4"); |
| | | if (i_value_M88 == 1) |
| | | { |
| | | title += ",返回3"; |
| | | Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | return "3"; |
| | | } |
| | | |
| | | i_value_M88 = _GetSideForOP50(plcService, wplog, "M87.6"); |
| | | if (i_value_M88 == 1) |
| | | { |
| | | title += ",返回4"; |
| | | Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), title); |
| | | return "4"; |
| | | } |
| | | |
| | | Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序时,无效数值,获取OP50的哪个面,i_value_M88:{i_value_M88},工件号:{wplog.WorkPieceID}"); |
| | | Log4NetHelper.WriteErrorLog(LogType.MonitorOP50Side, $"读取 {DataCapturePointCode}工序监控测量标记数据时,无效数值,获取OP50的哪个面,,i_value_M88:{i_value_M88},工件号:{wplog.WorkPieceID}", null); |
| | | return ""; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序时异常,获取OP50的哪个面,工件号:{wplog.WorkPieceID}", ex); |
| | | Log4NetHelper.WriteErrorLog(LogType.MonitorOP50Side, $"读取 {DataCapturePointCode}工序监控测量标记数据时异常,获取OP50的哪个面,工件号:{wplog.WorkPieceID}", ex); |
| | | return ""; |
| | | } |
| | | } |