西门子STEP7程序中为什么要用OB35调用PID块
时间:2015-10-29 阅读:567
西门子STEP7程序中为什么要用OB35调用PID块
pidzui早是采用运放等电路器件实现的,是一个连续调节的过程;
但是数字电路里面要实现pid,就要进行“离散化”,你可以查阅数字pid的相关资料。在大学自控专业的相关教材里面对此有详细的理论公式推导。
在plc里面实现pid当然就是个数字pid,其中一个重要的因素是采样时间,说的具体点,就是数字pid——在西门子plc里面就是fb41这个模块需要定时调用!比如放在ob35里面,那么ob35(默认100ms)的执行周期就是数字pid的采样时间,这个100ms是数字pid运算公式里面的一个重要参数!所以,把fb41放在ob1里面执行,表面看也是可以执行的,但运算结果其实是偏离了理论目标。由于ob1扫描周期不固定,所以结果很难预料。单说运行是可以的,但用OB35调用,可以有好的控制精度不是说非要作在OB35里,而是指从OB35调用主要是0B35以固定周期运行,数字化PID的采样周期T必须是等间隔的,所以要用定时中断来触发。PID在定时中断中执行是因为定时中断准确,是以设定的周期执行的,除非有更高优先级的中断同时发生.而主程序的执行周期不是定长的,在主程序中的定时器的精度也受扫描周期的影响.OB35中断周期:按所设定的时间间隔产生中断。即采样周期: 常指在周期性的采样系统中,当对一模拟量进行采样时,两次采样之间的时间间隔。
原理上,PID 的调节节奏应该与其采样周期一致,这是数学模型应与物理过程一致的要求。这也就是 FB41要在 OB35 中周期调用且 OB35 的周期要与 FB41采样周期一致的原因。当然,在 OB1 或其他 FC、FB 中调用 FB41也是可以的,此时将 OB1 参数区中扫描周 期作为 FB41 的采样周期。
FB 41 "CONT_C"
- 为了保证执行频率一致,块应当在循环中断 OB (例如. OB35)中调用。
- "CYCLE" 参数对应的是扫描时间。必须将程序块调用的间隔时间赋值在这里 ( 例如基于 OB35 的时间 )。
- 缺省状态下为手动模式 (MAN_ON=true)。自动回路被中断,在MAN参数下输出控制值。
- 为了确保手自动的无扰切换,在手动模式下至少保证两次块调用的输出时间。
- 当 CPU 重新启动, 参数 "COM_RST" = true 将引导块的执行。
- 参数 "COM_RST" 中断PID控制器的执行。
- FB 42 "CONT_S"
- 为了保证执行频率一致,块应当在循环中断 OB (例如. OB35) 中调用。
- "CYCLE" 参数对应的是扫描时间。必须将程序块调用的间隔时间赋值在这里 ( 例如基于 OB35 的时间 )。
- 缺省状态下为手动模式 (LMAN_ON=true)。
- 当 CPU 重新启动, 参数 "COM_RST" = true 将引导块的执行。
- 参数 "COM_RST" 中断控制器的执行。
- 参数 "PULSE_TM" 和 "BREAK_TM" 被设置为 "CYCLE" 参数的整数倍。
- FB 43 "PULSEGEN"
- 为了保证执行频率一致,块应当在循环中断 OB (例如. OB35) 中调用。
- 当 CPU 重新启动, 参数 "COM_RST" = true 将引导块的执行。
- "CYCLE" 参数对应的是扫描时间。必须将程序块调用的间隔时间赋值在这里 ( 例如基于 OB35 的时间 )。
- FB43 可以和 FB41 结合使用, 但是与 FB42 功能不同。
- 参数 "PER_TM" 必须从 PID 控制器 (FB41) 上设置扫描时间。
- FB41 的调用时间通过时钟分配器完成 (参考 FB43 在线帮助)。
注意:
由于 OB1 不能保证不变的循环时间,所以不能为 "CYCLE" 提供明确的参数。一旦 "CYCLE" 参数不能和扫描时间保持一致,那么基于时间的控制参数(例如. TI, TD)会看起来很快或者很慢。