回复:s7-200 PID求解

tomyong

  • 帖子

    9
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2013-02-26

普通 普通 如何晋级?

发布于 2013-02-27 18:48:01

2楼

S7-200自带的PID,实在不好用,存在的问题我就不多说了,搜索一下就知道了,我这里有个自己写的,仅供参考TITLE=PID 计算
Network 1 // 为保证可调节度,Kc,Ti, Td 均为整数,Kc要缩小100倍进行运算,Ti,Td 要缩小10倍进行运算
// PID 计算
LD SM0.0
LPS
-I LW2, LW0
ITD LW0, LD28
+D LD28, LD18 // PID_SumError += Error
//------------
AD>= LD18, 200000000
MOVD 200000000, LD18 // 溢出
LRD
AD<= LD18, -200000000
MOVD -200000000, LD18 // 溢出
LRD
//------------
MOVD LD28, LD24 // OutPut = Error ;

MOVD LD18, AC0
*D 10, AC0 //PID_SumError * 10
ITD LW6, AC1
/D AC1, AC0
+D AC0, LD24 //OutPut +=SumError /TI;

//------------
AD>= LD24, 20000000
MOVD 20000000, LD24 // 溢出
LRD
AD<= LD24, -20000000
MOVD -20000000, LD24 // 溢出
LRD
//------------
*D 10, LD24 // OutPut * 100 ;

MOVD LD28, AC0
-D LD14, AC0
ITD LW8, AC1
*D AC1, AC0
+D AC1, LD24 //OutPut +=(Error - LastError) * TD ;


///D 100, #TEMP_OUT:LD20 // OutPut / 100 ;

ITD LW4, AC0
*D AC0, LD24
/D 100, LD24 //OutPut = OutPut * KP;

/D 10, LD24 // OutPut / 100 ;

MOVD LD28, LD14 //LastError = Error;

DTI LD24, LW22

//超上限
ITD LW12, AC0
AD> LD24, AC0
MOVW LW12, LW22
-D LD28, LD18 //PID_SumError -= Error

LPP
//超下限
ITD LW10, AC0
AD< LD24, AC0
MOVW LW10, LW22
-D LD28, LD18 //PID_SumError -= Error

CRET
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33259条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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