3-2S7-200 PLC的基本指令及编程方法2.ppt
3.2.5定时器和计数器指令,1.定时器指令,定时器是由集成电路构成,是PLC中的重要硬件编程元件。定时器编程时提前输入时间预设值,在运行时当定时器的输入条件满足时开始计时,当前值从0开始按一定的时间单位增加,当定时器的当前值达到预设值时,定时器发生动作,发出中断请求,以便PLC响应而作出相应的动作。此时它对应的常开触点闭合,常闭触点断开。系统提供3种定时指令TON(通电延时)、TONR(有记忆通电延时)和TOF(断电延时)。S7-200定时器的分辨率(时间增量/时间单位/分辨率)有3个等级1ms、10ms和100ms,分辨率等级和定时器号关系如表3-11所示。,返回,3.2.5定时器和计数器指令,表3-11定时器号和分辨率,定时时间的计算TPT☓S‑‑‑(T为实际定时时间,PT为预设值,S为分辨率等级)例如TON指令用定时器T33,预设值为125,则实际定时时间T125☓101250ms,3.2.5定时器和计数器指令,定时器指令操作数有3个编号、预设值和使能输入。1)编号用定时器的名称和它的常数编号(最大255)来表示,即Txxx,如T4。T4不仅仅是定时器的编号,它还包含两方面的变量信息定时器位和定时器当前值。定时器位定时器位与时间继电器的输出相似,当定时器的当前值达到预设值PT时,该位被置为“1”。定时器当前值存储定时器当前所累计的时间,它用16位符号整数来表示,故最大计数值为32767。2)预设值PT数据类型为INT型。寻址范围可以是VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。3)使能输入(只对LAD和FBD)BOOL型,可以是I、Q、M、SM、T、C、V、S、L和能流。可以用复位指令来对3种定时器复位,复位指令的执行结果是使定时器位变为OFF定时器当前值变为0。,3.2.5定时器和计数器指令,(1)接通延时定时器指令TON,用于单一间隔定时。上电周期或首次扫描,定时器位OFF,当前值为0。使能输入接通时,定时器位为OFF,当前值从0开始计数时间,当前值达到预设值时,定时器位为ON,当前值连续计数到32767。使能输入断开,定时器自动复位,即定时器位OFF,当前值为0。,,填“计定时器号”,如T35,填“预设值”,如100,指令格式TONTxxx,PT例TONT120,8,返回,3.2.5定时器和计数器指令,(2)有记忆接通延时定时器指令TONR,用于对许多间隔的累计定时。上电周期或首次扫描,定时器位OFF,当前值保持。使能输入接通时,定时器位为OFF,当前值从0开始累计计数时间。使能输入断开,定时器位和当前值保持最后状态。使能输入再次接通时,当前值从上次的保持值继续计数,当累计当前值达到预设值时,定时器位ON,当前值连续计数到32767。,,填“计定时器号”,如T31,填“预设值”,如100,TONR定时器只能用复位指令进行复位操作,使当前值清零。指令格式TONRTxxx,PT;例TONRT20,63,3.2.5定时器和计数器指令,(3)断开延时定时器指令TOF,用于断开后的单一间隔定时。上电周期或首次扫描,定时器位OFF,当前值为0。使能输入接通时,定时器位为ON,当前值为0。当使能输入由接通到断开时,定时器开始计数,当前值达到预设值时,定时器位OFF,当前值等于预设值,停止计数。TOF复位后,如果使能输入再有从ON到OFF的负跳变,则可实现再次启动。,,填“计定时器号”,如T35,填“预设值”,如100,指令格式TOFTxxx,PT;例TOFT35,6,3.2.5定时器和计数器指令,LDI0.0//使能输入TONT35,4//通电延时定时器,延时时间为40msLDI0.0//使能输入TONRT2.10//有记忆通电延时定时器,//延时时间为1000msLDI0.0//使能输入TOFT36,3//断电延时定时器,延时时间为30ms,(4)应用举例,图3-21定时器特性,T35为通电延时定时器,T2为有记忆通电延时定时器,T36为断电延时定时器,3.2.5定时器和计数器指令,上述梯形图程序中输入输出执行时序关系如图3-22所示。,图3-22定时器时序,返回,3.2.5定时器和计数器指令,(5)应用定时器指令应注意的几个问题,①不能把一个定时器号同时用作断开延时定时器(TOF)和接通延时定时器(TON)。②使用复位(R)指令对定时器复位后,定时器位位“0”,定时器当前值为“0”。③有记忆接通延时定时器(TONR)只能通过复位指令进行复位。④对于断开延时定时器(TOF),需要输入端有一个负跳变(由on到off)的输入信号启动计时。⑤不同精度的定时器,它们当前值的刷新周期是不同的,具体情况如下,3.2.5定时器和计数器指令,1)1ms分辨率定时器1ms分辨率定时器启动后,定时器对1ms的时间间隔(时基信号)进行计时。定时器当前值每隔1ms刷新一次,在一个扫描周期中要刷新多次,而不和扫描周期同步。2)10ms分辨率定时器10ms分辨率定时器启动后,定时器对10ms的时间间隔进行计时。程序执行时,在每次扫描周期开始对10ms定时器刷新,在一个扫描周期内定时器当前值保持不变。3)100ms分辨率定时器100ms分辨率定时器启动后,定时器对100ms的时间间隔进行计时。只有在定时器指令执行时,100ms定时器的当前值才被刷新。,3.2.5定时器和计数器指令,举例说明在图3-23a中,T32定时器1ms更新一次。当定时器当前值100在图示A处刷新,Q0.0可以接通一个扫描周期,若在其他位置刷新,Q0.0则用永远不会接通。而在A处刷新的概率是很小的。若改为图3-23b,就可保证当定时器当前值达到设定值时,Q0.0会接通一个扫描周期。图3-23a同样不适合10ms分辨率定时器。,图3-231ms定时器编程,3.2.5定时器和计数器指令,在子程序和中断程序中不易使用100ms定时器。子程序和中断程序不是每个扫描周期都执行的,那么在子程序和中断程序中的100ms定时器的当前值就不能及时刷新,造成时基脉冲丢失,致使计时失准;在主程序中,不能重复使用同一个100ms的定时器号,否则该定时器指令在一个扫描周期中多次被执行,定时器的当前值在一个扫描周期中多次被刷新。这样,定时器就会多计了时基脉冲,同样造成计时失准。因而,100ms定时器只能用于每个扫描周期内同一定时器指令执行一次,且仅执行一次的场合。100ms定时器的编程例子如图3-24a所示。,ab,图3-24100ms定时器的应用,返回,3.2.5定时器和计数器指令,2.计数器指令,计数器用来累计输入脉冲的次数。计数器也是由集成电路构成,是应用非常广泛的编程元件,经常用来对产品进行计数。计数器与定时器的结构和使用基本相似,编程时输入它的预设值PV(计数的次数),计数器累计它的脉冲输入端电位上升沿(正跳变)个数,当计数器达到预设值PV时,发出中断请求信号,以便PLC作出相应的处理。计数器指令有3种增计数CTU、增减计数CTUD和减计数CTD。指令操作数有4方面编号、预设值、脉冲输入和复位输入。,3.2.5定时器和计数器指令,1)编号用计数器名称和它的常数编号(最大255)来表示,即Cxxx,如C6。C6不仅仅是计数器的编号,它还包含两方面的变量信息计数器位和计数器当前值。计数器位表示计数器是否发生动作的状态,当计数器的当前值达到预设值PV时,该位被置为“1”。计数器当前值存储计数器当前所累计的脉冲个数,它用16位符号整数(INT)来表示,故最大计数值为32767。2)预设值PV数据类型为INT型。寻址范围可以是VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。3)脉冲输入BOOL型,可以是I、Q、M、SM、T、C、V、S、L和能流。,3.2.5定时器和计数器指令,4)复位输入与脉冲输入同类型和范围。(1)增计数器指令CTU,首次扫描,定时器位OFF,当前值为0。在增计数器的计数输入端(CU)脉冲输入的每个上升沿,计数器计数1次,当前值增加1个单位,当前值达到预设值时,计数器位ON,当前值继续计数到32767停止计数。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值为0。,,指令格式CTUCxxx,PV;例CTUC20,3,填“计数器器号”,如C30,填“预设值”,如3,脉冲输入,复位输入,3.2.5定时器和计数器指令,应用举例,LDI0.0//计数脉冲信号输入端LDI0.1//复位信号输入端CTUC20,3//增计数,计数设定值为3个脉冲LDC20//装入计数器触点Q0.0//输出触点,,图3-25增计数程序及时序,3.2.5定时器和计数器指令,(2)增减计数器指令CTUD,该指令有两个脉冲输入端CU输入端用于递增计数,CD输入端用于递减计数。首次扫描,定时器位OFF,当前值为0。CU输入的每个上升沿,计数器当前值增加1个单位,CD输入的每个上升沿,都使计数器当前值减小1个单位,当前值达到预设值时,计数器位ON。增减计数器计数到32767(最大值)后,下一个CU输入的上升沿将使当前值跳变为最小值(–32768);反之,当前值达到最小值(–32768)时,下一个CD输入的上升沿将使当前值跳变为最大值(32767)。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值为0。,,指令格式CTUDx,PV;例TUDC30,5,返回,3.2.5定时器和计数器指令,LDI0.0//增计数输入端LDI0.1//减计数输入端LDI0.2//复位端CTUDC30,5//增减计数,设定脉冲数为5LDC30//装入计数器触点Q0.0//输出触点,应用举例,图3-26增减计数程序及时序,3.2.5定时器和计数器指令,(3)减计数器指令CTD,首次扫描,定时器位OFF,当前值为预设值PV。计数器检测到CD输入的每个上升沿时,计数器当前值减小1个单位,当前值减到0时,计数器位ON。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值复位为预设值,而不是0。,,指令格式CTDCxxx,PV;例CTDC40,4,3.2.5定时器和计数器指令,应用举例,LDI0.0//减计数脉冲输入端LDI0.1//复位输入端CTDC40,4//减计数器,设定计数脉冲//数为4LDC40//装入计数器触点Q0.0//输出触点,图3-27减计数程序及时序,3.2.6顺序控制继电器指令,S7-200CPU含有256个顺序控制继电器(SCR)用于顺序控制。S7-200包含顺序控制指令,可以模仿控制进程的步骤,对程序逻辑分段;可以将程序分成单个流程的顺序步骤,也可同时激活多个流程;可以使单个流程有条件地分成多支单个流程,也可以使多个流程有条件地重新汇集成单个流程。从而对一个复杂的工程可以十分方便地编制控制程序。系统提供3个顺序控制指令顺序控制开始指令(LSCR)、顺序控制转移指令(SCRT)和顺序控制结束指令(SCRE)。,返回,3.2.6顺序控制继电器指令,1.顺序继电器指令(1)段开始指令LSCR(2)段结束指令SCRE(3)段转移指令SCRT,定义一个顺序控制继电器段的开始。操作数为顺序控制继电器位Sx.y,Sx.y作为本段的段标志位。当Sx.y位为1时,允许该SCR段工作。,该指令用来实现本段与另一段之间的切换。操作数为顺序控制继电器位Sx.y,Sx.y是下一个SCR段的标志位。当使能输入有效时,一方面对Sx.y置位,以便让下一个SCR段开始工作,另一方面同时对本SCR段的标志位复位,以便本段停止工作。,一个SCR段必须用该指令来结束。,返回,3.2.6顺序控制继电器指令,2.使用顺序继电器指令的限制,只能使用顺序控制继电器位作为段标志位。一个顺序控制继电器位Sx.y在程序中只能使用一次。在一个SCR段中不能出现跳入、跳出或段内跳转等程序结构。即在段中不能使用JMP和LBL指令。同样,在一个SCR段中不允许出现循环程序结构和条件结束,即禁止使用FOR、NEXT和END指令。指令格式LSCRbit(段开始指令)SCRTbit(段转移指令)SCRE(段结束指令),3.2.6顺序控制继电器指令,3.顺序结构4.程序实例,根据舞台灯光效果的要求,控制红、绿、黄三色灯。要求红灯先亮,2s后绿灯亮,再过3s后黄灯亮。待红、绿、黄灯全亮3min后,全部熄灭。程序如图3-29所示。说明每一个SCR程序段中均包含三个要素1)输出对象在这一步序中应完成的动作;2)转移条件满足转移条件后,实现SCR段的转移;3)转移目标转移到下一个步序。,一个SCR段必须用该指令来结束。,3.2.6顺序控制继电器指令,,LDI0.1ANQ0.0ANQ0.1ANQ0.2//在初始状态下起动,置SS0.1,1//S0.11LSCRS0.1//S0.11,激活第一SCR程序段,//进入第一步序LDSM0.0SQ0.0,1//红灯亮,并保持TONT37,20//启动2s定时器LDT37//2s后程序转移到第二SCR段,SCRTS0.2//(S0.21,S0.10)SCRE//第一SCR段结束LSCRS0.2//S0.21,激活第二SCR程序段,//进入第二步序LDSM0.0SQ1.1//绿灯亮,并保持TONT38,30//启动3s定时器,LDI0.1,3.2.6顺序控制继电器指令,LDT38//3s后程序转移到第三SCR段,SCRTS0.3//(S0.31,S0.20)SCRE//第二SCR段结束LSCRS0.3//S0.31,激活第三SCR程序段,//进入第三步序LDSM0.0SQ0.2,1//黄灯亮,并保持TONT39,1800//启动3min定时器LDT39//3min后程序转移到第四SCR段,SCRTS0.4//(S0.41,S0.30)SCRE//第三SCR段结束LSCRS0.4//S0.41,激活第四SCR程序段,//进入第四步序LDSM0.0RS0.1,4RQ0.0,3//红、绿、黄灯全灭SCRE//第四SCR段结束,图3-29SCR指令编程,返回,3.2.7移位寄存器指令,移位指令都是对无符号数进行的处理,执行时只考虑要移位的存储单元的每一位数字状态,而不管数据的值的大小。本类指令在一个数字量输出点对应多个相对固定状态的情况下有广泛的应用。,返回,3.2.7移位寄存器指令,1.左移和右移,左移和右移根据所移位的数的长度分别又可分为字节型、字型、双字型。移位特点移位数据存储单元的移出端与SM1.1(溢出)相连,所以最后被移出的位被放到SM1.1位存储单元。移位时,移出位进入SM1.1,另一端自动补0。SM1.1始终存放最后一次被移出的位。移位次数与移位数据的长度有关,如果所需移位次数大于移位数据的位数,则超出的次数无效。如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。移位指令影响的特殊存储器位SM1.0(零);SM1.1(溢出)。使能流输出ENO断开的出错条件SM4.3(运行时间);0006(间接寻址)。移位次数N为字节型数据。,3.2.7移位寄存器指令,(1)字节左移和字节右移指令SLB,SRB,使能输入有效时,把字节输入数据IN左移或右移N位后,再将结果输出到OUT所指的字节存储单元(在语句表中,IN与OUT使用同一个单元)。最大实际可移位次数为8。,,,指令格式SLBOUT,N(字节左移)SRBOUT,N(字节右移)例SLBMB0,2SRBLB0,3,3.2.7移位寄存器指令,以第一条指令为例,指令执行情况如表3-12所示,表3-12左移指令SLB执行结果,(2)字左移和字右移指令SLW,SRW,指令盒与字节移位比较,只有名称变为SHLW和SHRW。最大实际可移位次数为16。指令格式SLWOUT,N(字左移)SRWOUT,N(字右移)例SLWMW0,2SRWLW0,3,返回,3.2.7移位寄存器指令,以第二条指令为例,指令执行情况如表3-13所示。,表3-13右移指令SRW执行结果,3.2.7移位寄存器指令,指令格式SLDOUT,N(双字左移)SRDOUT,N(双字右移)例SLDMD0,2SRDLD0,3,(3)双字左移和双字右移指令SLD,SRD,指令盒与字节移位比较,只有名称变为SHLDW和SHRDW,其他部分完全相同。最大实际可移位次数为32。,3.2.7移位寄存器指令,2.循环左移、循环右移,循环移位特点移位数据存储单元的移出端与另一端相连,同时又与SM1.1(溢出)相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存储单元。移位次数与移位数据的长度有关,如果移位次数设定值大于移位数据的位数,则执行循环移位之前,系统先对设定值取以数据长度为底的模,用小于数据长度的结果作为实际循环移位的次数。如字左移时,若移位次数设定为36,则先对36取以16为底的模,得到小于16的结果4,故指令实际循环移位4次。如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。移位指令影响的特殊存储器位SM1.0(零);SM1.1(溢出)。使能流输出ENO断开的出错条件SM4.3(运行时间);0006(间接寻址)。移位次数N为字节型数据。,返回,3.2.7移位寄存器指令,(1)字节循环左移和字节循环右移指令RLB,RRB,,指令盒与字节移位比较,只有名称变为SHLDW和SHRDW,其他部分完全相同。最大实际可移位次数为32。指令格式RLBOUT,N(字节循环左移)RRBOUT,N(字节循环右移)例RLBMB0,2RRBLB0,3,,,3.2.7移位寄存器指令,(2)字循环左移和字循环右移指令RLW,RRW,指令盒与字节循环移位只有名称变为ROLW和RORW,其他部分完全相同。使能输入有效时,把字型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的字存储单元(在语句表中,IN与OUT使用同一个单元)。实际移位次数为设定值取以16为底的模所得的结果。指令格式RLWOUT,N(字循环左移)RRWOUT,N(字循环右移)例RLWMD0,2RRWLD0,3,3.2.7移位寄存器指令,(3)双字循环左移和双字循环右移指令RLD,RRD,指令盒与字节循环移位只有名称变为ROLDW和RORDW,其他部分完全相同。使能输入有效时,把双字型输入数据IN循环左移或循环右移N位后,再将结果输出到OUT所指的双字存储单元(在语句表中,IN与OUT使用同一个单元)。实际移位次数为设定值取以32为底的模所得的结果。指令格式RLDOUT,N(双字循环左移)RRDOUT,N(双字循环右移)例RLDMD0,2RRDLD0,3,返回,3.2.7移位寄存器指令,以指令RRWLW0,3为例,指令执行情况如表3-14所示。,表3-14指令RRW执行结果,3.2.7移位寄存器指令,3.寄存器移位,SHRB,寄存器移位指令。该指令在梯形图中有3个数据输入端DATA为数值输入,将该位的值移入移位寄存器;SBIT为移位寄存器的最低位端;N指定移位寄存器的长度。每次使能输入有效时,整个移位寄存器移动1位。,,移位特点移位寄存器长度在指令中指定,没有字节型、字型、双字型之分。可指定的最大长度为64位,可正也可负。移位数据存储单元的移出端与SM1.1(溢出)相连,所以最后被移出的位被放到SM1.1位存储单元。,3.2.7移位寄存器指令,移位时,移出位进入SM1.1,另一端自动补以DATA移入位的值。正向移位时长度N为正值,移位是从最低字节的最低位SBIT移入,从最高字节的最高位MSB.b移出;反向移位时,长度N为负值,移位是从最高字节的最高位移入,从最低字节的最低位SBIT移出。最高位的计算方法(N的绝对值–1(SBIT的位号))/8,相除结果中,余数即是最高位的位号,商与SBIT的字节号之和即是最高位的字节号。例如,如果SBIT是V22.5,N是8,那么MSB.b是V23.4。具体计算如下MSB.b→V22(8-15)8=V22128=V221(余数为4)→V23.4,返回,3.2.7移位寄存器指令,指令格式SHRBDATA,SBIT,N例SHRBI0.5,V20.0,5以本条指令为例,指令执行情况如表3-15所示。,表3-15指令SHRB执行结果,3.2.8比较操作指令,比较指令是一种比较判断,用于比较两个符号数或无符号数。在梯形图中以带参数和运算符号的触点的形式编程,当这两数比较式的结果为真时,该触点闭合。在功能框图中以指令盒的形式编程,当比较式结果为真时,输出接通。在语句表中使用LD指令进行编程时,当比较式为真时,主机将栈顶置1。使用A/O指令进行编程时,当比较式为真时,则在栈顶执行A/O操作,并将结果放入栈顶。比较指令的类型有字节比较、整数比较、双字整数比较和实数比较。比较运算符有、、、(表示不等于)。,返回,3.2.8比较操作指令,1.字节比较,字节比较用于比较两个字节型整数值IN1和IN2的大小,字节比较是无符号的。比较式可以是LDB、AB或OB后直接加比较运算符构成。如LDB、AB、OB等。整数IN1和IN2的寻址范围VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常数。指令格式例LDBVB10,VB12ABMB0,MB1OB等。整数IN1和IN2的寻址范围VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。指令格式例LDWVW10,VW12AWMW0,MW4OW等。双字整数IN1和IN2的寻址范围VD、ID、QD、MD、SD、SMD、LD、HC、AC、*VD、*AC、*LD和常数。指令格式例LDDVD10,VD14ADMD0,MD8OD等。整数IN1和IN2的寻址范围VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常数。指令格式例LDRVD10,VD18ARMD0,MD12ORC30,VW20//比较计数器,当前值是否大于等//于VW20中的值=Q0.0//输出触点LDWC30,VW30//比较计数器,当前值是否大于等//于VW30中的值=Q0.1//输出触点,,图3-30程序举例,返回,