技术论坛

 回复:关于PID调节功能块FB41总结

返回主题列表
作者 主题
Qxlyshy
侠客

经验值:674
发帖数:22
精华帖:0
楼主    2017-06-19 16:28:36
主题:关于PID调节功能块FB41总结

在刚接触PID时候感觉很头疼,FB41功能块繁多的输入输出以及帮助里面非常专业的解释看得我眼冒金星,头昏眼花,真的是不知道如何入手,后来使用几次以后发现,原来只是填填变量的事(我们的PID就是简单的控制,还没有涉及切换、加泵以及减泵等复杂问题),正好最近有时间,就汇总了一下FB41的端子说明(基本来自大家技术论坛的分享),就当做个笔记吧。

1、先分享技术大牛们讨论帖

软件PID功能块的使用

http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=707648&s_id=0&num=127


西门子PID调节应用及技巧探讨

http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=1054387&s_id=0&num=0


使用SFB41/FB 41, SFB42/FB42,SFB43/FB43实现PID控制

https://support.industry.siemens.com/cs/document/83102537/使用sfb41-fb-41-sfb42-fb42-sfb43-fb43实现pid控制?dti=0&lc=zh-CN


2、FB41的方框图(FB41的端口作用逻辑图,看懂这个基本就都会了)

3、规格化(个人感觉不是必须要规格化,整个FB41功能块统一量纲就行了)

PID参数中重要的3个变量,给定值(SP_INT),反馈值(PV_IN)和输出值(LMN)都是用0.0~100.0之间的实数表示。

因此,需要将模拟输入转换为0.0~100.0的数据,或将0.0~100.0的数据转换为模拟输出,这个过程称为规格化  

规格化的方法:(即变量相对所占整个值域范围内的百分比 对应与27648数字量范围内的量)

对于给定值(SP_INT)和反馈值(PV_IN),执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT

对于输出变量 ,执行:LMN*27648/100,然后将结果取整传送给PQW即可。

4、一般使用循环中断组织块调用FB41,一般不用OB1,因为OB1的扫描周期不是确定的。

5、FB41的输入输出参数

In

<1、COM_RST:BOOL,初始化FB41。设置为1时,积分微分的累计清零。不会自动复位,需要程序复位COM_RST。一般使用如下:

可以在OB100、OB101、OB102里面写两句话
AN “COM_RST” //如果初始化标志位是0
S “COM_RST” //将初始化标志位置1
在OB1的最后写上两句话,复位初始化标志位
A “COM_RST” //如果初始化标志位1
R “COM_RST” //将初始化标志位复位

PID的初始化可以通过在OB100中调用一次,将参数COM-RST置位,当然也可在别的地方初始化它,关键的是看程序需要;

<2、MAN_ON:BOOL,设置为0为自动调整;设置为1为手动调整;这里会涉及到一个自动和手动模式的切换问题:无扰动切换

PID调节器在自动→手动、或手动→自动的瞬间,PID的输出是不变化的。

从手动切换到自动,自不用说,但是从自动到手动会出现明显跳动,一般可以这样处理:从自动切换到手动增加一个斜坡处理。将自动时的输出换算成比例值,一直加载在MAN口上,切换后,通过斜坡,将MAN口上的值由原来的值过度到手动比例设定值。
此端口和<11处的MAN口配合使用。

<3、PVPER_ON:BOOL,过程值选择,此值与PV_IN和PV_PER有关系

设置为1时,直接将PIW(监测实际值端口)输入PV_PER口

设置为0时:将转化后、滤波后且规格化后(等处理过的)数据输出PV_IN口

<4、P_SEL、I_SEL以及D_SEL:BOOL,比例、积分、微分作用的选择,设置为0,相应部分不起作用。

<5、INT_HOLD:BOOL,积分保持,设置为1时,积分不累加,一般不设置。

<6、I_ITL_ON:BOOL,积分初值给定;

    I-ITLVAL:REAL,积分初值。

    当I_ITL_ON设置为1时,使用I-ITLVAL变量积分初值;当I_ITL_ON设置为0时,积分初始值为0。一般当发现PID功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值;此功能很少用到。

<7、CYCLE:TIME,PID采样周期。

<8、SP_INT:REAL,PID的设定值。

<9、PV_IN :REAL,PID的反馈值。数据类型为Real,显然是处理后的数值,见<3。

<10、PV_PER:WORD,PID的反馈值。数据类型为Word,显然直接PIW输入,见<3。

<11、MAN:Real,手动模式的输入端口。

<12、GAIN:REAL,比例增益。

<13、TI:TIME,积分时间。

<14、TD:TIME,微分时间。

<15、TM_LAG:TIME,多长时间开启微分,由于微分会削弱达到稳定值时间,可以延时启动微分。通常不设置。

<16、DEADB_W:REAL,死区宽度。现场监控达到设定值后,并不稳定到设定值,如果出现小范围浮动,会出现执行器来回动作问题,可以考虑用死区来降低灵敏度。此值为百分数。

<17、LMN_HLM、LMN_LLM:REAL,输出值上下极限。此处需要搭配<19处使用,即保证LMN_HLM*LMN_FAC=100,程序中默认LMN_HLM为100.0,LMN_FAC为1.0,所以可以不用去设置。如果想设置,需要保证上面的公式。

<18、PV_FAC、PV_OFF:REAL,PV_FAC=传感器的量程/100。只有在PVPER_ON为1时起作用,目的为统一单位;为零时,需要规格化,单位已经统一,所以此处无用。

<19、LMN_FAC、LMN_OFF:REAL,输出值的量程。

<20、DISV:REAL,允许的扰动量,串级系统使用,一般不设置;

OUT

<1、LMN:REAL,输出实际值占满量程的百分比。

<2、LMN_PER:WORD,PQW输出

<3、QLMN_HLM、QLMN_LLM:BOOL,QLMN_HLM:输出最大值时输出1;QLMN_LLM:输出最小值时输出1,可以作为工、变频切换(例如一台泵工频,一台泵要求变频,调节恒压时)的点位来用。

<4、LMN_P、LMN_I、LMN_D:REAL,PID输出中P、I、D的分量。三者的和为输出值。

<5、PV:REAL,实际压力值

<6、ER:REAL,偏离值,设定值与实际值之差。

以上部分加入了自己的想法,如有错误望各位大侠批评指导。



试试才知道,你是否是我的想要
看雪001
至圣

经验值:22507
发帖数:2416
精华帖:87
3楼    2017-06-21 09:08:30
精华帖  主题:回复:关于PID调节功能块FB41总结

(给链接的时候,在链接后面打一个回车键,这样读者可以直接点开链接网页。)

PID是自动控制,所谓“自动”即周期性采样、计算、输出,它是以时间为X轴,dt微分循环持续的调整。抛开手动控制、工程量转换等部分不谈,那些模块都是锦上添花,“乱花渐欲迷人眼,浅草才能没马蹄。”看住马蹄子才是紧要!

 

 

“马蹄子”就是控制算法。PID算法是个通用公式,虽然每个人对算法中变量的定义可能不一样,但这个公式一定是相同的,不然它就不叫PID了,理解PID就必须吃透这个公式。

有人发明了一套调PID的口诀,不讲原理只讲怎样做,是舍本逐末,硬是把一套《唐诗剑法》整成了“躺尸剑法”。结合PID控制算法,再来讲口诀就更合适。比如“曲线波动周期长,积分时间再加长 ”,从公式上看积分时间与积分作用成反比,曲线波动周期长说明积分作用过度了,要减小积分项的值就要把分母增大,也即把积分时间加大。

“<4、LMN_P、LMN_I、LMN_D:REAL,PID输出中P、I、D的分量。三者的和为输出值。”调整PID参数时,可以利用参数赋值工具看曲线,也可以监控数据块这三个输出值的变化情况

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