PID调节切换停机

有关PID调节程序的问题:
 系统要求:设备起初以设定好的流量恒流量运行(即电机工频50Hz全速运转),运行过程中实时监测系统压力(天长日久系统压力会缓慢上升),当系统压力达到设定好的某一定值P1时,设备立即自动进入恒压力运行(PID调节)方式(即系统变频降速运行,保证压力在设定值P1上下随动)
 程序设计如下:
 刚开机时给变频器提供DC10V(设定调速信号为DC0-10V)调速电压,电机以额定转速运转。
 主程序中用SM0.1调用PID调节子程序,即:
 LD     First_Scan_On:SM0.1
 CALL   过程信号子程序:SBR5
 子程序中装入PID调节参数值并激活全局中断SMB35,中断号为11,即:
 LD     Always_On:SM0.0
 MOVR   0.0, #SPR:LD4
 MOVR   0.0, #P1HR:LD12
 MOVD   0, #SPDI:LD0
 MOVD   0, #P1HDI:LD8
 ITD    P1:VW100, #SPDI:LD0         //P1为设定的定值
 DTR    #SPDI:LD0, #SPR:LD4
 ITD    P1H:VW102, #P1HDI:LD8      //P1H为压力上限
 DTR    #P1HDI:LD8, #P1HR:LD12
 MOVR   #SPR:LD4, VD304
 /R     #P1HR:LD12, VD304
 MOVR   P1调节比例系数:VD1000, VD312   //Kc给定值为0.8
 MOVR   P1调节采样时间:VD1004, VD316   //Ts给定值为5s
 MOVR   P1调节积分时间:VD1008, VD320   // Ti给定值为2min
 MOVR   P1调节微分时间:VD1012, VD324   // Td给定值为0
 MOVB   200, Time_1_Intrvl:SMB35
 ATCH   INT_0:INT0, 11
 ENI
 中断程序运行PID指令:
 Network 1 // P1超调后执行PID调节
 // 将压力1的PV值转换为标准化的实数
 LD     SM0.0
 MOVD   0, LD0
 MOVR   0.0, LD4
 MOVR   0.0, LD12
 MOVD   0, LD8
 ITD    VW22, LD0
 DTR    LD0, LD4
 ITD    VW102, LD8
 DTR    LD8, LD12
 MOVR   LD4, VD300
 /R     LD12, VD300
 Network 2 
 // 压力超调后执行PID指令
 LD     M16.0
 PID    VB300, 0

 Network 3 
 // 将输出值(Mn)转换为16位整数,输出值(Mn)为单极性且非负的数
 LD     SM0.0
 MOVD   0, LD16
 MOVR   0.0, LD20
 MOVR   VD308, LD20
 *R     32000.0, LD20
 ROUND  LD20, LD16
 DTI    LD16, VW240 
 其中M16.0为压力P1达到设定值后置位信号,即M16.0置位,程序会立即执行PID指令,达到由原来恒流量运行方式向恒压力运行方式的切换。

 经过反复调试,PID参数设置以上值后,系统运行能达到要求。
 但是调试过程中有一个问题:
 每次首次进入执行PID指令时,变频器会一路降速直到输出调速信号很小(即输出VW240为一个很小的值,不能使变频器驱动电机工作),但此时变频器仍然在工作,即处于运行状态。停机后(即变频器停止工作),重新启动变频器,此时压力值迅速上升,达到M16.0置位条件,程序立即执行PID指令,即第二次执行PID指令,同样设置的以上参数,系统能按要求运行,压力基本平衡在P1附近。
 有资料说:“实现无扰动切换,转换前必须把当前的控制输出值写入回路表的Mn栏”。于是在主程序里面加以下程序段:
 LD     压力P1超调降流量:M16.0
 EU
 ITD    Qe:VW110, #PIDI:LD16     //Qe:VW110为系统设定流量(小于等于2400)
 DTR    #PIDI:LD16, #P1R:LD20
 MOVR   #P1R:LD20, VD308
 /R     2400.0, VD308         //全速运行(即电机工频50Hz运行)时流量2400
 即给输出值VD308在执行PID指令前写入1.0,在程序监控时也确实看到切换瞬时VD308=1.0,但还是没有解决以上问题。即:
 每次首次进入执行PID指令时,变频器会一路降速直到输出调速信号很小(即输出VW240为一个很小的值,不能使变频器驱动电机工作),但此时变频器仍然在工作,即处于运行状态。停机后(即变频器停止工作),重新启动变频器,此时压力值迅速上升,达到M16.0置位条件,程序立即执行PID指令,即第二次执行PID指令,同样设置的以上参数,系统能按要求运行,压力基本平衡在P1附近。

 

最佳答案

使PID指令从手动方式无扰动地切换到自动方式。为了达到无扰动切换,在转变到自动控制前,必须把手动方式下的输出值填入回路表中的Mn栏;

 PID指令对回路表中的值进行下列动作,以保证当使能位正跳变出现时,从手动方式无扰动切换到自动方式:

 
 置设定值(SPn)=过程变量(PVn)
 置过程变量前值(PVn--1)=过程变量现值(PVn)
 置积分项前值(MX)=输出值(Mn)

 另外要进行MX值的检测:

 积分项前值要根据PID运算结果更新。这个更新了的值用作下一次PID运算的输
 入,当计算输出值超过范围(大于1.0或小于0.0),那么积分项前值必须根据下列公式进行调整:

 MX = 1.0 -- (MPn + MDn) 【当计算输出Mn > 1.0】
 或
 MX = -- (MPn + MDn)        【当计算输出Mn < 0.0】

 
 其中: MX 是调整过的偏差的数值
 MPn 是在采样时间n时回路输出的比例项的数值
 MDn 是在采样时间n时回路输出的微分项的数值
 Mn 是在采样时间n时回路输出的数值

提问者对于答案的评价:
虽然问题任未解决,但我还是感谢您的关注

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc348957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:54
下一篇 2021年7月4日 下午11:54

相关推荐

  • s7 200PPI通讯问题

    我是个新手,我想用一个cpu226 和一个cpu224通讯,电缆用的是ppi电缆,是不是cpu226的port1和port0的地址要不一样,为什么我连上电脑刷新只能刷到c…

    SIMATIC S7-200 2020年11月1日
  • protool移植为wincc flexible

    原来是tp170a,用protool编辑的,其中“input输入”里面有个地方可以设置数值的限制值(上限和下限),移植到wincc flexible里面后,那个限制值找不…

    SIMATIC S7-200 2020年11月1日
  • EM277引脚定义

    各位大侠:    小弟在西门子的资料上查到“EM277插头上的24V电源从模块端子L+/M来”,其中7脚是24V,2脚是24V,但用电压表量…

    SIMATIC S7-200 2020年10月31日
  • 200的配料程序怎样做

    现在有两种原料,甲原料为100%,乙原料为60%,要求是用斗式称来计量。料仓口、下料口分别用电磁阀来控制开关,当甲原料下到标定的100KG时,关闭进料口。乙原料同甲一样,下到60K…

    SIMATIC S7-200 2021年7月5日
  • 200和300的编程软件

    请教各位师傅:200和300的编程软件能否同时安装于笔记本 最佳答案 当然没有问题,大家一直都这样安装在用,如果出现SETP7无法安装,可以通过修改注册表解决,方法见下面链接:ht…

    SIMATIC S7-200 2020年10月31日
  • 怎么实现一个变量的每100毫秒的变化曲线

    一个变量比如说是重量,我想去测量他每100毫秒的变化值,即用后100毫秒的重量减去前100毫秒的重量,如此反复,然后用上位机,组态软件绘制出重量变化的曲线,我现在只能检测到他时时的…

    SIMATIC S7-200 2021年7月5日
  • USB-PPI电缆通讯

    电脑用USB-PPI电缆和西门子200PLC通讯,安装USB-PPI驱动,添加COM12,在PC/PG设置里把COM1改为COM12,确定退出后,再次打开,还是COM1,&nbsp…

    SIMATIC S7-200 2020年11月1日
  • 上电清除VB、VW的数据

    PLC通过自由口接收CAN的信息后,断电后断开CAN连接再上电,为什么原来的数据还在?为什么不会清零?如何初始化VB存储区的数据? 最佳答案 你要设置V型变量断电后不保持 提问者对…

    SIMATIC S7-200 2020年11月1日
  • s7200主子站

    遇到一个项目:要求用200做,一个主站带两个子站,主站连2台上位机,没做过,不知道这个网络怎么做,都用什么模块连接主子站,怎么连。请高手指点。谢谢!!! 最佳答案 一个主站带两个子…

    SIMATIC S7-200 2020年11月1日
  • PLC程序的扫描周期

    请问如何能够查看PLC程序的扫描周期?在编程软件的什么地方? 最佳答案 先把程序写进PLC中,连接PC与PLC,将PLC的开关调为TERM。在编程软件中点RUN。在Microwin…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论