您的位置:控制工程论坛网论坛 » PLC与PAC » Siemens PLC在闭环控制系统中PID算法的实现

开心一天

开心一天   |   当前状态:离线

总积分:196  2024年可用积分:0

注册时间: 2007-10-13

最后登录时间: 2007-12-05

空间 发短消息加为好友

Siemens PLC在闭环控制系统中PID算法的实现

开心一天  发表于 2007/11/19 16:40:33      4177 查看 2 回复  [上一主题]  [下一主题]

手机阅读

1  引言
    在工业生产过程当中,常常需要用闭环控制方式来控制温度、压力、流量、液位和速度等连续变化的模拟量。PID调节是经典控制理论中最典型的用于闭环控制系统的调节方法。积分控制可以消除系统的静差,提高系统控制精度和抗外界干扰能力;微分控制改善系统的动态响应速度,用于克服系统的惯性滞后,提高系统的稳定性;比例、积分、微分控制结合具有较强的灵活性和适应性。

 


    用PLC对模拟量进行PID控制时,可使用PID过程控制模块,一个模块可以控制几路甚至几十路闭环回路,但这种模块价格较贵,一般用于大型复杂的控制系统;也可以使用PID算法嵌入型PLC提供的PID功能指令或自编程序实现PID闭环控制,这种方法价格便宜的多。本文以Siemens S7-200为例,介绍了用算法嵌入型PLC实现单回路模拟量闭环PID控制的方法,这种方法投资较少,适用于中小型系统。

2  PID控制器PLC的实现方法

图1  数字PID闭环控制系统图

 

    典型的基于数字PID的闭环控制系统如图1示,其中虚线部分在PLC内部实现。PLC的PID控制器的设计是以连续系统的PID控制规律为基础,将其数字化写成离散形式的PID控制方程,再跟据离散方程进行控制程序设计。在连续系统中,典型的PID控制器的输入输出关系如下:
   

    式中:M(t)为控制器的输出量,M0为输出的初始值;e(t)为给定值与被控变量的误差信号;KC比例系数;TI积分时间常数;TD微分时间常数。
将上式离散化,第n次采样时控制器的输出为:

   

     式中包含9个监控PID运算的参数,构成S7-200的PID运算回路变量表,参见表1。

表1  PID指令回路表

    S7-200的PID指令如下:

    指令中TBL是回路表的起始地址,LOOP是回路的编号。PID指令对回路表中的某些输入值不进行范围检查,应保证过程变量、给定值等符合要求。

3  PID程序实现
    温度是工业生产对象中主要的被控参数之一。本文以温度控制系统为例,说明西门子PLC实现PID调节的应用问题。系统要求将被控系统的温度控制在50~60℃之间,当温度低于50℃或高于60℃时,通过PID控制器的输出控制加热元件自动进行调整。由于系统温度控制要求不高,本例采用PI控制,初值取:回路增益Kc=2,积分时间TI=30min,采样周期Ts=1s。控制过程如图2所示。

图2  Siemens PLC PID控制实现框图

3.1 输入输出量转换
    PID控制有两个输入量:给定值(SP)和过程变量(PV),通常给定值是固定的,过程变量是经A/D转换和计算后得到的被控量的实测值,给定值与过程变量都是与被控对象有关的值。应用PLC的PID指令之前,必须将其转换成符合回路表要求的标准浮点数(实数),即转换为0.0~1.0之间的标准实数。同样,对于PID指令的输出,在将其送给D/A转化器之前,也需进行转换。为控制方便,本例中设55℃为被控温度系统的基准值即给定值。
    (1)回路输入的转换。首先将给定值或A/D转换后得到的过程变量整数值由16位整数转换成浮点数,然后将实数进一步用下面的公式对给定值或过程变量标准化即转换成0.0~1.0之间的标准实数。

   

    式中: —标准化实数值;
  —标准化前的值;
  Offset—偏移量,对单极性变量为0.0,对双极性变量为0.5;
  Span—取值范围(变量的最大值减去最小值),单极性变量的典型值为32000,双极性变量的典型值为64000。
    (2)回路输出的转换。回路输出即PID控制器输出,它是标准化的0.0~1.0之间的实数。将回路输出送给D/A转换器之前,必须转换成16位二进制整数。这一过程是回路输入转换的逆过程。  
3.2 PID温度控制程序
    //主程序
    LD SM0.1 //首次扫描时为ON
    CALL 0  //调用初始化子程序0
    //初始化子程序0,装载PID指令的回路表
    LD SM0.0  //给定值存入累加器
    DTR AC0, AC0 //将32位整数转换成实数
    /R 64000.0,AC0 //累加器中的实数标准化
    +R 0.5, AC0 //加上偏移值,使其在
   0.0~1.0之间
    MOVR ACO, VD104 //装入给定值
    MOVR 2, VD112 //装入回路增益2
    MOVR 1, VD116 //装入采样时间1s
    MOVR 30, VD120 //装入积分时间30min
    MOVR 0, VD124 //关闭微分作用
    LDN T32
    TON T32, 1000 //设置定时器32中断的
 时间间隔为1s
    ATDH 0, 21 //设置定时器32中断(中
断号为21)执行PID指令
    ENI   //允许中断,子程序0结束
    //中断程序0
    LD SM0.0
    XORD AC0, ACO   //清除累加器
    MOVW AIWO, AC0 //将待转化的模拟量
 存入累加器
    LDW>= AC0, 0 //如果模拟量数值为正
    JMP 0  //直接转换成实数
    ORD 16#FFFF0000, ACO //将AC0内的数    值进行符号扩展,扩展为32    位负数
    LBL 0
    DTR AC0, AC0 //将32位整数转换成实数
    /R  64000.0, AC0 //累加器中的实数标准化
    +R 0.5, AC0 //加上偏移值,使其在
 0.0~1.0之间
    MOVR ACO, VD100 //装入标准化的过程变量
    LD I0.0    //在自动方式下,执行PID指令
    PID VB100, 0 //回路表的起始地址为    VB100,回路号为0
    LD SM0.0
    MOVR VD108, AC0 //将回路输出送入累加器
    -R 0.5, AC0
    *R 64000.0, AC0     
    ROUND AC0, AC0 //将实数转换为32位整数
    MOVW AC0, AQW0 //将16位整数写入模拟
输出(D/A)寄存器

4  结束语
    本文给出了直接利用PID指令实现PLC的PID控制器的方法,这是一种易于实现而且经济实用的方法。PID控制算法具有很强的灵活性,根据被控对象特点不同,可以使用PI、PD、PID等多种控制方式,以达到良好的控制效果。本文根据温控系统的要求,采用PI控制,实践证明该系统波动小,响应快,控制精度高。

1楼 0 0 回复
  • yandapeng18

    yandapeng18   |   当前状态:在线

    总积分:57  2024年可用积分:0

    注册时间: 2012-04-14

    最后登录时间: 2015-06-03

    空间 发短消息加为好友

    yandapeng18   发表于 2012/4/14 23:13:14

    请问一下 如果用于速度控制,模拟量输出是用来直接控制变频器吗?
    2楼 回复本楼

    引用 yandapeng18 2012/4/14 23:13:14 发表于2楼的内容

  • tianrenyi

    tianrenyi   |   当前状态:在线

    总积分:122  2024年可用积分:0

    注册时间: 2012-08-02

    最后登录时间: 2012-12-13

    空间 发短消息加为好友

    tianrenyi   发表于 2012/8/3 9:50:48

    回收西门子S7-200、S7-400。6ES系列工控产品,有意者详谈。电话:15827333844  QQ

    :451519870

    3楼 回复本楼

    引用 tianrenyi 2012/8/3 9:50:48 发表于3楼的内容

总共 , 当前 /