基于C#的远程液位监控软件设计毕业设计(论文)_第1页
基于C#的远程液位监控软件设计毕业设计(论文)_第2页
基于C#的远程液位监控软件设计毕业设计(论文)_第3页
基于C#的远程液位监控软件设计毕业设计(论文)_第4页
基于C#的远程液位监控软件设计毕业设计(论文)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 学号 毕业设计(论文)题目: 基于C#的远程液位监控软件设计作 者 届 别 学 院 专 业 指导教师 职 称 完成时间 年 月 日 湖南理工学院毕业设计(论文)摘 要为了弥补组态软件在远程液位监控系统中的不足,本文设计了一套基于C#的远程液位监控软件。本软件依靠.NET类库中Windows.Forms类完成了服务器与客户端测试界面的设计,还利用SOCKET类实现了服务器与客户端之间的异步通信,达到了实时传输和远程监控的要求。同时利用内部的垃圾回收机制,有效的避免了资源浪费和内存泄露等缺陷。在满足企业个性化设计需求的同时还保证了测控平台的工作性能和测控质量,极大的提高了工业生产效率。关键词:C

2、#;SOCKET;异步通信; Abstract Tomakeupfordeficienciesintheremoteconfigurationsoftwarelevelmonitoringsystem,thepaperdesignsaC#basedonthelevelofremotemonitoringsoftware.Thesoftwarerelieson.NETclasslibraryWindows.Formsclasscompletedthetestserverandtheclientinterfacedesign,butalsouseSOCKETclassimplementstheas

3、ynchronouscommunicationbetweentheserverandtheclient,tothereal-timetransmissionandremotemonitoringrequirements.Whiletakingadvantageoftheinternalgarbagecollectionmechanism,effectivelyavoidingthewasteofresourcesandmemoryleaksandotherdefects.Personalizeddesigntomeetbusinessneeds,whilealsoensuringthequal

4、ityandcontrolperformanceandcontrolplatform,whichgreatlyimprovestheefficiencyofindustrialproduction.Keywords:C#;SOCKET;asynchronouscommunication; 目 录摘 要IAbstractII第1章 引 言11.1 课题研究的背景11.2 课题研究的意义11.3 课题研究内容及结构安排2第2章 系统整体结构32.1 控制系统构成32.2 测控软件构成42.2.1 相关技术介绍42.2.2 程序流程框图52.3 本章小结6第3章 监控软件程序实现73.1 软件设计方

5、案73.2 服务器设计73.2.1 界面设计73.2.2 Socket编程83.3 客户端设计123.3.1 界面设计123.3.2 Socket编程133.4 本章小结15第4章 ActiveX控件生成与发布164.1 控件生成与发布164.2 本章小结21第5章 软件生成与测试225.1 软件生成及测试225.2 本章小结25第6章 结语与展望26参考文献27致 谢28附录 软件代码2940第1章 引 言 1.1 课题研究的背景随着科技的不断发展,远程监控技术以其逐步完善和推广,逐渐使人们意识到远程测控技术对现代企业管理和生产效率的重要意义。为了提高生产效率,人们希望获得对工厂生产中大量的

6、物理量和生产工艺等参数的实时测控。但是以往的监测技术已经无法满足当代工业生产的需求。伴随着通讯技术、电子技术和计算机网络技术的快速发展,丰富的网络资源以及不断降低的成本为网络化远程监控系统提供了可能。液位监控是当代工业测控中较为普遍的一类问题,在石油、化工、电力等工业部门中应用极为普及,是工业生产过程当中的一个重要构成部分。针对传统工业生产中液位过程所具有的非线性、时滞和时变等复杂特性,液位监控系统能够有效的模拟和监测生产中液位过程所产生的一系列物理量,并及时针对其产生的问题做出相应的调整。此外,液位过程测控平台的构建和控制方案的钻研,对工业生产中施行液位过程控制具备重要的指导作用。1.2 课

7、题研究的意义 当前国内外大多数企业都使用组态软件对液位过程进行监控。组态软件是近些年在工业控制领域广泛应用的软件开发工具,可快速构建不同需求的数据采集和监控系统。应用组态软件可免去了传统测控软件编写中庞大而复杂的编程工作,大大提高了测控系统的开发效率,且保证了测控平台的工作性能和测控质量。然而传统的组态软件在使用过程中由于系统体积的庞大,造成了巨大的资源浪费,且价格昂贵,无法满足企业各种个性化设计的要求。因此不满足大多数中小型企业的要求。针对这一问题,大部分开发人员选择使用VB或VC+等语言开发符合企业需求的监控软件。虽然利用这些语言编写的监控软件可以弥补组态软件的不足,且可以自由的对系统资源

8、进行控制。但是由于语言本身的不完善,很容易造成系统资源浪费,内存泄露等问题,从而使得监控软件不稳定,极大地影响了监测质量。C#是微软公司于2000年7月,专门为.NET的应用而发布的一种全新的面向对象程序设计语言,具有简单、安全等特点。C#继承了C语言的语法风格,同时又继承了C+的面向对象特性,同时拥有和VB相类似的快速开发能力。因此用C#语言开发的远程液位测控软件可以有效的弥补传统组态软件的不足,满足企业个性化的要求。利用.NET程序集、MSIL和JIT编译器实现了对组件的充分使用,而且经过内部的垃圾回收机制,可及时回收软件运行时不再使用的内存资源,避免了资源浪费和内存泄露等缺陷。综上原因,

9、本文提出并设计了一套基于C#远程液位监控软件。该软件不但依靠.NET类库中强大的类库资源实现了对液位过程的实时监测和远程控制,还利用内部的垃圾回收机制,有效的避免了资源浪费和内存泄露等缺陷。在满足企业个性化设计需求的同时还保证了测控平台的工作性能和测控质量,极大的提高了工业生产效率。1.3 课题研究内容及结构安排 组态软件在工业控制中应用广泛,本文基于此研究设计了一套基于C#的远程液位监控软件,以弥补组态软件在远程监控领域的不足。论文结构安排如下:第1章,描述了课题研究的背景和意义,阐述了基于C#远程液位监控软件的优点。 第2章,软件的总体设计,包括软件说明和功能介绍以及程序设计流程框图。第3

10、章,相关软件和技术的基本介绍。第4章,软件各功能模块的具体设计与实现。第5章,软件生成与测试结果展示。第6章,结语与展望。 第2章 系统整体结构 2.1 控制系统构成为了实现对水箱液位参数的精确测控以及实时监视和记录。本文设计了一套水箱液位监控系统,此监控系统采用计算机(PC)作为控制器,变频器作为执行器进行构建。监控系统结构图如图2.1所示。水 泵变频器水槽D/ALIC101L T101水箱A/D计算机图2.1 水箱液位监控系统结构图在此系统中,液位变送器LT101使用测量范围为060cm的阻压式液位(压力)变送器,将检测出来的水箱液位信号转变为420mA标准电信号。控制器LIC101采用P

11、C机,用组态王KingVIEW6.55开发监控软件,并用C#编写可供组态王KingVIEW6.55使用的远程监控控件。A/D与D/A分别选用ADAM5018模块和ADAM5060模块,可经过RS232总线与计算机进行通讯。变频器采用西门子G110变频器,用来获取计算机发送经ADAM5060转换后的420mA控制信号,并完成变频调速(频率范围为050Hz)进而驱动水泵改变管路中的水流量,达到调节水箱液位的目的ADAM5018/5060控制模块体积较小,易于集成,且拥有一个独立的嵌入式的RS232传输卡, 可通过RS232与PC机进行通信。底板上有4个插槽,能够插接ADAM5018/5060的I/

12、O 模块, 从而完成快速数据的收集与控制, 因而ADAM5018/5060模块很适宜该系统。2.2 测控软件构成2.2.1 相关技术介绍(1).NET框架软件基于.NET框架的VS2010编程环境设计,.NET是一个由 Microsoft .NET Framework SDK中包括的类、值类型和接口构成的库。该库直接访问系统功能,是组成.NET Framework程序、组件及控件的基础。(2)C/S结构软件遵循C/S结构,设计了服务器和客户端两大块。该结构可以充分利用硬件的优点,将任务合理安排到客户端和服务器,大大减少了系统整体的通信成本。C/S 结构的根本原理是将大的任务分解为多个子任务,由

13、多台计算机协作完成。其工作模式如图2.2所示:图2.2 C/S结构工作模式C/S构架的长处是能够充分利用客户端的应对能力,很多任务能够在客户端处理后再转交给服务器。这样可以大大提高客户端的响应速度。具体如下两点优势:(1)服务器处理数据负担较轻。(2)数据的储存管理能力较为透明。(3)SOCEKT类服务器和客户端依靠强大的SOCKET类建立连接。完成液位过程数据采集后的传输工作,将远端设备的数据实时可靠的传输到服务器端进行检测和纪录,同时服务器也可发送数据到客户端,对远程液位设备进行调控。Socket也称套接字,用来描绘IP地址和端口,是个通信链的句柄。在Internet上的主机通常都会运行多

14、个应用软件,并且提供多种服务。而每个服务程序都会构建相应的SOCKET与端口一一对应,从而让不同端口拥有不同服务。Socket本质上供应了过程通信的端点。Socket连接过程能够分为三步:服务器侦听、确认连接和客户端申请。(1)服务器侦听:服务器端socket不是定位详细的客户端socket,而是处于等候连接的状况,实时监测网络状况。(2)客户端申请:是指由客户端提出连接申请,要连接的目标是服务器端的套接字。因此,客户端的socket首先得描绘它所要连接的服务器,确认服务器端socket的IP地址和端口号,进而向服务器端提出连接申请。(3)确认连接:指当服务器端socket监听到客户端sock

15、et的连接申请时,它会回应客户端socket的申请,创建一个新的线程,将服务器端socket的叙述发给客户端,当客户端确定了此叙述,就会成功握手建立连接。而服务器端socket还将处于监听状态,等待接收其他客户端socket的连接申请。2.2.2 程序流程框图系统根据C/S架构,分别创建服务器和客户端。服务器首先创建socket()套接字,利用bind()方法绑定本地IP和端口,用listen()方法监听端口请求,。侦听到端口有连接申请时,调用accept()方法接受请求,而后用receive()/send()方法对数据进行读/写操作,传输完成时使用close()函数关闭服务器。同样客户端也先

16、创建socket()套接字,获取要连接服务器的IP和端口,使用connect()方法发送连接请求,而后使用receive()/send()函数进行数据的读/写,传输完成时使用close()函数关闭客户端。系统程序框图如图2.3所示:图2.3系统程序框图2.3 本章小结 本章描述了远程液位监控系统的整体架构设计。包括液位监控系统的各部分组成,监控软件设计所涉及的相关技术介绍,如:.NET框架、C/S结构和SOCKET编程等,以及系统设计的程序框图说明。 第3章 监控软件程序实现3.1 软件设计方案监控软件设计的核心在于服务器和客户端之间的实时通信。本文提供了两种通信协议,分别是面向连接的TCP/

17、IP协议和无连接的UDP协议,然而在工业控制中必须保证数据传输的可靠性,因此我们选择了安全性高的TCP/IP协议作为通讯协议。此外本文还提供了同步通信和异步异步通信两种模式可供选择。同步通信属于串行通信,用次模式,要求客户端在发送一条请求后,必须等到服务器做出相应回应,才能够发送下一条请求。异步通信属于并行通信,此模式下客户端发送一条请求之后,不必等到服务器做出相应回应就可发送下一条请求。在工业控制中,往往需要保证数据传输的实时性,同步通信模式显然不符合要求,因此我们选择能实时传输的异步通信模式。3.2 服务器设计3.2.1 界面设计为了方便演示与测试,创建Windows窗体应用程序,进行软件

18、设计。而要生成ActiveX控件则需要创建Windows控件库项目,但两者界面设计的方法一致(注:该服务器界面以及下章的客户端界面仅为测试通信使用,作为Active控件发布的界面数据无需手动输入,数据采集完成后直接存储到内部Buffer进行发送。而正式的工业液位监控界面由组态王设计,本文不介绍)。创建好项目后,打开工具箱,拖出我们所需的工具控件如:Lable、Button、TextBox等进行界面设计,之后修改其对应的属性,双击后则可进行其他部分的代码编写。最终界面如图3.1所示。图3.1 server界面设计3.2.2 Socket编程Microsoft.Net Framework 为程序访

19、问Internet实现了可分层、可扩展的网络服务,其命名空间System.Net和System.Net.Sockets包含大量的类能够便于网络通讯程序的开发。所以在编写前应该添加using System.Net、using System.Net.Sockets和using System.Threading三个命名空间。具体编程可分为以下步骤:(1)建立服务器连接首先要创建Socket对象,使用Socket类的构造方法实现:Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType

20、.Tcp);参数如下:AddressFamily:Socket使用的寻址方案;SocketType:Socket类型;ProtocolType:Socket使用的协议,这里所用的是TCP/IP协议。当创建Socket后,服务器端则要通过Bind()方法绑定所指定的端口,使Socket和一个本地终端相联。这里在服务器端可设置两种方式进行连接,一种是DNS创建域名接连的方式:IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName();另一种是IP地址的连接方式:IPAddress ipAddress = ipHostInfo.AddressList

21、0;这里是系统自动获取本机IP,也可以手动输入IP地址方法如下:IPAddress ipAddress = IPAddress.Parse();这里采取IP地址连接的方式,设置好IP地址和端口号后使用Bind()方法进行绑定:IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);listener.Bind(localEndPoint);然后通过Listen方法监听该端口上的连接申请,当监听到端口的连接申请后。同步模式时,服务器调用Accept方法允许连接申请。异步模式时,服务器能够调用BeginAccept方法

22、和EndAccept方法实现与客户端的通信。BeginAccept在异步模式下尝试连接,它准许其余进程直接运行,而不必等候连接建立。在使用BeginAccept方法之前,必需调用Listen方法来监听连接申请,BeginAccept的函数原型为:BeginAccept(AsyncCallback AsyncCallback, Ojbect state);这里AsyncCallBack:代表回调函数;state:代表状态信息,必须确保state中包含socket的句;调用BeginAccept方法的根本流程是:1、建立本机终节点,并建立新的socket与本机终节点进行绑定;2、在端口上监听是否有

23、新的连接申请;3、申请开始接入新的连接,将其传入Socket的实例或者StateOjbect的实例。调用BeginAccept()方法完成后,当有新的连接产生,就会使用回调函数,此回调函数一定得包含用于终结接入连接操作的EndAccept()方法,其原型为:Socket EndAccept(IAsyncResult iar);那么服务器构建代码如下:public static void StartListening()IPAddress local = IPAddress.Parse(127.0,0,1);IPEndPoint iep = new IPEndPoint(local,13000)

24、;Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);server.Bind(iep);server.Listen(20);server.BeginAccecpt(new AsyncCallback(Accept), listener);void Accept(IAsyncResult iar) Socket MyServer = (Socket)iar.AsyncState; Socket service = MyServer.EndAccept(iar);(

25、2)发送与接收数据在创建了套接字的连接后,就能够使服务器端和客户端之间进行数据通信了。异步通信用BeginSend和EndSend方法来完成数据发送。在使用BeginSend方法前要确认双方都已成功连接,不然会出错误。BeginSend方法原型为:Socket.BeginSend(Byte,Int32, Int32, SocketFlags, AsyncCallback, Object);参数如下:buffer:Byte类型的数组,包含将发送的数据;offset:buffer参数中发送数据的起始位置,该位置从零开始计数;size:将发送的字节数;socketFlags:SocketFlags值

26、的按位组合;callback:AsyncCallback委托;state:一个对象,包含此申请的状态消息;返回值:调用异步通讯发送IAsyncResult。创建一个完成 AsyncCallback 的回调方法并将名字传入 BeginSend 方法。state 参数一定得包含用来通讯的连接。如果回调要求更多信息,那么可构建一个小型的类用于存储Socket和其他必须的信息。经过state 参数将此类的一个实例传递给 BeginSend 方法。回调方法应使用EndSend方法。当应用程序使用 BeginSend方法时,系统将运用一个单独的线程完成特定的回调方法,并阻止 EndSend,直到Socke

27、t发送了申请的字节数或引发了异常。相关代码如下:private static void Send(Socket handler, String data) byte byteData = Encoding.ASCII.GetBytes(data); handler.BeginSend(byteData,0,byteData.Length,0,new AsyncCallback(SendCallback), handler);private static void SendCallback(IAsyncResult ar) try Socket handler = (Socket)ar.Asyn

28、cState; int bytesSent = handler.EndSend(ar); handler.Shutdown(SocketShutdown.Both); handler.Close(); catch (Exception e)异步通信用BeginReceive和EndReceive方法来接收数据,其BeginReceive方法原型为:Socket.BeginReceive(Byte,Int32,Int32,SocketFlags,AsyncCallback,Object)参数如下:buffer:Byte类型的数组,它是保存接收到的数据的位置;offset:buffer参数中保存所

29、接收数据的位置,该位置从零开始计数;size:要接收的字节数;socketFlags:SocketFlags值的按位组合;callback:一个AsyncCallback委托,它援用操作完成时要应用的方法;state:一个用户定义对象,其中宝库接收操作的相干信息。操作完成时,此对象会传软EndReceive方法;返回值:使用异步方法读取IAsyncResult。异步BeginReceive操作应使用EndReceive方法完成。一般该方法由callback 实现。在操作完成前方法不会进入阻塞状态。如需一直阻塞到操作完成时则应使用Receive方法进行重载。相关代码如下:private stat

30、ic void Receive(Socket client) try StateObject state = new StateObject(); state.workSocket = client; client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,new AsyncCallback(ReceiveCallback), state); catch (Exception e) private static void ReceiveCallback(IAsyncResult ar) try StateObject state

31、= (StateObject)ar.AsyncState; Socket client = state.workSocket; int bytesRead = client.EndReceive(ar); if (bytesRead 0) state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead); client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,new AsyncCallback(ReceiveCallback), state); else if

32、(state.sb.Length 1) response = state.sb.ToString(); receiveDone.Set(); catch (Exception e) 这里对接收的数据做了一些处理,首先处理连接的回调函数里获得的通讯套接字client,然后开始接收数据。当数据发送到缓冲区中,BeginReceive方法尝试从buffer数组中获取长度为buffer.length的数据块,并且返回接收到的数据量bytesRead。经过判断返回值bytesRead的大小来判断数据是否传输完全。这里出现了Set()方法,引出了程序阻塞和异步中的同步问题。.Net里提供了EventWai

33、tHandle类来表示一个线程的同步事件。EventWaitHandle即事件等待句柄,他允许线程通过操作系统互发信号和等待彼此的信号来达到线程同步的目的。这个类有2个子类,分别为AutoRestEevnt(自动重置)和ManualRestEvent(手动重置)。下面是线程同步的几个方法:(1)Rset方法:将事件状态设置为非终止状态,使得线程阻塞。这里的线程阻塞是指同意其他需要等候的线程进行阻塞即让含WaitOne()方法的线程阻塞;(2)Set方法:将事件状态设置终止状态,允许一个或多个等候线程继续。该方法发送一个信号给操作系统,让处于等候的某个线程从阻塞状态转变成继续运行,即WaitOn

34、e方法的线程不在阻塞;(3)WaitOne方法:阻塞当前线程,直到当前的等候句柄收到信号。此方法将一直使本线程处于阻塞状态直到收到信号为止,即当其他非阻塞进程使用set方法时可以继续执行。3.3 客户端设计3.3.1 界面设计客户端界面设计方法和服务器方法相同,首先创建Windows窗体应用程序,打开工具箱,拖出我们所需的工具控件如:Lable、Button、TextBox等进行界面设计,之后修改其对应的属性,双击后则可进行其他部分的代码编写。最终界面如图3.2所示。图3.2 client界面设计3.3.2 Socket编程客户端的Socket编程同样分为以下两个步骤:(1)建立客户端连接首先

35、要创建Socket对象的实例,可以经过Socket类的构造方法来实现:Socket socket= new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);然后获取所要连接的服务器IP地址和端口:IPAddress ip=IPAddress.Parse();IPEndPoint iep=new IPEndPoint(ip,11000);而后在同步模式中,客户端调用Connect方法连接服务器。在异步模式下,客户端则使用BeginConnect方法和EndConnect方法来完成与服务

36、器的连接,BeginConnect方法原型为:Socket.BeginConnect(EndPoint, AsyncCallback, Object);其参数:remoteEP:表示远程主机IP地址和端口号;callback:AsyncCallback委托;state:一个对象,它包含此请求的状态信息;返回值:IAsyncResult,它引用异步连接。在调用BeginConnect方法时必须注册相应的回调函数并且至少传递一个Socket的实例给state参数,以保证EndConnect方法中能使用原始的套接字。调用代码如下:private static void StartClient() S

37、ocket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); IPAddress ip=IPAddress.Parse(); IPEndPoint iep=new IPEndPoint(ip,13000); socket.BeginConnect(iep, new AsyncCallback(Connect),socket);void Connect(IAsyncResult iar) Socket client=(Socket)iar.AsyncState; t

38、ry client.EndConnect(iar); catch (Exception e) (2)发送与接收数据在建立了套接字的连接后,就可以服务器端和客户端之间进行数据通信了。异步通信用BeginSend和EndSend方法来负责数据的发送。前面已经介绍,这里不再赘述。3.4 本章小结本章先是讨论了监控软件的设计方案,选择了可靠性高的TCP/IP协议和实效性高的异步通信模式。然后分别讲解了服务器和客户端的实现代码,包括界面设计和SOCKET编程设计。 第4章 ActiveX控件生成与发布4.1 控件生成与发布ActiveX控件又称Ocx控件,用于远程液位监控系统中组态软件的调用。本文中使用

39、C#语言生成的AxtiveX控件并非真正意义上的ActiveX控件,而是.dll控件,不过足够满足VS2010,Web等多种软件调用。要生成可供组态软件调用的Ocx控件,还需做不同的处理。因此本文不做描述,仅介绍C#环境下生成.dll控件的方法,具体步骤如下:(1) 创建一个应用程序解决方案,并添加一个Windows控件库项目,如图4.1图4.1 创建解决方案(2)更改“项目属性-应用程序-程序集信息”设置,勾选“使程序集 COM 可见”,如图4.2图4.2 更改项目属性(3)更改“项目属性-生成”属性,勾选“为 COM Interop 注册”(此处若是在debug状态下修改的,那在调到rel

40、ease状态下还应该再设置一次)如图4.3图4.3 更改项目属性(4)修改AssemblyInfo.cs文件,增加assembly: AllowPartiallyTrustedCallers()项(需要使用System.Security名称空间),如图4.4所示图4.4 修改AssemblyInfo.cs文件(5)添加一个Windows用户控件(6)为控件类增加GUID,这个编号将用于B/S系统的客户端应用时调用(能够使用 工具-创建GUID 菜单创建一个GUID,再复制),如图4.5所示图4.5 添加GUID(7)为了使ActiveX控件获取客户端的信任,控件类还需要完成一个名为“IObje

41、ctSafety”的接口,要建立该接口(注意,不能修改该接口的GUID值),IObjectSafety.cs代码如下:(8)然后在控件类中继承并完成该接口,代码如下(9)引用封装的FK.dll,代码如下(10)进行封装,代码如下(11)打包发布ActiveX,与普通的Windows Form应用程序的安装设置几乎一样,单有一个地方需要注意,将前面创建的用户控件项目作为主输出项目,并设定其Register属性为vsdrpCOM,如图4.6图4.6 安装部署(12)将项目文件添加。(13)在系统文件夹system32文件夹中将msiexec.exe(卸载控件时用到)地址找到也增加至上面文件夹(14

42、)在“用户的程序菜单”中,新建文件夹后加入主程序与msiexec.exe快捷方式。(15)点击项目安装工程,在属性中将ProductCode复制,点击msiexec.exe快捷方式,在属性Arguments中加入“/x+一个空隔+ProductCode”。(16)生成项目,打包文件就完成了,打开.Debug看到生成了2个文件,一个是xx.exe,一个是xx.msi,运行exe安装到系统。4.2 本章小结本章开头提出了用C#语言生成的AxtiveX控件并非真正意义上的ActiveX控件,而是.dll控件,且能够满足VS2010,Web等多种软件调用。要生成可供组态软件调用的Ocx控件,还需做不同

43、的处理,本文不作介绍。然后详细介绍了.dll控件的生成配置和发布设置方法。第5章 软件生成与测试5.1 软件生成及测试运行客户端,生成server界面,点击“启动服务器”按钮,弹出“服务器已启动,正在等待连接”对话框,点击确定,侦听绑定端口的客户端请求。图5.1 启动服务器运行客户端,生成client界面。在“IP”和“端口”栏输入要连接服务器的IP地址和端口号,这里我们采用本地IP:和预先设定的端口号:9050进行测试。点击连接,连接成功会弹出“连接成功,正在获取测试信息”窗口,服务器端也会弹出请求连接的客户端IP和端口号等信息,连接失败。图5.2 客户端成功连接图5.3

44、服务器成功连接连接成功后,服务器会向客户端发送一条“welcome here!”的测试信息以确保数据通信的通常无误。图5.4 客户端接收测试信息测试成功后,服务器和客户端可相互发送接收数据,内部设定先发送后接收的机制。例如:服务器向客户端发送“hello!”,客户端也可向服务器发送“How are you!”等信息。图5.5 服务器向客户端发送消息图5.6客户端向服务器发送消息通信完成后,点击“关闭服务器”会弹出确认关闭的选择窗口,选择“是”则关闭“否”则取消。客户端相同图5.7关闭服务器图5.8关闭客户端5.2 本章小结本章展示软件测试过程。测试表明该软件能够实现对液位过程的实时监测和远程控

45、制,还能有效的避免了资源浪费和内存泄露等缺陷。在满足企业个性化设计需求的同时还保证了测控平台的工作性能和测控质量,极大的提高了工业生产效率。第6章 结语与展望本文利用VS2012.NET编程平台设计了一套基于C#远程液位监控软件,可确保远程数据传输的实时性和有效性,操作简便且界面友好,弥补了传统组态软件在工业应用中的不足。该系统极大的满足了现代工业控制中的远程监控的要求,为提要企业生产效率和市场竞争力提供了有力的保障。然而目前软件仅支持远程客户端和服务器之间进行点对点通信,若实现多端口多服务器之间进行通信,可满足工业液位过程监控的系统化管理,对提高企业生产效率有着重大意义。参考文献1 顾洪军,

46、张佐,吴秋峰.网络控制系统的实时特性分析及数据传输技术J.计算机工程技术与应用,20010:38-40 2 王峰,张宏伟,秦霆镐等.嵌入式Internet技术及其实现方案J.微计算机信息,200319(12):61一623 LeeKB, SchneemanRD. Interne- t based Distributed Measurement and Control Applications J.IEEE Instrumentation&Measurement Magazine, 1999, (6).4 边宁宁,费敏锐.一种基于工业以太网的控制系统的设计与实现J.仪器仪表学报,2003,8(4

47、):366-3695 陈元谋,吴长奇.基于S ocket的远程监控的通信系统实现J.计算机安全,2011(3):60-626 孙海民.精通Windows Sockets网络开发一基于Visual C+实现M.人民邮电出版社,2008:101一1607 谢家兴,王建,刘洪山等.基于TCP/IP数据通信系统设计J.软件导刊,2010, 9(3):10-128 李大连.基于TCP/IP网络的机房环境监控系统设计J.计算机与现代化,2011(2) :97-999 茹金平.基于Internet的远程监控系统设计J.电脑知识与技术,2010(6):7516-751710 侯其锋,李晓华,李莎.Visual

48、 C+数据库通用模块开发与系统移植M.清华大学出版社,2007(5):2011711 姚鳗.网络化远程测控系统的网络信息安全关键技术研究D.硕士,西北工业大学,200712 李想.基于ethernet+TCP/IP的现场网络控制系统的研究D.硕士,华北电力大学,2006:2313 沈鑫刻.计算机网络M.清华大学出版社,2008致 谢 通过此次完成毕业设计的过程,让我明白了毕业设计是对我们大学四年学习成果的一次巩固和检验。同时极大的锻炼了我们个人独立完成项目的能力以及论文设计的能力,为以后面对工作或者继续深造打下了良好的基础。本次设计能够顺利完成,首先我要感谢丁跃浇老师。他在我设计的过程中给予了

49、我极大的帮助和支持。每有问题,老师总是耐心的解答,使我能够从各种困惑中走出来,继续完成后续工作。再则我还要感谢湖南理工学院创新基地实验室,这里是我成长和进步的地方,见证者我能力成长的地方,它为我提供了良好的设备和学习的环境。同时我还要感谢我的寝室同学,他们在我迷惑的时候为我无私的提供了帮助。最后还要感谢相关资料的编著者和给予我们支持的社会各界人士,感谢您们为我们提供一个良好的环境,使本次设计圆满完成。最后祝愿母校能够越来越好,同学们能够心想事成,考上自己理想的学校,得到自己理想的工作。附录 软件代码服务器:using System;using System.Collections.Generi

50、c;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.Threading;namespace text_server public partial class Form1 : Form public Form1() InitializeComponent(); public class StateObject public Socket workSocket = null; public const int BufferSize = 1024; public byte buffer = new byteB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论