许多工业流程都涉及一些在至少部分生产过程中会动态变化的参数,例如化学反应釜的温度或压力、高压釜的真空升压等。为了保证批次间的一致性,必须找到一种方法来比较这些动态的生产或设置阶段,类似于使用控制图来监控稳态生产。
只需几个相对简单的步骤,即可使用 JMP 从多个代表性批次中创建动态控制限值。然后,可以在 Graph Builder 中将未来的批次叠加到这些历史限值上,以确保它们符合这些历史限值。本演示展示了创建控制限值的步骤,以及如何使用这些限值进行批次间比较。此外,还讨论了处理此类数据时面临的一些挑战。
欢迎收听我关于动态过程控制图的讲座。统计过程控制 (SPC) 已应用多年,用于监控围绕固定设定点波动的过程。该过程会随时间推移进行监控,其波动可分为两部分:普通原因波动,即贯穿整个过程的持续波动,除非对过程进行根本性改变,否则这种波动将始终存在;以及特殊原因波动,即由于过程外部因素导致波动增大,从而使过程失控的情况。
然而,工业中的许多流程并非围绕一个固定点运行。许多批次生产流程会按照预先设定的步骤,逐步处理原料,其中温度、压力和真空度等参数可能会随时间增加。例如,在间歇式反应釜中将单体转化为聚合物,或者通过增加混合器的真空度或压力来调节溶剂含量或物料的水分含量。我们仍然需要一种方法来确保批次间结果的一致性,以及流程行为的长期稳定性,并识别出不符合标准流程的批次。
本次演示展示了一种务实的视觉方法,可以随着时间的推移限制这些过程,监控过程中的偏差,还可以查看生产设备的设置和冷却、状态监控,以确保这些启动和冷却阶段随着时间的推移保持一致。
我所在行业的一些例子包括间歇式混合机,在这种混合机中,单体被添加到混合机中。混合机加热后保持恒温,然后冷却。这种方法不仅可以监测温度随时间的变化,还可以监测其他参数,例如电机扭矩,这些参数可能指示聚合度。另一个例子是高压釜,我们用它处理碳纤维复合材料,并按照预定的速率施加真空和温度。我们可能会设置一些保温阶段,将材料在特定温度下保持一段时间,然后再冷却部件。
我们运用这种技术进行状态监测的一个例子是双螺杆挤出机。在挤出机中,我们通过多个真空泵施加真空,以去除树脂中的挥发性成分。我们希望确保这些真空泵以最佳设置运行。我们会观察这些真空泵的启动阶段,即它们从大气压降至生产运行开始时设定的真空度的过程。所有这些工艺参数随时间变化的工艺都适用于这种方法。
在这种情况下,我们从数据历史记录器中提取了一些数据。幸运的是,这些数据是以电子方式采集的。我们有多个批次的数据堆叠在一起,这里标记为“数据制造商”。我这里有 21 个批次的物料,每个批次都有不同的批号。我有工艺参数(真空度)以及预先设定的时间间隔。我每 5 秒采集一次数据,并且我知道每个批次都应该在不超过 17 分钟的时间内达到 210 毫巴的设定值。这样,对于每个批次,我每 5 秒采集一次数据,总共有 205 行数据。以下是这 21 个批次的数据。
我现在需要处理这些数据,并对其进行整理,以便计算每个时间增量下的正常值范围。我将拆分数据表,并为每个时间增量创建一列,例如 5 秒、10 秒、15 秒等等,一直到 17 分钟。每生产一个批次,我都会保留一行数据。由于这里有 21 个批次的数据,我将使用其中 15 个批次的数据来创建控制限。然后,我将用这些控制限来检查接下来的六个批次的数据,以确保过程的行为持续正常、稳定且可预测。
我将使用我的堆叠数据集。我会转到“表格”并选择“拆分”。我希望按过程参数(即真空)进行拆分。我将按真空拆分列。我将按批次号分组,这样每个批次号对应一行数据,但我希望每个时间增量对应一列数据,所以我将按时间拆分。我们可以从预览表中看到,数据格式符合预期。每个批次对应一行,每个时间增量对应一列。如果满意,我们可以单击“确定”,数据表就创建好了。正如我所说,我们将使用前 15 个批次的数据来创建控制限。这意味着我将隐藏并排除最后 6 个批次。我的数据表现在看起来就像幻灯片中的那样。
现在,我需要计算每个时间增量的控制限。我在这里要做的是,观察每个时间段内预期达到的真空度。它的平均值是多少?围绕这个平均值的控制限是多少?在第5个时间增量和第10个时间增量等,预期压力变化范围是多少?
我将创建单独的移动极差图,因为每个数据都是单独设置的独立运行。我们需要单独的移动极差图。我希望每个时间增量都生成一个,并且确保它们按时间顺序排列,也就是按数据提供者的顺序排列。总共需要生成 205 个控制图,所以只需要几秒钟就能完成。
现在,每个时间段我都对应一个单独的移动极差图,图表描述中会注明时间段。我可以滚动浏览这些图表,检查其中是否只有普通原因造成的偏差,没有异常数据点。如果我对每个图表都满意,就可以保存这些控制限值。以 5 秒为例,在挤出机回退 5 秒后,我预期挤出机内的真空度为 914.6 毫巴,范围在 865 到 963 毫巴之间。
如果我点击红色三角形,就可以保存这些限值。它会保存每个时间段的限值,我想把它们保存到一个大表格里。这样就能创建一个表格,其中每个时间段都有一个平均值,以及我预期总体正常值范围。我会整理一下表格,删除不需要的列,只保留均值和控制限值。这就是我未来分析所需的全部数据。
由于这一列的标签取自控制图,您可以看到该数据格式并非连续数值型。我需要将其改回连续数值型,以确保其数据类型正确,并可将其重新标记为“时间”,以便将来能够清楚地了解该数据列的内容。
我现在有一个数据表,其中包含了每个时间增量的控制限。接下来,我需要重新整理原始数据,按时间和批次随时间的变化进行排序,以便生成图表。我将回到堆叠数据。我将再次拆分数据,但这次的拆分方式略有不同。我仍然要按工艺参数“真空”拆分,但这次我想按时间分组。每个时间增量对应一行,并且我想按批次号拆分,这样每个批次就对应一列。我可以再次查看预览,确保数据分组方式符合预期。确认无误后,点击“确定”。现在,每个批次的时间序列数据都以单独的列形式呈现,将来如有新的批次数据,我可以随时添加。
我可以把计算出的控制限添加到数据表中,也可以创建一个虚拟链接。如果创建虚拟链接,数据就不会永久绑定到数据表中,因此也可以在其他数据集中使用,或者可以随时重新计算和修改,而无需更改数据集。这些数据仍然保留在过程数据中,可以用于设定过程限值。我可以在不实际将其合并到数据表的情况下使用这些数据。这就是我打算做的。我要在两个数据表之间创建一个虚拟链接。
为此,我需要在两个数据集中都包含相同的一列。在本例中,这列是时间。我将右键单击时间列,并将其创建为链接 ID。此列包含用于将其链接到数据表的标识信息。在数据表中,我再次单击时间列,然后右键单击。现在,这就是链接引用,我将把它链接到包含控制限和平均值的表。
如果我查看左侧的列选择,可以看到我的每一批物料、时间列,以及底部的引用虚拟链接列。我们可以看到这里有一个虚拟链接,也就是这个小图标。目前这些列是隐藏的,并且已被锁定。我无法在这个数据表中更改这些列中的数据。我必须返回到实际包含数据的表格。如果我想查看它们,可以取消隐藏。我可以看到那里的数据,但无需取消隐藏即可使用它们。为了保持整洁,我再将它们隐藏起来。
现在,我将使用 Graph Builder 绘制这些控制限值,这是一个非常灵活的数据可视化平台。然后,我可以依次将每个批次的数据叠加到这些控制限值上,观察每个批次的行为是否符合我基于用于创建这些控制限值的 15 个历史批次数据的预期。
如果我打开数据表,点击“图表”,然后点击“图表构建器”。显然,X轴代表时间。接下来,我会选择控制限值。我只需要控制限值线,不需要单个数据点。为了更清晰地显示生产批次,我会将它们灰显并转换为虚线,这样就能清楚地区分批次数据和控制限值。我会将它们设为灰色,用虚线表示平均值,用点线表示控制限值。现在,我们可以看到正常流程随时间的变化情况。我们预期流程行为的每个值都会稳定且一致地落在虚线范围内,并且平均值会接近虚线。
现在,我可以将一个未用于创建控制限的新批次叠加到控制限之上。例如,将 2023 年 6 月 9 日的批次叠加到控制限之上,并检查其随时间的变化情况,与预期值进行比较。我们还可以添加列切换器,以便查看和滚动浏览各个批次,并将每个批次与控制限进行比较。如果我选中顶部的生产批次,然后选择所有其他批次作为替换列,我的列切换器中就会显示所有已生产的批次列表,我可以逐个滚动浏览,并将我的六个新批次与历史控制限进行比较。如果我向数据表中添加新批次,我可以轻松地将它们与这些控制限进行比较。如果我想将这些数据发送给可能没有 JMP 的其他人,我还可以将其制作成动画并录制下来,保存为 GIF 格式,然后将其作为附件添加到电子邮件中。
另一个例子,基于我们的一些数据。这里我们有一个树脂加工过程,需要加热树脂。我们需要将其保持在设定的温度一段时间,然后再冷却以便排出。同样,我们创建了类似的数据和控制图。我们可以看到,在浏览批次数据时,偶尔会出现数据异常。这些情况需要我们进行调查,因为特定批次与标准批次存在差异。
我们在制造和测试流程的各个环节都广泛应用了这项技术,它能帮助我们及早发现流程失控或设备可能需要维护的迹象,让我们能够在材料或生产设备出现故障之前,从数据中发现这些规律。我们最不希望看到的就是计划外的维护停机。通过监控此类流程,我们可以在设备开始老化之前提前做好规划。谢谢。