当前位置:文档之家› 第1章 PID控制指令

第1章 PID控制指令



下面的指令序列将上述的转换后得到的AC0中 的双极性实数(其中Span-64000)转换成0.0-1.0 之间的实数。
3.回路输出转换为成比例的整数

回路输出即PID控制器的输出,它是标准化的 0.0-1.0之间的实数。将回路输出送给D/A转 换器之前,必须转换成16位二进制整数。这一 过程是将PV与SP转换成标准化数值的逆过程。 第一步用下面的公式将回路输出转换为实数:
PID指令

类似于计数器指令,PID指令有一个能流记忆 位,用该位检测到EN输入端的能流从0到1的 正跳变时,指令将执行一系列的操作,使PID 从手动方式切换到自动方式。为了实现手动方 式到自动方式的无扰动切换,转换前必须把当 前的手动控制输出值写入回路表的参数Mn。 PID指令对回路表内的值进行下列操作,保证 检测到能流从0到1的正跳变时,从手动方式无 扰动地切换到自动方式:



1)令给定值(SPn)=过程变量的当前值(PVn)。 2)令上一次的过程变量(PVn-1)=过程变量的当 前值(PVn)。 3)令积分和(MX)=输出值(Mn)。 PID的能流记忆位的默认值为1,在启动 CPU或从STOP方式转换到RUN方式时它被 置位。进入RUN方式后PID指令首次有效时, 没有检测到使能位的正跳变,就不会执行无扰 动的切换操作。

转换的第一步是将给定值或A/D转换后得到 的整数值由16位整数转换成浮点数。下面的指 令序列提供了实现这种转换的方法。

转换的下一步是将实数进一步转换成0.0-1.0之 间的标准化实数。可以用下面的公式对给定值 及过程变量进行标准化;
式中,RNorm是标准化实数值;RRaw是标准化前的 原始值或实数值;偏移量Offset对单极性变量为0.0, 对双极性变量为0.5;Span是取值范围,等于变量的最 大值减去最小值,单极性变量的典型值为32000,双 极性变量的典型值为64000。
6.PID指令向导的应用


点击编程软件指令树中的“\向导\PID”图标, 或执行菜单命令“工具”一“指令向导”,在 出现的对话框中,设置PID回路的编号、设定 值的范围、增益、采样周期、积分时间、微分 时间、输入输出量是单极性还是双极性,以及 它们的变化范围。还可以设置是否使用报警功 能,以及占用的v存储区地址。 完成了向导中的设置工作后,将会自动生成 子程序PlDx_INIT(x=0~7)和中断程序PID_EXE。
PID控制指令
1.控制方式与出错处理 S7-200的PID指令没有设置控 制方式,执行PID指令时为自动方 式;不执行PID指令时为手动方式


PID指令(见下图)中的TBL是回路表的起始地址, LOOP是回路的编号(0~7)。不同的PID指令不 能使用相同的回路编号。 为了让P1D指令以稳定的采样频率工作, PID指令应在定时中断程序中使用。
式中,MX是调整后的积分和,是第n次采样时控制 器的输出值;MPn和MDn分别是第n次采样时Mn中 的比例项和微分项。


通过调整积分和MX,使输出Mn回到0.0-1.0之 间,可以提高系统的响应性能。MX也应限制 在0.0~1.0之间,每次PID运算结束时,将MX 写入回路表,供下一次PID运算使用。 在执行PID指令之前,用户可以修改回路表内 上一次的积分值MX,以解决某些情况下MX引 起的问题。手工调节MX时必须格外小心,而 且写入回路表的MX必须是0.0-1.0之间的实数。 回路表内过程变量的差值用于PID计算的微分 部分,用户不应修改它。


编译时如果指令指定的回路表起始地址或回路 号超出范围,CPU将生成编译错误(范围错误), 引起编译失败。PID指令对回路表(见下表)中 的某些输入值不进行范围检查,应保证 过程变量、给定值、积分和与上一次的过程变 量不超限。
2.回路输入变量的转换与标准化



PID回路有两个输入量,即给定值(SP)与过程 变量(PV)。给定值通常是固定的值,例如加热 炉温度的给定值。过程变量是经A/D转换和 计算后得到的被控量的实测值,例如加热炉温 度的测量值。给定值与过程变量都是现实世界 的值,对于不同的系统,它们的大小、范围与 工程单位有很大的区别。PID指令对这些量进 行运算之前,必须将其转换成标准化的浮点数 (即实数)。
式中RSCAL是回路输出对应的实数值;Mn是回路输出 标准化的实数值,Offset与Span与上述的定义相同。

下列指令序列用来将回路输出转换为对应的实 数:

用下面的指令将代表回路输出的实数转换成16 位整数:

4. 正作用与反作用回路

增益Kc为正时为正作用回路,反之为反作用回 路。对于增益为0.0的积分控制或微分控制, 如果积分或微分时间为正,为正作用回路,反 之为反作用回路。
5. 变量的范围

过程变量与给定值是PID运算的输入值,在回 路表中它们只能被PID指令读取而不能改写。 每次完成PID运算后,都要更新回路表内的输 出值Mn,它被限制在0.0~1.0之间。从手动控 制切换到PID自动控制方式时,回路表中的输 出值可以用来初始化输出值。
如果使用积分控制,上一次的积分值MX(积分和) 要根据PID运算的结果来更新,更新后的数值 作为下一次运算的输入。当输出值超出范围 (小于0.0或大于1.0),根据下列公式进行调整:
相关主题