基于VC++与开放式运动控制器的并联机器人控制软件开发

时间:2022-05-19 04:53:44

基于VC++与开放式运动控制器的并联机器人控制软件开发

摘要:结合IPC+PMAC+SERVOMOTER的层次结构,开发出一种六自由度并联机器人的控制软件。采用VC++编程开发工具,利用开放式运动控制器PMAC的强大功能,所设计的软件满足并联机器人高实时性,高精度的运动控制要求,体现出开放性的特点。实验进一步验证了整个控制软件的可靠性与稳定性。

关键词:PMAC 并联机器人 开放式结构 控制软件设计 Visual C++

中图分类号:TP242 文献标识码:A 文章编号:1007-9416(2013)01-0160-02

1 引言

通用性和开放性作为一项重要指标业已渗透到工业生产与科学研究的各个领域中, 而传统的运动控制系统主要存在体系独立和结构封闭的缺陷。设计者一般采用专用计算机、专用编程语言与操作系统、专用微处理器的封闭式体系结构。这种结构存在制造和使用成本高,开发周期长,升级换代困难,无法添加系统的新功能等一系列缺点[4]。因此,如何构建开放式运动控制系统的软硬件系统成为工业界和学术界所研究的一大热点。

近年来,机器人系统在各类工业生产中得到了广泛运用,对提高生产效率与自动化程度发挥出重要作用。而并联机器人作为一类全新的机器人与传统的串联机器人在概念和用途上形成了互补,并且该机构能够实现运动轨迹、运动速度、定位以及重复定位的高精度精确控制的要求,故在精密加工和制造业中具有举足轻重的作用,因此已成为控制科学领域与精密加工应用领域中一个很有意义的研究方向。本 文所研究的控制系统以六自由度并联机构本体为对象,采用PC/104总线工控机为上位机,PMAC2A-PC104运动控制器作为下位机,以VC++开发工具实现机器人各控制模块的软件设计,从而完成控制目标任务的要求。因此本文将基于本系统的硬件体系结构,按开放性和系统稳定性要求开发出控制软件来实现高精度精密加工的目标。

2 并联机器人系统硬件结构

本机器人系统采用两级计算机系统的结构,系统结构如图1所示。其硬件配置为:

上位机采用研华嵌入式PC/104工控机(IPC),下位机采用Delta Tau的开放式可编程多轴运动控制器PMAC。PMAC是一种非常灵活的高性能运动控制器,具有实时性强、稳定性好、效率高等优点,用来与上下层系统进行数据通信和控制信号的交互。它是整个控制系统的核心。而工控机具有运行速度快、存储量大、应用灵活的优点[4]。正是由于采用了两级计算机控制系统,故就能充分利用各自的特点,发挥出各自的优越性来协调系统的整体稳定性。

并联机器人控制系统的体系结构中,上位机的主要作用是:基于人机交互,完成目标任务相关的数据输入、参数设定、路径规划、任务指定以及任务决策等工作。PMAC运动控制器主要用于对伺服更新的在线计算以及目标轨迹的生成,反映出并联机器人各轴电机的实时状态,响应上位机的执行命令。

3 并联机器人控制软件设计

3.1 软件设计总体方案

由于本系统软件是建立在Windows操作系统之上,故具备了多线程协调处理的能力,能及时应对并联机器人在运行中出现的各种状况,并对出现的状况作出相应的处理。作为上层软件的可执行32位Windows应用程序,通过调用PMAC自带的通讯模块PComm32与PMAC的内核程序进行通讯,再由上位机软件灵活调用运动控制的各种函数,以此来监控机器人的各种工况。PComm32是一个非常有效的开发工具,几乎囊括了所有与PMAC通讯的方法,并且与vc++开发软件有很好的兼容性。它由PMAC.DLL、PMAC.SYS和PMAC.VXD 3个文件组成,共包含了250多个函数[3]。上位机与运动控制器的内核驱动程序的关系如图2所示。

开放式控制软件系统一般采用模块化的思想来设计,在此以典型的运动轨迹和基本的机械加工功能要求来编制软件。软件开发中主要用到VC++的动态链接库以及多线程的编程方法来实现。软件的整体设计框架为图3所示。

3.2 控制软件的具体设计[3]

3.2.1 编程准备

(1)首先将运动控制器插入工控机的PCI插槽中并安装好驱动程序。

(2)安装运动控制器的测试程序并且调试坐标系中各轴伺服电机。具体调试界面如图4所示。

3.2.2 PMAC内核程序设计

在成功安装了运动器后,就需编写与控制目标和任务相应的PMAC内核运动程序。PMAC能够支持多达256个运动程序[3],这体现了PMAC强大的伺服功能。首先按PMAC的指令设置坐标系,PMAC中的坐标系是指一个或者一组为了同步的目的而组织起来的电机,然后通过轴定义语句为电机分配轴来建立坐标系。坐标系在任何时候都可以按要求执行程序中的任意一个。其次根据所需运动要求来选择适当的运动指令,然后按照PMAC语法编写运动程序,下载到PMAC内存后运行。并联机器人的PMAC运动程序如下:

控制系统功能设置(Setting up and Definition)[6]

COLSE //确保所有缓存关闭

&1 //设置坐标系1,以角度定义轴

#1->1024X //匹配轴1电机,1024cts/度

#2->2000Y //匹配轴2电机,2000cts/度

#3->2000Z //匹配轴3电机,2000cts/度

#4->5000A //匹配轴4电机,5000cts/度

#5->512B //匹配轴5电机, 512cts/度

#6->277.7787C

//匹配轴6电机,277.7787cts/度

M70->F:$D200 //DPROM中的32位浮点

M71->F:$D201 //浮点运算变量

M72->F:$D202 //给PMAC传送关节位置

M73->F:$D203 //主机发送用指针变量

M74->F:$D204 //写入数据

M75->F:$D205

M113->X:$C000,13,1 //中断位设置下一点

————运动程序部分(Motion Program)

OPEN PROG1 CLEAR //打开程序缓冲区

SPLINE1 //三次样条运动模式

TA5 //设置样条部分时间为5ms

INC //增量模式

X0 Y0 Z0 A0 B0 C0 //初始零距离运动

X0 Y0 B0 A0 Z0 C0 // 第二次零距离运动

ABS //进一步的运动取绝对值

WHILE (P1>0) //主机设置P1来退出

X (M70)Y(M71)Z(M72)A(M73)B(M74)C(M75)

M113 = 1

END WHILE //循环结束

CLOSE //关闭程序

当设置好了运动程序后,就须利用PMAC的在线命令语句来设置运功程序所要求的各种变量参数。可在图4所示软件中反复调试Ix30-Ix35(x=1~6轴),Ix87-Ix88(x=1~6轴)的参数来精确调节机器人各轴电机的运动效果。调试界面如图4所示。

3.2.3 相关运动控制器接口函数的说明

开放式运动控制器最大的优点是该运动控制器为用户提供了相关不同分类的接口函数,用户在软件编制过程中可以依据相关要求灵活调用。本系统中用到的常用函数为

(1)BOOL OpenPmacDevice(DWORD dwDevice)

此函数为应用程序使用PMAC打开了一个通道。应用的前提是已经安装调试好动态链接库,并且PMAC已经在这个操作环境下注册完毕,能够有效地寻址。其参数dwDevice为希望打开的设备号,一般为0。返回值为TRUE则表示连接成功。

(2)BOOL ClosePmacDevice(DWORD dwDevice)

当程序运行完毕,必须关闭所打开的通道,此函数就是实现这个功能。参数及返回值意义与打开通道函数OpenPmacDevice()相同,且必须与OpenPmacDevice()配对使用。

(3)BOOL PmacConfigure(HWNDhwnd,DWORDdwDevice)

该函数可以设置PMAC与上位机的通讯方式:总线通讯或者串行口通讯。当第一次安装PMAC或者PMAC跳线地址发生改变的时候,必须调用该函数设置PMAC的通讯方式和总线地址。

(4)PmacSendLine (LPCTSTR outstr)

该函数作用是给PMAC发送指令,参数Outstr为发送给PMAC的指令字符串。

(5)PmacGetResponse(DWORD dwDevice, LPTSTR s, UINT maxchar, LPCTSTR outstr)

该函数的作用为向PMAC卡发送请求/命令,并接收PMAC的响应放入用户响应缓冲区。参数意义为:dwDevice是设备号;s为响应缓冲区;maxchar代表接收最大字符数;outstr是发送给PMAC的指令字符串。

4 控制软件的实验及其分析

上文已建立了坐标系,设置了坐标系内的轴以及匹配好了各轴的电机,亦依据目标任务编写好了PMAC运动程序。就可以依据相关的要求编写上位机程序来实现并联机器人作业的目的。在此以机械制造中斜面加工的实验来证实此控制软件设计的实用性。

(1)利用VC++中MFC的类库设计加工要求所需的用户界面。将PMAC运动控制器所提供的基本运动函数类以及动态链接库函数隐式调用到软件工程中,将config.ini,mac2ssp2v101.dll,config.pmc等文件与本文所编写的ParallelRobot.dll文件放在同一目录下。

(2)在建立好了主程序工程后,再在VC集成环境中点击“/project/settings...”菜单弹出“project settings”对话框。选“Link”选项卡,在“object/library modules”栏中导入刚生成的链接库函数文件名ParallelRobot.lib后,再在主工程实现文件中添加头文件ParallelRobot.h该头文件是运动控制器的相关运动函数的声明。

(3)软件程序中对运动控制器的初始化:在程序的开始必须调用运动控制器的初始化函数,只有在调用初始化函数成功后才能进行卡内封装运动函数的调用。

在本实验中,由于斜面加工的实验中要保持并联机器人末端铣刀与垂直方向成角度的姿态(这里=30度),沿被加工物件的一个面方向运动,用旋转铣刀铣去金属零件的棱,这样就能铣出一个为30度的斜面。设计能够实现并联机器人控制的目的,能够达到斜面加工的作业要求。

5 结论

本文依据并联机器人开放式的硬件结构,充分利用上位工控机的多任务协调工作的性能和开放式运动控制器的强大运动功能,设计出符合要求的软件系统。实验证明所设计的软件具备良好的稳定性和广泛的应用性,能进行系统升级和移植,为开放式运动控制系统的运用提供了参考。

参考文献

[1]范永,谭民.机器人控制器的现状及展[J].机器人Robot,1999(21).

[2]Delta Tau Data system Inc.PMACUSER’SMANUAL,2003.

[3]周凯.《PC数控原理、系统及应用》[M].北京:机械工业出版社.2006,9.

上一篇:基于分层结构的PIM—SM协议注册过程效率的改进 下一篇:基于C/S和B/S混合结构的校友录管理系统