| | |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 全局-配置报警信息列表 |
| | | /// </summary> |
| | | public static DeviceWarningOutput configDeviceWarningList = DeviceWarningHandler.GetConfigWarningList(); |
| | | |
| | | /// <summary> |
| | | /// 全局—是否可以运行执行出库模式 |
| | | /// </summary> |
| | | public static bool IsAllowRunOutMode = false; |
| | |
| | | startModelTipsThread.Start(); |
| | | |
| | | #region 获取设备数据 |
| | | ParameterizedThreadStart parStart1 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread1 = new Thread(parStart1); |
| | | object o1 = (int)EDevice.一号堆垛机; |
| | | thread1.Start(o1); |
| | | |
| | | ParameterizedThreadStart parStart2 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread2 = new Thread(parStart2); |
| | | object o2 = (int)EDevice.二号堆垛机; |
| | | thread2.Start(o2); |
| | | |
| | | ParameterizedThreadStart parStart3 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread3 = new Thread(parStart3); |
| | | object o3 = (int)EDevice.三号堆垛机; |
| | | thread3.Start(o3); |
| | | |
| | | ParameterizedThreadStart parStart4 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread4 = new Thread(parStart4); |
| | | object o4 = (int)EDevice.四号堆垛机; |
| | | thread4.Start(o4); |
| | | |
| | | |
| | | |
| | | |
| | | var tskGetStationInfo = new Thread(GetStationInfo); |
| | | tskGetStationInfo.Start(); |
| | | |
| | | var _GetStationWarningInfo = new Thread(GetStationWarningInfo); |
| | | _GetStationWarningInfo.Start(); |
| | | |
| | | |
| | | tskSetSrmLable = new Thread(SrmRead_Label); |
| | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取堆垛机的实时信息 |
| | | /// </summary> |
| | | private void GetSrmInfo(object int_device) |
| | | { |
| | | while (true) |
| | | { |
| | | EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_device.ToString()); |
| | | Thread.Sleep(cycleDelay_Device); |
| | | try |
| | | { |
| | | using (var opcClinet = new SrmService.SrmServiceClient()) |
| | | { |
| | | srmViewDict[(int)device] = opcClinet.GetSrmInfo((int)device); |
| | | CastToDevice_SrmRealTime(srmViewDict[(int)device]); |
| | | List<String> warningAddressList = new List<string>(); |
| | | if (srmViewDict[(int)device].R_WarningDBList != null && srmViewDict[(int)device].R_WarningDBList.Length > 0) |
| | | { |
| | | var waringList = srmViewDict[(int)device].R_WarningDBList.ToList(); |
| | | if (waringList != null && waringList.Count > 0) |
| | | { |
| | | for (int i = 0; i < waringList.Count; i++) |
| | | { |
| | | DeviceWarningHandler.SaveWarning(device, iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask, |
| | | waringList[i].Code, waringList[i].Address, waringList[i].Context);//新增报警 |
| | | warningAddressList.Add(waringList[i].Address); |
| | | } |
| | | } |
| | | } |
| | | DeviceWarningHandler.AutoCloseWarning(device, iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask, warningAddressList);//自动关闭报警 |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask, "获取" + device.ToString() + "的实时信息异常:" + ex.Message, ex); |
| | | continue; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 转换为SRM的实时状态 |
| | | /// </summary> |
| | | /// <param name="view"></param> |
| | | private void CastToDevice_SrmRealTime(SrmView view) |
| | | { |
| | | List<Device_SrmRealTime> realTimeList = new List<Device_SrmRealTime>(); |
| | | Device_SrmRealTime obj = new Device_SrmRealTime(); |
| | | EDevice device = (EDevice)Enum.Parse(typeof(EDevice), view.R_SrmNo.ToString()); |
| | | obj = new Device_SrmRealTime() |
| | | { |
| | | SrmCode = view.R_SrmNo.ToString(), |
| | | SrmName = device.ToString(), |
| | | Mode = view.R_Mode.ToString(), |
| | | ModeName = view.ModeName, |
| | | State = view.R_State.ToString(), |
| | | StateName = view.StateName, |
| | | |
| | | TaskID = view.R_TaskNo.ToString(), |
| | | LiftFull = view.R_LiftFull == 1, |
| | | PosX = view.R_PosX, |
| | | PosY = view.R_PosY, |
| | | PosZ = view.R_PosZ, |
| | | PosZName = EnumberHelper.GetEnumName<ESrmForkPosition>(view.R_PosZ).ToString(), |
| | | // XCoordinate=view.r_xc |
| | | |
| | | SrmToPlace = view.SrmToPlace, |
| | | SrmSourcePlace = view.SrmSourcePlace, |
| | | ZCoordinate = view.R_PosZmm.ToString(), |
| | | XCoordinate = view.R_PosXmm.ToString(), |
| | | YCoordinate = view.R_PosYmm.ToString() |
| | | |
| | | }; |
| | | realTimeList.Add(obj); |
| | | |
| | | DeviceSrmRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | |
| | | this.lbl_Mode_FJ.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_FJ); |
| | | this.lbl_XinTiao_FJ.Text = "心跳:" + stationView.R_HandShake_FJ; |
| | | this.lbl_Warning_FJ.Text = "心跳:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_FJ); |
| | | this.lbl_Warning_FJ.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_FJ); |
| | | |
| | | this.lbl_Mode_MB.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_MB); |
| | | this.lbl_XinTiao_MB.Text = "心跳:" + stationView.R_HandShake_MB; |
| | | this.lbl_Warning_MB.Text = "心跳:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_MB); |
| | | this.lbl_Warning_MB.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_MB); |
| | | |
| | | this.lbl_Mode_HB.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_HB); |
| | | this.lbl_XinTiao_HB.Text = "心跳:" + stationView.R_HandShake_HB; |
| | | this.lbl_Warning_HB.Text = "心跳:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_HB); |
| | | this.lbl_Warning_HB.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_HB); |
| | | |
| | | this.lbl_Mode_FX.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_FX); |
| | | this.lbl_XinTiao_FX.Text = "心跳:" + stationView.R_HandShake_FX; |
| | | this.lbl_Warning_FX.Text = "心跳:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_FX); |
| | | this.lbl_Warning_FX.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_FX); |
| | | |
| | | ////显示RGV任务完成和完成确认信号 |
| | | //this.lbl_R_RGV_Finish.Text = "RGV任务完成:" + rgvView.R_RGV_Finish; |
| | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取Station 报警信息 |
| | | /// </summary> |
| | | /// <param name="obj"></param> |
| | | private async void GetStationWarningInfo(object obj) |
| | | { |
| | | while (true) |
| | | { |
| | | Thread.Sleep(2000);//1秒钟读取一次 |
| | | try |
| | | { |
| | | if (stationServiceClient == null) |
| | | { |
| | | continue; |
| | | } |
| | | /* |
| | | iWareCC.StationService.DeviceWarningInfo[] waringList = await stationServiceClient.GetWaringInfoListAsync((int)EDevice.Station, configDeviceWarningList.wmsConfigDeviceWarnings.ToArray()); |
| | | |
| | | //显示报警信息 |
| | | List<String> warningCodeList = new List<string>(); |
| | | if (waringList != null && waringList.Length > 0) |
| | | { |
| | | for (int i = 0; i < waringList.Length; i++) |
| | | { |
| | | var findObj = configDeviceWarningList.wms_config_device_warning_list.Where(x => x.WarningCode == waringList[i].Codek__BackingField).FirstOrDefault(); |
| | | DeviceWarningHandler.SaveWarning(EDevice.Station, iWareCommon.Utils.LogType.StationThreadService, |
| | | findObj.WarningCode, findObj.DeviceAreaCode, findObj.WarningContent, findObj.DeviceWarningType);//新增报警 |
| | | warningCodeList.Add(findObj.WarningCode); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | |
| | | } |
| | | DeviceWarningHandler.AutoCloseWarning(EDevice.Station, iWareCommon.Utils.LogType.StationThreadService, warningCodeList);//自动关闭报警 |
| | | |
| | | //*/ |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | rgvView = null; |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.StationThreadService, "获取站点信息出现异常:" + ex.Message, ex); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |