1 引言
在很多往返式传动控制系统中,涉及到多点定位。在不同的定位点启动不同的机械动作。如图1所示的龙门刨床的机械传动示意图。
如图1所示,传动系统从原点启动,中速行驶到1000mm,开始高速行驶,高速行驶到3000mm,开始低速爬行,低速爬行到终点(3200mm)停车。停顿2s。反向高速行驶,高速行驶到距原点200mm处开始低速爬行。到达原点停车,停顿2s后重新开始往返。在原点和终点的低速爬行的目的是为了避免系统惯性带来的定点误差,做到原点和终点的精确定位停车。
图1 龙门刨床的传动示意图
2 系统组成
速度的调节采用变频器,定位控制采用光电编码器和PLC高速计数器精确定位。如图(2)所示变频器和PLC接线图。
图2(a)PLC接线图
图2(b) 变频器接线图
变频器的正反转由继电器KA1、KA2两个触点控制(对应PLC输出点Q0.0、Q0.1),速度的切换由继电器KA3、KA4触点完成(对应PLC输出点Q0
变频器具有多段速度设定功能,当KA3、KA4两个触点都断开时,高速行驶(第一速度);KA3闭合,KA4断开时,中速行驶(第二速度);KA3断开,KA4闭合时,低速行驶(第三速度);KA3、KA4都闭合时,手动调节行驶(第四速度)。
旋钮SF1(I0.1)用于手动/自动切换,并用指示灯HG1(Q0.4)表示自动状态。手动时,能够通过按钮SA1(电机正转)和SA2(电机反转)手动调节传动系统的位置。
按钮SA(I0.2)用于传动系统在自动状态下的启动/停止控制。采用"一键开关机"方式实现启动/停止控制,用指示灯HG2(Q0.5)表示启动状态。
行程开关SQ(I0.5)用于自动启动时,确定传动系统在原点位置,自动停止时,传动系统必须返回原点。行程开关SQ1(I0.6)、SQ2(I0.7)用于传动系统的两端限位,确保传动系统不能脱离设备。
3 PLC程序流程图
自动运行程序:SBR_1,如图3所示。
图3 自动运行程序
中断处理程序:INT_0,如图4所示。
图4 中断处理程序
4 关键技术
(1) 高速计数器中断和预置值的多次更改实现多点定位实现多点定位控制的关键包括两点,第一点是设置高速计数器中断事件12(计数器当前值=计数器预置值),另一点就是在中断处理程序中更改高速计数器预置值。
定位控制需要确定定位点与原点的距离,以此确定定位点。
测量设备运行距离,需要将单位距离(mm)转换成脉冲量,通过光电编码器和PLC高速计数器记录脉冲量的变化。
光电编码器的机械轴和电动机同轴。传动比=10,用于驱动设备的传动棍直径=100mm,光电编码器每转脉冲数=600个。可以计算出每毫米距离的脉冲数为:
每毫米距离的脉冲数
=600÷(10×100×3.14)≈0.19108脉冲/mm
定点位和预置值比较,必须采用高速计数器中断方式,而不能采用一般的比较指令。因为一般的比较指令无法捕捉高速变化的事件。
所以,必须通过ATCH和ENI指令将高速计数器中断事件号12(计数器当前值=计数器预置值)与中断处理程序INT_0连接。在中断处理程序INT_0中,到达预置值时,重新装载下一次的预置值,并执行工艺要求的继电器输出,处理变频器的运行速度。
在自动子程序SBR_1中,将高速计数器HC0设置为单相计数输入,取消外部控制功能。在原点和终点通过更改计数方向,便于中断处理程序INT_0判断变频器的运行方向。
(2) 在中断处理程序INT_0中不能使用等于比较指令
由于在一个中断处理程序INT_0中判断处理多个预置值。需要比较指令和计数方向来判断目前高速计数器计数当前值在哪个阶段,根据判断来决定执行那一段指令。但是,判断不能使用等于比较指令,应该使用大于或小于指令判断。
尽管中断事件(计数器当前值=计数器预置值)发生时,PLC立即中断当前主程序、子程序,执行中断处理程序INT_0中的指令。但是,在中断处理程序INT_0中,PLC仍然是按照逐条逐行的扫描机制执行。而高速变化的计数值不可能和中断处理程序执行同步,如果采用等于比较指令,PLC在执行中断处理程
序时,可能会错过等于值,使PLC在中断处理程序中无法判断设备运行到哪个阶段。(3) 在自动运行时,高速计数器的初始值寄存器写入必须禁止由于多点定位需要多次装载预置值,写入预置值必须执行HSC指令。
执行HSC写入指令,不单单是写入预置值,如果在控制字节中不加以限制,初始值寄存器SMD38中的值同样写入。而SMD38=0,这样,就会使高速计数器计数当前值置0。因此,在自动运行时,必须设置控制字节SMB37的第七位SM37.6为0,在装载预置值时,禁止写入初始值。
但是,在高速计数器初始设置和返回原点重新开始运行时,又必须写入初始值,使初始值置0,避免机械原因带来的误差。因此,控制字节必须多次修改。遵循的原则是:允许写入初始值、执行HSC指令后,必须马上修改控制字节,禁止初始值写入,并再次执行HSC指令,中间不能有其它指令存在。因为,PLC是逐条逐行执行指令,中间没有其它指令,就不会产生不必要的影响。
(4) 多点定位的输出线圈尽量采用立即指令
采用高速计数器进行多点定位,主要为了精确定位。定位精度既决定于高速计数器的测量,同时也决定于执行机构的执行快速性
如果采用普通输出指令,在一个扫描周期的程序执行阶段,改变的仅仅是输出映像存储器,PLC的输出点不会立即刷新,只有在程序执行完毕后,PLC的输出映像存储器才能对输出点刷新,执行输出。
为了增加定位精度,尽量采用立即输出指令。立即输出指令不受PLC扫描周期阶段的限制,在改变输出映像存储器的同时,立即刷新PLC输出点。
(5) 自动/手动程序采用For-Next循环指令和子程序指令实现
因为具有自动/手动功能。自动/手动程序采用For-Next指令和子程序指令。自动程序和手动程序实际上就是两个循环指令的循环体。而循环指令仅执行一次循环扫描刷新。
手动子程序SBR_0和自动子程序SBR_1用于整个程序的分段,便于程序的理解,增加程序的可读性。
For-Next循环指令的作用是使输出线圈能够重复使用,简化程序。因为,两个循环指令的执行由旋钮SF(I0.1)控制,不可能同时执行,循环体内的程序不能同时扫描刷新。这样,就可以使输出线圈重复使用,没必要采用中间变量的转换,大大简化了程序的编制。
单单采用子程序或跳转指令也可以实现输出线圈的重复使用,但是,在子程序的切换和跳转指令的布置上非常繁琐。
采用For-Next指令和子程序结合方法,就可以避免切换繁琐,在各自的子程序中编制程序,完全不必要考虑对方的程序,作为一个独立实体编制。这种方法唯一的缺点就是各自的初始化编程有重复,但不会影响设备运行。
5 结束语
机械装置的高精度多点定位问题广泛存在于加工业及制造业的控制系统中,本文所介绍的系统结构紧凑,安全可靠,十分实用。