欢迎光临
我们一直在努力

博图 FB 封装模拟量换算

博图 FB 封装模拟量换算|两种实现方式(NORM_SCALE / 一次函数 y=kx+b)可直接复制

大家好,本篇延续模拟量科普内容,手把手把模拟量量程换算封装成独立 FB 功能块,一次封装、反复调用,多个压力 / 温度 / 液位传感器不用重复写代码,极大精简程序。
提供两套等效写法,一套调用博图标准指令,一套纯数学公式手写,新手都能看懂,完整代码直接自取。

适用场景

  • 标准线性模拟量传感器,PLC 原始 IW 数值转实际物理工程量,支持额外零点补偿偏移量。
  • 西门子 S7-1200/1500 通用。

方法 1:标准库指令 NORM_X + SCALE_X 缩放(官方推荐)

原理:先把原始整数归一化到 0.0~1.0,再映射到自定义物理量程。
//1、原始IW数值归一化 0.0~1.0
分辨率比例 := NORM_X(
MIN := #IN_分辨率MIN,
VALUE := #IN_IW,
MAX := #IN_分辨率MAX);
//2、归一化数值映射到实际物理量程
#测量值 := SCALE_X(
MIN := #IN_量程MIN,
VALUE := #分辨率比例,
MAX := #IN_量程MAX);
//3、叠加零点补偿值,输出最终工程量
#OUT_输出值 := #测量值 + #IN_补偿值;

方法 2:手写一次函数 y=kx+b 纯数学换算(无依赖指令)

工控模拟量换算本质就是线性插值,不用调用系统指令,手动推导系数,逻辑透明,方便新手理解换算底层逻辑。

//y:最终物理量;x:PLC 采集的 IW 原始数值
//计算斜率k
#k:=(#IN_量程MAX – #IN_量程MIN) / (#IN_分辨率MAX – #IN_分辨率MIN);
// 计算截距b
#b := #IN_量程MIN – #k * #IN_分辨率MIN;
// 线性换算原始数值
#测量值 := #k * #IN_IW + #b;
// 叠加补偿偏移
#OUT_输出值 := #测量值 + #IN_补偿值;

关键说明 & 使用贴士

两套代码运算结果完全一致,任选其一即可;

  • 标准 4-20mA /0-10V信号固定;
  • 西门子模拟量模块:IN_分辨率MIN=0、IN_分辨率MAX=27648;
  • 补偿值用于现场传感器零点漂移修正,无偏移时赋值 0 即可;
  • 封装成 FB 块后,多个模拟量通道多次调用,程序结构整洁,便于后期维护、项目交接。

实操举例

压力传感器量程 0~1.0MPa,4mA 对应 0,20mA 对应 27648,零点补偿 + 0.02MPa。
PLC 读取 IW 数值 = 13824,代入后最终输出 0.52MPa。

  • 小tips:AO 模拟量反向输出量程换算,这套 FB 只需要调换量程 MIN、MAX 数值就能复用。

后续会继续分享 FB 多重实例化、模拟量软件滤波配套写法,需要的朋友可以收藏关注 ᕙ(`▿´)ᕗ
(◕ᴗ◕✿) 深耕工控,日日精进

赞(0)
未经允许不得转载:171主机测评 » 博图 FB 封装模拟量换算
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址