主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

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;结束结束结束结束结束

参考

|||||

関連するトピック