多组分纤维定量顺序溶解方案的算法实现

2018-07-23 03:54陈健伟
福建轻纺 2018年7期
关键词:回潮率百分率单元格

陈健伟

(福建出入境检验检疫局检验检疫技术中心,福建 福州 350003)

为适应现代纺织品的性能需求,越来越多的纺织品采用了多组分纤维混纺的方式,从而对纺织纤维检测工作提出了更高的要求。现行标准FZ/T 01026-2017《纺织品 定量化学分析 多组分纤维混合物》给出了4组分乃至更多组分纤维混纺比的计算模型[1],其基本操作方法是将混合物中的各组分逐一溶解,类似于GB/T 2910.2-2009中的方案4[2]。该标准给出了n组分纤维混合物试样净干质量百分率的计算公式(以下简称“通用计算式”),并以此为基础,对4/5/6组分混纺织物定量化学分析结果计算进行了示例。若混合物纤维组分数大于6,则应利用通用计算式进行计算。为简化计算过程,避免因变量过多导致计算出错,有必要利用计算机语言实现纤维定量顺序溶解方案的算法。

VBA的英文全称是Visual Basic for Application,是VB语言的子集,不但继承了VB的开发机制,而且与VB有着相同的程序结构和开发环境。它能简单直观地访问Office软件的各个部分,比如可以直接读写Excel单元格。这使我们学习程序设计变得非常直观,能利用编程轻松地解决实际工作问题[3]。故选择Excel中自带的VBA开发工具实现上述算法,并开发出计算工具。

1 计算工具的界面设计

先新建一个Excel文件,另存为xlsm格式,然后打开此文件进行计算工具界面的设计。确定需要输入的内容包括:试样净干质量m、组分数n、每一组分的名称和公定回潮率、每一步溶解采用的试剂(用于确定质量损失修正系数,即d值)、每一步溶解完剩余的质量r;需要输出的内容是各组分的净干质量百分率P或者公定质量百分率PA(根据需要选择)。

由于纤维类型及其回潮率、溶解试剂都是种类较多而相对固定的,这几类数据通过下拉选择的形式输入较为合适;计算方式也可以设计成选择的形式,备选项包括“净干含量”和“结合回潮率含量”两种。另外,由于d值较多,在点击需要输入d值的单元格时,可根据纤维类型和溶解试剂给出相应提示。根据这些思路,先在Sheet1工作表设计出工具主界面,见表1。

表1 计算工具主界面

其中,B1单元格用于输入组分数,设置其数据有效性条件为“允许整数,介于2到20”。D1单元格用于输入净干质量m,设置其小数位数为4位。F1单元格设置其有效性条件为“允许序列,来源:净干含量,结合回潮率”。第1列从A4开始往后的单元格用于输入组分名称,第2行从C2开始往后的单元格用于输入试剂名称;第3行从C3开始往后的单元格用于输入每一步溶解完剩余的质量r(小数位数也设为4位),第2列从B4开始往后的单元格用于显示计算结果。此外,H1单元格用于显示d值填写提示。

为了便于纤维类型及其回潮率、溶解试剂的选择输入,在Sheet2工作表中设计出如图2的备选资料界面(此表可扩展)。然后将上述用于输入组分名称的单元格的有效性条件设置为“允许序列,来源==Sheet2!$A$2:$A$99”,用于输入试剂名称的单元格的有效性条件设置为“允许序列,来源=Sheet2!$C$2:$C$99”。至此完成工具界面设计。

图2 备选资料界面

2 用VBA语言实现结果计算

首先,定义普通变量n、m和一维数组变量r、P、PA、A,以及二维数组变量d,以上变量的意义与标准一致;定义各个循环用的整型变量i、j、k,以及存放临时计算数据的double型变量temp1、temp2。以下是各个模块的主要功能。

2.1 组分数n改变触发事件

当B1单元格内容改变时触发两个事件,一是重新对n赋值,二是根据n的大小确定需要填写的单元格区域,并用其他颜色高亮;同时参照FZ/T 01026-2017中表1的形式,在相应单元格填上“溶解”、“--”等字样,以便于辨识。代码从略。

2.2 d值填写提示

当点击需要填写d值的单元格时,根据此单元格位置,先找到对应的纤维类型和溶解试剂,然后在H1单元格给出相应的填写提示,例如“聚酯纤维 在75%硫酸中损失系数”。代码从略。

2.3 结果计算模块

此模块为核心模块。先用各单元格填写的内容对相应变量进行赋值,然后计算。

先计算Pn:

temp1 = 1

For i = 1 To n - 1

temp1 = temp1 ⋆ d(n, i)

Next

P(n) = Round(100 ⋆ r(n - 1) ⋆ temp1 / m, 2)

再计算Pk(2≤k≤n-1):

For k = n - 1 To 2 Step -1

temp1 = 0

For i = k + 1 To n

temp2 = 1

For j = 1 To k - 1

temp2 = temp2 ⋆ d(i, j)

Next

temp2 = P(i) / temp2

temp1 = temp1 + temp2

Next

temp1 = 100 ⋆ r(k - 1) / m - temp1

For j = 1 To k - 1

temp1 = temp1 ⋆ d(k, j)

Next

P(k) = Round(temp1, 2)

Next

计算P1,完成净干含量的求解:

P(1) = 100

For i = 2 To n

P(1) = P(1) - P(i)

Next

P(1) = Round(P(1), 2)

计算公定质量百分率PA:

temp1 = 0

For i = 1 To n

A(i) = Application.VLookup(Cells(i + 3, 1),Sheet2.Range("A2:B99"), 2, False)

PA(i) = P(i) ⋆ (1 + 0.01 ⋆ A(i))

temp1 = temp1 + PA(i)

Next

PA(n) = 100

For i = 1 To n - 1

PA(i) = Round(100 ⋆ PA(i) / temp1, 1)

PA(n) = Round(PA(n) - PA(i), 1)

Next

最后根据需要,将净干质量百分率P或公定质量百分率PA填写回对应单元格,模块结束。

2.4 其他模块

包括“清空质量记录和结果”和“初始化”两个模块,前者用于同样的实验条件下输入新的m、r值进行结果计算,后者用于初始化界面以设计新的实验条件。代码从略。

3 计算结果验证

以FZ/T 01026-2017的附录A~附录C给出的示例[1],用本工具进行计算,结果如表1(按照第1组分、第2组分、第3组分……的顺序排列,用斜杠分隔开)。

由表1可见,本工具的计算结果与标准对比,在净干质量百分率P的结果里面仅有≤0.01%的计算误差,由于足够小可以忽略;而公定质量百分率PA的结果则与标准完全一致;在填完各组数据后,运行“计算”模块马上能得到结果,计算效率高。

表1 本工具计算结果与标准结果对照

4 小结

文章所描述的工具对于顺序溶解方案通用性强,计算结果准确、计算过程高效,对简化多组分纤维定量结果计算过程具有指导意义。使用时可以根据需要在工具中加入更多的功能,例如坩埚和称量瓶质量的输入模块,以及平行实验计算功能等,使之更加便于实际使用。

猜你喜欢
回潮率百分率单元格
微波籽棉回潮率测量仪技术试验报告分析
机采棉回潮率对纤维长度影响的实例分析
流水账分类统计巧实现
求百分率的实际问题(部级优课)
求百分率的实际问题(部级优课)
玩转方格
玩转方格
微波法籽棉回潮率测试仪在籽棉收购加工中的应用研究
10%+10%为什么等于0.11
塔式气流皮棉加湿机特点分析