タグの読み込み

<< Click to Display Table of Contents >>

マニュアル > 画面作成ガイド > スクリプト > スクリプトの記述例 > スクリプトからのタグの読み書き > タグ読み書きのサンプル集 >

タグの読み込み

概要

スクリプトからタグ値を読み書きする場合、事前に必ず「AddTag」する必要があります。タグ値を読み込む場合、予め「AddTag」したタグについて、「GetVal」/「ReadVal」のメソッド呼び出しによって読み込みを行うことができます。また、「AddTag」したタグについては、タグ値が変化するタイミングで「OnTagValueChanged」イベントが発生し、イベント内でタグ値が利用出来ます。

 

hint

AddTag」の第2引数でFALSEを指定して登録したタグについては、「OnTagValueChanged」イベントは発生しません。

 

タグ読み込みの際には、ほとんどの場合「GetVal」を使用します。「GetVal」はキャッシュからタグ値を読み込むため処理も高速です(実デバイスの値を読み込みたい場合には「ReadVal」を使用します)。

尚、「AddTag」はオブジェクト毎に行うため、どのオブジェクトに「AddTag」されているのかを意識する必要があります。

 

ここでは、3つの方法でタグ値を読み込むサンプルで解説します。
 
fap_script_0065

 

 

サンプルのダウンロード

このサンプルは以下に格納されています。

 

 

 

設定

タグ設定
 

1.「Driver」を右クリックして、「ユニット追加」から仮想デバイスを追加します。
fap_script_0067
 

2.追加したユニットの「U01」を右クリックして、フォルダ追加から「F01」を追加します。
fap_script_0068
 

3.追加したフォルダの「F01」を右クリックして、タグ「T01」~「T03」を登録します。登録後、タグの「デバイス」を「05-SD 特殊レジスタ」で登録します。
fap_script_0066
 

hint

ここで利用する仮想デバイスのタグについての詳細は、「仮想デバイス」を参照して下さい。

 

プログラム

読み込み処理を記述します。

※オブジェクトの配置及びプロパティ設定は、サンプルを参照下さい。

 

1.フォームオブジェクトに以下を記述します。

event OnInitialize()

{

 var vTags = c("U01.F01.T01", "U01.F01.T02", "U01.F01.T03");

 

 this.AddTag(vTags);

}

 

event OnTagValueChanged(tagname,value)

{

 if(tagname == "U01.F01.T01"){

         this.edt01.Text = value;

 }

}

 

2.GetValボタンオブジェクトに以下を記述します。

event OnMouseUp(button)

{

 if(button == 1){

         var vValue;

         vValue = parent.GetVal("U01.F01.T02");

         

         if(::IsQualityGood(vValue)){

                 parent.edt02.Text = vValue;

         }else{

                 parent.edt02.Text = "Error";

         }

 }

}

 

3.ReadValボタンオブジェクトに以下を記述します。

event OnMouseUp(button)

{

 if(button == 1){

         var vValue;

 

         if(parent.ReadVal("U01.F01.T03", vValue, "device")){

                 parent.edt03.Text = vValue;

         }else{

                 parent.edt03.Text = "Error";

         }

 }

}

 

 

解説

フォームオブジェクトの「OnInitialize」でタグの読み込みを行うタグを「AddTag」します。ここでは、複数のタグを配列にまとめて「AddTag」しています。また、「AddTag」の第2パラメータを省略(もしくはTRUEを指定)することによって、タグから値取得が可能となります。

続いて同フォームオブジェクトの「OnTagValueChanged」が、「AddTag」したタグ値が変化する毎にイベント発生します。「OnTagValueChanged」イベントは、第1パラメータのtagnameにタグ名称、第2パラメータのvalueにはタグ値が入って発生します。

 

GetValボタンオブジェクトでは、「GetVal」を使用してタグ値を読み込みます。「GetVal」はキャッシュ値から値を読み込み高速に処理出来ます。今回のサンプルでは、「AddTag」はフォームオブジェクトの「OnInitialize」イベント内で行っています。そのタグ値を読み出すので、「GetVal」は「parent.GetVal("U01.F01.T02")」という記述になります。また、タグ値が正常に通信出来ているかを判定するには、ルートメソッド「IsQualityGood」を使用します。

 

ReadValボタンオブジェクトでは、「ReadVal」を使用してタグ値を読み込みます。「ReadVal」は、タグ値をどのデータソース(サーバキャッシュ値、クライアントキャッシュ値、デバイス値)から読み込むか指定できます。しかしながら、デバイス値からの読み出しを指定した場合、その都度PLCとの通信が発生する為、全体のパフォーマンスが低下します。また、タグ値が正常に通信出来ているかを判定するには、「ReadVal」の返値で判定できます。

 

 

hint

「this」/「parent」で表現されるオブジェクトの階層構造については、「オブジェクトの階層構造と参照」を参照下さい。

 

hint

クライアントキャッシュとサーバキャッシュについては、「クライアントキャッシュとサーバキャッシュ」を参照下さい。クライアントキャッシュを更新する場合は、「ReadRefresh」を利用します。