技术交流社群
工控路上独行太难,懂的人一起交流才高效!有需要交流学习的可以扫码加微信,备注技术交流群,一起探讨 PLC 编程、模拟量调试、量程换算、故障排查等工控干货,资源共享、共同进步!
唯一联系方式
微信同号:15325623428
一、引言
在过程控制系统中,温度、压力、流量、液位等物理量通常通过传感器转换为标准的4-20mA或0-10V信号进入PLC。原始信号需经过量程转换、滤波、报警判断等处理才能用于显示和控制。为了提高程序的复用性、可读性和维护性,借鉴西门子PCS7过程控制系统的成熟经验,在TIA Portal中封装标准化的模拟量输入处理功能块具有重要的工程价值。
二、功能块概述
本文所描述的FB块(建议命名为“AnIn”或“SCALE_AIN”)完全参照PCS7库中CH_AIN等块的设计思想,集成了信号偏移、量程转换、比例调节、一阶滤波以及四限报警等核心功能。该块使用结构化文本(SCL)或梯形图(LAD)编写,通过背景数据块(DB)存储参数,可被反复调用。
三、主要应用场合
过程自动化项目:如化工、制药、电力、水处理、食品饮料等行业,需要连续监测模拟量信号的场合。
信号标准化处理:将来自不同传感器(压力变送器、热电阻、热电偶等)的原始信号统一转换为工程单位。
高噪声环境下的信号平滑:通过可调的一阶滞后滤波器抑制现场干扰,提高控制稳定性。
安全联锁与报警:利用四限报警输出(HH/H/L/LL)触发声光报警或紧急停车逻辑。
遗留系统改造与统一:将采用不同编程风格的老旧项目统一到PCS7标准框架下,便于后续维护。
四、封装意义
提高工程效率:无需每个模拟量通道重复编写标定和报警逻辑,直接调用该块并赋值参数即可。
保证程序质量:经过充分测试的标准块可避免人为编码错误,提高系统可靠性。
便于团队协作:所有工程师遵循同一标准,程序结构清晰,易于交接和审查。
简化维护工作:如需修改滤波算法或报警逻辑,只需更改FB块本体,所有调用实例自动更新。
兼容PCS7生态:方便与西门子PCS7项目中的其它标准块(如电机控制、PID调节)协同工作。
五、引脚参数详解
该FB块的输入/输出参数定义如下:
5.1 输入参数(Input)
| 参数名 | 数据类型 | 说明 |
| EN | Bool | 使能端:为TRUE时执行块功能,通常常接TRUE或由上位机控制。 |
| PV_In | Real | 原始过程值输入。通常来自模拟量输入通道转换后的数值(例如0~27648范围的整数转为Real)。 |
| Offset | Real | 零点偏移量。用于补偿传感器或变送器的零位误差,该值将被加到PV_In上。 |
| RangeLow | Real | 测量量程下限(工程单位)。对应PV_In最小值(一般为0)时的物理量值,如0℃。 |
| RangeHigh | Real | 测量量程上限(工程单位)。对应PV_In最大值(如27648)时的物理量值,如100℃。 |
| Ratio | Real | 比例系数。对线性转换后的结果再乘以此系数,可用于特殊曲线的微调,通常设为1.0。 |
| FilterTime | Real | 一阶滞后滤波时间常数(单位:秒)。值越大滤波效果越强但响应越慢;设为0则无滤波。 |
| AlarmEnable | Bool | 报警使能。为TRUE时允许四限报警输出;为FALSE时所有报警输出强制为FALSE。 |
| HH_Limit | Real | 高高报警限值(工程单位)。当最终过程值PV ≥ 此值时,高高报警输出激活。 |
| H_Limit | Real | 高报警限值。 |
| L_Limit | Real | 低报警限值。 |
| LL_Limit | Real | 低低报警限值。 |
注意:通常应满足 HH_Limit ≥ H_Limit ≥ L_Limit ≥ LL_Limit,否则报警逻辑可能异常。
5.2 输出参数(Output)
| 参数名 | 数据类型 | 说明 |
| PV | Real | 处理后的过程值(工程单位)。此为经过偏移、线性转换、比例修正及滤波后的最终值,用于HMI显示、回路控制及报警判断。 |
| PV_Raw | Real | 未滤波的过程值(工程单位)。经过偏移、线性转换和比例修正,但未经过滤波处理,可用于诊断原始信号趋势。 |
| HH_Act | Bool | 高高报警激活。当AlarmEnable为TRUE且PV ≥ HH_Limit时为TRUE。 |
| H_Act | Bool | 高报警激活。 |
| L_Act | Bool | 低报警激活。 |
| LL_Act | Bool | 低低报警激活。 |
| BadAct | Bool | 无效/故障标志。当原始输入PV_In超出有效范围(例如<0或>27648)或量程上下限相等时,该位为TRUE,表示信号不可用。 |
六、典型逻辑流程
该FB块内部通常按以下顺序执行:
零点偏移:PV_Offset = PV_In + Offset
量程转换:Scaled = (PV_Offset - RawMin) / (RawMax - RawMin) * (RangeHigh - RangeLow) + RangeLow其中RawMin、RawMax可在背景DB中预先定义(如0.0和27648.0),也可作为静态参数。 比例修正:Scaled = Scaled * Ratio
一阶滤波:PV = PT1(Scaled, FilterTime),滤波算法为 PV_new = PV_old + (Scaled - PV_old) * (Δt / (Δt + FilterTime))。
报警判断:若AlarmEnable为TRUE,则比较PV与各限值,置位对应报警输出。
坏值检测:若PV_In超出允许范围或转换分母为零,则BadAct = TRUE,同时可选地将PV保持为上一有效值或输出指定安全值。
七、工程应用实例
在某个制药车间反应釜温度监测项目中,共有16路PT100热电阻信号。每路信号经过变送器转为4-20mA进入SM331模块。工程师在TIA Portal中创建了"AnIn"功能块,并为之生成了16个背景数据块。通过分别设置RangeLow=0.0、RangeHigh=150.0、FilterTime=2.0、四限报警值等参数,仅用了不到1小时就完成了所有温度通道的组态。后续添加报警延时功能时,仅需修改FB块内部逻辑,所有实例自动更新,大大缩短了调试周期。
八、FB块封装(源码关注加v免费送)
众号免费学习工控知识、每天分享干货
用最简单的方式教最有用的东西