シーケンス制御講座
楽しく情報交換しましょう。分からない事は質問して、分かる方は答えてあげてください。ただし営利目的な書き込みは予告無く削除いたします。
メニューが表示されない場合 - take
2018/04/10 (Tue) 15:38:52
管理人です。サイト内の文字コードを一括変更したため、メニューが表示されない場合があります。もし表示されない場合はお手数ですがブラウザのキャッシュをクリアしてください。
FIFO - Qユニバーサル
2018/02/15 (Thu) 07:55:31
FIFO命令を使わないでやる方法を
教えて下さい。
Re: FIFO - 圓空 URL
2018/02/18 (Sun) 18:04:25
Q様
ポインターを使うと出来るかな??
そのポインターでデバイスをインデックス修飾しましょう。
書込みポインターだけ使って、データシフトするもよし。
読出しポインターも使って、そのアドレスから直に読み出すもよし。
http://yenqoo.com/spices/basic/ringbuff/ringbuff.html
を参考にしてみて下さい。
Home Page は
http://yenqoo.com/spices/
です。他も何かの役に立つかな。。。
技能検定 シーケンス制御作業 - GA
2017/12/17 (Sun) 16:27:43
シーケンス制御作業に特化した書籍はまだどの出版社からもでてないのですが、管理人様は執筆予定はないでしょうか?
Re: 技能検定 シーケンス制御作業 - take
2017/12/21 (Thu) 08:52:46
管理人です。トップページでも紹介していますが、
「図解入門よくわかる最新シーケンス制御と回路図の基本」がお勧めです。
内容は難しいことまでは書いていません。著者がこんなことを言うのも変ですが、一定のところまで理解すると使用機器メーカーのマニュアルを見たほうが早いです。マニュアルのほうが、その機器に対して使い方や機能が専用に詳細まで乗っているからです。ただしマニュアルを読むことはある程度のレベルが必要となるかもしれません。(結構難しく書いていることが多い)
※よかったら私の本も読んでみてください。
Re: 技能検定 シーケンス制御作業 - GA
2017/12/29 (Fri) 09:09:32
ありがとうございます。早速注文しました。基本からしっかり勉強しなおします。
コミュニケーションユニット - nao
2017/10/18 (Wed) 23:37:22
三菱QタイプのシーケンサでコミュニケーションユニットQJ71C24NというのがありましてこちらからRS232Cで送信してパソコンのEXCEL VBAで受信するときにデータがASCIIコードとなっています。
QJ71C24Nが16ビットデータで送信しているのでEXCEL側でASCIIデータを10進数にしたいのですがうまくいきません。(8ビットならうまくいきます。)
EXCELの計算式を教えてもらえないでしょうか?
もしくはQJ71C24Nからの送信データをバイナリデータか10進数データで送信する仕様とかはないでしょうか?
Re: コミュニケーションユニット - take
2017/10/24 (Tue) 11:53:23
EXCELやVBAについては詳しくないので参考にならないかもしれませんが、まず受信はmscomなどのコントロールを使っていますか?
たしか受信したデータの型は文字列等の数値ではなかったと思うので、数値部分を抜き取って整数型に変換してみてはいかがでしょうか?
VBなどの言語は、ラダーとは違い変数の型などがありますので、たとえばCIntやCLng等で受信後にバッファから読み出した後変換してみてください。
もしくは8ビットならうまくいくのであれば、あらかじめラダー上でWTOBなどの命令で分離して送信してみてはいかがでしょうか?やりとりするデータがどのようなものか分からないのでなんともいえませんが、参考になればと思います。
Re: コミュニケーションユニット - nao
2017/10/25 (Wed) 23:50:07
ご回答ありがとうございます。
受信に使っているのはeasycommをダウンロードしてやっています。QJ71C24Nのほうは無手順で10進数のデータを送って送信データの最後に16進数で0A0Dを付けています。ちなみにMX COMPONENTは使用していません。
EXCEL上にASCIIコードでデータは上がってくるのですがそのデータを10進数に直すようなCODE関数を使ったりすると思うような数値になるときとならない数値がありうまく来ません。
現在はラダー上で強制的にBINDAという命令を使い10進数をASCIIに変換してEXCEL上に受信するようにしています。そうすると、うまくいくようになりました。
■ 状態遷移制御で困っている方へ - 圓空 URL
2017/08/07 (Mon) 10:10:46
俗言うところの「ステップ制御」(状態遷移)を
デバイスの資産を無駄にせず
条件分岐もスマートで
現在状態のアドレスも確認しやすいサンプルを掲載しています。
サンプルには「SPI」のシリアル転送ルーチンもあります。
http://yenqoo.com/spices/
左メニューの『基本編 フロー』の
2 .次 工程移行アドレス式
を参照ください。
ラダーについて - king
2017/06/30 (Fri) 17:47:45
過去は三菱ばかりでしたが
現在在籍の会社はOMRONがほとんどです。
基本的なところは同じですが
OMRON VERSIONも載せていただけると幸いです。
オルタネイト動作について - 畳
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のプログラムにつきましては違うサイトにて調べてみます。