主要内容

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

在本例中,您将回顾永磁同步电机(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/秒。当前命令表示对非显著性永磁同步电机的正交电流命令。(控制器将直流电调至零。)注意,对于该电机和控制器,电磁转矩与测量到的电机正交电流密切相关。

探索植物规范

在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。存储类设置为的参数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'模型…在模型'hdlcoderFocCurrentFixptHdl'上应用HDL优化…###开始生成模型模型生成完成。###生成新的验证模型: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://C:\Users\amoses\OneDrive - MathWorks\Documents\MATLAB\Examples\hdlcoder-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的端口。

Baidu
map