▎西门子博途 LGF 库详解 · 16:类型转换(下)——格雷码、UTF8、儒略日、Unix时间戳、GPS 坐标
承接上一篇的基础类型转换,这篇覆盖 6 个编码和坐标转换块——从绝对值编码器的格雷码到天文计算的儒略日。
一、6 个块一览
类型转换组(4.8 Converter,下半)
| 块名 | 类型 | 版本 | 功能 |
|------|------|------|------|
| LGF_BinaryToGray | FC | V3.0.1 | 自然二进制 → 格雷码 |
| LGF_GrayToBinary | FC | V3.0.1 | 格雷码 → 自然二进制 |
| LGF_DecodeUtf8 | FC | V1.0.0 | UTF8 字节数组 → 解码后的字符串 |
| LGF_EncodeUtf8 | FC | V1.0.0 | 字符串 → UTF8 字节数组 |
| LGF_DTLToJulianDate | FC | V0.0.1 | DTL → 儒略日 |
| LGF_JulianTimeToDTL | FC | V0.0.1 | 儒略日 → DTL |
| LGF_DTLToUnixTime | FC | V3.0.2 | DTL → Unix 时间戳(秒) |
| LGF_UnixTimeToDTL | FC | V3.0.1 | Unix 时间戳 → DTL |
| LGF_GpsDDToGps | FC | V3.0.2 | GPS 十进制度 → 度分秒格式 |
| LGF_GpsToGpsDD | FC | V3.0.2 | GPS 度分秒 → 十进制度 |
二、引脚详解
#### LGF_BinaryToGray / LGF_GrayToBinary
| 引脚 | 类型 | 方向 | 说明 |
| value | DWord | IN | 待转换的值 |
| Ret_Val | DWord | OUT | 转换结果 |
#### LGF_DTLToUnixTime
| 引脚 | 类型 | 方向 | 说明 |
| date | DTL | IN | DTL 格式的日期时间 |
| Ret_Val | DInt | OUT | Unix 时间戳(自 1970-01-01 起的秒数) |
| error | Bool | OUT | 错误标志 |
| status | Word | OUT | 状态码 |
#### LGF_UnixTimeToDTL
| 引脚 | 类型 | 方向 | 说明 |
| unixTime | DInt | IN | Unix 时间戳 |
| Ret_Val | DTL | OUT | 对应的 DTL 日期时间 |
| error | Bool | OUT | 错误标志 |
| status | Word | OUT | 状态码 |
#### LGF_GpsToGpsDD
| 引脚 | 类型 | 方向 | 说明 |
| degrees | DInt | IN | 度(整数部分) |
| minutes | DInt | IN | 分 |
| seconds | LReal | IN | 秒(含小数) |
| eastWest | Bool | IN | TRUE=东经/北纬,FALSE=西经/南纬 |
| Ret_Val | LReal | OUT | 十进制度(如 121.4767) |
#### LGF_GpsDDToGps
| 引脚 | 类型 | 方向 | 说明 |
| decimalDegree | LReal | IN | 十进制度 |
| degrees | DInt | OUT | 度 |
| minutes | DInt | OUT | 分 |
| seconds | LReal | OUT | 秒 |
| eastWest | Bool | OUT | 方向标志 |
三、实战案例
#### 案例 1:绝对值编码器格雷码解码
绝对值编码器输出 10 位格雷码,需要转成标准二进制再映射角度:
GrayToBinary 编码器解码
rawBinary := LGF_GrayToBinary(encoderGrayCode);
angle := rawBinary * 360.0 / 1024.0; // 10位=1024个位置
#### 案例 2:云平台数据同步用 Unix 时间戳
阿里云 IoT 平台要求时间戳为 Unix 格式,PLC 需要上报设备数据的采集时间:
DTL To Unix 时间戳
unixTimestamp := LGF_DTLToUnixTime(currentDTL);
// 结果如 1749897600 = 2026-06-14 08:00:00 UTC
#### 案例 3:GPS 坐标从文档录入 PLC
设备手册上写的安装位置是"121°28'36"E",录入 PLC 时需要转成十进制度供 AstroClock(第 02 篇)使用:
GPS DMS → DD
longitudeDD := LGF_GpsToGpsDD(degrees := 121, minutes := 28, seconds := 36.0, eastWest := TRUE);
// 结果: 121.4767°
四、总结与下载
下载信息
| 项目 | 内容 |
|------|------|
| 库名称 | Library of General Functions (LGF) |
| SIOS-ID | 109479728 |
| 下载地址 | 中文站:www.ad.siemens.com.cn/download/documentdetail_12471.html |
| 当前版本 | V5.1.1(数据以此版为准;全球站另有 V5.2.1) |
| 费用 | 完全免费 |
下篇预告:LGF 库详解 · 17——温度单位转换。℃℉K°R,9 个块涵盖全部工业温度单位,外加通用转换器 ConvertTemperature。欢迎点赞、在看、转发。