我正在阅读这份pdf。提供了一只手臂的动态方程,它是

$$
$$

其中

$ \ theta $:联合变量。

$ \ tau $:关节扭矩

$ m $:质量

$ L $:中心质量与关节之间的距离。

$ d $:粘滞摩擦系数

$ l $:在旋转轴上看到的惯性。



我现在想使用P(比例)控制器。

$$
\ tau = -K_ {p}(\ theta-\ theta_ {d})
$$

我的Matlab代码是

clear all
clc

t = 0:0.1:5;

x0 = [0; 0];

[t, x] = ode45('ODESolver', t, x0);

e = x(:,1) - (pi/2); % Error theta1

plot(t, e);
title('Error of \theta');
xlabel('time');
ylabel('\theta(t)');
grid on


用于求解微分方程

function dx = ODESolver(t, x)

dx = zeros(2,1);
%Parameters:

m  = 2;
d  = 0.001;
L  = 1;
I = 0.0023;
g  = 9.81;

T = x(1) - (pi/2);


dx(1) = x(2);

q2dot = 1/I*T - 1/I*d*x(2) - 1/I*m*g*L*sin(x(1));

dx(2) = q2dot;


误差是



我的问题是为什么随着时间的流逝,误差不会接近零?问题在于调节轨迹,因此误差必须接近零。

#1 楼

如果仅使用比例力,则在某些时候它会受到重力的平衡-您的误差将收敛于该平衡,而不是零。

以补偿重力的质量。臂,则需要添加一个积分力项。随着时间的流逝,这将增加以抵消恒定的重力。

另请参见:关于积分项的答案。

#2 楼


我现在想使用P(比例)控制器。


比例控制器永远不会使您的误差保持在0。控制器的作用就像没有阻尼的弹簧。查看您编写的控制器方程式:


τ= -K(θ-θd)


并将其与弹簧方程式进行比较:

F=Kx or F=K(x1-x2)


您的控制器的作用就像弹簧一样,将扭矩施加到关节上,使其偏离参考点。您必须至少使用PI(比例和积分)控制器来消除振荡。

控制器的集成部分是使振荡消失并使稳态误差接近0的原因。这会使您的系统变慢,但是您必须调整控制器的性能

如果确实需要使用P控制器,则必须在系统上包括一个阻尼器。

评论


$ \ begingroup $
你是对的。我已经实现了PID控制器,它解决了这个问题。
$ \ endgroup $
– Croco
14-10-25在13:26

#3 楼

控制器类型

更精确的错误处理方法。



假设您有一个如上所述的闭环系统。等式为:

$ \ hspace {2.5em} $ $ Y(s)= \ frac {G(s)C(s)} {1 + G(s)C(s}} R(s)$

误差方程为:

$ \ hspace {2.5em} $ $ E(s)= R(s)-Y(s)$

$ \ hspace {2.5em} $ $ E(s)= \ frac {1} {1 + G(s)C(s)} R(s)$ $ \ hspace {2.5em } [1] $

最终值定理指出:

$ \ hspace {2.5em} $ $ e(\ infty)= \ lim_ {s \ rightarrow 0 } sE(s)$ $ \ hspace {2.5em} [2] $

在$ [2] $中使用$ [1] $:

$ \ hspace { 2.5em} $ $ e(\ infty)= \ lim_ {s \ rightarrow 0} s \ frac {1} {1 + G(s)C(s)} R(s)$

好!现在,我们可以得出一些很酷的东西。


假设$ R(s)= \ frac {1} {s} $:

$ \ hspace { 2.5em} $ $ e(\ infty)= \ lim_ {s \ rightarrow 0} \ frac {1} {1 + G(s)C(s)} $ $ \ hspace {2.5em} $来自微积分,是等同于:

$ \ hspace {2.5em} $ $ e(\ infty)= \ frac {1} {1+ \ lim_ {s \ rightarrow 0}(G(s)C(s ))} $

$ \ hspace {2.5em} $ $ e(\ infty)= \ frac {1} {1 + G(0)C(0)} $

如果$ C(s)= K $,其中$ K $是比例增益,$ G(0)$具有有限的DC增益,则您的系统将负责有限的最终项。但是,但是,您可以应用PD控件$ C(s)= \ frac {K} {s} $。

$ \ hspace {2.5em} $ $ C(0)= \ lim_ {s \ rightarrow 0} \ frac {K} {s} = \ infty $

然后:

$ \ hspace {2.5em} $ $ e(\ infty)= \ frac {1} {1 + G(0)(\ infty)} = 0 $

这就是简历,为什么只有比例增益才能获得空错误。

评论


$ \ begingroup $
拉普拉斯变换只能在线性系统中使用。但是,我认为了解原理非常有用。
$ \ endgroup $
–leCrazyEngineer
16年1月17日在21:57