有些工程项目中可能需要根据工艺要求在不同的时刻投入、或者退出 PID 自动控制;退出 PID 自动控制时,控制器的输出部分可以由操作人员直接手动控制。这就是所谓的 PID 手动/自动切换。
PID 控制处于自动方式时,PID 控制器(S7-200 SMART 中的 PID 调节功能)会按照 PID 算法,自动通过输出的作用使过程反馈值跟随给定值变化,并保持稳定。这是一个自动的闭环控制系统。操作人员可以根据现场工艺的要求,改变给定(即设定值)的值。
PID 控制处于手动方式时,PID 控制器不再起自动计算的作用。这时,控制回路的输出是由操作人员手动控制、调整,由操作人员观察现场的控制效果,从而构成人工闭环控制。
所谓 PID 自动/手动控制,就是看控制系统的输出是由 PID 控制器自动控制,还是由操作人员手动控制。
有些控制系统的执行机构不能承受较大的冲击,这就要求在进行 PID 自动/手动切换时,保持控制输出的稳定。这就是要求无扰动切换。
为了达到 PID 自动/手动控制的无扰动切换,需要在编程时注意一些相关事项。下面分别就直接使用 PID 指令编程,和使用 PID 向导编程两种情况作一介绍。
直接使用 PID 指令块编写 PID 控制程序时,可以简单地使用“调用/不调用”指令的方式控制自动/手动模式。因为 PID 指令本身已经具有实现无扰动切换的能力,此时在 PID 指令控制环节之外编程没有多大必要。
PID 指令的 EN 输入端使能(为“1”)时,我们认为是自动控制模式;EN 输入端未使能(为“0”)时,我们认为是手动控制模式。
PID 指令本身有一个“能流历史状态位”,以记录指令的状态切换。在 EN 端从“0”变为”“1”时,PID 指令认为这是从“手动”模式向“自动”模式切换。PID 指令此时会自动执行一系列动作,以配合无扰动切换:
使设定值等于当前反馈值可以避免出现偏差,使之不存在调整的要求;当然如果有工艺要求,也可以后续调整设定值。其他的动作都是为了使 PID 在后续的操作中不改变输出的值。
在编程时要注意:
使用 PID 指令向导编程时,指令向导会自动调用 PID 指令,并且编写外围的控制变量标准化换算、定时采样等功能。用户在使用 PID 指令向导时,需要在用户程序中用 SM0.0 调用指令向导生成的子程序(如 PIDx_CTRL 子程序)。PID 向导可以生成带自动/手动切换功能的子程序,这个子程序使用一个数字量点为“1”、“0”的状态来控制是否投入 PID 自动控制。
到目前为止(STEP 7-Micro/WIN SMART),使用 PID 向导生成的子程序时,由于用户程序不能直接使用 PID 指令,它的无扰切换能力因为隔了外壳子程序,所以受到了局限。如果对无扰切换要求比较严格,需要另外编一些程序加以处理。
考察如下 PID 控制子程序。
图 1. PID 向导生成的指令
图中:
要实现无扰动切换,必须:
为此,可编写类似下图所示的程序,放在 PID 控制子程序之前:
图 2. 无扰切换处理程序
图中:
上述程序中的 Scale_I_to_R 就是量程变换指令库中的子程序,如何将该指令库导入到Micro/WIN SMART 中可参见如何将Micro/WIN 的库文件导入到Micro/WIN SMART中。这是为了解决过程反馈与设定值之间的换算问题。用户也可以自己编程换算,或者根据反馈与给定的取值范围决定是否需要换算。
为了更好地理解 PID向导的自动/手动无扰切换的使用,可参考下面的例程。
使用环境: STEP 7 Micro/WIN SMART V2.3.2
实现功能: PID向导的自动/手动无扰切换
本例程仅供参考,程序中的CPU版本、类型可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。