ソフトウェアの最近のブログ記事

以前(というかだいぶ前なんだけど),,スキャナが出来た!・・・かもしれないというエントリーを書いた。

んで,出来たと思ってパーサ書いてたら,今更ながらスキャナにバグがあることが判明したorz

コンパイラ入門のP.138に載ってるテストプログラム22がどうしても通らず,いろいろ調べてたらJとENDがくっついて1個のトークンになってIDENTで認識されてる。

エッ(゚Д゚≡゚Д゚)マヂ?

もういっそのこと,END前の行末にもセミコロン付ける仕様にして,パーサで上手く回してしまおうか。ん〜・・・。

ラダーを書いてて躓いた点。気を付けなくちゃだな。

以下適当にまとめておく。


前提条件

  • 例えば出力Y10がランプ点灯用接点だとして,そのランプを点灯させる条件が複数あったとする。
  • 条件1:スイッチX00を押している時 → ランプY10点灯
  • 条件2:スイッチX01を押している時 → ランプY10点灯


二重コイルで書いちゃった場合

  • んで,下記のように書くと期待通りの動きにならない。(具体的には,スイッチX00が効かないはず。)
  • これを世間一般では二重コイルと呼ぶらしいのです。
  • なんでこんなことになるかといういと,ラダープログラムの場合最終行のEND命令で一括処理されるから。
  • つまり上記ラダーで言うと,X00の条件は無くなっちゃう。

  |
  |  X00
  |-----| |------------------------------(Y10)
  |
  |
     ・
     ・
     ・
  |
  |  X01
  |-----| |------------------------------(Y10)
  |
  |


二重コイル回避方法1:並列接続を使用する

  • 単純にX00とX01を並列接続する。条件が少ないとコレもあり。

  |
  |  X00
  |-----| |------------------------------(Y10)
  |      |
  |  X01 |
  |-----| |-----
  |
  |


二重コイル回避方法2:内部接点を使用する

  • もし条件が複雑な場合,内部接点を使用して出力部は下の方でまとめて書く。
  • 問題点:ラダー上で条件部分と出力部分がバラバラになっていくので,読みづらくなる!
  • まーそもそも,ラダーって可読性悪いんだけどねw

  |
  |  X00
  |-----| |------------------------------(M00)
  |
  |  X01
  |-----| |------------------------------(M01)
  |
     ・
     ・
     ・
  |
  |  M00
  |-----| |------------------------------(Y10)
  |      |
  |  M01 |
  |-----| |-----
  |
  |

プロフィール:ttl

  • ・勉強と運動が好きです。
  • ・カエルさんも好きです。
  • ・λはもっと好きです。
  • 購読する このブログを購読

最近のコメント

アーカイブ

このアーカイブについて

このページには、過去に書かれたブログ記事のうちソフトウェアカテゴリに属しているものが含まれています。

前のカテゴリはイベントです。

次のカテゴリはトライアスロンです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.27-ja