«前の日(04-25) 最新 次の日(04-27)» 追記

一往確認日記


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)

前回はタイマーの置き換えで詰まってしまいました。

シリンダーセンサー

Image from Gyazo

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?

いきなり暗礁に乗り上げてしまいました。