Main Content

Stateflow での DC モーターのモデル化とデバッグ

この例は、永久磁石の DC モーターのモデルを示しています。DC モーターのモード ロジックとダイナミクスは、両方とも Stateflow® を使用してモデル化されます。

DC モーターのステート チャートは、powerOn と powerOff の 2 つのスーパーステートで構成されています。モーターの電源をオンにすると up または down の 2 つのサブステートのいずれかになり、移動方向を示します。

メモ: これは単純化した DC モーターのモデルです。Simscape™ を使用するとより精緻な DC モーターのモデルを作成できます。Simscape™ は、機械コンポーネント、油圧コンポーネント、電気コンポーネントなどを伴うマルチドメインの物理システムをモデル化しシミュレートするためのツールを使って、Simulink® の機能を拡張します。

モーターのダイナミクスはグラフィカル関数でステート チャートに直接定義され、モーターの状態に応じて変化します。たとえば、モーターが powerOff ステートの場合、印加電圧はゼロになります。powerOn ステートのときは、印加電圧はモーターの方向に応じて正か負のいずれかです。

確認のため、永久磁石の DC モーターを定義する微分方程式は次のようになります。

$$ \frac{di}{dt} = \frac{v_{app}(t) - R \cdot i(t) - K_b \cdot
\omega(t)}{L} $$

$$ \frac{d\omega}{dt} = \frac{K_m \cdot i(t) - K_f \cdot \omega(t)}{J} $$

ここで、

$$i = \mbox{current}$$

$$R = \mbox{resistance}$$

$$L = \mbox{inductance}$$

$$K_b = \mbox{EMF constant}$$

$$\omega = \mbox{rotational speed of motor}$$

$$v_{app} = \mbox{applied voltage}$$

$$K_f = \mbox{damping constant}$$

$$K_m = \mbox{torque constant}$$

アクティブ ステートの出力の有効化

アクティブ ステートの出力の監視を有効にするには、まず powerOn ステートを選択します。次に、[シミュレーション] タブで [子アクティビティのログ記録] をクリックします。

シミュレーションを実行します。

[シミュレーション] タブの [結果の確認] セクションにある [データ インスペクター] ボタンが強調表示され、表示できるログ記録された信号があること示します。[データ インスペクター] ボタンをクリックして、シミュレーション データを表示します。

このプロットのオレンジ色のデータは、アクティブになっている powerOn の子ステートを示します。このプロットは、子ステートが downup の間で切り替わっていることを示しています。

アクティブ ステートの出力を使用したデバッグ

アクティブ ステートの出力を使用して、Stateflow チャートのデバッグに役立てることもできます。例のこの部分では、up から down への遷移を削除することで、Stateflow チャートにエラーを導入します。down からデフォルト遷移を削除し、up へのデフォルト遷移の条件を削除します。

シミュレーションを実行します。

ここでも、ログ記録された新しいデータがあることが [データ インスペクター] ボタンにより示されます。データ インスペクターを開いて、信号を確認します。

このプロットでは、powerOn の子ステートでアクティブになるのは up だけであることがわかります。

関連するトピック