网站首页  词典首页

请输入您要查询的论文:

 

标题 基于FPGA的PID控制在液浮陀螺回路中的应用
范文 卢雍卿+李剑文+吴勇+李建勋
摘 要:PID 控制器的可靠性及实时性,是实现运动控制系统精确定位或跟踪的重要环节。利用PID控制液浮陀螺再平衡回路,在分析PID 控制算法的基础上,采用FPGA(现场可编程逻辑门阵列)对增量型PID控制器进行设计及仿真实验,使陀螺输出能及时响应角增量的变化。程序采用VHDL语言编写,使用软件Libero v9.0完成PID控制器的设计、编译和仿真,仿真结果表明该方法有效可行。
关键词:PID控制;可编程逻辑器件;液浮陀螺回路
DOIDOI:10.11907/rjdk.172232
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2018)002-0140-03
0 引言
PID控制器结构清晰,控制参数可调,响应速度快,能够广泛运用于各种控制变量,可在现场根据实际情况调节参数而得到较好的控制效果,在动态控制系统应用广泛。其核心设计思想是通过分析被控对象的控制需求,建立被控对象动态特征的数学模型,采用调整比例、积分、微分参数的控制策略达到最佳的控制效果和系统响应。此类动态控制系统的被控量一般为模拟量,例如速度、角度、水位等。利用目标值和输入值之间的差值,经过离散化后仅有数字PID控制器经过运算处理,将运算结果由数模转换变为模拟量,反馈给被控对象,这就是PID控制中常用的近似逼近原理。随着现场可编程逻辑门阵列(FPGA)的兴起,数字PID控制器的设计得到了新的发展。FPGA集成度高、可靠性高、体积小、功耗低、设计方法灵活,可进行反复编程、调试、烧写,能适应嵌入式系统应用。
1 液浮陀螺回路设计
液浮陀螺利用刚体旋转时具有定轴性的原理,当旋转的转子感到角动量时,会产生一个和角动量成比例的敏感器信号,通过处理敏感器信号后输出加矩信号,便可得到陀螺的运动角速度。离散化的数字再平衡回路如图1所示。
图1中AD转换器用于采集模拟信号,并将其离散化变为数字量信号。在FPGA中固化的PID算法用于信号的运算处理,DA转换器将经过处理的数字量信号转化为模拟量信号反馈给力矩器,这样便构成了一个完整的数字量控制的液浮陀螺再平衡回路。
2 PID控制器设计
PID是工业控制中应用最广泛、技术最成熟的一种控制方法,其基本控制原理如图2所示。
PID控制器是一种线性控制器,它根据给定值r(t)与实际输出值y(t)构成控制偏差:
将偏差进行比例、积分、微分运算并通过一定规律的线性组合构成控制量u(t),对被控量进行控制,满足:
式(2)中,KP为比例放大系数;K1为积分时间常数;KD为微分时间常数。数字PID控制算法的实现必须用数值逼近方法。当采样周期相当短时,用求和代替积分,用差商代替微商,使PID算法离散化。将PID算法的微分方程离散化、差分、归并处理后可得:
根据递推原理得到:
从式(4)可以看出,增量式数字PID算法,只要储存最近3个误差采样值e(k)、e(k-1)、e(k-2)就足够了。
将式(3)减去式(4)可得:
3 FPGA源程序设计
典型的数字PID控制系统由A/D转换、PID控制算法和D/A转换3个关键环节构成。为了协调3个环节之间的工作流程,系统工作控制部件必不可少。这里使用状态机来完成不同运算步骤之间的协调,在高速运算和运动控制方面,有限状态机有着独特的优势。
有限状态机从信号输出方式上分,有Moore型和Mealy型兩类。前者的输出状态只和当前状态有关,而后者的输出不仅与当前状态有关还与输入量有关。Moore型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来。时钟使状态发生变化时才导致输出变化,所以比Mealy机要多等待一个时钟周期,但是能有效避免毛刺现象。Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖于时钟的同步。从输出时序上看,前者属于同步输出状态机,后者属于异步输出状态机。本设计所用的状态机为单进程Moore型状态机。
对数模转化的控制算法如下:
circulation:process(state)
begin
case state is
when s1=>ado<=”00000”;
addr<=0000;
next_state<=s2;
when s2=>ado<=”11000”;
addr<=0001;
next_state<=s3;
when others=>ado<=”00000”;
next_state<=s1;
end process Circulation;
control:process(clk,dir)
begin
if dir=1then state<=s1;
elsif clk event and clk+1then
state<=next_state;
end if;
end process control;
这里给出了一段式状态机设计,硬件语言设计简洁,便于快速实现功能架构。
PID控制的硬件语言程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity pid_regulator_verl is
port (clk: in std_logic;
sample: in std_logic;
reset: in std_logic;
rk: in std_logic_vector(7 downto 0);
yk: in std_logic_vector(7 downto 0);
kp:in std_logic_vector(3 downto 0);
ki: in std_logic_vector(3 downto 0);
kd:in std_logic_vector(3 downto 0);
out:out std_logic_vector(7 downto 0);
end pid_regulator_verl
architecture behavioral of pid_regulator_verl is
signal error: integer range -65535 to 65535:=0;
signal prev_error: integer range -65535 to 65535:=0;
signal integrator: std_logic_vector(17 downto 0):=(others=>0);
alias integ: std_logic_vector(15 downto 0) is integrator(17 downto 2);
signal int_integ: integer range -65535 to 65535:=0;
signal actuator: integer range -65535 to 65535:=0;
signal p_bidrag: integer range -65535 to 65535:=0;
signal i_bidrag: integer range -65535 to 65535:=0;
signal d_bidrag: integer range -65535 to 65535:=0;
signal saturation:std_logic;
begin
int_integ<=conv_integer(integ);
integration:
process(sample)
variable err:integer;
begin
if rising_edge(sample) then
if reset=1 then
integrator<=(others=>0);
error<=0;
else
err:=(conv_integer(ref)-conv_integer(act));
if abs(err)>1 then
if saturation=0 then
integrator<= integrator+err/2;
end if;
if conv_integer(integrator)<0 then
integrator<=(others=>0);
enf if;
prev_error<=error;
error<=err;
end if;
end if;
end if;
end process;
p_bidrag<=conv_integer(kp)*error;
i_bidrag<=conv_integer(ki)*int_integ;
d_bidrag<=conv_integer(kd)*(error-prev_error);
regulator:
process(p_bidrag, i_bidrag, d_bidrag)
variable yact:integer;
begin
yact:=p_bidrag+i_bidrag,+d_bidrag;
actuator<=yact;
saturation<=0;
if yact<0 then
yact:=0;
elsif yact>255 then
yact:=255;
saturation<=1;
end if;
out<=conv_std_logic_vector(yact,8);
end process;
end behavioral;
4 綜合仿真
PID控制器系统设计围绕算法实现,即先由PTD控制器的硬件语言描述得到VHDL的控制算法描述,然后对系统分解为误差模数变换、选通控制部件、PID运算部件、控制状态机模块。
Actel公司专用EDA软件Libero支持原理图与VHDL语言混合输入设计方式,除PID运算部件采用原理图输入设计方式外,其余3个部件均采用VHDL输入设计方式。系统仿真时,将系统的最高工作速率设定为22.1184MHz。功能仿真波形如图3所示。
PID控制原理能够运用于大量闭环回路控制系统设计中,使得力矩器输出量能及时反映陀螺角速度变化,以高响应速度完成对陀螺传感器输出变化量的跟踪。
5 结语
以FPGA为代表的高速系统已经在数字信号处理领域表现出独特的优势,尤其是极高的稳定性和可靠性,使其在嵌入式系统发挥越来越大的作用。本文以FPGA为载体,PID控制为手段,实现了液浮陀螺再平衡回路控制。通过仿真验证,在保持原有响应速度的前提下,解决了原有模拟电路无法避免的、由于器件温度漂移导致的信号失真问题。
参考文献:
[1] ACTEL INC.FPGA data book[EB/OL]. http://noel.feld.cvut.cz/vyu/apo/actel/s04_01.pdf 1994.
[2] ALTERA INC.Data book[EB/OL]. http://ebook.pldworld.com/_Semiconductors/Altera/literature/_nv/98nvq1.pdf 1996.
[3] 康华光.电子技术基础(数字部分)[M].北京:高等教育出版社,2006.
[4] 姜雪松.VHDL设计实例与仿真[M].北京:机械工业出版社,2007.
[5] 程佩青.数字信号处理教程[M].北京:清华大学出版社,2007.
[6] 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2009.
[7] 张春生.FPGA数字信号处理与工程应用实践[M].北京:中国铁道出版社,2013.
[8] 杨毅明.数字信号处理[M].北京:机械工业出版社,2008.
[9] 谭晓.数字PID控制器的实验研究[J].武汉纺织工学院学报,1999,12(3):68-72.
[10] MOHAMED ABDELATI.FPGA-Based PID controller implementation[D].Gaza:University of Gaza,2005.
[11] 陆重阳,卢东华.FPGA技术及其发展趋势[J].微电子技术,2003,31(1):5-7.
[12] 张焱,余海龙,罗进川.超高速数据采集系统设计与实现[J].安徽大學学报,2006,30(4):44-47.
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/6 5:57:02