车床切削力的测试系统设计.doc_第1页
车床切削力的测试系统设计.doc_第2页
车床切削力的测试系统设计.doc_第3页
车床切削力的测试系统设计.doc_第4页
车床切削力的测试系统设计.doc_第5页
免费预览已结束,剩余48页可下载查看

下载本文档

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

文档简介

沈 阳 航 院 设 计 用 纸前言随着科学技术的发展,人们对自动化的要求越来越高,对于车床切削力的检测,我院机械设计系学生原来使用的方法是通过测力仪以及动态电阻应变仪在双对数坐标纸上测绘出电压变化曲线,再根据曲线进行计算,得到力的变化曲线以及力与各车床参数之间的关系曲线和经验公式。这种数据采集和数据处理均靠人工进行的方法既繁琐又不精确。而随着电子技术的迅速发展以及微型计算机技术的普及,自动检测技术在机械工业的发展中得到了广泛的应用。尤其是面向对象程序设计语言和单片机的出现,使自动检测系统的成本及精度得到了明显的改观。实验室的切削力实验也多采用计算机辅助测试。随着软件技术的快步发展,面向对象的程序设计语言相继出现,Visual Basic语言以其实用、方便、快捷、开发周期短、广泛而强大的功能越来越被广大编程人员所亲赖,本系统的上位机部分就采用这种语言来编写的。经过调试,结果表明:此系统简化了传统的测量电路,工作效率高,测量准确,实现了切削力测试系统的自动化。本文首先论述了整体系统工程的工作原理,然后是方案论证,接着分别介绍了硬件电路设计和软件系统设计。 重点介绍了软件系统程序的编写过程,同时也对硬件的原理设计做了简练的叙述,最后讲述了软件测试及软硬件联通调试。第1章 方案论证本车床切削力的测试系统分上、下位机两部分,本文主要对上位机进行设计。上位机的主要任务是接收下位机传送过来的切削力数据,将其存储,并对采集的数据进行处理,得到切削力与进给量,切削力与切削深度,切削力与切削速度之间的关系曲线和经验公式,并能显示力的波形。图1.1为机床切削力的计算机辅助采集与处理系统简图。测力仪将主切削力Fc转变成电压信号VFc;经过电阻动态应变仪和低通滤波放大器将信号放大;再经过A/D转换器转换成数字信号,输入给单片机或微型计算机;计算机按预编程序对数字信号进行分析处理与计算,将其结果(切削力测量值及经验公式)以及各种关系曲线和随时间变化的力的曲线显示出来,也可以用打印机将切削力的各种影响曲线和随时间变化的曲线打印出来。该系统不仅可以测量切削力的平均值,而且可测得切削力的瞬时值,时间间隔在100us25ms之间。图1.1 切削力的计算机辅助采集与处理系统框图根据系统的设计要求,上位机部分可以分为用户控制界面模块、串口通信模块、数据存储模块、数据处理模块、曲线绘制模块以及曲线打印模块。以下介绍上位机的设计方案选择。1.高级语言的选择随着软件技术的快步发展,面向对象的应用程序的相继出现,许多设计语言都能够实现上下位机通信的编写,像Visual Basic语言、Visual C+语言、Visual FoxPro语言等等。对于目前短期开发的系统而言,Visual Basic语言以其实用、方便、快捷、开发周期短、ActiveX控件丰富、可移植性好、广泛而强大的功能越来越被广大编程人员所亲赖。似乎有些专业的编程人员也放弃了Visual C+而改用了Visual Basic之类的RAD编程工具,尽管Visual C+在灵活性、代码紧凑、运行速度快以及底层开发等方面Visual Basic是无法与其比拟的,但编写Visual C+应用程序过长的调试和开发周期确实有点不适应当今的应用程序开发环境。因此在本系统的设计中,采用Visual Basic语言来设计系统的上位机部分。2.界面的设计使用高级语言编程可以在PC机上编制非常友好、直观的人机控制界面。把原来的人体直接控制变成了鼠标、键盘的间接控制;并且通过直观的控制界面可以很容易的实现控制,对现场的控制情况一目了然,增加了操作人员的视觉感、安全感,简化了操作。用户通过各窗体与应用程序对话,而程序相对于用户是隐藏的,用户只要求程序能实现他们的具体要求,而不关心程序是如何组织的,因此,一个好的应用程序,应该具有友好的用户界面。3.串口通信模块的设计由于系统对数据传输的速度要求并不高,同时考虑串口的价格比并口低,因此本系统采用串口进行通信。Visual Basic语言的MSComm通信控件提供了一系列标准通信命令接口,它允许建立串口连接,还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种事件和错误,从而可以用它建立全双工的、事件驱动的、高效使用的通信程序。因此在设计中采用MSComm控件处理通信问题是必要的选择。要把上位机的数据送到串行端口上以及怎样才能把串行端口上数据接收进来,是上位机编程中的关键部分。4.数据处理由于系统要求的是单因素测力,在刀具、被切削的材料、应变仪固定的情况下,切削力主要与三个因素有关,即切削深度、切削速度、进给量。而且固定任意其中的两个量,则切削力与剩余的一个量成指数关系,两边取对数,则变成了线性关系,即在双对数的坐标纸上曲线是直线,因此在数据处理模块采用了一元线性回归算法,通过一元线性回归算法计算出曲线的参数。当然同时我们要找到切削力的实时变化曲线(这条曲线理论上是一条平行于X轴的直线,因为固定了切削深度、切削速度、进给量的情况下,切削力为一个常数,而实际测量中由于干扰,直线有所起伏)。5.数据存储在数据存储模块中,可以采用数组和数据库两种存储方式存储数据。使用数组存储数据既方便数据的传递,又方便数据的运算处理,而下位机采集的数据仅为切削力的实时值,所以只需要采用简单的数组对接收的数据进行存储即可,这使得程序中数据的调用更加方便。6.曲线绘制模块从下位机接收来的数据,经过处理运算之后,就要根据数据结果做出力与切削深度、切削速度、进给量之间的关系曲线。Visual Basic语言提供了MSChart控件绘制各种图表。使用 MSChart 控件可以方便、直观的按照一定的规范将数据以图表的形式绘制出来,并且易于编程。在曲线绘制模块中,拟采用MSChart控件显示力的关系曲线。7.曲线打印模块为了整个系统的完整性,需要设计曲线打印功能,以适应用户的需要。第2章 硬件电路介绍2.1 整体电路介绍车床切削力系统的下位机部分实现的功能是承担切削力信号的采集、A/D转换以及将数据传输给上位机。根据系统的要求,下位机硬件电路部分需要实现滤波、放大、A/D转换以及数据传输。这样就可以把硬件电路部分分为滤波电路、放大电路、采样保持电路、A/D转换电路、串口通信电路和电源电路。下位机整体电路见附录:下位机整体电路。2.2 串行通信电路介绍上下位机进行通信,涉及到数据通信问题。数据通信方式有两种,即并行数据通信和串行数据通信。并行数据通信是指数据的各位同时进行传送(发送或接收)的通信方式。其优点是传递速度快;缺点是数据有多少位,就需要多少根传递线。例如MCS-51单片机与打印机之间的数据传送就属于并行数据通信。并行通信在位数多,传送距离远是就不太适宜。串行数据通信是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输。如图2.1所示:图37 串行数据通信在串行数据通信中,起始位占用一位(低电平),用来表示字符的开始。其后为7 或8 位的数据,第8位通常为奇偶校验位,最后一位为停止位(高电平),用来表示字符传送结束。上述字符格式通常作为一个串行帧,如无奇偶校验位,即为常见的N.8.1帧格式。串行数据通信中,每秒传送的数据位称为波特率。如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为1200 个,单个字节传送的时间即为波特率的倒数:T=1/1200=0.833ms。即每一位数据都占据一个固定的时间长度。串行数据通信突出优点是只需一对传送线,这样就大大降低了传送成本,特别适用于远距离通信;其缺点是速度传送较低。假设并行传送N位数据所需的时间为t,那么串行传送的时间至少为Nt,而实际上总是大于Nt。因此,在远距离通信中串行数据通信可以节约通信成本,当然,其传输速度要比并行数据通信传输慢。而通常单片机与计算机间的数据通信常采用串行数据通信的方式。EIA RS232C是串行通讯中应用最广泛的标准总线, 它包括了按位串行传输的电平和机械方面的规定,其信号传输的最大电缆长度为30m,最高传输速率为30Kbps,因此,其适用于数据传输速率低、通信距离短的数据通信。通常PC机配有符合EIA RS-232C规范的外部总线标准接口,RS-232C采用的是负逻辑,即逻辑“1”:5V至15V;逻辑“0”:+5V至+15V。单片机通过普通I/O 口与PC 机通讯时,由于单片机输入输出电平均为TTL电平,TTL电平的逻辑“1”和“0” 则分别为2.4V和0.4V。二者电平的规范不一致,因此要完成PC机与单片机的数据通讯,必须外接电路进行电平转换。即在单片机发送端用驱动器将TTL电平转换为RS-232C电平,在接收端用接收器将RS232C电平再转换为TTL电平。 下位机串行接口部分选用了MAXIM公司的标准RS232接口芯片MAX3232来作TTL电平到RS232 接口电平的转换。MAX 3232芯片是MAXIM公司生产的包含两路接收器和驱动器的通用串行接收/发送驱动器芯片。该芯片适用于各种EIA-232C和V2.8/V2.4的通信接口。MAX3232芯片内部有一个电源电压变换器,可以用单电压(+5V)实现RS232接口逻辑“1”(-3V15V)和逻辑“0”(+3V15V)。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有12V电源的场合,其适应性更强。加之其价格适中,其外围电路简单,只需外接五个0.1F的电容即可,所以被广泛采用。下位机所采用的单片机与计算机串行接口电路如图2.2所示: 图2.2 单片机与计算机串行接口电路第3章 上位机系统设计本论文主要介绍上位机系统的设计与实现。上位机的主要任务是接收下位机传送过来的切削力数据,将其存储,并对采集的数据进行处理,得到切削力与进给量参数、切削力与切削深度参数、切削力与切削速度参数之间的关系曲线和经验公式,并能显示和打印力的曲线以及经验公式。在系统设计时,基于Windows程序风格而编写。例如,在界面设计模块中,系统对用户的某些如打开的文件类型不对、本应该输入数字而用户输入了字符等其它非法的值、打开文件的路径不对等等有可能导致系统出错或崩溃的错误操作进行处理并提示用户。系统还有历史记录的以及打印的功能,这使得系统的功能更加完善。依照系统的功能要求,系统设计分为用户控制界面模块、串口通信模块、数据存储模块、数据处理模块、曲线绘制模块以及曲线打印模块。整个系统的方框图如图3.1所示图3.1 系统方框图下面分别详细介绍各个模块的设计。3.1 用户控制界面模块设计使用高级语言编程可以在PC机上编制非常友好、直观的人机控制界面。把原来的人体直接控制变成了鼠标、键盘的间接控制;并且通过直观的控制界面可以很容易的实现控制,对现场的控制情况一目了然,增加了操作人员的视觉感、安全感,简化了操作。用户通过各窗体与应用程序对话,而程序相对于用户是隐藏的,用户只要求程序能实现他们的具体要求,而不关心程序是如何组织的,因此,一个好的应用程序,应该具有友好的用户界面。在本程序设计中,用户接口界面模块考虑实现了以下三个方面的特性:1.可使用性它包括: 使用的简单性 用户接口界面中所用的术语应标准化和相互一致 用户界面具有容错能力2.可靠性使用户接口界面能保证用户正确可靠的使用系统,保证有关程序和数据的安全性。3.复杂性复杂性指的是用户接口界面的规模和组织的复杂程度,在完成用户预定功能的前提下,应该使用户接口界面越简单越好。Visual Basic 作为一种可视化编程软件,以其优秀的图形化界面设计风格而著称。对Visual Basic 来说,窗体(Form)是用户进行人机对话的接口界面,通过设置窗体对象,由属性定义其外观、由方法定义其行为、由事件定义其与用户的交互。在这里首要的是定义其外观。本章主要从MDI主窗体界面、子窗体界面、菜单、工具栏、状态栏、对话框等几个方面来介绍界面模块的设计。3.1.1MDI主窗体界面的设计在本系统中,需要显示力的实时变化曲线、力与切削深度、进给量、切削速度等共四个曲线。Visual Basic提供了多重文档界面(MDI,multiple document interface)。建立一个MDI应用程序,可以建立和显示多个不同类型的文档窗口。因此建立一个MDI作为系统的主窗口。在设计中考虑到Windows程序具有一致的界面的特点,添加了菜单栏、工具栏、以及快捷键,使用户能够从其它Windows程序中快速的掌握本系统的使用,因为保持与其它应用程序一致的应用程序界面使用户更容易找到其需要使用的菜单选项,例如使用户凭以前的经验便会知道数据采集时可以单击菜单栏的数据采集菜单,也可以使用快捷键Alt+D,或者单击工具栏数据采集的图标。1.系统菜单的设计菜单是一个Windows应用程序GUI必不可少的组成部分,能够使用户向应用程序发出命令。确实,很难想象一个Windows应用程序没有菜单。在本系统菜单的设计中,顶层菜单的结构和菜单选项的放置顺序与其它的应用程序一致。使用菜单编辑器设置系统菜单,将系统需要实现的功能在菜单栏中体现出来,本系统的系统菜单如下图3.2所示:图3.2 系统菜单菜单设计完毕,下一步是使应用程序的用户通过键盘操作各个菜单选项,将用于实现这一步的工具是访问键和快捷键。2.系统菜单快捷键和访问键的设计应用程序的用户该能够如同使用鼠标那样用键盘操作程序,鼠标或许是这两种输入设备中使用较多的一个,而且它变得越来越具备滚动和无线功能。然而键盘自有其用处,例如有人就喜欢用键盘操作而不喜欢鼠标操作,这就显示出快捷键和访问键的重要性。Visual Basic菜单编辑器提供了快捷键资源,可以在编辑菜单时将快捷键设定,如图3.3所示。图中显示了快捷键的设定方法。图3.3 快捷键的设定示图上边介绍的快捷键只能对子菜单设定,而在顶层菜单中是不能设定的.在顶层菜单中只能设定访问键,要在菜单编辑器中给菜单控件赋值访问键,则需要在要作为访问键字符的前面直接键入一个(&),如:文件(&F)。3.工具栏的设计Windows应用程序通常有并且应该有工具栏,工具栏项允许快速访问最常使用的命令,尽管工具栏按钮的功能与菜单项相同,但工具栏按钮有两项优点胜过菜单选项,一是工具栏按钮始终可视并且可立即访问;二是工具栏可视而且图形化,比菜单选项的纯文本对用户更加有吸引力。本系统的工具栏按钮设计简单明了,不会给用户带来困惑。设计方法是:将按钮图标添加到ImageList控件中,再添加一Toolbar控件,将Toolbar控件的图像列表中设定为ImageList1,然后在Toolbar控件中插入按钮,如图3.4所示:图3.4 工具栏按钮的添加5.状态栏的设计本着同样的一致性原则,系统需要添加状态栏,以备系统运行时显示系统的状态。状态栏的设计方法是:在主窗体中直接添加StatusBar控件,然后在其窗格属性中插入3个窗格,第一个窗格供显示系统运行状态所用,第二个窗格显示系统时间,第三个窗格显示数据采集的次数。窗格中这些状态的显示,需要编写程序代码,详细的程序代码请见程序清单。添加了系统功能所必需的菜单栏、工具栏以及状态栏之后的主窗口界面如图3.5所示:图3.5 系统主界面3.1.2 MDI子窗体的设计系统要求测量主切削力,显示主切削力的实时变化曲线以及主切削力与进给量、主切削力与切削深度、切削力与切削速度之间的关系曲线,因此添加四个子窗体用以显示力的关系曲线。子窗体与普通窗体看上去没有什么区别,将普通窗体的MDIChild属性设置为True就可以将其设置为MDI子窗体。数据采集之后,经过处理作出各种曲线以及车床切削力的经验公式,为了能够将曲线和经验公式在子窗体中显示出来,利用了Label、TextBox控件将经验公式显示出来,利用PictureBox、MSCart、Hscroll、Vscroll等控件处理显示了关系曲线。这样添加四个子窗体xtime、xandap、xandf、xandv分别用于显示力的实时变化曲线、力与切削深度、力与进给量、力与切削速度之间的关系曲线。在xtime窗体中,没有公式要显示,但是要对力的实时变化曲线进行缩放,因此在窗体上添加了两个TextBox控件、两个Label控件和一个CommandButton按钮,其实现的功能将在后边的曲线绘制模块中介绍。3.1.3 参数设定对话框的设计在车床切削力的测量系统中,有些参数的值需要输入到上位机系统,以备数据处理所用,因此,在设计中必须有对话框能够将参数的值读入系统,这里介绍系统参数设定对话框的设计。在对下位机采集的数据进行处理时,需要用到电阻应变仪标定参数Fx、系统标定修正值、系统放大倍数等几个参数,所以在上位机里需要对这些参数进行赋值,在窗体中通过TextBox控件赋值是最常用的方法。图3.6是参数设定对话框的界面。图3.6 参数设定对话框3.1.4数据采集对话框的设计在进行数据采集之前,除了对系统参数进行设定之外,还需要对车床参数进行设定,同时显示本次实验数据采集次数。数据采集对话框如图3.7 所示:图3.7 数据采集对话框3.1.5 修改放大倍数对话框的设计下位机放大器每一档位的放大倍数,理论上来说是一个恒定的值,但是随着元器件的老化,放大倍数或许会发生改变,或者系统的放大器被重新设计而改变了放大倍数,这样使用原来的放大倍数进行数据处理便不切实际,因此在上位机系统中就需要对这种情况进行处理,处理的方法就将修改后的放大倍数写进注册表,每次运行程序进行切削力测量时都使用更改后的放大倍数。图3.8即为修改放大倍数对话框。图3.8 修改放大倍数对话框3.1.6 其它界面的设计考虑到系统的全面性,在运行此系统时首先进入图3.9所示界面。图3.9 系统启动界面通过此界面选择进入、退出系统或查看系统介绍。系统介绍是一个关于对话框,如下图3.10所示:图3.10 关于对话框至此整个系统的界面模块设计已经完成。3.2串行通信模块设计在WINDOWS环境下,串行通信程序的设计可以通过两种方法实现:利用ACTIVE X控件;使用API通信函数。使用ACTIVE X控件,串口通信的实现非常简单,结构清新,缺点是欠灵活,使用API通信函数的优缺点则基本上相反。串口通信模块是本系统的重要部分,要把上位机的数据送到串行端口上以及怎样才能把串行端口上数据接收进来,是上位机编程中的关键部分。3.2.1 MSComm控件简介VB5.0/6.0提供的MSComm通信控件是专门用来实现串行端口数据的传输和接收的,为应用程序提供了串行通信功能,是一个标准的十位串口通信控件,它提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem)、还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工的、事件驱动的、高效实用的通信程序。本次设计使用了MSComm控件。下面就介绍一下该控件的使用方法。1.控件属性: commport设置并返回通信端口号。语法为:port = value value是一个整型值,表明使用的端口号。说明:在设计时,value可以设成从116的任何数,但是如果用PortOpen属性打开一个不存在的端口时,MSComm控件会产生错误68(设备无效)。在打开端口之前必须设置端号。 settings设置并返回波特率、奇偶校验、数据位、停止位等参数。语法为: object.settings = value value是一字符串表达式,说明端口的设置值,由四个设置值组成,格式如下:“BBBB,P,D,S”其中,BBBB为波特率;P为奇偶校验;D为数据位;S为停止为数。要值得注意的是此处的设置值一定要和单片机系统的串行口波特率设置值一致。 portopen设置并返回通讯端口的状态。语法为:object.portopen= value value为一布尔表达式,说明通讯端口的状态。说明:portopen属性为true打开端口,设置为False关闭并清除接收和发送缓冲区。 Input返回并删除接收缓冲区中的数据流。语法为:object.input= value 说明:inputlen属性确定被input属性读取的字符数。设置inputlen为0,则input属性读取缓冲区中全部的内容。Inputmode属性确定被input读取的数据类型。如果inputmode=cominputmodetext,则input属性通过一个variant返回文本数据;如果设置inputmode=cominputmodebinary,则input属性通过一个variant返回一个二进制数据的数组。 InputLen设置并返回Input属性从接收缓冲区读取的字节数。语法为:object.inputLen= value 说明:inputLen的缺省值为0,设置inputLen为0时,使用input将使MSComm控件读取接收缓冲区中的全部内容。该属性在从输出格式为定长数据的机器读取数据时非常有用。 InputMode设置或返回Input属性取回的数据类型。语法为:object.InputMode = value 说明:InputMode属性确定Input属性如何取回数据,数据取回的格式是字符串或是二进制数据的数组。 output往传输缓冲区写数据流。语法为:object.output = value value是一准备写到传输缓冲区的一字符串。说明:output属性可以传输文本数据或二进制数据。 InBufferCount返回接收缓冲区中等待的字符数。语法为:object.InBufferCount = value value是接收缓冲区等待的字符数。说明:InBufferCount是指已经接收,并在接收缓冲区等待被取走的字符数,用InBufferCount属性设置为0来清除接收缓冲区。 InBufferSize设置并返回接收缓冲区的字节数。语法为:object.InBufferSize = value value是接收缓冲区的字节数。说明:InBufferSize是指整个接收缓冲区的大小。缺省值是1024字节。 OutBufferCount返回在传输缓冲区中等待的字符数。语法为:object.OutBufferCount = value 说明:设置OutBufferCount属性为0可以清除传输缓冲区。 OutBufferSize以字节的形式设置并返回传输缓冲区的大小。语法为:object.OutBufferSize = value 说明:OutBufferSize指整个传输缓冲区的大小。缺省值是512字节。 Rthreshold 在MSComm控件设置CommEvent属性为ComEvReceive并产生Oncomm之前,设置并返回的要接收的字符数。语法为:object. Rthreshold = value 说明:当接收字符后,Rthreshold属性设置为0,则不产生Oncomm事件。 commevent返回最近的通讯事件或错误。用此属性处理在数据传输过程中的异常事件。2.控件事件: oncomm无论何时当commevent属性的值变化时,就产生oncomm事件。它标志发生了一个通讯事件或一个错误。Commevent属性包括实际错误或产生oncomm事件的编码。但是,当rthreshold或sthreshold属性被设置为0时,则会分别使comevreceive和comevsend事件无效。3.2.2 串行通信协议在进行串行通信前,上下位机首先必须定好通信协议。通信协议决定了通信程序的编写,因此有必要对串口通信有一定的了解。串口通信指的是将构成字符的每个二进制数据位按照一定的顺序进行传送的通信方法。串口通信分为异步通信方式和同步通信方式。本系统的串行通信采用的是异步通信方式,异步通信规定了字符数据的传送格式,即每个数据以相同的帧格式传送。异步通信的数据传送格式如下表3.1所示,每一帧由起始位、数据位、奇偶校验位和停止位组成。1011空闲位起始位N(5,6,7,8)个数据位停止位空闲位表3.1 异步通信的数据传送格式1.起始位在通信线上没有数据传送时处于逻辑“1”状态,当发送设备发送一个字符数据时,首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位,起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号,起始位所起的作用就是表示字符传送开始。2.数据位当接收设备接收到起始位后,紧接着就会收到数据位,数据位的个数可以是5、6、7或8。3.奇偶校验位数据位发送完之后,可以发送奇偶校验位,奇偶校验位用于有限差错检测,通信双方在通信是约定一致的奇偶校验方式。4.停止位在奇偶位或数据位(当无奇偶校验位时)之后发送的是停止位,停止位是一个字符数的结束标志。在异步通信过程中,字符数据一个一个的传送,在发送间隙,即空闲时,通信线路总是处于逻辑“1”状态(高电平),每个字符数据的传送均以逻辑“0”(低电平)开始。通信线上的字符数据是按位传送的,每一位宽度(位信号持续时间)由数据传送速率决定。波特率即数据传送速率的规定:单位时间内传送的信息量,以每秒传送的位表示,单位为波特。在异步串行通信中,接收设备和发送设备保持保持相同的传送波特率,并且每个字符数据的起始位于发送设备保持同步,起始位、数据位、奇偶校验位和停止位的约定,在同一次的传送过程中必须保持一致,这样才能成功的传送数据。在本系统的串口通信部分,通信协议如下规定:1.通信双方均采用2400bit/s的速率传送和接收数据。2.数据传送的格式如下:1位起始位,8位数据位,1位停止位,无奇偶校验位。3.在数据采集时,上位机向单片机发送数据索取信号F0,单片机收到数据并判断是否为数据索取信号F0,是F0,则开始采集数据并上传,不是的话就继续等待。下位机每进行一次数据采集时采集的数据个数为1K,然后作为一个数据包进行上传。4.下位机上传数据时,先发一个数据开始标志0A,紧接着发送数据,在数据结束时加一个数据的累加校验和,累加校验和取的是数据和的低8位字节。5.上位机接收数据,判断接收到的第一个字节是否为0A,是否收到1K数据(实际应收到1026字节,包括数据开始标志和累加校验和),以及累加校验和是否一致,如果条件都满足,则进行数据存储、数据处理,并回送一个数据接收正确信号0D,如果不一致,则发送数据接收错误信号0B,并请求下位机重新发送数据。3.2.3 串口设置在进行数据传输前,首先要对MSComm控件的属性进行设置即对串口进行设置。其主要程序段及说明如下:With MSComm1 .CommPort = 1 使用串行口1.Settings = 2400,n,8,1 设定波特率2400bps,无奇偶校验,8位数据位,1位停止位.InBufferSize = 1026 设定接收缓冲区为1026字节.OutBufferSize = 20 设定发送缓冲区为20字节.InputMode = comInputModeBinary 设置接收数据模式为二进制形式.InputLen = 0 当使用MSComm1.Input时,每次从接收缓冲区读取全部字节。.SThreshold = 0 每次输出一个字节到输出缓冲区.RThreshold = 1 设置接收一个字节后产生OnComm事件.InBufferCount = 0 清空输入缓冲区.OutBufferCount = 0 清空输出缓冲区 If .PortOpen = False Then .PortOpen = True If Err Then MsgBox 串口通信无效, vbCritical, 错误 Exit Sub End If End If End With一般来说,计算机都有一个或多个串行端口,它们依次为Com1、Com2、。这些串口还提供了外部设备与PC机之间进行数据传输和通信的通道,这些串口在CPU和外设之间充当解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传送给CPU。在本系统设计中直接设置串口为Com1口。3.2.4 系统异常处理程序设计在接收下位机上传的数据时,正常状态下,数据采集及传输在10秒内能够完成,但是由于系统的联接或者采集的数据有丢失等等异常情况有可能出现,因此在编写串口程序时,要考虑周全,使系统能够自行处理数据传输时可能发生的异常情况。下边介绍系统可能发生的几种异常情况。1. 没有收到数据下位机上传数据时,或者系统没联接好,或者下位机没有开启等原因会造成这种异常情况。2.接收的数据少于发送的数据如果通过MSComm控件一次性传送较多的二进制数据,那么很可能收到的数据不足。例如在设置为2400bps传输率的情况下,一次性可以传输2048个字符数据,那么在大多数情况下一次只能收到1200个字符左右,这是因为新版的MSComm32.OCX中存在一个影响传输二进制数据的臭虫(bug),但这并不是它的特性。3.数据开始标志不是&H0A接收数据时下位机可能对数据包处理有误,例如没有清空缓冲区等原因,因此设一数据开始标志作为数据包头,包头正确才是一包正确的数据传送过来。4.数据的累加校验和不一致在数据传输过程中,由于误码的存在,或者系统的原因,有可能导致数据传输有误,因此有必要上下位机进行累加校验和的验证。程序流程图如图3.11所示:图3.11 累加校验和验证流程图3.2.5 串口通信程序流程图在进行串口编程之前,要规划好程序执行的顺序,程序流程图是必不可少的。图3.12是本系统串口部分的流程图。3.12 串口通信模块流程图3.3 数据处理模块设计根据微机和单片机达成的协议,系统以预定的格式传输,在不出现异常的情况下,系统的采集数据、发送数据、接收数据、处理数据、存储数据、曲线绘制等过程将连贯的执行下来,实现切削力的测量。在正常接收到数据以后,将进入数据处理模块,然后对处理的结果以文件形式保存,在一次数据采集之后,要先对力的数据进行保存,关于数据存储将在下一章介绍。切削力测量的主要目的是画出切削力的关系曲线以及建立切削力的经验公式。本系统采用最简单的方法即单因素法处理数据,即在固定其它因素,只改变一个因素的条件下,测出切削力,然后处理数据,建立经验公式。在处理采集来的切削力数据时,有图解法可以使用,图解法的优点是作出的图形比较直观,运算比较简便。但是在作图连线时有一定的主观性误差,得出的经验公式往往精度不够高。在本模块中,采用回归分析法处理数据可以解决这个问题。3.3.1 一元线性回归法如果在切削力的测量中,只有一个自变量x,因变量y,测得一系列的数据(,),(i=1,2,3,n)。若已知变量x,y之间的关系是(或近似是)线性关系,则可以设它们的回归方程为= + (3.1)式(3.1)所决定的图形为回归直线,和称为回归方程中的回归系数。实际测量值与回归值的差值为-=- (3.2)式3.2表示与回归直线的偏离程度。测量值与回归值的偏差平方和为= (3.3)根据最小二乘法原理,即,为最小,可以求得和的值。由极值原理,和是下列方程组的解: =-2=0 (3.4) =-2=0解上方程组可得: =- (3.5) = (3.6)式中 , (3.7)令= (3.8)= (3.9) = - (3.10)则式3.6可写为 (3.11)由式3.5和3.6或式3.11,可求得、的值,从而得出回归方程。求得回归方程后,还要检验它是否符合变量y与x之间的规律,用它来预报y的精度如何。习惯用相关系数来检查。相关系数为 (3.12)式中 回归平方和= (3.13)又可以写为= (3.14)如果|r|1,则说明所有测量值的点都在回归直线上,此时称x与y完全相关。若|r|0,则回归线方程无意义,或为曲线相关。希望|r|接近于1。3.3.2 数据处理程序设计根据一元线性回归算法,可以方便的设计出数据处理程序。从下位机接收来的数据被暂存在数组中,这更方便了数据的处理。下位机采集的数据经过A/D转换器之后存在这样一个转换公式: (3.15)因此,在程序设计时要将收到的数据二进制的每一位都取出来,以便能够将得到的数字量转换为模拟量,从而计算出实际的力的数据。这段程序设计的流程图如图3.13所示:图3.13 数字量转换为模拟量的流程图图3.13中得到的模拟量存放在数组lastdata(j)中,其表示的数值实际上还不是真正力的数值,还要乘以车床参数、修正系数,除以放大倍数,转换为真正力的数值。根据一元线性回归法可知,关系曲线的绘制和经验公式的求解需要分别计算出力与切削深度、进给量、切削速度经验中式中、和的值,这段关于、和的值的计算程序代码详见程序清单。3.4 数据存储模块设计数据处理之后,要对结果进行存储,以备以后分析使用。设计中使用数组存储接收过来的切削力的数据,另外,系统开辟了dap、dxf、dxv、dxt四种类型的文件以存储各种曲线的数据。将曲线以数据的形式保存到各种类型的文件中,当打开这些文件时,系统自动将所表示的曲线绘制出来,数据存储模块的流程图如图3.14所示。图3.14 数据存储流程图现在我们经常使用的IE、Word和VB都有历史记录功能菜单,最常见的莫过于Windows开始菜单的文档中的历史记录功能,它至少可以记录15个曾经使用过的文档或程序。再次运行这些文档或程序时,只需直接调用它们即可,使用起来非常方便。本着与Windows风格一致的原则,本系统同样设置了此项功能,在将曲线以数据的形式存储之后或者将已存储的文件打开时,要将文件名添加到历史记录中去。添加及显示历史记录文件功能的流程图如下图3.15所示。图3.15 添加及显示历史记录文件流程图3.5 曲线绘制模块设计切削力与切削深度、进给量、切削速度之间是指数的关系,、曲线分别表达了切削深度、进给量、切削速度的单项切削力指数公式:; ; 如在等号两边取对数,则Lg=Lg+LgLg=Lg+LgLg=Lg+Lg故、在双对数曲线上是直线。有了这个线性关系,再根据上一章的一元线性回归算法处理的数据就可以求出切削力的经验公式并画出力的关系曲线(在双对数坐标上显示的是一条直线)。本章采用MSChart控件十分简单的调用数组里的数据,把各曲线显示出来。在使用MSChart控件时,首先要将ChartType属性设置为VtChChartType2dXY(2D XY 散点图)。曲线绘制时,有几种情况,一种是绘制刚刚采集的还未保存的力的数据的各种曲线,一种是绘制已经保存成文件的力的各种曲线。第一种情况下,直接调用数据处理后的数据进行曲线绘制;第二种情况下,是调用文件中保存的数据进行曲线绘制。3.5.1 力的实时变化曲线的绘制无论是绘制刚采集完的切削力数据曲线,还是绘制已经保存成文件的数据曲线,其设计方法都是相同的。即通过调用数据,在MSChart控件中使用ChartData属性,进行曲线的绘制。这段主程序代码如下:If MDIsystem.CommonDialog1.filename Then 判断是否打开文件 For i = 1 To 1024 xtimedata(i, 2) = lastdata(i) xtimedata(i, 1) = i Next i MSChart4.ChartData = xtimedataElseIf counter 0 And MDIsystem.CommonDialog1.filename = Then 判断是否查看刚采集完的切削力数据 For i = 1 To 1024 xtimedata(i, 2) = 0.1 * lastdata(i) * Fxparameterdata * systemamenddata * 9.8 / amplify xtimedata(i, 1) = i Next i MSChart4.ChartData = xtimedata ElseIf historynum 0 Then 历史纪录? For i = 1 To 1024 xtimedata(i, 2) = lastdata(i) * 0.1 * Fxparameterdata * systemamenddata * 9.8 / amplify xtimedata(i, 1) = i Next i MSChart4.ChartData = xtimedataElse 没有曲线显示,否则将有随机曲线显示 For i = 1 To 2 xtimedata(i, 2) = 0 xtimedata(i, 1) = 0 Next i MSChart4.ChartData = xtimedata End If3.5.2 力的实时变化曲线的放大1024个数据在MSChart图表中显示,这样不易看出曲线的变化,所以需要对曲线放大,取一局部的曲线显示出来,以供观察。由于数据都存储在数组中,因此使这一功能的实现非常简单,用户可以随意查看某一局部曲线的力的变化情况。主程序代码如下:ReDim amplifyafter(1 To secondnum - firstnum + 1, 1 To 2) As Single 定义需要放大的局部数据的数组For i = 1 To secondnum - firstnum + 1 amplifyafter(i, 2) = 0.1 * lastdata(i + firstnum - 1) * Fxparameterdata * systemamenddata * 9.8 / amplify amplifyafter(i, 1) = i + firstnum - 1Next I取出局部数据MSChart4.ChartData = amplifyafter3.5.3 力与各参数关系曲线的绘制数据处理之后得到数据、和,然后根据一元线性回归法的原理在对数坐标轴上绘制出各种曲线。MSChart控件可以通过Type属性返回或设置坐标轴的刻度类型。设置双对数坐标的主要程序代码如下: Dim axisID As VtChAxisId 为二维折线图改变 x 和 y 轴为对数刻度。 For axisID = VtChAxisIdX To VtChAxisIdY With MSChart.Plot.Axis(axisID).AxisScale .Type = VtChScaleTypeLogarithmic .LogBase = 10 End With Next3.6曲线打印模块设计系统设计了打印程序,以实现整个系统功能的完整性。为了将曲线和经验公式一并打印出来,设计时采用了打印窗体的方法。在Visual Basic中,在绘制图形时,如果 AutoRedraw 属性为 True,则在运行时PrintForm 将打印 Form 对象或 PictureBox 控件上的图形。因此可以使用PrintForm方法打印窗体。PrintForm方法可以将窗体对象的图像逐位发送给打印机,而将Form对象的全部可见图像和位图打印出来。Printers 集合允许对可用打印机进行查询,这样就可以为自己的应用程序指定缺省打印机,可以查出哪种可用打印机使用特定的打印机驱动程序。可以用 Set 语句指定 Printers 集合中的某一打印机为缺省打印机。在模块Module2中定义printproc过程以实现打印功能。程序设计了对所有可用打印机进行搜索,对第一个打印机定位,并将其走纸方向设置为纵向,然后将打印机设置为缺省打印机。程序代码见程序清单。第4章 所用开发工具简介本系统的上位机部分,是采用Visual Basic程序语言设

温馨提示

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

评论

0/150

提交评论