mirror of
https://github.com/ohmyjesus/RBF_NeuralNetwork.git
synced 2026-08-17 17:11:39 +08:00
固定时间控制
This commit is contained in:
+71
@@ -0,0 +1,71 @@
|
||||
function [sys,x0,str,ts] = ctrl1_zuo(t,x,u,flag)
|
||||
switch flag
|
||||
case 0
|
||||
[sys,x0,str,ts]=mdlInitializeSizes;
|
||||
case {1,2,4,9}
|
||||
sys=[];
|
||||
case 3
|
||||
sys=mdlOutputs(t,x,u);
|
||||
otherwise
|
||||
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
|
||||
|
||||
end
|
||||
function [sys,x0,str,ts]=mdlInitializeSizes
|
||||
sizes = simsizes;
|
||||
sizes.NumContStates = 0;
|
||||
sizes.NumDiscStates = 0;
|
||||
sizes.NumOutputs = 2;
|
||||
sizes.NumInputs = 5;
|
||||
sizes.DirFeedthrough = 1;
|
||||
sizes.NumSampleTimes = 0;
|
||||
sys = simsizes(sizes);
|
||||
x0 = [];
|
||||
str = [];
|
||||
ts = [];
|
||||
|
||||
function sys=mdlOutputs(t,x,u)
|
||||
% 跟踪轨迹
|
||||
% dr = 0.5*pi*cos(0.5*pi*t);
|
||||
% ddr = -0.25*pi*pi*sin(0.5*pi*t);
|
||||
r = u(1);
|
||||
dr = u(2);
|
||||
ddr = u(3);
|
||||
z1 = u(4);
|
||||
z2 = u(5);
|
||||
|
||||
% 参数的定义
|
||||
belta = 1;
|
||||
q = 3;
|
||||
p = 5;
|
||||
|
||||
d = sin(10*z1)+cos(z2); %干扰
|
||||
g = 9.8;
|
||||
mc = 1;
|
||||
m = 0.1;
|
||||
l = 0.5;
|
||||
lg = 2;
|
||||
xite = 10;
|
||||
|
||||
M = mc + m;
|
||||
% e = z1 - r;
|
||||
% de = z2 - dr;
|
||||
e = r - z1;
|
||||
de = dr - z2;
|
||||
v1 = g*sin(z1)- m*l*(z2)^2*cos(z1)*sin(z1)/M;
|
||||
v2 = l*(4/3-(m*cos(z1)*cos(z1))/M);
|
||||
f = v1/v2;
|
||||
v3 = cos(z1)/M;
|
||||
v4 = v2;
|
||||
g = v3/v4;
|
||||
|
||||
% 滑模面
|
||||
s = -e + 1/belta*abs(-de)^(p/q)*sign(-de);
|
||||
|
||||
% 控制器的设计
|
||||
ut = -1/g*(belta*q/p* (abs(-de)^(2-p/q)*sign(-de)) + f+(lg+xite)*sign(s));
|
||||
|
||||
temp = (-de)^(p-q)^(1/q);
|
||||
sys(1) = ut;
|
||||
sys(2) = temp;
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
function [sys,x0,str,ts] = plant1_zuo(t,x,u,flag)
|
||||
switch flag
|
||||
case 0
|
||||
[sys,x0,str,ts]=mdlInitializeSizes;
|
||||
case 1
|
||||
sys=mdlDerivatives(t,x,u);
|
||||
case {2,4,9}
|
||||
sys=[];
|
||||
case 3
|
||||
sys=mdlOutputs(t,x,u);
|
||||
otherwise
|
||||
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
|
||||
end
|
||||
function [sys,x0,str,ts]=mdlInitializeSizes
|
||||
sizes = simsizes;
|
||||
sizes.NumContStates = 2;
|
||||
sizes.NumDiscStates = 0;
|
||||
sizes.NumOutputs = 2;
|
||||
sizes.NumInputs = 1;
|
||||
sizes.DirFeedthrough = 0;
|
||||
sizes.NumSampleTimes = 0;
|
||||
sys = simsizes(sizes);
|
||||
x0 = [1 0.5];
|
||||
str = [];
|
||||
ts = [];
|
||||
|
||||
function sys=mdlDerivatives(t,x,u)
|
||||
% 收敛控制
|
||||
d = sin(10*x(1))+cos(x(2)); %干扰
|
||||
ut = u(1);
|
||||
z1 = x(1);
|
||||
z2 = x(2);
|
||||
|
||||
% 参数的定义
|
||||
g = 9.8;
|
||||
mc = 1;
|
||||
m = 0.1;
|
||||
l = 0.5;
|
||||
|
||||
M = mc + m;
|
||||
v1 = g*sin(z1)- m*l*(z2)^2*cos(z1)*sin(z1)/M;
|
||||
v2 = l*(4/3-(m*cos(z1)*cos(z1))/M);
|
||||
f = v1/v2;
|
||||
v3 = cos(z1)/M;
|
||||
v4 = v2;
|
||||
g = v3/v4;
|
||||
|
||||
sys(1) = x(2);
|
||||
sys(2) = f + g*ut + d;
|
||||
|
||||
function sys=mdlOutputs(t,x,u)
|
||||
|
||||
sys(1) = x(1);
|
||||
sys(2) = x(2);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user