第7章S7-200PLC的功能指令教学内容:7.1数据处理指令7.2数据运算指令7.3中断程序与中断指令7.4高速计数器与高速脉冲输出指令7.5PID回路指令PLC实际上就是工业控制计算机。它具有计算机控制系统的功能,例如算术逻辑运算、程序流控制、通信等等极为强大的功能。这些功能通常是通过功能指令的形式来实现的。功能指令(FunctionInstruction)又称为应用指令,它是指令系统中应用于复杂控制的指令。功能指令包括:数据处理指令、算术逻辑运算指令、表功能指令、转换指令、中断指令、高速处理指令等等。这些功能指令实际上是厂商为满足各种客户的特殊需要而开发的通用子程序。第7章PLC的功能指令7.1.1数据传送指令1.单一传送指令使能输入有效时,把一个单字节无符号数据由IN传送到OUT所指的字节存储单元。指令格式:MOVBIN,OUT使能输入有效时,立即读取单字节物理输入区(IB)数据IN,并传送到OUT所指的字节存储单元。指令格式:BIRIN,OUT(2)传送字节立即读指令:BIR(1)字节传送指令:MOVB7.1数据处理指令7.1.1数据传送指令使能输入有效时,立即将IN单元的字节数据写到OUT所指的物理输出区(QB)。指令格式:BIWIN,OUT(3)传送字节立即写指令:BIW(4)字传送指令:MOVW使能输入有效时,把一个单字长有符号整数由IN传送到OUT所指的字存储单元。指令格式:MOVWIN,OUT7.1.1数据传送指令使能输入有效时,把一个双字长有符号整数由IN传送到OUT所指的双字存储单元。指令格式:MOVDIN,OUT使能输入有效时,把一个32位实数由IN传送到OUT所指的双字存储单元。指令格式:MOVRIN,OUT(6)实数传送指令:MOVR(5)双字传送指令:MOVD7.1.1数据传送指令2.块传送指令使能输入有效时,把从输入字IN开始的N个字型数据传送到从OUT开始的N个字存储单元。指令格式:BMWIN,OUT,N使能输入有效时,把从输入字节IN开始的N个字节型数据传送到从OUT开始的N个字节存储单元。指令格式:BMBIN,OUT,N(2)字块传送指令:BMW(1)字节块传送指令:BMB7.1.1数据传送指令使能输入有效时,把从输入双字IN开始的N个双字型数据传送到从OUT开始的N个双字存储单元。指令格式:BMDIN,OUT,N(3)双字块传送指令:BMD3.字节交换指令SWAP,字节交换指令。当使能输入有效时,将字型输入数据IN高位字节与低位字节进行交换,交换的结果输出到IN存储器单元中。因此又可称为半字交换指令。指令格式:SWAPIN7.1.1数据传送指令4.存储器填充指令FILL,存储器填充指令。当使能输入有效时,将字型输入值IN填充至从OUT开始的N个字的存储单元中。N为字节型,可取1~255的正数。指令格式:FILLIN,OUT,N例:SWAPVW10//若(VW10)为1111111100000000则指令执行后,(VW10)为?FILL10,VW1O,87.1.2移位与循环指令移位指令是对无符号数进行的处理,执行时只考虑要移位的存储单元的每一位数字状态,而不管数据的值的大小。本类指令在一个数字量输出点对应多个相对固定状态的情况下有广泛的应用。1.左移和右移将输入IN中的数的各位向右或向左移动N位后,送给输出OUT。左移和右移根据所移位的数的长度分别又可分为字节型、字型、双字型。7.1.2移位与循环指令移位特点:移位数据存储单元的移出端与SM1.1(溢出错误标志位)相连,所以最后被移出的位被放到SM1.1位存储单元。移位时,移出位进入SM1.1,另一端自动补0。SM1.1始终存放最后一次被移出的位。移位次数与移位数据的长度有关,如果所需移位次数大于移位数据的位数,则超出的次数无效。如果移位操作使数据变为0,则零标志位(SM1.0)自动置位。移位指令影响的特殊存储器位:SM1.0;SM1.1。移位次数N为字节型数据。7.1.2移位与循环指令(1)字节左移和字节右移指令:SLB,SRB使能输入有效时,把字节输入数据IN左移或右移N位后,再将结果输出到OUT所指的字节存储单元(在语句表中,IN与OUT使用同一个单元)。最大实际可移位次数为8。指令格式:SLBOUT,N(字节左移)SRBOUT,N(字节右移)7.1.2移位与循环指令例:SLBMB0,2SRBLB0,3以第一条指令为例,指令执行情况如下表所示:移位次数地址单元内容位SM1.1说明0MB010110101X移位前(SM1.1不确定)1MB0011010101数左移,移出位1进入SM1.1,右端补02MB0110101000数左移,移出位0进入SM1.1,右端补07.1.2移位与循环指令(2)字左移和字右移指令:SLW,SRW指令盒与字节移位比较,只有名称变为SHLW和SHRW。最大实际可移位次数为16。指令格式:SLWOUT,N(字左移)SRWOUT,N(字右移)例:SRWLW0,3指令执行情况如下表所示:移位次数地址单元内容位SM1.1说明0LW01011010100110011X移位前(SM1.1不确定)1LW001011010100110011右移,1进入SM1.1,左端补02LW000101101010011001右移,1进入SM1.1,左端补03LW000010110101001100右移,0进入SM1.1,左端补07.1.2移位与循环指令指令格式:SLDOUT,N(双字左移)SRDOUT,N(双字右移)例:SLDMD0,2SRDLD0,3(3)双字左移和双字右移指令:SLD,SRD指令盒与字节移位比较,只有名称变为SHLDW和SHRDW,其他部分完全相同。最大实际可移位次数为32。7.1.2移位与循环指令2.循环左移、循环右移循环移位特点:移位数据存储单元的移出端与另一端相连,同时又与SM1.1(溢出)相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存储单元。移位次数与移位数据的长度有关,如果移位次数设定值大于移位数据的位数,则执行循环移位之前,系统先对设定值取以数据长度为底的模,用小于数据长度的结果作为实际循环移位的次数。如字左移时,若移位次数设定为36,则先对36取以16为底的模,得到小于16的结果4,故指令实际循环移位4次。如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。移位指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出)。移位次数N为字节型数据。7.1.2移位与循环指令(1)字节循环左移和字节循环右移指令:RLB,RRB使能输入有效时,把字节输入数据IN循环左移或右移N位后,再将结果输出到OUT所指的字节存储单元(在语句表中,IN与OUT使用同一个单元)。循环移位是环形的,被移出的位将返回到另一端空出的位。实际移位次数为设定值取以8为底的模所得的结果。指令格式:RLBOUT,N(字节循环左移)RRBOUT,N(字节循环右移)例:RLBMB0,2RRBLB0,37.1.2移位与循环指令(2)字循环左移和字循环右移指令:RLW,RRW指令盒与字节循环移位只有名称变为ROLW和RORW,其他部分完全相同。使能输入有效时,把字型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的字存储单元。实际移位次数为设定值取以16为底的模所得的结果。指令格式:RLWOUT,N(字循环左移)RRWOUT,N(字循环右移)例:RLWMD0,2RRWLD0,37.1.2移位与循环指令(3)双字循环左移和双字循环右移指令:RLD,RRD指令盒与字节循环移位只有名称变为ROLDW和RORDW,其他部分完全相同。使能输入有效时,把双字型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的双字存储单元(在语句表中,IN与OUT使用同一个单元)。实际移位次数为设定值取以32为底的模所得的结果。指令格式:RLDOUT,N(双字循环左移)RRDOUT,N(双字循环右移)例:RLDMD0,2RRDLD0,37.1.2移位与循环指令以指令RRWLW0,19为例,指令执行情况如下表所示:移位次数地址单元内容位SM1.1说明0LW01011010100110011X移位前(SM1.1不确定)1LW011011010100110011右端1移入SM1.1和LW0左端2LW011101101010011001右端1移入SM1.1和LW0左端3LW001110110101001100右端0移入SM1.1和LW0左端7.1.3数据转换指令转换指令是指对操作数的类型进行转换,包括数据的类型转换、码的类型转换以及数据和码之间的类型转换。数据类型主要包括字节、整数、双整数、实数,不同性质的指令对操作数的类型要求不同,类型转换指令可将固定的一个数值用到不同类型要求的指令,而不必对数据进行针对类型的重新装载。7.1.3数据转换指令使能输入有效时,将二进制编码的十进制数值IN转换成整数,并将结果送到OUT输出。输入和输出均为字,输入IN的有效范围是0至9999。指令格式:BCDIOUTLDI1.0//使能输入端BCDIAC0//AC0中的BCD码转换为整数1.BCD码与整数之间的转换指令已知(AC0)=1234,程序运行后:(AC0)=04D2。程序实例:(1)BCD码到整数:BCDI7.1.3数据转换指令(2)整数到BCD码:IBCD使能输入有效时,将字节型输入数据IN转换成整数类型,并将结果送到OUT输出。字节型是无符号的,所以没有符号扩展。指令格式:BTIOUT使能输入有效时,将输入整数值IN转换成二进制编码的十进制数,并将结果送到OUT输出。指令格式:IBCDOUTSM1.6(非法BCD码)(1)字节到整数:BTI2.字节与字整数之间的转换指令7.1.3数据转换指令(2)整数到字节:ITB使能输入有效时,将双整数型输入数据IN转换成整数类型,并将结果送到OUT输出。输入数据超出整数范围则产生溢出。指令格式:DTIOUT使能输入有效时,将整数型输入数据IN转换成字节类型,并将结果送到OUT输出。输入数据超出字节范围(0~255)则产生溢出。指令格式:IBCDOUT(1)双整数到整数:DTI3.字型整数与双字整数之间的转换指令7.1.3数据转换指令(2)整数到双整数:ITD使能输入有效时,将整数型输入数据IN转换成双整数类型(符号进行扩展,符号位扩展到高字),并将结果送到OUT输出。指令格式:ITDOUT4.双字整数与实数之间转的换指令(1)双整数到实数:DTR使能输入有效时,将双整数型输入数据IN转换成实数型,并将结果送到OUT输出。指令格式:DTRIN,OUT7.1.3数据转换指令使能输入有效时,将实数型输入数据IN转换成双整数类型,并将结果送到OUT输出。两条指令的区别是:前者小数部分四舍五入,而后者小数部分直接舍去。输入数据超出实数范围则产生溢出。指令格式:ROUNDIN,OUTTRUNCIN,OUT(2)实数到双整数:ROUND,TRUNC7.1.3数据转换指令使能输入有效时,将字型输入数据IN中值为1的最低有效位的位号编码成4位二进制数,输出到OUT所指定的字节单元的低4位。即用半个字节来对一个字型数据16位中的1位有效位进行编码。指令格式:ENCOIN,OUT(1)编码指令:ENCO5.编码、译码指令例:ENCOAC0,VB0以本指令为例,指令执行情况如表所示:7.1.3数据转换指令(2)译码指令:DECO使能输入有效时,根据字节型输入数据IN的低4位所表示的位号将OUT所指定的字单元的对应位置1,其他位置0。即对半个字节的编码进行译码来选择一个字型数据16位中的1位。指令格式:DECOIN,OUT例:DECOVB0,AC0本指令执行情况如表所示:7.1.3数据转换指令SEG,七段译码指令。使能输入有效时,将字节型输入数据IN的低4位有效数字(16#0~F)转换成七段显示码,并将其输出