2017年11月24日

メインサブ両対応

 相変わらずの需要がよく分からないNCマクロネタです。

 機械の段取り時に使う様なプログラムは、それを単体で直接動かしたい時もあれば、別のプログラムからサブプログラムとして呼び出したい時もあったりしますよね?無いですか?

 単体で動かすプログラムは最後M30かM2で終了させますが、サブプロとして利用する場合にはM99で終わらせないとメインプログラムに戻ってくれません。

 従ってそのようなメインプログラムにもサブプログラムにも成り得るプログラムでは、どちらの状態で実行されているか判断して終了のMコードを切り替えてやる必要があります。

 今回はそんな処理をするマクロの例を紹介します。

サンプル1

%
O1234 (SAMPLE PROGRAM 1)


#30 =99. (M99)
IF[#4000 NE #4115] GOTO9900
#30 =30. (M30)

N9900 (END OF PROGRAM)
M#30
%

解説1

 システム変数 #4000 はメインプログラム番号、#4115 はそのプログラム自体のプログラム番号が格納されている変数です。サブプロ実行中は #4115 にサブプログラム番号が入ります。従って #4000 と #4115 が同一か否かで、そのプログラムがメインプログラムとして実行されているのか、それともサブプログラムとして呼ばれているのかが判別出来ます。

 因みにMDIで動かした場合には #4000 は“空”(#0)です。

 M99/M30 はわざわざ変数を介さなくても直接指令すれば良さそうなもんですが、これにはちょっとした理由があります。機械のパラメータ設定によりますが、外部機器からプログラムを読み込む際にM99やM30があるとそこで読み込みが止まってしまう機械があります。その様な機械でプログラムの後半が欠落するのを防ぐため、直接指令するのを避けました。

サンプル2

 動作確認しておkと思ったら、世の中には #4000 が無い制御装置もあるみたいなので別の方法を考えました。

(SAMPLE PROGRAM 2)
#13 =#4113 (MODAL M CODE)


#30 =99. (M99)
IF[#13 EQ 98.] GOTO9900
#30 =30. (M30)

N9900 (END OF PROGRAM)
M#30

解説2

 システム変数 #4113 には直前に指令されたMコード番号が格納されています。

 プログラム先頭で #4113 を調べた場合、もしこのプログラムが別のプログラムから M98 にてサブプロ呼び出されていた場合には #4113 には 98 が入っている筈です。一方メインプログラムとして実行された場合には #4113 には 0 か 2 か 30 の何れかが入っていると思います(処理系依存)。

 この方法ではサブプログラム呼び出しではなく、G65 のマクロ呼び出しされた場合にそれを判別出来ません。FANUCなら #4012 (G65,G66,G67) のシステム変数にてマクロ呼出しされたかどうかを調べる事が出来ますが、ブラザーのNC (CNC-C00) では #4012 は G66,G67 しか返さないようで、G65で呼ばれたかどうかが判別出来ません。

おわり

 そんなのM98Pするだけのプログラム1個置いときゃ良いじゃん、なんて事は決して口にしてはいけません。


posted by antec at 23:39 | Comment(1) | 工作機械 | このブログの読者になる | 更新情報をチェックする

2017年11月18日

2号機

 先日またM140X2が入ってきました。X1と合わせると3台目。いつものように最初の立ち上げ作業は自分がやって、出来たら担当者に引き渡します。

 今回のちょっと新しい試みとしては、工具長測定の改良と、テーブル自動心出しの実装。

 テーブル自動心出しは自分が担当する方の機械でやってる事で、今までM140Xxには付けて無かったんかいという感じですが、これ標準で付いてくるBLUMのスタイラスが太短くて有効長が足りない為に、加工段取り状態で測る事が難しかったので放ったらかしにしていました。まぁ自分が使わない機械なんてそんなもんです。

 工具長測定はA軸の横っちょに付いてて、測定時にA軸を100度に倒して使います。一応カタログの名目は『工具折損検出装置』なので本来は工具長測定装置では無いのでしょうけど、測定マクロさえ作れば工具長測定も行う事が出来ます。

 因みにうちの場合はX1納入時の操作説明中に指導員の方がその場で工具長測定マクロを組みながら使い方を教えて下さりました。

 ここに使われているタッチセンサーはメトロールの『高精度MT-タッチスイッチ〔Pシリーズ〕』と思われますが(憶測)、センサー単体の公称繰り返し精度0.0005mmと比較すると、実運用上の測定精度がそこまで高くありません。

 測定精度が安定しない主な理由としては、機械の熱変異とA軸の繰り返し位置決め精度の影響ではないかと考えています。なので今回の改良点はその2点。具体的には

  • 基準工具によるキャリブレーション
  • 測定後にA軸を戻さない

 5軸のマシニングで精度を管理しようと思うと、主軸ゲージラインを基準にするのが一番良いと思っています。なので本来なら工具長は信頼性のあるツールプリセッタで測るのが良いと思っていますが、残念ながら弊社にはツールプリセッタが無いので、機内で工具長を測っています。

 機内での工具長測定の問題点は、熱変異等の影響によって測定値がいつも同じにならないという事が挙げられます。

 3軸のマシニングならその時加工に使う工具の長さが揃っていれば絶対値としては間違っていてもそれ程支障がありませんが、5軸の機械では回転軸との関係が狂ってしまうと致命的なので、ゲージラインからの寸法がいつでも正しく測れる事がとても重要なのです。

 そんな訳で、正確にゲージラインからの長さを測った基準工具にてキャリブレーションしてから工具を測るようにすると、機械原点から測定子までの距離が変化していても正しい工具長を測れるようになります。

 基準工具の注意点は、基準工具の長さ自体が温度変化で変わる事です。線膨張率を12e-6[/K]とすると、基準工具の長さが100mmあって温度変化が10℃あれば 12e-6*100*10=0.012mm となり、結構無視出来ない量。

 A軸の繰り返し位置決め精度の問題は、A軸を動かさなければ問題にならないだろうという安直な考えから、キャリブレーション時に測定姿勢へ位置決めしたら、あとはずっとそのままにしておけばA軸の繰り返し位置決め精度の影響は排除出来ると考えました。勿論キャリブレーションだけでなく、工具長を測った後もそのまま。従来は律儀に測定が終わったら水平に戻していましたが、どうせ工具長を測る時は人が付いているのだから別に戻す必要も無かったのかも。その方が何本か連続で測る時には時間短縮になるし。

 こんな程度の事でも十分良い精度で測れるようになったので、今後は初品から安定した寸法で加工出来るようになるんじゃないかと期待します。

 因みにC軸がZ軸に対してちょっと傾いているので(X軸方向に0.009/100、Y軸方向に0.002/100くらい)、テーブル中心をテーブルの根元付近で測ると、バイスの上に掴んだワークの位置で測った時と一致しません。

 同様にA軸もX軸と平行ではないので、テーブルの心出しと座標変換(G68.2のマクロ版)の両方でそこら辺の誤差を見込んだ補正を掛けています。

 多分CNC-C00のロータリフィクスチャオフセット機能ではそこらの問題には対応出来ないんじゃないかと思いますがどうでしょうか。

 因みに大抵の機械では工具長測定装置はテーブル側に付いているので、5軸テーブルの心出しを行った際に傾斜軸中心のZ値に連動して工具長測定の基準高さパラメータも更新するようにするだけでも、工具長測定の精度が結構向上します。こうする事でいちいち基準工具でキャリブレーションしなくてもそれなりには測れるので便利です。


posted by antec at 12:11 | Comment(0) | 工作機械 | このブログの読者になる | 更新情報をチェックする

2016年12月09日

G10による高速書込み

 とある機械というかまぁぶっちゃけ松浦なんですが、メーカー独自の高速加工機能としてIntelligent Precision Control(高速高精度加工支援機能)というものがあります。FANUCのAI輪郭制御などにもありますが、加工内容に応じて加工速度や加工精度の調整を行えるものですが、ちょっと困った事がありまして、こいつで加工レベルを切り替える時にちょっとだけ処理待ちのウェイトが入ってしまいます。

 ご存知の方もいらっしゃると思いますが、このIPCのモード切替に使用するGコード『G131』を指令すると、内部的にはプログラマブルパラメータ入力(G10L50/L52)を使ってサーボ関係のパラメータを書き換えるという処理が行われます。どうしてそんな事が分かるかというと、G131実行中のあるタイミングでアラームが発生すると、G131の中身のプログラムが画面に表示されてしまう事があったからです。ソフトのバージョンアップのお陰で最近は見かけなくなりましたが。

 そしてFS31i-MBのプログラマブルパラメータ入力の処理が何故だか知りませんが遅いので、書き換えるパラメータが多いとどうしてももたついてしまうのです。

 確認の為にマクロのタイマーを使ってG131の処理時間を計測してみると約1.3秒掛かっていました。まぁ大した時間ではないのですが、機械の前に立って見ていると何となくイライラします。

 さて、先日黄色いパラメータ説明書を眺めていましたら素敵なパラメータを見つけました。

4.109 プログラム関係のパラメータ(その3)
11502 #4 PSU プログラマブルパラメータ入力(G10L50/L52)を、
0: 通常の速度で実行します。(従来仕様)
1: 高速実行します。

FANUC Series 30i,31i,32i-MODEL B パラメータ説明書 B-64490JA/04

 試しに高速仕様にしてG131の処理時間を測ってみたら0.8秒くらいになりました。約0.5秒の短縮です。

 わざわざ従来仕様を残しているのには何か理由があるはずです。FANUCに聞いてみた所、処理時間が変わる事でタイミングの調整が必要になる場合が無きにしもあらずなので、との事でした。一方機械メーカー様からは、まだ十分に検証が出来ていないのでお客様の判断にてご使用下さいとの事でした。

 そういう事であれば喜んで人柱になりましょう。


 パラメータを変更する事で支障があるかどうかは機械によりけりだと思いますが、日頃G131おせ〜!と感じている方や、他社の機械であってもG10L50/L52を多用している場合には試してみると、もしかしたら幸せに成れるかも知れません。自己責任にて。

タグ:制御装置

posted by antec at 20:31 | Comment(0) | TrackBack(0) | 工作機械 | このブログの読者になる | 更新情報をチェックする

2016年08月13日

消耗戦

 単体ではよく分からないかも知れませんが、このリード線の被覆、ちょっと茶色っぽく変色してますでしょ?本来ならもっと白いんですよ。

KP320.jpg
LY2N-D2 24VDC

 これ、5月に交換したばかりです。なのにもうこんな状態。やはり根本的に何かおかしいとしか思えないんですが...

 メーカーは調査しますと言いながら全然日程調整してくれないし。


posted by antec at 09:32 | Comment(0) | TrackBack(0) | 工作機械 | このブログの読者になる | 更新情報をチェックする

2016年07月11日

シール工法

記事訂正 2016/07/12

読み直したらちょっと細かく書きすぎた気がするので、ほぼ全面的に書き直しました。


要約

 機械でちょっとトラブったので修理したら板金部品の造りがアレだった。

 こりゃまずいだろうと感じたので僕が考える最強の代替手段を提案するのでご検討下さい。

提案内容

3M™ Scotch-Weld™ EPX™ 二液室温硬化型接着剤【高強度金属タイプ】メタルグリップ / DP-810

 シリコーンシーラントに代わって、このメタルグリップで施工して下さい。

 シリコーンシーラントより強度があって、塗装の乗りも良く、硬化が早いので養生時間も削減出来ます。高いけど。

閑話休題

 このEPXシステムですが、専用ガンが必要ですが混合の手間が省けるので、実際に使ってみると作業性はとても良いです。難点としてはミキシングノズルが使い捨てな事と、硬化が早いのでもたもたしていると直ぐにノズルが詰まってしまう事ですが、実はこのノズル、詰まっても再生可能です。

 適度に固まった状態で先端側から棒でつつくと、中のミキシングスクリュー毎スポっと抜けるので、先の方から丁寧にひん剥いて行くとスクリューを取り出す事が出来ます。取り出せたらノズルの中に仕舞って、一緒に抜け出た赤い部品で蓋すれば完了。

 完全に固まってからだと剥くのが大変なの生乾き状態で作業するのがコツです。

 逆に硬化が足りないうちに作業するとあちこちくっついて気持ち悪いですし、何より硬化時に結構発熱するので素手だと火傷などの危険があります。くれぐれもご注意を。

 まぁたかだか300円ばかのノズルをちまちま剥いて再生するような貧乏垂らしい事はみんなしないでしょうけど。


 つまり書きたかった事は最後の段だけだったりして


posted by antec at 21:05 | Comment(0) | TrackBack(0) | 工作機械 | このブログの読者になる | 更新情報をチェックする