完整版 共11页 可下载到电脑阅读
http://baclizzy.com.cn/97TutorialA5/03Nci/Ch01/0100Overview.pdf
1 TwinCAT NC I系统概述
运动控制的功能分类:按联动关系可以分为单轴点位运动、主从跟随运动、多轴插补运动。最简单的单轴点位运动就是控制电机匀速运动、绝对定位、相对定位,再复杂一点就是模长内定位、用外部位置发生器控制电机走一个自定义的位置曲线。最简单的主从联动是速度跟随和位置跟随,力矩跟随也算一种跟随,但不是标准的运动控制功能,要通过PLC编程实现。速度跟随就是电子齿轮(Gear),位置跟随就是电子凸轮(CAM),在速度跟随、位置跟随、力矩跟随的基础上,针对专门的应用场合,又开发了飞剪、飞锯、张力控制等功能,用到具体的设备上,又常用工艺表达为:横切、纵切、旋切、收放卷控制等等。
单轴点位运动和主从跟随运动用TwinCAT NC PTP都可以实现,而插补联动就必须使用TwinCAT NCI或者TwinCAT CNC才能实现。TwinCAT NC I中的“I”,就是Interplation(插补)的首字母。这里所说的插补联动,是指插补轴的运动方向在空间上有正交关系,比如X、Y、Z轴,并且在机械上已经安装成一个整体。运动控制的目标不再是单个轴的终点位置,而是运动机构在空间上的坐标轨迹。在三维空间里,最简单的轨迹是一维线段,比如只在X方向移动一段距离。最常用的是二维平面上的线段,比如XY平面上一定斜率的直线段,以及二维平面上的圆和圆弧。直线和圆弧可以构成平面上任意的图形。TwinCAT NCI 可以实现3轴插补,实现运动机构在空间上任意的坐标轨迹,最常用的是螺旋插补,比如:XY轴做圆弧插补的同时,Z轴上下移动,就会在空间上形成一个螺旋轨迹。
1.1 插补通道
TwinCAT NCI做插补运动时,是完全基于TwinCAT NC PTP的,所有轴的物理层都是在PTP轴中配置的,而它们在PLC程序中的接口仍然是类型为Axis_Ref的变量。所以PTP控制中的3个轴类型:PLC轴、NC轴、物理轴在NC I中仍然适用,TcMc2.lib中的所有功能块也仍然适用于这些轴。
TwinCAT NC I是作为一种PTP轴的联动关系来定义和使用的。建立联动关系之前,每个轴可以独立运动。如果联动关系是运动方向在空间上的正交关系,比如机械上已经安装成一个整体,一个轴控制X方向的运动 ,另一个轴控制Y方向的运动,另一个轴控制Z方向的运动。为了控制这个机构的整体运动,专门建立一个NC IChannel即插补通道作为它的模型,也就是软件上的控制对象。换句话说,与TwinCAT NC PTP中建立一个NC轴作为伺服电机的控制对象一样,TwinCAT NC I 中建立一个NC I插补通道作为三维正交联动机构的控制对象。
一个NC I插补通道可以最多包含3个插补轴,5个辅助轴。3个插补轴的运动方向在空间上存在正交关系,通常命名为X、Y、Z轴,进给速度就是指这三个轴的合成速度(没有正交关系的轴是无法确定合成速度的)。5个辅助轴与进给轴之间没有严格的空间关系,需要同时达到预定位置的其它轴,可以添加到NC I通道中作为辅助轴控制。
TwinCAT NC I可以包含多少个插补通道呢?理论上,只要所有PTP轴、NCI通道、其它通道的总数不超过255即可。假如每个NCI 通道都只有XY两轴插补,没有辅助轴,那么理论上可以有170个PTP轴和85个插补通道。假如每个NCI通道有3个插补轴,5个辅助轴,理论上可以有224个PTP轴和28个插补通道。实际上,一个机床上当然不会有这么多需要联动机构。
TwinCAT NC PTP把一个电机的运动控制分为三层:PLC轴、NC轴和物理轴。而TwinCAT NC I把一个联动机构的控制分为三层:PLC插补通道、NCI插补通道、NC PTP轴。
1.2 PLC控制NCI插补通道的几个途径
ADS接口:PLC通过ADS接口可以控制NCI插补通道:
组建插补通道、解散插补通道
装载G代码文件到插补通道
插补运动的启动、停止、复位
读取缓存的插补指令数量及其它标记
PLCTONC:每个PLC周期更新NCI通道的控制信号,比如实现倍率修改;
NCTOPLC:每个PLC周期更新NCI通道的状态,包括通道状态,故障代码,当前进给速度,正在运行的插补指令编号等信息。
R参数:可以从PLC读写的浮点型参数,在G代码中也可以使用和设置R参数。
M函数:在NCI 通道运动控制中触发的Bool型状态变量。PLC可以读取它的状态。
1.3 插补指令的两种形式
让一个插补通道运动之前,必须定义好,它的X、Y、Z轴分别对应哪个PTP轴,然后就可以控制它运动了。我们可以让它执行哪些运动呢?比起PTP轴,NCI通道能够执行插补运动种类极少:仅包含直线、圆弧、螺旋三种,甚至螺旋都很少用。每一个插补运动指令都必须配有对应的参数,比如直线插补指令包含终点坐标和进给速度,而圆弧插补指令包含圆心、半径、弧长或者终点坐标等参数。
如前所述,插补运动控制的目标不再是单个轴的终点位置,而是运动机构在空间上的坐标轨迹。换句话说,插补运动要求机构到达某个空间位置,但可能并不要求它在那个位置停下来,对于连续加工来说,最好能够保持进给速度的稳定。所以插补指令不能给一条,执行一条,必须有相当的Buffer,才能预读或者前瞻。在前一条指令未结束时,其实后一条指令的路径规划已经完成了,才可能让运动连贯。
TwinCAT NCI支持两种形式的插补指令:G代码文件和FeedTable。可以从数据流向来理解二者的区别:
执行G代码文件的方式:
执行FeedTable单条指令填充的方式:
1.3.1 G代码
G代码文件是苦干行G代码的集合,而每一行G代码就是一个动作命令。G代码有一套规范,常用的是G指令和M指令。最简单的直线插补指令G01,圆弧插补指令G02/G03。
TwinCAT NCI 包含了G代码预读器,在执行行G代码文件的时候,NCI会预读G代码行,结合插补通道内每个轴的当前位置,分解出每个轴接下来在每个控制周期的设置位置。
G代码文件以.nc为后辍名,可以用记事本编辑,一个最简单的G代码文件如下图所示:
说明:新建G代码文件如果格式不方便写入,可以用示例G代文件来修改。
图中每行的第1列,比如N10、N15,表示行号。这个不是必须的,但是行号可以增加可读性。行号还有其它辅助用途,这里就不细细展开了。
G90 是坐标切换指令,与G91是一对互锁提令。G90表示切换到绝对坐标,G91表示切换到相对坐标。如果G代码中从来没有出现G90或者G91,默认使用绝对坐标。
S499 表示主轴速度499mm/min,在NCI中因为插补通道并没有主轴,实际上这个值是从Proess Data插补通道的过程变量NCItoPLC中的一个变量传递经PLC程序。PLC程序再用它来控制主轴(PTP轴)的速度。只有机加工的设备才有主轴速度,如果是激光切割或者其它简单走个路线的插补,就没有主轴这个概念,也就无须S指令了。
G01 这是最简单的直线插补指令,G01X80 Y80 F600的意思是说,下一个目标位置是X80,Y80,进给速度是600mm/min。有兴趣的读者可以试算一下,如果当前位置分别是X0,Y0及X200,Y0时,接下来X和Y轴的速度分别应该是多少。注意F600表示进给速度,在G代码中出现下一个Fxxx改变进给速度之前一直有效。
M3、M4、M5 这是自定义的M指令。当M指令与插补运动指令写在同一行时,需要在NCI 通道参数中先设置好,是运动之前还是运动之后触发M函数,以及它的复位机制。假定M4的属性为AM(After Motion)的Hankshake型,M4 G01 X100 Y100,表示插补轴运动到X100,Y100的坐标位置后,M4状态为TRUE,插补通道的运动就暂停在这一行。这时PLC就得知M4的状态,根据PLC代码执行相关的逻辑,并复位M4函数。插补通道在M4函数复位后再继续下一行G代码的运动。
M30 G代码规范约定的结束指令。
在PLC程序中,将PTP轴组合进NCI 插补通道之后,装载G代码文件时只要确定G代码文件的路径和要装入的插补通道,然后就可以发启动命令让通道内各轴逐行执行G代码了。我们将在第6章详细介绍G代码的规则。
1.3.2 FeedTable
FeedTable与G代码的区别是,插补指令不是写在G代码文件中,而是从PLC程序临时填入插补指令表。可以填入插补指令表的指令与G代码文件中的指令类型大致相当,也包括直线插补、圆弧插补、M指令等等,但不再出现G01、G02等字样,而是以插补指令的类型枚举值来区分。
可以理解为,NCI自带一个G代码解释器,装载G代码文件后,解释器就把它分解了一个一个的插补指令。
而使用FeedTable的时候,不是用G代码解释器,而是从PLC程序通过功能块FB_NciFeedTable往NCI的执行区(SAF Entry)里填充指令。对于熟悉PTP中的TwinCAT NCFifo的用户,这点比较容易理解。
1.4 M函数:插补运动与逻辑动作的协调
M指令是在G代码文件执行过程中需要触发的开关状态。这个开关状态可以是自恢复的,也可以是等待PLC确认恢复的。如果是自恢复的,插补运动在M代码行只是通知给PLC的M涵数状态为True,动作继续执行。如果是等待PLC确认才能恢复的,插补运动在M代码行通知给PLC的M函数状态为True,插补运动就会停下来,PLC收到M函数为True之后执行相应的动作,动作完成后复位M函数,才继续下一行M指令。
NCI通道用到哪些M函数,分别是什么类型,需要在NCI配置文件中事先定义,否则系统默认为需要等待的M函数。如果是MFast型的,即自恢复型,那么它在什么时间恢复,也是可以设置的。
注意:在国际标准中,有一些M函数是有固定用途的,比如M30用于G代码结束。
1.5 R参数:NC I通道与PLC的浮点数接口
在G代码中,表达一个插补运动指令时,在给终点坐标位置或者进给速度的时候,可以用常量,也可以用变量。如果使用变量,并且希望这个变量可以在PLC程序中访问,就可以使用R参数。
每个通道都有R0-R44共45个R参数。R参数都是实数型的,可以在G代码中赋值,也可以在PLC程序中通过功能块写入或者读取。所以可以把R参数作为NC I通道与PLC程序的浮点数接口,只不过它不是每个PLC周期刷新的。
(后续章节为程序实现的操作细节,稍后以PDF形式贴出) |