优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

065_人机接口设备—开关类部件

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

1.3 设计目的及意义
本设计的目的是利用Visual C++环境以纯软件的形式模拟硬件接口实验平台的逻辑功能,简单的仿真实现人机交互设备—开关类部件,增强虚拟实验平台的功能,用于接口教学。另外,通过本次设计开发对仿真理论的发展及主要内容有了基本的认识与了解。
通过对仿真系统的设计与实现,熟悉了Visual C++的MFC开发模式流程,掌握了仿真技术的思想,完成了开关设备的仿真实现。
1.4 预期成果
开发设计一种模拟仿真的软件,使其能够在虚拟环境下模拟实验接口电路中开关的控制功能。弥补虚拟实验平台在外设方面的不足,增加开关类部件的模拟仿真实现功能,使原有的实验平台功能更强大,让使用者更直观的更形象的演示实验过程和结果,更好的理解电路运行原理。
2 设计知识介绍
2.2 虚拟实验平台
计算机技术、大规模集成电路技术和通讯技术的飞速发展,为虚拟实验的发展奠定了坚实的基础。虚拟实验就是在通用计算机上加载相应的软件或硬件,使得使用者在操作这台计算机时,就像是在操作一台专用的传统试验设备一样。在虚拟实验系统中,软件是整个系统的关键,任何以个使用者都可以通过软件的相关设置来达到要实现实验的效果。虚拟实验就是利用外部输入(如鼠标的点击、拖动和键盘的敲击等),将计算机上虚拟的各种仪器,按实验要求、过程,组装成一个完整的实验环境,同时在这个环境中完成实验操作,包括实验器材的添加、实验条件的改变、数据采集以及实验结果的模拟、分析。它包含了虚拟仿真技术、计算机技术、实验技术、网络技术与专业等多方面理论知识。

think58.com [资料来源:http://www.THINK58.com]


2.2 基类和派生类
类是进行面向对象程序设计的基础。它能够定义数据和对数据的操作,并通过不同的访问权限,将类的接口和内部的实现分开,支持信息的封装和隐藏。面向对象程序设计的其它重要特征还包括:继承和多态。支持程序代码的复用是面向对象程序设计的主要目标之一,而支持程序代码复用的最重要的方法之一就是继承。继承能够从一个类派生出另一个类,前者称之为基类或父类,后者称之为派生类或子类。派生类能够继承基类的功能,也能改变或增加它的功能。在面向对象的程序设计中,多态的功能强大,但也较难掌握。它允许指向基类对象的指针指向派生类的对象。基类和派生类中可有名字和参数完全相同的函数,但他们的功能并不相同。当程序运行时,如果用基类指针调用成员函数,能够根据该指针所指向的对象的类型自行确定是调用基类的成员函数还是调用派生类的成员函数。如果没有多态的功能,我们就不得不用条件语句,确定是调用哪一个类的成员函数。代码复用是C++最重要的性能之一,它是通过类继承机制来实现的。通过类继承,我们可以复用基类的代码,并可以在继承类中增加新代码或者覆盖基类的成员函数,为基类成员函数赋予新的意义,实现最大限度的代码复用。
3 开关类部件的仿真方案设计 本文来自think58 [来源:http://www.think58.com]
3.1 开发工具的选择
根据不同的工程选择不同的开发工具,可以有效地提高工作效率。不同的开发工具各有各的优点同时又各有各的不足,在开发中要扬长避短。
Visual C++自诞生以来,一直是Windows环境下最主要的应用开发系统之一。Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,利用Visual C++开发系统,可以完成各种各样的应用程序开发,从底层软件直到上层直接面向用户的软件。而且,Visual C++强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。
随着多媒体技术和图形图象技术的不断发展,可视化(Visual)技术得到广泛的重视,越来越多的计算机专业人员都开始研究并应用可视化技术。Visual C++是一个很好的可视化编程工具,使用Visual C++环境来开发基于Windows的应用程序大大缩短了开发时间,而且它的界面更友好,便于程序员操作。
因此,根据实际情况在本设计中选用的是Visual C++6.0作为开发工具。
3.2 模块的划分原则
模块划分是系统分析中非常重要的一部分,下面是模块划分时的基本原则。
1独立性:让模块直接内的关系减到最少。理想的状态就是模块之间没有关系,但这种情况不符合现实。既然是同一个工程,模块之间自然都会存在一定的联系,只要想办法让模块之间的关系尽量简单就可以了。 [版权所有:http://think58.com]
2接口简单化:让模块之间的接口尽量单纯、简单、易用。即让公用函数和公用变量尽量地少。
3分层处理:吸取Windows操作系统对模块做分层处理的经验。建立一些中间模块,让两端的模块来完成相互调用的透明化。
4容易合并:容易将划分的模块进行合并。例如将一个工程的各个功能模块分别设计成可执行文件,然后用一个总模块将这些模块关联起来组成一个工程。这种情况下,对模块独立性要求较高,模块之间几乎没有任何关系。
5可测试性:尽量使每个模块都可以单独进行测试。
上面的5条是参考原则。既然是参考原则就不会完全执行。完全按照一个教条去执行真的很困难。只要在做模块划分的时候能经常记起这些原则,然后稍加注意就OK了。另外,在这5条原则中,第一条是根本,能把这一条做好,下面的一些就容易实现了。在做模块划分时一定要始终贯穿独立性的思想。
3.3 模块的划分
本设计中在大体上分为两种模块:DLL功能模块和EXE功能测试模块。根据开关的种类将每个种类写成独立的DLL模块,在此分成2个DLL模块——单刀单掷模块、单刀双掷模块。DLL模块主要负责设计输入、输出接口、开关功能及瞬态响应特点,以便在实验时,通过特定的接口调用这些器件功能,将这些全部封装在DLL工程中。根据写好的DLL功能模块,通过编写的测试程序分别测试每个DLL模块的实现情况,直观的显示开关类部件的仿真实现。

think58

[资料来源:http://think58.com]


3.4 开关的种类及特性
3.4.1 开关的种类
开关可以根据其结构特点、极数、位数、用途等进行分类。
1按照开关按结构特点分类:按钮开关、拨动开关、薄膜开关、水银开关、杠杆式开关、微动开关、行程开关等。
2按照开关按极数、位数分类:单极单位开关、双极双位开关、单极多位开关、多极单位开关和多极多位开关等。
3按照开关按用途分类:电源开关、录放开关、波段开关、预选开关、限位开关、脚踏开关 转换开关、控制开关等。
在本设计中主要研究的是机械类开关,笔者大体将其归纳为三类:
分为单刀单掷开关,单刀双掷开关,键盘开关,由于技术上还存在一些问题,因此在本次设计中没有成功设计出相应的键盘类开关的功能模块,还有待将来的研究和改进。
3.4.2 开关的主要参数
开关的主要参数有额定电压、额定电流、接触电阻、绝缘电阻及寿命等。
1最大额定电压:是指在正常工作状态下开关能容许施加的最大电压。若是交流电源开关,通常用交流电压作此参数。
2最大额定电流:是指在正常工作状态下开关能容许通过的最大电流。若电压标注为交流(AC),则电源也指交流。
3接触电阻:开关接通时,“接触对”(两触点)导体间的电阻值叫做接触电阻。该值要求越小越好,一般开关多在20mΩ(即0.02Ω)以下,某些开关及使用久的开关则在0.1~0.8Ω。 本文来自think58 [来源:http://think58.com]
4绝缘电阻:指定的不相接触的开关导体之间的电阻称为绝缘电阻。此值越大越好,一般开关多在100MΩ以上。
5耐压:也叫抗电强度,其含义是指定的不相接触的开关导体之间所能承受的电压。一般开关至少大于100V;电源(市电)开关要求大于500V(交流,50Hz)。
6寿命:是指开关在正常条件下能工作的有效时间(使用次数)。通常为5000~10000次,要求较高的开关为50000~500000次。
对一般电子制作实验来讲,选用及掉换开关时,除了型号或外形等需要考虑外,参数方面只要注意额定电压、额定电流和接触电阻三项便可以了。
3.4.3 瞬态响应特点
当开关由断开状态变到闭合状态或由闭合状态到断开状态时,并不是在瞬间就改变状态的,需要一定的响应时间,虽然只是毫级的时间差,肉眼无法观察的到的. 下面根据图1来说明开关的响应时间:

图1开关时间响应说明图
当开关在收到电平信号,要求闭合时(或要求断开时),并不是瞬间就闭合(或断开)的,就是说不是从图中t1处直接变到t6处的(或从t6处直接变到t11处的),而是需要经过一定的状态变化,最后才由t1处的状态变到t6状态的(或从t6处的状态变到t11处的状态的).而其中的状态变化形成的原因可能是由于电流,电压,或其他的原因(不同情况原因不同)导致开关在这一瞬间形成不稳定的状态,在闭合与断开两种状态多次随即的变化,这种变化是我们用肉眼看不到的,我们看到的只能是状态由t1变到t6,再由t6变到t11这个过程。 think58 [资料来源:http://think58.com]
响应时间从使用角度来看,就是开关从闭合到断开或从断开到闭合过程中所延迟的时间.响应时间主要取决于其寿命、绝缘电阻及接触电阻,所以不同材料制得的开关响应时间各不相同。
4 开关类部件的仿真实现
4.1 程序主要功能介绍
在Visual C++环境下分别建立关于单刀单掷开关和单刀双掷的DLL工程,工程中封装了开关类器件被外界平台调用的输出接口函数,获得信号的输入函数,还有单刀单掷开关、单刀双掷开关在鼠标控制下状态的改变,管脚信息的改变和开关在断开与闭合或在闭合与断开的瞬间产生的时间响应。
4.2 程序设计结构介绍
4.2.1 开关类器件实现功能框图

图2开关类器件实现功能框图左部分

图3开关类器件实现功能框图右部分
系统的整个功能框图如图2和图3所示。其中的上层程序可以是器件功能测试程序,也可以整个仿真实验平台程序。器件DLL的设计与实现为本毕业设计的主要内容。
4.2.2 入口函数
利用MFC的AppWizard自动生成的DLL框架中没有显式的调用DLLMain入口函数,但是对于每个DLL来说,将自动生成一个CWinApp派生类的对象,它会在派生类的成员函数InitInstance和ExitInstance中完成必要的初始化和终止工作。
4.2.3 输出接口函数 copyright think58

[资料来源:http://THINK58.com]


对于使用AppWizard创建的MFC DLL,AppWizard会创建一个DEF文件的框架,并自动增加到工程中,然后在DEF文件中增加用于输出的。
;DLL名字
LIBRARY "DSwitchDLL"
;DLL描述
DESCRIPTION 'DSwitchDLL Windows Dynamic Link Library'
;输出函数及其编号
EXPORTS
在此加入被调用的函数
4.2.4 主要功能函数介绍
1、画图函数DrawObject(CDC *pDC):
是负责画图的,在程序中设定画笔,并设置字体,背景颜色,文本颜色及指示确定在测试程序中开关的各种状态图(断开状态图、波动期状态图、闭合状态图)的具体画法。
2、计时器函数OnTimer(CDC *pDC ):
是设置响应时间发生过程的。当开关闭合或者断开时,进入一个不稳定的时期,在这个时期开关的状态是随即在0和1之间变化的,也就是图4中带有峰值变化的阶段,通过加载DLL文件的应用程序(测试程序)每隔一定时间调用该函数,表达开关的这种变化。

图4开关的随即状态显示
3、鼠标捕捉函数MouseEvent(int event , CPoint pt):
是负责捕捉鼠标信息的,利用鼠标响应模拟开关动作,当鼠标点击开关时,根据鼠标开关的状态(断开、闭合),改变开关的状态,进入时间响应相应的波动期。 copyright think58 [来源:http://www.think58.com]
4、输入函数OutSig(int iPinNo , int iSigVal ):
是外部给某个管脚的信号值。当函数OutSig调用函数SetPin(int iPinNo,int iSigval)时,将信号值传递给SetPin,而后SetPin指示下一步该执行什么操作。
5、显示函数DispMsg(CString s):
负责显示当前状态,在特定的文本框中输出文本信息,显示现在在执行的动作。属于VisualexDoc的成员函数。
think58 [资料来源:www.THINK58.com]