S7系列PLC电气控制设计与应用第5讲 S7-200在定长切割中的应用
2013-08-18李方园
1 前言
在运动控制中的大量场合,输入的都是一些高速脉冲信号,如光电编码器信号,这时候PLC可以使用高速计数器功能对这些特定的脉冲量进行加减计数,来最终获取所需要的工艺数据(转速、角度、位移等)。从硬件角度来讲,PLC都会内置一些端口用于高速脉冲输入,其结构与普通的数字量不同。从软件角度来讲,PLC都会采用特殊的高速计数器指令,来进行中断处理。
2 定长切割的硬件设计
图1所示是用于片材或带材定长切割的应用案例。待切材料从左向右随牵引电机前行,光电编码器信号用来测量牵引过的长度,待牵引长度达到预先设定的数值时,电机制动且切刀动作,即实现定长切割。
图1 定长切割
PLC作为定长切割控制的核心,主要对牵引长度进行计算和对切刀进行控制。根据工艺流程图,可以转换为图2所示的定长切割电气图。
图2 定长切割电气图
由图2可以得出定长切割控制的I/O资源分配(如表1所示)。
表1 I/O资源分配
由于光电编码器(通常是5~12V)与PLC输入信号(24V)经常不一致,建议使用高速光耦转换器进行电平转换。
3 定长切割的软件编程
(1)HSC向导编程
在S7-200编程环境中,选择菜单命令工具(T)> 指令向导HSC;或点击浏览条中的指令向导图标,然后选择 HSC;或打开指令树中的“向导”文件夹并随后打开HSC向导。
☆ 选择计数器类型和操作模式
从图3的列表框(根据 PLC)选择须配置的计数器,从列表框选择操作模式,根据选择的计数器决定它可用的模式。
图3 选择计数器类型和操作模式
☆ 指定初始参数
如图4所示的初始化参数包括:向导为子程序指定一个默认名称,用户也可以指定一个不同的名称,但请勿使用现有子程序名称;为计数器 CV 和 PV 指定一个双字地址、全局符号或整数常数;指定初始计数方向。
☆ 程序中断事件/编程多步操作
计数器类型和操作模式选择决定可用的中断事件。当用户选择对当前数值等于预置值事件(CV = PV)进行编程时,向导允许指定多步计数器操作,如图5所示。
图4 指定初始参数
图5 程序中断事件/编程多步操作
☆ 生成代码
完成 HSC 参数配置后,可以检查计数器使用的子程序/中断程序列表。在点击“完成”按钮后,允许向导为 HSC 生成必要的程序代码。代码包括用于高速计数器初始化的子程序。另外,为用户选择编程的每一个事件生成一个中断程序。对于多步应用,则为每一个步生成一个中断程序。当然要使能计数器操作,必须从主程序中调用包含初始化代码的子程序,如使用 SM 0.1 或沿触发指令确保该子程序仅被调用一次。
(2)高速计数器设置的相关步骤
从定长切割的电气图中可以看出,这里选用的是A/B相正交计数器,它可以选择模式9、10或11,对于该模式,可以按照以下步骤来进行:
☆使用首次扫描内存位调用执行初始化操作的子程序。因为使用子程序调用,随后的扫描不再调用子程序,因此可减少扫描时间执行并使程序结构更条理化。
☆在初始化子程序中,根据所需的控制操作载入SMB47。
例如(1x 计数模式),即设SMB47 = 16#FC产生下列结果:启用计数器、写入新当前值、写入新预设值、设置HSC初始方向、向上计数、将起始和复原输入设为现用水平高。
又如(4x计数模式):即设SMB47 = 16#F8产生下列结果:启用计数器、写入新当前值、写入新预设值、设置初始HSC方向、向上计数、将起始和复原输入设为现用水平高。
☆执行HDEF指令,HSC输入设为1,无外部复原或起始的MODE(模式)输入设为9,有外部复原但无起始设为10,有外部复原和起始设为11。
☆用所需的当前值载入SMD48(双字尺寸数值)(载入零可加以清除)。
☆用所需的预设值载入SMD52(双字尺寸数值)。
☆为了捕获当前值等于预设值,将CV=PV中断事件(事件13)附加于中断例行程序中,为中断编程。
☆为了捕获方向改变,将方向改变中断事件(事件14)附加于中断例行程序中,为中断编程。
☆为了捕获外部复原事件,将外部复原中断事件(事件15)附加于中断例行程序中,为中断编程。
☆执行全局中断启用指令(ENI),启用中断。
☆执行HSC指令,使S7-200为HSC1编程。
☆退出子程序。
(3)定长切割的具体程序
定长切割的主程序、子程序和中断程序具体如图6~图8所示。
图6 定长切割主程序
图7 定长切割子程序
图8 定长切割中断程序
4 结束语
在S7-200中,可以使用高速计数器定义指令来定义计数器的模式和输入,同一个输入点不能用于两个不同的功能,但是任何一个没有被高速计数器的当前模式使用的输入点,都可以被用作其他用途。
[1] 李方园. 自动化综合实训教程[M].北京:科学出版社,2011.
[2] 李方园. 零起点学西门子S7-200 PLC[M].北京:机械工业出版社,2012