資源簡(jiǎn)介
基于模型預(yù)測(cè)控制的DMC控制算法,利用參數(shù)化模型即傳遞函數(shù)進(jìn)行控制器設(shè)計(jì)
代碼片段和文件信息
function?pitch_dmc(block)
setup(block);
function?setup(block)
block.NumDialogPrms?=?12;
%%?Register?number?of?input?and?output?ports
block.NumInputPorts??=?2;
block.NumOutputPorts?=?1;
%%?Setup?functional?port?properties?to?dynamically
%%?inherited.
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
block.InputPort(1).Dimensions????????=?1;
block.InputPort(1).DatatypeID????????=?0;??%?double
block.InputPort(1).Complexity????????=?‘Real‘;
block.InputPort(1).DirectFeedthrough?=?false;
block.InputPort(2).Dimensions????????=?1;
block.InputPort(2).DatatypeID????????=?0;??%?double
block.InputPort(2).Complexity????????=?‘Real‘;
block.InputPort(2).DirectFeedthrough?=?false;
block.OutputPort(1).Dimensions???????=?1;??%這里二維變3維
block.OutputPort(1).DatatypeID????????=?0;??%?double
block.OutputPort(1).Complexity????????=?‘Real‘;
%%?Set?block?sample?time?to?variable?sample?time
sample=block.DialogPrm(1).Data;??%%?即?Ts
block.SampleTimes?=?[sample?0];?
%%?Set?the?block?simStateCompliance?to?default?(i.e.?same?as?a?built-in?block)
block.SimStateCompliance?=?‘DefaultSimState‘;
%%?Register?methods
block.RegBlockMethod(‘SetInputPortSamplingMode‘?@SetInputPortSamplingMode);?%%?輸入/出端口的屬性,說(shuō)明端口是否工作在基于采樣(或基于幀)的模式
block.RegBlockMethod(‘PostPropagationSetup‘????@PostPropagationSetup);??????%%?設(shè)置工作區(qū)域和狀態(tài)變量。???可以在這里注冊(cè)運(yùn)行方法
%?block.RegBlockMethod(‘InitializeConditions‘????@InitConditions);%%?初始化;%%若仿真開(kāi)始前及仿真過(guò)程中需要多次初始化,則使用該回調(diào)。該回調(diào)對(duì)連續(xù)狀態(tài)ContStates和/或Dwork向量賦初始值、配置內(nèi)存等。
%?%?寫(xiě)成start好像比較好?但是試了一下,結(jié)果一樣
block.RegBlockMethod(‘Start‘?@Start);?%%?若僅在仿真開(kāi)始前需要初始化,則使用該回調(diào)。
block.RegBlockMethod(‘Outputs‘?????????????????@Output);??%%??生成輸出塊
block.RegBlockMethod(‘Update‘??????????????????@Update);??%%??更新
%?function?SetInputPortSamplingMode(block?port?mode)?%%?似乎與block.SampleTimes?=?[sample?0]重復(fù)。?試過(guò),單輸出可以刪除。多輸出不可以。
%?
%?block.InputPort(port).SamplingMode?=?mode;
%?
%?for?i?=?1?:?block.NumOutputPorts
%?????block.OutputPort(i).SamplingMode?=?mode;
%?end
function?PostPropagationSetup(block)
%%?Setup?Dwork
block.NumDworks?=?1;
block.Dwork(1).Name?=?‘control_u‘;???%?下一次計(jì)算要用到,所以要設(shè)置為狀態(tài)向量
block.Dwork(1).Dimensions??????=?1;???%這里2維度變3維
block.Dwork(1).DatatypeID??????=?0;???%double;
block.Dwork(1).Complexity??
評(píng)論
共有 條評(píng)論