⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nnbp_pid.m

📁 直流双闭环调速系统
💻 M
字号:
function [sys,x0,str,ts] = nnbp_pid(t,x,u,flag,T,nh,xite,alfa,kF1,kF2) %#ok<INUSD,FNDEF>switch flag,    case 0,    [sys,x0,str,ts]=mdlInitializeSizes(T,nh);   case 3,    sys=mdlOutputs(t,x,u,T,nh,xite,alfa,kF1,kF2);    case {1,2,4,9},    sys=[];  otherwise    error(['Unhandled flag = ',num2str(flag)]);endfunction [sys,x0,str,ts]=mdlInitializeSizes(T,nh)sizes = simsizes;sizes.NumContStates  = 0;sizes.NumDiscStates  = 0;sizes.NumOutputs     = 4+7*nh;sizes.NumInputs      = 7+14*nh;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;   % at least one sample time is neededsys = simsizes(sizes);x0  = [];str = [];ts  = [T 0];function sys=mdlOutputs(t,x,u,T,nh,xite,alfa,kF1,kF2) %#ok<INUSD>wi_2=reshape(u(8:7+4*nh),nh,4); %#ok<NASGU>wo_2=reshape(u(8+4*nh:7+7*nh),3,nh); %#ok<NASGU>wi_1=reshape(u(8+7*nh:7+11*nh),nh,4); %#ok<NASGU>wo_1=reshape(u(8+11*nh:7+14*nh),3,nh); %#ok<NASGU>xi=[u([6,4,1])',1];xx=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];I=xi*wi_1';Oh=non_transfun(I,kF1);K=non_transfun(wo_1*Oh',kF2);uu=u(7)+K'*xx;dyu=sign((u(4)-u(5))/(uu-u(7)+0.0000001));dK=non_transfun(K,3);delta3=u(1)*dyu*xx.*dK;wo=wo_1+xite*delta3*Oh+alfa*(wo_1-wo_2)+alfa*(wo_1-wo_2);dO=2*non_transfun(I,3);wi=wi_1+xite*(dO.*(delta3'*wo))'*xi+alfa(wi_1-wi_2);sys=[uu;K;wi(:);wo(:)];function W1=non_transfun(W,key)switch key    case 1,W1=(exp(W)-exp(-W))./(exp(W)+exp(-W));    case 2,W1=exp(W)./(exp(W)+exp(-W));    case 3,W1=2./(exp(W)+exp(-W)).^2;end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -