使用Simulink进行虚拟调试-第2部分:虚拟调试万博1manbetx
概述
许多行业都面临着在生产系统中部署越来越复杂的算法以实现更高的生产力。此外,实现控制软件改进的停机成本可能令人望而却步。如今,公司正在调整虚拟调试来解决这两个问题。矿业公司可以利用虚拟调试来确保新的控制算法是可靠的,达到预期的结果,并在最短的停机时间内无缝实施。
虚拟调试使用动态模型来设计和验证算法,以提高工作效率。经过验证后,这些算法可以自动部署到模拟PLC中,在PLC上运行的代码将根据工厂模型进行测试。
本次研讨会主要讨论虚拟调试的两个方面:模拟设计和代码生成实现。您将看到使用跨采矿公司的共同挑战演示的工作流:多罐级别控制问题。
第二部分:虚拟调试
在模拟中开发和验证控制策略后,控制算法被部署到采矿行业常见的嵌入式平台:可编程逻辑控制器(PLC)。在实际系统上实现之前,通过在连接到Simulink工厂模型的模拟PLC上运行代码来验证生成的代码。万博1manbetx研讨会的这一部分强调了从设计的算法生成PLC代码的便便性,以提供从设计到生产实现的简短可靠路径。
主讲人简介
Ruth-Anne马尔尚
Ruth-Anne Marchant是高级应用工程师,专注于Simulink和基于模型的设计。万博1manbetx自2015年加入MathWorks以来,她的工作重点是支持客户采用基于模型的Simulink设计。万博1manbetx万博1manbetx在加入MathWorks之前,Ruth-Anne曾在加拿大航空航天行业担任控制系统工程师。Ruth-Anne拥有加拿大滑铁卢大学的计算机工程学士学位和电气与计算机工程硕士学位,专攻控制系统。
布兰科·迪杰斯特拉
Branko Dijkstra是一名首席技术顾问,专注于流程工业优化的基于模型的设计工作流程。在加入MathWorks之前,Branko是汽车气候控制和电动汽车热管理系统开发的工程经理。在此之前,他在微光刻行业工作。布兰科的法医鉴定是基于他对间歇式结晶装置的建模。根据他的论文,他在荷兰代尔夫特理工大学获得了控制工程(微光刻)博士学位迭代学习控制在晶圆级中的应用.
记录日期:2020年10月14日
大家好,欢迎并感谢您参加我们的第二次挖矿网络研讨会。几年前,当我和一家矿业公司负责生产业务的高管交谈时,这位高管提到了两件事,这让我想起了我们今天讨论的话题。其中之一是,这位高管说,如果他们在生产环境中实施了一种新的创新算法,它需要在生产环境中运行一年以上,然后他们才能确信它对该算法将面临的所有典型环境条件都具有健壮性。另一个问题是,一旦你开始在生产中实现这些算法,你得到越来越多的算法,你怎么能确保它们彼此友好相处,而不是开始相互争斗?
我想在这个网络研讨会系列的第一个元素中,Ruth-Anne展示了为了调整算法,她已经运行了很多很多很多的模拟,所以她已经将这个算法暴露在大量的模拟时间中。所以你可以想象,使用相同的模拟环境来运行许多极端条件和长时间的运行时间来确保你在模拟中开发的算法是稳健的,这并不是一个很大的延伸。本系列网络研讨会将更多地讨论第二个要素。那就是,一旦我们有了这个算法并将它与我们的实际控制系统相结合,我们如何确保当我们把这些东西结合在一起时,它们不会互相争斗?
这就是我们今天要讲的内容,用Simulink进行虚拟调试。万博1manbetx本次网络研讨会将特别关注虚拟调试方面的事情。我是Branko Dijkstra。我是MathWorks的技术顾问。Ruth-Anne Marchant是一名应用程序工程师,她将在整个过程中演示这个主题的实际情况。
这里你可以看到一段引文,摘自世界经济论坛几年前的一份报告,这份报告是他们和埃森哲公司联合编写的。引用一家矿业公司首席执行官的话,利用技术是提高采矿安全和效率的核心。你可以很容易地用你的领域或行业来取代采矿,因为我认为这句话仍然是正确的。这一切都是关于使用这种新技术来从您的业务中获得更多,而不仅仅是使您的业务更安全,而是在不牺牲任何安全性或生产力的情况下使其变得更好。
这是麦肯锡几年前的一份报告中关于使用分析技术的另一段话。你可以想到任何一种算法和分析技术都能直接提高你几个百分点的收入。它基本上告诉你,你可以降低成本和提高生产力通过聪明地做你所做的,通过增加你在你的系统中应用的技术的复杂性。
这就引出了这张幻灯片。几乎所有行业都在经历这种趋势。他们正在经历一种趋势,即与系统交互的算法的复杂性正在增加,与系统集成的软件的复杂性也在增加。处理这种复杂性本身就有挑战,这就是我们今天要讨论的内容。您如何处理软件复杂性的增加,以及以可靠、安全和可预测的方式操作系统的复杂性的增加?
现在,如果您可以在实际系统上开发和试验新的算法,那将是理想的。但这里已经有了一些系统的图片,在真实的系统上进行实验是不现实的,不可能的,或者太昂贵了。例如,你可能想知道我的风力涡轮机在飓风中表现如何,但每次你委托一个风力涡轮机公园时,都要为你的新风力涡轮机公园召唤一个飓风,这有点不切实际。这就是为什么我们要在系统中使用模型。
在上次的网络研讨会上,Ruth-Anne展示了她如何使用虚拟植物,一个植物模型,来开发一种算法并对算法进行微调以适应这个植物模型系统的动态。今天,我们实际上进入了下一步,我们将采用那个算法,那个已经开发好的控制器,我们将在一个实际的控制或PLC上实现它,让PLC与我们的模型一起工作,与我们的虚拟工厂一起工作,并验证当PLC开始与一个实际的工厂对话时,它将如何表现,这些东西将正常运行。这就是我们所说的虚拟调试。
所以我们想要做的是虚拟调试是我们想要一个工厂的模型,把它放到一个虚拟环境中,放到一个模拟中,然后我们想要开发或应用一个我们想要在现实中实现的算法。我们想要在这个虚拟环境中实现它,以一种我们有信心的方式进行试验,当我们按下开关,让控制系统在真实的工厂上运行时,事情会顺利而正确地运行,让我们有信心,一旦它开始与各种其他系统集成,事情仍然运行得很好。
所以我们要看的第一步,我们从这个装有植物和控制器的金属盒子开始。我们要把那个控制器转移到一个控制器目标上。在我们今天讨论的例子中,它将是一个可编程逻辑控制器,一个PLC。它可以是任何其他类型的目标,但这是我们今天展示的步骤。我们如何在一个灵活的模拟环境中验证和开发这个算法,我们现在如何把它放在一个全面运行的生产环境中?我们使用的是自动代码生成。
这张图显示了它的复杂程度露丝-安妮会展示。我们有一个控制器区和一个工厂区。我们右键单击控制器块,选择我们想要的PLC代码。然后我们点击按钮,为子系统生成代码。这将为我们生成PLC代码,然后我们可以直接将其放到PLC上,这样我们就可以在生产中运行它或在虚拟调试中验证它。
你还会注意到,如果你看屏幕中间,我们已经选择了PLC代码。但如果您想实现HDL代码或C代码,这也是完全可能的。这意味着任何你能想到的目标,你都可以为它生成代码并实现它。
这是一个例子。一旦我们右击,Simulink会消失一段时间,然后为万博1manbetx你生成这个结构化文本文件。这个结构化的文本文件包含到原始模型的链接,因此您可以追溯到您实际看到这段代码与什么相关,并且它为您提供了关于它生成了什么以及它看起来像什么的报告。因此,这种自动代码生成的路径可以确保你在最初实现的内容、你测试过的内容、你在几年或几十年的条件和场景中模拟的内容之间没有错误,当你将其实现到PLC代码中时,你会有一个直接链接,显示它与我们现在要投入生产的代码相同。
完成之后的下一步是虚拟调试。我们把这个PLC代码,放到一个PLC上,然后我们让这个PLC和我们的工厂模拟对话。这意味着如果在将算法连接到实际工厂,连接到我们的Simulink时出现了任何问题,如果有任何集成问题,我们将在虚拟调试阶段的虚拟环境中找到它们。万博1manbetx这是一个阶段,如果你在真正的工厂上做这个,如果你有一些集成问题,它实际上有可能把工厂弄下来。所以在这个阶段,我们想要确保在这个代码模拟过程中,当我们把PLC和电厂连接在一起时,事情仍然正常运行。
现在要明确的是,在模拟过程中,我们验证了算法是有意义的。我们在这里所做的这一步实际上是为了确保一旦我们把算法放在我们的生产目标上,这个PLC,它仍然在它的新集成环境中正常运行。所以这里的积分很重要。
所以我们要做的是我们要把这个留在Simulink里的装置我们要把Simulink里的控制器转换成PLC。万博1manbetx我们最终会在Simulink中看到一个这样的环境它会像普通的模拟一样运行。万博1manbetx这和我们之前做过的模拟很相似。但实际上,我们是在和一个PLC通信。在这个特殊的例子中,我们通过OPC UA与这个PLC通信,这意味着我们正在与之通信的这个PLC可以在任何地方,可以在我们自己的计算机中,也可以是某个地方的另一台计算机。我们所拥有的通信实际上是通过网络进行的,就像生产过程中的PLC(听不清)体验一样。
现在,让我们看看这是什么样子的一个动作。露丝-安妮,把它拿走。
非常感谢,布兰科。在这个演讲中,我们将会看到如何在Simulink中实现这个。万博1manbetx正如Branko提到的,第一步是从控制算法自动生成代码,控制算法就在这个块里。如果你还记得几周前的第一次演讲,我们有这个——我们调整了这个子系统中的控制算法来满足一些要求。这些都是在连续时间内完成的。
现在我们想让这段代码运行在,在这个例子中,一个PLC上,它将以固定的时间步长运行。所以我们要做的第一件事是将连续时间控制块转换为离散时间设置。这涉及到设置合适的采样时间,这个例子在这个演示中,我们选择了0.5秒的采样时间,然后重新运行模拟来测试我们算法的整体性能。所以我要在这里运行一个模拟,这样我们就可以看到这个采样时间,这些离散时间控制块,我们的系统的性能是什么样子的。
我双击范围。你在上面的图中看到的是五个水箱的水位。你可以看到第一个容器,也就是黄线,有阶跃响应,看起来很平滑。当第一个燃料箱液位调整时,其他四个会有一点扰动。所以这个性能,让我们假设它是可以接受的,现在我们继续配置控制子系统,以自动生成PLC代码。
首先我们要选择方块。我们要做的第一步是把这个子系统变成原子子系统。因此,当我选择块时,我可以看到这个新选项卡显示在工具条中。我已经选择了这里的原子子系统。然后我要做的是为原子子系统设置采样时间,我右键单击块,然后单击块参数,我在这里选择了采样时间。我将其参数化,以方便测试和操作样本时间。
我要做的下一件事是选择目标ID。在应用程序选项卡中,我要做的第一件事是选择PLC编码器应用程序。因此,当我点击它时,它会打开一个新选项卡,它允许我为我的PLC代码生成配置设置。
这就引出了配置参数。你可以在最下面看到,我有一个PLC代码生成选项。对于这个例子,我选择了Siemens TIA门户作为我的目标IDE。如果我展开这个列表,你可以看到开箱即用,我们支持的范围很广——我有一个PLC,目标ide。万博1manbetx如果您在列表中没有看到您的用例,请告诉我们,我们非常乐意与您讨论您的具体用例。
然后我确保在这个块中,我指向了我想要为其生成代码的正确子系统。然后你可以在这里选择生成PLC代码。它的作用是自动生成针对设定中指定的目标的PLC代码。
现在你可以看到,我们已经成功地为那个块自动生成了PLC代码。生成的文件在这个scl文件中。我还可以访问代码生成报告,这也是自动生成的。单击scl文件。我非常喜欢这个工具的一件事是,在生成的代码和模型之间有这种可追溯性。我可以说选择这里的这个链接,在评论中,它似乎表明它与某种饱和度有关,双击它,它直接把我带到PID控制器中的这个饱和块。
好的,现在我们已经自动生成了代码,你可以用它做什么呢?那么,下一步是联合模拟部分,或者是示例的虚拟调试或虚拟测试部分。所以我在这里要做的是向你们展示如何将它集成到西门子项目中,然后设置一个虚拟模拟或虚拟调试测试。现在Branko谈到了什么是高层次的虚拟委托。在这个例子中,我将——而不是将代码部署到物理PLC设备上,我将使用虚拟PLC。
现在我们在西门子TIA门户。引入项目时,我要做的第一步是将scl文件指定为外部源文件。所以我点击添加新的外部文件,指向自动生成的代码,然后把它带到这里。然后我可以右键点击block从source生成block。然后从那里,我可以将block拖放到循环中断中,我已经在这里做过了。现在,这已集成到西门子环境中的项目中。
我现在要做的是把它下载到一个虚拟PLC上。为此,我使用PLC SIM [?的进步。就在这里,我已经预先配置了它,并且PLC实例是活动的。这个PLC,虚拟PLC,也配置了一个OPC UA服务器。所以我想做的是让这个虚拟PLC与OPC UA服务器对话。我还想让我的Simulink模型与OP万博1manbetxC UA服务器对话。我们来谈谈怎么做。
这就是我们用来自动生成PLC代码的模型。现在我要用OPC UA服务器的接口替换控制器块中的内容。让我们看一下这个模型。
所以这是与我之前展示的相同的模型,主要的区别是在这个块中,有一个与OPC UA服务器的接口。如果我双击这个块,我们看到的是MATLAB函数,MATLAB函数建立了与OPC UA服务器的连接,并处理数据传输的输入和输出。
如果我们回到Simulink模型,我们这里有MAT万博1manbetxLAB函数块把所有来自我们工厂模型的错误作为输入,然后通过OPC UA发送给虚拟PLC,它正在运行我们在上一步中生成的代码。该代码计算打开和关闭阀门所需的阀门命令。OPC UA再次将这些信号发送回Simulink模型,Simulink将这些信号万博1manbetx作为输入发送到植物模型。
现在让我们以共同模拟的方式来运行这两者。要启动我的虚拟PLC,请单击这个运行按钮。等绿灯亮了再走。现在我将启动Simulink模型。万博1manbetx
这是在运行一个工厂的Simulink模型,计算所有的工厂动态,还有一个通过OPC UA连万博1manbetx接的虚拟PLC,它在运行自动生成的控制器代码。如果我双击这里的范围,我将流媒体我们正在测试的每个坦克的水平的实时值。
所以我要停止这个,打开瞄准镜,缩小,这样我们就能看到整个东西,整个东西是什么样子的。现在这个运行了38到40秒的模拟,没有运行整个5到10分钟的基础模拟我们在PLC共同生成模型中展示的,只是为了节省时间。但这里的想法是,你可以自动生成代码,你可以部署到你的PLC。然后你可以在将PLC代码放入硬件之前对其进行测试。通过将虚拟PLC连接到Simulink,您可以在虚拟环境中测试它。万博1manbetx
这并不是唯一的——OPC UA并不是唯一支持这种工作流程的接口。万博1manbetx这是一种可能性。这个例子,是的,我用的是西门子环境。但是,正如你所看到的,西门子并不是唯一支持这种类型的工作流和这种测试框架的公司。万博1manbetx因此,与其他许多受欢迎的供应商一起做这件事当然是可能的。
总结一下,您在这个演示中看到的是如何从可以部署到PLC的Simulink模型自动生成代码。万博1manbetx然后,您看到了自动生成的代码是如何在虚拟PLC上与物理系统的动态模型工厂模型一起运行的。通过OPC UA连接,两者在一个共同模拟的环境中一起运行。现在,我将把它交给Branko来结束。
谢谢,Ruth-Anne。能看到这一切真的很酷。现在我们看到的是,我们在Simulink中看到了一个工厂,它正在与一个在其他地方运行万博1manbetx的PLC进行通信,共同模拟。实际上,在这种情况下,这也是一个由西门子提供的虚拟PLC,但它也可能是一个物理的独立PLC盒子,因为我们是通过OPC UA通信的。在第一次网络研讨会上,我们展示了模拟,用模拟来开发和验证算法。然后我们使用今天的代码生成来采用该算法并在PLC上实现它。然后我们使用虚拟调试来验证如果我们打开PLC并将其连接到一个工厂,事情仍然会运行良好。
如果你有这样的环境,你还可以做一些其他的事情。一件事是,我们已经展示了,我们正在生成代码,直接放在PLC中。因此,一旦您进行了验证,您就已经可以选择将PLC切换到生产中,这可能是一件聪明的事情。因此,您可以将这些经过验证的最优算法直接自动部署到生产中。
你也可以用它来探索带有实际控制系统的新工厂设计。所以你可以想象你建造了一个虚拟的新工厂,一个你正在建造的新工厂。你可以为所有你想要的控制系统开发算法,你可以把它们放在实际的控制器上,你可以在你建造工厂之前验证所有这些控制器都能正常工作。
您还可以连接到任何类型的工作平台。因此,如果你想要一个在云中或GPU上运行的算法,完全有可能使用完全相同的方法来验证这种集成。你可以尝试任何类型的平台,你可以用这种方式实现任何类型的平台。
另一个例子是你可以用这个虚拟植物作为训练模拟器。所以你可以用这个虚拟的工厂来模拟你的工厂中的某些灾难场景,让操作员直接与它交互就像他们与正常的控制面板交互一样因为他们实际上是直接与真实的PLC交互。但他们可以接受训练,对正常操作中永远不会遇到的情况做出反应。这些都是关于你还能做些什么的想法通过虚拟的工厂,虚拟的系统表示。
在上次的网络研讨会中,Ruth-Anne向大家讲述了Baker Hughes使用模型开发钻井系统算法的故事。我只想强调这个应用程序中的另一个小领域,他们不仅使用模型来开发他们的算法,他们实际上还使用了循环中的硬件,或者他们所谓的HIL测试,这实际上与虚拟调试是一样的,以确保他们不需要做很多现场测试,即使是将这些算法集成到他们的生产环境中。所以他们在模拟阶段省了钱,就像上次露丝安妮提到的,但他们也通过做这些虚拟调试测试省了钱。
现在我们所取得的成就是,在进入生产阶段之前,我们首先在虚拟工厂的类似生产环境中测试这些算法的集成,从而降低了昂贵的停机风险。另外,如果我们使用代码生成,如果我们在Simulink中有我们的算法,我们自动完成这个部署路径,我们就缩短了从概念想法到生产的时间。万博1manbetx因此,通过在虚拟环境中快速迭代算法设计,我们节省了时间。
将此与上次[听不清]网络研讨会的结果结合起来,我们通过先使用模拟,然后再使用虚拟调试来开发更复杂的算法,从而降低了昂贵的停机风险。我们已经创造了提高日益复杂的系统性能的能力,这样我们就可以在虚拟环境中开发复杂的东西。我们能够通过使用自动代码生成快速迭代这些过程来节省时间。
这里有一个资源列表,可以让你更深入地研究这些主题。顶部是我们目前正在运行的网络研讨会系列的链接。接下来还有更多有趣的话题。在我们的网站上有一份白皮书,其中包含了更多关于虚拟调试的细节,并包含了其他视频和论文的链接。这里有另一个网络研讨会系列的链接。如果你错过了露丝·安妮演讲的第一部分,我们的网站上也有。
但是我们真正希望你们做的是联系我们,我们中的一个或所有人,当你们对这个话题感兴趣的时候,当你们对建立一个模型来开发算法或者通过虚拟调试在虚拟环境中验证算法感兴趣的时候。请与我们保持联系。我们非常愿意和渴望帮助你解决这个问题。请和我们谈谈。非常感谢您的关注,请保持联系。
下载代码和文件
相关产品s manbetx 845
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。