![fa4e8233e6c9ed62ec7e0e6c9a74d66b.png](https://i-blog.csdnimg.cn/blog_migrate/734095ac1d756e0c19f7450f32795d06.jpeg)
3.4.1 ADD-----------------------------------------------BIN加法
3.4.2 SUB-----------------------------------------------BIN减法
3.4.3 MUL----------------------------------------------BIN乘法
3.4.4 DIV------------------------------------------------BIN除法
3.4.5 INC------------------------------------------------BIN递增
3.4.6 DEC-----------------------------------------------BIN递减
3.4.7 WAND--------------------------------------------逻辑与
3.4.8 WOR----------------------------------------------逻辑或
3.4.9 WXOR--------------------------------------------逻辑异或
3.4.10 NEG---------------------------------------------求补
3.4.1 (D)ADD(P)加法运算
加法指令即两个源数据进行二进制加法,其结果传到目标处。
例1:
![01e8dcbc310c00668a1b16b96cc51bb0.png](https://i-blog.csdnimg.cn/blog_migrate/60b59dad3c02542d5a7ed0a0106aee58.jpeg)
当条件X000接通时,执行ADD加法指令,执行时,D10的数据+D11的数据,其运算结果存到D14里面。
如上程序,目标地址与两个加数都不同时,程序执行循环扫面后,其结果D14的数据始终相同。
如下程序,其目标数据与其中的一个加数相同。
例2:
![d58596620fc14adf10b8879270cacc6c.png](https://i-blog.csdnimg.cn/blog_migrate/255e9cc26e2e0ce9f3932e91fe26e609.jpeg)
当条件X001接通,执行加法指令,D0+1=0+1=1,此时,D0=1,第二次扫描执行后,D0+1=1+1=2,此时D0=2,第三次扫描执行后,D0+1=2+1=3,如此循环执行。
说明:当源数据与目标数据指定同一个地址时,如例2所示,则在每个扫描最后,运算结果都会有变化。例2程序,程序没执行之前D1=0,当执行完一次扫描后,D1=1,执行第二次后,D2=2,以后一直会以3,4,5……变化。
3.4.2 (D)SUB(P)减法运算
S1制定的软元件内容,一代数形式减去S2制定的软元件内容,结果存入D制定的软元件中。
程序1:源数据与目标数据不同的情况
![f837351daf380441984dd6c7e8310283.png](https://i-blog.csdnimg.cn/blog_migrate/24bc420b1c2fd931732848fe2429f6b6.jpeg)
当条件X000接通,执行减法运算,D10的数据减去D12的数据,结果送到D14里
程序2:源数据与目标数据相同的情况
![76973d5cfda9e3bd13e4ae423a3f1560.png](https://i-blog.csdnimg.cn/blog_migrate/f3ea82a7ddb3b0bc2b461911ae0867a0.jpeg)
当源数据与目标数据相同时,在每一个扫描周期,其运算结果也都会不同。
具体分析方法见上面加法运算。
3.4.3 (D)MUL(P)乘法运算
![fffd830da289be4111320dbda9500318.png](https://i-blog.csdnimg.cn/blog_migrate/19a4ae69c171085aeaa0ba8f7e3966dd.jpeg)
各源指定软元件内容的乘积,以32位数据形式存入目标地址制定的软元件(低位)和紧接其后的软元件(高位)中。
如上程序,当条件X000接通,执行乘法运算,D0的数据*D2的数据,结果存到D4D5组成的32位寄存器中。
若目标软元件为位软元件时,可以进行K1-K8的指定,指定为4时,只能求得乘积运算的低16位。
![6677152eefac2b9981c19db2aa190bbd.png](https://i-blog.csdnimg.cn/blog_migrate/dec23ca00c1025e9b81dd12430ff1c5e.jpeg)
如上程序,当条件X001接通,执行D1*D6的运算,其结果存到M0—M31组成的32位软元件中。
在32位运算中,目标地址使用位软元件时,只能得到低32位的结果,不能得到高32位的结果。
即使使用字软元件时,也不能一下子监视64位的运算结果。
![d7b5c105f271e3bec3fe1c1b96ea860d.png](https://i-blog.csdnimg.cn/blog_migrate/275097e75669bcfec880e52aba5c6f70.jpeg)
如上程序为32位乘法运算,其执行过程如右边所示,D0D1组成的32数据*D2D3组成的32位数据,结果存到D4D5D6D7组成的64位数据里
3.4.4 (D)DIV(P)除法运算
S1指定软元件的内容是被除数,指定的软元件的内容是除数,D指定软元件和其下一个编号的软元件将存入商和余数。
16位除法运算举例:
![6dad751e2ceafe462db8fae7aabef857.png](https://i-blog.csdnimg.cn/blog_migrate/dd18f8276e998a0018ee11b61d1335dc.jpeg)
如上程序,当条件X000接通,执行除法运算,D0的数据÷D2的数据,其整除的数值存到D4寄存器里,其余数存到D4后面一位D5寄存器里面。
32位除法运算举例:
![21db9d9d28e68706ef1bf90372ede60c.png](https://i-blog.csdnimg.cn/blog_migrate/f9c962049fc4faede2c0be95d80bea54.jpeg)
如上程序,当X001条件接通,则D0D1组成的32位数据÷D2D3组成的32位数据,其整除的数值存到D4D5组成的32位寄存器里,其余数存到D6D7组成的32位寄存器里。
32位运算时,被除数内容由S1指定软元件和其下一个编号的软元件组合而成,除数是由S2指定软元件和其下一个编号的软元件组合而成,其商和余数如上面程序所示,存入与D指定软元件相接续的4点软元件。
3.4.5 (D)INC(P)----BIN增加
说明:BIN指令使被执行对象进行加一运算
程序1:
![223678e12db0dd4bd60fe7e9d5eb30b7.png](https://i-blog.csdnimg.cn/blog_migrate/ff6af54c126d1b1d96ca1f05617c1e62.jpeg)
X0每接通一次,D10指定软元件的内容就加1,在连续执行型指令中,每个扫描周期都将执行加1运算,务必注意。
INC指令在某些场合可以取代计数器,当使用计数器时,一般都要指定计数次数,而限制了一定的技术范围,使用INC不需指定计数次数,只要在数值允许范围内,条件接通,自动加一。
3.4.6 DEC----BIN减少
![36faa89a9deb9bfe3fca1f41de399cb6.png](https://i-blog.csdnimg.cn/blog_migrate/7b7ab0fd77042faffb54af7a90add1f7.jpeg)
X1每接通一次,D指定软元件的内容就减1,在连续执行型指令中,每个扫描周期都将执行减1运算,务必注意。
应用例子:由10台机器生产零件,共用一个显示器显示当天生产的数量。
每台机器对应的计数器是C0—C9.一开始显示器显示第一台生产数量,
按一下按钮X0,显示第二台数量,再按一下显示第三台数量,以此类推,当显示最后一台机器时,再按下按钮,从新回到第一台显示。
![14a2684a363dfe0a534e16722d81a8e0.png](https://i-blog.csdnimg.cn/blog_migrate/45876133f96f3dddb3182815fca86e55.jpeg)
3.4.7 WAND--逻辑与
程序举例:
![444591e0abd1e2f5bd0d7c2b1100ec01.png](https://i-blog.csdnimg.cn/blog_migrate/929bccb843c6744a26e36875d666bec6.jpeg)
如上程序,当X0接通,则执行WAND指令,将D10的每位和D12的每位进行与操作,把结果传到D14寄存器内
具体运算过程如下:
若 D10=0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0—0=0 0—1=0(与操作)
D12=0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1—0=0 1—1=1
则 D14=0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0
3.4.8 WOR--逻辑或
程序举例:
![dfa6806e3094c7847b7d04c6de7cfc4b.png](https://i-blog.csdnimg.cn/blog_migrate/2260b6fede9236b57a793e3fc77703fe.jpeg)
如上程序,当X0接通,则执行WOR指令,将D10的每位和D12的每位进行或操作,结果传送到D14寄存器内
具体运算过程如下:
若 D10=0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0—0=0 0—1=1(或操作)
D12=0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1—0=1 1—1=1
则 D14=0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1
3.4.9WXOR--逻辑异或
程序举例:
![d240cca26cf56d37b516cde3ab27a5e9.png](https://i-blog.csdnimg.cn/blog_migrate/1b3832777119be3bc01c91c124f723a2.jpeg)
如上程序,当X0接通,则执行WXOR指令,将D10的每位和D12的每位进行异或操作,结果传送到D14寄存器里
具体运算过程如下:
若 D1=0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0—0=0 0—1=1(异或操作)
D2=0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1—0=1 1—1=0
则 D3=0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1
3.4.10 NEG—求补
程序举例:
![af86e2397311df8654d98957b41f8c5c.png](https://i-blog.csdnimg.cn/blog_migrate/f86c53f64f56663e8394cde36b3f8cc6.jpeg)
如上程序,当X000接通,则执行NEG指令,指令把D10的各位都取反后再+1,把结果传送到D10寄存器里面
将D10指定软元件的内容中各位先取反(0→1,1→0),然后再加1,将其结果再存入原先的软元件中。
使用连续执行型指令,则在每个扫描周期执行该运算指令,务必注意。