22.11.14 演算例

論理演算子を用いた計算例

論理演算子を用いた計算例を以下に示します。

結果 : ON

結果 : OFF

結果 : ON

結果 : OFF

結果 : OFF

結果 : ON

結果 : D200が10より小さければ真

結果 : D200が0のとき真

結果 : D200が2または5のとき真

結果 : D200が5より大きくかつ10より小さいとき真

結果 : D200が5より小さくかつD300が8より小さいとき真

ビット操作を用いた計算例

ビット操作を用いた計算例を以下に示します。

結果 : D200の内容を4ビット左にシフトする。

結果 : D200の内容を4ビット右にシフトする。

[w:[PLC1]D00200] = [w:[PLC1]D00300] >> [w:[PLC1]D00301]
結果 : D300の内容を12ビット右にシフトしてD200に代入する。

結果 : D200の内容を4ビット左にシフトする。

結果 : D200の内容を4ビット右にシフトする。

[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

0 ^ 0           // 結果 : 0
0 ^ 1           // 結果 : 1
1 ^ 1           // 結果 : 0

~ 0 // 結果 : 0xFFFF
~ 1 // 結果 : 0xFFFE

条件分岐を用いた計算例

制御の流れを分岐させる、if-endif、if-else-endif を以下に示します。

if (条件)
{処理1}
endif

条件が成立した場合は処理1 を実行し、成立しなかった場合は処理1 を無視します。

例)

if ([w:[PLC1]D00200] < 5)
{
 [w:[PLC]D00100] = 1
}
endif

D200 のデータが5 未満の場合、D100 に1 を代入します。

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]を用いた特殊な計算例を以下に示します。

100+65526=64(Hex)+FFF6(Hex)=1005A*1(Hex)→005A(Hex)=90

100+(-10)=64(Hex)+FFF6(Hex)=1005A*1(Hex)→005A(Hex)=90

100+4294901840=64(Hex)+FFFF0050(Hex)=FFFF00B4*1(Hex)→00B4(Hex)=180

100+(-65456)=64(Hex)+FFFF0050(Hex)=FFFF00B4*1(Hex)→00B4(Hex)=180

*1 下位16ビットが有効