开始Simscape硬件在循环工作流
您可以将Simscape™模型转换为用于现场可编程门阵列(FPGA)部署的HDL代码,这需要HDL Coder™。物理系统的模拟加速了,使您能够快速地建立模型原型。转换还通过使用硬件在环(HIL)仿真提供HDL实现模型的实时仿真。
通过将Simscape工厂模型部署到通用fpga、芯片上系统(soc)或Speedgoat,您可以以更小的时间步长和更高的精度执行HIL模拟®FPGA I/O模块。使用此工作流,您可以:
使用Simscape HDL Workflow Advisor生成HDL实现模型。实现模型是一个Simulink®用与hdl兼容的Simulink块替换Simscape组件的模型。有关更多信息,请参见使用Simscape HDL Workflow Advisor生成HDL实现模型.
生成实现模型的HDL代码,然后使用HDL Workflow Advisor将生成的代码部署到Speedgoat FPGA I/O模块。有关更多信息,请参见HDL代码生成和部署.
您可以在Simscape中建模和部署复杂的物理系统,同时将模型转换为HDL代码。
此工作流图显示了Simscape硬件在循环工作流的各个阶段的功能。
在Simscape中为HDL兼容性建模物理系统
当您设计与Simscape HDL Workflow Advisor兼容的Simscape模型时,请遵循以下指导原则。在使用此工作流之前,请将Simscape子系统转换为状态空间算法。有关更多信息,请参见Simscape子系统替换建模指南.
您可以使用线性、切换线性和非线性块来创建Simscape模型。
线性块是由线性关系定义的块,如电阻。
开关线性块是诸如二极管和开关的块。这些块也由线性关系定义,例如V = ir,在那里R可以根据二极管或开关的状态在两个或多个值之间切换。
非线性块是由非线性方程定义的块,例如非线性电阻,非线性电感器,直流电机,永磁同步电动机块。
您可以根据模型中的块类型选择求解器类型(向后欧拉或分区)。如果您的模型中有线性和切换线性块,请选择向后欧拉求解器类型。如果您的模型中有非线性块,请选择分区求解器类型。有关更多信息,请参见解算器配置(Simscape).
配置求解器设置
为了配置HDL代码生成的求解器设置,打开您的模型,例如:
open_system (“sschdlexBoostConverterExample / Simscape_system”)
双击解算器配置(Simscape)块。
选择解算器类型.要为块选择求解器类型,双击解算器配置(Simscape)块。
在“块参数”对话框中,选择使用局部求解器.
从解算器类型下拉列表,选择
向后欧拉
用于线性和切换线性块。对于非线性块,选择分区
.对于升压转换器,选择向后欧拉
.
指定采样时间。类似地,你可以指定一个离散的采样时间。
在“块参数”对话框中,选择使用局部求解器.
在样品时间文本框中,指定离散采样时间Ts。
要验证求解器设置是否正确指定,请运行检查解算器配置任务在Simscape HDL Workflow Advisor中。
运行hdlsetup
函数
创建模型后,通过运行命令配置用于生成HDL代码的模型hdlsetup
函数。这个函数hdlsetup
将模型配置参数设置为代码生成推荐的默认值。方法之前打开模型hdlsetup
函数。
调用hdlsetup
函数为current_model
,在MATLAB中®命令提示符,输入:
hdlsetup (“current_model”)
在运行hdlsetup
函数,确保您的模型编译没有任何错误或警告。
用于HDL代码生成的Simscape示例模型
对于HDL代码生成,您可以设计自己的Simscape算法,或者从Simscape中创建的示例模型列表中进行选择。
使用后向欧拉求解器的示例模型
使用分区求解器的示例模型
所有示例都以sschdlex
并加上例子
.例如,要打开升压转换器模型,在MATLAB命令提示符处输入:
load_system (“sschdlexBoostConverterExample”) open_system (“sschdlexBoostConverterExample / Simscape_system”)
您还可以找到许多其他特定于应用程序的示例模型。要获得为HDL代码生成而设计的所有Simscape模型的列表,请键入sschdlex
在MATLAB命令窗口中按选项卡关键。
使用Simscape HDL Workflow Advisor生成HDL实现模型
您首先使用Simscape HDL Workflow Advisor从Simscape模型生成HDL实现模型。
要生成HDL实现模型,请打开Simscape HDL Workflow Advisor。
在MATLAB命令提示符下,运行sschdladvisor
功能:
sschdladvisor (“current_model”)
此函数打开Simscape HDL Workflow Advisorcurrent_model
.
在Simscape HDL Workflow Advisor中运行任务
在Simscape HDL Workflow Advisor中,左侧窗格列出了包含相关任务组或类别的文件夹。展开文件夹会显示每个文件夹中可用的任务。在左侧窗格中,您可以选择文件夹或单个任务,并在右侧窗格中查看相关信息。对于左窗格中的任务,右窗格包含用于运行任务的控件、用于状态消息的显示区域和其他任务结果。要详细了解每个任务,请右键单击该任务并选择这是什么?从名单上。
在Simscape HDL Workflow Advisor窗口中,您可以运行单个任务或列表中的所有任务。选择要运行的任务并单击运行此任务.要运行一个任务,它之前的所有任务必须已经成功运行。若要将工作流运行到子文件夹中的特定任务,请展开该文件夹,然后右键单击该任务并选择运行到选定任务.
要运行工作流并将HDL实现模型的功能与原始Simscape算法进行比较:
选择生成实现模型的任务。
下验证设置,选择为实现模型生成验证逻辑复选框。这将启用验证逻辑公差哪个被设置为默认值
0.001
.右键单击生成实现模型任务和选择运行到选定任务从名单上。
任务完成后,您将看到到HDL实现模型和状态空间验证模型的链接。实现模型具有与原始Simscape模型相同的名称,并使用前缀gmStateSpaceHDL
.状态空间验证模型与实现模型具有相同的名称,并使用后缀_vnl
.
有关Simscape HDL Workflow Advisor任务的更多信息,请参见Simscape HDL工作流顾问任务.
HDL代码生成和部署
对于HDL代码生成,您可以使用生成的状态空间验证模型来验证HDL实现模型和原始Simscape算法的数值结果。
在生成HDL代码之前,验证生成的HDL实现模型。
验证HDL算法
您可以将HDL实现模型的功能与原始Simscape算法进行比较。要验证HDL实现模型,请模拟状态空间验证模型。如果模拟没有产生任何断言或警告,则表明HDL实现模型的输出在指定的公差范围内与原始Simscape算法匹配。有关更多信息,请参见验证HDL实现模型到Simscape算法.
生成代码
一旦验证了HDL算法,就可以为实现模型生成HDL代码。在MATLAB命令提示符中,输入:
makehdl (gmStateSpaceHDL_current_model / HDL子系统)
生成HDL代码后,可以将实时模型部署到目标硬件上。有关如何部署代码的详细信息,请参见使用HDL工作流脚本部署Simscape Buck转换器模型到Speedgoat IO模块.
从Simscape模型生成HDL代码的限制
HDL Coder不支持从包含以下内容的Simscape网络生成代码:
另请参阅
makehdl
|sschdladvisor
|hdladvisor