S7-200 PLC是德国西门子公司生产的一种小型系列可编程器,能够满足多种自动化控制的需求,其设计紧凑,价格低廉,并且具有良好的可扩展性以及强大的指令功能,可代替继电器用于简单的控制场合,也可用于复杂的自动化控制系统。
S7-200 PLC主要有以下几个方面的特点:极高的可靠性;易于掌握;极其丰富的指令集;便捷的操作特性;实时特性;丰富的内置集成功能;强大的通信能力;丰富的扩展模块。
S7-200 PLC硬件系统的配置方式采用整体式加积木式,即主机中包含一定数量的输入/输出(I/O),同时还可以扩展各种功能模块。
①基本单元 基本单元(Basic Unit)又称CPU模块,也有的称为主机或本机。它包括CPU、存储器、基本输入/输出点和电源等,是PLC的主要组成部分。
②扩展单元 主机I/O点数量不能满足控制系统的要求时,用户可以根据需要扩展各种I/O模块。
③特殊功能模块 当需要完成某些特殊功能的控制任务时,需要扩展功能模块。特殊功能模块是为完成某种特殊控制任务而特制的一些装置。
④相关设备 相关设备是为充分和方便地利用系统的硬件和软件资源而开发和使用的一些设备,主要有编程设备、人机操作界面和网络设备等。
⑤工业软件 工业软件是为更好地管理和使用这些设备而开发的与之相配套的程序,主要由标准工具、工程工具、运行软件和人机接口软件等几大类构成。
①主机外形 S7-200的CPU模块包括一个中央处理单元、电源以及数字I/O点,集成在一个紧凑、独立的设备中(见图2-38)。CPU负责执行程序,输入部分从现场设备中采集信号,输出部分则输出控制信号,驱动外部负载。
图2-38 S7-200 PLC主机的外形
②存储系统 S7-200 PLC的存储系统由RAM和EEPROM两种类型存储器构成,CPU模块内部配备一定容量的RAM和EEPROM,同时,CPU模块支持可选的EEPROM存储器卡。还增设了超级电容和电池模块,用于长时间保存数据。
③数字量扩展模块 用户根据实际需要,选用具有不同I/O点数的数字量扩展模块,可以满足不同的控制需要,节约成本。
④模拟量输入输出扩展模块 在工业控制中,某些输入量(如温度、压力、流量等)是模拟量,而某些执行机构(如电动调节阀、晶闸管调速装置和变频器等)也要求PLC输出模拟信号,但PLC的CPU只能处理数字量。这时就需要模拟量I/O扩展模块来实现A/D转换(模拟量输入)和D/A转换(模拟量输出)。
⑤PROFIBUS-DP通信模块 EM277 PROFIBUS-DP扩展从站模块用来将S7-200连接到PROFIBUS-DP网络。
⑥SIMATIC NET CP243-2通信处理器 SIMATIC NET CP243-2是S7-200的AS-i主站,它最多可以连接31个AS-i站。
⑦I/O点数扩展和编址 CPU 22x系列的每种主机所提供的本机I/O点的I/O地址是固定的,进行扩展时,可以在CPU右边连接多个扩展模块,每个扩展模块的组态地址编号取决于各个模块的类型和该模块在I/O链中的位置。编址时同种类型I/O点的模块在链中按与主机的位置递增,其他类型模块的有无以及所处的位置不影响本类型模块的编号。
软元件是PLC内部具有一定功能的器件,这些器件由电子电路和寄存器及存储器单元等组成。
①输入继电器(I) 输入继电器一般都有一个PLC的输入端子与之对应,用于接收外部的开关信号。外部的开关信号闭合,则输入继电器的线圈得电,在程序中其常开触点闭合,常闭触点断开。
②输出继电器(Q) 输出继电器一般有一个PLC上的输出端子与之对应。当通过程序使输出继电器线圈得电时,PLC上的输出端开关闭合,它可以作为控制外部负载的开关信号,同时在程序中其常开触点闭合,常闭触点断开。
③通用辅助继电器(M) 通用辅助继电器的作用和继电器控制系统中的中间继电器的相同,它在PLC中没有I/O端子与之对应,因此它的触点不能驱动外部负载。
④特殊继电器(SM) 有些辅助继电器具有特殊功能或用来存储系统的状态变量、控制参数和信息,这类辅助继电器称为特殊继电器。
⑤变量存储器(V) 变量存储器用来存储变量。它可以存放程序执行过程中控制逻辑操作的中间结果,也可以使用变量存储器来保存与工序或任务相关的其他数据。
⑥局部变量存储器(L) 局部变量存储器用来存放局部变量。局部变量与变量存储器存储的全局变量十分相似,主要区别在于全局变量是全局有效的,而局部变量是局部有效的。
⑦顺序控制继电器(S) 有些PLC中也把顺序控制继电器称为状态器。顺序控制继电器用在顺序控制或步进控制中。
⑧定时器 定时器是PLC中重要的编程元器件,是累计时间增量的内部器件。
⑨计数器(C) 计数器用来累计输入脉冲的个数,经常用来对产品进行计数或进行特定功能的编程。
⑩模拟量输入映像寄存器(AI)、模拟量输出映像寄存器(AQ) 模拟量输入电路用以实现模拟量/数字量(A/D)之间的转换,而模拟量输出电路用以实现数字量/模拟量(D/A)之间的转换。
高速计数器(HC) 一般计数器的计数频率受扫描周期的影响,不能太高。而高速计数器可累计比CPU的扫描速度更快的事件。
累加器(AC) 累加器是用来暂存数据的寄存器,它可以用来存放运算数据、中间数据和结果。
S7-200 PLC的数据类型有布尔型、整型和实型。常用的单位有位、字节、字和双字等。
①直接寻址 将信息存储在存储器中,存储单元按字节进行编址,无论寻址的是何种数据类型,通常应直接指出元器件名称及其所在存储区域内的字节地址,并且每个单元都有唯一的地址,这种寻址方式称为直接寻址。直接寻址可以采用按位编址或按字节编址的方式进行寻址。
取代继电器控制系统的数字量控制系统一般只采用直接寻址。下面是各个寄存器进行直接寻址的情况:
a.输入映像寄存器(I)寻址 输入映像寄存器的标识符为I(I0.0~I15.7),在每个扫描周期的开始,CPU对输入点进行采样,并将采样值存于输入映像寄存器中。
b.输出映像寄存器(Q)寻址 输出映像寄存器的标识符为Q(Q0.0~Q15.7),在扫描周期的末尾,CPU将输出映像寄存器的数据传送给输出模块,再由后者驱动外部负载。
c.变量存储器(V)寻址 在程序执行的过程中存放中间结果,或用来保存与工序或任务有关的其他数据。
d.位存储器(M)区寻址 内部存储器标志位(M0.0~M31.7)用来保存控制继电器的中间操作状态或其他控制信息。
e.特殊存储器(SM)标志位寻址 特殊存储器用于CPU与用户之间交换信息。
f.局部存储器(L)区寻址 S7-200有64字节的局部存储器,其中60个可以作为暂时寄存器,或给子程序传递参数。
g.定时器(T)寻址 定时器相当于继电器控制系统中的时间继电器。
h.计数器(C)寻址 计数器用来累计其计数输入端脉冲电平由低到高的次数。
i.顺序控制继电器(S)寻址 顺序控制继电器(SCR)位用于组织机器的顺序操作。
j.模拟量输入(AI)寻址 S7-200的模拟量输入电路将现实世界中连续变化的模拟量(如温度、压力、电流、电压等)电信号用A/D转换器转换为1个字长(16位)的数字量,用区域标识符AI、数据长度(W)和字节的起始地址来表示模拟量的输入地址。
k.模拟量输出(AQ)寻址 S7-200的模拟量输出电路将1个字长的数字用D/A转换器转换为标准模拟量,用区域标识符AQ、数据长度(W)和字节的起始地址来表示存储模拟量输出的地址。
l.累加器(AC)寻址 累加器可以像存储器那样使用读/写单元,例如可以用它向子程序传递参数,或从子程序返回参数,以及用来存放计算的中间值。
m.高速计数器(HC)寻址 高速计数器用来累计比CPU的扫描速率更快的事件,其当前值和设定值为32位有符号整数,当前值为只读数据。
②间接寻址 间接寻址方式是指数据存放在寄存器或存储器中,在指令中只出现所需数据所在单元的内存地址,存储单元地址的地址又称为地址指针。用间接寻址方式存取数据的过程如下。
a.建立指针;
b.用指针来存取数据;
c.修改指针。
在程序编制过程中,可以用数字和字母组成的符号来代替存储器的地址,这种地址称为符号地址。
绝对地址是指可编程控制器内实际的物理地址。程序编译后下载到可编程控制器时,所有的符号地址都被转换为绝对地址。
在S7-200的编程软件中,用户可以选用梯形图LAD(ladder)、功能块图(Function Block Diagram)或语句表STL(Statement List)等编程语言来编制用户程序。语句表和梯形图是一个完备的指令系统,支持结构化编程方法,而且两种编程语言可以相互转化。在用户程序中尽管它们的表达形式不同,但表示的内容却是相同或相似的。
基本逻辑指令是PLC中最基本最常用的一类指令,主要包括位逻辑指令、堆栈操作指令、置位/复位指令、立即指令以及微分指令等。
位逻辑指令主要用来完成基本的位逻辑运算及控制。
①LD、LDN和=(Out)指令 LD(Load)、LDN(Load Not)为取指令。启动梯形图任何逻辑块的第一条指令时,分别连接动合触点和动断触点。=(Out)为输出指令。线圈驱动指令,必须放在梯形图的最右端。LD、LDN指令操作数为I、Q、M、T、C、SM、S、V。=指令的操作数为M、Q、T、C、SM、S。LD、LDN和=指令梯形图及语句表应用示例见图2-39。
图2-39 LD、LDN和=指令梯形图及
②A和AN指令 A(And)为逻辑“与”指令,用于动合触点的串联。AN(And Not)为逻辑“与非”指令,用于动断触点的串联。A和AN指令的操作数为I、Q、M、SM、T、C、S、V。A和AN指令梯形图及语句表应用示例见图2-40。
图2-40 A和AN指令梯形图及语句表应用示例
③O和ON指令 O(Or)为逻辑“或”指令,用于动合触点的并联。ON(Or Not)为逻辑“或非”指令,用于动断触点的并联。O和ON指令的操作数为I、Q、M、SM、T、C、S、V。O和ON指令梯形图及语句表应用示例见图2-41。
图2-41 O和ON指令梯形图及语句表应用示例
④ALD指令 ALD(And Load)为逻辑块“与”指令,用于并联电路块的串联连接。ALD指令无操作数。ALD指令梯形图及语句表应用示例见图2-42。
图2-42 ALD指令梯形图及语句表应用示例
⑤OLD指令 OLD(Or Load)为逻辑块“或”指令,用于串联电路块的并联连接。OLD指令无操作数。OLD指令梯形图及语句表应用示例见图2-43。
图2-43 OLD指令梯形图及语句表应用示例
①堆栈操作 S7-200有一个9位的堆栈,栈顶用来存储逻辑运算的结果,下面的8位用来存储中间的运算结果。堆栈中的数据按“先进后出”的原则存取。
对堆栈进行操作时,执行各指令的情况如下:
执行LD指令时,将指令指定的位地址中的二进制数据装入栈顶。
执行A指令时,将指令指定的位地址中的二进制数和栈顶中的二进制数相“与”,结果存入栈顶。
执行O指令时,将指令指定的位地址中的二进制数和栈顶中的二进制数相“或”,结果存入栈顶。
执行LDN、AN和ON指令时,取出位地址中的数后,先取反,再做出相应的操作。
执行输出指令=时,将栈顶中的值复制到对应的映像寄存器。
执行ALD、OLD指令时,对堆栈第一层和第二层的数据进行“与”“或”操作。并将运算结果存入栈顶,其余层的数据依次向上移动一位。
最低层(栈底)补随机数。OLD指令对堆栈的影响如图2-44所示。
图2-44 OLD指令对堆栈的影响
②堆栈操作指令 堆栈操作指令包含LPS、LRD、LPP、LDS几条命令。各命令功能描述如下:
LPS(Logic Push):逻辑入栈指令(分支电路开始指令)。该指令复制栈顶的值并将其压入堆栈的下一层,栈中原来的数据依次向下推移,栈底值推出丢失。
LRD(Logic Read):逻辑读栈指令。该指令将堆栈中第二层的数据复制到栈顶,2~9层的数据不变,原栈顶值丢失。
LPP(Logic Pop):逻辑出栈指令(分支电路结束指令)。该指令使栈中各层的数据向上移一层,原第二层的数据成为新的栈顶值。
LDS(Logic Stack):装入堆栈指令。该指令复制堆栈中第 n ( n =1~8)层的值到栈顶,栈中原来的数据依次向下一层推移,栈底丢失。
堆栈操作的过程如图2-45所示。
图2-45 堆栈操作的过程
①置位指令S 置位指令S(SET),将从bit开始的 N 个元器件置1并保持。
STL指令格式:S bit, N
其中, N 的取值为1~255。
②复位指令R 复位指令R(RESET),将从bit开始的 N 个元器件置0并保持。
STL指令格式:R bit, N
其中, N 的取值为1~255。
置位和复位指令应用的梯形图及指令表如图2-46所示。
图2-46 置位和复位指令应用示例
立即指令I包含LDI、LDNI;OI、ONI;AI、ANI;=I;SI、RI几条命令,各命令功能描述如下:
LDI、LDNI:立即取、立即取非指令。
OI、ONI:立即“或”、立即“或非”指令。
AI、ANI:立即“与”、立即“与非”指令。
=I:立即输出指令。
SI、RI:立即置位、立即复位指令。
立即指令I(Immediate)是为了提高PLC对输入、输出的响应速度而设置的,它不受PLC扫描周期的影响,允许对I/O点进行快速直接存取。当用立即指令读取输入点的状态时,对I进行操作,相应的输入映像寄存器中的值并未更新;当用立即指令访问输出点时,对Q进行操作,新值同时写到PLC的物理输出点和相应的输出映像寄存器。
立即指令的应用示例如图2-47所示。
图2-47 立即指令应用示例
微分指令又称边沿触发指令,分为上升沿微分和下降沿微分指令。
EU(Edge UP):上升沿微分指令,其作用是在上升沿产生脉冲。
指令格式: ,该指令无操作数。
ED(Edge Down):下降沿微分指令,其作用是在下降沿产生脉冲。
指令格式: ,该指令无操作数。
在使用EU指令时,当其执行条件从OFF变为ON时,EU就会变成ON一个周期,而使用ED指令时,当其执行条件从ON变成OFF时,ED就会变成为ON一个周期。
微分指令的应用示例如图2-48所示。
图2-48 微分指令应用示例及时序图
NOT:取反指令。将其左边的逻辑运算结果取反,指令没有操作数。
取反指令的应用示例如图2-49所示。
图2-49 NOT指令应用示例
NOP:空操作指令,不影响程序的执行。
指令格式:NOP N // N 为执行空操作指令的次数, N =0~255。
定时器是PLC常用的编程元器件之一,S7-200 PLC有3种类型的定时器,即通电延时定时器(TON)、断电延时定时器(TOF)和保持型通电延时定时器(TONR),共计256个。定时器分辨率(S)可分为3个等级:1ms、10ms和100ms。
①通电延时型定时器TON(On-Delay Timer) 通电延时型定时器(TON)用于单一时间间隔的定时。输入端(IN)接通时,开始定时,当前值大于等于设定值(PT)时(PT为1~32767),定时器位变为ON,对应的常开触点闭合,长闭触点断开。达到设定值后,当前值仍继续计数,直到最大值32767为止。输入电路断开时,定时器复位,当前值被清零。
②断电延时定时器TOF(Off-Delay Timer) 断电延时定时器(TOF)用于断电后的单一时间间隔计时。输入端(IN)接通时,定时器位为ON,当前值为0。当输入端由接通到断开时,定时器的当前值从0开始加1计数,当前值等于设定值(PT)时,输出位变为OFF,当前值保持不变,停止计时。
③保持型通电延时定时器TONR(Retentive On-Delay Timer) 保持型通电延时定时器TONR用于对许多间隔的累计定时。当输入端(IN)接通时,定时器开始计时,当前值从0开始加1计数,当前值大于等于设定值(PT)时,定时器位置1。当输入IN无效时,当前值保持;IN再次有效时,当前值在原保持值基础上继续计数。TONR定时器用复位指令R进行复位,复位后定时器当前值清零,定时器位为OFF。
④定时器当前值刷新方式 在S7-200 PLC的定时器中,定时器的刷新方式是不同的,从而在使用方法上也有所不同。使用时一定要注意根据使用场合和要求来选择定时器。常用的定时器的刷新方式有1ms、10ms、100ms三种。
a. 1ms定时器 定时器指令执行期间每隔1ms对定时器和当前值刷新一次,不与扫描周期同步。
b. 10ms定时器 执行定时器指令时开始定时,在每一个扫描周期开始时刷新定时器,每个扫描周期只刷新一次。
c. 100ms定时器 只有在执行定时器指令时,才对100ms定时器的当前值进行刷新。
计数器主要用于累计输入脉冲的次数。S7-200 PLC有三种计数器:递增计数器CTU、递减计数器CTD、增减计数器CTUD。3种计数器共有256个。
①递增计数器CTU(Count Up) 递增计数器CTU的指令格式如图2-50所示。其中,CU为加计数脉冲输入端;Cn为计数器编号;R为复位输入端;PV为设定值。
图2-50 递增计数器CTU的指令格式
②递减计数器CTD(Count Down) 递减计数器CTD的指令格式如图2-51所示。其中,LD为复位脉冲输入端;Cn为计数器编号;CD为减计数脉冲输入端;PV为设定值。
图2-51 递减计数器CTD的指令格式
③增减计数器CTUD(Count UP/Down) 增减计数器CTUD的指令格式如图2-52所示。其中,CU为加计数脉冲输入端;Cn为计数器编号;CD为减计数脉冲输入端;PV为设定值。
图2-52 增减计数器CTUD的指令格式
比较指令用来比较两个数IN1和IN2的大小。在梯形图中,满足比较关系式给出的条件时,触点接通。
比较运算符有=、<>、>、<、>=、<=。
程序控制指令主要用于较复杂的程序设计,使用该类指令可以用来优化程序结构,增强程序功能。程序控制指令包括循环、跳转、停止、子程序调用、看门狗及顺序控制等指令。
循环指令主要用于反复执行若干次具有相同功能程序的情况。循环指令包括循环开始指令FOR和循环结束指令NEXT。
FOR指令表示循环的开始,NEXT指令表示循环的结束。当驱动FOR指令的逻辑条件满足时,反复执行FOR和NEXT之间的程序。
在FOR指令中,需要设置指针或当前循环次数计数器(INDX),初始值(INIT)和终值(FINAL)。循环指令的格式如图2-53所示。
图2-53 循环指令的格式
INDX操作数为VW、IW、QW、MW、SW、SMW、LW、T、C、AC、*VD、*AC、和*CD,属INT型。INIT和FINAL操作数除上面介绍的之外,再加上常数,也属INT型。
跳转指令包括跳转指令JMP和标号指令LBL。当条件满足时,跳转指令JMP使程序转到对应的标号LBL处,标号指令用来表示跳转的目的地址。
JMP与LBL指令中的操作数 n 为常数0~255。JMP和对应的LBL指令必须在同一程序块中。
停止指令STOP可使PLC从运行模式进入停止模式,立即停止程序的执行。如果在中断程序中执行停止指令,中断程序立即终止,并忽略全部等待执行的中断,继续执行主程序的剩余部分,并在主程序的结束处,完成从运行方式至停止方式的转换。
结束指令包括两条:END和MEND。
①END 条件结束指令,不能直接连接母线。当条件满足时结束主程序,并返回主程序的第一条指令执行。
②MEND 无条件结束指令,直接连接母线。程序执行到此指令时,立即无条件结束主程序,并返回到第一条指令。
这两条指令都只能在主程序中使用。
看门狗复位指令WDR(Watch Dog Reset)作为监控定时器使用,定时时间为300ms。
子程序在结构化程序设计中是一种方便有效的工具。S7-200 PLC的指令系统具有简单、方便、灵活的子程序调用功能。与子程序有关的操作有建立子程序、子程序的调用和返回。
①建立子程序 建立子程序是通过编程软件来完成的。
②子程序调用
a.子程序调用指令CALL 在使能输入有效时,主程序把程序控制权交给子程序。
b.子程序条件返回指令CRET 在使能输入有效时,结束子程序的执行,返回主程序。
③带参数的子程序调用 子程序中可以有参变量,带参数的子程序调用扩大了子程序的使用范围,增加了调用的灵活性。
a.子程序参数 子程序最多可以传递16个参数,参数在子程序的局部变量表中加以定义。参数包含下列信息:变量名、变量类型和数据类型。
变量名:变量名最多用8个字符表示,第一个字符不能是数字。
变量类型:变量类型是按变量对应数据的传递方向来划分的,可以是传入子程序(IN)、传入和传出子程序(IN/OUT)、传出子程序(OUT)和暂时子程序(TEMP)4种变量类型。
数据类型:局部变量表中还要对数据类型进行声明。数据类型可以是能流、布尔型、字节型、字型、双字型、整数型、双整数和实型。
b.参数子程序调用的规则 常数参数必须声明数据类型。
输入或输出参数没有自动数据类型转换功能。
参数在调用时必须按照一定的顺序排列,先是输入参数,然后是输入输出参数,最后是输出参数。
c.变量表使用 按照子程序指令的调用顺序,参数值分配给局部变量存储器,起始地址是L0.0。使用编程软件时,地址分配是自动的。
参数子程序调用指令格式为:
CALL 子程序,参数1,参数2,…,参数n
ENO是LAD中指令块的布尔能流输出端。如果指令块的能流输入有效,且执行没有错误时,ENO就置位,并将能流向下传递。ENO可以作为允许位,表示指令成功执行。
SFC设计方法是专用于工业顺序控制程序设计的一种方法。它能完整地描述控制系统的工作过程、功能和特性,是分析、设计电器控制系统控制程序的重要工具。
①SFC基础 SFC的基本元素为流程步、有向线段、转移和动作说明。
a.流程步 流程步又称工作步,表示控制系统中的一个稳定状态。
b.转移与有向线段 转移就是从一个流程步向另外一个流程步之间的切换条件,两个流程步之间用一个有向线段表示,说明从一个流程步切换到另一个流程步,向下转移方向的箭头可以省略。
c.动作说明 流程步并不是PLC的输出触点的动作,流程步只是控制系统中的一个稳定的状态。这个状态可以包含一个或多个PLC输出触点的动作,也可以没有任何输出动作,流程步只是启动了定时器或一个等待过程,所以流程步和PLC的动作是两件不同的事情。
②SFC的结构
a.顺序结构 顺序结构是最简单的一种结构,特点是流程步之间只有一个转移,转移与转移之间只有一个流程步。
b.选择性分支结构 选择性分支结构是一个控制流可以转入多个可能的控制流中的某一个,不允许多路分支同时执行。具体进入哪个分支,取决于控制流前面的转移条件哪一个为真。
c.并发性分支结构 如果某一个流程步执行完后,需要同时启动若干条分支,这种结构称为并发性分支结构。
d.循环结构 循环结构用于一个顺序过程的多次重复执行。
e.复合结构 复合结构就是一个集顺序、选择性分支、并发性分支和循环结构于一体的结构。
③SFC转换成梯形图 SFC一般不能被PLC软件直接接受,需要将SFC转换成梯形图后才能被PLC软件识别。
a.进入有效工作步;
b.停止有效工作步;
c.最后一个工作步;
d.工作步的转移条件;
e.工作步的得电和失电;
f.选择性分支;
g.并发性分支;
h.第0工作步;
i.动作输出。
一台汽车自动清洗机的动作:按下启动按钮后,打开喷淋阀门,同时清洗机开始移动。当检测到汽车到达刷洗范围时,启动旋转刷子开始清洗汽车。当检测到汽车离开清洗机时,停止清洗机移动、停止刷子旋转并关闭阀门。当按下停止按钮时,任何时候均立即停止所有动作。
汽车自动清洗机的动作SFC如图2-54所示,梯形图及语句表如图2-55所示。
图2-54 汽车清洗机SFC
图2-55 汽车清洗机的梯形图及语句表
顺序控制指令是PLC生产厂家为用户提供的可使功能图编程简单化和规范化的指令。S7-200 PLC提供了三条顺序控制指令。
一个SCR程序段一般有以下三种功能:
①驱动处理 即在该段状态有效时,要做什么工作,有时也可能不做任何工作。
②指定转移条件和目标 即满足什么条件后状态转移到何处。
③转移源自动复位功能 状态发生转移后,置位下一个状态的同时,自动复位原状态。
在使用功能图编程时,应先画出功能图,然后对应功能图画出梯形图。如图2-56所示为顺序控制指令使用的一个简单例子。
图2-56 顺序控制指令的使用举例
顺控指令仅对元器件S有效,顺控继电器S也具有一般继电器的功能,所以对它能够使用其他指令;
SCR段程序能否执行取决于该状态器(S)是否被置位,SCRE与下一个LSCR之间的指令逻辑不影响下一个SCR段程序的执行;
不能把同一个S位用于不同程序中;
在SCR段中不能使用JMP和LBL指令,就是说不允许跳入、跳出或在内部跳转,但可以在SCR段附近使用跳转和标号指令;
在SCR段中不能使用FOR、NEXT和END指令;
在状态发生转移后,所有的SCR段的元器件一般也要复位,如果希望继续输出,可使用置位/复位指令;
在使用功能图时,状态器的编号可以不按顺序编排。
①直线流程 这是最简单的功能图,其动作是一个接一个地完成。每个状态仅连接一个转移,每个转移也仅连接一个状态。
②选择性分支和连接 在生产实际中,对具有多流程的工作要进行流程选择或者分支选择,即一个控制流可能转入多个可能的控制流中的某一个,但不允许多路分支同时执行。到底进入哪一个分支取决于控制流前面的转移条件哪一个为真。
③并发性分支和连接 一个顺序控制状态流必须分成两个或多个不同分支控制状态流,这就是并发性分支或并行分支。但一个控制状态流分成多个分支时,所有的分支控制状态流必须同时激活。当多个控制流产生的结果相同时,可以把这些控制流合并成一个控制流,即并发性分支的连接。
④跳转和循环 单一顺序、并发和选择是功能图的基本形式。多数情况下,这些基本形式是混合出现的,跳转和循环就是其典型代表。
利用功能图语言可以很容易实现流程的循环重复操作。在程序设计过程中可以根据状态的转移条件,决定流程是单周期操作还是多周期循环,是跳转还是顺序向下执行。