一往確認日記 |
2016年04月26日
_ Escalator のオペランドを検討(1)
ニーモニックとデータ型が決まったので、オペランドを考えてみます。 といっても、基本的なものしかないので2種類でいいはずです。
オペランドを取らないもの
NOP, INV, MEP, ANB, MEF, ORB, FEND, END, MC, MCR, MPS, MPD, MPP
記述
ニーモニック |
例) NOP
コード
8bit |
---|
ニーモニック |
例) 00H
オペランドを1つとるもの
LD, LDI, LDP, LDPI, LDF, LDFI, AND, ANI, ANDP, ANPI, ANDF, ANFI, OR, ORI, ORP, ORPI, ORF, ORFI, OUT, OUTI, SET, RST, PLS< PLF, FF
記述
ニーモニック | デバイス |
例) LD X0
コード
8bit | 8bit | 16bit |
---|---|---|
ニーモニック | データ型 | デバイス番号 |
例) 01H 81H 00H 00H
2種類でいいはずです。と思ったらシフトもあったので3種類でしたので次回に検討します。
2019年04月26日
_ Timerの置き換えからRubyらしい考え方 - PLCのRuby言語コントロールユニット(3)
前回はタイマーの置き換えで詰まってしまいました。
シリンダーセンサー
Timerクラスを作ってブロックを使ってこんな感じでしようか? やっぱりラダーの方が簡単ですね。
t6 = Timer.new(5)
m4 = x4 && !x5
m5 = x5 && !x4
if (x4 && x5) || (!x4 && !x5)
t6.start_if_not_started{|canceled|
m6 = true unless canceled
}
else
t6.cancel
m6 = false
end
タイマーの仕様を変えてちょっとスッキリした様なしない様な…
t6 = Timer.new(5)
m4 = x4 && !x5
m5 = x5 && !x4
t6 = (x4 && x5) || (!x4 && !x5)
m6 = t6.fired?
いきなり暗礁に乗り上げてしまいました。