6.4 数学运算指令
6.4.1 加法指令和减法指令
(1)加法指令(add)的功能是把两个输入端(IN1,IN2)指定的数相加,结果送到输出端(OUT)指定的存储单元中。IN2与OUT共用存储单元。
(2)减法指令(subtract)的功能是把两个输入端(IN1,IN2)指定的数相减,结果送到输出端(OUT)指定的存储单元中去。IN1与OUT共用存储单元。
加法和减法指令的格式及功能如表6-10所示。
表6-10 加法和减法指令使用格式及功能
在LAD中:IN1+IN2=OUT, IN1-IN2=OUT
在STL中:IN1+OUT=OUT, OUT-IN1=OUT
图6-13所示的为加法和减法指令的例子。
6.4.2 乘法指令和除法指令
(1)乘法指令(multiply)的功能是把两个输入端(IN1,IN2)指定的数相乘,结果送到输出端(OUT)指定的存储单元中去。操作数IN2与OUT共用一个地址单元,即IN1×OUT=OUT。
(2)除法指令(divide)的功能是把两个输入端(IN1,IN2)指定的数相除,结果送到输出端(OUT)指定的存储单元中去。操作数IN1与OUT共用一个地址单元,即OUT/IN2=OUT。乘法和除法指令格式及功能如表6-11所示。
表6-11 乘法和除法指令格式及功能
其中,完全整数除法指令(DIV IN1,OUT)将两个16位的整数相除,产生一个32位的结果。低16位为商,高16位为余数。
在LAD中:IN1*IN2=OUT, IN1/IN2=OUT。
在STL中:IN1*OUT=OUT, OUT/IN1=OUT。
图6-13所示的为乘法和除法指令的例子。
图6-13 加、减、乘、除法指令举例
在图6-13所示的程序中,若VW10=2000,VW12=150,则执行完该段程序后,各存储单元的结果为:
VW16=2150,VW18=1850,VD20=300000,VW24=13,VW30=50,VW32 =13
6.4.3 递增指令和递减指令
(1)递增指令(increment)也称为自增指令,它对无符号或有符号整数进行自动加1的操作,数据长度为字节、字或双字。
(2)递减指令(decrement)也称为自减指令,它对无符号或有符号整数进行自动减1的操作,数据长度为字节、字或双字。
字节增减是对无符号数操作,而字或双字的增减是对有符号数操作。递增指令与递减指令格式及操作数如下表6-12所示。
表6-12 递增指令和递减指令格式及操作数
在LAD中:IN+1=OUT,IN-1=OUT
在STL中:OUT+1=OUT,OUT-1=OUT
递增双字和递减双字指令在输入双字(IN)上加1或减1,并将结果置入OUT。图6-14所示的为递增和递减指令的例子。
图6-14 递增和递减指令举例
图6-14(a)所示的为梯形图程序,图6-14(b)所示的为梯形图对应的语句表,在I0.0的上升沿,使能输入接通1个扫描周期,可执行1次字递增和双字递减指令。从语句表可以看出,由于输入IN和输出OUT不是同一个地址,当使能输入有效时,先将AC0中的数据传送给VW50,再执行VW50=VW50+1的字加1操作;先将VD100中的数据传送给VD110后,再执行VD110=VD110-1的双字减1操作。
6.4.4 正弦、余弦和正切指令
正弦(SIN)、余弦(COS)和正切(TAN)指令用于计算角度值IN的三角函数值,并将结果存放在OUT中,其输入角度值是弧度值。计算结果如下:
SIN(IN)=OUT,COS(IN)=OUT,TAN(IN)=OUT
正弦、余弦和正切指令格式及操作数如表6-13所示。
表6-13 正弦、余弦和正切指令格式及操作数
求三角函数前要先将角度从度数变为弧度,这只要使用MULR(*R)指令,将度数乘以1.745329E-2(接近π/180)即可。
6.4.5 平方根、自然对数和自然指数指令
(1)平方根(square root)指令SQRT的功能是对32位实数IN取平方根,并产生一个32位实数结果OUT。
(2)自然对数(natural logarithm)指令LN的功能是对32位实数IN计算自然对数,得到32位的实数结果存放到OUT中。
(3)自然指数(natural exponential)指令EXP的功能是将32位的实数IN取以e的为底的指数,得到32位的实数结果存放到OUT中。
平方根、自然对数和自然指数指令格式及操作数如表6-14所示。
表6-14 平方根、自然对数和自然指数指令格式及操作数
例如:求5的立方,即
求144的平方根,即
求5的3/2次方,即
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。