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 T0=10 DEF C1=100
記号 | 設定先 | 備考 |
---|---|---|
Tn=m | タイマー | n=0~9、m=タイマー秒数 |
Cn=m | カウンター | n=0~9、m=カウントしきい値 |
条件式の始まりです。
条件は反転されます。
LDI X==1 OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 | |---|/|-------[A]---| | | !(X == 1)
条件式の書式は条件式を参照。
条件式の始まりです。
条件の立ち上がりを判定します。
LDP X==1 OUT A | X=1 | |---|^|-------[A]---| | | !(X == 1) --> (X == 1)
条件式の書式は条件式を参照。
条件式の始まりです。
条件の立ち下がりを判定します。
LDI X==1 OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 | |---|v|-------[A]---| | | (X == 1) --> !(X == 1)
条件式の書式は条件式を参照。
直前の条件とパラメータに指定された条件を and でつなぎます。
LD X==1 AND Y==2 OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 Y=2 | |---| |-------| |-------[A]---| | | (X == 1) and (Y == 2)
直前の条件と、パラメータに指定された条件を反転したものを and でつなぎます。
LD X==1 ANI Y==2 OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 Y=2 | |---| |-------|/|-------[A]---| | | (X == 1) and !(Y == 2)
立ち上がり、立ち下り
直前の条件とパラメータに指定された条件を or でつなぎます。
LD X==1 OR Y==2 OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 | |---| |---+---[A]---| | | | | Y=2 | |---| |---+ | (X == 1) or (Y == 2)
直前の条件と、パラメータに指定された条件を反転したものを or でつなぎます。
LD X==1 ORI Y==2 OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 | |---| |---+---[A]---| | | | | Y=2 | |---|/|---+ | (X == 1) or !(Y == 2)
立ち上がり、立ち下り
直前の二つの条件ブロックを 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) )
一つ前の条件ブロックと処理中の条件ブロックを 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) )
処理の途中でLD命令が出てくると、そこまでの処理はいったん保存され、次にANB・ORB命令が出てきたときに合わせて条件が評価される。
処理中の条件を反転します。
LD X==1 AND Y==2 INV OUT A
ラダーチャートやC言語風に書くと次のようになります。
| X=1 Y=2 | |---| |-------| |------- / -------[A]---| | | !( (X == 1) and (Y == 2) )
真・偽をスタックへ保存、読み取り、破棄します。
真・偽をそのまま出力へ反映させます。
LD A1>=10 OUT X 気温≧10のとき出力をセット、それ以外のとき出力をリセット
記号 | 出力先 | 真 | 偽 | 備考 |
---|---|---|---|---|
P | Pachubeへ投稿 | 投稿 | - | |
Wn | Twitterへ投稿 | 投稿 | - | n=メッセージ番号 TWITTER_MESG[n] |
S | Weather Stationsへ投稿 | 投稿 | - | |
En | E-mailを送信 | 送信 | - | n=メッセージ番号 |
B | XBeeで送信 | 送信 | - | |
Qn | 出力ポート | セット | リセット | n=0~1 |
Mn | 補助リレー | セット | リセット | n=0~9 |
Tn | タイマー | 動作 | リセット | n=0~9 |
Cn | カウンター | 加算/減算 | 保持 | n=0~9 |
Rn | カウンター方向 | 減算 | 加算 | n=0~9 |
n を省略すると 0 を指定したとみなされます。
真のとき出力をセット(1、High)します。
例:気温≧10のとき出力をセット
LD A1>=10 SET X
記号 | 出力先 | 真 | 偽 | 備考 |
---|---|---|---|---|
Qn | 出力ポート | セット | - | n=0~1 |
Mn | 補助リレー | セット | - | n=0~9 |
n を省略すると 0 を指定したとみなされます。
真のとき出力をリセット(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以外のとき、真となる
計測値をあらわす記号を指定します。
|
|
|
n を省略すると 0 を指定したとみなされます。
1 は毎回出力したいときに使います。
A99 は計測サイクル(Interval)にのみ出力したいときに使います。
比較記号を指定します。
式 | == | != | < | <= | > | >= | % | !% | & | !& |
---|---|---|---|---|---|---|---|---|---|---|
備考 | 一致 | 非一致 | 未満 | 以下 | 超 | 以上 | 商が0以外 | 商が0 | ANDして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