STEP7中实现“方波发生器”的方法有很多,通常可解忧定时器来实现。下面,我们以“脉冲定时器S_PAUSE”加以说明。 一、脉冲定时器 S_PAUSE S_PAUSE在STEP7中称为“脉冲定时器”,其时序图如图1所示。 图1 S_PAUSE的时序逻辑 由图1可知,S_PAUSE定时器有以下几个特点: 1、复位优先,无论定时器处于何种状态,R端检测到上升沿信号,定时器会被复位;且当R端为“1”时,无论S端什么状态,定时器都不会投入工作。 2、定时器通过S端的上升沿信号触发计时功能,S端恒定的“1”信号不会使定时器工作。 3、“短”者为尊。定时器开始计时后,S端“1”状态的持续时间t和TV端定义的定时器计时时间T,输出端Q会跟随二者之间“持久性”短的那个变化。 S_PAUSE定时器的逻辑特性,决定了其多用于现场设备的限时动作。TV端给定的时间决定了由该定时器驱动的设备一段时间内最长的工作时间。因此,S_PAUSE可用于设备的辅助性限位控制(主要由限位开关控制)以及某些设备的动作精度辅助控制。 二、方波发生器 所谓的方波,即输出如图2所示的波形。 图2 方波 用两个S_PAUSE定时器即可组成一个方波发生器,如图3、图4所示。(驼子将方波发生器写在一个单独的FC中,其中u_time、l_time以及out1均为该FC块的形式参数,在程序调用时赋值以实际参数即可)。 图3 方波发生器,输出低电平 图4 方波发生器,输出高电平 其工作原理如下: 1、假设初始时#out1=0,则PLC上电瞬间,T7的S端检测到上升沿信号,T7开始计时,其Q端输出为“1”; 2、T7计时结束后,其Q端由“1”变为“0”,其取反后作为T8的S端信号,则此时T8的S端检测到上升沿信号,T8开始计时,同样其Q端输出为“1”,并赋值给#out1; 3、T8计时结束后,#out1由“1”变为“0”,则T7再次检测到上升沿信号,计时器开始工作; 4、如此往复,循环不断。当T7工作时,#out1=0;当T8工作时,#out1=1;适当的设定T7、T8的定时器初始值,(即u_time、l_time),即可产生不同周期、不同占空比的方波信号。 这里,只介绍了一种“方波发生器”的实现方法,还有很多其他办法:如利用系统的时钟存储器、计数器、循环中断等都可以编写出“方波”来。