基于Xilinx System Generator的PID算法快速硬件实现
扫描二维码
随时随地手机看文章
摘 要: 介绍了利用Xilinx System Generator平台构建模型化数字PID控制算法,并通过FPGA将数字PID算法结合传感器与实际硬件控制对象快速建立控制模型,构成完整的闭环控制。通过对控制效果的实验验证,证明了其控制方法的可行性。
关键词: FPGA;system generator;PID算法
1 Xilinx System Generator简介
Xilinx System Generator 是专门为数字信号算法处理而推出的模型化设计平台,可以快速、简单地将DSP系统的抽象算法转换成可综合的、可靠的硬件系统,弥补了大部分对C语言以及Matlab工具很熟悉的DSP工程师对于硬件描述语言VHDL和Verilog HDL认识不足的缺陷[1]。
System Generator作为一个硬件设计工具包安装在Matlab软件中,提供了相当丰富的应用子模块[2]。设计者如同使用Matlab中其他模块一样,通过拖拽和连接就可以将子模块搭建成一个完整的应用系统。
2 增量式PID数字算法原理
在PID控制算法的应用中有位置式和增量式两种[3-4]。位置式PID控制算法中因运用了误差的累加,控制的输出量与过去所有时间的状态有关,所以位置式PID控制算法的累积误差相对较大。而增量式PID控制算法中的调整量只是与当前及前两个状态有关,并且增量式PID算法只是控制每次的输出增量,而且一般执行机构都带有记忆功能,一旦控制器出错,能保持住原位,不会严重影响到系统的工作。
PID数学模型:
3 在System Generator中建立PID算法模型
根据公式(4)的增量式数字PID模型,可在Xilinx System Generator工具包中调用相关子函数模块来构建整个函数[5],如图1所示。
设计中使用了自定义函数模块(Mcode),该模块是Xilinx System Generator中提供给DSP设计者的可编程逻辑模块,可以使用Matlab语言编写符合设计者要求的子函数。Mcode模块分别支持控制逻辑、状态逻辑、二位除法运算以及定点数运算等逻辑运算,并可灵活地定义输入输出的个数以及输出数据的类型。最终在生成硬件逻辑时自动将Mcode中的代码转换成VHDL/Verilog硬件描述语言。另外,由于生成的是逻辑控制,对设计者来说运用起来十分便利,并且该模块中的代码在生成为硬件逻辑以后,几乎是并行直接输出,速度和效率都非常高。如图2所示,在Mcode模块中写入了代码之后,会生成对应的自定义函数模块。
4 控制对象与控制算法的级联
在PID算法模块构建完成以后,需要嵌入到实际的控制对象中以达到预期的控制目的。
实验采用的是一阶RC控制对象,该对象在实验中可以明显有效地将控制效果反映出来。PID闭环控制系统框图如图3所示。对于一阶RC控制对象,选择电压作为输出的控制量,在设计中加入了A/D 以及D/A转换模块来完成采样和控制量的输出。
实验平台采用Xilinx公司的Spartan3E Start Kit,其中带有两路14 bit的A/D(LTC1407)输入以及4路16 bit
(2)在PID算法的输入与输出端搭建数据转换模块。由于通过A/D采样得到的数据和D/A输出的数据都是二进制,而PID算法模块中使用的是十进制数据,并且小数点的位数也不一样,所以需要在PID算法的输入和输出端插入数据转换模块。另外还必须加入Gateway in和Gateway out来实现数据的前端输入和后端输出。PID控制器完整模型如图5所示。