艾琳·伯恩,MathWorks
本视频向您展示了使用Simulink设计信号处理系统的示例金宝app®。
你从一个空白的Simulink模型开始,设计一个信号处金宝app理算法来预测是晴天还是阴天,从而优化太阳能电网产生的电力。本视频将带您分析传感器信号、设计过滤器并最终生成用于硬件部署的代码。
在本视频的最后,您将学习Simulink的基础知识,以及如何使用基于模型的设计来建模、模拟、测试和实现真实的金宝app信号处理系统。示例中使用的模型文件可以在下面的链接中找到。
我们生活在一个传感器的世界。它们在工厂的机器人里,在我们的汽车里,在我们的手腕上,甚至在我们的冰箱里,确保我们的食物保持新鲜。这些传感器产生信号。
在本视频中,我们将使用Simulink来处理来自金宝app传感器的信号。我们将对信号进行频谱分析。基于此,我们将设计和构建数字滤波器作为信号处理算法的一部分。我们将评估算法的性能,一旦准备就绪,就将模型转换为可嵌入实时硬件的C代码。让我们开始吧…
在位于马萨诸塞州纳蒂克的MathWorks总部,有可以发电的太阳能电池板。我们将每15分钟测量一次阵列产生的功率。这是我们的信号。
当然,能量取决于日照的多少,而日照的多少又取决于一天中的什么时候……和天气。
预测和管理可变生产和需求是可再生能源发电的重要组成部分。为了使产生的能量更平滑,在晴天,我们可以把部分能量储存在电池里。然后在阴天,我们用它来补充低发电量。
让我们设计一个系统,它可以预测是晴天还是阴天使用信号处理技术在Simulink。金宝app
您可以通过单击MAT金宝appLAB工具条上的Simulink按钮来启动Simulink。这打开了开始页面,您可以在其中创建新模型、查找示例,甚至查找基础培训。
我们从零开始我们的模型,所以我们将选择空白模型并将其保存为sunnyvscloudy。
金宝appSimulink模型是由模块和信号线构成的。打开库浏览器,查看所有可用的块。
我们将从两个电信号开始——一个来自晴天,另一个来自阴天。
要查看我们的信号,让我们将两个输入端口(或简称Inports)拖到模型中。然后添加一个作用域块。
让我们将两个输入块标记为“Sunny Day”和“Cloudy Day”,范围块标记为“Time Domain”。
我们可以通过点击和拖动将这些模块与信号线连接起来。要标记信号线,双击并键入名称。
现在我们需要数据。在MATLAB中,我们有两个矢量,sunnyDay和cloudyDay,表示6月的两个特定日子的功率测量值。对应的时间戳以天为单位。
我们也有采样频率,在每天的样本,在变量的FS。每15分钟采样意味着我们得到每天96个样品。
我们必须设置两个Inport的示例时间,因此双击每个Inport来调整它的块参数。在“信号属性”选项卡下,将采样时间设置为采样频率的倒数。
要将数据导入Simulink,可以转到Mode金宝appl Settings窗口,然后转到data Import/Export窗格,并添加时间和两个电源信号作为输入。我们还应该将总模拟时间设置为1天。
现在我们可以通过点击工具条中的run按钮来运行我们的模型。
让我们双击Scope块来查看信号。
让我们用直线连接我们的数据点。
光滑的黄线是阳光灿烂的日子。蓝线表示的是阴天产生较少的权力,因为你所期望的,也有很多的短期变化的云越过太阳能电池阵列。
那么我们如何使用这些特征来决定我们是晴天还是阴天呢?
我们再来看看频域内的信号。我们将使用光谱分析,它帮助我们测量每个信号的频率内容。我们首先从DSP系统工具箱中添加一个频谱分析仪模块,然后将两个信号连接到它。
分支信号线,你可以拖动信号线块单击鼠标右键。
我们有短信号,所以我们需要改变一些设置在频谱分析仪块,以便我们可以看到他们正确。
这一次,我们可以通过按顶部的绿色按钮在频谱分析仪内运行我们的模型。让我们打开图例看看哪一天是哪一天。
那么,我们在看什么?
x轴是频率值。y轴表示在给定频率下信号的功率。虽然默认的时间单位是秒,但实际上我们是以天为单位度量时间的。所以x轴是每天的周期,而不是每秒的周期。
我们可以看到,这两天的低频含量大致相同,但是多云的那一天的高频含量要高得多。还记得那些短时间的变化吗?这就是它们在频域的样子。
所以也许我们可以通过比较某一阈值的高频功率来区分晴天和多云。
然而,太阳能电池板在夏季产生的电力更多,而在冬季产生的电力更少,这意味着这一门槛在全年都必须改变。
我们希望一年中所有季节都有一个恒定的阈值。如果我们用低频功率对高频功率进行归一化,我们可以使用一个固定的阈值。所以,让我们试着计算频率最高的75%的总功率与频率最低的25%的总功率之比。
那么,我们如何区分低频和高频呢?通过构建数字滤波器。我们需要一个低通滤波器为低频内容和一个高通滤波器为高频内容。
要构建这两个过滤器,我们首先将模型剥离回一个Inport和Scope块……并从DSP系统工具箱中拖动一个过滤器实现向导块。
双击block打开Filter Designer App。如果你在MATLAB中设计过过滤器,你可能以前用过这个App。让我们点击“设计过滤器”图标开始设计低通过滤器。
因为我们每15分钟只能得到一个样本,所以我们需要一个过滤器,它只对几个样本起作用。我们将使用Chebyshev类型1 IIR过滤器,并将过滤器顺序设置为4。
然后我们必须指定截止频率。记住,我们想让低25%的频率通过。因此我们选择归一化频率并将wpass设置为0。25。我们将使通带纹波小于0.05分贝。
最后,按下底部的设计过滤器按钮。我们看到新的响应就是我们想要的。
我们可以通过单击Group delay Response按钮来检查我们的过滤器所引入的延迟。对于小于0.25的频率,延迟约为3个样本。我们以后再记吧。
现在我们已经完成了过滤器的设计,让我们通过单击Realize model图标将其添加到Simulink模型中。金宝app我们将该块称为“Lowpass过滤器”,并选择“使用基本元素构建模型”选项。这样我们就可以看到基本的Simulink块,用于制作过滤器,金宝app比如延迟、乘和添加块。
当我们点击“实现模型”按钮时…
…在我们的模型中创建了一个新的子系统。让我们双击这个来查看里面。
果然,过滤器仅仅是单位延迟,收益,并添加块,其中现代DSP芯片和FPGA优化实现。
现在是高频内容。我们可以重复同样的过程来设计和实现高通滤波器。在这种情况下,高通滤波器将输入信号延迟1个采样。
好的,让我们测试一下我们的新滤波器。
我们添加了三个并行路径:一个用于原始功率信号,一个用于低通滤波版本,一个用于高通滤波版本。我们想要比较它们。
但是要记住,低通滤波器引入了3个样本的延迟,而高通滤波器引入了1个延迟。所以我们需要添加一些延迟块来确保三个信号是对齐的。双击模型,输入“delay”,可以在3个样本的原始信号上快速添加延时块,在2个样本的高通信号上快速添加延时块。
我们会修改模型使用更长的2½左右的数据集,这是存储在变量与时间戳在t。
在示波器上,让我们放大六天。
黄线为原始功率信号。蓝线为低通信号,代表总体平滑趋势。红线是高通信号,它捕捉了云层变化。在多云期间,这些变化可能很大。
现在我们已经分离出了低频和高频信号,我们准备构建Sunny测试。
我们需要聚合足够的时间,以便我们的过滤器给出合理的结果,但我们不想等待太久才能得到答案。所以我们将使用一个3小时的窗口,也就是12个测量!
为了在时间窗口上存储过滤器输出,我们将使用DSP系统工具箱中的缓冲块。
双击缓冲区,可以将缓冲区大小设置为12,以处理三个小时的窗口。每个过滤器路径上都需要一个缓冲区。
现在,我们将使用一些基本的数学操作块来计算sunny测试,比如绝对值、元素的和以及块的划分。
让我们添加一个块来比较比率与阈值。使用Sim金宝appulink,您可以很容易地进行实验,找到这个阈值的合适值。22可以很好地工作,但是可以随意使用这个值,看看它如何改变结果。
非sunny的比较输出为0,sunny的比较输出为1。让我们把它缩放到与最大功率匹配,这样它就会在图上很好地显示出来。
我们应该删除作用域块上的额外输入端口。
在运行之前,请注意这些缓冲区为信号增加了一些延迟。为了与原始信号保持一致,我们需要将延迟增加12。
好的,让我们运行一下,看看我们的算法是如何工作的。如果我们像以前一样放大,它看起来运行得很好。
但是如果我们看不同的六天,我们会发现我们的方法有问题。有时它说它是阳光在午夜!
为了解决这个问题,让我们修改我们的sunny测试,添加一个日光探测器。我们将简单地将低频功率与另一个阈值进行比较,该阈值让我们知道太阳是否真的升起。我们可以将这两个条件与AND块结合起来。
重新运行模型并检查那些日子…我们发现我们已经解决了错误检测的问题。
现在我们有了一个可用的算法,我们希望将其部署到嵌入式系统中。使用嵌入式编码器,我们可以将其部署到Arduino、Raspberry Pi、Zynq和许多其他设备上。
让我们将模型部署到Arduino Uno板上。
我们将打开模型设置窗口并选择硬件板。然后,我们用输出端口替换用于测试的范围块。
现在让我们生成代码。这将使用我们的Simulink金宝app模型并生成我们需要编译模型以进行部署的所有C文件。还可以为其他嵌入式系统生成通用C代码。
或者…VHDL或Verilog代码部署到FPGA。
一旦我们有了生成的代码,我们就把它移植到太阳能电池阵列的嵌入式硬件上。
看看我们使用Simulink做了什么!金宝app我们现在有了稳定的可再生能源来源。
您已经了解了如何从一个空白的画布过渡到在嵌入式系统上运行的信号处理应用程序。你也可以试试这个。这些文件可供下载。
现在您已经对使用Simulink有了一定的了解,是时候学习它了。金宝app学习Simulink的最佳方法是使用它。金宝app启动Simulink O金宝appnRamp,它会教你一些基础知识。这是免费的,只需要几个小时。
欢迎来到仿真软件!金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家站点不适合来自您所在位置的访问。
本网站使用Cookies来改善您的用户体验,个性化的内容和广告,并分析网站流量。通过继续使用本网站,您同意我们使用Cookie。请参阅我们的隐私政策要了解更多关于cookie和如何更改设置。