Matlab#Simulink Siemens PLCSIMAdv S-Function

前回はSimulink とDriveSimBasicの連携について書きました。今回はPLCSIM Advanceにも仲間に入れようと思います。構成は下図のようになります。

うん?ぴんとこない方も多いかもしれませんが、つまり、PCの中にPLCSIM Advnaceを立ち上げて、Simulinkの中にSiemens社から提供してるS-Functionを入れてモデルをRunすると、モデルの入出力などはPLCのIQ(三菱だとXY)にFeedback、受けるのようなイメージです。実際そのPLCSIM Advanceはかなり深くて、API Interfaceも提供してるみたいです。C#などが上手い方ならこのAPIを通して色々な操作やってるみたいですよ~

私ではないですが。

S-Functionダンロード

下記のLINKをアクセスします。

https://support.industry.siemens.com/cs/document/109749187/digitalization-with-tia-portal%3A-virtual-commissioning-with-simatic-and-simulink?dti=0&lc=en-JP

ここで説明の資料・プロジェクトなどをダウンロードできます。

PLCSIM ADV S-Functionとは?

S-function “PLCSIM Advanced” はC++から作られ、中にPLCSIM AdvanceのInstanceにアクセスしDataを交換したりします。MEX fileはMatlabでも実行できるようにしています。もちろん、Simulink 内にIntegrateすることも可能です。

注意するのは、PLCSIM AdvanceのS-Functionが入ってるSimulink モデルをCompileする前にはまずPLCSIM Advance先に起動しProjectをダンロードしてからのほういいと思います。そうしないとCompileするときPLCSIM Advanceが勝手にInstance作ってしまうので。

実装

ダウンロードしたSourceCodeを開いて、そのままSimulinkへひっばりましょう。

無事にLoadされたら、PLSIM ADVのICONが出てきます。

まずTIAから3つのINPUTと3つのOutputを定義し、PLCSIM ADVにダウンロードします。

次はPLCSIM ADVをタブルクリックします。

Instance nameをいまPLCSIM ADVで作られたInstanceに名前合わせて入れてください。

そうすると、PLCSIM ADVのS-Functionは3つのInput PortとOutput Portが出てきます。

Ctrl+Dでコンパイラすると、先TIAが作られたINPUT/OUTPUTのTagはちゃんと見えます。

そして適当にINPUT/OUTPUTを割り付けましょいう。

Singleに変換するには、Sine WaveのBlock出てた値のDoube(64bit)でPLCで設定されたTagは32Bitの実数です。

モデルをRunするとInputはSimulinkから数値がもらってるってわかります。

次は、PLCからOUTPUTを入れてみて、Simulink側を見てみましょう。

よし、ちゃんと出てきますね。

でも、このS-Functionはかなりパソコンに負担かかりますー。

はーい、お疲れ様です。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

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

シェアする

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

フォローする