<< Click to Display Table of Contents >> マニュアル > 画面作成ガイド > スクリプト > スクリプトの記述例 > スクリプトからのタグの読み書き > タグ読み書きのサンプル集 > タグの読み込み |
概要
スクリプトからタグ値を読み書きする場合、事前に必ず「AddTag」する必要があります。タグ値を読み込む場合、予め「AddTag」したタグについて、「GetVal」/「ReadVal」のメソッド呼び出しによって読み込みを行うことができます。また、「AddTag」したタグについては、タグ値が変化するタイミングで「OnTagValueChanged」イベントが発生し、イベント内でタグ値が利用出来ます。
「AddTag」の第2引数でFALSEを指定して登録したタグについては、「OnTagValueChanged」イベントは発生しません。 |
タグ読み込みの際には、ほとんどの場合「GetVal」を使用します。「GetVal」はキャッシュからタグ値を読み込むため処理も高速です(実デバイスの値を読み込みたい場合には「ReadVal」を使用します)。
尚、「AddTag」はオブジェクト毎に行うため、どのオブジェクトに「AddTag」されているのかを意識する必要があります。
ここでは、3つの方法でタグ値を読み込むサンプルで解説します。
サンプルのダウンロード
このサンプルは以下に格納されています。
設定
タグ設定
1.「Driver」を右クリックして、「ユニット追加」から仮想デバイスを追加します。
2.追加したユニットの「U01」を右クリックして、フォルダ追加から「F01」を追加します。
3.追加したフォルダの「F01」を右クリックして、タグ「T01」~「T03」を登録します。登録後、タグの「デバイス」を「05-SD 特殊レジスタ」で登録します。
ここで利用する仮想デバイスのタグについての詳細は、「仮想デバイス」を参照して下さい。 |
プログラム
読み込み処理を記述します。
※オブジェクトの配置及びプロパティ設定は、サンプルを参照下さい。
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」の返値で判定できます。
「this」/「parent」で表現されるオブジェクトの階層構造については、「オブジェクトの階層構造と参照」を参照下さい。 |
クライアントキャッシュとサーバキャッシュについては、「クライアントキャッシュとサーバキャッシュ」を参照下さい。クライアントキャッシュを更新する場合は、「ReadRefresh」を利用します。 |