42874建筑电气控制技术电子课件第5章_第1页
42874建筑电气控制技术电子课件第5章_第2页
42874建筑电气控制技术电子课件第5章_第3页
42874建筑电气控制技术电子课件第5章_第4页
42874建筑电气控制技术电子课件第5章_第5页
已阅读5页,还剩214页未读 继续免费阅读

下载本文档

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

文档简介

5.3S7-200系列PLC基本指令系统 PLC最常用的编程语言:梯形图(LAD)、语句表(STL)。 S7-200的指令系统可分为基本指令和应用指令。

大部分指令属于基本指令系统,它是PLC用户程序设计的基本组成部分,主要完成逻辑控制、顺序控制、定时控制等;

应用指令也称为特殊功能指令,是PLC厂商为满足用户不断提出的一些特殊控制要求而开发的指令。基本逻辑指令

基本逻辑指令包括位:

逻辑指令、

输出指令、

逻辑块操作指令、

堆栈指令 ……

基本逻辑指令是PLC程序设计中最基本的组成部分,传统的继电器-接触器控制系统均可由基本逻辑指令实现。5.3.1位逻辑指令

位逻辑指令也称为触点指令,是PLC程序最常用的指令,可实现各种控制逻辑。表5-8位逻辑指令及其使用说明 2.位逻辑指令与逻辑堆栈 S7-200系列PLC有一个9层堆栈,用于控制逻辑操作过程,称为逻辑堆栈。逻辑堆栈的栈顶用于存放当前逻辑运算的结果。

(1)逻辑“取”指令(LD、LDN、LDI、LDNI)执行逻辑堆栈的压栈操作,并将指定位地址bit的当前值存入栈顶。

(2)逻辑“与”指令(A、AN、AI、ANI)将指定的位地址bit的当前值与逻辑堆栈栈顶的值相“与”,结果存入逻辑堆栈栈顶,逻辑堆栈的其他值保持不变。

(3)逻辑“或”指令(O、ON、OI、ONI)将指定的位地址bit的当前值与逻辑堆栈栈顶的值相“或”,结果存入逻辑堆栈栈顶,逻辑堆栈的其他值保持不变。

(4)取反指令(NOT)是将逻辑堆栈栈顶的值取反。

(5)上升沿微分指令(EU)检测到正跳变时,逻辑堆栈栈顶值置1,否则为0;下降沿微分指令(ED)检测到负跳变时,逻辑堆栈栈顶值置1,否则为0。图5-12位逻辑运算指令对逻辑堆栈的影响图中iv0~iv8表示逻辑堆栈的原值;逻辑“取”操作中的bit为指令操作数的值;逻辑“与”和逻辑“或”指令中的New表示指令操作数与逻辑堆栈栈顶值运算后的结果。5.3.2输出指令

输出指令也称为线圈指令,可作为逻辑梯级的结束指令。表5-9位逻辑指令及其使用说明【例5-2】简单的逻辑控制举例如图5-13所示,输出点Q0.0为输入I0.0常开触点、I0.1常开触点和I0.2常闭触点相“与”的结果;Q0.1为输入I0.4常开触点、I0.5常开触点和I0.6常闭触点相“或”的结果。图5-13逻辑操作与输出指令示例STEP7-Micro/WIN软件编程时是以“Network”为单位的,即一个网络中只能容纳一个梯级。本书中的梯形图程序及语句表程序均未标明“Network”。5.3.3

逻辑块操作指令

多个触点的逻辑组合称为逻辑块,最小的逻辑块为单个触点。

逻辑块的操作指令包括:“逻辑块的与”指令ALD(AndLoad)和“逻辑块的或”指令OLD(OrLoad)。图5-14逻辑块操作指令对逻辑堆栈的影响(1)ALD指令将逻辑堆栈中第一层(栈顶)和第二层的值进行逻辑“与”操作,结果存放于栈顶,同时将逻辑堆栈其它层的值向上弹出一位(堆栈的深度减1)。(2)OLD指令将逻辑堆栈中第一层和第二层的值进行逻辑“或”操作,结果存放于栈顶,同时将其它层的值向上弹出一位。

逻辑块操作示例如图5-15所示。输出Q0.0实际上为左右两个逻辑块相“与”的结果,其中左边是由两个逻辑块相“或”,这两个逻辑块分别为输入点I0.0常开触点和I0.1常闭触点“与”的结果,以及I0.2常开触点和I0.3常开触点“与”的结果;右边逻辑块为I0.4常开触点和I0.5常开触点“与”的结果再与I0.6的常闭触点相“或”。图5-15逻辑块操作示例5.3.4

堆栈指令与堆栈操作S7-200系列PLC堆栈指令描述如下:

(1)LPS指令:复制栈顶的值,并将该值压入栈,栈底移出的值丢弃。

(2)LRD指令:将堆栈第二层的值复制至栈顶。该指令无压入栈或弹出栈的操作。

(3)LPP指令:执行弹出栈操作,此时堆栈第二层的值成为新的栈顶值。

(4)LDS指令:执行压入栈操作的同时将原逻辑堆栈第N层的值复制至栈顶。N的取值范围为0~8。图5-16堆栈指令与堆栈操作堆栈指令示例如图5-17所示。图5-17堆栈指令示例5.3.5RS触发器指令表5-10RS触发器指令及其使用说明

在程序设计中,RS触发器通常由置位、复位指令实现,如图5-18所示。图5-18由置位、复位指令组成触发器电路

因为PLC程序的执行过程是由上向下的,所以当输入信号I0.0和I0.1均为“1”时,对于置位优先电路,输出Q0.0为“1”;对于复位优先电路,Q0.0为“0”。上述电路也可与电气控制中电动机的基本起、保、停电路相对应。置位优先相应于开启优先型电路,而复位优先相应于关断优先型电路。5.3.6

基本逻辑指令程序示例

基本逻辑指令在PLC程序中使用的频率最高,除实现一般的逻辑运算功能外,还可实现较为复杂的控制。【例5-3】边沿微分指令示例如图5-19所示。检测到输入I0.1有上升沿跳变时,M0.0为“1”一个扫描周期;I0.2有下降沿跳变时,M0.1为“1”一个扫描周期。图5-19边沿微分指令示例

边沿微分指令常用于检测信号状态的变化,并可将一个“长”信号转变为“短”信号。

【例】简单的报警电路。控制系统中若设备发生故障应及时报警,最常采用的是报警灯。当故障信号产生时报警灯应呈闪烁状态,控制电路如图所示。图

简单的报警电路M0.0为故障信号,M1.0为故障标志,Q0.0为故障报警灯,I0.3为系统复位按钮。【例5-4】用置位、复位指令实现顺序控制。控制思想:先将控制过程划分为若干个工序或节拍,指出各节拍间的转换条件(或每个节拍的结束信号);然后用PLC的内部位地址表示各个节拍,如辅助继电器M或变量寄存器V,一个位地址表示一个节拍;最后依次使用置位、复位指令实现顺序控制过程。图5-20用置位、复位指令实现3节拍的顺序控制I0.0为系统起动按钮,M0.1~M0.3分别表示3个节拍,V0.1~V0.3分别对应3个节拍的结束信号(节拍间的转换信号)。

注意:图5-20电路仅实现了顺序控制各节拍间的转换,完整的控制电路还应加上实际的输出电路。另外,当控制过程比较复杂时,不同节拍间的转换信号有可能相同,并且这些信号有可能长时间为“1”(或“0”),为避免出现混乱,应将这些“长”的转换信号通过边沿微分指令变为“短”信号。

【例5-5】二分频电路。在许多控制场合,需要对控制信号进行分频,其中二分频电路使用较多。图5-21二分频电路图

二分频电路时序图

【例5-6】采用顺序控制的思想,应用置位、复位指令和边沿微分指令还可实现多分频控制。如用一个按钮(I0.0),控制两盏灯(Q0.0和Q0.1),初始时两盏灯全灭。要求:第一次按下按钮时,只有第一盏灯(Q0.0)亮;第二次按下按钮时,只有第二盏灯(Q0.1)亮;第三次按下按钮时,两盏灯全亮;第四次按下按钮时,两盏灯全灭,恢复至初始状态,之后循环往复。按输出状态的不同可将控制过程划分为4个节拍:初始节拍、只有第一盏灯亮(用辅助继电器M0.1表示)、只有第二盏灯亮(用M0.2表示)和两盏灯全亮(用M0.3表示)。图5-22四分频控制程序图5-23例7-8控制时序5.4

定时器指令与计数器指令S7-200系列PLC提供了3种类型256个内部定时器。5.4.1

定时器指令1.定时器指令形式表5-11S7-200PLC定时器指令定时器指令的参数:定时器编号(Tn)、预设值(PT,字类型)和指令使能输入端(IN)。定时器编号n的取值范围为0~255;预设值PT最大值为32767。 2.定时器指令的时间基 S7-200系列PLC的定时器指令有三种时间基:1ms,10ms,100ms。定时器的延时时间由指令的预设值和时间基确定,即:延时时间等于指令预设值与时间基的乘积。表5-12S7-200PLC定时器指令类型、时间基及编号对照表指令类型时间基最大定时范围定时器编号TONR1ms32.767sT0,T6410ms327.67sT1~T4,T65~T68100ms3276.7sT5~T31,T69~T95TON、TOF1ms32.767sT32,T9610ms327.67sT33~T36,T97~T100100ms3276.7sT37~T63,T101~T2553.可操作的数据类型

(1)位类型,称为定时器位,相当于时间继电器的延时触点。

(2)字类型,定时器的当前值,是对定时器时间基的累计值。4

定时器指令使用说明

(1)通电延时定时器(TON)。

初始时定时器当前值为0,定时器位状态为“0”。

当指令的梯级逻辑为真时(指令使能输入端IN为“1”),定时器开始计时,当定时器当前值大于等于预设值时,定时器位被置位(其常开触点闭合、常闭触点断开)。

达到预设值后,若梯级逻辑一直为真,则定时器计时过程继续,当前值一直累加,直至最大值32767。当梯级逻辑为假时定时器自动复位,此时定时器位被复位,当前值清零。可使用复位指令R来复位TON定时器。TON指令应用举例,如图7-15所示。图7-15TON指令应用举例(2)断电延时定时器(TOF)。

初始时定时器当前值为0,定时器位状态为“0”。

当指令的梯级逻辑为真时,定时器位被置位,其常开触点闭合、常闭触点断开,同时定时器当前值清零。当指令的梯级逻辑由真变假时,定时器开始计时,其当前值由0开始增加。

当定时器当前值等于预设值时,定时器位被复位,当前值保持不变直至梯级逻辑再次为真。可使用复位指令R来复位TOF定时器。TOF指令应用举例,如图7-16所示。图7-16TOF指令应用举例

(3)带保持的通电延时定时器(TONR)。

初始时定时器当前值为0,定时器位状态为“0”(带掉电保护的除外)。

当指令的梯级逻辑为真时,定时器开始计时,当前值开始累加;当梯级逻辑为假时,当前值保持不变。

当定时器当前值大于等于预设值时,定时器位被置位。定时器当前值最大值为32767。 TONR只能用复位指令R来复位,定时器复位后当前值清零,定时器位被复位。TONR指令应用举例,如图7-17所示。图7-17TONR指令应用举例S7-200系列PLC定时器的刷新

定时器的刷新是指PLC程序执行过程中定时器当前值的更新过程。不同时间基的定时器,其刷新方法也不同。(1)1ms定时器。按系统时钟刷新,与扫描周期和程序执行过程无关。系统每隔1ms刷新一次,所以当扫描周期较长时,一个周期内可能被多次刷新,定时器当前值在一个扫描周期内不一定保持不变。(2)10ms定时器。每个扫描周期开始时自动刷新,定时器位和当前值在整个扫描周期内保持不变。更新过程是将一个累积的时间间隔加到定时器当前值上。(3)100ms定时器。指令被执行时刷新。为了使定时器指令能够正确的定时,应确保在一个扫描周期内同一编号的定时器指令只被执行一次。

由于定时器刷新方式不同,所以相同结构的程序采用不同时基的定时器时,执行结果可能不同。下图是由100ms定时器指令组成的自振荡电路。图

自振荡电路示例

若将T37换为T32(1ms)或T33(10ms)时,如下图(a)和(b),输出结果完全不同。

改进:将程序中的定时器位常闭触点换为输出Q0.0的常闭触点,如图7-19(c)所示,则使用任何一种定时器均能实现自振荡电路。图1ms、10ms定时器及电路改进

对于T32,只有当T32的当前值恰好是在执行T32常闭触点和T32常开触点之间时达到预设值,Q0.0才能接通一个扫描周期。但这种情况的机率是非常低的。对于T33,由于定时器是在每个扫描周期开始时刷新,所以只要T33当前值到达预设值,其定时器位被置位,程序执行时其断开的常闭触点将使T33马上复位,所以Q0.0不会有任何脉冲输出。5.4.2

计数器指令

计数器指令用于累计外部输入脉冲或由软件生成的脉冲个数。

计数器指令的计数频率受PLC扫描周期的影响,所以脉冲频率不能太高。 S7-200系列PLC提供了256个内部计数器,脉冲的计数个数可由程序设定。1.指令形式 S7-200系列PLC按工作方式有3种计数器指令。表5-13S7-200系列PLC计数器指令

计数器指令的参数包括计数器编号(Cn)、预设值(PV,字类型)、计数脉冲输入端(CU或CD)、复位端(R或LD)。计数器编号n的取值范围为0~255。在同一应用程序中,不同类型的计数器指令不能共用同一计数器编号,计数器的类型可由程序设定。计数器设定值PV的数据类型为整数INT型。2.可操作的数据类型

(1)位类型,称为计数器位,可认为是计数完成位。

(2)字类型,计数器的当前值,是对计数脉冲个数的累加值。3

计数器指令使用说明(1)加计数指令(CTU)。

对CU端计数脉冲的上升沿进行加计数。当计数器的当前值大于等于预设值时,计数器位被置位,当复位端R为“1”或执行复位指令时,计数器复位,计数当前值清零,计数器位被复位。计算器最大计数值为32767。CTU指令应用举例,如图5-27所示。图5-27CTU指令应用举例

(2)减计数指令(CTD)。

对CD端计数脉冲上升沿进行减计数。复位端无效时,若检测到计数脉冲上升沿,则计数器从预设值开始进行减计数,直至减为0;若当前值为0时,计数器位被置位;当装载输入端LD为“1”时,计数器位被复位,并将计数器当前值设为预设值PV。CTD指令应用举例,如图5-28所示。图5-28CTD指令应用举例(3)CTUD:

对加、减计数端(CU、CD)的输入脉冲上升沿计数。当计数器当前值大于等于预设值时,计数器位置位,否则计数器为复位;当复位端R为“1”或执行复位指令时,计数器位被复位,当前值清零。

CTUD的计数范围为-32768~32767。当计数器当前值达到32767时,若再来一个加计数脉冲,当前值变为-32768。同样,当前值为-32768时,若再来一个减计数脉冲,则当前值变为32767。所以使用时应格外小心。CTUD指令应用举例,如图7-25所示。图7-25CTU指令应用举例下图是由100ms定时器指令组成的自振荡电路。图

5-30

自振荡电路示例【例5-7】5.4.3

定时器与计数器指令举例【例5-8】脉冲输出电路。自振荡电路输出的脉冲宽度太小,且不可调。若想得到周期可调、脉宽可调的脉冲输出,可采用如图5-31所示的电路形式。图5-31脉冲输出电路Q0.0的输出为一周期可调、占空比可调的脉冲串,改变定时器T37和T38的时间设定值,即可改变脉冲串的频率和占空比。【例】设备报警电路。当PLC发出控制命令去起动某台设备时,如果该设备没有正常起动,则需要报警以指示该设备存在故障。下图是常用的声光报警电路。图

设备报警电路【例】按时间原则的顺序起动电路。设有三台电机,按下起动按钮电机依次起动,时间间隔为5秒,起动程序如下图所示。图

按时间原则的顺序起动【例5-9】用按钮控制一盏灯,按钮按下5次后灯亮,再按3次后灯灭,依次循环反复。LAD程序如图5-32所示。图5-32计数器指令应用举例需要注意的是第五次按下按钮时,C0的当前值为5时,其计数器位被置位,而此时C1的当前值变为1,所以为确保再按3次按钮灯灭的要求,C1的预设值必须为4。【例5-10】长延时电路。S7-200系列PLC定时器指令的最长延时时间为3276.7秒。而在许多控制场合需要更长时间的延时,如6小时、12小时,显然仅用定时器指令无法实现。图5-33是用定时器指令和计数器指令组成长延时电路:图5-33长延时电路改变T37和C1的预设值可实现不同的长延时电路。5.5

比较指令

比较指令是将两个类型一致的操作数按照指定的条件进行比较,若条件成立则节点闭合。S7-200PLC的比较指令是以触点的形式出现的。5.5.1比较指令的梯形图形式

比较指令的基本形式如图7-28所示。图

比较指令基本形式比较指令中的符号“××”表示两操作数IN1和IN2进行比较的条件。符号“□”表示两操作数的数据类型符号××比较条件描述符号××比较条件描述==等于<=小于等于<>不等于>大于>=大于等于<小于表S7-200允许的比较条件符号□数据类型描述符号□数据类型描述B字节D双字I字R实数表

比较指令的数据类型5.5.2

比较指令的语句表形式表

比较指令的指令表形式5.5.3比较指令程序示例【例】比较指令在逻辑运算中的应用,如图所示。图

逻辑运算中的比较指令【例5-11】用比较指令实现脉冲输出电路,如图7所示。【例5-12】

用比较指令完成【例5-9】的控制要求.(用按钮控制一盏灯,按钮按下5次后灯亮,再按3次后灯灭,依次循环反复。)图

例5-9梯形图程序【例5-13】十字路口交通灯的控制。要求开关I0.0闭合时,各信号灯按图7-32所示的时序过程开始工作。图5-36交通信号灯工作时序图5-37交通信号灯PLC控制程序5.6数据处理指令数据处理指令:

数据传送指令

数据转换指令

字节交换指令

编码与译码指令5.6.1

数据传送类指令

传送类指令用于在PLC各内部编程元件之间进行数据传送。

根据每次传送数据数量的多少可分为单数据传送指令和数据块传送指令。 1.单数据传送指令

单数据传送指令使用较多,按操作数的类型可分为字节传送、字传送、双字传送和实数传送等。 2.数据块传送指令

数据块传送指令可以一次传送多个数据,按组成数据块的数据类型可分为字节类型数据块、字类型数据块和双字类型数据块。 3.字节交换指令

字节交换指令SWAP用于将字类型数据的高位与低位字节互换,所以也称为半字交换指令。 4.数据填充指令

数据填充指令FULL用于将字类型输入数据IN填充到以OUT为首址的连续的N个存储单元中。表

单数据传送指令及其使用说明表

数据块传送指令及其使用说明表

字节交换指令及其使用说明传送类指令与字节交换指令示例,如图所示。图

传送指令及字节交换指令示例表

数据填充指令及其使用说明2

数据转换类指令

数据转换指令用于转换操作数的类型。主要包括数制转换指令、BCD码转换指令、ACSII码转换指令等。(1).数制转换指令

数制转换指令是指将一个数据按字节、字、双字和实数等类型进行转换。表

数制转换指令及其使用说明

说明:数据进行数制转换时应注意,如果想将一个字类型的整数转换为实数类型,必须先将字类型整数转换为双字类型整数,然后再转换为实数。

进行数制转换时可能会影响溢出标志位SM1.1,所以用户编制应用程序时应对SM1.1进行检验,以免发生错误。(2).BCD码数据转换指令 BCD码转换指令是针对字类型的整数和BCD数进行操作的。表BCD码转换指令及使用说明

强调:上表中BCD码转换指令的语句表形式只有一个操作数,所以由梯形图指令转换为语句表指令时应附加一条传送指令,如图所示。图BCD码转换指令示例(3).取整指令

取整指令用于将实数型数据转换成双字类型的整数。表

取整指令及其使用说明(4)编码与解码指令表

编码与解码指令及其使用说明编码、解码指令程序示例如图所示。图

编码、解码指令示例5.6.2数据运算类指令

S7-200系列PLC数据运算类指令包括数学运算指令和逻辑运算指令。

数学运算指令包括四则运算指令及一些常用的数学函数,数据类型通常为整型INT、双整型DINT和实数类型REAL;

逻辑运算指令包括字节、字和双字的逻辑“与”、逻辑“或”、逻辑“非”及逻辑“异或”等运算。1四则运算指令

四则运算指令包括加法、减法、乘法和除法,运算结果将影响某些特殊功能寄存器(特殊标志位)的值,如零标志SM1.0、溢出标志SM1.1、负标志位SM1.2、除数为零标志SM1.3等。(1).整数加、减法运算指令

整数加、减法运算是对两个有符号数进行操作的.表5-25整数加、减法指令及其使用说明

值得注意的是:语句表指令中只有两个参数,所以两种情况下参数IN1的意义不同。在梯形图指令中如果参数IN1和OUT不相同,则转换成语句表指令时应附加一条字类型传送指令,如图

所示。图

整数加、减法运算指令示例(2).双整数加、减法运算指令

双整数加、减法运算是对两个32位有符号数进行操作的表

双整数加、减法指令及其使用说明【例】双整数加、减法运算指令示例,如图7-38所示。图

双整数加、减法指令示例(3).实数加、减法运算指令表

实数加、减法指令及其使用说明(4).整数乘、除法运算指令

整数乘、除法运算指令是对两个有符号数进行操作表

整数乘、除法指令及其使用说明

与整数加、减法指令相同,梯形图指令和语句表指令中的参数IN1具有不同的意义,两种语言进行转换时应格外注意。【例】乘、除法运算指令示例,如图

所示。图7-39乘、除法指令示例(5).双整数乘、除法运算指令

双整数乘、除法运算指令是对两个32位有符号数进行操作表

双整数乘、除法指令及其使用说明(6).实数乘、除法运算指令表

实数乘、除法指令及其使用说明7.结果为32位的整数乘法和带余数的整数除法运算指令

结果为32位的整数乘法指令MUL是将两个16位的有符号整数相乘,结果送入32位的OUT中;带余数的整数除法运算指令DIV将两个16位有符号整数相除,结果送入32位的OUT中,其中商存入低16位,余数存入高16位。表MUL、DIV指令及其使用说明MUL、DIV指令示例,如图5-42所示。图5-42MUL、DIV指令示例

注意:图中STL程序,实际参与乘、除法运算的是32位操作数OUT中的低16位,所以MUL指令中附加的字传送指令应将VW100传送至VD30的低16位VW32,DIV指令中附加的字传送指令应将AC0的低16位传送至VD200的低16位VW202。2.加1、减1指令

加1、减1指令又称为参数增减指令,数据类型可以为字节、字和双字。(1).字节的加1、减1指令

字节的加1、减1指令是对8位的输入参数IN执行加1或减1操作,结果存入8位的OUT中.表

字节的加1、减1指令及其使用说明 STL指令中只有一个参数,若梯形图指令中参数IN和OUT不一致,应附加一条字节传送指令。(2).字的加1、减1指令

字的加1、减1指令是对16位的输入参数IN执行加1或减1操作,结果存入16位的OUT中.表

字的加1、减1指令及其使用说明 (3).双字的加1、减1指令

双字的加1、减1指令是对32位的输入参数IN执行加1或减1操作,结果存入32位的OUT中.表

双字的加1、减1指令及其使用说明加1、减1指令示例,如图7-41所示。图7-41加1、减1指令示例3.数学函数指令注意:由于数学函数指令的操作数为实数类型,所以对整数或双整数进行操作时应先进行数据格式的转换。数学函数指令示例

设AC0中存放的是双整型数据,先将整型数据转换为实数,然后再对实数进行平方根运算。因为32位相同的0、1代码所对应的双整型数值和实数值完全不同,换句话说,等值的双整型数和实数表达方法不同,如果直接对AC0求平方根,CPU会将双整型格式的数理解为实数格式进行运算,导致运算结果有误。 S7-200PLC并没有提供幂函数指令,但可以通过对数函数和指数函数构造,如:

同样余切函数和反三角函数也可通过现有的三角函数进行构造。5.6.3逻辑运算指令

逻辑运算指令是对无符号的字节、字或双字类型数据进行逻辑操作,如逻辑“与”、逻辑“或”、逻辑“异或”及取反操作等。逻辑运算指令示例,如图5-45所示图5-45逻辑运算指令示例5.6.4移位指令

移位指令在PLC控制系统中较为常用,根据移位数据的长度可分为字节类型、字类型和双字类型的移位,也可根据实际情况自定义移位长度。移位的方向分为左移和右移,也可进行左、右方向的循环移位。指令每次执行时可以只移动一位,也可移动多位。1

左移、右移指令

左移、右移指令的功能是将输入数据向左或向右移动N位后,将结果送入OUT中。

注意:移位指令在使能端EN有效时即执行移位操作,如果EN端一直有效,即指令前的梯级逻辑一直为真,则每个扫描周期都将执行移位操作。所以即使是双字类型移位指令,也会在很短的时间内使OUT清零。在实际中,常常要求在某个条件满足时仅执行一次移位操作,所以应在指令的梯级逻辑中加入微分指令,如EU,即仅在条件满足的第一个扫描周期内执行相应的移位操作。

如果LAD中的操作数IN和OUT不一致,将LAD指令转换成STL指令时应附加一条传送指令。左移、右移指令示例,如图5-46所示。图5-46左移、右移指令示例2

循环移位指令

循环左移、右移指令是将输入数据向左或向右循环移动N位后,将结果送入OUT中。

循环移位指令也是在使能端EN有效时执行移位操作的,所以如果要求在某个条件满足时仅执行一次循环移位操作,应在指令的梯级逻辑中加入微分指令。

循环移位指令示例,如图5-47所示。3移位寄存器指令

移位寄存器指令使用比较灵活,允许用户自己定义移位寄存器的长度,可实现左移和右移,移入的位可根据程序需要设定。用户定义的移位寄存器起始位为S_BIT,即最低位LSB为S_BIT,其最高位MSB的计算方法如下:MSB字节号=S_BIT字节号+{[(N的绝对值-1)+S_BIT的位号]/8}的商MSB位号={[(N的绝对值-1)+S_BIT的位号]/8}的余数

如S_BIT为V35.7,N的值为-10,则MSB的字节号为35,位号为0,即MSB为V35.0。

如S_BIT为V23.7,N的值为-15,则MSB的字节号为25,位号为5,即MSB为V25.5。

构成移位寄存器如图所示。图5-48用户定义的移位寄存器移位寄存器指令示例,如图5-49所示。图5-49移位寄存器指令示例

用户定义的4位移位寄存器由Q0.0~Q0.3组成。设I0.0接外部按钮,Q0.0~Q0.3各接一盏灯。初始时设Q0.0~Q0.3全为“0”,则M0.0为“1”。程序执行时,每按一下按钮,执行一次移位寄存器指令,左移一位并补以M0.0的值。所以四盏灯每按一次按钮亮一盏,直至灯全亮,然后每按一次按钮灭一盏灯,直至灯全灭,恢复至初始状态,之后循环往复。

图5-50移位寄存器指令示例

移位寄存器由M0.0~M0.7组成。N>0为左移,每次移出的位M0.7又作为DATA端补入移位寄存器,实现循环左移。读者自行考虑如何实现循环右移。

【例5-14】用移位寄存器指令实现循环移位,如图5-50所示。

【例】用一个开关控制6盏灯。要求开关闭合时,6盏灯依次亮起,直至全亮;开关断开时,6盏灯按相反的顺序依次灭掉,直至全灭,各灯之间亮、灭的间隔为1秒。用移位指令实现。

设开关为I0.0,6盏灯分别由Q0.0~Q0.5控制,控制程序如图7-49所示。5.7步进控制指令及顺序控制 S7-200系列PLC用步进控制指令来实现顺序控制。

许多生产过程可以分成若干个节拍(或工序),每个节拍内系统处于相对稳定状态。在PLC程序设计中,每个节拍称为一个步进控制段,由步进控制指令SCR(SequenceControlRelay)来描述,这类指令也称为顺序控制继电器指令,所以也可称步进控制段为顺序控制段,简称顺控段。 5.7.1

步进控制指令

S7-200PLC中规定只能用状态寄存器S来表示顺序控制段,每个段由一个状态寄存器位来表示。

步进控制指令包括段的开始、段的结束和段的转移指令。表5-43步进控制指令及其使用说明一个简单的顺序控制段图5-51单个顺序控制段的构成图5-52LSCR指令对SCR堆栈和逻辑堆栈的影响

步进控制指令的执行与SCR堆栈有关。以图5-51为例,执行LSCR指令时将S0.1位的值装入SCR堆栈。当执行SCR段主体程序时,在每个梯级的开始,CPU会将SCR堆栈的值复制到逻辑堆栈栈顶,如图5-52所示。SCR堆栈的值决定该程序段是否被执行,若值为“1”,则执行程序;否则不执行。

注意:这里的“不执行”并非跳过该段SCR程序,CPU仍然会对该段程序进行扫描,只不过此时SCR堆栈值为“0”,相当于没有能流流过。因此可以简单地认为SCR程序段的逻辑操作与SCR堆栈的值是逻辑“与”的关系。如图5-52中的Q0.0,其值不仅与M0.1的值有关,还与状态寄存器S0.1的值有关。LSCR指令使用时,不能将相同的S状态位应用于不同的程序中。如主程序中使用了LSCRS0.1,则该指令不能在其他子程序或中断程序中使用,且在整个程序中也只能出现一次。在每个SCR段内可以使用跳转和标号指令,但不允许在SCR程序段之间进行跳转。在SCR段内也不能使用END指令。SCR段之间的转移是靠SCRT指令实现的。设SCRT指令所属的SCR段标志位为Sn.x,指令的操作数为Sm.y,则SCRT指令执行时将置位Sm.y,同时复位Sn.x。如图5-51中的SCRT指令执行时,S0.2被置位的同时将S0.1复位。5.7.2

功能图与顺序控制程序设计

复杂的控制过程直接用步进控制指令编程往往会出现许多问题,正确的方法是先用“功能图”将控制过程描述出来,弄清各顺控段的任务以及它们之间的关系,然后再使用步进控制指令将其转化为梯形图程序或语句表程序,最后进行补充与完善。

功能图的设计方法:

先将控制过程划分为若干个独立的顺控段(节拍),确定每个顺控段的起动条件或转换条件(相当于节拍间的转程信号);然后将每个顺控段用方框表示,根据工作顺序或动作次序用箭头将各方框连接起来;再为每个顺控段分配状态寄存器位;最后在相邻的方框之间用短横线来表示转换条件,每个顺控段所要执行的控制程序在方框的右侧画出。 1.单支流程

单支流程是顺序控制程序的最简形式,整个流程的方向是单一的,无分支、选择、跳转和循环等,程序示例如图7-61所示。图5-53单支流程的步进控制2.选择性分支与合流图5-54选择性分支结构的步进控制3.并行性分支与合流图5-55并行性分支结构的步进控制4.跳转与循环图5-56跳转与循环结构的步进控制5.7.3步进控制指令应用示例【例】生产线上运料小车的工作过程如图所示。初始状态下小车位于左端,压触后限位开关。工作时按下起动按钮,小车向右运动(前进),压触前限位开关后小车停止,同时漏斗下方的翻门打开,为小车装料,8秒种后翻门关闭,结束装料过程,同时小车后

退,压触后限位开关后停

止,并打开小车的底门,6秒种后关闭底门,结束

一次工作过程。要求用PLC步进控制指令编写

控制程序。

运料小车工作示意图小车的工作方式如下:(1)手动控制。可实现对小车前进、后退,及翻门和底门的手动控制。(2)单次自动控制。初始状态下,每按下一次起动按钮,自动完成一次上述的运料过程。(3)自动循环控制。按下起动按钮后周而复始地执行上述运料过程。控制过程输入/输出地址分配表名称类型地址名称类型地址起动按钮输入I0.0手动控制方式输入I0.3前限位开关输入I0.1单次自动方式输入I0.4后限位开关输入I0.2自动循环方式输入I0.5小车前进手动按钮输入I0.6小车前进输出Q0.0小车后退手动按钮输入I0.7小车后退输出Q0.1翻门打开手动按钮输入I1.0打开翻门输出Q0.2底门打开手动按钮输入I1.1打开底门输出Q0.3表7-49小车运料系统I/O分配表

可以采用如图所示的主程序结构,该结构采用跳转与标号指令,当处于手动控制方式时,I0.3为“1”,I0.4和I0.5为“0”,CPU在每个扫描周期执行完手动控制程序后直接跳转至程序结尾。当处于自动控制方式时,I0.3为“0”,I0.4或I0.5为“1”,CPU在每个扫描周期将跳过手动控制程序而仅执行自动控制程序。图

运料小车工作过程主程序结构

也可采用子程序的方式设计程序,如图

所示,其中SBR_0为手动控制程序,SBR_1为自动控制程序。图

采用子程序的主程序结构小车的工作过程分为4个节拍,即4个顺控段:小车前进、装料、小车后退、卸料,分别由S0.1、S0.2、S0.3、S0.4表示。设初始状态由S0.0表示,小车自动运行时必须由初始状态开始。S0.0应在系统从手动方式向自动方式切换时置位。注意:控制程序中还应考虑手动控制和自动控制方式的相互切换。如自动方式下小车未完成一次循环就将工作方式改为手动控制,或手动方式下小车未回到初始位置就将系统工作方式改为自动运行等。最简单的处理方法是小车只有处于初始位置时才能进行工作方式的切换。当然现场调试时可能还会有其他要求!程序设计时都应该认真考虑。现以自动运行方式,采用步进控制指令设计控制程序:图

运料小车自动运行控制程序控制要求:系统开始工作时,液面应处于最低位,按下起动按钮,打开A阀门,液体A流入混料罐当液面上升到中间位置时,关闭A阀门,打开B阀门,B液体流入混料罐,当液面上升到最高位时,关闭B阀门,启动搅拌机,2分钟后停止搅拌,打开C阀门,当液面降至最低位后,延时5秒钟关闭C阀门,完成一次工作过程。在工作过程中若没有按下停止按钮,则系统在2秒钟后自行起动上述工作循环;否则,当一次循环过程结束后系统停止运行。按下复位按钮,系统恢复至初始状态。【例5-15】混料罐的控制。图7-69为系统工作原理图。图5-57混料罐系统工作原理图名称类型地址名称类型地址起动按钮输入I0.0液位低传感器输入I0.5停止按钮输入I0.1A阀门电磁阀输出Q0.0复位按钮输入I0.2B阀门电磁阀输出Q0.1液位高传感器输入I0.3C阀门电磁阀输出Q0.2液位中传感器输入I0.4搅拌机输出Q0.3表5-44混料罐控制系统I/O分配表

设系统的初始状态为S0.0,工作过程可划分为6个顺控段:A阀门打开、B阀门打开、搅拌机工作、C阀门打开、延时5秒钟和延时2秒钟,分别由S0.1、S0.2、…、S0.6表示。图

混料罐控制程序

系统复位是指系统恢复至初始状态。复位过程实际上是打开C阀门使液面下降的过程。同时C阀门应在S0.4和S0.5所表示的顺控段中打开,因此将S0.4、S0.5常开触点及复位按钮相“或”组成Q0.2的输出电路。

虽然Q0.2在S0.4和S0.5所表示的顺控段中为“1”,但程序中不能在S0.4和S0.5的程序段中分别输出Q0.2,只能使用置位、复位指令或图示“或”的方法。因为在PLC程序中,一个元件在多个梯级中多次输出时,仅有最后一个梯级的逻辑功能有效,其他均无效,这是由PLC扫描方式决定的。如图7-71所示,设M0.1或M0.2为“1”时,M1.0为“1”,应采用图(a)所示的“或”电路。由于PLC扫描程序是有严格顺序的,从上向下依次扫描,所以如果采用图(b)所示的电路,则只有当M0.2为“1”时,M1.0才为“1”。图7-71一个元件多次输出电路示例【例5-16】交通灯的控制。与例7-23相同,要求开关I0.0闭合时,各信号灯按图7-32所示的时序过程工作;开关断开时,完成一次循环后自动停止。系统的I/O地址分配,见表5-45所示。名称类型地址名称类型地址起动按钮输入I0.0东西向绿灯输出Q0.3东西向绿灯输出Q0.0东西向黄灯输出Q0.4东西向黄灯输出Q0.1东西向红灯输出Q0.5东西向红灯输出Q0.2表5-45交通灯控制系统I/O分配表

若将东西向交通灯和南北向交通灯分别控制,可认为它们是两条并行的分支,每条分支可分为三个顺控段。图5-59交通灯控制过程功能图

也可将其分成四个顺控段,即:东西向绿灯亮(40s)、东西向黄灯亮(5s)、南北向绿灯亮(40s)、南北向黄灯亮(5s)。若分别用S0.1~S0.4表示,则东西向红灯应在S0.3和S0.4为“1”时亮,而南北向红灯应在S0.1和S0.2为“1”时亮。图5-60交通信号灯系统功能图及LAD程序5.8程序控制指令

一个应用程序由可执行代码段和注释组成。

可执行代码段包括主程序、子程序和中断服务程序。程序的可执行部分经编译后下载至S7-200PLC中,而程序的注释部分不被下载。

结构化的程序通常是由主程序、若干个子程序或中断服务程序构成的。5.8.1主程序及主程序结束指令 PLC在每个扫描周期执行程序时总是由主程序的第一个梯级开始,由上至下、从左到右顺序执行。

主程序在STEP7-Micro/WIN中用OB1表示。用户可以根据需要对主程序执行重命名操作。

通常在主程序的末尾应加入无条件结束指令,以指示主程序的结束。需要注意的是STEP7-Micro/WIN中无此指令。应用程序在编译过程中会在主程序的末尾自动加入该指令。

在主程序也可以使用条件结束指令(END)而提前结束。如图7-50所示。图5-61主程序的条件结束在主程序执行过程中,若输入条件I1.0为1,则主程序执行过程提前结束,条件结束指令后的程序体2将不被执行。主程序条件结束指令不允许出现在子程序或中断服务程序中。

5.8.2

子程序及子程序调用与返回指令1.子程序概念

子程序(Subroutine)是应用程序中的可选组件。只有被主程序、中断服务程序或者其它子程序调用时,该子程序才会被执行。

结构化程序设计中子程序非常有用。当重复执行具有某种功能的程序段时,可采用子程序调用方式。

子程序在STEP7-Micro/WIN中用SBRn表示,n为子程序编号,取值范围为0~63。用户可以根据需要对各子程序执行重命名操作。采用子程序有如下优点:(1)使用子程序可以减小应用程序的长度,缩小程序占用的存储器空间。(2)采用子程序结构与将子程序代码写在主程序中相比,可以缩短程序的扫描时间。因为在每个扫描周期主程序中的代码都将被执行,而子程序只有在被调用时,相应程序段代码才会被执行。(3)用子程序创建的程序是可移植的。用户可以在一个子程序中完成一个独立的功能,然后将它复制到另一个应用程序中而无需作重复工作。

注意:在子程序中使用局部变量(L存储器),会使子程序具有极高的可移植性。使用局部变量可使子程序与程序的其它部分之间不存在地址冲突。2.子程序调用与返回指令

通常PLC程序设计中在子程序的末尾应加上一条无条件返回指令,以指示子程序到此结束,应返回至调用程序。需要注意的是STEP7-Micro/WIN中无此指令。应用程序在编译过程中会在各子程序的末尾自动加入该指令。

子程序在使用时允许嵌套,嵌套的深度最多为8层。使用递归调用时应格外谨慎。

当子程序被调用时,整个逻辑堆栈另存别处,然后栈顶置1,其余为0,之后开始执行被调用子程序。子程序执行完毕后,恢复原逻辑堆栈的值,程序返回调用程序。子程序调用与返回的例子。图5-62子程序调用与返回图中当输入I0.1为“1”时,调用子程序SBR_0。在SBR_0被执行时,若I0.2为“1”,则执行条件返回指令,其后的程序不被执行。

3.带参数的子程序调用

子程序在调用过程中,允许带参数调用。每个参数包括变量名、变量类型和数据类型,这些参数在子程序的局部变量表中进行定义。

每个子程序在带参数调用时,最多可以带16个参数。每个变量的名称由不超过8个字符的字母和数字组成,但第一个字符必须是字母。

带参数调用的子程序可以使用4种变量类型,这些变量均在该子程序的局部变量表中定义。变量类型如下:(1)IN类型。也称为输入型参数,其寻址方式可以采用直接寻址和间接寻址(指针),如VB200、*VD100,也可使用立即数或地址编号,如16#1234、&VB20。(2)OUT类型。也称为输出型参数,可将子程序中的运行结果返回至指定的参数。OUT型参数的寻址方式可采用直接寻址和间接寻址。(3)IN/OUT类型。即输入/输出型参数。调用子程序时,将指定地址的参数输入子程序,子程序执行结束时,将运算结果返回到同一个地址。IN/OUT类型的寻址方式可采用直接寻址和间接寻址。(4)TEMP类型。也称为暂时型参数,只能作为子程序内部参数使用,不能用于传递数据。

CPU在执行子程序时,自动分配给每个子程序64个局部变量寄存器单元,在进行子程序参数调用时,将调用参数按照变量类型IN、IN/OUT、OUT和TEMP的顺序依次存入局部变量表中。当调用子程序时,将输入参数被拷贝到子程序的局部变量寄存器中,当子程序执行完毕时,将相应局部变量寄存器的值拷贝至输出参数。

在语句表中,带参数的子程序调用指令格式如下:CALLn,Var1,Var2,…,Varm

其中:n为子程序号,Var2,…,Varm

为子程序调用参数。【例7-41】带参数的子程序调用示例。设子程序SBR_0中局部变量表的定义如图7-52所示。图7-52局部变量表的定义带参数的子程序调用程序如图7-53所示。图7-53带参数的子程序调用示例

当I0.1为“1”时,带参数调用SBR_0,其中参数IN1和IN2为输入型参数,数据类型分别为字节型和布尔型;参数IN3为输入/输出型参数,数据类型为字类型;参数OUT1为输出型参数,数据类型为双字类型。

5.8.3中断服务程序与中断指令

中断服务程序也是应用程序中的可选组件。当特定的中断事件发生时,执行相应的中断服务程序。

中断服务程序在STEP7-Micro/WIN中用INTn表示,n为中断程序编号,取值范围为0~127。用户可以根据需要对各中断服务程序执行重命名操作。1.中断指令中断指令包括:中断允许指令、中断禁止指令、中断连接指令、中断分离指令、中断返回指令表5-47中断指令及其使用说明

用STEP7-Micro/WIN编程时规定,在激活一个中断服务程序之前,必须用ATCH指令为中断事件和该事件发生时希望执行的程序建立联系。 S7-200系列PLC程序设计时允许多个中断事件与同一个中断程序相连接。原则上一个中断事件只能与一个中断服务程序相连接。

如果用ATCH指令给某个中断事件指定了多个中断服务程序,则中断事件发生时,仅执行为该事件指定的最后一个中断服务程序。2.中断事件 S7-200CPU型号不同时,所支持的中断事件也不同。中断事件号中断事件描述CPU型号CPU221、222CPU224CPU224XP、2260I0.0上升沿√√√1I0.0下降沿√√√2I0.1上升沿√√√3I0.1下降沿√√√4I0.2上升沿√√√5I0.2下降沿√√√6I0.3上升沿√√√7I0.3下降沿√√√8端口0:接收字符√√√9端口0:发送完成√√√10定时中断0SMB34√√√11定时中断1SMB35√√√表5-48中断事件及其描述12HSC0CV=PV(当前值=预设值)√√√13HSC1CV=PV(当前值=预设值)√√14HSC1输入方向改变√√15HSC1外部复位√√16HSC2CV=PV(当前值=预设值)√√17HSC2输入方向改变√√18HSC2外部复位√√19PTO0完成中断√√√20PTO1完成中断√√√21定时器T32CT=PT中断√√√22定时器T96CT=PT中断√√√中断事件号中断事件描述CPU型号CPU221、222CPU224CPU224XP、226中断事件号中断事件描述CPU型号CPU221、222CPU224CPU224XP、22623端口0:接收信息完成√√√24端口1:接收信息完成√25端口1:接收字符√26端口1:发送完成√27HSC0输入方向改变√√√28HSC0外部复位√√√29HSC4CV=PV(当前值=预设值)√√√30HSC4输入方向改变√√√31HSC4外部复位√√√32HSC3CV=PV(当前值=预设值)√√√33HSC5CV=PV(当前值=预设值)√√√ 3.中断优先级

CPU在接到多个中断时,按照如下固定的优先级顺序执行:通信(高优先级)中断,I/O中断,和定时中断(低优先级)。

在3个优先级范围内,CPU按照先来先服务的原则处理中断,任何时候只执行一个中断程序。若正在执行某个中断程序时,即使有高优先级的中断事件发生,CPU也不会响应。此时,该中断进入中断等候队列,直至正在执行的中断程序执行完毕。

如果在程序执行过程中中断事件的发生过于频繁,使得中断产生的速率比CPU处理中断的速度快,或者中断被DISI指令禁止时,将置位中断队列溢出位。各中断队列及其能够保存的最大中断个数如表所示。队列名称CPU221、CPU222、CPU224CPU224XP、CPU226中断队列溢出位通信中断队列48SM4.0I/O中断队列1616SM4.1定时中断队列88SM4.2表5-49中断对列4.中断程序示例【例5-17】I/O中断举例。CPU利用输入点I0.0~I0.3的上升沿或下降沿产生中断,如图5-63所示。图5-63I/O中断示例

主程序中SM0.1实现初始化,将字节MB0清零,同时建立中断事件0和中断处理程序INT_0之间的连接,并执行中断允许指令ENI。中断事件0对应于输入I0.0的上升沿动作,若I0.0外接一个按钮,则每按一次按钮,将调用一次中断程序。中断程序中用INCB指令实现MB0值的自动加1。当MB0的值加至10时,输出Q0.0为1。注意:程序中虽没有明显的出现I0.0,但该点已被使用,不能另作他用。【例】模拟量输入信号的定时采样。

定时中断可用于执行周期性的操作,定时时间为1~255ms。定时中断0和定时中断1的定时时间分别由特殊功能寄存器SMB34和SMB35设定。

修改相应寄存器的值,可改变定时中断的时间间隔。定时时间修改后必须重新建立该中断事件与中断程序之间的联系。重新连接后,系统将清除原定时中断的值,并用新的定时值重新开始定时。图

模拟量输入信号的定时采样SM0.1调用子程序SBR_0,完成中断处理的初始化过程。初始化程序中,先将SMB34赋值为100,设定定时中断0的定时时间为100ms,然后通过中断连接指令ACTH建立中断服务程序INT_0与定时中断0(中断事件10)的连接,并执行中断允许指令ENI。当定时中断0发生时,执行字传送指令(MOV_W),读取模拟量输入字AIW2的值并传送至变量存储区VW200中。例:利用定时中断实现模拟量输入信号采样5.9PID回路控制指令

在计算机过程控制系统中,经常会涉及到模拟量的控制,PLC系统也不例外。除了对模拟量信号的采样与显示外,有时还需要进行PID运算(ProportionalIntegralDerivative),以组成闭环控制系统。S7-200系列PLC是通过PID回路控制指令来处理模拟量的。5.9.1PID算法概述

在闭环控制系统中,PID控制器用于调节系统的特性,以确保系统误差为0,并使系统达到稳定状态。PID控制原理:式中:M(t)为PID控制器的输出;KC是PID回路的增益;e是系统误差(给定值SP与过程变量值PV之差);Minit为PID输出的初始值。为便于计算机处理,常采用如下所示的差分算式:式中:Mn是PID控制回路在采样时刻n的输出值;en为采样时刻n的回路误差值;en-1是前一采样时刻的回路误差;ei为采样时刻i的回路误差;KC为PID回路比例项增益;KI为积分项比例常数;KD为积分项比例常数;Minit为PID输出的初始值。(8-3)

从式8-3可以看出,计算积分项时需要保存从第1个采样周期到当前采样周期的所有误差值,这样将占用大量的存储器空间。考虑到计算机程序的运行特性,仅保存前一时刻的误差值和前一时刻积分项的值,可得如下简化算式:其中:MX是前一时刻积分项的值,即从第1个采样周期到前一采样周期积分项的和;其它符号的定义与前面的相同。

CPU实际使用的PID算式是对上述简化算式的改进,表示如下:其中:Mn是第n次采样时刻PID指令输出值;MPn、MIn和MDn分别是第n次采样时刻的比例项、积分项和微分项的值。

比例项MP是比例增益(KC)和误差(e)的乘积。其中KC决定输出对误差的灵敏度,误差(e)是给定值(SP)与过程变量值(PV)之差。S7-200求解比例项的算式如下:(8-6)

积分项MI与当前误差及前一时刻积分项的值有关,求解算式如下:

(8-7)

式中:TS为采样时间间隔;TI为积分项时间常数;初始时刻的MX值为Minit。每次计算完积分项的值后,应将当前MI的值存入MX,以备下一采样周期使用。

微分项MD仅与当前误差和前一时刻误差有关,求解算式如下:

(8-8)

式中TD为微分项时间常数。若设给定值不变,SPn

=SPn-1,则上式可写为:

(8-9)

同样,为计算下一采样周期微分项的值,应将本次过程变量的采样值保存起来,即将PVn的值存入PVn-1中。初始时刻时可设存入PV1=PV0。2.PID算法类型 PID算法主要包括三种类型的运算:P(比例运算)、I(积分运算)和D(微分运算)。在许多实际的控制系统中,有的控制器只包含一种或两种类型的运算,如P控制器、PI控制器或PD控制器。

如果控制器中无积分环节,应将积分时间常数TI设置为无穷大“INF”。此时即使无积分作用,但由于积分项初值Minit的存在,积分项仍可能不为0。

如果控制器中无微分环节,可以把微分时间常数TD设为0。

如果控制器中无比例环节,可以将增益KC设为0。由于KC将影响积分项和微分项的计算,所以系统在计算这两项时,PLC会自动将增益视为1.0。 5.9.2PID回路控制指令及其应用方法 1.PID指令形式及使用说明

PID回路控制指令用于完成PID(比例、积分、微分)运算。S7-200的PID指令形式及使用说明LADSTL指令使用说明PIDTABLE,LOOP1.PID指令根据当前输入信息和控制回路表(TBL)中的配置信息,对相应的控制回路(LOOP)执行PID运算。2.TBL是控制回路表的起始地址,每个表中至少存储9个参数用于监控PID运算(见表8-23);LOOP是控制回路号,每个用户程序中最多可使用8条PID指令,每条指令对应一个控制回路。LOOP取值范围为:0~7。

为了使PID运算以设定的采样频率工作,PID指令应放置在定时中断程序中,或者在主程序中被定时器指令所控制,按照一定的频率被执行。 2.控制回路表(LOOPTABLE)

在PID指令中,操作数TABLE用于设定PID运算所需的各个参数,称之为控制回路表。每个回路表包含80个字节,其内容如表8-23所示。注意:指令中的TABLE为字节类型,用于指示回路表的首字节地址。表中的偏移地址是相对于回路表首地址而言的。序号表内偏移地址参数名数据类型I/O类型过程变量描述10PVn实数输入过程变量值,标准化至0.0~1.0之间24SPn实数输入给定值,标准化至0.0~1.0之间38Mn实数输入/输出PID回路输出值,标准化至0.0~1.0之间412KC实数输入比例项增益,可正可负516TS实数输入采样周期,以秒为单位,必须为正数620TI实数输入积分时间常数,单位为分钟,必须为正数724TD实数输入微分时间常数,单位为分钟,必须为正数828MX实数输入/输出前一时刻积分项累计值,标准化至0.0~1.0之间932PVn-1实数输入/输出前一时刻的过程变量值1036-79保留,用于自整定变量表5-51PID指令控制回路表 3.PID输入参数的标准化处理

每个PID回路有两个输入量,给定值(SP)和过程变量值(PV)。给定值通常是一个固定值。过程变量值与PID回路的输出有关,以衡量PID输出对控制系统的作用。给定值和过程变量都是实际的工程量,其大小、范围和测量单位都可能不同。在执行PID指令之前应将这些实际的工程值转换为无量纲的标准的浮点数格式。

首先将采集的16位整数值转换成浮点型实数值,如图5-65所示。图

将16位整数转换成实数

图中先用ITD指令将模拟量输入值AIW0转换为双整数,再用DTR指令将32位双整数转换为实数。

然后将实数值标准化为[0.0,1.0]区间上的无量纲的值,标准化算式如下:式中:RNorm为标准化之后的实数值;RReal是未经过标准化处理的原实数值;Offset为偏移量,对于单极性的实数值,可设该值为0.0,对于双极性的实数值,该值设定为0.5;SPan反映原实数值的取值范围(用最大允许值减去最小值),对于单极性实数值,该值可取为32000,双极性实数可取值为64000。如图所示程序可实现双极性实数值的标准化处理。图5-65双极性实数值的标准化4.PID输出值向实际值的转换 PID控制回路的输出值是标准化了的值,对于被控对象来说相当于控制量。在输出至模拟量输出模块之前,应将其转换成一个16位的整数值。这一过程实际上是标准化过程的逆过程。

首先按下式将PID回路输出转换为按实际工程量标定的实数值:

(8-11)

式中:RScal为PID回路相应的实际输出值;Mn是回路输出的标准化实数值;Offset为偏移量,单极性输出时为0.0,双极性输出时为0.5;SPan是实际工程值值域的大小,单极性输出可设为32000,双极性可设为64000。下图

是对双极性输出值的转换过程。图

将标准化的值转换为工程实际值然后将回路输出转换成16位整数,如图所示。图

将标定的实数值转换为16位整数5.正作用与反作用回路

如果PID回路运算中增益为正,则称该回路为正作用回路。如果增益为负,则称为反作用回路。对于增益值为0.0(无比例环节)的控制作用,如果指定的积分时间常数或微分时间常数为正,则其为正作用回路;否则为反作用回路。6.PID指令的控制方式

S7-200系列PLC的PID指令没有考虑“手动”和“自动”控制方式间的切换。

“自动”方式是指PID指令的使能端EN有效时,周期性地执行PID运算的过程,而“手动”方式是指EN端无效时,PID指令不被执行时的情况。也就是说如果“能流”能够到达,就执行PID运算。 PID指令有一个“能流记忆位(power-flowhistorybit)”,当该位检测到一个从0到1的跳变时,PID指令将会执行一系列的动作,以使指令能从手动方式无扰动地切换到自动方式。为保证这种无扰动切换,在转变到自动方式前,必须将手动方式下的输出值作为一个输入提供给PID指令。PID指令完成的这些动作包括:(1)设定给定值(SPn)=过程变量值(PVn)(2)设定前一时刻过

温馨提示

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

评论

0/150

提交评论