pid 的输出不受控,一直是最大值,然后只要超过设定值输出就为0. 点击:5515 | 回复:6



黄家磊

    
  • 精华:0帖
  • 求助:29帖
  • 帖子:35帖 | 80回
  • 年度积分:0
  • 历史总积分:177
  • 注册:2015年8月01日
发表于:2016-03-20 08:20:28
楼主

pid 的输出不受控,一直是最大值,然后只要超过设定值输出就为0.

各位前辈帮看下:主程序用电位器模拟VW104液位反馈,子程序进行了设置,中断里面执行PID,下面是我的程序。

主程序  模拟电位器测试PID程序段模拟AI4W液位,测试外环用

Network 1 

LD     SM0.1

MOVB   100, SMB34                  //设定定时中断时间为100ms

ATCH   INT_0:INT0, 10              //连接INT0到定时中断0(事件10)

ENI   

Network 2

LD     SM0.0

MOVB   SMB28, AC0                  //SMB28代表模拟电位器0位置的数字值范围是0~255

BTI    AC0, AC0                    //BTI字节转换为整数指令

ITD    AC0, AC0                    //整数转换为双整数

DTR    AC0, AC0                    //双整数转换为实数,进行除法运算

/R     1.275, AC0                  //(0~255)/1.275=(0~200),调整SMB28数字值范围以便于

TRUNC  AC0, AC0                    //全部以整数形式与要模拟的量AIW 0~4000对应

DTI    AC0, AC0

*I     16, AC0                     //AC0范围调整至0~3200

MOVW   AC0, VW104                  //将AC0复制给相应模拟量,此处为VW104

子程序TITLE=外环PID参数表的生成,归一化等内容

Network 1 // 网络标题

// 定义外环PID 参数表

LD     SM0.0                       //外环PID参数表元素赋值

MOVR   0.8, VD216                  //对采样时间Ts赋值Ts=0.1写入PID参数表中地址VD216

MOVR   1.0, VD220                  //对积分常数Ti赋值Ti=30.0写入PID参数表中地址VD220

MOVR   0.0, VD224                  //对微分常数Td赋值Td=0.0写入PID参数表中地址VD224

MOVR   0.0, VD228                  //对积分前值Mx赋值Mx=0.0写入PID参数表中地址VD228

MOVR   20.0, VD236                 //对增益Kc赋值Kc=20.0(0.0~100.0)

 

Network 2 

// 增益Kc 归一化

LD     SM0.0

MOVR   VD236, AC0                  //读入增益KC值进行归一化处理

/R     100.0, AC0                  //Kcm=Kc/100

MOVR   AC0, VD212                  //增益Kc归一化(0.0~1.0)写入PID参数表中地址VD212

 

Network 3 

// 给定值Sv 归一化

LD     SM0.0

MOVW   50, VW408                   //液位给定工程量设置为50mm

MOVW   VW408, AC0                  //读入液位给定值VW408进行归一化处理

+I     200, AC0                    //Sv-(-200)=Sv+200(给定值-液位下限)

ITD    AC0, AC0                    //整数转换为双整数

DTR    AC0, AC0                    //双整数转换为实数,进行实数除法运算

/R     400.0, AC0                  //(Sv+200)/400 (400为液位量程,对液位给定值归一化0~1)

LDR>=  AC0, 1.0                    //当设定值归一化之后大于1,进行限定,按1.0处理

MOVR   1.0, AC0                    //将1.0写入AC0

LDR<=  AC0, 0.0                    //当设定值归一化之后小于0,限定,按0.0处理

MOVR   0.0, AC0                    //将0.0写入AC0

LD     SM0.0

MOVR   AC0, VD204                  //液位给定值Sv归一化赋值给VD204(0.0~1.0)

 

 

 

 

中断程INT0序TITLE=模拟量采样、外环PID计算

Network 1 // 网络标题

// 采样值归一化,填入参数表

LD     SM0.0

XORD   AC0, AC0                    //清空累加器AC0

MOVW   VW104, AC0                  //读入反馈量液位值VW104(800~4000)

-I     +800, AC0                   //调整VW104范围至0~3200

ITD    AC0, AC0                    //整数转换为双整数

DTR    AC0, AC0                    //双整数转换为实数,进行实数除法运算

/R     3200.0, AC0                 //归一化液位值

MOVR   AC0, VD200                  //过程变量当前值PVn归一化(0.0~1.0)写入PID参数表中地址VD200

Network 2 

// PID功能实现

LD     SM0.0

PID    VB200, 0                    //调用PID功能,环路编号为0

MOVR   VD200, VD232                //更新过程变量前值PV(n-1)

MOVR   VD208, AC0                  //PID运算结果VD208Mn=(0.0~1.0)

-R     0.5, AC0                    //将范围调整至(-0.5~+0.5)

*R     3200.0, AC0                 //外环控液位PID输出值转换为-1600~1600,作为内环流量次给定

TRUNC  AC0, AC0                    //对AC0进行取整操作

DTI    AC0, AC0                    //双整数转换为整数

MOVW   AC0, VW240                  //输出外环PID运算结果,作为内环水量次给定(-1600~+1600)

CRETI





领域

  • 精华:8帖
  • 求助:80帖
  • 帖子:481帖 | 3926回
  • 年度积分:915
  • 历史总积分:140763
  • 注册:2008年2月29日
发表于:2016-03-20 09:25:57
1楼

楼主使用的是S7-200 SMART吗?如果是,SMART的PID还不稳定,不推荐使用

黄家磊

  • 精华:0帖
  • 求助:29帖
  • 帖子:35帖 | 80回
  • 年度积分:0
  • 历史总积分:177
  • 注册:2015年8月01日
发表于:2016-03-20 09:27:18
2楼


回复内容:

对: 领域 楼主使用的是S7-200 SMART吗?如果是,SMA... 内容的回复!

S7-200CPU224呢,前辈。pid 的输出不受控,一直是最大值,然后只要超过设定值输出就为0.

领域

  • 精华:8帖
  • 求助:80帖
  • 帖子:481帖 | 3926回
  • 年度积分:915
  • 历史总积分:140763
  • 注册:2008年2月29日
发表于:2016-03-20 09:29:59
3楼

转换梯形图,监控页面看看

黄家磊

  • 精华:0帖
  • 求助:29帖
  • 帖子:35帖 | 80回
  • 年度积分:0
  • 历史总积分:177
  • 注册:2015年8月01日
发表于:2016-03-20 09:31:55
4楼


回复内容:

对: 领域 转换梯形图,监控页面看看 内容的回复!

用语句表写的,转换实现不了前辈

领域

  • 精华:8帖
  • 求助:80帖
  • 帖子:481帖 | 3926回
  • 年度积分:915
  • 历史总积分:140763
  • 注册:2008年2月29日
发表于:2016-03-20 09:40:23
5楼


引用 黄家磊 的回复内容: 回复内容:对: 领域  转换梯形图,监控页面看看 内容...

那把PID调节面板打开看看

黄家磊

  • 精华:0帖
  • 求助:29帖
  • 帖子:35帖 | 80回
  • 年度积分:0
  • 历史总积分:177
  • 注册:2015年8月01日
发表于:2016-03-20 09:44:13
6楼


回复内容:

对: 领域 引用 黄家磊 的回复内容: 回复内容:对: 领域  转... 内容的回复!

您选择的 PLC 类型不支持 PID 调节。单击 通信...按钮,改动 PLC 类型。

前辈,咋整,有救么,在线等


热门招聘
相关主题

官方公众号

智造工程师