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