こんなに暑いお盆に仕事の話題はどんなものかナ、と思いつつ、仕事しかしてないんだから仕方ないのでその話題です。
Motion制御で多軸(1CPUあたり32台)のプログラムをコーディングするのにも随分慣れてきました。(というよりとっくに飽きているんですが。笑)
そんな中で、自分で感じたことを(機密に触れない範囲で)少しでも記していければと考えています。始めはBLOGで書いていって、後でWEBにでもまとめてゆくつもりです。
まず今回は当たり障りの無い力技の効率化法から。。
シーケンサーのラダープログラムを書いていて、ある1ブロックが出来上がりました。 このブロックをコピーしてデバイス置き換えによって32軸分に展開する場面です。 あなたならどうしますか?
一番効率の良い方法は、
1→2→4→8→16→32
というように倍々でコピーしてゆく方法です。32=2の5乗ですから、5回コピーすれば出来上がります。
しかし、これには落とし穴があります。
デバイス番号の手書き打ち込みで置き換えを行う際に、間違える可能性が高いことです。
たとえば、下記のデバイスを置き換えるとしましょう。
No1 No2 No3
1軸目 M2001 M2401 M6001
2軸目 M2002 M2421 M6041
3軸目 M2003 M2441 M6081
:
32軸目 M2032 M3021 M7281
No1は+1ずつ足していって書き換えるのでわかりやすいですが、No2は20ずつ足してゆくことになります。 これが1ブロックで多数ある回路を展開するような場面で、上記の2条法により行う場合には、以下のような間違いが起きる可能性があります。
(コピーされたままの状態でデバイスを手動で振りなおすことを想定)
【コピー1回目】
・・まず間違えない
1軸目 M2001 M2401 M6001
↓ ↓
2軸目 M2002 M2421 M6041
【コピー2回目】
・・+1、+20、+40 が
+2、+40、+80に変わる
1軸目 M2001 M2401 M6001
↓ ↓ ↓
3軸目 M2003 M2441 M6081
2軸目 M2002 M2421 M6041
↓ ↓ ↓
4軸目 M2004 M2461 M6121
【コピー3回目】
・・+1、+20、+40 が
+4、+80、+160に変わる
1軸目 M2001 M2401 M6001
↓ ↓ ↓
5軸目 M2005 M2481 M6161
2軸目 M2002 M2421 M6041
↓ ↓ ↓
6軸目 M2006 M2501 M6201
3軸目 M2003 M2441 M6081
↓ ↓ ↓
7軸目 M2007 M2521 M6161
4軸目 M2004 M2461 M6121
↓ ↓ ↓
8軸目 M2008 M2541 M6281
赤印のところ、+160のはずが+80に間違えてしまいました。 悪いことに、この間違いは他の軸が間違えていないことと、プラスする数値が固定化されていないため次の【コピー4回目】の作業で発見される可能性も低く、見落とされがちです。
さて、結論から行きましょう。
このような場合は、私は以下の2つの方法のどちらかを採ります。
(1)1軸分ずつ順番にコピー?置き換えを繰り返す。
(2)デバイス一括置き換え機能を活用する。
(1)は間違える可能性もあるのですが、(この例では+1、+20、+40という)固定化された加算なので間違いにくいし、コピー作業中に間違いを発見できる可能性がかなり高いことから、私は小ブロックのコピーで採用しています。
【コピー1回目】
1軸目 M2001 M2401 M6001
↓ ↓
2軸目 M2002 M2421 M6041
【コピー2回目】
2軸目 M2002 M2421 M6041
↓ ↓
3軸目 M2003 M2441 M6101
【コピー3回目】
3軸目 M2003 M2441 M6101
↓ ↓
4軸目 M2004 M2461 M6141? ←大概はここで間違いに気づく可能性が高いし、ここで気づかなくても 次回以降にいつか気づく・・
(2)はコピー?置き換え?合体作業の一連の設定が面倒なので、大きなブロックのコピーで採用します。
今回はシーケンスラダーのデバイスなのでコメントを事前に入れておけば間違いに気づく可能性が高い例ですが、MotionSFCやPCのソフトなどではコメントは紐付けされておらず、自分で逐次書き込む必要があり、コメントも間違えると間違いはそのまま放置される危険性があり、そういう経験から得た愚直なる「逐次チェック」方式が、結果的に間違いの少なく立ち上げの早い仕事につながっていると思っています。
では、今日はこの辺で。