1、第九章 S7-200系列PLC功能指令及应用功能指令的分类:功能指令的分类:数据处理类指令数据处理类指令程序控制类指令程序控制类指令特殊功能类指令特殊功能类指令外部设备指令外部设备指令指令表达形式指令表达形式助记符助记符+操作数操作数操作数类型及长度操作数类型及长度分源操作数、目标操作数和其他操作数分源操作数、目标操作数和其他操作数长度有字节、字、双字长度有字节、字、双字指令的执行条件及执行形式指令的执行条件及执行形式指令功能及指令功能及ENO状态状态9.39.3传送比较类指令传送比较类指令 1.1.单数据传送单数据传送 (1 1)MOVBMOVB,字节传送指令字节传送指令(2 2)BIRBI
2、R,传送字节立即读指令传送字节立即读指令 (3 3)BIWBIW,传送字节立即写指令传送字节立即写指令 (4 4)MOVWMOVW,字传送指令字传送指令 (5 5)MOVDMOVD,双字传送指令双字传送指令 (6 6)MOVRMOVR,实数传送指令实数传送指令 2.2.块数据传送块数据传送 (1 1)BMBBMB,字节块传送指令字节块传送指令(2 2)BMWBMW,字块传送指令字块传送指令 (3 3)BMDBMD,双字块传送指令双字块传送指令 1.1.字节、字、双字和实数传送指令字节、字、双字和实数传送指令使能输入有效时,把一个字节、字、双字使能输入有效时,把一个字节、字、双字和实数由和实数由
3、ININ传送到传送到OUTOUT所指的存储单元。传所指的存储单元。传送之后,原内容保持不变。送之后,原内容保持不变。指令格式分别为:指令格式分别为:MOVBMOVB IN,OUT IN,OUT MOVW IN,OUT MOVW IN,OUT MOVD IN,OUT MOVD IN,OUT MOVR IN,OUT MOVR IN,OUT例:例:MOVBMOVBVB0,QB0VB0,QB0传送类指令传送类指令 字节块字节块传送指令传送指令(BMB)(BMB)是将从字节是将从字节(IN)(IN)开始开始的连续的连续N N个字节的数据块全部复制到从字节输出个字节的数据块全部复制到从字节输出单元单元(O
4、UT)(OUT)开始的数据块里,开始的数据块里,N N的数值范围是的数值范围是1 1255255。字块字块传送指令传送指令(BMW)(BMW)是将从字是将从字(IN)(IN)开始的连开始的连续续N N个字的数据块全部复制到从字节输出单元个字的数据块全部复制到从字节输出单元(OUT)(OUT)开始的数据块里,其中开始的数据块里,其中N N的数值范围是的数值范围是1 1255255。双字块双字块传送指令传送指令(BMD)(BMD)是将从双字是将从双字(IN)(IN)开始开始的连续的连续N N个双字的数据块全部复制到从双字输出个双字的数据块全部复制到从双字输出单元单元(OUT)(OUT)开始的数据块
5、里,其中开始的数据块里,其中N N的数值范围的数值范围是是1 1255255。在在执行块传送指令时,输入源字节、字或双字的内容都是不变的。执行块传送指令时,输入源字节、字或双字的内容都是不变的。3 3字节交换指令字节交换指令SWAPSWAP,字节交换指令。使能输入有效时,将字型输入数据字节交换指令。使能输入有效时,将字型输入数据ININ的高字节和低字节进行交换。结果仍放回字的高字节和低字节进行交换。结果仍放回字ININ中。本指令只中。本指令只对对字型字型数据进行处理,指令的执行不影响的特殊存储器位。数据进行处理,指令的执行不影响的特殊存储器位。使能流输出使能流输出ENOENO断开的出错条件:断
6、开的出错条件:SM4.3SM4.3(运行时间);运行时间);00060006(间接寻址)。(间接寻址)。指令格式:指令格式:SWAPSWAPININ(字节字节交换)交换)例:例:SWAPSWAPVW10VW10单元地址单元地址单元内容单元内容备注备注执行前执行前VW1010110101 00000001执行后执行后VW1000000001 10110101将高、低字节的内容交换将高、低字节的内容交换4 4、传送字节立即读、立即写指令传送字节立即读、立即写指令 BIRBIR,传送字节立即读指令传送字节立即读指令使能输入有效时,立即读取单字节物理输使能输入有效时,立即读取单字节物理输入区数据入区数
7、据ININ,并传送到并传送到OUTOUT所指的字节存储所指的字节存储单元。但过程映像寄存器并不刷新。单元。但过程映像寄存器并不刷新。ININ的寻址范围:的寻址范围:IBIBOUTOUT的寻址范围:的寻址范围:VBVB、IBIB、QBQB、MBMB、SBSB、SMBSMB、LBLB、ACAC、*VDVD、*ACAC、*LDLD。指令格式:指令格式:BIRBIRIN1,OUTIN1,OUT例:例:BIRBIRIB0,VB10IB0,VB10 BIWBIW,传送字节立即写指令传送字节立即写指令 使能输入有效时,从内存地址使能输入有效时,从内存地址(IN)(IN)中读取中读取数据,并传送到数据,并传送
8、到OUTOUT所指的字节存储单元。所指的字节存储单元。同时刷新过相应的过程映像寄存器。同时刷新过相应的过程映像寄存器。ININ的寻址范围:的寻址范围:IBIB、QBQB、VBVB、MBMB、SMBSMB、SBSB、LBLB、AC AC、*VDVD、*ACAC、*LDLD、常数常数 OUTOUT的寻址范围:的寻址范围:QBQB、*VDVD、*ACAC、*LD LD。指令格式:指令格式:BIW IN1,OUTBIW IN1,OUT 例:例:BIW IB0,VB10BIW IB0,VB101.1.字节比较字节比较字节比较用于比较两个字节型整数值字节比较用于比较两个字节型整数值IN1IN1和和IN2I
9、N2的大小,是无符号比较。的大小,是无符号比较。整数整数IN1IN1和和IN2IN2的寻址范围:的寻址范围:VBVB、IBIB、QBQB、MBMB、SBSB、SMBSMB、LBLB、*VDVD、*ACAC、*LDLD、常数、常数在梯形图中,当比较式为真时,该触点闭在梯形图中,当比较式为真时,该触点闭合合在语句表中,当比较式为真时,将栈顶置在语句表中,当比较式为真时,将栈顶置1 1比较指令比较指令2.2.整数比较整数比较整数比较用于比较两个整数比较用于比较两个一字长一字长整数值整数值IN1IN1和和IN2 IN2 的大小,是的大小,是有符号有符号比较(整数范围为比较(整数范围为16#800016
10、#8000和和16#7FFF16#7FFF之间)。比较式可以是之间)。比较式可以是LDWLDW、AWAW或或OWOW后直接加比较运算符构成。后直接加比较运算符构成。整数整数IN1IN1和和IN2IN2的寻址范围:的寻址范围:VWVW、IWIW、QWQW、MWMW、SWSW、SMWSMW、LWLW、AIWAIW、T T、C C、ACAC、*VDVD、*ACAC、*LDLD和常数。和常数。在梯形图中,当比较式为真时,该触点闭合在梯形图中,当比较式为真时,该触点闭合在语句表中,当比较式为真时,将栈顶置在语句表中,当比较式为真时,将栈顶置1 13.3.双字整数比较双字整数比较双字整数比较用于比较两个双
11、字长整数值双字整数比较用于比较两个双字长整数值IN1IN1和和IN2IN2的大小,是有符号比较(双字整数范围的大小,是有符号比较(双字整数范围为为16#8000000016#80000000和和16#7FFFFFFF16#7FFFFFFF之间)。之间)。指令格式例:指令格式例:LDD=LDD=VD10,VD10,VD14VD14ADADMD0,MD0,MD8MD8OD=OD=LDD=HC0,HC0,*AC0AC0在梯形图中,当比较式为真时,该触点闭合在梯形图中,当比较式为真时,该触点闭合在语句表中,当比较式为真时,将栈顶置在语句表中,当比较式为真时,将栈顶置1 14.4.实数比较实数比较实数比
12、较用于比较两个双字长实数值实数比较用于比较两个双字长实数值IN1IN1和和IN2IN2的大小,是有符号比较(负实数范围为的大小,是有符号比较(负实数范围为-1.175495E-381.175495E-38和和-3.402823E+38-3.402823E+38,正实数范围正实数范围为为+1.175495E-38+1.175495E-38和和+3.402823E+38+3.402823E+38)。)。比较比较式可以是式可以是LDRLDR、ARAR或或OROR后直接加比较运算符构后直接加比较运算符构成。成。指令格式例:指令格式例:LDR=LDR=VD10,VD10,VD18VD18ARARMD0,
13、MD0,MD12MD12OR=ORAR *AC1,AC1,VD100VD100在梯形图中,当比较式为真时,该触点闭合在梯形图中,当比较式为真时,该触点闭合在语句表中,当比较式为真时,将栈顶置在语句表中,当比较式为真时,将栈顶置1 1数学逻辑运算指令数学逻辑运算指令:按:按字节、字或双字进行逻辑运字节、字或双字进行逻辑运算的指令。算的指令。S7-200S7-200提供的数学逻辑运算指令可以按字、字节或提供的数学逻辑运算指令可以按字、字节或双字进行逻辑与、逻辑或、逻辑异或和逻辑取反等双字进行逻辑与、逻辑或、逻辑异或和逻辑取反等数学操作。数学操作。9.4 9.4 数学运算指令数学运算指令 S7-20
14、0PLC S7-200PLC四则运算指令有加法、减四则运算指令有加法、减法、乘法、除法、加法、乘法、除法、加1 1和减和减1 1等指令。等指令。加、减法指令包括:加、减法指令包括:1.1.整数加、减法运算指令整数加、减法运算指令2.2.双整数加、减法运算指令双整数加、减法运算指令3.3.实数加、减法运算指令实数加、减法运算指令1.1.整数加法整数加法+I+I,整数加法指令。整数加法指令。使能输入有效时,将两个单字长使能输入有效时,将两个单字长(1616位)的符号整数位)的符号整数IN1IN1和和IN2IN2相加,相加,产生一个产生一个1616位整数结果位整数结果OUTOUT。在在STLSTL中
15、,通常中,通常IN2IN2与与OUTOUT公用一个地公用一个地址单元,执行结果为址单元,执行结果为IN1+OUT OUTIN1+OUT OUT指令格式:指令格式:+I IN1+I IN1,OUTOUT2.2.双整数加法双整数加法+D+D,双整数加法指令。使能输入有效双整数加法指令。使能输入有效时,将两个双字长(时,将两个双字长(3232位)的符号双整位)的符号双整数数IN1IN1和和IN2IN2相加,产生一个相加,产生一个3232位双整数位双整数结果结果OUTOUT。在在STLSTL中,通常中,通常IN2IN2与与OUTOUT公用一个地址公用一个地址单元,执行结果为单元,执行结果为IN1+OU
16、T OUTIN1+OUT OUT OUTOUT的寻址范围:的寻址范围:VDVD、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、ACAC、*VDVD、*ACAC、*LDLD。指令格式:指令格式:+D+DIN1IN1,OUTOUT3 3、实数加法指令、实数加法指令+R+R,实数加法指令。使能输入有效时,将两实数加法指令。使能输入有效时,将两个双字长(个双字长(3232位)的实数位)的实数IN1IN1和和IN2IN2相加,产相加,产生一个生一个3232位实数结果位实数结果OUTOUT。在在STLSTL中,通常中,通常IN2IN2与与OUTOUT公用一个地址单元,公用一个地址单元,执
17、行结果为执行结果为IN1+OUT OUTIN1+OUT OUTOUTOUT的寻址范围:的寻址范围:VDVD、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、ACAC、*VDVD、*ACAC、*LDLD。本指令影响的特殊存储器位:本指令影响的特殊存储器位:SM1.0SM1.0(零);零);SM1.1SM1.1(溢出);溢出);SM1.2SM1.2(负)。负)。指令格式:指令格式:+R+RIN1IN1,OUTOUT返回本节返回本节在在LADLAD和和FBDFBD中,执行结果:中,执行结果:IN1+IN2=OUTIN1+IN2=OUT。在在STLSTL中,执行结果:中,执行结果:IN
18、1+OUT=OUTIN1+OUT=OUT。4.4.减法减法减法指令是对有符号数进行相减操作。包括:减法指令是对有符号数进行相减操作。包括:整数减法、双整数减法和实数减法整数减法、双整数减法和实数减法。指令格式:指令格式:-I-I IN2,IN2,OUTOUT(整数减法)整数减法)-D-D IN2,IN2,OUTOUT(双整数减法)双整数减法)-R-R IN2,IN2,OUTOUT(实数减法)实数减法)在在STLSTL中,通常中,通常IN1IN1与与OUTOUT公用一个地址单元,执行公用一个地址单元,执行结果为结果为OUT-IN2 OUTOUT-IN2 OUT例:例:-I-IAC0,AC0,VW
19、4VW4在在LADLAD和和FBDFBD中,执行结果:中,执行结果:IN1-IN2=OUTIN1-IN2=OUT。在在STLSTL中,执行结果:中,执行结果:OUT-IN2=OUTOUT-IN2=OUT。5 5、乘法、乘法*I I,整数乘法指令。使能输入有效时,将两个整数乘法指令。使能输入有效时,将两个单字长(单字长(1616位)的符号整数位)的符号整数IN1IN1和和IN2IN2相乘,产相乘,产生一个生一个1616位整数结果位整数结果OUTOUT。在在STLSTL中,通常中,通常IN2IN2与与OUTOUT公用一个地址单元,公用一个地址单元,执行结果为执行结果为IN1IN1*OUT OUTO
20、UT OUT指令格式:指令格式:*I IIN1IN1,OUTOUT例:例:*I IAC0AC0,VW0VW0完全整数乘法完全整数乘法MULMUL,完全整数乘法指令。使能输入有效时,将两个单字长完全整数乘法指令。使能输入有效时,将两个单字长(1616位)的符号整数位)的符号整数IN1IN1和和IN2IN2相乘,产生一个相乘,产生一个3232位双整数结位双整数结果果OUTOUT。在在STLSTL中,通常中,通常IN2IN2与与OUTOUT的低的低1616位公用一个地址单元,执行位公用一个地址单元,执行结果为结果为IN1IN1*OUT OUTOUT OUTOUTOUT的寻址范围:的寻址范围:VDVD
21、、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、ACAC、*VDVD、*ACAC、*LDLD。本指令影响的特殊存储器位:本指令影响的特殊存储器位:SM1.0SM1.0(零);零);SM1.1SM1.1(溢溢出);出);SM1.2SM1.2(负);负);SM1.3SM1.3(被(被0 0除)。除)。指令格式:指令格式:MUL MUL IN1IN1,OUTOUT 双整数乘法双整数乘法*D D,双整数乘法指令。使能输入有效时,将两个双字长(双整数乘法指令。使能输入有效时,将两个双字长(3232位)位)的符号整数的符号整数IN1IN1和和IN2IN2相乘,产生一个相乘,产生一个323
22、2位双整数结果位双整数结果OUTOUT。在在STLSTL中,通常中,通常IN2IN2与与OUTOUT公用一个地址单元,执行结果为公用一个地址单元,执行结果为IN1IN1*OUT OUTOUT OUTIN1IN1和和IN2IN2的寻址范围:的寻址范围:VDVD、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、HCHC、ACAC、*VDVD、*ACAC、*LDLD和常数。和常数。OUTOUT的寻址范围:的寻址范围:VDVD、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、ACAC、*VDVD、*ACAC、*LDLD。本指令影响的特殊存储器位:本指令影响的特殊存储器位
23、:SM1.0SM1.0(零);零);SM1.1SM1.1(溢出);溢出);SM1.2SM1.2(负)负);SM1.3SM1.3(被(被0 0除)。除)。指令格式:指令格式:*D DIN1IN1,OUTOUT例:例:*D DVD0VD0,AC0AC0 实数乘法实数乘法*R R,实数乘法指令。使能输入有效时,将两个双字长(实数乘法指令。使能输入有效时,将两个双字长(3232位)位)的实数的实数IN1IN1和和IN2IN2相乘,产生一个相乘,产生一个3232位实数结果位实数结果OUTOUT。在在STLSTL中,通常中,通常IN2IN2与与OUTOUT公用一个地址单元,执行结果为公用一个地址单元,执行
24、结果为IN1IN1*OUT OUTOUT OUTIN1IN1和和IN2IN2的寻址范围:的寻址范围:VDVD、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、ACAC、*VDVD、*ACAC、*LDLD和常数。和常数。OUTOUT的寻址范围:的寻址范围:VDVD、IDID、QDQD、MDMD、SDSD、SMDSMD、LDLD、ACAC、*VDVD、*ACAC、*LDLD。本指令影响的特殊存储器位:本指令影响的特殊存储器位:SM1.0SM1.0(零);零);SM1.1SM1.1(溢出);溢出);SM1.2SM1.2(负);负);SM1.3SM1.3(被(被0 0除)。除)。指令格
25、式:指令格式:*R RIN1IN1,OUTOUT例:例:*R RVD0VD0,AC0AC0除法除法指令格式:指令格式:/I/IIN2,IN2,OUTOUT(整数除法)整数除法)DIV DIVIN2,IN2,OUTOUT(整数完全除法)整数完全除法)/D /DIN2,IN2,OUTOUT(双整数除法双整数除法 /R /RIN2,IN2,OUTOUT(实数除法)实数除法)在在STLSTL中,通常中,通常IN1IN1与与OUTOUT公用一个地址单元,执行结果为公用一个地址单元,执行结果为OUT/IN2OUT/IN2 OUTOUT在在LADLAD和和FBDFBD中,执行结果:中,执行结果:IN1/IN
26、2=OUTIN1/IN2=OUT。在在STLSTL中,执行结果:中,执行结果:OUT/IN2=OUTOUT/IN2=OUT。两条指令的编程及执行情况比较如图所示。两条指令的编程及执行情况比较如图所示。对于除法指令:对于除法指令:对于完全除法指令:对于完全除法指令:20032003 数学函数指令 1.1.平方根指令平方根指令 2.2.自然对数指令自然对数指令3.3.指数指令指数指令4.4.正弦、余弦、正切指令正弦、余弦、正切指令1.1.平方根平方根SQRTSQRT,平方根指令。把一个双字长(平方根指令。把一个双字长(3232位)位)的实数的实数ININ开平方,得到开平方,得到3232位的实数结果
27、。位的实数结果。本指令影响的特殊存储器位:本指令影响的特殊存储器位:SM1.0SM1.0(零);零);SM1.1SM1.1(溢出和非法值);溢出和非法值);SM1.2SM1.2(负)。负)。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM1.1SM1.1(溢溢出);出);SM4.3SM4.3(运行时间)。运行时间)。指令格式:指令格式:SQRTSQRTININ,OUTOUT例:例:SQRTSQRTVD0VD0,AC0AC02.2.自然对数指令自然对数指令 LNLN,自然对数指令。将一个双字长自然对数指令。将一个双字长(3232位)的实数位)的实数ININ取自然对数,得到取自
28、然对数,得到3232位的实数结果放入输出单元位的实数结果放入输出单元OUTOUT中。中。求以求以1010为底的对数时,用除法指令将为底的对数时,用除法指令将自然对数除以自然对数除以2.3025852.302585即可。即可。该指令影响下列的特殊存储器位:该指令影响下列的特殊存储器位:SM1.0SM1.0(零位),零位),SM1.1SM1.1(溢出),溢出),SM1.2SM1.2(负数),负数),SM4.3SM4.3(运行时间)。运行时间)。指令格式:指令格式:LNLNININ,OUTOUT LD I0.0 /使能输入 LN VD0,AC0/自然对数 /Ln(VD0)=AC0 LN 10.0,V
29、D100/自然对数 /Ln(10)=VD100 /R VD100,AC0/实数除法指令 /AC0/VD100=VD100 应用实例:应用实例:求以求以1010为底的为底的5050(存于(存于VD0VD0)的常用的常用对数,结果放到对数,结果放到AC0AC0。3.3.指数指令指数指令EXPEXP,指数指令。将一个双字长(指数指令。将一个双字长(3232位)位)的实数的实数ININ取以取以e e为底的指数,得到为底的指数,得到3232位位的实数结果的实数结果OUTOUT。指令格式:指令格式:EXPEXPIN,OUTIN,OUT该指令影响下列的特殊存储器位:该指令影响下列的特殊存储器位:SM1.0S
30、M1.0(零位),零位),SM1.1SM1.1(溢出),溢出),SM1.2SM1.2(负数),负数),SM4.3SM4.3(运行时间)。运行时间)。4.4.正弦、余弦、正切指令正弦、余弦、正切指令SINSIN、COSCOS、TANTAN,即正弦、余弦、正切指令。将一即正弦、余弦、正切指令。将一个双字长(个双字长(3232位)的实数弧度值位)的实数弧度值ININ分别取正弦、余分别取正弦、余弦、正切,各得到弦、正切,各得到3232位的实数结果。位的实数结果。如果已知输入值为角度,要先将角度值转化为弧如果已知输入值为角度,要先将角度值转化为弧度值。度值。应用实例:求COS160o的值 LD I0.0
31、 /使能输入 MOVR 3.14159,AC0/装入 AC0/R 180.0,AC0/得/180 弧度 /*R 160.0,AC0/角度转化为弧度 /COS AC0,AC1/求余弦指令 /结果存放到 AC1 1.1.字节增和字节减字节增和字节减INCBINCB,字节增指令。使能输入有效时,把一字节字节增指令。使能输入有效时,把一字节长的长的无符号无符号输入数(输入数(ININ)加)加1 1,得到一字节的,得到一字节的无符无符号号输出结果输出结果OUTOUT。DECBDECB,字节减指令。使能输入有效时,把一字节字节减指令。使能输入有效时,把一字节长的长的无符号无符号输入数(输入数(ININ)减
32、)减1 1,得到一字节的,得到一字节的无符无符号号输出结果输出结果OUTOUT。递增和递减指令 2.2.字增和字减字增和字减 INCWINCW字增指令,使能输入有效时,把一字长字增指令,使能输入有效时,把一字长的的有符号有符号输入数(输入数(ININ)加)加1 1,得到,得到一字长一字长的的有符有符号号输出结果输出结果OUTOUT。DECW DECW字减指令,使能输入有效时,把一字节字减指令,使能输入有效时,把一字节的的有符号有符号输入数(输入数(ININ)减)减1 1,得到一字长的,得到一字长的有符有符号号输出结果输出结果OUTOUT。IN IN的寻址范围:的寻址范围:VWVW、IWIW、Q
33、WQW、MWMW、SWSW、SMSM、LWLW、AIWAIW、T T、C C、ACAC、*VDVD、*ACAC、*LDLD和常数和常数 OUT OUT的寻址范围:的寻址范围:VWVW、IWIW、QWQW、MWMW、SWSW、SMWSMW、LWLW、AIWAIW、T T、C C、ACAC、*VDVD、*ACAC、*LDLD。3.3.双字增和双字减双字增和双字减INCDINCD双字增指令。使能输入有效时,把双字长(双字增指令。使能输入有效时,把双字长(3232位)的位)的有符号有符号输入数(输入数(ININ)加)加1 1,得到双字长的有,得到双字长的有符号输出结果符号输出结果OUTOUT。DECD
34、DECD双字减指令。使能输入有效时,把双字长的有双字减指令。使能输入有效时,把双字长的有符号输入数(符号输入数(ININ)减)减1 1,得到双字长的有符号输出,得到双字长的有符号输出结果结果OUTOUT。4.4.应用实例应用实例 控制要求:食品加工厂对饮料生产线上的盒装饮控制要求:食品加工厂对饮料生产线上的盒装饮料进行计数,每料进行计数,每2424盒为一箱,要求能记录生产的箱数盒为一箱,要求能记录生产的箱数LDI0.0/增脉冲输入端LDC30/复位输入端/循环计数CTU C30,+24/增计数指令/设定脉冲数为 24LDC30/装入计数器触点/作为双字增的/脉冲输入INCDVD100/双字增指
35、令/1 1、逻辑取反运算指令、逻辑取反运算指令INVBINVB字节取反指令求出输入字节字节取反指令求出输入字节(IN)(IN)的反码,得到一个字节结果的反码,得到一个字节结果(OUT)(OUT)INVWINVW字取反指令求出输入字字取反指令求出输入字 (IN)(IN)的的反码,得到一个字结果反码,得到一个字结果(OUT)(OUT)INVDINVD双字取反指令求出输入双字双字取反指令求出输入双字(IN)(IN)的反码,得到一个双字结果的反码,得到一个双字结果(OUT)(OUT)在在STLSTL中,通常中,通常IN1IN1与与OUTOUT公用一个地公用一个地址单元。址单元。逻辑操作指令逻辑操作指令
36、2.2.字节运算指令字节运算指令包括字节与、字节或、字节异或、包括字节与、字节或、字节异或、字节取反。字节取反。ANDB(ANDB(字节与字节与)指令对两个输入字节指令对两个输入字节按位与按位与,得到一个字节结果,得到一个字节结果(OUT)(OUT)ORB(ORB(字节或字节或)指令对两个输入字节指令对两个输入字节按位或按位或,得到一个字节结果,得到一个字节结果(OUT)(OUT)XORB(XORB(字节与字节与)指令对两个输入字节指令对两个输入字节按位异或按位异或,得到一个字节结果得到一个字节结果(OUT)(OUT)3.3.字逻辑运算字逻辑运算包括字与、字或、字异或、字取反。包括字与、字或、
37、字异或、字取反。ANDW(ANDW(字与字与)指令对两个输入字按位与,指令对两个输入字按位与,得到一个字结果得到一个字结果(OUT)(OUT)ORW(ORW(字或字或)指令对两个输入字按位或,指令对两个输入字按位或,得到一个字结果得到一个字结果(OUT)(OUT)XORW(XORW(字与字与)指令对两个输入字按位异指令对两个输入字按位异或或,得到一个字结果得到一个字结果(OUT)(OUT)4.4.双字逻辑运算双字逻辑运算包括双字与、双字或、双字异或、双字包括双字与、双字或、双字异或、双字取反。取反。ANDD(ANDD(双字与双字与)指令对两个输入双字按指令对两个输入双字按位与,得到一个双字结果
38、位与,得到一个双字结果(OUT)(OUT)ORD(ORD(双字或双字或)指令对两个输入双字按位指令对两个输入双字按位或,得到一个双字结果或,得到一个双字结果(OUT)(OUT)XORD(XORD(双字与双字与)指令对两个输入双字按位指令对两个输入双字按位异或异或,得到一个双字结果得到一个双字结果(OUT)(OUT)9.59.5数据处理类指令数据处理类指令1 1、BCDBCD码与整数之间互换指令码与整数之间互换指令(1 1)BCDBCD码到整数(码到整数(0-99990-9999的的BCDBCD码)码)(2 2)整数到)整数到BCDBCD码(码(0-99990-9999的整数)的整数)上述指令执
39、行结果影响特殊标志位上述指令执行结果影响特殊标志位SM1.6SM1.6(非法非法BCDBCD码标志位),即输码标志位),即输入的源字若不是入的源字若不是BCDBCD码,则标志位被码,则标志位被置置1 1。数据转换数据转换2 2、双整数转换为实数指令、双整数转换为实数指令DTRDTR,使能输入有效时,将,使能输入有效时,将3232位位有有符号符号的双整数输入数据的双整数输入数据ININ转换成转换成3232位的实数,并将结果送到位的实数,并将结果送到OUTOUT输输出。出。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM4.3SM4.3(运行时间);(运行时间);0006000
40、6(间接(间接寻址)。寻址)。指令格式指令格式 :DTR IN,OUTDTR IN,OUT3 3、两种取整指令、两种取整指令 ROUNDROUND,使能输入有效时,将输入,使能输入有效时,将输入的实数的实数ININ转换成转换成双整数双整数的值,并将的值,并将结果送到结果送到OUTOUT输出。输出。如果小数部分大于如果小数部分大于0.50.5,就进,就进1 1位。位。该指令影响溢出标志位该指令影响溢出标志位SM1.1SM1.1。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM4.3SM4.3(运行时间);运行时间);00060006(间接(间接寻址);寻址);SM1.1 SM
41、1.1(溢出)。溢出)。指令格式:指令格式:ROUND IN,OUTROUND IN,OUT 例:例:ROUND AC0,VD100ROUND AC0,VD100 TRUNCTRUNC指令是将输入的指令是将输入的3232位实数位实数ININ转转换为换为3232位有符号的整数值。位有符号的整数值。只有实数的整数部分被转换只有实数的整数部分被转换。如果要转换的值是无效的实数,或如果要转换的值是无效的实数,或因太大而无法表示输出,则溢出位因太大而无法表示输出,则溢出位SM1.1SM1.1被置位,同时输出保持上一次被置位,同时输出保持上一次的值不变。的值不变。该指令影响溢出标志位该指令影响溢出标志位S
42、M1.1SM1.1。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM4.3SM4.3(运行时间);运行时间);00060006(间接寻(间接寻址);址);SM1.1 SM1.1(溢出)。溢出)。指令格式:指令格式:TRUNC IN,OUTTRUNC IN,OUT 例:例:TRUNC AC0,VD100TRUNC AC0,VD1004 4、双整数和整数之间互换指令、双整数和整数之间互换指令 DTIDTI,使能输入有效时,将双整,使能输入有效时,将双整数输入数据数输入数据ININ转换成整数类型,转换成整数类型,并将结果送到并将结果送到OUTOUT输出。输入数据输出。输入数据超出
43、整数范围则产生溢出。同时超出整数范围则产生溢出。同时输出保持上一次的值不变输出保持上一次的值不变 移位指令影响的特殊存储器位:移位指令影响的特殊存储器位:SM1.1SM1.1(溢出)。溢出)。使能流输出使能流输出ENOENO断开的出错条件断开的出错条件:SM1.1SM1.1(溢出);溢出);SM4.3SM4.3(运行时运行时间);间);00060006(间接寻址)。(间接寻址)。指令格式:指令格式:DTIDTI IN,OUTIN,OUT 例:例:DTIDTIAC0,VW20AC0,VW20 ITDITD,使能输入有效时,将整,使能输入有效时,将整数输入数据数输入数据ININ转换成双整数类转换成
44、双整数类型(符号进行扩展),并将结型(符号进行扩展),并将结果送到果送到OUTOUT输出。输出。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM4.3SM4.3(运行时间);运行时间);00060006(间(间接寻址)。接寻址)。指令格式:指令格式:ITDITD IN,OUTIN,OUT 例:例:ITDITDVW0,AC0VW0,AC05 5、整数和字节之间互换指令、整数和字节之间互换指令(1 1)字节到整数)字节到整数BTIBTI,使能输入有效时,将字节输,使能输入有效时,将字节输入数据入数据ININ转换成整数类型,并将结转换成整数类型,并将结果送果送到到OUTOUT输出
45、。字节型是无符号输出。字节型是无符号的,所以的,所以没有符号扩展没有符号扩展。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM4.3SM4.3(运行时间);运行时间);00060006(间接(间接寻址)。寻址)。指令格式:指令格式:BTIBTI IN,OUTIN,OUT例:例:BTIBTIVB0,AC0VB0,AC0(2 2)整数到字节)整数到字节ITBITB,使能输入有效时,将整数输入,使能输入有效时,将整数输入数据数据ININ转换成字节类型,并将结果转换成字节类型,并将结果送到送到OUTOUT输出。输入数据超出字节范输出。输入数据超出字节范围(围(02550255)则产
46、生溢出。)则产生溢出。移位指令影响的特殊存储器位:移位指令影响的特殊存储器位:SM1.1SM1.1(溢出)。溢出)。使能流输出使能流输出ENOENO断开的出错条件:断开的出错条件:SM1.1SM1.1(溢出溢出););SM4.3SM4.3(运行时运行时间);间);00060006(间接寻址)。(间接寻址)。指令格式指令格式:ITBITBIN,OUTIN,OUT例:例:ITBITB AC0,VB10AC0,VB10程序实例程序实例功能:模拟量控制程序中的数据类型转换。将模拟功能:模拟量控制程序中的数据类型转换。将模拟量输入端采样值由整数转换为双整数,然后由双整量输入端采样值由整数转换为双整数,然
47、后由双整数转换为实数,再除以一个比例因子得到数转换为实数,再除以一个比例因子得到PLCPLC可以处可以处理的范围内的值。理的范围内的值。LD SM0.0/使能输入 ITD AIW2,AC0/整数转换为双整数 /DTR AC0,AC0/双整数转换为实数 /R 32768.0,AC0/实数除法指令 /AC0/32768=VD100 MOVR AC0,VD200/实数传送指令 6 6、ASCIIASCII码与十六进制数码与十六进制数(1 1)ASCIIASCII码转化为十六进制数码转化为十六进制数ATHATH,把从输入字符把从输入字符ININ开始的,长度开始的,长度为为LENLEN的的ASCIIAS
48、CII码码字符串转换为十六进制数,并存到以字符串转换为十六进制数,并存到以OUTOUT为首地址的连续输出单元中。有效的为首地址的连续输出单元中。有效的ASCIIASCII码输入字符是码输入字符是0 0到到9 9的十六进制数代码值的十六进制数代码值30H30H到到39H39H,和和大写字符大写字符A A到到F F的十六进制数代的十六进制数代码值码值41H41H到到46H46H这些字母数字字符。这些字母数字字符。ASCIIASCII字字符串的最大长度为符串的最大长度为255255个字符。个字符。(2 2)十六进制数转化为十六进制数转化为ASCIIASCII码码HTAHTA,把从输入字符把从输入字符
49、ININ开始的,长度为开始的,长度为LENLEN的的十六进制数转换为十六进制数转换为ASCIIASCII码字符串,并存到以码字符串,并存到以OUTOUT为首地址的连续输出单元中。可转换的十为首地址的连续输出单元中。可转换的十六进制数的最大个数为六进制数的最大个数为255255。以上两条指令影响特殊标志位以上两条指令影响特殊标志位SM1.7SM1.7(非法非法ASCIIASCII码标志位)码标志位)7 7、整数、双整数和实数转换为、整数、双整数和实数转换为ASCIIASCII码码(1 1)ITAITA指令:整数转换为指令:整数转换为ASCIIASCII码指令,将码指令,将一个整数字一个整数字IN
50、IN转换成一个转换成一个ASCIIASCII码字符串。码字符串。格式格式FMTFMT指定小数点右侧的转换精度和小数指定小数点右侧的转换精度和小数点是使用逗号还是点号。转换结果放在点是使用逗号还是点号。转换结果放在OUTOUT指定的连续指定的连续8 8个字节中。个字节中。输出缓冲区大小始终是输出缓冲区大小始终是8 8个字节个字节,nnnnnn表示表示输出缓冲区中小数点右侧的数字位数。输出缓冲区中小数点右侧的数字位数。nnnnnn的范围是的范围是0 0到到5 5。将小数点右侧的位数定为。将小数点右侧的位数定为0 0,使得所显示的数值没有小数点。对于使得所显示的数值没有小数点。对于nnnnnn大大于