1. 引言
自2002年以来,长江委水文局所属各勘测局陆续配置了Mastersizer 2000激光粒度分布仪,用于河流泥沙粒度分析。自2010年开始正式投产,并直接使用仪器数据进行资料整编。在此过程中进行过大量试验和研究,总结出了许多仪器操作的宝贵经验和实践数据,同时还结合行业规范就仪器应用问题,组织各勘测局颗粒分析人员合力攻关,解决了生产中一系列问题,使其功能得到进一步扩展,成果质量得到保证。本文涉及对Mastersizer 2000中“自定义计算”模块(或“宏”)方面的探索成果,以及功能扩展方面的研究,希望能对Mastersizer 3000的使用提供一些帮助。
1.1. 主要问题
1) Mastersizer仪器的几个重要的参数(折射率,吸收率等)对样品分析结果的影响很大,还有在测量中背景的激光强度与光能值(即激光强度应稳定在70%以上,光能值不大于400)也是检测仪器是否正常的依据。为了保证分析质量,需要增加对这些参数和指标的自动检查功能,以减少出现机率。
2) Mastersizer 2000泥沙分析中,如果样品不经过适当分散,分析结果会出现“细化”现象,即越分析越细,只有经过适当分散后,分析结果才会趋于稳定。为了保证精度,要求样品适当分散后至少分析三次,并计算平均值,单次结果与平均结果偏差不得超过2% [2] ,这就要求在操作界面上既能直接显示检查结果,又能在测试数据超限时予以提示,以方便操作人员及时发现问题和处理。
3) 激光粒度仪测试结果,实际是模型反演计算的结果 [3] ,当计算结果与检测结果比较后进行修正,使其残差最小(通常要求小于2%)时则为最终结果。这实际给最大颗粒的检测结果带来较大的随机性误差,不可直接取用,就需要按照“行业规范”要求,采用逼近的方法提取(通常取D99.95为最大粒径)。
4) 数据输出格式,按现行规范,级配百分数取位为一位小数,而Mastersizer仪器的分析报告中显示两位小数,输出的文本数据为三位小数,需要统一。
5) 打印报告模式各站需统一,其中勘测局名和站名应根据测站编码自动填写,分析样品性质应由特定样品名称判断和填写等。
6) 数据输出后,为了能导入南方片软件进行整编,有些辅助信息,如施测号数、分析号、测量水温等,需要在仪器操作界面中输入,并随数据一起输出,以方便信息处理,减少出错几率。
1.2. 参数的配置和选项
马尔文MS 2000仪器的测量参数配置 [4] ,无论是手动还是SOP方式(操作介面见图1),对于河流泥沙粒度分析,想得到高质量的分析结果,有几个重要基础参数或指标值得关注。现将部分试验结论分享如下:
1) 分散时间:对悬浮颗粒在超声波或搅拌环境下的分散时间,过长可能会产生颗粒细化现象;泵速和搅拌速度:其选择与样品颗粒大小有关,以既不产生气泡又能让所有颗粒循环进入样品检测窗口为最佳。
2) 遮光度:反应了样品颗粒在检测窗口里的浓度和大小,过低会使测试结果产生较大误差、过高又会出现多重散射现象。
3) 样品的测量时间和快照次数:测量时间在3~12 s之间时,其测量结果稳定 ;测量快照在6000次/s以上的能适合大部分泥沙样品(背景即是如此)。
4) 在指定仪器光学特性中,分散介质水的折射率:可采用1.33为确定值;泥沙颗粒的吸收率一般可在0.8~1.4之间选取,折射率可在1.52~1.62之间选取。主要基础参数配置经验值见表1。

Figure 1. Interface for parameter configuration and options
图1. 参数的配置和选项介面

Table 1. Configuration of fundamental parameters for sediment particle grade analysis
表1. 泥沙颗粒级配分析基础参数配置表
5) 在指定仪器结果计算中,对泥沙样品,计算模型应选择“通用型”,其中的计算灵敏度选择“常规”、颗粒形状选“不规则”。
2. 数据处理模板的建立
2.1. 模板的组成
按照功能划分,模板主要由以下几部份组成:
1) 支撑文件部份:测站信息文件(存放勘测局名、站名、测站编码等)、粒度分级文件(.siz存放分析粒径组)、SOP文件(存放设置的分析参数)、Calculations.clc文件(存放自定义计算编辑结果)、测量文件(存放原始数据)、模板文件(打印模板.pag和输出模板.edf分别存放编辑的分析报告内容和数据输出内容)、报告打印文件(存放分析报告)、文本输出文件(.txt存放整理后的测量数据)等。
2) 配置选项部份:主要是布置相关文件、替换参数输入介面加入辅助项目和配置分析参数、进行分析成果批量导入南方片软件数据库等,由一个小程序(MS2000助手2.06.exe)的工具组来完成。
3) 打印模板部份:主要是按特定要求编辑的“页面布局”和“屏幕布局”模板,内容主要包括打印页面布置、文字编辑、函数和自定义计算编辑结果调用、数字有效位数转换、测站和粒度分级信息写入、对测量结果检查和提示等。
4) 输出模板部份:主要是对测量文件的分析数据成果的提取,包括函数和自定义计算编辑结果调用、导入测站信息、粒度分级和测量结果(平均级配、平均粒径、中数粒径、最大粒径)等。
2.2. 相关文件命名规则及管理
为配合模板的数据调用,对相关保存文件的命名作了统一规定:
1) “新建测量文件”的命名,按同一个站、同一年的同一个分析项目建一个文件,如“2010年汉口站悬沙.mea”。
2) “测量样品名称”的命名,按“测站编码_分析号_起点距或起点距范围_相对水深或相对水深范围”命名,其中“起点距”和“相对水深”可以是区间号,也可能是连续号,之间用“-”或空格区分。对悬沙颗粒的命名必须只含有3个下划线,例如“60000000_5_780-1700_0.2-0.8”;对床沙 [5] 颗粒的命名必须只含有2个下划线,例如“60000000_5_780”;对平均结果的重新命名不应再增加下划线。
3) 自定义测站信息文本文件,如“C:\MS2000数据输出\配置文件.txt”。格式为:“测站编码、站名、勘测局名”,如“60101300石鼓长江上游”。如果粒径分级已经确定,可以将粒径分级也存放在测站信息文本里面,方便模板调用。
2.3. 报告模板的建立
报告模板的建立主要借助于MS2000软件中的“报告设计器”功能 [4] ,制成的模板见图2。
1) 表头部分:该部分主要是勘测局名、站名和年份。我们预先创建的配置文件已将站码与站名、局名进行了匹配,模板会根据样品名称中的站码自动查找信息。模板可以根据参数“分析时间”,获得年份信息。根据样品名称中所含有的“_”数量,判断样品是属于“悬移质”还是“床沙”。
2) 参数部分:这部分陈列了需要查验的各个参数。其中大部分可以直接调用。施测号数,垂线号数的获得是通过修改操作界面,借用其他参数实现。例如下图:在左图“来源名称”右侧的输入框中输入的内容是赋值给参数“来源名称”的,我们借用这个输入框输入了垂线号数(“1”)。在输出数据时,只要调用参数“来源名称”,即可获得我们输入的内容。操作界面上标签的修改可以使用软件SDL Passolo 或Exescope等软件来实现。例如图3中“来源名称”(左图)已经被修改成“垂线号数”(右图)。

Figure 2. Structural form of analysis report
图2. 分析报告单结构形式

Figure 3. Substitution of operating interface
图3. 操作界面的替换
3) 曲线部分:直接调用程序自带控件中的图表。
4) 级配数据:这里显示的两行数据是通过编写“自定义计算”来实现的,下列代码为获得分析样品级配百分数的核心代码:
Format(Round(Stats.ResultBelow(Val(mysizes(i))),1)0.0)
mysizes(i)是个存放粒径分级的字符串数组,调用函数Stats.ResultBelow后获得小于某粒径的百分数,调用round函数修约到小数一位,最后用Format函数规范输出数据的格式。
5) 检查部分:如果所查验的各个参数没有超限,则不会显示任何内容;如有红字出现,则需要对比规范检查相应参数,及时重新分析。该功能是通过获取需要查验的各个参数数值,经过与规范对比做出结论的。
2.4. 数据输出模板
Mastersizer 2000提供数据输出模板,可以自定义粒径分级用于输出,但用此方法输出的级配百分数是三位小数。我们的目的是报告模板的数据需要与输出的数据完全一致,以便于后续的整编复查。因此我们运用自定义计算编辑器编写了一个名为“Data output”的“自定义计算”,用上述同样的代码,获得级配的百分数。“Data output”可以作为一个参数,在编辑数据输出模板时被调用, 这样输出的数据就能符合要求了(如图4)。当然,在“Data output”中,我们可以加入代码,进行数据合理性检查,确保数据合理可信。
3. “自定义计算”模块的运用
上述报告模板的建立和数据的输出,都涉及编辑“自定义计算”模块的运用,因此掌握好该模块功能的使用十分重要。
3.1. 掌握“自定义计算”模块的途径
通过对Mastersizer 2000的帮助文件和示例,可以掌握编写自定义计算的方法。如下图“ActiveX Automation Members”窗口中罗列了所有可用的库函数及其支持的属性和方法。我们只需调用模块中的参数(Param)和统计数据(Stats)并编辑,即可解决我们的问题。
3.2. “自定义计算”模块的编辑
1) 如何调用参数(Param),操作介面见图5。
我们分析时使用的光学参数(如颗粒折射率等)以及输入的样品名称,分析日期等,都被作为“参数”保存在每个分析成果里。及时调用这些“参数”的值,对比规范做出判断,可以实现对参数设置的实时监控。
2) 如何调用统计数据,见图6示例。通过帮助文件中的示例,可以掌握如何调用各种统计数值(如:结果小于,结果大于等等)。获取了级配数据,我们才可以对其进行合理性检查。
3) 如何实现不同自定义计算中的变量传递。在编写“自定义计算”过程中,我们需要把一些内容存放到一个“变量”中,以供不同的“自定义计算”调用,甚至让Mastersizer 2000程序调用。例如:我们监控到有参数超限,如何显示出来让操作人员得到提示?见图7。
如前所述,参数(Param)的属性与字段选择器的选项是一一对应的。实践中发现有些参数是不常用的,如测量前说明、测量后说明默认都是空值。可以把这些参数当作全局变量使用。目前我们在编写“自定义计算”时,把所有的监控结果都赋值给“测量后说明”,让其在操作界面上显示出来,从而实现了操作界面的监控

Figure 6. Call statistical values example
图6. 调用各种统计数值示例

Figure 7. Transfer of variables in defined computation
图7. 自定义计算中的变量传递
显示。在报告模板中,底部的检查部分其实也就是调用了“Param. post Measurement Instruction”(测量后说明)来实现的。
4) 自定义计算如何运行,Mastersizer 2000有两处可以编写自定义计算:第一处是利用“自定义计算编辑器”,在此处最多可以编写20个计算。编写完成后,对于今后的样品分析,这些“自定义计算”会被直接运行,而对于以前的分析成果是不自动改算的,必须点击“重新编辑”才会改算。第二处是在报告编辑器中,在这里编写好了“自定义计算”,只是在打开报告时被运行。
4. 扩展功能的实例
4.1. 单次检查功能
样品经过了适当的分散,分析结果趋于稳定时得到的结果是我们所需要的。为此我们开发了单次检查功能。通过对样品的各单次结果与其平均结果的比较,控制分析偏差。
Mastersizer 2000程序的安装目录中有些开源模块,可用VB或记事本打开。单次检查功能通过改写模块“CreateAverage.BAS”(即创建平均结果)实现。运行后的结果:不合格(单次结果与平均结果超过绝对值2)的在“测量后说明”中标注出来,合格的没有任何标注(见表2)。
原理:“CreateAverage.BAS”模块在计算出平均结果前,会对拟平均的各单次结果中的重要光据进行累加,在此过程中我们可以插入代码,把各单次结果相应的级配百分数提取出来,存放到一个数组里,该数组是个二维数组,第一维存放单次的次数,第二维存放相应的级配百分数。“CreateAverage.BAS”模块创建平均结果后,再把平均结果的级配百分数提取出来存放到另一个数组里。然后把各单次结果与平均结果的相应级配百分数进行比较,发现大于2的即退出检查,把相应信息赋值到“测量后说明”中,可在操作界面中显示,合格的则没有内容写入。每次运行“创建平均结果”,所有中间数据都被保存下来,调用结束后,这些数据存放“X:\MS2000数据输出\单次检查数据.txt”中,以备检查。
4.2. 新增代码实例

当然,实现过程还需要考虑很多问题,我们只是提供了一种思路。

Table 2. Checklist of three average errors
表2. 三次平均误差检查对照表
5. 结语与展望
1) Mastersizer 2000激光粒度仪主要为工业粉体粒度测试而研发的,能应用于宽粒度的天然河流泥沙颗粒分析,对于广大泥沙颗分工作者无凝是一种劳动力的解放。为使这种高科技产品更好的普及,我们把长期实践中积累的一些经验和开发出的实用功能奉献给同行们,以利于生产中参考使用和经验交流。
2) “马尔文激光粒度仪泥沙数据处理模板”,经过近几年的运行取得良好效果,从自动配置基础参数、对分析数据进行质量检查并提示、按测站编码打印标准格式报告单、形成批量分析数据的文本输出文件等,到可直接提供给南方片整汇编软件进行整理、整编等流程,大提高了工作效率,减少了人工出错机率,保障了成果质量。
3) 新一代产品仪器Mastersizer 3000已经问世,通过对Mastersizer 2000中“自定义计算”(或Mastersizer 3000 中称“宏”)方面的探索,以及功能扩展方面的研究,并将其成果扩展到Mastersizer 3000的应用中,以期进一步发挥Mastersizer在颗粒分析中的作用,提高泥沙粒度分析的技术水平。