信号状态发生变化时就产生跳变沿。当从0变到1时,产生一个上升沿(或正跳沿);若从1变到0,则产生一个下降沿(或负跳沿)。跳变沿检测的原理是:在每个扫描周期中把信号状态和它在前一个扫描周期的状态进行比较,若不同则表明有一个跳变沿。因此,前一个周期里的信号状态必须被存储,以便能和新的信号状态相比较。 自动控制网www.eadianqi.com版权所有 S7中有两类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点跳变沿直接检测的梯形图方块指令。具体内容见表1。 自动控制网www.eadianqi.com版权所有 表1 跳变沿检测指令 本文来自www.eadianqi.com
自动控制网www.eadianqi.com版权所有 图1所示是使用RLO正跳沿检测指令的例子。若CPU检测到输入I1.0有一个正跳沿,将使得输出Q4.0的线圈在一个扫描周期内通电。对输入I1.0常开触点扫描的RLO值存放在存储位M1.0中。 本文来自www.eadianqi.com
本文来自www.eadianqi.com 图1 RLO正跳沿检测 本文来自www.eadianqi.com
在扫描周期中,CPU对I0.0信号状态进行扫描并形成RLO值,若该RLO值是1而存放在M1.0中的上次RLO值是0,则说明FP指令检测到一个RLO的正跳沿,那么FP指令把RLO位置1;如果RLO在相邻的两个扫描周期中相同(全为1或0),那么FP指令把RLO位清零。同样,如果FN指令检测到一个RLO的负跳沿,那么FN指令把RLO位置1;如果RLO在相邻的两个扫描周期中相同,那么FN指令把RLO位清零。 本文来自www.eadianqi.com 需要注意的是,FP和FN检测到的是在RLO中表现出的变化,而不是触点的状态变化(图2中是特例)。因为一般情况下,RLO可能由一个逻辑串形成,并不单独与某触点的状态直接相关。若需要在逻辑串中单独检测某触点的跳变沿,可使用对触点跳变沿直接检测的梯形图方块指令。图2所示是使用单独检测触点负跳沿的例子。图中,由〈位地址1〉给出需要检测的触点编号(I0.3),〈地址2〉(M0.0)用于存放该触点在前一个扫描周期的状态。 本文来自www.eadianqi.com
本文来自www.eadianqi.com 图2 触点负跳沿检测 自动控制网www.eadianqi.com版权所有 执行触点正跳沿检测指令时,CPU将〈位地址1〉的当前触点状态与存在〈地址2〉中的上次触点状态相比较,若当前为1上次为0,表明有正跳沿产生,则输出Q置1;否则输出Q被清零。对于触点负跳沿指令,若当前为0上次为1,则输出Q置1,否则输出Q被清零。由于不可能在相邻的两个扫描周期中连续检测到正跳沿(或负跳沿),因此,输出Q只可能在一个扫描周期中保持为1(单稳输出)。 自动控制网www.eadianqi.com版权所有
|