第7章PLC功能指令算术、逻辑运算指令算术运算指令•IN1+IN2=OUT•IN1—IN2=OUT•加减指令盒由指令类型,使能端EN,操作数(IN1、IN2)输入端,运算结果输出OUT,逻辑结果输出端ENO等组成。加法运算应用举例•NETWORK1•LDI0.0//装入常开触点•MOVWVW100,VW200//VW100→VW200•+I+100,VW200//VW200+100=VW200乘/除运算••乘法运算•除法运算•MULI/DIVI为整数乘/除运算,MULDI/DIVDI双整数乘/除运算,MUL/DIV整数乘/除的结果双整数输出,MULR/DVIR实数乘/除运算•指令执行的结果:乘法IN1*IN2=OUT•除法IN1/IN2=OUT[例]乘/除法指令的应用•NETWORK1•LDNI0.0//装入常闭触点•*RAC1,VD100//实数乘法•/RVD10,VD200//实数除法•运行结果:数学函数变换指令1.平方根/自然对数/指数指令•SQRTIN,OUT•//求平方根指令SQRT(IN)=OUT•LNIN,OUT•//求(IN)的自然对数指令•LN(IN)=OUT•EXPIN,OUT•//求(IN)的指数指令EXP(IN)=OUT•平方根(自然对数、指数)指令是把一个双字长(32位)的实数(IN)开方(取自然对数、取以e为底的指数),得到32位的实数运算结果,通过(OUT)指定的存储器单元输出。[例]求以10为底,150的常用对数,150存于VD100,结果放到AC1(应用对数的换底公式求解)。当求解以10为底的常用对数时,用实数除法指令将自然对数除以2.302585即可。(LN10≈2.302585)•LDI0.1//使能输入•LNVD100,AC1//自然对数•//Ln(VD100)=AC1•LN10.0,VD200//自然对数•//Ln(10)=VD200•/RVD200,AC1//实数除法指令•//AC1/VD200=VD2001.平方根/自然对数/指数指令•利用指数函数求解任意函数的x次方(yx=exlny)。•例如:7的4次方=EXP(4*LN(7))=2401•8的3次方根=8^(1/3)=EXP(LN(8)*1/3)=2•2.三角函数•SININ,OUT•//SIN(IN)=OUT••COSIN,OUT•//COS(IN)=OUT•TANIN,OUT•//TAN(IN)=OUT[例]求65o的正切值•LDNI0.0//使能输入•MOVR3.14159,AC0//π装入AC0•/R180.0,AC0//得π/1800弧度••*R65.0,AC0//将角度转化为弧度•TANAC0,AC1//求正切指令结果存放到AC1•3.数学函数变换指令对标志位的影响及操作数的寻址范围•(1)平方根/自然对数/指数/三角函数运算指令执行的结果影响特殊存储器位:SM1.0(零),SM1.1(溢出),SM1.2(负),SM1.3(被0除)。•(2)使能流输出ENO=0的错误条件是:SM1.1(溢出),SM4.3(运行时间),0006(间接寻址)。•(3)IN、OUT操作数的数据类型为REAL,寻址范围见附表1。增1/减1计数•增1/减1计数器用于自增、自减操作,以实现累加计数和循环控制等程序的编制。•字节、字、双字增1•OUT+1=OUT•字节、字、双字减1•OUT-1=OUT逻辑运算指令•逻辑运算是对无符号数进行的逻辑处理,主要包括逻辑与、逻辑或、逻辑异或和取反等运算指令。••与(或、异或)指令功能:使能输入有效时,把两个字节(字、双字)长的输入逻辑数按位相与(或、异或),得到的一个字节(字、双字)逻辑运算结果,送到OUT指定的存储器单元输出。•取反指令功能:使能输入有效时,将一个字节(字、双字)长的逻辑数按位取反,得到的一个字节(字、双字)逻辑运算结果,送到OUT指定的存储器单元输出。[例]字或/双字异或/字求反/字节与操作编程举例。•NETWORK1•LDI0.0•MOVWLW10,LW30//LW10=LW30•ORWLW20,LW30//字或操作•NETWORK2•LDI0.1•MOVDVD100,VD120•XORDVD200,VD120//双字异或操作•NETWORK3•LDI0.2•MOVWAC0,AC1•INVWAC1//字取反操作•NETWORK4•LDI0.3•MOVBAC0,AC1•ANDB255,AC1//字节与操作数据处理指令•数据处理指令包括数据传送指令,交换、填充指令,移位指令等。•5.3.1数据传送•1.单个数据传送•LAD•STLMOVIN,OUT//IN=OUT数据块传送•指令类型:字节、字或双字的N个数据成组传送。•功能:使能输入(EN)有效时,把从输入(IN)字节开始的N个字节数据传送到以输出字节(OUT)开始的N个字节、字或双字中。[例]将变量存储器VW100中内容送到VW200中。•NETWORK1•LDI0.0//使能输入•MOVWVW100,VW200•//VW100=VW200字节交换/填充指令•1、字节交换指令(SWAYIN)•使能输入(EN)有效时,将输入字(IN)的高、低字节交换的结果输出到(IN)存储器单元。•2、字填充(FILLIN,OUT,N)•使能输入(EN)有效时,字型输入数据(IN)填充从输出(OUT)指定单元开始的N个字存储单元。N(BYTE)的数据范围0~255。[例]将从VW100开始的256个字节(128个字)存储单元清零。•NETWORK1•LDI0.0//使能输入•FILL+0,VW100,128•//128个字填充0•本条指令执行结果:从VW100开始的256个字节(VW100~VW354)的存储单元清零。移位指令•移位指令分为:左、右移位和循环左、右移位及寄存器移位指令三大类。•左、右移位和循环左、右移位指令按移位数据的长度又分为字节型、字型、双字型三种。•左、右移位指令(SHL、SHR)的功能:使能输入有效时,将输入的字节、字或双字(IN)左、右移N位后(右、左端补0),将结果输出到OUT所指定的存储单元中,最后一次移出位保存在SM1.1。•循环左、右移位指令(ROL、ROR)的功能:使能输入有效时,字节、字或双字(IN)数据循环左移N位后,将结果输出到OUT所指定的存储单元中,并将最后一次移出位送SM1.1。移位指令•[例]将VD0右移2位送AC0。•NETWORK1•LDI0.0//使能输入•MOVDVD0,AC0//VD0=AC0•SRDAC0,2//AC0右移2位•寄存器移位指令最大移位位数N≤数据类型(B、W、D)对应的位数,移位位数(次数)N为字节型数据。寄存器移位指令•寄存器移位指令是一个移位长度可指定的移位指令。•SHRBI1.1,M1.0,+10•功能:指令执行时,DATA位的值移入移位寄存器。•S-BIT为寄存器的最低位,N为移位寄存器的长度(1~64)。每次使能有效时,整个移位寄存器移动1位。•N为正值时,左移位(由低位到高位),DATA值从S-BIT位移入,移出位进入SM1.1;•N为负值时右移位(由高位到低位),S-BIT移出到SM1.1,高端补充DATA移入位的值。•最高位的计算方法:(N的绝对值-1+(S_BIT的位号))/8,余数即是最高位的位号,商与S_BIT的字节号之和即是最高位的字节号。带参数的子程序调用指令•子程序可能有要传递的参数(变量和数据),这时可以在子程序调用指令中包含相应参数,它可以在子程序与调用程序之间传送。•带参数子程序调用指令示例•局部变量表中的变量有IN、OUT、•IN/OUT和TEMP等4种类型。•子程序最多可传递6个参数,传递•的参数在子程序局部变量表中定义。•EN和IN1的输入为布尔型能流输入,•地址参数&VB100是将一个双字•无符号的值传递到子程序。•子程序调用时,输入参数被拷贝到局部存储器。子程序完成时,从局部存储器拷贝输出参数到指定的输出参数地址。带参数的子程序调用指令•局部变量表•IN类型:将指定位置的参数传入子程序。•OUT类型:从子程序的结果值(数据)传入到指定参数位置。•IN/OUT类型:将指定位置的参数传到子程序,从子程序来的结果值被返回到同样的地址。•TEMP类型:局部存储器只用作子程序内部的暂时存储器,不能用来传递参数。顺序控制指令•顺序控制指令格式•LSCRSx.y步开始•SCRTSx.y步转移•SCRE步结束•顺序控制指令可以将程序功能流程图转换成梯形图程序[例]编写红绿灯顺序控制程序•步进条件为时间步进型。状态步的处理为点红、熄绿灯,同时启动定时器,步进条件满足时(时间到)进入下一步,关断上一步。S0.0{点红熄绿S0.1T38置位{T37置位熄红点绿等待启动I0.01•1第五章小结•本章介绍了SIMATIC指令集LAD和STL编程语言的四大类基本操作指令的指令格式、原理分析和使用方法。•1.基本位操作指令包括位操作、置/复位、边沿触发、定时、计数、比较等指令,是梯形图基本指令的基础,也是最常用的指令类型。•2.运算指令包括算术运算和逻辑运算两大类。算术运算有加、减、乘、除运算和常用的数学函数变换;逻辑运算包括逻辑与、或指令和取反指令等。•3.数据处理指令包括数据的传送指令,交换、填充指令,移位指令等。•4.程序控制指令包括系统控制,跳转、循环、顺序控制等指令;系统控制类指令主要包括暂停、结束、看门狗等指令。