PLCのスパイス

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

浮動小数点対応の電卓についてその1 PLC始めました

2022/12/28 (Wed) 15:44:54

初めまして

ブログの内容は参考にさせていただいております。

実は貴ブログにて紹介されていた電卓のラダープログラムならびにタッチパネル画面の設計についてですが、
整数対応の形式を浮動小数点に応用したものを作成いたしました。

一応、四則計算と計算結果のオーバーフロー処理、バックスペース、入力した数値のサインビットの切り替えまでは対応いたしましたが、有効数字7桁以上の場合に指数表記にするという課題を残しております。これに対し、ラダープログラム上で切り替えるという手段も採れますが、できれば入力数値と計算結果を数値表示ではなく文字表示のオブジェクトに対する詳細設定のスクリプトタグにスクリプトを作成して対応したいと考えましたが、構文チェックの際sprintfが使えない関数とされるため、先に進めません。

そこで、お忙しいところ誠に申し訳ないのですが、お知恵をお借りすることはできませんでしょうか。

なお、使用している環境はOSがwin10、ソフトは三菱のGX Work2とGT designer3(GOT2000)で、GOTの機種はGT27シリーズです。

ご参考まで、以下作成途中のGX Works2とGT Designer3のファイルも別途メールにて送信いたします。

Re: 浮動小数点対応の電卓についてその1 - 圓空

2023/01/09 (Mon) 00:24:44

書込み有難うございます。
添付ファイルを送って頂いたアドレスへ返信致しました。

今後とも宜しくお願いいたします。

PLCと周辺機器の通信の信頼性確保 PLC初心者

2019/10/13 (Sun) 18:09:17

現在PLCからロボットアームを制御しているのですが、異常動作に対する保護についてお伺いします。

ロボットアーム側には4種類の一連の動作をプログラミングしてあり、それをPLCから2ビットの動作モード選択出力および開始信号で制御しています。ロボットアーム側からは動作中を示す信号が返ってきます。

FMEAを行った時に、2ビットの選択信号の内、どちらかが断線(含入出力回路異常)になった際に、ロボットアームに指示した動作とは別の動作をすることになり、この対策をどのように行うか検討中です。

RC232等の通信であれば、コマンドの誤りチェックやACK/NAK返送などで、信頼性を確保できますが、PLCのX入力とY出力だけで接続されている場合、アーム側で受け取った2ビット情報をオーム返しにする信号線を追加することも考えたのですが、何か良い方法はあるでしょうか?

Re: PLCと周辺機器の通信の信頼性確保 - えんくう URL

2019/10/14 (Mon) 14:24:00

ロボットの入力故障はオーム返しでなければ分らないですよね…

断線の検知だけだとすれば

一般的な前提として
PLC出力が
ONでLOW
OFFでHi-Z
ロボット側が
何らかの形でPull-Upされているのなら
出力側の大元で電圧を監視します。
勿論、監視する回路の入力はHi-Zにして下さい。
PLCがOFFの時、ロボット側でPull-Upされていろ電圧が出てないのなら断線です。
私はPLC出力側のON/OFF/Openはロジックテスタを使ってチェックしています。ロジックテスタならOpenも判断できます。
参考に。何時も使っているテスタは
三和電気計器の「LG-1000」ですが、残念ながら製造中止品です。

ロボット側に終端抵抗を付けて断線を検知する方法もあるでしょうか…

他の方法として、常時微小電流を流しておき、電流を監視する方法もあるでしょうが、
何れにせよ手間はかかりますよね。


少し調べれば断線検知の解説サイトは有る様です。
http://arduinopid.web.fc2.com/M32.html

Re: PLCと周辺機器の通信の信頼性確保 PLC初心者

2019/10/14 (Mon) 22:50:49

連休中のところ、コメントありがとうございます。
配線1本がオープンになっただけでロボットアームの誤動作により、ワークおよびアームそのもの、最悪周囲の人間にまでダメージが及ぶ可能性を考えると、一般にロボットアームはどのように制御されているのかを知りたいと思いました。

PLCとロボットアームの断線検出のために、PLC出力電圧を監視するとなると、そのために専用のアナログ入力を使用することになり、それならばロボットアームのソフトで認識した信号をオーム返しにする方が簡単かと思いました。ロジックテスターによるチェックは故障発生後の原因調査では有効でしょうが、運転中に故障が発生した場合に安全に停止するという目的には向かないかと思います。

私自身は通信系のハードおよび組込ソフトの経験が長く、通信の世界では当たり前の「送信した情報は受信側では誤りが発生する」ということを前提に各種の通信プロトコルが使用されているのに対し、PLCの世界ではどのように対応しているのかがわからず質問させていただいた次第です。

当面はオーム返し方式が対応しやすそうですが、将来の拡張性や信号線数の増加に伴う故障要因の増加を考えると、単純なデジタル入出力での接続に代えて、RC232やEthernetなどの通信方式にした方が安全かと思いますがどうでしょうか。

Re: PLCと周辺機器の通信の信頼性確保 - えんくう URL

2019/10/15 (Tue) 09:56:59

PLC初心者さま

結局のところ
シリアル通信が良いと思います。

私が今居る業界は極力原価を抑えないといけない業界なもんで…
とりあえずはオーム返し。
それができなければ、2ビットくらいならOPアンプかディスクリート部品でコンパレータを構成するかな…ってところです。

専用のシリアル通信ユニットなんて使えない価格設定の場合など、
PLCどうしでしたら汎用I/Oを使ってシリアル転送をするプログラムも書きますが、適当に誤り訂正は入れています。

Re: PLCと周辺機器の通信の信頼性確保 PLC初心者

2019/10/15 (Tue) 10:50:48

えんくう様

お忙しい中、また連休中にも関わらず、回答・助言いただきありがとうございました。

やはり信頼性を確保するためには、シリアル通信で誤り検出やリトライ、タイムアウトなどの処理を入れてロボットアームを制御する方が安心ですね。現在のシステムには適用できないかもしれませんが、今後はその方向で行いたいと思います。

無題 - 停年の名無し

2019/06/12 (Wed) 00:27:41

FA電気屋さんのところからのリンクでやってきました。
いやー、面白い。はるか昔に聞いたことがあるド・モルガンの法則ってこんな風に有用だったのか、とか。
またお邪魔いたします。

Re: 無題 - えんくう URL

2019/06/12 (Wed) 17:48:06

停年の名無し様

御訪問ありがとうございます。

黄金週間にサイトを更新する計画だったのですが…
座る事もできない腰痛になりまして、連休前からほぼ
寝たきり状態でした(涙)

ネタはまあまあ溜め込んでおりますので、暇があれば
ボチボチ更新致したく思っております。

今後ともどうぞ宜しくお願いいたします。

Web Site 更新しました - 圓空 URL

2018/05/22 (Tue) 10:45:08

今年もも5月となりました。
1月より熊本へ長期出張していましたが、やっと戻れたので「PLCのスパイス」更新しました。

今回のネタは、年末に必要となって作ったものです。
ある機械の改造を担当しましたが…
既存のプログラムが「うに」状態で、構造化されていないのです。

で。この部分、新たに追加しました。詳しくは
「PLCのスパイス」で。

カメラコントローラ~PLC イーサネット接続 - taki

2018/04/23 (Mon) 13:06:39

圓空様 お世話になります
カメラコントローラとPLCの連動って経験ありますか?
連動って言うほど大したものでは有りませんが・・・
今回はカメラ・PLC共にキーエンスです
流れている鋼板の両端をカメラ2台で見ていて、カメラ側の設定(?)で基準点(0)からずれた(振れた幅)をPLCに送る。
その値をPLC側で演算して外部(0~5V,4~20mA)出力します。
振れ幅は0~50mmで生の値を出力しているのですが、50.000mmが何故かPLCに入力されると50000という値になってしまいます。
カメラコントローラ,PLC共に初期設定のままなのですが、何故か小数点が消えてしまう・・・(Ethernet PLCリンクは設定しています)
カメラコントローラはCV-X150F,PLCはKV-5000でKV-DA40Vから0-5Vと4-20mAを出力しています
カメラコントローラから入力される数値はDM500とDM502に書き込まれています。
システム的には大雑把に書くとこんなです。
分からないのが50.000が50000になってしまう事です
なにかご存知でしたら御教授下さい
よろしくお願いします

Re: カメラコントローラ~PLC イーサネット接続 - えんくう URL

2018/04/23 (Mon) 23:37:05

taki様
ご訪問ありがとうございます。

今、本社のある熊本に1月から缶詰状態です。
KV-7500と画像処理システムのXG-7000シリーズを使った装置のプログラミング中です。

タイムリーですねぇ(笑)

ところでご質問の件ですが…
KV-5000(KV-10等のパッケージ型以外)で、小数を扱うのは浮動小数点以外ありません。(応用編・デジタルフィルタ参照)
符号付または符号なし整数です。
なので、その整数を固定小数点として扱います。

50.000なら50000×10の-3乗です。
小数点の位置が決まっているので、CV-X150Fから貰った数値に0.001を掛けたものが本来の値になります。

私が今やっている物件ですが
uvwステージを使ってXYθを操作します。
その様な場合は、角度~弧度法変換や三角関数などの無理数が出てきますので、倍精度浮動小数点を使います。

CV-X150Fが浮動小数点を扱えるかは存じませんが
分解能が決まっている(1μメートルですね)ので整数扱いで十分なのです。

老婆心ながら
答えを出す時の四則演算ですが…
勿論割り算は最後にしていますよね?
2進数演算の誤差にも注意して下さい。


Re: カメラコントローラ~PLC イーサネット接続 - taki

2018/04/24 (Tue) 08:48:04

圓空様 お世話になります
今 会社で返信を見て「そっかー だからかー」って大声あげて注目浴びてしまいました・・・
もっと良くマニュアル見れば分かったのかもしれません。
四則演算と2進数演算の誤差は大丈夫だったと思いますが再確認中です。
先にお礼をと思い・・・
ありがとうございました。

Re: カメラコントローラ~PLC イーサネット接続 - 円空 URL

2018/04/25 (Wed) 18:59:49

taki様

お役にたてて何よりです。

無題 - メロンカー

2017/09/14 (Thu) 17:23:25

当方、PLC初心者のメロンカーと申します。
現在、Keyence製KV-7500を用いた新規のシステム開発を検討しているのですが、拡張データメモリ(EM)を使用すべきか否かの判断で迷っています。

今回の案件自体は用意されているデータメモリ(DM)の容量で十分です。
また、当該CPUユニットのユーザマニュアルを確認する限り、これらのメモリ間で仕様差異が見受けられませんでした。
その為、拡張データメモリ(EM)は使用しない方向で開発を進め様と考えているのですが『こんな使い方をすると可読性・保守性・拡張性が向上するよ』・・・といったTipsがありましたら是非ご教授頂けますでしょうか?
宜しくお願いします。

ちなみにメーカに問合せたのですが残念ながらTipsは得られませんでした。

Re: 無題 - 圓空 URL

2017/09/14 (Thu) 19:14:37


メロンカー様

アクセスありがとう御座います。

DMやEMメモリの使い方は自由なので、自分なりの決まりを作っておけば良いと思います。
しかし、特殊ユニット等に割り当てるのはDMでないと不可の様です。

なので、私はユニットとのI/FにDMを、内部のメモリやタッチパネルとのI/FにEMを使う事が多いですね。
また、定数的な使い方(初期化時に定数を代入)をDM。実行中に値が変化するデバイスをEMに割り当てたりします。
(気分で逆もあり)

レシピデータや演算係数なんかはFMに置いています。
「応用編 デジタルフィルタ」にあるフィルタの係数なんかも
本来FMから呼出してTMに代入しています。


それと、通常、ローカル変数(ローカルデバイス)を多用しています。
各モジュールとのI/Fとタッチパネルやリアルタイムチャートモニタ用の変数はグローバルです。
ローカル変数は、上手く初めに変数宣言しておかないとRUN中書込みできませんが・・・

FMのローカル変数とローカルラベルは、ローカルワーク領域を使うので、FMの領域を食われる事はありません。


以上。くだらん知恵ですが、お役にたてれば。

Re: 無題 - メロンカー

2017/09/15 (Fri) 09:21:32

圓空様

早速のご回答、誠にありがとう御座います。
アドバイスを受け、システム開発後に特殊ユニット等を追加する事を考慮しEMを積極的に活用する事にしました。
また、「応用編 デジタルフィルタ」のラダー図を拝見させて頂きEM・FM・TM等の使い方を勉強したいと考えます。


<追記>
経験を踏まえた『できる男』の貴重なアドバイス、大変勉強になります。
今後も質問させて頂きたいと考えますので、その際は宜しくお願い致します。

Re: 無題 - 圓空

2017/09/15 (Fri) 15:11:19

メロンカー様

こちらこそ宜しくお願いいたします。


書き忘れましたが、FMのローカル変数(@FM)やローカルレベルは揮発しますので
お忘れなく。(停電保持設定からも出来なかったはず・・・)

デバイス種によるアクセス速度の差も、機種によってある様です。
「KV に関する情報」の”KVシリーズで命令語のS(ソース)にDMを使用した場合と、VMを使用した場合の速度差は?”
を参照してください。

ワーク領域(VM)はFMのローカル変数(@FM)やローカルラベルで使用されます。

Re: 無題 - メロンカー

2017/09/19 (Tue) 17:16:33

圓空様

度々のアドバイス、誠にありがとう御座います。
重ねてお礼申し上げます。

ソフト検討中 - taki

2017/08/30 (Wed) 17:15:10

ソフトで困っていてあれこれ探していたらたどり着きましたので質問します
というか上手くいかなくて困っています
順序回路というのでしょうか
A,B,C,D,E,Fというモーターがあります
各々に手動・自動が有り、全てが自動の時はAがスタートすると同時にソフトタイマーがスタートしてタイムアップと同時にAはストップしてBがスタートして、またタイムアップするとCへ・・・と続きFでタイムアップしてSTOPするとAに戻って同じ事を繰り返します。
そこまでは良いのですが、上記の手動が問題でAからFまでの中に手動があると、そのモーターを飛ばして自動を続けます。
仮にA,C,Eが自動でB,D,Fが手動の場合はA,C,Eを順番に繰り前します。長々と書きましたが自動選択分は若番から順番に動いて手動は飛ばすという事です。
何をどうしたらいいのか分からなくなってしまいました・・・参考回路やアドバイスでも何でも結構です。
よろしくお願いします

Re: ソフト検討中 - 圓空

2017/08/30 (Wed) 19:13:17

taki 様

対象PLCが書いてないのでKV-300で書きますね。
書いてあってもKeyenceで書きますけど・・・(笑)

相談内容はA~Fまでの6個のモータですが、
同じ事なのでA~Cでかきます。

インデックス修飾を使えばモータ1個分の記述で
多数分の記述ができますが、今回はベタ~~っと書きます。

インデックス修飾に付いては
事例集 「自動散水装置」※ 今回のご相談の内容に一番近いでしょうか。
基本編 「時分割」や「仮想IAIロボット」
応用編 「IAIポイント移動」
等、参照ください。


■ 変数
RUN:起動スイッチ

A手動SW:モータAの手動スイッチ
B手動SW:モータBの手動スイッチ
C手動SW:モータCの手動スイッチ

Motor_A:モータA起動
Motor_B:モータB起動
Motor_C:モータC起動

M_A:モータAの起動時間タイマ
M_B:モータBの起動時間タイマ
M_C:モータCの起動時間タイマ


■ 動作説明
1 初期設定で状態「@R000」がONします。
2 「RUN」がONすればAが手動かどうかで分岐します。
手動でなければ「@R002」でタイムアップするまで「Motor_A」がONします。
手動ならば「@R004」のモータBの分岐へジャンプします。
※ Aの場合、自動で動作し始めたら、途中で手動スイッチをONしても自動動作を最後まで続けます。
3 「@R004」Bの手動スイッチがONならCのへ、OFFならタイムアップするまでBが可動します。
※ Bでは自動動作中に手動スイッチがONしたら、自動動作を中断してCへジャンプします。
4 「@R006」Cも同様に動作します。
5 Cを処理終えると初めに戻ます。

ここでは
STG~JMP 命令で記述しましたが
他のアルゴリズムは

http://yenqoo.com/spices/

左メニューの『基本編 フロー』の
2. 次工程移行アドレス式

を参照ください。

「4. 歩進式」 や、「5. ステップ式」 では条件分岐がややこしいですね。

http://plcseigyo.com/program/post-3530
↑この方式もありですが・・・記述が面倒です。

Re: ソフト検討中 - taki

2017/08/31 (Thu) 18:05:24

圓空様
PLCは三菱です(何故かGX-Developerで作成指定です)
回路を参考にさせていただきます
確かキーエンスのラダーソフトがあったはずなので打ち込んでみます
ハード畑なもんでシーケンサは毎回苦労してます(苦笑)
ありがとうございました
困ったときは来ます
(既にHPをお気に入りに追加しておきました)

Re: ソフト検討中 - 圓空

2017/08/31 (Thu) 20:04:57

taki様

「お姉さまも大歓迎」を気に入って頂きまして
ありがとうございます。

三菱のプログラマーは、開発効率が悪くて大変ですね。
出来ない事が多すぎます。とにかく使いにくいです。

さて、サンプルで書いた
STG・・・・・JMP
の件ですが、代替命令で書くとすれば

 R000      R002
-|STG|----------|JMP|--

 R002      R004
-|STG|----------|JMP|--

STG a ⇒ LD a (単純な接点命令で置き換え)
JMP b ⇒ RST a と SET b
に置き換えると早いでしょう。

 M000     M000
-| |----------(RST)--
    |
    |    M002
    |-----(SET)--

 M002     M002
-| |----------(RST)--
    |
    |    M004
    |-----(SET)--

これからも宜しくお願いいたします。

Re: ソフト検討中 - 圓空

2017/09/02 (Sat) 14:45:14

taki様

「事例集」の方にサンプルを掲載いたしました。
”モータの順次起動”を参照下さい。

インデックス修飾でも記述しました。比較してみてください。

KV-STUDIOがあるとの事なので、コードをダウンロードして頂ければ、即検証できると思います。

開設おめでとうございます! - seg

2017/06/14 (Wed) 10:48:24

おめでとうございます、技術者の役に立つページが増えるのはなんとも喜ばしいことです。
運営頑張ってつかぁさい!

Re: 開設おめでとうございます! - えんくう

2017/06/15 (Thu) 23:24:11

毎度おおきに。

グラフィックデザイン。
使い勝手。
内容、等如何ですか?

まだ、完成までにはかかりますが・・・

はじめまして - yenqoo URL

2017/06/02 (Fri) 20:20:30

とりあえずの管理人。yenqooです。

宜しくお願い致します。


Copyright © 1999- FC2, inc All Rights Reserved.