1523.A过程控制实用开发实验软件毕业设计.doc

上传人:laozhun 文档编号:2884412 上传时间:2023-03-01 格式:DOC 页数:43 大小:2.34MB
返回 下载 相关 举报
1523.A过程控制实用开发实验软件毕业设计.doc_第1页
第1页 / 共43页
1523.A过程控制实用开发实验软件毕业设计.doc_第2页
第2页 / 共43页
1523.A过程控制实用开发实验软件毕业设计.doc_第3页
第3页 / 共43页
1523.A过程控制实用开发实验软件毕业设计.doc_第4页
第4页 / 共43页
1523.A过程控制实用开发实验软件毕业设计.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《1523.A过程控制实用开发实验软件毕业设计.doc》由会员分享,可在线阅读,更多相关《1523.A过程控制实用开发实验软件毕业设计.doc(43页珍藏版)》请在三一办公上搜索。

1、毕业设计题 目 过程控制实用开发实验软件学 院 控制科学与工程学院专 业 自动化姓 名 学 号 指导教师 二OO八年六月十四日目录摘要2ABSTRACT31 系统简介41.1 选题背景41.2选题的目的、意义52 系统方案确定62.1 系统要求62.1.1 需求分析62.1.2 人机界面规划62.2 方案论证62.2.1 Visual C+ 6.0和Oracle数据库方案62.2.2 Visual C+ 2005和Access数据库方案82.3 系统方案的确定103 系统概要设计113.1 整体方案设计113.2 系统模块概述114 系统详细设计194.1 软件设计综述194.2 软件系统功能

2、与界面详细设计194.2.1 主界面设计194.2.2 串行通信模块设计204.2.2.1 串行通信开发背景204.2.2.2 串行通信基本原理204.2.2.4 串行通信界面与功能设计分析214.2.3 PID模块设计254.2.3.1 PID调节的工作原理和特点254.2.3.2 数字PID控制系统算法264.2.2.4 数字PID调节器参数的自寻最优控制294.2.4 数据库模块设计364.2.5 动态曲线模块设计375 软件使用概述385.1 主界面385.2 通信参数设置385.3 历史数据查看396 总结41致谢42参考文献43过程控制实用开发实验软件摘要在目前的工业控制中,PID

3、过程控制系统仍然占据着重要的地位,并应用于许多重要的项目。本设计基于微软公司的Windows XP操作系统,使用Visual C+做为编译器及开发平台,以经典的MFC(Microsoft Foundation Class,微软基础类库)为软件的基础架构,开发出实用的过程控制实验软件。本软件采用RS232串口做为上下位机的通信方式,通过对PID参数的调节来对水箱液位进行实时控制。本文重点介绍了实验软件的设计流程和各模块在过程控制中的具体功能。此软件可以实现的功能有:PID参数设置与调节、串行设备的检测与通信、实时控制曲线显示、实时数据存储与读取、手动/自动两种工作方式切换、MatLab系统模拟等

4、各种功能,不同模块共同协调控制下位机进行液位调节。本软件界面友好、控制过程简单、控制效果良好,同时有较好的扩展性,为进一步开发过程控制实验上位机控制软件奠定了基础。关键词:Visual C+;MFC;过程控制系统;串行通信;PID调节;液位控制系统ABSTRACTCurrently in industrial controls, PID process control system is still holding important status, and being applied in many important projects. Basing on Windows XP opera

5、ting system of Microsoft Corporation, and using Visual C+ as the compiler and developing platform, with the classical MFC (Microsoft Foundation Class) as the basic framework, the design is to develop a process control system software practically available for laboratory using. The software introduce

6、s RS232 serial port for communication between upper machine and lower machine, and it can control the level of water tank real-timely via adjusting PID parameters. This paper focuses on presentating the designing flow of the software and the function of each modules in the process control. The funct

7、ions which can be achieved by this software are setting and adjusting the PID parameters, detection and communication of the serial devices, real-time controlling curve display, real-time data saving and reading, switching between automatic and manual mode, MatLab simulation, etc. Different modules

8、can co-control the lower machine in order to adjust the level. The software is user friendly, easy to use and of good controlling effect, it also has a good expansibility which based the further development of process control laboratory-use upper machine software.Keywords: Visual C+; MFC; process co

9、ntrol system; serial communication; PID control; level control system1 系统简介1.1 选题背景随着计算机技术和自动化技术的发展,计算机控制系统的广泛应用于工业自动化中,极大地提高了工厂装备的技术水平、促进了生产集成化、提高了产品质量、保证了生产的安全可靠。于是,用计算机控制系统对工厂设备进行有效的检测、监视和控制就成了一个很重要的话题。在一个计算机控制系统中,位于上位机的组态软件可以说是整个控制系统的核心,它包含了过程控制中的比较环节和控制器环节,这就包括了被控量信号的采集、算法和控制、控制信号的转换和输出以及对控制过程的

10、监视。因此,选择并应用一个良好的组态软件对于一个控制系统来说是非常重要的。而在现在市场上的不同的组态软件产品在数量和质量上也满足了不同用户的需求。目前国内市场上的组态软件产品按厂商可大致划分为三类,即国外专业软件厂商提供的产品,国外硬件或系统厂商提供的产品,以及国内自行开发的国产化产品。而从市场状况来看,国内组态软件市场大部分份额仍被国外几家组态软件占据,如:美国Intellution公司的FIX、美国Wonderware公司的InTouch、澳大利亚CIT公司的CITECH、德国西门子公司的WINCC、美国T.A.Engineering公司的AIMAX等。一些国外著名硬件或系统厂商也推出了日

11、趋成熟的组态软件产品,如美国GE公司的Cimplicity,美国AB公司(Rockwell自动化)的RSView。这些组态软件,已一改过去仅为其本身硬件配套的OEM形式或面孔,通过大力加强对其他硬件产品的驱动支持和软件内部的各种功能,而发展成为专业化的通用组态软件。如美国GE公司成立了近百人的专门软件部门,已将其Cimplicity开发成为通用组态软件产品,尤其加强了服务器及网络冗余和管理层方面的功能,加之随软件提供各种驱动程序,在国际市场上也获得了一定的市场份额。而在国产软件方面,近年来已有一定影响力的产品有组态王、SYNALL、MCGS、天工、ControlX、虎翼、力控等。国内有不少单位

12、,如一些高校、研究所、公司,甚至一些个人正在积极地搞组态软件产品的开发。国产化的组态软件具有较强的价格竞争优势,但从另一个方面来看,由于资金来源少,软件工程的组织也较为薄弱,因此一些软件的商品化程度不高。目前国产化组态软件主要应用于一些小型的、非重要性的项目中,包括应用于一些学校的实验室设备。另外,硬件厂商的组态软件产品目前在中国市场占有的份额也不容忽视,它们不但在对本公司硬件产品的集成配套方面具有优势,而且正在打入与其他厂家硬件产品集成的市场。一些原DCS的系统厂商,如Rosemount,Honeywell等公司也陆续推出了新型的、更开放的控制系统以及现场总线产品,并配以“开放的”组态软件。

13、国内也已有一些厂商,有一定规模同时有能力(包括技术实力、资金实力)快速进入组态软件市场,如:浙大中控、北京和利时、浙江威盛、北京金穗等;另外几大电力系统商:南京南瑞、山东大学积成电子、山东烟台东方电子,四川联合大学等;其它大型系统集成商:清华同方、清华紫光、天津仪表等。由于这些公司均有很强的技术实力和丰富的工程经验、业绩,市场影响力和认同程度较高,其软件虽然是整个控制系统的配套软件,但都接近通用组态软件,不用付出太大的代价就可以进入市场,因此应该说这些公司是组态软件商第一梯队最大的潜在竞争者。从目前来看,这些组态软件的开放性还主要是面对管理层,对下面的控制一般仍只针对本公司产品,因此不能称为通

14、用组态软件,这些专门的组态软件都有很强的仪控特色,且价格不菲12。而有一个市场仍然缺乏有针对性的组态软件,那就是电教市场。利用易用的电教软件进行教学现在已经是各高校甚至一些中学的主要教学手段,而在这之中,有一些学校的实验室在使用盗版的或者破解的组态软件来完成相应的教学任务,这种状况首先不利于知识产权保护的推广,其次这些大型的组态软件由于缺少针对性,往往体积庞大,不符合用户的需求。因此,在这个市场中现在需要一些功能有针对性,易于使用,且有一定的扩展性的组态软件。1.2选题的目的、意义由于一般的组态软件主要用于专业领域,因而有一部分功能不仅对于学生实验来说是多余的,而且对于学校的投入来说也是不经济

15、的。因此,针对这种现状,这个实验软件主要用于计算机过程控制的实验:一方面可以使用此软件帮助已经做完计算机过程控制课程设计的同学深入探讨一些实验内容,如:积分分离、不完全微分等;另一方面,它可以在C+的环境下,为部分师生提供研究一些如单纯形加速法进行PID参数寻优算法、模糊控制算法、大林算法等的计算机过程控制应用算法的实验平台。除此之外,此软件还可以作为一个微型、实用的PID控制软件代替一般的大型工业组态软件应用于某些低成本的节能环保场合。由于软件主要面向于实验室,因此要求运行软件的硬件配置需求必须尽量的低,且软件占用资源较少。2 系统方案确定2.1 系统要求2.1.1 需求分析这个实验软件的主

16、要用途,是通过RS232串口与下位机进行通信,接收来自实验设备下位机采集的各种信息,并通过人机界面显示出被控量的控制曲线、控制参数等;同时,用户也可以通过此软件修改需求量和PID调节参数,对液位对象进行过程控制。此外,软件也能通过数据库保存采集得到的信息、控制参数等。因此,此软件应该具有参数编辑(包括修改和重置)、储存和浏览等基本功能,下面是对它的具体需求。a. 程序能够通过串口与下位机通信。b. 程序能够将采集得到的信息转变为用户可读的测量值以及更为直观的响应曲线。c. 用户能浏览历史数据及曲线。d. 用户能修改PID参数和设定值并保存。e. 用户能随时查看算法程序代码。f. 用户界面应为G

17、UI的且易于使用的。2.1.2 人机界面规划a. 实验软件使用对话框窗口。b. 窗口菜单包括文件、设备、数据以及模拟等菜单。c. 可在文件菜单中调出并查看算法代码d. 设备菜单中的项实现查看与下位机的连接状态并修改通信参数。e. 数据菜单中的项实现查看历史数据的功能。f. 用户可以在对话框中直接修改各种控制参数g. 软件可通过座标图显示响应曲线2.2 方案论证本过程控制实验软件,是过程控制系统的软件部分,在整个过程控制系统中起到了与用户交互、对下位机的实时监控及数据存储与处理的作用。它包括:串行通信模块、数据库模块、动态实时曲线模块、PID调节模块、模拟系统模块五个部分,通过前台界面操作与后台

18、数据处理与下位机配合实现对液位的PID控制过程。为实现上述功能并结合自动化界流行开发软件的成功案例以及自己较为熟知的语言,有两种方案可供选择:第一、采用Visual C+6.0和Oracle 9i数据库方式;第二、采用Visual C+ 2005和Access数据库方式。下面分析这两种方案的设计思路,并最终选择了第二种设计方案。2.2.1 Visual C+ 6.0和Oracle数据库方案Visual C+ 6.0是一种可视化的、面向对象的Windows开发工具,它使用流行的C+语言,具有易用、通用和开发效率高的特点。随着微软对它不断地改进以及计算机本身在性能上的迅速提高,使得Visual C

19、+越来越适用于一般的应用程序开发。虽然Visual C+ 6.0已经历经多年,但它仍然是微软公司发布的,使用最广泛的开发平台。另一方面,Oracle数据库则是甲骨文(Oracle)公司开发的跨平台大型数据库管理系统,其优点是可用性强、稳定、安全,面前该软件的最新版本为Oracle 10g,而此方案中则选择Oracle 9i此方案的串口通信使用MFC提供的MSComm控件完成。进入Visual C+ 6.0的编程界面并新建相应的工程后,为工程插入“Microsoft Comm Control 6.0”控件,点击确定按钮后控件将被添加到Visual C+工具箱里面,此时就可以将控件拖至工程的窗口中

20、并添加为一个对象。简单说明MSComm控件的属性及方法如下。void SetCommPort(short nNewValue);此函数的作用为设置通信端口,设为1时表示选择端口为COM1,设为2时表示选择端口为COM2;short GetCommPort();此函数的作用为获取通信端口号。void SetPortOpen(BOOL bNewValue);用于打开端口,参数为TRUE时打开,为FALSE时关闭。BOOL GetPortOpen();判断端口是否已经打开,返回值为TRUE时表示端口已打开,为FALSE则相反。void SetRThreshold(short nNewValue);用

21、于设定R上限值,R上限的意义是当串口每次传输的数据长度大于R上限时,就会触发OnComm函数,如此可以就调用数据进行其他操作。short GetRThreshold();用于获得R上限值。void SetSettings(LPCTSTR lpszNewValue);设置串口的设定,参数为一个常量字符长指针,其内容的格式为:“波特率,校验位,数据位,停止位”,如“9600,n,8,1”。CString GetSettings();用于获得设定值。void SetOutput(const VARIANT& newValue);设置需要用串口输出的数据。VARIANT GetOutput();此函数

22、用于获得从串口输出的数据。void SetInput(const VARIANT& newValue);此函数用于设置串口输入的数据。VARIANT GetInput();获得从串口输入的数据122.12.22.2.1方案的优点为,此方案的串口通信部分只需要在工程中应用MSComm组件即可,因而这个部分并不困难。在数据库连接方面,由于微软的MFC中提供了ODBC数据源,因此能够很方便的与Oracle数据库进行连接和操作14。而此方案的缺陷主要在于,使用Oracle进行数据库管理有一个缺点,那就是Oracle 9i的软件本身要占用相当大的磁盘空间,而且在默认配置下,其后台服务全部打开时会占用较多

23、的系统资源(需要物理内存达512MB以上),这不符合选题要求中的硬件配置低的条件。另外,由于Visual C+ 6.0自带的MFC版本较旧,在开发过程中如果不注意某些内存和变量的设置和使用的话,有可能导致开发出来的软件在具体运行中出错。2.2.2 Visual C+ 2005和Access数据库方案Visual C+ 2005事实上是Visual Studio 2005内整合的组件之一,与前代产品相同,它也是一种可视化的、面向对象的开发工具,只不过它基于的系统环境从Visual C+ 6.0的Windows 98变成了Windows XP。微软对其附带的新版本的MFC(版本号为v8.0,而Vi

24、sual C+ 6.0中的MFC为v6.0)进行了一些变动,并对原有版本不完善的地方进行了改善,使编译得到的程序在稳定性和用户界面上有一定的增强。而Access数据库则是微软的Office软件中的一个组件,是一个应用与较小型数据库的软件,其功能能满足一般需求,优点是与微软的Visual Studio系列产品结合较为好,在相互支持上有优势。在此方案中由于MFC版本的更新,MSComm控件中成员函数的名称也略有变化,以下为两个版本中对应函数列表。Visual C+ 6.0(MFC6.0)Visual C+ 2005void SetCommPort(short nNewValue)void put_

25、CommPort(short newValue)short GetCommPort()short get_CommPort()void SetPortOpen(BOOL bNewValue)void put_PortOpen(BOOL newValue)BOOL GetPortOpen()BOOL get_PortOpen()void SetRThreshold(short nNewValue)void put_RThreshold(short newValue)short GetRThreshold()short get_RThreshold()void SetSettings(LPCTST

26、R lpszNewValue)void put_Settings(LPCTSTR newValue)CString GetSettings()CString get_Settings()void SetOutput(const VARIANT& newValue)void put_Output(const VARIANT& newValue)VARIANT GetOutput()VARIANT get_Output()void SetInput(const VARIANT& newValue)void put_Input(const VARIANT& newValue)VARIANT GetI

27、nput()VARIANT get_Input()新旧版本中对应的函数功能是一样的,所以在使用时只需要注意函数名的不同就行了。此方案的优点为,在Visual C+ 2005平台上编写出来的程序在运行时与在Visual C+ 6.0上编写的程序在功能和运行上没有很大的差别,而从界面和外观上来看,主要的区别是基于MFC8.0创建的程序界面比MFC6.0创建的程序要更为好看一些。(如图1和2对比所示)在数据库连接方面,微软的Access数据库符合ODBC数据库标准并可以使用ADO接口来连接,这一点与方案1相似;而Access软件管理数据库并不像Oracle 9i那样需要多个后台服务的支持,因此占用的

28、系统资源要少很多,其所需的硬盘空间也远比Oracle 9i要少。另外,由于Access主要面向小型的数据库,因此在本方案中,只要用户安装了微软任一较新版本的Office系列办公软件,就能启动Access直接查看此设计的过程控制软件创建的.mdb数据库文件。此方案的缺陷亦值得注意,这个方案在开发时对于系统的硬件配置要求较方案1高,因此设计开发时需要更多的系统资源,另外,如果要对此软件进行二次开发,就需要在Visual Studio 2005或更高版本下进行,但是,由于Visual Studio 2005已经是3年前发布的开发平台,四年之前配置的电脑便已经完全可以流畅的运行Visual Studi

29、o 2005并进行软件的设计与开发,而随着计算机软硬件不断升级与价格不断降低,目前市场上的主流硬件配置运用Visual Studio 2005进行开发可以说是没有任何问题。图2-1 在Visual C+ 6.0下用MFC6.0创建的对话框示例图2-2 在Visual C+ 2005下用MFC8.0创建的对话框示例2.3 系统方案的确定鉴于本设计的要求中提出设计的目标软件是面向实验室应用的,为了实现简便、易用、节省资源等要求,因此最终选择方案2,在以Windows XP为操作系统的PC机上,以Visual Studio 2005中的Visual C+2005做为开发平台,设计过程控制实用开发实验

30、软件。同时利用RS232串口与下位机通信。而在数据库方面,则使用基于ODBC OLE的ADO接口访问Access数据库,相应的人机界面GUI则用Visual C+ 2005提供的MFC类库设计。实验室液位对象的完整PID控制系统也包括各种控制算法,包括增量式PID算法、积分分离式算法、单纯形加速寻优算法等。3 系统概要设计3.1 整体方案设计本系统从实现功能来分一共有四个模块,分别为串口通信模块、PID调节模块、实时曲线显示模块和数据库模块。系统的用例图、类图、系统功能图分别如图3、图4、图5;系统中各个类的类图如图6至图11所示45。图3-1 系统用例图3.2 系统模块概述(1)、串行通信模

31、块此模块为本软件系统与下位机通信的基础部分,以MFC 8.0提供的MSComm控件为核心,通过MFC的消息响应机制来接收下位机消息。(2)、数据库模块数据库模块以微软Access桌面数据库为基础,此模块主要负责把从串口实时读取的数据以及由PID控制模块运算得到部分的数据进行存储,并能够随时以用户界面形式调用查看。(3)、PID控制模块负责PID参数的设置、调节与PID算法的控制,是整个系统的核心部分,提供了手动、自动两种工作方式。(4)、实时曲线显示模块该模块负责把串口传来的数据图形化,产生动态曲线,使整个PID调节过程更加直观,另外,实时数据还可以保存以供用户使用。图3-2 系统类图图3-3

32、 系统功能图系统中主要类的属性与方法及其功能如下1、主程序类(MainApp)属性_ConnectionPtrm_pConnection,此特性为指向将要创建的ADO对象的指针,通过指向指定的数据库,可将软件主程序与数据库连接起来。方法virtual BOOLInitInstance(),此操作为一个返回值为布尔量的虚函数,用于初始化主程序,初始化的内容包括建立与数据库的连接。BOOLConnectionDB(void),此操作用于创建与ADO数据库对象的连接。2、主对话框类(MainDlg)属性CSliderCtrlm_sldSV,滑动控件对应的控制变量floatfProp,从编辑框中输入的

33、比例系数。floatfInte,从编辑框中输入的积分时间。floatfDiff,从编辑框中输入的微分时间。intnSampCyc,从编辑框中输入的采样周期。intnSv,设定值。intnValveOp,阀门开度,为0至100之间的一整数。SCROLLINFOsi,滑动控件对应的控制结构体。CButtonm_bRun,“运行”按钮控件对应的控制变量CMscommm_Com,MSComm控件对应的控制变量。方法virtual BOOLOnInitDialog(),用于初始化对话框的虚函数。afx_msg voidOnSysCommand(UINT nID, LPARAM lParam),用于相应系

34、统操作的消息响应函数。afx_msg voidOnPaint(),框架绘制函数afx_msg HCURSOROnQueryDragIcon(),当用户拖动最小化窗口时系统调用此函数取得光标显示。voidOnCommMscommM(),MSComm控件的消息响应函数,用于捕捉来自串口的消息并进行处理。afx_msg voidOnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar),用于捕捉对话框中的滑动控件,以获得用户输入的液位设定值。afx_msg voidOnModal(),用于建立模态对话框的消息相应函数。afx_msg void

35、OnFileQuit(),afx_msg voidOnBnClickedBtnRun(),开始运行afx_msg voidOnDataHistory(),用于打开历史数据查看窗口的按钮afx_msg voidOnDeviceChkcomm(),用于发送信息以检测设备连接状况的函数。3、串口参数设置模态对话框类属性intiTime,用于设置定时时间长度。CMscommm_Com,MSComm控件对应的控制变量。方法voidOnCommMscomm(),MSComm控件的消息响应函数,用于捕捉来自串口的消息并进行处理。afx_msg voidOnTimer(UINT nIDEvent),定时功能的

36、消息响应函数。afx_msg voidOnBnClickedBtnConnect(),连接RS232串口。afx_msg voidOnBnClickedSet(),设置串口参数。afx_msg voidOnBnClickedBtnSend(),用于发送测试消息的按钮。afx_msg voidOnBnClickedBtnRecv(),用于开始接收测试信息的按钮。4、历史数据查看非模态对话框类属性CDgrd_history m_dgr,历史数据显示表格的控制参数。方法afx_msg voidOnBnClickedBtnFrstpg(),历史数据显示表格翻到第一页。afx_msg voidOnBnC

37、lickedBtnPrevpg(),历史数据显示表格前翻一页。afx_msg voidOnBnClickedBtnNextpg(),历史数据显示表格后翻一页。afx_msg voidOnBnClickedBtnLastpg(),历史数据显示表格翻到最后一页。5、算法类方法floatIncreacemental(float kp, float Ti, float Td, int T, float r, float c),进行增量式PID控制的算法函数。floatIntegralSeperate(float kp, float Ti, float Td, int T, float r, float

38、 c, float e0),进行积分分离PID控制的算法函数。voidsimplx(Mat_IO_DP &a, const int m1, const int m2, const int m3,int &icase, Vec_O_INT &izrov, Vec_O_INT &iposv),单纯形加速寻优法的算法函数。图3-4 主程序类图图3-5 主对话框类图图3-6 历史数据查看非模态对话框类图图3-7 串口参数设置模态对话框类图图3-8 算法类类图图3-9 曲线控件类图4 系统详细设计本章以五个系统模块为核心,分别从用户和开发者的角度对整个系统的设计过程进行详尽的阐述,并详细介绍本软件各个功

39、能模块的作用与相互关系,其中包括PID核心算法的流程图和代码。4.1 软件设计综述此软件主要面向的用户是高校中进行计算机过程控制实验或课程设计的师生,因此设计软件时就要求有以下几个特点:1、界面友好;2、由于软件系统的运行基于MFC的消息响应机制,因此,在设计软件的过程中应该确保各模块之间消息响应的正确以及全局变量的妥善调用,否则就有可能出现各种异常情况,而在系统调试的过程之中,不同的异常则可通过C+的trycatch()语句来捕捉和显示67。4.2 软件系统功能与界面详细设计4.2.1 主界面设计软件的界面是软件与用户直接进行交互的层,界面的好坏决定用户对软件的第一印象。设计良好的界面能够引

40、导用户自己完成相应的操作,起到向导的作用。因而,在设计过程中必须合理布置软件系统GUI中的各个部件,使之符合用户的使用。本软件的主界面主要分为标题栏、菜单栏、参数设置栏、曲线绘图显示区、四部分,主界面如图6所示。图4-1 软件主界面系统主界面在设计过程中遵循了简洁、友好和实用的设计原则。菜单栏中各个菜单可以实现以下功能:1.文件菜单中可调出窗口查看算法代码;2.设备菜单中可进行串行通信参数设置以及通信状态检测;3.数据菜单中可查看历史数据;4.模拟菜单中可以调用MatLab模拟系统。而位于菜单栏下方客户区左侧的为控制参数设置组。客户区中用于显示液位控制曲线。本实验系统目前只支持单台设备的连入。

41、如果需要再进一步开发可以监控多台设备的系统,则可在再开发时将客户区的曲线撤消,改变为多线程启动窗口。4.2.2 串行通信模块设计4.2.2.1 串行通信开发背景在工业控制中,经常要组成以微机为上位机,以单片机为下位机的控制网络,两个部分之间一般通过RS-232或RS-485串行接口进行通信。这样,既满足实时控制要求,又使得控制操作简单易行。单片机在工业控制中直接位于第一线,它面大量广,是工厂自动化的关键部件之一。目前开发串行通信通常有如下几种方法。一是利用Windows系统的Windows API的通信函数,包括BuildCommDCB,GetCommConfig,SetCommConfig等

42、;二是利用C+的标准通信函数_inp、_inpw、_inpd、_outp、_outpw、_outpd等直接对串口进行操作;三是使用Microsoft Visual C+中提供的通信控件MSComm (Microsoft Communication Control);四是利用第三方编写提供的通信类。以上几种方法中第一种使用面较广,但由于比较复杂,使用时较为困难,多用于专业用途;第二种需要了解硬件电路结构原理;第三种方法与第一种方法在使用上类似,但较简单,只需要对串口进行简单配置就可以使用;第四种方法则是利用由第三方提供的专门用于串行通信的类来完成814。本系统软件部分利用微软MSComm通信控件

43、进行串口通信编程,硬件则基于9帧的RS-232通信。4.2.2.2 串行通信基本原理所谓“串行通信”是指外设和计算机间使用一根数据信号线,数据在一根数据信号线上按位进行传输,每一位数据都占据一个固定的时间长度。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。相比之下,由于高速率的要求,处于计算机内部的CPU与串口之间的通信仍然采用并行的通信方式,所以串行口的本质就是实现CPU与外围数据设备的数据格式转换(或者称为串并转换器),即当数据从外围设备输入计算机时,数据格式由位(bit)转化为字节数据;反之,当计算机发送下行数据到外围设备时,串口又将字节数据转

44、化为位数据。串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。根据微软的MSDN 2005中的叙述,其Windows API中关于串行通信设备(包括串口RS-232C、RS-422、RS-449等)速率的设置,最大可支持到RS_256000,即256K bps,但

45、一般主机和单片机的串口通信使用9600bps的速率即可以满足通信需求。84.2.2.3 MSComm控件功能叙述MSComm 为微软公司提供的Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。MSComm控件可以认为是对Windows API函数的封装,由于该控件提供了多种使用端口,因此在微软公司推出的Visual C+、Visual Basic和Visual C#等语言中均可使用,而通过一定的方法和步骤,这种ActiveX控件甚至可以运用于Borland公司推出的Delphi语言。在建立一个工程后,加入MSComm控件,就可以利用MSComm

46、控件封装的类中包含的各种成员函数来进行串行端口传输和数据接收,从而为应用程序提供串行通信功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数。MSComm 控件提供了两种处理通信问题的方法:一是事件驱动方法(Event-driven),一是查询法(Inquiry)。1、事件驱动法事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD)或Request To Send (RTS)线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm

47、 控件的OnComm事件捕获并处理这些通信事件。OnComm事件还可以检查和处理通信错误。所有通信事件和通信错误的列表,参阅CommEvent属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。2、查询法查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。在系统

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号