主要内容

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

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

介绍

该示例被分区,这样您就可以为控制算法生成代码,并使用模拟测试台验证控制算法的行为。运行系统仿真测试台模型hdlcoderFocCurrentTestBench需要Simscape (TM) Electrical (TM)。slx,但不需要从控制算法模型hdlcoderFocCurrentFixptHdl.slx生成代码。

通过模拟验证行为

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

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

scope显示一个1安培步进电流命令被要求和负载速度之间的锁定转子(零),+100 rad/sec,和-100 rad/sec。当前命令表示一个对非显著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。万博1manbetx存储类被设置为“ExportedGlobal”的参数。这告诉HDL Coder为这些参数生成实体端口,而不是常量值。

生成控制算法的HDL代码

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

  • 创建一个DUT子系统:为了生成HDL代码,最好创建一个DUT (Design Under Test)子系统,从这个子系统生成HDL代码。这个子系统有几个用途,包括作为HDL优化设置的占位符。

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

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

%您可以生成并查看控制器的HDL代码。makehdl (“hdlcoderFocCurrentFixptHdl / FOC_Current_Control”);
###为'hdlcoderFocCurrentFixptHdl/FOC_Current_Control'生成HDL。###使用configset for model hdlcoderFocCurrentFixptHdl用于HDL代码生成参数。###运行HDL检查模型'hdlcoderFocCurrentFixptHdl'。###开始编译模型'hdlcoderFocCurrentFixptHdl'…###在hdlcoderFocCurrentFixptHdl模型上应用HDL优化…开始模型生成。###模型生成完成。###生成新的验证模型:gm_hdlcoderFocCurrentFixptHdl_vnl. txt "###验证模型生成完成 ### 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/Max/Max as hdlsrc/hdlcoderFocCurrentFixptHdl/Max.vhd. ### Working on hdlcoderFocCurrentFixptHdl/FOC_Current_Control/Space_Vector_Modulation/Min/Min as hdlsrc/hdlcoderFocCurrentFixptHdl/Min.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/Bdoc21b_1757077_221275/tpcf1538dd/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的端口。