PID程序用SMB28模拟电位调试无结果输出

各位前辈,我写了一段PID的程序,用CPU224的模拟电位器模拟时,即调节SMB28小螺丝,PID输出结果无变化,本人新手,还请指点一下,哪里的问题,谢谢,不胜感激
(是关于锅炉汽包水位三冲量串级调节控制的一段程序,汽包液位作为模拟量VW104输入,经过PID运算得出一个控制量VW238,作为内环水量调节给定量的一部分)附上程序,请前辈指点TITLE=
Network 1 
// 调用采样值初始化子程序
LD     SM0.1
CALL   SBR1                        //采样值初始化,PID环路过程变量前值初始化
Network 2 
// 调用外环、内环PID参数设置子程序
LD     SM0.0
CALL   SBR3                        //外PID参数设置,调用INT0

Network 3 
// 模拟电位器
LD     SM0.0
MOVB   SMB28, AC0
BTI    AC0, AC0
AW>    AC0, 200
MOVW   200, AC0

LD     SM0.0
*I     20, AC0
MOVW   AC0, VW200
子程序1
TITLE=
Network 1 // 网络标题
// 模拟量采样值初始化
LD     SM0.0
MOVW   AIW4, AC0
SRW    AC0, 3
MOVW   AC0, VW200                  //读液位AIW4放入VW200(0~4000)

Network 2 
// 外环PID过程变量前值初始化
LD     SM0.0
MOVW   VW200, AC0
-I     +800, AC0
ITD    AC0, AC0
DTR    AC0, AC0
/R     3200.0, AC0
MOVR   AC0, VD232                  //过程变量前值PV(n-1)第一次扫描赋初值(0~1)

Network 3 
LD     SM0.0
MOVB   100, SMB34                  //设定定时中断时间为100ms
ATCH   INT0, 10                    //连接INT0到定时中断0(事件10)
ENI                                //全局中断允许
子程序3
TITLE=外环PID参数表的生成,归一化等内容
Network 1 // 网络标题
// 外环PID 参数归一化

LD     SM0.0
MOVR   0.1, VD216                  //采样时间Ts
MOVR   30.0, VD220                 //积分常数Ti
MOVR   0.0, VD224                  //微分常数Td
MOVR   0.0, VD228                  //积分前值Mx
MOVR   20.0, VD236                 //增益Kc(0.0~100.0)

Network 2 
LD     SM0.0
MOVR   VD236, AC0
/R     100.0, AC0
MOVR   AC0, VD212                  //增益Kc归一化(0.0~1.0)

LD     SM0.0
MOVW   100, VW204
MOVW   VW204, AC0
+I     200, AC0                    //液位量程
ITD    AC0, AC0
DTR    AC0, AC0
/R     400.0, AC0
LDR>=  AC0, 1.0
MOVR   1.0, AC0
LDR<=  AC0, 0.0
MOVR   0.0, AC0
MOVR   AC0, VD204                  //液位给定值Sv归一化(0.0~1.0)
中断程序0
TITLE=模拟量采样、PID控制定时中断程序
Network 1 // 网络标题
// 采样值归一化,填入参数表
LD     SM0.0
XORD   AC0, AC0                    //清空累加器AC0
MOVW   VW200, AC0                  //读入液位值
-I     800, AC0
DTR    AC0, AC0
/R     3200.0, AC0                 //归一化液位值
MOVR   AC0, VD200                  //过程变量当前值PVn归一化(0.0~1.0)
MOVR   VD200, VD232                //更新过程变量前值PV(n-1)


Network 2 
// PID功能实现
LD     SM0.0
PID    VB200, 0                    //调用PID功能,环路编号为0
MOVR   VD208, AC0
*R     3200.0, AC0
TRUNC  AC0, AC0
MOVW   AC0, VW240                  //输出外环PID运算结果(0~3200),作为内环水量次给定


Network 3 //  


Network 4 
Network 5 
Network 6 
Network 7 
Network 8 
Network 9 
Network 10

图片说明:

PID程序用SMB28模拟电位调试无结果输出    PID程序用SMB28模拟电位调试无结果输出    PID程序用SMB28模拟电位调试无结果输出    PID程序用SMB28模拟电位调试无结果输出   

最佳答案

看了一下你的程序,关于VW200的赋值,你采用模拟电位器及AIW4模拟量输入,如果该程序连接有实体模拟量模块,则VW200的值只能是AIW4所赋予的值,而不是模拟电位器给定的值,这个是按程序扫描机制来实现的,如果需要用模拟电位器给VW200赋值,则只需要把这2个程序段对换位置。

提问者对于答案的评价:
谢谢

专家置评

关于pid控制
1、如果PID指令使用不熟悉,建议使用pid向导进行控制,最多可以配置8个回路
2、如果使用指令编程,请您仔细阅读系统手册中关于回路表的定义
       比如说增益,TBL为200,那么增益应该在VD212定义,而不是VD236
       标定过程比较混乱,建议将标定过程全部删除,保证绑定中断与扫描周期相符合,开放中断,在中断中执行pid指令
        从状态表中进行回路表  相关变量填写及修改
           扫描周期   提前设定好,保证和定时中断时间相配合
           比例,积分,微分,建议可以将积分值设定比较大减小积分作用,现场调试时需要根据现场情况调节三个参数
          修改设定值,过程变量值      
          观察输出(TBL为200)VD208是否有0.0-1.0之间的变化
          有输出了,反过来再进行过程变量及给定值及输出的标定工作
          不要将问题复杂化!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月27日
下一篇 2017年6月27日

相关推荐

  • MODBUS地址问题,急急急!

    S7-200使用modbus与多参数仪表通讯,通讯正常只是读取的数据不对,请大家帮我看看,问题出在哪,仪表地址及读取程序如图。我要读取地址为000A的A相电流值,在PLC里是不是应…

    SIMATIC S7-200 2020年10月31日
  • pto脉冲周期最大值

    各位高手们:我想用脉冲输出PTO,通过脉冲周期控制步进电机转速;程序中通过MOV_W指令将脉冲周期送给SMW68,我有个疑惑,就是如果脉冲周期为60000,超过了32767,该怎么…

    SIMATIC S7-200 2020年10月31日
  • 数据存储到电脑

    大家好,想把PLC中变量的值存储到电脑里成EXCLE格式,怎样做呢?用的是CPU224XP CN.谢谢 最佳答案 大家好,想把PLC中变量的值存储到电脑里成EXCLE格式…

    SIMATIC S7-200 2018年12月3日
  • S7-200模拟量程序

    想用EM231 CN 模块监视几个流量计的流量 请问如何编程?程序中要做什么运算处理吗? 问题补充:刚刚接触PLC 很多东西都不懂&nbsp…

    SIMATIC S7-200 2021年7月5日
  • TD400C 如何截图?

    因为设备说明书上要TD400C的显示画面,有没有办法在计算机上截图? 最佳答案 在用向导给TD400C做组态的时候,直接用截屏就可以了。有些小改动,用图片工具处理一下。 提问者对于…

    SIMATIC S7-200 2020年11月1日
  • 请问我这样做一个累计模拟量输出值得子程序,它可以达到累计输出的目的吗?

    流量计仪表是立方米每小时的单位,先除3600得到1秒的值,再每一秒的值相加输出给VD变量,现在不确定是子程序的OUT的临时变量可否作为加法的输入??? 最佳答案 方法是这个方法,我…

    SIMATIC S7-200 2021年7月5日
  • S7-200 SMART MODBUS通讯问题

    与一带485通讯功能的气体检测仪进行modbus通讯,用串口直读能有数据返回,用smart编程软件读则返回错误100 求大佬解决方法 问题补充:按照上面两位大神的建议,改…

    2021年7月5日
  • PLC程序到一固定时间停止工作

    我听问问高手们,PLC的程序能不能做到这一步。比如2007年1月1日写一个程序正常工作,到2009年1月1日,这个程序自动停止,不工作了? 最佳答案 看看时钟指令就知道怎么做了。&…

    SIMATIC S7-200 2021年7月4日
  • 请教大家的plc是怎么接地的

    自己弄了一个小电柜,主要就是控制24V电磁阀,现在有几个接地端搞不清楚,1是plc接地端,2是plc用开关电源接地端,3是电磁阀接地端,4是电磁阀用开关电源接地端,是不是把plc的…

    SIMATIC S7-200 2017年8月16日
  • PTO包络表各个字段的意思

    根据向导生成的PTO包络表里面各个字段代表的意思,我不是很清楚,那位大虾指教一下,SS_SPEED:500MAX_SPEED:5000加速时间和减速时间都是1000ms包络0的操作…

    SIMATIC S7-200 2020年11月1日