Matlab#Simulink StateFlowでFlowを作ってみよう_01

Stateflowとは?

Matlabのページによりますと、

Stateflow® では、状態遷移図、フローチャート、状態遷移表、真理値表などのグラフィカル言語を提供します。Stateflow を使用して、MATLAB® アルゴリズムと Simulink® モデルが入力信号、イベント、および時間ベースの条件にどのように反応するかを記述できます。

そしてコード生成、検証、テストなど様々な機能もあるのようです。

詳しくはHPへ:

https://jp.mathworks.com/products/stateflow.html

Example

今回はStateFlowから簡単なFlowを作成しようと思います。

Sine waveのInputがあり、もし>0ならDeviceをONし、<=0ならDeviceをOffします。

まずMatlabを起動し、Simulink を立ち上げます。

Library Browserをクリックします。ここでSimulinkで使われるBlockを一覧できます。

ずっと下のScrollすると、Stateflowが見えます。

Chartダブルクリックします。

よし、いまモデルにStateflow一つ追加されました。

このStateflowのICONをダブルクリックします。

StateflowのEditorが開きました。

左にあるStateをクリックします。

そして右の空の場所に引っ貼ります。

Stateが1つ追加されました。

Stateもう1つ追加し、DeviceOFFとDeviceONの名前をつけます。

下に、entry:device_on=falseとentry:device_on=trueを入力します。

そのentryは以下のLink説明があります。簡単といいますと、

チャートがはじめてアクティブになる場合。これは、チャートの初期化と呼ばれます。

https://jp.mathworks.com/help/stateflow/ug/chart-initialization-and-entry-actions.html?searchHighlight=Entry&s_tid=srchtitle

entryが設定完了したらStateの縁側のところから他のStateの縁側にひっばりますとStateの繋がりができます。

つまりこんな感じですね。

では先がDeviceOffからDeviceOnに流れるState接続しましたので、今度は逆方向もやります。

よし、Stateの流れ接続も完了しました。

線のところをクリックしますと、?が出てきますね。

ここで条件・動作などを入力できます。

[ ]はCondition、つまり条件ですね。

{ }はAction、つまり動作です。

そしてこちらはEventです。

今回はConditionだけ使うことになりますので、

[u>0.0]を設定します。つまりuが0.0より大きなら、DeviceOFFのStateから>DeviceONのStateへ変わることになります。

反対側には、もしu<=0.0ならDeviceONのStateからDeviceOffのStateへ流れることになりますね。

設定終わったら、Runしてみます。

うん?エラーが出てきますね…

unresolved symbolsのようなメッセージですね。

なので、Symbolsを設定します。

View>Symbolsを。

先のuとdevice_onが問題出てますね。

では、まずuのほうをInput Dataに定義します。

次はdevice_onをOutput Dataに定義します。

よし、これで完了ですね。

もう一回Runしてみますと、Errorなくなりましたね。

ここで一回StateflowのChartから一回Modelのほうに戻りましょう。

先のStateflowのChartからうす~~い絵が出てましたね!

あの絵は先私たち作ったのStateFlowです。

次はSine wave、2PortのScope、Out1を追加します。

それぞれ繋がりましょう。

Sine wave>>u とScope port1接続します。

device_on>>out1とScope接続します。

結果

うん、それはちゃんとON/OFFになっていますね。

PLC Code生成

最後はおまけに、PLC Codeの自動生成も紹介しましょう。

Simulink PLCCoderという別Packageが必要になります。

詳しくはこちらへ:

https://jp.mathworks.com/products/simulink-plc-coder.html

Code>PLC Code>Optionsをクリックします。

PLC Code Generation>Target IDEで自動生成したいPLCメーカーが選べます。

注意するのは、この変換はST言語ですね。

Ladderは…今度時間あればやってみますね。

では、Siemens TIA Portalを選択します。

先作ったStateFlowを右クリック>PLC Code>Generate Code for Subsystem。

しばらく待ちますと、もしエラーがなければ、SCL Filesが生成されますね。

おお、よくできていますね。

TIAからExternal source files>Add new external file。

先自動作成されたものを追加し、右クリック>Generate blocks from source。

お、ちゃんとFunction Blockに変換されますね。

はーい、お疲れ様です。

Footer_Basic

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする