FANUCロボットの位置レジスタで座標を計算する|基準1点からずらして動かす
前回、位置レジスタは座標を入れておく箱だという話をしました。
今回は、その箱を計算で動かします。
やることは単純です。
基準の1点だけを教えて、そこから「いくつずらすか」を足す
これができると、60点教えていた作業が、1点+計算に置き換わります。
前回と同じく、実際の現場で私が組んでいる形で書きます。
【補足】本記事の画面図は、説明のために筆者が作成したイメージ図です。メーカーが公開している資料ではありません。ご使用の機種やバージョンによって表示が異なる場合があります。
1. 座標は1つずつ触れる
まず、いちばん大事な性質です。
位置レジスタは、X・Y・Zを1つずつ指定して書き換えられます。
2つ目の数字が項目の番号です。対応はこうなっています。
| 番号 | 項目 | 意味 |
|---|---|---|
| 1 | X | 左右方向の位置 |
| 2 | Y | 前後方向の位置 |
| 3 | Z | 上下方向の位置 |
| 4 | W | X軸まわりの傾き |
| 5 | P | Y軸まわりの傾き |
| 6 | R | Z軸まわりの傾き |
つまり イチレジ[1,3] なら「1番の位置レジスタのZ座標」です。
この番号を覚えるのが、今回の第一歩です。ここさえ押さえれば、あとは足し算だけです。
2. 基準をコピーしてから足す
やりたいこと
パレットに製品を並べる場合を考えます。
- 基準点:1個目を置く場所。ここだけ実際に教えます
- ずらす量:2個目以降が、基準から何mm離れているか
この2つがあれば、すべての位置が出せます。
X=500 Y=300 Z=100
レジ[2]=0 ← Y方向
レジ[3]=0 ← Z方向
番号の役割を決める
先に、どの番号を何に使うか決めます。
| 番号 | 名称 | 役割 |
|---|---|---|
イチレジ[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] のX | 1個目を置く場所 | |
|---|---|---|
| 1パレット目 | 500 | 500 ✅ |
| 2パレット目 | 700 | 700(200mmずれる) |
| 3パレット目 | 900 | 900(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個目 | 500 | 0mm |
| 2個目 | 540 | 40mm |
| 3個目 | 580 | 80mm |
| 4個目 | 620 | 120mm |
| 5個目 | 660 | 160mm |
(基準点の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本目です。位置レジスタとは何かから説明しています。この記事が難しく感じたら、先にこちらをどうぞ。
お問い合わせ
設備の自動化やロボットの導入でお困りごとがあれば、お気軽にご相談ください。

