Exemple #1
0
 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();
 }
Exemple #2
0
        /// <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);
            }
        }