シーケンス制御講座

191836

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

レイアウトが崩れる場合は掲示板がSSLに対応していません。お手数ですがURLの"https"を"http"に変更してください。またはコチラから。

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

データレジスタの空白削除 - tt

2022/08/05 (Fri) 16:15:28

はじめまして!
シーケンサについて質問させてください。

アスキー文字データ20桁で、桁不足の場合は空白(H20)で埋められているデータデバイスがあり、別機器へ転送する際、空白により意図した文字列にならず削除する必要がでてきました。
偶数文字であればデータデバイスH2020と等しいか比較or検索し該当すればH0で書換えや削除命令でいいのかなと考えております。
問題は奇数文字の場合、上位桁にH20が入るため、それを削除したいのですがどのようにすればいいいかわからず苦戦しております。
なにかいい方法はないでしょうか?

Re: データレジスタの空白削除 - take

2022/08/06 (Sat) 11:53:24

少し発想を変えてみてはどうでしょうか?文字列処理では元の文字列からいらない部分を消すよりも、元の文字列から必要な部分を取出した方がいいです。
例えば今回の例ですと
①文字列サーチ命令でスペース(H20)を探す。
②見つかった位置が取得されます。(何番目にあるか)
③取得した値から-1して、その文字列を取出す。
例えば左から16文字目にH20を発見したら、左から15文字目までを取出し他のレジスタに転送。
これだけです。
たぶんこのような命令はあると思います。

ttさんのような方法で行うには、H2020をH0に書き換えて、最終文字列が入ったデバイスを何とか特定する。
その後そのデバイスにビットマスクをして1文字(8ビット)にして比較する。たぶんこのビットマスクの方法に苦労していると思います。
ビットマスクは論理積のWAND命令で行います。マニュアルにそのまま書いてあると思います。ビットマスクはプログラの業界ではよく使うので、覚えておいて損はないと思います。

Re: データレジスタの空白削除 - tt

2022/08/08 (Mon) 10:49:24

管理人様

アドバイスありがとうございます。
おっしゃる通りビットマスクの方法がわからず悩んでおりました。

方法としてはやはりそういう命令を使うほかないのですね。。
便利な命令等少し期待しておりました。地道に検索から処理する方法で対応してみます。

2022年寅年 - えんくう URL

2022/01/07 (Fri) 16:19:07

take様

新年明けましておめでとうございます。

さて、少々くだらん質問ですが。

たとえば
https://www.youtube.com/watch?v=dkWGaeJ2y0w
の6:17あたり

https://www.youtube.com/watch?v=jURdia_XOUI
の2:00あたり

https://www.youtube.com/watch?v=I_nPMAlhHy0
の0:44あたり


負荷をソースで駆動させていますね。
https://www.youtube.com/watch?v=jURdia_XOUI
の2:00あたりではロジックはソースでセンサ出力はシンクになっています。

リレーロジックをソース駆動で構成する理由(メリット)は何でしょう?
安全性の問題もありましょうが
盤内だけなら問題もなく、盤外でもかつて、それで誤動作をした機器は見た事がありません。

シンクドライブの場合、電源が違う機器でもそのままドライブできて便利です。
ちょっとした機器を作った時なんかは2SC1815等でオープンコレクタで出力しませんか?



*****************************************
■ できる男のPLC講座「PLCのスパイス」
お姉さまも大歓迎!
http://yenqoo.com/spices/
*****************************************

エクセルデータをシーケンサーに取り込む方法 - さく

2021/12/10 (Fri) 11:06:38

件名の事が出来るのか、ネットで探していたらこちらにたどり着きました。
https://plckouza.com/st5/st5_1.html
このページで、もしかしたら出来るのかな?と思った次第ですが可能でしょうか?

元データはエクセルで管理していて、
それをタッチパネルに手入力して
シーケンサーにデータを取り込んでいます。

この作業を不要にしたいとの事で、考えていました。
良ければご教示おねがいします。

Re: エクセルデータをシーケンサーに取り込む方法 - take

2021/12/10 (Fri) 21:24:24

可能です。可能なのですが、私は今VBなどのソフトをほとんど使用していないので思い出せないです。この記事を書いたころは使っていたのですが・・・。
必要なのはMX Componentという三菱のソフトです。なくても自力でコードを書けるようであれば必要ありませんが。このMX Componentは結構高額なので。
これをインストールするとVBAなどのコントロールとして使用できるようになるので、このコントロールをフォーム上に設置してコードを書いていく流れになります。今は.netだと思います。.netは使ったことがないためわかりません。
ただこのMX Componentを使えばRS232CでもUSBでもLANでもPLCと接続できます。
それとベーシックの知識が必要です。Excelの場合、VBA上である程度のコードが書けないといけません。上記のリンクに書かれているコードが最低限書けないと難しいかもしれません。
少し敷居が高いかもしれませんが、可能なことは可能なので頑張ってみてください。

Re: エクセルデータをシーケンサーに取り込む方法 - 重力

2021/12/13 (Mon) 09:56:20

例えばQ03UDVCPUだと、SDカード内のcsvファイルを取り込む機能があります。
差し込む操作はありますが、手入力よりは効率的だと思います。

32ビットデータ - nao

2021/12/02 (Thu) 05:02:05

CPUのデータレジスタで32ビットデータD0(上位D1、下位D)があります。
値を32ビット10進数表示で1234567という値があったときに32ビット10進数表示で12345になるようにしたいです。
データを2桁ほどデータシフトしたいのですがどうすればいいでしょうか?

Re: 32ビットデータ - take

2021/12/02 (Thu) 06:09:56

例えばですが、2桁なら100で割り算するという方法はどうでしょう?3桁なら1000。余りは無視するという感じで。

タイマー回路のKの値を変える tt

2021/10/12 (Tue) 14:14:05

既に作成してあるタイマー回路のKの値を変えると、「未変換回路」となってしまいます。秒数を変えているだけなのに、なぜエラーが起きるのですか?

Re: タイマー回路のKの値を変える - take

2021/10/13 (Wed) 16:48:03

Kの値というのは定数でプログラム(タイマーコイル)の一部になります。変更後は変換コンパイルしないといけません。値を自由に変更したいのであればKではなく「D」のようなデータレジスタを指定し、データレジスタの値をGOTなどから変更すれば変換無しで値のみ変更可能です。

Re: タイマー回路のKの値を変える えんくう URL

2021/10/17 (Sun) 15:37:01

関連事項で疑問が有ったので
この場を借りまして失礼します。

take様

「未変換回路」でお伺いします。


三菱マシンでデバイスや定数を確定しない(未変換回路)まま
コードのセーブができません。

プログラマ(何とかワークスでしたっけ?)の設定で、未確定のままセーブする事はできますか?

三菱マシンはめったに使いませんが、困っています。

Re: タイマー回路のKの値を変える - take

2021/10/18 (Mon) 05:07:27

三菱は回路未変換の状態では保存できないと思います。他社のソフトはオフライン編集時にはそもそも変換のような作業がなくそのまま回路を書いていけばいいかと思います。ただオンラインでデバッグするときは部分的に変更するため変換みたいな作業が必要ですが(キーエンスでいうと「F11」キーでしたかね?)三菱はオフラインでもこのような作業が必要になるイメージです。
まぁ特に未変換で残す必要もないので即変換すればいいかと思うのですが。
それと他社のソフトの場合、デバイスを入力しなくても命令を入力できたと思いますが、三菱はできません。デバイス番号も正確に入力しないといけません。命令の入力中にデバイス番号を忘れると、一度消して最初から打たないといけなかったりします。最近もの忘れが激しいので辛いです。

三菱PLCの演算に関して - yenqoo URL

2021/09/08 (Wed) 20:42:52

take様

毎度お世話になります。

https://www.youtube.com/watch?v=i7bTtyhQjYE
にて四則演算等々やっていますが。ここで質問が有ります。

三菱マシンにて
演算結果を代入する対象をレジスタ(アキュムレータ)にする命令はありますか?
また、これに関連して、アドレス空間(解説でデータレジスタと呼んでいるメモリ)
にある変数の内容をレジスタ(アキュムレータ)にロードや
レジスタの内容をアドレス空間のメモリへストアする命令はありますか?

三菱マシンは得意でないので、宜しくお願い致します。

Re: 三菱PLCの演算に関して - take

2021/09/13 (Mon) 21:01:29

アキュムレータというのはKEYENCEでLDAとかSTAとかで何かの変数みたいなところに一時的に値を入れたり出したりする命令?のことでしょうか?
すみません。KEYENCEはたまにしか使わないので操作方法も含めてあまり得意ではありません。
KEYENCEを使うとき、命令の前にLDAで値を代入?していましたが、三菱はそもそもそのような概念がないと思います。私のしる限りそのような命令はなかった気がしますし、使っているのを見たことがありません。
命令などは基本的には直接データレジスタなどを指定して実行するだけです。
KEYENCEでLDAを使うと、その後に計算などの命令を直列で書けるので便利ですよね。慣れれば便利ですが慣れていないと少し難しいですね。

Re: 三菱PLCの演算に関して - yenqoo URL

2021/09/13 (Mon) 21:55:50

ありがとうございます。

三菱マシンはレジスタを操作する事は出来ないのですね。
なかなか効率の良いコードを書く事は困難のようですね。

キーエンスでは殆どの命令が直列に記述出来て便利ですよ。

SSR動画に情報追加 - yenqoo URL

2021/09/12 (Sun) 13:44:01

https://www.youtube.com/watch?v=qeDZI_PGIGU
見ました~

見ている方々へ。

とりあえず。余談ですが、「トライアック」はゼネラル・エレクトリックの商品名です。
PLCの事をシーケンサと呼んだり
写真添付メールの事を「写メ」と呼んだりするのと同じですね。
正しくは「双方向サイリスタ」ですが、電気の世界でも「トライアック」は通称となっているので、ええんちゃいますか?

交流負荷でのSSRのセット時間ですが、
ゼロクロスで駆動すると、50Hzで最大10msを要する事に注意する必要が有ります。
(MY2で20msとなっています。)

機械リレーのNCとNOで機器を切り替えるような制御を、SSRでする時はデッドタイムを設ける必要がある場合が有ります。

また、ゼロクロスの石と非ゼロクロスのSSRとPLCを組み合わせて、位相制御ができるかも知れませんね。

直流負荷用のSSRも有ります。負荷はパワーMOS FETで駆動しています。

SSRの入力は光電素子、「フォトトライアック」や「フォトトランジスタ」などで絶縁されています。

学校での Binary number 授業について - yenqoo URL

2021/08/11 (Wed) 23:10:17

今日、一緒に働いているヤツに仕事の説明をする中で
、どうやら二進数を理解していない様子がありました。
多分、ヤツは1982年以降の生まれだったと思いますが、その頃って中学・高校では二進数や集合論は習わないのでしたっけ??

ヤツは高校では良い成績だったと言っていますが…

解説内容 - yenqoo URL

2021/08/05 (Thu) 11:45:53

https://www.youtube.com/watch?v=F675nwZ0EAQ
上記サイト。「ラダー図でのパルス」で微分命令(パルス命令)の解説がありますが、
微分命令が使えない割り込みルーチン内や
微分命令では使えない仕様が必要な時は、
どの様な解決法を解説なさっていますか?

参考までにお聞かせくださいませ。

Re: 解説内容 - take

2021/08/05 (Thu) 20:49:36

パルスなのですが、私は実際は必要最低限しか使っていないのであまり参考にならないと思います。割込みルーチンは普段ほとんど使わないです。使ったとしても何かの時間を測定する程度です。なので代わりにサブルーチンの場合ですが、もちろんサブルーチン内は微分が使えないのでサブルーチンコール命令自体を微分命令にします。OFFからONになるタイミングさえ作ればいいので、サブルーチン内で実行してサブルーチンを切ってしまうと内部のコイル達がOFF状態にならないので、別の場所で一度OFF状態にすればサブルーチン内で再度微分命令が使えたような気がします。こんなことを昔実験したことはありますが、実際に使ったことはありません。

普段からそこまで大規模な設備や複雑な機械のプログラムを作っているわけではないのであまり参考にはならなかったかなと思います。

Re: 解説内容 - yenqoo URL

2021/08/07 (Sat) 16:02:22

回答有難うございます。

>私は実際は必要最低限しか使っていない
私も微分系の命令は殆ど使いません。
勝手に微分動作をする様コーディングします。

>もちろんサブルーチン内は微分が使えない
三菱はSubRoutine内で微分関係は使えないのですね。
Keyenceは使えます。


私の説明不足ですが、
サブルーチンコールを微分動作させるのではなく、
コールされる度に、変数の立上り/立下りを検出する事です。

微分検出したい変数をXとすると・・・
サブルーチンや割込みルーチンをを呼んだ時、
前回呼んだ時のXが偽で今回が真の時、
Xが立ちあがったとして判断します。

前回呼んだ時のXが真で今回も真の時、
Xは変化無として判断します。


Keyenceではサブルーチン内での変数の立上り/立下り検出が使えます。
割込みルーチン内では微分関係は使えませんので、自力でコーディングします。
タイマ割込み等でルーチンコールした時、変数Xが立上った時のみジョブを実行すると言う感じです。

また、微分の仕様を標準仕様と変えたい場合も自力で書きます。
例えば、KeyenceではPLCのイニシャルリセット以前に真の変数で立上り微分した時は、動作しません。
イニシャルリセット以前に真の変数の立上り微分が欲しい等、標準仕様外は自力コードです。

ワンサイクル停止について PID制御 URL

2021/06/03 (Thu) 17:58:03

こんにちは。広く浅く色々な仕事に手を染めてしまい、何もかもかじりっぱなしで、自信が無く、ラダーを組んでいると、ノイローゼになりそうになる私です。
以前一番苦しんだのは、搬入搬出搬送機付きの工作機械で、自動運転中のサイクル停止と、ワンサイクル停止の制御をうまく止まらず、当時ひどく悩みました。
先輩に助けてもらってようやくなんとかなったのですが、その辺の、自動運転の自動切り、ワンサイクル停止、ワンサイクル運転のことをご教授願います。

Re: ワンサイクル停止について - take

2021/06/09 (Wed) 20:37:13

こんにちは。サイクル停止についての解説は下記の動画のどこかで解説した気がします。
https://youtu.be/nluhSwuMrEc
少し長い動画になってしまいましたが、また別途サイクル停止のみの解説でもしようかなと考えています。

Re: ワンサイクル停止について - 圓空 URL

2021/07/20 (Tue) 17:34:12

各系を記述したら、その上に各系を関連付ける監督を置くと制御し易いです。
良い資料が有ります。Mailにて送ります。

私の場合監督を置かない場合もあります。
基本的に「Trigger」と「Busy」Flagなどで
やっつけてます。


Copyright © 1999- FC2, inc All Rights Reserved.