シーメンス♯WinCC UnifiedのScript Folder構造

TIAV16.0のSIMATIC WinCC UnifiedからJavascriptに”Global modules”というコンセントが入っており、それは昔のComfort Panelなどがない考え方です。なぜこのような作りか方するかどういうと、

  • いままでの紹介で、Scriptが直接Button、IO fieldなどの中に組み込んでるのですが、Global modulesならどこのHMI Objectにも依存することなく、つまり使え回しことができます。
  • Task schedulerで周期的にScriptをトリガーすることも可能になります。

ではGlobal modulesとその中にある各部品について紹介します。

Global Module

Global modulesはProject-Treeの中にあるScripts Folderに保存されています。

そして各Global modulesには自分のFunctionsとGlobal definition areaがあります。

そのGlobal modulesは機能ことか、まぁ、自分が好きなようにFunctionsを切り分けることによって管理が簡単になります。

Global Definition area

次はGlobal Definition areaですね。このGlobal Definition areaがLocal tagsを定義することができます。そのLocal tagsが自分のGlobal module グループの中にあるFunctionsすべてアクセスすることができます。

もちろんExport・Import機能を使えば、他のモジュールの使用可能です。

この機能に対して後ほどで紹介します。

Global Function

最後はGlobal Functionです。Global moduleことにFunctionを多数を持つことができます。

  • Functionを実行するとき引数を渡すこと可能。
  • Functionは戻り値があり。
  • Import・Exportを使うよって他のモジュールも利用OK。

Example

Project-TreeでScripts Folder>Add new global module。

そしてGlobal moduleが追加されます。

さらにその中Add new functionををクリック。

Functionが追加されます。名前も自由で変更できます。

Global moduleが追加終わったら次はGlobal definition areaでLocal tagを作成してみます。

注意するのはそのLocal tags達の値を変更できるのはFunction経由だけです。ButtonなどのHMI Objectはできるのは値を読むだけで、もしそれらのLocal tagsをHMI Objectなどにも変更できるようにしたいなら、1つのFunctionを作って、そして引数に変更したい値を渡し、最後Functionを実行するみたいな形になります。

次はFunctionです。Add new Functionをクリックし新しいFunction追加。名前はfAddValueにします。

中は単なる引数を受けて、その引数をLocal tags myValue1に与えます。

もちろんFunctionの下にあるPropertiesはParametersのところに<Add new>を押せば受ける引数を増やすこともできます。

次は画面上にボタンとIO fieldを作成します。

Buttonを選んで>Events>PressでScirpt画面に切り替えます。

Global definitionのところをクリックします。

そうするとFunction・変数をImportする画面に変わります。

import {myValue1} from ‘GM1’

つまり、GM1というGlobal Moduleの中にmyValue1というLocal tagsをImportします。

後はいつも通りSnippetsの中にWrite tagのTemplate入れて、Tagを書き込む値は先ImportしたmyValue1に変更します。 

最後はFunction Importですね。例えば、このfAddValueをImportしたいとします。

Global definition areaで別々書くことも可能です。

ImportしたらScriptでFunctionを直接使うことが可能です。

個別書くことはめんどくさいのであれば、 *を使って一気にImportするも可能です。

import * as myGM1 from ‘GM1’;

つまりGM1からすべてのFunctionと変数をImportし、名前をmyGM1にします。

そのやり方だと少し書き方が分かります。

もしFunctionアクセスしたいであれば、myGM1.fAddValue()になり、変数をアクセスしたいのであれば、myGM1.myValue1になります。

それもあくまでも好みです。

はーい、お疲れ様です。

なにがあったらコメントしてね。

Footer_Basic

Find ME

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

シェアする

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

フォローする