IL (Instruction List) ファイル

SDメモリーカードまたは本体のUSBディスクへ保存したアクション定義ファイルにより、ウェザーステーションの計測値を条件式に従って、Pachube・Twitter等へのデータ投稿や、オープンコレクタ出力の制御をすることができます。

アクション定義ファイルはメモ帳等のテキストエディタで編集し保存します。ファイル中のほとんどの文字は半角英数字です。

書式はPLCのシーケンスプログラムのIL(Instruction List、ニーモニック)と似ています。ラダーチャートから検討するとわかりやすいでしょう。

汎用コントローラーのような使い方ができます。

※基本の動作は 設定ファイル を参照。

アクション定義ファイルの例

ファイル名: weather.asm

DEF T0=3600  ・・・タイマー時間を60分にセット
LD 1
OUT P        ・・・計測後毎回Pachubeへ投稿
OUT S        ・・・計測後毎回Weather Stationsへ投稿
LD A5>0
OUT T0       ・・・雨量を観測している間タイマーを動作
LDP T0
OUT W0       ・・・タイマーが経過したらTwitterへ投稿
RST T0       ・・・タイマーが経過したらタイマーをリセット
LD A2>=70
OUT Q0       ・・・湿度が70%以上の間出力をON
END

各条件はLD等から始まり、ANDやORで条件が追加され、OUT等で終わります。

先頭からENDまで実行し、また先頭に戻るまでを1サイクルとします。1秒間に1サイクル動作します。

パラメーター設定

DEF

タイマーやカウンタの値を設定します。(起動時のみ)

DEF T0=10

DEF C1=100
記号設定先備考
Tn=mタイマーn=0~9、m=タイマー秒数
Cn=mカウンターn=0~9、m=カウントしきい値

条件開始

LD

条件式の始まりです。

LD X==1
OUT A

|   X=1             |
|---| |-------[A]---|
|                   |

(X == 1)

条件式の書式は条件式を参照。

LDI

条件式の始まりです。

条件は反転されます。

LDI X==1
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1             |
|---|/|-------[A]---|
|                   |

!(X == 1)

条件式の書式は条件式を参照。

LDP

条件式の始まりです。

条件の立ち上がりを判定します。

LDP X==1
OUT A

|   X=1             |
|---|^|-------[A]---|
|                   |

!(X == 1) --> (X == 1)

条件式の書式は条件式を参照。

LDF

条件式の始まりです。

条件の立ち下がりを判定します。

LDI X==1
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1             |
|---|v|-------[A]---|
|                   |

(X == 1) --> !(X == 1)

条件式の書式は条件式を参照。

AND条件追加

AND

直前の条件とパラメータに指定された条件を and でつなぎます。

LD X==1
AND Y==2
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1       Y=2             |
|---| |-------| |-------[A]---|
|                             |

(X == 1) and (Y == 2)

ANI

直前の条件と、パラメータに指定された条件を反転したものを and でつなぎます。

LD X==1
ANI Y==2
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1       Y=2             |
|---| |-------|/|-------[A]---|
|                             |

(X == 1) and !(Y == 2)

ANDP, ANDF

立ち上がり、立ち下り

OR条件追加

OR

直前の条件とパラメータに指定された条件を or でつなぎます。

LD X==1
OR Y==2
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1             |
|---| |---+---[A]---|
|         |         |
|   Y=2   |
|---| |---+
|

(X == 1) or (Y == 2)

ORI

直前の条件と、パラメータに指定された条件を反転したものを or でつなぎます。

LD X==1
ORI Y==2
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1             |
|---| |---+---[A]---|
|         |         |
|   Y=2   |
|---|/|---+
|

(X == 1) or !(Y == 2)

ORP, ORF

立ち上がり、立ち下り

条件ブック結合

ANB

直前の二つの条件ブロックを and でつなぎます。

LD X==1
OR Y==2
LD Z==3
OR W==4
ANB
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1       Z=3             |
|---| |---+---| |---+---[A]---|
|         |         |         |
|   Y=2   |   W=4   |
|---| |---+---| |---+
|

( (X == 1) or (Y == 2) ) and ( (Z == 3) or (W == 4) )

ORB

一つ前の条件ブロックと処理中の条件ブロックを and でつなぎます。

LD X==1
OR Y==2
LD Z==3
AND W==4
ORB
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1                       |
|---| |---+---------+---[A]---|
|         |         |         |
|   Y=2   |         |
|---| |---+         |
|                   |
|   Z=3       W=4   |
|---| |-------| |---+
|

( (X == 1) or (Y == 2) ) or ( (Z == 3) and (W == 4) )

ANB ORB 理解のキモ

処理の途中でLD命令が出てくると、そこまでの処理はいったん保存され、次にANB・ORB命令が出てきたときに合わせて条件が評価される。

結果の利用

INV

処理中の条件を反転します。

LD X==1
AND Y==2
INV
OUT A

ラダーチャートやC言語風に書くと次のようになります。

|   X=1       Y=2                       |
|---| |-------| |------- / -------[A]---|
|                                       |

!( (X == 1) and (Y == 2) )

MPS, MRD, MPP

真・偽をスタックへ保存、読み取り、破棄します。

出力

OUT

真・偽をそのまま出力へ反映させます。

LD A1>=10
OUT X

気温≧10のとき出力をセット、それ以外のとき出力をリセット
記号出力先備考
PPachubeへ投稿投稿-
WnTwitterへ投稿投稿-n=メッセージ番号 TWITTER_MESG[n]
SWeather Stationsへ投稿投稿-
EnE-mailを送信送信-n=メッセージ番号
BXBeeで送信送信-
Qn出力ポートセットリセットn=0~1
Mn補助リレーセットリセットn=0~9
Tnタイマー動作リセットn=0~9
Cnカウンター加算/減算保持n=0~9
Rnカウンター方向減算加算n=0~9

n を省略すると 0 を指定したとみなされます。

SET

真のとき出力をセット(1、High)します。

例:気温≧10のとき出力をセット

LD A1>=10
SET X
記号出力先備考
Qn出力ポートセット-n=0~1
Mn補助リレーセット-n=0~9

n を省略すると 0 を指定したとみなされます。

RST

真のとき出力をリセット(0、Low)します。

例:気温≧10のとき出力をリセット

LD A1>=10
RST X
記号出力先備考
Qn出力ポートリセット-n=0~1
Mn補助リレーリセット-n=0~9
Tnタイマーリセット-n=0~9
Cnカウンターリセット-n=0~9

n を省略すると 0 を指定したとみなされます。

条件式

条件式へは式を書くかまたは左項のみを書きます。 比較演算子のある式を書くとその真(True)・偽(False)、左項のみを書くとその値の真(0以外、High)・偽(0、Low)を判別します。

式の場合:左辺 比較演算子 右辺 (スペースなし)

LD A1>=0   ・・・ 気温≧0のとき、真となる

項目の場合:左辺

LD A1      ・・・ 気温が0以外のとき、真となる

左辺

計測値をあらわす記号を指定します。

記号
A0気圧
A1気温
A2湿度
A3風速
A4風向
A5雨量
A6照度
A7紫外線量
A8湿り気/カウント
A99計測サイクルのとき真

記号
y西暦
m
d
h
i
s

記号
0常に偽
1常に真
In入力ポート n=0~1
Qn出力ポート n=0~1
Mn補助リレー n=0~9
Tnタイマー(設定時間経過) n=0~9
Cnカウンター(しきい値以上) n=0~9

n を省略すると 0 を指定したとみなされます。

1 は毎回出力したいときに使います。

A99 は計測サイクル(Interval)にのみ出力したいときに使います。

比較演算子

比較記号を指定します。

==!=<<=>>=%!%&!&
備考一致非一致未満以下以上商が0以外商が0ANDして0以外ANDして0

右辺

比較する数値(小数可)を指定します。

タイマー

タイマーは、一定時間後の出力制御や、間欠動作などに使えます。

タイマーは秒単位で値をセットすると、毎秒カウントダウンします。

例:10秒をセットする。

DEF T=10

例:次のどの表記も、タイマーがカウント動作中に真となる

LI T

ANI T

LD T!=0

例:次のどの表記も、タイマー時間経過後に真となる

LD T

AND T

LD T==0

タイマーの例

気温≧10のときタイマーへ20秒をセットする。

タイマー時間経過すればXをセットする。

DEF T=20
LD T>=10
OUT T
LD T
SET Q0

間欠動作の例

気温≧20のときT0タイマーへ5秒をセットする、同時に出力Q0をセットする。

T0タイマー時間経過し、Q0がセットされているとき、T1タイマーへ10秒をセットする、同時に出力Q0をリセットする。

T1タイマー時間経過し、Q0がリセットされているとき、T0タイマーへ5秒をセットする、同時に出力Q0をセットする。

DEF T0=5
DEF T1=10
LD A1>=20
OUT T0
SET Q0
LD T0
AND Q0
OUT T1
RST Q0
LD T1
ANI Q0
SET Q0
RST T0

上記は、次の条件式と同じ動作をします。

気温≧10のときタイマーをスタートする。

タイマー時間経過しているとき、タイマーをリセットする。

タイマー残り時間≧10のとき、Q0へ出力する。

DEF T=15
LD A1>=20
OUT T
LD T
RST T
LD T>=10
OUT Q0

備考

文書の先頭へ
weatherstation-il.txt · 最終更新: 2017/01/16 13:13 by sugakoubou