主要内容

磁场定向控制的永磁同步电机在Xilinx Zynq平台

这个示例模型的磁场定向控制(FOC)永磁同步电机(永磁同步电动机)Xilinx®Zynq™- Ultrascale +™MPSoC目标。下面的例子使用了Trenz电子™电机控制开发工具包TE0820。如果您没有所需的硬件,您可以使用这个示例来帮助您开发自己的硬件配置的控制器。

需求

关于硬件的更多信息,请参阅Trenz电子电机控制仿真软件开发工具包支持万博1manbetx万博1manbetx

介绍

这张图片显示了创建的一般过程,模拟和部署一个控制器的设计算法在嵌入式硬件。

你模拟系统试验台来洞察控制器算法设计的行为。探索设计分区的算法。率较高的部分算法划分为一个模型,配置了HDL代码生成。低利率的部分算法划分模型配置为C代码生成。从这些模型生成C和HDL代码,学习如何将这段代码集成到您的设计。

你可以自动化部署算法代码参考框架的处理器和可编程逻辑。然后,在已部署的应用程序执行测试,记录结果,以及仿真结果进行比较。

设置Xilinx Zynq硬件板开始前的例子。这个示例部署一个比特流和手臂可执行Xilinx Zynq设备。为了确保正确设置您的环境,完成 开始使用针对Xilinx Zynq平台(高密度脂蛋白编码器) (高密度脂蛋白编码器) 例子开始前与你的硬件配置这个例子。

模拟算法的行为

第一。打开示例项目,检查控制器模型,并通过仿真验证了控制器的行为。这个例子是打包为一个项目。Simulink仿真®项目的更多信息,参见万博1manbetx是什么项目?(万博1manbetx模型)

1。通过输入以下命令来打开示例项目在MATLAB命令提示符。

zynqPMSMFOCStart

2。单击项目的快捷方式选项卡查看快捷键,这个示例使用的文件和文件夹。

3所示。运行task.t1_openSimulationTestBenchModel打开focZynqTestBench模型。

task.t1_openSimulationTestBenchModel

Motor_And_Load子系统由表面永磁同步电动机的数学模型、电机负载,编码器和电流传感器。的Controller_Algorithm子系统包括:

  • I / O工程单位转换

  • 电气位置计算

  • 转子速度计算

  • 模式调度器和四种控制模式:禁用,开环速度控制,编码器标定,闭环速度控制。

C / DD / C子系统从连续和变量转换数据,解决时间步和浮点数据类型离散和定时解决步骤和定点数据类型。

如果你没有专业的电力系统图书馆Simscape电气™安装,Motor_And_Load子系统包含一个块,使您能够模拟模型与默认的电动机和负载参数。在这种情况下,您无法探索或修改参数。

4所示。在模拟选项卡单击运行模拟模型。

5。仿真完成之后,打开仿真数据检查。在模拟选项卡上,单击数据检查。仿真数据检查器的更多信息,请参阅仿真数据检查(万博1manbetx模型)

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

前两秒,控制器接收到命令校准编码器位置传感器。编码器位置传感器之前必须校准控制器可以实现闭环控制。在第一部分的位置校准,使用开环控制电机加速识别指数脉冲编码器。指数发现后,控制器命令和持有零位置,直到确定编码器抵消。在此期间,速度为零。两秒后,控制器改变成闭环控制和遵循命令速度剖面。在闭环速度控制,在永磁同步电动机FOC调节相电流。

分区控制器算法和生成代码

接下来控制器算法分割成互补的软件和硬件实现通过生成C和HDL代码的软件和硬件实现,分别。报告中创建代码生成向您展示如何将这段代码集成到您自己的嵌入式设计。

1。在focZynqTestBench模型中,打开Controller_Algorithm子系统。包含控制器算法Algorithm_CAlgorithm_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集成代码。万博1manbetx

设置Xilinx Zynq平台和汽车板

接下来,设置和连接板的硬件。

1。运行的硬件设置Xilinx Zynq平台。硬件设置的信息,请参阅安装支持Xili万博1manbetxnx Zynq平台。您必须安装两个嵌入式编码器®支持包Xilinx Zynq平台和高密度脂蛋白编万博1manbetx码器™Xilinx Zynq平台支持包。

2。连接Trenz董事会如图片所示。

图像显示了这些组件:

  1. 5 v直流电源

  2. SD卡

  3. 微型USB电缆UART和JTAG

  4. 以太网连接器

  5. 编码器连接器

  6. 24 V直流电源

  7. 电动机电力电缆(A, B, C)

  8. 24 V直流无刷电动机

  9. 开关1 (S1),控制驱动板

3所示。确保跨接阁下:载波模块将SD和J3的汽车司机卡设置一个编码器结束。

4所示。根据下面的图片插入编码器电缆。关于跳线设置的更多信息,请访问Trenz电子网站

5。下载 Trenz TE0820 Linux映像提取ZIP归档文件,并将内容复制到microSD卡。插入连接器的microSD卡 J8。

6。FPGA比特流程序后,按下开关S1位于汽车司机卡一旦连接24 v mosfet。从设备的任何意想不到的行为,用S1开关断开电源。

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

接下来,使用HDL工作流顾问生成算法,HDL代码高密度脂蛋白打包成一个IP核心,IP核心融入Xilinx参考设计,并创建一个比特流。

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

task.t4_openHdlWorkflowAdvisor

2。在高密度脂蛋白工作流顾问1。设置目标> 1.1设置目标设备和合成工具组,设置目标平台与CR00140 Trenz TE0820与CR00140 Trenz TE0820是一个Vivado®参考设计包含ADC,编码器和PWM组件。这个参考设计的更多信息,请参阅定义定制的董事会和参考设计Zynq工作流(高密度脂蛋白编码器)

3所示。选择1.2。设置目标接口确定港口。的条目目标平台的接口列的表前缀IP指连接注册Trenz电机控制设计参考。

4所示。选择4.3构建FPGA比特流>运行选中的任务或运行task.t5_generateBitstreamAndInterfaceBlock函数从项目生成算法和HDL代码创建Xilinx FPGA比特流的参考设计。

task.t5_generateBitstreamAndInterfaceBlock

5。遵循比特流生成的进步在DOS命令提示符窗口。除了生成一个比特流生成定制的目标focZynqHdlAxiInterfaceLib软件界面库。库包含一个AXI_Interface块。AXI_Interface块,其中包含AXI4-Lite接口组件,提供了从模型部署在ARM处理器连接模型部署在可编程序逻辑。

6。运行的任务4.4项目目标设备或运行task.t6_downloadBitstream从项目计划FPGA功能:

task.t6_downloadBitstream

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

接下来,为控制器生成C代码,这段代码与Linux®集成参考框架来构建、部署和运行模型作为一个可执行的ARM处理器。数据记录在处理器上运行的模型可以模拟的结果。

1。运行task.t7_openZynqArmModel功能打开focZynqArmDeployment模型。

task.t7_openZynqArmModel

focZynqArmDeployment模型可以生成C代码,自动与Linux的手臂参考框架,集成和部署可执行的ARM处理器Xilinx Zynq平台。部署模型引用原控制器模型和包含测试刺激,范围和AXI_Interface库中创建的块比特流部署到可编程序逻辑部分。

2。在硬件选项卡上,单击监视和优化构建、部署和运行模型作为可执行在ARM处理器上。生成的代码编译参考框架来创建一个可执行的。执行时,仿真软件监控信号和显示他们万博1manbetx的范围。

3所示。打开仿真数据检查查看记录的信号和比较他们先前记录的信号focZynqTestBench模型。在模拟选项卡上,单击数据检查

4所示。在仿真数据检查,选择rotorVelocity信号。在编码器标定模式,最初因为不同的信号模拟和真实的汽车开始与不同的转子位置。相比之下,闭环速度控制的仿真和硬件非常相似。出现差异的原因是电动机的仿真模型和传感器使用数据表值和没有明确考虑制造公差的物理运动。