|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
大家好,最近一直在忙仿真,用到单神经元PID控制,在MATLAB中可以用S函数搭建其模型(见附件),但在pscad中用fortran语言不太会,请求高手指点,很急!各位朋友帮帮忙!下面是在MATLAB中的单神经元PID的S函数编写的文件,结合。- function [sys,x0,str,ts] =Sfunction(t,x,u,flag,yita,K); Q) v& D; X' p I& a
- % function [sys,x0,str,ts] =Sfunction(t,x,u,flag,K)
$ g! I( ~2 c) J - switch flag,
: V* D$ Y: D4 L3 O) }
) U( h2 h5 k) w- case 0, S9 c( x. r2 o0 B$ ]# C! t
- [sys,x0,str,ts]=mdlInitializeSizes;) t. M. N$ F7 e% Q7 u
- case {1,4,9},
3 p" v- m! A8 V8 x3 r/ ^; O' h" ]+ k - sys=[];) [0 I9 ^7 o/ M( a. Z2 h- Z2 k
- case 2,
- T# e# J+ I+ k( I. T A! ` - % sys=mdlUpdate(t,x,u);
0 ^$ g6 R* v1 X8 `$ x" c' m - sys=mdlUpdate(t,x,u,yita);
e. i+ M6 e& V0 [- E/ F. K, \% w$ ]; F
2 z1 j6 x) M* u1 U" S/ v) `$ h) i- case 3, M! }6 H6 P% N3 D) `3 G/ d
- sys=mdlOutputs(t,x,u,K);
+ l6 ^# U8 l% \% I& t - otherwise
6 j! j( y+ b# j2 |" X - error(['Unhandled flag = ',num2str(flag)]);1 W* W3 O2 N. `1 f! D6 _
- end
3 r$ {, L5 U* o: p; L3 Q) W( W - , G7 @( j7 I( I
- function [sys,x0,str,ts]=mdlInitializeSizes()6 E. B) P8 S, k
% B" c! \( d( S/ N B" L- sizes = simsizes;7 ^6 M5 y; D [9 D: T/ v1 m/ M" [
- sizes.NumContStates = 0;) Q% m8 c' e* \, m
- sizes.NumDiscStates = 3;2 \$ F' `) C9 C- C
- sizes.NumOutputs = 4;
8 c+ B" D* {+ l% _% ] - sizes.NumInputs = 4;
6 l2 B( _( x8 v" ^4 m ]7 r - sizes.DirFeedthrough = 1;5 ?% O5 C4 M6 L) h, \+ `
- sizes.NumSampleTimes = 1; / d; w; D5 r2 B6 X8 `: m
- sys = simsizes(sizes);
: q: g. B: x. e9 A' a9 I7 ` e
5 L1 T) X1 K% G7 g! T/ J- x0 = [9;0.01;0];9 P- q! T9 \# ]' t. |
2 l! V1 w+ A9 A0 T- A" j- str = [];
# z0 {5 W- Y% K2 F
9 w7 u* X- ` S; g- ts = [-1 0];' ]' @3 P U. g( G4 j, d
6 D6 ]2 H! Q0 Y& D4 S9 G- function sys=mdlUpdate(t,x,u,yita)
4 N' ]; A/ s: ?. e. ` - % function sys=mdlUpdate(t,x,u)5 _$ G& |) b) g
- sys=x+yita*u(1)*u(4)*(2*u(1)-u(2));9 r$ l) W* w# j3 h
1 k9 x. G, `" N, b, J* S- function sys=mdlOutputs(t,x,u,K) ( J5 L; S; k0 q0 o' u, r) O' T0 }
- xx=[u(1)-u(2) u(1) u(1)+u(3)-2*u(2)]; : f [ _4 s" z
- sys =[u(4)+K*xx*x/sum(abs(x));x/sum(abs(x))];
6 |7 B4 h* G: f; ~% E+ K i
复制代码 |