MATLAB Homeで制御系を設計する

以下の記事内で少しだけ触れたMATLAB Homeで制御系を設計する方法をまとめておきます。制御系の設計以外にも、ちょっとした伝達関数の特性確認や複雑な計算にも利用できるのでとても便利です。

MATLAB Home

個人向けに用意されているMATLABライセンスです。とても安い価格で各種ライセンスを購入することができます。

MATLAB Home

ライセンス規約には「MATLAB Home は個人利用専用です。官公庁、教育機関、研究機関、企業やその他の団体ではご利用いただけません。」とあります。あくまでも個人の趣味や学習用という位置づけのライセンス形態なので使用範囲には注意が必要かなと思います。

ライセンスの利用期間

ライセンスは1度購入すれば永久利用が可能です。(サポート終了時点の最新版がずっと使える)

購入時点から1年間は自動的にサポート期間となりツールボックスの追加やバージョンアップを受けることができます。サポート期間が終了するとツールボックスの追加や最新バージョンへのバージョンアップができなくなります。購入時のライセンス料金の半額を追加で支払うことでサポート期間の更新ができます。

通常ライセンス版との違い

特定のアドオン製品(HDLやCコードを自動生成するCoder類など)が購入できないといった点を除くと、ほぼ全ての機能が利用できます。私の利用範囲である制御系の設計で困るようなことはありませんでした。

あと、Simulinkを利用する場合に以下の制限を受けます。

モデル (参照モデルブロックを含む) 数は 1000 の非バーチャル ブロックに制限
アクセラレータおよびラピッド アクセラレータ シミュレーション モードは非対応
モデルブロックのシミュレーションはノーマルモードのみ対応

制御系の設計ではブロック線図を利用することが多いです。Simulinkを用いるとブロック線図から簡単に制御系の特性を知ることができます。 Home版のライセンスでは、モデルブロックの数に制限があるので、極端に大きなモデルは作成できません。1000もあれば、通常問題になることはまず無いとは思います。

購入したMATLAB Homeライセンス

ロボット制御や電源制御などで用いるフィードバック系を設計するために必要なライセンスをメインに購入しました。購入したライセンスを以下に示します。

MATLAB本体が15,500円、 Simulink及び各種ツールボックスが各4,490円でした。
全て購入して合計46,930円になりました。

MATLAB
必須。Simulink及び各種ツールボックスはMATLAB上で動作します。

Simulink
システムをモデル化してシミュレーションするために必要です。ブロック線図ベースでシミュレーションを行うために購入しました。

Control System Toolbox
モデルの線形化や離散化など制御系の設計に必要な基本的な機能が提供されます。「Simulink Control Design」を動作させる時にも必要です。

DSP System Toolbox
信号処理系の設計に必要な機能が提供されます。ほとんど使っていない、いらなかったかも…
動作させるためには「Signal Processing Toolbox」も必要です。

Signal Processing Toolbox
デジタルフィルタ(FIR,IIR)の設計ツールが提供されます。
フィルターデザイナーを用いるとデジタルフィルタの設計をGUIで行うことができるので便利です。

設計後のフィルターでSimulinkモデルを作成することもできます。

Simscape
Simulink上に物理モデルを作成する場合に必要です。LTspiceのように回路図ベースでシミュレーションを行うことができるようになります。電子回路だけでなく機械や熱なども同時にモデル化することができます。

Simscape Electrical
Simscape用の電子部品モデルなどが提供されます。

Simulink Control Design
Simulink上のモデルに対して直接、線形解析(ボード線図、ステップ応答など)を行えるようになります。とても便利なツールボックスで制御系の解析には必須だと思います。

ブロックの入出力間に解析ポイント↓(入力)↑(出力)を設定して開ループ特性を評価。このブロックには一次遅れの伝達関数を設定してあります
線形解析ツールにて特性の評価を実行 ちゃんと一次遅れですね

制御系設計の進め方

Simulinkモデルを利用したCVCC電源の制御系設計を例に解説していきます。モデルさえ適切に設計できれば色々と応用できます。

設計の流れ

① 制御器と制御対象のSimulinkモデルを作成する。
② 線形解析ツールを用いてモデルの周波数特性を確認する。
③ 応答、安定性を確認しながら制御器のパラメータを調整する。

①~③を繰り返して適切な応答、安定性を確保する。

Simulinkモデル化

まず、Simulink上で制御器と制御対象をモデル化します。位相とゲインの情報に影響を与えないように信号処理系とスイッチング回路をモデリングしていきます。

信号処理系のモデル化

これをモデル化します。今回は電圧ループのみのモデルとします。ブロック図の通りにSimulink基本要素ブロックでモデル化することができます。

・12bit ADC
 サンプルホールドブロックによって連続信号を離散信号に変換します。
 入力信号に対して分解能(4095)/基準電圧(3.3V)のゲインをかけてAD変換後の値を出力します。
 入出力の関係が実機とモデルで等しくなるようにゲインを設定しているだけです。

・Type-3制御器
 IIRフィルタのブロックそのままです。特に難しいことはありませんね。

・PWM
 電圧の可変範囲をゲインブロックによって設定します。
 12bit ADCと同じで、入出力の関係が実機とモデルで等しくなれば問題ありません。
 PWM:0[%]~100[%]→電圧:0[V]~24[V]

・むだ時間
 必要に応じてディレイブロックで設定します。
 今回の制御では1サンプリング分の遅れが生じるためディレイブロックを1個挿入してあります。
 当初、サンプルホールドブロックで1サンプリング分の遅れが生じていると考えていましたが、
 サンプルホールドブロックでは遅れが生じないということが分かったので追加しました。

スイッチング回路(LCフィルタ)のモデル化

回路が複雑になるとモデル化が大変なので、位相とゲインの情報に影響を与えない要素は極力省略して簡略化します。したがって、CVCC電源回路の場合は、LCフィルタをきちんとモデル化できていれば良いことになります。

電子回路のモデル化には「Simulink基本要素ブロックを用いる方法」と「Simscapeを用いる方法」の2通りがあります。

◆ 「Simulink基本要素ブロックを用いる方法」

Simscapeのライセンスを購入する必要がないので安く済みます。ただし、モデル化する回路の伝達関数を導出する必要があります。実際の回路と特性をそろえるためには、コイルの直列抵抗分やコンデンサのESRなども伝達関数に含めなければいけません。しかし、式が非常に複雑になります。

ということで以下の一般的な2次遅れの伝達関数でLCフィルタ部分をモデル化してみました。あとで詳しく解説しますが、以下の式では実機との差異が大きくなります。また、伝達関数ブロックの出力にゲインブロックを配置して分圧抵抗器(1/10 -20dB)をモデル化しています。

$$H(s)= \frac{K\omega_{n}^2}{s^{2}+\frac{\omega_{n}}{Q}s+\omega_{n}^{2}}$$

ゲイン: $$K$$

角周波数:$$\omega_{n}=2\pi{f}$$

◆「Simscapeを用いる方法」

Simscapeを用いるとスイッチング回路を回路図ベースでモデル化することが可能です。ESRや直列抵抗分なども簡単に回路内に加えることが可能です。しかし、 FETブロックを用いてスイッチング回路をそのままモデル化すると線形解析ができなくなります。そこでFETブロックを用いてスイッチング回路をモデル化するのではなく、可変電圧源とを用いてモデル化を行います。

信号処理系からの信号は、可変電源ブロックに入力されます。0~24[V]の連続的な信号に変換されます。実機では0~24[V]の矩形波になるのですが位相とゲイン情報に差が無ければ問題ないと考えています。…間違っていたらコメント下さいね…

Simscapeブロックは各ブロックに細かな特性値を設定することができます。これを利用することで ESRや直列抵抗分なども簡単に回路上に含めて特性をシミュレーションすることができます。とても便利です。

可変電圧源から出力された電圧はLCフィルタを通って出力されます。この出力を電圧センサで検出、信号変換してADコンバータへフィードバックします。

SimscapeブロックとSimulinkブロックは直接接続できません。 「Simulink-PS Converter」、「PS-Simulink Converter」という変換ブロックを通して接続を行います。

可変電圧源
電圧センサ

「Simulink-PS Converter」、「PS-Simulink Converter」についてはこの辺を参照してください。

物理単位の取り扱い方 - MATLAB & Simulink - MathWorks 日本
Simscape モデリング環境での物理単位の取り扱いに関する一般原則
Convert Simulink input signal into physical signal - MATLAB - MathWorks 日本
The Simulink-PS Converter block converts the input Simulink signal into a physical signal.
Convert physical signal into Simulink output signal - MATLAB - MathWorks 日本
The PS-Simulink Converter block converts a physical signal into a Simulink output signal.

線形解析とモデルの特性比較

解析したいポイントを選択して線形解析ポイントを設置します。一巡特性を確認するための「ループ伝達」というポイントを設置します。任意のポイントの入出力間特性を確認したい場合は「ループの入力」-「ループの出力」を設置します

線形解析ポイントは
ポイントを設置したい信号上で右クリック→線形解析ポイントで設定できます。

特性解析ツールは
「メニューバー」解析(A)→制御器設計(D)→線形解析(L)で起動できます。

◆「Simulink基本要素ブロックを用いる方法」でモデル化した回路の周波数応答

スイッチング回路の周波数応答
一巡特性

◆「Simscapeを用いる方法 」でモデル化した回路の周波数応答

スイッチング回路の周波数応答
一巡特性

カットオフ周波数を超えたあたりから、ゲイン・位相の周波数特性に違いが生じています。「Simulink基本要素ブロックを用いる方法」でモデル化したスイッチング回路 にはコンデンサのESRが含まれていないためです。実際のLCフィルタは、コンデンサのESRによってゼロが生じて高周波側で位相が進む特性を持ちます。

LCフィルタについては以下に説明を譲ります。

ローパスフィルタにおける低ESRコンデンサの 効果と注意点 - 電子デバイス・産業用機器 - Panasonic
ローパスフィルタにおける低ESRコンデンサの 効果と注意点のページです。

過渡解析

もちろん過渡解析も可能です。上から「出力電圧」、「フィードバック電圧」、「基準値」を観測しています。

◆「Simulink基本要素ブロックを用いる方法」でモデル化した回路

位相余裕が少なめなのでリンギングが大きい

◆「Simscapeを用いる方法 」でモデル化した回路

実機の出力応答

「Simscapeを用いる方法 」でモデル化した回路に近い特性となっています。
拡大

参考資料

◆はじめて学ぶディジタル・フィルタと高速フーリエ変換

はじめて学ぶディジタル・フィルタと高速フーリエ変換

◆Interface 2009年 1月号

◆ArduinoとMATLABで制御系設計をはじめよう! Physical Computing Lab

◆OPアンプ大全 第三巻 OPアンプによるフィルタ回路の設計

OPアンプ大全 | 調べる / 学ぶ | アナログ・デバイセズ

コメント

タイトルとURLをコピーしました