admin 管理员组

文章数量: 887021


2024年1月24日发(作者:计算机程序员工资)

TwinCAT NCI插补和坐标系变换

V1.0

王进 张寅 著

2020.4.15

本书内容纯属个人技术总结,如有纰漏还请谅解和指正,如要深入应用请参考官网帮助文档。

1

序言

NCI是倍福自主研发的CNC系统,具有对控制器性能要求低、廉价、与NCPTP轴无缝融合、无需专业HMI软件的优势。广泛应用于装配设备、加工中心、木工门窗、涂胶设备、多关节机械手轨迹规划和上下料系统。TwinCAT NCI可以实现3轴插补以及五个辅助轴的运动,实现机构在空间中以任意的坐标轨迹运动。TwinCAT NCI(TF5100)支持G代码指令,同时NCI在G代码的基础上又发展出GST语言编程,可以更好地将G代码与ST语言相结合。NCI系统包含多种运动学坐标系变换模型,包括DELTA模型、SCARA模型、六轴机器人模型等。另外NCI在原有G代码的基础上又针对机械手的应用开发了PickAndPlace抓放功能库,为机械手的空间插补轨迹规划提供有力支持。

本书第一章从NCI的基础配置讲起,带大家快速配置一个NCI通道,同时介绍了常用的M函数和R变量以及NCI的PLC功能块和常用G代码。学习完第一章的前五节,可以算是完成了NCI的入门,能够开发一些简单的NCI项目。本章6到12节详细介绍了NCI通道的参数含义和设置方法、零点偏移、NCI的平滑过渡曲线类型等,便于对NCI有一定掌握的人员系统学习NCI的机制和参数含义。这样本书既适用于初学NCI的技术人员快速入门,又适合对NCI有一定使用的人员掌握常用的配置参数的含义和设置方法以及系统学习曲线过渡算法等。

本书第二章主要介绍运动学坐标系的变换,运动学坐标系的变换是我们常说的机器人关节机械臂模型,是NCI技术的拓展。本章第一节以Delta机器人为例,详细介绍了机器人模型的配置流程和参数含义。随后分别介绍了SCARA机器人、2D并联、2D串联、6轴串联、6轴并联等机器人模型参数含义和坐标系定义。第5节和第6节介绍了运动学静态模型转换和机器人力矩前馈添加方法。本章第7节介绍了TwinCAT3的新功能怎么利用TcCom功能采用C++编程方式快速开发一个机器人运动学变换模型。

本书第三章主要介绍了PickAndPlace抓放功能库的配置和使用步骤。PickAndPlace是NCI功能的拓展,主要用于机器人轨迹规划,以及与相机和传送带配合的抓放运动。它直接在PLC中编辑路径不需要采用G代码,可以更方便地与视觉和传送带配合。

本书第四章主要介绍了GST语言的语法和功能。GST语言把高级语言完美地集成在CNC编程中,它将描述轮廓的G代码(DIN66025)与PLC编程用的结构文本ST语言结合在一起,使机器制造商能以一个简单的方式实现复杂的编程。GST使NCI可以方便地实现迭代,变量声明,功能与功能块等。

本书前三章由王进编写,第四章GST语言由张寅编写,所有内容是作者对NCI系统的个人技术总结,由于作者能力有限如有纰漏或者不足之处还请谅解和指正。本书编写过程中得到其他技术人员的支持,如第一章第一节的NCI的配置参考了技术支持部的文档,技术支持部工程师张立文也对本书进行了校对,并根据400技术热线收到的NCI热门问题,提出了增删部分内容的宝贵建议,在此向他们表示感谢。

2

目录

序言 ..........................................................................................................................................................................2

第一章NCI插补技术 .........................................................................................................................................7

1.1 NCI的配置和调试 ...............................................................................................................................7

1.1.1 新建一个NCI Group ............................................................................................................7

1.1.2 NCI的调试 ................................................................................................................................9

1.2 M函数的使用 .................................................................................................................................... 11

1.2.1 M函数的定义 ....................................................................................................................... 11

1.2.2 M函数的配置 ....................................................................................................................... 12

1.2.1 握手型M函数 ..................................................................................................................... 12

1.2.2 快速M函数 ......................................................................................................................... 13

1.3 R参数的使用 ..................................................................................................................................... 14

1.3.1 “R-Parameter”选项卡 ......................................................................................................... 15

1.3.2 PLC程序读写 ........................................................................................................................ 15

1.3.3 G代码读写 ............................................................................................................................ 16

1.4 NCI的PLC编程配置 ...................................................................................................................... 16

1.4.1 NCI的结构体 ........................................................................................................................ 17

1.4.2 创建Group功能块 ............................................................................................................ 18

1.4.3 下载G代码功能块 ............................................................................................................ 18

1.4.4 读取NCI通道的状态函数 ............................................................................................... 19

1.4.5 G代码的运行功能块 .......................................................................................................... 19

1.4.6 清除Group功能块 ............................................................................................................ 20

1.4.7 NCI的复位功能块 ............................................................................................................... 21

1.4.8 停止和停止后的启动功能块 ........................................................................................... 21

1.4.9 修改NCI的Override功能 .............................................................................................. 22

1.4.10 ItpSingleBlock 单步运行 ................................................................................................ 22

1.5 简单的G代码 .................................................................................................................................. 23

1.5.1 G00 快速移动 ...................................................................................................................... 23

1.5.2 G01 直线插补 ...................................................................................................................... 23

1.5.3 G02,G03 圆弧插补 .......................................................................................................... 23

1.5.4 G04 停顿时间 ...................................................................................................................... 24

1.5.6 跳转 ......................................................................................................................................... 24

1.5.7 子程序调用 ........................................................................................................................... 25

1.5.8 修改加速度参数 .................................................................................................................. 25

1.5.9 中止预读 ................................................................................................................................ 25

1.6 Interpreter编译器参数................................................................................................................... 27

1.6.1 “Online”选项卡 ..................................................................................................................... 27

1.6.2 “Override”设置 ..................................................................................................................... 27

1.6.3 状态栏 .................................................................................................................................... 28

1.6.4 “Interpreter”选项卡 ............................................................................................................. 28

1.6.5 “Edit”选项卡........................................................................................................................... 30

1.6.6 “MDI”选项卡 .......................................................................................................................... 30

1.7 零点偏移 ............................................................................................................................................ 31

3

1.7.1 “Zero Points”预先设置偏移值 ......................................................................................... 31

1.7.2 通过功能块设置偏移值 .................................................................................................... 32

1.7.3 在G代码中参数化零点偏移 .......................................................................................... 32

1.8 刀具补偿 ............................................................................................................................................ 33

1.8.1 刀具数据 ................................................................................................................................ 33

1.8.2 读写刀具数据 ...................................................................................................................... 33

1.8.3 刀具的调用 ........................................................................................................................... 35

1.9 Group通道参数 ................................................................................................................................ 36

1.9.1 General 选项卡 .................................................................................................................... 36

1.9.2 DXD选项卡 ........................................................................................................................... 36

1.9.3 Setting 选项卡 ..................................................................................................................... 41

1.9.4 Online选项卡 ....................................................................................................................... 42

1.9.5 “3D-Online”选项卡 ............................................................................................................. 42

1.10 NC轴中的NCI参数 ..................................................................................................................... 43

1.10.1 Rapid Traverse Velocity(G0) .................................................................................... 43

1.10.2 Velo Jump Factor .............................................................................................................. 44

1.10.3 Tolerance ball auxiliary axis ........................................................................................... 44

1.10.4 Max position deviation aux axis ................................................................................... 45

1.11 辅助轴的编程和速度 ................................................................................................................... 46

1.11.1 辅助轴的编程 .................................................................................................................... 46

1.11.2 辅助轴的速度 .................................................................................................................... 46

1.12 平滑过渡曲线 ................................................................................................................................. 49

1.12.1 圆弧平滑过渡 .................................................................................................................... 50

1.12.2 抛物线平滑过渡 ............................................................................................................... 50

1.12.3 平滑过渡的子类型subtype .......................................................................................... 50

1.12.4 四次曲线平滑过渡 ........................................................................................................... 51

1.12.5 三阶贝塞尔曲线平滑过渡 ............................................................................................. 52

1.12.6 五阶贝塞尔曲线平滑过渡 ............................................................................................. 52

第二章 运动学坐标系变换 ........................................................................................................................... 53

2.1 运动学坐标系变换配置流程(Delta为例) ......................................................................... 54

2.1.1 安装软件开发包 .................................................................................................................. 54

2.1.2 添加NC轴和设置参数 ..................................................................................................... 54

2.1.3 原点标定 ................................................................................................................................ 55

2.1.4 添加Group ........................................................................................................................... 55

2.1.5 参数设置 ................................................................................................................................ 56

2.1.6 机器人结构体和配置功能块 ........................................................................................... 57

2.2 SCARA类型配置 .............................................................................................................................. 59

2.2.1 Group添加 ............................................................................................................................ 60

2.2.2 参数设置 ................................................................................................................................ 60

2.2.3 PLC程序 ................................................................................................................................. 60

2.3 2D串联 ................................................................................................................................................ 62

2.3.1 Group添加 ............................................................................................................................ 62

2.3.2 参数设置 ................................................................................................................................ 63

2.3.3 PLC程序 ................................................................................................................................. 63

4

2.4 2D并联 ................................................................................................................................................ 64

2.4.1 Group添加 ............................................................................................................................ 64

2.4.2 参数设置 ................................................................................................................................ 64

2.4.3 PLC程序 ................................................................................................................................. 65

2.5 六轴串联 ............................................................................................................................................ 66

2.5.1 Group添加 ............................................................................................................................ 66

2.5.2 参数设置 ................................................................................................................................ 67

2.5.3 PLC程序 ................................................................................................................................. 68

2.6 Stewart 并联机构 ............................................................................................................................ 68

2.6.1 Group添加 ............................................................................................................................ 69

2.6.2 参数设置 ................................................................................................................................ 69

2.6.3 PLC程序 ................................................................................................................................. 70

2.7 坐标系的静态变换 .......................................................................................................................... 70

2.7.1 用于直角坐标模型 ............................................................................................................. 70

2.7.2 用于机器人坐标系的偏移和旋转.................................................................................. 71

2.8 力矩前馈配置 ................................................................................................................................... 73

2.9 C++编写机器人模型算法(TcCom) ...................................................................................... 75

2.9.1 软件平台 ................................................................................................................................ 76

2.9.2 C++的配置和编程 .............................................................................................................. 76

2.9.3 PLC程序的配置和编程...................................................................................................... 83

2.9.4 运行和测试 ........................................................................................................................... 87

第三章 PickAndPlace 抓放功能库 ............................................................................................................ 89

3.1 软件安装和购买 .............................................................................................................................. 89

3.2 软件配置 ............................................................................................................................................ 89

3.2.1 配置MC_Group .................................................................................................................. 89

3.2.2 Group参数设置 ................................................................................................................... 93

3.3 PLC编程和功能块 ........................................................................................................................... 94

3.4 传送带跟随 ........................................................................................................................................ 99

第四章 NCI的GST语言编程 .................................................................................................................... 101

4.1 GST的配置 ....................................................................................................................................... 102

4.2 预处理指令 ...................................................................................................................................... 102

4.3 G代码和ST的结合 ....................................................................................................................... 103

4.4 ST语言 ............................................................................................................................................... 103

4.5 NCI功能 ............................................................................................................................................ 104

4.5.1 字符串和消息 .................................................................................................................... 104

4.5.2 运动 ....................................................................................................................................... 105

4.5.3 中心点修正 ......................................................................................................................... 106

4.5.4 刀具 ....................................................................................................................................... 107

4.5.5 同步 ....................................................................................................................................... 108

4.5.6 轴系查询 .............................................................................................................................. 110

4.5.7 工作平面 .............................................................................................................................. 111

4.5.8 当前点 .................................................................................................................................. 112

4.5.9 刀具半径补偿 .................................................................................................................... 112

4.5.10 G代码的抑制 ................................................................................................................ 113

5

4.5.11 零点偏移 ........................................................................................................................... 114

4.5.12 单位 .................................................................................................................................... 115

4.5.13 三角函数 ........................................................................................................................... 116

4.6 变换 ................................................................................................................................................. 117

4.6.1 变换的语法 ......................................................................................................................... 117

4.6.2 有效变换T和效果 ........................................................................................................... 121

4.6.3 有效变换T .......................................................................................................................... 122

4.6.4 变换撤消 .............................................................................................................................. 122

4.6.5 堆栈复原 .............................................................................................................................. 123

4.6.6 变换的应用 ......................................................................................................................... 123

4.7 刀具半径补偿 ................................................................................................................................. 125

4.7.1 用户提供的参数 ................................................................................................................ 125

4.7.2 碰撞消除 .............................................................................................................................. 125

4.7.3 路径重叠 .............................................................................................................................. 126

4.7.4 用于消除碰撞的预读 ....................................................................................................... 127

4.7.5 刀具半径补偿的再激活 .................................................................................................. 127

4.7.6 接缝闭合 .............................................................................................................................. 128

4.7.7 接近/离开行为 ................................................................................................................... 130

4.7.8 正交运动 .............................................................................................................................. 132

4.8 B样条曲线 .................................................................................................................................... 133

4.8.1 语法 ....................................................................................................................................... 133

4.8.2 参数 ....................................................................................................................................... 134

4.8.3 B样条支持的G代码和函数 .......................................................................................... 137

6

第一章NCI插补技术

NCI是Numerical Control Interpolation 的简称,是倍福自主研发的CNC系统。TwinCAT

NCI可以实现3轴插补,实现机构在空间中任意的坐标轨迹运动。在三维空间里,最常见的是二维平面上的线段,比如XY平面上的直线和圆弧以及由直线和圆弧合成的其他图形,都可以由NCI实现轨迹运动。另外也可以在XY轴做圆弧插补的同时,Z轴上下移动 ,就会在空间上形成一个螺旋轨迹,从而构成三轴插补。也可以实现三维空间中给定大量点的样条曲线插补,NCI系统会自动在点与点之间插值,并按设定参数合并或修改小线段以及过小的过渡角,从而保证最快的速度和最小的形变。

TwinCAT NCI(TF5100)支持G代码插补指令,G代码文件是若干行G代码的指令 ,有一套标准规范,通常采用DIN66025。如直线插补指令G01,圆弧插补指令G02/G03,以及在G代码指令执行过程中发出的外部开关状态指令M函数。TwinCAT NCI包含了G代码编译和预读功能,在执行G代码文件的时候,NCI会预读G代码行,结合插补通道内每个轴的当前位置,计算出每个轴接下来在每个控制周期的给定位置。

TwinCAT NCI 在做插补运动时,所有轴的物理层都是在NCPTP轴中与电机驱动器进行关联的。TwinCAT NCPTP将一个电机的运动控制划分成:PLC轴、NC PTP轴和物理轴。而TwinCAT NCI把一个联动机构的控制分成三层:PLC插补通道、NCI插补通道、NCPTP轴。所以使用NCI系统的控制器具有更大的灵活性,既可以把PTP轴配置到NCI插补通道,也可以随时分离出来当普通PTP轴使用。

每个控制器最多可以配置31个NCI通道,每个通道最多包含3个插补轴和5个辅助轴。3个插补轴的运动方向在空间上存在正交关系,通常我们会命名为X Y Z轴,NCI的速度就是指空间坐标系三个插补轴的合成速度。5个辅助轴与插补轴之间没有严格的空间关系,但是可以与插补轴同时启动,同时到达预定位置。

1.1 NCI的配置和调试

NCI的配置方式和NC PTP有比较大的区别,NC PTP可以直接通过axis的online窗口对物理轴进行调试,而NCI则必须通过调用G代码才可以让电机正反转,下面以虚轴为例,介绍如何在软件中对NCI功能进行调试。

1.1.1 新建一个NCI Group

由于本次采用的是虚轴模拟的,所以需要先建三根虚轴:

1)添加三个NC轴,直接在Multiple里面设置3,可以一下子添加3根轴。

7

2)右键NC_Task1 SAF,手动添加一个NCI的通道。

3)本教材采用Simens编程G代码指令,所以设置插补通道支持G代码指令格式为NC

Interpreter DIN66025(Classic dialect),老版本以及TwinCAT2是Simens dialect。该设置在TC3 4022.2版本中需要手动修改,其他版本默认就是该类型。注意不要选择GST,关于GST的编程后文有专门的章节讲解。

4)激活配置使前面添加的虚轴以及NC插补通道生效,输入验证码并切换TwinCAT至运行模式。

8

1.1.2 NCI的调试

1)将三个虚轴使能,先选中Axis 1,点击Online选项卡,点击Set,点击All对轴进行使能,依次对Axis2, Axis3都使能上。

2

3

1

4

2)设置NCI的插补的速度比为100%。

2

3

1

插补速度需要独立设置,如果忘记设置这个参数会导致轴无法正反转

3)建立G代码中XYZ轴和NC轴的对应关系。

9

2

1

将AXIS 1 2 3对应到G代码中的X

Y Z三轴上

4)可以通过MDI窗口单步调试G代码。

2

3

4

G00代表快速进给,X10000 Y10000 Z10000代表目标位置,触发这段G代码之后,三个轴会以其中一个轴的最大速度移动到目标位置

1

5)Editor窗口中可以对完整的G代码文件进行调试。

调试步骤如下:

① 点击Browse选择G代码文件,按F7将G代码文件导入到NCI中准备执行,可以在Program Name中看到当前已经导入的G代码文件;

按F5执行G代码,此时可以看到Actual Program line中当前正在执行的G代码行,X Y Z轴会根据G代码的内容执行相应的动作。

10

3.执行G代码

2.导入G代码至1.浏览G代码文件

1.2 M函数的使用

在G代码程序中,还会用到M函数。M函数起到G代码与PLC程序交互的作用,比如G代码执行过程中,需要PLC里面做一些处理,比如换刀,吹气等操作,可以通过M代码来完成,除了部分根据国际标准已经指定好固定用途的M函数,根据 M函数是否打断G代码预读,可以被分为握手型M函数Hshake和快速M函数Fast。握手型 M函数需要NCI与

PLC握手,M函数在NCI通道中被触发,在PLC程序确认这个M函数之后,才能继续执行后面的G指令。而快速M函数不需要PLC程序去确认,只是起到通知PLC的作用。

1.2.1 M函数的定义

M函数

0..159

2

17

30

含义

可以任意定义的M功能(除了2,17,30)

程序结束

子程序结束

程序结束并复位所有快速M函数

11

1.2.2 M函数的配置

打开Go Interpreter的“M-Function”的选项卡,可以对M函数进行配置。

其中:

No M函数的编号,最多可设置159个,M2、M17、M30 有特殊应用,不能用于程序中自定义。

G代码程序:N10 X100 Y100 M10

HShake握手型M函数的配置。

Fast快速M函数的配置。

Reset 触发该M函数后对其他M函数进行复位

Commet 备注

AM表示After Motion,即当G代码行有M函数时,M函数会在G代码行的运动程序运行完成后被激活;

BM表示Before Motion,即当G代码行有M函数时,M函数会在G代码行的运动程序运行前被激活;

None指不需要PLC握手确认。

1.2.1 握手型M函数

Hshake:握手型M函数

使用握手型M函数,输出后如果没有复位,程序会在当前程序行暂停,直到M函数复位后才会向下运行,这是与快速M函数的区别。所以同时只会触发一个M函数,可以通过ItpIsHskMFunc获取是否有M函数触发;ItpGetHskMFunc函数获取M函数编号;复位采用ItpConfirmHsk函数实现。

12

样例程序如下:

1.2.2 快速M函数

Fast:快速M函数。

如果直接使用AM 或者BM,M函数触发之后会一直保持为True,复位需要使用PLC中的功能块ItpResetMFuncEx,但程序不会因为运行到M函数而停止。类型选择中有AutoReset的表示自动复位该M函数。

获取快速M函数的状态通过ItpIsFastMFunc函数,复位该M函数需要通过ItpResetFastMFuncEx功能块实现。

13

样例程序如下,本例中把M96-M159作为快速M函数:

1.3 R参数的使用

G代码中可以使用固定值编程运动曲线,例如:X100 Y100 F1000,也可以使用Lreal类型的变量替代常量增加灵活性,NCI中称为R参数。

如G01 X100 Y200

可改成:R5=100

G01 X=R5 Y=2*R5

其中每个NCI通道可设置1000个R参数,从R0到R999,类型均为Lreal型,要注意的是NCI会对G代码进行预读,因此R参数需要提前修改。如果在运行中需要修改R参数,需要用到终止预读指令@714,通常终止预读用在握手型M函数后面。

R参数有三种访问方式:

14

1.3.1 “R-Parameter”选项卡

可以在R参数选项卡读写R参数。

1.3.2 PLC程序读写

可以通过调用Tc2_NCI库中的ItpReadRParams(读),ItpWriteRParams(写)功能块实现R参数读写。

其中

nChnId是绑定需要修改R参数的NCI通道;

pAddr是R变量的地址,如果是数组则为首位的地址;

nIndex 是数组的首位;

nCount 是数组的长度;

比如要写R0-R200的变量程序如下

15

1.3.3 G代码读写

赋值 N10 R5=100

调用 G01 X=R5 Y=2*R5

1.4 NCI的PLC编程配置

NCI支持3轴插补以及5个辅助轴运动,本章结合实验程序采用三个插补轴和一个辅助轴。首先需要在NC配置四个轴,分别是插补轴X Y Z 和辅助轴C,以及一个NCI插补通道,方法见本章第一节。

其次通过程序做NCI控制,需要添加三个库文件:①Tc2_MC2 ②Tc_

③Tc2_PlcInterpolation

另外还需要定义轴类型结构体,关联到NC轴通道,并使用MC_Power功能对这些轴进行使能。

16

1.4.1 NCI的结构体

声明NCI结构体 NcToPLc_NCIChannel_Ref 和PLcToNc_NCIChannel_Ref,如上图

并把变量链接到NC channel中去,如下图。

声明本例中所用到的其他功能块,如下图:

17

1.4.2 创建Group功能块

使用CfgBulidExt3DGroup功能块创建NCI并通过nGroupId对应到NCI的Channel,可以理解为把轴通道配置到NCI。如果有不用的轴则对AxisID赋值0。其中nGroupId可以通过ItpGetGroupID函数获取。

1.4.3 下载G代码功能块

需要编辑好G代码命名并放到对应的文件下。

使用ItpLoadProg功能块把G代码文件下载到NCI的Channel中

其中SPrg是G代码的名称,string字符串变量,nLength是G代码名称的长度

例如:如果是Win7、Win10、XP系统

ProgramName:='C:';

如果是CE系统

ProgramName:='Hard ';

18

1.4.4 读取NCI通道的状态函数

可以使用函数ItpGetStateInterpreter读取NCI的状态。

返回值类型:UDINT

着重介绍重要的几个状态

uiItpState返回值 状态

1

解释

该状态未加载任何G代码程序或是刚执行完复位功能,插补通道处于空闲状态。若当前执行G代码停止也会进入该状态。

ITP_STATE_IDLE

2

12

10

ITP_STATE_READY

ITP_STATE_ABORTED

成功导入G代码程序,插补通道进入准备状态。当G代码程序被完整执行完,插补通道也会进入该状态

如果在G代码运行过程中出现报错,插补通道立即进入该模式,当前报错代码也会出现在通道状态中

ITP_STATE_SINGLESTOP

此状态仅在Single Block Mode.中出现。一旦进入Single

Block Mode.,插补通道切入该状态(结合1.4.10学习)

其他模式请查看:

/content/1033/tcnci/?id=5499651

1.4.5 G代码的运行功能块

通过ItpStartStopEx功能块执行NCI代码,如下图:

19

ItpStartStopEx功能块的bStart和bStop输入都是上升沿触发,同时bStop的优先级高于bStart,所以如果同时触发信号,bStop将优先执行。该停止指令将删除NCI通道中的数据,不支持从停止前的状态的启动。程序如下

1.4.6 清除Group功能块

代码执行完毕,通过CfgReconfigGroup清除NCI通道,CfgBulidExt3DGroup相对应。

20

与创建Group功能块

1.4.7 NCI的复位功能块

这里推荐采用新版本的ItpResetEx2功能块,可以实现在NCI通道报错时的复位。参考程序如下:

1.4.8 停止和停止后的启动功能块

功能块ItpEStopEx触发NCI的急停并以设定的减速度fDec和加加速度fJerk作为限制参数进行停止,当这两个参数比当前系统被激活的动力学参数更大时有效,以使系统在更短的时间内停下来。

功能块ItpStepOnAfterEStopE应用在执行过ItpEStopEx后,如果要继续运行G代码,可以触发该功能块。

21

1.4.9 修改NCI的Override功能

在运行过程中有时候如果需要对NCI的速度进行实时调节,可以利用ItpSetOverridePercent

功能实现。该参数单位为百分比,范围为0-100。

1.4.10 ItpSingleBlock 单步运行

bExecuteModeChange:上升沿触发单步模式启动

nMode:模式选择一共有三个模式

1)ItpSingleBlockOff

不启用单步模式

2)ItpSingleBlockNck

使用NC核单步模式时,G代码程序在解释器中被预读(利用M函数和中止预读指令实现中止预读的除外)。也就是说不会提前预读当前程序行后面的程序。R变量不会在后面的程序行中刷新。

这种模式相比较编译器单步模式有个优势是可以在G代码运行的过程中启动。

3)ItpSingleBlockIntp

使用编译器单步模式时,G代码程序在编译器中停止。也就是说不会提前预读当前程序行后面的程序。R变量会在后面的程序行中刷新。

这种模式不能在程序运行过程中启动,如果一定要在G代码运行过程中使用,需要利用M函数和中止预读指令实现中止预读后启用。

bTriggerNext:触发单步运行

tTimeOut: ADS超时设置

22

1.5 简单的G代码

1.5.1 G00 快速移动

各轴分别单独移动到设定位置,无插补配合。如果采用G00快速移动,轴的速度由NC轴参数中的Rapid Traverse Velocity (单位mm/s)决定。

例G00 X100 Y150

1.5.2 G01 直线插补

XYZ轴以插补方式运行到目标位置,合成速度由指定的速度决定,F6000是指定速度,单位mm/min。

例N10 G90

N20 G01 X100.1 Y200 F6000

辅助轴的运动指令如下:

(start position X=Y=Z=Q1=0)

N10 G01 X100 Q1=47.11 F6000

其中辅助轴的运行时间和插补轴同时启动同时结束。

1.5.3 G02,G03 圆弧插补

G02 是顺时针运动;G03是逆时针运动;

圆弧插补需要首先指定圆弧平面

默认 XY平面(G17)

ZX平面(G18)

YZ平面(G19)

23

1) 半径编程

这种方式通常用于实现一个非完整圆的圆弧曲线,通过指定起始点与结束点和圆弧半径(例子中B200指半径200mm)实现圆弧插补。如何要实现一个大于180度的圆弧,需要把半径设置为负。

例:N10 G01 G17 X100 Y100 F6000

N20 G02 X200 B200

2) 中心点编程

中心点编程以相对I(X部分)、J(Y部分)、K(Z部分)参数为圆心,以上一条指令的结束点为起点进行圆弧插补;

例:N10 G01 G17 X100 Y100 F6000

N20 G02 I50 J0 (J is optional) X200

N30 M30 (program end)

本例中,以(150,100)为圆心,从起始点(100,100)顺时针运行到(200,100),半圆。

例:N10 G01 G18 X100 Y100 Z100 F6000

N20 G02 I0 K50 X150 Z150 (quarter circle in ZX plane)

N30 M30

本例中,G18指定插补平面ZX,以(100,150)为圆心,从起始点(100,100)运行到(150,150)

四分之一圆。

以上I、J,K都是表示以起始点为基准的相对值,如果要使用绝对值,需要通过@412修

改标志位实现,如下例子。

例:N10 G01 G17 X100 Y100 F6000

N20 @402 K5003 K5 K1 (centre point programming on)

N30 G02 I150 J100 X200

N40 @402 K5003 K5 K0 (centre point programming off)

N50 M30

3)CIP空间圆弧

上面两种圆弧指令都需要指定插补平面XY或者ZY、ZX,CIP指令可以实现空间圆弧。

例:N10 G01 X100 Y100 F6000

N20 CIP X200 Y200 I50 J50 K50

本例中,以(150,150,50)为圆心,从起始点(100,100,0)运行到(200,200,0)。

1.5.4 G04 停顿时间

例:N10 G01 X100 F6000

N20 G04 X0.5 (pause in sec)

N30 G02 X300

本例中G04 X0.5是在完成前一指令后停顿0.5s。

1.5.6 跳转

1)无条件跳转 @100 K or R

24

例:N10 ..

N120 @100 K-10

本例中从N120 向上跳转到第N10,如果是向后跳转,K参数为正,反之为负。

2)条件跳转 @121 R K or R K

例:N10 ..

...

R1=14

N120 @121 R1 K9 K-10

N130 ...

本例中,如果R1不等于9 ,则跳转到N10,否则顺序执行。

1.5.7 子程序调用

有些加工过程中,基础代码不变,而工件的G代码会经常变换,这时候可以使用子程序。

例:(file )

L2000

...

N5000 M17 (结束子程序)

主程序的调用:N100 L2000 (call)

1.5.8 修改加速度参数

#set paramPathDynamics(,,,)#

例:N10 G01 X100 Y200 F6000

N15 R4=3000

N20 #set paramPathDynamics( 700; 700; R4 )#

N30 G01 X500

1.5.9 中止预读

G代码程序会一次性预读到NCI中,但是有些路径参数可能在程序执行的过程中才能

计算出,比如机械手配合视觉相机实现飞抓功能,抓取位置需要运行完一段程序后才能给出。这时候可以通过中止预读来实现。编译器一旦运行到中止预读指令行,编译器会一直等待,直到某个外部事件发生。在此事件发生之前,NC程序不会继续执行。

(1)@714

中止预读后继续预读执行有两种方式:

1) 握手型M函数中止预读

例:

25

N20 M43 (M-function with handshake)

N30 @714 (decoder stop)

N40 ...

本例中可以在PLC中复位M43函数后,继续预读和执行程序

2) SAF任务是空的

编译器预读的停止不一定要与M函数一起编程。如果SAF任务执行完了所有运动命令,则向编译器发送一个事件,这导致编译和预读的重新执行。

(2)@716 中止预读后重新扫描轴位置

使用@716在编译器预读的停止处将再次读取插补通道的轴位置。

例如,如果在工具切换期间通过PTP移动了轴,并且该轴随后没有返回到原来的位置,可以使用@716从新扫描轴位置。另一个可能的应用是通过M函数(握手型M函数)暂停后更改axis配置,如offset。

注意:当工具补偿或圆平滑被激活时,中止预读失效。

(3)@717 外部事件触发中止预读

在实际使用中有时候要根据PLC的运行情况选择是否把运行的曲线连起来,这时候可以用到@717配合PLC中的外部触发解除中止预读功能块完成。

如下面案例程序,触发快速M函数M70后,NC继续运行N50行运动指令,同时PLC运行事件A,A事件处理完成后发送GoAhead命令。如果GoAhead信号足够早地到达PLC,则将N50和N70行的运动指令连接起来,并且不降低路径速度。如果在N50减速阶段到达,则再次提高速度。否则,机器将停止并等待来自PLC的信号GoAhead。

例:

N10 ...

N20 G0 X0 Y0 Z0

N30 G01 X500 F6000

N40 M70 (flying M-function that triggers process A)

N50 G01 X700

N60 @717 (decoder stop with external trigger event)

N70 G01 X1000

N80 ...

该指令需要和ItpGoAheadEx功能块配合使用,ItpGoAheadEx功能块如下。

26

1.6 Interpreter编译器参数

1.6.1 “Online”选项卡

如果要添加或者删除新的参数可以在Online界面添加。如下图Interpreter-Online选项卡既可以做单轴的点动操作,也可以添加轴的变量进行观测。添加的轴变量将显示在轴状态栏。

1.6.2 “Override”设置

Axis Ovrreide 用来在调试时设置NCI的速度倍率,如果在PLC中修改需要通过ItpSetOverridePercent功能块,详见1.4.9节

Spindle Override 是主轴的速度倍率。与变量ChnSplindleOvr对应。

27

1.6.3 状态栏

可以在轴转态显示框观察各轴的位置、速度等参数。

1)监测变量的添加

见1.6.1节讲解

2)Actual Program Line

指G代码的当前执行指令行。

3)interpreter State

插补通道状态:参考1.4.4

4)Channal State

指示Channal的报错代码,当G代码在下载或者运行过程中报错时,报错代码传给Chananl状态。在不报错的时候Channal State显示0。

查找报错原因,可使用以下链接:

/content/1033/tf5100_tc3_nc_i/?id=4931342

5)Loading buffer

下载缓存大小,在“Interpreter”选项卡可以进行调整。

1.6.4 “Interpreter”选项卡28

1)Type 类型

NC Interpreter DIN 66025 (GST) 采用GST语言编程,GST语言是融合了G代码(DIN66025)和ST语言(结构化文本,PLC语言)的混合编程,详见本书第四章。

NC Interpreter DIN 66025 (Classic dialect)是采用DIN66025规范的G代码编程 ,在旧版本中也称为(Simense dialect)。

None 如果选择PlcInterpolation 库,在PLC实现插补,这里选择“None”。

2)Loading Buffer Size

编译器的下载代码容量可以在这里设置。这里设置的存储容量需要大于G代码文件的大小。最大所允许的存储容下4MB。如果存储容量被修改,需要重启TwinCAT。

3) G70/G71 因数

G代码程序中默认单位是毫米(G71),G70用于切换到其他单位,通常为英寸。

如果G70用于英寸,由于 1mm=1/25.4 in,所以这里分别填入25.4和1。所以这里用于设置G70和G71的换算关系。

4) Save/Restore

可以选择R参数 零点偏移值和工具补偿值进行存储。

点击“save”按钮可以在程序运行过程中把打勾的参数的当前值存储到“TwinCATCNC”。

点击“Restore”按钮下载存储的数据。这个功能只用于调试的目的。

29

1.6.5 “Edit”选项卡

1)Browse选择G代码文件,通常调试采用默认路径下C:文件

2)在路径下的空白文本框内编辑G代码。

3)使用右侧的按钮运行和复位,按钮含义如下

F5 执行G代码

F6 停止G代码

F7 加载G代码

F8 复位错误

F9 保存G代码至文件

1.6.6 “MDI”选项卡

MDI 是“Manual Data Interface”的缩写,可以用于单行G代码的调试,既插补的手动操作。

30

1.7 零点偏移

在加工工件时有时候需要以初始下刀点作为坐标原点,这时候需要用到零点偏移。NCI

指令 G54、G55、G56、G57、G58、G59都可以作为坐标偏移切换。G53或者其他零点偏移编号取消当前零点偏移。

1.7.1 “Zero Points”预先设置偏移值

例:N10 G01 X100 Y0 Z0 F6000

N20 G54 (activates adjustable zero offset shift)

N30 G01 X Y Z

N40 M30

本例中通过Zero Point指定零点偏移值,在G代码程序中通过G54激活。

其中X运行到200+X方向偏移值、Y运行到Y方向偏移值、Z轴没有运行。最终显示X轴当前位置为110、Y轴位置为15、Z轴位置为5。其中偏移量是P54G+P54F。

31

1.7.2 通过功能块设置偏移值

这里nZsNo 是零点偏移的通道号,G54~G57有效;

例:N10 G01 X100 Y0 Z0 F6000

N20 G54 (activates adjustable zero offset shift)

N30 G01 X Y Z

N40 M30

本例中通过功能块指定零点偏移值,在G代码程序中通过G54激活。最终XYZ轴的位

置显示值和偏移前没有发生变化,但电机轴发生了运行。

1.7.3 在G代码中参数化零点偏移

#set paramZeroShift( G; ; ; )#

例:N10 G01 X100 Y0 Z0 F6000

N20 R12=200

N30 #set paramZeroShift( G54; 100.0; R12; -20)#

N40 G54 (activates zero offest shift)

N50 G01 X200 Y Z

本例中在G代码程序中指定偏移值,通过G54激活。

32

1.8 刀具补偿

1.8.1 刀具数据

每个NCI Group 可以存储255个刀具(D1…D255),这些参数可以直接在“Tool”选项卡中设置,以ASCII码的方式保存在TwinCATCNC目录下。当TwincAT启动时,这些参数自动下载到NCI Group。

目前TwinCAT NCI支持两种刀具类型 钻头2:Shaft Cutters铣刀。

参数

TNr.(P0)

Tpy(P1)

Geom.(P2)

Geom.(P4)

Verschl.(P5)

Verschl.(P7)

P8

P9

P10

钻头参数

工具编号

几何含义:长度

描述钻头的长度

磨损:长度,描述钻头的磨损长度

X方向偏移量

Y方向偏移量

Z方向偏移量

铣刀参数

工具编号

几何含义:长度

描述铣刀的长度

几何含义:半径

磨损:长度

描述铣刀的磨损长度

磨损:半径

描述铣刀的磨损半径

X方向偏移量

Y方向偏移量

Z方向偏移量

工具类型,钻头是10。 工具类型,铣刀是20。

1.8.2 读写刀具数据

1)从“Tool”选项卡中设置

如上文所说,可以直接在“Tool”选项卡中写入刀具数据。

2)PLC 功能块写入刀具数据

33

nDNo 是刀具编号,(0…255).

sToolDesc是ToolDesc结构体,其定义如下:

3

)G代码写入刀具数据

语法规则是:#set ToolParam(; ;)#

描述刀具编号(1…255)

刀具的参数(P0…P15)

参数值,可以用R变量表示。

如下面的G代码例子:

N10 G0 X0 Y0 Z0

N20 G01 X100 F60000

N30 R1=10 R2=4 R3=20.3

N40 #set ToolParam(10; 0; 5)# #set ToolParam(10;1;20)#

N50 #set ToolParam(R1; R2; R3)#

N60 G41 X200 Y D10

...

本例中设置刀具10的工具编号为5、类型为铣刀、半径为R3。

4)G代码读取刀具数据

语法规则是:#get ToolParam(; ;)#

例子:

N10 G0 X0 Y0 Z0

N20 G01 X100 F60000

N30 R1=10 R2=4

N40 #get ToolParam(10; 0; R5)# #getToolParam(10;1;R20)#

N50 #get ToolParam(R1; R2; R3)#

N60 G41 X200 Y D10

...

本例中读取刀具10的工具编号、类型和半径到R5、R20、R3。

34

1.8.3 刀具的调用

例:

① 首先在“Tool”中配置D1 ,P0=1(编号);P1=10(类型钻头);P2=9(钻头长度);

P5=-6(钻头磨损);P8=P9=P10=10(XYZ方向偏移);

② 然后在“Edit”中运行以下G代码,如上图。

N10 G01 X100 Y0 Z0 F6000

N30 D1 X10 Y Z

N40 M30

可以看到:X目标位置为20,(10+10=20)

Y目标位置为10,(10=10)

Z目标位置为14,(14=10-6+10)

35

1.9 Group通道参数

1.9.1 General 选项卡

Id :这里指GroupID如上图Id为4。

Objec id:通常用于ADS通讯。

Create symbols 用于激活ADS通讯时对变量的访问。

1.9.2 DXD选项卡

在介绍NCI的通道参数之前,我们先来介绍一些名词解释。

曲线段转换的分类:C0、C1、C2段曲线

一般来说,从一段曲线到下一段的过渡不是无限平滑的。因此,为了避免过渡颠簸,有必要减小过渡点处的速度。为此,对过渡段进行几何分类,分三种确定有效过渡速度V_link。

36

曲线从一个线段S_in到另一个线段S_out的过渡按几何术语分类称为类型Ck,其中k是一个自然数(包括0)。

定义:如果每个曲线段有k个连续的弧长微分,并且在过渡点处的k阶导数相同,则称该过渡为Ck过渡(k大于等于0)。

C0过渡:在过渡点上有一个角度。比如直线转直线。

C0过渡的类型和方法后文会进一步深入讲解。

C1过渡:看起来很平滑,但在动态方面并不平滑。一个例子是在体育场的直线-半圆过渡:在过渡点有一个台阶变化的加速度。过渡方法:

首先,将V_link设置为两个段目标速度中较低的一个:V_link = min(V_in,V_out)。

在速度V_link条件下,根据几何类型G_in和G_out,以及要连接的线段的平面选择G_in和G_out,计算出线段过渡中几何引起的加速度跃变的绝对步长变化。

如果这大于C1乘以几何图形和平面允许的路径加速度/(绝对)减速度AccPathReduced,则速度V_link减小,直到产生的加速度步长变化等于AccPathReduced。

如果这个值小于V_min,那么V_min优先。

注意,当改变动态参数时,几何图形和平面的允许路径加速度以及由此产生的还原反应会自动改变。

C2过渡:(包括Ck, k > 2)是动态平滑的(加加速度限制)。

过渡方法:在C2过渡中,V_link被设置为两个段速度集的最小值:V_link = min(V_in,V_out)。没有进一步的降低速度。

1) Curve Velocity Reduction Mode

曲线速度下降方式对C0过渡有效

方式

Coulomb 库伦

描述

库仑下降方式是一个类似库仑散射的动态过程。

过渡点的偏转角度φ是S1段的末尾的切线和S2段的开始的切线的夹角。

在库仑散射中,速度设置为在无穷远处的速度,

Vk ∝tan(0.5(π−φ))2 ,

然后通过C0因子降低.

Vk ← C0 Vk.

在一个反向运动中(φ= 180),速度下降到Vk = C0。在小偏差角度时发生剧烈下降的情况下,有一个完全下降角φlow[0,180]生效。为了避免速度下降,设置φlow = 180。完全下降时(降低到φ= 0),设置C0 = 0.0和φlow = 0。

137

Cosine

余弦

余弦下降方式是一个纯粹的几何学过程

涉及到:

C0因数∈ [0,1],

角度φlow ∈ [0,180],

角度φlow ∈ [0,180],以及φlow < φhigh

下降方案:

φ < φlow: 不减速: Vk←Vk,

φhigh < φ: 通过C0 因数下降: Vk← C0 Vk

φlow < φ <φhigh:在第1和第2种情况下部分下降持续插值,与余弦函数(0,π/2)的值成比例。

对于完全下降(下降到φ = 0),设置C0=0.0和φlow = 0以及φhigh(非常小,但不等于0)

VeloJump速度跳变

VeloJump方式是每个轴按允许的速度以周期步长进行降低速度。

这是一个确定过渡段速度在C0过渡时的几何过程。该过程根据需要降低的路径速度,使速度的步长变化不超过指定的极限值。计算公式如下:VJump(i)=速度跳变系数*周期时间*min(加速度,减速度),其中i是轴号。(速度跳变系数由于PTP轴parameter-NCI-Velo Jump Factor决定,参考1.10.2)

这种过渡将确保速度降低到V_Link(V_link = min(V_in,V_out),), 并由此确定每个轴的最大速度下降值VJump(i),如果V_Link

注意:当改变动态参数时,轴速度所允许的最大阶跃变换因数会同时自动改变。

通常用于两个不同的机械轴之间的插补过渡。

DEVIATIONANGLE 转折角方式的减少速度取决于偏转角度φ(输入曲线S_in在转折角的切转折角方式

线T_in与输出曲线S_out在转折角的切线T_out的夹角。

38

注意:当改变动态参数时,下降因数不会同时自动改变。

这种下降方式暂未发布。

通常用于两个关联轴之间的过渡,比如:X轴耦合到Y轴。

2)Velocity reduction factor C0 transition

C0过渡的速度下降因数

C0过渡的下降因数,效果取决于下降方式,见上表。

C0 ∈ [0.0, 1]

3)Velocity reduction factor C1 transition

C1过渡的速度下降因数

首先,将V_link设为两段目标速度中较低的一段。V_link = min (V_in ,V_out)。

在速度V_link条件下,根据几何类型G_in和G_out,以及要连接的线段的平面选择G_in和G_out,计算出线段过渡中几何形状引起的加速度跃变的绝对位置变化。如果这大于C1乘以几何图形和平面允许的路径加速度/(绝对)减速度(AccPathReduced),则速度V_link减小,直到产生的加速度变化等于AccPathReduced。如果这个值小于V_min,那么采用V_min。

注意,当改变加速度参数时,几何图形和平面的允许路径加速度反过来影响下降变换。

C1转换的系数:C1≥0.0

4) Critical angle, segment transition 'low'

临界角度,曲线过渡“Low”

参考曲线速度下降方式的Coulomb方式和Cosine方式。

5) Critical angle, segment transition 'High'

临界角度,曲线过渡“high”

参考曲线速度下降方式的Coulomb方式和Cosine方式。

6) Minimum velocity at segment transitions

曲线过渡时的最小速度

每个NCI组的最小路径速度V_min≥0.0。通常实际速度应该总是超过这个值,但如果程序指定也会小于这个设置值,比如:程序在线段转换时的停止、路径结束或者Override减小导致速度低于最小值。还有一个系统性例外是运动反转。最小速度可以设置为一个新的值V_min≥0.0在程序运行的任何时候。单位是毫米/秒。

7) Global soft position limits (for x,y,z-axes)

全局软限位

当NC中轴参数开启软限位时,如果NCI的轴实际位置超出轴参数的软限位值,会导致速度立刻降低到零。为了避免轴的速度立刻降低到零,这里设置了全局软限位监视功能。

True:使能全局软限位开启使能全局软限位功能时,必须同时开启轴参数中的software

limit功能。此功能可以监视在标准的几何曲线轨迹运动并列运行,如直线、圆弧、螺旋等。若轴停在限位之外的区域,可用直线命令移回。

False:不开启全局软限位

如果此处为false,且开启了轴参数中的software limit功能,一旦超出限位,会导致插补通道报错。

8) Interpreter override type

编译器倍率类型

(1)Reduced

选项“减少”——基于减速过程的(默认使用)

由于相关动态参数(如:制动距离、加速度等),程序段中的速度(蓝线)不可能每段都能完全达到 。基于这个因素,为每个几何段的运动部分计算降低速度(红线)。在标准情况下,39

Override是参照这段速度。

这种速比类型的优势是,如果速比值很小,设备运作的速度呈线性降低,同时绝大部分应用都是这样设置的。

(2)Original

选项“原始”-基于程序的路径速度

此时速比值基于用户编程设定的。

40

(3)Reduced【0…>100%】

基于内部降低速度可以选择指定数值且大于100%,这种速比类型与“Reduce”模式相似。这种速比类型比在G代码程序中编程实现要更快,比如说也不限于120%。路径最大速度被Group里的G0最大速度和动态特性限制。在此模式下,如果需要限制特殊值为120%,可以在PLC中进行设置。

10) SAF cycle time divisor

SAF 周期细分

循环时间确保SAF中的设定值不是用SAF循环时间计算的,而是用时间除以这里指定的值来计算的。对于动态运动来说,需要将参数设置为大于1的值,以便于可以最小化离散化误差。增加SAF周期细分数可以频繁调用set值发生器。

11) User-defined SAF table length

用户定义SAF表格长度

该参数定义SAF表的大小,从而定义缓存的SAF条目的最大数量。如果G代码程序涉及到多个线段运动,增大SAF table长度可以有助于避免在过渡区域无法预测的速度降低问题。

1.9.3 Setting 选项卡

41

在“Setting”标签下,可以设置Group中的轴的周期时间。比如说NC轴的周期时间是2ms,但是如果Group中轴的周期是4ms,这时候可以设置Divider为2,则Group中的轴的周期时间变为4ms。这里设置的循环时间是SAF任务的循环时间的倍数。

1.9.4 Online选项卡

1)Error Code

这里显示NCI通道的错误代码。这里的错误代码和NCI编译器 “Editor”选项卡的通道状态相同。

2)SVB state

显示当前SVB状态

3)SAF state

显示当前SAF状态

1.9.5 “3D-Online”选项卡

3D-Online页面用来在调试时把NCPTP的轴添加到NCI插补通道中。与1.4.2节中介绍的CfgBulidExt3DGroup功能块相对应。

Accept Assignment 接受配置

Clear Assignment 清除配置

42

1.10 NC轴中的NCI参数

1.10.1 Rapid Traverse Velocity(G0)

当使用G0指令以PTP模式运行时,既不考虑插补配合时的轴的速度。通常用于快速定位。

43

1.10.2 Velo Jump Factor

Velo Jump Factor速度跳变因数,是轴在VeloJump过渡方式时的C0过渡的系数。关于C0过渡详见1.9.2。

VeloJump过渡方式的计算方式如下:

通常,v_link = min(v_in, v_out)。

对于轴[i],速度允许的绝对阶跃变化为v_jump[i] = C0[i] * min(A+[i], -A-[i]) * T,其中C0[i]为减速因子,A+[i], A-[i]为轴[i]的加减速极限,T为周期时间。

VeloJump跳变方式保证了路径过渡段v_link处的路径速度减小,其中轴[i]的轴设定值速度的绝对步长变化最多为v_jump[i]。

另外,如果v_link小于v_min,则将v_link设置为v_min。

1.10.3 Tolerance ball auxiliary axis

容差球(Tolerance ball)放置在每个线段过渡的转折点的周围,容差球用于消除曲线过渡段的动态性能不稳定,既加速度或者加加速度突变。为了实现平滑过渡,在容差球内轨迹可能偏离其预先设定的几何形状,但不会超出容差球。容差球的半径(参数化)是由用户预先设定的,并应用于所有的线段过渡,因此在线段过渡中没有精确的定位或停止。容差球的半径可以自动自适应复位,防止多个小线段情况下的容差球重叠。在容差球内Override无效,且加速度为0。

如下图,从A点经B点到C点的曲线过渡过程中,线段2经曲线4过渡到曲线1,其发生的形变在容差球3的范围内。

Tolerance ball auxiliary axis是为每个NCI的辅助轴设定的一个容差球。当进入该范围时,辅助轴的速度被不断修正,在范围出口达到设定的速度以避免速度的阶跃变化。

44

1.10.4 Max position deviation aux axis

“辅助轴的最大允许位置误差”只有在容差球内需要改变路径几何形状时才有效。只要产生的位置误差不超过设定值,就可以在较小的偏差范围内保持较高的路径速度。这可以保持辅助轴的速度恒定,并计算位置偏差。如果偏差小于最大位置偏差,则在这一段过渡中保持速度恒定,并在下一段过渡中补偿由此产生的位置偏差。当位置偏差超过最大偏差时,将采取措施减小偏差。

45

1.11 辅助轴的编程和速度

1.11.1 辅助轴的编程

辅助轴也可以通过CfgBulidExt3DGroup功能块进行配置。在G代码程序中使用Q1…Q5编程。

例1:(start position X=Y=Z=Q1=Q2=0)

N10 G01 X100 Q1=100 F6000

当辅助轴的运动指令伴随有插补轴的运动时,如例1。辅助轴与插补轴同时启动、同时停止,辅助轴的速度由插补轴的运动距离和F速度参数来计算。

例2:(start position X=Y=Z=Q1=Q2=0)

N10 G01 X100 F6000

N20 Q1=100 Q2=200 F3000

...

当辅助轴的运动没有伴随插补轴的运动时,如例2,由于插补轴路径长度为零,所以不存在与路径的配合,这时辅助轴的速度是根据行程距离最大的辅助轴以及F参数来计算的。而且所有的辅助轴都是同时开始,同时到达终点。

1.11.2 辅助轴的速度

辅助轴的速度限制因数主要在NC轴中的NCI参数中设置,详见1.10节。

辅助轴对路径速度的间接影响:

虽然辅助轴的运行速度由辅助轴的运行距离和XYZ插补轴的运行时间决定,但是如果这个速度大于这个辅助轴允许的最大速度,则插补轴的路径速度减小,直到达到辅助轴最高速度限制。换句话说,超过辅助轴的速度极限也会对路径速度产生间接的影响。

曲线过渡时的路径速度:

下面通过一个例子来解释路径速度的降低过程。我们以体育场的轮廓为例来做解释。假设工艺要求是使刀具的方向始终垂直于路径切线。如果站在球场轮廓上看,刀具的方向保持不变,即到具没有转动始终与球场轮廓的切线垂直。然而如果从世界坐标系的方向看,刀具方向则必须在圆内不断地改变。假设在直线和圆之间的过渡的路径速度没有降为零,那么对于旋转轴(不是路径轴)速度会产生阶跃变化。

每个轴的NC参数中都可以设置全局轴参数“VeloJumpFactor”。在本书上一章节NC轴中NCI参数中有更深入的讲解。

46

曲线过渡时的速度平滑:

如上所述,在曲线过渡过程中,会发生速度的阶跃变化,这些变换的大小会受到VeloJump参数的影响。还可以为每个辅助轴指定一个容差球(tolerance ball)。当进入该容差球时,辅助轴的速度被不断修正,在范围出口达到设定的速度。避免了速度的阶跃变化。

如果指定的容差球半径大于路径的1/3,则其半径自动限制为该值。

减少容差球对速度跳跃参数(VeloJumpFactor)的影响

如果根据给定的几何形状来减小容差球的尺寸,则自动调整VeloJumpFactor参数以适应曲线过渡,降低VeloJumpFactor会使过渡过程中的路径速度降低得更多。

减少容差球对辅助轴的最大位置偏差(Max position deviation aux axis)的影响

辅助轴的最大位置偏差只有在因位置偏差产生的几何形状变化达到容差球限制时才有效。这样做的目的是,只要产生的位置偏差不超过设定值,就可以在较小的偏差范围内保持较高的路径速度。为此,保持辅助轴的速度恒定,并计算位置误差。如果偏差小于最大位置偏差,47

则在这一段过渡中保持恒定速度,并在下一段过渡中补偿由此产生的位置误差。当位置偏差超过最大偏差时,采用VeloJumpFactor减小路径速度 以减少位置偏差。

48

1.12 平滑过渡曲线

通常,使用G01指令可以实现曲线段过渡时。在过渡时,如果路径速度没有降低到零值,折线轨迹的位置相对于它们的空间坐标不是稳定可微分的,因此导致了速度的不稳定。为了在实际应用中避免将路径速度降低到零值,可以通过对多边形函数的过渡进行平滑处理。

名称

圆弧平滑

Circular smoothing

抛物线平滑

Parabolic smoothing

类型:2

四次曲线平滑

Biquadratic smoothing

类型:3

三阶贝塞尔曲线平滑

Bezier Curve of the 3rd

Order

类型:4

五阶贝塞尔曲线平滑

Bezier Curve of the 5rd

Order

类型:5

旧贝塞尔平滑过渡 NC内核

Old Bezier Blending

类型:1

所有

NC内核 所有 恒定加速度-在起1/3输入输可选,但对始点和结束点的加速度为0 -不需要中间点

恒定加速度-在起1/4输入输始点、结束点和对称中间点处的加速度为0

出段

无 paramSplineSmoothing(…)

paramVertexSmoothing(…)

出段 于直线转换有影响

paramVertexSmoothing(…)

NC内核 所有

NC内核 直线/直线 加速度阶跃变化1/3输入输到恒定值(通过C1参数)

NC内核 直线/直线 恒定加速度-在起1/3输入输始点和结束点的加速度为0 -不需要中间点

加速度阶跃变化1/3输入输可选,但对到直线(通过C1参数)

出段 于直线转换有影响

paramVertexSmoothing(…)

出段

可选

出段

paramVertexSmoothing(…)

执行 支持的

线段转换

轴的加速度 路径最大偏离值

自适应

偏离半径

G代码名称

paramCircularSmoothing(…) 编译器 直线/直线 加速度阶跃变化1/2输入输(通过C1参数) 出段

可选 paramVertexSmoothing(…)

过渡的原则:

过渡影响转折开始前后的两个线段。最大偏离值的半径可以在G代码程序中随时改变。并可以通过设置半径为0再次关闭平滑多渡,如果不为0平滑过渡将一直保持激活状态,直到编译器重置或TwinCAT重新启动。

容差球(Tolerance Spheres):

在每个过渡线段周围都放置一个容差球,在此过渡段内,为了平滑,路径可能偏离其预先设定的几何形状。容差球的半径(参数Radius)是由用户在平滑过渡G代码中设置,意味着在段过渡中没有精确的定位或停止。容差球的半径自动自适应复位,防止小段情况下容差球重叠。

动态参数(Dynamic Parameters)

49


本文标签: 速度 代码 过渡