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

资讯详情

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

S7-200SMART模拟量采集实战:接线、量程换算与滤波

S7-200SMART模拟量采集实战:接线、量程换算与滤波 1. 模拟量采集在S7-200SMART项目里的真实定位搞过现场调试的人都有一个共识数字量是“非黑即白”模拟量才是真正折磨人的东西。一个按钮按下去要么通要么断程序里一个常开触点就能搞定但一个压力变送器送过来的4-20mA信号背后牵扯的是量程换算、信号类型匹配、屏蔽接地、滤波处理、断线检测这一整套链路。任何一个环节出问题你在触摸屏上看到的就是跳来跳去的数字或者干脆卡在某个值不动。西门子S7-200SMART这套PLC在中小型自动化项目里出镜率极高尤其是水处理、暖通空调、小型包装线、恒压供水这些场景。它本体自带的那几个模拟量通道CPU SR20/ST20以上型号通常带2路输入加上扩展模块能覆盖大部分常规需求。但很多人第一次上手的时候卡在的不是编程逻辑而是“模块选型对不对”“接线怎么接”“程序里那个数值怎么换算成工程值”这些看起来基础但实际很容易翻车的地方。这篇内容面向的是已经能写基本梯形图、但对模拟量还不太有把握的朋友。我会从模块选型讲到接线细节再到程序里的量程换算和滤波处理最后把输出通道也一并说清楚。整个过程我会尽量把“为什么这么做”讲透因为模拟量这个东西你只知道步骤不理解原理换个传感器就又懵了。注意本文涉及的接线和配置均基于常规工业现场实践具体项目请以官方手册和现场实际工况为准。2. 先搞清楚你手里的信号到底是什么类型2.1 电压信号、电流信号与RTD/TC的本质区别模拟量信号按物理量分常见的有这么几类电压型0-10V、±10V、0-5V、电流型0-20mA、4-20mA、电阻型RTD热电阻、热电偶型TC。S7-200SMART的模拟量扩展模块型号不同支持的信号类型也不同买错了模块再接线是白费功夫。先看模块型号的命名规则。以常见的EM AE04为例这是4路模拟量输入模块支持电压和电流信号。而EM AR02是热电阻模块EM AT04是热电偶模块。你不能拿AE04去接PT100也不能拿AR02去接4-20mA变送器。这个在选型阶段就要确认清楚。电压信号和电流信号的核心区别在于抗干扰能力。电流信号在长距离传输时衰减小、抗电磁干扰强所以工业现场远距离传输基本都用4-20mA。电压信号一般用在距离较近、干扰较小的场合。4-20mA相比0-20mA的好处是4mA对应零点如果线路断了电流降到0mAPLC能识别出断线故障而0-20mA的零点就是0mA断线了你也分不清是零信号还是断线。2.2 两线制、三线制、四线制变送器的接线差异这是现场最容易搞混的地方。两线制变送器只有两根线供电和信号共用这两根线PLC的模拟量输入模块需要提供回路供电或者外接24V电源串入回路。三线制和四线制变送器有独立的供电线信号线单独输出。具体到S7-200SMART的接线两线制变送器正极接24V负极接模块的I端子模块的I-端子接24V-或0V。电流从24V正极流经变送器、模块内部采样电阻、回到0V。四线制变送器单独接24V供电信号输出正接模块I信号输出负接模块I-模块的公共端接0V。这里有个坑AE04模块的通道组态是通过DIP开关设置的电压和电流模式对应的开关位置不一样。而且模块上标注的端子含义要仔细看不同批次的丝印可能略有差异。我见过有人把电流信号接成了电压模式结果读到的数值一直在漂排查了半天以为是干扰其实就是DIP开关没拨对。2.3 模块DIP开关设置与量程对应关系以EM AE04为例模块侧面有一组DIP开关每个通道对应几个开关位。设置成电流模式时对应的开关拨到ON电压模式则拨到OFF。具体对应关系在模块侧面有丝印标注但字很小现场光线不好的话容易看错。设置完之后在STEP 7-Micro/WIN SMART软件里还要确认系统块中的模拟量配置。软件里能看到每个通道的测量类型如果这里和实际DIP开关不一致读上来的数值就是错的。我一般习惯在调试记录里把每个通道的DIP设置和软件设置都拍照存档后面维护的时候不用再拆开看。3. 实物接线从传感器到PLC端子的完整链路3.1 四线制压力变送器接入AE04的实操步骤假设你手头有一个四线制压力变送器输出4-20mA量程0-1.6MPa要接到AE04的第一个通道。接线步骤如下第一步确认变送器供电电压。大部分工业变送器是24VDC供电少数是220VAC。确认清楚再接线接错了直接烧。第二步给变送器供24V。从开关电源引24V和0V到变送器的供电端子。注意极性反接一般不烧但也不工作。第三步信号线接入模块。变送器的信号输出正通常标SIG或OUT接到AE04的I0端子信号输出负SIG-或OUT-接到I0-端子。第四步模块公共端处理。AE04的0V端子和M端子要接到开关电源的0V确保共地。这一步很多人忽略导致信号漂移。第五步DIP开关设置。把通道0对应的开关拨到电流模式位置。第六步屏蔽层处理。信号线的屏蔽层单端接地一般接在PLC柜的接地排上。两端都接会形成地环路反而引入干扰。提示屏蔽层千万不要接到0V上这是很多现场的通病。屏蔽层接0V等于把干扰信号直接引入参考电位正确做法是接柜体接地排。3.2 两线制变送器的回路供电接法两线制变送器只有两根线接线逻辑是24V → 变送器 → 变送器- → 模块I → 模块内部采样 → 模块I- → 0V。整个回路串联。这里要注意的是模块的I-端子和0V端子之间在模块内部可能是隔离的也可能不是具体看模块型号。如果不确定用万用表量一下I-和0V之间是否导通。不导通的话I-必须单独接到0V否则回路不通。两线制变送器还有一个最小工作电压的问题。变送器本身需要一定的电压才能工作通常7-12V模块内部采样电阻也会分压。如果24V电源电压偏低或者线路太长导致压降过大变送器可能无法正常输出。实测中如果发现变送器输出始终偏低先量一下变送器两端的电压是否在正常工作范围内。3.3 模拟量输出通道接变频器频率给定的接线S7-200SMART的模拟量输出模块如EM AQ02输出0-10V或0-20mA信号常用来给变频器做频率给定。以0-10V输出接变频器为例模块的V0端子接变频器的模拟量输入正端如AI1模块的V0-或0V端子接变频器的模拟量输入负端如AI1-。同时模块的0V要和变频器的0V共地否则电压参考不一致给定值会偏。如果变频器端是4-20mA输入那就用模块的电流输出模式接线类似但DIP开关要拨到电流档。有些变频器支持电压/电流切换通过变频器侧的拨码开关或参数设置这个也要确认。实际调试时我一般先在程序里给一个固定值比如对应50%输出的数值然后用万用表量模块输出端子的电压或电流确认硬件链路没问题再去调变频器参数。这样能把问题定位在硬件还是参数上。4. 程序里的量程换算从原始值到工程值4.1 模拟量输入原始值的数值范围S7-200SMART的模拟量输入通道对于0-10V或0-20mA信号对应的原始数值范围是0-27648。对于4-20mA信号4mA对应553020mA对应27648。这个27648不是随便定的它和模块内部ADC的位数有关是西门子PLC的通用规范。为什么4mA对应5530而不是0因为4-20mA信号中4mA是零点但ADC转换后4mA对应的数值是5530。计算方式27648 × (4/20) 5529.6取整就是5530。所以4-20mA信号的可用范围是5530-27648对应工程量的0-100%。如果传感器是0-10V对应0-27648。如果是±10V对应-27648到27648。如果是±5V对应-13824到13824。这些数值关系要记清楚换算的时候才不会搞错。4.2 整数运算实现工程量线性变换在S7-200SMART的程序里做量程换算最常用的方法是用整数运算。假设压力变送器量程0-1.6MPa输出4-20mA原始值存在AIW16里。换算公式工程值 (原始值 - 5530) × (1600 - 0) / (27648 - 5530) 0简化后工程值 (原始值 - 5530) × 1600 / 22118这里工程值用整数表示单位是0.001MPa所以1600代表1.6MPa。如果要在触摸屏上显示1.6MPa再除以1000或者用浮点数显示。在梯形图里实现这个运算要注意整数乘除法的溢出问题。S7-200SMART的整数乘法结果是32位但如果你先乘后除中间结果可能超出32位范围。比如(27648-5530)×1600 35,388,800这个数在32位整数范围内最大2,147,483,647没问题。但如果量程更大或者精度要求更高就要考虑用浮点数运算。4.3 浮点数换算与触摸屏显示对接如果对精度要求高或者需要在触摸屏上显示小数用浮点数更方便。步骤是先把整数原始值转成浮点数ITD指令然后做浮点减法、乘法、除法最后用ROUND或TRUNC指令转回整数用于显示或者直接以浮点数格式传给触摸屏。具体指令序列ITD AIW16, VD100 —— 整数转双整数DTR VD100, VD104 —— 双整数转浮点-R VD104, 5530.0, VD108 —— 减去零点偏移*R VD108, 1.6, VD112 —— 乘以量程上限/R VD112, 22118.0, VD116 —— 除以量程跨度最终VD116里就是0.0-1.6的浮点数直接传给触摸屏显示即可。注意浮点数运算在S7-200SMART里占用较多扫描时间如果模拟量通道多、扫描周期要求高要评估一下。一般几个通道没问题几十个通道就要考虑优化了。5. 滤波与断线检测让数据稳定可靠5.1 为什么裸数据不能直接用模拟量原始值直接拿来用你会发现数值在小范围内不停跳动最后一位甚至两三位都在变。这是正常的因为ADC本身有量化误差现场还有电磁干扰、电源纹波等因素。如果直接把这个值送到PID回路或者报警判断会导致误动作。所以必须做滤波。最简单的滤波是取平均值连续采样N次求平均。N越大越平滑但响应越慢。一般取8-16次比较合适兼顾平滑度和响应速度。在S7-200SMART里实现平均值滤波可以用一个循环缓冲区。每次扫描把新值存入缓冲区然后求所有值的平均。也可以用一阶滞后滤波惯性滤波公式是本次输出 α × 本次采样 (1-α) × 上次输出。α取0.1-0.3之间根据信号波动程度调整。5.2 一阶滞后滤波在梯形图中的实现一阶滞后滤波在梯形图里实现起来很简洁。假设α0.2当前采样值存在VD200上次滤波结果存在VD204VD204 0.2 × VD200 0.8 × VD204用浮点指令实现*R VD200, 0.2, VD208*R VD204, 0.8, VD212R VD208, VD212, VD204每次扫描执行一次VD204就是滤波后的值。这个滤波器的好处是占用内存少、计算量小而且对突变信号有一定的平滑作用。缺点是如果信号真的发生了阶跃变化输出会缓慢跟随有滞后。实际调试时我一般先把α设大一点比如0.5看响应速度够不够如果波动还是大再往小调。但α太小比如0.05会导致响应非常慢PID控制会振荡。5.3 4-20mA断线检测的逻辑判断4-20mA信号的一个好处是可以做断线检测。正常工作时原始值应该在5530-27648之间。如果原始值低于某个阈值比如5000说明电流低于4mA可能是断线或者变送器故障。如果原始值接近0基本可以确定是断线。在程序里加一个比较如果AIW16 5000置位一个断线标志位触摸屏上报警同时把该通道的PID回路切到手动或者安全值。这个逻辑很简单但非常实用现场维护人员能第一时间知道是线路问题还是工艺问题。对于0-10V信号断线检测就没这么方便了因为0V本身就是有效信号。这种情况下只能靠信号变化率来判断如果信号长时间不变或者跳变剧烈可能是异常。但误判率较高一般不做自动判断靠操作员观察。6. 模拟量输出从程序数值到物理信号6.1 输出通道的数值范围与DIP设置模拟量输出模块如EM AQ02的数值范围也是0-27648对应0-10V或0-20mA。如果组态为电流输出4mA对应553020mA对应27648。DIP开关的设置和输入模块类似但输出模块通常每个通道独立设置。在程序里给输出通道赋值直接把0-27648的整数写入AQW寄存器即可。比如要输出5V对应0-10V量程的50%写入13824。要输出12mA对应4-20mA量程的50%写入(553027648)/2 16589。6.2 输出值限幅与安全保护给变频器做频率给定的时候一定要做限幅。比如变频器最高频率50Hz对应输出10V那程序里计算出的输出值不能超过27648。如果PID运算结果超了直接写进去可能导致变频器过速。限幅逻辑很简单如果输出值 27648则输出值 27648如果输出值 0则输出值 0。对于4-20mA输出下限是5530而不是0因为低于5530意味着电流低于4mA变频器可能报故障。另外设备停机或者急停的时候输出通道应该归零或者归到安全值。这个逻辑要在程序里明确处理不能依赖变频器自身的保护。6.3 输出与输入通道的联动调试方法调试模拟量输出的时候我习惯用“手动给定万用表测量”的方式先验证硬件链路。在程序里做一个手动模式触摸屏上可以手动输入输出百分比然后量模块输出端子的电压或电流是否对应。确认硬件没问题后再切到自动模式让PID控制。如果输出端量到的信号和程序里给的值对不上先检查DIP开关和软件组态是否一致再检查负载阻抗是否在模块允许范围内。AQ02的电流输出负载阻抗一般不超过500Ω电压输出负载不低于1kΩ。接变频器的时候变频器模拟量输入的阻抗通常在几百欧姆要注意匹配。7. 现场调试中那些手册不会告诉你的坑7.1 信号跳变不一定是干扰很多人一看到模拟量跳动就说是干扰加滤波电容、换屏蔽线、改接地折腾一圈发现没用。实际上信号跳变可能是变送器本身的问题也可能是工艺参数真的在波动。我遇到过一次压力变送器读数一直在跳最后发现是管道里真的有气泡在流动压力本身就不稳定。排查顺序应该是先确认工艺是否稳定再用万用表量变送器输出是否稳定最后才怀疑PLC模块和干扰。如果万用表量到的电流是稳定的但PLC读到的值在跳那才是PLC侧的问题。7.2 模块供电不足导致的诡异现象S7-200SMART的扩展模块供电来自CPU本体的背板总线但模拟量模块的负载能力有限。如果你挂了多个扩展模块尤其是模拟量输出模块带较重负载的时候可能出现供电不足。表现是模块工作不稳定、输出值偏差大、甚至模块不识别。计算一下总负载每个扩展模块的背板电流消耗在手册里有标注CPU能提供的背板电流也是有限的。超了就要加总线供电模块或者减少模块数量。这个在项目规划阶段就要算清楚不要等到现场才发现。7.3 接地与屏蔽的实际处理经验接地这个话题在工控圈里能吵三天三夜。我的经验是模拟量信号的屏蔽层单端接地接在PLC柜的接地排上不要接0V不要两端接地。信号线和动力线分开走线槽至少保持20cm以上距离交叉时垂直交叉。如果现场干扰特别严重可以考虑用隔离变送器或者信号隔离器。隔离器把信号侧和PLC侧完全隔开能有效切断地环路。成本不高但效果明显尤其是变频器多的场合。还有一个细节开关电源的0V和接地排之间的关系。有些现场把0V和接地排短接有些是浮空的。这个要根据整个系统的接地方式来定不能一概而论。如果系统里有多台设备通过通信线连接接地方式不一致会导致通信异常。7.4 模拟量通道的扫描周期影响S7-200SMART的模拟量输入更新速度是有限的不是每个扫描周期都刷新。模块的转换时间加上总线传输时间实际更新率可能在几十到几百毫秒一次。如果你的程序扫描周期很短比如几毫秒会读到重复的值。做滤波的时候要考虑这个因素。如果采样值根本没更新你滤波算出来的结果就是滞后的。可以在程序里判断原始值是否变化变化了才纳入滤波计算没变化就跳过。这样能提高滤波的有效性。8. 从单个通道到多通道系统的扩展思路单个模拟量通道跑通之后扩展到多通道基本就是复制粘贴的事情。但有几个地方要注意通道间的隔离问题、模块间的同步问题、以及程序结构的优化。如果多个通道做PID控制建议把PID运算放在定时中断里执行而不是主程序里。S7-200SMART支持定时中断如100ms把模拟量采集、滤波、PID运算、输出更新都放在中断里能保证控制周期的稳定性。主程序只负责逻辑判断和人机交互。程序结构上建议把每个通道的处理封装成子程序输入参数是通道号、量程上下限、滤波系数输出是工程值和报警状态。这样增加通道的时候只需要调用子程序不用重复写代码。维护的时候也清晰哪个通道有问题直接看对应的子程序调用。最后说一个实际项目中的体会模拟量系统的可靠性三分靠程序七分靠接线和接地。程序写得再漂亮接线一塌糊涂数据照样不可信。所以每次调试我都会花大量时间在接线检查和信号测量上确认硬件链路没问题了再调程序。这个顺序不能反反了就是给自己挖坑。
返回列表