S7-200的数学运算指令有整数、双整数、实数数学运算指令。梯形图加/减运算指令采用指令盒格式,指令盒由指令类型,使能端 EN,操作数(1N1、IN2)输入端,运算结果输出OUT,逻辑结果输出端ENO(“1”正确或 “0”错误)等组成。
Ø 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)
Ø 在梯形图编程方式下当使能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)
Ø 在梯形图编程方式下当使能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)
Ø 在梯形图编程方式下当使能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)
Ø 在梯形图编程方式下当使能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)
Ø 在梯形图编程方式下当使能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
Ø 在梯形图编程方式下,当使能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)。
Ø 在梯形图编程方式下,当使能输入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。
IO分配
接线图
实物图
源程序
拓展训练
通电后数码管显示0。按下学习板上按钮去的S1按钮,数码管显示从95开始进行倒计时,每过1秒显示的值自动减5,待显示的值减到0,则下一秒又从95开始倒计时,循环不断,直到按下S2按钮停止,数码管显示0。
如果觉得本文有用,欢迎推荐更多朋友关注我们
学习板基本操作
- USB转串口线驱动的安装
- 学习板与三菱编程软件通信设置
- 学习板与西门子编程软件通信设置