主要内容

永磁同步电机的磁场定向控制

在本例中,您将回顾永磁同步电机(PMSM)的场定向控制(FOC)算法。您将用闭环系统模拟测试控制算法,然后为控制算法生成HDL代码。您还将看到如何指定可调参数数据以及如何生成相应的HDL端口实体。

简介

示例经过了分区,以便您可以为控制算法生成代码,并使用模拟测试台架验证控制算法的行为。需要Simscape (TM) Electrical (TM)来运行系统仿真试验台模型hdlcoderFocCurrentTestBench.slx但是从控制算法模型生成代码时并不需要hdlcoderFocCurrentFixptHdl.slx

通过模拟验证行为

在这个例子中,FOC被用来调节相电流来控制电机的转矩。您可以模拟一个测试平台来探索系统的行为。在仿真过程中,求解器可能会在速度载荷突变时产生过零相关的警告。您可以在模拟过程中禁用这些警告。

hasSimPowerSystems = license (“测试”“Power_System_Blocks”);如果hasSimPowerSystems open_system (“hdlcoderFocCurrentTestBench”) set_param (“hdlcoderFocCurrentTestBench”“IgnoredZcDiagnostic”“没有”);sim卡(“hdlcoderFocCurrentTestBench”) set_param (“hdlcoderFocCurrentTestBench”“IgnoredZcDiagnostic”“警告”);结束

范围显示,1安培步进电流命令被请求,负载速度变化之间锁定转子(零),+100 rad/秒,和-100 rad/秒。current命令表示对非显着PMSM的正交电流命令。(控制器将直流电调至零。)注意,对于该电机和控制器,电磁转矩密切跟随测量电机的正交电流。

探索工厂规格

在Motor_And_Load子系统中,您将看到被控制组件的数学模型。逆变器的平均模型用于驱动与速度负载相连的永磁同步电动机的恒参数dq电压方程模型。

如果hasSimPowerSystems open_system (“hdlcoderFocCurrentTestBench / Motor_And_Load”结束

探索控制算法规范

FOC电流控制算法在单独的模型中指定。在控制算法中,利用Clarke和Park变换将电机的电气方程从三相静止参照系投影到两相旋转参照系。这通过删除时间和位置依赖关系简化了控制。空间矢量调制使控制器在相位上获得更大的电压,而不是仅仅使用逆克拉克变换的正弦输出。

load_system (“hdlcoderFocCurrentFixptHdl”);open_system (“hdlcoderFocCurrentFixptHdl / FOC_Current_Control”

探索数据规范

控制器和装置(即电机和负载)都引用MATLAB工作空间中的数据。数据定义文件创建该数据,并在系统测试台架模型的PreLoadFcn回调中自动运行。

编辑(“hdlcoderFocCurrentFixptHdlData.m”

当您查看这个文件时,请注意参数paramCurrentControlP和paramCurrentControlI被指定为Simulink。金宝app存储类设置为的参数ExportedGlobal.这告诉HDL Coder为这些参数而不是常量值生成实体端口。

生成控制算法的HDL代码

在生成HDL代码之前,重要的是要确保模型遵循HDL代码生成的某些重要设置。以下是一些主要步骤:

  • 创建一个DUT子系统:对于HDL代码生成,最好创建一个DUT(测试设计)子系统,从中生成HDL代码。这个子系统有几个用途,包括作为HDL优化设置的占位符。

  • 为HDL设置:为了为HDL代码生成做好准备,一定的求解器设置和模型设置必须到位。的hdlsetup命令负责所有这些设置,应该在HDL代码生成之前运行。

  • 检查采样时间:应用HDL优化要求所有块采样时间都被推断为离散的。需要注意的主要块类型是常量,默认情况下,它们派生一个'inf'采样时间。我们可以找到这些块,并显式地设置它们的采样时间为-1所以他们得到了正确的反向传播样本时间。

您可以为控制器生成和检查HDL代码。makehdl (“hdlcoderFocCurrentFixptHdl / FOC_Current_Control”);
为'hdlcoderFocCurrentFixptHdl/FOC_Current_Control'生成HDL。###使用模型的配置集hdlcoderFocCurrentFixptHdl用于HDL代码生成参数。在“hdlcoderFocCurrentFixptHdl”模型上运行HDL检查。开始编译模型'hdlcoderFocCurrentFixptHdl'…应用HDL优化模型'hdlcoderFocCurrentFixptHdl'…开始模型生成。模型生成完成。###生成新的验证模型:gm_hdlcoderFocCurrentFixptHdl_vnl。验证模型生成完成。 ### Begin VHDL Code Generation for 'hdlcoderFocCurrentFixptHdl'. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Clarke_Transform as hdlsrc/hdlcoderFocCurrentFixptHdl/Clarke_Transform.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/DQ_Current_Control/D_Current_Control/Saturate_Output as hdlsrc/hdlcoderFocCurrentFixptHdl/Saturate_Output.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/DQ_Current_Control/D_Current_Control as hdlsrc/hdlcoderFocCurrentFixptHdl/D_Current_Control.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/DQ_Current_Control as hdlsrc/hdlcoderFocCurrentFixptHdl/DQ_Current_Control.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Inverse_Clarke_Transform as hdlsrc/hdlcoderFocCurrentFixptHdl/Inverse_Clarke_Transform.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Inverse_Park_Transform as hdlsrc/hdlcoderFocCurrentFixptHdl/Inverse_Park_Transform.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Park_Transform as hdlsrc/hdlcoderFocCurrentFixptHdl/Park_Transform.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Sine_Cosine/Sine_Cosine_LUT as hdlsrc/hdlcoderFocCurrentFixptHdl/Sine_Cosine_LUT.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Sine_Cosine as hdlsrc/hdlcoderFocCurrentFixptHdl/Sine_Cosine.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Space_Vector_Modulation as hdlsrc/hdlcoderFocCurrentFixptHdl/Space_Vector_Modulation.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control as hdlsrc/hdlcoderFocCurrentFixptHdl/FOC_Current_Control.vhd. ### Generating package file hdlsrc/hdlcoderFocCurrentFixptHdl/FOC_Current_Control_pkg.vhd. ### Code Generation for 'hdlcoderFocCurrentFixptHdl' completed. ### Generating HTML files for code generation report at hdlcoderFocCurrentFixptHdl_codegen_rpt.html ### Creating HDL Code Generation Check Report file:///tmp/Bdoc22a_1891349_32774/tp571c54f9/ex38994846/hdlsrc/hdlcoderFocCurrentFixptHdl/FOC_Current_Control_report.html ### HDL check for 'hdlcoderFocCurrentFixptHdl' complete with 0 errors, 1 warnings, and 0 messages. ### HDL code generation complete.

在生成的hdlcoderFocCurrentFixptHdl.vhd该实体为paramCurrentControlP和paramCurrentControlI提供端口的文件。