算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV

↖戳上方 蓝字  "PLC课程”   关注我们哦!

41dde0ca181af983b038125cc8090843.png

S7-200的数学运算指令有整数、双整数、实数数学运算指令。梯形图加/减运算指令采用指令盒格式,指令盒由指令类型,使能端 EN,操作数(1N1、IN2)输入端,运算结果输出OUT,逻辑结果输出端ENO(“1”正确或 “0”错误)等组成。

d0561dbd7be7addb6ce87eae3c3ec05a.png

Ø XXX为运算律标识:ADD、SUB、MUL、DIV

Ø X为数据类型:I、DI、R

一、加/减运算

加/减运算指令是对符号数的加/减运算操作。包括整数加/减、双整数加/减运算和实数加/减运算。加/减运算6种指令的梯形图指令格式分别为:ADD_I、ADD_DI、ADD_R和SUB_I、SUB_DI、SUB_R。  

(1) 整数加/减运算ADD_I/SUB_I(ADD Integer / Subtract Integer)

38168a0d32daae49d4c2bbc101898292.png

Ø 在梯形图编程方式下当使能EN输入有效时,将两个单字长(16位)符号整数(IN1和IN2)相加/减,然后将运算结果送OUT指定的存储器单元输出。运算法则为:IN1±IN2=OUT。

Ø 语句表运算指令为:+I  IN1, OUT和-I  IN1, OUT。运算法则为:OUT±IN1=OUT。

    (2)双整数加/减运算ADD_DI/SUB_DI(ADD Double Integer / Subtract Double Integer)

799cf707b613cb4f5e244ea6330fe4cf.png

Ø 在梯形图编程方式下当使能EN输入有效时,将两个双字长(32位)符号整数(IN1和IN2)相加/减,运算结果送OUT指定的存储器单元输出。运算法则为:IN1±IN2=OUT。

Ø 语句表运算指令为:+D  IN1, OUT和-D  IN1, OUT。运算法则为:OUT±IN1=OUT。

(3) 实数加/减运算ADD_R/SUB_R(ADD Real / Subtract Real)

d2cb77f679f9b95992930a30a4b5ac8a.png

Ø 在梯形图编程方式下当使能EN输入有效时,将两个(32位)实数(IN1和IN2)相加/减,运算结果送OUT指定的存储器单元输出。运算法则为:IN1±IN2=OUT。

Ø 语句表运算指令为:+R  IN1, OUT和-R  IN1, OUT。运算法则为:OUT±IN1=OUT。

算术运算指令影响特殊标志的算术状态位SMl.0~SMl.3,并建立指令盒能量流输出ENO。对于加/减运算所能影响的算术状态位(特殊标志位)有:SMl.0(零),SMl.1(溢出),SMl.2(负)。SM1.1 用来指示溢出错误和非法值。如果 SMl.1 置位,SMl.0 和 SMl.2 的状态无效,原始操作数不变。如果SMl.1不置位,SMl.0和SMl.2的状态反映算术运算的结果。ENO(能量流输出位)输入使能EN有效,运箅结果无错时,ENO=1,否则 ENO=0(出错或无效)。影响允许输出ENO正常工作的出错条件有:SM1.1=1(溢出),0006(间接寻址错误),SM4.3(运行时间)。

二、乘/除运算

乘/除运算是对符号数的乘法运算和除法运算,它包括:整数乘/除运算(MUL_I/DIV_I),双整数乘/除运算(MUL_DI/DIV_DI),整数乘/除双整数输出运算(MUL/DIV),实数乘/除运算(MUL_R/DIV_R)8种类型。

(1) 整数乘/除法指令MUL_I/DIV_I(Multiple Integer / Divide Integer)

2607483e496079c8da1102ec138ea0c0.png

Ø 在梯形图编程方式下当使能EN输入有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个单字长(16位)整数结果,从OUT(积/商)指定的存储器单元输出,在除运算律下,输出为商,不保留余数。运算法则为:IN1*IN2=OUT和IN1/IN2=OUT。

Ø 语句表运算指令为:*I  IN1, OUT和/I  IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。

  (2) 双整数乘/除法指令MUL_DI/DIV_DI(Multiple Double Integer/Divide Double Integer)

67938f139fc66ec5be849d361060cc33.png

Ø 在梯形图编程方式下当使能EN输入有效时,将两个双字长(32位)符号整数IN1和IN2相乘/除,产生一个双字长(32位)整数结果,从OUT(积/商)指定的存储器单元输出,在除运算律下,输出为商,不保留余数。运算法则为:IN1*IN2=OUT和IN1/IN2=OUT。

Ø 语句表运算指令为:*D  IN1, OUT和/D  IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。

(3) 整数乘/除双整数输出指令MUL/DIV

59e9dc595c2e6a712b1c6aa430929977.png

Ø 在梯形图编程方式下,当使能EN输入有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个双字长(32位)整数结果,从OUT(积/商)指定的存储器单元输出,整数除法产生的32位结果中低16位是商,高16位是余数。运算法则为:IN1*IN2=OUT和IN1/IN2=OUT。

Ø 语句表运算指令为:MUL  IN1, OUT和DIV  IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。

(4) 实数乘/除法指令(MUL_R/DIV_R)。

19735555b3dbd56a43f1c4d4f4918d1b.png

Ø 在梯形图编程方式下,当使能输入EN有效时,将两个(32位)符号实数IN1和IN2相乘/除,产生一个(32位)实数结果,从OUT(积/商)指定的存储器单元输出。

Ø 语句表运算指令为:*R  IN1, OUT和/R  IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。

乘/除运算指令执行的结果影响算术状态位(特殊标志位):SMl.0(零),SMl.1(溢出),SMl.2(负),SMl.3(被0除)。乘法运算过程中 SMl.1(溢出)被置位,就不写输出,并且所有其他的算术状态位置为0。(整数乘法产生双整数指令输出不会产生溢出)。如果除法运算过程中 SMl.3 置位(被0除),其他的算术状态位保留不变,原始输入操作数不变。SMl.3不被置位,所有有关的算术状态位都是算术操作的有效状态。乘/除运算指令执行的结果影响允许输出ENO正常工作的出错条件是:SMl.1(溢出),SM4.3(运行时间),0006(间接寻址错误)。

控制要求

本任务是要求使用PLC的算术运算和逻辑运算指令,设计一个数值运算PLC控制系统。

    要求:启动时数码管显示0,LED条向上流转以前先设定流转圈数:每按一次S3,流转圈数加5,每按一次S4,流转圈数减3。数码管DS1、DS2应能显示设定的圈数,设定好流转圈数后。按下按钮S1,LED条开始向上流转,每流转一周,数码管读数自动减1,待数码管显示0时,LED条停止向上流转,按下按钮S2,则不管LED条向上流转了几周,立即停止,数码管显示0。

300973c527268b0b5ab911b4b125e349.png

IO分配

e38e390cfb1edf3f1a09546becf2e47a.png

接线图

c6cf9f3e38b46f61cb2ebda1aee4b991.png

实物图

源程序

c808e7ecef1123ad67cfde5398dc0874.png

440bb3ea8436a548aee9296c171041e8.png

406557e8ed53ad611e44e4fee9588686.png

拓展训练

通电后数码管显示0。按下学习板上按钮去的S1按钮,数码管显示从95开始进行倒计时,每过1秒显示的值自动减5,待显示的值减到0,则下一秒又从95开始倒计时,循环不断,直到按下S2按钮停止,数码管显示0。

如果觉得本文有用,欢迎推荐更多朋友关注我们37dad4a3665a7a4cdeef784654aca16b.png

学习板基本操作

  • USB转串口线驱动的安装
  • 学习板与三菱编程软件通信设置
  • 学习板与西门子编程软件通信设置

108de85d0e3788fbae6de5eaa21fe451.png

e6aaf4065ed5a5e84c1c6baa952e18ab.png 你的每个 分享点赞在看 我都喜欢!

fb49758542295f7295a9fb27120613c9.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值