微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

信号采集平台

前言

本项目旨在研发了一款智能化、自动化的实时振动故障检测系统。系统采用基于深度学习的故障诊断模型,实现产品数据管理、多通道数据采集、状态检测及实时报警等功能解决传统的故障检测依赖人工经验,工作量大、准确率低的问题,达到及时精准诊断,保障产品安全运行和生产的目的。

一、开发环境

本系统采用Visual Studio 2013开发软件进行开发,使用微软提供的基于C++语言的微软基础类库(英语:Microsoft Foundation Classes,简称MFC)进行开发,数据库使用MysqL5.6,具有操作简单,使用方便等优点。

二、数据库设计

数据库包括,项目表、采集参数、用户、设备、传感器、通道参数等核心表。
项目表存储当前的采集计划,系统首先读取当前打开项目对应的采集计划。
采集参数、通道参数,保存了每次采集的参数设置情况,其大多字段来自字典表。
信号表,存储当前采集计划的开始和结束时间、以及信号存储路径。

在这里插入图片描述

三、系统功能介绍及效果展示

1、系统核心流程图

在这里插入图片描述


2、 由于航空旋转机械一般体积较大,结构复杂,需要根据产品结构及特征,选择多测点、多通道、多方向进行测试负责系统可同时监测多个传感器方位的数据,当监测点处的振动烈度超过规定的预警值,而其他各监测点的振动烈度均在规定范围内时,系统将会对当前监测点发出预警。

在这里插入图片描述

4、多线程实时保存
首先开启一个自动保存的线程tread t,线程内定义一个vector类型的线程集,为每个通道开辟一个线程。在每个通信的线程内,阻塞等待队列中有数据被唤醒,定义临时线程安全队列,每存满20000个点,就写入磁盘一次。

(1)开启线程自动保存线程函数

void CMainFrame::OpenThread2SaveCollectionData(){
		thread t(&CMainFrame::SaveSumCollectionData, this);
		t.detach();
	}

(2)定义vector类型的线程集SaveSumCollectionData

	map<CString, ThreadSafeQueue<double>>::iterator iter = this->m_mpcolllectioinDataQueue.begin();
	//采集数据队列的迭代器
	vector<thread> threadVector;//多线程
	while (iter != this->m_mpcolllectioinDataQueue.end()){
		TbSignal signal;
		signal.SetSumSignalId(uuid);
		m_mpsignalCollectionView[iter->first]->GetChannel(signal.GetChannel());
		threadVector.push_back(thread(&CMainFrame::SaveCollectionData, this, iter->first, signal));
		iter++;
	}
	for (int i = 0; i < threadVector.size();i++){
		threadVector[i].join();
	}

(3)阻塞等待采集队列中的数据来唤醒线程:SaveCollectionData

	ThreadSafeQueue<double> saveData;//线程安全队列
	int m_icollectSignalsstoreCount = 1000; ///采集信号的存储数量
	while (theApp.m_icollectState){
		while (m_mpcolllectioinDataQueue[signalCode].size() > 0){//队列中有数据
			saveData.push(*m_mpcolllectioinDataQueue[signalCode].wait_and_pop());
			//wait_and_pop():等待挂起直到队列中有数据被获取
			if (saveData.size() == theApp.m_icollectSignalsstoreCount){ 
				m_signalController.SaveCollectionData2Binary(outputStream, move(saveData));
			}
		}
	}```

原文地址:https://www.jb51.cc/wenti/3287060.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐