跳转至

轴操作

1.1 简介

当用户连接好一整套系统后(包括运动控制器,驱动器,电机),如何对轴进行配置以及查看这套系统的运动状态?控制器可以帮助用户在应用程序中对轴进行配置、查看驱动器报警、当前运动位置、运动速度和加速度等一系列状态参数。本章将介绍用户可以检测到哪些轴状态以及如何配置轴。

1.2 运动状态检测

1.2.1 指令列表

运动状态检测指令列表

指令 说明
GTN_GetStsEx 读取轴状态。
GTN_ClrSts 清除驱动器报警标志、跟随误差越限标志、限位触发标志。
1. 只有当驱动器没有报警时才能清除轴状态字的报警标志。
2. 只有当跟随误差正常以后,才能清除跟随误差越限标志。
3. 只有当离开限位开关,或者规划位置在软限位行程以内时才能清除轴状态字的限位触发标志。
GTN_GetPrfSts 读取规划器状态。
GTN_GetPrfMode 读取规划器运动模式。
GTN_GetPrfPos 读取规划位置。
GTN_GetPrfVel 读取规划速度。
GTN_GetPrfAcc 读取规划加速度。
GTN_GetAxisPrfPos 读取轴(axis)的规划位置值。
GTN_GetAxisPrfVel 读取轴(axis)的规划速度值。
GTN_GetAxisPrfAcc 读取轴(axis)的规划加速度值。
GTN_GetAxisEncPos 读取轴(axis)的编码器位置值。
GTN_GetAxisEncVel 读取轴(axis)的编码器速度值。
GTN_GetAxisEncAcc 读取轴(axis)的编码器加速度值。
GTN_GetAxisError 读取轴(axis)的规划位置值和编码器位置值的差值。
GTN_SetEncoderMapRelation 设置编码器之间的映射关系。
GTN_GetEncoderMapRelation 读取编码器之间的映射关系。
GTN_SetEncoderDeltaLimit 设置编码器增量限制。
GTN_GetEncoderDeltaLimit 读取编码器增量限制。

1.2.2 重点说明

1.2.2.1 轴状态定义

用户可以从控制器的运动状态寄存器中读取轴状态。当调用GTN_GetStsEx指令时,将返回一个32位的轴状态字,该轴状态字的定义如表所示。

轴状态定义

定义
0 保留。
1 驱动器报警标志。控制轴连接的驱动器报警时置1。
2 保留。
3 保留。
4 跟随误差越限标志。 控制轴规划位置和实际位置的误差大于设定极限时置1。
5 正限位触发标志。 正限位开关电平状态为限位触发电平时置1。 规划位置大于正向软限位时置1。
6 负限位触发标志。 负限位开关电平状态为限位触发电平时置1。 规划位置小于负向软限位时置1。
7 IO平滑停止触发标志。 如果轴设置了平滑停止IO,当其输入为触发电平时置1,并自动平滑停止该轴。
8 IO急停触发标志。 如果轴设置了急停IO,当其输入为触发电平时置1,并自动急停该轴。
9 电机使能标志。 电机使能时置1。
10 规划运动标志。规划器运动时置1。
11 电机到位标志。 规划器静止,规划位置和实际位置的误差小于设定误差带,并且在误差带内保持设定时间后,置起到位标志。
12~31 保留。

驱动器报警标志、限位触发标志、IO停止、跟随误差越限标志触发以后,不会自动清0。只有当产生异常的原因已经消除以后,调用GTN_ClrSts指令才能清除相应的异常标志。

规划运动状态(bit10)只表示理论上的运动状态。置1表示处于规划运动状态,清0表示处于规划静止状态。由于电机跟随滞后、机械系统震荡等原因,一般在规划静止一段时间以后,机械系统才能完全停止。

电机到位标志(bit11)表示实际到位状态。该标志位是电机到位检测功能的一部分。控制器复位后,默认该功能未开启。若要开启该功能,请参考"电机到位检测"的详细说明。该标志位置1表示已经处于规划静止状态(bit10=0),并且规划位置和编码器位置的误差在设定的误差带内保持了设定时间。当规划运动或者规划位置和编码器位置的误差超出误差带时立即清0。检测电机到位标志可以保证系统的定位精度,应当根据机械系统的实际情况设置合适的到位误差带和误差带保持时间。如果到位误差带设置的太小,或者误差带保持时间太长,都会使到位时间增长,影响加工效率。

1.2.2.2 规划器状态定义

用户可以从控制器的运动状态寄存器中读取规划器状态。当调用指令GTN_GetPrfSts时,将返回一个32位的规划器状态字,该状态字的定义如表所示。

规划器状态定义

定义
0 保留。
1 驱动器报警标志。控制轴连接的驱动器报警时置1。
2 保留。
3 保留。
4 保留。
5 正限位触发标志。 正限位开关电平状态为限位触发电平时置1。 规划位置大于正向软限位时置1。
6 负限位触发标志。 负限位开关电平状态为限位触发电平时置1。 规划位置小于负向软限位时置1。
7 IO平滑停止触发标志。 如果轴设置了平滑停止IO,当其输入为触发电平时置1,并自动平滑停止该轴。
8 IO急停触发标志。 如果轴设置了急停IO,当其输入为触发电平时置1,并自动急停该轴。
9 保留。
10 规划运动标志。规划器运动时置1。
11~31 保留。

1.2.2.3 轴的运动参数

调用GTN_GetPrfMode可以读取当前轴的运动模式。运动模式将在"运动模式"章节中详细介绍。控制器有如下几种运动模式,如表所示。

运动模式

运动模式 详细说明
单轴点位运动模式 Trap、MoveAbsolute、PT、PVT。
单轴连续运动模式 Jog、MoveVelocity。
单轴手轮运动模式
同步运动模式 Gear、Follow
插补运动模式

规划器是位于控制器内部的,是根据用户所设置的运动模式和运动参数计算规划位置和规划速度的软件资源。它不代表电机系统的位置和速度。调用GTN_GetPrfPosGTN_GetPrfVelGTN_GetPrfAcc可以读取规划器当前的位置,速度和加速度。

轴亦是位于控制器内部的,是将规划器和编码器硬件资源整合起来的软件资源。轴的规划位置是规划器位置经过当量变换后的值,轴的编码器位置也是编码器硬件的位置经过当量变换后的值。默认情况下,规划器位置的当量与轴的规划位置的当量之比是1:1,轴的编码器位置当量与编码器硬件的位置当量之比也是1:1。调用GTN_GetAxisPrfPosGTN_GetAxisPrfVelGTN_GetAxisPrfAcc可以读取轴的规划器当前的位置,速度和加速度。调用GTN_GetAxisEncPosGTN_GetAxisEncVelGTN_GetAxisEncAcc可以读取轴的编码器当前的位置,速度和加速度。调用GTN_GetAxisError读取轴的规划位置和轴的编码器位置的差值。

轴运动参数设置

例程请参考

1.3 打开/关闭轴使能信号

1.3.1 指令列表

打开/关闭轴使能信号指令列表

指令 说明
GTN_AxisOn 打开轴使能。
GTN_MultiAxisOn 同时打开多轴使能。
GTN_AxisOff 关闭轴使能。
GTN_MultiAxisOff 同时关闭多轴使能。

1.3.2 重点说明

调用GTN_AxisOn指令将打开指定控制轴所连电机的伺服使能信号,使指定控制轴进入控制状态。如果在系统配置时,没有数字量输出与该axis关联,则该指令将会无效"系统配置"中"配置专用输出"。如果运动控制器被配置成了伺服控制方式,那么必须首先设置指定轴的位置环的PID参数。

1.4 维护位置值

维护位置值指令列表

指令 说明
GTN_SetPrfPosEx 修改规划位置。
GTN_SetEncPosEx 修改编码器位置。
GTN_SynchAxisPos axis合成规划位置和所关联的profile同步。
axis合成编码器位置和所关联的encoder同步。
GTN_ZeroPos 清零规划位置和实际位置,并进行零漂补偿。

1.5 电机到位检测

1.5.1 指令列表

电机到位检测指令列表

指令 说明
GTN_SetAxisBand 设置轴到位误差带。规划器静止,规划位置和实际位置的误差小于设定误差带,并且在误差带内保持设定时间后,轴状态的电机到位标志位置起到位标志。
GTN_GetAxisBand 读取轴到位误差带。
GTN_SetAxisArriveMode 设置电机到位模式。

1.5.2 重点说明

用户使用伺服电机时,由于伺服电机在运动的过程中可能会存在运动滞后,即出现规划停止,而实际位置并没有到位的情况。用户可以使用运动控制器的运动到位检测功能来判断电机是否实际到位。运动控制器默认该功能是无效的,当调用GTN_SetAxisBand指令设置了相应的误差带和保持时间之后,该功能生效。

该功能生效后,当规划器处于静止状态,即GTN_GetStsEx轴状态字bit10为0(参见7.5.2),并且规划位置和编码器位置的误差在设定的误差带内保持了设定时间,GTN_GetStsEx轴状态字bit11将被置1。当规划器运动,或者规划位置和编码器位置的误差超出误差带时立即清0。检测电机到位标志可以保证系统的定位精度,应当根据机械系统的实际情况设置合适的到位误差带和误差带保持时间。如果到位误差带设置的太小,或者误差带保持时间太长,都会使到位时间增长,影响加工效率。

如图所示。当轴1启动电机到位检测功能,设置误差带为100pulse,误差带保持时间为500μs,当电机在1000pulse位置处静止时,会有震荡。控制器判断其震荡位于误差带内500μs后,就将GTN_GetStsEx轴状态的bit11电机到位标志置1。蓝色阴影区域表示电机到位标志还未置1,无阴影区域表示已置1。可以看出,误差带保持时间越短,误差带越大,控制器会在越短时间内将电机到位标志置1,但是并不是越短越好。电机是否连接机械本体,也会影响控制器判断电机到位所需的时间。

电机到位检测功能
提示

使用电机到位检测功能必须注意以下几点:
1. axis正确关联编码器,并且编码器方向和规划运动方向必须一致。
2. 正确设置到位误差带,默认情况下到位误差带无效。
3. 调用GTN_ZeroPos进行对位置进行清零,同时进行自动零漂补偿。

1.6 平滑停止和急停

1.6.1 指令列表

平滑停止和急停指令列表

指令 说明
GTN_Stop 平滑停止或者急停一个或多个轴的规划运动,停止坐标系运动。

1.6.2 重点说明

1. 如何切换到平滑停止或者紧急停止?

运动控制器的每个轴都可以定义平滑停止IO和急停IO,同时用户也可通过调用GTN_Stop来对轴或坐标系进行平滑停止或者急停。

2. 平滑停止或者紧急停止后运动控制器状态如何变化?

当平滑停止IO输入为触发电平时(触发电平可以设置),运动控制器自动平滑停止所关联的控制轴,并将轴状态字(bit7)置1。

当急停IO输入为触发电平时(触发电平可以设置),运动控制器自动紧急停止所关联的控制轴,并将轴状态字(bit8)置1。

IO平滑停止或者IO急停完成以后,必须调用GTN_ClrSts指令清除停止标志位(bit7和bit8),才能继续运动。

3. 停止坐标系运动

只需要停止坐标系中的任意轴都可以达到停止坐标系的效果。

4. 平滑停止和紧急停止的减速度设置标系运动

可以通过MotionStudio设置平滑停止和紧急停止的减速度,请参考"系统配置"中"配置axis"。或者通过指令GTN_SetStopDec设置。

1.7 轴平滑

1.7.1 指令列表

轴平滑指令列表

指令 说明
GTN_SetAxisMotionSmooth 设置轴的平滑时间和平滑系数。
GTN_GetAxisMotionSmooth 读取轴的平滑时间和平滑系数。

1.7.2 重点说明

在高加速度加工场合,由于加速度过大,很容易激发机台的振动,通过轴平滑功能可以使控制器的规划输出更加平滑,进而提高加工稳定性。

轴平滑设置指令GTN_SetAxisMotionSmooth需设置平滑时间time和平滑系数k。

平滑时间越大,运动越平滑。一般建议设置为20~50ms。但由于机台的差别性,用户可以根据实际情况在参数允许范围内进行调整。平滑系数越小,运动越平滑,一般建议设置为15~18。通过下面的示例,可以看到平滑时间和平滑系数的效果。

轴平滑实例

假设轴1进行点位运动,目标位置为10000脉冲,速度是100脉冲/毫秒,加速度是100脉冲/毫秒的平方,使能轴平滑功能。设置time,k,则平滑前和平滑后的位置、速度、加速度图像如下所示,其中,X轴单位为中断周期,对应位置、速度、加速度图,Y轴单位分别为脉冲、脉冲/中断周期、脉冲/中断周期的平方。蓝色细实线为平滑前的运动曲线、红色粗实线为平滑后的运动曲线。从图中可以看出,当平滑时间越大或者平滑系数越小时,速度加速度越平滑。 1. 设置time=20,k=15

平滑前和平滑后的位置、速度、加速度图像1
2. 设置time=20,k=60
平滑前和平滑后的位置、速度、加速度图像2
3. 设置time=1,k=15
平滑前和平滑后的位置、速度、加速度图像3
例程请参考:

提示
  1. 当坐标系中的轴开启平滑时,会对轨迹造成变形,平滑越大,变形越大。
  2. 建议坐标系中的各轴设置相同的平滑参数。

1.8 轴仿真模式

1.8.1 指令列表

轴仿真模式指令

指令 说明
GTN_SetAxisSimulationParameter 设置指定轴的仿真功能参数。
GTN_GetAxisSimulationParameter 读取指定轴的仿真功能参数。
GTN_GetAxisSimulationBeginPos 读取指定轴的仿真功能开启时的位置。

1.8.2 重点说明

轴仿真模式通过将物理轴虚拟化,实现在脱离控制实际物理轴时模拟整个工艺的运行状态与控制逻辑验证。

开启轴仿真模式后,控制器将本体轴资源与实际物理轴脱钩,并通过内置的虚拟编码器模块模拟编码器反馈,达成在机台处于安全位置也能完成整个工艺流程的验证。客户可以调用GTN_SetAxisSimulationParameter指令开启轴仿真功能,并可调用GTN_GetAxisSimulationParameter函数来获取当前轴的仿真模式参数状态。

轴仿真模式拥有多种模式,用户通过设置GTN_SetAxisSimulationParameter中的reserve1[0]参数来使用不同的仿真模式。

使用注意

当用户使用不会使轴下使能的模式时,退出时需要先使轴回到进入仿真模式时的位置,同时用户可通过调用GTN_GetAxisSimulationBeginPos来获取指定轴进入仿真模式时的位置,当该轴退回到该位置时才可退出仿真模式。

仿真指令示例

1.开启轴1的仿真功能,轴1会下使能

    short rtn;
    short axis = 1;
    short count = 1;
    TAxisSimulationParameter prm;
    memset(&prm,0,sizeof(prm));     // 初始化参数结构体
    prm.enable=1;                   // 开启仿真功能

    rtn = GTN_SetAxisSimulationParameter(core,axis,&prm,count);

2.开启轴1的仿真功能,并保持轴1的使能状态

    short rtn;
    short axis = 1;
    short count = 1;
    TAxisSimulationParameter prm;
    memset(&prm,0,sizeof(prm));     // 初始化参数结构体
    prm.enable=1;                   // 开启仿真功能
    prm.reserve1[0]=1;              // 设置模式为不下使能模式

    rtn = GTN_SetAxisSimulationParameter(core,axis,&prm,count);

3.开启轴1的仿真功能,保持轴1的使能状态的同时支持PSO功能正常输出

    short rtn;
    short axis = 1;
    short count = 1;
    TAxisSimulationParameter prm;
    memset(&prm,0,sizeof(prm));     // 初始化参数结构体
    prm.enable=1;                   // 开启仿真功能
    prm.reserve1[0]=2;              // 设置模式为支持PSO正常输出的模式,该模式不会下使能

    rtn = GTN_SetAxisSimulationParameter(core,axis,&prm,count);

4.当处于常规模式时,关闭轴仿真功能

    short rtn;
    short axis = 1;
    short count = 1;
    TAxisSimulationParameter prm;
    memset(&prm,0,sizeof(prm));     // 初始化参数结构体
    prm.enable=0;                   //开启仿真功能

    rtn = GTN_SetAxisSimulationParameter(core,axis,&prm,count);

5.当处于不下使能模式时,关闭轴仿真功能

    short rtn;
    short axis = 1;
    short count = 1;
    double beginPos; 
    // 获取轴1的进入仿真模式的位置
    rtn = GTN_GetAxisSimulationBeginPos(core,axis,&beginPos,count);

    //--------------------
    // 调用运动指令将该轴移动到beginPos位置
    //--------------------
    ...

    //--------------------
    //确保轴在退出仿真模式时,已经运动到开启时的位置
    //--------------------
    TAxisSimulationParameter prm;
    memset(&prm,0,sizeof(prm));
    prm.enable=0;          //开启仿真功能

    rtn = GTN_SetAxisSimulationParameter(core,axis,&prm,count);