1 用pid指令向导生成pid程序
用系统块设置cpu的型号,双击项目树的“向导”文件夹中的“pid”,打开“pid回路向导”对话框,在依次出现的页面中完成下列操作:选择要组态的回路0,设置增益、采样时间、积分时间和微分时间;过程变量pv的类型为单极性,过程变量和回路设定值sp的上、下限均采用默认值;回路输出量的类型为默认的模拟量输出,单极性,范围为0 ~ 27648。
在“报警”页设置是否启用过程变量pv的上限报警、下限报警和模拟量输入错误报警。采用pid向导创建的子程序的默认名称,选中“添加pid的手动控制”多选框。在“存储器分配”页设置用来保存组态数据的120b的v存储区的起始地址为vb200。
“组件”页显示组态生成的项目组件。单击“生成”按钮,自动生成循环执行pid功能的中断程序pid_exe、第0号回路的初始化子程序pid0_ctrl、数据页pid0_data和符号表pid0_sym。
2 使用子程序模拟被控对象
要学习整定pid控制器参数的方法,必须做闭环实验,开环运行pid程序没有任何意义。用硬件组成一个闭环需要cpu模块、模拟量输入模块和模拟量输出模块,此外,还需要被控对象、检测元件、变送器和执行机构。下面介绍的pid闭环实验只需要一块cpu模块,被控对象用作者编写的名为“被控对象”的子程序来模拟,被控对象的数学模型为3个串联的惯性环节,其增益为gain,其传递函数为gain/[(tim1s+1) (tim2s+1) (tim3s+1)],tim1 ~ tim3为惯性环节的时间常数。使用模拟的被控对象的pid闭环示意图如图1所示。图中被控对象的输入值inv是pid控制器的输出值,disv是系统的扰动输入值。被控对象的输出值outv作为pid控制器的过程变量(反馈值)pv。
图1 采用模拟被控对象的pid闭环示意图
pid控制器的难点在于pid参数的整定。图2和图3是《s7-200 smart plc编程及应用》中的例程“pid闭环控制”的主程序和中断程序。可以用这个例程和编程软件中的pid整定控制面板学习pid的参数整定方法。t37和t38组成了方波振荡器,用来提供周期为60s、幅值为20.0%和70.0%浮点数的方波设定值。
用一直闭合的sm0.0的常开触点调用pid向导生成的子程序pid0_ctrl,后者初始化pid控制使用的变量,cpu按pid向导中组态的采样周期调用pid中断程序pid_exe,在pid_exe中执行pid运算。
pid0_ctrl指令的输入参数pv_i是数据类型为int的过程变量(反馈值),setpoint_r是以百分比为单位的实数设定值(sp)。bool变量auto_manual为“on”时,该回路为自动模式(pid闭环控制),反之为手动模式。manualoutput是手动模式时标准化的实数输入值(0.00 ~ 1.00)。output是pid控制器的int型输出值,bool变量highalarm是上限报警。
图2 pid闭环控制的主程序
pid0_ctrl的输入变量“过程变量”是子程序“被控对象”(见图3)的输出值,pid0_ctrl的输出变量“pid输出”是子程序“被控对象”的输入值,这样就组成了图1中的pid闭环。
pid_exe占用了定时中断0,模拟被控对象的中断程序使用定时中断1。两个定时中断的时间间隔均为200ms。刚进入run模式时,sm0.1的常开触点闭合,将定时中断1的时间间隔200ms送给smb35,用atch指令连接中断程序int_0和编号为11的定时中断1的中断事件。
在中断程序int_0中,用一直闭合的sm0.0的常开触点调用子程序“被控对象”(见图3),被控对象的增益为3.0,3个惯性环节的时间常数分别为5s、2s和0s,实际上只用了两个惯性环节。其采样周期cycle为200ms,参数com_rst用于初始化操作。
图3 中断程序int_0
实际的pid控制程序不需要调用中断程序int_0和其中的子程序“被控对象”,在主程序中只需要调用子程序pid0_ctrl,其输入参数pv_i应为实际使用的ai模块的通道地址(例如aiw16),输出参数output应为实际使用的ao模块的通道地址(例如aqw16)。
step 7-micro/win smart的pid整定控制面板(见图4)用图形方式监视pid回路的运行情况,可以用它手动调节pid参数,或用于pid参数自整定。
将例程“pid闭环控制”下载到cpu,令plc为run模式。双击项目树的“工具”文件夹中的“pid整定控制面板”,打开控制面板。令初始化程序pid0_ctrl的输入参数auto_manual(i0.0)为“on”,启动pid控制。选中面板左边窗口中的“loop 0”,可以看到右边窗口用不同颜色显示的pv、sp和pid输出的动态变化的曲线及它们的值,图中的pid控制器的参数kc为增益,ti为积分时间,td为微分时间。
图4 pid整定控制面板
“采样时间”是pid向导中设置的以s为单位的执行pid运算的时间间隔。“调节参数”区给出了cpu中的增益、积分时间和微分时间的当前值,和参数自整定得到的计算值(或手动输入的参数值)。
3 pid参数整定的仿真实验
图5-6 ~ 图5-12是用图5-4和图5-5中的程序和pid整定控制面板得到的曲线。图4的pv曲线的超调量过大,有多次震荡。选中pid整定控制面板中的“启用手动调节”多选框(见图4),在“计算值”列将积分时间由0.03min改为0.1min,增益和微分时间不变。单击“更新cpu”按钮,将键入的参数值下载到cpu。增大积分时间(减弱积分作用)后,图5中pv曲线的超调量和震荡次数明显减小。
图5 pid控制阶跃响应曲线
将图5中的微分时间改为0.0min,其他参数不变。微分时间由0.01min减为0后,图6中响应曲线的超调量和震荡次数增大。可见适当的微分时间对减小超调量有明显的作用。
图6 pi控制阶跃响应曲线
将图5中的微分时间改为0.0min,其他参数不变。微分时间由0.01min减为0后,图6中响应曲线的超调量和震荡次数增大。可见适当的微分时间对减小超调量有明显的作用。
使用这个例程和pid整定控制面板来调整控制器的参数,通过pv曲线的特征观察参数整定的效果,可以迅速地掌握pid参数整定的方法。更详细的信息和参数整定的实例见作者编写的《s7-200 smart plc编程及应用》第2版。该书随书光盘有pid参数手动整定、自动整定的视频教程。