本演示将探讨使用多元控制图为工业过程系统创建的工作流程。首先,创建一个 PLS 模型来预测过程结果,例如产量或产品的蛋白质含量等。然后,创建一个模型驱动的多元控制图 (MDMCC),用于表示进行该预测的关键变量。
然后将 MDMCC 上传到 JMP Live。此外,用于创建模型和 MDMCC 的数据将通过一个插件提取,该插件专门用于从 PI 数据历史数据库中提取数据。在 JMP Live 中,编写脚本自动执行数据提取,使其自动刷新,从而创建一个实时的模型驱动多元变量控制图。对于流程工程师来说,这是一个非常棒的工具,因为它可以指示 T2 和平方预测误差的偏差。我们喜欢这些图表,因为它们比典型的控制图提供更多信息,因为它们不仅显示变量的单变量控制偏差,还显示 x 变量之间关系的偏差,而这是典型的控制图无法显示的。
大家好,我是 Drew Luby。今天,我将和大家分享我的海报展示,主题是“使用 JMP Live 自动更新多元控制图”。首先,简单介绍一下我的背景。我是 ADM 的一名分析工程师。ADM 是一家农业加工厂,实际上我们在世界各地有很多工厂。这些工厂中有很多都配备了大量的传感器数据,包括压力、温度、流量等等。我们希望能够分析、排除故障,并根据这些数据实时采取行动。
以下是这些数据的示例,或者说该流程的大概情况。在这个例子中,您看到的是玉米胚芽的干燥过程。这里有五台干燥机,它们最终共同作用,使胚芽水分达到最终状态。您可以看到所有这些传感器数据。我们有阀门和AMPS的运行状态数据,还有蒸汽流量和压力,以及温度数据。我们的流程中有很多不同的数据,我们希望将所有这些数据关联起来,并将其与最终水分值(也就是我们这款产品的规格)进行比较。
我们面临的挑战是,我们需要观察许多不同的变量,但同时又需要能够一目了然地了解整个过程。为此,我们认为目标是构建一个模型驱动的多元控制图,以便我们能够在一张图表上查看我刚才展示的所有变量,而不必每天单独分析它们的趋势。
然后,模型驱动的多元控制图将让我们了解是否存在任何超出正常运行范围的变量,以及是否存在任何变量的表现与预期不同的变量。通过该模型驱动的多元控制图,我们能够深入挖掘,找出是否存在单个变量出现故障、超出规格或参数与正常值不同的变量。这将引导我们找到这些变量,以便工厂的工程师或操作员可以立即采取行动。
我们的最终目标是利用异常检测来提醒这些过程变化并采取相应措施,这样我们就不会长时间运行超出规格的参数,或者某个参数或阀门的性能与我们预期的不一致。有很多例子。我们希望快速识别这些异常,并能够采取行动。模型驱动的多元控制图可以帮我们做到这一点。
我们将采用的方法就在这里。我将在海报中介绍这些步骤,然后在 JMP 中实际演示。访问数据,我们首先需要使用一个名为 OSIsoft PI Tools 的插件。这是我们创建的,可以在社区中找到,我相信海报上也有链接。这个插件允许我们提取这些 PI 标签(也就是我们的数据历史库 PI),并将它们导入 JMP。不仅如此,它还会创建一个 JSL 脚本,我们可以将其复制并粘贴到 JMP Live 端,这样我们就可以每天自动提取新数据。这对于当时的流程故障排除非常必要。
数据导入后,我们将构建一个偏最小二乘(PLS)模型。从技术上讲,我们可以根据主成分分析(PCA)或偏最小二乘(PLS)模型构建一个模型驱动的多元控制图,但这里我们选择偏最小二乘(PLS),因为它是一个可以预测Y变量的多元模型。在我使用的这个例子中,我们想要使用我展示的所有工艺参数,包括温度、压力、AMPS(氨氮浓度)和流量。我们希望用所有这些参数来预测最终的水分含量。我们将构建一个偏最小二乘(PLS)模型,并将其用于我们的模型驱动控制图。
一旦我们获得了基于偏最小二乘法 (PLS) 创建的模型驱动多元控制图,我们将在 JMP 中构建一个仪表板来显示该控制图,然后构建一个流程筛选平台,让我们可以单独查看每个变量。最后,当我们将其发布到 JMP Live 后,我将逐步讲解如何自动化数据提取。
再次强调,我们创造的价值或目标是为我们的工艺工程师和操作员打造一款易于使用的工具,让他们能够实时查看最新的数据。这样,该工具就能向他们展示工艺中可能存在问题的地方,而无需对每个变量进行趋势分析。实际上,模型驱动的多元控制图与 JMP Live 的结合完美地实现了这一目标。我们将使用 JMP,并演示如何具体实现这一点。
我们在 JMP 中创建了这个插件,JMP OSI PI 数据。这是一个很棒的插件。基本上,它允许我们输入服务器的地址。我根据下拉菜单找到了一些地址。如果您熟悉 PI 数据,它会提供 PI 使用的查询类型,并且还会使用 PI 时间显示开始和结束时间。如果您不熟悉这些,可能需要查找一下。但是,如果您的机构使用 PI,您可能对它很熟悉。
在这个例子中,我将使用 7 天的提取方式,也就是减去 7 天,每小时提取一次插值。我将要使用的标签,我已经仔细检查并预先选定了。我不会用到之前展示的所有标签。这些是一些关键的标签,但我可以使用所有标签。我只需将它们粘贴到这里的窗口中,然后就可以更改我的搜索条件。我可以创建一个长表而不是宽表。我可以在这里做很多事情,让我的数据提取出我们想要的内容。这个插件的关键部分就在这里,它会生成一个脚本,这个脚本可以复制粘贴到 JMP Live 中。它相当长,但可以复制粘贴到 JMP Live 中,以便重新创建这个数据表。
重要的是,因为我使用的是相对时间戳,所以从今天减去 7 天到从今天减去 7 天前,每次运行时,它都会根据 JMP Live 指定的重新运行时间提取新数据。如果明天运行,则提取的数据是从明天到 7 天前。我一直都在实时提取数据。
我不会让它运行,实际上它可能需要一些时间。在这个视频里,我之前已经重新创建了它,并且做了一些隐藏和排除操作来清理数据表。这是准备好的,但你可以看到上面这些标签是一样的,而且是为期7天的运行。这次运行恰好从7月23日开始,一直持续到7月30日。
通常,当我导入这些数据时,需要进行大量的清理工作,并整理数据表,而这些工作在这里已经完成了。我不想跳过这些步骤,但我已经预先完成了这些工作。
为了创建这个偏最小二乘模型,我使用了 JMP Pro,因此我可以在“拟合模型”平台中进行操作,或者直接在“多元方法”下的“偏二乘”中进行操作。我将根据所有这些过程变量来预测胚芽干燥机的水分。我将继续进行 K 倍验证。“偏最小二乘”,我点击“运行”,并使用默认设置,这样这个模型就创建好了。
就我的职业和工作而言,这是一个相当不错的模型。我们有很多过程噪声,所以不一定能达到 90% 或 0.9 R² 的水平。这对于我们的工作来说是可以接受的。这里有四个因子,这很好。我或许可以进一步完善一下,但我认为这种模型在方向上是正确的,就准确性而言,对于我们的例子来说已经足够好了。同样,通常我会用一个迭代过程来稍微完善一下。
要创建模型驱动的多元控制图,有几种方法。我可以直接进入“已保存 X 分数的模型驱动多元控制图”。这样做的目的是将这些 X 分数保存到数据表中,然后基于这些分数创建模型驱动的多元控制图,这样就可以了。但我选择将预测结果保存为 X 分数公式,因为在这个例子中,我可能想创建一个趋势图,显示样本之间以及模型驱动的多元控制图中预测的水分含量。这就是我在这里采用的路径。无论哪种方式都可以让你达到我即将展示的状态,即一些 X 分数公式的列。
如果您不太熟悉因子和PLS建模,我们可以在Discovery上讨论一下。这是一个因子,您可以看到它是一个公式,是所有这些变量的线性组合。这里有四个因子。那么这个预测公式实际上是这四个因子的线性组合。PLS模型就是这样报告的。
要制作模型驱动的多元控制图,我会进入“分析”、“质量和过程”、“模型驱动的多元控制图”。我只需将这些 X 分数放入“过程变量”中,并将时间放入“时间 ID”中,即可生成 T² 图。
不必过多关注统计数据,T² 本质上衡量的是我距离所有变量的流程中心有多远。我对此的一种解释是,我们工厂有一个运行速率。我们称之为研磨速率,指的是我们在那种情况下研磨玉米的速率。如果我们通常有一个标准速率,那么研磨速率降低到一半或零研磨,我的 T² 就会很高,因为它与正常状态非常不同。还有一些情况,比如,如果从一台干燥机出来的水分非常高,或者蒸汽比通常高得多,所有变量都可能非常高或非常低,这都会导致 T² 升高。通过真正查看一个叫做 T² 的统计数据,我就能了解流程中所有变量的状态。
举个例子,如果我看一下这一点,你就会发现它允许我显示那些条形图。那么就在这里,让我强调一下这一点……你可以看到,这是最失控的一点。果然,这个胚芽干燥机 4 的湿度比平时高得多。好消息是,我这里有一个胚芽干燥机 4 的控制图,显示它远远超出了规格,但我能够用一个控制图显示所有这些变量。这实际上是增值原则,我可以用一个统计数据来查看数百个变量。
我喜欢在这里绘制贡献热图,我相信这有助于工艺工程师排除故障,这样我就能看出胚芽干燥机4的水分在那里是红色的。我很快就能看到T²,也就是导致问题的原因,就在这里。他们马上就知道需要去哪里查看问题所在。
我想在“监控过程”下的模型驱动多元控制图中添加的另一个内容是平方预测误差图。我将稍微调整一下比例尺。SPE,即平方预测误差,它测量的指标与 T² 略有不同。SPE 测量的是距离模型预测值(或者说,超出模型平面)的距离。
如果 SPE 很高,这意味着我们预测的值与模型预测值相差很大,或者我们预测的值与实际发生的情况不同,或者 X 矩阵的预测值与实际发生的情况不同。这意味着变量之间的相互作用与我的预期不同。在我的例子中,我对此进行了一些研究,您可以看到胚芽干燥机 1 的湿度在这里很高,SPE 也很高。
在这种情况下,实际情况是,通常当我们增加蒸汽量时,蒸汽阀会打开,蒸汽流量计的读数会增加,我们通常会看到胚芽干燥机的湿度下降。但在这种情况下,湿度并没有下降。这说明模型的预测结构存在一些问题,SPE 会发出警报,提示湿度过高。单变量控制图或 T² 控制图可能无法捕捉到这种情况,因为这些变量本身可能都在正常的控制限度内。
通常情况下,它们是正相关的,但在这段时间内,它们是负相关的。这对我们工厂很重要,因为它可能会识别出,首先,实验室样本的值不正确。可能是在错误的地点取样。这可能意味着我的蒸汽流量计出现故障。也可能意味着我的烘干机出了问题。这些对我们来说很重要,需要发现问题。同样,我对贡献热图也做了同样的事情,只是稍微拉伸了一下。
正如在这个例子中,您可以看到这里有缺失的数据。我们这里恰好发生了一些中断,您可以看到因此而出现的问题是如何突出显示的。这就是模型驱动的多元控制图,我认为它对我们的工程师和工艺工程师排除工艺故障非常有用。
他们通常需要做的一件事是观察……他们看到较高的T²或较高的SPE,然后他们想在单变量控制图上看到这些变量。我认为最好的展示方式是在“分析”、“质量和流程”、“流程筛选”下,我会将所有这些值放入“流程变量”和“时间归一化”中。
现在我得到了一个方便的工具,你可以看到这个数据集出现了故障,所以所有变量都显示为红色,但它实际上是按最不稳定的变量排序的。这样,当你尝试排除流程故障时,你就能知道该查看哪个变量。如果我突出显示所有变量,并执行“显示选定变量的图表”,我就会得到单变量控制图,然后我会打开这些标记。你可以看到它正在下降,这就是那个例子。
这个工具与模型驱动的多元控制图工具结合使用,功能非常强大,因为我可以快速知道T²和SPE是否一致。理论上,作为一名工程师,我可以转到另一个流程。我不需要查看胚芽流程。它像往常一样运行,所有变量也像往常一样相互作用。如果我发现什么问题,我可以使用这个热图来找出哪个变量出了问题,然后我可以查看单变量控制图,看看它到底出了什么问题。
现在的挑战是,这很棒,但我们如何将其转换为易于共享、方便用户访问且每次都能更新的形式,而无需每天早上有人来再将其拉入 JMP。我们的方法是,首先将其发布到 JMP Live。首先,我们要创建一个仪表板。我要合并窗口。我们称之为“仪表板”。没问题。我们再试一次。我们需要选择要合并的窗口。
现在我们有了一个仪表板。根据我的经验,它在 JMP Live 中看起来不太好,因为有滚动条,而且需要缩放。所以我喜欢点击这个红色的热点,也就是“编辑仪表板”。我要点击它,把它拖到“在选项卡后插入”的位置,然后运行这个仪表板。
现在我有了一个漂亮的仪表盘,可以随时使用。你可以想象我的工程师会来到这里,看着它,看看他们是否需要关注细菌系统。如果需要,在下一个选项卡上,他们可以看到所有的单变量控制图。
这就是我真正想要发布到 JMP Live 的内容。我会选择“归档”,将报告发布到 JMP Live。只需片刻。我们将发布该仪表板,我现在要将其放入海报演示文件夹中。我将为其命名“海报演示摘要示例”。我们将发布一个新的数据表,然后点击“发布”,然后我就可以在这里打开它。让我们把它带到这里。这是 JMP Live 端。JMP Live 的好处是,我们公司中的任何人都可以访问它,无论他们是否拥有 JMP。这让他们有机会查看这些内容。它是交互式的。如果我在那里突出显示一些点,我可以在这里看到它们,这样我就可以看到这些点。我可以将它们带到这里。这一切都是互联且交互式的,这非常方便,比发送 PDF 或图像要好得多。
这正是我想要的效果。你可以看到,我排除了某些数据,我们的 T² 会非常高,因为我认为那里经常发生中断。这也是为什么 SPE 在那些时间段如此之高的原因。这正是我想要自动化的功能。我希望它每小时提取一次新数据,这样我们就能始终看到最新的数据。
JMP Live 的工作方式是,这是一个报告,其背后实际上是我们创建的数据表。它将我的数据表发布到 JMP Live 中,因此自动化的关键在于让这个数据表以新的 PI 数据进行更新,无论频率如何,然后它都会自动生成新的报告。
我在数据表那边,可以进入“设置”,然后通过脚本刷新数据。回到我的 JMP 数据表,这里实际上是我的插件生成的脚本。我可以将其复制粘贴到 JMP Live 窗口中,它就可以正常工作。它会按照我最初创建的方式重新创建表格。它不会重新创建这些 X Scores 1 公式或预测。
您需要做的是,在创建这些列时,您可以使用日志或工作流生成器,或者如果您要执行任何操作,例如添加规格限值,或者对数据表进行任何更改,您都需要复制这些脚本。为了节省时间,我已经在这里创建了这些脚本,但您可以在脚本的底部看到,我基本上创建了新的公式列,我只需使用日志或工作流生成器复制这些公式即可。我复制了该列的公式,并为其添加了模型驱动的多元控制图统计数据。
这些都复制粘贴到了最后。顶部剩下的内容直接来自那个插件,我只需要找到这个空脚本,粘贴进去,点击“保存”,然后设置一个刷新时间表,这样我就可以选择了。我打算每小时重复一次。我明天会取消我的示例,这样它就不会占用太多服务器资源。如果我想的话,也可以每5分钟重复一次。我只想让它每小时执行一次,然后我可以选择刷新时间表。
每次运行时,此脚本都会返回到我们的 PI Server,调用新数据,重建数据表,然后会自动根据新数据生成报告。我还必须提供一些凭据,以便它能够访问我们的 PI Server。点击“保存”,然后点击“刷新数据”来验证它是否正常工作。只需一秒钟即可显示它正常工作。
当然,在我执行操作的时候,它失败了……因为我的剪贴板里还有我们粘贴到插件中的旧标签。我们要复制它,粘贴它。很抱歉。我们点击“保存”。现在它已保存,我们应该可以刷新数据了。很抱歉出现这个错误。在运行过程中,我想说一下 JMP Live 的另一个优势,那就是有时我们想要每天、每月更新数据表。您不必每次都亲自去更新 JMP,只需在这里构建它,设置更新频率,然后我可以重新加载它,然后您可以随时将该数据表从 JMP Live 中拉出来。这是一个非常棒的工具,不仅可以更新数据表,还可以创建自动更新的报表。
现在您可以查看我的报告,可以看到我们的数据从 8 月 25 日到 8 月 28 日的变化。您可以看到 T² 值正在下降。我知道工厂正在处理一些维护问题。事实上,我相信我们有一台干燥机出现故障,这就是为什么蒸汽压力控制器总是在那里读取数据的原因。这是我们希望员工拥有的工具,我们也从中发现了价值。再次,快速浏览一下,这是我的 T² 检查,就像我查看任何控制图一样,然后是 SPE。如果这两个都很好,那么我真的不需要担心那些可能隐藏在幕后的数百个单变量。
如果有什么值得关注的问题,比如这里的T²值过高,我可以在这里查看我的热图,或者在这里查看工艺筛选,你就能发现问题出在哪里。我这里还有一个有趣的例子,我们的干燥机出现了一些波动,但你可以很快找到哪个变量有问题。它的运行是否超出了规格?它的运行是否与我们预期的不一样?一旦找到问题所在,你就能更轻松、更快速地采取行动。
这就是我想展示的全部内容。如果您要参加探索号,并且对此有任何疑问,我会在场,我们可以讨论。谢谢。