[掲示板へもどる]
一括表示

[No.541] やりたい制御のご質問です 投稿者:まくら  投稿日:2012/09/22(Sat) 19:39
[関連記事

はじめまして、まくらです。
PLCのラダープログラムについてはビギナーになります。
PLCのラダープログラムにて、もぐら叩き(のような物)を作ろうとしているのですが、
なかなかうまくいきません。完全に手詰まり状態に陥ってしまいました。
どのような命令を使って、どのように組めばうまく動作するのか
ご教授お願い致します。


・使用機器
PLC     :KV-40DR (キーエンス)
治具(自作物):モーメンタリ型のライトスイッチ5個実装

・仕様(主な動作)
5個のスイッチをそれぞれsw1,sw2,sw3,sw4,sw5する(以後S1,S2,S3,S4,S5)

1.S5を1.5秒間押すと電源on
動作中にS5を1.5秒間押すと電源off

2.電源が入ると
  S1→S2→S3→S4→S5→S4→S3→S2→S1→S2→……以後繰り返し
  の順番でライトスイッチのLEDが1秒間ずつ点滅

3.点滅時(点灯時の1秒間の間)にライトスイッチのスイッチを押すと
  そのスイッチは常時点灯になり、以後は点滅しない
  (点灯時以外にスイッチをおしても反応しない)
  また、常時点灯状態のスイッチをもう一度押すと解除され元の点滅の状態
  に戻る。(どのタイミングで押しても解除される)

ex.1 『S3点灯時にS3のスイッチを押す』
    点滅順→S1→S2→S4→S5→S4→S2→……以後繰り返し
     『上記状態でS2点灯時にS2のスイッチを押す』
     点滅順→S1→S4→S5→S4→S1→……以後繰り返し
     『上記状態でS2,S3のスイッチを押す』
点滅順→S1→S2→S3→S4→S5→S4→……以後繰り返し
    
 尚、常時点灯状態のスイッチは内部的には1秒間ずつ点滅している状態にしたい。
  S2,S3,S4が常時点灯状態だった場合、S1,S5は4秒ごとに点滅するような
 プログラムにしたい。(もぐら叩きのような動作にしたいため)

ex.2 S1→(S2)→(S3)→(S4)→S5
     1秒 1秒 1秒 1秒 1秒 


現状では、1.2.の工程は組むことができたのですが、3.の部分が組むことができなくて
困っています。
3.の動作のプログラムを組み込もうとすると、うまく動作しなくなってしまいます。

1.2.の工程のプログラムは、自己保持とDM(データメモリ)を使い、INC(インクリメント)と
CMP(コンペア)を使って組んでいます。

また、条件として『SET/RES』命令は使わないでプログラムを組みたいということです。
(プログラムがわかりにくくなってしまうため)

以上になりますが、この命令を使えばうまく行くよみたいな
アドバイスでも構いません。
よろしくお願い致します。



[No.542] Re: やりたい制御のご質問です 投稿者:管理人  投稿日:2012/09/22(Sat) 22:48
[関連記事

> はじめまして、まくらです。
まくらさん はじめまして
HP引っ越ししてから初の技術相談です。
学校の課題っぽい感じですね。さて・・・はりきって作ってみましょう。

 R4
-||-------------------------------------------<T0 #15>-電源入切タイマ
 T0
-||---------------------------------------<DIFU R1000>-電源入切タイマPLS
R1000 R1001
-||----|/|--+----------------------------------(R1001)-電源入
R1001 R1000 |
-||----|/|--+

R1001  T5
-||----|/|------------------------------------<T5 #10>-電源入後1秒ON時間
R1001  T5
-||----||-----------------------------------<@INC DM0>-電源入後1秒ごとカウンタ ※@INCは↑INC

R2002  DM0   #7   R2011   #0    DM0
-||---<LDA>-<CMP>---||---<LDA>-<STA>-------------------電源入後1秒ごとカウントが8以上になったら0クリアする
R2002  DM0   #0   R1900
-||---<LDA>-<MPX>-<STA>--------------------------------電源入後1秒ごとカウントをR1900〜のビットに展開
R1001  #0    DM0
-|/|---<LDA>+<STA>-------------------------------------電源切時DM0を0クリアR1900〜R1915のビットに展開 ※使うのはR1900〜R1907まで
           |R1900
           +<STA>--------------------------------------電源切時R1900〜R1915をクリアする

 R0
-||---------------------------------------<DIFU R1100>-スイッチ1PLS
 R1
-||---------------------------------------<DIFU R1101>-スイッチ2PLS
 R2
-||---------------------------------------<DIFU R1102>-スイッチ3PLS
 R3
-||---------------------------------------<DIFU R1103>-スイッチ4PLS
 R4
-||---------------------------------------<DIFU R1104>-スイッチ5PLS

R1100 R1900
-||----||---+----------------------------------(R1200)-ランプ1保持記憶
R1200 R1100 |
-||----|/|--+

R1101 R1901
-||-+--||---+----------------------------------(R1201)-ランプ2保持記憶
    | R1907 |
    +--||---+
R1201 R1101 |
-||----|/|--+

R1102 R1902
-||-+--||---+----------------------------------(R1202)-ランプ3保持記憶
    | R1906 |
    +--||---+
R1202 R1102 |
-||----|/|--+

R1103 R1903
-||-+--||---+----------------------------------(R1203)-ランプ4保持記憶
    | R1905 |
    +--||---+
R1203 R1103 |
-||----|/|--+

R1104 R1904
-||----||---+----------------------------------(R1204)-ランプ5保持記憶
R1204 R1104 |
-||----|/|--+

R1900
-||---+-----------------------------------------(R500)-ランプ1
R1200 |
-||---+

R1901
-||---+-----------------------------------------(R501)-ランプ2
R1907 |
-||---+
R1201 |
-||---+

R1902
-||---+-----------------------------------------(R502)-ランプ3
R1906 |
-||---+
R1202 |
-||---+

R1903
-||---+-----------------------------------------(R503)-ランプ4
R1905 |
-||---+
R1203 |
-||---+

R1904
-||---+-----------------------------------------(R504)-ランプ5
R1204 |
-||---+

-------------------------------------------------<END>-
------------------------------------------------<ENDH>-

コメント
R000 スイッチ1
R001 スイッチ2
R002 スイッチ3
R003 スイッチ4
R004 スイッチ5

R1900 カウント0
R1901 カウント1
R1902 カウント2
R1903 カウント3
R1904 カウント4
R1905 カウント5
R1906 カウント6
R1907 カウント7

ランプ1→2→3→4→5→4→3→2→1 とカウントも折り返すのが普通ですが加算、減算と処理するのも面倒なので
カウント0→1→2→3→4→5→6→7→0 と加算だけで代用しました。
※数が増えれば加算、減算の処理をしたほうが楽だと思います。

KV-40DRだと便利な命令が使えなくて残念。もうすぐ10月にKVNanoが出たら上位機種と同じ命令が使えるので便利になるのですが・・・。

シミュレータで動作確認してみましたがこんな感じの動作でいいんですよね???

KV-STUDIOからテキストに直しているので記載ミスでおかしいところがあったら言って下さい。


[No.543] Re: やりたい制御のご質問です 投稿者:まくら  投稿日:2012/09/24(Mon) 22:49
[関連記事

ご報告遅くなりました。
まくらです。

この度は早々に返信していただきありがとうございます。
とても参考になりました。


> 学校の課題っぽい感じですね。さて・・・はりきって作ってみましょう。

PLCを時間の合間に弄っているのですが、弄り出して約2ヶ月なところですね。
まだまだ勉強不足です。
口答でこんな感じの制御作ってみてと、課題を出されマニュアルとラダープログラムを
にらめっこな状態です。


> シミュレータで動作確認してみましたがこんな感じの動作でいいんですよね???
>
> KV-STUDIOからテキストに直しているので記載ミスでおかしいところがあったら言って下さい。

結論から言いますと、イメージ通りの制御ができました。
ありがとうございます。

ただ、ちゃんと動かなかった部分があったので、2箇所ほど修正をさせていただきました。(下記[]の部分)



               〜略〜

> R2002 DM0 #7 R2011 #0 DM0
> -||---<LDA>-<CMP>---||---<LDA>-<STA>-------------------電源入後1秒ごとカウントが8以上になったら0クリアする
> R2002 DM0 #0 [R1001] R1900
> -||---<LDA>-<MPX>---||---<STA>--------------------------------電源入後1秒ごとカウントをR1900〜のビットに展開
>[R1000] #0 DM0
> -||---<LDA>+<STA>--------------------------------------電源切時DM0を0クリアR1900〜R1915のビットに展開 ※使うのはR1900〜R1907まで
> |R1900
> +<STA>--------------------------------------電源切時R1900〜R1915をクリアする
>
                              R1900
※原因が最後までがわからなかったのですが、電源offにすると、<STA> に 1 が格納されてしまう
状態であったのでMPXとSTAの間に接点を一つ入れさせてもらいました。



今ではまた違う課題を出されて色々考えてるところです。
内容は今回の回路を全部自己保持でやること + 押したスイッチは飛ばして点滅させるという内容です。
タイマーも要所で使いますけどね。

今後も困った状態に陥ったときは利用させていただきます。
どうもありがとうございました。


[No.544] Re: やりたい制御のご質問です 投稿者:管理人  投稿日:2012/09/24(Mon) 23:04
[関連記事

う〜〜〜ん・・・ゲッ!?写し間違えていました。
R1001のa接点ではなくb接点に替えて下さい。
ここだけの修正で済むと思いますのでやってみて下さい。
※元も直しておきます。

R1001  #0    DM0
-|/|---<LDA>+<STA>-------------------------------------電源切時DM0を0クリアR1900〜R1915のビットに展開 ※使うのはR1900〜R1907まで
           |R1900
           +<STA>--------------------------------------電源切時R1900〜R1915をクリアする

>口答でこんな感じの制御作ってみてと、課題を出されマニュアルとラダープログラムをにらめっこな状態です。

会社からの課題でしたか・・・。
今回の課題でのポイントは1→2→3→4→5→4→3→2→1がカウントを加算、減算しなくても加算のみで代用可能ということ。
結果は1つでも方法はいろいろある・・・という見本です。
純粋にカウントを加算、減算させるのも方法の1つですし、今回のように加算のみっていうのもアリ。


[No.545] Re: やりたい制御のご質問です 投稿者:まくら  投稿日:2012/09/26(Wed) 23:13
[関連記事

こんばんわ、まくらです。
さっそく変更して動かしてみました。

>R1001のa接点ではなくb接点に替えて下さい。
>ここだけの修正で済むと思いますのでやってみて下さい。
>※元も直しておきます。

なるほど、R1001はb接点だったのですね。
よりスマートになりました。
動作のほうも問題なく動きました。

>今回の課題でのポイントは1→2→3→4→5→4→3→2→1がカウントを加算、減算しなくても加算のみで代用可能ということ。
>結果は1つでも方法はいろいろある・・・という見本です。
>純粋にカウントを加算、減算させるのも方法の1つですし、今回のように加算のみっていうのもアリ

そうですね、とても見やすくわかり易い見本でした。
今は仕事の合間に覚えていっているのですが
色んな制御のラダーみたりしてラダーのノウハウを覚えていきたいと思っています。


[No.546] Re: やりたい制御のご質問です 投稿者:管理人  投稿日:2012/09/28(Fri) 22:47
[関連記事

> そうですね、とても見やすくわかり易い見本でした。
> 今は仕事の合間に覚えていっているのですが
> 色んな制御のラダーみたりしてラダーのノウハウを覚えていきたいと思っています。

最近のPLCは命令が増えて昔に比べソフトを組むのに便利になってきています。
ただ、その便利に慣れてしまうと古いPLCなど命令が無い時に苦労します。
「温故知新」
上司の方もそういう意味での課題だったんでしょうね・・・。
いきなり便利命令使ってたから上司の方も「予想外」だったと思います。
なので「自己保持回路だけで・・・」という事になったんでしょうね。

便利な命令が無かった時代・・・のやり方を見てみると勉強になりますよ。

例えば・・・
・かけ算 10*4= 計算方法:10を4回足し算する
・割り算 10÷2= 計算方法:10から2を引き算し引けなくなるまでの数

今では絶対に使わないようなやり方ですが「知恵」として覚えておくと応用が利きます。

おまけ・・・
・かけ算 10*4= 計算方法:DMにK10を入れ2回左にビットシフトをする
・割り算 10÷2= 計算方法:DMにK10を入れ1回右にビットシフトをする

偶数ならこういうやり方もあります。