汽轮机预见性维修
Boitumelo Mantji, Opti-Num 万博 尤文图斯Solutions
彼得·兰德尔,我是沙索
盐沉积在涡轮叶片上的积累会严重影响涡轮效率,导致工艺瓶颈,增加运行成本。了解Sasol和Opti-Num Solutions工程万博 尤文图斯师如何合作确定最佳清洗时间以防止瓶颈,以及他们如何使用MATLAB实现端到端预测维护工作流程®.了解他们如何估计涡轮机的剩余使用寿命并部署应用程序,以便决策者可以访问最新数据来定义最佳清洗计划。
每个人都好。感谢您出席本次网络研讨会。受欢迎的。这将是一个关于汽轮机维护优化和使用预测性维护工作流程调度的网络研讨会。我是今天的主持人或主持人之一,我是Peter Randall, SASOL的一名轮值设备工程师,我将与Opti-Num Solutions的Boitumelo Mantji共同演讲。万博 尤文图斯
早上好。我是Boitumelo Mantji,很高兴来到这里。我是一名电气和生物医学工程师,我是一名解决方案工程师,负责优化解决方案。万博 尤文图斯作为我角色的一部分,我与采矿和制造领域的许多客户密切合作,帮助或支持他们解决各种问题,甚至将智能技术引入他们的运营中。万博1manbetx这个演示将显示一个实例。谢谢你彼得。
谢谢Boitumelo。下面进入议程。我们会讲一点背景知识,一些关于结垢的内容以及它对我们的重要性,汽轮机运行的基础知识,然后我们会给你们介绍预测性维护工作流程,看一下预处理,分析,模型开发,然后部署,最后我们会给出一些评论。
我们先来简单介绍一下SASOL。SASOL是一家全球性的化工和能源公司。我们在30个国家开展业务,我们也是世界上最大的合成燃料生产商之一,我们还拥有世界上最广泛的综合酒精和表面活性剂组合。我是他们的交易设备工程师之一,在我们的第二家工厂工作,这是一个相当大的工厂,占地面积大约有20平方公里。
现在我要继续讲我们今天项目中要用到的设备。它由一系列7个压气机涡轮机组组成,每个机组的额定功率约为13又1/2兆瓦。这是一台冷凝蒸汽轮机,转速约为每分钟7000转,带有速度控制器。
另外,我们还有一个压力控制器,当它测量到2550千帕时,它会控制我们的轮室压力。所以这基本上会减少蒸汽流量来限制当时的压力。所以问题的陈述实际上是这些特殊的蒸汽轮机受到污染,污染通常发生在八个月到一年之间。
我们想要更多的计划和可预见性因为当我们开始削减轮室压力时我们开始限制蒸汽通过机器这导致我们在压缩机方面有一个瓶颈。
接下来我要讲一点关于犯规的内容。正如你们所看到的,这是一张污物的照片以及它是如何出现在涡轮内部的。这基本上发生在蒸汽从干燥状态变成潮湿状态的时候。从过热到饱和。在这一点上,你实际上得到了盐被轻微地从蒸汽中去除,结果它在这些涡轮叶片上积聚。
所以污垢在机器内部会增加阻力,这会直接影响轮腔压力。同时也改变或修改叶片型线,降低各向同性效率。各向同性效率的降低会导致蒸汽流量略有增加。我一会儿会从理论上解释更多。
然后我们也会得到随着蒸汽流量的增加,我们会看到出口压力的增加。随着轮腔压力的增加整个机器的压力就会变大这可能会导致更大的压力。这需要吸收式推力轴承。
我们继续看莫列图,熵图。这里,我们可以看到两种各向同性的膨胀,黑色区域和红色区域的真实膨胀过程。这就表明了在真实的蒸汽膨胀过程中,也就是从过热状态进入饱和状态,熵增加了。
这也可以直观地表示为稍微增加的排气熵,但你可以看到能量的提取是两者之间的区别。所以熵增加得越多从蒸汽中提取的能量就越少所以你需要更多的蒸汽才能有同样的功。这在温度熵图上比较容易看出来。
我画了三种不同的情况。一种是各向同性的膨胀就像你们之前看到的,真正的膨胀到相同的等压线,这是一条恒压线。然后实际曲线在随着污垢条件的增加等压线处。所以你可以看到我们向右移动了更多熵也更大了,但我们也爬到了不同的等压线上。
在这个例子中,这只是为了说明。但实际上,这就是你所拥有的过渡,这就是为什么由于污染,第一,流量增加了,但我们也看到了这些变化。然后进入项目本身,我们有大约100个咨询小时的预算用于Opti-Num。
这个项目的目的是分析后期性能和维护我们的维护干预措施,这里是涡轮垫圈,预测未来什么时候需要这些干预措施,并提供一个模型,能够预测这些干预措施,然后允许我们在我们的环境中部署。现在我要把时间交给Boitumelo,让他来给大家演示预测性维护。
谢谢你彼得。所以在这个阶段,我们清楚地知道问题是什么,以及我们想要实现什么。现在我们来看我们实现的解决方案。因此,解决方案由这个工作流程中所示的各个阶段组成,随着我更详细地介绍每个阶段,您将发现我们在构建最佳解决方案时面临的各种挑战。
第一个阶段需要访问和处理数据。所以从本质上讲,把数据转换成适合建立预测模型的格式。一旦数据干净,我们对数据进行一些分析,以提取描述涡轮机性能的特征,这与Peter的领域知识一起,使我们能够定义每个涡轮机的运行边界。
一旦我们描述了什么健康的涡轮行为看起来像我们转移到建立我们的模型。最后是部署阶段,需要将功能集成到SASOL系统中。因此,有效地让运营商和决策者能够使用这项技术,彼得将在后面的演讲中详细介绍这一点。
现在,我们将更仔细地研究数据访问和预处理阶段。SASOL为我们提供了7台涡轮机的过程数据。这是从2012年到2018年每隔20分钟收集的6年数据。这个项目实际上是在2019年初完成的。这是我们当时掌握的最新数据。最初,四个感兴趣的变量被确定为变量,可以表征涡轮的行为,即实际腔室压力,速度,蒸汽吞吐量和真空压力。
但是通过利用Peter的涡轮系统领域知识我们最终忽略了最后一个变量,也就是真空压力。原因是真空压力和蒸汽流量有很强的相关性,这是我们真正关注的变量之一。了解这些为我们节省了很多时间因为这意味着我们不需要考虑对数据应用降维技术。
您还将了解涡轮机的运行条件,其中轮室压力必须在1600至2550千帕斯卡的范围内。速度必须在每分钟6700转以上。所以如果我们看一下右边的图表,这是一个速度与时间的关系图对于一个涡轮在过去六年的时间里,这意味着在这个区域的运行,这给了我们关于涡轮性能或效率的信息。
记住我们要做的是预测涡轮剩余的使用寿命换句话说,下一次什么时候我们需要维护我们的涡轮。这种与正常操作的偏差只能在这个区域内看到。因此,为了估计涡轮机的剩余使用寿命,我们需要分析每个涡轮机的生命周期数据。我们可以把生命周期看作是连续两次洗涤之间的时间。
但我们面临的一个挑战是,在过去的六年里,没有任何记录或日志记录以前发生的水洗。所以我们必须和彼得密切合作,看看是否有可能根据数据来判断洗涤发生的时间。因此,我们分析了低速数据,也就是绿色区域的数据。
低速数据通常代表斜坡上升和斜坡停机、大修和清洗。我们选择孤立地观察低速数据。所以这个散点图只是低于6700 rpm阈值的数据。我们这么做是因为我们知道我们要找的东西就在那个区域。去掉高速数据,意味着我们需要处理的数据更少了,这为我们节省了很多时间。在这一点上,我们的目标是查看低速数据,看看我们是否能检测到这种情况发生的时间,这样我们就可以更仔细地分析涡轮循环。
在和彼得(一个可怜的家伙)进行了更多的交谈之后,他指出了涡轮在进行清洗时的速度行为。为了直观地展示这种行为,我们把散点图画成折线图。这条红线表示洗衣服的时间。我将放大到圆圈区域以便更好地观察涡轮的性能。
彼得解释说,当你清洗涡轮时,机器会经历一系列的上升和下降。你可以看到它是关闭的,然后加速到每分钟800转,然后又开始减速。这个过程大约需要8到12个小时。这个图案实际上是清洗涡轮的特征如果没有彼得的麻烦,我们永远也不会知道。
因此,我们可以发现与Peter紧密合作,因此将我们的建模或数据科学经验与Peter作为领域专家的经验结合起来,在影响许多设计决策方面非常有效。由此,我们能够开发一种算法来检测整个数据集的模式。这使我们能够记录过去发生水洗的时间。
一旦我们提取了这些数据,我们就丢弃了低速数据,这使我们能够更多地关注与涡轮机运行有关的数据。高速数据。在此阶段,我们已经清理了数据,并且知道之前发生过一次清洗。下一步就是分析涡轮的生命周期。能够可视化和理解涡轮的行为如何变化,因为它是结束
在其生命周期中,我们使用清洗日志来有效地将数据划分为特定涡轮的一系列生命周期。
这张图显示了在一个涡轮的生命周期内收集的数据。前面我提到,我们有三个感兴趣的变量来描述涡轮的行为,这是速度,轮室压力和蒸汽吞吐量。我们看了数据的各种可视化。所以3D和4D图的不同传感器组合和比例试图识别关键特征。其中一项是观察速度与轮室压力之间的关系以及这是如何随时间变化的,这是由这个颜色条显示的。
所以蓝色区域表示清洗结束后的时间,黄色区域表示需要进行清洗之前的时间。我们注意到当我们接近下一次清洗时涡轮变得更脏,轮室压力会上升速度会下降。这和理论是一致的。我们在这个地区看到的这种稳定的行为是SASOL采取的一些控制措施的结果,这些措施是为了防止压力上升超过某个点。
然后我们研究了同一涡轮的其他生命周期。举个例子,这个涡轮在六年内被冲洗了五次。因此可以观察到五个生命周期。我们用这个观点来看看之前提到的,被认为是失败的标志的特征,在其他生命周期中是否一致。
所以现在我们正在仔细研究一个生命周期,并引入第三个变量,蒸汽吞吐量。这样做的原因是引入蒸汽吞吐量提供了另一种级别的数据点分离,特别是当观察颜色梯度时,它说明了两次洗涤之间的时间间隔。
从这个角度来看,我们看到的是蒸汽吞吐量在上升。从实际的角度来看,发生这种情况的原因是因为随着盐在涡轮叶片上的不断积累,需要越来越多的蒸汽来保持相同的吞吐量。但是最终会达到一个点,即预期的吞吐量不能再维持。所以吞吐量被压力限制拉低了,这限制了相同的吞吐量。
在这一点上,我们知道我们的系统运行效率低下。由此我们可以确定操作阈值是多少,也就是这个红星。所以这是我们不希望操作的地方,或者太靠近这个区域。我们可以看到这个点对应于轮室压力阈值,这是由操作员选择的,也是我们开始看到速度下降的点。
所以一旦我们在一定的操作阈值范围内,这就是我们通常想要清洗涡轮机的时候。所以我们可以在蓝色区域开始运算。回顾一下,在这个阶段,我们已经确定了我们的操作阈值。换句话说,就是我们不想达到的点。但我们知道,随着时间的推移,当涡轮到达生命周期的终点时,我们越来越接近那个阈值。
这意味着,随着时间的推移,数据点和阈值之间的三个不协调将会减少。因此,我们首先计算每个数据点与阈值之间的距离。数据点和阈值之间的距离就是这张图所表示的,y轴是距离的对数,x轴是时间在这个例子中,颜色带代表车轮腔室压力。
每个图形都有独立的生命周期,我们可以看到,随着时间的推移,每个图形都逐渐趋于零。因为x轴本质上代表了操作阈值,我们
正在接近。最后一步需要拟合一个线性函数到之后的距离,在这个过程中,我们使用了一个移动的窗口,窗口大小是由操作员确定的一段时间。
当窗口在数据上移动时,每一步都有一个线性函数拟合到数据上。然后就得到了线性模型的集合。我们使用移动窗口的原因是为了确保模型根据最新信息调整预测。你可以看到模型是如何不断调整的通过观察这些随着时间推移而递减的梯度。这正是我们期望看到的。
然后我们得到模型的平均值,以得到总体数据的总体趋势。最后,我们将平均模型外推到截距或工作阈值,然后告诉我们涡轮的剩余使用寿命是多少。在这个阶段,我们非常高兴,因为我们现在有了一个可以验证的预测模型。
因此,我们通过将模型应用于历史未见数据来验证模型的性能。你在这里看到的这些红线是模型预测下一次洗涤需要的标记。如果我们看第一张图,我们可以看到涡轮是在8月9月左右被冲刷的。但根据模型的预测,清洗可能发生在几个月后。
但从大约一个月的数据空白中,我们知道涡轮机实际上被大修了,这就解释了为什么它似乎被过早地冲洗了。我们还看到,在大修后不久,涡轮机的效率下降得相当快。在这种情况下,彼得和他的团队是因为当时蒸汽质量很差。
所以这个模型的结果实际上是为了作为运营商和决策者的支持材料。万博1manbetx这一点很重要,因为预测模型的目的不是让它孤立地或独立于操作员使用,而是作为定义更全面的洗涤计划的附加工具或辅助技术。
对于第二个生命周期,在9月左右执行一次清洗。但是轮室压力仍然很低因为仍然在蓝绿色区域。所以我们洗得太早了。我们可以看到预测在几个月后开始。不仅如此,我们还注意到,在9月清洗后不久,标志着第三个生命周期的开始,我们已经可以看到轮室压力开始再次上升。我们已经进入了黄色区域。
这就凸显了洗衣机的质量不是很好。因此,从操作的角度来看,这不仅可以让运营商预测未来,还可以回顾为什么要做出某些决定,以及未来如何避免这些决定。
一旦建立了模型,下一步就是研究如何将所有这些技术提供给SASOL内部的相关人员,Peter将提供更多相关信息。
谢谢Boitumelo。所以现在我们已经有了一个已经建立的模型,现在在我们手中,现在我们需要从SASOL方面的东西集成到我们的工作流程和我们的操作环境中。这需要考虑一些不同的因素。一个是我们如何实际地与这个东西,这个模型和应用程序进行交互。然后它如何将自己集成到我们的运营数据库和诸如此类的事情中。这是后端。
然后我想谈谈我在这方面学到的一些东西,因为我认为观众可能会从这些信息中找到一些用处。在右边,你可以看到一个GUI界面的例子。在左边,我们有一个总结部分,它将涵盖
每台机器上一次清洗后的运行情况。所以你可以看到它在运行中断裂但在那个特定的时期它从未被清洗过。
是的,这本质上只是看一下每台机器,然后你可以深入研究一个特定的单元。所以在这个例子中,单元7,看看在你请求的时间范围内,最后一次清洗或者最后一次清洗次数的信息是什么样子的。所以你可以回顾一下,看看我们是否真的改善了或者我们是否远离了高轮室压力,得到了这些漂亮的深蓝色和类似的东西。
因此,回顾性分析是可视化的,只是作为实际洗涤过程本身的次要点。然后是其他接口注意事项。在GUI界面上,对于规划人员和维护经理之类的人,他们不需要深入细节。他们想要以一种总结和简洁的形式迅速了解信息。
这里我们可以看到应用的登陆页,你选择历史数据,导入,运行模型,然后它会给你一个表格。在这里你可以把所有这些机器可能想要或需要的都放在非常接近的地方,然后你可以改变它们的时间表。也许会更早一点,基于产品的可用性之类的。
所以它允许你进行计划,以一种可视化的方式,或将数据制成表格来做出决定。在你的网页应用中也需要注意这一点。通常它会记录下一个应该做的动作。如果你连续快速点击这两个按钮,它会拉出数据但下一个编码窗口它会运行第二个,这可能不是你真正取回数据的时候。
在这种情况下,使用处理对话之类的东西来防止用户获得更多输入到应用程序是很好的,然后在后端部署方面,我们有一个非常有趣的情况,我们有两种不同类型的历史记录,本质上是彼此的备份。一个是Honeywell历史学家,另一个是rissi软派历史学家,这两个历史学家实例也有OPC服务器部署在顶部。
所以我们在如何将这个应用程序集成到我们的运营设施方面有很大的优势。我开始使用OPC工具箱它允许我以图形化的方式探索服务器,看看我将如何获取数据然后你还可以创建函数来提取某些函数或提取数据或利用任何OPC函数。如果你不是特别了解架构,这对创建代码很有帮助。
另一种方法实际上是在MATLAB中使用dll或原生api,你可以通过。net AddAssembly或加载库核心来完成。这实际上是一个稍微好一点的方法因为api的开销更少一些。它们消除了OPC部署中可能存在的一些固有限制。
最后一个是我努力把霍尼韦尔的API直接放到MATLAB中,但是我能把它放到Python中。因为我们在Python中使用coprob做了一些其他的工作,我们实际上决定只使用Python作为基础。
所以当我们做了这个决定之后,我们就需要确保我们有正确的MATLAB rap程序来处理Python或。NET脚本中的任何东西并确保它与进入MATLAB的数据兼容。最后一步是一旦你得到所有的数据,你处理它,你找出一些缺点,也许是GUI,你优化它,以确保它是非常友好的。
在这种情况下,我们发现信息需要很长时间来处理就像博伊德·米勒提到的,有多个线性模型因为你在移动——你有一个移动的窗口。本质上,这需要大量的计算我们在这里所做的实际上只是确保我们可以利用机器上的多个cpu通过使用并行四循环。
但这本身就要求它在代码中重写一点,就函数如何与四个循环通信而言,因为你仍然需要跟踪你处理的是哪台机器,这很容易做到。你可以去看MATLAB的文档,但实际上你会用那个数据图形用户界面来确保你能得到这些值。
最后一件事是,当你使用一个类似于平行四环的东西时,它会开始一个与我们的许多工作人员平行的池,你已经设置好了,这需要一些。因此,对于开销大于处理成本的情况,不建议使用这些方法。
还有一些关于历史学家的有趣观点我想提一下本质上他们看起来很像Simulink你可以从历史学家那里获取数据。万博1manbetx你有这些标签结构,你有在标签上构建的函数,但这里有趣的是,我有一个标签结构,然后我有一个服务器结构。然后取回数据请求在霍尼韦尔这边的服务器构造上。
然而,如果你看PI这一边,你有相同的标签结构,但是标签结构有一个叫做摘要的东西,或者是一种基于一些计算或类似的东西来获取数据的方法。你不需要计算,你只需要原始数据或类似的东西。这里有一个例子,比如说,当前值。
这里重要的是每个点实际上都发送一个请求,而不一定是每个服务器。这只是处理这些连接的方式的不同。在霍尼韦尔方面,连接由PI服务器请求处理时间戳和请求数据聚合在服务器实例中。你不需要确保它在每个调用中都存在。
而在PI这边,它实际上是作为这些函数的一部分处理的。这是在汇总函数或方法内部处理的。需要注意的是,由于这种情况发生的方式。当你想要连续运行多个攻击时,实际上使用OSI的软点到API中会稍微快一些,这是一个点列表。这是对服务器的类似操作。你有一个点的列表你想请求这些意外的数据。
这让事情变得更快因为你可以在服务器端并行调用你不需要像串行请求数据时那样有乘法等待。因此,请随时访问支持文档。万博1manbetx我这里只记录了OSI支持网站。万博1manbetx如果您有霍尼韦尔服务器,您应该能够获得左边PDF格式的文档。
现在我们已经在MATLAB和Python中得到了这个函数,但我们仍然有一个问题不管这些api使用什么,实际上都有。NET api。他们使用了系统类型变量。首先因为你用的是Python,你需要把它们转换成Python数据类型。但您优先选择与MATLAB数据类型类似的类型。在这种情况下,像双精度数,整数,单精度数,这些都很容易在Python和MATLAB之间转换所以这很简单。
但是将它们从一个加起来是Python数据类型的系统中移动可能不是。所以有很多种方法来剥这个众所周知的斗篷,其中一种是用四个环或者通过种族的环
构造,然后逐个转换每个有灵魂的实际数据点。这些通常是相当耗时的,特别是当你比较下一个评论,这实际上是一个吉他posto。我把它放在这里是出于兴趣,欢迎你们自己去做。
这本质上是对某些数据类型的内存移动,这些数据类型与Python数据类型相同。这使得将这些数据类型转换为Python数据类型非常快。在我们的例子中,所有的数据实际上都是双精度的。大多数经过处理的历史记录将值存储为双精度或整数,或者布尔值。
我遇到过很少有真正使用字符串数据类型的。这实际上适用于我处理的大部分或所有数据。最后一件有点棘手的事情是日期时间。传入的是一个系统日期时间,你可以将它存储为字符串值,但是传递字符串并确保日期两端相同是相当耗时的。传递字符串显然不是每个数据点的单个动作,你有多少字符都可以。
很明显,传递一个字符串是非常耗时的因为你需要传递多个字符。但是,另一个选项是当我们对数据库进行调用时。我们实际上可以请求日期时间为UTC日期号,这意味着在MATLAB中可以很快地将其转换为白天。它本质上只是一个0日期数的加法,然后把它拿回来。这实际上就是64个数据点。这样转换就很简单了。
如果你要做类似的事情,我建议你使用那个方法,尽管转换成一个已知的日期号,然后继续使用那个公式。最后,现在我们有了这个模型我们实际上已经能够部署它,现在我们可以使用它。所以基本上我们成功地在100小时的时间内创建了一个模型。它为我们提供了回顾性分析,它是可重复和可比较的,它确实做了我们需要做的事情。
在效率的问题上我们并没有特别要求我们必须要看涡轮的效率,但是我们更关注的是我们停止设备瓶颈的操作点,因为那对我们来说是一个更大的损失那是我们的主要目标。现在我们有了这个模型我们对它进行了整合并使用了它。
最后,就工作流程而言这只是一些便于记忆的细节。也就是说,如果您可以从基本原理、物理或一些设计基础来理解您的问题,那么我会敦促您这样做,因为这可能会突出您实际上可以采用物理和分析方法来最小化数据的维数,或理解某些数据点之间的关系,从而避免复制关系。
然后还要了解你的部署需求。在我们的例子中,我们希望它是一个网格类型的部署,这样我们就可以进行回顾性分析。你也可以,如果你有一个特定的目标,把它写进一个在后台运行的脚本里,然后仅仅传递一个报告或者一个值,或者任何在后端可能发生的情况。但就像我提到的,我们想要回顾事物的一面。
然后还要了解如何利用你所掌握的专业知识。所以在我们的案例中,我不是数据科学家,所以数据科学的部分会花费我更长的时间来完成和实现。我的专长在于机器,以及如何在机器的基础上把一些知识带入模型。所以在这样的事情上合作是很重要的。
我们所详细描述的整个过程是双方之间的大规模合作,以确保我作为技术人员的目标得以实现,并将技术知识带入数据科学,Opti-Num或Boitumelo能够提供一些可视化评估,并从本质上看到这个模型是否在做正确的事情。这是利用这两件事的好方法。
所以我也会建议那些想要解决这类问题的人。然后对于在这些操作环境中工作和呼吸的客户人员,只是为了确定你是否有这些问题,以及你是否能找到更好或更有效的方法来处理你反复和频繁处理的信息,质疑这一点,看看你是否可以改进和扩展你正在做的事情,把事情从手工操作转移到更自动化的地方,让你有更多的时间来做这些有趣的例子和工作流程,更好地优化你的时间。
但为了做到这一点,你需要了解你的系统,了解在数据流方面的限制是什么,哪些数据是可用的,以及你实际上可以实现什么。要做到这一点,你可能还会发现一些未来的障碍和需要采取的项目,为了使这成为现实。
是的。谢谢你的宝贵时间。我希望你们喜欢它,我希望你们发现其中的价值。现在我们将花一些时间回答你们的一些问题。因此,如果您对内容有任何具体问题,请随时与我们联系。
谢谢大家。
特色产品
统计和机器学习工具箱
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。