算术运算指令
1.整数与双整数加减法指令
整数加法(ADD-I)和减法(SUB-I)指令是:使能输入有效时,将两个16位符号整数相加或相减,并产生一个16位的结果输出到OUT。
双整数加法(ADD-D)和减法(SUB-D)指令是:使能输入有效时,将两个32位符号整数相加或相减,并产生一个32位结果输出到OUT。
整数与双整数加减法指令格式如表5-14所示。
表5-14整数与双整数加减法指令格式
|
|
|
|
|
MOVWIN1,OUT |
MOVWIN1,OUT |
MOVDIN1,OUT |
MOVDIN1,OUT |
|
功能 |
IN1+IN2=OUT |
IN1-IN2=OUT |
IN1+IN2=OUT |
IN1-IN2=OUT |
操作数及数据类型 |
IN1/IN2:VW,IW,QW,MW,SW,SMW,T,C,AC,LW,AIW,常量,*VD,*LD,*AC OUT:VW,IW,QW,MW,SW,SMW,T,C,LW,AC,*VD,*LD,*AC IN/OUT数据类型:整数 |
IN1/IN2: VD,ID,QD,MD,SMD,SD,LD,AC,HC,常量,*VD,*LD,*AC OUT:VD,ID,QD,MD,SMD,SD,LD,AC,*VD,*LD,*AC IN/OUT数据类型:双整数 |
||
ENO=0的错误条件 |
0006间接地址,SM4.3运行时间,SM1.1溢出 |
说明:
(1)当IN1、IN2和OUT操作数的地址不同时,在STL指令中,首先用数据传送指令将IN1中的数值送入OUT,然后再执行加、减运算即:OUT+IN2=OUT、OUT-IN2=OUT。为了节省内存,在整数加法的梯形图指令中,可以指定IN1或IN2=OUT,这样,可以不用数据传送指令。如指定INI=OUT,则语句表指令为:+IIN2,OUT;如指定IN2=OUT,则语句表指令为:+IIN1,OUT。在整数减法的梯形图指令中,可以指定IN1=OUT,则语句表指令为:-IIN2,OUT。这个原则适用于所有的算术运算指令,且乘法和加法对应,减法和除法对应。
(2)整数与双整数加减法指令影响算术标志位SM1.0(零标志位),SM1.1(溢出标志位)和SM1.2(负数标志位)。
【例5-11】求5000加400的和,5000在数据存储器VW200中,结果放入AC0。程序如图5-17所示。
MOVWVW200,AC0//VW200→AC0
+I+400,AC0//VW200+400=AC0
图5-17例5-11题图
2.整数乘除法指令
整数乘法指令(MUL-I)是:使能输入有效时,将两个16位符号整数相乘,并产生一个16位积,从OUT指定的存储单元输出。
整数除法指令(DIV-I)是:使能输入有效时,将两个16位符号整数相除,并产生一个16位商,从OUT指定的存储单元输出,不保留余数。如果输出结果大于一个字,则溢出位SM1.1置位为1。
双整数乘法指令(MUL-D):使能输入有效时,将两个32位符号整数相乘,并产生一个32位乘积,从OUT指定的存储单元输出。
双整数除法指令(DIV-D):使能输入有效时,将两个32位整数相除,并产生一个32位商,从OUT指定的存储单元输出,不保留余数。
整数乘法产生双整数指令(MUL):使能输入有效时,将两个16位整数相乘,得出一个32位乘积,从OUT指定的存储单元输出。
整数除法产生双整数指令(DIV):使能输入有效时,将两个16位整数相除,得出一个32位结果,从OUT指定的存储单元输出。其中高16位放余数,低16位放商。
整数乘除法指令格式如表5-15所示。www.plcs.cn
整数双整数乘除法指令操作数及数据类型和加减运算的相同。
整数乘法除法产生双整数指令的操作数:IN1/IN2:VW,IW,QW,MW,SW,SMW,T,C,LW,AC,AIW,常量,*VD,*LD,*AC。数据类型:整数。
OUT:VD,ID,QD,MD,SMD,SD,LD,AC,*VD,*LD,*AC 。数据类型:双整数。
使ENO=0的错误条件:0006(间接地址),SM1.1(溢出),SM1.3(除数为0)。
对标志位的影响:SM1.0(零标志位),SM1.1(溢出),SM1.2(负数),SM1.3(被0除)。
表5-15整数乘除法指令格式
|
|
|
|
|
|
|
MOVWIN1,OUT |
MOVWIN1,OUT |
MOVDIN1,OUT |
MOVDIN1,OUT |
MOVWIN1,OUT MULIN2,OUT |
MOVWIN1,OUT DIVIN2,OUT |
|
功能 |
IN1*IN2=OUT |
IN1/IN2=OUT |
IN1*IN2=OUT |
IN1/IN2=OUT |
IN1*IN2=OUT |
IN1/IN2=OUT |
【例5-12】乘除法指令应用举例,程序如图5-18所示。
MULAC1VD100
DIVVW10VD200
图5-18例5-12题图
注意:因为VD100包含:VW100和VW102两个字,VD200包含:VW200和VW202两个字,所以在语句表指令中不需要使用数据传送指令。
3.实数加减乘除指令
实数加法(ADD-R)、减法(SUB-R)指令:将两个32位实数相加或相减,并产生一个32位实数结果,从OUT指定的存储单元输出。
实数乘法(MUL-R)、除法(DIV-R)指令:使能输入有效时,将两个32位实数相乘(除),并产生一个32位积(商),从OUT指定的存储单元输出。
操作数:IN1/IN2: VD,ID,QD,MD,SMD,SD,LD,AC,常量,*VD,*LD,*AC。
OUT:VD,ID,QD,MD,SMD,SD,LD,AC,*VD,*LD,*AC 。
数据类型:实数。
指令格式如表5-16所示。
表5-16实数加减乘除指令
|
|
|
|
|
MOVDIN1,OUT |
MOVDIN1,OUT |
MOVDIN1,OUT |
MOVDIN1,OUT |
|
功能 |
IN1+IN2=OUT |
IN1-IN2=OUT |
IN1*IN2=OUT |
IN1/IN2=OUT |
ENO=0的错误条件 |
0006间接地址,SM4.3运行时间,SM1.1溢出 |
0006间接地址,SM1.1溢出,SM4.3运行时间,SM1.3除数为0 |
||
对标志位的影响 |
SM1.0(零),SM1.1(溢出),SM1.2(负数),SM1.3(被0除) |
【例5-13】实数运算指令的应用,程序如图5-19所示。
+RAC1,VD100
/RVD100,AC0
图5-19例5-13题图
4.数学函数变换指令
数学函数变换指令包括平方根、自然对数、指数、三角函数等。
(1)平方根(SQRT)指令:对32位实数(IN)取平方根,并产生一个32位实数结果,从OUT指定的存储单元输出。
(2)自然对数(LN)指令:对IN中的数值进行自然对数计算,并将结果置于OUT指定的存储单元中。
求以10为底数的对数时,用自然对数除以2.302585(约等于10的自然对数)。
(3)自然指数(EXP)指令:将IN取以e为底的指数,并将结果置于OUT指定的存储单元中。
将“自然指数”指令与“自然对数”指令相结合,可以实现以任意数为底,任意数为指数的计算。求yx,输入以下指令:EXP(x*LN(y))。
例如:求23=EXP(3*LN(2))=8;27的3次方根=271/3=EXP(1/3*LN(27))=3。
(4)三角函数指令:将一个实数的弧度值IN分别求SIN、COS、TAN,得到实数运算结果,从OUT指定的存储单元输出。
函数变换指令格式及功能如表5-17所示。
表5-17函数变换指令格式及功能
|
|
|
|
|
|
|
SQRTIN,OUT |
||||||
功能 |
SQRT(IN)=OUT |
LN(IN)=OUT |
EXP(IN)=OUT |
SIN(IN)=OUT |
COS(IN)=OUT |
TAN(IN)=OUT |
操作数及数据类型 |
IN: VD,ID,QD,MD,SMD,SD,LD,AC,常量,*VD,*LD,*AC OUT:VD,ID,QD,MD,SMD,SD,LD,AC,*VD,*LD,*AC 数据类型:实数 |
使ENO=0的错误条件:0006(间接地址),SM1.1(溢出)SM4.3(运行时间)
对标志位的影响:SM1.0(零),SM1.1(溢出),SM1.2(负数)
【例5-14】求45º正弦值。
分析:先将45º转换为弧度:(3.14159/180)*45,再求正弦值。程序如图5-20所示。
MOVR3.14159,AC1
/R180.0,AC1
*R45.0,AC1
SINAC1,AC0
图5-20例5-14题图
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论