主要内容

永磁同步电机的场向控制

这个例子展示了如何建模控制器,并在Xilinx®Zynq®-7000 All Programmable SoC目标上实现它。本例使用了带有Analog Devices®电机控制FMC板的ZedBoard™。如果你没有所需的硬件,你可以使用这个例子来帮助你为自己的硬件配置开发一个控制器。

介绍

本例为永磁同步电机(PMSM)建模一个面向场的控制器(FOC),但你可以应用本例中显示的技术来开发大多数控制器算法。这幅图显示了从模型仿真到将控制器算法部署到嵌入式硬件板上的通用工作流。

模拟一个系统测试台架,以洞察控制器算法设计的行为。然后探索设计,看看算法是如何划分的。算法的高速率部分被划分到一个配置为HDL代码生成的模型中。算法的低速率部分被划分到配置为C代码生成的模型中。从这些模型生成C和HDL代码,并学习如何将这些代码集成到您的设计中。

在探索了算法C和HDL代码之后,将算法代码自动部署到处理器和可编程逻辑的参考框架中。然后,在部署的应用程序上执行一个测试,记录结果,并将其与模拟结果进行比较。

因为这个例子部署了一个位流和ARM®可执行文件到Xilinx Zynq,你必须在开始这个例子之前设置Xilinx Zynq硬件板。为确保环境的正确设置,请完成瞄准Xilinx Zynq平台(高密度脂蛋白编码器)在开始此示例之前使用您的硬件配置。

需求

有关硬件的更多信息,请参见Zynq所有可编程SoC/模拟设备智能驱动套件

模拟算法的行为

本节展示了如何打开example项目,检查controller模型,并通过仿真验证控制器行为。此示例被打包为一个项目。有关Simulink®项目的更多信息,请参见是什么项目?(模型)

1.运行zynqexPMSMFOCStart函数在默认的MATLAB®projects文件夹中创建并打开本例项目文件的工作副本。要选择一个特定的文件夹,使用文件夹的绝对路径作为输入。文件夹的绝对路径必须小于80个字符。

zynqexPMSMFOCStart (“C: \ Temp”);

2.选择快捷方式管理查看本示例使用的快捷方式。

3.右键单击快捷方式并识别开放运行快捷方式上下文菜单项。

4.运行的任务。t1_openSimulationTestBenchModel快捷方式打开focZynqTestBench模型。

task.t1_openSimulationTestBenchModel

Motor_And_Load子系统由表面PMSM、电机负载、编码器和电流传感器的数学模型组成。Controller_Algorithm子系统包括I/O工程单元转换、电气位置计算、转子速度计算、模式调度器和四种控制模式(禁用、开环速度控制、编码器校准和闭环速度控制)。的C / DD / C子系统将数据从连续时间、可变时间步长求解器和浮点数据类型转换为离散时间、固定时间步长求解器和定点数据类型,模拟。

如果您没有安装Simscape Electrical™,Motor_And_Load子系统包含一个块,允许您使用默认的电机和负载参数来模拟模型。在这种情况下,您无法浏览或修改参数。

5.在模拟选项卡,单击运行模拟模型。

6.当模型运行完毕,打开仿真数据检查。在模拟选项卡上,单击数据检查。有关模拟数据检查器的更多信息,请参见仿真数据检查(模型)

7.在仿真数据检查,选择< commandType >,< velocityCommand >,< rotorVelocity >,< controllerMode >信号。

在前两秒,命令控制器校准编码器位置传感器。在控制器实现闭环控制之前,必须对编码器位置传感器进行校准。在位置校准的第一部分,电机使用开环控制加速,以识别编码器的指数脉冲。一旦找到索引,控制器命令并保持零位置,直到编码器偏移被识别。在此期间,速度为零。2秒后,控制器变为闭环控制,并遵循命令的速度剖面。在闭环速度控制过程中,FOC调节PMSM中的相电流。

分区算法和生成代码

本节向您展示如何将控制器算法划分为互补的软件和硬件实现,并分别为软件和硬件实现生成C和HDL代码。检查在代码生成期间创建的报告,展示如何将这些代码集成到您自己的嵌入式设计中。

1.在focZynqTestBench模型,打开Controller_Algorithm子系统。控制器算法包含Algorithm_C和Algorithm_HDL块,它们引用focZynqCfocZynqHDL模型,分别。的focZynqC模型包含要在软件中实现的算法部分。类似地,focZynqHDL模型包含要在硬件上实现的算法部分。

2.运行的任务。t2_generateCCode函数打开focZynqC模型,生成C代码,并生成报告。

task.t2_generateCCode

focZynqC模型包含模式调度器、速度控制环、开环速度控制器和自动校准编码器偏移的例程。

3.代码生成报告显示了生成的代码如何与模型相对应。如果您是代码生成报告的新手,您可以从代码接口报告查看代码的功能界面。C代码是可移植的,可以与任何使用ANSI-C编译器的浮点嵌入式处理器集成。有关代码生成报告的更多信息,请参见代码生成报告

4.运行的任务。t3_generateHdlCode函数打开focZynqHdl建模,生成HDL代码,并生成报告。

task.t3_generateHdlCode

focZynqHdl模型包含电气位置计算,转子速度计算,过电流检查,和场导向控制器。

5.代码生成报告显示了HDL代码如何与模型相对应。如果您是代码生成报告的新手,您可以从探索生成的源文件窗格的报告,并选择focZynqHdl.vhd包含实体规范的文件。算法的HDL代码是可移植的,可以与任何支持VHDL代码的FPGA集成。

设立Xilinx Zynq平台和马达板

本节向您展示如何设置和连接在“要求”部分列出的硬件板。

1.运行Xilinx Zynq平台的硬件设置。有关硬件设置的信息,请参见安装Xilinx Zynq平台支持

2.如图所示连接ZedBoard。

3.如图连接AD-FMCMOTCON2-EBZ Controller board和ZedBoard。

将Bitstream部署到可编程逻辑

本节将向您展示如何使用HDL工作流Advisor为算法生成HDL代码,将HDL打包到IP核中,将IP核集成到Xilinx参考设计中,并创建位流。

1.运行的任务。t4_openHdlWorkflowAdvisor函数打开HDL WorkflowAdvisor。

task.t4_openHdlWorkflowAdvisor

2.在HDL Workflow Advisor > 1.;设置目标> 1.1设置目标设备和合成工具集团目标平台被设置为ZedBoard和FMCMOTCON2ZedBoard和FMCMOTCON2是一个Vivado®参考设计,包含ADC,编码器和PWM组件。有关如何创建这个参考设计的信息,请参见为Zynq工作流定义定制板和参考设计(高密度脂蛋白编码器)

3.选择1.2.设置目标接口来识别端口。的目标平台的接口前缀IP指的是与ZedBoard电机控制参考设计注册的连接。

4.选择4.3构建FPGA比特流>运行到选定任务或者运行该任务。t5_generateBitstreamAndInterfaceBlock函数从项目中生成算法的HDL代码,并从Xilinx参考设计创建FPGA位流。

task.t5_generateBitstreamAndInterfaceBlock

5.在打开的新的DOS命令提示符上跟踪比特流生成的进度。除了生成一个比特流,另外定制的目标生成focZynqHdlAxiInterfaceLib软件界面库。该库包含一个AXI_Interface块。AXI_Interface块包含了AXI4-Lite接口组件,提供了从部署在ARM处理器上的模型到部署在可编程逻辑上的模型的连接。

6.运行的任务4.4程序目标设备或者运行该任务。t6_downloadBitstream函数从项目来编程FPGA。

task.t6_downloadBitstream

将可执行文件部署到ARM处理器

本节将展示如何为控制器生成C代码,并将此代码与Linux®参考框架自动集成,以构建、部署并将模型作为可执行文件运行到ARM处理器。从运行在处理器上的模型中记录的数据可以与模拟的结果进行比较。

1.运行的任务。t7_openZynqArmModel函数打开focZynqArmDeployment模型。

task.t7_openZynqArmModel

focZynqArmDeployment模型可以生成C代码,自动与Linux ARM参考框架集成,并将可执行文件部署到Xilinx Zynq平台上的ARM处理器上。部署模型引用了原始的控制器模型,包含了测试刺激、作用域和在将Bitstream部署到可编程逻辑部分。

2.在硬件选项卡上,单击监视和优化在ARM处理器上构建、部署并运行模型作为可执行文件。生成的代码根据参考框架编译,以创建可执行文件。在执行时,Simulink监视信号,在作用域中显示它们。

3.打开仿真数据检查查看记录的信号,并将其与之前从focZynqTestBench模型。在模拟选项卡上,单击数据检查

4.在仿真数据检查,选择rotorVelocity信号。在编码器校准模式中,信号最初不同,然后一致,因为模拟和真实电机启动的转子位置不同。相比之下,仿真和硬件中的闭环速度控制非常相似。之所以会出现差异,是因为电机和传感器的仿真模型使用数据表值,并没有明确说明物理电机的制造公差。

其他可以尝试的事情

  • 继续探索本例中的文件,以获得更多关于模拟、代码生成和自动化部署如何帮助您为硬件开发控制器的见解。

  • HDL Coder™支持浮点单精度数据类型。打开示例的浮点模型:

zynqexPMSMFOCSingleStart
  • 浮点模型突出了HDL Coder从包含定点和浮点数据类型混合的模型生成HDL代码的能力。按照同样的任务,在Xilinx Zynq SoC平台上实现单精度电流控制的控制算法。

Baidu
map