详细介绍
西门子SM1234模拟量模块4AI/2AO控制系统通过模拟输入模块对发酵温度进行采集,经过 plc程序处理后,通过模拟输出模块调节温度调节阀开度对发酵温度进行控制。
西门子s7300 plc通过profibus电缆与上位机(工控机)建立通讯,进行控制信息和发酵数据的交换。在上位机中通过西门子wincc v6.0软件对发酵过程进行全程监控,并存储相关数据。
图2 发酵温度控制硬件结构
4 发酵温度fuzzy-pid 控制器的软件实现
4.1 发酵温度fuzzy- pid控制算法
根据图1所示,得到fuzzy-pid控制算法框图如下:
发酵温度控制算法以温度偏差e为选取对象:当|e|>3℃时,控制量u=umax;当0.5℃≤|e|≤3.0℃时,系统调用 plc中的pid控制模块;当|e|<0.5℃时,系统调用plc中的fuzzy模块。
4.2 基于plc的温度pid控制器设计
当发酵液温度偏差的值小于0.5℃时,plc程序启动pid控制“闭环控制系统功能块”sfb41,通过对其参数表的设置可以方便的实现pid运算。利用模拟量输入模块采集发酵液的温度数据,执行机构(温度调节阀)由模拟量输出模块进行控制。
图3 fuzzy-pid控制算法框图
如图4所示,系统功能块sfb41的背景数据块设为db2。 考虑到发酵液温度变化的滞后性,温度采样周期设为10秒钟,温度设定值和实际采样值分别存放在db3.dbd0和db3.dbd4中。pid 控制参数p、i、d存放在db3.dbd8、db3.dbd12和db3.dbd16中。为防止控制输出在临界点频繁动作,设置死区宽度为0.5℃。 pid控制的输出传送到温度调节器对应的输出字节pqw304[4]。
图4 基于plc的pid控制程序
4.3 基于plc的温度 fuzzy控制器设计西门子SM1234模拟量模块4AI/2AO
当发酵液温度偏差的值在0.5℃和3.0℃之间时,plc程序启动fuzzy控制功能块。在fuzzy控制器原理图(图5所示)中,e 为偏差,△e为偏差变化率;ke、k△e和ku别为偏差量化因子、偏差变化率量化因子和输出量变化因子。
图5 fuzzy控制器原理图
在海洋生物酶发酵温度fuzzy控制中,选取温度偏差e和温度偏差变化率△e构成二维模糊控制器。
根据发酵温度控制目标和经验,设定e、△e和μ的模糊论域及模糊词集:输入、输出fuzzy控制论域均量化设定 为七档{-3,-2,-1,0,1,2,3},其模糊词集均设{nb,nm,ns,zo,ps,pm,pb};模糊集合的隶属函数取为三角型隶属函数,通 过隶属函数可直观的得到e和△e的赋值表;fuzzy控制规则设为if e is x and △e is y then u is z;利用输入变量的赋值表及模糊控制规则,经过合成推理可得到发酵温度fuzzy控制查询表。
基于plc的fuzzy控制算法流程如图6所示,控制算法中,fuzzy控制查询表的plc程序设计 zui为关键,在这里我们采用plc 的间接寻址来完成fuzzy控制输出u的查询功能。
图6 基于plc的fuzzy控制算法流程图西门子SM1234模拟量模块4AI/2AO
将发酵温度fuzzy控制查询表的输出控制量u按先行后列,由左至右的顺序存储到数据块db1中,由此,查 询顺序可以由地址(△e+3)×7+(e+3)决定,基于plc的查询表程序如图7所示。
通过运算可得fuzzy控制输出u的地址,并存放在md152中。数据块db1的首地址存在在md0中,利用 plc间接寻址得到u的具体数据,将其存放在md8中。
根据公式u=u×ku得到输出实际值u,并赋值给温度调节阀对应的模拟量输出字节,达到精确控制 温度的目的。
图7 基于plc的查询表程序
4.4 发酵液温度控制算法效果分 析比较
通过安装在工控机上的监控软件wincc v6.0,可以得到各控制策略下发酵液温度的响应曲线,传统pid控制响应曲线和fuzzy-pid控制响应曲线分别如图8、图9所示。
图8 发酵液温度pid控制响应曲线
图 9 发酵液温度fuzzy-pid控制响应曲线
图中纵坐标为温度阶跃信号及系统响应信号值,横坐标为系统响 应时间。对响应曲线品质分别进行分析:传统pid控制超调量较大,约为 0.2,过渡时间约为200秒;fuzzy-pid控制超调量较小,约为0.3,过渡时间约为100秒。
由控制响应曲线可以清晰的看到,相对于传统pid控制,发酵液温度采用fuzzy-pid控制的响应 曲线具有较小的超调量,且调节时间较短,对被控对象数学模型的依赖性较小,其控制品质明显好于传统pid控制。