OB35的执行周期与PID的输入参数采样时间CYCLE的关系 在西门子的文件“调用(S)FB41, (S)FB42 和 (S)FB43 功能块并赋值时应注意什么?”中对FB 41的说明如下:“The controller should be called in a cyclic interrupt OB (e.g. OB35).The "CYCLE" parameter corresponds to the scan time. ”,这段文字指出FB 41的采样时间CYCLE应等于OB35的扫描周期。
有人认为CYCLE是真正执行FB 41的时间间隔,CYCLE可以是OB35扫描周期的整倍数。真的是这样吗?如果这个结论成立,首先令CYCLE和OB35扫描周期相等(见下面的左图),然后保持CYCLE不变,将OB35的扫描周期减小一倍(见下面的右图),PID被控对象的波形应基本上不变。事实上,两条曲线的衰减震荡周期减小了约一倍,超调量基本上未变。图中的方波为给定曲线。
将CYCLE和OB35扫描周期同时减小一倍,PID被控对象的波形基本不变(见下面的左图)。

上述波形是用PLCSIM仿真得到的,用FB 100模拟两个惯性环节组成的被控对象。真实的硬件被控对象的闭环实验是否如此,有条件的网友可以做做实验。
建议在OB35中调用FB 41时,设置CYCLE等于OB35的扫描周期。
在FB 41配合FB 43(脉冲发生器)使用时,调用FB 41的周期应为调用FB 43的周期的整倍数,最好大于20倍以上。
设置OB35的循环周期为20ms,每20ms调用一次FB 43。除了设置FB 41的CYCLE为500ms以外,在OB35中用下面的程序来确保每500ms调用一次FB 41:
L "中断计数器"
+ 1
T "中断计数器"
L 25
>=I
JCN m001 //未中断25次(未到500ms)时跳转
L 0
T "中断计数器"
CALL "CONT_C" , "PID_DI" //每500ms调用一次FB 41
……
m001: CALL "PULSEGEN" , DB43 //每20ms调用一次FB 43
……