12_第三方Overlay介绍-SPYN

IIoT-SPYN

IIoT-SPYN是一个开源项目,通过IIoT-EDDP和PYNQ器件,用户可以通过使用IIoT-SPYN控制、监视、捕获数据、可视化和分析汽车工业信息。

Overlay 简介

上图为工程项目示意图。通过软硬件划分,在PS端中负责Linux和通信,而PL端负责实时控制部分。在PYNQ中加载bit时,PL端的控制部分将以IP核形式呈现。通过Python,对IP核的参数配置来实现控制。

此项目中采用的FOC算法示意图,包括Clarke变换、Park变换、PWM编码器、PI控制器、电流采样等

FOC算法模块的Vivado Block Design,可以观察到所有的算法模块都是通过Vivado HLS生成的。

如何将IIoT-SPYN安装到PYNQ-Z2 image2.3上

  • 方法1(在PYNQ可以连接网络的情况下):

在Jupyter界面中new选项里选择新建一个终端,在PYNQ板卡能连接网络的情况下,在终端输入:

  • 方法2(在PYNQ无法连接网络的情况下):

下载IIoT-SPYN的zip压缩包,上传压缩包到PYNQ板卡,在终端中unzip上传的压缩包,移动到解压的目录下然后采用pip安装

Overlay API接口介绍

在此工程中,通过Motor_Controller类来实例化一个对象进行对于电机的控制,Motor_Controller类的主要属性包括:

  1. init():init中主要是对MMIO的配置,初始化电机的模式。

  2. ​ set_mode(mode):set_mode用于配置电机的模式,包括:“torque_mode”(扭矩模式)、“rpm_mode”(转速模式)、“reset_mode”(默认模式)。

  3. ​ capture_mode(mode):capture_mode用于配置捕获模式,包括:“ia_ib_angle_rpm”、“id_iq”、“vd_vq”

  4. ​ set_torque(value):set_torque用于配置电机的扭矩。

  5. ​ stop():stop用于配置停止电机。

  6. ​ _read_controlreg(value):_read_controlreg用于读控制寄存器。

  7. ​ read_capturereg(offset):read_capturereg用于读捕获寄存器,offset为偏移地址。

  8. ​ _write_controlreg(offset,value):_write_controlreg用于写控制寄存器,offset为偏移地址。

  9. ​ write_capturereg(offset, value):write_capturereg用于写捕获寄存器,offset为偏移地址。

  10. ​ stream_capture(capture_address):stream_capture用于捕获一系列的寄存器,capture_address为捕获地址。

应用案例介绍

在IIoT-SPYN的notebooks目录下包含了两个在此Overlay上的应用案例。在spyn.ipynb中介绍了通过IIoT-SPYN和EDPS板卡控制一个三相交流电动机,此案例中连接到PYNQ板卡上的是Trenz电机TEC0053。下面基于此应用案例的程序进行简要介绍:

​ 通过PYNQ的Overlay库加载bit文件,在正常运行的情况下,可以看到PYNQ板卡标记为“DONE”的LED闪烁(为加载了bit文件的效果)

​ 实例化一个电机控制,输出可用的电机控制模式

​ 预设置电机控制模式

​ 输出控制模块和捕获模块的信息

通过Jupyter交互小部件(slider)控制电机和设置电机运行模式

​ 读取状态寄存器的相关信息

捕获模式输出及选择

通过Xlnk类为捕获的流数据分配DMA

通过matplotlib将得到的数据通过图像表示出来

Last updated

Was this helpful?