尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

汇川PLC开关量温度PID控制实战:时间比例输出与参数整定

汇川PLC开关量温度PID控制实战:时间比例输出与参数整定 1. 项目缘起与核心需求拆解温度控制这件事说简单也简单说复杂也复杂。简单在于原理无非是“冷了加热、热了停”复杂在于实际工况里加热惯性大、散热条件多变、传感器还有噪声想稳定在某个设定值附近不来回振荡就得靠控制算法。我这次接到的活儿是用汇川PLC做一套温度调节系统执行机构是典型的开关量器件——加热管配接触器或者固态继电器也就是说PLC的输出只有“通”和“断”两种状态没有模拟量输出。这就带来一个很现实的问题开关量控制天然是“bang-bang”式的要么全功率加热要么完全停止怎么让它表现得像连续调节一样平滑答案就是PID加开关量输出业内常叫“时间比例输出”或者“PWM式开关控制”。核心思路是把PID运算出来的连续控制量转换成一个周期内的导通时间占比用占空比去驱动开关器件。比如控制周期设成10秒PID算出输出60%那就让加热器导通6秒、断开4秒。从宏观上看加热功率就是60%等效于模拟量调节但硬件成本低了一大截这也是很多中小型温控项目最常用的方案。这套东西适合谁看我觉得有三类人值得参考。第一类是刚接触汇川PLC、想找个完整案例练手的工程师温度PID是个特别好的切入点因为它涉及模拟量采集、PID指令、开关量输出、人机交互麻雀虽小五脏俱全。第二类是从三菱、西门子转过来用汇川的同行汇川的编程思路和指令体系有自己的特点尤其是Easy系列和H5U、AM系列在PID实现上差异不小踩过的坑值得分享。第三类是做设备维护或者非标自动化的朋友现场经常遇到温控不稳的问题理解PID和开关量输出的配合逻辑排查起来就有方向了。我这次用的硬件平台是汇川Easy320系列PLC扩展了一个GL20-2HC高速计数模块用来接脉冲式温度传感器这个组合在热流道、注塑机、包装机械的温度控制里挺常见。下面我把整个项目的设计思路、参数计算、梯形图实现、调试过程完整地捋一遍尽量把每个“为什么这么选”讲清楚。2. 整体方案设计与选型考量2.1 为什么用开关量而不是模拟量输出先说说选型逻辑。温度控制执行机构常见的有三类模拟量调功器、固态继电器、接触器。模拟量调功器能接收4-20mA或者0-10V信号实现真正的连续调功控制精度最高但一个调功器动辄几百上千块而且大功率的还得配散热。固态继电器和接触器只能通断成本低、接线简单、抗干扰强缺点是开关动作频繁会影响寿命。我这次的项目加热功率不大3kW左右用的是固态继电器它的开关寿命远高于机械接触器支持高频通断正好适合时间比例输出。如果换成机械接触器控制周期就不能设太短否则触点很快就烧了一般得设到30秒甚至更长那样温度波动就会明显变大。所以选开关量方案的前提是执行器件能扛得住频繁动作固态继电器或者可控硅模块是首选。注意如果现场只能用机械接触器控制周期建议不低于20秒并且要在程序里加最小导通时间和最小关断时间限制避免PID输出在临界点附近疯狂抖动导致接触器“打点”。2.2 PID控制周期的确定控制周期Tc是时间比例输出的关键参数。设太短开关动作频繁器件损耗大设太长温度波动大控制品质差。经验公式是Tc取系统时间常数的1/10到1/5。我实测这套加热系统的热时间常数大约在100秒左右从冷态到设定值63.2%所需时间所以Tc取10秒比较合适既保证了控制平滑度又不至于让固态继电器太累。具体到程序里我用一个定时器产生10秒的周期基准PID指令每个扫描周期都执行运算但输出只在周期起点更新一次占空比。这样PID的积分项不会因为周期内的重复计算而累积过快这一点后面讲参数整定时会详细说。2.3 传感器信号链设计温度传感器用的是脉冲输出型接在GL20-2HC模块上。这里要说明一下GL20-2HC是高速计数模块本身是给编码器、流量计这类脉冲信号用的接温度传感器是因为这个传感器输出的是频率信号频率和温度成线性关系。比如0℃对应1000Hz100℃对应3000Hz那频率每升高20Hz对应1℃。这种传感器抗干扰比热电偶强长距离传输衰减小在工业现场很实用。PLC读取计数模块的当前计数值经过换算得到实际温度。换算公式是实际温度 (当前频率 - 基准频率) / 频率系数。基准频率和频率系数在传感器手册里都有我这边基准1000Hz、系数20Hz/℃程序里用浮点运算处理。2.4 人机交互与上位机通讯项目要求能在触摸屏上设定目标温度、查看实时温度、调整PID参数。汇川的HMI和PLC之间走Modbus RTU寄存器地址要对应好。我把设定值放在D100实际值放D101Kp、Ki、Kd分别放D110、D111、D112触摸屏直接读写这些寄存器就行。上位机那边如果需要远程监控可以再加一个Modbus TCP模块把数据映射到以太网寄存器区。3. 核心细节解析与实操要点3.1 汇川PLC的PID指令怎么用汇川Easy320用的是AutoShop编程环境PID指令是PID功能块和西门子的FB41类似但参数定义不同。它的输入有使能端EN、设定值SP、反馈值PV、比例增益Kp、积分时间Ti、微分时间Td、采样周期Ts、输出上限、输出下限。输出是一个0到100的百分比值正好对应0%到100%的占空比。这里有个容易搞混的地方汇川的积分时间Ti单位是秒不是分钟和某些品牌不一样。Ti越小积分作用越强Ti越大积分越弱。微分时间Td也是秒。Kp是纯比例增益没有量纲。我一开始按三菱的习惯把Ti设成分钟级结果积分几乎不起作用温度半天上不去后来改成秒才正常。提示汇川PID指令的采样周期Ts要和实际调用周期一致。如果PID放在定时中断里执行Ts就填中断周期如果放在主程序里每个扫描周期都执行Ts要填平均扫描周期但这样不稳定建议还是放定时中断。3.2 时间比例输出的实现逻辑PID算出来的输出是0-100的浮点数要把它变成开关量需要做三步转换。第一步把输出值限幅在0到100之间防止积分饱和时输出超范围。第二步用输出值乘以控制周期得到导通时间。第三步用一个周期定时器和一个导通定时器配合周期定时器计时到Tc就复位导通定时器计时到导通时间就关输出。梯形图里我是这么写的用SM0始终接通驱动一个10秒的定时器T0T0的常闭触点串在T0线圈前形成自复位这样T0每10秒产生一个扫描周期的脉冲。T0的常开触点触发一个比较指令把PID输出值和当前周期内已过时间做比较如果输出值大于已过时间占比就置位加热输出Y0否则复位Y0。已过时间用一个1秒定时器T1累加T1在T0复位时清零。这样写的好处是逻辑清晰占空比精度能到1秒对于10秒周期来说就是10%的分辨率。如果觉得不够细可以把周期改成5秒分辨率就是20%但开关次数翻倍。我实测10秒周期配1秒分辨率温度波动在±0.5℃以内完全够用。3.3 温度换算与滤波处理GL20-2HC读回来的计数值是32位整数要先转成浮点数再换算。换算完的温度值不能直接用因为脉冲信号可能有抖动尤其是传感器线缆靠近动力线时。我加了一个一阶低通滤波公式是滤波值 0.8 × 上次滤波值 0.2 × 本次采样值。这个系数0.2是我试出来的太小了响应慢太大了滤波效果差。滤波之后还要做量程限幅防止传感器断线时计数值为0导致温度显示成负几百摄氏度触发误报警。我设了上下限低于-20℃或者高于200℃就判定传感器故障输出报警并强制关闭加热。3.4 参数整定的实操方法PID参数整定是这套系统最花时间的环节。我用的是临界比例度法先把Ti和Td设成0也就是纯比例控制然后从小到大调Kp直到温度出现等幅振荡。记录下此时的Kp叫Ku振荡周期叫Tu。然后按经验公式Kp 0.6 × KuTi 0.5 × TuTd 0.125 × Tu。我实测Ku大约是8Tu大约是40秒所以Kp取4.8Ti取20秒Td取5秒。这套参数下去温度从室温升到100℃大约用了3分钟超调量不到2℃稳定后波动在±0.3℃。后来微调了一下Kp降到4.5Ti加到25秒超调更小但上升时间长了十几秒。最终我选了Kp4.5、Ti22、Td4兼顾响应和稳定。注意整定的时候一定要在系统实际工况下进行空载和带载的热惯性差别很大。我一开始空载整定完装上工件后温度直接冲过头后来带载重新整定才稳。4. 实操过程与核心环节实现4.1 硬件接线与模块配置接线部分不复杂但有几个细节要注意。GL20-2HC模块的脉冲输入端子要接传感器的信号线和屏蔽线屏蔽层单端接地接在PLC的接地排上。传感器供电如果是24V要从PLC的24V输出取电不要和动力线共用电源否则干扰很大。固态继电器的控制端接PLC的Y0注意Y0是晶体管输出还是继电器输出晶体管输出响应快适合高频通断继电器输出不行。模块配置在AutoShop里做先扫描到GL20-2HC然后设置计数模式为频率测量采样时间设1秒。这样模块每秒更新一次频率值PLC直接读寄存器就能拿到。频率值放在模块的输入映像区具体地址看模块手册我这边是IW100开始的几个字。4.2 梯形图程序框架程序分四个部分初始化、数据采集与换算、PID运算、输出控制。初始化部分设置PID参数初值、定时器初值、报警标志清零。数据采集部分读GL20-2HC的频率值换算成温度滤波限幅。PID运算部分调用PID指令输入SP和PV输出控制量。输出控制部分做时间比例转换驱动Y0。我重点说一下PID运算和输出控制的衔接。PID指令我放在一个100ms的定时中断里执行这样采样周期固定积分和微分计算准确。输出控制放在主程序里每个扫描周期都执行但占空比只在周期起点更新。具体做法是PID输出存在D200里主程序里用T0的上升沿把D200的值复制到D201D201才是实际用于比较的占空比。这样PID在周期内更新D200不会影响当前周期的输出避免了输出抖动。4.3 关键参数计算过程控制周期Tc10秒占空比分辨率1秒。PID采样周期Ts0.1秒即100ms中断。积分时间Ti22秒意味着积分项每22秒累积到和比例项相当的程度。微分时间Td4秒对温度这种大惯性系统来说微分作用不宜太强否则噪声会被放大。输出限幅我设的是0到100但实际运行时下限我抬到了5也就是最小导通时间0.5秒。为什么因为如果PID输出是1%导通时间0.1秒固态继电器可能还没来得及完全导通就断了反而造成波形畸变和发热。设个最小导通时间保证每次导通都有效。4.4 调试现场记录第一次上电温度显示正常但PID输出一直是100加热不停。检查发现是PV值接反了PID的反馈输入应该是实际温度我误接了设定值。改过来之后正常。第二次调试温度到了设定值附近开始振荡周期大约20秒。分析是Kp太大降到3之后振荡消失但稳态误差有2℃。加上积分作用Ti设30秒稳态误差消除但超调变大。再调Td到6秒超调压下去了。最终参数Kp3.5、Ti28、Td5运行稳定。还有一次触摸屏上改设定值PLC没反应。查了半天发现是Modbus寄存器地址偏移了一位触摸屏写的是D100但PLC里实际映射到了D101。汇川的Modbus地址和寄存器编号有时候差1这个坑很常见建议对照手册仔细核对。5. 常见问题与排查技巧实录5.1 温度波动大怎么办温度波动大是最常见的问题原因通常有三个。一是PID参数不合适比例增益太大或者积分时间太短都会引起振荡。排查方法是先把Ti和Td设0只留比例看振荡是否消失如果消失就是积分或微分的问题。二是控制周期太短开关动作太频繁导致加热功率实际值和理论值偏差大。可以试着把Tc从10秒加到20秒看波动是否减小。三是传感器噪声大滤波系数太小。把滤波系数从0.2降到0.1波动会明显改善但响应变慢。5.2 温度上不去或者超调严重温度上不去先看PID输出是否到了100。如果到了100还上不去说明加热功率不够或者传感器位置不对测的不是加热区。如果输出没到100检查设定值和实际值的偏差偏差大但输出小可能是Kp太小或者Ti太大。超调严重通常是积分饱和引起的。解决办法是加积分分离当偏差大于某个阈值时暂时关闭积分作用等偏差小了再开启。汇川PID指令本身不带积分分离需要自己在程序里做用一个比较指令控制Ti的输入偏差大时把Ti设成一个很大的值相当于关闭积分。5.3 固态继电器发热严重固态继电器发热是正常现象但如果烫手就不正常了。原因可能是导通时间太短、开关频率太高导致继电器内部损耗大。解决方法是加大控制周期或者加最小导通时间限制。另外固态继电器一定要配散热器电流余量留足3kW加热按220V算电流约14A选25A以上的固态继电器比较稳妥。5.4 通讯不上或者数据不对汇川PLC和触摸屏通讯最常见的问题是站号、波特率、校验方式不匹配。站号默认是1波特率9600校验偶校验这些在PLC和触摸屏里都要设成一样。数据不对先检查寄存器地址汇川的Modbus地址有0基和1基的区别手册上写40001程序里可能要填0。还有一个坑是数据类型温度是浮点数占两个寄存器触摸屏那边也要设成32位浮点否则显示的是乱码。5.5 常见问题速查表现象可能原因排查方法解决措施温度波动大PID参数不当关闭积分微分看是否改善减小Kp增大Ti温度上不去加热功率不足看PID输出是否到100更换更大功率加热器超调严重积分饱和观察偏差大时输出是否持续100加积分分离固态继电器发热开关频率太高测量导通时间加大控制周期通讯失败参数不匹配核对站号波特率统一通讯参数温度显示异常传感器故障检查频率值是否正常更换传感器或接线实操心得调试的时候一定要用趋势图记录温度曲线光看数字看不出振荡周期和超调量。汇川的AutoShop有示波器功能可以把温度值和PID输出同时抓出来一眼就能看出问题在哪。6. 参数整定进阶与优化思路6.1 前馈补偿的引入纯反馈PID在设定值变化时总是先有偏差再调节响应有滞后。如果能在设定值变化的瞬间直接给一个前馈量加到输出上就能大大加快响应。前馈系数的确定方法是在开环状态下给一个固定的加热功率记录温度上升斜率然后反推需要多少功率才能达到目标斜率。我实测前馈系数取0.3左右设定值从80℃跳到100℃时前馈直接给30%输出温度上升明显加快超调也没增加。前馈加在PID输出之后用设定值的变化率乘以系数得到。程序里用一个微分指令对设定值求导乘以系数后限幅再加到PID输出上。注意前馈只对设定值变化有效对负载扰动无效所以不能替代反馈。6.2 串级控制的适用场景如果加热区有多个温区或者传感器位置和加热位置距离远单回路PID可能控不好。这时候可以用串级控制主回路控温度副回路控加热器附近的温度或者功率。主回路输出作为副回路的设定值副回路快速响应抑制扰动。汇川PLC支持多个PID指令并行实现串级不难但参数整定更复杂先从副回路整定再整定主回路。6.3 模糊PID的简化实现模糊PID听起来高大上其实在PLC里可以做个简化版。根据偏差和偏差变化率把Kp、Ti、Td分成几档用查表法动态调整。比如偏差大时用大Kp小Ti加快响应偏差小时用小Kp大Ti减少超调。汇川PLC的查表指令可以用比较指令堆叠实现虽然代码量大点但效果比固定参数好。我试过三档调整温度波动从±0.5℃降到±0.2℃代价是程序多了几十行。7. 项目复盘与个人体会这套系统跑了大半年中间出过几次小问题但整体稳定。我最大的体会是PID参数没有“最优”只有“最合适”。同一个加热系统冬天和夏天的散热条件不同参数就得微调。我后来在触摸屏上加了参数保存功能操作工可以根据季节自己调省得我老往现场跑。另一个体会是开关量控制虽然精度不如模拟量但只要控制周期和最小导通时间设得好实际效果差不了多少。关键是理解“等效”这个概念用时间换精度用周期换平滑。对于成本敏感的项目这套方案性价比很高。最后分享一个小技巧如果现场干扰特别大温度值跳得厉害可以在传感器信号线上套个磁环成本几块钱效果立竿见影。我有个项目温度一直不稳查了半天是变频器干扰加磁环后曲线立刻平滑了。这种土办法往往比改程序管用。
返回列表