public string GetMeasureSite(int id) { string result = string.Empty; List <MonitorTree> monitors = monitorTreeRepository.GetDatas <MonitorTree>(t => true, true).ToList(); List <MonitorTreeType> mtTypes = monitorTreeTypeRepository.GetDatas <MonitorTreeType>(t => true, true).ToList(); MeasureSite msite = measureSiteRepository.GetByKey(id); if (msite != null) { int serialNo = 0; string msName = string.Empty; var msType = measureSiteTypeRepository.GetByKey(msite.MSiteName); if (msType != null) { msName = msType.Name; Int32.TryParse(msType.Describe, out serialNo); } var device = deviceRepository.GetByKey(msite.DevID); if (device != null) { result = Json.Stringify(getdata.GetMeasuresite(msite, monitors, device, msName, serialNo, mtTypes)); } } return(result); }
/// <summary> /// 包络历史表中添加数据 /// </summary> /// <param name="param">采集数据对象</param> /// <param name="site">测点信息</param> /// <param name="dev">设备信息</param> /// <param name="vibSignal">信号类型信息</param> /// <param name="peakWarnValue">峰值高报值</param> /// <param name="peakAlmValue">峰值高高报值</param> /// <param name="carpetWarnValue">地毯值高报值</param> /// <param name="carpetAlmValue">地毯值高高报值</param> private void InsterVibratingSingalHisEnvl(UploadWaveDataParameter param, MeasureSite site, Device dev, VibSingal vibSignal, float?peakWarnValue, float?peakAlmValue, float?carpetWarnValue, float?carpetAlmValue, float realSamplingFrequency, bool isSaveWave = true) { int status = GetSignalStatus(vibSignal.SingalID); VibratingSingalCharHisEnvl vibSingalHisAcc = new VibratingSingalCharHisEnvl() { SingalID = vibSignal.SingalID, MsiteID = site.MSiteID, DevID = dev.DevID, SamplingDate = param.SamplingDate, WaveDataPath = isSaveWave ? GetWaveTxtFileName(vibSignal.SingalID, param.SamplingDate) : string.Empty, TransformCofe = 1, SamplingPointData = param.WaveData == null ? 0 : param.WaveData.Length, AlmStatus = status, DAQStyle = 1, PeakValue = param.PeakValue, CarpetValue = param.CarpetValue, PeakWarnValue = peakWarnValue, PeakAlmValue = peakAlmValue, CarpetWarnValue = carpetWarnValue, CarpetAlmValue = carpetAlmValue, MonthDate = param.SamplingDate.Month, RealSamplingFrequency = realSamplingFrequency, Rotate = GetRotationFrequency(site, param.SamplingDate, 1), SamplingDataType = (int)EnumSamplingDataType.WiredSensor }; //vibSignalRepository.Update(vibSignal); vibratingSingalCharHisEnvlRepository.AddNew(vibSingalHisAcc); }
/// <summary> /// 创建新的报警记录对象 /// </summary> /// <param name="dev">设备信息</param> /// <param name="msite">测量位置信息</param> /// <param name="signal">振动信号信息</param> /// <param name="signalAlmSet">振动信号报警设置信息</param> /// <param name="samplingData">采集时间</param> /// <param name="value">采集数据值</param> /// <returns></returns> private DevAlmRecord CreatNewVibrationAlmRecord(Device dev, MeasureSite msite, VibSingal signal, SignalAlmSet signalAlmSet, DateTime samplingTime, float?value) { try { DevAlmRecord nRecord = new DevAlmRecord(); //GetMonitorTree getMonitorTree = new GetMonitorTree(wgRepository, deviceRepository, monitorTreeRepository); nRecord.DevID = dev.DevID; nRecord.DevName = dev.DevName; nRecord.DevNO = dev.DevNO.ToString(); nRecord.MSiteID = msite.MSiteID; string measureSiteName = string.Empty; var measureSiteType = cacheDICT.GetInstance().GetCacheType <MeasureSiteType>(p => p.ID == msite.MSiteName).FirstOrDefault(); //空判断 王颖辉 2016-08-30 if (measureSiteType != null) { measureSiteName = measureSiteType.Name; } nRecord.MSiteName = measureSiteName; nRecord.SingalID = signal.SingalID; string singalName = string.Empty; var vibratingSingalType = cacheDICT.GetInstance().GetCacheType <VibratingSingalType>(p => p.ID == signal.SingalType).FirstOrDefault(); if (vibratingSingalType != null) { singalName = vibratingSingalType.Name; } nRecord.SingalName = singalName; nRecord.SingalAlmID = signalAlmSet.SingalAlmID; string eigenValueName = string.Empty; var eigenValueType = cacheDICT.GetInstance().GetCacheType <EigenValueType>(p => p.ID == signalAlmSet.ValueType).FirstOrDefault(); if (eigenValueType != null) { eigenValueName = eigenValueType.Name; } nRecord.SingalValue = eigenValueName; nRecord.MSAlmID = (int)EnumAlarmRecordType.DeviceVibration; nRecord.AlmStatus = signalAlmSet.Status; nRecord.SamplingValue = value; nRecord.WarningValue = signalAlmSet.WarnValue; nRecord.DangerValue = signalAlmSet.AlmValue; nRecord.BDate = samplingTime; nRecord.EDate = samplingTime; nRecord.LatestStartTime = samplingTime; nRecord.MonitorTreeID = string.Empty;//getMonitorTree.ConvertMonitorTreeIDString(dev.DevID, null); nRecord.Content = string.Format("{0}{1}{2}{3}{4}", nRecord.DevName, nRecord.MSiteName, nRecord.SingalName, nRecord.SingalValue, ConvertStatusToString(signalAlmSet.Status)); return(nRecord); } catch (Exception ex) { LogHelper.WriteLog(ex); return(null); } }
private AlarmThreshold GetVoltAlmSet(VoltageSetMSiteAlm voltAlmSet) { AlarmThreshold alarm = null; MeasureSite site = measureSiteRepository.GetByKey(voltAlmSet.MsiteID); if (site != null) { YunyiCloudDataType type = YunyiCloudDataType.Sensor; string valueType = CommonVariate.WS_VOLTAGE_SET; int objectid = (int)site.WSID; alarm = getdata.GetMeasureSiteAlmSet(voltAlmSet, type, objectid, valueType); } return(alarm); }
private void VoltagePost(VoltageData voltage) { MeasureSite site = MeasureSiteRepository.GetByKey(voltage.MSiteID); if (site != null) { GetYunyiInterfaceData getData = new GetYunyiInterfaceData(); SensorPerformance perg = getData.GetSensorPerformance(voltage, site); if (perg != null) { List <SensorPerformance> lt = new List <SensorPerformance>(); lt.Add(perg); string result = iCMS.Common.Component.Tool.Extensions.Json.Stringify(lt); string response = CommunicationHelper.SendData(result, CommonVariate.Cloud_URL_Sensorperfs); } } }
private AlarmThreshold GetTempeAlmSet(TempeDeviceSetMSiteAlm almset) { AlarmThreshold alarm = null; GetYunyiInterfaceData getData = new GetYunyiInterfaceData(); MeasureSite site = measureSiteRepository.GetByKey(almset.MsiteID); if (site != null) { YunyiCloudDataType type = YunyiCloudDataType.MeasureSite; string valueType = CommonVariate.DEVICE_TEMPE_SET; int objectid = almset.MsiteID; type = YunyiCloudDataType.MeasureSite; alarm = getData.GetMeasureSiteAlmSet(almset, type, objectid, valueType); } return(alarm); }
private CloudSignal GetCloudSignal(VibSingal signal) { CloudSignal cSignal = null; List <MonitorTree> monitors = monitorTreeRepository.GetDatas <MonitorTree>(t => true, true).ToList(); MeasureSite site = measureSiteRepository.GetByKey(signal.MSiteID); List <MonitorTreeType> mtTypes = monitorTreeTypeRepository.GetDatas <MonitorTreeType>(t => true, true).ToList(); if (site != null) { Device device = deviceRepository.GetByKey(site.DevID); if (device != null) { //将波长上下限,带宽,滤波等信息转换为实际的值 GetVibSignalPara(signal); cSignal = getdata.GetSignal(signal, site, device, monitors, mtTypes); } } return(cSignal); }
/// <summary> /// 速度历史表中添加数据 /// </summary> /// <param name="param">采集数据对象</param> /// <param name="site">测点信息</param> /// <param name="dev">设备信息</param> /// <param name="vibSignal">信号类型信息</param> /// <param name="peakWarnValue">峰值高报值</param> /// <param name="peakAlmValue">峰值高高报值</param> /// <param name="peakPeakWarnValue">峰峰值高报值</param> /// <param name="peakPeakAlmValue">峰峰值高高报值</param> /// <param name="effWarnValue">有效值高报值</param> /// <param name="effAlmValue">有效值高高报值</param> private void InsterVibratingSingalHisVel(UploadWaveDataParameter param, MeasureSite site, Device dev, VibSingal vibSignal, float?peakWarnValue, float?peakAlmValue, float?peakPeakWarnValue, float?peakPeakAlmValue, float?effWarnValue, float?effAlmValue, float realSamplingFrequency, bool isWaveDataSaved = true) { string rotate = ConstObject.RotationFrequency_Default; if (dev.Rotate > 0) { rotate = CalculateRotationFrequencyByVelocityWave(param, dev.Rotate, vibSignal); } int status = GetSignalStatus(vibSignal.SingalID); VibratingSingalCharHisVel vibSingalHisVel = new VibratingSingalCharHisVel() { SingalID = vibSignal.SingalID, MsiteID = site.MSiteID, DevID = dev.DevID, SamplingDate = param.SamplingDate, WaveDataPath = isWaveDataSaved ? GetWaveTxtFileName(vibSignal.SingalID, param.SamplingDate) : null, TransformCofe = 1, SamplingPointData = param.WaveData == null ? 0 : param.WaveData.Length, AlmStatus = status, DAQStyle = 1, PeakValue = param.PeakValue, PeakPeakValue = param.PeakPeakValue, EffValue = param.EffectiveValue, PeakWarnValue = peakWarnValue, PeakAlmValue = peakAlmValue, PeakPeakWarnValue = peakPeakWarnValue, PeakPeakAlmValue = peakPeakAlmValue, EffWarnValue = effWarnValue, EffAlmValue = effAlmValue, MonthDate = param.SamplingDate.Month, RealSamplingFrequency = realSamplingFrequency, Rotate = rotate, SamplingDataType = (int)EnumSamplingDataType.WiredSensor, }; vibratingSingalCharHisVelRepository.AddNew(vibSingalHisVel); }
private Sensor GetSensor(WS ws) { Sensor sensor = null; List <MonitorTree> monitors = monitorTreeRepository.GetDatas <MonitorTree>(t => true, true).ToList(); List <MonitorTreeType> mtTypes = monitorTreeTypeRepository.GetDatas <MonitorTreeType>(t => true, true).ToList(); MeasureSite site = measureSiteRepository.GetDatas <MeasureSite>(t => t.WSID == ws.WSID, false).FirstOrDefault(); if (site != null) { var msType = measureSiteTypeRepository.GetByKey(site.MSiteName); if (msType != null) { string siteName = msType.Name; Device device = deviceRepository.GetDatas <Device>(t => t.DevID == site.DevID, false).FirstOrDefault(); if (device != null) { sensor = getdata.GetSensor(ws, site, device, monitors, siteName, mtTypes); } } } return(sensor); }
private Alarm GetWsnAlarmRecord(WSnAlmRecord record) { Alarm alarm = null; GetYunyiInterfaceData getData = new GetYunyiInterfaceData(); MeasureSite site = measureSiteRepository.GetByKey(record.MSiteID); Device device = deviceRepository.GetByKey(record.DevID); if (site == null || device == null) { return(alarm); } switch (record.MSAlmID) { //传感器温度 不推送 case 3: break; //传感器电池电压 case 4: alarm = getData.GetWSAlarm(record, site, device); break; //传感器连接 case 5: alarm = getData.GetWSAlarm(record, site, device); break; //6 网关连接 case 6: alarm = getData.GetWGAlarm(record); break; default: break; } return(alarm); }
/// <summary> /// 创建新的报警记录对象 /// </summary> /// <param name="dev">设备信息</param> /// <param name="msite">测量位置信息</param> /// <param name="msiteAlmSite">设备温度告警设置</param> /// <param name="samplingTime">采集时间</param> /// <param name="value">采集值</param> /// <returns></returns> private DevAlmRecord CreatNewTempAlmRecord(Device dev, MeasureSite msite, TempeDeviceSetMSiteAlm msiteAlmSite, DateTime samplingTime, float value) { try { DevAlmRecord nRecord = new DevAlmRecord(); //GetMonitorTree getMonitorTree = new GetMonitorTree(wgRepository, deviceRepository, monitorTreeRepository); nRecord.DevID = dev.DevID; nRecord.DevName = dev.DevName; nRecord.DevNO = dev.DevNO.ToString(); nRecord.MSiteID = msite.MSiteID; string measureSiteName = string.Empty; var measureSiteType = cacheDICT.GetInstance().GetCacheType <MeasureSiteType>(p => p.ID == msite.MSiteName).FirstOrDefault(); //空判断 王颖辉 2016-08-30 if (measureSiteType != null) { measureSiteName = measureSiteType.Name; } nRecord.MSiteName = measureSiteName; nRecord.MSAlmID = (int)EnumAlarmRecordType.DeviceTemperature; nRecord.AlmStatus = msiteAlmSite.Status; nRecord.SamplingValue = value; nRecord.WarningValue = msiteAlmSite.WarnValue; nRecord.DangerValue = msiteAlmSite.AlmValue; nRecord.BDate = samplingTime; nRecord.EDate = samplingTime; nRecord.LatestStartTime = samplingTime; nRecord.MonitorTreeID = string.Empty; //getMonitorTree.ConvertMonitorTreeIDString(dev.DevID, null); nRecord.Content = string.Format("{0}{1}{2}{3}", nRecord.DevName, nRecord.MSiteName, "设备温度", ConvertStatusToString(msiteAlmSite.Status)); return(nRecord); } catch (Exception ex) { LogHelper.WriteLog(ex); return(null); } }
private Alarm GetDevAlmRecord(DevAlmRecord record) { Alarm alarm = null; MeasureSite site = measureSiteRepository.GetByKey(record.MSiteID); Device device = deviceRepository.GetByKey(record.DevID); switch (record.MSAlmID) { case 1: //振动信号报警 VibSingal signal = vibSignalRepository.GetByKey(record.SingalID); //过滤掉位移,LQ振动信号的报警记录 List <string> selectedVibsignalNames = new List <string> { "加速度", "速度", "包络" }; //取得佳讯需要的振动信号类型ID List <int> selectedTypeIDList = vibratingSingalTypeRepository.GetDatas <VibratingSingalType> (t => selectedVibsignalNames.Contains(t.Name), true).Select(t => t.ID).ToList(); if (signal != null && signal.DAQStyle == 1 && selectedTypeIDList.Contains(signal.SingalType)) { if (site != null && device != null) { alarm = getdata.GetVibrateionAlarm(record, signal, site, device); } } break; case 2: //设备温度 if (site != null && device != null) { alarm = getdata.GetDevTempAlarm(record, site, device); } break; case 3: break; case 4: break; case 5: break; case 6: break; case 8: //趋势报警推送 //趋势报警,慧萌新增报警类型,报警内容格式暂时不确定,暂定和之前一致 //如果是临时测量定义 或者 LQ 不推送 //VibSingal signalForThrend = DBServices.GetInstance().VibSingalProxy.GetByKey(record.SingalID); //过滤掉位移,LQ振动信号的报警记录 //List<string> selectedVibsignalNamesForThrend = new List<string> { "加速度", "速度", "包络" }; //取得佳讯需要的振动信号类型ID //List<int> selectedTypeIDListForThrend = DBServices.GetInstance().VibratingSingalTypeProxy.GetDatas<VibratingSingalType> // (t => selectedVibsignalNamesForThrend.Contains(t.Name), true).Select(t => t.ID).ToList(); //if (signalForThrend != null && signalForThrend.DAQStyle == 1 && selectedTypeIDListForThrend.Contains(signalForThrend.SingalType)) //{ //if (site != null && device != null) // { // alarm = getData.GetThrendAlarm(record, signalForThrend, site, device); //} // } break; } return(alarm); }
/// <summary> /// 保存速度实时数据汇总 /// </summary> /// <param name="param">上传数据对象</param> /// <param name="dev">设备信息</param> /// <param name="ws">WS信息</param> /// <param name="site">测量位置信息</param> /// <param name="vibSingal">振动信号信息</param> /// <param name="status">测量位置状态</param> private void SaveRealTimeCollectInfoWaveVel(UploadWaveDataParameter param, Device dev, MeasureSite site, VibSingal vibSingal, int peakStatus, int peakPeakStatus, int effStatus, DateTime peakSamplingDate, DateTime peakPeakSamplingDate, DateTime effSamplingDate) { try { //重新获取测点信息 MeasureSite newMeasureSite = measureSiteRepository.GetByKey(site.MSiteID); //获取实时数据信息 RealTimeCollectInfo realTimeCollectInfo = realTimeCollectInfoRepository .GetDatas <RealTimeCollectInfo>(p => p.MSID == site.MSiteID, false) .FirstOrDefault(); if (realTimeCollectInfo == null) { realTimeCollectInfo = new RealTimeCollectInfo(); MeasureSiteType siteType = cacheDICT.GetInstance().GetCacheType <MeasureSiteType>() .Where(p => p.ID == site.MSiteName).FirstOrDefault(); realTimeCollectInfo.DevID = dev.DevID; realTimeCollectInfo.MSID = site.MSiteID; realTimeCollectInfo.MSName = siteType.Name; realTimeCollectInfo.MSStatus = newMeasureSite.MSiteStatus; realTimeCollectInfo.MSDesInfo = siteType.Describe; realTimeCollectInfo.MSDataStatus = 1; realTimeCollectInfo.MSSpeedSingalID = vibSingal.SingalID; realTimeCollectInfo.MSSpeedVirtualValue = param.EffectiveValue; realTimeCollectInfo.MSSpeedPeakValue = param.PeakValue; realTimeCollectInfo.MSSpeedPeakPeakValue = param.PeakPeakValue; realTimeCollectInfo.MSSpeedVirtualStatus = effStatus; realTimeCollectInfo.MSSpeedPeakStatus = peakStatus; realTimeCollectInfo.MSSpeedPeakPeakStatus = peakPeakStatus; realTimeCollectInfo.MSSpeedPeakTime = (peakSamplingDate == DateTime.MinValue ? DateTime.Now : peakSamplingDate); realTimeCollectInfo.MSSpeedPeakPeakTime = (peakPeakSamplingDate == DateTime.MinValue ? DateTime.Now : peakPeakSamplingDate); realTimeCollectInfo.MSSpeedVirtualTime = (effSamplingDate == DateTime.MinValue ? DateTime.Now : effSamplingDate); #region 添加网关连接状态 ADDED BY QXM, 2016/11/18 //var wg = gatewayRepository.GetByKey(ws.WGID); //if (wg != null) //{ // realTimeCollectInfo.MSWGLinkStatus = wg.LinkStatus; //} #endregion realTimeCollectInfoRepository.AddNew(realTimeCollectInfo); } else { realTimeCollectInfo.MSStatus = newMeasureSite.MSiteStatus; realTimeCollectInfo.MSDataStatus = 1; realTimeCollectInfo.MSSpeedSingalID = vibSingal.SingalID; realTimeCollectInfo.MSSpeedVirtualValue = param.EffectiveValue; realTimeCollectInfo.MSSpeedPeakValue = param.PeakValue; realTimeCollectInfo.MSSpeedPeakPeakValue = param.PeakPeakValue; realTimeCollectInfo.MSSpeedVirtualStatus = effStatus; realTimeCollectInfo.MSSpeedPeakStatus = peakStatus; realTimeCollectInfo.MSSpeedPeakPeakStatus = peakPeakStatus; realTimeCollectInfo.MSSpeedPeakTime = (peakSamplingDate == DateTime.MinValue ? DateTime.Now : peakSamplingDate); realTimeCollectInfo.MSSpeedPeakPeakTime = (peakPeakSamplingDate == DateTime.MinValue ? DateTime.Now : peakPeakSamplingDate); realTimeCollectInfo.MSSpeedVirtualTime = (effSamplingDate == DateTime.MinValue ? DateTime.Now : effSamplingDate); realTimeCollectInfoRepository.Update(realTimeCollectInfo); #region 添加报警阈值在时实表中 List <EigenValueType> eigenValueTypeList = cacheDICT.GetInstance() .GetCacheType <EigenValueType>() .ToList(); //获取阈值 var alarmThresholdList = signalAlmSetRepository.GetDatas <SignalAlmSet>(item => item.SingalID == vibSingal.SingalID, true); if (alarmThresholdList != null && alarmThresholdList.Any()) { //阈值 foreach (var alarmThreshold in alarmThresholdList) { var eigenValue = eigenValueTypeList.Where(item => item.ID == alarmThreshold.ValueType).FirstOrDefault(); var vibSignalType = (int)EnumMeasureSiteThresholdType.VEL; var eigenValueType = (int)EnumEigenType.EffectivityValue; var samplingDate = DateTime.Now; switch (eigenValue.Code) { //有效值 case "EIGENVALUE_21_YXZ": { eigenValueType = (int)EnumEigenType.EffectivityValue; samplingDate = effSamplingDate; } break; //峰值 case "EIGENVALUE_22_FZ": { eigenValueType = (int)EnumEigenType.PeakValue; samplingDate = peakSamplingDate; } break; //峰峰值 case "EIGENVALUE_23_FFZ": { eigenValueType = (int)EnumEigenType.PeakPeakValue; samplingDate = peakPeakSamplingDate; } break; } var realTimeAlarmThreshold = realTimeAlarmThresholdRepository.GetDatas <RealTimeAlarmThreshold>(item => item.MeasureSiteID == site.MSiteID && item.MeasureSiteThresholdType == vibSignalType && item.EigenValueType == eigenValueType, true).FirstOrDefault(); //更新 if (realTimeAlarmThreshold != null) { //添加关联阈值表数据 realTimeAlarmThreshold.AlarmThresholdValue = alarmThreshold.WarnValue; realTimeAlarmThreshold.DangerThresholdValue = alarmThreshold.AlmValue; realTimeAlarmThresholdRepository.Update(realTimeAlarmThreshold); } else { //添加关联阈值表数据 realTimeAlarmThreshold = new RealTimeAlarmThreshold(); realTimeAlarmThreshold.MeasureSiteID = site.MSiteID; realTimeAlarmThreshold.MeasureSiteThresholdType = vibSignalType; realTimeAlarmThreshold.AddDate = DateTime.Now; realTimeAlarmThreshold.AlarmThresholdValue = alarmThreshold.WarnValue; realTimeAlarmThreshold.DangerThresholdValue = alarmThreshold.AlmValue; realTimeAlarmThreshold.EigenValueType = eigenValueType; realTimeAlarmThreshold.SamplingDate = samplingDate; realTimeAlarmThresholdRepository.AddNew(realTimeAlarmThreshold); } } } #endregion } } catch (Exception ex) { LogHelper.WriteLog(ex); } }
/// <summary> /// 保存和更新振动速度波形数据 /// </summary> /// <param name="param">采集波形参数</param> /// <param name="site">测量位置信息</param> /// <param name="dev">设备信息</param> /// <param name="ws">WS信息</param> /// <param name="signalTypeName">振动信号类型名称</param> private void SaveAndUpdateSignalVelData(UploadWaveDataParameter param, MeasureSite site, Device dev, int signalTypeID) { int status = (int)EnumAlarmStatus.Normal; float?peakWarnValue = null; float?peakAlmValue = null; float?peakPeakWarnValue = null; float?peakPeakAlmValue = null; float?effWarnValue = null; float?effAlmValue = null; int peakStatus = 0; int peakPeakStatus = 0; int effStatus = 0; DateTime peakSamplingDate = DateTime.MinValue; DateTime peakPeakSamplingDate = DateTime.MinValue; DateTime effSamplingDate = DateTime.MinValue; //特征值定义 try { //根据信号类型ID获取振动信号信息 VibSingal vibSignal = vibSignalRepository .GetDatas <VibSingal>(p => p.SingalType == signalTypeID && p.MSiteID == site.MSiteID, false) .FirstOrDefault(); if (vibSignal == null) { //此处可添加错误代码 return; } //判断振动波形数据是否重复 bool isDataRepeat = vibratingSingalCharHisVelRepository .GetDatas <VibratingSingalCharHisVel>(p => p.SingalID == vibSignal.SingalID && p.SamplingDate == param.SamplingDate && p.MonthDate == param.SamplingDate.Month, false).Any(); if (isDataRepeat) { //此处可添加错误代码 return; } //获取振动信号类型的警告和告警阈值 List <SignalAlmSet> signalAlmList = signalAlmSetRepository .GetDatas <SignalAlmSet>(p => p.SingalID == vibSignal.SingalID, false) .ToList(); //获取速度中的特征值类型信息 List <EigenValueType> eigenValueTypeList = cacheDICT.GetInstance() .GetCacheType <EigenValueType>(p => p.VibratingSignalTypeID == signalTypeID) .ToList(); float?hisDataValue = 0; if (signalAlmList != null) { foreach (SignalAlmSet signalAlm in signalAlmList) { foreach (EigenValueType eigenValueType in eigenValueTypeList) { if (signalAlm.ValueType == eigenValueType.ID) { switch (eigenValueType.Name) { case ConstObject.Peak_Value: { GetSamplingDataStatus(signalAlm.WarnValue, signalAlm.AlmValue, param.PeakValue, ref status, vibSignal.SingalID, signalAlm.ValueType); peakWarnValue = signalAlm.WarnValue; peakAlmValue = signalAlm.AlmValue; peakStatus = status; peakSamplingDate = param.SamplingDate; hisDataValue = param.PeakValue; break; } case ConstObject.Peak_Peak_Value: { GetSamplingDataStatus(signalAlm.WarnValue, signalAlm.AlmValue, param.PeakPeakValue, ref status, vibSignal.SingalID, signalAlm.ValueType); peakPeakWarnValue = signalAlm.WarnValue; peakPeakAlmValue = signalAlm.AlmValue; peakPeakStatus = status; peakPeakSamplingDate = param.SamplingDate; hisDataValue = param.PeakPeakValue; break; } case ConstObject.Effectivity_Value: { GetSamplingDataStatus(signalAlm.WarnValue, signalAlm.AlmValue, param.EffectiveValue, ref status, vibSignal.SingalID, signalAlm.ValueType); effWarnValue = signalAlm.WarnValue; effAlmValue = signalAlm.AlmValue; effStatus = status; effSamplingDate = param.SamplingDate; hisDataValue = param.EffectiveValue; break; } default: break; } //判断上传临时采集数据时,不判断告警信息和入库 if (/*param.DAQStyle != "2"*/ true) { if (ConstObject.AlarmsConfirmed && false)//此处添加持续报警判断条件 { //RecordAlarmCount recordAlarmCout = CollectionsExtensions.recordAlmCountList // .Where(p => p.SignalID == vibSignal.SingalID && p.EigenValueTypeID == signalAlm.ValueType).FirstOrDefault(); //if (recordAlarmCout == null) //{ // continue; //} //if (recordAlarmCout.WarnCount == 3 || recordAlarmCout.AlarmCount == 3 || status == (int)EnumAlarmStatus.Normal) //{ // //更新振动信号特征值阈值设置表 // signalAlm.Status = status; // signalAlmSetRepository.Update(signalAlm); // #region QXM ADDED 2017/01/19 // ModifyStatusBeyondSignal(signalAlm.SingalID); // #endregion // UpdateVibratingSingalAlarmVel(signalAlm, dev, site, vibSignal, param.SamplingDate, hisDataValue); // //vibSignal.SingalStatus = status; //} } else { if (signalAlm.Status != status || (signalAlm.Status == status && status != (int)EnumAlarmStatus.Normal)) { //更新振动信号特征值阈值设置表 signalAlm.Status = status; signalAlmSetRepository.Update(signalAlm); #region QXM ADDED 2017/01/19 ModifyStatusBeyondSignal(signalAlm.SingalID); #endregion UpdateVibratingSingalAlarmVel(signalAlm, dev, site, vibSignal, param.SamplingDate, hisDataValue); //vibSignal.SingalStatus = status; } } } } } } } if (FilterSamplingVel(ref param, peakAlmValue, peakPeakAlmValue, effAlmValue)) { if (param.IsWave) { RecordWaveToTxt(vibSignal.SingalID, param); } WaveUpperLimitValues waveValuesObject = cacheDICT.GetCacheType <WaveUpperLimitValues>(item => item.ID == vibSignal.UpLimitFrequency) .FirstOrDefault(); InsterVibratingSingalHisVel(param, site, dev, vibSignal, peakWarnValue, peakAlmValue, peakPeakWarnValue, peakPeakAlmValue, effWarnValue, effAlmValue, GetRealSamplingFrequency(waveValuesObject.WaveUpperLimitValue), param.IsWave); SaveRealTimeCollectInfoWaveVel(param, dev, site, vibSignal, peakStatus, peakPeakStatus, effStatus, peakSamplingDate, peakPeakSamplingDate, effSamplingDate); } } catch (Exception ex) { LogHelper.WriteLog(ex); } }
/// <summary> /// 更新速度振动信号特征值报警状态 /// </summary> /// <param name="signalAlmSet">振动信号特征值告警设置</param> /// <param name="dev">设备信息</param> /// <param name="site">测量位置信息</param> /// <param name="vibsingal">振动信号信息</param> /// <param name="samplingData">采集时间</param> private void UpdateVibratingSingalAlarmVel(SignalAlmSet signalAlmSet, Device dev, MeasureSite site, VibSingal vibsingal, DateTime samplingTime, float?hisDataValue) { DeviceVibtationAlarmParameter devVibtationAlarmParam = new DeviceVibtationAlarmParameter() { AlmSet = signalAlmSet, Dev = dev, MSite = site, Signal = vibsingal, SamplingTime = samplingTime, HisDataValue = hisDataValue }; deviceVibrationAlarm.DevVibAlmRecordManager(devVibtationAlarmParam); }
public static bool CloudSend(ICMSTreeNode treeNode) { CloudDataProvider dataProvider = new CloudDataProvider(); string cloudData = string.Empty; switch (treeNode.DataType) { case EnumCloudOperationType.Enterprise: cloudData = dataProvider.GetEnterprise(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_Enterprises); break; case EnumCloudOperationType.Workshop: cloudData = dataProvider.GetWorkshop(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_Workshops); break; case EnumCloudOperationType.Device: cloudData = dataProvider.GetDevice(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_Devices); break; case EnumCloudOperationType.Measuresite: //推送测点时候同时需要推送测点相应的WS cloudData = dataProvider.GetMeasureSite(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_Measuresites); ///推送MeasureSite时,同时推送相应的WS cloudData = string.Empty; IRepository <MeasureSite> measureSiteRepositiory = new Repository <MeasureSite>(); MeasureSite msite = measureSiteRepositiory.GetByKey(treeNode.TableID); if (msite != null && msite.WSID.HasValue) { cloudData = dataProvider.GetWS(msite.WSID.Value); ExecSend(cloudData, CommonVariate.Cloud_URL_Sensors); } break; case EnumCloudOperationType.VibSignal: cloudData = dataProvider.GetVibSignal(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_Signals); break; case EnumCloudOperationType.BatteryVoltageAlarmSet: cloudData = dataProvider.GetVolateAlmSet(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_AlarmThresholds); break; case EnumCloudOperationType.DeviceTemperatureAlarmSet: cloudData = dataProvider.GetDeviceTempeAlmSet(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_AlarmThresholds); break; case EnumCloudOperationType.SignalAlarmSet: cloudData = dataProvider.GetVibSignalAlmSet(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_AlarmThresholds); break; case EnumCloudOperationType.WirelessGateway: cloudData = dataProvider.GetWG(treeNode.TableID); ExecSend(cloudData, CommonVariate.Cloud_URL_WirelessGateways); break; default: break; } //3.推送 return(true); }