構造化タグの基本

<< Click to Display Table of Contents >>

マニュアル > サーバ作成ガイド > 構造化タグ編 >

構造化タグの基本

構造化タグとは?

構造化タグは1つの構造化タグに対して複数のパラメータを一括管理することを目的とした機能です。

 

例えば、T0000というタグに対し、T0000.Name(タグ名称)、T0000.PV(現在値)、T0000.SV(設定値)などの複数のパラメータを自由にユーザーが定義することができます。

構造化タグではName、PV、SVなどのパラメータのことをメンバと呼びます。

 

構造化タグは、クラス及びインスタンスという概念で構成されます。

 

c_tags_0001

 

 

hint

本項目の説明で使用しているサンプルは、以下からご利用頂けます。

 

 

クラスについて

構造化タグを作成するには、まずクラスを定義します。クラスは構造化タグを作成するための基になる定義です。クラスに対し以下のように構造化タグのメンバを定義します。

 

c_tags_0002

 

 

上のクラスでは、クラス「CLASS01」が以下の3つのメンバを持つことを定義しています。

 

・Name(文字列型、値をPCに保持する、初期値無し)

・PV(数値型、値をPCに保持しない、初期値無し)

・SV(数値型、値をPCに保持しない、初期値無し)

 

 

メンバの定義方法

 

追加したクラスを右クリックしプロパティを選択することにより、メンバの定義を行います。

 

c_tag_0136

 

 

名称

説明

①クラス名

クラス名を指定します。

フォルダ内に定義した場合は、この名前の前にフォルダ名をドット「.」で結合した名前が最終的なクラス名のパスになります。

②デフォルトタグ名

画面からドラックアンドドロップすることによりインスタンスを作成する場合に使用するデフォルトのタグ名です。

CSVファイルのインポートによりインスタンスを作成する場合は特に設定をする必要はありません。

③構造化タグフィルタ

構造化タグフィルタを用いるとメンバ間の演算を行うことができます。

詳細は「構造化タグフィルタについて」を参照してください。

④追加削除挿入ボタン

メンバの追加、削除、挿入を行います。

⑤メンバ定義

メンバの定義です。インスタンスはこれらの定義を元に作成されます。

 

Name/Typeについて
必須定義項目です。すべてのインスタンスはクラスの定義に従います。インスタンス毎に設定を変えることができません。例えば、「CLASS01」というクラスを元にTIC0000 / TIC0001というインスタンスを作成した場合、TIC0000.PVとTOC00001.PVの値の型(Type)は共通であり、それぞれ別の型で指定することはできません。
PVの型をNUMBERと指定した場合も、すべてのインスタンスのPVの型はNUMBERになります。インスタンス作成後、クラスの定義を変更すると、すべてのインスタンスの定義も自動的に変更されます。

 

Hold/Default/Bindについて
インスタンスを画面からドラックアンドドロップ操作で作成するときに使用されるデフォルト定義です。CSVファイルからインポートすることにより定義する場合は設定する必要はありません。インスタンスを作成する際、クラスの定義にしたがいインスタンスが作成されますが、インスタンス作成後は、インスタンス毎に設定を変えることができます。例えばクラスの定義にてHold(値保持)にチェックを入れた状態で、インスタンスを作成した場合、作成されたすべてのインスタンスでHoldにチェックが入っていますが、作成後、値保持をするかどうかのチェックをインスタンス毎に変更することができます。インスタンス作成後、クラスの定義を変更してもインスタンスの定義は変わりません。

 

Name(必須)

メンバ名

Type(必須)

値の型を以下から選択します。

BOOL

ブール型。TRUE/FALSEの値をとります。

NUMBER

数値型(倍精度浮動小数)。

STRING

文字列型(全角文字も含む)。

文字列の長さに制限はありません。ただし、Hold(値保持)を選択した場合は半角255文字が最大文字数になります。

Hold

 

画面からのドラックアンドドロップで複数のインスタンスを自動生成する際、本設定が利用されます。詳細は「インスタンスの設定」を参照して下さい。

Default

画面からのドラックアンドドロップで複数のインスタンスを自動生成する際、本設定が利用されます。詳細は「インスタンスの設定」を参照して下さい。

Bind

画面操作(ドラックアンドドロップ)でインスタンスを自動生成する際、バインドを自動的に割り付ける際、利用されます。CSVファイルからインポートによる作成を行う場合は設定の必要がありません。

 

バインド書式内には連続追加キーワードを設定することができます。

キーワードは複数のインスタンスを作成する際、タグパスの末尾のアドレスなどに対し連続したアドレスを自動的に割り当てたい場合に指定します。

詳細は「クラスのバインドの連続追加書式について」を参照して下さい。

 

 

インスタンスについて

インスタンスとはクラスの定義を元に、実際に作成された構造化タグのことを言います

以下は前述の「CLASS01」を元にしてインスタンス(T0000~T0009)を作成した例です。

 

c_tags_0003

 

 

hint

クラスのメンバの修正はインスタンス作成後でもできます。

例えば、MVというメンバを追加したい場合は、「CLASS01」の定義でMVを追加します。

すると、「CLASS01」クラスから作成されたすべてのインスタンス(T0000~T0009)に対しMVというメンバが自動的に追加されます。

 

 

インスタンスの設定方法

 

追加したインスタンスを右クリックしプロパティを選択することにより、インスタンスの設定を行います。

c_tag_0137

 

名称

説明

①クラス名

インスタンスの元となったクラス名です。

変更はできません。

②インスタンス名

インスタンス名です。

このインスタンス名及びフォルダ構成、メンバ名の3つの要素で外部から参照するためのタグパスが決定されます。

詳細は「構造化タグの階層構造とタグパス」を参照して下さい。

③メンバ定義

メンバの定義です。

 

Name/Typeについて
変更できません。変更したい場合はクラスの定義を変更して下さい。

 

Hold/Default/Bindについて
インスタンス毎に定義を変更できます。たとえはTIC000.PVは値を保持するが、TIC001.PVは値を保持しないなどの設定が可能です。インスタンス生成後、クラスの定義を変更しても、インスタンスの設定は変更されません。

Name(固定)

メンバ名です。クラスで定義されます。

Type(固定)

値の型です。クラスで定義されます。

BOOL

ブール型。TRUE/FALSEの値をとります。

NUMBER

数値型(倍精度浮動小数)。

STRING

文字列型(全角文字も含む。文字列の長さに制限はありません。ただし、Hold(値保持)を選択した場合は半角255文字が最大文字数になります。

 

Hold

値保持をする場合チェックを入れます。

値保持するとPCの電源をOFFするなどしても、次回起動時に最終値が再現されます。値保持を利用する場合、ツリーの「Application」のプロパティの「システム設定」タブにて、システムフォルダを有効にする必要があります。

 

値の情報はシステムフォルダ内にリアルタイムに保存されます。

そのため、突然PCの電源がOFFした場合であっても、直前の値が保存されています。

 

システムフォルダについては、構造化タグの作成の「手順1 システムの準備」を参照下さい。

 

Default

オンライン直後のデフォルト値です。

Holdにチェックをしていて、かつ既に値が保持されている場合は、ここで設定したデフォルト値は利用されず、保持されている値がデフォルト値になります。デフォルト値を不定値としたい場合は「(N/A)」と指定します。

 

不定値の概念は重要です。

例えばメンバをドライバタグとバインドさせる場合、基本的にはデフォルト値を不定値とします。

デフォルト値を0としてしまうと、オンライン直後に、第1回目の通信が完了していないタイミングで、値が0という扱いになってしまいます。

例えばログを取っている場合、オンライン直後0という値が保存されてしまう可能性があります。

 

以下はデフォルト値の設定例です。

c_tags_0029

 

Bind

メンバをドライバタグ(PLCのD0000やM0000などのデバイス)と接続したい場合、バインドの定義をします。詳細は「バインドについて」を参照してください。

 

例)ドライバタグU01.F01.T01とバインド(書込しない場合)

IN:U01.F01.T01

 

例)ドライバタグU01.F01.T01とバインド(読み書き両方)

INOUT:U01.F01.T01

 

例)メンバ間でバインド(他のメンバ値の合計)

IN:$Member02$ + $Member03$

 

バインドについて

各インスタンスのメンバとドライバタグ(PLCのデバイス)とをリンクさせることをバインドと言います。

 

例えば、T0000.PVをD0000、T0001.PVをD0001のようにリンクするには、各インスタンスでバインドの設定をします。

 

c_tags_0004

 

 

以下はバインド書式の例です。バインドについての詳細は「バインドについて」を参照して下さい。

 

例)入力バインド

IN:U01.F01.T01                                // 「IN:」を省略した場合も入力バインドとなる

 

例)出力バインド

OUT:U01.F01.T01

 

例)入出力バインド

INOUT:U01.F01.T01                        // 入出力を同一タグに対して行う

IN:U01.F01.T01; OUT:U01.F01.T02        // 入出力をそれぞれ異なるタグに対して行う

 

例)演算式

IN:U01.F01.T01 + U01.F01.T02

IN:($PV1$ + $PV2$) / 2                        // メンバ同士のバインドを行えます

 

例)関数を使用した例(工学値変換)

IN:Math.LT(T, U01.F01.T01, $PLCMin$, $PLCMax$, $PCMin$, $PCMax$, T, T)

 

構造化タグの階層構造とタグパスについて

構造化タグ(クラスを元に作成されたインスタンス)を外部から参照するにはタグパスを用います。

 

インスタンスを多数定義する場合、フォルダを作成することにより分りやすく分類することができます。

フォルダは何階層でも定義できます。以下の例では2階層のフォルダを作成し、その中にT0000などのインスタンスを作成しています。

c_tags_0030

 

構造化タグを参照するためのタグパスは以下のようになります。

 

フォルダをドット「.」で連結した名前.インスタンス名.メンバ名

 

上画像の例では、F01.F01というフォルダ内にT0000というインスタンスを作成しています。PVメンバを参照したい場合は、F01.F01.T0000.PVがタグパスになります。

 

 

hint

タグパスの文字列をコピーしたい場合は、画面からメンバを選択しCtrl+Cキーを押します。Ctrl+Vでタグパスを貼り付けられます。