共计 3469 个字符,预计需要花费 9 分钟才能阅读完成。


一、SMP 文件,这个带目录的二进制文档究竟是讲了什么
SMP 文件不是文本,而是一种二进制档案,直接用记事本打开只能看到乱码。它的组织方式可以比喻成一个「带目录的文件夹」:文件开头是固定的文件头(含格式签名 MIC##&&FS、版本号、创建与修改时间等),紧接着是一张目录表,表里每一条记录都指明了某个数据块在文件中的起始位置和大小。这些数据块在 Micromeritics 内部被称为 SUBSET,按编号归类——样品描述、方法参数、穿透计参数、核心测量数据、材料属性、事件日志等各占一块,比如样品质量和抽真空参数放在 SUBSET626,接触角、表面张力和压力程序表放在 SUBSET627,最关键的逐点测量数据(压力、电容变化量等)则存在 SUBSET630。要读懂一个 SMP 文件,思路就是先读文件头、再查目录表定位到目标块、最后按该块的字段格式逐字节解析。特别要提一个机制:当你在 MicroActive 里修改了样品描述之类的信息,软件不会覆盖原来的数据块,而是在文件末尾追加一个新块,再更新目录表的指向。这导致同一字段在不同文件里的物理位置并不固定,解析时只能依赖目录表动态定位,不能把偏移量写死。
二、SMP 原始数据 ≠ 软件给你看的数据
1、SMP 里只存的是原始电容(pF)。你在报告里看到的体积(mL/g)是MicroActive算出来的。
2、高压段的压力被悄悄修正过。 SMP 存的是传感器原始读数,MicroActive 出报告时默认对高压段加了「汞柱头压修正」(约 3.2~3.9 psia)。这意味着如果你拿原始压力直接算孔径,结果会和官方报表对不上。
三、MicroActive处理SMP文件是如何处理数据的?
1、MicroActive的平滑算法:你从 MicroActive 导出、平时直接拿去画图、写报告、发论文的那条孔径分布曲线,不是原始计算结果——它是被一套特定算法平滑过的。Log Differential 和 Differential 两列之间的换算系数不是 ln(10)!,不是平滑微分列,实际用的是由网格步长 h 决定的因子 (10^h − 1)/h,即先把累积进汞量 V 放到 log₁₀(D) 坐标下 → 用 Akima 插值重采样到 250 个等间距的 log 网格点 → 在网格上用 9 点二阶 Savitzky-Golay 求一阶导数(得到平滑的 dV/dlogD)→ 再插值回原始孔径点。
2、各列的定义与来源(标绿的是excel中不会被MicroActive输出的)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
四、软件开发
把文件格式、计算口径、连同这套平滑算法全部摸清并复现之后,我把它们包成了一个轻量的桌面工具——既然能自己读、自己算、还能复现官方曲线,那不如做成一个真正能日常用的东西。
相比较于官网的特点
需要说明一下目前的适用范围。这个工具是针对 Micromeritics(麦克)AutoPore 系列压汞仪、由 MicroActive 软件生成的 .SMP 文件开发的,开发和验证过程中使用的是 AutoPore V 9600 配 MicroActive 2.03.00(文件格式版本 MIC##&&FS 0200),并已用几十个带实际测量数据的真实 SMP 文件做过交叉验证。如果你用的是同系列仪器和相近版本的 MicroActive,基本可以直接打开使用;其他型号或差异较大的格式版本,由于 SMP 内部块结构可能不同,能否正确解析需要实测才知道——这种情况欢迎反馈样例文件,我可以据此适配。
功能上,它目前覆盖的是日常分析中最高频的那条流程:打开单个或多个 SMP 文件、按复现的 MicroActive 算法计算孔径与孔径分布(含那套平滑逻辑)、多样品叠加对比、在线修改接触角和表面张力并即时重算、框选压力区间做局部分析、以及把选中样品一键导出为 Excel。
它暂时还不能做的事也讲清楚:它不是 MicroActive 完整报表系统的替代品,不包含数据库管理、批量自动出报、以及全部报告项的复刻;一些尚未完全确认的字段(如个别版本下的某些方法参数)也不保证 100% 准确。简单说,它解决的是「为了对比几个样反复导出」这类琐碎痛点,而不是替你出正式报告。