シーケンス制御講座

117658

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

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

コミュニケーションユニット - 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/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

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


Copyright © 1999- FC2, inc All Rights Reserved.