stateflow chart 内にて、繰り返し処理を1ステップで行うにはどうすればよいか?
Mostrar comentarios más antiguos
現在stateflow chartにて、開発を行っております。
開発モデルにおいて、stateflow chart 内にて繰り返し処理を行いたいために、テストとして以下のようなモデルを作成しました。
図1
図2
図3上記のモデルは、Chart内にて、[1 1 1 1]というInベクトルの各要素を、繰り返し処理によってOutベクトルの各要素に代入するという簡単なモデルとなります。
また、resolutionは1秒です。
Outベクトルは、初期値として[0 0 0 0]と設定されております。
このモデルを実行すると、Outの各要素の出力が異なっており、一つ目と四つ目では以下のようになります。
図4一つ目、0秒の段階で代入が行われている
図5四つ目、代入操作が3秒の時点で行われている。
上記のような代入操作の遅れは、図2において一つの要素の代入操作が1ステップで行われており、すべての操作に4ステップかかっていることによるものと思われます。
ここで、すべての操作を1ステップで行うためにはどうすればよいでしょうか?
Respuestas (1)
Atsushi Ueno
el 30 de Oct. de 2022
0 votos
一つの方法として:
MATLABは配列(ベクトル)を扱えるので、ローカル変数 i やループ処理を削除して、単にen: Out = In;とすれば良いです。
その際、Stateflowチャートのアクション言語をMATLABにしてください。
8 comentarios
佳樹
el 30 de Oct. de 2022
Atsushi Ueno
el 30 de Oct. de 2022
🤔うーん、もう一つ「ステートを除いてジャンクションと遷移だけにすれば1ステップで全部処理される」事を示そうと思っていたのですが、このステートはどうしても必要なものなんでしょうか?

佳樹
el 30 de Oct. de 2022
Atsushi Ueno
el 30 de Oct. de 2022
なるほどこれは信号の数だけステートを保持する必要がありますね。
信号の数だけステートを持てば良いかとも思いましたが、N=4ではなく100とかなると困りますもんね。
では上に上がってSimulinkのAtomicサブシステムで括る事になりますか。
Atsushi Ueno
el 30 de Oct. de 2022
実現は絶対に可能なのですが、今の形では絶対に無理で、ステートを再入可能なライブラリにして、信号の数だけ異なるステートを持たせる形にする必要があります。Stateflowのステートでそれをどう実現するのか方法を知らなくて...何か分かったら追記します。
佳樹
el 30 de Oct. de 2022
Atsushi Ueno
el 30 de Oct. de 2022
Subsystem ブロックのプロパティ「Atomic サブシステムとして扱う」にチェックを入れると、そのSubsystem ブロックは「Atomic サブシステム」になります。
実際に設定してみたのですが、Stateが前回値を保持する動きは変わりませんでした。

佳樹
el 31 de Oct. de 2022
Categorías
Más información sobre モデル コンポーネントのスケジュール en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


