news 2026/6/12 21:45:20

博图 FB 封装模拟量换算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
博图 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 多重实例化、模拟量软件滤波配套写法,需要的朋友可以收藏关注 ᕙ(`▿´)ᕗ
(◕ᴗ◕✿) 深耕工控,日日精进

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 21:41:15

AI 驱动的 Rust 项目架构推荐:基于代码仓库分析的模块划分建议

AI 驱动的 Rust 项目架构推荐:基于代码仓库分析的模块划分建议一、Rust 项目架构的痛点:从单文件到多 crate 的迷茫期 学 Rust 的时候,第一个项目通常是单文件 main.rs,所有代码都塞在一个文件里。随着功能增长,开始拆…

作者头像 李华
网站建设 2026/6/12 21:41:01

3分钟上手FastReport:免费开源报表工具完全指南

3分钟上手FastReport:免费开源报表工具完全指南 【免费下载链接】FastReport Free Open Source Reporting tool for .NET6/.NET Core/.NET Framework that helps your application generate document-like reports 项目地址: https://gitcode.com/gh_mirrors/fa/F…

作者头像 李华
网站建设 2026/6/12 21:39:58

终极指南:如何用Mesen模拟器重温NES经典游戏

终极指南:如何用Mesen模拟器重温NES经典游戏 【免费下载链接】Mesen Mesen is a cross-platform (Windows & Linux) NES/Famicom emulator built in C and C# 项目地址: https://gitcode.com/gh_mirrors/me/Mesen 想要在电脑上完美体验红白机时代的经典游…

作者头像 李华