光伏电站远程数据采集监控中心系统设计.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《光伏电站远程数据采集监控中心系统设计.doc》由会员分享,可在线阅读,更多相关《光伏电站远程数据采集监控中心系统设计.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要能源是推动人类进步的动力引擎,为了社会的进步国家(部落)的繁荣昌盛,人类不断在自己的家园里探索各种各个样的能源,所以煤炭、石油、核电、水利和风力已成为当今世界人类主要依赖的能源,可是无限量的煤炭、原油等不可以生的能源的破费,虽然在社会文明上做出了重大的贡献,但随之带给我们的还有严重的恶果,比如:雾霾、癌症的频发、水污染等等。太阳能的有效利用将有可能改变现状,在国家的大力推动下太阳能发电站在快速的增加,在这能源大会战中,“光伏电站远程监控系统”将会成为太阳能产业的高速发展有效工具。故对光伏电站数据采集的研究有着举足轻重的意义。通过自己的创新和紧密结合客户需求设计开发的“光伏电站远程监控系统
2、”能够为客户提供科学便捷光伏电站管理策略,客户只需在PC计前就能知道光伏电站的整个运行状态。根据该系统提供的光伏电站数据(设备故障信息、设备正常工作下的采集信息、气象信息等)对电站进行维护,及发电效益进行评估。本文主要讨论光伏电站远程数据采集监控中心系统设计,本系统可分数据采集、数据按相应设备协议解析、数据入库、数据呈现四大模块构成。应用VC+、MFC开发,采用UPD通信与下位机通信实现数据传输,应用多线程、线程池机制实现对多个设备进行管理,同时以加载DLL(协议动态链接库)的形式实现对不同设备的协议的管理,方便协议开发的同时极大的提高了软件的可扩展性。完成系统设计,进行各个功能分模块测试验证
3、。分析测试报告,到达预期要求。对毕业论文工作进行总结,对系统不足之处加以完善,继续对该课题进行深入研究。关键词:远程数据采集监控中心系统,VC+/MFC,UDP,多线程,DLL1绪论1.1课题研究背景及目的1.1.1课题研究背景现如今国家乃至世界都已经意识到太阳能的重要性,各国都在大力扶持光伏产业。在这种光伏电站大举建设下,市场对光伏电站监控系统的需求也越来越大,接触的一些意向客户也明确提出功能需求。通过自己的创新和紧密结合客户需求设计开发的“光伏电站远程监控系统”能够为客户提供科学便捷光伏电站管理策略,客户只需在PC计前就能知道光伏电站的整个运行状态。根据该系统提供的光伏电站数据(比如遥测、
4、遥信、遥控及遥调等设备故障信息、设备正常工作下的采集信息、气象信息)对电站进行维护,及发电效益进行评估。穹顶之下“光伏电站远程监控系统”将会迎来广阔的市场,也将对环保事业有着重要意义。1.1.2课题研究目的能源是推动人类进步的动力引擎,为了社会的进步国家(部落)的繁荣昌盛,人类不断在自己的家园里探索各种各个样的能源,所以煤炭、石油、核电、水利和风力已成为当今世界人类主要依赖的能源,由于社会的不断进步经济要求不断的提升,从而对能源的需求大大增加,无限的煤炭、煤油等不能再生的能源的破费。消耗的大量能源在社会文明上做出了重大的贡献,但随之带给我们的还有污浊的溪水、雾霾笼罩的苍穹和癌症的频发等等污染严
5、重的恶果。为了我们赖以生存的环境不受破坏,探索新型能源的脚步不能停,太阳能可以改变这一切,汉能董事长曾这样描述太阳能对人类能源的需求:“在不久的将来人们将不会在担心能源不足的问题,能源将会过剩”。在国家的大力推动下太阳能发电站快速的增加,在这能源大探索的征途中,“光伏电站远程监控系统”将有效的促进光伏产业的高速发展。应用VC+、MFC、socket编程及应用多线程、线程池机制技术实现对于采集中心系统的设计,同时以加载DLL(协议动态链接库)的形式实现对不同设备的协议的管理,方便协议开发的同时极大的提高了软件的可扩展性。运用计算机科学技术为社会做出贡献。1.2国内太阳能远程监控系统发展状况光伏产
6、业诞生以来,我国就十分重视该清洁能源的发展,并作出对策扶持光伏产业的发展壮大。然而一个光伏电站的运营管理急需一套科技化,信息化的能源监控系统来实现一体化管理。当前海内的远程光伏电站及分布式光伏电站监控体系中具备实践的工程意义的方案有:无线方式(采用gprs、wifi、zigbee、irda红外、blueteeth通信);有线方式(采用profibus总线、工业rs485总线、工业以太网、Modern电话线、can总线)。本文论述的太阳能监控系统是一般采用RS485转工业以太网的形式通过3G无线传输实现数据传输,将监控智能设备上的运行数据上传至电站监控数据采集中心。1.4术语及定义pas:数据采
7、集中心。Pascomfig:数据库配置工具。Bct:挂载设备工具。Modbus: Modbus是由Modicon在1979年创造的,是全世界第一个实际用于工业级现场的总线协议。1.5采集中心运行环境 操作系统:Win XP, Windows 7,win 8 (64位); 电脑硬件配置:CPU Pentium 4 以上内存 512M 以上主板可能使用DCD8072硬盘 1G以上 软件需求:MicroSoft Visual Stduio 2010 、MicroSoft VC6.0Win sql server 2008, 2005MFC运行库函数暂时使用ms sql server 2008数据库 通
8、讯配置:普通以太网终端设备2监控中心设计使用的C+关键技术2.1多线程技术2.1.1线程的概念线程(Thread)(1)线程可两分为个组成部分:线程的堆与栈:它用于寄存线程在运行时所需的全部参数和局部变量。操作系统的内核对象:是操作系统对线程的管理和寄存线程的记录数据的地址。(2)新创线程时,当前线程的内核对象随之被生成。这个对象是windows用来处理线程的数据结构不代表线程自己,线程的相关记录数据就是用这个数据结构来保存的。(3)线程总是创建于某个进程中。线程的地址空间是操作系统从进程的地址空间中分配的。创建与被创的线程所处的地址空间是一样的。所以,进程中的所有数据信息和其他线程数据对于新
9、创线程都是可见的。这使得一个进程中的多个线程间的通信变得非常方便。(4)线程所需要的内存很少,由于线程中唯有内核对象及一个堆栈并且存留的统计数据较少所以线程所需的开销相对于进程开销少,从编程的空间效率上出发,多线程是我们解决问题的首选方案。(5)时间片指的是操作系统给各个进程运行时划分的时间段,他们极短的时间段。windows以循环的机制分配时间片给相应的线程,得到时间片的进程即可从等待状态切换为运行状态,否则该进程仍将处于挂起的等待。由于操作系统分配的时间片相当短,在这短暂的时间片里和现在计算机高速计算的速度中,人们的感觉中是分辨不出线程运行的向后顺序的,就好像是线程同时在运行。当需要暂停某
10、个线程时,可使用Sleep()函数,它使自己处于等待状态,但它是耗着cpu不做事,这时使得别的线程就不能占用cpu,windows会认为该线程还在运行,不会让出系统资源。(6)当一台计算机配置了多个CPU或者单个CPU双核以上,多个线程就能实现并发,单线程与多线程的工作模型如图1所示:2.1.2线程同步线程在同一进程中对共享数据原子访问的机制便可成为线程的同步。事件、临界区、信号量、互斥量等是编程人员常用的同步对象。适用于在同一个进程内实现有限制的访问共享的数据的应该是临界区。线程与线程之间要实现同步,我们就得借助系统的内核对象来时想线程操作的同步。有多线程开发经验的人都知道常使用内核对象有事
11、件、信号量和互斥量,这些内核对象在任何时间里都只能有一个状态那就是信号态或者无信号态。系统中的线程在等待内核对象时,若内核对象是无信号态,系统将挂起该线程,知道其等待的内核对象切换为有信号态,这时该线程才有机会恢复执行状态,否则将一直等下去直到进程结束。内核对象有无信号态的等待函数有:DWORD WaitForSingleObject();WaitForSingleObject函数返回值DWORD WaitForMultipleObjects(DWORD nCount, /*number of obj*/CONST HANDLE *lpHandles,/*Objectpointer array
12、*/BOOL bWaitAll,/*wait untilall objectsinto asignalstate?*/DWORD dwMilliseconds/*INFINITE表示持续等待*/)1、互斥量(Mutex)用于实现多线程的同步需要使用到的API函数有:CreateMutex(),ReleaseMutex(),WaitForSingleObject();首先利用CreateMutex()新创互斥量内核对象,该对象可以实现多个进程间的数据访问同步,在对共享数据访问结束的时候,则需要调用ReleasMutex()函数释放对互斥量的控制权。函数解析:HANDLE CreateMutex(
13、LPSECURITY_ATTRIBUTESlpMutexAttributes,/*用来决定线程的安全性,通常为NULL*/BOOLbInitialOwner,/*真表示该线程将获得其创建给互斥量的所有权,否则未获得所有权*/LPCTSTRlpName/*Name ofmutex*/);BOOL ReleaseMutex(HANDLE hMutex);/释放句柄2、事件(Event)与多线程事件与信号量和互斥量不同,他们通常用于实现对共享数据的访问控制,而事件只有在某一动作完成时才发送信号。事件的对象有手动重置事件与自动重置事件,前者可用于同时为多个线程发送信号;后者则仅仅对单个线程发送信号。当
14、多个线程同时执行WaitForMultipleObjects或者WaitForSingleObject来获取一个自动重置事件时,在这个自动重置事件转换为信号态时,在多个等待线程中将会有一个线程被唤醒并执行相应的代码段,同时该事件又自动转换为无信号态,剩下的线程将持续处于等待状态。由次看来,自动重置事件与互斥量的作用相似。WaitForSingleObjectWaitForMultipleObjects不能实现将手动重置事件自动重置为无信号态,只有利用API函数才可以实现手动重置事件状态的装换。所以,处于有信号态的手工重置事件,将激活所有处于等待状态的线程。函数解析:HANDLE CreateE
15、vent( /创建事件LPSECURITY_ATTRIBUTES lpEventAttributes,/The safety property of the event object, usually set to NULLBOOL bManualReset,/Event type(自动/手动重置)BOOL bInitialState,/The initialvalue of thesignalstateLPCTSTR lpName/The name of the event,NULLsaid theanonymous);对于信号态的设置有两个API函数调用可设置,BOOL SetEvent(
16、HANDLE /BOOL ResetEvent(HANDLE hEvent);他们都适用于自动重置事件对象和手工重置事件对象的信号态的设置,前者是将信号态设置为有信号态,后者则是将事件信号态设置为无信号态。其中自动重置事件不需要利用ResetEvent,因为在调用WaitForMultipleObjects或者WaitForSingleObject函数返回之前,系统会将其事件对象切换成无信号态。最后在事件对象使用完之后,利用CloseHandle函数来实现回收处理,将其关闭。3、临界区(Critical Section)与多线程临界区顾名思义,其将为用户划分代码区域,取得该区域的进入权将可以对
17、区域内的共享数据进行访问,当区域内正被当前他线程使用时,别的线程想要进到该区域内只有等候当前线程离开临界区的时候才可以获取进去临界区的权限,相反只有一直等候下去。这样就可以实现对共用的数据同时访问了。需要注意的就是临界区只可以在单个进程之使用。使用临界区我们需要定义一个CRITCALSECTION临界区对象,调用InitializeCriticalSection对该对象进行初始化,调用EnterCriticalSection的位置说明临界区的保护代码起点,同时指将进到该临界区,当动作完成之后我们必须调用LeaveCriticalSection离开临界区,使得临界区处于空置状态,便于其他访问者访
18、问,在临界区完成其职责时可利用DeleteCriticalSection将该对象解除。4、信号量(Semaphore)与多线程信号量内核对象相当于系统对线程的资源计数器。当WaitForSingleObject被线程调用时,操作系统同时将接收到一个信号量对象,并判断该对象的资源计数是否大于0,大于0的话,系统就会将其减1并唤醒响应的进程。否则进程将持续等待状态,直到有其他线程释放该对象为止。5、互斥量、临界区、事件三个同步对象的区别事件对象和互斥对象能实现在多个进程之中的各个线程之间完成数据同步,但他们的速度相对于临界区显得稍慢。一般情况下在编写多线程程序时当需要到线程的同步机制时,首先应该想
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电站 远程 数据 采集 监控 中心 系统 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内