このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
MATLAB系统ブロックの系统对象のサンプル時間の指定
この例では、系统对象™メソッドを使用してMATLAB系统ブロックのサンプル時間を制御する方法を示します。
クラス定義内で、系统对象のサンプル時間メソッドを使用してサンプル時間を設定し,現在のシミュレーション時間に基づいて系统对象の動作を変更します。継承されたサンプル時間を使用する場合は,系统对象の定義でサンプル時間を指定する必要はありません。
サンプル時間の指定
サンプル時間を指定するには,getSampleTimeImpl
メソッドを実装し,createSampleTime
を使用してサンプル時間の指定オブジェクトを作成します。
この例では,さまざまなプロパティ値に基づいてサンプル時間を割り当てるプロパティSampleTimeTypeProp
が作成されます。getSampleTimeImpl
メソッドにより,SampleTimeTypeProp
プロパティに基づいてサンプル時間の仕様が作成されます。getSampleTimeImpl
メソッドは,createSampleTime
によって作成されたサンプル時間の指定オブジェクトsts
を返します。
18方法(Access = protected) 19函数sts = getSampleTimeImpl(obj) 20开关char(obj. sampletimetypeprop) 21 case 'Inherited' 22 sts = createSampleTime(obj,'Type','Inherited');24 sts = createSampleTime(obj,'Type','Inherited',…25“AlternatePropagation”、“可控”);26 case 'InheritedErrorConstant' 27sts = createSampleTime(obj,'Type','Inherited',…28“ErrorOnPropagation”、“常数”);29 case 'FixedInMinorStep' 30sts = createSampleTime(obj,'Type','Fixed InMinorStep');31 case 'Discrete' 32 sts = createSampleTime(obj,'Type','Discrete',…33“SampleTime”,obj。SampleTime,……34 OffsetTime, obj.OffsetTime);36 sts = createSampleTime(obj,'Type',' controlled ',… 37 'TickTime',obj.TickTime); 38 end 39 end
シミュレ,ション時間とサンプル時間のクエリ
getSampleTime
メソッドとgetCurrentTime
メソッドを使用して,現在のサンプル時間とシミュレーション時間のMATLAB系统ブロックをそれぞれクエリします。getSampleTime
はサンプル時間設定を記述するプロパティと共にサンプル時間の仕様オブジェクトを返します。
40 41 function [Count, Time, SampleTime] = stepImpl(obj,u) 42 Count = obj。Count + u;43 obj。计数=计数;44 Time = getCurrentTime(obj);45sts = getSampleTime(obj);46 if strcmp(sts.Type,'可控')47 setNumTicksUntilNextHit(obj,obj. count);48 end 49 SampleTime = sts.SampleTime;50结束
金宝appSimulinkでの動作
MATLAB系统ブロックに系统对象を含めます。
スコ,プに,ブロックに対するサンプル時間の変更の効果が示されます。
クラスの完全な定義
CountTime
系统对象の完全なクラス定義です。
classdefCountTime < matlab。系统%计算命中次数和时间属性(不可调)SampleTime = 1.4;%采样时间OffsetTime = 0.2;偏移时间%TickTime = 0.1;SampleTimeTypeProp(1,1) {mustBeMember(SampleTimeTypeProp,...(“离散”、“FixedInMinorStep”、“可控”,...“继承”、“InheritedNotControllable”,...“InheritedErrorConstant”)}=“离散”结束属性(DiscreteState)数结束方法(访问=受保护)函数sts = getSampleTimeImpl(obj)开关char (obj.SampleTimeTypeProp)情况下“继承”sts = createSampleTime(obj,“类型”,“继承”);情况下“InheritedNotControllable”sts = createSampleTime(obj,“类型”,“继承”,...“AlternatePropagation”,“可控”);情况下“InheritedErrorConstant”sts = createSampleTime(obj,“类型”,“继承”,...“ErrorOnPropagation”,“不变”);情况下“FixedInMinorStep”sts = createSampleTime(obj,“类型”,“固定在小步骤”);情况下“离散”sts = createSampleTime(obj,“类型”,“离散”,...“SampleTime”obj。SampleTime,...“OffsetTime”, obj.OffsetTime);情况下“可控”sts = createSampleTime(obj,“类型”,“可控”,...“TickTime”, obj.TickTime);结束结束函数[Count, Time, SampleTime] = stepImpl(obj,u) Count = obj。Count + u;obj。计数=计数;Time = getCurrentTime(obj);sts = getSampleTime(obj);如果比较字符串(sts)。类型,“可控”) setNumTicksUntilNextHit (obj obj.Count);结束SampleTime = sts.SampleTime;结束函数setupImpl (obj) obj。计数= 0;结束函数resetImpl (obj)初始化/重置离散状态属性obj。计数= 0;结束函数flag = isInactivePropertyImpl(obj,prop) flag = false;开关char (obj.SampleTimeTypeProp)情况下{“继承”,...“InheritedNotControllable”,...“FixedInMinorStep”}如果任何(strcmp(道具,{“SampleTime”,“OffsetTime”,“TickTime”}))标记= true;结束情况下“离散”如果任何(strcmp(道具,{“TickTime”}))标记= true;结束情况下“可控”如果任何(strcmp(道具,{“SampleTime”,“OffsetTime”}))标记= true;结束结束结束结束结束
参考
matlab.system.mixin.SampleTime
|createSampleTime
|getSampleTimeImpl
|getSampleTime
|getCurrentTime
|setNumTicksUntilNextHit