📄 multirate.m
字号:
% Jitterbug example: multirate.m% ==============================% Calculate the performance of ordinary/multirate ball & beam controllers = tf('s');Gphi = 4.4/s;Gx = -9.0/s^2;Q = diag([1 0]);R1 = 1; h = 0.1;delta = h/2;K1 = -0.2;Ti = 10;Td = 1;N = 10;PID1c = -K1*(1+1/Ti/s+s*Td/(1+s*Td/N)); % PID controllerK2 = 4;PID2 = K2*[1 -1]; % P controllerPID2s = ss(4);PID2s.Ts = h;%% Case 1: cascade controller at period hdisp('Cascade controller at period h, CPU usage = 50%')PID1 = minreal(c2d(PID1c,h,'matched'));N = initjitterbug(delta,h);N = addtimingnode(N,1,[1],2); % Add node 1N = addtimingnode(N,2);N = addcontsys(N,1,Gphi,4,Q,R1); % Add sys 1 (Gphi)N = addcontsys(N,2,Gx,1,Q); % Add sys 2 (Gx)N = adddiscsys(N,3,PID1,2,1); % Add sys 3 (PID1) to node 1N = adddiscsys(N,4,PID2,[3 1],2); % Add sys 4 (PID2) to node 2N = calcdynamics(N); % Calculate internal dynamicsJ = calccost(N) % Calculate cost% J = 3.3955%% Case 2: cascade controller at period h/2disp('Cascade controller at period h/2, CPU usage = 100%')PID1 = c2d(PID1c,h/2,'matched');N = initjitterbug(delta,h/2);N = addtimingnode(N,1,[1],2); % Add node 1N = addtimingnode(N,2); % Add node 2N = addcontsys(N,1,Gphi,4,Q,R1); % Add sys 1 (Gphi)N = addcontsys(N,2,Gx,1,Q); % Add sys 2 (Gx)N = adddiscsys(N,3,PID1,2,1); % Add sys 3 (PID1) to node 1N = adddiscsys(N,4,PID2,[3 1],2); % Add sys 4 (PID2) to node 2N = calcdynamics(N); % Calculate internal dynamicsJ = calccost(N) % Calculate cost% J = 1.9329%% Case 3: multirate controller at period h and h/2disp('Multirate cascade controller at period h & h/2, CPU usage = 75%')PID1 = c2d(PID1c,h,'matched');N = initjitterbug(delta,h);N = addtimingnode(N,1,[1],2); % Add node 1N = addtimingnode(N,2,[0 1],3); % Add node 2N = addtimingnode(N,3); % Add node 3N = addcontsys(N,1,Gphi,4,Q,R1); % Add sys 1 (Gphi)N = addcontsys(N,2,Gx,1,Q); % Add sys 2 (Gx)N = adddiscsys(N,3,PID1,2,1); % Add sys 3 (PID1) to node 1N = adddiscsys(N,4,PID2,[3 1],2); % Add sys 4 (PID2) to node 2N = adddiscexec(N,4,[],[3 1],3); % Add exec of sys 4 (PID2) to node 3N = calcdynamics(N); % Calculate internal dynamicsJ = calccost(N) % Calculate cost% J = 1.9910
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -