▎西门子博途 LGF 库详解 · 17:温度单位转换——℃、℉、K、°R 全套 9 个块
温度是工业控制中单位最混乱的物理量。中国用摄氏度、美国要华氏度、科学计算用开尔文、少数北美设备用兰氏度。同一台设备出口到三个国家,HMI 上就得显示三种单位。LGF 的温度转换组 9 个块就是为解决这个"单位混乱"而设计的。
本篇延续前面的引脚表格风格,把全部 9 个块的接口拆开讲。文末有 ConvertTemperature 通用转换器的单位枚举值说明。
一、9 个块一览
温度转换组(4.12 Converter / Temperature)
| 块名 | 类型 | 版本 | 功能 | 公式 |
|------|------|------|------|------|
| LGF_CelsiusToFahrenheit | FC | V3.0.1 | ℃ → ℉ | °F = ℃ × 9/5 + 32 |
| LGF_CelsiusToKelvin | FC | V3.0.1 | ℃ → K | K = ℃ + 273.15 |
| LGF_FahrenheitToCelsius | FC | V3.0.1 | ℉ → ℃ | ℃ = (°F - 32) × 5/9 |
| LGF_FahrenheitToKelvin | FC | V3.0.1 | ℉ → K | K = (°F + 459.67) × 5/9 |
| LGF_KelvinToCelsius | FC | V3.0.1 | K → ℃ | ℃ = K - 273.15 |
| LGF_KelvinToFahrenheit | FC | V3.0.1 | K → ℉ | °F = K × 9/5 - 459.67 |
| LGF_KelvinToRankine | FC | V3.0.1 | K → °R | °R = K × 9/5 |
| LGF_RankineToKelvin | FC | V3.0.1 | °R → K | K = °R × 5/9 |
| LGF_ConvertTemperature | FC | V3.0.1 | 通用转换:指定源和目标单位 | — |
二、引脚详解
#### 前 8 个专用转换块
接口高度统一,以 CelsiusToFahrenheit 为代表:
| 引脚 | 类型 | 方向 | 说明 |
| value | LReal | IN | 待转换的温度值 |
| Ret_Val | LReal | OUT | 转换结果 |
其余 7 个专用转换块接口完全相同,区别仅在于内部的转换公式。
#### LGF_ConvertTemperature(通用转换器)
| 引脚 | 类型 | 方向 | 说明 |
| value | LReal | IN | 待转换的温度值 |
| sourceUnit | Int | IN | 源温度单位枚举值 |
| targetUnit | Int | IN | 目标温度单位枚举值 |
| Ret_Val | LReal | OUT | 转换结果 |
| error | Bool | OUT | 错误标志 |
ConvertTemperature 单位枚举值
| 枚举值 | 单位 | 绝对零度 |
|--------|------|---------|
| 1 | Celsius(摄氏度) | -273.15℃ |
| 2 | Fahrenheit(华氏度) | -459.67°F |
| 3 | Kelvin(开尔文) | 0K |
| 4 | Rankine(兰氏度) | 0°R |
具体枚举值以 LGF_CONSTANTS 中的定义为准。在使用前建议先在项目中查看 LGF 常量表确认。
三、实战案例
#### 案例 1:出口设备多单位 HMI 显示
PLC 内部统一用摄氏度做 PID 控制,HMI 根据客户地区选择显示单位:
多单位 HMI 显示
CASE region OF
1: displayTemp := processTemp; // 中国:直接显示 ℃
2: displayTemp := LGF_CelsiusToFahrenheit(processTemp); // 美国
3: displayTemp := LGF_CelsiusToKelvin(processTemp); // 科学用途
END_CASE;
#### 案例 2:用 ConvertTemperature 做动态配置
HMI 上做一个下拉框让用户选择源单位和目标单位:
ConvertTemperature 动态转换
result := LGF_ConvertTemperature(value := inputTemp,
sourceUnit := hmiSourceUnit, targetUnit := hmiTargetUnit);
一个块替代 8 个组合,适合源单位和目标单位都由用户动态选择的场景。
#### 案例 3:避免多次转换的精度损失
不要在多个单位之间反复转换
每一次转换都有浮点精度损失。℃→℉→K→℉→℃ 这样反复转换,累积误差可能达到 0.1℃ 以上。正确做法:PLC 内部只存一种单位(推荐℃或K),只在显示或对外通信时实时转换,转换结果不存回数据库。
四、温度单位对照速查
| 单位 | 绝对零度 | 水的冰点 | 水的沸点 |
| ℃ | -273.15 | 0 | 100 |
| ℉ | -459.67 | 32 | 212 |
| K | 0 | 273.15 | 373.15 |
| °R | 0 | 491.67 | 671.67 |
五、总结与下载
下载信息
| 项目 | 内容 |
|------|------|
| 库名称 | Library of General Functions (LGF) |
| SIOS-ID | 109479728 |
| 下载地址 | 中文站:www.ad.siemens.com.cn/download/documentdetail_12471.html |
| 当前版本 | V5.1.1(中文站最新;SIOS 全球站另有 V5.2.1) |
| 兼容 | TIA Portal V17+、S7-1200 (固件 ≥V4.2)、S7-1500 (固件 ≥V2.0) |
| 费用 | 完全免费 |
> 本文所有引脚数据基于 LGF V5.1.1 官方文档。全球站:support.industry.siemens.com/cs/document/109479728
下篇预告:LGF 库详解 · 18——信号发生器(上)。SinusCI、CosinusCI、TriangleCI,用正弦波模拟振动、用三角波做定位扫描。欢迎点赞、在看、转发。