資源簡介
S函數寫的PID控制程序和控制對象,效果過得去,僅供學習交流。

代碼片段和文件信息
function?[sysx0strtssimStateCompliance]?=?sfunction_object(txuflag)
switch?flag
?
??case?0
????[sysx0strtssimStateCompliance]=mdlInitializeSizes;
?
??case?1
????sys=mdlDerivatives(txu);
?
??case?2
????sys=mdlUpdate(txu);
??case?3
????sys=mdlOutputs(txu);
??case?4
????sys=mdlGetTimeOfNextVarHit(txu);
??case?9
????sys=mdlTerminate(txu);
??otherwise
????DAStudio.error(‘Simulink:blocks:unhandledFlag‘?num2str(flag));
end
function?[sysx0strtssimStateCompliance]=mdlInitializeSizes
sizes?=?simsizes;
sizes.NumContStates??=?2;
sizes.NumDiscStates??=?0;
sizes.NumOutputs?????=?1;
sizes.NumInputs??????=?1;
sizes.DirFeedthrough?=?1;
sizes.NumSampleTimes?=?1;???%?at?least?one?sample?time?is?needed
sys?=?simsizes(sizes);
x0??=?[0?0];
str?=?[];
ts??=?[0?0];????????????????%對應純連續系統
simStateCompliance?=?‘UnknownSimState‘;???
function?sys=mdlDerivatives(txu)???????%連續系統計算導數
sys(1)?=?x(2);???????????%對應于系統的狀態空間方程式
sys(2)?=?-(25+10*rands(1))*x(2)+(133+30*rands(1))*u;????????????%把計算得出的導數向量賦值給sys變量
function?sys=mdlUpdate(txu)????????????%更新離散系統狀態
sys?=?[];????????????%本例為連續時間系統,該部分代碼無需修改
function?sys=mdlOutputs(txu)
sys?=?x(1);
function?sys=mdlGetTimeOfNextVarHit(txu)????%該子程序只在離散采樣系統有用
sampleTime?=?1;????%??Example?set?the?next?hit?to?be?one?second?later.
sys?=?t?+?sampleTime;
function?sys=mdlTerminate(txu)
sys?=?[];
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14165??2018-11-16?16:33??Main.slx
?????文件???????1478??2018-10-23?09:50??sfunction_ob
?????文件???????1397??2018-10-23?10:17??sfunction_pid.m
-----------?---------??----------?-----??----
????????????????17040????????????????????3
評論
共有 條評論