質問: simulinkのバージョンの違いにより, シミュレーションが実行できない simulink2017bにて構築したシミュレータが、simulink2016bにおいて実行できません. エラーコードは以下のように表示されます. ***** :ファイル名 エラー: ***** (line 132) matlab system ブロック "*****/コントロール2/lms update" で、入力端子 1 の次元が不明です。 入力端子が、ループ内にある、groundブロックまたは次元未指定のソースによって駆動されている、 あるいは未接続の信号線をもつ場合に、この問題が発生することがあります。 次元を指定した signal specification ブロックを入力端子の前に追加することを検討してください。 エラーコードは以上です. また, simulink2017bにて、simulink2016bのバージョンに書き出して実行しても, シミュレーションが実行できません. なぜなのでしょうか? 回答をよろしくおねがいします.
回答: 上記が matlab system ブロックのダウンバージョンに関連する問題である可能性があると考え、試しに matlab system ブロックを含むデモモデル slexsysidentmatlabsystemexample を r2016b 用のモデルとしてエクスポートして保存したものを、r2016b で起動・シミュレーションしたところ、特にエラーなくシミュレーションできました。そのため、どのような状況で本エラーが再現するか、把握しきれていない状態です。 上記エラー内容から、信号の次元に関する問題が発生していることが推測されます。matlab system ブロックの問題か、それともmatlab system に入ってくるまでの信号に問題があるかを切り分けるために、下記を試されては如何でしょうか。 * matlab system ブロック単体で動作するモデルを作成し、r2016b にエクスポートして実行 上記でエラーが出る場合、もしくは r2017b と入出力の次元が異なる場合は、matlab system の処理内容に問題がないかご確認頂ければと思います。 ブロック単体のモデルで動作する場合は、matlab system ブロックを空のサブシステムで置き換え、信号の次元がr2017bと同じ次元になっているか確認し、問題がある箇所があればそこを修正して再度試してみてください。 上記を試して分かったことがあれば、その内容を元に原因を推測することもできるかもしれません。どうぞよろしくお願いします。