大家早上好!感谢大家的收看。我是 SUMCO 应用工程团队的 Chris Dennis。对于不了解 SUMCO 的人来说,SUMCO 是一家硅片制造公司。我们生产的硅片是半导体工艺的起始材料。今天,我将讨论如何将控制图进行实用的混合,以处理短期运行和大数据,并使用不同的技术来查找偏移。我将简要介绍控制图的概念,然后进行现场演示,演示如何制作图表,以及如何设置脚本来自定义图表,使其对工艺工程师有用。
如今的制造流程极其复杂,生产节奏飞快。工厂里每天都会发生很多变化。数百种产品同时运行,并跨数十种设备进行生产的情况屡见不鲜。传统的SPC方法会为每个参数设备及零件组合生成一个图表。这些图表很快就会激增至数千张。高变化频率会使图表更加复杂,因为在产品运行过程中,图表中添加的数据点可能很少。
这是我们工厂某个流程的控制图汇编示例。您可以看到,我们有很多零件变更,但每个图表中只有几次运行。理想状态控制图的假设很快就会失效,因为我们没有长时间、一致的运行,而且流程的条件一直在变化。因此,这些假设在控制图中不成立,并且在图表中可能失效。当我们审视流程时,会发现有多个参数增加了复杂性。输入会影响输出,并且相互关联。如果将它们全部分别绘制成图表,可能会失去全局。系统可能会以一种微妙、隐蔽的方式发生漂移,而传统的统计过程控制 (SPC) 无法捕捉到它。
如果我们可以改变一下呢?我们不再绘制原始数据,而是绘制意料之外的数据。建立一个模型,为每个数据点设定一个预测值,然后绘制残差,即预测值与实际值之间的差异。这就是惊喜所在。
下面我们来快速比较一下传统SPC图(或模型控制图)与传统SPC图的优势。传统图表非常适合稳定、简单的流程,一次只处理一个产品。而模型驱动图表是多变量的。它可以处理相关性,消除正常变异并标记出意外变异。完美!非常适合像我们流程中那样混乱的数据。
我们可以选择不同的模型。例如,PCA 模型。当您只想比较传感器或光谱数据等自然结构时,主成分分析 (PCA) 效果很好。当您需要响应来预测质量属性时,偏最小二乘模型非常有效;而回归模型则适用于简单的已知关系。关键在于选择适合您输入数据的模型,并验证您的模型。让我们来谈谈我们将要构建的内容以及我们在 JMP 中的操作方法。
第一步,我建议将绘制的值标准化,尤其是在短期控制图中,当西格玛值变化时,数据不一致,对吧?对数据进行标准化是个好主意。根据我的经验,这也有助于绘制多元控制图,避免某个参数主导某个信号并压倒其他参数。这样可以使所有参数都处于平等地位。下一步是拟合模型。在本例中,我将讨论并展示一个可以在标准 JMP 中完成的模型,你不需要 JMP Pro,也就是主成分分析 (PCA) 模型。这用于模型驱动的多元控制图平台。我们可以运行该模型,并在该模型中绘制每个数据点的残差(T² 统计量),因此我们需要获取这些残差并保存它们。我们可以利用这些残差,构建一个短期控制图来观察残差的变化情况,并发现那些意外事件。当然,最后一步是我们在控制图上设置限值和警报。
让我们来谈谈这张图表的一些特点,以及它为什么可能非常有用,或者说我认为它非常有用。首先,每一条垂直虚线都代表一个产品变化。所有产品都显示在一张图表上,这样我就能了解发生了什么,看看哪里可能存在一些较大的变异,或者一些失控的事件。模型驱动的多元控制图的优点在于,我可以深入研究这些点,然后利用这些点,用单变量方法查看哪些参数出了问题。我可以寻找共同点。然后,我可以进一步深入研究单变量图表。我认为这是监控残差的力量,我将 20 个参数堆叠到这个图表中,作为我要展示的示例,我认为有 10 种不同的产品,我将把它记下来,然后我可以一直追溯到那个单独的图表,我会将其乘以 20 乘以 10...每个工具,我都会得到更简化的图表视图。
好的。为什么要用这种方法?它似乎很适合处理多品种、短期生产数据的产品线。它由模型驱动,因此噪音更小。它能帮你发现关键点。它可以通过脚本轻松扩展。你可以从一种工具集中提取方法,然后轻松地将其复制到另一种工具集或不同的场景中。对于需要查看这些数据的工艺工程师来说,JMP 的可视化工具和动态数据链接功能,以及图表的深度挖掘能力,使得快速、透明地查找和解决问题,并快速获取数据核心变得非常容易。
现在,我想通过一个实例来演示一下。在这个例子中,我将主要编写脚本来构建图表,然后讲解脚本步骤,并对脚本步骤进行一些修改,以增强图表的外观和感觉,使其对流程工程师更有用,帮助他们更快、更轻松地完成工作。
好的。我们转到 JMP 并观看现场演示。
我在本次演示和网站上都附上了日志。它包含数据示例、脚本示例以及脚本开发步骤。我们先从数据表开始。我有一个数据表。这些数据都是经过规范化和清理的数据,您可以直接使用。有 19 到 20 个不同的工艺参数作为工具的输入。这些数据已经准备好了,所以我就不讨论准备步骤了。那是一个完全不同的数据整理和设置步骤。我们将讨论如何进行分析。如果我们手动开始并进行分析,基本流程如下。我将从模型驱动的多元控制图步骤开始,获取残差,然后以此为基础构建短期控制图。
我想写个脚本。我一直以来用来帮助我编写脚本并使编写更容易的技巧之一是,虽然我不是专业的脚本编写者,但我喜欢使用工作流生成器。我要打开它,然后把那个窗口移到这里。我现在就把它设置为录制,然后最小化它,因为我现在不需要查看它。
我们来讨论一下如何编写一个基本脚本。我要做的第一件事是复制这三个步骤的提纲。我将打开一个新的脚本窗口,并设置提纲。我们要做的第一件事是建立模型,然后计算残差,最后绘制短期控制图。我们会这样做。让我们回到我们的样本数据分析质量过程模型驱动的多元控制图。这个平台非常易于使用。我们只需获取所有输入,并将其放入我们的流程参数中。将零件放入“按参数”中,然后点击“确定”。
我们这里有一个图表。我们已经生成了图表。这就是我们讨论过的图表。它包含查看每个不同参数的链接。我们继续,下一步……下一步是获取残差。为了获取残差,我将转到每个图表并保存列值。看着我点击并浏览这9到10个部分,这有点乏味,对此我深表歉意。我会唱歌跳舞,但我不会唱歌,而且我只和我妻子一起跳舞,因为我不太擅长唱歌。我们将浏览并获取剩下的几个。它的作用是,它在数据表中为T²按部分创建了一个新列,并将该残差值填充到数据表中的每一行。现在我们有了每个点的残差,可以绘制了。
下一步,我们可以回到质量流程菜单。我们可以打开控制图生成器。由于我们有多个产品,所以我们需要进行更改。我们会将它们放在同一张图表上。我们将把它们放入短期控制图中。我们将按零件开始。抓住它并接管它。然后,我们不再在这些单独的点上绘制输入,而是绘制残差。将其拖到 y 轴上。现在,我们有了一个短期控制图……查看不同零件的变化。有在控制范围内的,有失控的。我们对所有这些不同的零件都有控制范围。这几乎就是我们从一开始就打算做的。我要关闭它,然后我们现在回去。让我们回去,拿起我们的工作流生成器,然后停止记录。在工作流生成器中,我们已经捕获了制作此图表的所有步骤。
我现在要做的是执行这些步骤,并将它们添加到我的脚本中。我已获得模型残差短期运行步骤。这些步骤中的每一个都是工作流生成器中我们执行步骤的不同部分。我可以简单地抓取它们,从这里复制脚本,然后将其添加到这里。让我们快速浏览一下我们得到了什么。我们得到了模型驱动的多参数控制图。我们拥有大量特定于零件的信息。因为我想将其制作成一个通用脚本,所以我将删除这些信息。这将使我能够将其转移到不同的零件组。使其不那么具体,使其以后更易于转移。现在,我有了这条呼叫线路。
下一步,让我们来看看,也会调用这个模型驱动的多元控制图,但最后我们看到我们已经将其保存为一个对象,并且我们已经保存了 T² 图中的值。
这就是我想要捕获残差的方法。我稍微作弊一下,因为我可能会在输入这些内容时出错,但我要在这里添加一行代码,它基本上设置了一个循环来获取这些残差,所以它和 T² 的保存值命令是一样的。唯一不同的是,我注意到它这里有一个对象,我正在循环并进行调整。当我制作那些多元图表时,我会在这里输入一个对象名称。
最后一步是现在回到这里,制作短期控制图。我先把它复制出来,然后把它放回这里。我要把它添加到短期控制图部分。我要在这里做一些清理工作。确保这些命令语句的结尾都用分号。
我不会在这里继续这一行,所以我会去掉这个逗号。这是我的基本脚本。我已经从工作流生成器中捕获了所有内容并将其放入脚本中。现在,我准备好了。我可以运行该脚本了。现在,我这里有多元图表和短期控制图。这正是我想要做的。如果我看到这个,如果我是用户,然后说:“你看,我注意到我不喜欢的一件事是,我必须在图表之间跳转才能获取信息,而我非常喜欢这个,我可以深入查看正在发生的不同事情。” 我想把这个功能直接添加到这个图表中。用 JMP 很容易做到。我们可以直接在这里把这个图表的脚本保存到剪贴板。然后,我们可以把它粘贴到 Graphlet 的悬停层中。
现在,我们终于搞定了。很简单。我想把它添加到我的脚本中,但我忘了打开工作流生成器。第一次做的时候,我感觉很糟糕,正在处理的时候,突然说了句“哦”。反正我做的时候,工作流生成器也没有捕捉到它,不过有一个简单的解决办法。我们可以打开这个图表的脚本。我们可以保存脚本,然后把它保存到脚本窗口。我们可以把它带过来。我可以查看一下,看看它和我的脚本有什么不同。它就在短期控制图的下方。不同之处,或者说它的不同之处在于,在显示控制面板之后,我拥有所有这些信息,可以将其发送到报表并创建 Graphlet 来设置 Graphlet。我要把所有这些信息都抓取到这里,粘贴进去。
我再次收集了所有这些零件信息。我只需像以前一样删除这些行。确保间距正确。现在,我应该有一个脚本,可以使用 Graphlet 制作该图表。让我们回到这里。让我们关闭它,因为我不想再做一次。让我们关闭它,我不需要看到它。让我们看看我们的脚本。让我们运行脚本,看看我们是否得到了我们想要的结果。让我们看看这里。砰。我得到了它。太好了。现在,它是一个 Graphlet,我把它放进去......我当然得到了同样的东西。看看这个,这没问题,但我个人希望也许只需获取我点击时正在查看的零件的图表,而不必滚动浏览所有这些并将它们全部放在一个地方。
我接下来的操作方式是,再次抱歉没有一步步讲解,但为了节省时间,我将添加一个点击过滤器。要添加这个点击过滤器,基本上,我要进入Graphlet内部的图片语句。我将添加一个不同的命令,并根据点击来定义部分。然后,我将重新构建图表,并添加一个本地数据过滤器,这样我就只显示针对这一项的图表。这样,我们就有了一个可以运行的脚本,我可以在这里选择一个点。此时,我可以点击它,只需点击一下即可生成控制图。让我们将它与最初的图表进行比较。这是第22部分。让我们看看。这张图表和这张图表看起来不一样。所以这里可能发生了什么事情。
这里我展示了两张失控程度相当严重的图表。而这里只有一张。如果你仔细观察,就会发现最大的区别在于这张图表的主成分数量是 5 个,而这里是 8 个。当我添加过滤器时,我丢失了多元图表中用于将每个部分的主成分减少到不同级别的部分。如果你仔细检查这些图表,就会发现它们现在都是 8 个,而之前都没有 8 个。我们可以解决这个问题。同样,为了节省时间,我将在这里添加脚本,但这是一种蛮力方法,我相信有更好的方法,但我在原始脚本中要做的是,在将残差保存到表中之后,手动获取这些残差。我实际上的做法是只运行一个独立的主成分值。
我将根据得出的特征值来获取该成分的值,该程序的工作原理基本上是使用大于或等于 85% 的主成分数量。我将捕获这些数据,并将其放入表格中。然后,我可以使用该表格进行筛选。在我的点击筛选器中,我还需要在此处添加几个命令。我要做的第一件事是获取这个,我会解释一下。从主成分表中,我将选择部分等于 p 的值。这就是我们感兴趣的值。然后,在制作多元控制图时,我要做的第二件事是添加并设置成分的数量。这是我以前按部分删除的操作,因为我想方便地调整部分的数量。现在,部分的数量更加灵活,更具可调整性。
现在我可以过渡到任何内容了。让我们看看我是否正确复制和粘贴了所有内容。我预计这里会出问题,但让我们看看它是否有效。你知道吗?我要做两次,因为我不知道。我展示了一些东西在屏幕上飞来飞去。我想展示的第一件事是,我想展示我有这个零件和组件表。第 22 部分是我们在五个组件之前查看的。我验证了几次,这些都没有问题。太好了,我有这个表。点击过滤器将针对每个部分进行过滤。获取此值以确保我获得正确的图表。这是我的图表。现在我又得到了这个短期控制图。每次垂直虚线消失时,我都在更换零件。
我可以查看,发现我有很多 OC,也有一些非 OC 的数据。让我们看看这张图表可能告诉我们什么。我们直接进去,选一张,放到我的另一个屏幕上。我有这张图表,可以深入查看。我可以看到,单变量控制图有几个不同的失控点。红色部分表示失控。我可以点击其中一个条形,深入查看该图表,然后查看单个图表,说:“好的,就是这样。不管它是什么意思。” 我将保留这个图表,但我要进去,这张图表有三个数据。这是怎么回事?我要点击并打开这张图表,然后选择我在这里看到的这三个失控点。
现在我可以进入,不用再通过指向和点击,而是可以从菜单中查看贡献图,而是可以一次性将所有图表全部拉出来。我不必逐个点击这些图表。我真的很喜欢这个功能,尤其是在查看多个内容时,因为它会将每个样本的图表堆叠在一起,对吧?如果存在任何共同点,我可以快速了解发生了什么。这个有共同点,而这些没有,但就在中间,这四个东西都是不同的。这对我来说很有趣。这是我应该去探索的东西。当我查看这个时,相同的四个输入具有相同的信号,但在这个上是不同的。也许我遇到了一些系统性问题。此外,当然,我可以进入,深入研究这个图表并单独查看其中的一些,这很有趣,因为所有这些都是不同的。
它们都没有 OC,但它们的 OC 方向不同。两个 OC 很高,一个 OC 很低。这很有意思。对我来说,这给了我一个工具,我可以从这张图表中选择一个站点,快速深入挖掘,寻找共性,看看我可能想调查哪些正在发生的事情。
我喜欢这个,我会对此提供一些见解。通过查看这些图表,我们发现了不同的问题。我们发现阀门无法正确开启和关闭。我们发现工艺设置存在问题,可能导致我们输送的气体量超过了实际需要。我们实际上是在浪费不必要的资金。我们发现了一些问题,或者我不应该说是问题,而是我们发现了一些问题,导致输入量达到了不稳定的程度,这可能会导致产品不稳定,而我们可能没有在其他地方测量过。我们不知道具体原因。
它只是针对这种情况,您可以查看输入,了解输入的执行情况,并查找输入中的异常情况,并可以帮助您节省资金并帮助您避免潜在问题。
演示就到这里。我还有一张幻灯片想和大家分享并讨论一下。至于参考资料,我有几个参考资料。首先,我去年在Discovery大会上看到了Mike Anderson关于短期控制图的演示,之后又在JMP在线平台重温了一遍。那篇演示对我帮助很大。还有Don Wheeler的《短期SPC》一书。如果你感兴趣的话,这本书非常实用,而且很容易理解。里面有很多很棒的东西。创新的控制、图表绘制,明智又公正。它也是一个资源宝库,与JMP应用中的很多内容相契合。我推荐这本书。此外,我在JMP社区上找到了多元方法的演示,也觉得它非常有用。最后,我要特别感谢落基山JMP团队的Jed Campbell,他鼓励我继续推进这个想法,并帮助我解决了一些脚本编写方面的挑战。感谢您抽出时间,希望您今天过得愉快。