第7章S7-200PLC的功能指令基本逻辑指令及应用移位与循环指令运算指令表功能指令转换指令中断指令高数计数器指令高数脉冲输出指令PID回路指令主要内容本章学习要求•掌握内容:S7-200功能指令的作用及使用方法•了解内容:表功能指令、时钟指令•难点内容:PID回路指令、高速脉冲输出指令EXIT7.1传送指令7.1.1单一数据传送指令功能:把输入端(IN)指定的数据传送到输出端(OUT),传送过程中数值保持不变。数据类型:输入和输出有字节、字、双字和实数4种类型。MOVBIN,OUTMOVWIN,OUTMOVDIN,OUTMOVRIN,OUT字节传送字传送双字传送实数传送图7-1单一数据传送指令EXIT7.1.2数据块传送指令功能:把从输入端(IN)指定地址的N个连续字节、字、双字的内容传送到从输出端(OUT)指定地址开始的N个连续字节、字、双字的存储单元中去数据类型:输入和输出有字节、字和双字3种类型。BMBIN,OUT,NBMWIN,OUT,NBMDIN,OUT,N图7-2数据块传送指令EXIT7.1.3字节立即传送指令1.传送字节立即读指令功能:读物理输入IN,并将结果存入OUT中,但过程映像寄存器并不刷新。数据类型:输入为IB,输出为字节。BIRIN,OUTBIWIN,OUT图7-3字节立即传送指令字节立即读字节立即写(a)(b)2.传送字节立即写指令功能:从存储器IN读取数据,写入物理输出OUT中,同时刷新相应的输出过程映像区。数据类型:输入为字节,输出为QB。EXIT例7-1数据传送类指令应用LDSM0.0MOVBVB100,VB200BMWVW140,VW240,4BIRIB1,VB270//SM0.0有效时执行下面操作//字节VB100中的数据送到字//节VB200中//字VW140开始的4个连续字中//的数据送到字VW240开始的4//个连续存储单元中//I1.0到I1.7的物理输入状态立即送//到VB270中,不受扫描周期的影响图7-4数据传送指令举例BIWVB280,QB0//VB280中的数据立即从Q0.0到Q0.7//端子输出,不受扫描周期的影响7.2移位与循环指令移位和循环移位指令为无符号数据操作7.2.1移位指令功能:左移位指令把输入端(IN)指定的数据左移N位,结果存入OUT单元中。右移位指令把输入端(IN)指定的数据右移N位,结果存入OUT单元中。数据类型:输入和输出有字节、字和双字3种类型;N为字节型数据。字节左移字左移双字左移SLBOUT,NSLWOUT,NSLDOUT,N(a)左移指令字节右移字右移双字右移SRBOUT,NSRWOUT,NSRDOUT,N(b)右移指令图7-6移位指令字节、字、双字移位指令的实际最大可移位数分别为8、16、32。EXIT7.2.2循环移位指令功能:循环左移位指令把输入端(IN)指定的数据循环左移N位,结果存入OUT单元中。循环右移位指令把输入端(IN)指定的数据循环右移N位,结果存入OUT单元中。数据类型:输入和输出有字节、字和双字3种类型;N为字节型数据。字节循环左移字循环左移双字循环左移RLBOUT,NRLWOUT,NRLDOUT,N(a)循环左移指令字节循环右移字循环右移双字循环右移RRBOUT,NRRWOUT,NRRDOUT,N(b)循环右移指令图7-7循环移位指令EXIT对于循环移位指令,如果所需移位的位数N大于或等于8、16、32,那么在执行循环移位前,先对N取以8、16、32为底的模,其结果0~7、0~15、0~31为实际移动位数。移位和循环移位指令影响特殊存储器位:SM1.1(溢出)执行移位指令后最后一次移出的位值。SM1.0(零)移位的结果是0,SM1.0置位。EXITLDI0.1RRWAC0,2SLWVW200,30100000000000001x01010000000000000循环前循环后AC0AC01110001010101101x00010101011010001移位前移位后VW200VW200溢出溢出溢出溢出SM1.0=0SM1.1=0SM1.0=0SM1.1=1图7-8移位和循环指令举例例7-4EXIT7.2.3移位寄存器指令SHRBDATA,S_BIT,N图7-9移位寄存器指令N指定移位寄存器的长度和方向(正向移位=N,反向移位=-N)1、功能把输入的DATA数值移入移位寄存器S_BIT为移位寄存器的最低位正向移位:从最低字节的最低位(S_BIT)移入,从最高位移出;反向移位:移位是从最高字节的最高位移入,从最低字节的最低位(S_BIT)移出。移出端与SM1.1(溢出)相连,最后被移出的位放在SM1.1位存储单元。EXIT最高位的计算方法:[N的绝对值-1+(S_BIT的位号)]/8,余数即是最高位的位号,商与S_BIT的字节号之和即是最高位字节号。例如:如果S_BIT是V22.2,N是3则(3-1+2)/8=0余4。所以最高位字节算法是:22+0=22,位号为4,即移位寄存器的最高位是V22.4。EXIT例7-5如图7-10所示为移位寄存器指令例1。其框图为移位两次之后的结果。LDI0.0EUSHRBI1.0,V22.2,3图7-10移位寄存器例110011000V22.2V22.4SM1.1I1.010010100SM1.1I1.010110001000SM1.10EXIT例7-6如图所示为移位寄存器指令例2I0.0为起动按钮,I0.1为停止按钮。四台电动机起动的顺序为M1→M2→M3→M4,顺序起动的间隔为1min。EXIT主程序EXIT子程序EXIT7.3运算指令7.3.1算术运算指令1.加法指令功能:在LAD中,IN1+IN2=OUT;执行加法操作时,将操作数IN2与OUT共用一个地址单元,因而在STL中,IN1+OUT=OUT。数据类型:整数相加时,输入输出均为INT;双整数相加时输入输出均为DINT;实数相加时,输入输出均为REAL整数相加双整数相加实数相加+IIN1,OUT+DIN1,OUT+RIN1,OUT图7-12加法指令EXIT2.减法指令功能:在LAD中,IN1-IN2=OUT;执行减法操作时,将操作数IN1与OUT共用一个地址单元,因而在STL中,OUT-IN2=OUT。数据类型:整数相减时,输入输出均为INT;双整数相减时输入输出均为DINT;实数相减时,输入输出均为REAL。整数相减双整数相减实数相减-IIN2,OUT-DIN2,OUT-RIN2,OUT图7-13减法指令EXIT3.乘法指令1)一般乘法指令2)完全整数乘法指令功能:在LAD中,IN1×IN2=OUT;执行乘法操作时,将操作数IN2与OUT共用一个地址单元,因而在STL中,IN1×OUT=OUT。数据类型:整数相乘时,输入输出均为INT;双整数相乘时输入输出均为DINT;实数相乘时,输入输出均为REAL。功能:将两个单字长(16位)的符号整数相乘,产生一个32位双整数结果OUT,32位结果存储单元的低16位运算前用于存放被乘数。在LAD中,IN1×IN2=OUT;在STL中,IN1×OUT=OUT。数据类型:输入为INT,输出为DINT。整数相乘双整数相乘实数相乘*IIN1,OUT*DIN1,OUT*RIN1,OUT图7-14乘法指令整数完全相乘MULIN1,OUT加法、减法、乘法指令影响的特殊存储器位:SM1.0(零)、SM1.1(溢出)、SM1.2(负)。3.除法指令1)一般除法指令2)完全整数除法指令功能:在LAD中,IN1/IN2=OUT;在STL中,OUT/IN1=OUT。不保留余数。数据类型:整数相除时,输入输出均为INT;双整数相除时输入输出均为DINT;实数相除时,输入输出均为REAL。功能:将两个16位的符号整数相除,产生一个32位结果,其中低16位为商,高16位为余数。32位结果低16位运算前被兼用存放被除数。在LAD中,IN1/IN2=OUT;在STL中,OUT/IN1=OUT。数据类型:输入为INT,输出为DINT。整数相除双整数相除实数相除/IIN2,OUT/DIN2,OUT/RIN2,OUT图7-15除法指令整数完全相除DIVIN2,OUT•除法指令影响的特殊存储器位:SM1.0(零)、SM1.1(溢出)、SM1.2(负)、SM1.3(除数为0)。•注意:对于算术运算,如OUT和输入不是共用同一地址单元,在STL中,先用传送指令将IN1传送到OUT,然后再执行运算指令。例7-7若VW10=2000,VW12=150,则执行完该段程序后,各存储单元的数值为:VW16=2150,VW18=1850,VD20=300000,VW24=13,VW30=50,VW32=13。(a)LAD(b)STL图7-16算术运算例1LDI0.0EUMOVWVW10,VW16+IVW12,VW16MOVWVW10,VW18-IVW12,VW18MOVWVW10,VW22MULVW12,VD20MOVWVW10,VW24/IVW12,VW24MOVWVW10,VW32DIVVW12,VD30例7-8(a)LAD(b)STL图7-17算术运算例2LDI0.1EU+IVW10,VW14-IVW12,VW14MULVW10,VD20/IVW10,VW24DIVVW10,VD307.3.2加1和减1指令1.加1指令功能:在LAD中,IN1+1=OUT;在STL中,OUT+1=OUT,即IN和OUT使用同一个存储单元。数据类型:字节增1指令输入输出均为字节,字增1指令输入输出均为INT,双字增1指令输入输出均为DINT。字节加1字加1双字加1INCBOUT图7-18加1指令INCWOUTINCDOUTEXIT2.减1指令功能:在LAD中,IN1-1=OUT;在STL中,OUT-1=OUT,即IN和OUT使用同一个存储单元。数据类型:字节减1指令输入输出均为字节,字减1指令输入输出均为INT,双字减1指令输入输出均为DINT。字节减1字减1双字减1DECBOUT图7-19减1指令DECWOUTDECDOUTEXIT例7-9LDSM0.1MOVWAC0,VW50INCWVW50MOVDVD20,VD0DECDVD0124125AC0VW50INC255254VD20VD0DEC图7-20加1和减1指令举例EXIT7.3.4逻辑运算指令对逻辑数(无符号数)进行处理1.逻辑与指令功能:把两个一个字节(字或双字)长的输入逻辑数按位相与,得到一个字节(字或双字)的逻辑数并输出到OUT。在STL中OUT和IN2使用同一具存储单元。数据类型:输入输出均为字节、字或双字。字节与字与双字与ANDBIN1,OUT图7-22逻辑与指令ANDWIN1,OUTANDDIN1,OUTEXIT2.逻辑或指令功能:把两个一个字节(字或双字)长的输入逻辑数按位相或,得到一个字节(字或双字)的逻辑数并输出到OUT。在STL中OUT和IN2使用同一具存储单元。数据类型:输入输出均为字节、字或双字。字节或字或双字或ORBIN1,OUT图7-23逻辑或指令ORWIN1,OUTORDIN1,OUTEXIT3.逻辑异或指令功能:把两个一个字节(字或双字)长的输入逻辑数按位相异或,得到一个字节(字或双字)的逻辑数并输出到OUT。在STL中OUT和IN2使用同一具存储单元。数据类型:输入输出均为字节、字或双字。字节异或字异或双字异或XORBIN1,OUT图7-24逻辑异或指令XORWIN1,OUTXORDIN1,OUTEXIT4.取反指令功能:把两个一个字节(字或双字)长的输入逻辑数按位取反,得到一个字节(字或双字)的逻辑数并输出到OUT。在STL中OUT和IN使用同一具存储单元。数据类型:输入输出均为字节、字或双字。字节取反INVBOUT图7-25取反指令字取反INVWOUT双字取反INVDOUTEXIT例7-10LDI0.0ANDWAC1,AC0ORWVW10