2.3 PLC的基本程序指令和功能指令
所谓指令,就是一些二进制代码(也称机器码),用来告诉PLC要做什么,如何做。PLC的指令包括两部分:操作码和操作数。操作码(即指令)表示哪一种操作或运算,用符号LD、OUT、AND、OR等表示;操作数(即地址、数据)内包含执行该操作所必需的信息,告诉CPU用什么地方的东西来执行此操作,操作数用内部器件及其编号等来表示。
PLC的基本指令主要用于逻辑处理,是基于继电器、定时器、计数器等软元件的指令,包括顺序输入指令、顺序输出指令、顺序控制指令、定时器和计数器指令等。
2.3.1 PLC的助记符指令
PLC的助记符指令是最基本也是最简单的指令,它是用类似计算机的汇编语言表达的。这种语言仅使用文字符号,所使用的编程工具简单(用简单的编程器即可),所以多数PLC都配备这种指令。厂家不同,各指令的符号也有所不同,部分PLC产品的助记符指令见表2-2。
表2-2 部分PLC产品的助记符指令[1]
2.3.2 PLC常用基本程序指令
PLC常用的基本程序指令是用类似继电器电路图的符号表达PLC实现控制的逻辑关系,这种语言与梯形图语言有对应关系,很容易互相转换,并便于电气工程师了解与熟悉,几乎所有的PLC都开发有这种指令,已成为PLC常用的基本程序指令。
PLC常用的基本程序指令(LD、AND、OR、NOT、OUT、END、ANDLD和ORLD)的功能[1]介绍如下:
1)LD指令。梯形图中的符号为,它表示启动一个逻辑行或块。当一个逻辑行用常开触点输入时,采用LD。
2)AND指令。梯形图中的符号为,它表示串行连接接常开触点输入。
3)OR指令。梯形图中的符号为,它表示并行连接接常开触点输入。
4)NOT指令。它表示逻辑非输入,用于一个常闭触点,有LDNOT、ANDNOT和OR-NOT三种形式。梯形图上用触点上加一斜杠表示。例如,ANDNOT或ANI表示为,ORNOT表示为。
5)OUT指令。用于驱动编程元件的线圈,梯形图中的符号为。其操作元件是Y(输出继电器)、M(暂存继电器)、S(状态寄存器)、T(定时器)、C(计数器)。OUT指令用于定时器T、计数器C时需后加常数K。
6)NED指令。它表示程序的结束,如果一个程序没有NED指令,程序就不能运行,并会指示编程错误。
7)ANDLD指令。它表示两个块的串行连接。这个指令在用助记符书写的程序中是必需的,其梯形图与助记符的对照如图2-9所示。
图2-9 ANDLD指令梯形图与助记符的对照
8)ORLD指令。它表示两个块的并行连接。这个指令在用助记符书写的程序中也是必需的,其梯形图与助记符的对照如图2-10所示。
图2-10 ORLD指令梯形图与助记符的对照
除了上述基本程序指令外,PLC还有一些用功能数字键表示的基本程序指令。
2.3.3 基本程序指令控制电动机的正反转
表2-3给出了电动机正反转的I/O分配,图2-11给出了基本程序指令操作的电动机正反转运行。
表2-3 电动机正反转的I/O分配表
图2-11 基本程序指令操作的电动机正反转运行
电动机正转:图2-11a中,合上断路器QF,按下正向起动按钮SB1;图2-11b中,由于按钮SB1闭合,I/O单元的端子000001与COM连接,输入继电器000001通过PLC内部DC24V电源得电吸合;图2-11c中,000001常开触点闭合。由于PLC内的输入继电器000004的常闭触点闭合(因图2-11a中的热继电器FR未过热动作,图2-11b中的热继电器FR的常开触点未闭合)、输入继电器000003的常闭触点闭合、输出继电器000202的常闭触点闭合,故PLC内的输出继电器000201得电吸合并自锁,图2-11b中的输出接触器KM1得电吸合,电动机正向起动运转。
电动机反转:图2-11a中,按下反向起动按钮SB2;图2-11b中,由于按钮SB2闭合,I/O单元的端子000002与COM连接,输入继电器000002通过PLC内部DC 24V电源得电吸合;图2-11c中,000002常开触点闭合。由于PLC内的输入继电器000004的常闭触点闭合、输入继电器000003的常闭触点闭合、输出继电器000201的常闭触点闭合,故PLC内的输出继电器000202得电吸合并自锁,图2-11b中的输出接触器KM2得电吸合,电动机反向起动运转。
电动机正反向运转通过PLC内部输出继电器000201和000202的常闭触点实现电气联锁。
停机时,按下停止按钮SB3,图2-11b中,由于按钮SB3闭合,I/O单元的端子000003与COM连接,输入继电器000003通过PLC内部DC 24V电源得电吸合;图2-11c中,输入继电器000003的常闭触点断开,输出继电器000201或000202失电释放;图2-11b中的输出接触器KM1或KM2失电释放,电动机停止运行。
电动机过载时,图2-11b中热继电器FR的常开触点闭合,I/O单元的端子000004与COM连接;在图2-11c中,PLC内的输入继电器000004的常闭触点断开,输出继电器000201或000202失电释放;图2-11b中的接触器KM1或KM2失电释放,电动机停止运行。
2.3.4 定时器指令的功能
定时器是一种按时间动作的继电器,相当于继电器控制系统中的时间继电器。一个定时器可有多个常开触点和常闭触点,触点的数量不受限制,下面说明它的指令功能。[1]
定时器为通电延时,当定时器的输入为OFF(断)时,定时器的输出为OFF(断);当定时器的输入为ON(通)时,开始定时,定时时间到,定时器的输出为ON(通)。若输入继续为ON,则定时器的输出保持为ON;当定时器的输入变为OFF时,定时器的输出随之变为OFF。常见的定时单位有0.01s、0.1s和1s等几种。
定时器指令(TIM)的图形符号及说明如图2-12所示。
图2-12 TIM的图形符号及说明
图2-12中,“∗DM”表示间接DM地址,其操作数据的内容不是实际的数据,而是另一个DM的地址,该地址中的内容才表示真正的数据内容。如∗DM10的值是123,则∗DM10表示的内容实际上是DM 123中的内容。
当设定值SV为常数时,通常加前缀#号,“#”代表立即数,表示操作数据的内容就是实际的数字。如TIM00#100,表示0号定时器的设定时间参数是100,若定时单位为0.1s,则定时时间为100×0.1s=10s。
如图2-13所示,当00000为ON时,TIM000开始定时,定时时间为15s(150×0.1s=15s),定时到,位20000为ON。
2.3.5 计数器指令的功能
计数器可以作加/减计数、普通计数和高速计数。计数器有两个数据寄存器,一个为设定值寄存器,另一个为当前值寄存器。它们的数据可在运行中进行读写[1]。下面说明它的指令功能。
图2-13 TIM梯形图及程序
计数器指令(CNT)的图形符号及说明如图2-14所示。图中,CP为计数脉冲输入端,R为复位端,SV是BCD码,取值范围为0~9999。计数器可以递减或递增计数,CPM系列为递减计数器。计数器和定时器的编号是公用的,但使用时编号不能重复。
图2-14 CNT的图形符号及说明
如图2-15所示,当计数脉冲输入端00000输入上升沿信号(OFF→ON,即输入由断变为通)时,计数1次(即计数器记录的是输入由断到通的次数)。在复位端00001输入上升沿信号,当前值返回为设定值,当复位端输入为ON时,不接受计数输入。
图2-15 CNT梯形图及程序
2.3.6 PLC定时器与计数器的级联使用
每一种PLC的计数器和定时器的设定值都有一定的范围,当实际应用中需要的设定值超出这个范围时,可通过定时器与计数器级联来解决。
图2-16所示为定时器与计数器级联的梯形图[1]。图中,T451形成一个设定值为20s的自复位定时器。当X401接通时,T451线圈得电,经20s延时后,其常闭触点断开,T451线圈失电,自动复位,T451的常开触点闭合。T451的触点每断开、闭合1次,计数器输入1个计数脉冲,C461计数1次。当C461的计数达到100次时,其常开触点闭合,Y430线圈得电吸合。从X401接通到Y430吸合,总的延时时间为20s×100=2000s。图中,M71为初始化脉冲。
2.3.7 置位与复位指令的功能
SET为置位指令,令元件自保持为ON(接通),其操作元件为Y(输出继电器)、M(暂存继电器)和S(状态寄存器)。
RST为置位的复位指令,令元件自保持为OFF(断开),操作元件为Y、M、S及数据寄存器(D)和变址寄存器(V/Z)。
SET和RST指令可以把一个短信号变成长信号,以维持继电器的吸合状态,其使用方法如图2-17所示。[1]当X0接通时,即使再断开,Y0仍然保持接通,直到X1接通为止,两个指令之间可以插入其他程序。
图2-16 定时器与计数器级联的梯形图
图2-17 SET和RST指令使用实例
利用RST指令也可以将定时器T、计数器C、数据寄存器D和变址寄存器V/Z的内容清零。
2.3.8 PLC的PID功能指令
在PLC的实际应用中,为满足温度、速度、压力、流量、电压、电流等工艺变量的控制要求,常常要对这些模拟量(时间上或数值上连续的物理量)进行控制。根据不同的工艺变量要求或节能要求,选用所需的PLC功能指令和模拟量控制模块。如图2-18所示,一个完整的PLC模拟量控制过程包括以下几步:
1)传感器采集信息,并将它转换成标准的电压信号,进而送给PLC的模拟量输入单元。
2)模拟量输入单元将标准电压信号转换成CPU可处理的数字信号。
3)CPU按要求对数字信号进行处理,产生相应的控制信号,并传送给模拟量输出单元。
4)模拟量输出单元接收到控制信号后,将其转换成标准信号传给执行器。
5)执行器的驱动系统对此信号进行放大和变换,产生控制作用,施加到受控对象上。
图2-18 PLC模拟量控制过程
对模拟量的实际控制中,应用PID控制技术是较好的方法之一,也最为方便。PID控制器就是根据系统的误差,利用比例(P)、积分(I)、微分(D)计算出控制量并进行控制的。
比例控制器的输出与输入误差信号呈比例关系。当仅有比例控制时,系统输出存在稳态误差。
积分控制器的输出与输入误差信号的积分呈正比关系。对于一个自动控制系统,如果其进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的系统(简称有差系统)。为消除稳态误差,在控制器中必须引入积分项。积分项对误差取决于时间的积分,这样即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大,当增大到一定程度时,积分控制器使稳态误差减小,直到等于零。因此,PI控制器可以使系统在进入稳态后无稳态误差。
微分控制器的输出与输入误差信号的微分(即误差的变化率)呈正比关系。在控制器中引入微分项,它能预测误差变化的趋势,使抑制误差作用的变化“超前”,这样,具有比例微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,PD控制器能改善系统在调节过程中的动态特性。
由于不同厂家生产的PID功能指令不同,下面仅简单介绍西门子S7-200 PID功能指令。它的PID回路控制指令根据输入和回路表(TBL)的组态信息,对相应的LOOP执行PID回路计算,如图2-19所示。
图2-19 S7-200 PID回路控制指令
PID回路控制指令(包括比例、积分、微分回路)可以用来进行PID运算。但是,进行这种PID运算的前提条件是逻辑堆栈的栈顶(TOS)值必须为1。该指令有两个操作数:作为回路表起始地址的“表”地址TBL和从0~7的常数回路编号LOOP,见表2-4。回路表用于存放过程变量和PID控制参数,见表2-5。
表2-4 PID回路控制指令的有效操作数
程序中最多可以用8条PID指令,如果两个或两个以上的PID指令用了同一个回路号,那么即使这些指令的回路表不同,这些PID运算之间也会相互干涉,会产生不可预料的结果。
表2-5 PID回路控制指令的回路表
为了使PID运算以预想的采样频率工作,PID指令必须用在主程序或者定时发生的中断程序中,被定时器控制并以一定频率执行,采样时间必须通过回路表输入到PID运算中。
自整定功能已经集成到PID指令中,PID整定控制面板只能用于由PID向导创建的PID回路。
在PID运算前,由于每个PID回路的两个输入量——给定值(SV)和过程变量(PV)的范围及测量单位都可能不同,故必须把它们的实际值由16位整数转换成标准的浮点型表达形式。
PID指令的控制方式是:当PID盒接通时,为“自动”运行,当PID运算不执行时,为“手动”模式。
当指令指定的回路表起始地址或PID回路号操作数超出范围,或者PID计算的算术运算发生错误,终止PID指令的执行时,PLC将报警。
除PID指令外,也可使用S7中的SFB41/FB41、SFB42/FB42、SFB43/FB43等功能模块实现PID控制。
2.3.9 PLC的通信功能指令
PLC通信的目的是数据交换。
PLC的通信功能指令具有通信联网的功能,它使PLC与PLC之间、PLC与上位机以及其他智能设备之间能够交换信息,形成一个统一的整体,实现分散/集中控制。
PLC的通信程序能适应各种通信协议(见第3章内容),它的通信程序与控制程序、数据处理程序不同,具有交互性、从属性、相关性和安全性等特点。
PLC与PLC通信。多个PLC之间可用标准通信串口建立网络进行通信,或通过通信指令实现通信,也可使用有关通信模块组成通信网络进行通信。
PLC与计算机通信的功能互补。PLC不仅能完成逻辑控制、顺序控制,还能进行模拟量处理,完成少数回路的PID闭环控制。通用计算机能够连接打印机和显示器,内存量大、编程能力强,其人机界面具有良好的数据显示、过程状态显示及操作功能,这是PLC本身不具备的。将PLC与计算机连接通信,可达到两者功能的互补。
PLC与智能装置通信。智能装置是指智能仪表、智能传感器、智能执行器及其他带有串口或相关网络接口的装置。由于这些装置有通信口或相关网络接口,所以,其与PLC交换数据时可以通信的方式进行。用通信方式交换数据,有连线少、数据量大、抗干扰能力强、传送距离大等优点。PLC与智能装置通信时,一般在PLC上编程,智能装置不需要编程。通信方法包括指令通信和地址映射通信(可参考第3章有关内容),指令通信主要用于串口通信。