上位机子系统采用普通微机,操作系统用Microsoft的Windows系统,机器人控制系统应用软件采用Microsoft的Visual C++6.0开发的。之所以选择Microsoft的Visual C++6.0作为开发工具,是因为Visual C++6.0是一个功能强大的可视化编程环境,它为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性的可重用的面向对象C++程序语言。上位机子系统的主界面如图8-2所示。在上位机子系统中,由四个软件子模块组成或者说上位机子系统主要完成的功能分别为:OpenGL子模块、MSComm串口通信控件子模块、外置控制算法组件子模块和Matlab子模块。功能分别如下[1]:
1.OpenGL子模块
OpenGL是SGI公司开发的,可独立于操作系统和硬件环境的三维图形库,已在各种工作站和高档微机中运行,由于其强大的图形功能和跨平台的能力,已成为事实上的图形标准,被人们广泛应用于科学可视化、实体造型、CAD/CAM、模拟仿真等诸多领域。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL作为三维图形标准。在机器人上位机子系统,我们采用了OpenGL图形库构造机器人的实体模型,并把传感器码盘的位置信息实时传到图形参数中。这样就可以保证上位机的实时图形显示和机器人的实际运动是同步的。采用该项技术的好处在于:
1)从上位机可以看到机器人的运动情况,增加了视觉效果。
2)对于机器人在危险环境或者远距离工作,而人又无法到达现场,采用此项技术的意义是明显的,它可以保证人在上位机系统进行实时监控机器人的工作状况,以便发出新的控制指令。
图8-2 上位机子系统的主界面
2.MSComm串口通信控件子模块
MSComm是Microsoft公司提供的简化windows下串口通信编程的Active控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体来说,它提供了两种处理通信问题的方法:一是事件驱动方法,另一个是查询法。(www.xing528.com)
事件驱动方式是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carri erDetect(CD)或Re-questToSend(RTS)线上一个字符到达或一个事件发生时。在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件。OnComm时间还可以检查和处理通信错误。CommEvent属性列出了所有通信事件和通信错误,可以通过查阅MSDN(Microsoft Developer Network)获得。在编程过程中,就可以在OnComm时间处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
查询方式实质上还是属于事件驱动,但在某些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误,只要Com-mEvent属性的值发生变化,就表明一个通信时间或一个错误发生。如果应用程序较小,并且是自成一体的,这种方法可能是更可取的。在本实验系统中,我们采用了MSComm控件作为上位机(PC)和下位机(单片机系统)的串口通信的基础,并对该控件的一些功能进行了拓展。
3.外置控制算法组件子模块
外置控制算法是相对于内置控制算法而言的,所谓内置控制算法就是在下位机系统中我们采用了机器人专用运动控制芯片HCTL1100,该芯片内部固化了一个控制算法,我们只需往该芯片指定的寄存器单元写入设定值,并把传感器位置码盘信息返回到相应的寄存器单元中,那么该内置算法会根据误差自动调节输出的PWM波的占空比。但我们对该内置算法只能机械地操作,该算法的内部详细结构以及原代码不能深入了解与分析,该算法应是保密的。
我们屏蔽了HCTL1100芯片的内置控制算法,只用了HCTL1100芯片的写读功能,而在上位机系统开发了外置控制算法。目前,主要开发了两个外置控制算法:PD控制和基于模糊补偿的PD控制算法。对外置控制算法的程序设计采用了组件化设计原则,这样便于拓展该算法以及自适应调节算法参数。
4.Matlab接口子模块
Matlab接口子模块的主要目的是想利用Matlab的强大科学计算能力,把Matlab的计算数据导入到VC中,以便进行控制。特别是Matlab提供的专用工具箱为一些专业问题提供了简洁的求解方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。