主要内容

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

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

介绍

此示例为永磁同步机(PMSM)的面向现场控制器(FOC),但您可以应用此示例中显示的技术以开发大多数控制器算法。此图像显示从模型模拟到将控制器算法部署到嵌入式硬件板上的广义工作流程。

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

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

由于此示例将位于Xilinx Zynq可执行的比特流和ARM®部署,因此必须在启动示例之前设置Xilinx Zynq硬件板。要确保正确设置环境,请完成目标Xilinx Zynq平台入门(高密度脂蛋白编码器)在开始本示例之前,使用您的硬件配置示例。

要求

有关硬件的更多信息,请参阅Zynq All Programmable SoC/Analog Devices Intelligent Drives Kit

模拟算法行为

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

1.运行zynqexpmsmfocstart.函数在默认的MATLAB项目文件夹中创建并打开本例项目文件的工作副本。要选择特定的文件夹,请使用文件夹的绝对路径作为输入。文件夹的绝对路径不能超过80个字符。

zynqexpmsmfocstart(“C: \ Temp”);

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

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

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

task.t1_openSimulationTestBenchModel

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

如果没有安装SimPowerSystems,则Motor_And_Load子系统包含一个块,使您能够使用默认的电机和负载参数模拟模型。在这种情况下,您不能探索或修改参数。

5.在模拟Simulink To金宝appolStrip的选项卡,单击运行来模拟模型。

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

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

在前两秒,控制器被命令校准编码器位置传感器。编码器位置传感器必须经过校准,控制器才能实现闭环控制。在位置校准的第一部分,电机加速使用开环控制,以识别编码器的指数脉冲。一旦找到索引,控制器就会命令并保持一个零位置,直到标识编码器偏移量为止。在这段时间内,速度为零。两秒钟后,控制器转为闭环控制,并遵循指令速度剖面。在闭环速度控制中,FOC可以调节永磁同步电动机的相电流。

划分算法和生成代码

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

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

2.运行Task.t2_generateCcode函数以打开focZynqC模型,生成C代码,并生成报告。

task.t2_generateCCode

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

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

4.运行Task.t3_generatehdlcode函数以打开focZynqHdl模型,生成HDL代码,并生成报告。

task.t3_generatehdlcode.

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

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

设置Xilinx Zynq平台和电机板

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

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

2.如图所示连接ZedBoard。

3.连接AD-FMCMOTCON2-EBZ控制器板和ZedBoard,如图所示。

将比特流部署到可编程逻辑

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

1.运行的任务。t4_openHdlWorkflowAdvisor函数打开HDL工作流顾问。

task.t4_openHdlWorkflowAdvisor

2.在HDL工作流程顾问> 1.设置目标> 1.1设置目标设备和综合工具集团目标平台被设定为zedboard和fmcmotcon2.zedboard和fmcmotcon2.是包含ADC,编码器和PWM组件的Vivado参考设计。有关如何创建此参考设计的信息,请参阅为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_openzynqarmodel函数打开focZynqArmDeployment模型。

Task.t7_openzynqmarmodel.

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

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

3.打开仿真数据检查查看记录的信号并将它们与先前记录的信号进行比较Foczynqtestbench.模型。在模拟选项卡上,单击数据检查员

4.在仿真数据检查,选择旋翼省信号。在编码器校准模式下,由于模拟和真实的电机在不同的转子位置启动,信号最初不同,然后一致。相比之下,闭环速度控制在仿真和硬件上非常相似。差异的产生是因为电机和传感器的仿真模型使用数据表值,而没有明确地考虑物理电机的制造公差。

其他事情要尝试

  • 继续研究本例中的文件,以更深入地了解模拟、代码生成和自动化部署如何帮助您为硬件开发控制器。

  • HDL编码器支持浮点金宝app单精度数据类型。打开一个浮点模型的例子:

zynqexPMSMFOCSingleStart
  • 浮点模型突出了HDL编码器从包含固定点和浮点数据类型混合的模型生成HDL代码的能力。遵循相同的任务来实现在Xilinx Zynq SoC平台上具有单精度电流控制的控制算法。