ロボット制御

FANUCロボットの位置レジスタで座標を計算する|基準1点からずらして動かす

ロボットが供給位置からワークを取り、パレットの基準点から40mm、80mm、120mm、160mmとずらして並べていく様子を表した図
fa-engineer

前回、位置レジスタは座標を入れておく箱だという話をしました。

今回は、その箱を計算で動かします。

やることは単純です。

基準の1点だけを教えて、そこから「いくつずらすか」を足す

これができると、60点教えていた作業が、1点+計算に置き換わります。

前回と同じく、実際の現場で私が組んでいる形で書きます。

【補足】本記事の画面図は、説明のために筆者が作成したイメージ図です。メーカーが公開している資料ではありません。ご使用の機種やバージョンによって表示が異なる場合があります。

1. 座標は1つずつ触れる

まず、いちばん大事な性質です。

位置レジスタは、X・Y・Zを1つずつ指定して書き換えられます。

2つ目の数字が項目の番号です。対応はこうなっています。

番号項目意味
1X左右方向の位置
2Y前後方向の位置
3Z上下方向の位置
4WX軸まわりの傾き
5PY軸まわりの傾き
6RZ軸まわりの傾き

つまり イチレジ[1,3] なら「1番の位置レジスタのZ座標」です。

イチレジ[1,3]
1つ目の数字
位置レジスタの番号
2つ目の数字
項目(1=X 2=Y 3=Z)
この例は「1番の位置レジスタのZ座標」という意味

この番号を覚えるのが、今回の第一歩です。ここさえ押さえれば、あとは足し算だけです。

2. 基準をコピーしてから足す

やりたいこと

パレットに製品を並べる場合を考えます。

  • 基準点:1個目を置く場所。ここだけ実際に教えます
  • ずらす量:2個目以降が、基準から何mm離れているか

この2つがあれば、すべての位置が出せます。

基準点(実際に教える)
イチレジ[1]
X=500 Y=300 Z=100
1個目を置く場所。ここだけ教える
ずらす量(計算で出す)
レジ[1]=40 ← X方向
レジ[2]=0  ← Y方向
レジ[3]=0  ← Z方向
基準から何mm離れているか
基準点 + ずらす量 = 行き先 (X=540 Y=300 Z=100)

番号の役割を決める

先に、どの番号を何に使うか決めます。

番号名称役割
イチレジ[1]基準点触らない。1個目の位置を保存しておく
イチレジ[2]積み位置計算に使う作業用
レジ[1]〜[3]ずらし量XYZ基準から何mm離れているか

イチレジ[1] は絶対に書き換えません。ここが今回いちばん大事なところです。理由は次の章で書きます。

前回説明した イチ記憶 で、基準点を イチレジ[1] に登録しておいてください。

プログラム

イチレジ[2] = イチレジ[1]                 ← 基準を作業用にコピー
イチレジ[2,1] = イチレジ[2,1] + レジ[1]   ← X方向にずらす
イチレジ[2,2] = イチレジ[2,2] + レジ[2]   ← Y方向にずらす
イチレジ[2,3] = イチレジ[2,3] + レジ[3]   ← Z方向にずらす
カクジク イチレジ[2] 100% イチギメ           ← そこへ動く

5行だけです。

1行目で基準を作業用にコピーし、2〜4行目でX・Y・Zをそれぞれずらし、5行目でそこへ動きます。

置く場所が何か所あっても、プログラムはこの5行のままです。変わるのは レジ[1]〜[3] の中身だけです。

3. ⚠️ コピーを飛ばすと、基準がずれていく

ここが今回いちばん伝えたいところです。

やってしまいがちな書き方

1行目のコピーが無駄に見えて、こう書きたくなります。

イチレジ[1,1] = イチレジ[1,1] + レジ[1]   ← 基準に直接足してしまう
カクジク イチレジ[1] 100% イチギメ

1パレット目は正しく動きます。そして2パレット目からおかしくなります。

何が起きるか

イチレジ[1] は基準点でした。そこに足すと、基準点そのものが書き換わります。

40mmずつ5個並べると、基準点は 40 × 5 = 200mm 動いた状態で残ります。

基準 イチレジ[1] のX1個目を置く場所
1パレット目500500 ✅
2パレット目700700(200mmずれる)
3パレット目900900(400mmずれる)

パレットを流すたびに、200mmずつ遠ざかっていきます。

たちが悪いところ

このトラブルは、1パレット目が正しく動いてしまいます。

動作確認で1回だけ流すと「よし、動いた」となります。おかしいと気づくのは、2パレット目からです。

さらに厄介なのが、電源を切っても位置レジスタの中身は残ることです。その日は気づかず、翌朝いきなり変な場所へ行くということが起こります。

対策はひとつだけ

基準点用の番号を決めて、そこには絶対に書き込まない。

計算するときは、必ず作業用の番号にコピーしてから足します。1行増えるだけです。

前回「番号の管理表を作ってください」と書いたのは、このためでもあります。「触らない番号」と「作業用の番号」を分けて書いておくと、後から見た人も間違えません。

4. 繰り返してパレタイズする

ここまでは1か所ぶんでした。次は繰り返します。

ラベルジャンプ、それに モシ(条件分岐)を使います。

X方向に40mmずつずらして5個並べる

供給位置からワークを取り、基準点から40mmずつずらしながら置いていきます。

 1:  レジ[10] = 0                        ← 何個目か数える
 2:  イチレジ[2] = イチレジ[1]                ← 基準を作業用にコピー
 3:  ラベル[1]
 4:  カクジク イチ[1] 100% イチギメ             ← 供給位置へ取りに行く
 5:  RO[1]=オン                           ← ワークをつかむ
 6:  タイマ 0.50(sec)                      ← つかみ切るまで待つ
 7:  カクジク イチレジ[2] 100% イチギメ          ← 計算した置き場所へ
 8:  RO[1]=オフ                           ← ワークを離す
 9:  タイマ 0.50(sec)                      ← 離し切るまで待つ
10:  イチレジ[2,1] = イチレジ[2,1] + 40       ← 次はX方向に40mmずらす
11:  レジ[10] = レジ[10] + 1              ← 個数を1つ増やす
12:  モシ レジ[10] < 5 , ジャンプ ラベル[1]    ← 5個未満ならラベル1へ戻る
13:  [オワリ]

置く場所は、こう進みます。

何個目イチレジ[2] のX基準からの距離
1個目5000mm
2個目54040mm
3個目58080mm
4個目620120mm
5個目660160mm

(基準点のXが500mmの場合)

押さえてほしい3か所

10行目:ずらすのは「次のため」です

置いたあとに足しています。先に足すと、1個目が基準からずれた場所になります。この順番はよく間違えます。

12行目:レジ[10] が5未満なら3行目に戻ります

5になったら戻らず、次の行へ進んで終わります。

2行目:コピーが繰り返しの外にあります

繰り返しの中に入れると毎回リセットされて、ずっと同じ場所に置き続けます。

なお、ここでは イチレジ[2] に足し続けていますが問題ありません。作業用の番号だからです。次のパレットを始めるとき、2行目でまたコピーし直されます。

⚠️ 実際の設備では、置く位置の真上に一度寄ってから下ろす動き(アプローチ点)を入れてください。

ここでは考え方を分かりやすくするため省いています。いきなり目的の高さへ動かすと、すでに置いてあるワークに当たります。

5. 位置補正命令という別の道

実は、ここまでの計算をせずに同じことをする方法があります。

位置補正命令

動作命令のうしろに付ける指定です。

チョクセン イチ[1] 1000mm/sec イチギメ イチホセイ イチレジ[1]

意味はこうです。

教示点 イチ[1] を、イチレジ[1] に入っている量だけずらした場所へ動く

イチ[1] 自体は書き換わりません。動くときだけずれます。基準がずれていく心配は、構造的に起きません。

「インクレ」との違い

名前が似ていて混同しやすいので、並べておきます。

指定動き
イチホセイ イチレジ[1]目標位置を、その量だけずらした先へ動く
インクレいまいる場所から、その量だけ動く

前者は「行き先をずらす」、後者は「今の場所から相対移動」です。

ツール座標系の向きにずらす ツールホセイ もあります。ハンドの向きに沿ってずらしたいときに使います。

できることは、ほぼ同じです

正直に書きます。位置補正命令でも、ここまで説明した計算とほぼ同じことができます。

違いは「PLCから受け取った値を、位置レジスタに入れるか、数値レジスタに入れて計算するか」くらいです。手間もあまり変わりません。

それでも私が計算するほうを使う理由

トラブルのとき、ロボットがどこへ行こうとしたかが画面で見えるからです。

計算するやり方だと、行き先が イチレジ[2] に残ります。位置レジスタの画面を開けば、そのまま数字で確認できます。

位置補正命令だと、ずらした後の座標はどこにも残りません。教示点の値と補正量を見て、自分で足し算して確かめることになります。

1か所なら大したことはありません。ただ、深夜に呼ばれて原因を探しているときは、画面を開けば分かるというのが効きます。

前回「ロボットは単純なほうが、後で助かる」と書きました。これも同じ考え方です。どちらが正しいという話ではなく、どちらが後で楽かという話です。

ご自身の現場で、確認のしやすさをどう考えるかで選んでください。

6. よくあるつまずき

1パレット目だけ合っている

3章で書いたとおりです。基準点に直接足していないか確認してください。

電源を入れ直したら変な場所へ行った

位置レジスタの中身は電源を切っても残ります。前回の計算結果が入ったままなので、作業用の番号を使う前に必ずコピーし直す必要があります。

いきなり全速で流さない

計算で座標を作ると、思っていたのと違う場所に行くことがあります。特に位置レジスタを使い始めた直後は、必ず低速で1回試してください。

前回書いたとおり、同じXYZでもロボットの肘の向きが変わることがあります。座標としては正しくても、腕が想定と違う形で入ってきます。

座標系がずれている

登録したときと違う座標系で使うと、同じ数字でも別の場所を指します。位置レジスタを使うプログラムでは、ユーザ座標とツール座標を最初に指定しておくのが安全です。

詳しくはお使いの機種のマニュアルか、メーカーにご確認ください。

7. まとめ

  • 位置レジスタは イチレジ[1,1] の形で X・Y・Zを1つずつ書き換えられる
  • 番号は X=1/Y=2/Z=3/W=4/P=5/R=6
  • 基準点用の番号は絶対に書き換えない。作業用にコピーしてから足す
  • コピーを飛ばすと、1パレット目だけ合っていて、2パレット目からずれていく
  • 繰り返しは ラベル ジャンプ モシ で組む
  • 位置補正命令 イチホセイ でも同じことができる。選ぶ基準は「後で確認しやすいか」

次回予告

次回はいよいよ、PLCから受け取った値でパレタイズさせます。

段数・列数の計算をPLC側にまとめて、ロボットには座標だけを渡す。今回の5行が、そのまま活きてきます。

グループ入力でデータを受け取る方法から書く予定です。

関連記事

シリーズ1本目です。位置レジスタとは何かから説明しています。この記事が難しく感じたら、先にこちらをどうぞ。

お問い合わせ

設備の自動化やロボットの導入でお困りごとがあれば、お気軽にご相談ください。

ABOUT ME
Yu
Yu
設備エンジニア(フリーランス)
生産技術の現場で10年以上の経験を持ち、制御設計を中心に生産設備の開発全般に携わってきました。 特に、産業用ロボットを活用した自動化設備の開発を得意としており、機械・電気・制御の知識を横断的に活かして業務に取り組んでいます。 近年では、PLCと連携したIoTシステムの構築にも注力しており、PythonやSQL Serverなどを活用したデータ収集・可視化・分析の仕組みづくりにも対応しています。 現場のリアルな課題を解決するための実践的なノウハウを発信していきます。
記事URLをコピーしました