Skip to content
Special-WeekPublic

About

功能参考Const工具箱,使用 Rust + egui 编写

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

工具箱

Toolbox 功能参考Const工具箱,使用 Rust + egui 编写的离线桌面计算工具,包含 6 个分类、42 个工具

项目另提供 C++ 版本,源码与构建说明见 cpp_version。

功能分类

单位换算 · 22 个工具

共提供 256 项单位,每项均可作为输入单位,结果列表显示该类别的全部单位。

工具 单位数量 工具 单位数量
压力 15 温度 5
质量流量 8 体积流量 10
质量 14 长度 13
面积 12 容积 14
密度 12 速度 14
力 14 能量 16
功率 12 传热系数 6
导热系数 10 动力粘度 16
运动粘度 10 扩散系数 5
表面张力 8 传热速度(热流密度) 8
扭矩 9 浓度 25

ITS90 温标换算 · 5 个工具

工具 功能
工业热电偶 B、E、J、K、N、R、S、T、C、D、G、L、LR、U、A 共 15 种分度号,温度与热电势双向换算、参考端补偿、微分热电势、适用型号的等级允差、分度表和特性曲线。
工业热电阻 22 个分度选项,覆盖铂、铜、镍与自定义 CVD;支持 R₀ 设置、温度/电阻双向换算、电阻比、解析变化率及适用类型的等级允差。
标准热电偶 S/B 型固定点校准、温区多项式系数输入、校准点拟合及残差;支持双向换算、参考端补偿、分度表和曲线。
标准铂电阻 SPRT 高低温子区间、证书系数、固定点拟合、电阻比、银点 d/W660 修正及分度表;另提供 CVD 三点系数拟合。
热敏电阻 3~6 阶多项式、去除二次项的 Steinhart–Hart 形式、独立 A/B 系数、校准点拟合和残差;多项式模式支持分度表,另提供 β 模型。

工业热电阻的 22 个选项:

  • Pt100:385、3910、3911、3916、3926。
  • 385 系列:Pt10、Pt25、Pt50、Pt200、Pt300、Pt400、Pt500、Pt1000、Pt2000。
  • 铜电阻:Cu50(428)、Cu100(428)、Cu10(427)。
  • 镍电阻:Ni100(617)、Ni100(618)、Ni120(672)、Ni1000。
  • 自定义 CVD:可编辑 R₀、A、B、C。

压力工具 · 4 个工具

工具 功能
压力表标准器选型 数字/活塞标准器核验、量程覆盖与允差比判断、按被检量程或检定范围推荐;提供常用和扩展量程系列。
压力变送器标准器选型 压力允差折算电信号,并与电测读数百分比及固定误差合成评定;支持标准器核验、推荐,以及独立两通道跨度比模型。
高度差修正 液体或当地密度气体静压差;标准状态气体密度换算、表压/绝压及环境气柱修正;输出压差、移至被检高度的修正量和等效水柱。
气压高度换算 七层标准大气模型,位势高度与绝对气压双向换算,并输出空气密度。

温湿度工具 · 4 个工具

工具 功能
湿度换算 填写环境温度和大气压,以相对湿度、露点/霜点、湿球温度或混合比之一求其余参数;支持 °C/K/°F。
耳温计黑体发射率修正 输入黑体与探头的温度、发射率,计算亮温及亮温修正;支持多次反射平衡和一次反射近似。
黑体辐射源发射率误差 有效波长近似或 Planck 辐射平衡;支持单波长、8~14 μm 和 7~18 μm 波段。
辐射温度计示值修正 使用仪表设定发射率、辐射源发射率、背景温度及光谱响应,求示值修正量与修正后温度。

湿度结果包括相对湿度、水面露点、适用时的冰面霜点、饱和水气压、水气压、含湿量(体积分数)、以干空气计的体积比、绝对湿度、质量比、比湿、混合比、标准状态含水量和湿球温度。

误差工具 · 5 个工具

工具 功能
重复性计算 测量次数、均值、样本标准差、极差、均值标准差、相对标准偏差(RSD)和逐项残差。
极差法计算 逐项输入测量值,或输入最大值、最小值及次数;按极差系数估算标准差与均值标准差。
合成误差 同单位分量与灵敏系数的平方和根合成、最坏情况界限;另支持相对/绝对压力误差及单位归一。
误差分析 测量值与参考真值的绝对误差、相对误差、引用误差及误差绝对值;引用值可独立填写。
不确定度计算 A/B 类分量预算、贝塞尔/极差法、六种 B 类分布、独立灵敏系数、嵌套分组、平方和根/最大贡献、包含因子、修约和明细;另提供快速评定。

测量值与分量均使用可增减的独立输入框。

其他工具 · 2 个工具

工具 功能
变送器 压力、温度、相对湿度、露点和绝对湿度的量程与信号双向换算;支持线性/开方特性,以及 mA/V/mV 输出配置。
三次均匀 B 样条插值 动态 Q 型值点、自然端点插值、端点外推、采样范围与步进、分页预览、曲线悬停取值、完整 CSV 导出及后台任务取消。

构建与运行

在项目根目录执行命令。需要支持 Rust 2024 Edition 的 Rust 工具链,以及匹配的本机链接器;Windows 使用 MSVC 工具链时需具备相应的 C++ 构建工具和 Windows SDK。

项目名为 Toolbox,Cargo 包名为 toolbox,可执行目标名为 Toolbox。依赖版本由 Cargo.lock 固定。

开发运行:

cargo run --locked --bin Toolbox

发布模式运行或构建:

cargo run --locked --release --bin Toolbox
cargo build --locked --release --bin Toolbox

Windows 发布程序默认生成在 target/release/Toolbox.exe。首次构建需要下载 Cargo 依赖;依赖已缓存后可在上述命令中增加 --offline。

热电偶计算系数在编译时嵌入程序。运行已构建的 EXE 不需要额外附带 data/,也不需要 Python、Node.js 或网页脚本。源码构建时必须保留 data/thermocouple/。

生成 Windows 发布包

在项目根目录使用 PowerShell 执行以下步骤。先退出正在使用构建目录或发布目录中同名 EXE 的旧程序,避免文件被占用。

cargo build --locked --release --bin Toolbox
if ($LASTEXITCODE -ne 0) { throw "发布构建失败,已停止打包。" }

New-Item -ItemType Directory -Path 'dist' -Force | Out-Null
Copy-Item -LiteralPath 'target/release/Toolbox.exe' -Destination 'dist/Toolbox.exe' -Force
Copy-Item -LiteralPath 'README.md' -Destination 'dist/README.md' -Force
Copy-Item -LiteralPath 'licenses/PsychroLib-LICENSE.txt' -Destination 'dist/PsychroLib-LICENSE.txt' -Force

Compress-Archive -LiteralPath @(
    'dist/Toolbox.exe',
    'dist/README.md',
    'dist/PsychroLib-LICENSE.txt'
) -DestinationPath 'dist/Toolbox-windows.zip' -Force

生成的 dist/Toolbox-windows.zip 包含程序、说明和现有第三方声明。这里显式列出打包文件,避免将旧文件或压缩包本身再次打入归档。

dist/
├── Toolbox.exe
├── README.md
├── PsychroLib-LICENSE.txt
└── Toolbox-windows.zip

target/ 与 dist/ 均由 .gitignore 排除。发布附件使用 ZIP 即可,源码仓库保留 Cargo.toml、Cargo.lock、README、src/、data/ 和 licenses/。

项目结构

Toolbox/
├── Cargo.toml                 # 项目信息、可执行目标与运行依赖
├── Cargo.lock                 # 锁定依赖版本
├── README.md
├── .gitignore
├── data/
│   └── thermocouple/           # 八型 NIST 热电偶正向参考函数系数
├── licenses/                  # 第三方声明
└── src/
    ├── main.rs                # 程序入口、窗口和主题
    ├── app.rs                 # 应用状态、表单输入与页面分派
    ├── app/dashboard.rs       # 首页、筛选和自适应卡片
    ├── catalog.rs             # 六大分类及 42 个工具的目录
    ├── navigation.rs          # 侧栏分类、折叠与选中状态
    ├── fonts.rs               # 中文、数学和符号字体回退
    ├── units/
    │   ├── mod.rs             # 单位定义、换算与输入范围检查
    │   ├── data.rs            # 256 项单位的名称、符号及系数
    │   └── notes.rs           # 各类单位的换算约定和说明
    └── calculators/
        ├── mod.rs             # 计算模块组织
        ├── common.rs          # 共用输入行、结果、提示及数字格式
        ├── explanations.rs    # 工具内显示的计算说明
        ├── numerics.rs        # 稳定统计、平方和根及有限值检查
        ├── calibration.rs     # 多项式、区间反算和 QR 拟合
        ├── math.rs            # CVD 基函数、线性方程及标准大气
        ├── axis.rs            # 曲线坐标轴、刻度和标签
        ├── division_table.rs  # 分度表、分页、特性曲线和 CSV
        ├── its90.rs           # 工业热电偶、CVD 拟合及 β 模型页面
        ├── errors.rs          # 统计误差与快速不确定度页面
        ├── range_method.rs    # 极差法测量次数与系数表
        ├── thermocouple/      # 附加分度曲线、标准热电偶和允差
        ├── rtd/               # 工业热电阻曲线、模型和允差
        ├── sprt/              # SPRT 参考函数、偏差和分区
        ├── thermistor/        # 多项式热敏电阻与拟合页面
        ├── pressure/          # 量程、静压差、核验和标准器推荐
        ├── humidity/          # 饱和压及湿空气参数模型
        ├── radiation/         # 有效波长与 Planck 辐射模型
        ├── transmitter/       # 线性和开方传递模型
        ├── uncertainty/       # 不确定度分量树与合成
        └── spline/            # 样条曲线绘制

上述工具目录通常还对应一个同名 .rs 文件,例如 rtd.rs、pressure.rs、spline.rs,用于页面或模型的入口;子目录保存进一步拆分的实现。纯数值模型与 UI 组织分别维护。

计算与功能边界

数据、精度与状态

  • 计算使用 f64 双精度浮点数。界面显示会格式化或舍入,不能把显示位数当作实际计量精度;CSV 不按界面显示的小数位截断。
  • 不接受 NaN、无穷大和无效量程。模型也会检查适用温区、正值、单调分支和无法表示的数量级;不同模型的有效范围分别判断。
  • 各页“计算说明”定义当前采用的公式、单位和正负方向。校准示例值只用于演示,应按实际证书替换;模型规定的修约与界面格式化是两回事。
  • 输入只在当前进程内保存,关闭程序后不会恢复;没有证书/标准器命名档案库、重启持久化、Excel 批量导入或 XLSX 校准报表。

单位换算

  • 温度页面换算的是绝对温度值,拒绝低于 0 K 的输入;温差只使用比例,不能套用温度值的零点偏移。
  • 压力换算只改变单位,不自动把表压换成绝压。水柱按 4 °C、汞柱按 0 °C 的约定系数计算,不按现场介质密度或当地重力自动修正。
  • cal/kcal/Btu 采用国际蒸汽表定义,其中 1 cal = 4.1868 J。公制与英制马力、英制与美制加仑分别处理。
  • 质量流量 t/a 按每年 8000 运行小时计算;美制石油桶按 42 美制加仑,英制桶按 35 英制加仑;历史英制节按 6080 ft/h。
  • 浓度的质量比、体积比和质量浓度采用等密度 1000 kg/m³ 基准,滴体积约定为 20 滴/mL。这些结果不能直接用于任意密度的实际物质;当前没有实际密度、摩尔浓度或气体状态输入。
  • “传热速度”这一工具名称下计算的是热流密度(功率/面积)。

热电偶、热电阻与校准

  • 工业热电偶按各分度号自己的曲线温区计算;U 型限于 −200~600 °C。B 型的非正基准热电势处于多值区,不能唯一反算;分段不连续区间也会拒绝不可靠解。
  • IEC 60584-1 允差仅对已内置等级数据的型号显示。等级温区和曲线换算温区分别检查,没有允差数据不等于允差为零。
  • 工业热电阻共有 21 个预设和 1 个自定义 CVD。Cu10(427) 的 10 Ω 为约 25 °C 标称值,0 °C 的 R₀ 为 9.035 Ω;修改 R₀ 会同步改变计算电阻。
  • 铂电阻允差区分绕线式与薄膜式;非 385 铂电阻和自定义 CVD 的等级结果为公式参考值。铜电阻有相应温度允差公式,镍电阻未内置等级允差数据。
  • 自定义 CVD 必须在支持范围内形成正值、单调递增的曲线。三点拟合需可独立确定 A/B/C,至少一个校准点应低于 0 °C,不能用退化点组强行求解。
  • 标准热电偶固定点输入是实际热电势(mV),不是修正量;直接系数模式限定所选温区,B 型反算限定 ≥50 °C 的分支。参考端补偿仍须符合当前模型的有效范围。
  • SPRT 的 Rtp 是水三相点 0.01 °C 电阻。高温分区上限分别为 961.78、660.323、419.527、231.928、156.599、29.765 °C;低温显示区间为 −189.344~0 °C 或 −38.834~0 °C。高低温分区可单独停用,但不能同时停用;银点 d 项仅在对应高温模式启用。
  • 热敏电阻的多项式温度用 K、电阻用 Ω,A/B 系数独立拟合,不保证互为精确反函数。当前阶数为 3~6,校准点必须足够且独立;β 模型及多项式模型均不能替代其证书给定的适用条件。

压力、湿度与辐射

  • 标准器推荐只在内置量程和准确度组合中筛选,必须同时满足覆盖范围及评定判据;它不是设备数据库,也不自动判断具体仪器的其他性能或规程条件。
  • 高度差以被检表高于标准器为正。p标准−p被检 = ρgΔH,把标准压力移至被检高度的修正量取其相反数。气体高差使用局部恒定密度近似,环境气柱按标准大气估算。
  • 气压高度模型覆盖 −1000~86000 m,输入气压为绝对压力;输出是标准大气的位势高度,未计入实际天气,也不是几何海拔换算。
  • 湿度环境和湿球模型温区为 −100~100 °C,需满足 0~100 %RH、水气分压小于总压及有效湿球反算范围。非正露/霜点输入按冰面处理,结果分别显示水面露点和适用时的冰面霜点;零湿度没有有限露/霜点。
  • 湿度混合比以干空气质量为分母,比湿以湿空气总质量为分母;标准状态含水量按 0 °C、101.325 kPa 表示,不能混用这些定义。
  • 辐射模型的发射率须满足 0 < ε ≤ 1。有效波长法限制背景温度不高于 200 °C,温差按 0.01 °C 修约后再参与示值修正;Planck 模型假设单波长或平坦波段响应,波长范围为 0.1~100 μm。
  • 有效波长模型和 Planck 模型的误差定义不同,应按结果标签区分“真温−模型温度”“亮温−真温”和“修正后−示值”。耳温计多次反射模型假设两表面相互完全可见;一次反射近似可能在等温时仍有截断偏差。

统计、不确定度与变送器

  • 重复性使用以 n−1 为分母的样本标准差,支持 2~50 个测量值。相对标准偏差为 s/|均值|×100%,均值为零时不定义;它与绝对量纲的重复性标准差含义不同。
  • 极差法使用 2~9 次测量的两位小数系数表:1.13、1.69、2.06、2.33、2.53、2.70、2.85、2.97;这是标准差估计方法。
  • 平方和根用于不相关分量的合成估计;最坏情况绝对值和、最大绝对贡献与平方和根不是同一判据。压力相对误差先乘量程跨度,再统一单位合成。
  • 绝对误差保留正负号,相对误差与引用误差分别使用各自的参考分母;分母为零时不定义对应百分误差。
  • 不确定度预算表支持顶层 1~20 个分量、每组 1~12 个子分量,递归分组深度上限为 4。各分量先求标准不确定度,再应用灵敏系数;B 类输入是区间半宽。
  • 扩展不确定度为 U=k·uc,k 必须大于零。修约按 uc、U 的较大值和所选有效位确定小数位,当前最低修约到整数位;修约后 U 由修约后的 uc 乘 k 得到。没有自动计算有效自由度、相关系数或置信水平。
  • 变送器输入限定在所设量程内,范围上限必须大于下限;开方使用非负量程比例,不做负区或超量程外推。mA/V/mV 及过程量范围由用户按仪表配置填写,切换信号名称不代表自动换算仪表配置。

分度表与 B 样条

  • 分度表最多 50,000 行,按显示温标的步长采样并包含终点,预览每页 10 行;表中变化率为有限差分,页面模型提供的解析导数则按对应算法计算。
  • B 样条需要 2~500 个 Q 点,x 必须严格递增。均匀的是参数节点,Q 点的 x 可以非等距;若插值后 x 曲线回折,程序会拒绝无法唯一求 y(x) 的输入。
  • 自然端点条件施加在参数曲线上,端点 x/y 的二阶参数导数均为零。外推延用端点三次式,仅在 x 的单调分支内有效。
  • 样条采样最多 5,000,000 点,范围末端始终包含最大 x,步进须能被当前数值精度分辨。预览只显示前 100 行、每页 10 行,CSV 导出全部采样点。
  • 分度表 CSV 使用带 BOM 的 UTF-8,样条 CSV 使用 x,y 表头及数值;大规模样条导出在后台进行,可取消,写入失败或取消时不会覆盖已有目标文件。

About

功能参考Const工具箱,使用 Rust + egui 编写

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages