CL-253ローダー自働化への挑戦
第4回
「自働化を行うためのプログラム知識 ローダープログラム 本番です。」
ここが解からないと機械を動かす等 やりたいことが出来ません。
なぜなら
・プログラムが解からなければ、何を改善しても機械を動かすことが出来ないからです。
・プログラムの間違えはローダーの破損となります。要注意です。
では今回はプログラム解説付きを添付します。
読んでローダーの動きをイメージして、実際にプログラムで動く機械を確認することが重要です。
4 プログラムの基本的なパターン
4-1 ローダメインプログラム
4-1-1 1 ローダ仕様
単体仕様 ⇒八幡工場のローダーは4台が単体仕様となります。
O1 (MAIN PROGRAM A-1/BH0092*A-2/
BH0095); . . . . . . . . . . . . . . . . . . . . . . . . . . . . プログラム番号(プログラムの先頭で、1 度だけ指令します。)
#500 = 50.; . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド1 でつかむワーク全長
#501 = 50.; . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド2 でつかむワーク全長
#502 = 45.; . . . . . . . . . . . . . . . . . . . . . . . . . . . NC 旋盤チャック端面より爪の高さ
#503 = 15.; . . . . . . . . . . . . . . . . . . . . . . . . . . . チャッキング深さ
#504 = 35.; . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド1 端面より爪の高さ
#505 = 20.; . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド1 チャッキング深さ
#506 = 35.; . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド2 端面より爪の高さ
#507 = 15.; . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド2 チャッキング深さ
#520 = 0;
#521 = 0;
#522 = 0;
#523 = 0;
#554 = 0;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . オリエンテーション
#556 = 0;
#557 = 0;
#569 = 0;
M98 P9101 (CALL LOADER PROGRAM); . . ローダサブプログラムの呼出し
M30;
- プログラムO9101 はサブプログラムとして使用しますので、これを呼び出すメインプログラムを作成してください。サブプログラムO9101 は基本的に変更する必要はありません。
- 段取り替え時に、マクロ変数を手動操作にて変更する場合は必要ありませんが、例のように変更が必要となるマクロ変数をメインプログラムで指令しておくと便利です。
- 設定の必要なマクロ変数は#500 ~、#550 ~です。
#100 ~はサブプログラム内で計算するので設定する必要はありません。
ここまでが、メインプログラムとなります。
ここから、NC旋盤側のプログラム例となります。
4-3 NC 旋盤加工プログラム
O1; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プログラム番号(プログラムの先頭で、1 度だけ指令します。)
M89; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ワークカウンタ加工プログラム
T**00; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . オフセットキャンセル
G28 U0 W0 M5; . . . . . . . . . . . . . . . . . . . . . . . 機械原位置、主軸停止
T100; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 刃物台原位置
M37; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 天井シャッタ開
M64; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダリクエスト
M30; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プログラムエンド
- M64(ローダリクエスト)の完了信号はローダ進入中に出力します(時間短縮の為)
ので、必ずM64 の次のブロックはM30 としてください。
- M89(ワークカウンタ)を実行してNC 旋盤がカウントアップしたとき、ローダが次の素材を取っていた場合そのワークをローディングしますので、できるだけプログラムの先頭でM89 を指令してください。
カウントアップでスタートインタロックとなる場合、特に注意してください。
- アンローディングでオリエンテーションが必要な場合はM19 を指令してください。
M19. . . . . . . 旋盤主軸オリエンテーション
ここまでがNC旋盤側となります。
ここからが、実際にローダーを動かすプログラム O9101 となります。
5 ローダサブプログラム
5-1 1 ローダ仕様
5-1-1 単体仕様
O9101(I98031 A03);
(LOADER-MACRO-04/09/08);
(1LD-1NC-1WS/SEAT-SENSOR)(A1, BH0092/A2, BH0095);
(VER2.0);
#160=0;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 着座再実行回数カウントをリセット
IF[#1004EQ1]GOTO4(NC/COUNT-UP); . . . . NC 旋盤カウントアップならN4 へ
IF[#1200EQ0]GOTO5(NC/NOT-HP); . . . . . . . NC 旋盤原位置でなければN5 へ
IF[#1012EQ1]GOTO6(WS/COUNT-UP); . . . . ワークストッカがカウントアップならN6 へ
IF[#1002+#1003EQ0]GOTO7; . . . . . . . . . . . . NC 旋盤チャックのクランプ確認とアンクランプ確認がオフならN7 へ
IF[#4006EQ20]GOTO60; . . . . . . . . . . . . . . . . #4006 が20(インチ仕様)ならN60 へ
IF[#508LT1.]GOTO11; . . . . . . . . . . . . . . . . . . #508 が1 mm より小ならN11 へ
IF[#509LT10.]GOTO12; . . . . . . . . . . . . . . . . . #509 が10 mm より小ならN12 へ
IF[#518LT1.]GOTO13; . . . . . . . . . . . . . . . . . . #518 が1 mm より小ならN13 へ
IF[#518GT5.]GOTO14; . . . . . . . . . . . . . . . . . . #518 が5 mm より大ならN14 へ
GOTO61; . . . . . . . . . . . . . . . . . . . . . . . . . . . . N61 へ
N60; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N60
IF[#508LT0.04]GOTO11; . . . . . . . . . . . . . . . . #508 が0.04 inch より小ならN11 へ
IF[#509LT0.4]GOTO12; . . . . . . . . . . . . . . . . . #509 が0.4 inch より小ならN12 へ
IF[#518LT0.04]GOTO13; . . . . . . . . . . . . . . . . #518 が0.04 inch より小ならN13 へ
IF[#518GT0.2]GOTO14; . . . . . . . . . . . . . . . . . #518 が0.2 inch より大ならN14 へ
N61; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N61
IF[#5021NE0]GOTO15; . . . . . . . . . . . . . . . . . ローダX 軸が原位置でなければN15 へ
IF[[#1002NE1]AND[#1009EQ0]AND
[#1010EQ0]]GOTO16; . . . . . . . . . . . . . . . . . . NC 旋盤チャック、ローダハンド1, 2 すべてクランプならN16 へIF[#1003NE#1014]GOTO17; . . . . . . . . . . . . . NC 旋盤チャックがクランプのときローダリクエストオフならN17 へ
IF[[#1209EQ0]AND[#1218EQ1]AND[#1009+
#1010NE2]]GOTO18; . . . . . . . . . . . . . . . . . . . ローダハンド旋回有効領域ではなく、ハンド左旋回位置で、ローダハンドがクランプならN18 へ
/GOTO100; . . . . . . . . . . . . . . . . . . . . . . . . . . . ブロックデリートオフならN100 へプログラミング D-19
#3000=0(LOADER/BLOCK-DELETE-ON); . . アラーム/ブロックデリートオン
N4#3000=4(NC/COUNT-UP);. . . . . . . . . . . . . アラーム/ NC 旋盤カウントアップ
N5#3000=5(NC/NOT-HOME-POSITION); . . . アラーム/ NC 旋盤が原位置にない
N6#3000=6(WORK-STOCKER/COUNT-UP);. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . アラーム/ワークストッカがカウントアップしている
N7#3000=7(NC/CL-UCL-ERR); . . . . . . . . . . . アラーム/ NC 旋盤チャックのクランプ確認もアンクランプ確認もオンしていない
N8#3000=8(UNLD/H2-CL); . . . . . . . . . . . . . . アラーム/アンローディング時にローダハンド2 がクランプしている
N9#3000=9(LD/NC-CL); . . . . . . . . . . . . . . . . . アラーム/ローディング時にNC 旋盤のチャックがクランプしている
N11#3000=11(#508LT1./#508LT0.04); . . . . . . アラーム/ #508 が1 mm より小、または#508 が0.04 inch より小
N12#3000=12(#509LT10./#509LT0.4);. . . . . . アラーム/ #509 が10 mm より小、または#509 が0.4 inch より小
N13#3000=13(#518LT1./#518LT0.04);. . . . . . アラーム/ #518 が1 mm より小、または#518 が0.04 inch より小
N14#3000=14(#518GT5./#518GT0.2); . . . . . . アラーム/ #518 が5 mm より大、または#518 が0.2 inch より大
N15#3000=15(X/NOT-HP);. . . . . . . . . . . . . . . アラーム/ローダX 軸が原位置にない
N16#3000=16(NC-CL/H1-CL/H2-CL); . . . . . . アラーム/ NC 旋盤チャック、ローダハンド1, 2 すべてがクランプしている
N17#3000=17(LD-REQ-OFF); . . . . . . . . . . . . アラーム/ NC 旋盤のローダリクエストがオフ
N18#3000=18(HAND-NOT-TURNPOSITION/&/
HAND-DOWN/&/H1-OR-H2-
CLAMP); . . . . . . . . . . . . . . . . . . . . . . . . . . . . . アラーム/ローダがハンド旋回可能領域にないときに、ハンド左旋回位置でハンドがクランプである
N19#3000=19(SEAT-NG); . . . . . . . . . . . . . . . 着座確認再実行回数を超えた
N100; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N100
G90G0X0;. . . . . . . . . . . . . . . . . . . . . . . . . . . . X 軸原位置へ
M56(WS-AUTO); . . . . . . . . . . . . . . . . . . . . . . ワークストッカ自動モード
#100=#510+#504−#505(H1-X); . . . . . . . . . . . #100 のX 座標計算
#101=#512+#501+#506−#507(H2-X); . . . . . . #101 のX 座標計算
#102=#515+#502−#503+#500+#504−
#505(H1-Z); . . . . . . . . . . . . . . . . . . . . . . . . . . #102 のZ 座標計算
#103=#517+#502−#503+#501+#506−
#507(H2-Z); . . . . . . . . . . . . . . . . . . . . . . . . . . #103 のZ 座標計算
#104=#100+#508+#520(H1-X); . . . . . . . . . . . #104 のX 座標計算D-20 プログラミング
#105=#101+#508+#521(H2-X); . . . . . . . . . . . #105 のX 座標計算
#106=#102+#508+#522(H1-Z); . . . . . . . . . . . #106 のZ 座標計算
#107=#103+#508+#523(H2-Z); . . . . . . . . . . . #107 のZ 座標計算
#108=#100−#518(H1-X); . . . . . . . . . . . . . . . . #108 のX 座標計算
#109=#102−#518(H1-Z); . . . . . . . . . . . . . . . . #109 のZ 座標計算
#110=#100+#505+#509(H1-X); . . . . . . . . . . . #110 のX 座標計算
#111=#101+#507+#509(H2-X); . . . . . . . . . . . #111 のX 座標計算
#112=#102+#505+#509(H1-Z); . . . . . . . . . . . #112 のZ 座標計算
#113=#103+#507+#509(H2-Z); . . . . . . . . . . . #113 のZ 座標計算
#114=#102+#503+#509(H1-Z); . . . . . . . . . . . #114 のZ 座標計算
#115=#103+#503+#509(H2-Z); . . . . . . . . . . . #115 のZ 座標計算
#116=#103+#500+#509(H2-Z); . . . . . . . . . . . #116 のZ 座標計算
#117=[#514+#516]/2+#527(H-AIR-X); . . . . . . ローダハンドエアブローX 座標計算
IF[#110GT#111]GOTO110; . . . . . . . . . . . . . . . #110 が#111 より大ならN110 へ
#110=#111; . . . . . . . . . . . . . . . . . . . . . . . . . . . #110 に#111 を代入
N110; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N110
IF[#110GT−10.]GOTO120; . . . . . . . . . . . . . . . #110 が−10. より大ならN120 へ
IF[#569NE0]GOTO130; . . . . . . . . . . . . . . . . . #569 が0 でないときN130 へ
N120; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N120
#110=0;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #110 に0 を代入
N130; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N130
IF[#112GT#116]GOTO140;. . . . . . . . . . . . . . . #112 が#116 より大ならN140 へ
#112=#116; . . . . . . . . . . . . . . . . . . . . . . . . . . . #112 に#116 を代入
N140; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N140
IF[#113GT#114]GOTO150;. . . . . . . . . . . . . . . #113 が#114 より大ならN150 へ
#113=#114; . . . . . . . . . . . . . . . . . . . . . . . . . . . #113 に#114 を代入
N150; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N150
IF[#114GT#115]GOTO160;. . . . . . . . . . . . . . . #114 が#115 より大ならN160 へ
#114=#115; . . . . . . . . . . . . . . . . . . . . . . . . . . . #114 に#115 を代入
N160; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N160
#118=#513(H-TURN-Z/WS-L); . . . . . . . . . . . . ワークストッカ左仕様のハンド旋回Z 座標
IF[#515GE0]GOTO170; . . . . . . . . . . . . . . . . . #515 が正数(ワークストッカ左仕様)ならN170 へ
#118=#511(H-TURN-Z/WS-R);. . . . . . . . . . . . ワークストッカ右仕様のハンド旋回Z 座標
N170; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N170プログラミング D-21
#140=75000.; . . . . . . . . . . . . . . . . . . . . . . . . . #140 に75000. を代入
#141=2000.; . . . . . . . . . . . . . . . . . . . . . . . . . . #141 に2000. を代入
IF[#4006EQ21]GOTO180; . . . . . . . . . . . . . . . #4006 が21(ミリ仕様)ならN180 へ
#140=FIX[75000./25.4]; . . . . . . . . . . . . . . . . . #140 に2952. を代入
#141=FIX[2000./25.4]; . . . . . . . . . . . . . . . . . . #141 に78. を代入
N180; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N180
#150=0(END-OFF); . . . . . . . . . . . . . . . . . . . . 終了フラグ#150 を0 に
M78(WS-IN-OK); . . . . . . . . . . . . . . . . . . . . . . ワークストッカ内進入可確認
IF[#1209EQ0]GOTO190(HAND-TURN-OK);
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ハンド旋回可能位置でなければN190 へ
M60(H-SIDE); . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド横向きに旋回
N190; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N190
Z[#118];. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド旋回位置へZ 軸移動
M60(H-TURN); . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド横向きに旋回
IF[#1012EQ1]GOTO6(WS/COUNT-UP); . . . . ワークストッカがカウントアップしていればN6 へ
IF[#1009+#1010EQ0]GOTO1300(H1/H2-CL);
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド1, 2 共クランプならN1300 へ
IF[#1009EQ0]GOTO1200(H1-CL); . . . . . . . . . ローダハンド1 がクランプならN1200 へ
IF[#1010EQ0]GOTO1400(H2-CL); . . . . . . . . . ローダハンド2 がクランプならN1400 へ
N1000; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N1000
#160=0;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 着座再実行回数カウントをリセット
G90G0Z[#118](H-TURN-Z); . . . . . . . . . . . . . . ローダハンド旋回位置へZ 軸移動
M1; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . オプショナルストップ
IF[#150EQ0]GOTO1100(NOT-END); . . . . . . . 終了フラグ#150 が0 ならN1100 へ
G1X0F[#140]; . . . . . . . . . . . . . . . . . . . . . . . . . X 軸原点復帰
M60(H-SIDE); . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド横向きに旋回
WHILE[[#1005+#1014]EQ0]DO1(PRG-END/
LD-REQ); . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NC 旋盤からのローダリクエストまたはプログラムエンド確認
END1;
IF[#1012+#553EQ0]GOTO9000(END); . . . . . ワークストッカがカウントアップでなく、
#553 が0 ならN9000(終了)へ
IF[#1003EQ1]GOTO1200(NC-CL); . . . . . . . . NC 旋盤チャッククランプならN1200 へ
GOTO9000(END); . . . . . . . . . . . . . . . . . . . . . N9000 へ
N1100(TAKE-H1/WS-L1); . . . . . . . . . . . . . . . . N1100「リフタ1 から素材を取る」
D-22 プログラミング
IF[#5021LE−10.]GOTO1110(E3-AREA); . . . . X 座標が−10. 以下(E3 領域)ならN1110 へ
M61M78(H-DOWN/WS-IN-OK); . . . . . . . . . . . ローダハンド下向きに旋回/ワークストッカ内進入可確認
N1110#150=1(END-ON); . . . . . . . . . . . . . . . . N1110、終了フラグ#150 を1 に
M200(MACRO-STOP-BUFFERING); . . . . . . . マクロ再計算指令
/#150=#1004+#1012(BDT/COUNT-UP); . . . . ブロックデリートオフまたはカウントアップでないなら#150 を0 に
IF[#150NE0]GOTO1000; . . . . . . . . . . . . . . . . 終了フラグ#150 が0 でないならN1000 へ
G90G1Z[#511]F[#140](L1-H1);. . . . . . . . . . . . リフタ1 中心へ
G0X[#104]; . . . . . . . . . . . . . . . . . . . . . . . . . . . クランプ位置手前へ
G1X[#108]F[#141]; . . . . . . . . . . . . . . . . . . . . . クランプ位置へ
M62(H1-CL);. . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド1 クランプ
G91X[#508]; . . . . . . . . . . . . . . . . . . . . . . . . . . ワーク持ち上げ
G90G0X0;. . . . . . . . . . . . . . . . . . . . . . . . . . . . X 軸原点復帰
Z[#118](H-TURN-Z); . . . . . . . . . . . . . . . . . . . . ローダハンド旋回位置へZ 軸移動
M60(H-SIDE); . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド横向きに旋回
N1200(UNLD-H2/NC); . . . . . . . . . . . . . . . . . . N1200「NC 旋盤からアンローディング」
IF[#1002EQ1]GOTO1300(NC-UCL); . . . . . . . NC 旋盤チャックアンクランプならN1300 へ
IF[#1010NE1]GOTO8(H2-CL); . . . . . . . . . . . . ローダハンド2 がクランプならN8 へ
G0Z[#113]M80(NC-IN-OK/LD-REQ); . . . . . . . NC 旋盤内進入位置へZ 軸移動/ NC 旋盤内進入可& ローダリクエスト確認
X[#516]M51(NC-H2/SP-AIR-ON); . . . . . . . . . NC 旋盤チャック中心へ/主軸エアブローオン
G64G1Z[#107]F[#140];. . . . . . . . . . . . . . . . . . アンローディング位置手前へ
G61Z[#103]F[#141]M59(SP-AIR-OFF); . . . . . アンローディング位置へ/主軸エアブローオフ
M81(H2-CL/NC-UCL); . . . . . . . . . . . . . . . . . . ローダハンド2 クランプ/ NC 旋盤チャックアンクランプ
G91G64Z[#508]M51(SP-AIR-ON);. . . . . . . . . Z 軸方向退避/主軸エアブローオン
G61G90Z[#114]F[#140]M66(H-AIR-ON); . . . . Z 軸方向退避/ローダハンドエアブローオン
G64X[#117]M31(SP-JOG-ON); . . . . . . . . . . . ローダハンドエアブロー位置へX 軸移動/スピンドルジョグオン
G61G4X[#526](TIMER); . . . . . . . . . . . . . . . . . タイマ
IF[#1009EQ0]GOTO1310(H1-CL); . . . . . . . . . ローダハンド1 クランプならN1310 へ
G0X0M67(H-AIR-OFF); . . . . . . . . . . . . . . . . . X 軸原位置へ
M51G4X[#519](SP-AIR-ON/TIMER); . . . . . . . 主軸エアブローオン/タイマ
M39(SP-JOG-OFF); . . . . . . . . . . . . . . . . . . . . スピンドルジョグオフ
M59(SP-AIR-OFF);. . . . . . . . . . . . . . . . . . . . . 主軸エアブローオフ
プログラミング D-23
#1102=1(LD-REQ-F); . . . . . . . . . . . . . . . . . . . NC 旋盤へローダリクエスト完了出力
N1300(LD-H1/NC); . . . . . . . . . . . . . . . . . . . . . N1300「NC 旋盤へローディング」
#160=0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 着座再実行回数カウントをリセット
IF[#1009EQ1]GOTO1400(H1-UCL); . . . . . . . ローダハンド1 アンクランプならN1400 へ
IF[#1002NE1]GOTO1200(NC-CL);. . . . . . . . . NC 旋盤チャッククランプならN1200 へ
N1305; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N1305
G90G0Z[#114]M96(NS-IN-OK); . . . . . . . . . . . NC 旋盤内進入位置へZ 軸移動/ NC 旋盤内進入可確認
M200; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . マクロ再計算指令
IF[#1002NE1]GOTO1200(NC-CL);. . . . . . . . . NC 旋盤チャッククランプならN1200 へ
M51M31(SP-AIR-ON/SP-JOG-ON);. . . . . . . . 主軸エアブローオン/スピンドルジョグオン
X[#117]M66(H-AIR-ON);. . . . . . . . . . . . . . . . . ローダハンドエアブロー位置へX 軸移動/
ローダハンドエアブローオン
G4X[#526](TIMER); . . . . . . . . . . . . . . . . . . . . タイマ
N1310; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N1310
M67G4X[#519](H-AIR-OFF/TIMER); . . . . . . . ローダハンドエアブローオフ/タイマ
M39(SP-JOG-OFF); . . . . . . . . . . . . . . . . . . . . スピンドルジョグオフ
#1101=#554(ORT); . . . . . . . . . . . . . . . . . . . . . #554 が1 のときオリエンテーション指令
G90X[#514](NC-H1); . . . . . . . . . . . . . . . . . . . NC 旋盤チャック中心へ
WHILE[#1008NE#554]DO1(ORT-F); . . . . . . . #554 が1 のときオリエンテーション完了確認
END1;
WHILE[#1006NE1]DO1(SP-STOP);. . . . . . . . 主軸停止確認
END1;
G64G1Z[#106]F[#140];. . . . . . . . . . . . . . . . . . ローディング位置手前へ
G61Z[#109]F[#141]M59(SP-AIR-OFF); . . . . . ローディング位置へ/主軸エアブローオフ
M86(H1-UCL/NC-CL); . . . . . . . . . . . . . . . . . . ローダハンド1 アンクランプ/ NC 旋盤チャッククランプ
#1102=1(LD-REQ-F); . . . . . . . . . . . . . . . . . . . NC 旋盤へローダリクエスト完了出力
G91G64Z[#508];. . . . . . . . . . . . . . . . . . . . . . . Z 軸方向退避
G61G90Z[#112]F[#140]; . . . . . . . . . . . . . . . . . Z 軸方向退避
G0X0; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X 軸原点復帰
IF[#556NE1]GOTO1390; . . . . . . . . . . . . . . . . 着座確認なしならN1390 へ
IF[#1027EQ1]GOTO1390; . . . . . . . . . . . . . . . 着座確認がオンのときはN1390 へ
#160=#160+1; . . . . . . . . . . . . . . . . . . . . . . . . 着座再実行カウント
IF[#160GE#557]GOTO19; . . . . . . . . . . . . . . . 着座再実行回数が、着座再実行回数上限値以上のときはN19 へ
D-24 プログラミング
#1101=#554(ORT); . . . . . . . . . . . . . . . . . . . . . #554 が1 のときオリエンテーション指令
G90X[#514](NC-H1); . . . . . . . . . . . . . . . . . . . NC 旋盤チャック中心へ
WHILE[#1008NE#554]DO1(ORT-F); . . . . . . . #554 が1 のときオリエンテーション完了確認
END1;
WHILE[#1006NE1]DO1(SP-STOP);. . . . . . . . 主軸停止確認
END1;
G64G1Z[#106]F[#140];. . . . . . . . . . . . . . . . . . ローディング位置手前へ
G61Z[#109]F[#141]; . . . . . . . . . . . . . . . . . . . . ローディング位置へ
M62(H1-CL);. . . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド1 クランプ
M11(NC-UCL); . . . . . . . . . . . . . . . . . . . . . . . . NC 旋盤チャックアンクランプ
G91G64Z[#508];. . . . . . . . . . . . . . . . . . . . . . . Z 軸方向退避
G61G90Z[#112]F[#140]; . . . . . . . . . . . . . . . . . Z 軸方向退避
G0X0; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X 軸原点復帰
GOTO1305; . . . . . . . . . . . . . . . . . . . . . . . . . . N1305 へ
N1390; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N1390
#1100=1(NC-ST); . . . . . . . . . . . . . . . . . . . . . . NC 旋盤へサイクルスタート指令
N1400(PUT-H2/WS-L2);. . . . . . . . . . . . . . . . . N1400(リフタ2 へ完成品を置く)
IF[#1010EQ1]GOTO1000(H2-UCL); . . . . . . . ローダハンド2 アンクランプならN1000 へ
G90G0Z[#513](L2-H2);. . . . . . . . . . . . . . . . . . リフタ2 中心へ
M61M78(H-DOWN/WS-IN-OK); . . . . . . . . . . . ローダハンド下向きに旋回/ワークストッカ内進入可確認
X[#105]; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 完成品排出位置手前へ
G1X[#101]F[#141]; . . . . . . . . . . . . . . . . . . . . . 完成品排出位置へ
M65(H2-UCL); . . . . . . . . . . . . . . . . . . . . . . . . ローダハンド2 アンクランプ
G91G64X[#508];. . . . . . . . . . . . . . . . . . . . . . . X 軸方向退避
IF[#110EQ0]GOTO1410; . . . . . . . . . . . . . . . . #110 が0 ならN1410 へ
G61G90X[#110]F[#140];. . . . . . . . . . . . . . . . . X 軸方向退避
GOTO1000; . . . . . . . . . . . . . . . . . . . . . . . . . . N1000 へ
N1410; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N1410
G61G90G0X[#110]; . . . . . . . . . . . . . . . . . . . . X 軸方向退避
GOTO1000; . . . . . . . . . . . . . . . . . . . . . . . . . . N1000 へ
N9000(END); . . . . . . . . . . . . . . . . . . . . . . . . . N9000(終了処理)
G90G0Z[#118](H-TURN-Z); . . . . . . . . . . . . . . ローダハンド旋回位置へZ 軸移動
M61(H-DOWN); . . . . . . . . . . . . . . . . . . . . . . . ローダハンド下向きに旋回プログラミング D-25
G90G0Z0M55(WS-AUTO-CAN); . . . . . . . . . . Z 軸原点位置へ/ワークストッカ単独動作モード
G91G28X0Z0; . . . . . . . . . . . . . . . . . . . . . . . . X 軸、Z 軸レファレンス点復帰
M43(LIFT-DOWN); . . . . . . . . . . . . . . . . . . . . . 両リフタ下降
WHILE[[#1005+#1014]EQ0]DO1(PRG-END/
LD-REQ); . . . . . . . . . . . . . . . . . . . . . . . . . . . . NC 旋盤からのローダリクエストまたはプロ
グラムエンド確認
END1;
#1102=1(LD-REQ-F); . . . . . . . . . . . . . . . . . . . NC 旋盤へローダリクエスト完了出力
M97(APF); . . . . . . . . . . . . . . . . . . . . . . . . . . . NC 旋盤へ自動電源断出力
IF[#1004EQ1]GOTO4(NC/COUNT-UP); . . . . NC 旋盤カウントアップならN4 へ
M99; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 終了__
ここまでが標準のサブプログラム【O9101(I98031 A03)】となります。
ここまでを理解して、「何が問題で、何をしたいのか」に対応していきます。
ここの切粉が問題だでは「ここのプログラムを〇〇してみよう」の基本となります。
今回は以上となります。
担当者は、内容を理解して次の行動へつなげましょう!

No responses yet