シーケンス制御講座

108161

シーケンス制御講座
楽しく情報交換しましょう。分からない事は質問して、分かる方は答えてあげてください。ただし営利目的な書き込みは予告無く削除いたします。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

無題

2017/06/10 (Sat) 18:41:10

大変ありがとうございました。
本当に助かりました。
これですっきりしました。

スッキリ - 圓空

2017/06/19 (Mon) 20:39:14

スッキリされて良かったです。

あ。こんなサイトもあります。
http://yenqoo.com/spices/

オルタネイト動作について

2017/06/09 (Fri) 21:32:16

初めまして、畳と申します。

現在、とある訓練校で三菱電機のPLCの勉強をしています。
そして本日オルタネイト動作についての説明がありました。
当HPの「シーケンス制御講座 中級編 オルタネイト動作」
のst3_49.jpgに近い形で、

# X0:押しボタン
# Y10:ランプ


X0
----| |--------------[PLS M0]
M0 Y10
----| |--| / |-------(Y10)
M0 Y10 |
----| / |--| |---



上の図となっていました。
この図を見てふと気になり、次のようなプログラムをしました。


X0 Y10
----| |--| / |-------(Y10)
X0 Y10 |
----| / |--| |---


このプログラムでも最初のプログラムでも一応オルタネイトします。

ただし下の方のプログラムは不安定で X0 ボタンを長押ししたり
しないと、Y0 ランプは点くこともあり、点かないこともありと
いった状態でした。

その意味で言えば確かに「PLS M0」の価値はあるのですが、この
「M0」を入れなければならない理由がわかりません。

そして下の方のプログラムが不安定なのでプログラム的に良くない
のもわかるのですが、不安定な理由がわからないため何か納得
いきません。

どなたか上記の理由を説明できる方がいらっしゃれば解説願いたい
と思います。

以上よろしくお願いいたします。

Re: オルタネイト動作について - 圓空

2017/06/10 (Sat) 00:37:32

畳さま

オルタネイトと言う名称ですが
ロジックの世界の名称ではありません。
「トグルフリップフロップ」と言います。

ハード(リレー)で組むと、リレーが2個必要です。
で。PLCで組んだら3個ですなぁ。

1つは微分用。もう一つは微分出力用
3つ目はロジック用です。


さて、ご質問ですが。
ふと思った方のロジックはただ発振しているだけの事です。
確率1/2のたまたまです。


訓練校での説明の中に
「排他的論理和」と言うのは無かったですか?
「ハエたたき」ではありません。「排他的」です
「エクスクルーシブオワ(XOR)」と聞いてるかも知れません。

( A * /B ) + ( /A * B )
がそれです。
階段の上下に電燈のスイッチが有って
上/下、どちらからでも電燈のON-OFFができる・・・
あれです。


さて。XORでトグル動作を実現させた時の事を調べてみますと。

あ。その前におさらい。

XORの真理表

Q=A XOR B
の時

A=0/B=0 ⇒ Q=0
A=0/B=1 ⇒ Q=1
A=1/B=0 ⇒ Q=1
A=1/B=1 ⇒ Q=0

です

では本題。

上の「A」を1スキャンだけTrueになる変数とします。
上の「B」を XOR の出力Qのフィードバックとします。


■では初期状態
A=0 B=0 ⇒ Q=0

■A=1(1スキャン)の時
A=1 B=0 ⇒ Q=1

■A=0 になっちゃった時(次のスキャン)
A=0 Q=1 だったのでB=1
よって、Q=1 でラッチ。

■2回目のA=1(1スキャン)の時
A=1 B=1 なのでQ=0

■2回目のA=0 の時
A=0 B=0 でQ=0

これを繰り返しているだけです。


訓練校だけでなく、ロジックの書籍を読む事を
お勧めします。

簡単な本なら「制御基礎講座 (2) プログラム学習による無接点シーケンス制御」
https://www.amazon.co.jp/%E5%88%B6%E5%BE%A1%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7-2-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E5%AD%A6%E7%BF%92%E3%81%AB%E3%82%88%E3%82%8B%E7%84%A1%E6%8E%A5%E7%82%B9%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E5%88%B6%E5%BE%A1-%E6%9D%BE%E4%B8%8B%E9%9B%BB%E5%99%A8%E7%94%A3%E6%A5%AD%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E8%A3%BD%E9%80%A0%E3%83%BB%E6%8A%80%E8%A1%93%E7%A0%94%E4%BF%AE%E6%89%80/dp/4331150577
がよろしいかと・・・









追記 - 圓空

2017/06/10 (Sat) 00:54:32

微分命令 「PLS M0」ですが

以下のレシピで実現しています。

M0 = /Buffer * X0
Buffer = X0

なぜM0が1スキャンだけTrueになるか分りますか?

Re: オルタネイト動作について

2017/06/10 (Sat) 12:14:27

素早い回答ありがとうございます。

訓練校ではなぜかXORは習いませんでしたが、不一致回路で
あることは知っています。

解説読ませていただきました。
不理解があるかもしれませんが次のように理解しました。

ふと思ったロジックの方は X0 ボタンを押し続けている間は
(ただしボタンを連打ではなく単発で押し続けている間のこと)
スキャンのたびに Y0=0または1を繰り返している。
よって最終的な Y0 の結果は不定(これを「発振」とおっしゃ
っているのかな?)

しかし、M0が入っている回路の方は X0 ボタンを押し続けても
「PLS M0」により、最初の1スキャン以降は、その後何スキャン
経っても M0 の値は0から変化することがないため Y0 の値は
0か1に固定される。

言葉足らずで申し訳ありませんが、こういうことでしょうか。

Re: オルタネイト動作について - 圓空

2017/06/10 (Sat) 14:25:04

その通りでございます。

たずねびと 圓空

2017/06/06 (Tue) 01:47:02

seg様

一度お便り下さいませ。

temp@yenqoo.xsrv.jp
圓空

Re: たずねびと - たずねられびと

2017/06/09 (Fri) 13:44:32

社内メールは使えないので、やほおの方から送っておきました、迷惑メールもチェックください

たずねてしまったひと - 圓空

2017/06/09 (Fri) 21:00:21

今。お返事いたしました。
ご確認くださいませ。

壺買えとか。金買えではありませんので
ご安心ください。

スーパーテクニック - nao

2017/05/31 (Wed) 00:59:03

このサイトのスーパーテクニックのパソコンと通信をするという箇所にVBAの記述があるのですがこのプログラムの内容が知りたいです。理論的に説明できますでしょうか?

Re: スーパーテクニック - take

2017/06/05 (Mon) 17:08:43

このプログラムはMX Componentで用意されている命令をそのまま書いているだけですが、どのあたりの内容が知りたいでしょうか?VBはあまり使うことがなく専門外なので明確な回答ができるか分かりませんが。

Re: スーパーテクニック - nao

2017/06/06 (Tue) 07:59:11

わからない場所をピックアップしました。
VBAにはない記載内容だと思います。
こういった命令がシーケンサとどうやってリンクしているのかが知りたいところです。

Me.ActQJ71C241.ActCpuType = CPU_Q02UCPU
Me.ActQJ71C241.ActPortNumber = PORT_1
lRet = Me.ActQJ71C241.Open 'Openメソッドを実行する

szDeviceList = "ZR0" '書込み先頭デバイス
lSize = 12000 '書き込みデバイス数
ReDim lData(lSize)
lRet=Me.ActQJ71C241.WriteDeviceBlock(szDeviceList,lSize,lData(0))

lRet = Me.ActQJ71C241.Close 'Closeメソッドを実行する

Re: スーパーテクニック - take

2017/06/06 (Tue) 09:27:50

VBやVBAの初期状態ではこのような記述はできません。これはMX Componentを別途インストールして使える命令です。イラストにも載せていますが、フォーム上に「C24」というシーケンサーのマークが出ていると思います。コントロールやコンポーネントなどと呼ばれていますが、命令はこのコントロールに対してパラメータなどを設定して、実行しています。この命令から先の処理はMX Componentが勝手に行ってくれるため、深く考える必要はありません。PLC内のデバイス値を直接書換えますので、PLC側は何もする必要はありません。
ただVBとVBAではオブジェクトの指定方法に若干の違いがあったかも知れません。
一応説明すると、ActQJ71C241というコントロールをフォーム上に配置しています。
Me.ActQJ71C241.ActCpuTypeですが、Meと書いていますが、これは場所です。フォーム名でもかまいません。このあたりの指定方法がVBAとVBでは若干違うかもしれません。
ActQJ71C241に対して、接続先のCPUと接続する232Cのポート番号を設定します。
次にオープンメソッドを実行していますが、実行後にlRETという変数に戻り値が返ってきます。接続に成功したかどうかです。変数はあらかじめ宣言しておいてください。
オープン状態であればWriteDeviceBlock等の書き込みメソッドが使用できます。
ReDimは変数の再宣言です。lDataは配列として宣言していますが、配列数が変更できるようにしています。固定であれば最初の宣言時にDim lData(12000)でいいと思います。
ざっと説明するとこんな感じになりますが、じゃあこの命令がどのような方法でPLCと接続されているかというのは分かりません。
また、VBなどの上級者になればMX Componentのようなものをプロジェクトの中に自分で作成して接続する方もいます。そうすればMX Componentを購入する必要もなく、ライセンスの問題も気にする必要がありません。私は分かりませんが、このようなこともできるという意味です。

Re: スーパーテクニック - nao

2017/06/07 (Wed) 20:13:53

回答ありがとうございます。
MX Componentを使えば簡単にできるということですね!
MX Componentについては個別に調べてみました。C24のコミュニケーションユニットやE71のイーサネットユニットLAN機能のあるCPUユニットなどで手軽にできるみたいですね!

こういったVBのプログラムにつきましては違うサイトにて調べてみます。

MELSEC Aシリーズの命令について - よつびし

2017/03/02 (Thu) 18:25:35

今回2点の命令について教えていただきたいです。

1点目
MOV A0 D100という命令がありました。
このAというデバイスはありえうるものなのでしょうか?

2点目
SUM D10という命令です。
SUM k4x10 D10といった命令なら理解できるのですが、
あくまで「SUM D10」の命令で動作しているものがありました。

これらの命令について解説を頂けたらと思います。
どうかよろしくお願いします。

一括リセット命令について - めるせっく

2016/12/31 (Sat) 15:43:07

FX3Gシリーズでは ZRST M0 M1などと記述しますが、
MELSEC Lシリーズではそれだと命令として受け付けてくれません。三菱のマニュアルをPDFで見たのですが、一括リセットがみあたりませんでした。2つの補助リレーを1つの記述でリセットする命令をおしえてください。よろしくお願いいたします。

Re: 一括リセット命令について - あ

2017/01/05 (Thu) 07:23:37

BKRST M0 K2でどうですか?
取説の応用命令/ビット処理命令記載です。

Re: 一括リセット命令について - めるせっく

2017/01/06 (Fri) 19:49:45

あ様、回答ありがとうございました。

命令の記号の意味 - りょう

2016/12/28 (Wed) 20:08:05

ラダー図にある命令の意味について、
例えば[<> R2018 K1]
の<>の意味など、
何か一覧表のようなものがあると助かります。

一覧表のあるURLの場所等、ご存じの方がいれば教えて下さい。

Re: 命令の記号の意味 - 圓空

2016/12/29 (Thu) 17:01:00

cならここ

http://www.c-lang.org/operator.html

PL c なら命令語の本にないですか?

Re: 命令の記号の意味 - りょう

2016/12/30 (Fri) 17:07:44

ありがとうございます。

命令語の本にはどんなものがありますか?
島津のPLCにも対応しているものが欲しいです。
出来れば、フローチャートの記号の意味も網羅していると嬉しいです。

あるいは、メーカーに直接問い合わせて資料を貰うのが手っ取り早いですか?

Re: 命令の記号の意味 - 圓空

2016/12/31 (Sat) 00:57:25

命令語のリファレンスマニュアルは
PLCメーカで貰えますよ。
(金取るところのありますが)
Siteからもダウンロードできるのでは?

フローチャートは、言語とは次元が違うものですからねぇ。
PLCのマニュアルで解説してるものは、少ないのではないでしょうか。。。

ネット検索するか、「CQ出版」や「技術評論社」の書籍を探してみたらどうでしょう。


島津のPLCは見た事ないです。

Re: 命令の記号の意味 - りょう

2016/12/31 (Sat) 22:30:36

かしこまりました!
探してみます。
有意義なご回答、ありがとうございました。

シュミレータの使い方 - イノ

2016/12/11 (Sun) 11:17:34

初めまして、イノと申します。
急遽、三菱のシーケンサ制御を行う必要があり、勉強を開始した所であります。

サイトのスーパーテクニックでもご説明があります、MX Componentを使用する際、シーケンサがない状態での作成となりますので、シュミレータを使用したいと思います。
GX Developer + GX Simulatorの体験版をインストールしてみましたが、使用方法がまったく分かりません。

マニュアルを読みましたが、素人には起動方法する分からない状態で困っております。

本当に丸投げみたいな質問で申し訳ありません。
お恥ずかしい限りです。よろしくお願いします。

Re: シュミレータの使い方 - seg

2016/12/14 (Wed) 11:05:12

起動はデスクトップにアイコンが出来てるはずなのでダブルクリックで実行してください。

その他のマニュアルで解らない所は、サポートで聞いてください
懇切丁寧に教えてくれますよ

http://www.mitsubishielectric.co.jp/fa/support/spec/index.html

Re: シュミレータの使い方 - イノ

2016/12/28 (Wed) 11:37:46

返信が遅くなり、申し訳ありません。
ご回答ありがとうございました。
サポートに電話連絡してみたのですが、繋がりませんでした。
お忙しいのでしょうね。
もう少し自力で頑張ってみます。
ありがとうございました。

位置決め制御 - アラム

2016/11/22 (Tue) 11:48:31

おはようございます。

私アラムと申します。
最近ラーダーを勉強初めてます。
これからキーエンスの位置決め制御(SVシーリズ、4軸)をやらなければならないですが何処から手をつければ良いのか分からない。ネットで参考になるものを探してましたが当てにならないです。とりあえずKVーMOTINOでの基本的な設定の仕方と運転などの参考できる資料あるいはウエブサイトご存知でしたら教えて頂けませんか?キーエンスのウエブサイトでe-ラニングを探してましたがありませんでした。

すみませんが爆戦とした質問で申し訳ないです。まぁ、位置決めの基本的な設定とラーダーを参考になるようなものがあれば宜しくお願いします。

Re: 位置決め制御 - 圓空

2016/11/23 (Wed) 02:23:19

Keyence Site には沢山資料ありますよ。
それと、電話1本で営業マンが飛んできます。

フリーダイアルに電話すると
最寄の営業所に繋がります。

その時
担当が不在なら、技術から。
または、追って連絡ありますから。


思う軸制御。出来たら。
サブプロシージャにまとめて下さい。
引数を介して制御できる汎用的なルーチンに仕上げて下さい。

Re: 位置決め制御 - seg

2016/11/24 (Thu) 17:06:03

横入りすみません。

気になったので質問させてください。

圓空さん、引数ってどのように渡されてますか?
私の場合、例えばM0~M3を引数にしてどれが立っているかで判断していますが
なんとなく不細工な気がします。

 引数ON ⇒ コール のような感じです

もっとスマートな方法があるのでしょうか?

ご教示ください。

Re: 位置決め制御 - 圓空

2016/11/24 (Thu) 18:51:16

seg さま


横やり。無理やり。思いやり?

マクロやファンクションブロックでないと
引数って綺麗に渡せませんよねぇ・・・
変数を羅列して渡せませんもんね。


サブルーチン呼び出す時は面倒ですが、仕方ないです。
私も引数の数が多い時はテンポラリメモリで渡します。
数値変数1個の場合はレジスタで渡す場合が多いです。
呼出す方はレジスタに読み込むだけですし、
続けてサブ側で演算する場合もコードが少なく済みます。



アドレス渡しはしませんねぇ・・・
あたいは値でわたします。

あたいのやり方はこんなもんですかねぇ。

Re: 位置決め制御 - seg

2016/11/25 (Fri) 13:12:31

圓空さんは、返信時に必ず1ボケくれるのですね笑

>数値変数1個の場合はレジスタで渡す場合が多いです。

ありがとうございます、勉強になりました!

初心者 hiro

2016/11/14 (Mon) 22:21:38

こんばんわ 
仕事である回路を作らなければ成らず勉強の為このサイトにたどり着きました。

光電センサーを使いセンサーの上を物が通過しその間の(センサーを遮っている)時間を測り 次に物が通過した時 最初の時と時間に差(±1秒位)があると警報を出す それを繰り返す様な回路を考えてます

このサイトに書いてある事の応用で出来そうですが、どこから手を付けていいのか・・・

まだまだ勉強中ですがヒントなど頂けないでしょうか?
こんな命令を使えば良いとか、このページ書いてあるとか?

シーケンサーは三菱のFXシリーズを考えてます

Re: 初心者 - 圓空

2016/11/15 (Tue) 10:07:09

PLCの説明書にサンプルプログラムは載ってませんでしたか?

精度が不要なら、掃引内プログラムで、
精度が要るならinterruptプログラムで記述したらええと思います。

どの部分をお悩みでしょうか?

Re: 初心者 hiro

2016/11/16 (Wed) 19:41:31

圓空さん Re:ありがとうございます

簡単なラダーなら見れるので簡単だろうと思い始めてみましたが良く分かりません どの部分でお悩みでしょうか?と聞かれて全然判らないことが分かりました こちらから質問していて何なんですが、もう少し基本を勉強して サンプルプログラムあたりから探してみます
その時また質問さていただきます ありがとうございました 

そんな複雑な動きじゃ無いので簡単だろうと思ったのですが大間違いでした 言うのは簡単なんですが(笑)

Re: 初心者 - 圓空

2016/11/17 (Thu) 00:34:50

まず。簡単に流れ図の様な物でも書いて、動作を整理してみてはどうでしょう。

とにかく、何をどうするかを整理する事です。
これはPLCプログラムに限らず、どの高級言語も同じですよ。

それと、良いアルゴリズムを考える事が重要です。
後はそのアルゴリズムやフローに沿ってコーディングして行くだけです。

Re: 初心者 - seg

2016/11/17 (Thu) 11:47:39

初心者に毛が生えた程度のスキルですが、私も最初どうしていいか
まったく解らなかったのでお役に立てれば幸いです。
(ちなみにこれは正解ではありませんので圓空さんが訂正してくれるかも笑)

基本構造:
*********************************************

;初期設定
|M8002|--------------()

;入力情報の取得(センサとか)
|X001|---------------(M001)
;センサ踏んだらタイマON
|M100|---------------(T001 K10)

;時間の計測や、時間超過したときの処理
|T001|--------("時間が1秒たったから警報ON")

*********************************************

頑張ってください^^

Re: 初心者 hiro

2016/11/17 (Thu) 19:45:54

segさん 圓空さん ありがとうございます

光電センサーONでタイマー作動、
センサーOFFで、タイマー切り
その時間を計測して、それを一時記憶①(3秒~10秒位)
次のセンサーONでタイマー作動、
センサーOFFで、タイマー切り
その時間を計測して、それを一時記憶②
①と②を比較して一定以上(±1秒位)あったら出力をだす
次もセンサーONでタイマー作動、
センサーOFFで、タイマー切り
その時間を計測して、それを一時記憶③
②と③を比較して一定以上(±1秒位)あったら出力をだす
これを ③と④、④と⑤ とくりかえす

2分以上センサがONされないとリセットされ最初に戻り、次センサーONで①から始まる


流れとしてはこんなかんじで出来ると思うのですが
ラーダーにするとなるとさっぱりです

Re: 初心者 - 圓空

2016/11/18 (Fri) 12:12:36

お~~~~~~hiroさん

フロー大正解!!
ここまで解ってるなら98%できたも当然じゃないですか

Re: 初心者 - 圓空

2016/11/18 (Fri) 20:27:19

Key**** PLCなら
詳しく教えてあげられるのになぁ・・・

Re: 初心者 - 圓空

2016/11/20 (Sun) 03:57:06

hiro様

若い衆の教育用サンプルにもなりますので、
取り敢えずサンプルコード書いてみました。


三菱は使い物にならないので、私は使っていません。
KeyenceのCodeで記述します。ま、参考にして下さい。

三菱を使うと大変なので使わない方が得策ですね。



■ 定数/変数説明

[定数]
・Threshold:アラーム判断の閾値(1000ms)
・INI:リセットされる時間(1200ds)
・RING:データを保存するバッファの最大値(FFhex)
(今回はとりあえず256個のメモリを確保)

[変数]
・■SENSE:センサ入力
・■ALARM:警報出力
・COUNT:計測値
・CLK:計測用1msClock
・FINI:計測終了Flag
・DM0000~DM0255:データ蓄積用リングバッファ


初期値はSubroutineに記述


■ 動作説明
[計測Routine]
①センサ検知の立上がりでカウンタとアラームをリセット
(実際のアラームリセット方法は考えて下さい)
②センサ検知中Clockをカウント
③センサOFFの立下りで計測値をメモリに書込み,終了Flagを発行
④比較動作完了後,ポインタをインクリメント

[シーケンスRoutine]
①初期計測1回待ち
②通常計測終了で今回書込まれたポインタから1回前のポインタを計算
③|今回値-前回値|>Threshold ならアラーム発行
※アラームのワークと次のワークを比較すると,
次のワークが正常な場合,またアラームが発行されるので,
初期に戻しています。
④INIで設定された時限を過ぎると,初期動作へ戻る


■ 今後自分でCodingする時のために…
・履歴は多いほど良い場合があるので256個以上が良い。
・何故リングバッファを使うのか、何故バッファ数は2のn乗なのか
考えてみて下さい。
・定数はCodeに直接記述せず、変数に代入し、その変数を
Codeの中で使いましょう。何故か考えて下さい。
・実際にはカウンタのオーバーフロー処理も必要です。

Re: 初心者 hiro

2016/11/20 (Sun) 20:53:10

おお 圓空さんありがとうございます

三菱ダメですか? 三菱のシーケンサなら古いのが有るので使えるかと思ったのですが Keyenceももしかしたらあるかも・・・

サンプルありがとうございます 見てもまだ良く分かりませんが一つずつ追って行って理解したいと思います

”若い衆の教育用”って事は教える立場にあるのですね

私は結構、歳行ってますが最近設備に配属されて、前からあったらいいなっと思っていた回路を作ろうと思ったのですがシーケンサわかる人が会社に居らず(シーケンサ一杯有るのに)此処にたどり着きました

 宿題もいくつか出てますし(笑)わからない所はまた教えてください 

Re: 初心者 - 圓空

2016/11/20 (Sun) 23:01:38

hiro様

今日は朝からキリがかかって、見通しが悪かったです。


あぁ。三菱ですか。。。
エディタが馬鹿げてるのと言語仕様が悪いですね。

Keyenceなら3分で出来るところ。
三菱なら3日かかります。(笑)

サンプルはビルディングタイプの言語仕様で記述してますが
パッケージタイプでも同様な動作は可能です。


かの、太陽電池を作っている会社も
「キーエンス使ったら、他のメーカー使えませんよねぇ」と言ってはりました。
その工場は、設備制御を全てキーエンスにしています。

ま。でも。コーディングのやりかた次第なのですね。
うちが以前納品した装置のコードを見ましたが。
…悲しかったです。


Copyright © 1999- FC2, inc All Rights Reserved.