마스터캠 2021를 활용한 POST관련 정보(포스트 블럭 구조 사항-2)

반응형

 이번에는 저번에 이어서 알루미네이션님의 마캠뽀개기 네이버카페의 두 번째 게시글(2, 2-1)을 풀어서 설명하겠습니다.

https://cafe.naver.com/mcampokegi/139941

 

[POST 정보] 입문편 - 2. POST의 구조

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 

https://cafe.naver.com/mcampokegi/139947

 

[POST 정보] 입문편 - 2-1. 코드 추가하기

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 


 먼저 이 알루미네이션님의 이번 게시글은 보통 다음과 같은 포스트 수정 사항 발생 시 적용하기 위한 포스트 구조에 대한 정리입니다.

 즉 간혹 카페에서 문의들어오는 ..

1. 가공프로그램의 각 가공정의 마지막에 "G91 G28 Z0.;" , "G28 X0. Y0.;" 지령이 있는 경우(해당 가공 완료 후 Z 축 원점복귀와 X, Y축 원점복귀 실행) "G28 X0. Y0.;" 지령을 삭제 요청.


2. 절삭유 "M8;" 위치를 현재 위치에서 다른 위치로 출력되게 수정 요청.


3. 공구 교환 지령 "T1 M06;" 를 "M06 T1;"으로 교체 출력되게 수정 요청.


4. 특정 지령문(G5.1 Q1; , G4X5.;등)을 특정위치에 출력되도록 수정 요청.


5. 현재 출력되고 있는 지령문의 출력 순서를 바뀌고 싶은 경우.


6. 특정 지령문이 출력되지 않도록 삭제 요청.


7. 절삭유 ON지령문(M8;)을 해당 가공정의 상태에 관계없이 무조건 M8로 지령되게 하고 싶은 경우.
등등....


 이러한 포스트 수정 사항들이 있는데... 


 이에 대한 답변을 하기 곤란한 이유가 이러한 수정관련 사항이 일괄적으로 모든 포스트(POST) 내용이 동일해서 "그 경우 이 부분을 수정하시면 됩니다."가 적용하면 좋은데....


 실제적으로는 각각의 포스트가 사실상 포스트 제작자에 따라 일정 형식에 따라서 각기 다른 방법으로 생성되어 그 위치나 지령문 출력방법이 조금씩 틀립니다.


* 이러한 이유로 그것을 수정하실려면 127번째 줄 뭔가을 ON 하시면 됩니다.라는 답변이 어려워서 그 해당 항목(지령문)을 검색하여 수정하시거나 해당 수정위치는 검색하셔야(어디 있는지 알 수 없는) 하며 이러한 항목이 있는지 찾아서 수정하셔야 합니다.라는 다소 애매한(질문자 입장에서..) 답변이 나올 수밖에 없는 이유입니다.

 그래서 위 게시물 내용은 이러한 포스트상의 지령문 출력문법(?)이 어떻게 되고 어떻게 검색하여 수정 해야 하는지에 대한 답변입니다.
* 즉 물고기는 안주고 낚싯대와 미끼만 주는 경우라고.......

 


 그래서 다시 설명을 하면 다음과 같습니다.

 알루미네이션님 예를 그대로 적용하여...

 먼저 예제 가공정의를 생성합니다.



* 특이사항은 없는 1번공구 적용한 2개 가공정의(중간의 1개 공구를 공동적용한 2개 가공정의 형태를 보려고)와 2번 공구를 적용한 1개 가공정의(통상적인 가공정의)로 구성되어 있습니다.


* 포스트 출력은 Ihc의 MPMASTER.PST를 적용하였습니다. (특이한 이유는 없습니다.)

 


 일단 출력된 가공데이터(G-code)를 보면 아래와 같습니다.

 

 

 일단 보시면 좌측은 통상적인 포스트 출력 상태이고 우측은 각 구간별 출력되는 구간을 구분할수 있게 "주석문"을 추가한 포스트(임시) 출력 상태입니다.


* 이것은 실무에 이렇게 사용하라는 것이 아니고 이렇게 구분할 수 있다는 예제상의 표현이며 실제로는 저렇게 사용할 필요가 없습니다.

 


 먼저 예비 지식으로 위에 표기된 영문장은 해당 구간의 블록명입니다.

1. Pheader$
Pheader = Header postblock (포스트블록 선두구간 : 출력되는 포스트 데이터의 최선두 구간의 정의 : 포스트 맨 처음 출력문)
*위 블록명은 포스팅되어 출력되는 가공데이터의 맨 처음 구간으로 실제 가공 관련 테이터 출력 전까지 출력문을 정의합니다.

2. Psof$
Psof = Post start of file (포스트 실가공 관련 블록 선두구간 : 출력되는 포스터 데이터중 가공관련 데이터 출력 최선두 구간의 정의 : 실제 가공에 적용되는 G-code출력 시작문)
* 위 블록명은 포스팅되어 출력되는 실제 가공에 적용되는 가공데이터가 시작되는 구간에 대한 정의를 결정합니다.

3. Ptlchg0$
Ptlchg = Post tool change postblock (포스트블럭중 공구 교환에 관한 블럭 선두구간 : 해당 가공정의 공구교환 지령에 따른 해당 포스트 공구 교환 관련 지령 출력에 대한 정의 합니다.)
* Ptlchg0 또는 Ptlcjg00은 만일 가공정의가 변동되지만 공구교환이 필요 없는 (이전 공구를 이어서 사용) 경우에 적용되는 공구 교환 관련 포스트 블록명입니다.
* 즉 공구교환 지령이 없는 공구교환(포스트 특성상 가공정의가 편경 되면 공구 교환에 대한 루틴을 다시 진행해야 하는데) 실제적으로 공구교환 할 필요 없는 경우 적용됩니다.

4. Ptlchg$
Ptlchg = Post tool change postblock (포스트블록중 공구 교환에 관한 블럭 선두구간 : 해당 가공정의 공구교환 지령에 따른 해당 포스트 공구 교환 관련 지령 출력에 대한 정의 합니다.)
* 이경우는 가공정의가 변경되어 실제적인 공구교환 지령이 출력되어야 하는 상황에서 포스팅되는 블록명입니다.
* 이 부분에 실제적인 공구교환 명령 "M6"이 지령되는 부분입니다.

5. Pretract$
Pretract = 철회, 복귀(현재 진행된 가공정의가 종료함으로써 해당 공구가 공구 교환을 위하여 원점복귀 등의 조치를 지령하기 위한 구간에 대한 정의 합니다.)
* 즉 해당 가공정의가 종료되어 해당 공구가 원점복귀 하고 새로운 작업을 위한 작업(절삭유 중단, 스핀들 회전중지, 배드면의 원점복귀등)을 지령하는 포스트 블록명입니다.

6. Peof$
Peof = Post end of file (현재 진행 중인 가공정의가 전부 종료하여 마지막 현재 가공상황을 정리하기 위한 마지막 지령 구간에 대한 정의 합니다.)
* 즉 해당 가공정의에 대한 가공 관련 포스팅이 완료되어 마지막 가공상황 정리를 위한 마지막 지령하는 포스트 블록명입니다.
* "M30"이 최종적으로 지령되는 부분입니다.

 


* $=EOB(;)의 의미로서 포스트 상에서 각지령문의 구분을 위한 (지령문종료)을 알리는 포스트 작성상 문법입니다.

* 위와 같이 대부분의 포스트는 위와 같이 구분됩니다.

 해당 구간을 찾아가는 방법은 G-code 편집 프로그램(여기서는 심코 에디터)에서 해당 문자열을 검색하여 해당 구간을 찾아가시면 됩니다.

1. Pheader$

 


2. Psof$

 


3. Ptlchg0$

 


4. Ptlchg$

 


5. Pretract$

 


6. Peof$

 

 

해당 구간을 찾으시면 아래와 같이 해당 주석문을 추가하시면 아래와 같이 출력됩니다.
* 이것은 어디까지나 포스트의 어떠한 부분을 수정하면 어떻게 출력되는지를 확인하고자 하는 것이지 어떠한 의미가 있는 것은 아닙니다.


* 해당 블록명 바로 밑으로 추가하였습니다. (특별한 의미는 없습니다.)


* 다만 원하시는 특정 위치로 출력되길 바라시면 좀 더 해당 블록 구간을 살펴봐서 적절한 위치에 추가하셔야 합니다.

1. Pheader$


2. Psof$


3. Ptlchg0$


4. Ptlchg$


5. Pretract$


6. Peof$



이렇게 포스트 해당블록에 추가문을 넣어서 포스팅하면 아래와 같이 출력됩니다.

 


 그럼 이제 포스트 수정해야 할 블록위치를 설명했으니 맨 처음 포스트 수정내용을 적용하여 포스트를 수정해 보겠습니다.

 


1. 가공프로그램의 각 가공정의 마지막에 "G91 G28 Z0.;" , "G28 X0. Y0.;" 지령이 있는 경우(해당 가공 완료 후 Z 축 원점복귀와 X, Y축 원점복귀 실행) "G28 X0. Y0.;" 지령을 삭제 요청.

  현재 가공정의 종료지점에 공구 Z축 원점복귀와 동시에 배드면 X, Y축 원점복귀 지령이 내리는 것을 배드면 X, Y축 원점복귀는 삭제하길 원하는 것입니다.

  
* 포스트에 따라 가공정의 종료 때마다 (맨 마지막 말고) 생성되는 경우도 있습니다.

 


이것은 공구 복귀 구간문(Peof$) 항목을 수정하면 변경 가능 합니다.

예제 포스트 Peof$ 블록을 살펴보면.

아래와 같이 Peof$ 블록문에 "G28 X0. , Y0." 지령문이 있는 것을 볼 수 있습니다.

그래서 그 해당 지령문("G28 X0. , Y0." ; )을 잘 선택하여 삭제해 줍니다.

 

그리고 해당 포스트를 저장 후 다시 포스팅하여 출력해 보면 해당 지령이 사라지는 것을 볼 수 있습니다.

 


* 다만 예외적인 경우도 있습니다.
마스터캠에서 기본적으로 제공하는 MPFAN.pst 내용을 보면.


 해당 지령문(G28 X0. , Y0.)이 보이지 않습니다.


 이것은 해당 포스트(MPFAN.pst)가 해당 지령(배드면 원점복귀)을 (Peof$블록)이 아니고 공구 교환(복귀)이 지령되는 구간에서 경우에 맞게 판단하여 출력되는(Pretract$ 블럭) 정의되어 있어서 그렇습니다.

 그러므로 해당 지령 관련(배드면 원점복귀) 문장이 보이지 않습니다.
* 위 이미지에 해당 블록명(Pretract$)을 호출하는 것이 보입니다. (화살표)

 


 그러므로 해당 포스트(MPFAN.pst)의 Pretract$블록명을 살펴봅니다.


 그럼 하단의 공구교환 시 잔여 가공정의(대기톨?)가 있는지 없는지 판단하는 루틴에 만일 공구교환할 필요가 없는(가공종료)의 경우 해당 문장(G28 X0. , Y0. : 해당 포스트에서는 G28지령을 별도 변수명(sg28 ref)을 활용하여 출력합니다.


그러므로 해당 문장을 삭제합니다.


 그러면 해당 지령(배드면 원점복귀)이 삭제됩니다.

 그리고 경우에 따라 만일 작업자 편의성을 위하여 가공종료 후 배드면 가운데 위치로 오는 지령(G00 G00 G53 X-500. : 배드 X축 이송거리가 1000.0이라는 전제하에서) 항시 마지막 공구복귀 시점에서 지령하고 싶으면 아래와 같이 해당 구간의 지령문을 변경하시면 됩니다.

    

2. 절삭유 "M8;" 위치를 현재 위치에서 다른 위치로 출력되게 수정 요청.
 우선 이 절삭유 지령이 마캠 9.1 버전(coolant$)과 X 버전(Canned Text) 이후 버전과 차이가 있는데 우선 2021 버전 기준으로 설명하겠습니다.


* 이것도 해당 포스트에 따라 적용방법이 다 다릅니다. 

 먼저 해당 포스트에서 절삭유 ON 지령위치를 알아야 합니다.


 우선 마스터캠 기본제공 MPFAN.pst의 경우 마스터캠 가공정의 절삭유 설정에 따라 절삭유 ON지령문 위치가 틀려집니다.


전에 경우



함께 경우



후에 경우



 그러므로 포스트를 수정하지 않아도 해당 절삭유 ON지령문 위치를 변경할 수 있습니다.

 그런데 이에 만족하지 못하고 임의적인 위치에 놓고 싶은 경우 먼저 해당 포스트(MPFAN.pst)의 psof$(가공정의 선두 블록 정의 : 절삭유가 이 블록 내 출력되므로)을 살펴보면 뭔가 의심스러운 변수명(pscool)이 보입니다.

 


* 원래 포스트 수정전 대부분 절삭유 ON 지령문 위치가 공구 길이보정 위치와 같이 하는 경우 (G43 H2 Z50. M8;)에 착안하여 검색해 봅니다.

 즉 아래변수의 의미가 아래와 같습니다.


확인해 보면 해당 변수 정의가 아래와 같이 되어 있음을 알 수 있습니다.


* 다만 X버전 이후 절삭유 위치 지정이 3군데(전에, 함께, 후에) 지정되어 있으므로 저 절삭유 변수(PSCOOL)가 3군데 있으므로 모두 수정해주어야 합니다.

 예로서 만일 마스터캠 가공정의 설정상 절삭유 위치를 함께(G43 열에 같이 지령)으로 하지만 포스트상에서 G43 지령열 한단 아래 홀로 "M8;" 지령을 해주고 싶으면 아래와 같이 수정하시면 됩니다.


* 물론 다른 절삭유 위치(전에, 후에)로 마스터캠 가공정의 설정을 변경하면 역시 다른 2군데(결국 3군데 전부 수정해야 한다는..)도 같은 요령으로 변경하여야 합니다.


* 원래 상태에서 절삭유 위치 함께 설정으로 출력된 상태

 


* 해당 절삭유 변수를 해당 열에서 삭제하고 한 칸 아래에 입력한 경우의 출력된 상태

* 반복적으로 말씀드리지만 이러한 설정은 해당 포스트에 따라 틀리게 정의되어 있습니다.
 IHS사의 MPMASTER.pst의 경우는 역시 3군데 다른 변수명(Scoolan)을 사용하여 절삭유 ON지령문을 출력합니다.



* 그러므로 해당 포스트 수정 사항을 질문 시 반드시 해당 마스터캠 버전과 해당 포스트 파일 좀 복잡하면 해당 검증용 마스터캠 파일도 같이 첨부하여 질문해 주시기 바랍니다.
 

 

3. 공구 교환 지령 "T1 M06;"를 "M06 T1;"으로 교체 출력되게 수정 요청.
 위에서 설명하듯이 공구교환 블록은 Ptlchg$입니다.
그래서 한번 해당 블록을 살펴봅니다.



 위 표시된 공구 교환 지령( *ts$, sm06, : 공구번호 변수, 공구교환 지령"M6" )의 순서를 반대로 수정하시면 됩니다.
( *t$, sm06,  >>>  sm06, *t$, )


* 단 예제로 해당 포스트(MPFAN.pst는 공구교환 블록이 두 군데입니다.
( 초기 가공정의 실행 전 공구교환 (Psof$)에 최초 1회에만 적용되는 공구 교환 블록이 있습니다. 나중에 이어지는 공구 교환은 (Ptlchg$)에서 실시합니다.)
그러므로 같은 요령으로 두 군데 공구교환 블록 내용을 동일한 방법으로 수정하여야 합니다.

 


 그러면.

 순서를 바뀌어서 재 포스팅 하면 아래와 같이 변경됩니다.


* 단 이것이 어떠한 포스트를 사용하냐에 따라 공구교환 블록 위치가 틀립니다.


 또 하나의 예제로 든 MPMASTER.pst의 경우 (Ptlchg$)에서 공구교환 지령을 하지 않고 별도의 공구교환 블록(ptlchg_com)이 있어 하나의 위치에서 공구교환 지령이 실행되어 한 군데만 수정하면 됩니다.


* 이러한 문제가 있어 해당 포스트를 수정방법을 답변하려면 해당 포스트 파일이 있어야 합니다.


4. 특정 지령문(G5.1 Q1; , G4X5.;등)을 특정위치에 출력되도록 수정 요청.
* 역시 이것도 해당 출력하고자 하는 지령문을 원하는 위치에 지령문 블록을 찾아서 원하는 위치에 입력하면 됩니다.

 


5. 현재 출력되고 있는 지령문의 출력 순서를 바뀌고 싶은 경우.
* 이것도 역시 위에서 설명한 것과 겹치는 과정이 있어 중복을 피하기 위하여 패스합니다.

 


6. 특정 지령문이 출력되지 않도록 삭제 요청.
* 이것 또한 해당 가공데이터 출력 위치를 보고 해당 포스트의 지령위치를 검색하여 해당 지령문을 삭제하면 됩니다.

 


7. 절삭유 ON지령문(M8;)을 해당 가공정의 상태에 관계없이 무조건 M8로 지령되게 하고 싶은 경우.

 이경우는 단순하게 정의한다면 위에서 절삭유 ON지령 변수를 "M8"로 직접 변경하면 됩니다.


 그렇게 하면 마스터캠 가공정의 절삭유 철저에 관계없이 무조건 "M8"이 출력됩니다.


* 경우에 따라 (포스트 특성상) 절삭유 설정 자체를 안 하면 "M9"가 출력되지 않은 경우가 있으므로 역시 같은 요령으로 절삭유 OFF지령 구간을 찾아서 "M9"로 입력하면 무조건적인 지령이 실행됩니다.

 

반응형