各位前辈,我写了一段PID的程序,用CPU224的模拟电位器模拟时,即调节SMB28小螺丝,PID输出结果无变化,本人新手,还请指点一下,哪里的问题,谢谢,不胜感激
(是关于锅炉汽包水位三冲量串级调节控制的一段程序,汽包液位作为模拟量VW104输入,经过PID运算得出一个控制量VW238,作为内环水量调节给定量的一部分)附上程序,请前辈指点TITLE=
Network1
//调用采样值初始化子程序
LDSM0.1
CALLSBR1//采样值初始化,PID环路过程变量前值初始化
Network2
//调用外环、内环PID参数设置子程序
LDSM0.0
CALLSBR3//外PID参数设置,调用INT0
Network3
//模拟电位器
LDSM0.0
MOVBSMB28,AC0
BTIAC0,AC0
AW>AC0,200
MOVW200,AC0
LDSM0.0
*I20,AC0
MOVWAC0,VW200
子程序1
TITLE=
Network1//网络标题
//模拟量采样值初始化
LDSM0.0
MOVWAIW4,AC0
SRWAC0,3
MOVWAC0,VW200//读液位AIW4放入VW200(0~4000)
Network2
//外环PID过程变量前值初始化
LDSM0.0
MOVWVW200,AC0
-I+800,AC0
ITDAC0,AC0
DTRAC0,AC0
/R3200.0,AC0
MOVRAC0,VD232//过程变量前值PV(n-1)第一次扫描赋初值(0~1)
Network3
LDSM0.0
MOVB100,SMB34//设定定时中断时间为100ms
ATCHINT0,10//连接INT0到定时中断0(事件10)
ENI//全局中断允许
子程序3
TITLE=外环PID参数表的生成,归一化等内容
Network1//网络标题
//外环PID参数归一化
LDSM0.0
MOVR0.1,VD216//采样时间Ts
MOVR30.0,VD220//积分常数Ti
MOVR0.0,VD224//微分常数Td
MOVR0.0,VD228//积分前值Mx
MOVR20.0,VD236//增益Kc(0.0~100.0)
Network2
LDSM0.0
MOVRVD236,AC0
/R100.0,AC0
MOVRAC0,VD212//增益Kc归一化(0.0~1.0)
LDSM0.0
MOVW100,VW204
MOVWVW204,AC0
+I200,AC0//液位量程
ITDAC0,AC0
DTRAC0,AC0
/R400.0,AC0
LDR>=AC0,1.0
MOVR1.0,AC0
LDR<=AC0,0.0
MOVR0.0,AC0
MOVRAC0,VD204//液位给定值Sv归一化(0.0~1.0)
中断程序0
TITLE=模拟量采样、PID控制定时中断程序
Network1//网络标题
//采样值归一化,填入参数表
LDSM0.0
XORDAC0,AC0//清空累加器AC0
MOVWVW200,AC0//读入液位值
-I800,AC0
DTRAC0,AC0
/R3200.0,AC0//归一化液位值
MOVRAC0,VD200//过程变量当前值PVn归一化(0.0~1.0)
MOVRVD200,VD232//更新过程变量前值PV(n-1)
Network2
//PID功能实现
LDSM0.0
PIDVB200,0//调用PID功能,环路编号为0
MOVRVD208,AC0
*R3200.0,AC0
TRUNCAC0,AC0
MOVWAC0,VW240//输出外环PID运算结果(0~3200),作为内环水量次给定
Network3//
Network4
Network5
Network6
Network7
Network8
Network9
Network10
图片说明:
3569e8dc6ada1a9bd38a108eabcbfbb7
最佳答案
看了一下你的程序,关于VW200的赋值,你采用模拟电位器及AIW4模拟量输入,如果该程序连接有实体模拟量模块,则VW200的值只能是AIW4所赋予的值,而不是模拟电位器给定的值,这个是按程序扫描机制来实现的,如果需要用模拟电位器给VW200赋值,则只需要把这2个程序段对换位置。
提问者对于答案的评价:
谢谢
专家置评
关于pid控制
1、如果PID指令使用不熟悉,建议使用pid向导进行控制,最多可以配置8个回路
2、如果使用指令编程,请您仔细阅读系统手册中关于回路表的定义
比如说增益,TBL为200,那么增益应该在VD212定义,而不是VD236
标定过程比较混乱,建议将标定过程全部删除,保证绑定中断与扫描周期相符合,开放中断,在中断中执行pid指令
从状态表中进行回路表相关变量填写及修改
扫描周期提前设定好,保证和定时中断时间相配合
比例,积分,微分,建议可以将积分值设定比较大减小积分作用,现场调试时需要根据现场情况调节三个参数
修改设定值,过程变量值
观察输出(TBL为200)VD208是否有0.0-1.0之间的变化
有输出了,反过来再进行过程变量及给定值及输出的标定工作
不要将问题复杂化!