利用光电编码器和PLC高速计数器进行定位控制 联系客服

发布时间 : 星期五 文章利用光电编码器和PLC高速计数器进行定位控制更新完毕开始阅读97355b2553ea551810a6f524ccbff121dd36c507

利用光电编码器和PLC高速计数器进行定位控制

在往返式传动控制系统中,很多时候都会涉及到多点定位问题。即要求在不同的定位点启动不同的机械动作。但由于机械惯性的作用,常常会给系统带来定点误差。本系统以龙门刨床的机械传动为例,采用plc作为控制器,通过变频器调节速度,利用光电编码器和plc高速计数器进行定位控制,从而实现精确定位。

变频器;plc;高速计数器;光电编码器

1 龙门刨床的机械传动控制要求

图1所示的龙门刨床的机械传动示意图。传动系统从原点启动,中速行驶到1000mm,开始高速行驶,高速行驶到3000mm,开始低速爬行,低速爬行到终点(3200mm)停车。停顿2s。反向高速行驶,高速行驶到距原点200mm处开始低速爬行。到达原点停车,停顿2s后重新开始往返。在原点和终点低速爬行的目的是为了避免系统惯性带来的定点误差,做到原点和终点的精确定位停车。

2 龙门刨床机械传动的plc控制系统硬件设计

2.1 系统对变频器的控制要求

变频器的正反转由继电器k1、k2控制,速度的切换由继电器k3、k4完成。变频器故障报警输出触点(30a、30c触点)用于立即停止高速计数器运行,并由指示灯hr指示。

变频器具有多段速度设定功能,当k3、k4两个继电器触点都断开时,高速行驶(第一速度);k3闭合,k4断开时,中速行驶(第二速度);k3断开,k4闭合时,低速行驶(第三速度);k3、k4都闭合时,手动调节行驶(第四速度)。

旋钮sf用于手动/自动切换,并用指示灯hg1表示自动状态。手动时,能够通过按钮sa1(电机正转)和sa2(电机反转)手动调节传动系统的位置。

按钮sa用于传动系统在自动状态下的启动/停止控制。采用“一键开关机”方式实现启动/停止控制,用指示灯hg2表示启动状态。

行程开关

sq用于自动启动时,确定传动系统在原点位置,自动停止时,传动系统必须返回原点。行程开关sq1、sq2用于传动系统的两端限位,确保传动系统不能脱离设备。

2.2 plc系统硬件系统的构成及连接

为了实现对龙门刨床机械传动的精确定位,本系统采用plc作为控制器,通过变频器进行速度调节,采用光电编码器和plc高速计数器进行定位控制。根据龙门刨床的机械传动控制要求,系统中有开关量输入点8个,开关量输出点7个,光电编码器a相输入一个,因此选用siemens的cpu224作为控制器,其i/o点的分配及系统接线如图2所示。

3 plc梯形图程序的设计

plc的梯形图程序设计包含主程序(用于实时调用手动子程序sbr_0和自动子程序sbr_1)、子程序sbr_0(用于实现对系统的手动控制)和sbr_1(用于实现对系统的自动控制)和中断处理程序int_0程序(用于处理高速计数器计数当前值到达不同预置值的处理)。由于篇幅所限,以下将以中断处理程序int_0程序为例,说明变频器对速度的控制和调节。其梯形图如下。

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判断变频器的运行方向。

4.2 在中断处理程序int_0中不能使用等于比较指令

由于在一个中断处理程序int_0中判断处理多个预置值。需要比较指令和计数方向来判断目前高速计数器计数当前值在哪个阶段,根据判断来决定执行那一段指令。但是,判断不能使用等于比较指令,应该使用大于或小于指令判断。

尽管中断事件(计数器当前值=计数器预置值)发生时,plc立即中断当前主程序、子程序,执行中断处理程序int_0中的指令。但是,在中断处理程序int_0中,plc仍然是按照逐条逐行的扫描机制执行。而高速变化的计数值不可能和中断处理程序执行同步,如果采用等于比较指令,plc在执行中断处理程序时,可能会错过等于值,使plc在中断处理程序中无法判断设备运行到哪个阶段。

4.3 在自动运行时,高速计数器的初始值寄存器写入必须禁止

由于多点定位需要多次装载预置值,写入预置值必须执行hsc指令。

执行hsc写入指令,不单单是写入预置值,如果在控制字节中不加以限制,初始值寄存器smd38中的值同样写入。而smd38=0,这样,就会使高速计数器计数当前值置0。因此,在自动运行时,必须设置控制字节smb37的第七位sm37.6为0,在装载预置值时,禁止写入初始值。

但是,在高速计数器初始设置和返回原点重新开始运行时,又必须写入初始值,使初始值置0,避免机械原因带来的误差。因此,

控制字节必须多次修改。遵循的原则是:允许写入初始值、执行hsc指令后,必须马上修改控制字节,禁止初始值写入,并再次执行hsc指令,中间不能有其它指令存在。

4.4 多点定位的输出线圈尽量采用立即指令

采用高速计数器进行多点定位,主要为了精确定位。定位精度既决定于高速计数器的测量,同时也决定于执行机构的执行快速性。

如果采用普通输出指令,在一个扫描周期的程序执行阶段,改变的仅仅是输出映像存储器,plc的输出点不会立即刷新,只有在程序执行完毕后,plc的输出映像存储器才能对输出点刷新,执行输出。

为了增加定位精度,尽量采用立即输出指令。立即输出指令不受plc扫描周期阶段的限制,在改变输出映像存储器的同时,立即刷新plc输出点。

4.5自动/手动程序采用for-next循环指令和子程序指令实现

本系统中的自动/手动功能通过采用for-next指令和子程序指令实现。自动程序和手动程序实际上就是两个循环指令的循环体。而循环指令仅执行一次循环扫描刷新。

手动子程序sbr_0和自动子程序sbr_1用于整个程序的分段,便于程序的理解,增加程序的可读性。for-next循环指令的作用是使输出线圈能够重复使用,简化程序。

当变频器正向运行(由sm36.5判断,增计数为正向运行,sm36.5=1),高速计数器当前值等于19108(1000mm)时,继电器k3(q0.2)、k4(q0.3)断开,变频器速度设定为高速正向行驶(第一速度)。同时将高速计数器预置值更改为57325(3000mm)。

当变频器正向运行,高速计数器当前值等于59325(3000mm)时,继电器k3(q0.2)断开、k4(q0.3)接通,变频器速度设定为低速正向爬行行驶(第三速度)。同时将高速计数器预置值更改为61146(3200mm)。

当变频器正向运行,高速计数器当前值等于61146(3200mm)时,表明达到终点,继电器k1(q0.0)、k2