
把三菱 FX 系列做 PID 控制这事我在现场摸爬滚打了好几年FX1N、FX2N、FX3U、FX3G 基本都碰过。功率不大、回路不多的温控、压力、流量项目里FX 系列确实够用但真正让人头疼的不是选什么 PLC而是 PID 到底用什么方式实现。行业内提到三菱 FX 系列的 PID 控制常说的主流方案就三种一是直接用 PLC 内置的 PID 指令自己搭闭环逻辑二是在 PID 指令基础上启用自整定让控制器自动把 P、I、D 参数算出来三是外挂专用调节模块或温控模块把闭环控制放到硬件里跑。这篇就围绕这三条路线展开我会把指令格式、参数表、接线思路、调参步骤和现场踩过的坑一次性讲清楚适合刚接手温控项目的新手也想帮已经能把系统跑起来但一直调不稳的老手理一理思路。1. 三条路线分别指什么1.1 方案一程序里跑 PID闭环全靠用户代码第一种方案是使用 FX 系列内置的 PID 指令。在三菱 FX 的指令系统里PID 是一条功能指令你可以把它理解成 PLC 内部已经封装好了一个位置型或增量型 PID 运算器。用户在程序里给定目标值 SV、测量值 PV 和一组参数PID 指令会在程序执行的某个周期取出这些数据完成偏差计算、比例项、积分项、微分项处理再输出一个操作量 MV。这个 MV 再通过模拟量输出模块、PWM 输出或者通信方式送给执行机构。这条路线的特点非常明显闭环逻辑完全在 PLC 程序内所有参数都是数据寄存器里的普通数值你随时可以改、可以算、可以监控。适合用现有模拟量通道节省硬件成本也方便在程序里做联锁和逻辑切换。缺点是需要工程师自己正确接线、写参数表、处理输出限幅和正反作用调试门槛对新手不太友好。1.2 方案二指令里开自整定P、I、D 自动算第二种方案其实仍然是 PID 指令但启用了一个特殊功能自整定也常被叫自动调谐。三菱 FX3U 和 FX3G 的增强型 PID 指令支持自整定功能PLC 会以固定幅度把操作量来回切换让被控量产生一个可测量的振荡然后根据振荡周期和振幅计算出合适的比例增益、积分时间、微分时间写回参数表。你可以简单理解成控制器先给系统“做一次体检”再把体检结果换算成三个参数。这个方案没有增加额外硬件只是在参数表里打开一个控制位让 PLC 自动完成整定流程。很大的好处是解决了“参数不会调”的核心痛点尤其适合温度对象这类惯性大、滞后明显的系统。但自整定不是万能的过程如果受强干扰或者执行机构动作不到位算出来的参数也会离谱还是需要有人会看曲线、会微调。1.3 方案三硬件调节模块闭环PLC 只做监控第三种方案是把 PID 控制交给专用模块来完成。比如三菱的 FX3U-4TC 热电偶输入模块、FX3U-4AD-PT 热电阻输入模块、FX2N-2LC 双回路温度控制模块这些模块内部带处理单元直接在模块里完成 PID 运算和输出控制PLC 程序里不再写具体 PID 指令只是通过数据读写方式给模块设定目标值、读取测量值和状态字。为什么很多人愿意选这个方案因为模块厂商已经把温控算法、冷端补偿、自整定、传感器断线处理这些麻烦事都封装好了稳定性远比自己在程序里折腾要强。模块对底层硬件频率、滤波处理比一般 PLC 扫描周期更精细特别适合温度控制精度要求高、回路数量多、不允许程序中断导致失控的场景。代价是多一块硬件成本并且选型时要确认模块型号和接线方式。为了让大家直观对比我先把三张方案的核心差异列成一张表。对比维度方案一内置 PID 指令方案二PID 指令 自整定方案三专用调节模块闭环运算主体PLC 用户程序PLC 用户程序模块内部处理单元是否增加硬件否使用已有模拟量通道否仅使用指令参数是需采购专用模块自整定能力无自动整定手动调参有自动整定自动算参数大多带独立自整定程序复杂度中等需要写参数表中等偏上要处理整定流程低主要做读写通信典型精度表现依赖模拟量精度和扫描时间依赖整定质量自动后较好模块专门优化表现更稳适用场景成本敏感、单回路较少温度、压力等惯性大对象多回路、高稳定、高精度场合2. 方案一用内置 PID 指令亲手搭一套闭环2.1 指令格式与操作数解读三菱 FX3U、FX3G 等系列里的 PID 指令基本格式是这样的PID S1 S2 S3 DS1 用来指定目标值 SV 的保存地址是一个数据寄存器S2 是指定当前测量值 PV 的地址S3 是 PID 参数表的首地址从 S3 开始往后连续占用若干个数据寄存器D 是操作量输出 MV 的存储地址。我在实际项目里经常用 D 寄存器来操作典型分配是D0 存目标值 SV比如温度设定 80.0 摄氏度量化后存进去D1 存当前值 PV这个值一般是通过 FROM 指令从模拟量输入模块的缓存区读出来的D20 作为参数表的起始地址D20 往后连续若干字放采样时间、作用方向、KP、TI、TD 等D60 作为 PID 运算结果 MV 的存放地址再通过 TO 指令送给模拟量输出模块或者转成 PWM。要注意不同系列对参数表长度的定义不完全一样FX1N/FX2N 的 PID 指令参数占 5 个字而 FX3U 的进阶功能会用到更多。在 GX Works2 或 GX Developer 里输入指令时系统会有操作数提示具体细节以对应型号的手册为准。2.2 参数表里每一项都代表什么参数表是整个方案一最容易糊弄的地方很多现场问题都出在这里。以 FX3U 常用的基础 PID 参数表为例从 S3 开始S30采样时间 Ts单位 ms范围通常 1 到 32767。这个值决定 PID 指令多久计算一次不能太小也不能太大。S31控制字里面用位定义了动作方向、输入滤波、输出变化率限制、目标值限制等选择。bit0 最常用0 表示正作用1 表示反作用。S32比例增益 KP单位是百分比常见设定范围 1 到 1000。S33积分时间 TI以采样时间为单位。它表示积分项加到与比例项同等效果所需要的时间倍数。S34微分时间 TD同样以采样时间为单位。S35微分增益 KD用来限制微分项的增幅防止高频噪声被放大。动作方向的意义要理解清楚正作用常用于加热系统测量值升高时输出减小反作用常用于制冷系统测量值升高时输出增大。如果方向反了你调半天系统只会越跑越偏这是最基础的排查点。2.3 一个最小可用的启动流程用方案一在项目里落地我习惯按照这样的顺序来确认模拟量通道正常工作。先不接 PID直接把模拟量模块读出来的 PV 数据显示在人机界面上确认量程换算正确。分配寄存器。SV 用一个 DPV 用一个 D参数表留 6 到 10 个连续 DMV 用单独一个 D。上电初始化参数表。在开机时用 MOV 指令把采样时间、控制字、KP、TI、TD 初始值写入参数表。编写 PID 调用条件。一般用一个控制使能位比如 M0只有 M0 为 ON 时才执行 PID 指令。程序里调用指令例如M0 导通时执行PID D0 D1 D20 D60。处理输出。如果执行机构是模拟量设备把 D60 经过限幅处理后写入模拟量输出模块如果是开关量设备用 MV 的值做 PWM 调制。从逻辑上讲PID 指令必须要有条件地周期调用不能只在第一次扫描时执行一次。现场比较稳妥的做法是把 PID 调用放在定时中断子程序里保证采样时间准确。如果用普通扫描周期来调用要注意 PLC 扫描时间不稳定会影响采样间隔导致控制效果时好时坏。2.4 这个方案最容易被忽视的四个问题第一个问题是采样时间设得太短。有人觉得采样越快控制越准实际不是。执行机构和传感器的响应能力有限采样时间太短会让 PID 的微分项疯狂放大噪声输出反而剧烈抖动。温度类对象采样时间设几百毫秒到一两秒都算常见压力、流量快一点的可以设几十毫秒。第二个问题是输出限幅缺失。很多新手把 PID 算出来的 MV 直接送给执行器没有做上下限处理。一旦积分项累积到很大值输出会直接打满或关死恢复很慢。正确做法是输出端加限幅或者启用 PID 指令内置的输出限幅功能同时配合积分限幅或输出变化率限制。第三个问题是参数单位和物理量混为一谈。KP、TI、TD 都是无量纲的处理参数不是传感器的量程系数。比如温度偏差大不代表 KP 就要设更大还要看执行机构的调节范围得通过实际响应曲线来判断。第四个问题是反作用和正作用搞反。前面说过加热和制冷方向相反这是现场最常见的第一坑。程序写完如果系统一上电就往反方向跑先检查控制字的 bit0不要急着调参数。3. 方案二让 PLC 自整定把三个参数自动算出来3.1 自整定到底是怎么工作的三菱 FX3U、FX3G 里的自整定功能本质上是极限环法。PLC 会暂时放弃正常的 PID 连续运算以手动方式强制操作量按一定幅度来回切换。比如输出从 50% 跳到 60%稳定一会儿再跳回 50%让被控量在被调对象上形成一个近似等幅振荡。控制器把振荡的周期和幅度抓出来结合当前的操作量幅度估算出被控对象的临界增益和临界周期最后套用工程上常用的整定规则计算出一组 P、I、D 参数。整个过程不需要你手工去试凑三个参数也不需要知道对象精确的传递函数对被控模型复杂的温度、压力系统特别实用。算出来的参数一般不是理论最优解但是在大多数工业对象上都能直接跑稳后续只需小范围微调。这个“先用自动化手段拿到可用参数再围绕工作点精调”的思路我认为是工程上最可靠的整定方式。3.2 启动自整定的实操步骤在 FX3U 上使用自整定参数表设置和方案一基本相同关键是控制字里要把自整定使能位打开。以常见手册的描述为例S31 的 bit4 或 bit5 可能被用来开启自整定不同固件版本和软件版本略有差异我在 GX Works2 里都是通过查看参数表的位定义来确认具体是哪一位。我现场操作自整定的步骤一般是把系统带到正常工作点附近。自整定过程中输出要做较大幅度的摆动被控量会因此波动所以要让系统在目标值附近稳定且生产允许这段波动。写参数表基本项。采样时间先按经验设定控制字设置正确的动作方向输出限幅打开给一个合理的输出变化范围。打开自整定使能位保持 PID 控制使能状态让程序反复执行 PID 指令。密切观察 PV 曲线。几十秒到几分钟后PV 应出现一组等幅振荡然后振荡逐渐结束说明整定过程已完成。读取结果参数。PLC 会把整定得到的 P、I、D 参数写回参数表的特定位置你要把这几个值记录下来可以不覆盖原值先观察运行效果。好了之后关闭自整定使能位让系统切回正常 PID 运算。整个过程里最关键的一点是不要在中途断电或断开执行机构否则整定结果会完全无效甚至写出虚假参数。3.3 自整定完成之后还需要做什么自整定不是按一下就万事大吉。我遇到过不少项目整定完后参数能稳定运行但一换工况就明显变差。原因往往是被控对象在高温段和低温段的动态特性差异大自整定只在某一个工作点附近算了一组参数离开这个点自然效果变差。所以整定完成后我通常会做三件事第一观察阶跃响应。给目标值一个较小的阶跃变化比如温度目标从 80 度提到 85 度看 PV 曲线是否有明显超调、是否振荡。超调大可以适当减小 KP、增大 TI响应慢可以增大 KP、减小 TI。第二检查稳态纹波。如果稳态时输出幅值抖得厉害大概率是微分项太敏感或者采样时间过短可适当减小 TD 或增大采样时间。第三把整定得到的参数作为基准做好几组不同工况下的参数通过程序或人机界面按工况切换。这个做法比只靠一组万能参数要实用得多。我做过的一个烘箱项目就是常温启动和高温保温分别用两组 PID 参数切换逻辑简单效果比自动整定后不动的方案好很多。3.4 自整定不成功的事我总结了几条原因自整定失败或结果奇怪最常见的原因有几个动作方向设置反了。整定时的矩形波输出沿错误方向作用系统根本产生不了标准振荡。执行机构存在明显死区。阀门在低开度下基本不动作自整定输出往返切换但被控量纹丝不动极限环建不起来。采样时间相对于对象时间常数过短。控制器采到一堆噪声把振荡周期算错。外部干扰强。附近有大功率设备频繁启停PV 曲线里叠加了明显扰动整定结果必然失真。出现这类问题别反复重新启动自整定先停下来查方向、查阀门动作、查传感器安装位置把硬件和基础信号处理好了再整定。允许我不厌其烦地强调一句整定前先确认传感器安装位置不要离加热部件太近也不要放在死区角落否则你整定出来的参数本质上是在“给错误信号设计控制器”。4. 方案三外挂调节模块把 PID 搬到硬件里4.1 常见模块怎么选外挂模块这条路其实又可以分为两大类一类是带 PID 功能的通用模拟量模块另一类是专门的温控模块。两者的侧重点不同。专门温控模块里FX3U-4TC 和 FX3U-4AD-PT 比较常见。FX3U-4TC 支持热电偶输入FX3U-4AD-PT 支持热电阻输入它们本质上是把温度传感器信号直接接到模块上模块内部做线性化、冷端补偿并且通过与 PLC 程序配合完成 PID 控制或报警输出。FX2N-2LC 则是更典型的功能型模块自带两路温度控制回路模块内部直接提供 PID 运算和自整定能力不需要用户程序参与 PID 计算只通过缓冲存储器读写参数。如果是压力、流量、液位等非温度量那么通常不买“温控模块”而是选用高精度模拟量模块做信号采集再用 PLC 内置 PID 指令控制。这种情况下选用的是模拟量输入输出模块不算把 PID 放到模块硬件里。所以在选型时要先想清楚我要的是“模块帮我把 PID 也算好”还是“模块帮我精确读信号但 PID 仍在 PLC 里算”。4.2 模块的接线与参数读写思路专用温控模块的接线相对直接。以 FX2N-2LC 为例热电偶或热电阻接在模块端子上输出控制信号接继电器、固态继电器或晶闸管调节器。模块通过扩展电缆与 PLC 连接连接后系统会自动分配从站编号程序员在 GX Works 中可以直接通过缓冲存储器的形式访问它类似U0\G0这样带模块站号和寄存器号的地址。向模块写入 PID 参数、读取测量值靠的是读写缓冲存储器。很多人初次接触会不习惯但只要对照官方手册把缓冲寄存器地址表打出来无非就是设定地址写目标值状态地址读当前值整定地址触发自整定参数地址存 P、I、D。这个过程和用特殊功能模块的通信指令差不多。严格来说并不需要用户了解模块内部每一行的具体算法这恰恰是方案三最大的安全感来源。4.3 模块内 PID 的现场整定方式模块温控器的 PID 参数整定比方案二还要省心。FX2N-2LC 这类模块通常在前面板或者通过通信接口就能触发自整定整定过程完全在模块内部完成PLC 只是从旁监测。你只需要在模块参数里选择温度范围、控制方式、自整定模式然后让模块自己跑一遍它会自动根据实际温度响应曲线给出 P、I、D 参数。我实际用这类模块时会在 PLC 程序里加入通电后自动写入初始参数的逻辑把人机界面上的 SV 值实时同步到模块目标寄存器再把模块返回值读回来显示。控制逻辑里会做“模块故障检测”监测模块是否通信掉线掉线时人机界面立刻报警同时让输出保持或断开避免温度失控。4.4 方案三到底好在哪、有什么代价方案三的优点是显而易见的温度信号处理更专业冷端补偿在模块内部完成不需要用户程序换算模块通常有高分辨率的处理芯片抗干扰能力更强即使 PLC 程序进入 STOP 状态模块本身的控制回路依然保持输出这对防止断料、防止超温事故很重要。代价就是硬件费用和安装空间。一个专用两回路温控模块的价格比普通模拟量模块高不少而且模块数量受总线扩展能力限制。很多只做一两个回路的项目上专用模块确实显得大材小用。所以我通常会建议回路数量在 4 路以内且对成本敏感的先用方案一或方案二回路多、可靠性要求高的直接上专用模块。5. 三种方案到底怎么选我一般这样判断5.1 场景选型矩阵我把不同应用场景和推荐方案整理成一张矩阵方便大家直接对号入座。应用场景推荐方案理由单回路烘箱、小型加热设备方案二有自整定帮助参数调整快硬件成本低温度控制精度要求高、回路数量多方案三温控模块专门优化回路之间隔离好控制稳定现有 FX 系统已有模拟量通道只加一个压力 PID方案一复用已有硬件只加程序逻辑恶劣电磁环境信号波动大方案三模块隔离和滤波处理比 PLC 扫描内自算更可靠项目周期紧没有时间慢慢调参方案二或方案三自整定能快速得到可运行参数维护人员现场基础较弱方案三模块正面板操作和自整定字段直观故障排查清晰这一张表只是参考方向具体选型还要结合柜内空间、IO 需求、预算和现场人员熟悉程度来综合判断。5.2 开发成本和可靠性的权衡从开发成本上看方案一最省钱但是调试时间最长时间成本说不定反而更高。方案二在程序上几乎不增加成本只是依赖自动整定过程现场调试时间能大幅缩短。方案三直接增加模块采购成本但程序开发量最少现场调试也相对快总体项目周期可以被压短。可靠性方面我的经验是纯程序方案受 PLC 扫描周期和程序结构影响大如果程序里其他逻辑冗长复杂PID 采样时间会被打乱控制效果会变得不稳定。方案二虽然也是程序内实现但定时中断调用能保证较好的采样稳定性。方案三的独立模块在硬件层面就隔离了各种因素稳定性上限最高。项目立项时我会先问三个问题一是有没有预算增加硬件二是现场有没有人懂 PID 参数整定三是这个控制回路万一程序卡死会不会出安全事故。三个问题的答案基本决定了方案选型。5.3 参数数据流的一个细节很多人会忽略一个细节不管方案一还是方案二理想情况下要把 PID 的执行放在定时中断中而现场很多程序把 PID 写在普通扫描程序里。这个差异在现场表现很微妙但确实很关键。普通扫描执行 PID 的好处是程序简单不需要额外配置中断。但 PLC 的扫描周期会随着程序量、通信处理、特殊功能模块更新时间变化PID 运算间隔并不严格等时间间隔。而 PID 算法里积分项和微分项都依赖时间间隔间隔忽长忽短控制效果就会出现奇怪的“抽风”。到现场一查参数是好的、传感器是准的、执行机构是正常的问题竟然出在采样时间不准确。定时中断使用起来并不复杂把 PID 调用放到中断子程序里中断周期设成 PID 采样时间中断服务程序里只做和 PID 相关的处理保证采样时间恒定。三菱 FX3U 的定时中断设置一次后运行稳定性比普通扫描要好太多。6. 现场调试实录与常见问题排查6.1 常见问题速查表下面这张表是我在现场遇到最高频的问题和对应处理方法的汇总。现象可能原因处理思路系统上电后输出直接到最大或最小正反作用设反先检查控制字动作方向位输出在高位和低位之间剧烈抖动采样时间太短、微分太强、输出未限幅增大采样时间减小 TD输出增加限制温度始终到不了目标值积分时间过大、输出限幅过小、执行机构能力不足减小 TI检查输出是否被限幅检查加热能力到目标值后反复超调和回落比例增益过大减小 KP适当增大 TI使用输出变化率限制PV 值明显跳动PID 输出跟着跳传感器干扰、采样时间短、接线不良检查屏蔽层和接地增大滤波检查传感器安装自整定启动后系统无振荡执行机构死区、方向错、输出限幅卡死手动测试执行机构全行程确认输出变化是否有效自整定完成但参数使用后效果很差整定时外部扰动大、工作点偏移排除干扰后重新整定或使用分段多组参数写入 PLC 的参数掉电丢失未做初始化或者备份使用带电池的保持寄存器开机时写入默认参数这表里没有高深的花活但每个问题都真实耗费过时间。有时候问题不是单个原因而是几个因素叠加排查时要按照“信号是否正确——输出是否动作——方向是否正确——参数是否合理”的顺序逐层走不要一上来就怀疑 PID 算法。6.2 我在现场养成的几个调试习惯第一个习惯是必要的数据采集先做好。调试前先把 PV、SV、MV 这三个量都以合适的时间间隔记录出来最好能实时画成趋势线。这样别说系统振荡还是漂移一眼就能判断出来。没有曲线记录工具光靠着人眼盯着人机界面数字猜确实很难找出问题。第二个习惯是调参数前先确定方向再调大小。很多人上来就调 KP但是连加热还是制冷的正反作用都没搞清楚。其实方向不对的时候任何参数调整都是负优化。每次到现场第一件事不是碰参数而是用手动模式直接给执行机构一个阶跃信号看 PV 响应方向对了没有然后再切自动。第三个习惯是参数一次只动一项。比例、积分、微分三个参数互相影响如果同时改两个出问题你根本不知道是哪个改坏的。我调参时习惯先固定 TI 和 TD把 KP 从小往大逐步试看到开始有一点超调后回退一点再动 TI最后才动微分项。按这个顺序走很少走到“怎么调都乱”的死局。第四个习惯是做好每一组参数的记录。现场调好一组参数后把当时的工况、目标值、负载状态、对应 P、I、D 值都记下来。过两个月换季了或者生产负荷变了原参数可能失效有记录才能快速对照和恢复。好记性不如烂笔头在现场这句话永远是真理。6.3 一个典型的双回路温控调试案例最后分享一个我印象比较深的现场案例用的是方案三。现场是一台双温区加热设备左右两个温区分别加热互相之间距离很近热辐射会影响对方温度。客户最开始要求两个温区独立控制我们上了 FX2N-2LC 模块但运行后发现一个温区加热时另一个温区温度被带着往上飘飘完之后又需要较长时间回到设定值。刚开始我以为是参数问题反复整定没啥大改善。后来把两个温区的加热时序错开让两个回路错峰加热温度波动马上小了很多。这个问题的本质不是 PID 参数不够好而是设备结构存在耦合控制算法之外的时序策略反而解决了问题。这也提醒我PID 只是闭环控制的一环现场调试时要把工艺机理和控制策略放在一起想。还有一次是用方案二做压力控制。系统自整定出来的参数很漂亮运行也稳定但三个月后客户突然反映压力波动变大。我到现场一看原来是执行机构前端过滤器堵了阀门动作特性完全变了。这种问题再高明的 PID 也无法自动适应最后只能清洗过滤器、恢复系统特性。所以说PID 参数不用频繁折腾但硬件状态一定要定期检查。从我个人经验来讲三种方案没有绝对的高下之分。方案一是基础让你理解 PID 每个参数的用途方案二是效率工具适合快速落地和现场调参方案三是稳健之选适合多回路和严格工业场景。如果你刚开始接触 FX 系列的 PID先把手动 PID 指令跑通一遍再用自整定验证一下参数等到真正需要高稳定性、多回路控制时再上模块这条路走过来最扎实。