第7章PLC 的功能指令_第1页
第7章PLC 的功能指令_第2页
第7章PLC 的功能指令_第3页
第7章PLC 的功能指令_第4页
第7章PLC 的功能指令_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章S7-200系列PLC的功能指令7.1运算和数学指令7.2传送、移位和填充指令7.3表功能指令7.4转换指令7.5中断7.6PID回路指令7.7时钟指令7.8高速处理类指令7.1运算和数学指令7.1.1加法指令(ADD)7.1.2减法指令(SUBTRACT)7.1.3乘法指令7.1.4除法指令7.1.5自增/自减指令7.1.6数学函数指令7.1.7逻辑运算指令返回本章首页7.1.1加法指令(ADD)加法指令(ADD)是对有符号数进行相加操作。加法指令把两个输入端(IN1、IN2)指定的数相加,结果送到输出端(OUT)指定的存储单元中,包括整数加法、双整数加法和实数加法。它们对应的操作数数据类型分别是有符号整数(INT)、有符号双整数(DINT)和实数(REAL)。如图7-1所示。返回本节7.1.2减法指令(SUBTRACT)减法指令(Subtract)是对有符号数进行相减操作。减法指令把两个输入端(IN1、IN2)指定的数相减,结果送到输出端(OUT)指定的存储单元中去。它可以分为整数、双整数、实数减法指令。它们各自对应的操作数分别是有符号整数(INT)、有符号双整数(DINT)和实数(REAL)。如图7-2所示。7.1.3乘法指令1.一般乘法指令(Multiply)一般乘法指令是对有符号数进行相乘运算,它包括整数乘法、双整数乘法和实数乘法。他们各自对应的操作数分别是有符号整数(INT)、有符号双整数(DINT)和实数(REAL)。如图7-3(a)所示(图中处可为I、DI或R)。2.完全整数乘法(MultiplyIntegertoDoubleInteger)完全整数乘法是将两个单字长(16位)的符号整数IN1和IN2相乘,产生一个32位双整数乘积,并送到输出端(OUT)指定的存储单元中去。如图7-3(b)所示。7.1.4除法指令1.一般除法指令(Divide)一般除法指令是对有符号数进行相除操作。一般除法指令将两个输入端(IN1、IN2)指定的数相除,结果送到输出端(OUT)指定的存储单元中去。如图7-4(a)所示(图中处可为I、DI或R)。2.完全除法指令(DivideIntegertoDoubleInteger)完全除法指令将两个16位的符号整数相除,产生一个32位的结果,其中,低16位为商,高16位为余数。完全除法指令输入数据类型为INT,输出数据类型为DINT。如图7-4(b)所示。7.1.5自增/自减指令1.自增指令(Increment)自增指令包括字节自增、字自增和双字自增指令。字节自增指令输入输出均为字节,字自增指令输入输出均为INT,双字自增指令输入输出均为DINT。如图7-6(a)所示(图中处可为B、W、DW)。2.自减指令(Decrement)自减指令包括字节自减、字自减和双字自减指令。字节自减指令输入输出均为字节,字自减指令输入输出均为INT,双字自减指令输入输出均为DINT。如图7-6(b)所示(图中处可为B、W、DW)。7.1.6数学函数指令1.平方根(SquareRoot)指令实数的开方指令(SQRT),把输入端(IN)的32位实数开方,得到32位实数结果,并把结果存放到输出端(OUT)指定的存储单元中去。2.自然对数(NaturalLogarithm)指令自然对数指令(LN),将输入端(IN)的32位实数取自然对数,结果存放到输出端(OUT)指定的存储单元中去。求常数对数(lgx,即以10为底的对数)时,只要将其自然对数(lnx)除以2.302585即可。3.自然指数(NaturalExponential)指令自然指数指令(EXP),将输入端(IN)的32位实数取以e为底的指数,结果存放到输出端(OUT)指定的存储单元中去。4.正弦(sine)、余弦(cosine)和正切(tan)指令7.1.6数学函数指令数学函数指令

7.1.7逻辑运算指令1.逻辑“与”运算指令(LogicAnd)2.逻辑“或”运算指令(LogicOr)3.逻辑“异或”运算指令(LogicExclusiveOr)4.取反指令(LogicInvert)7.2传送、移位和填充指令7.1.1传送指令7.2.2移位和循环移位指令7.1.1传送指令1.数据传送指令(Move)

数据传输指令把输入(IN)指定的数据传送到输出(OUT),传送过程中数据值保持不变。数据传诵指令按操作数的数据类型可以分为字节传送(MOVB)、字传送(MOVW)、双字传送(MOVD)和实数传送指(MOVR)指令,如图7-10所示。7.1.1传送指令2.数据块传送指令(BlockMove)数据块传送指令把从输入(IN)指定地址的N个连续字节、字、双字的内容传送到从输出(OUT)指定地址开始的N个连续字节、字、双字的存储单元中去。传送过程中个存储单元的内容不变。N的数据范围为1~255。数据块传送指令按操作数的数据类型可以分为字节块传送(BMB)、字块传送(BMW)和双字块传送(BMD)指令,如图7-11所示。3.传送字节立即读、写指令(MoveByImmediate)

传送字节立即读(BIR)指令,读取输入端(IN)指定字节地址的物理输入点(IB)的值,并写入输出端(OUT)指定字节地址的存储单元中。传送字节立即写(BIW)指令,读取输入端(IN)指定字节地址的内容写入输出端(OUT)指定字节地址的物理输出点(QB)。传送字节立即读、写指令如图7-13所示。传送字节立即读、写指令操作数数据类型为字节型(BYTE)。4.字节交换指令(SwapBytes)

字节交换(SwapBytes)指令,把输入(IN)指定字的高字节内容与低字节内容互相交换。交换结果仍存放在输入(IN)指定的地址中。交换字节指令如图7-14所示。操作数数据类型为无符号整数型(WORD)。7.2.2移位和循环移位指令1.移位指令(Shift)(1)右移指令右移位指令把输入端(IN)指定的数据右移N位,结果存入OUT。右移位指令按操作数的数据类型可以分为字节、字、双字右移位指令。如图7-16所示。(2)左移指令左移位指令把输入端(IN)指定的数据左移N位,结果存入OUT。左移位指令按操作数的数据类型可以分为字节、字、双字左移位指令。如图7-17所示。7.2.2移位和循环移位指令2.循环移位指令(Rotate)(1)循环右移指令循环右移指令把输入端(IN)指定的数据循环右移N位,结果存入OUT。循环右移指令按操作数的数据类型可以分为字节、字、双字循环右移指令。如图7-18所示。(2)循环左移指令循环左移指令把输入端(IN)指定的数据循环左移N位,结果存入OUT。循环左移指令按操作数的数据类型可以分为字节、字、双字循环左移指令。如图7-19所示。7.2.2移位和循环移位指令3.寄存器移位指令(ShiftRegister)寄存器移位指令在梯形图中有3个数据输入端(如图7-20所示),即DATA为数据输入,将该位的值移入移位寄存器;S_BIT为移位寄存器的最低位端;N指定移位寄存器的长度。每次能使输入有效时,在每个扫描周期内,整个移位寄存器移动一位。所以要用边沿跳变指令来控制使能端的状态,不然该指令就失去了应用的意义。7.3表功能指令7.3.1填表、查表指令7.3.2表取数指令7.3.3存储器填充指令7.3.1填表、查表指令1.填表指令填表指令(ATT),向表(TBL)中填入一个字值(DATA)。TBL指明表格的首地址,表中的第一个数是最大填表数(TL),第二个数是实际填表数(EC),指出已填入表的数据个数。新的数据填加在表的末尾。每向表中填加一个新的数据,EC会自动增加1。最多可向表中填入100个数据。DATA数据类型是INT型,TBL为WORD型。填表指令格式如图7-21(a)所示2.查表指令查表指令(FIND)从INDX开始搜索表(TBL),寻找满足查找条件的数据。TBL指明被访问表格的首地址;PTN端用来描述查表时进行比较的数据;命令参数CMD表明查找条件,它是一个1~4的数值,分别代表=、〈〉、〈、〉符号,INDX用来指定表中符合查找条件的数据的编号。如图7-22(b)所示。图7-21(a)填表指令(b)查表指令7.3.2表取数指令1.先进先出指令先进先出指令(FIFO),从表(TBL)中移走第一个数据(最先进入表中的数据),并将此数输出到DATA。剩余数据依次上移一个位置。每执行一次指令,表中的实际填表数(EC)减1。图7-23(a)为先进先出指令格式图2.后进先出指令后进先出(LIFO)指令从表(TBL)中移走最后一个数据(最后进入表中的数据),并将此数输出到DATA。每执行一次指令,表中的实际填表数(EC)减1,如图7-23(b)所示。7.3.3存储器填充指令

存储器填充(FILL)指令用输入值(IN)填充从输出(OUT)开始的N个字的内容,N为1~255。指令操作数IN、OUT为WORD型数据,N为BYTE型数据。如图7-25为FILL指令在实际中的应用。

7.4转换指令7.4.1数据转换指令7.4.2编码和译码指令7.4.3段码指令(SEG)7.4.4ASCII码转换指令7.4.1数据转换指令1.BCD码与整数的转换2.双字整数与实数的转换3.双整数与整数之间的转换4.字节与整数的转换7.4.2编码和译码指令1.编码指令(Encode)编码指令将字型输入数据(IN)的最低有效位(值为1的位)的位号输出到OUT所指定的字节单元的低4位,即用半个字节来对一个字型数据16位中的“1”位有效位进行编码。输入数据类型为字,输出的数据类型为字节。其指令格式如图7-30(a)所示。2.译码指令(Decode)译码指令将字节型输入数据IN的低4位所表达的位号对OUT所指定的字单元的对应位置1,其他位置0。即对半个字节的编码进行译码,以选择一个字型数据16位中的“1”位。输入的数据类型为字节,输出数据类型为字。起指令格式如图7-30(b)所示。7.4.3段码指令(SEG)段码指令(SEG),把输入字节(IN)低4位的有效值(16#0~F)转换成七段显示码,送入OUT单元。如图7-31所示。7.4.4ASCII码转换指令1.ASCII码与十六进制数的转换指令2.整数转化为ASCII码指令(IntegertoASCII)3.双整数转换成ASCII码(DoubleIntegertoASCII)4.实数转化为ASCII码(RealtoASCII)7.5中断7.5.1中断的分类及中断优先级7.5.2中断指令7.5.3中断程序7.5.1中断的分类及中断优先级1.中断的分类中断源即中断事件发出中断请求的来源。每个中断源都分配一个编号加以辨识,称为中断事件号。这些中断源大致分为三大类:通信口中断、输入/输出中断和时基中断。(1)通信口中断、S7-200的串行通信口可由用户程序来控制。通信口的这种操作模式称为自由端口模式。在自由端口模式下,用户程序定义的波特率、每个字符位数、奇偶校正和通信协议。因此,利用接受和发送中断可简化程序对通信的控制。(2)输入/输出中断(即I/O中断)输入/输出中断包括外部输入中断、高速计数器中断和脉冲串口中断(PTO)。S7-200可利用输入点(I0.0~I0.3)的上升沿或下降沿产生中断,CPU检测这些上升沿或者下降沿事件,可用来指示某个事件发生时的故障状态。高速计数器中断,允许响应诸如当前值等于预置值、轴转动方向变化的计数方向改变和计数器外部复位等事件而产生的中断。脉冲串口中断,允许完成对完成指定脉冲数输出的响应。(3)时基中断时基中断包括定时中断和定时器T32/T96中断。2.中断优先级中断按以下固定的次序来决定优先级(1)通信(最高优先级)(2)I/O中断(中等优先级)(3)时基中断(最低优先级)7.5.2中断指令

1.开中断(EnableInterrupt)及关中断(DisableInterrupt)指令开中断及关中断的格式如图7-37(a)所示。2.中断连接指令(AttachInterrupt)及中断分离指令(DetachInterrupt)中断连接指令及中断分离指令的格式如图7-37(b)和7-37(c)所示。7.5.3中断程序1.构成中断程序必须由三部分构成:中断程序标识、中断程序指令和无条件返回指令。中断程序标号,即中断程序的名称,它在建立中断程序时生成;中断程序指令是中断程序的实际有效部分,对中断事件的处理就是由这些指令组合完成的,在中断程序中可以调用嵌套子程序;中断返回指令用来退出中断程序回到主程序。它有两条返回指令,一是无条件中断返回指令RETI,程序编译时由软件自动的在程序结尾加上RETI指令,另一是条件中断返回指令CRETI,在中断程序内部用它可以提前退出中断程序。2.要求中断程序的编写要求是:短小精悍、执行时间短。用户最大限度地优化中断程序,否则意外条件可能会导致由主程序控制的设备出现异常操作。3.编制方法用编程软件时,在“编辑”菜单下“插入”中选择“中断”,则自主的生成一个新的中断程序编号,进入该程序的编辑区,在此即可编写中断程序。7.6PID回路指令7.6.1PID算法7.6.2PID回路指令7.6.3控制方式7.6.4选择回路的控制类型7.6.5关于回路控制参数7.6.6其他7.6.7PID指令编程举例7.6.1PID算法在闭环控制系统中广泛应用PID控制(即比例—积分—微分控制)。PID控制器调节回路输出。为使系统达到稳定状态,应让偏差e(给定值SP和过程变量PV的差)趋于零。回路的输出变量M(t)是时间t的函数。它可以看作是比例项、积分项、微分项三项之和。

Mn=Kc*(SPn-PVn)+Kc*(Ts/Ti)*(SPn-PVn)+MX+Kc*(Td/Ts)*(PVn-1-PVn)(7-1)7.6.2PID回路指令PID回路指令运用回路表中的输入信息和组态信息,进行PID运算,编程比较简单。该指令有两个操作数:TBL和LOOP见图7-38所示。其中TBL是回路表的起始地址,操作数限用VB区域(BYTE型);LOOP是回路号,可以是0~7的整数(BYTE型)。进行PID运算的前提条件是逻辑堆栈栈顶(TOS)必须是1。7.6.3控制方式PID指令有一个允许输入端(EN)。当该输入端检测到一个从0到1的正跳变信号,PID回路就从手动方式无扰动的切换到自动方式。无扰动切换时,系统把手动方式的当前输出值填入回路表中的Mn栏,用来初始化输出值Mn,且进行一系列的操作,对回路表中的值进行组态,完成一系列的动作7.6.4选择回路的控制类型

在许多控制场合,有时只需要一种或两种回路控制类型,那么可通过设定相关的常量参数来实现控制类型的选择。对于比例、积分、微分回路的控制,有些控制系统只需要其中的一种或两种贿赂控制类型。通过设置相关参数可选择所需的回路控制类型。如果只需要比例、微分回路控制,可以把积分时间常数Ti设为无穷大。此时积分项初值MX;如果只需要比例、积分回路控制,可以把微分时间常数Td置为零。如果只需要积分或积分微分回路,可以把回路增益Kc设为零,在计算积分项和微分项时,系统把回路增益Kc当作1.0。7.6.5关于回路控制参数1.回路输入变量的转换和标准化2.回路输出变量的数据转换3.回路的正作用与反作用4.变量与范围7.6.6其他1.报警、特殊操作S7-200的PID指令既简单又功能强大。如果其他的过程需要对回路变量进行报警或进行某些特殊计算处理时,可以用CPU支持的其他基本指令编程实现。2.出错条件若回路控制参数表的起始地址或PID回路编号不符合要求的范围,则在编译时,CPU会产生一个便宜错误信息,致使编译失败。但对于给顶值和过程变量等的范围,PID指令并不自动进行范围检测,所以,用户必须确保过程变量、给定值、输出值、积分项前值、过程变量前值都在0.0~1.0的范围以内。如果在执行PID运算过程中,遇到任何错误,则特殊存储器标志位SM1.1置“1”,并切终止PID指令的执行。想要消除这些错误,单靠改变回路中的输出值是不够的,正确的方法是在执行PID运算之前,改变引起运算错误的输入值,而不是更新输入值7.6.7PID指令编程举例某水箱需要维持一定的水位,该水箱里的水以变化的速度流出。这就需要有一个水泵以变化的速度给水箱供水以维持水位不变,液位始终保持在水满时的一半。这样才能使水箱不断水。1.分析:本系统的给定值是水箱满水位的50%时的水位,过程变量由水位测量仪提供,输出值是水泵的速度,可以从允许的最大值的0%~100%之间变化。给定值可以预先设定后直接输入到回路表中,过程变量值是来自水位测量仪的单极性模拟量,回路输出值也是一个单极性模拟量,用来控制水泵速度。2.程序实现本系统采用比例和积分控制,其回路增益和时间常数可以通过工程计算初步确定。但还需要进一步调整以达到最优控制效果。初步确定回路的控制参数为:Kc=0.4,Ts=0.2s、Ti=30min,Td=15min。系统启动时关闭出水口,用手动方式控制水泵速度使水位达到满水位的75%,然后打开出水口,同时水泵控制从手动到自动方式。这种切换可由一个手动开关控制。本程序的主程序、回路表初始化程序SBR_0,初始化子程序SBR_1和中断程序INT_0如图7-39所示。其中模拟量输入通道AIW2,模拟量输出通道为AQW0。I0.4是手动/自动转换开关信号,I0.4为1时,为系统自动运行状态。如图7-39所示。

图7-39水箱水位PID控制

3.PID指令编程总结(1)采用主程序、子程序、中断程序的程序结构形式,可以优化程序结构,减少周期扫描时间。(2)在子程序中,先进行组胎编程的初始化工作,然后再设置定时中断,以便周期地执行PID指令。(3)在中断程序中要做三件事。将由模拟量输入模块提供的过程变量PVn转换成标准化的实数并填入回路表中。设置PID指令的无扰动切换的条件,并执行PID指令。将PID运算输出的标准化实数值Mn先刻度化,然后再转化为有符号整数,最后送至,模拟量输出模块,以实现对外部设备的控制。7.7时钟指令1.设定实时时钟指令TODW(SetReal-timeClock)2.读实时时钟指令TODR(ReadReal-TimeClock)

7.8高速处理类指令7.8.1高速计数器指令7.8.2高速脉冲输出指令PLS(Pulse)7.8.1高速计数指令

高速计数器指令有两条:HDEF和HSC。(1)HDEF指令HDEF,定义高速计数器指令。使能输入有效时,为指定的高速计数器分配一种工作模式,即用来建立高速计数器与工作模式之间的联系。梯形图指令盒中有两个数据输入端:HSC,高速计数器编号,为0~5的常数,字节型;MODE,工作模式,为0~11的常数,字节型。(2)HSC指令HSC,高速计数器指令。使能输入有效时,根据高速计数器特殊存储器位的状态,并按照HDEF指令指定的工作模式,设置高速计数器并控制其工作。梯形图指令盒数据输入端N:高速计数器编号,为0~5的常数,字型。每个高速计数器都有固定的特殊功能存储器与之相配合,完成高速计数功能。3.高速计数器的使用方法

每个高速计数器都有一个状态字节,程序运行时根据运行状况自动使某些位置位,可以通过程序来读相关位的状态,用以作为判断条件实现相应的操作。(1)选择计数器及工作模式

(2)设置控制字节

(3)执行HDEF指令

(4)设定当前值和预设值

(5)设置中断事件并全局开中断

(6)执行HSC指令

使用高速计数器时,要按以下步骤进行:4.应用实例

要对一高速事件精确控制,通过对脉冲信号进行增计数,计数当前值达到24产生中断,重新从0计数,对中断次数进行累计。计数方向用一个外部信号控制,并能实现外部复位。所用的主机型号为CPU221。设计步骤:①选择高速计数器HSC0,并确定工作方式4。②令SM37=16#F8③执行HDEF指令,输入端HSC为0,MODE为4。④装入当前值,令SMD38=0。⑤装入设定值,令SMD42=24。⑥执行中断连接ATCH指令,输入端INT为INT0,EVNT为10。

主程序、初始化子程序和中断程序分别如图7.40、图7.41和图7.42所示。图7-40主程序图7.41初始化子程序图7.42中断程序返回本节7.8.2高速脉冲输出

1.高速脉冲输出介绍(1)高速脉冲输出的形式

(2)输出端子的确定

(3)相关寄存器

(4)脉冲输出指令

每个高速脉冲发生器对应一定数量特殊标志寄存器,这些寄存器包括控制字节寄存器、状态字节寄存器和参数数值寄存器,用以控制高速脉冲的输出形式、反映输出状态和参数值。l

状态字节每个高速脉冲输出都有一个状态字节,程序运行时根据运行状况自动使某些位置位,可以通过程序来读相关位的状态,用以作为判断条件实现相应的操作。

控制字节每个高速脉冲输出都对应一个控制字节,通过对控制字节中指定位的编程,可以根据操作要求设置字节中各控制位,如脉冲输出允许、PTO/PWM模式选择、单段/多段选择、更新方式、时间基准、允许更新等。2.高速脉冲串输出PTO(1)周期和脉冲数(2)PTO的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论