有关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