📄 bodepidcompare.html
字号:
0065 <span class="comment">% Ziegler & Nichols with Step identification</span>
0066 [K,Ti,Td,N,b] = <a href="pid_tuning.html" class="code" title="function [K,Ti,Td,N,b] = pid_tuning(model,method,param,regStruct,As)">pid_tuning</a>(modelFOPDT,<span class="string">'ZN (OL)'</span>,[],<span class="string">'PID'</span>);
0067 Rff = K*(b+1./(Ti*s));
0068 Rfb = K*(1+1./(Ti*s)+(Td*s)./(1+Td*s/N));
0069 L = Rfb.*P;
0070 F = (Rff.*P)./(ones(1,length(P))+(Rfb.*P));
0071 S = 1./(ones(1,length(P))+(Rfb.*P));
0072 figure(Lfig)
0073 subplot(211), semilogx(w,20*log10(abs(L)),<span class="string">'b'</span>)
0074 subplot(212), semilogx(w,unwrap(angle(L))/pi*180,<span class="string">'b'</span>)
0075 figure(Ffig)
0076 subplot(211), semilogx(w,20*log10(abs(F)),<span class="string">'b'</span>)
0077 subplot(212), semilogx(w,unwrap(angle(F))/pi*180,<span class="string">'b'</span>)
0078 figure(Sfig)
0079 subplot(211), semilogx(w,20*log10(abs(S)),<span class="string">'b'</span>)
0080 subplot(212), semilogx(w,unwrap(angle(S))/pi*180,<span class="string">'b'</span>)
0081
0082 <span class="comment">% Kappa-Tau with Ms = 2</span>
0083 <span class="comment">% in order to obtain better performance</span>
0084 [K,Ti,Td,N,b] = <a href="pid_tuning.html" class="code" title="function [K,Ti,Td,N,b] = pid_tuning(model,method,param,regStruct,As)">pid_tuning</a>(modelFOPDT,<span class="string">'KT'</span>,2,<span class="string">'PID'</span>);
0085 Rff = K*(b+1./(Ti*s));
0086 Rfb = K*(1+1./(Ti*s)+(Td*s)./(1+Td*s/N));
0087 L = Rfb.*P;
0088 F = (Rff.*P)./(ones(1,length(P))+(Rfb.*P));
0089 S = 1./(ones(1,length(P))+(Rfb.*P));
0090 figure(Lfig)
0091 subplot(211), hold on, semilogx(w,20*log10(abs(L)),<span class="string">'r'</span>)
0092 subplot(212), hold on, semilogx(w,unwrap(angle(L))/pi*180,<span class="string">'r'</span>)
0093 figure(Ffig)
0094 subplot(211), hold on, semilogx(w,20*log10(abs(F)),<span class="string">'r'</span>)
0095 subplot(212), hold on, semilogx(w,unwrap(angle(F))/pi*180,<span class="string">'r'</span>)
0096 figure(Sfig)
0097 subplot(211), hold on, semilogx(w,20*log10(abs(S)),<span class="string">'r'</span>)
0098 subplot(212), hold on, semilogx(w,unwrap(angle(S))/pi*180,<span class="string">'r'</span>)
0099
0100 <span class="comment">% Internal Model Control with lambda = Tf/5</span>
0101 <span class="comment">% this means that the closed loop model is made five time faster than the</span>
0102 <span class="comment">% original (open loop model)</span>
0103 [K,Ti,Td,N,b] = <a href="pid_tuning.html" class="code" title="function [K,Ti,Td,N,b] = pid_tuning(model,method,param,regStruct,As)">pid_tuning</a>(modelFOPDT,<span class="string">'IMC'</span>,Tf/5,<span class="string">'PID'</span>);
0104 Rff = K*(b+1./(Ti*s));
0105 Rfb = K*(1+1./(Ti*s)+(Td*s)./(1+Td*s/N));
0106 L = Rfb.*P;
0107 F = (Rff.*P)./(ones(1,length(P))+(Rfb.*P));
0108 S = 1./(ones(1,length(P))+(Rfb.*P));
0109 figure(Lfig)
0110 subplot(211), hold on, semilogx(w,20*log10(abs(L)),<span class="string">'g'</span>)
0111 subplot(212), hold on, semilogx(w,unwrap(angle(L))/pi*180,<span class="string">'g'</span>)
0112 figure(Ffig)
0113 subplot(211), hold on, semilogx(w,20*log10(abs(F)),<span class="string">'g'</span>)
0114 subplot(212), hold on, semilogx(w,unwrap(angle(F))/pi*180,<span class="string">'g'</span>)
0115 figure(Sfig)
0116 subplot(211), hold on, semilogx(w,20*log10(abs(S)),<span class="string">'g'</span>)
0117 subplot(212), hold on, semilogx(w,unwrap(angle(S))/pi*180,<span class="string">'g'</span>)
0118
0119 <span class="comment">% Ziegler & Nichols with Relay identification</span>
0120 [K,Ti,Td,N,b] = <a href="pid_tuning.html" class="code" title="function [K,Ti,Td,N,b] = pid_tuning(model,method,param,regStruct,As)">pid_tuning</a>(modelPI,<span class="string">'ZN (CL)'</span>,[],<span class="string">'PID'</span>);
0121 Rff = K*(b+1./(Ti*s));
0122 Rfb = K*(1+1./(Ti*s)+(Td*s)./(1+Td*s/N));
0123 L = Rfb.*P;
0124 F = (Rff.*P)./(ones(1,length(P))+(Rfb.*P));
0125 S = 1./(ones(1,length(P))+(Rfb.*P));
0126
0127 figure(Lfig)
0128 subplot(211), semilogx(w,20*log10(abs(L)),<span class="string">'m'</span>)
0129 set(gca,<span class="string">'Position'</span>, [0.1514 0.4858 0.7536 0.3916],<span class="keyword">...</span>
0130 <span class="string">'XColor'</span>,[0.4 0.4 0.4],<span class="string">'YColor'</span>,[0.4 0.4 0.4],<span class="keyword">...</span>
0131 <span class="string">'FontSize'</span>,8,<span class="keyword">...</span>
0132 <span class="string">'XTickLabel'</span>,[])
0133 title(<span class="string">'Bode Diagram - Open loop function'</span>,<span class="keyword">...</span>
0134 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0135 ylabel(<span class="string">'Magnitude (dB)'</span>,<span class="keyword">...</span>
0136 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0137 legend(<span class="string">'STEP + ZN(OL)'</span>,<span class="string">'STEP + KT'</span>,<span class="string">'STEP + IMC'</span>,<span class="string">'RELAY + ZN(CL)'</span>,4)
0138 subplot(212), semilogx(w,unwrap(angle(L))/pi*180,<span class="string">'m'</span>)
0139 set(gca,<span class="string">'Position'</span>,[0.1514 0.1100 0.7536 0.3472],<span class="keyword">...</span>
0140 <span class="string">'XColor'</span>,[0.4 0.4 0.4],<span class="string">'YColor'</span>,[0.4 0.4 0.4],<span class="keyword">...</span>
0141 <span class="string">'FontSize'</span>,8)
0142 ylabel(<span class="string">'Phase (deg)'</span>,<span class="keyword">...</span>
0143 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0144 xlabel(<span class="string">'Frequency (rad/sec)'</span>,<span class="keyword">...</span>
0145 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0146
0147 figure(Ffig)
0148 subplot(211), semilogx(w,20*log10(abs(F)),<span class="string">'m'</span>)
0149 set(gca,<span class="string">'Position'</span>, [0.1514 0.4858 0.7536 0.3916],<span class="keyword">...</span>
0150 <span class="string">'XColor'</span>,[0.4 0.4 0.4],<span class="string">'YColor'</span>,[0.4 0.4 0.4],<span class="keyword">...</span>
0151 <span class="string">'FontSize'</span>,8,<span class="keyword">...</span>
0152 <span class="string">'XTickLabel'</span>,[])
0153 title(<span class="string">'Bode Diagram - Complementary sensitivity function'</span>,<span class="keyword">...</span>
0154 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0155 ylabel(<span class="string">'Magnitude (dB)'</span>,<span class="keyword">...</span>
0156 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0157 legend(<span class="string">'STEP + ZN(OL)'</span>,<span class="string">'STEP + KT'</span>,<span class="string">'STEP + IMC'</span>,<span class="string">'RELAY + ZN(CL)'</span>,4)
0158 subplot(212), semilogx(w,unwrap(angle(F))/pi*180,<span class="string">'m'</span>)
0159 set(gca,<span class="string">'Position'</span>,[0.1514 0.1100 0.7536 0.3472],<span class="keyword">...</span>
0160 <span class="string">'XColor'</span>,[0.4 0.4 0.4],<span class="string">'YColor'</span>,[0.4 0.4 0.4],<span class="keyword">...</span>
0161 <span class="string">'FontSize'</span>,8)
0162 ylabel(<span class="string">'Phase (deg)'</span>,<span class="keyword">...</span>
0163 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0164 xlabel(<span class="string">'Frequency (rad/sec)'</span>,<span class="keyword">...</span>
0165 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0166
0167 figure(Sfig)
0168 subplot(211), semilogx(w,20*log10(abs(S)),<span class="string">'m'</span>)
0169 set(gca,<span class="string">'Position'</span>, [0.1514 0.4858 0.7536 0.3916],<span class="keyword">...</span>
0170 <span class="string">'XColor'</span>,[0.4 0.4 0.4],<span class="string">'YColor'</span>,[0.4 0.4 0.4],<span class="keyword">...</span>
0171 <span class="string">'FontSize'</span>,8,<span class="keyword">...</span>
0172 <span class="string">'XTickLabel'</span>,[])
0173 title(<span class="string">'Bode Diagram - Sensitivity function'</span>,<span class="keyword">...</span>
0174 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0175 ylabel(<span class="string">'Magnitude (dB)'</span>,<span class="keyword">...</span>
0176 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0177 legend(<span class="string">'STEP + ZN(OL)'</span>,<span class="string">'STEP + KT'</span>,<span class="string">'STEP + IMC'</span>,<span class="string">'RELAY + ZN(CL)'</span>,4)
0178 subplot(212), semilogx(w,unwrap(angle(S))/pi*180,<span class="string">'m'</span>)
0179 set(gca,<span class="string">'Position'</span>,[0.1514 0.1100 0.7536 0.3472],<span class="keyword">...</span>
0180 <span class="string">'XColor'</span>,[0.4 0.4 0.4],<span class="string">'YColor'</span>,[0.4 0.4 0.4],<span class="keyword">...</span>
0181 <span class="string">'FontSize'</span>,8)
0182 ylabel(<span class="string">'Phase (deg)'</span>,<span class="keyword">...</span>
0183 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)
0184 xlabel(<span class="string">'Frequency (rad/sec)'</span>,<span class="keyword">...</span>
0185 <span class="string">'Color'</span>,[0 0 0],<span class="string">'FontSize'</span>,8)</pre></div>
<br>
<p><table bgcolor="#ffe4b0" border=0 width="100%" cellpadding=0 cellspacing=0><tr valign=top><td align=left width=20><a href="autogui.html"><img src="b_prev.gif" alt="Previous page" border=0 align=bottom></a> </td><td align=left> autogui</td><td> </td><td align=right>butterdesign </td><td align=right width=20><a href="butterdesign.html"><img src="b_next.gif" alt="Next page" border=0 align=bottom></a></td></tr></table>
<br>
<address>Generated on Wed 17-Mar-2004 09:29:44 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -