마스터캠 2021 활용한 소소한 팁-4-2 (각인 공정 관련 매크로 관련하여)

반응형

 각인매크로 생성하는 방법 중 제일 기초적인 방법을 설명하겠습니다.

 

먼저

 

1. 글자별 가공경로 생성된것을 절댓값으로 출력하고 각 글자단위(천 단위, 백단위, 십 단위, 일단위) 배치원점에 워크좌표 값을 배치하고 우선 제품 일련번호 변수를 설정한 후 이 변수를 읽어 각글자 자리단위 (천, 백, 십, 일)로 분해 읽어드려 각 글자단위 배치 원점에 각 지정 숫자 가공경로를 호출프로그램 형식으로 불러드려 각인 작업을 실행합니다.

 

에 대하여 설명하겠습니다.
* 기본 출처는 바지게님(Bajige) 블로그 내용 각출입니다.

 


매크로 작동원리(?)는 다음과 같습니다.

1. 우선 해당 숫자의 가공정의를 먼저 생성하여 한글자당 가공경로(NC데이터)를 생성하고 별도 프로그램으로 생성한다.(호출용)


2. 각인 메인 프로그램을 생성하며 우선적으로 각 해당 변수를 지정합니다.
#500 = 제품번호(시리얼) 초기 번호 (각인 시작할 초기 제품번호)
*증분은 간단하게 1 단위로 증분 하는 것으로 합니다.


3. 해당 각인위치는 워크좌표롤 설정하며 일단위는 G55 , 십 단위는 G56 , 백단위는 G57 , 천 단위는 G58로 글자 좌측 상단 지점을 원점으로 지정합니다.


4. 기본적으로 제품번호 변수(#500)를 읽어서 각위치 별로 숫자를 산출하기 위하여 각단 위별 변수(일단위=#1 , 십 단위=#2 , 백단위=#3 , 천 단위=#4)에 대입하며 산출된 숫자를 식별한 후 이 숫자에 해당하는 가공경로 호출프로그램을 호출하여 해당 숫자를 각인합니다.


5. 모든 각인이 완료되면 다시 식별변수(#1,#2,#3,#4)는 초기화되고 제품번호(#500)는 증분 되어 (+1) 저장됩니다.


6. 다음 제품 가공이 완료되면 다시 4번으로 돌아가서 반복한다.

위처럼 작업이 이루어집니다.

 


이를 다시 자세히 설명하겠습니다.

1. 우선 해당 숫자의 가공정의를 먼저 생성하여 한글자당 가공경로(NC데이터)를 생성하고 별도 프로그램으로 생성한다.(호출용)


우선 각 숫자별 가공정의를 생성하고 따로 저장합니다.

* 이때 고려해야 할 사항이 각인 메인 프로그램과 이 호출프로그램이 조화되어야 하므로(사전에 생각을 좀 하셔야 합니다. 현재로서는 각 숫자의 원점과 가공시작위치가 다르기 때문에 이에 대한 이송높이 진입높이 정리가 필요합니다.) 우선 여기서는 각 숫자별 가공경로는 진입높이에서 시작하는 것으로 가공정의를 통일하고 각인 메인 프로그램은 이송높이까지만 공구위치를 확정하는 것으로 하겠습니다.


 즉 각 각인 문자 체인을 우선 원점(위치는 작업자가 선정..)으로 모아두고 각각 글자별 가공정의를 이송높이 Z5.0 , 진입높이 Z3.0 , 소재상단 Z0.0 가공깊이 Z-0.05로 통일하여 정의하였습니다.

 

 


 그리고 해당 글자별 가공정의를 "1"=O0101 , "2"=O0102 , "3"=O0103......."0"=O0100을 정의하여 절댓값을 출력하여 저장해 놓습니다.

*이때 이 글자별 가공정의 호출프로그램 명칭은 임의로 하는 것이 아니고 이후 설명할 각 시리얼번호의 산출값에 기준하여 생성하셔야 합니다.

*임의적인 값은 안되고 각 글자 호출프로그램 변숫값에 준하여 호출프로그램 명칭을 정해야 한다는 것입니다.

 


* 이때 주의사항은 NC데이터 내에 워크좌표(G54 등등)는 삭제하여야 하며 가능한 각인 경로 그 자체만 존재하도록 하시기 바랍니다.


* 각인 공구의 대한 가공정의 (공구체인지, 회전수, 공구길이보정 등)은 각인 메인프로그램에서 정의합니다.

 

각인프로그램(호출프로그램) 생성이 완료되면 다음 각인 메인 프로그램 생성을 합니다.

우선 기본적인 매크로 프로그램 형신은 다음과 같습니다.


 즉 제품 가공이 끝나면 각인메인 프로그램을 호출하거나 또는 작업자가 제품완료 확인 후 각인 메인프로그램을 실행하거나(여기서는 별도로 작업자가 제품확인후 각인 메인 프로그램를 실행하는 것으로 설명하겠습니다.) 방법은 작업자가 선택하여 매크로를 생성합니다.

 그럼 각인메인 프로그램이 실행되면 우선 선 증분변수#501 값과 제품번호 시작변수#500 값과 비교하여 #501 값이 #500 값보다 작거나 같은 경우이면(전 가공 각인번호가 지금 시작하려는 각인번호 보다 작은 경우(각인 오류 방지) 에러메시지 출력하고 해당 프로그램을 종료합니다.

 

* 이 루틴 생성의 의미는 만일의 경우 현재 제품의 각인작업을 진행 후 종료하고 다른 작업진행 시 (#501 값이 변동된 가능성 발생) 이후 다시 해당 제품 각인 작업 시 #501변수값을 고려하지 않고 그냥 작업시 불량 발생을 방지 차원에서 작동합니다.

(사실 큰 의미는 없습니다.)

 
 반대로 #501 값이 #500 값보다 크다는 것은 전 가공번호 다음 증분번호이라는 의미가 되므로 각인 작업을 진행합니다.

 이 증분변수#501 값을 먼저 천 단위 값을 산출하여(네 자리 숫자중 천단위에 해당하는 숫자만 추출하여) G55 워크좌표 X0.0 , Y0.0 , Z0.0 으로 이동하여 여기서 해당 숫자 각인 프로그램를 호출하여 각인한다.

* 우선 여기서는 제품번호가 네자리 숫자로 진행하는 것을 전제 조건으로 진행합니다.


 이후 십 단위 = G56 백단위=G57 천 단위=G58로 이어지며 각인을 완료한 후 해당 제품번호 변수#501를 +1 증분 하여 다시 각인 메인프로그램으로 되돌아간다.

이것을 계속 반복하게 됩니다.

 


먼저 각인 메인 프로그램

 

먼저 각인 메인 프로그램만 먼저 보겠습니다.

%
O0010
G0 G17 G40 G49 G80 G90
G91G 30Z0.M19
T2 M6
S8000 M3
G43 H2 Z15. M8
Z5.

 

#500=1234

IF(#501 LT#500) GOTO N101


#1=0
#2=0
#3=0
#4=0
#5=0
#10=0

 

N1000
#5=[#501]/1000
#1=FIX [#5]
G58 X0.0 Y0.0
M98 P [#1+100]

N100
#5=0.
#10=#501-[#1*1000]
#501=#10
#5=[#10]/100.
#2=FIX [#5]
G57 X0.0 Y0.0
M98 P [#2+100]

N10
#5=0
#10=#501-[#2*100]
#501=#10
#5=[#10]/10
#3=FIX [#5]
G56 X0.0 Y0.0
M98 P [#3+100]

N1
#5=0
#10=#501-[#3*10]
#5=#10
#4=FIX [#5]
G55 X0.0 Y0.0
M98 P [#4+100]

 

#501=#502+1

GOTO N102

N101

#3000=5(number start error) 

N102 

M30
%

 

각인 메인 프로그램 해설은 다음과 같습니다.

 

* ( ) 안의 내용은 주석문에 해당하는 글입니다. (실행과 관계없습니다.)


O0010<<<(각인 메인 프로그램명)
G0 G17 G40 G49 G80 G90
G91G 30Z0.M19
T2 M6 <<<(각인용 공구 : 1 SPHERICAL / BALL-NOSED ENDMILL   )
S8000 M3
G43 H2 Z15. M8
Z5.

#500=1234 <<<(제품번호 초기 시작값 입력 / 만일 다음에 다시 하게 되면 여기 변숫값을 수정합니다.)

(예제로서 1,234를 지정합니다.)

 

IF(#501 LT#500) GOTO N101 <<<(만일 중단 후 다시 시작 시 #501 값이 오류 또는 변동으로 값이 #500 보다 작은 경우(각인 번호 오류 방지) 오류메시지 출력 루틴으로 이동)


(제품번호 각인 메인 프로그램)
#1=0 <<<(천 단위 번호 식별용변수)
#2=0 <<<(백단위 번호 식별용변수)
#3=0 <<<(십 단위 번호 식별용변수)
#4=0 <<<(일단위 번호 식별용변수)
#5=0 <<<(각 해당 번호 식별용 계산 변수)
#10=0 <<<(각 단위별 번호 정리용 변수)
* 매 번호 각인 시 재계산을 위하여 각 변숫값 초기화

초기 변수값 표시 : #500=1,234 #501=1,234 #1=0 #2=0 #3=0 #4=0 #5=0 #10=0

N1000 <<<천 단위 번호 값 산출 프로그램 루틴 첫 줄
#5=[#501/1000] <<<(천 단위 번호 산출을 위한 초기작업)
(예제로 #501=1,234가 저장되어 있으므로 1,234/1,000 = 1.234 가 #5 변수에 저장됩니다.)
#1=FIX [#5] <<<(해당변수의 소수점 이하 값 삭제)
(앞에서 #5=1.234 이므로 0.234 가 삭제된 #1=1 이 입력됩니다.)

천 단위 번호 각인 작업
G58 X0.0 Y0.0 <<<(천 단위 번호 워크좌표 G58적용)
M98 P [#1+100] <<<(해당 번호 각인 프로그램을 호출하는데 호출프로그램 명은 #1+100 하여 정해집니다.)
(앞에서 #1=1 이므로 #1+100 = #1=101 즉 O0101(숫자 "1" 각인)를 호출합니다.

 

#502=#501 (차후 제품번호 증분을 위하여 현재 제품번호값를 #502 변수에 입력합니다. #501 변수는 값이 변동됨)

천 단위 번호 각인 후 변숫값 표시 : #500=1,234 #501=1,234 #1=1 #2=0 #3=0 #4=0 #5=1,234 #10=0

N100 <<<백단위 번호 값 산출 프로그램 루틴 첫 줄
#5=0 <<<(다음 계산을 위한 변숫값 초기화)
#10=#501-[#1*1000] <<<(백단위 값을 산출하기 위하여 천 단위 값을 삭제시키는 작업)
(앞에서 #1에는 "1"이라는 값이 입력되어 있는데 이는 천 단위 이므로 이값을 다시 천단위로 만들어 #501값에서 천단위 빼기 위한 작업입니다.)
(즉 #501(1,234) - [#1(1)*1,000=1,000 = 1,234-1,000 = 234 즉 #10 에는 234 가 입력됩니다.
#501=#10 <<<(#501 변숫값에 백단위로 정리된 번호값 입력)
#5=[#10/100] <<<(백단위 번호 산출을 위한 초기작업)
(예제로 #10=234가 저장되어 있으므로 234/100 = 2.34 가 #5 변수에 저장됩니다.)
#2=FIX [#5] <<<(해당변수의 소수점 이하 값 삭제)
(앞에서 #5=2.34 이므로 0.34 가 삭제된 #2=2 이 입력됩니다.)

백단위 번호 각인 작업
G57 X0.0 Y0.0 <<<(백단위 번호 워크좌표 G57적용)
M98 P [#2+100] <<<(해당 번호 각인 프로그램을 호출하는데 호출프로그램 명은 #2+100 하여 정해집니다.)
(앞에서 #2=2 이므로 #2+100 = #2=102 즉 O0102(숫자 "2" 각인)를 호출합니다.

백단위 번호 각인 후 변숫값 표시 : #500=1,234 #501=234 #1=1 #2=2 #3=0 #4=0 #5=2.34 #10=234

N10 <<< 십 단위 번호값 산출 프로그램 루틴 첫 줄
#5=0 <<<(다음 계산을 위한 변숫값 초기화)
#10=#501-[#2*100] <<<(십 단위 값을 산출하기 위하여 백단위 값을 삭제시키는 작업)
(앞에서 #2에는 "2"이라는 값이 입력되어 있는데 이는 백단위 이므로 이 값을 다시 백단위로 만들어 #501 값에서 백단위 빼기 위한 작업입니다.)
(즉 #501(234) - [#2(2)*100=200 = 234-200 = 34 즉 #10 에는 34 가 입력됩니다.
#501=#10 <<<(#501 변숫값에 십 단위로 정리된 번호값 입력)
#5=[#10]/10 <<<(십 단위 번호 산출을 위한 초기작업)
(예제로 #10=34가 저장되어 있으므로 34/10 = 3.4 가 #5 변수에 저장됩니다.)
#3=FIX [#5] <<<(해당변수의 소수점 이하 값 삭제)
(앞에서 #5=3.4 이므로 0.4 가 삭제된 #3=3 이 입력됩니다.)

십 단위 번호 각인 작업
G56 X0.0 Y0.0 <<<(십 단위 번호 워크좌표 G56적용)
M98 P [#3+100] <<<(해당 번호 각인 프로그램을 호출하는데 호출프로그램 명은 #3+100 하여 정해집니다.)
(앞에서 #3=3 이므로 #3+100 = #3=103 즉 O0103(숫자 "3" 각인)를 호출합니다.

십 단위 번호 각인 후 변숫값 표시 : #500=1,234 #501=34 #1=1 #2=2 #3=3 #4=0 #5=3.4 #10=34

N1 <<<일단위 번호값 산출 프로그램 루틴 첫 줄
#5=0 <<<(다음 계산을 위한 변숫값 초기화)
#10=#501-[#3*10] <<<(일단위 값을 산출하기 위하여 십 단위 값을 삭제시키는 작업)
(앞에서 #3에는 "3"이라는 값이 입력되어 있는데 이는 십 단위값 이므로 이값을 다시 십단위로 만들어 #501값에서 십단위 빼기 위한 작업입니다.)
(즉 #501(34) - [#3(3)*10 = 20 = 34-30 = 4 즉 #10 에는 4 가 입력됩니다.
#5=#10 <<<(일단위 번호 산출을 위한 초기작업)
(예제로 #10=4가 저장되어 있으므로 4 가 #5 변수에 저장됩니다.)
#4=FIX [#5] <<<(해당변수의 소수점 이하 값 삭제)
(앞에서 #5=4 이므로 #4=4 이 입력됩니다.)

일단위 번호 각인 작업
G55 X0.0 Y0.0 <<<(일단위 번호 워크좌표 G55적용)
M98 P [#4+100] <<<(해당 번호 각인 프로그램을 호출하는데 호출프로그램 명은 #4+100 하여 정해집니다.)
(앞에서 #4=4 이므로 #4+100 = #4=104 즉 O0104(숫자 "4" 각인)를 호출합니다.

일단위 번호 각인 후 변숫값 표시 : #500=1,234 #501=34 #1=1 #2=2 #3=3 #4=4 #5=4 #10=4

 


여기까지 오면 일단 한 번의 제품번호(예:1234)가 각인 완료 됩니다.

#501=#502+1 <<<(다음 제품 번호 각인을 위하여 해당 #501 변숫값에 증분 된 (#502+1.0) 값을 입력합니다.

 

GOTO N102 <<<(제품번호 증분 완료 후 종료 루틴으로 이동)

 

N101 <<<(번호시작 오류시 루틴)

#3000=5(number start error) <<<(초기 #501 값과 #500 값 대조 시 번호시작 값이 작은 경우(#500 보다) 알람 메시지 출력

*출력 메시지는 3005(number start error) 

N102 <<<(평시 종료 시 진입루틴)

M30 <<<(프로그램 종료, 호출형식이면 M99)

 각인작업이 완료된 상태에서 현재 적용된 변숫값


#500=1,234(초기 시작 제품번호 저장) #501=1,235(+1 증분 된) #1 #2 #3 #4 #5 #10 값은 다음 각인 작업 시 초기화되므로 의미 없습니다.

 

* 이중 #500 #501 #502 은 전역(COMMON) 변수이라 프로그램 종료 시 또는 머시닝 전원차단 등의 이유로 해당 변숫값이 삭제되지 않고 저장 되어 다음작업시 해당 변수값이 보전됩니다.


그러므로 위 예제 같은 경우 각인작업 종료 후 #500=1234 #501=1235 가 저장되어 다음 해당 프로그램에 적용됩니다.

*다만 각인작업을 연속적으로 하지 않고 중도에 종료하고 다음 기회에 다시 작업시 설정의 매크로변수 항목를 검색하여 현재 사용되는 #500 #501 #502 값을 확인 하시고 작업를 진행하셔야 합니다.

 

* 매크로 변수 현재 값을 확인하고 싶으신 분은 설정 - 오른쪽십자칸 - 커스텀매크로로 들어가서 해당 변숫값을 확인하시면 됩니다.

#500 매크로 변수 내용

 

이러한 과정을 다시 한번 설명해 드리면..


1. #500 변수에 제품번호 초기 시작번호 입력(수정)
2. 이러한 변수에 저장된 값의 각단 위별 숫자 (천, 백, 십, 일 단위) 값을 산출한 후 이 값에 기초한 각인 프로그램을 호출합니다.
3. 이러한 작업이 완료되면 다시 #501 값에 증분 된 제품번호값을 입력하여 다음 각인 작업 시 호출번호 산출 연산 값으로 사용됩니다.

이제 대충 써보니 문제점이 몇 가지 있습니다.
1. 호출프로그램이 좀 많아 다른 가공프로그램 이름과 겹치고나 중복된다.
2. 호출 프로그램 사용이 어렵다
3. 각인 숫자 원점용으로 워크좌표를 사용하여 다수 바이스 원점 사용 시 불편하다.
4. 각인 프로그램이 다수이라 관리하기 어려워 하나로 통합하길 원한다.

다음에는 이러한 문제에 대하여 다시 각인 프로그램을 설명하겠습니다. 

반응형