运动控制平台—实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 了解运动控制实验系统
1.1 实验目的
1、了解运动控制系统中的步进电机,伺服电机,变频电机,及其他们的驱动,并掌握步进电机与伺服电机的区别。
2、掌握运动控制系统的基本控制原理,与方框图,知道运动控制卡是运动控制系统的核心。
3、了解电机的面板控制,在有些工业控制过程中,能在程序控制无响应的状态下用面板进行紧急停止运动。
1.2 实验设备
1、运动控制系统实验平台一台。
2、微型计算机一台。
1.3 概述
此多轴运动控制实验平台是基于“PC+运动控制卡”模式的综合性实验平台,对各类控制电机实施单轴和多轴混合运动控制。
该实验平台是学生了解和掌握现代机电控制的基本原理,熟悉现代机电一体化产品控制系统的入门工具。
通过该平台的实物教学和实际编程操作,学生可以掌握现代各类控制电机基本控制原理、运动控制的基本概念、运动控制系统的集成方法,从而提高学生综合解决问题的能力。
1.4 运动控制系统组成
PC机(上位机)、运动控制器(下位机)、接口板、24V直流电源、交流伺服电机驱动器、交流伺服电机、步进电机驱动器、步进电机、变频调速电机驱动器、变频调速电机、导线及电缆。
运动控制实验台结构图如下:
图1.1系统硬件方框图
*上图中直流电源为24V,直流稳压电源,为接口卡与步进电机驱动器提供电压。
伺服电机(及其驱动器):
伺服电动机又称执行电动机,在自动控制系统中,用作执行元件,把所收到的电信号转换成电动机轴上的角位移或角速度输出。
分为直流和交流伺服电动机两大类,其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。
交流伺服电机的工作原理:伺服电机内部的转子是永磁铁,驱动器控制的U/V/W三相电形成电磁场,转子在此磁场的作用下转动,同时电机自带的编码器反馈信号给驱动器,驱动器根据反馈值与目标值进行比较,调整转子转动的角度。
伺服电机的精度决定于编码器的精度(线数)。
步进电机(及其驱动器):
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
变频电机(及其变频器):
变频电机与普通交流电机并无大异。
主要靠变频器来调节输入给变频电机交流信号的频率来改变电机转速。
如数控机床上的主轴电机。
运动控制器(卡):
运动控制器就是通过读取PC机把编程语言并把他们转化为控制电机的输入信号,以达到用户的控制要求的一个装置。
本系统所用控制器型号:GE-300-SV-PCI-R
1.5 系统接线:
伺服接线:伺服驱动器端L1,L2与220V交流电连接;
伺服电机端电源引线红线连U,蓝色连V,黄色连W,黄绿色连FG;
伺服电机端编码器引线与伺服驱动器端CN3端口相连;
伺服驱动器端CN2端口与运动控制器端子板CN5(CN6)连接起来。
步进接线:步进驱动器端V+/V-与直流24V电源相连;
步进电机与步进驱动器接线参考电机上的接线简图即可顺利完成;
步进驱动器端pu+端口与运动控制器端子板CN7(23口)相连,pu-端口与CN7(11口)
相连、DR+端口与CN7(9口)相连,DR-端口与CN7(22口)相连。
主轴接线:变频器R/L1,S/L2,T/L3任意两个端口与220V交流电电源连接;
交流电机三条引线与变频器U/T1,V/T2,W/T3相连(没有顺序,随意连接);
变频器端AVI与运动控制器端子板CN8(8口)连接,GND(实际+10v)与CN8(13
口)连接,且变频器端的GND与M0或M1连接(与M0连接正转,与M1连接反转)。
端子板电源接线:直流24V电源与端子板端电源接口相连(注意正负问题,不要接反)。
1.6 实验内容步骤:
1、对以上理论知识进行学习,分析“实验目的”的内容,之后进行资料搜索(网上,如学校图书馆网站),了解运动控制系统是什么,作用是什么,主要的几种控制模式谈自己对运动控制系统的认识(课后要阅读一定量的相关知识,以对运动控制系统有一个较深的了解)。
2、观察实验室中的运动控制平台,结合实验内容,给出一种你所了解的机器的运动控制结构及方案。
3、给系统接好线。
对伺服电机进行通电试运行,了解参数设置过程。
观察步进电机,熟悉其功能。
通过对变频器的设置来对变频电机进行控制。
4、首先给系统进行接线,把所有电机与控制器进行接线。
5、检查接线是否正确,然后开通电源给系统上电。
6、对电机进行通电试运行,通过面板对电机进行控制(参考数据手册,对伺服,步进,变频电机进行面板控制)。
安全注意:因本系统中的电源都是220V交流电,所以要注意用电安全,以免造成不必要的伤害。
电机的转速可以达到很大,故电机运转时不要使身体与电机轴发生接触。
实验2 控制系统的安装
2.1 实验目的:
掌握运动控制系统的软硬件安装过程,对其进行软硬件安装。
为以后的实验打好基础。
2.2 实验设备:
1、运动控制实验台一套。
2、微型计算机一台。
2.3 硬件部分:
PCI 系列GE-X00-SX 运动控制器的外形结构如下图2.1所示:
图2.1 运动控制器的外形结构图
GE-X00-SX(其中X00=200、300 或400)运动控制器的端子板外形结构图如下图2.2及所示,连线如图表2.1所示:
图2.2 运动控制器的端子板外形结构图
表2-1 GE-X00-SX 端子板接口定义
硬件安装步骤:
请按照以下安装步骤建立控制系统:
步骤1:将运动控制卡插入计算机;
1. 用随板配备的62-Pin 扁平电缆,将运动控制器的CN2 接口与转接挡板(ACC1)相连接。
2. 关断计算机电源,对于PCI 卡,打开计算机机箱,选择一条空闲的PCI 插槽,将运动控制器可靠地插入该槽,同时将转接板(ACC1)也固定在机箱上。
3. 盖上计算机机盖,打开PC 电源,启动计算机。
步骤2:安装运动控制器通讯驱动(仅对Windows);
1.在硬件安装好,启动计算机后,Windows98/2000 将自动检测到运动控制器,并启动“添加新硬件向导”。
在向导提示下,点击“下一步”。
2.在“希望Windows”进行什么操作?”的提示下,选择“搜索设备的驱动程序(推荐)。
”,点击“下一步”。
3.将产品配套光盘放入光驱。
4.选择“指定位置”,利用“浏览”选择“光驱:\Windows\Setup\PCI 驱动”下相应操作系统的目录。
5.跟随“添加硬件向导”点击“下一步”,直到完成。
步骤3:建立主机与运动控制器的通讯;
对于选用GE 连续轨迹运动控制器的用户,请选用雕刻机演示软件测试主机是否和运动控制器建立了联系;对于选用了GE 点位运动控制器的用户,请用附带的DEMO 软件测试主机是否和运动控制器建立了联系。
详细操作请参见对应的教学软件。
如果雕刻机演示程序或DEMO 能正常工作,证明运动控制器通讯正常。
否则会提示初始化卡失败,证明运动控制器通讯失败。
在通讯成功的前提下,用户可进行系统的运行。
步骤4:连接电机和驱动器;
在驱动器没有与运动控制器连接之前,连接驱动器与电机。
用户必须详细的阅读驱动器的说明书,正确连接。
按照驱动器说明书的要求测试驱动器与电机,确保其工作正常。
步骤5:连接运动控制卡和端子板;
关闭计算机电源,取出产品附带的两条屏蔽电缆。
一条屏蔽电缆连接控制器的CN1 与端子板的CN1,另一条屏蔽电缆连接转接板的CN2 与端子板的CN2。
保证外部电路正常运行,必须连接此两条屏蔽电缆。
步骤6:连接驱动器、系统输入/输出和端子板。
1、连接端子板电源
端子板的CN3 接用户提供的外部电源。
板上标有+12V~/24V 的端子接外部电源的+12V/+24V,标有OGND 的接外部电源地,至于使用的外部电源的具体的电压值,取决外部的传感器和执行机构的供电要求,使用时应根据实际要求选择电源。
2、专用输入、输出连接
对于GE-X00-SX 运动控制器:
专用输入包括:驱动报警信号、原点信号和限位信号,通过端子板的CN5(CN6、CN7)与驱动器,CN12和外部开关分别相连。
专用输出包括:驱动允许,驱动报警复位。
专用输出通过端子板CN5、CN6、CN7 与驱动器连接。
CN5 对应1 轴,CN6 对应2 轴,CN7 对应3 轴。
相应的引脚定义及接线请参考固高运动控制手册。
2.4 软件部分:
运动控制器函数库的使用
GE 系列运动控制器提供DOS 下的C 语言函数库和Windows 下的动态链接库。
用户只要调用函数库中的指令,就可以实现运动控制器的各种功能。
下面分别讲述DOS、Windows 系统下函数库的使用方法。
(我们主要学习后者和在Visual C++中编程的实现)
*如想采用其他软件编写程序详细内容请参考《GE系列运动控制器编译手册》Windows 系统下动态链接库的使用
在Windows 系统下使用GE 系列运动控制器,首先要安装驱动程序,GE 系列运动控制器的驱动程序存放在产品配套光盘的Windows\Driver 文件夹下。
运动控制器指令函数动态链接库存放在产品配套光盘的Windows\VC( Windows\VB 或Windows\Delphi )文件夹下。
连续轨迹运动控制器(GE-X00-SX)的动态链接库文件名为ges.dll,点位运动控制(GE-X00-PX)的动态链接库文件名为gep.dll。
在Windows 系统下,用户可以使用任何能够支持动态链接库的开发工具来开发应用程序。
下面分别以Visual C++、Visual Basic 和Delphi 为例讲解如何在这些开发工具中使用运动控制器的动态链接库。
Visual C++中的使用
1.启动Visual C++,新建一个工程;
2.将产品配套光盘Windows\VC 文件夹中的动态链接库、头文件和lib文件复制到工程文件夹中;
3.选择“Project”菜单下的“Settings…”菜单项;
4.切换到“Link”标签页,在“Object/library modules”栏中输入lib 文件名(例如ges.lib);
5.在应用程序文件中加入函数库头文件的声明,例如:# include“ ges.h”;
6.至此,用户就可以在Visual C++中调用函数库中的任何函数,开始编写应用程序。
2.5 实验内容步骤:
1、按照所讲对电机进行连线与设置,把伺服电机调成用模拟量控制(即将F00设置为0),步进电机调成用脉冲+方向控制。
并学会如何在VC++开发工具中使用运动控制器的动态链接库
2、对系统的硬件安装过程进行学习,并安装并调试好整个系统的硬件设备。
3、按照本节的理论知识安装运动控制系统的软件部分,并检验是否有错误,下一节将进行程序的编写过程,所以本节的任何操作不允许有错误出现。
实验3 控制系统初始化
3.1 实验目的:
1、掌握运动控制系统错误指令返回程序的编写,并了解其具体的作用和重要性。
2、掌握运动控制系统的初始化的编写程序,掌握系统初始化的重要性。
3.2 实验设备:
1、运动控制系统实验平台一台。
2、微型计算机一台。
3.3 指令返回值
运动控制器按照主机发送的指令工作,而指令封装在C 语言函数库(DOS 环境)和动态链接库(Windows 环境)中。
运动控制器在接收到主机发送的指令时,将执行结果反馈到主机,指示当前指令是否正确执行。
每次调用运动控制函数,都会有一个返回值,把返回值给error()函数,可以找出错误原因,指令返回值的定义请查固高数据手册。
例程4-1 利用指令返回值进行错误处理
void error(short rtn)
{
switch(rtn)
{
case -1: printf("\a\nCommunication Error !"); break;
case 0: break;
case 1: printf("\a\nCommand Error !"); break;
case 2: printf("\a\nRadius or chord is 0 !"); break;
case 3: printf("\a\nLength is 0 or overflow !"); break;
case 4: printf("\a\nVelocity or acceleration is less then 0 !");break;
case 5: printf("\a\nChord is greater than diameter !"); break;
case 7: printf("\a\nParameter error !"); break;
default: printf("\a\nError Code = %d ",rtn); break;
}
}
3.4 控制系统初始化
在开发应用程序之前,必须结合实际系统正确选择和设置运动控制器。
因本控制系统采用的是连续轨迹运动控制器(GE-X00-SX),所以今后所讲解的内容和所给控制器的参数、性能都是只结合GE-X00-SX控制器。
其实两者并无太大的异处,有兴趣的同学可以参考“编程手册”与“使用说明”自行学习。
首先要对运动控制器初始化,即先调用指令GT_Open打开运动控制器,建立通讯,然后调用GT_Reset将运动控制器的所有寄存器清零,最后在退出应用程序时应调用指令GT_Close 关闭运动控制器。
在运动控制器初始化的过程中,要对专用输入信号参数进行设置,这里面包括设置限位开关触发电平,设置原点信号触发沿,设置编码器计数方向,设置驱动报警信号。
然后就可以对控制轴进行初始化,这里包括设置控制轴输出模式(模拟电压输出或脉冲输出)。
最后就是设置控制轴的实际位置。
具体的函数请查阅固高编程手册。
例程3-2 GE-X00-XV 运动控制器控制轴初始化(输出脉冲)
void AxisInitial(short axis_num,unsigned short limit) //控制轴初始化函数
{
short rtn;
rtn=GT_LmtSns(limit); //设置限位开关触发电平
error(rtn);
for(short i=1;i<=axis_num;++i)
{
rtn=GT_CtrlMode(i,1); //设置控制轴为脉冲输出模式
error(rtn);
rtn=GT_StepPulse(i); //设置轴输出正负脉冲信号
error(rtn);
rtn=GT_AxisOn(i); //驱动使能
error(rtn);
rtn=GT_ClrSts(i); //控制轴状态寄存器复位
error(rtn);
delay(200); //插入适当延时, 等待驱动器伺服就绪
}
}
例程3-3 GE-X00-XV 运动控制器控制轴初始化(输出模拟电压)
void AxisInitial(short axis_num,unsigned short limit,double kp)
{
short rtn;
rtn=GT_LmtSns(limit); //设置限位开关触发电平
error(rtn);
for(short i=1;i<=axis_num;++i)
{
rtn=GT_SetKp(i,kp); //设置控制轴比例增益
error(rtn);
rtn=GT_Update(i); //参数刷新,使所设Kp 生效
error(rtn);
rtn=GT_AxisOn(i); //伺服使能控制轴
error(rtn);
rtn=GT_ClrSts(i); //控制轴状态寄存器复位
error(rtn);
delay(200); //插入适当延时, 等待驱动器伺服就绪
}
}
3.5 实验内容步骤:
1、做一个小型的控制界面对伺服与步进进行控制(包括开启运动控制器,复位,关闭运动控制器,特别是学会初始化,一般在开启控制窗口的时候就已经开启了控制器,并对控制器进行了复位)。
根据所用控制器的型号与被控制电机的类型选择适当的函数。
在附录中对控制器函数的使用进行了详细的介绍与说明,请读者自己研究,从中可以了解控制器的功能与实现控制的方法。
2、本节只需编写系统的初始化程序,掌握初始化的编写流程,和注意事项,因无法证实自己的初始化程序的错误与否,只能进行理论编写,让老师验证编写是否存在问题。
实验4 运动控制器检测和轨迹运动
4.1 实验目的:
1、了解运动控制器的各个状态寄存器,并掌握其应用和重要作用。
2、掌握运动控制系统连续轨迹运动控制的程序编写方法,能够编程进行单步轨迹运动和多段连续轨迹运动.
4.2 实验设备:
1、运动控制系统实验平台一台。
2、微型计算机一台。
4、3 运动控制器状态检测
用户可以从运动控制器提供的控制轴状态寄存器读取控制轴状态、连续轨迹运动状态(GE-X00-SX)和指令状态。
此处为下面的学习和实践奠定基础,例如,通过读取控制轴状态可以知道控制轴此刻的运动方式。
注意要在任务完成后清除相应控制轴的状态。
控制轴运动状态标志位和连续轨迹运动状态标志位表示控制器内部加/减速运动规划的状态,而不是控制轴的实际运动状态。
即只表示控制器的加/减速控制是否已完成一次规划任务,规划到目标位置。
控制轴是否真正到达目标位置还取决于实际系统的伺服滞后,稳定性及其它条件。
具体的控制轴状态寄存器及检测指令请查阅固高编程手册。
4、4轨迹运动
点位运动
GE-X00-SX 运动控制器可以进行位置和速度控制,前者有两种加减速方式:梯形曲线加减速和S曲线加减速,后者运动控制器按照所设定的加速度加速或减速到目标速度。
在加速度相同的情况下,梯形曲线具有较短的加减速实际,而S曲线的运动会比较平滑。
例程4.1
控制轴1所对应的伺服电机在速度模式下,丝杆导程伟10mm,电机每转脉冲数为10000pulse/r(四倍频后),则脉冲当量为1um/pulse。
该轴采用梯形曲线加减速,加速度
为4m/2s,目标速度为10m/min,目标位置为200mm。
void AxisRunT(unsigned short axis, long pos, double vel, double acc)
{
GT_PrflT(axis); //设置为梯形曲线加减速
GT_SetPos(axis,pos); //设置控制轴目标位置
GT_SetVel(axis,vel); //设置控制轴速度
GT_SetAcc(axis,acc); //设置控制轴加速度
GT_Update(axis);
}
void CommandHandle(char *command,short error)
{
switch(error)
{
case -1:printf("\a\nCommunication Error !"); break;
case 0:break;
case 1:printf("\a\nCommand Error !"); break;
case 2:printf("\a\nRadius or chord is 0 !"); break;
case 3:printf("\a\nLength is 0 or overflow !"); break;
case 4:printf("\a\nVelocity or acceleration is less then 0 !");break;
case 5:printf("\a\nChord is greater than diameter !"); break;
case 7:printf("\a\nParameter error !"); break;
default:printf("\a\nError Code = %d",error); break;
}
}
void main()
{
GT_HookCommand(CommandHandle); //挂接错误处理函数
GT_Open() //打开运动控制器
GT_Reset(); //复位运动控制器
AxisInitial(1,0,10); //控制轴初始化,引用例程3-3
AxisRunT(1,200000,166.7,4); //控制轴按照梯形曲线运动
}
轨迹运动及轨迹运动的进给速度、加速度实现
GE-X00-SX 运动控制器(GE 连续轨迹运动控制器) 可以实现直线插补、圆弧插补, 通过前瞻预处理能够实现小线段高速平滑的连续轨迹运动。
这里面涉及到进给速度、加速度的设置,以及后面的轨迹运动的轨迹描述。
例程4-2 设置轨迹运动的进给速度、加速度
该程序示例一个轨迹运动的进给速度、加速度的设置以及单位说明:丝杆导程5mm , 电机每转脉冲数为10000pulse ( 四倍频后)。
进给速度(WorkVel ) 为3m/min , 进给加速度(WorkAcc ) 为0.9m/s 2, 启动速度 (StartVel )为300pulse/s ,最大速度(MaxVel )为15m/min ,急停加速度(StopAcc ) 为3m/s 2。
3300010000100/60105mm pluse WorkVel pluse ms ms mm
=⨯=⨯
23290010000 1.8/(10)5mm pluse WorkAcc pluse ms ms mm =
⨯= 33000.3/10mm StartVel pluse ms ms
== 31500010000500/60105mm pluse MaxVel pluse ms ms mm
=⨯=⨯ 2323000100006/(10)5mm pluse StopAcc pluse ms ms mm
=⨯= void MotionInitial()
{
short rtn;
double StartVel, MaxVel, StopAcc;
StartVel=0.3; //启动速度为300HZ
MaxVel=500; //最大速度为15m/min
StopAcc=6; //急停加速度为3m/s 2
rtn=GT_SetStrtVel(StartVel); //设置系统启动速度
error(rtn);
rtn=GT_SetMaxVel(MaxVel); //设置系统最大速度
error(rtn);
rtn=GT_SetStpAcc(StopAcc); //设置系统急停加速度
error(rtn);
}
void main()
{
short rtn;
double WorkVel, WorkAcc;
AxisInitial(3,0); //参考前面例程
MotionInitial();
WorkVel=100; //进给速度为3m/min
WorkAcc=1.8; //进给加速度为0.9m/s 2
rtn=GT_SetSynAcc(WorkAcc); //设置进给加速度
error(rtn);
rtn=GT_SetSynVel(WorkVel); //设置进给速度
error(rtn);
rtn=GT_LnXY(10,10); //两轴直线插补从当前点
error(rtn); //运动到坐标(10,10)
}
轨迹运动的实现
当运动控制器处于立即指令工作方式且轨迹运动未完成时(GT_GetCrdSts返回状态的BIT0 为0),运动控制器不接受新的轨迹描述指令。
如果用户希望实现多段连续轨迹运动,必须启动缓冲区指令输入和缓冲区指令执行方式。
为了方便地实现多段连续轨迹运动,运动控制器提供一个大小为8k 字的缓冲区。
用户可先将部分轨迹描述或参数指令存放在该缓冲区中(以缓冲区满为限),然后发出执行指令。
在运动控制器执行缓冲区内轨迹描述指令的同时,用户可继续向这个缓冲区内下载(发送)轨迹描述或参数指令。
运动控制器通过对缓冲区内的多段轨迹描述指令的前瞻预处理,能够获得良好的速度规划特性。
这个过程包括两步:
第一步、将轨迹描述指令和参数指令输入缓冲区;
第二步、执行缓冲区连续轨迹运动。
例程4-3 实现三段连续轨迹运动,用户可参考实现多段的连续轨迹运动。
void main()
{
short rtn;
AxisInitial(3,0); //参考例程3-1~3-3
rtn=GT_StrtList();
error( rtn);
rtn=GT_MvXYZ(0, 0, 0, 100, 1.8); //定位起点坐标, 进给速度为3m/min , 加速度为
0.9m/s2
error( rtn);
rtn=GT_LnXY(10,10); //运动到坐标(10,10)
error(rtn);
rtn=GT_ArcXY(0,0,123); //以坐标(0,0)为圆心,以坐标(0,0)为起点, 正向123 度圆弧error(rtn);
rtn=GT_LnXYZ(0,0,10); //运动到坐标(0,0,10)
error(rtn);
rtn=GT_EndList(); //关闭缓冲区
error(rtn);
rtn=GT_StrtMtn(); //启动缓冲区, 连续轨迹运动
error(rtn);
}
4.5 实验内容步骤:
1、对步进与伺服进行速度控制与位置控制。
(编写一个控制界面,两台伺服电机实现x-y平面移动,步进电机实现z方向移动。
实现插补控制,和调速控制。
基本原理参考本次实验例程,界面自己规划(要尽量美观)。
只要实现连续轨迹运动控制功能即可,给老师验收)。
2、认真学习理论知识,掌握状态寄存器的用法。
3、根据所给的例程,和以往的C++基础进行编写连续轨迹运动的基本控制程序。
实验5 Home/Index 高速捕获回原点
5.1 实验目的:
1、了解运动控制系统的回零点功能的作用,和实现该功能的方法。
2、掌握运动控制系统回零点功能的控制程序的编写(此节的回零点的算法比较麻烦,一定要好好的理解,再进行编程)
5.2 实验设备:
1、运动控制系统实验平台一台。
2、微型计算机一台。
5. 3 Home 回原点
1、工作台向原点(Home)开关方向运动,启动Home 捕获;
2、当Home 信号产生时,平滑停止工作台;
3、调用指令GT_GetCapt 读取Home 信号触发时工作台的实际位置,然后反向运动回到
该位置;
4、继续向前运动一段指定距离,离开Home 开关,等工作台停稳以后调用指令
GT_ZeroPos 将工作台位置清零,建立机床坐标系。
例程5-1 Home 回原点例程(以GE-300-SG 运动控制器为例)
short Home(unsigned short axis,long pos,long offset,double vel_high,double vel_low) {
double prf_pos[4];
unsigned short status,crd_status;
GT_ClrSts(axis); //清回原点轴状态
GT_CaptHome(axis); //将回原点轴设置为原点捕获方式
GT_SetSynVel(vel_high); //设置回原点的速度
GT_SetSynAcc(0.01); //设置回原点的加速度
GT_GetPrfPnt(prf_pos); //读取各轴的规划位置
prf_pos[axis-1] = pos; //设置回原点轴的目标位置
GT_LnXYZ(prf_pos[0],prf_pos[1],prf_pos[2]);
do
{
GT_GetCrdSts(&crd_status); //读取坐标系状态
if(crd_status&1) //如果运动已经完成
{ //仍然没有触发Home 信号
return 1; //返回错误代码1
}
GT_GetSts(axis,&status); //读取控制轴状态
}while(!(status&0x8)); //等待Home 信号触发
GT_StpMtn(); //平滑停止
do
{
GT_GetCrdSts(&crd_status); //读取坐标系状态
}while(!(crd_status&1)); //等待运动完成
GT_GetCapt(axis,&pos); //读取捕获位置
GT_SetSynVel(vel_low); //低速运动到原点
prf_pos[axis-1]= pos;
rtn=GT_LnXYZ(prf_pos[0],prf_pos[1],prf_pos[2]);
do
{
GT_GetCrdSts(&crd_status); //读取坐标系状态
}while(!(crd_status&1)); //等待运动完成
prf_pos[axis-1]+= offset; //运动一小段距离离开Home 开关GT_LnXYZ(prf_pos[0],prf_pos[1],prf_pos[2]);
do
{
GT_GetCrdSts(&crd_status); //读取坐标系状态
}while(!(crd_status&1)); //等待运动完成
delay(1000); //插入适当延时,等待工作台停稳
GT_ZeroPos(axis); //工作台位置清零建立机床坐标系
return 0;
}
void main()
{
GT_HookCommand(CommandHandle);
GT_Open(); //打开运动控制器
GT_Reset(); //复位运动控制器
AxisInitial(1,0); //引用例程3-2 或3-3
if(0!=Home(1,-1000000,1000,20,2)) //调用回零函数
{
printf(“\n Home Error !”);
}
}
5. 4 Home+Index 回原点
1、工作台向原点(Home)开关方向运动,启动Home 捕获;
2、当Home 信号产生时,平滑停止工作台;
3、调用指令GT_GetCapt 读取Home 信号触发时工作台的实际位置,然后反向运动回到该位置;
4、启动Index 捕获,继续运动一圈多一点,当Index 信号产生时,平滑停止工作台;
5、调用指令GT_GetCapt 读取Index 信号触发时工作台的实际位置,然后反向运动到该位置;
6、反向运动一段指定距离,消除丝杠的反向间隙,等工作台停稳以后调用指令GT_ZeroPos 将工作台位置清零,建立机床坐标系。
5. 5 重点说明
GE 系列运动控制器为每个控制轴提供一个高速位置捕获寄存器,用来保存触发信号产生时控制轴的实际位置。
Home 信号来自原点开关(即端子板上CN12的HOME0),调用指令GT_CaptHome 将指定控
制轴的位置捕获方式设置为Home 信号触发。
如果指定控制轴已经处于Home 捕获模式或者Index 捕获模式,且捕获信号尚未触发,不能再次调用该指令。
如果捕获信号已经触发,必须调用指令GT_ClrSts 清除指定控制轴“捕获触发标志位”bit3以后,才能再次调用该指令。
Index 信号来自编码器C相脉冲(编码器每转一圈产生一个C 相脉冲)或者光栅尺(每隔固定距离产生一个脉冲),调用指令GT_CaptIndex 将指定控制轴的位置捕获方式设置为Index 信号触发。
如果指定控制轴已经处于Home 捕获模式或者Index 捕获模式,且捕获信号尚未触发,不能再次调用该指令。
如果捕获信号已经触发,必须调用指令GT_ClrSts 清除指定控制轴“捕获触发标志位”bit3 以后,才能再次调用该指令。
Home 信号和Index 信号都是边沿触发模式。
可调用指令GT_HomeSns 设置Home 信号是上升沿触发还是下降沿触发,运动控制器默认为下降沿触发。
当Home 信号或者Index 信号产生时,运动控制器将自动锁存Home/Index 信号产生时触发轴的实际位置(来自编码器或光栅尺),并将触发轴状态寄存器的bit3 “Home/Index 捕获触发标志位”置1,关闭Home/Index 捕获(触发轴状态寄存器的bit14/bit15“Home/Index 捕获状态位”清0)。
调用指令GT_GetCapt可以读取指定控制轴的捕获位置值。
注意:使用Home+Index 方式回原点时,应将Home 开关安装在相邻的2个Index 信号的中间。
当Home 开关和Index 信号重叠时可能造成Index 信号捕获错误。
5.6 实验内容:
本节实验的内容是对以前所学的知识的一个抽象的应用,即是应用连续轨迹运动控制的函数,和控制轴的零点触发开关。
参考例程,进行回零点程序的编写。