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循环指令的作用是使输出线圈能够重复使用,简化程序。
中断处理程序:INT_0
当变频器正向运行(由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(Q0.1)、K3(Q0.2)、K4(Q0.3)全部复位断开,变频器立即停止运行。同时,发出终点到达信号M0.1,让子程序SBR_1处理停顿2s时间,并由SBR_1处理反向运行设置。
当变频器反向运行(由SM36.5判断,减计数为反向运行,SM36.5=0),高速计数器当前值等于3822(200mm)时,继电器K3(Q0.2)断开、K4(Q0.3)接通,变频器速度设定为低速反向爬行行驶(第三速度)。同时将高速计数器预置值更改为0。
当变频器反向运行(由SM36.5判断,减计数为反向运行,SM36.5=0),高速计数器当前值等于0时,表明变频器返回到达原点。继电器K1(Q0.0)、K2(Q0.1)、K3(Q0.2)、K4(Q0.3)全部复位断开,变频器立即停止运行。同时,发出原点到达信号M0.0,让子程序SBR_1处理停顿2s时间,并由SBR_1处理正向重新运行设置。
本文创新点:
往返式传动控制系统的多点定位是一个较难解决的问题,本系统采用PLC作为控制器,通过变频调速,利用光电编码器和PLC高速计数器进行定位控制,克服了往返式传动控制系统中由于机械惯性的作用给系统带来的定点误差,从而实现了精确定位。
参考文献:
[1] SIMATIC S7-200 可编程序控制器系统手册和用户手册.1999.
[2] 方承远,工厂电气控制技术[M].北京:机械工业出版社,1992.7.
[3] 胡幸鸣,戴一平.基于PLC 技术的组合机床改造[J].微计算机信息,2006,7-1:32-38