回复:自编PID程序

伊默

西门子1847工业学习平台

  • 帖子

    4271
  • 精华

    118
  • 被关注

    220

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

发布于 2005-06-02 15:31:42

0楼

这是我原来做恒压供水时自己写的增量式的PI控制(没有用微分)
INTERRUPT_BLOCK PI:INT0
TITLE=VD2000 过程变量 VD2004 过程前项 VD2008 设定值 VD2012 比例系数 VD2016 积分系数 VD2020 输出
BEGIN
Network 1
// 滤波
LD SM0.0
MOVD 16#080007EE, LD0
MOVD +0, LD4
MOVW +0, LW8
Network 2
LD SM0.0
FOR LW12, +1, +3
Network 3
LD SM0.0
MOVD LD0, LD14
+D +2, LD0
MOVW *LD0, *LD14
MOVW *LD0, LW10
+D LD8, LD4
Network 4
NEXT
Network 5
// 采样
LD SM0.0
MOVW AIW0, *LD0
MOVW *LD0, LW10
+D LD8, LD4
SRD LD4, 2
DTR LD4, VD2000 //过程变量
MOVR VD2008, LD18
-R VD2000, LD18 //偏差
MOVR LD18, VD2040
Network 6
// 手动
LDN I1.5
LDN Q0.0
AN Q0.2
AN Q0.4
AN Q0.6
OLD
MOVR 19200.0, VD2020
CRETI
Network 7
// 死区
LDR> LD18, -200.0
AR< LD18, 200.0
JMP 0
Network 8
// PI
LD SM0.0
-R VD2000, VD2004
*R VD2012, VD2004
+R VD2004, VD2020 //+P
*R VD2016, LD18
+R LD18, VD2020 //+I
MOVR VD2000, VD2004 //过程前值
Network 9
// 上限
LDR> VD2020, 32000.0
MOVR 32000.0, VD2020
Network 10
// 下限
LDR< VD2020, 19200.0
MOVR 19200.0, VD2020
Network 11
// 标准化
LD SM0.0
ROUND VD2020, LD22
DTI LD22, VW2024
Network 12
LBL 0
Network 13
// 输出
LD SM0.0
MOVW VW2024, AQW0
Network 14


END_INTERRUPT_BLOCK
I can do it
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33276条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。