メインコンテンツ

MATLAB System object と MATLAB System ブロックを使用したブロック アルゴリズムの実装

この例では、MATLAB System ブロックを使用して、パルス幅変調 (PWM) 信号を生成するアルゴリズムを実装する方法を示します。PWM 信号のアルゴリズムは、MATLAB® System object™ を使用して実装します。MATLAB System ブロックは、System object を Simulink® 環境に統合します。この例では、デューティ比と周波数を対話的に設定して、さまざまな PWM 信号を生成できます。

MATLAB System object と MATLAB System ブロックのインターフェイス

MATLAB System ブロックは、System object slexPWMSysObj を使用して PWM 信号を生成します。このブロックは、入力端子でデューティ比と信号周波数を受け入れます。さらに、このブロックには、生成される PWM 信号の振幅と制御可能なサンプル時間の分解能という 2 つの定数パラメーターもあります。これらの定数パラメーターは、System object の調整不可プロパティとして定義されています。

MATLAB System object を使用した PWM アルゴリズムの定義

出力 PWM 信号の振幅は、setNumTicksUntilNextHitメソッド内の stepImpl 関数を使用して定義されます。setNumTicksUntilNextHit メソッドは、stepImpl の次の呼び出しまで待機する制御可能なサンプル時間の目盛りの数を設定します。この例では、目盛りの数は、デューティ比と周波数を使用して計算されます。制御可能なサンプル時間は、createSampleTime関数を使用して定義されます。サンプル時間の分解能は、MATLAB System ブロックの基本ステップ サイズを定義します。

function yout = stepImpl(obj,duty,Frequency)
      f = Frequency;
      numSamples = floor(1/(obj.Resolution*f));
      numTicksToNextHit = floor((duty/100)*numSamples);
       if (obj.IsHit)
           yout = obj.Amplitude;
           obj.IsHit = false;
       else
           yout = 0;
           obj.IsHit = true;
           numTicksToNextHit = numSamples - numTicksToNextHit;
       end
       setNumTicksUntilNextHit(obj, numTicksToNextHit);
   end

シミュレーションと結果の可視化

モデルをシミュレートし、Scope ブロックを使用して結果を可視化します。この例では、振幅 2、デューティ比 40%、周波数 25 Hz の PWM 信号を生成します。振幅、デューティ比、周波数の値を変更して、要件に応じて異なる PWM 信号を生成できます。

参考

トピック