天天看点

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

作者:谱线科技

您仍然可以使用Moku Cloud Compile实现自定义VHDL,而无需成为专家。了解如何使用ChatGPT在MCC中实现复杂功能。

在执行实时故障检测时,您通常会遇到两种选择:您可以高速率采样但面临长久的死区时间,也可以以非常低的速率采样几乎连续的数据。显然,这两种方法都不理想。然而,有一种方法可以更好地优化您的测试设备——使用VHDL和可定制的测试设备,自己编写瞬态故障检测程序。这样做可以让您在FPGA中实时检测故障,甚至在您已经在使用的测试和验证设备中进行检测。我们知道,编写FPGA代码比更传统的过程编程更具挑战性,这是当之无愧的。然而,新一代的大型语言模型,如ChatGPT,可以在不了解详细信息的情况下轻松地在语言中提高生产力。

传统方式

测试平台不太擅长瞬态故障检测。通常有两种监控和检测方法:

  1. 高速率但间歇性
  2. 低速率但连续

选项1使用示波器。示波器的死区时间通常在20%到>99.9%之间,因此依靠在屏幕上“看到”瞬态故障是非常不可能的。解决这个问题的一种方法是设置触发器,使示波器能够为您进行故障检测,并向您显示结果。这种方法有几个缺点:首先,故障必须是能够被触发的东西,其次,它只能可靠地告诉您故障是否发生过一次。它不能确定故障计数、故障率、故障条件下的总时间等。

选项2使用数据记录器或数据采集设备。在这种情况下,计算机实时监控所有相关信号,并可以计算中间值。系统检测故障和相关参数。然而,这种方法也有其自身的一组缺点。这种方法需要具有适当编程环境的计算机,但更重要的是,它只能以某种最大速率监测信号,受到计算机功率、任何计算的复杂性以及数据采集设备与计算机之间连接的吞吐量的限制。

最好将这两种方法结合起来:检测复杂的瞬态故障条件并实时测量其参数,而不限于低采样率。方便的是,Moku设备利用片上仪器架构和用户可编程FPGA。Moku云编译(MCC)与Moku设备上的多达12个其他仪器一起(图1),为自定义仪器提供了一个编程环境。MCC提供了编写自己的FPGA代码并将其部署到Moku所需的所有基础设施。

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

图1:带有iPad和桌面界面的Moku产品阵容

示例:暂态功率检测

假设您的测试人员需要监控电力系统的暂态功率。该系统的额定功率为总功率,但实际上,只要故障条件下的事件率、事件时间和总时间低于阈值,它就可以承受暂态过功率。换句话说,我们想要设计一个能够:

  1. 通过系统中的一个点监控功率,即监控电压和电流,然后计算功率。
  2. 计算功率超过阈值的次数(如果有的话)。
  3. 记录功率超过阈值的总时间。

我们还可以记录任何一个故障的最大持续时间、故障条件下的总能量等等,但我们将把自己限制在这三个步骤。

这不适合像示波器那样的间歇性监控。当示波器的输入是电压和电流时,它需要示波器在功率电平上触发。很少有系统可以使用实时计算作为触发电路的输入。

根据系统参数的不同,它也不适合数据采集方法。现代电力系统可能会因高速瞬变而损坏,需要高采集率;但是像这样的电力系统通常是为长时间、连续使用而设计的,因此系统需要监控以增强对其行为的信心的时间也可能很长。这导致数据量非常大,增加了成本和复杂性。

定制的片上仪器部署非常合适,让我们看看如何使用ChatGPT来帮助我们构建一个。

ChatGPT用于自定义故障检测

首先,ChatGPT在得到非常具体的指令时表现最好。将大的问题陈述分解成更易于管理的迭代。这样,它就相当人性化了!

接下来,我们要求一个VHDL实体来计算图2中的故障事件数量。

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

图2:基于VHDL的故障计数器的提示ChatGPT。

接下来,我们添加一个计数器,用于显示处于故障状态下总时间(图3)。

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

图3:提示ChatGPT向我们的程序添加计数器。

最后,我们通过将其作为端口添加到VHDL实体(图4),使故障条件阈值在运行时可配置。在最终的MCC实现中,该阈值将连接到控制寄存器,因此可以设置它而不需要重建整个仪器。

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

图4:提示ChatGPT修改我们的实体。

在这篇文章的末尾找到最终VHDL的完整列表。

请注意,我们还没有解决计算输入功率的问题。我们可以通过在电压和电流输入进入VHDL实体之前简单地将它们相乘来实现这一点。图5显示了如何在MCC中实例化此实体的示例,将功率作为输入。

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

图5:在VHDL中计算输入信号的功率

请注意,这确实将输入端口的宽度从16位增加到32位。要么这里的实例化可以扔掉低16位(如果精度损失是可以接受的),要么实体更新为直接接受32位输入。无论哪种方式,您需要做的就是询问!请参阅本文末尾的提示。

回顾:使用ChatGPT和Moku云编译执行自定义瞬态故障检测

我们遇到了一个问题,需要对计算量(而不是可以直接测量的量)进行实时、高速率、无死区的故障检测。仅仅经过三个提示,ChatGPT就给了我们在VHDL中实现这一点所需的所有代码,VHDL是一种专门为FPGA上的高速数据处理而设计的语言。一个简单的剪切和粘贴操作和一点点粘合代码,以及来自Liquid Instruments的Moku 云编译将其变成了一个定制的仪器,能够部署到Moku片上仪器。10分钟的工作还不错!

附录1:代码列表

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

附件2:端口连接提示

使用ChatGPT和Moku 云编译执行自定义瞬态故障检测

继续阅读