三菱PLC编程技术及工程案例精选(第2版)
上QQ阅读APP看书,第一时间看更新

3.5 数学运算指令

3.5.1 整数数学运算指令

1.BIN16位加法和减法运算指令(+(P)、-(P))

(1)当设置了两个数据时

(S)+(D)→(D),(S)-(D)→(D)

该指令的表达方式如图3-71所示。

978-7-111-36359-0-Chapter03-82.jpg

图3-71 16位+(P)/-(P)指令的表达方式

图中,(S)表示加数、减数或者存储加数、减数数据的软元件的起始号(BIN16位)。

(D)表示存储被加数、被减数数据的软元件起始号,(BIN16位)。

+(P)/-(P)指令是将由(S)指定的BIN 16位数据与由(D)指定的BIN 16位数据相加/减,并将该加/减法运算的结果存储在由(D)指令的软元件中;(S)和(D)的范围是-32768~32767(BIN 16位);数据的正负是由它的最高有效位(b15)来判定的(0表示正,1表示负)。

(2)当设置了三个数据时

(S1)+(S2)→(D),(S1)-(S2)→(D)

该指令的表达方式如图3-72所示。

978-7-111-36359-0-Chapter03-83.jpg

图3-72 16位+(P)/-(P)指令的表达方式

图中,(S1)表示被加数、被减数或者存储被加数、被减数的软元件的起始号(BIN16位)。

(S2)表示加数、减数或者存储加数、减数的软元件的起始号(BIN16位)。

(D)表示存储加法和减法运算结果的软元件的起始号(BIN16位)。

+(P)/-(P)指令是将由(S1)指定的BIN 16位数据与由(S2)指定的BIN 16位数据相加/减,并将该加/减法运算的结果存储在由(D)指令的软元件中。

举例说明:

1)图3-73中,当X5为ON时,下面程序将D3的内容与D0的内容相加,并将结果输出到Y38~Y3F。

978-7-111-36359-0-Chapter03-84.jpg

图3-73 +(P)指令的应用

2)图3-74中,将定时器T3的设定值与当前值的差输出到Y40~Y53中。

978-7-111-36359-0-Chapter03-85.jpg

图3-74 -(P)指令的应用

2.BIN16位乘法和除法运算指令(∗(P)、/(P))

该指令的表达方式如图3-75所示。

978-7-111-36359-0-Chapter03-86.jpg

图3-75 ∗(P)与/(P)指令的表达

图中,(S1)表示被乘数、被除数或者存储被乘数、被除数的软元件的起始号(BIN16位)。

(S2)表示乘数、除数或者存储乘数、除数的软元件的起始号(BIN16位)。

(D)表示存储乘法、除法运算的运算结果的软元件的起始号(BIN32位)。

∗(P)(/(P))指令功能是:将由(S1)指定的BIN 16位数据与由(S2)指定的BIN 16位数据相乘(除),并将结果存储在由(D)指定的软元件中。若(D)是位软元件,则值由低位开始指定。如:K1——低4位(b0~b3);K4——低16位(b0~b15);K8——低32位(b0~b31)。

举例说明:

1)图3-76中,当X5为ON时,用“1234”、“5678”相乘,并将结果存储在D3和D4中。

978-7-111-36359-0-Chapter03-87.jpg

图3-76 ∗(P)指令的应用

2)图3-77中,当X3为ON时,将X8~XF的数据除以3.14,并将结果值输出到Y30到Y3F。

978-7-111-36359-0-Chapter03-88.jpg

图3-77 ∗(P)与/(P)指令的应用

3.16位BIN数据的递增和递减运算指令(INC(P)、DEC(P))

该指令的表达方式如图3-78所示。

978-7-111-36359-0-Chapter03-89.jpg

图3-78 INC(P)与DEC(P)指令的表达

图中,(D)表示执行INC(+1)/DEC(-1)运算的软元件的起始号,(BIN16位)。

INC(P)是“加1”指令,DEC(P)是“减1”指令。

举例说明:

1)图3-79中,当X8为ON时,存储在计数器C0~C20中的当前值以BCD数据的形式输出到Y30~Y3F(在当前值小于9999时)。

978-7-111-36359-0-Chapter03-90.jpg

图3-79 INC(P)指令的应用

2)图3-80所示为减法计数器程序。

978-7-111-36359-0-Chapter03-91.jpg

图3-80 DEC(P)指令的应用

3.5.2 移位指令

978-7-111-36359-0-Chapter03-92.jpg

图3-81 SFT(P)指令的表达

该指令的功能为

1.当使用位软元件时

1)在指定的软元件之前立即将软元件的ON/OFF状态移动到被(D)指定的软元件中去,并且将先前的软元件关闭。例如图3-82所示,若M11已经被SFT指令指定,当SET指令被执行,则它将会移动M10的ON/OFF状态至M11,并且将M10关闭。

2)使用SET指令将要移动的第一个软元件开启。

3)当SFT和SFTP被连续使用时,将从有较大号的软元件处启动程序。

978-7-111-36359-0-Chapter03-93.jpg

图3-82 SFT(P)指令的应用

2.当使用字软元件的位指定

在指定的软元件之前直接将位的1/0状态移动到被(D)指定的软元件的位中,并且将之前的位设置为0。

例如图3-83所示,若D0.5(D0的位5[b5])已经被SFT指令指定,当这个SFT指令被执行时,将会移动D0的b4的1/0状态至b5,并且将b4设置为0。

978-7-111-36359-0-Chapter03-94.jpg

图3-83 SFT(P)指令示意图说明

举例说明:

如图3-84所示程序,当X8由OFF变为ON时,将Y57移动到Y5B。

978-7-111-36359-0-Chapter03-95.jpg

图3-84 SFT(P)指令的应用

图3-84对应的时序图如图3-85所示。

978-7-111-36359-0-Chapter03-96.jpg

图3-85 图3-84对应的时序图

3.5.3 循环移位指令

1.16位数据的右循环指令(ROR(P)、RCR(P))

该指令的表达方式如图3-86所示。

978-7-111-36359-0-Chapter03-97.jpg

图3-86 ROR(P)/RCR(P)指令的表达

图中,(D)表示执行循环的软元件的起始号(BIN16位)。

n表示循环次数(0~15)(BIN16位)。

ROR(P)指令功能:

1)将由(D)指定的软元件的16位数据,不包括进位标志,往右循环(旋转)移动n位。进位标志的ON/OFF取决于ROR(P)指令执行前的状态。示意图如图3-87所示。

978-7-111-36359-0-Chapter03-98.jpg

图3-87 ROR(P)指令示意图

2)当位软元件被在(D)处指定后,数据循环移动指定的位数是n指定位数所得商的余数。例如,当n=15且指定的位数是12位,则15除以12的商为1,余数为3,因此将循环移动3位。

3)将0到15之间的任意值设为n。当指定的n值为16或更大时,则n除以16的余数用于循环。例如,当n=18,18除以16的余数为2,则向右循环移动2位。

RCR(P)指令功能:

将由(D)指定的软元件的16位数据,包括进位标志,往右循环移动n位。进位标志取决于RCR(P)指令执行前的状态,变为ON或OFF。示意图如图3-88所示。

举例说明:

1)图3-89中,当XC为ON时,下面程序将D0的内容,不包括进位标志,向右循环移动3位。

2)图3-90中,当XC为ON时,将D0的内容,包括进位标志,向右循环移动3位。

2.16位数据的左循环指令(ROL(P)、RCL(P))

左循环指令与右循环指令除了循环移动的方向不同以外,其他功能是相同的。由于篇幅问题,本书不再赘述。

除了16位数据循环外,还有32位数据的循环,本书不再赘述,具体见相关手册“指令篇”。

978-7-111-36359-0-Chapter03-99.jpg

图3-88 RCR(P)指令示意图

978-7-111-36359-0-Chapter03-100.jpg

图3-89 ROR(P)指令的应用

978-7-111-36359-0-Chapter03-101.jpg

图3-90 RCR(P)指令的应用

3.5.4 字逻辑运算指令

1.16位和32位数据逻辑与(WAND(P)、DAND(P))

该指令表达方式如图3-91所示。

978-7-111-36359-0-Chapter03-102.jpg

图3-91 WAND(P)与DAND(P)指令的表达

图中,

(S)表示进行逻辑与运算的源数据或者存储了数据的软元件起始号(16/32位二进制数据);

(D)表示将存储逻辑与运算结果的软元件起始号(16/32位二进制数据)。

WAND(P)指令是对(D)中所指定的软元件的16位数据和(S)中所指定的软元件的16位数据的各个位执行逻辑与运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

DAND(P)指令是对(D)中所指定的软元件的32位数据和(S)中所指定的软元件的32位数据的各个位执行逻辑与运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

注意:当设置3个数据与设置2个数据时,方法相同。

举例说明:

1)图3-92中,当XA为ON时,将D10中4位BCD值的十进制上的数字屏蔽为0。

978-7-111-36359-0-Chapter03-103.jpg

图3-92 WAND(P)指令的应用及说明

2)图3-93中,当XA为ON时,下面程序对X10~X1B中的数据和D33中的数据进行逻辑乘运算,并将结果存储在D40中。

3)图3-94中,当X8变为ON时对D99~D100的数据和X30~X47的24位数据执行逻辑与运算,并将运算结果存储在D99~D100中。

978-7-111-36359-0-Chapter03-104.jpg

图3-93 WAND(P)指令的应用及说明

978-7-111-36359-0-Chapter03-105.jpg

图3-94 DAND(P)指令的应用

梯形图模式如图3-94所示,程序处理如图3-95所示:

978-7-111-36359-0-Chapter03-106.jpg

图3-95 DAND(P)指令的处理

2.16位和32位数据逻辑或(WOR(P)、DOR(P))

该指令的表达方式如图3-96所示。

978-7-111-36359-0-Chapter03-107.jpg

图3-96 WOR(P)和DOR(P)指令的表示

图中,

(S)表示进行逻辑或运算的源数据或者存储了数据的软元件起始号(16/32位二进制数据);

(D)表示将存储逻辑或运算结果的软元件起始号(16/32位二进制数据)。

WOR(P)指令是对(D)中所指定的软元件的16位数据和(S)中所指定的软元件的16位数据的各个位执行逻辑或运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

DOR(P)指令是对(D)中所指定的软元件的32位数据和(S)中所指定的软元件的32位数据的各个位执行逻辑或运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

注意:设置3个数据和设置2个数据时,方法相同。

3.16位和32位数据逻辑异或(WXOR(P)、DXOR(P))

该指令表达方式如图3-97所示。

978-7-111-36359-0-Chapter03-108.jpg

图3-97 WXOR(P)与DXOR(P)指令的表示

图中,

(S)表示进行逻辑异或运算的源数据或者存储了数据的软元件起始号(16/32位二进制数据);

(D)表示存储逻辑异或运算结果的软元件起始号(16/32位二进制数据)。

WXOR(P)指令是对(D)中所指定的软元件的16位数据和(S)中所指定的软元件的16位数据的各个位执行逻辑异或运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

DXOR(P)指令对D中所指定的软元件的32位数据和S中所指定的软元件的32位数据的各个位执行逻辑异或运算,并将运算结果存储在D所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

注意:设置3个数据和设置2个数据时,方法相同。

4.16位和32位数据逻辑异或非(WXNR(P)、DXNR(P))

指令表达方式如图3-98所示。

978-7-111-36359-0-Chapter03-109.jpg

图3-98 WXNR(P)、DXNR(P)指令的表示

图中,

(S)表示逻辑异或非运算的源数据或者存储了数据的软元件起始号(16/32位二进制数据);

(D)表示将存储逻辑异或非运算结果的软元件起始号(16/32位二进制数据)。

WXNR(P)指令是对(D)中所指定的软元件的16位数据和(S)中所指定的软元件的16位数据的各个位执行逻辑异或非运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

DXNR(P)指令是对(D)中所指定的软元件的32位数据和(S)中所指定的软元件的32位数据的各个位执行逻辑异或非运算,并将运算结果存储在(D)所指定的软元件中。当指定了位软元件时,则在运算中位软元件所指定点之后的位将当做“0”处理。

注意:设置3个数据和设置2个数据时,方法相同。