public MachineRev _machineRev; //当前机器转速 public void InitDirverData(int areaId, int mcId, IDirverRelationService dirverRelationService, IMachineRevService machineRevService) { //元件集合及关系 _dirverRelationList = dirverRelationService.Query(dr => dr.AreaId == areaId && dr.McId == mcId); _unitList = dirverRelationService.GetUnitAll(areaId, mcId); //机器转速 _machineRev = machineRevService.Query(dr => dr.AreaId == areaId && dr.McId == mcId).FirstOrDefault(); }
/// <summary> /// 初始化,处理波形频谱需要的参数信息 /// </summary> /// <param name="site"></param> /// <param name="socket"></param> public void InitConfig(SiteModel site, SocketMiddleware socket) { _site = site; _socket = socket; _stopMachineOa = RedisHelper.Get <Dictionary <string, bool> >($"{CallContext.GetData<ClientInfo>("clientInfo").Database}IsStop"); _dirverRelationList = _dirverRelationService.Query(dr => dr.AreaId == _site.AearId); //获取测量参数组 及转速定义 List <MeterageSamplerate> meterageSamplerateList = _meterageSamplerateService.Query(ms => ms.AreaId == _site.AearId && ms.IsSamplerate == 1); List <TachoDefind> tachoDefindList = _tachoDefindService.Query(td => td.AreaId == _site.AearId); foreach (TachoDefind tachoDefind in tachoDefindList) { //没有找到需要的数据源,查找下一个 MeterageSamplerate ms = meterageSamplerateList.FirstOrDefault(m => m.MsrId == tachoDefind.MsrId); if (ms == null) { continue; } //获取频谱数据 DataTwModel model = GetTwFFTData(ms); if (model == null) { continue; } //提取转速 float rev = ExtractRPM(model.Data, model.DataHz / ((float)model.DataLines), tachoDefind); Console.WriteLine($"转速:{rev}"); //停机转态不提取 if (rev <= 0) { _stopMachine.Add($"A{tachoDefind.AreaId}M{tachoDefind.McId}", true); continue; } //修改转速 MachineRev machineRev = _machineRevService.Query(m => m.AreaId == tachoDefind.AreaId && m.McId == tachoDefind.McId).FirstOrDefault(); if (machineRev != null) { machineRev.MrRev = rev; machineRev.MrTime = DateTime.Now; _machineRevService.UpdateEntity(machineRev); } else { machineRev = new MachineRev() { AreaId = tachoDefind.AreaId, McId = tachoDefind.McId, MrTime = DateTime.Now, MrLevel = 2, MrRev = rev }; _machineRevService.InsertEntity(machineRev); } ExtractValue(model, ms, (int)rev); } foreach (MeterageSamplerate ms in meterageSamplerateList) { if (tachoDefindList.FirstOrDefault(t => t.MsrId == ms.MsrId) != null) { continue; } DataTwModel model = GetTwFFTData(ms); if (model == null) { continue; } //停机状态不提取 if (_stopMachine.ContainsKey($"A{ms.AreaId}M{ms.McId}")) { continue; } ExtractValue(model, ms); } //更新元件状态 foreach (DirverRelation dirverRelation in _dirverRelationList) { _dirverRelationService.UpdateEntity(dirverRelation); } }