モデルチェック用の関​数「sldiagno​stics」を実行し​た際のエラー,「ce​ll から double に変換できません。」の原因について

Simscapeで作成したモデルのチェックのために,sldiagnostics関数を実行すると,タイトルの通り「cell から double に変換できません。」というエラーが出ますがその解決策がわかりません.(エラーメッセージは本文一番下に記載)
現状わかっていること
  • 外部のプログラムの干渉によりエラーは生じており,外部プログラムを実行しない場合はこのエラーは生じない
  • Simscapeモデル(Simscape ElectricもSimscape Fluid)を実行する場合にエラーを生じるが,Simlinkだけのモデルであればエラーは生じない
上記のことから,Simscapeで用いられる何かしらの変数や関数と外部プログラムが干渉していることが原因ではないかと考えていますが,
どの関数/変数がバッティングしているのかまではわからず解決することができません.
エラーの原因の箇所を見ると,loc_sldiagnosticsの543行目(下記の太字部)であるとのことです.
---------------------------------------------------------------
statsTxt = [ ...
evalc( 'feval(mdl,[],[],[],''compile'');' ), ...
evalc( 'feval(mdl,[],[],[],''term'');' ) ]; %#ok<NASGU>
---------------------------------------------------------------
「cellからdoubleに変換できません」というエラーメッセージですが,上記のエラー部のどこがcellからdoubleへの変換を必要としている部分でしょうか?
ご存知の方がいられましたら,ご教授よろしくお願いいたします。
*****エラーメッセージ*****
エラー: sldiagnostics>loc_sldiagnostics (line 572)
sldiagnostics が compilestats を収集できませんでした
エラー: sldiagnostics (line 90)
[textout, report] = loc_sldiagnostics(sys, nargout, varargin{:});
エラー: check_simulink_model (line 2)
sldiagnostics(sys, 'CompileStats')
原因:
エラー: sldiagnostics>loc_sldiagnostics (line 543)
cell から double に変換できません。
******************
実行環境: MATLAB 2019b

9 comentarios

stozaki
stozaki el 27 de Oct. de 2020
モデルのコンパイル(更新)はエラー無く出来ますか? 「ブロック線図の更新」または「Crtl + D」を実行してエラーが出ていませんか?
ryohki wakasa
ryohki wakasa el 28 de Oct. de 2020
「Ctrl+D」を押しても,同様に「cellからdoubleに変換できません」というエラーメッセージが出ます.
stozaki
stozaki el 28 de Oct. de 2020
診断ビューワ上のハイパーリンクで原因となるブロックや設定が確認できますでしょうか?
ryohki wakasa
ryohki wakasa el 28 de Oct. de 2020
できません
ryohki wakasa
ryohki wakasa el 28 de Oct. de 2020
診断ビューワーで原因となるブロックや設定の指示がなく,どのように修正を行えばよいかわからなかったため,
モデルのチェック関数sldiagnosticsを用いて原因箇所を特定しようと試みている最中です.
sldiagnostics以外にも,エラー箇所の特定を行う方法などがあればその方法でも構いません.
stozaki
stozaki el 30 de Oct. de 2020
SimulinkにSimscapeのブロックを追加すると発生するとのことですが、その部分だけを切り取って、同様のエラーが発生するようにして貼り付けて頂くことはできますでしょうか?
ryohki wakasa
ryohki wakasa el 4 de Nov. de 2020
エラーが発生しているプログラムをそちらに送って確認するという内容でしょうか?
(張り付けるというのが,どにこ対してかわかりませんでした..すみません.)
それに関しては,別の質問で伺って確認してみた結果,こちらで持っている外部のプログラムとの干渉によりエラーが生じていることはわかっているため,Simlinkプログラムだけ送ってもエラーは発生しないと思います.
そのため,エラーの原因をこちらで探るために最初の質問を行っているという流れになります.
示唆している内容を間違っていましたら訂正よろしくお願いいたします。
ryohki wakasa
ryohki wakasa el 4 de Nov. de 2020
プログラム本文内の「 evalc( 'feval(mdl,[],[],[],''compile'');' ), ...」に対して,どこがdoubleに変換しようとしている変数になるのか(本来はdoubleの形をとる変数であるか)を教えていただければ幸いです.(mdl? "compile" ? l)
stozaki
stozaki el 5 de Nov. de 2020
evalc( 'feval(mdl,[],[],[],''compile'');' ), ...」 ですが、このコマンドは対象モデルをコンパイル(ブロック線図の更新)を行っているものです。このコマンド自体がdouble型変換等を行っているわけではございません。
つまり、モデルをコンパイルした際にエラーとなり、停止した。と読み取れます。
何れにしても、モデルコンパイルエラーなので、その原因はモデルのコンフィギュレーション設定やブロック設定等、モデル側に何かしらの設定ミスマッチが発生しております。
診断エラーメッセージに詳細が出力されないのであれば、おそらくSimulinkとSimscapeの接続で信号属性のミスマッチ等が考えられます。
> こちらで持っている外部のプログラムとの干渉によりエラーが生じている
コメント頂いた、外部プログラムとは具体的にどの様なものでしょうか?

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Preguntada:

el 27 de Oct. de 2020

Comentada:

el 5 de Nov. de 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!