十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PLC模拟量输入输出转换原理、公式推导与现场调试实战指南

PLC模拟量输入输出转换原理、公式推导与现场调试实战指南 1. 模拟量转换到底在解决什么问题1.1 从“开关”到“旋钮”的思维转变刚接触PLC编程的朋友大部分都是从数字量入门的。按钮按下就是1松开就是0指示灯亮就是1灭就是0。这种非黑即白的逻辑非常符合直觉梯形图里一个常开触点加一个线圈就能跑起来。但实际项目里客户不会只让你控制一个电机的启停他们经常会提这样的需求把水箱温度稳定在65度、根据管道压力自动调节阀门开度、把变频器的运行频率实时显示到触摸屏上。这些需求背后站着的就是模拟量。数字量处理的是离散状态模拟量处理的是连续变化的物理量。温度从20度升到80度压力从0兆帕涨到1.6兆帕液位从0米涨到5米这些量不会跳变它们是平滑过渡的。PLC的CPU只认识二进制数字它不知道什么是温度、什么是压力所以必须有一个翻译官把传感器送来的连续信号翻译成CPU能处理的数字再把CPU算出来的数字翻译成执行机构能接受的连续信号。这个翻译过程就是模拟量输入转换和模拟量输出转换。我见过不少新手在这个环节栽跟头程序逻辑写得漂漂亮亮但模拟量通道读上来的数值要么纹丝不动要么疯狂跳动要么和实际值差了一大截。问题往往不在梯形图本身而在于对转换原理、接线方式、量程映射这几个基础环节的理解不够扎实。这篇文章就把模拟量输入输出转换这件事从头到尾拆开讲清楚从传感器信号类型到PLC内部数值范围从转换公式推导到程序实现再到现场调试的避坑经验尽量让不同基础的朋友都能找到自己需要的那一段。1.2 谁需要掌握这项技能如果你正在做以下任何一件事模拟量转换就是你绕不过去的坎负责设备改造的电气工程师需要把老设备的模拟仪表接入新PLC系统做过程控制的自动化人员需要采集温度、压力、流量、液位等连续信号搞设备维护的技术员需要判断模拟量通道故障还是传感器故障甚至是参加PLC相关技能考核的学生模拟量编程几乎是必考项。不同品牌PLC的模拟量模块型号五花八门但底层的转换逻辑是相通的掌握了核心原理换任何品牌都能快速上手。2. 模拟量信号类型与硬件接线基础2.1 电压信号与电流信号的选择逻辑工业现场最常见的模拟量信号有两类电压信号和电流信号。电压信号常见的有0到10伏、0到5伏、正负10伏、正负5伏电流信号常见的有0到20毫安、4到20毫安。选哪种信号不是拍脑袋决定的背后有很实际的工程考量。电压信号的特点是电路简单、功耗低但致命弱点是抗干扰能力差。传输线路上只要有一点电磁干扰电压值就会波动而且线路越长、压降越明显。所以电压信号一般用在控制柜内部短距离传输比如PLC模拟量输出直接接到同一柜内变频器的模拟量输入端距离通常不超过几米。电流信号刚好相反它抗干扰能力强因为干扰源很难在电流环路上注入足够大的能量去改变电流值。而且电流信号没有线路压降的问题串联回路里电流处处相等哪怕传输几百米接收端读到的电流值依然准确。4到20毫安这个标准还自带断线检测功能正常工作时电流最低是4毫安如果线路断了电流变成0毫安PLC立刻就能判断出传感器断线或线路故障。0到20毫安就没有这个优势断线时电流也是0和正常测量最小值无法区分。注意现场选型时如果传感器距离PLC超过5米或者现场有变频器、接触器、大功率电机等干扰源优先选4到20毫安电流信号。如果传感器和PLC在同一个控制柜内且距离很近电压信号也可以用但要做好屏蔽和滤波。2.2 两线制、三线制、四线制传感器的接线差异模拟量传感器按接线方式分为两线制、三线制和四线制这个分类经常让新手迷糊。我用最直白的方式解释一下。两线制传感器只有两根线这两根线既是供电线又是信号线。传感器串联在24伏电源和PLC模拟量输入通道之间PLC通道内部有一个采样电阻传感器工作时整个回路电流在4到20毫安之间变化。这种接线最省线但要求PLC模拟量输入通道支持两线制接法也就是通道需要提供回路供电。两线制传感器通常是变送器类产品比如压力变送器、温度变送器。三线制传感器有三根线电源正、电源负、信号输出。电源正和电源负给传感器供电信号输出线单独送到PLC模拟量通道。这种接法下PLC通道只负责测量信号不负责供电。三线制常见于一些需要独立供电的传感器比如某些品牌的温度变送器。四线制传感器有四根线电源正、电源负、信号正、信号负。供电和信号完全隔离精度最高抗干扰能力最强。四线制传感器在实验室和高精度测量场合很常见比如高精度压力传感器、称重传感器。接线时最容易犯的错误是把两线制传感器当三线制接或者把三线制传感器当两线制接。接错的后果轻则读数不准重则通道损坏。我的经验是拿到传感器第一件事就是看铭牌和说明书确认接线制式然后用万用表实测一下传感器输出端在通电状态下的电压或电流确认信号类型和量程范围再往PLC上接。2.3 屏蔽层到底接哪一端模拟量信号线必须用屏蔽双绞线这一点没有商量余地。但屏蔽层怎么接现场经常吵得不可开交。有人说接PLC端有人说接传感器端有人说两端都接有人说接0伏有人说接大地。先说结论屏蔽层应该单端接地通常接在PLC控制柜的接地排上传感器端悬空。为什么单端接地因为如果两端都接地两个接地点之间可能存在电位差这个电位差会在屏蔽层上形成环流反而把干扰耦合到信号线上。单端接地可以避免这个问题同时屏蔽层依然能起到静电屏蔽的作用。那屏蔽层接0伏还是接大地这取决于现场的接地系统。如果控制柜有独立的信号地排且信号地排与大地之间通过合理的接地方式连接屏蔽层接信号地排即可。如果现场只有保护接地屏蔽层接保护接地排也可以但要确保接地电阻足够小。有些现场为了省事把屏蔽层接到0伏电源线上这种做法在干扰不严重的场合勉强能用但严格来说不规范因为0伏线本身可能带有干扰噪声。提示屏蔽层剥线时不要剥太长一般露出10到15毫米即可剥太长会让屏蔽层和信号线之间产生分布电容影响信号质量。屏蔽层要压接牢固不能只是缠绕在端子上最好用冷压端子压接后再接入接地排。3. 模拟量输入转换的核心原理与公式推导3.1 PLC内部数值范围与分辨率的关系模拟量输入转换的本质是PLC模拟量模块把外部传感器送来的电压或电流信号通过模数转换器变成一定范围内的整数这个整数存储在PLC的输入映像区里程序读取这个整数后进行后续处理。不同品牌PLC的模拟量输入数值范围不同。西门子S7-200 SMART的模拟量输入范围通常是0到27648对应0到10伏或0到20毫安S7-1200/1500也是类似的0到27648。三菱FX系列常见的是0到4000对应0到10伏。欧姆龙CP系列常见的是0到6000。汇川PLC根据模块型号不同可能是0到32000或0到27648。这些数值范围没有优劣之分只是各家设计习惯不同。数值范围决定了分辨率。以西门子0到27648为例对应0到10伏那么1伏对应2764.8个数字量理论上能分辨的最小电压变化是10伏除以27648约等于0.36毫伏。这个分辨率对于绝大多数工业场合已经足够了。但要注意分辨率不等于精度模块的转换精度还受温漂、非线性度、噪声等因素影响实际有效精度可能只有12位或14位。3.2 输入转换公式的推导与验证模拟量输入转换的核心公式其实就是一个线性映射。假设PLC读取到的原始值为NPLC内部数值范围为N_min到N_max传感器量程为P_min到P_max那么实际物理量P的计算公式是P P_min (N - N_min) × (P_max - P_min) ÷ (N_max - N_min)这个公式看起来简单但实际编程时有几个细节容易出错。第一个细节是整数运算的精度问题。如果直接用整数运算除法那一步会丢失小数部分导致计算结果偏差很大。比如N_max减N_min等于27648P_max减P_min等于100那么(N - N_min)乘以100再除以27648如果N - N_min比较小整数除法会直接把小数部分截断。解决办法是先把整数转成浮点数再做运算或者先做乘法再做除法利用PLC的32位运算能力保留精度。第二个细节是量程上下限的对应关系。有些传感器是4到20毫安对应0到100度那么4毫安对应0度20毫安对应100度。但PLC读取到的原始值可能是0到27648对应0到20毫安那么4毫安对应的原始值是27648乘以4除以20等于5529.6取整为5530。所以实际映射关系是5530到27648对应0到100度而不是0到27648对应0到100度。如果忽略这个偏移计算出来的温度会偏低。第三个细节是超量程处理。传感器可能输出超过20毫安的电流比如22毫安PLC读取到的原始值可能超过27648达到30000以上。这时候如果不做限幅处理计算出来的物理量会超过量程上限可能导致后续控制逻辑误动作。稳妥的做法是在转换后加一个限幅把结果限制在量程范围内。3.3 不同品牌PLC的转换实例对比为了让大家更直观地理解我用三个常见品牌举例说明。西门子S7-200 SMART模拟量输入模块EM AE04通道地址AIW16读取0到10伏信号对应0到27648。假设传感器量程是0到1.6兆帕当前原始值N等于13824那么实际压力P等于0加上13824乘以1.6除以27648等于0.8兆帕。程序里可以这样写先用ITD指令把整数转成双整数再用DTR指令转成浮点数然后乘以1.6再除以27648.0最后用ROUND指令转回整数或者直接用浮点数参与后续运算。三菱FX3U模拟量输入模块FX3U-4AD读取0到10伏信号对应0到4000。假设传感器量程是0到100度当前原始值N等于2000那么实际温度P等于0加上2000乘以100除以4000等于50度。三菱的编程习惯是用整数运算但要注意2000乘以100等于200000超过了16位整数的范围所以必须用32位运算指令DMUL和DDIV。汇川PLC搭配汇川模拟量模块读取4到20毫安信号对应0到32000。假设传感器量程是0到25兆帕当前原始值N等于16000那么实际压力P等于0加上(16000 - 6400)乘以25除以(32000 - 6400)等于9.375兆帕。这里6400是4毫安对应的原始值32000是20毫安对应的原始值。提示不管用哪个品牌建议在程序里把转换公式封装成一个子程序或函数块输入参数是原始值、原始值下限、原始值上限、物理量下限、物理量上限输出是物理量。这样换项目时直接调用不用每次都重新推导公式。4. 模拟量输出转换的实现方法4.1 输出转换的逆向思维模拟量输出转换和输入转换方向相反但逻辑是类似的。程序里计算出一个物理量目标值比如阀门开度50%需要把这个百分比转换成PLC模拟量输出模块能接受的数字量再通过模块输出对应的电压或电流信号去驱动执行机构。输出转换公式是输入公式的逆运算。假设物理量目标值为P物理量范围是P_min到P_maxPLC输出数值范围是N_min到N_max那么输出原始值N的计算公式是N N_min (P - P_min) × (N_max - N_min) ÷ (P_max - P_min)同样要注意浮点运算和限幅处理。如果计算出来的N超过N_max要强制限制在N_max否则输出模块可能饱和或者报错。4.2 输出通道的接线与负载匹配模拟量输出通道的接线比输入通道简单一些但负载匹配问题经常被忽略。电压输出通道的负载阻抗不能太低否则输出电压会被拉低。电流输出通道的负载阻抗不能太高否则电流达不到设定值。具体参数要看模块手册一般电压输出要求负载阻抗大于1千欧电流输出要求负载阻抗小于500欧。我遇到过这样一个案例PLC模拟量输出通道设定4到20毫安接了一个250欧的采样电阻理论上20毫安乘以250欧等于5伏但实际测量只有4.2伏。后来发现是输出通道的负载能力不足换了一个精度更高的隔离变送器才解决。所以输出通道接线前一定要确认执行机构的输入阻抗必要时加信号隔离器或变送器。4.3 输出保持与安全值设定模拟量输出通道在PLC停机或模块故障时的行为需要提前规划。有些模块在通信中断时会保持最后一个输出值有些会归零有些会输出预设的安全值。对于控制阀门的场合如果PLC突然停机阀门保持原位可能比全开或全关更安全也可能更危险这取决于工艺要求。我的做法是在程序里加一个安全值处理逻辑当PLC从运行模式切换到停止模式时或者当模拟量输出模块报故障时程序主动把输出值设定到一个预先定义的安全值。这个安全值可能是0%、50%或100%根据工艺安全分析确定。同时要在触摸屏上做一个手动强制输出功能方便调试和应急处理。5. 编程实现与现场调试要点5.1 梯形图与结构化文本的取舍模拟量转换程序可以用梯形图写也可以用结构化文本写。梯形图直观适合逻辑简单的场合但做浮点运算和数学公式时比较繁琐需要调用多个运算指令块。结构化文本写数学公式更简洁可读性更好适合复杂的转换逻辑。我的习惯是如果只是简单的线性转换用梯形图调用现成的转换指令块就够了如果涉及多段折线转换、温度补偿、滤波算法就用结构化文本写一个函数块。西门子博途里可以用SCL语言写FC或FB三菱GX Works里可以用ST语言汇川InoProShop里也可以用ST。不管用哪种语言核心是把转换逻辑封装好主程序里只负责调用和传参。5.2 模拟量滤波与抗干扰处理现场模拟量信号经常会有波动有时候是传感器本身的噪声有时候是变频器干扰有时候是接地问题。程序里加滤波是最经济有效的抗干扰手段。最简单的滤波是算术平均滤波连续采样N次去掉最大值和最小值剩下的取平均。N一般取5到10太大响应会变慢太小滤波效果不明显。稍微复杂一点的是一阶滞后滤波也叫惯性滤波。公式是本次滤波值等于上次滤波值乘以(1减去滤波系数)加上本次采样值乘以滤波系数。滤波系数越小滤波效果越强但响应越慢。我一般把滤波系数设在0.1到0.3之间具体看信号波动程度和控制响应要求。还有一种情况是工频干扰信号上叠加了50赫兹的周期噪声。这种干扰用算术平均滤波效果不好因为采样周期和工频周期不同步。解决办法是让采样周期等于工频周期的整数倍比如20毫秒、40毫秒、60毫秒这样工频干扰在多次采样中会相互抵消。注意滤波会引入滞后对于快速响应的控制回路滤波时间常数不能太大。比如压力闭环控制滤波时间常数超过100毫秒就可能引起振荡。这时候要考虑硬件滤波和软件滤波配合使用或者选用响应更快的传感器。5.3 常见故障排查速查表故障现象可能原因排查方法解决措施读数为0且不变化传感器未供电、线路断开、通道未启用万用表测传感器输出端电压或电流检查供电、接线、模块配置读数跳动剧烈屏蔽层未接、干扰源太近、滤波不足示波器观察信号波形接好屏蔽层、远离干扰源、增加滤波读数偏高或偏低量程设置错误、转换公式错误、传感器偏差对比标准信号源和PLC读数修正量程、校准传感器读数超量程传感器故障、信号线短路、量程不匹配测量传感器输出是否超过上限更换传感器、检查线路、调整量程输出无信号输出通道未启用、负载不匹配、程序未赋值测量输出端子电压或电流启用通道、调整负载、检查程序输出值偏差大负载阻抗不匹配、输出未校准、电源波动测量实际输出与设定值对比加隔离变送器、校准输出、稳定电源这张表是我这些年现场调试积累下来的大部分模拟量问题都能在上面找到对应条目。实际排查时建议按顺序来先确认硬件接线和供电再确认模块配置和量程最后检查程序逻辑和转换公式。不要一上来就改程序很多问题其实是接线或配置引起的。5.4 调试工具与实操技巧调试模拟量通道万用表是必备工具但普通万用表精度不够最好用四位半以上的数字万用表。信号发生器也很有用可以输出标准4到20毫安或0到10伏信号用来验证PLC通道和程序是否正确。如果没有信号发生器可以用一个可调电阻和24伏电源搭一个简易信号源但精度和稳定性差一些。在博途里调试时可以打开变量监控表直接监控模拟量输入通道的原始值和转换后的物理量。如果原始值正常但物理量不对问题在转换程序如果原始值就不对问题在硬件或模块配置。这种分段排查方法能快速定位问题。还有一个技巧在程序里加一个原始值记录功能把模拟量通道的原始值定时记录到数据块里用趋势图查看。这样即使不在现场也能通过历史数据分析信号质量。如果趋势图是一条平滑曲线说明信号正常如果是一条锯齿波或毛刺很多的曲线说明干扰严重或滤波不足。6. 进阶话题与项目实战建议6.1 多通道模拟量的批量处理实际项目里很少只有一个模拟量通道经常是8通道、16通道甚至更多。如果每个通道都单独写一段转换程序程序会非常臃肿。更好的做法是用间接寻址或数组批量处理。比如把16个通道的原始值读到一个数组里然后用循环依次调用转换函数把结果写到另一个数组里。这样程序简洁修改量程也方便。西门子S7-1200/1500可以用FOR循环配合数组实现批量处理三菱可以用变址寄存器汇川可以用数组和循环指令。关键是把通道配置参数也做成数组比如原始值下限数组、原始值上限数组、物理量下限数组、物理量上限数组这样增加通道只需要在数组里加一个元素不用改程序结构。6.2 模拟量转换中的精度损失与补偿从传感器到PLC再到上位机模拟量信号经过多次转换每一次转换都会引入误差。传感器本身有精度等级比如0.5级、0.2级PLC模拟量模块有转换精度比如12位、14位、16位程序里的浮点运算也有舍入误差。这些误差累积起来最终显示值可能和实际值差不少。对于精度要求高的场合可以考虑以下补偿措施选用更高精度的传感器和PLC模块在程序里加零点校准和满度校准功能用标准信号源校准后把偏差值存入数据块运行时自动补偿对于温度测量加冷端补偿或查表法修正非线性对于压力测量加静压补偿或温度补偿。6.3 从模拟量到PID闭环的过渡模拟量转换往往是PID闭环控制的前置步骤。输入转换把传感器信号变成物理量PID运算根据设定值和实际值的偏差计算输出输出转换把PID输出变成模拟量信号驱动执行机构。这个链条里任何一个环节出问题闭环控制都会失效。我的建议是先把开环调试好手动给定输出值观察执行机构动作是否正常然后手动改变输入信号观察转换后的物理量是否准确最后再投入PID自动控制。PID参数整定时先把积分时间和微分时间设为零只调比例增益等系统稳定后再加积分最后加微分。模拟量转换的精度和滤波效果直接影响PID的整定难度转换不准或滤波不足PID参数怎么调都调不好。6.4 一个完整的恒压供水模拟量案例最后分享一个我做过的恒压供水项目把模拟量输入输出转换、PID控制、泵切换逻辑串起来。系统配置是西门子S7-1200 PLC一块模拟量输入输出模块压力变送器4到20毫安对应0到1.6兆帕变频器0到10伏对应0到50赫兹三台水泵。模拟量输入转换压力变送器信号接入AIW16原始值范围5530到27648对应0到1.6兆帕。程序里用SCL写了一个FC输入原始值输出实际压力内部做了浮点运算和限幅。PID控制设定压力0.8兆帕实际压力来自模拟量转换PID输出范围0到100%。PID参数经过整定比例增益2.5积分时间15秒微分时间0秒。模拟量输出转换PID输出0到100%对应变频器0到50赫兹再对应模拟量输出通道0到27648。程序里用另一个FC做逆向转换输出原始值给AQW16。泵切换逻辑当变频器频率达到50赫兹且压力仍低于设定值超过5秒启动下一台泵当频率低于30赫兹且压力高于设定值超过10秒停止一台泵。切换过程中有延时和互锁防止频繁启停。这个项目调试时遇到的主要问题是压力信号波动大变频器启动时压力读数会跳变。后来在模拟量输入程序里加了一阶滞后滤波滤波系数0.15同时把压力变送器的屏蔽层单独接到信号地排问题基本解决。PID参数也重新整定了一次比例增益降到1.8积分时间加到20秒系统稳定性明显改善。这个案例说明模拟量转换不是孤立的技能它和硬件选型、接线、滤波、PID控制、设备联动紧密相关。把模拟量转换学扎实了后面做闭环控制、过程控制、运动控制都会轻松很多。我个人在实际操作中的体会是模拟量转换的难点不在公式本身而在于对现场信号特性的理解和对手册参数的熟悉程度。同一个模块不同量程配置下的原始值范围可能完全不同接线方式也可能需要跳线或拨码开关设置。每次拿到新模块先花十分钟翻手册确认量程配置和接线图比事后花两小时排查故障划算得多。另外程序里的转换函数块一定要做限幅和异常处理现场传感器断线、短路、超量程的情况太常见了没有异常处理的程序在实验室能跑到现场就趴窝。
返回列表