首页 理论教育 位逻辑指令在编程中的应用

位逻辑指令在编程中的应用

时间:2023-06-29 理论教育 版权反馈
【摘要】:位逻辑指令用于处理“0”和“1”两个二进制数逻辑运算,“1”表示编程元件动作或线圈通电,“0”表示编程元件未动作或线圈断电。位逻辑指令根据布尔逻辑对扫描信号状态0和1进行处理,处理结果为0或1,即位逻辑运算结果。指令程序允许最多7个嵌套堆栈输入项。例:结束一个布尔位逻辑串指令1)=赋值指令格式为:=〈位〉寻址存储区为I、Q、M、L和D。

位逻辑指令在编程中的应用

位逻辑指令用于处理“0”和“1”两个二进制逻辑运算,“1”表示编程元件动作或线圈通电,“0”表示编程元件未动作或线圈断电。

位逻辑指令根据布尔逻辑对扫描信号状态0和1进行处理,处理结果为0或1,即位逻辑运算结果(RLO)。

1.语句表(STL)的位逻辑指令

(1)布尔位逻辑指令

布尔位逻辑指令执行时检查被寻址位、定时器和计数器的信号状态以便确定激活“1”,去激活“0”,或确定置“1”或“0”。逻辑操作结果由状态字的第0位FC确定,此位为0时,状态检查结果将保持不变,且不存于RLO(表明逻辑串开始);此位为1时,将检查结果与指令前的逻辑运算结果(RLO)和逻辑指令(A、O、X等)进行逻辑运算后结果存入RLO。

1)A“与”和AN“与非”

指令格式为:978-7-111-46052-7-Chapter04-25.jpg

可寻址存储区为I、Q、M、L、D、T和C。变量的数据类型为BOOL、TIMER和COUNTER型。A“与”表示串联的常开触点,AN“与非”表示串联的常闭触点。

例:

978-7-111-46052-7-Chapter04-26.jpg

2)O“或”和ON“或非”

指令格式为:978-7-111-46052-7-Chapter04-27.jpg

可寻址存储区为I、Q、M、L、D、T和C。变量的数据类型为BOOL、TIMER和COUNTER型。O“或”表示并联的常开触点,ON“或非”表示并联的常闭触点。

例:

978-7-111-46052-7-Chapter04-28.jpg

3)X“异或”和XN“异或非”

指令格式为:978-7-111-46052-7-Chapter04-29.jpg

可寻址存储区为I、Q、M、L、D、T和C。变量的数据类型为BOOL、TIMER和COUNTER型。可连续使用“异或”指令。若检测到地址的信号状态为“1”不成对,逻辑运算的相互结果为“1”。

例1:

978-7-111-46052-7-Chapter04-30.jpg

978-7-111-46052-7-Chapter04-31.jpg

指令格式为:O

O“先与后或”指令运算顺序为在“或”运算之前先进行“与”运算,对“与”运算执行逻辑“或”运算。

例:

978-7-111-46052-7-Chapter04-32.jpg

(2)嵌套指令

指令格式为:978-7-111-46052-7-Chapter04-33.jpg

程序执行时先执行嵌套括号内的逻辑运算,再做嵌套表达式前的逻辑操作。逻辑操作的结果是打开嵌套表达式的指令把上一个操作的RLO存放至嵌套堆栈,接着程序会将该存放的RLO与括号中逻辑操作中产生的结果进行组合,可以将RLO和OR位以及一个指令代码保存在嵌套堆栈中。指令程序允许最多7个嵌套堆栈输入项。使用)(嵌套闭合)指令,可删除嵌套堆栈中的一个输入项,并将状态字中的OR位复位,堆栈输入项中所包含的RLO与当前RLO相关,相关运算结果送入RLO。

例:

978-7-111-46052-7-Chapter04-34.jpg

(3)结束一个布尔位逻辑串指令

1)=赋值

指令格式为:=〈位〉

寻址存储区为I、Q、M、L和D。变量的数据类型为BOOL型。=(赋值指令)将其之前的逻辑串语句的逻辑运算结果RLO写入指定的寻址位,作为寻址线圈的信号状态(亦即赋值指令=赋值上一条语句的RLO来置位或复位寻址位)其特性是动态的。赋值指令结束一个逻辑串。

例1:

978-7-111-46052-7-Chapter04-35.jpg

例2:

978-7-111-46052-7-Chapter04-36.jpg

2)S(置位)和R(复位)指令

指令格式为:S〈位〉

R〈位〉

寻址存储区为I、Q、M、L、D、T和C。变量的数据类型为BOOL、TIMER和COUNTER型。置位(S)和复位(R)指令用于把寻址位的信号状态置1(变1并保持)和复位0(变0并保持),具有静态特性。S和R结束一个逻辑串。

当上一次逻辑运算结果RLO=1,S指令把寻址位的信号状态置1,而S指令把寻址位的信号状态复位0。此外,S指令不能用于定时器但能给计数器置计数值,R指令可用于定时器和计数器复位。

例1:

978-7-111-46052-7-Chapter04-37.jpg

例2:

978-7-111-46052-7-Chapter04-38.jpg

例3:

978-7-111-46052-7-Chapter04-39.jpg

(4)更改逻辑运算的结果(RLO)指令

1)NOT(RLO取反)

指令格式为:NOT

使用NOT指令,对逻辑运算结果RLO取反。

例:

978-7-111-46052-7-Chapter04-40.jpg

978-7-111-46052-7-Chapter04-41.jpg

2)SET(RLO置位(=1))和CLR(RLO清零(=0))指令

指令格式为:SET

CLR

SET和CLR指令对状态字的逻辑运算结果位RLO进行置位和复位操作,紧邻其后的赋值语句地址的信号状态随之变为1或0状态。

例:978-7-111-46052-7-Chapter04-42.jpg

3)SAVE(把RLO存入BR寄存器)

指令格式为:SAVE

SAVE指令的作用是把RLO存入二进制结果BR位,用来影响状态字的BR位或保存RLO以供将来需要。状态字的第0位首次检查位(/FC位)在执行SAVE指令时不会被复位。编写FB和FC语句表程序中用SAVE管理BR位,执行正确时使RLO为1,存入BR位,错误时BR存入0。通常在检查相同块或附属块中的BR位之前不用SAVE指令,其原因是状态字的第0位首次检查位(/FC位)在执行SAVE指令时不会被复位,BR位的状态将参与下一个网络的“与”逻辑运算,在保存和检查操作之间,BR位可能被许多指令修改过。

一般在退出逻辑块之前使用SAVE指令,使能输出ENO(即BR位)被设置为RLO位的值,用于对块中的错误进行检查。

(5)RLO脉冲边沿触发指令FN(下降沿)和FP(上升沿)

指令格式为:978-7-111-46052-7-Chapter04-43.jpg

寻址存储区为I、Q、M、L和D。变量的数据类型为BOOL型。

下降沿检测指令(FN〈位〉)检测到RLO的下降沿(RLO的信号状态从“1”变为“0”时)后,RLO位为“1”,能流在一个扫描周期内流过检测元件。

上升沿检测指令(FP〈位〉)检测到RLO的上升沿(RLO的信号状态从“0”变为“1”时)后,RLO位为“1”,能流在一个扫描周期内流过检测元件。

在每一个程序扫描周期过程中,RLO位的信号状态都将与前一周期中获得的结果进行比较,看信号状态是否有变化。前一RLO的信号状态必须保存在边沿标志地址(〈位〉)中,以进行比较。如果在当前和先前的RLO状态之间有变化(检测到下降沿或上升沿),则在操作之后,能流在该扫描周期内流过检测元件,亦即RLO位仅在该扫描周期内为“1”;如果在当前和先前的RLO状态之间没有变化(无脉冲边沿),则在操作之后,FN和FP指令均把RLO复位为0。

例1:

978-7-111-46052-7-Chapter04-44.jpg

例2:

978-7-111-46052-7-Chapter04-45.jpg(www.xing528.com)

978-7-111-46052-7-Chapter04-46.jpg

2.梯形图(LAD)的位逻辑指令

(1)—| |—常开触点(地址)、—|/|—常闭触点(地址)和—()输出线圈

指令格式为:978-7-111-46052-7-Chapter04-47.jpg

978-7-111-46052-7-Chapter04-48.jpg

常开触点和常闭触点的可寻址存储区为I、Q、M、L、D、T和C,其变量的数据类型为BOOL、TIMER和COUNTER型。

输出线圈的可寻址存储区为I、Q、M、L、D,其变量的数据类型为BOOL型。

常开触点对应的地址位为1状态时,该触点闭合,信号能流流经触点,逻辑运算结果(RLO)=“1”;常开触点对应的地址位为0状态时,该触点打开,无信号能流流经触点,逻辑运算结果(RLO)=“0”。串联使用时常开触点通过“与(AND)”逻辑链接到RLO位。并联使用时,常开触点通过“或(OR)”逻辑链接到RLO位。

常闭触点对应的地址位为0状态时,该触点闭合,信号能流流经触点,逻辑运算结果(RLO)=“1”;常闭触点对应的地址位为1状态时,该触点打开,无信号能流流经触点,逻辑运算结果(RLO)=“0”。串联使用时常闭触点通过“与(AND)”逻辑链接到RLO位。并联使用时,常闭触点通过“或(OR)”逻辑链接到RLO位。

输出线圈的工作方式继电器逻辑图中线圈的工作方式类似。当有能流通过线圈(RLO=1),将〈地址〉位置“1”。若没有能流通过线圈(RLO=0),将〈地址〉位置“0”。只能将输出线圈置于梯级的右端。可以有多个(最多16个)输出单元。使用-|NOT|—(能流取反)单元可以创建取反输出。—|NOT|—(能流取反)指令取RLO位的非值。

例:

满足条件输入端I0.0和I0.1的信号状态为“1”时或输入端I0.2的信号状态为“0”时。输出端Q4.0的信号状态将是“1”。

满足条件输入端I0.0和I0.1的信号状态为“1”时,或输入端I0.2的信号状态为“0”、输入端I0.3的信号状态为“1”时,输出端Q4.1的信号状态将是“1”。

978-7-111-46052-7-Chapter04-49.jpg

如果实例梯级在激活的MCR区之内:MCR处于接通状态时,将按照上述能流状态置位Q4.0和Q4.1。MCR处于断开状态(=0)时,无论是否有能流通过,都将Q4.0和Q4.1复位为0。

(2)XOR逻辑“异或”

指令格式:

978-7-111-46052-7-Chapter04-50.jpg

寻址存储区为I、Q、M、L、D、T和C。当两个指定位的信号状态不同时,RLO为“1”。

例:

如果(I0.0=“0”且I0.1=“1”)或者(I0.0=“1”且I0.1=“0”),输出Q4.0将是“1”。

(3)—|NOT|—能流取反

指令格式为:978-7-111-46052-7-Chapter04-51.jpg

能流取反用来将它左边电路的逻辑运算结果RLO取反,该运算结果若为1则变为0,为0则变为1,该指令没有操作数。亦即能流到达该触点时即停止流动;若能流未到达该触点,该触点给右侧供给能流。

978-7-111-46052-7-Chapter04-52.jpg

例:

满足I0.0的信号状态为“1”且I0.1的信号状态为“0”时,输出端Q4.2的信号状态将是“0”。

(4)—(#)—中间输出

指令格式为:978-7-111-46052-7-Chapter04-53.jpg

978-7-111-46052-7-Chapter04-54.jpg

寻址存储区为I、Q、M、D、L(只有在逻辑块(FC、FB、OB)的变量声明表中将L区地址声明为TEMP时,才能使用L区地址)。

—(#)—(中间输出)是中间分配单元,它将RLO位状态(能流状态)保存到指定〈地址〉。中间输出单元保存前面分支单元的逻辑结果。以串联方式与其他触点连接时,可以像插入触点那样插入—(#)—。不能接在左侧的垂直“电源线”上,也不能放在电路最右端结束的位置。使用—|NOT|—(能流取反)单元可以创建取反—(#)—。中间输出指令等效图如图4-9所示。

978-7-111-46052-7-Chapter04-55.jpg

图4-9 中间输出指令等效图

(5)—(R)复位线圈和—(S)置位线圈

指令格式为:978-7-111-46052-7-Chapter04-56.jpg

复位指令寻址存储区为I、Q、M、L、D、T、C,而置位指令寻址存储区为I、Q、M、L、D(能流通过线圈)时,—(R)指令将指定的地址位复位(变为0并保持),〈地址〉也可以是值复位为“0”的定时器(T编号)或值复位为“0”的计数器(C编号)。—(S)指令则将指定的地址位置位(变为1并保持)。

例:

978-7-111-46052-7-Chapter04-57.jpg

(6)RS触发器和SR触发器

指令格式为:

寻址存储区为I、Q、M、L、D,数据类型为BOOL型。

若R端(S端)为“1”,S端(R端)为“0”,则复位RS触发器(置位SR触发器)。否则,如果R端(S端)为“0”,S端(R端)为“1”,则置位RS触发器(复位SR触发器)。

978-7-111-46052-7-Chapter04-58.jpg

如果两个输入端(R端和S端)的RLO均为“1”,RS触发器先在指定〈地址〉执行复位指令,然后执行置位指令,以使该地址在执行余下的程序扫描过程中保持置位状态。SR触发器先在指定〈地址〉执行置位指令,然后执行复位指令,以使该地址在执行余下的程序扫描过程中保持复位状态。

例:

978-7-111-46052-7-Chapter04-59.jpg

当I0.0为“1”,I0.1为“0”,则复位存储器位M0.0,输出Q4.0位为“0”。当I0.3为“1”,I0.2为“0”,则置位存储器位M0.0,输出Q4.1位为“1”。

(7)--(N)--RLO下降沿检测和--(P)--RLO上升沿检测

指令格式为:

978-7-111-46052-7-Chapter04-60.jpg

寻址存储区为I、Q、M、L、D,数据类型为BOOL型。

下降沿检测指令(--(N)--)检测到RLO的下降沿(RLO的信号状态从“1”变为“0”时)后,RLO位为“1”,能流在一个扫描周期内流过检测元件。

上升沿检测指令(--(P)--)检测到RLO的上升沿(RLO的信号状态从“0”变为“1”时)后,RLO位为“1”,能流在一个扫描周期内流过检测元件。

在每一个程序扫描周期过程中,RLO位的信号状态都将与前一周期中获得的结果进行比较,看信号状态是否有变化。前一RLO的信号状态必须保存在边沿标志地址(〈地址〉)中,以进行比较。如果在当前和先前的RLO状态之间有变化(检测到下降沿或上升沿),则在操作之后,能流在该扫描周期内流过检测元件,亦即RLO位仅在该扫描周期内为“1”;如果在当前和先前的RLO状态之间没有变化(无脉冲边沿),则在操作之后,RLO边沿检测指令均把RLO复位为0。

例:

978-7-111-46052-7-Chapter04-61.jpg

M0.0位检测到下降沿时,Q4.0通电。M0.1位检测到下降沿时,Q4.1通电。

(8)--(SAVE) 将RLO状态保存到BR寄存器

指令格式为:---(SAVE)

此指令将RLO保存到状态字的BR位,但不复位第一个校验位/FC。因此,BR位的状态将包含在下一程序段的AND逻辑运算中。一般在使用SAVE后不在同一块或从属块中校验BR位,因为这期间执行的指令中有许多会对BR位进行修改。建议在退出块前使用SAVE指令,因为ENO输出(=BR位)届时已设置为RLO位的值,所以可以检查块中是否有错误。

例:

978-7-111-46052-7-Chapter04-62.jpg

将梯级(=RLO)的状态保存到BR位。

(9)NEG 地址下降沿检测和POS地址上升沿检测

指令格式为:

978-7-111-46052-7-Chapter04-63.jpg

寻址存储区为I、Q、M、L、D,数据类型为BOOL型。〈地址1〉为已扫描信号,〈地址2〉为M_BIT边沿存储位,存储〈地址1〉的前一个信号状态,Q为单触发输出。

NEG(地址下降沿检测)比较〈地址1〉的信号状态与前一次扫描的信号状态(存储在〈地址2〉中)。如果当前RLO状态为“0”且其前一状态为“1”(检测到下降沿),执行此指令后RLO位将是“1”。而POS(地址上升沿检测)比较〈地址1〉的信号状态与前一次扫描的信号状态(存储在〈地址2〉中)。如果当前RLO状态为“1”且其前一状态为“0”(检测到上升沿),执行此指令后RLO位将是“1”。

例:

I0.0的信号状态为“1”且I0.1有下降沿时Q4.0的信号状态为“1”。

I0.2的信号状态为“1”且I0.3有上升沿时Q4.1的信号状态为“1”。

978-7-111-46052-7-Chapter04-64.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈