SC1構文とは
本章では、スクリプトVer1(以後SC1と呼びます)の構文について説明します。
SC1構文は簡単な演算を手軽に使用できることを目的としており、+ - * / < > などのVisualBasic互換の演算子を利用してタグ同士の演算を行うための簡易的なスクリプトです。
1行毎の処理実行のため、if文(条件分岐)やfor文(繰り返し処理)などは使用できません。より高度な処理を行いたい場合は、スクリプトVer2(SC2構文)を使用してください。
SC1は、以下から使用することができます。
•FA-Server 「スクリプトVer1アクション」
•FA-Server 各アクション詳細設定タブのスクリプト実行

|
本パッケージのVer4ではタグスクリプトと呼ばれていましたが、Ver5以降ではスクリプトの構文体系を整理するため、スクリプトVer1(略してSC1構文)と名称が変わりました。
|
基本的な構文
SC1構文は以下の構文で記述します。
タグパス1 = 演算式1
タグパス2 = 演算式2
タグパス3 = 演算式3
|
スクリプトが実行されると、演算式の結果がタグへ書き込まれます。演算式の部分にタグパスを含めることができます。複数の式を記述したい場合は、改行して記述していきます。計算はすべて数値で行われ、「TRUE」は1で「FALSE」は0として扱われ、文字は数値に変換されます。
例)
U01.F01.T01 = 1
U01.F01.T01 = U01.F01.T02 * (U01.F01.T03 + 1)
U01.F01.T01 = (U01.F01.T02 And U01.F01.T03) Or (U01.F01.T04 And U01.F01.T05)

|
SC1構文では文字を扱うことができません。文字型のタグの場合、文字が数値に変換され処理されます。例えば文字列の合成など、文字として値を扱いたい場合はスクリプトVer2(SC2構文)を使用して下さい。
|
オペレーター(演算子)
使用できるオペレーターを以下にまとめます。
オペレーター
|
算術演算子
|
指数演算
|
^
|
数値のべき乗を求めます。
|
マイナス符号
|
-
|
式の符号を反転した値を指定するために使用されます。
|
乗算
|
*
|
2つの数値の積を計算します。
|
除算
|
/
|
2つの数値の商を計算します。
|
整数除算
|
\
|
2つの数値の商を計算し、結果を整数で返します。
|
剰余演算
|
Mod
|
2つの数値の除算を行い、その剰余を返します。
|
加算
|
+
|
2つの数値の和を求めます。
|
減算
|
-
|
2つの数値の差を求めます。
|
|
比較演算子
|
等しい
|
=
|
2つの数値の比較し、等しければTRUEを返します。
|
等しくない
|
<>
|
2つの数値の比較し、等しくなければTRUEを返します。
|
より小さい
|
<
|
2つの数値の比較し、左値が右値より小さければTRUEを返します。
|
より大きい
|
>
|
2つの数値の比較し、左値が右値より大きければTRUEを返します。
|
以下
|
<=
|
2つの数値の比較し、左値が右値以下であればTRUEを返します。
|
以上
|
>=
|
2つの数値の比較し、左値が右値以上であればTRUEを返します。
|
|
論理演算子
|
論理否定
|
Not
|
式の論理否定を求めます。
|
論理積
|
And
|
2つの式の論理積を求めます。
|
論理和
|
Or
|
2つの式の論理和を求めます。
|
排他的論理和
|
Xor
|
2つの式の排他的論理和を求めます。
|
論理等価演算
|
Eqv
|
2つの式の論理等価演算を行います。
|
論理包含演算
|
Imp
|
2つの式の論理包含演算を行います。
|
論理積
|
AndN
|
2つの式の論理積を求めます(数値としてビット単位の比較をします)。
|
論理和
|
OrN
|
2つの式の論理和を求めます(数値としてビット単位の比較をします)。
|
|
計算例
|
算術演算子
|
|
|
例
|
結果
|
指数演算
|
^
|
2 ^ 3
|
8
|
マイナス符号
|
-
|
3 – 2
|
1
|
乗算
|
*
|
2 * 1.5
|
3
|
除算
|
/
|
5 / 2
|
2.5
|
整数除算
|
\
|
15 \ 2
|
7
|
剰余演算
|
Mod
|
15 Mod 2
|
1 (15 / 2 = 7 余り1であるため)
|
加算
|
+
|
1 + 0.5
|
1.5
|
減算
|
-
|
2 – 4
|
-2
|
|
比較演算子
|
|
|
例
|
結果
|
等しい
|
=
|
12 = 12
|
1
|
|
|
34 = 12
|
0
|
等しくない
|
<>
|
12 <> 12
|
0
|
|
|
34 <> 12
|
1
|
より小さい
|
<
|
12 < 12
|
0
|
|
|
12 < 34
|
1
|
より大きい
|
>
|
12 > 12
|
0
|
|
|
34 > 12
|
1
|
以下
|
<=
|
12 <= 12
|
1
|
|
|
34 <= 12
|
0
|
以上
|
>=
|
12 >= 12
|
1
|
|
|
12 >= 34
|
0
|
|
論理演算子
|
|
|
例
|
結果
|
論理否定
|
Not
|
Not 1
|
0
|
|
|
Not 0
|
1
|
|
|
Not 123
|
0
|
論理積
|
And
|
1 And 1
|
1
|
|
|
1 And 0
|
0
|
|
|
0 And 1
|
0
|
|
|
0 And 0
|
0
|
|
|
12 And 123
|
1
|
論理和
|
Or
|
1 Or 1
|
1
|
|
|
1 Or 0
|
1
|
|
|
0 Or 1
|
1
|
|
|
0 Or 0
|
0
|
|
|
12 Or 123
|
1
|
排他的論理和
|
Xor
|
1 Xor 1
|
0
|
|
|
1 Xor 0
|
1
|
|
|
0 Xor 1
|
1
|
|
|
0 Xor 0
|
0
|
|
|
12 Xor 123
|
0
|
論理等価演算
|
Eqv
|
1 Eqv 1
|
1
|
|
|
1 Eqv 0
|
0
|
|
|
0 Eqv 1
|
0
|
|
|
0 Eqv 0
|
1
|
|
|
12 Eqv 123
|
1
|
論理包含演算
|
Imp
|
1 Imp 1
|
1
|
|
|
1 Imp 0
|
0
|
|
|
0 Imp 1
|
1
|
|
|
0 Imp 0
|
1
|
|
|
12 Imp 123
|
1
|
論理積
|
AndN
|
1 AndN 1
|
1
|
|
|
1 AndN 0
|
0
|
|
|
0 AndN 1
|
0
|
|
|
0 AndN 0
|
0
|
|
|
12 AndN 123
|
8(00001100 AndN 01111011 = 00001000)
|
論理和
|
OrN
|
1 OrN 1
|
1
|
|
|
1 OrN 0
|
1
|
|
|
0 OrN 1
|
1
|
|
|
0 OrN 0
|
0
|
|
|
12 OrN 123
|
127(00001100 OrN 01111011 = 01111111)
|
|

|
1つの式の中で複数の演算子が使われているとき、一定の順序で計算されます。まず、算術演算子、比較演算子、論理演算子の順序で評価されます。算術演算子および論理演算子は、上表に示す順序で評価されます。比較演算子の各演算子の優先順位はすべて同じです。括弧「()」 を使用すると、強制的に優先順序を入れ替えることができます。括弧の内側の演算は外側の演算よりも常に優先的に実行されます。
|

|
仮想デバイスはPLCをシミュレートしたデバイス(ビットデバイス、ワードデバイス)なので、整数しか扱えません。小数を扱うには、メモリデバイスの数値タグを利用します。
|

|
ネットワークタグをスクリプト中で用いる場合、以下のように先頭に「//Network/」を付加して下さい。
例)
//Network/N01/T01
|