質問: 連続系と離散系を接続する場合 連続系(コンバータなどのアナログ回路)と制御系(マイコンでデジタル処理する)をやっていますが、エラーが出ます。 対処方法がぐたいてきにわからないので、教えてください '離散系**' を含む代数ループは、代数変数を割り当てることができない (すなわち、離散値出力をもち、非 double または複素数出力をもち、stateflow ブロック、または非バーチャル サブシステムから構成されている) ため、解くことができません。代数ループを切り離すことを検討してください。たとえば、遅延やメモリ ブロックをループに追加できます。ループに関する詳細を確認するには、コマンド simulink.blockdiagram.getalgebraicloops(bdroot) を使用します コンポーネント:simulink | カテゴリ:model エラー '**連続系/solver configuration' での代数ループ エラーです コンポーネント:simulink | カテゴリ:model エラー 離散系を参照システムとして作成しサンプル&ホールドratetransitionを使って離散系に固定ステップソルバーの自動選択としていますが、入力はcont→d1にレート変換できました しかし 3.7037037037037036e-8 の固定ステップ サイズをもつモデル 'buckboostmain' は、1.8518518518518518e-5 の固定ステップ サイズをもつモデル 'acinterfaceblock' を (model ブロック 'buckboostmain/acinterfaceblock' から) 参照します。固定ステップ サイズが異なるハイブリッドな (離散および連続の両方のコンポーネントをもつ) モデルの参照はサポートされません。 とエラーが出ます。 離散と連続の境界はどのように作ればよいのでしょうか、当方マイコン化する部分を離散系としたくアナログ入力を連続系として、ratetransitionを離散ブロック内で行うとまずいのでしょうか? 出力はpwmですが三角派は連続系です。遅延とratetransitionを挿入してもやはりエラーになります。 モデル参照内でratetransitionしなければよいのでしょうか、適切なサンプルが見当たらず困っています。
回答: モデル 'buckboostmain'のコンフィギュレーションパラメータで設定した基本サンプル時間は、27分の1の10の-8乗倍という値に指定していて、'acinterfaceblock'というモデルは54分の1の10の-5乗倍という値に設定していると思われます。 その前提で言いますと、27分の1や54分の1というのは、割り切れない数値になるので、浮動小数点で計算すれば必ず丸め誤差が発生します。また固定ステップで実行されるsimulinkモデルの基本サンプル時間は、その中に含む全てのブロックのサンプル時間はその基本サンプル時間の整数倍でなければなりません。 よって、27分の1は54分の1の整数倍には決してならないのでエラーとなります。 離散と連続の境界はrate transitionで切り分けるので正解です。トップのモデル参照ファイルの前後にrate transitionを接続し、そのブロックパラメータのサンプル時間を適切に設定すればokです。 ちなみに離散のモデルの部分をマイコンに実装するとのことですが、3.7037037037037036e-8秒の時間間隔で制御できるマイコンなど存在するのでしょうか。1.8518518518518518e-5秒であればいける気もしますが。 特に理由がないのであれば、制御周期は割り切れる時間にすべきです。buck boost コンバータであれば、まずは50μs(5e-5秒)などから試してみてはどうでしょうか。