1、,S7-200系列PLC具有丰富的指令集,按功能可分为基本逻辑指令,算术、逻辑运算指令,数据处理指令,程序控制指令以及集成功能指令5部分。其中前4部分是编制PLC的基本应用程序经常用到的,称为基本指令;最后一部分是PLC完成复杂的功能控制所需要的,称为功能指令。本章将介绍各种基本指令的梯形图符号、指令表达方式以及功能和用法,并附有相应的指令应用实例。,7.1 基本逻辑指令,基本逻辑指令是指构成基本逻辑运算功能指令的集合,包括基本位操作、置位/复位、边沿触发、定时、计数、比较等逻辑指令。,7.1.1 基本位操作指令,位操作指令是PLC常用的基本指令,梯形图指令有触点和线圈两大类 ,触点又分为常开
2、和常闭两种形式;语句表指令有与、或以及输出等逻辑关系,位操作指令能够实现基本的位逻辑运算和控制。基本位操作指令操作数寻址范围:I,Q,M,SM,T,C,V,S,L等。,7.1.1 基本位操作指令,基本位操作指令格式如下表所示。,7.1.1 基本位操作指令,梯形图的触点符号代表CPU对存储器的读操作。CPU运行扫描到触点符号时,到触点位地址指定的存储器位访问,读取相应的逻辑值参与程序的逻辑运算。 梯形图的线圈符号代表CPU对存储器的写操作。线圈左侧触点组成逻辑运算关系,逻辑运算结果为1时,能量流可以到达线圈,使线圈通电,CPU将线圈位地址指定的存储器位置1,逻辑运算结果为0时,线圈不通电,存储器
3、位置0(复位)。梯形图利用线圈通、断电描述存储器位的置位、复位操作。 结论:梯形图的触点代表CPU对存储器的读操作,由于计算机系统读操作的次数不受限制,所以用户程序中,常开、常闭触点使用的次数不受限制。梯形图的线圈符号代表CPU对存储器的写操作,由于PLC采用自上而下的扫描方式工作,在用户程序中,每个线圈只能使用一次,使用次数(存储器写入次数)多于一次时,其状态以最后一次为准。,基本逻辑指令的语句表由指令助记符和操作数两部分组成,操作数由可以进行位操作的寄存器元件及地址组成。常用位操作指令助计符的定义如下所述:,(1)LD(Load):装载指令,对应梯形图从左侧母线开始,连接常开触点。 (2)
4、LDN(Load Not):装载指令,对应梯形图从左侧母线开始,连接常闭触点。 (3)A(And):与操作指令,用于常开触点的串联。 (4)AN(And Not):与操作指令,用于常闭触点的串联。 (5)O(Or):或操作指令,用于常开触点的并联。 (6)ON(Or Not):或操作指令,用于常闭触点的并联。 (7)=(Out):置位指令,线圈输出。,7.1.1 基本位操作指令,例7-1 位操作指令应用程序,相应的梯形图和指令表表示如下图所示。,7.1.1 基本位操作指令,7.1.2 块操作和堆栈指令,1. 块操作指令,(1) OLD(块或):用于两个以上触点串联的支路与前面支路并联连接。(2
5、) ALD(块与):用于并联电路块与前面接点电路或并联电路块的串联 .,两个以上触点串联的电路称为串联电路块。串联电路块并联连接时,在每支路始端用LD或LDN指令,在支路终端用OLD指令。两个以上触点并联的电路称为并联电路块。并联电路块与前一个并联电路串联时,用LD或LDN指令作并联电路块各分支电路的始端;分支电路的并联电路块完成后,用ALD指令再完成同前一电路的串联。,例7-2 块“或”操作示例, 其程序如下图所示。,7.1.2 块操作和堆栈指令,例7-3 块“与”操作示例, 其程序如下图所示。,2栈操作指令,(1) LPS(逻辑压栈):将该时刻逻辑运算的中间结果压入栈存储器,先前存入的数据
6、依次向栈的下一级推移。(2) LRD(逻辑读栈):将栈存储器的最上级的数据读出,栈内数据不发生移动。(3) LPP(逻辑弹栈):将栈存储器的最上级的数据弹出,栈内其它数据依次向上移动一位。S7-200系列PLC中有一个9层堆栈,用于处理所有逻辑操作,称为逻辑堆栈。,7.1.2 块操作和堆栈指令,例7-4 栈操作指令应用程序,7.1.2 块操作和堆栈指令,(1) NOT(取非): 取非指令,将NOT指令前的运算结果反转,无操作元件。(2) NOP(空操作):或称空处理,用于程序的修改,便于调试程序。执行空操作指令,将稍微延长扫描周期长度,不影响用户程序的执行,不会使能流输出断开。操作数N为执行空
7、操作指令的次数,N=0255。(3) AENO(And ENO):用于和前面的指令盒输出端ENO相与。AENO指令只能在语句表中使用。,7.1.3 触发器指令,1. 取非和空操作指令,例7-5 取非指令和空操作指令应用实例,7.1.3 触发器指令,2. 置位/复位指令,7.1.3 触发器指令,(1) S(置位):将从操作数的直接位地址(Bit)开始的N个逻辑位置1。(2) R(复位):将从操作数的直接位地址(Bit)开始的N个逻辑位置0。,(1) EU(Edge Up):上升沿微分输出指令。(2) ED(Edge Down):下降沿微分输出指令。,3. 边沿触发指令(脉冲生成),运行结果分析如
8、下:,3. 边沿触发指令(脉冲生成),S7-200 PLC的定时器为增量型定时器,用于实现时间控制, 按照工作方式,定时器可分为通电延时型(TON)、有记忆的通电延时型(保持型)(TONR)、断电延时型(TOF)三种类型;按照时基标准,定时器可分为1ms、10ms、100ms三种类型。,7.1.4 定时器指令,CPU 22X系列PLC的256个定时器分属TON(TOF)和TONR工作方式,以及三种时基标准,TOF与TON共享同一组定时器,不能重复使用。详细分类方法及定时范围见表7-3。,7.1.4 定时器指令,1. 通电延时型(TON),使能端(IN)输入有效时,定时器开始计时,当前值从0开始
9、递增,大于或等于预置值(PT)时,定时器输出状态位置1(输出触点有效),当前值的最大值为32767。使能端无效(断开)时,定时器复位(当前值清零,输出状态位置0)。,7.1.4 定时器指令,例7-8 通电延时型定时器应用示例,7.1.4 定时器指令,使能端(IN)输入有效时(接通),定时器开始计时,当前值递增,当前值大于或等于预置值(PT)时,输出状态位置1。使能端输入无效(断开)时,当前值保持(记忆),使能端(IN)再次接通有效时,在原记忆值的基础上递增计时。有记忆通电延时型(TONR) 定时器采用线圈的复位指令(R)进行复位操作,当复位线圈有效时,定时器当前值清零,输出状态位置0。,2.
10、有记忆通电延时型(TONR),7.1.4 定时器指令,例7-9 有记忆通电延时型定时器应用示例,7.1.4 定时器指令,使能端(IN)输入有效时,定时器输出状态位立即置1,当前值复位(为0)。使能端(IN)断开时,开始计时,当前值从0递增,当前值达到预置值时,定时器状态位复位置0,并停止计时,当前值保持。,3. 断电延时型(TOF),例7-10 断电延时型定时器应用示例,7.1.4 定时器指令,应当注意:对于S7-200系列PLC的定时器,时基分别为1ms、10ms、100ms定时器的刷新方式是不同的。1ms时基定时器,每隔1ms定时器刷新一次当前值,与扫描周期和程序处理无关,扫描周期较长时,
11、定时器在一个周期内可能多次被刷新,其当前值在一个周期内不一定保持一致;10ms定时器,在每个扫描周期开始时刷新,在每个扫描周期内,当前值不变;100ms定时器在该定时器指令执行时被刷新。,7.1.4 定时器指令,对于如图7-12所示的程序,使用定时器本身的常闭触点作激励输入,希望经过延时产生一个机器扫描周期的时钟脉冲输出。图中,T32为1ms时基定时器,由于定时器刷新机制的原因,不能保证得到理想的运行结果。若将图7-12改成图7-13,无论何种时基都能正常工作。,7.1.4 定时器指令,图7-12 自身激励输入,图7-13 非 自身激励输入,计数器利用输入脉冲上升沿累计脉冲个数,S7-200系
12、列PLC有递增计数(CTU)、增减计数(CTUD)、递减计数(CTD)等三类计数指令。计数器的结构和使用方法与定时器基本相同,主要由预置值寄存器、当前值寄存器、状态位等组成。,7.1.5 计数器指令,计数器的梯形图指令符号为指令盒形式,指令格式见表7-4。,梯形图指令符号中CU为增1计数脉冲输入端;CD为减1计数脉冲输入端;R为复位脉冲输入端;LD为减计数器的复位输入端;PV为计数预置值,最大范围32767。编程范围C0C255。下面从原理、应用等方面,分别叙述增计数指令(CTU)、增减计数指令 (CTUD)、减计数指令(CTD)等三种类型计数指令的应用方法。,7.1.5 计数器指令,1. 增
13、计数指令(CTU),增计数指令在CU端输入脉冲上升沿,计数器的当前值增1计数。当前值大于或等于预置值(PV)时,计数器状态位置1。当前值累加的最大值为32767。复位输入(R)有效时,计数器状态位复位(置0),当前计数值清零。增计数指令的应用可以参考图7-14理解。,2. 增减计数指令 (CTUD),增减计数器有两个脉冲输入端,其中CU端用于递增计数,CD端用于递减计数,执行增减计数指令时,CU/CD端的计数脉冲上升沿增1/减1计数。当前值大于或等于计数器预置值(PV)时,计数器状态位置位。复位输入(R)有效或执行复位指令时,计数器状态位复位,当前值清零。达到计数器最大值32767后,下一个C
14、U输入上升沿将使计数值变为最小值(-32678)。同样达到最小值(-32678)后,下一个CD输入上升沿将使计数值变为最大值(32767)。,7.1.5 计数器指令,例7-11 增减计数指令应用程序,7.1.5 计数器指令,3. 减计数指令(CTD),复位输入(LD)有效时,计数器把预置值(PV)装入当前值存储器,计数器状态位复位(置0)。CD端每一个输入脉冲上升沿,减计数器的当前值从预置值开始递减计数,当前值等于0时,计数器状态位置位(置1),停止计数。,例7-12减计数指令应用程序,7.1.5 计数器指令,比较指令用于两个操作数按一定条件的比较。操作数可以是整数,也可以是实数(浮点数)。在
15、梯形图中用带参数和运算符的触点表示比较指令,比较条件满足时,触点闭合,否则打开。梯形图程序中,比较触点可以装入,也可以串、并联。比较指令有整数和实数两种数据类型的比较。整数类型的比较指令包括无符号数的字节比较,有符号数的整数比较、双字比较。整数比较的数据范围为168000167FFF,双字比较的数据范围为1680000000167FFFFFFF。实数(32位浮点数)比较的数据范围:负实数范围为-1.175495E-38 -3.402823E+38,正实数范围为+1.175495E-38+3.402823E+38。比较指令格式如表7-5所示。,图7-14 增减计数应用程序段及时序,7.1.6 比
16、较指令,7.1.6 比较指令,不同的操作数类型和比较运算关系,可分别构成各种字节、字、双字和实数比较运算指令。,例7-13 整数(16位有符号整数)比较指令应用实例,7.1.6 比较指令,算术、逻辑运算指令包括算术运算指令和字逻辑运算指令。,7.2 算术、逻辑运算指令,7.2.1 算术运算指令,算术运算指令包括加/减运算、乘/除运算、数学函数变换指令、增1/减1指令等。本节将从指令的梯形图符号、指令表表示,并通过实际举例,讲述指令的用法。,1. 加/减运算,加/减运算指令是对符号数的加/减运算操作。包括整数加/减、双整数加/减运算和实数加/减运算。 加/减运算指令梯形图采用指令盒格式,指令盒由
17、指令类型,使能端EN,操作数(IN1、IN2)输入端,运算结果输出OUT,逻辑结果输出端EN0等组成。,(1) 加/减运算指令格式,加/减运算指令的梯形图指令格式如表7-6所示。,加/减运算指令操作数类型:INT、DINT、REAL。,(2) 指令类型和运算关系,1)整数加/减运算(ADD I/SUB I)使能EN输入有效时,将两个单字长(16位)符号整数(IN1和IN2)相加/减,然后将运算结果送OUT指定的存储器单元输出。,STL运算指令及运算结果:,从STL运算指令可以看出,IN1、IN2和OUT操作数的地址不相同时,语句表指令将LAD的加/减运算分别用两条指令描述。IN1或IN2=OU
18、T时,加法指令节省一条数据传送指令,本规律使用于所有算术运算指令。,2)双整数加/减运算(ADD DI/SUB DI)使能EN输入有效时,将两个字长(32位)符号整数(IN1和IN2)相加/减,运算结果送OUT指定的存储器单元输出。,3)实数加/减运算(ADD R/SUB R) 使能输入EN有效时,将两个字长(32)位的有符号实数IN1和IN2相加/减,运算结果送OUT指定的存储器单元输出。,(3) 对标志位的影响,算术运算指令影响特殊标志的算术状态位SM1.0SM1.3,并建立指令盒能量流输出EN0。,1)算术状态位(特殊标志位)SM1.0(零),SM1.1(溢出),SM1.2(负)。SM1
19、.1用来指示溢出错误和非法值。如果SM1.1置位,SM1.0和SM1.2的状态无效,原始操作数不变。如果SM1.1不置位,SM1.0和SM1.2的状态反映算术运算的结果。2)EN0(能量流输出位)使能输入EN有效时,运算的结果无错时,EN0=1,否则EN0=0(出错或无效)。使能量流输出EN0断开的出错条件:SM1.1(溢出),SM4.3(运行时间),0006(间接寻址)。,例7-14 加法运算应用举例:求2000加100的和,2000在数据存储器VW100中,结果存入VW200。,2. 乘/除运算,乘/除运算是对符号数的乘法运算和除法运算。乘/除运算指令格式及功能见表7-7。,(1) 指令格
20、式,乘/除运算指令采用同加减运算相类似的指令盒指令格式。指令分为MUL I/DIV I整数乘/除运算,MUL DI/DIV DI 双整数乘/除运算,MUL/DVI整数乘/除双整数输出,MUL R/DCI R实数乘/除运算等八种类型。,(2) 指令功能,使能(EN)输入有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个单字长(16)位整数结果,从OUT(积/商)指定的存储器单元输出。,STL指令格式:,(3) 乘/除运算对标志位的影响,1)算术状态位(特殊标志位)乘/除运算指令执行的结果影响特殊存储器位:SM1.0(零),SM1.1(溢出),SM1.2(负),SM1.3(被0
21、除)。乘法运算过程中SM1.1(溢出)被置位,就不写输出,并且所有其它的算术状态位值为0(整数乘法(MUL)产生双整数指令输出不会产生溢出)。如果除法运算过程中SM1.3置位(被0除),其它的算术状态位保留不变,原始输入操作数不变。SM1.3不被置位,所有有关的算术状态位都是算术操作的有效状态2)使能流输出EN0=0断开的出错条件是:SM1.1(溢出),SM4.3(运行时间),0006(间接寻址)。,例7-15 乘/除法指令的应用实例,3. 数学函数变换指令,数学函数变换指令包括平方根指令、自然对数指令、指数指令和三角函数指令。,(1) 平方根自然对数指数指令,1)平方根指令(SQRT)平方根
22、指令是把一个双字长(32位)的实数(IN)开方,得到32位的实数运算结果,通过(OUT)指定的存储器单元输出。2)自然对数(LN)自然对数指令将输入的一个双字长(32位)实数IN的值取自然对数,得到32位的实数运算结果,通过(OUT)指定的存储器单元输出。,3)指数指令(EXP)指数指令将一个双字长(32位)实数IN的值取以e为底的指数,得到32位的实数运算结果,通过(OUT)指定的存储器单元输出。,该指令可与自然对数指令相配合,完成以任意数为底,任意数为指数的计算。可以利用指数函数求解任意函数的x次方(yx=exlny)。,(2) 三角函数,三角函数运算指令包括正弦(SIN)、(COS)和(
23、TAN)三角指令。三角函数指令运行时把一个双字长(32位)的实数弧度值(IN)分别取正弦、余弦、正切,得到32位的实数运算结果,通过(OUT)指定的存储器单元输出。三角函数运算指令格式见表7-9。,例7-17 求65的正切值,(3) 数学函数变换指令对标志位的影响及操作数的寻址范围,1)平方根自然对数指数三角函数运算指令执行的结果影响特殊存储器位:SM1.0(零),SM1.1(溢出),SM1.2(负),SM1.3(被0除)。2)使能流输出ENO=0的错误条件是:SM1.1(溢出),SM4.3(运行时间),0006(间接寻址)。3)IN、OUT操作数的数据类型为REAL,寻址范围见附表2。,4.
24、 增1减1指令,增1减1计数器用于自增、自减操作,以实现累加计数和循环控制等程序的编制。梯形图为指令盒格式,增1减1指令操作数长度可以是字节(无符号数)、字或双字(有符号数)。,(1) 字节增1减1(INC B/DEC B)(2) 字增1减1(INC W/DEC W)(3) 双字节增1减1(INC D/DEC D),4. 增1减1指令,7.2.2 字逻辑运算指令,字逻辑操作是对无符号数进行的逻辑处理,主要包括逻辑与、逻辑或、逻辑异或和取反等运算指令。按操作数长度可分为字节、字和双字三种逻辑操作。,1逻辑与指令(WAND),2逻辑或指令(WOR),3逻辑异或指令(WXOR ),4取反指令(INV
25、),例7-18 字或、双字异或、字求反、字节与操作编程举例。,7.3 数据处理指令,数据处理指令包括数据的传送指令,交换、填充指令以及移位循环指令。,7.3.1 数据传送,数据传送指令有字节、字、双字、和实数的单个传送指令,还有以字节、字、双字为单位的数据块的成组传送指令用来实现各存储器单元之间数据的传送和复制。,单个传送指令一次完成一个字节,字和双字的传送。指令格式参见表7-12。,1. 单个数据传送,指令功能是当EN有效时,把一个输入(IN)单字节无符号数、单字长或双字长符号数送到OUT指定的存储器单元输出。使能流输出ENO断开的出错条件是:SM4.3(运行时间)和0006(间接寻址)。,
26、数据块传送指令一次可完成N个数据的成组传送。指令类型有字节、字、或双字等三种。如表7-13所示。,2. 数据块传送,字节的数据块传送指令,使能输入(EN)有效时,把从输入(IN)字节开始的N 个字节的数据传送到以输出字节(OUT)开始的N个字节中。 字的数据块传送指令,使能输入(EN)有效时,把从IN字开始的N 个字的数据传送到以输出字节(OUT)开始的N个字的存储区中。,例7-19 将变量存储器VW100中内容送到VW200中,7.3.2 字节交换/填充指令,字节交换/填充指令格式见表7-14。,字节交换指令(SWAP) 字节交换指令用来实现字的高、低字节内容交换的功能。使能输入有效时,将输
27、入字(IN)的高,低字节交换的结果输出到(OUT)指定的存储器单元。IN、OUT 操作数的数据类型为 INT。 字节填充指令(FILL) 字节填充指令用于存储区域的填充。,例7-20 将从VW100开始的256个字节(128个字)的存储单元清零,本条指令执行结果:从VW100开始的256个字节(VW100-VW354)的存储单元清零。,7.3.3 移位指令,移位指令分为左、右移位和循环左、右移位及寄存器移位指令三大类。前两类移位指令按移位数据长度又分为字节型、字型、双字型三种,移位指令最大移位位数N数据类型(B、W、D)对应的位数。,左、右移位数据存储单元与SM1.1(溢出)端相连,溢出位被放
28、到特殊标志存储器SM1.1位.移位数据存储单元的另一端补0,移位指令格式见下表。,1左、右移位指令,(1)左移位指令(SHL)使能输入有效时,将输入的字节、字或双字(IN)左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,最后一次移出位保存在SM1.1。(2)右移位指令(SHR)使能输入有效时,将输入的字节、字或双字(IN)右移N位后,将结果输出到OUT所指定的存储单元中,最后一次移出位保存在SM1.1。,循环移位将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被溢出的位,指令格式见表7-16。,2 循环左、右移位,(1)循环左移位指令(ROL)使能
29、输入有效时,字节、字或双字(IN)数据循环左移N位后,将结果输出到OUT所指定的存储单元中,并将最后一次移出位送SM1.1。(2)循环右移位指令(ROR)使能输入有效时,字节、字或双字(IN)数据循环右移N位后,将结果输出到OUT所指定的存储单元中,并将最后一次移出位送SM1.1。左右移位及循环移位指令影响的特殊存储器位有SM1.0(零)和SM1.1(溢出)。如果移位操作使数据变为0,则SM1.0置位。使能流输出ENO=0断开的出错条件是:SM4.3(运行时间),0006(间接寻址)。,寄存器移位指令是一个移位长度可指定的移位指令。寄存器移位格式示例见表7-17。,3寄存器移位指令,梯形图中D
30、ATA为数值输入,指令执行时将该位的值移入移位寄存器。S-BIT为寄存器的最低位。N为位移寄存器的长度(164),N为正值时左移位(由低到高位),DATA值从S-BIT位移入,溢出位进入SM1.1;N为负值是右移位(由高位到低位),S-BIT移出到SM1.1,另一端补充DATA移入位的值。,7.4 程序控制指令,程序控制类指令用于程序运行状态的控制,S7-200系列PLC的程序控制类指令主要包括系统控制、跳转、循环、子程序调用、顺序控制等指令。,7.4.1 系统控制类指令,系统控制类指令主要包括暂停、结束、看门狗等指令,指令格式见表7-18。,1.暂停指令(STOP),2. 结束指令(END/
31、MEND),3. 看门狗复位指令(WDR),例7-22 暂停、条件结束、看门狗复位指令应用举例,7.4.2 跳转、循环、子程序调用指令,跳转指令(JMP)和跳转地址标号指令(LBL)配合使用,实现程序的跳转。使能输入有效时,使程序跳转到指定标号n处执行(在同一程序内),跳转标号n=0255。使能输入有效时,程序顺序执行。,1. 程序跳转指令(JMP),2. 循环控制指令(FOR),程序循环结构,用于重复循环执行一段程序,由FOR和NEXT指令构成程序的循环体。FOR指令标记循环的开始,NEXT指令为循环体的结构指令。 FOR指令为指令盒格式,EN为使能输入, INIT为循环次数初始值,INDX
32、为当前值计数,FINAL为循环计数终值。,3.子程序调用指令(SBR),通常将具有特定功能、并且多次使用的程序段作为子程序。子程序可以多次被调用,也可以嵌套(最多8层)还可以递归调用(自己调用)。 子程序有自程序调用和子程序返回两大类指令,子程序返回又分条件返回和无条件返回。子程序调用指令可用于主程序或其它条用子程序的程序中,子程序的无条件返回指令在子程序的最后网络段,梯形图指令系统能够自动生成子程序的无条件返回指令,用户无需输入。建立子程序的方法:在编程软件的程序数据窗口的下方有主程序(OB1)、子程序(SUBO)、中断服务程序(INTO)的标签,点击子程序标签即可进入SUBO子程序显示区。也可以通过指令树的项目进入子程序SUBO显示区。添加一个子程序时,可以用编辑菜单的插入项增加一个子程序,子程序编号N从0开始自动向上生成。,例7-23 循环、跳转及子程序调用指令应用程序,7.4.3 顺序控制指令,1顺序步开始指令(LSCR)顺序控制继电器位Sx.y=1时,该程序步执行。2顺序步结束指令(SCRE) SCRE为顺序步结束指令,顺序步的处理程序在LSCR和SCRE之间。3顺序步转移指令(SCRT)使能输入有效时,将本顺序步的顺序控制继电器位Sx.y清零,下一步顺序控制继电器位置1。,例7-23 编写红绿灯顺序显示控制程序,