简介位逻辑指令处理的对象为二进制位信号。位逻辑指令扫描信号状态“1”和“0”位,并根据布尔逻辑对它们进行组合,所产生的结果(“1”或“0”)称为逻辑运算结果,存储在状态字的“RLO”中。 触电与线圈 在LAD(梯形图)程序中,通常使用类似继电器控制电路中的触点符号及线圈符号来表示PLC的位元件,被扫描的操作数(用绝对地址或符号地址表示)则标注在触点符号的上方,如图所示。 常开触点 对于常开触点(动合触点),则对“1”扫描相应操作数。在PLC中规定:若操作数是“1”则常开触点“动作”,即认为是“闭合”的;若操作数是“0”,则常开触点“复位”,即触点仍处于打开的状态。常开触点所使用的操作数是:I、Q、M、L、D、T、C。 常闭触点 常闭触点(动断触点)则对“0”扫描相应操作数。在PLC中规定:若操作数是“1”则常闭触点“动作”,即触点“断开”;若操作数是“0”,则常闭触点“复位”,即触点仍保持闭合。常闭触点所使用的操作数是:I、Q、M、L、D、T、C。 输出线圈 输出线圈与继电器控制电路中的线圈一样,如果有电流(信号流)流过线圈(RLO=“1”),则被驱动的操作数置“1”;如果没有电流流过线圈(RLO=“0”),则被驱动的操作数复位(置“0”)。输出线圈只能出现在梯形图逻辑串的最右边。输出线圈等同于STL程序中的赋值指令(用等于号“=”表示),所使用的操作数可以是:Q、M、L、D。 基本逻辑关系基本逻辑指令包括: u“与”指令 u“与非”指令 u“或”指令 u“或非”指令 u“异或”指令 u“异或非”指令 u 信号流取反指令 逻辑“与”指令 逻辑“与” 指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑“与” 运算。 、 逻辑“与非”指令 逻辑 “与非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑 “与非”运算。 逻辑“或”指令 逻辑 “或”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑 “或”运算。 逻辑“或非”指令 逻辑 “或非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑 “或非”运算。 逻辑“异或”指令 逻辑“异或非”指令 信号流取反指令 信号流取反指令的作用就是对逻辑串的RLO值进行取反。指令格式及示例见下表。当输入位I0.0和I0.1同时动作时,Q4.0信号状态为“0”;否则,Q4.0信号状态为“1”。 置为和复位指令 使用置位指令时,如果RLO=1,则指定的地址被置为1,而且一直保持,直到被复位为0。使用复位指令时,如果RLO=1,则指定的地址被复位为0,而且一直保持,直到被置位为1,如图所示。 置位:Set,保持“位”为“1”(ON) 复位:Reset,保持“位”为“0”(OFF) 置位和复位指令 置位 复位 注意:置位和复位指令并不意味着永远具有保持性,如果后面有其他赋值指令是会改变其状态。 RS和SR触发器 RS触发器为“置位优先”型触发器(当R和S驱动信号同时为“1”时,触发器最终为置位状态); SR触发器为“复位优先”型触发器(当R和S驱动信号同时为“1”时,触发器最终为复位状态)。 RS触发器和SR触发器的“位地址”、置位(S)、复(S)及输出 (Q)所使用的操作数可以是:I、Q、M、L、D。 RS触发器和SR触发器的工作时序 注意: SR触发器为复位优先, RS触发器为置位优先。 跳变沿检测命令 STEP 7中有2类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点的跳变沿直接检测的梯形图方块指令。RLO跳变沿检测指令;触点信号跳变沿检测指令 RLO边沿检测命令 1)RLO边沿信号识别指令当信号状态变化时就产生跳变沿,当从0变到1时,产生一个上升沿(或称正跳沿);若从1变到0,则产生一个下降沿(或称负跳沿),如下图所示。 2)跳变沿检测的原理是:在每个扫描周期中把信号状态和它在前一个扫描周期的状态进行比较,若不同 则表明有一个跳变沿。因此,前一个周期里的信号状态必须被存储,以便能和新的信号状态相比较。 a,上升沿信号指令 b,下降沿信号指令 ---(P) ---(N) 2.RLO边沿检测指令的工作时序 示例程序 工作时序 触点信号边沿检测指令 在OB1的扫描周期中,CPU对<位地址1>的状态与其上一个扫描周期的状态<位地址2>进行比较(上一个扫描周期的状态保存在<位地址2>中)。 1)POS指令 若该<位地址1>状态是1且存放在<位地址2>中的上次状态是0,这说明POS指令检测到<位地址1>的正跳沿,那么POS指令把RLO位置1。如果<位地址1>在相邻的两个扫描周期中状态相同(全为1或0),那么POS指令把RLO位清0。 2)NEG指令 若该<位地址1>状态是0且存放在<位地址2>中的上次状态是1,这说明NEG指令检测到<位地址1>的负跳沿,那么NEG指令把RLO位置1。如果<位地址1>在相邻的两个扫描周期中状态相同(全为1或0),那么NEG指令把RLO位清0。 触点信号边沿检测指令的工作时序 示例程序 工作时序 位地址1>位地址1>位地址2>位地址1>位地址1>位地址1>位地址2>位地址1>位地址2>位地址2>位地址1> |
|