VC++单片机虚拟仪器测试系统
通过这个课题的开发制作,首先,让我认识了虚拟仪器,这种比传统仪器更为先进的仪器结合了现代计算机技术、测量技术、显示技术/控制技术、传感器技术以及网络技术等当今先进的科学技术,给测量领域带来了一场新的革命;自动测试系统就是利用上面的技术进行各种测量参数的自动化测试,并通过计算机强大的数据处理能力和图形绘制能力对数据进行处理和显示操作,提高了测量的精度和速度以及改变了人们的测量环境和人为的测量的误差。人们只需要在计算机的虚拟面板上输入各种配置参数和测量参数,点击按钮就可以实现快速准确的测量,而无需人们深入到测量现场。人们可以利用虚拟仪器系统来组建适合自己的任何测试系统,摆脱传统仪器带来的功能固定、缺乏灵活性以及高昂的价格的烦恼。虚拟仪器将会给科技和工业生产产生不可估量的影响。
其次,通过这次的制作,让自己也有幸接触价格不菲的可程控的仪器,并通过自己的编程对其进行远程的控制操作。我所接触的是一些消息基的仪器,本身具有自己的CPU,能对用户发送指令进行解释并执行。这些仪器通过前面的面板操作更便捷和人性化,由于具有CPU和应用软件,功能更强大,速度越快,精度越高。价格也不菲,一台就是5~6万,顶上十几台电脑了。
再者,收获最大应该就是软件的编写了。我是利用VC开发工具开发一个简单的虚拟仪器。刚开始接触的时候,也是模模糊糊的概念。后来通过资料的阅读,才明确自己的工作。在这个过程中,资料的搜索和阅读是比较的重要。这会加快自己认识。在软件的编写过程中,经常会碰上这样那样的小问题,问题虽小,可也是烦人啊!就拿一个这样的问题,我在头文件中定义了一个函数,在执行文件中进行具体的编写。按理说,在编写的过程中,”::”时会有提示的,却奇怪的却没有给出提示,如果没有碰到过这样问题,还真的有点烦人哦!这对于不熟悉函数的人来说是一种困扰。这个其实是VC的一种记忆功能而已,如果遇到这样的问题,只要退出程序,把NCB为后缀的文件删了就OK了!还有,在装过NI的LABVIEW的机子上运行自己的程序(不管是MFC还是WIN32)都会出现这样的问题:The type of interface is valid but the specified interface number is not configured.后来解决了,原来是一个NI-VISA和Agilent VISA的设置的问题,只要通过NI-VISA中的设置一下就行了。还有数据传递问题,因为我是想通过设置一个全局的变量进行传递总的资源会话和某个仪器的会话的值给三个模块,这样的设计不仅使自己软件的功能上更符合实际,而且对资源的管理更合理,省得在每一个模块中进行独立的会话的建立和关闭,而且,用户没有选择的余地,资源的地址是固定的,当外部的仪器的地址改变的时候,需要修改地址,重新的编译连接。在软件设计的过程中,应该竭力使自己的软件符合人们的使用习惯,便于操作和界面的简洁,一切的设计都要从方便人们的操作和使用为前提。这是软件设计过程中一个比较重要的方面。在软件的设计过程中遇到的其他问题在前面的各个模块的章节中做了一些说明,这里就不说了。
8 结论
本课题是基于LAN的VXI自动测试系统,通过局域网实现对仪器的远程控制和操作。其原理是通过Agilent 的IO库之一visa实现SCPI指令的发送和数据的接收,而基于消息基的各种仪器接收计算机发送过来的SCPI指令,并通过仪器本身的CPU进行指令的翻译执行来响应用户指令,并将数据送到总线、缓冲区或内存以供计算机的读取做进一步的处理。虚拟仪器自动测试系统具有广阔的发展前景。
该虚拟仪器软件通过不断地进行实验和调试,基本能实现函数信号发生器、示波器和万用表简单的功能。在函数信号发生器模块上,能实现几种基本波形和几种调制方式的实现;示波器能实现简单的显示操作和数据的测量;万用表同样能实现基本参数的测量,并且三个模块可以相互的利用资源。比如,通过函数信号发生器模块来发出一个特定的信号,接着通过示波器进行读取和显示测量或通过万用表进行相关参数更精确的测量,三个模块在测试系统中是比较常用的:函数信号发生器提供各种信号供使用、示波器能对外部信号进行显示和简单的测量以及万用表来实现对各种参数的较为准确的测量。
在三个模块的调试过程中,遇到了许多问题:数据如何的传递问题、窗口图像的如何的进行及时的刷新问题、三个模块在进入之前,如何来识别问题、如何使用全局的变量来实现统一的资源会话的建立和关闭问题、示波器的波形的绘画问题以及数据的读取和处理问题等等,还有许许多多的问题在毕业设计之前,没有遇到过。不过在老师同学还有自己的努力下(还有论坛朋友的建议与帮助),一个一个的将问题解决。
由于时间比较的紧,需要完成的模块比较的多,所以在模块设计的许多地方,都没有考虑周全,比如,对用户的输入没有进行合理的判断处理,用户可以输出任意的字符,这个显然是不合理的;又如对于一个频率很高的波形的产生,需要用户自己输入以Hz为单位的数字,所以会输入比较大的数据,如果能够改变频率的单位,从而可以减少用户的输入和一些不必要的错误,所有这些都是需要进一步完善的地方。希望各位老师能给予谅解!
参考文献(黑体四号、顶格)
[1] 张毅刚,彭喜元,姜守达等.自动测试系统.哈尔滨:哈尔滨工业大学出版社,2001,9:1~258.
[2] 胡晓军,邓波,高宏伟.Visual C++高级开发范例解析.北京:电子工业出版社,2002,1:1~326.
[3] 陈尚松,雷加,郭庆.电子测量与仪器.北京:电子工业出版社,2005,1:1~435.
[4] 张毅,周绍磊,杨秀霞.虚拟仪器技术分析与应用.北京:机械工业出版社,2004,2:1~301.
[5] 辛长安,梅林.VC++编程技术与难点剖析.北京:清华大学出版社,2002,4:1~514.
[6] 论文网http://www.youerw.com
[7] Agilent 54621D/22D/41D/42D 混合信号示波器. 出版号 54622-97032 2002 年 3 月
[8] Agilent 33250A 80 MHz 函数/ 任意波形发生器. 出版号 33250-90418 2000 年 4 月
[9] Agilent E5810A LAN/GPIB Gateway for Windows User’s guide1101无
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>