/// <summary> /// OPCCLIENT数据改变事件处理方法 /// </summary> private void OpcClient_DataChanged(MSTL.OpcClient.Model.DataChangedEventArgs e) { try { foreach (var item in e.Data) { //判断PLC连接 if (item.Quality.Equals(Opc.Da.Quality.Bad)) { continue; } if (item.TagLongName == null) { continue; } if (!BizHandle.Instance.alarmInfos.ContainsKey(item.TagLongName)) { continue; } BizHandle.Instance.alarmInfos[item.TagLongName].TagValue = Convert.ToInt32(item.TagValue ?? 0); } } catch (Exception ex) { log.Error($"[异常]执行OpcClient_DataChanged(MSTL.OpcClient.Model.DataChangedEventArgs e)读取OPC信息失败:{ex.ToString()}"); } }
/// <summary> /// OPCCLIENT数据改变事件处理方法 /// </summary> /// <param name="e"></param> private void OpcClient_DataChanged(MSTL.OpcClient.Model.DataChangedEventArgs e) { try { foreach (var item in e.Data) { //判断PLC连接 if (item.Quality.Equals(Opc.Da.Quality.Bad)) { continue; } if (item.TagLongName == null) { continue; } //检查是否为站台的读取项 if (!BizHandle.Instance.readItems.Keys.Contains(item.TagLongName)) { continue; } var items = BizHandle.Instance.readItems[item.TagLongName]; //获取站台号 var locNo = BizHandle.Instance.readItems[item.TagLongName].LocNo; #region 绑定读取值 switch (items.BusIdentity) { case "Read.TaskNo": BizHandle.Instance.locDic[locNo].plcStatus.TaskNo = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.PalletNo": BizHandle.Instance.locDic[locNo].plcStatus.PalletNo = (item.TagValue ?? 0).ToString().Trim(); break; case "Read.SlocArea": BizHandle.Instance.locDic[locNo].plcStatus.SlocArea = (item.TagValue ?? 0).ToString().Trim(); break; case "Read.SlocNo": BizHandle.Instance.locDic[locNo].plcStatus.SlocNo = (item.TagValue ?? 0).ToString().Trim(); break; case "Read.ElocArea": BizHandle.Instance.locDic[locNo].plcStatus.ElocArea = (item.TagValue ?? 0).ToString().Trim(); break; case "Read.ElocNo": BizHandle.Instance.locDic[locNo].plcStatus.ElocNo = (item.TagValue ?? 0).ToString().Trim(); break; case "Read.StatusAuto": BizHandle.Instance.locDic[locNo].plcStatus.StatusAuto = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.StatusFault": BizHandle.Instance.locDic[locNo].plcStatus.StatusFault = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.StatusLoading": BizHandle.Instance.locDic[locNo].plcStatus.StatusLoading = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.StatusRequest": BizHandle.Instance.locDic[locNo].plcStatus.StatusRequest = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.StatusFree": BizHandle.Instance.locDic[locNo].plcStatus.StatusFree = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.StatusToLoad": BizHandle.Instance.locDic[locNo].plcStatus.StatusToLoad = Convert.ToInt32(item.TagValue ?? 0); break; } #endregion } } catch (Exception ex) { log.Error($"[异常]执行OpcClient_DataChanged(MSTL.OpcClient.Model.DataChangedEventArgs e)读取OPC信息失败:{ex.ToString()}"); } }
/// <summary> /// OPCCLIENT数据改变事件处理方法 /// </summary> /// <param name="e"></param> private void OpcClient_DataChanged(MSTL.OpcClient.Model.DataChangedEventArgs e) { try { foreach (var item in e.Data) { //判断PLC连接 if (item.Quality.Equals(Opc.Da.Quality.Bad)) { continue; } //检查是否为堆垛机的读取项 var items = BizHandle.Instance.readItems.FirstOrDefault(p => p.TagLongName == item.TagLongName); if (items == null) { continue; } #region 绑定读取值 switch (items.BusIdentity) { case "Read.DeviceId": BizHandle.Instance.srm.plcStatus.DeviceId = (item.TagValue ?? 0).ToString(); break; case "Read.HeartBeat": BizHandle.Instance.srm.plcStatus.HeartBeat = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.OperateMode": BizHandle.Instance.srm.plcStatus.OperateMode = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.MissionState": BizHandle.Instance.srm.plcStatus.MissionState = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.MissionType": BizHandle.Instance.srm.plcStatus.MissionType = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.MissionId": BizHandle.Instance.srm.plcStatus.MissionId = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.PalletId": BizHandle.Instance.srm.plcStatus.PalletNo = (item.TagValue ?? 0).ToString(); break; case "Read.ActPosBay": BizHandle.Instance.srm.plcStatus.ActPosBay = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActPosLevel": BizHandle.Instance.srm.plcStatus.ActPosLevel = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActPosX": BizHandle.Instance.srm.plcStatus.ActPosX = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActPosY": BizHandle.Instance.srm.plcStatus.ActPosY = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActPosZ": BizHandle.Instance.srm.plcStatus.ActPosZ = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActPosZDeep": BizHandle.Instance.srm.plcStatus.ActPosZDeep = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActSpeedX": BizHandle.Instance.srm.plcStatus.ActSpeedX = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActSpeedY": BizHandle.Instance.srm.plcStatus.ActSpeedY = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActSpeedZ": BizHandle.Instance.srm.plcStatus.ActSpeedZ = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.ActSpeedZDeep": BizHandle.Instance.srm.plcStatus.ActSpeedZDeep = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.LoadStatus": BizHandle.Instance.srm.plcStatus.LoadStatus = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.FaultNo": BizHandle.Instance.srm.plcStatus.FaultNo = Convert.ToInt32(item.TagValue ?? 0); break; case "Read.NoFunction": BizHandle.Instance.srm.plcStatus.NoFunction = Convert.ToInt32(item.TagValue ?? 0); break; } #endregion } } catch (Exception ex) { log.Error($"[异常]执行OpcClient_DataChanged(MSTL.OpcClient.Model.DataChangedEventArgs e)读取OPC信息失败:{ex.ToString()}"); } }