論理演算子を用いた計算例を以下に示します。
( ( 100 > 99 ) and ( 200 <> 100 ) )
結果 : ON
( ( 100 > 99 ) and ( 200 <> 200 ) )
結果 : OFF
( ( 100 > 99 ) or ( 200 <> 200 ) )
結果 : ON
( ( 100 < 99 ) or ( 200 <> 200 ) )
結果 : OFF
not ( 100 > 99 )
結果 : OFF
not ( 100 < 99 )
結果 : ON
[w:[PLC1]D00200] < 10
結果 : D200が10より小さければ真
not [w:[PLC1]D00200]
結果 : D200が0のとき真
([w:[PLC1]D00200] == 2) or ([w:[PLC1]D00200] == 5)
結果 : D200が2または5のとき真
(5 < [w:[PLC1]D00200]) and ([w:[PLC1]D00200] < 10)
結果 : D200が5より大きくかつ10より小さいとき真
([w:[PLC1]D00200] < 5) and ([w:[PLC1]D00300] < 8)
結果 : D200が5より小さくかつD300が8より小さいとき真
ビット操作を用いた計算例を以下に示します。
[w:[PLC1]D00200] << 4
結果 : D200の内容を4ビット左にシフトする。
[w:[PLC1]D00200] >> 4
結果 : D200の内容を4ビット右にシフトする。
データ形式BIN、D301 に12(0000Ch)を格納
[w:[PLC1]D00200] = [w:[PLC1]D00300] >> [w:[PLC1]D00301]
結果 : D300の内容を12ビット右にシフトしてD200に代入する。
[w:[PLC1]D00200] << 4
結果 : D200の内容を4ビット左にシフトする。
[w:[PLC1]D00200] >> 4
結果 : D200の内容を4ビット右にシフトする。
データ形式BIN、D310 に12(0000Ch)を格納
[w:[PLC1]D00200] = [w:[PLC1]D00300] >> [w:[PLC1]D00310]
結果 : D300の内容を12ビット右にシフトしてD200に代入する。
ビットの論理積
0 & 0 // 結果 : 0
0 & 1 // 結果 : 0
1 & 1 // 結果 : 1
0x1234 & 0xF0F0 // 結果 : 0x1030
ビットの論理和
0 | 0 // 結果 : 0
0 | 1 // 結果 : 1
1 | 1 // 結果 : 1
0x1234 | 0x9999 // 結果 : 0x9BBD
ビットの排他I論理和
0 ^ 0 // 結果 : 0
0 ^ 1 // 結果 : 1
1 ^ 1 // 結果 : 0
ビットの1 の補数(データ形式 Bin16 + の場合)
~ 0 // 結果 : 0xFFFF
~ 1 // 結果 : 0xFFFE
制御の流れを分岐させる、if-endif、if-else-endif を以下に示します。
if-endif
if (条件)
{処理1}
endif
条件が成立した場合は処理1 を実行し、成立しなかった場合は処理1 を無視します。
例)
if ([w:[PLC1]D00200] < 5)
{
[w:[PLC]D00100] = 1
}
endif
D200 のデータが5 未満の場合、D100 に1 を代入します。
if-else-endif
if (条件)
{処理1}
else
{処理2}
endif
条件が成立した場合は処理1 を実行し、成立しなかった場合は処理2 を実行します。
例)
if ([w:[PLC1]D00200] < 5)
{
[w:[PLC1]D00100] = 1
}
else
{
[w:[PLC1]D00100] = 0
}
endif
D200のデータが5未満の場合、D100に1を代入し、それ以外はD100に0を代入します。
オフセット指定: [w:[PLC1]D00100]#[t:0000]を用いた特殊な計算例を以下に示します。
スクリプト設定 : 16ビット符号無しで[t:0000]= 65526の時、指定アドレスは[w:[PLC1]D00090]となる。
100+65526=64(Hex)+FFF6(Hex)=1005A*1(Hex)→005A(Hex)=90
スクリプト設定 : 16ビット符号有りで[t:0000]= -10の時、指定アドレスは[w:[PLC1]D00090]となる。
100+(-10)=64(Hex)+FFF6(Hex)=1005A*1(Hex)→005A(Hex)=90
スクリプト設定 : 32ビット符号無しで[t:0000]= 4294901840の時、指定アドレスは[w:[PLC1]D00180]となる。
100+4294901840=64(Hex)+FFFF0050(Hex)=FFFF00B4*1(Hex)→00B4(Hex)=180
スクリプト設定 : 32ビット符号有りで[t:0000]= -65456の時、指定アドレスは[w:[PLC1]D00180]となる。
100+(-65456)=64(Hex)+FFFF0050(Hex)=FFFF00B4*1(Hex)→00B4(Hex)=180
オフセットアドレスはスクリプトのビット長、データ形式の設定に関係なく、常に16ビットBinで扱われます。もし演算結果が16ビット(最大値 : 65535)を超えるような場合、15ビットめまでを有効なビットとし扱い、16ビットめ以上は切り捨てられます。