位置闭环控制

大家好!
         我想用S7-300PLC的FB41作一个位置闭环,要求到设定位置就以零速度停止运行。我使用绝对编码器实时反馈液压马达的运行位置,S7-300PLC通过总线给比例阀放大器命令值,控制比例阀的开口度,从而控制液压马达运动速度,精度在5mm以内即可,但要求零距离(到目标距离)以零速度将马达停下来。我想用FB41来做,但不知道如何做PID控制,FB41是模拟量PID控制,我的所有数值都是通过总线得到或发出的纯数据值,能不能使用FB41?如何使用FB41?或采用别的控制方式。请有做过相关项目的提供意见。
        第一次做这样的控制,没有相关经验,PID以前没有用过,请大家给我建议或方案!!谢谢!!

最佳答案

用Step7中SFB41/FB 41、SFB42/FB42、SFB43/FB43实现PID控制
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=1231&loginID=&srno=&sendtime=
具体做法:S7300 PLC通过OB35调用FB41功能块实现PID控制,步骤为: 
建立OB35组织块,插入PID控制功能块FB41(从插入选项中,点击标准库,在里面选PID控制里面的FB41——之前我就是因为没用过标准库,在网上看到插入FB41,我就自己建了一个FB41,结果什么也没有,当然没有参数设置了。——插入时,会要求你填写一个DB块的名称,我输入DB20,然后系统会自动给出一个梯形图的块,同时产生一个DB20数据块,里面的参数具体的含义,我这里把用到的给注释了一下,还有很多没用到的参数,你如果要弄清楚的话,网上有很多,就不说了哈)
对其参数进行设置。大多数参数采用系统默认值,配置程序如下: (前面几句赋值,是我把它转化为语句表时,它自动生成的,你自己试一下就晓得了)
A M 300.0 
= L 20.0 
BLD 103 
A M 300.1 
= L 20.1 
BLD 103 

CALL "CONT_C" , DB20 
COM_RST :=L20.0 //重新启动PID,在OB100中对M300.0置位 
MAN_ON :=L20.1 //手动与自动切换,当MD300.1为1时是手动 
PVPER_ON:= //默认为0,设为1时表示反馈量不经规格化处理直接采用 
P_SEL := //比例选择,默认为on,表示选择P有效 
I_SEL := //积分选择,默认为on,表示选择I有效 
D_SEL := //微分选择,默认为off,表示选择P无效 
CYCLE :=T#200MS //PID采样周期 
SP_INT :=MD306 //设定压差,通过触摸屏设置 
PV_IN :=MD310 //反馈值,经PLC程序规格化后给MD310 
PV_PER := //未经规格化的反馈值 
MAN :=MD320 //手动状态下的输入值,由触摸屏输入 
GAIN :=MD324 //比例增益,由触摸屏输入 
TI :=MD328 //积分时间,由触摸屏输入 
DEADB_W :=MD340 //死区宽度,默认值为0,调整时由触摸屏输入 
LMN :=MD350 //PID输出 
…… //其它参数均采用系统默认 
NOP 0 
由于反馈值和输出值都是0-100%之间的实数,所以要将其规格化:输入时,变量*100/27648,赋值给PV-IN和SP-INT,输出时,LMN*27648/100,取整。

提问者对于答案的评价:
回答不错

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日
下一篇 2018年12月2日

相关推荐