表5-2部分中断事件及其事件号
事件号82402122728101121中断描述通信口0:接收字符通信口1:接受字符I0.0上升沿I0.1上升沿HSC0 CV=PV (当前值=设定值)HSC0 输入方向改变HSC0 外部复位定时中断0定时中断1定时器T32 CT=PT 中断优先组通信(最高)I/O(中等)定时(最低)优先组中的优先级0123101112012 中断返回(CRETI)指令 根据控制的条件从中断程序中返回到主程序。
可用中断程序入口点处的中断程序标号来识别每个中断程序。部分中断事件及其事件号如表5-2所示。
4.4 高速计数指令
普通计数器要受CPU扫描速度的影响,对高速脉冲信号的计数会发生脉冲丢失的现象。高速计数器脱离主机的扫描周期而独立计数,它可对脉宽小于主机扫描周期的高速脉冲准确计数。高速计数器常用于电动机转速检测的场合,使用时可由编码器将电动机的转速转化成脉冲信号,再用高速计数器对转速信号进行计数。
高速计数器的指令包含定义高速计数器(HDEF)指令和高速计数器(HSC)指令(如表5-3所示),高速计数器的时钟输入速率可达10~30KHz。
定义高速计数器(HDEF)指令,为指定的高速计数器(HSCx)选定一种工作模式(有12种不同的工作模式)。使用HDEF指令可建立起高速计数器(HSCx)和工作模式之间的联系。操作数HSC是高速计数器编号(0~5),MODE是工作模式(0~11)。在使用高速计数器之前必须使用HDEF指令来选定一种工作模式。对每一个高速计数器只能使用一次HDEF指令。
高速计数器(HSC)指令,根据有关特殊标志位来组态和控制高速计数器的工作,操作数N指定了高速计数器号(0~5)。
高速计数器装入预置值后,当前计数值小于当前预置值时计数器处于工作状态。当当前值等于预置值或外部复位信号有效时,可使计数器产生中断;除模式(0~2)外,计数器方向的改变也可产生中断。可利用这些中断事件完成预定的操作。每当中断事件出现时,采用中断的方法在中断程序中装入一个新的预置值,从而使高速计数器进入新一轮的工作。
由于中断事件产生的速率远低于高速计数器的计数速率,用高速计数器可以实现精确的高速控制,而不会延长PLC的扫描周期。
高速计数器指令在使用过程中,利用相关的特殊存储器位可对高速计数器实施状态监视、组态动态参数、设置预置值和当前值等操作。
HSC0~HSC2的当前值和预置值所对应的特殊存储器地址如表4-3所示。
表4-3 HSC的当前值和预置值
要装入的值 新当前值 新预置值 HSC0 SMD38 SMD42 HSC1 SMD48 SMD52 HSC2 SMD58 SMD62 为了向高速计数器装入新的当前值和预置值,必须先设置控制字节,并把预置值和当前值存入特殊存储器中,然后执行HSC指令,才能将新的值传送给高速计数器。
每个高速计数器都有一个控制字节,控制字节是用来控制计数器工作的。(HSC0~HSC2)的控制字节如表4-2所示。
表4-2 高速计数器的控制字节
HSC0 SM37.0 — SM37.2 SM37.3 SM37.4 SM37.5 SM37.6 SM37.7 HSC1 SM47.0 SM47.1 SM47.2 SM47.3 SM47.4 SM47.5 SM47.6 SM47.7 HSC2 SM57.0 SM57.1 SM57.2 SM57.3 SM57.4 SM57.5 SM57.6 SM57.7 描述 复位有效电平控制位: 0=复位高电平有效;1=复位低电平有效 启动有效电平控制位: 0=启动高电平有效;1=启动低电平有效 正交计数器计数速率选择: 0=4×计数速率;1=1×计数速率 计数方向控制位: 0=减计数;1=增计数 允许更新计数方向: 0=不更新;1=更新计数方向 向HSC中写入预置值: 0=不更新;1=更新预置值 向HSC中写入新的当前值: 0=不更新;1=更新当前值 HSC允许:0=禁止 HSC 1=允许 HSC 4.5 PID指令
4.5.1 PID 算法
PID 控制器管理输出数值,以便使偏差(e)为零,系统达到稳定状态。偏差是给定值SP 和过程变量PV 的差. PID 控制原则以下列公式为基础,其中将输出u(t)表示成比例项、积分项和微分项的函数:
(4-1)
式中 e(t)—调节器输入函数,即给定量与与输出量的偏差; u(t)—调节器输出函数; Kp—比例系数; Ti—积分时间常数; Td—微分时间常数;
因为式(4-1)表示的调节器的输入函数及输出函数均为模拟量,所以计算机是无法对其进行直接运算的。为此,必须将连续形式的微分方程化成离散形式的差分方程。
取T 为采样周期,k 为采样序号,k=0,1,2,?i,?k,因为采样周期T 相对于信号变化周期是很小的,这样可以用矩形法算面积,用向后差分代替微分,即
于是式(4-1)可写成
(4-2)
式中 u(k) —采样时刻k 时的输出值; e(k) —采样时刻k 时的偏差值; e(k-1)—采样时刻k-1 时的偏差值。
式(4-1)中的输出量 u(k)为全量输出。它对应于被控对象的执行机构(如调节阀)每次采样时刻应达到的位置,因此,式(4-2)称为PID 位置控制算法。这即使是PID 控制规律的离散化形式。
4.5.2 控制方式
S7-200 的PID 回路没有设置控制方式,只要PID 块有效,就可以执行PID 运算。在这种意义上说,PID 运算存在一种“自动”运行方式。当PID 运算不被执行时,我们称之为“手动”方式。
同计数器指令相似,PID 指令有一个使能位。当该使能位检测到一个信号的正跳变(从0到1),PID 指令执行一系列的动作,使PID 指令从手动方式无扰动地切换到自动方式。为了达到无扰动切换,再转换到自动控制前,必须用手动方式把当前输出值填入回路表中的Mn栏。PID 指令回路表中的值进行下列动作,以保证当使能位正跳变出现时,从手动方式无扰动切换到自动方式:
置给定值( SPn)=过程变量( PVn) 置过程变量前值(PVn",1)=过程变量(PVn) 置积分项前值( MX )=输出值( Mn)
PID 使能位的默认值是1,在CPU 启动或从STOP 方式转到RUN 方式时建立。CPU 进入RUN方式后首次使PID 块有效,没有检测到使能位的正跳变,那么就没有无扰动切换的动作
PID 编程的基本步骤: 1)设定回路输入及输出选项。
2)设定回路参数在 PID 指令中,必须指定内存区内的46个字节参数表的首地址。其中要选定过程变量、 设定值、 回路增益、 采样时间、 积分
时间和微分时间,并转换成标准值存入回路表中。
3)为计算指定内存区域,PID 计算需要一定的存储空间,存储暂时结果。需要指定此计算区域的起始 V 内存字节地址。
4)指定初始化子程序及中断程序。 5)生成 PID 程序。
根据设计要求,可设计出如图4-1的程序流程图,按此进行PLC 编程,以此来控制水箱液位。
LAD PID TABLE,LOOP STL 指令使用说明 (1)PID指令根据当前输入信息和控制回路表(TBL)中的配置信息,对相应的 (LOOP)执行PID运算。 (2)TBL是控制回路表的起始地址,LOOP 取值范围是0~7。
5 软件设计
5.1 S7-200 PLC编程的基本概念
5.1.1 PLC编程语言