第3章基本逻辑指令教学目标3.1概述基本逻辑指令在语句表语言中是指对位存储单元的简单逻辑运算,在梯形图中是指对触点的简单连接和对标准线圈的输出。语句表编程语言用指令助记符创建控制程序,它是一种面向具体机器的语言,可被PLC直接执行,一般来说,语句表语言更适合于熟悉可编程序控制器和逻辑编程方面有经验的编程人员。用这种语言可以编写出用梯形图或功能框图无法实现的程序,但利用语句表时进行位运算时需要考虑主机的内部存储结构。S7-1200PLC基本逻辑指令主要包括位逻辑指令、定时器指令、计数器指令、比较指令、数学指令、移动指令、转换指令、程序控制指令、逻辑运算指令以及移位和循环移位指令等。3.2PLC的基本逻辑指令3.2.1位逻辑指令3.2.1.1触点指令及线圈指令1、常开触点与常闭触点常开触点(见表3-2)在指定的位为1状态(0N)时闭合,为0状态(OFF)时断开。常闭触点在指定的位为1状态时断开,为0状态是闭合。表3-2位逻辑指令指令描述指令描述常开触点RS锁存器置位优先锁存器常闭触点SR锁存器复位优先锁存器取反触点上升沿检测触点输出线圈下降沿检测触点取反输出线圈上升沿检测线圈置位下降沿检测线圈复位P_TRIG上升沿触发器区域置位N_TRIG下降沿触发器区域复位2、NOT取反触点NOT触点用来转换能流动输入的逻辑状态。如果没有能流流入NOT触点,则有能流流出(见图3-3a)。如果有能流流入NOT触点,则没有能流流出(见图3-3b)。(a)(b)图3-3NOT触点3、输出线圈线圈输出指令系统将线圈的状态写入指定的地址,线圈通电时写入1,断电时写入0如果是Q区的地址,CPU将输出的值传送给对应的过程映像输出。在RUN模式,CPU不停地扫描输入信号,根据用户程序的逻辑处理输入状态,通过向过程映像输出寄存器写入新的输出状态值来作出响应。在写输出阶段,CPU将存储在过程殃像寄存器中的新的输出状态传送给对应的输出电路。可以用Q0.0:P的线圈将位数据值立即写入过程映像输出Q0.0,同时直接写给对应的物理输出点。反相输出线圈中间有“/”符号,如果有能流流过M4.1的反相输出线圈(见图3-4a),则M10.0的输出位为0状态,其常升触点断开(见图3-4b),反之M10.0的输出位为1状态,其常开触点闭合。(a)(b)圈3-4反相输出线圈3.2.2其他位逻辑指令1、置位复位指令S(Set,置位或置1)指令将指定的地址位置位(变为l状态并保持)。R(Reset,复位或置O)指令将指定的地址位复位(变为O状态并保持)。置位指令与复位指令最主要的特点是有记忆和保持功能。如果图3-5中I0.0的常开触点闭合,Q0.0变为1状态并保持该状态。即使I0.0的常开触点断开,Q0.0也仍然保持l状态(见图3-6中波形图)。在程序状态中,用Q0.0的S和R线圈连续的绿色圆弧和绿色的字母表示l状态,用间断的蓝色圆弧和蓝色的字母表示0状态。图3-5置位与复位指令图3-6波形图I0.1的常开触点闭合时,Q0.0变为0状态并保持该状态,即使I0.1的常开触点断开,Q0.0也仍然保持0状态。2、多点置位复位指令SET_BF(Setbitfield,多点置位)指令将指定的地址开始的连续的若干个位地址置位(变为1状态并保持)。在图3-7的I0.0的上升沿(从O状态变为l状态),从Q0.0开始的4个连续的位被置位为1并保持l状态。RESET_BF(Resetbitfield,多点复位)指令将指定的地址开始的连续的若干个位地址复位(变为O状态并保持)。在图3-7的I0.1的下降沿(从l状态变为0状态),从Q0.0开始的4个连续的位被复位为0并保持O状态。与S7-200和S7-300/400不同,S7-1200的梯形圈允许在一个程序段内网络内输入多个独立电路(见图3-7)。图3-7边沿检测触点与多位置置位复位3、置位优先锁存器与复位优先锁存嚣SR是复位优先锁存器见图3-8a,其输入/输出关系见表3-9,两种锁存器的区别仅在于表的最下面一行。在置位(S)和复位(R1)信号同时为l时,SR锁存器的输出位M10.0被复位为0。Q0.0输出为0状态。Q0.0I0.0I0.1RS是置位优先锁存器见图3-8b,其输入/输出关系见表3-9,在置位(S)和复位(R1)信号同时为l时,RS锁存器的输出位M10.1被置位为1。Q0.1输出为1状态。(a)(b)图3-8SR锁存器与RS锁存器表3-9RS与SR锁存器的功能复位优先锁存器(SR)置位优先锁存器(RS)SR1输出位SR1输出位00保持前一状态00保持前一状态0100101011011101114、边沿检测触点指令图3-7中间有P的触点是上升沿检测触点,如果输入信号I0.0由O状态变为l状态(即输入信号I0.0的上升沿),则该触点接通一个扫描周期。边沿检测触点不能放在电路结束处。P触点下面的M10.0为边沿存储位,用来存储上一次扫描循环时I0.0的状态。通过比较输入信号的当前状态和上一次循环的状态,来检测信号的边沿。边沿存储位的地址只能在程序中使用一次,它的状态不能在其他地方被改写。只能使用M、全局DB和静态局部变量(Static)来作边沿存储位,不能使用临时局部变量或I/O变量来作边沿存储位。图3-7中间有N的触点是下降沿检测触点,如果输入信号I0.1由l状态变为O状态(即输入信号I0.1的下降沿),RESET_BF的线圈“通电”一个扫描循环周期。N触点下面的M10.1为边沿存储位。5、边沿检测线圈指令中间有P的线圈是上升沿检测线圈(见图3-10),仅在流进该线圈的能流的上升沿(线圈由断电变为通电),输出位M10.0为1状态。M11.0为边沿存储位。中间有N的线圈是下降沿检测线圈(见图3-10),仅在流进该线圈的能流的下降沿(线圈由通电变为断电),输出位M10.1为1状态。M11.1为边沿存储位。边沿检测线圈不会影响逻辑运算结果RLO,它对能流是畅通无阻的,其输入端的逻辑运算结果被立即送给线圈的输出端。边沿检测线圈可以放置在程序段的中间或程序段的最右边。在运行时用外接的小开关使I0.0变为l状态,I0.0的常开触点闭台,能流经P线圈和N线圈流过Q0.0的线圈。在I0.0的上升沿,M10.0的常开触点闭合一个扫描周期,使Q0.1置位。在I0.0的下降沿,M10.1的常开触点闭合一个扫描周期,使Q0.1复位。图3-10边沿检测线圈指令6、P_TRIG指令与N_TRIG指令在流进P_TRIG指令的CLK输入端(见图3-11)的能流的上升沿(能流刚出现),Q端输出脉冲宽度为一个扫描用期的能流,使Q0.0置位。P_TRIG指令框下面的M10.0是脉冲存储器位。在流进N_TRIG指令的CLK输入端的能流的下降沿(能流刚消失),Q端输出脉冲宽度为一个扫描周期的能流,使Q0.0复位。N_TRIG指令框下面的M10.1是脉冲存储器位。P_TRIG指令与N_TRIG指令不能放在电路的开始处和结束处。在设计程序时应考虑输入和存储位的初始状态,是允许还是应避免首次扫描的边沿检测。图3-11P_TRIG指令与N_TRIG指令7、边沿检测指令的比较下面比较3种边沿检测指令的功能(以上升沿检测为例):在触点上面的地址的上升沿,该触点接通一个扫描周期。因此P触点用于检测触点上面的地址的上升沿,并且直接输出上升沿脉冲。在流过线圈的能流的上升沿,线圈上面的地址在一个扫描周期为l状态。因此P线圈用于检测能流的上升沿,并用线圈上面的地址来输出上升沿脉冲。在流入P_TRIG指令的CLK端的能流的上升沿,Q端输出一个扫描周期的能流。因此P_TRIG指令用于检测能流的上升沿,并且直接输出上升沿脉冲。如果P_TRIG指令左边只有I0.0的常开触点,可以用I0.0的P触点来代替它们。3.2.2定时器与计数器指令S7-1200采用IEC标准的定时器和计数器指令。3.2.2.1定时器指令1、定时器指令的基本功能S7-1200有4种定时器,图3-12给出了它们的基本功能。1)脉冲定时器(TP):在输入信号IN的上升沿产生一个预置宽度的脉冲,闭中的t为定时器的预置值。2)接通延时定时器(TON):输入IN变为l状态后,经过预置的延迟时间,定时器的输出Q变为l状态。输入IN变为O状态时,输出Q变为0状态。3)断开延时定时器(TOF):输入IN为1状态时,输出Q为1状态。输入IN变为0状态后,经过预置的延迟时问,输出Q变为O状态。4)保持型接通延时定时器(TONR):输入IN变为l状态后,经过预置的延迟时间,定时器的输出Q变为1状态。输入IN的脉冲宽度可以小于时间预置值。输入信号INtttt脉冲定时器的输出信号I0.0Q0.0Q0.1Q0.2Q0.3接通延时定时器的输出信号断开延时定时器的输出信号保持型接通延时定时器的输出信号图3-12定时器的基本功能定时器的输入IN为启动定时的使能输入端,IN从O状态变为1状态时,启动TP、TON和TONR开始定时。IN从1状态变为0状态时,启动TOF开始定时。PT(PresetTime)为时间预置值,ET(ElapsedTime)为定时开始后经过的时间,或称为已耗时间值,它们的数据类型为32位的Time,单位为ms,最大定时时间长选T#24D_20H_31M_23S_647MS(D、H、M、S、MS分别是日、小时、分、秒和毫秒)。可以不给输出ET指定地址。Q为定时器的位输出,各变量均可以使用I(仅用于输入变量)、Q、M、D、L存储区。2、脉冲定时器IEC定时器和IEC计数器属于功能块,调用时需要指定配套的背景数据块,定时器和计数器指令的数据保存在背最数据块中。在梯形图中输入定时器指令时,打开右边的指令窗口,将“定时器操作”文件夹中的定时器指令拖放到梯形图合适当的位置。在出现的“调用选项”对话框中(见图3-14),可以修改将要生成的背景数据块的名称,或采用默认的名称。点击“确认”按钮,自动生成数据块。脉冲定时器类似于数字电路中上升沿触发的单稳态电路。在IN输入信号的上升沿,Q输出变为l状态,开始输出脉冲。达到PT预置的时间时,Q输出变为O状态(见图3-15的波形A、B、E)。IN输入的脉冲宽度可以小于Q端输出的脉冲宽度。在脉冲输出期间,即使IN输入又出现上升沿(见波形B),也不会影响脉冲的输出。用程序状态功能可以观察已耗时间的变化情况(见图3-13)。定时开始后,已耗时间从Oms开始不断增大,达到PT预置的时间时,如果IN为l状态,则已耗时间值保持不变(见波形A)。如果IN为0状态,则定时时间变为Os(见波形B)。定时器指令可以放在程序段的中间或结束处。IEC定时器没有编号,在使用对定时器复位的RT指令时,可以用背景数据块的编号或符号名来指定需要复位的定时器。如果没有必要,不用对定时器使用RT指令。图3-13中的I0.1为1时,定时器复位线圈(RT)通电,定时器被复位。如果此时正在定时,且IN输入为0状态,将使已耗时间清零,Q输出也变为0状态(见波形C)。如果此时正在定时,且IN输入为1状态,将使已耗时间清零,但是Q输出保持l状态(见波形D)。复位信号I0.1变为O状态时,如果IN输入为l状态,将重新开始定时(见波形E)。图3-13脉冲定时器的程序状态图3-14生成定时器的背景数据块图3-15脉冲定时器的波形图3、接通延时定时器I0.0(IN)Q0.0(Q)DABCEPTI0.1(RT)已耗时间(ET)PT接通延时定时器(TON)的使能输入端(IN)的输入电路由断开变为接通时开始定时。定时时间大于等于预置时间(PT)指定的设定值时,输出Q变为l状态,已耗时间值(ET)保持不变(见图3-17中的波形A)。IN输入端的电路断开时,定时器被复位,已耗时间被清零,输出Q变为O状态。CPU第一次扫描时,定时器输出Q被清零。如果输入IN在未达刭PT设定的时间时变为0状态(见波形B),输出Q保持0状态不变。图3-16中的I0.1为1状态时,定时器复位线圈RT通电(见波形C),定时器被复位,已耗时间被清零,Q输出端变为0状态。I0.1变为O状态时,如果IN输入为l状态,将