1、 学号毕业设计(论文)题 目 : 基于 C#的远程液位监控软件设计作 者 届 别 学 院 专 业 指 导 教 师 职 称 完 成 时 间 年 月 日 湖南理工学院毕业设计(论文)I摘 要为了弥补组态软件在远程液位监控系统中的不足,本文设计了一套基于C#的远程液位监控软件。本软件依靠.NET类库中Windows.Forms类完成了服务器与客户端测试界面的设计,还利用SOCKET类实现了服务器与客户端之间的异步通信,达到了实时传输和远程监控的要求。同时利用内部的垃圾回收机制,有效的避免了资源浪费和内存泄露等缺陷。在满足企业个性化设计需求的同时还保证了测控平台的工作性能和测控质量,极大的提高了工业生
2、产效率。关键词:C#;SOCKET;异步通信;湖南理工学院毕业设计(论文)IIAbstractTo make up for deficiencies in the remote configuration software level monitoring system, the paper designs a C # based on the level of remote monitoring software. The software relies on .NET class library Windows.Forms class completed the test server a
3、nd the client interface design, but also use SOCKET class implements the asynchronous communication between the server and the client, to the real-time transmission and remote monitoring requirements. While taking advantage of theinternal garbage collection mechanism, effectively avoiding the waste
4、of resources and memory leaks and other defects. Personalized design to meet business needs, while also ensuring the quality and control performance and control platform, which greatly improves the efficiency of industrial production.Keywords: C #; SOCKET; asynchronous communication; 湖南理工学院毕业设计(论文)I
5、II目 录摘 要 .IAbstract.II第 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 软件设计方案 .73.2 服务器设计 .73.2.1 界面设计 .73.2.2 Socket 编程 .83.3 客户端设计 .123.3.1 界面设计 .123.3.2 Socket 编程 .133.4 本章小结 .15第 4 章 A
6、ctiveX 控件生成与发布 .164.1 控件生成与发布 .164.2 本章小结 .21第 5 章 软件生成与测试 .225.1 软件生成及测试 .225.2 本章小结 .25第 6 章 结语与展望 .26参考文献 .27致 谢 .28附录 软件代码 .29湖南理工学院毕业设计(论文)1第 1 章 引 言1.1 课题研究的背景随着科技的不断发展,远程监控技术以其逐步完善和推广,逐渐使人们意识到远程测控技术对现代企业管理和生产效率的重要意义。为了提高生产效率,人们希望获得对工厂生产中大量的物理量和生产工艺等参数的实时测控。但是以往的监测技术已经无法满足当代工业生产的需求。伴随着通讯技术、电子技
7、术和计算机网络技术的快速发展,丰富的网络资源以及不断降低的成本为网络化远程监控系统提供了可能。液位监控是当代工业测控中较为普遍的一类问题,在石油、化工、电力等工业部门中应用极为普及,是工业生产过程当中的一个重要构成部分。针对传统工业生产中液位过程所具有的非线性、时滞和时变等复杂特性,液位监控系统能够有效的模拟和监测生产中液位过程所产生的一系列物理量,并及时针对其产生的问题做出相应的调整。此外,液位过程测控平台的构建和控制方案的钻研,对工业生产中施行液位过程控制具备重要的指导作用。1.2 课题研究的意义 当前国内外大多数企业都使用组态软件对液位过程进行监控。组态软件是近些年在工业控制领域广泛应用
8、的软件开发工具,可快速构建不同需求的数据采集和监控系统。应用组态软件可免去了传统测控软件编写中庞大而复杂的编程工作,大大提高了测控系统的开发效率,且保证了测控平台的工作性能和测控质量。然而传统的组态软件在使用过程中由于系统体积的庞大,造成了巨大的资源浪费,且价格昂贵,无法满足企业各种个性化设计的要求。因此不满足大多数中小型企业的要求。针对这一问题,大部分开发人员选择使用 VB 或 VC+等语言开发符合企业需求的监控软件。虽然利用这些语言编写的监控软件可以弥补组态软件的不足,且可以自由的对系统资源进行控制。但是由于语言本身的不完善,很容易造成系统资源浪费,内存泄露等问题,从而使得监控软件不稳定,
9、极大地影响了监测质量。C#是微软公司于 2000 年 7 月,专门为.NET 的应用而发布的一种全新的面向对象程序设计语言,具有简单、安全等特点。C#继承了 C 语言的语法风格,同时又继承了 C+的面向对象特性,同时拥有和 VB 相类似的快速开发能力。因此用 C#语言开发的远程液位测控软件可以有效的弥补传统组态软件的不足,满足企业个性化的要求。利用.NET 程序集、MSIL 和 JIT 编译器实现了对组件的充湖南理工学院毕业设计(论文)2分使用,而且经过内部的垃圾回收机制,可及时回收软件运行时不再使用的内存资源,避免了资源浪费和内存泄露等缺陷。综上原因,本文提出并设计了一套基于 C#远程液位监
10、控软件。该软件不但依靠.NET 类库中强大的类库资源实现了对液位过程的实时监测和远程控制,还利用内部的垃圾回收机制,有效的避免了资源浪费和内存泄露等缺陷。在满足企业个性化设计需求的同时还保证了测控平台的工作性能和测控质量,极大的提高了工业生产效率。1.3 课题研究内容及结构安排 组态软件在工业控制中应用广泛,本文基于此研究设计了一套基于 C#的远程液位监控软件,以弥补组态软件在远程监控领域的不足。论文结构安排如下:第 1 章,描述了课题研究的背景和意义,阐述了基于 C#远程液位监控软件的优点。 第 2 章,软件的总体设计,包括软件说明和功能介绍以及程序设计流程框图。第 3 章,相关软件和技术的
11、基本介绍。第 4 章,软件各功能模块的具体设计与实现。第 5 章,软件生成与测试结果展示。第 6 章,结语与展望。湖南理工学院毕业设计(论文)3第 2 章 系统整体结构2.1 控制系统构成为了实现对水箱液位参数的精确测控以及实时监视和记录。本文设计了一套水箱液位监控系统,此监控系统采用计算机(PC)作为控制器,变频器作为执行器进行构建。监控系统结构图如图 2.1 所示。图 2.1 水箱液位监控系统结构图在此系统中,液位变送器LT101使用测量范围为060cm的阻压式液位(压力)变送器,将检测出来的水箱液位信号转变为420mA标准电信号。控制器LIC101采用PC机,用组态王KingVIEW6.
12、55开发监控软件,并用C#编写可供组态王KingVIEW6.55使用的远程监控控件。A/D与D/A分别选用ADAM5018模块和ADAM5060模块,可经过RS232总线与计算机进行通讯。变频器采用西门子G110变频器,用来获取计算机发送经ADAM5060转换后的420mA控制信号,并完成变频调速(频率范围为050Hz)进而驱动水泵改变管路中的水流量,达到调节水箱液位的目的ADAM5018/5060控制模块体积较小,易于集成,且拥有一个独立的嵌入式的RS232传输卡, 可通过RS232与PC机进行通信。底板上有4个插槽,能够插接ADAM5018/5060的I/O 模块, 从而完成快速数据的收集
13、与控制, 因而水 泵变频器 水槽D/ALIC101L T101水箱A/D计算机湖南理工学院毕业设计(论文)4ADAM5018/5060模块很适宜该系统。2.2 测控软件构成2.2.1 相关技术介绍(1).NET 框架软件基于.NET 框架的 VS2010 编程环境设计,.NET 是一个由 Microsoft .NET Framework SDK 中包括的类、值类型和接口构成的库。该库直接访问系统功能,是组成.NET Framework 程序、组件及控件的基础。(2)C/S 结构软件遵循 C/S 结构,设计了服务器和客户端两大块。该结构可以充分利用硬件的优点,将任务合理安排到客户端和服务器,大大
14、减少了系统整体的通信成本。C/S 结构的根本原理是将大的任务分解为多个子任务,由多台计算机协作完成。其工作模式如图 2.2 所示:图 2.2 C/S 结构工作模式C/S 构架的长处是能够充分利用客户端的应对能力,很多任务能够在客户端处理后再转交给服务器。这样可以大大提高客户端的响应速度。具体如下两点优势:(1)服务器处理数据负担较轻。(2)数据的储存管理能力较为透明。(3)SOCEKT 类服务器和客户端依靠强大的 SOCKET 类建立连接。完成液位过程数据采集后的传输工作,将远端设备的数据实时可靠的传输到服务器端进行检测和纪录,同时服务器也可发送数据到客户端,对远程液位设备进行调控。Socke
15、t 也称“套接字“,用来描绘 IP 地址和端口,是个通信链的句柄。在 Internet 上的主机通常都会运行多个应用软件,并且提供多种服务。而每个服务程序都会构建相应的 SOCKET 与端口一一对应,从而让不同端口拥有不同服务。Socket 本质上供应了过程通信的端点。Socket 连接过程能够分为三步:服务器侦听、确认连湖南理工学院毕业设计(论文)5接和客户端申请。(1)服务器侦听:服务器端 socket 不是定位详细的客户端 socket,而是处于等候连接的状况,实时监测网络状况。(2)客户端申请:是指由客户端提出连接申请,要连接的目标是服务器端的套接字。因此,客户端的 socket 首先
16、得描绘它所要连接的服务器,确认服务器端 socket 的 IP 地址和端口号,进而向服务器端提出连接申请。(3)确认连接:指当服务器端 socket 监听到客户端 socket 的连接申请时,它会回应客户端 socket 的申请,创建一个新的线程,将服务器端 socket 的叙述发给客户端,当客户端确定了此叙述,就会成功握手建立连接。而服务器端socket 还将处于监听状态,等待接收其他客户端 socket 的连接申请。2.2.2 程序流程框图系统根据 C/S 架构,分别创建服务器和客户端。服务器首先创建 socket()套接字,利用 bind()方法绑定本地 IP 和端口,用 listen(
17、)方法监听端口请求,。侦听到端口有连接申请时,调用 accept()方法接受请求,而后用 receive()/send()方法对数据进行读/写操作,传输完成时使用 close()函数关闭服务器。同样客户端也先创建 socket()套接字,获取要连接服务器的 IP 和端口,使用connect()方法发送连接请求,而后使用 receive()/send()函数进行数据的读/写,传输完成时使用 close()函数关闭客户端。系统程序框图如图 2.3 所示:服务器s o c k e t ( ) 建立流式套接字 , 返回套接字 sb i n d ( ) , 将套接字 s 与本地相连l i s t e n
18、 ( ) , 通知 T C P , 服务器准备好接受连接a c c e p t ( ) , 接受连接 , 它等待客户的连接连接建立 , a c c e p t ( ) 返回 , 得到新的数据套接字 , 如 n sr e c v ( ) / s e n d ( ) , 在套接字 n s 上读 / 写数据 , 直到数据交换完c l o s e s o c k e t ( ) , 关闭套接字 n sc l o s e s o c k e t ( ) , 关闭最初套接字 s ,服务结束客户端s o c k e t ( ) 建立流式套接字 , 返回套接字 sc o n n e c t ( ) , 将套接
19、字 s 与远地主机连接s e n d ( ) / r e c v ( ) , 在套接字 s 上写 / 读数据 , 知道数据交换完c l o s e s o c k e t ( ) , 关闭套接字 s , 结束T C P 对话图 2.3 系统程序框图2.3 本章小结本章描述了远程液位监控系统的整体架构设计。包括液位监控系统的各部分组成,监控软件设计所涉及的相关技术介绍,如:.NET 框架、C/S 结构和SOCKET 编程等,以及系统设计的程序框图说明。第 3 章 监控软件程序实现3.1 软件设计方案监控软件设计的核心在于服务器和客户端之间的实时通信。本文提供了两种通信协议,分别是面向连接的 TC
20、P/IP 协议和无连接的 UDP 协议,然而在工业湖南理工学院毕业设计(论文)6控制中必须保证数据传输的可靠性,因此我们选择了安全性高的 TCP/IP 协议作为通讯协议。此外本文还提供了同步通信和异步异步通信两种模式可供选择。同步通信属于串行通信,用次模式,要求客户端在发送一条请求后,必须等到服务器做出相应回应,才能够发送下一条请求。异步通信属于并行通信,此模式下客户端发送一条请求之后,不必等到服务器做出相应回应就可发送下一条请求。在工业控制中,往往需要保证数据传输的实时性,同步通信模式显然不符合要求,因此我们选择能实时传输的异步通信模式。3.2 服务器设计3.2.1 界面设计为了方便演示与测
21、试,创建 Windows 窗体应用程序,进行软件设计。而要生成 ActiveX 控件则需要创建 Windows 控件库项目,但两者界面设计的方法一致(注:该服务器界面以及下章的客户端界面仅为测试通信使用,作为 Active控件发布的界面数据无需手动输入,数据采集完成后直接存储到内部 Buffer 进行发送。而正式的工业液位监控界面由组态王设计,本文不介绍) 。创建好项目后,打开工具箱,拖出我们所需的工具控件如:Lable、Button、TextBox 等进行界面设计,之后修改其对应的属性,双击后则可进行其他部分的代码编写。最终界面如图 3.1 所示。图 3.1 server 界面设计3.2.2 Socket 编程Microsoft.Net Framework 为程序访问 Internet 实现了可分层、可扩展的网络服务,其命名空间 System.Net 和 System.Net.Sockets 包含大量的类能够便于网络通讯程序的开发。所以在编写前应该添加 using System.Net、using System.Net.Sockets 和 using System.Threading 三个命名空间。具体编程可分为以下步骤: