数据采集软件设计方案

合集下载

数据采集系统设计方案

数据采集系统设计方案

数据采集系统设计方案数据采集系统是指通过一定的手段和工具,从各种数据源中采集和提取数据,并将其存储、分析和应用的一套系统。

以下是一个数据采集系统的设计方案:1. 系统目标和需求分析:明确系统的目标和需求,包括需要采集的数据类型、频率、来源等,以及对数据的存储、处理和分析的要求。

2. 数据源选择和接口设计:根据系统需求,选择适合的数据源,例如数据库、日志文件、API接口等。

设计和开发相应的接口,实现与数据源之间的数据交互。

3. 数据采集和提取:通过编写脚本或使用专业的数据采集工具,从数据源中获取数据,并对数据进行提取、清洗和转换。

4. 数据存储和管理:设计合适的数据存储结构,选择合适的数据库或其他存储方案,将采集到的数据进行存储和管理。

需要考虑数据安全性、可扩展性和性能等方面的要求。

5. 数据处理和分析:根据系统需求,对采集到的数据进行处理和分析。

可以使用数据挖掘、机器学习等技术对数据进行分析和建模,以提供有价值的信息和洞察。

6. 数据应用和展示:根据用户需求,将处理和分析后的数据应用到相应的业务场景中。

设计和开发相应的应用程序或接口,将数据以可视化的形式展示给用户,并提供相应的操作和交互功能。

7. 系统监控和优化:监控系统的运行状态和性能指标,及时发现和解决问题。

对系统进行优化,提高系统的稳定性、可用性和性能。

8. 安全和隐私保护:对系统中的数据进行安全保护,包括数据加密、访问控制等措施,确保数据的机密性和完整性。

同时,遵守相关法律法规,保护用户隐私。

以上是一个数据采集系统的基本设计方案。

根据具体的需求和情况,可能还需要做一些调整和扩展。

设计和开发过程中,需要充分考虑系统的稳定性、可扩展性、性能和安全性等方面的要求,以满足用户的实际需求。

智慧数据采集系统设计方案

智慧数据采集系统设计方案

智慧数据采集系统设计方案智慧数据采集系统(Intelligent Data Acquisition System)是一个集数据采集、传输、存储、处理和应用于一体的系统。

它利用各类传感器、网络通信技术和数据分析算法,能够实时地获取、处理和管理各种类型的数据,以支持分析、决策和控制等应用。

以下是一个智慧数据采集系统的设计方案:1.系统架构设计智慧数据采集系统的架构应包括前端感知层、传输层、数据处理和存储层、数据应用层。

前端感知层:通过各类传感器,对环境、设备、人员等进行数据采集,包括温度、湿度、压力、光照强度、位置等信息。

传输层:采用无线通信技术(如Wi-Fi、蓝牙、LoRaWAN 等)将前端感知层采集到的数据传输至数据处理和存储层。

数据处理和存储层:对传输层传输过来的原始数据进行处理、清洗和转换,然后存储到数据库中。

此层可以使用大数据处理技术(如Spark、Hadoop等)进行数据分析和处理。

数据应用层:根据不同需求,将处理后的数据用于进行各种应用,如数据分析、决策支持、监控控制等。

2.传感器选择与配置根据采集的数据种类和应用需求,选择适合的传感器进行数据采集。

例如,可以选择温湿度传感器、光照传感器、压力传感器、位置传感器等。

同时,需要对传感器进行合理的布置和配置,以确保数据的准确性和完整性。

3.数据传输选择合适的通信方式进行数据传输,根据数据传输的频率和距离来选择通信技术。

例如,可以使用无线通信方式将数据传输到数据处理和存储层,同时保证数据传输的稳定性、安全性和实时性。

4.数据处理和存储根据采集到的数据特性和应用需求,选择合适的数据处理和存储技术。

例如,可以使用关系数据库或者NoSQL数据库进行数据存储,使用大数据处理技术进行数据分析和处理。

5.数据应用根据应用需求,设计相应的数据应用模块。

例如,可以开发数据分析模块,对采集到的数据进行统计分析、趋势预测等;开发监控控制模块,实现对设备、环境等的实时监控和控制;开发决策支持模块,提供数据分析结果和决策建议等等。

数据采集分析平台方案

数据采集分析平台方案

数据采集分析平台方案随着社会信息化的发展,大量的数据被海量地生成和积累。

对这些数据进行高效的采集和分析,可以为企业提供决策支持和业务优化的依据。

数据采集分析平台的设计和实施,对企业的发展和竞争力有着重要的影响。

下面是一个关于数据采集分析平台方案的详细介绍。

一、方案概述二、功能需求1.数据采集:支持多种数据源的采集,包括企业内部系统、外部数据源、传感器等。

要求采集过程稳定可靠,支持数据清洗和去重。

2.数据存储:数据存储要求高性能、高可靠性,能够处理大规模的数据量。

建议采用分布式文件系统或者云存储方案。

3.数据处理:平台需要支持数据的清洗、转换和整合。

清洗过程中需要去除重复数据、异常数据等。

转换和整合过程中需保证数据格式一致性。

4.数据分析:平台需提供强大的数据分析工具和算法。

支持统计分析、数据挖掘、机器学习和可视化等分析方法,能够发现隐藏的数据规律和关联性。

5.数据报告:平台需要提供数据报告的功能,支持自定义报表设计和生成。

报告应包含关键指标、趋势图表等,以帮助企业决策和业务优化。

三、技术架构1. 数据采集:根据不同的数据源选择不同的采集工具,如API接口、爬虫、传感器采集等。

采集程序部署在分布式服务器上,采集到的数据通过消息队列或者Kafka等技术进行传输和保存。

2. 数据存储:数据存储方案采用分布式文件系统或者云存储方案,如Hadoop HDFS、Amazon S3等。

存储系统需要具备高性能和高可靠性的特点,确保数据的完整性和可用性。

3. 数据处理:数据处理采用分布式计算平台,如Hadoop、Spark等。

数据处理包括数据清洗、转换和整合。

数据清洗过程使用ETL工具或自定义脚本进行。

数据转换和整合通过Spark进行,保证数据格式的一致性和一致性。

4. 数据分析:数据分析平台采用机器学习和数据挖掘技术,如深度学习、神经网络、分类算法等。

数据分析过程使用Python或R进行,通过Jupyter Notebook进行交互式开发和调试。

数据采集系统设计方案

数据采集系统设计方案

数据采集系统设计方案摘要:本文为一份数据采集系统的设计方案,旨在提供一个高效、可靠的数据采集解决方案。

首先分析了数据采集的意义,接着介绍了系统的整体架构和各个模块的功能设计。

然后详细阐述了涉及到的技术选型和系统实施计划。

最后针对可能遇到的问题,提供了相应的解决方案。

通过本文提供的设计方案,可以有效地满足数据采集的需求,并提高数据的准确度和可用性。

一、引言数据采集是信息管理领域中非常重要的一环,能够帮助机构、企业等实现大规模数据的自动收集和整理。

而数据采集系统旨在解决数据采集过程中遇到的瓶颈和难题,并提供高效的数据采集工具。

本文旨在设计一个可靠、高效的数据采集系统,满足企业对数据采集的需求。

二、系统架构设计数据采集系统采用了分布式架构设计,包含四个关键的模块:数据采集模块、数据存储模块、数据处理模块、数据展示模块。

数据采集模块主要负责从多个数据源收集数据,并进行初步的清洗和整理。

采集模块需要支持多种数据采集方式,如爬虫采集、API采集、文件导入等,以确保能够覆盖不同数据源的采集需求。

此外,数据采集模块还需要具备实时采集和定时采集的功能,以满足不同采集频率的需求。

2. 数据存储模块数据存储模块负责将采集到的数据存储到数据库或者数据仓库中。

系统可以根据实际需求选择合适的存储技术,如关系型数据库、NoSQL数据库等。

数据存储模块还需要支持数据的备份和容灾,以确保数据的可靠性和安全性。

3. 数据处理模块数据处理模块对采集到的数据进行预处理和加工,以满足后续的分析和应用需求。

包括数据清洗、数据转换、数据聚合等操作。

数据处理模块还需要支持自定义的数据加工规则,以满足不同业务场景下的数据需求。

数据展示模块负责将处理后的数据以可视化的形式展示给用户。

可以通过图表、报表、仪表盘等方式展示数据,以便用户能够直观地理解和分析数据。

三、技术选型1. 数据采集模块在数据采集模块中,可以选用Python作为主要的开发语言,利用其丰富的第三方库和成熟的爬虫框架进行数据采集工作。

数据采集系统实施方案

数据采集系统实施方案

数据采集系统实施方案一、引言。

随着信息化时代的到来,数据已经成为企业运营和决策的重要支撑。

而数据采集系统作为获取数据的重要手段,对于企业来说显得尤为重要。

本文将介绍数据采集系统的实施方案,旨在帮助企业高效地获取所需数据,提升运营效率和决策水平。

二、系统需求分析。

1. 数据获取需求,系统需要能够从各种数据源中获取数据,包括但不限于数据库、文件、接口等。

2. 数据清洗需求,获取的数据往往存在质量不一的情况,系统需要具备数据清洗功能,保证数据的准确性和完整性。

3. 数据存储需求,系统需要提供可靠的数据存储方案,确保数据安全和可靠性。

4. 数据分析需求,系统需要支持对采集的数据进行分析,提供数据可视化和报表功能,帮助企业进行数据决策。

三、系统实施方案。

1. 技术选型,针对数据采集系统的需求,我们选择采用成熟的数据采集工具,如Apache Nifi、Kettle等,结合企业自身的技术栈和业务需求进行选择。

2. 数据源接入,系统需要支持多种数据源的接入,因此需要针对不同的数据源编写相应的数据采集程序或脚本,确保数据能够被高效地获取。

3. 数据清洗与转换,获取的数据往往需要进行清洗和转换,以满足业务需求。

我们将采用数据清洗工具对数据进行清洗和转换,确保数据的质量和准确性。

4. 数据存储与管理,系统将数据存储在企业的数据仓库中,同时对数据进行管理和备份,确保数据的安全和可靠性。

5. 数据分析与报表,系统将提供数据分析和报表功能,帮助企业对数据进行分析和决策,提升运营效率和决策水平。

四、系统实施步骤。

1. 确定需求,与业务部门充分沟通,明确数据采集系统的需求和目标。

2. 技术选型,根据需求和企业实际情况,选择合适的数据采集工具和技术。

3. 系统设计,设计数据采集系统的架构和流程,包括数据源接入、数据清洗、数据存储和数据分析等环节。

4. 开发与测试,根据系统设计,进行数据采集程序和脚本的开发,同时进行系统的测试和调优。

数据采集系统设计方案

数据采集系统设计方案

数据采集系统设计方案1. 引言在当前信息爆炸的时代,数据已成为企业决策和业务发展的重要支撑。

为了能够获得准确、及时、完整的数据,建立一个高效的数据采集系统至关重要。

本文将介绍一个数据采集系统的设计方案,旨在帮助企业快速搭建一个可靠的数据采集系统。

2. 系统架构数据采集系统主要由以下几个模块组成:2.1 数据源模块数据源模块负责与各个数据源进行连接,并提供数据抓取的功能。

根据具体需求,可以包括数据库、文件系统、API等各种数据源。

2.2 数据处理模块数据处理模块负责对采集到的原始数据进行清洗、去重、转换等处理操作,以便后续分析和存储。

2.3 数据存储模块数据存储模块负责将处理后的数据存储到数据库、数据仓库或数据湖等存储介质中,以便后续的数据分析和挖掘。

2.4 监控和日志模块监控和日志模块负责监控系统的运行状态,并记录系统的运行日志,以便后续的故障排查和系统性能优化。

2.5 定时任务模块定时任务模块负责定期执行数据采集任务,可以使用定时调度工具来实现。

3. 系统设计与实现3.1 数据源模块的设计数据源模块可以使用不同的技术栈来实现,例如使用Python的Requests库连接API,使用JDBC或ORM框架连接数据库,使用文件操作库连接文件系统。

3.2 数据处理模块的设计数据处理模块的设计需要根据具体的业务需求来确定。

常见的处理操作包括数据清洗(去除重复数据、缺失值处理等)、数据转换(格式转换、字段合并等)等。

3.3 数据存储模块的设计数据存储模块可以选择合适的数据库或数据仓库来存储处理后的数据。

常见的选择包括关系型数据库(如MySQL、PostgreSQL)和大数据存储系统(如Hadoop、Spark)等。

3.4 监控和日志模块的设计监控和日志模块可以使用监控工具和日志框架来实现。

监控工具可以监控系统的资源使用情况,例如CPU、内存、磁盘等。

日志框架可以记录系统的运行日志,有助于故障排查和系统性能优化。

数据采集系统软件的设计

数据采集系统软件的设计

数据采集系统软件的设计一主程序开发模块通信主线程的主要功能是对各个通信子线程进行调度和管理。

启动通信主线程:AfxBeginThread(ThreadMainCommunication, GetSafeHwnd());变量m_com_usable 为可用的串口个数。

S_comnum=CreateSemaphore(NULL,m_com_usable,m_com_usable,NULL);然后再用下面的语句为每个可用的串口创建一个对应的子通信线程,主要代码如下所示:for(ii=0;ii<32;ii++)//最多三十二个串口{ThreadID[ii]=ii;if(m_comst[ii].com_status==1)///如果该串口的状态为可用的{m_comst[ii].telephone.Empty();hThread[ii]=AfxBeginThread(ThreadRead,&&ThreadID[ii]);// 创建一个对应的子通信线程} }二多串口多线程开发模块三 TCP/IP多线程通信开发模块主程序:通信主线程的主要功能是对各个通信(串口和TCP/IP)子线程进行调度和管理;多串口多线程开发模块:每个子通信线程对应一个串口,每个子通信线程负责通过对应的串口进行数据的读写;主程序中的主线程通过向子线程依次传递不同的数据从而使一个串口依次与不同的设备进行连接。

希望使用信号量和互斥变量,用多线程并行的方式通过多个串口进行并行通信。

这种多串口多线程通信方法,使多个串口能并行通信和数据传输;TCP/IP多线程通信开发模块(客户端和服务端)串口传过来的数据可以通过TCP/IP传给客户端或服务端;或这个模块也可以单独与其他客户端和服务端进行连接接收他们的数据;四 LOG开发模块五数据库开发模块六不同设备以及不同协议开发各自的协议模块,而且互不干扰;七对不同串口以及不同协议可以进行有效控制八加密安全管理模块九系统采用c++ for linux or java十数据库采用Oracle;本例子是本人Linux下基于TCP多线程Socket编程的第二个例子,本例子是用C++实现的服务器采用了面向对象的多线程,用到了队列与链表,信号量(操作系统中叫PV操作)本例子中的队列与链表源代码在前面可以找到,这里就不多贴了此系统所支持的自定义命令跟上个例子相同,就里就不多说明了头文件Thread.h代码,里面就一个抽象类(抽象类没有自己的实例,一定要被子类所继承) #ifndef THREAD_H_INCLUDED#define THREAD_H_INCLUDEDclass Thread{public:void ThreadEnter();protected:virtual void Start() = 0;virtual void Initialize(){}};#endif // THREAD_H_INCLUDEDThread.cpp代码:#include "Thread.h"void Thread::ThreadEnter(){Start();}以下为服务器主要头文件Server.h代码:#ifndef SERVER_H_INCLUDED#define SERVER_H_INCLUDED#include "Thread.h"#include "LinkList.h"#include "ThreadQueue.h"#include <netinet/in.h>#include <pthread.h>#include <semaphore.h>#define MSG_SIZE 1024#define BACKLOG 10#define PORT 8001class Server : public Thread{public:Server();~Server();public:void Start();void Initialize();void SendMessage(Server* serer);static void* SendMessageThread(void* param);void ReadMessage(Server* server);static void* ReadMessageThread(void* param);private:int sock_fd,new_fds[BACKLOG],new_fd;struct sockaddr_in serv_addr,dest_addr;pthread_mutex_t mutex;pthread_t pth_r,pth_s;sem_t sem_r,sem_s;int thread_cout;LinkList list;ThreadQueue queue;DataType *pData;};#endif // SERVER_H_INCLUDED以下为Thread.h实现的Thread.cpp代码:#include "Server.h"#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <iostream>#include <string>using namespace std;//------------------------------------------------------------------ Server::Server(){pthread_mutex_init(&mutex,NULL);sem_init(&sem_r,0,10);sem_init(&sem_s,0,0);}//------------------------------------------------------------------ void Server::Initialize(){sock_fd = socket(AF_INET,SOCK_STREAM,0);if(sock_fd < 0){perror("socket fail!" );exit(-1);}serv_addr.sin_family = AF_INET;serv_addr.sin_port = ntohs(PORT);serv_addr.sin_addr.s_addr = INADDR_ANY;bzero(&(serv_addr.sin_zero), 8);if (bind(sock_fd, (struct sockaddr*) &serv_addr,sizeof(struct sockaddr)) < 0){perror("bind fail! ");exit(-1);}if(listen(sock_fd,BACKLOG) < 0){perror("listen fail!" );exit(-1);}cout << "listenning......" << endl;socklen_t sin_size = sizeof(dest_addr);while(1){if(thread_cout == BACKLOG - 1){return;}new_fd = accept(sock_fd,(struct sockaddr *)&dest_addr,&sin_size); if(new_fd < 0){perror("accept fail!" );exit(-1);}cout << "\nA client has connected to me "<< inet_ntoa(dest_addr.sin_addr)<< ":" << ntohs(dest_addr.sin_port)<< endl;pthread_mutex_lock(&mutex);thread_cout++;list.InsertNode(thread_cout,new_fd);pthread_mutex_unlock(&mutex);pthread_create(&pth_r,NULL,ReadMessageThread,this);}}//------------------------------------------------------------------ void Server::Start(){pthread_create(&pth_s,NULL,SendMessageThread,this);Initialize();}//------------------------------------------------------------------ void Server::ReadMessage(Server* server){int fd = server->new_fd;char buf[MSG_SIZE];int len;/*pthread_mutex_lock(&mutex);int count = thread_cout - 1;pthread_mutex_unlock(&mutex);*/while(1){sem_wait(&sem_r);if ((len = read(fd, buf, MSG_SIZE)) == -1){perror("read fail!");pthread_exit(NULL);}else if (len == 0){cout << "Current client has disconnected to me" << endl; //cout << "close fd = " << fd << endl;close(fd);list.DeleteNode(fd);pthread_exit(NULL);}//cout << "read fd = " << fd << endl;buf[len] = '\0';DataType *data = new DataType();data->fd = fd;strcpy(data->buff,buf);cout << "\nRECEIVE: " << buf<< " receive fd = " << fd << endl;//pthread_mutex_lock(&mutex);queue.EnterQueue(data);//pthread_mutex_unlock(&mutex);//delete data;sem_post(&sem_s);}}//------------------------------------------------------------------void* Server::ReadMessageThread(void* param){Server* server = (Server *)param;server->ReadMessage(server);return NULL;}//------------------------------------------------------------------void Server::SendMessage(Server* server){while(1){sem_wait(&sem_s);int list_len = list.GetLength();int tNewfd,tReceivefd;//pthread_mutex_lock(&mutex);pData = queue.OutQueue();//int queue_len = queue.Queuelength();//pthread_mutex_unlock(&mutex);tReceivefd = pData->fd;//cout << "Received fd = " << tReceivefd << endl;pthread_mutex_lock(&mutex);for(int i = 1; i <= list_len; i++){list.GetNodeData(i,tNewfd);//cout << "New fd = " << tNewfd << endl;//if(queue_len != 0)//{if(tNewfd != tReceivefd){write(tNewfd,pData->buff,sizeof(pData->buff));cout << "Send to client successful! fd = " << tNewfd << endl;; }//}}delete pData;pthread_mutex_unlock(&mutex);sem_post(&sem_r);}}//------------------------------------------------------------------ void* Server::SendMessageThread(void* param){Server* server = (Server *)param;server->SendMessage(server);return NULL;}//------------------------------------------------------------------ Server::~Server(){close(sock_fd);pthread_join(pth_r,NULL);pthread_join(pth_s,NULL);}//------------------------------------------------------------------以下为主文件main.cpp代码:#include "Server.h"int main(void){Server* server = new Server();server->ThreadEnter();return 0;} <!--v:3.2-->基于多线程技术实现多串口的实时通信邓林涛(江西赣粤高速公路股份有限公司江西南昌 330000)摘要:介绍了采用一种通过基于多线程的多串口实时通信方式实现在现代加工制造业中对多台数控设备进行集中控制的方法。

数据采集与处理的方案设计

数据采集与处理的方案设计

数据采集与处理的方案设计在进行数据采集与处理时,设计一个合理的方案至关重要。

一个有效的数据采集与处理方案可以帮助我们高效地获取和处理数据,为后续的分析和应用提供有力支持。

本文将从数据采集和数据处理两个方面,探讨如何设计一个完善的数据采集与处理方案。

一、数据采集方案设计数据采集是整个数据处理流程中至关重要的一环,良好的数据采集方案可以确保数据的准确性和完整性。

在设计数据采集方案时,需要考虑以下几个方面:1. 确定数据来源:首先需要明确需要采集数据的来源,数据可以来自于各种渠道,如传感器、数据库、日志文件、API接口等。

根据数据来源的不同,采集方式也会有所区别。

2. 选择合适的采集工具:根据数据来源和采集需求,选择合适的数据采集工具。

常用的数据采集工具包括WebScraper、Apache Nutch、Beautiful Soup等,选择适合自己需求的工具可以提高数据采集的效率。

3. 设计采集频率:根据数据更新的频率和实际需求,设计合理的采集频率。

有些数据需要实时采集,有些数据可以定时采集,需要根据具体情况来确定采集频率。

4. 数据清洗和去重:在数据采集过程中,可能会出现数据重复或者脏数据的情况,需要设计相应的数据清洗和去重策略,确保采集到的数据质量。

5. 数据存储和备份:设计合理的数据存储和备份方案,确保采集到的数据安全可靠。

可以选择使用数据库、云存储等方式进行数据存储和备份。

二、数据处理方案设计数据采集完成后,接下来就是数据处理的环节。

一个有效的数据处理方案可以帮助我们高效地对数据进行分析和挖掘。

在设计数据处理方案时,需要考虑以下几个方面:1. 数据清洗和预处理:在数据处理之前,需要对采集到的数据进行清洗和预处理,包括去除缺失值、异常值,数据格式转换等操作,确保数据的准确性和完整性。

2. 数据转换和整合:将不同来源和格式的数据进行整合和转换,统一数据格式和结构,为后续的分析和挖掘提供便利。

3. 数据分析和挖掘:根据实际需求,设计相应的数据分析和挖掘算法,从数据中发现有价值的信息和规律,为决策提供支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据采集软件设计方案
1背景
由于尾矿监控系统的数据来源复杂,而且数据格式多样,而对于一个监控软件来说,如果要涉及到复杂的数据采集及其处理过程的话,对于软件本身运行的稳定性或造成一定的负担,而且也不利于于软件的后续开发和后期维护。

所以需要一个统一的数据采集程序,来为尾矿监控系统所涉及到的数据源进行整合,处理。

把复杂的来源,格式多样的数据整合为单一来源,标准格式的数据,从而提高尾矿监控系统的可靠性。

2设计思路
从目前对数据源的分析情况来看,尾矿监控系统的数据主要有以下几种:➢全站仪的采集数据,其数据存放在全站仪自己的SQL Server 数据库中。

➢内部位移,浸润线等监控数据( BGK的设备),其数据是放在采集软件运行的本地ACCESS数据库文件中。

➢气象, 水文等监控数据(WAGO设备),其数据源为通过它的WAGO Server 软件提供的OPC DA数据。

➢摄影头视频数据,存放在海康自己的视频录像机上面。

➢其他人为观测的数据。

其中,摄像头实时监控数据由海康提供控件,直接从海康设备上获取,其他人为观测数据由用户手动输入,通过尾矿监控系统软件直接存放到数据库。

剩下的三类数据,也是尾矿监测系统需要用到的主要数据,则由本软件来负责处理。

主要处理思路如下图。

数据采集软件通过不同的接口分别从全站仪,BGK设备和WAGO设备采集数据。

并根据各自的数据格式对数据进行分析,并将分析处理后的标准数据存放到尾矿监测系统的数据库。

3软件结构
数据采集软件采用模块化设计,其系统架构如下图:
如图所示,软件总共分为四层:
数据接口层:主要用于和设备进行数据交互,目前需要接入全站仪,BGK,WAGO 数据;并且存入数据接口将数据保存到数据库。

由于考虑到以后的扩展性,数据接口层的数据接口要能做到可配置化,即能通过添加模块的方式增加其他类型的数据接入。

数据处理层:配合数据接口,对采集上来的数据的数据格式进行处理,转换为标准格式。

也需要做到可配置化。

数据交互层:由于考虑到数据的复杂性,所以软件内部的数据交互采用XML作为标准交互格式,即交互数据统一为XElement对象。

表现层:也就是用户界面,用户要能够通过用户界面对一些参数进行配置,如:全站仪数据库地址,用户名,密码;ACCESS数据库路径;OPC服务器名;存入数据库地址等等。

根据软件架构图,可将软件分为以下四个功能模块:
3.1全站仪模块
主要负责采集处理全站仪数据,由于全站仪数据是保存到SQL Server数据库中,所以处理过程相对简单,只需要从SQL数据库中将需要的数据读取出来,调整为标准格式,保存到尾矿监测系统的数据库中。

3.2BGK模块
主要负责从BGK设备采集数据,BGK数据是存放在本地ACCESS数据库文件中,那就需要先建立ACCESS数据库文件的本地磁盘映射,然后再通过ODBC驱动从中读取数据,保存到尾矿监测系统的数据库中。

3.3WAGO模块
WAGO是通过WAGO OPC Server软件采用OPC DA协议进行交互的,所以需要采用OPC SDK 连接到WAGO的OPC服务器端,通过OPC协议进行数据采集,并将其转换为标准格式,保存到尾矿监测系统的数据库中。

3.4存入数据模块
该模块的主要功能就是提供一个尾矿监测系统数据库的存入接口,以方便其他模块将数据存入数据库。

相关文档
最新文档