本文转载自: PYNQ开源社区微信公众号

IIoT-SPYN是一个基于IIoT-EDDP开源平台和PYNQ软件框架的项目,它展示了如何在PYNQ开源框架下对电机进行控制、监视、捕获数据、可视化和分析。

上图为工程项目示意图,PL侧包含了对电机控制、状态采集的模块。在PYNQ中加载比特流后,就可以访问到这些已实现好的模块,对电机进行控制和状态检测。

此项目中采用的FOC算法示意图,包括Clarke变换、Park变换、PWM编码器、PI控制器、电流采样等。Overlay中的算法模块通过Vivado HLS生成。
设备清单
快速开始
1)方法一
在Jupyter界面中new选项里选择新建一个终端,在终端输入:
udo pip3 install --upgrade git+https://github.com/Xilinx/IIoT-SPYN.git
2) 方法二
下载IIoT-SPYN的zip压缩包,上传压缩包到PYNQ板卡,在终端中unzip上传的压缩包,移动到解压的目录下然后采用pip安装
sudo pip3 install -e .
示例Notebook演示
Overlay自带2个Notebook,spyn.ipynb和spyn_dash.ipynb

2个notebook均展示了完整的电机控制、状态检测和分析功能,不同的是spyn_dash.ipynb均在dashboard上实现。
以下为spyn.ipynb代码执行的部分截图。



以下为spyn_dash.ipynb代码执行的部分截图。


总结与展望
本Overlay中使用了FOC算法,它在本质上就是一些线性代数中的矩阵变换,这里讲述的是有传感器的FOC算法,转子的位置信息是通过绝对式磁编码器反馈的,直接是数字量。关于FOC算法的详细内容,可以参考有关电机理论的专业书籍,这里不再赘述。
本项目中的FOC算法全部使用HLS编写,使用AXI-Stream接口完成各模块的通信。我们可以通过上述AXIS监测器来从PS端看到各关键数据。读者可以使用github提供的tcl文件恢复出完整的Vivado工程,以此为基础调整其中的算法或者功能,打造适合自身需要的电机控制Overlay。