마스터캠 2021를 활용한 POST관련 정보(시퀀즈 번호 부여)-8

반응형

 

 이번에는 포스트 정의에 따라 해당위치에 시퀀스 번호를 자동적(?)을 생성하는 방법에 대하여 알아보겠습니다.

 

* 이 방식은 마스터캠 9.1 버전에는 적용되는 방법이 아닙니다.
X버전 이후 2021 버전에 중점을 두고 있습니다.


 다른 버전 마스터캠 설정 및 입력창 화면과 버턴위치만 틀리고 기본적인 원리는 동일합니다.

 


 먼저 마스터캠에서 시퀀스 번호에 대하여 일반적인 상식을 알아보겠습니다.

 시퀀즈 번호(Sequence Number)는 연속적인 일정한 간격으로 정해진요소들의 나열을 의미하는 것으로 간단히 얘기 하여 각 지령문의 순번을 표시하는 것입니다.

 프로그램 공부는 하시는 분이라면 아시겠지만 계속적으로 지령되는 지시문의 대한 순번(차례)을 알리기 위하여 표시되는 번호의 나열입니다.

 


 마스터캠에서는 간혹 포스팅한(출력된) 가공프로그램을 보면 다음과 같은 번호가 지령문 앞에 붙어 있음을 볼 수 있습니다.



 이러한 시퀀즈 번호 부여 방식은 보통 2가지 방법이 있습니다.

 


1. 마스터캠 컨트롤 정의에서 NC출력 항목에서 밀링 항목에서 블록(시퀀즈) 번호 출력 항목의 체크를 하는 것입니다.


 해당 블록 번호 항목의 블럭 번호 출력 항목을 체크(활성화), 미체크(비활성화)에 따라 스퀀스 번호를 선택 출력됩니다.

* 다만 해당 머신정의 컨트롤 정의 항목 수정하는 방식은 숙지하시고(잘못하면 변경 사항이 반영 안 될 수 있습니다.) 해당 항목을 수정하여야 합니다.

 


 권장하는 방법은 해당 가공정의의 머신정의의 수정 방법을 통해서 해당 항목을 수정하시기 바랍니다.

해당(적용 중인) 머신정의의 컨트롤 정의를 수정하는 것입니다.

1. 해당 머신정의 속성의 파일 항목 아이콘을 클릭한후 머신 - 가공경로 복사 항목의 수정 아이콘을 클릭합니다.



2. 머신정의 관리자창에서 상단 컨트롤 정의 아이콘을 클릭 후 해당 컨트롤 정의 항목 트리에서 "NC 출력" 항목의 "밀링" 항목을 클릭합니다.



3. 밀링 항목의 블록번호 출력의 체크를 활성화한 후 하단의 확인 버턴을 클릭(종료)합니다.

 

이때 컨트롤 정의 경고 메시지창이 표시되어야 정상적인 것입니다.


 현재 테이터를 변경하였으므로 변경사항을 저장하여야 합니다.


 다시 해당 경고 메시지창의 "예" 버턴을 클릭합니다.



4. 그럼 다시 머신정의 관리자 창으로 되돌아오며 다시 하단의 확인(종료) 버턴을 클릭합니다.

 

 또다시 머신정의 그룹 속성창으로 되돌아 오면 역시 하단의 확인(종료) 버턴을 클릭합니다.



* 이때 주의 사항 현재 변경된 사항은 해당 머신정의 그룹에만 해당되며 다른 머신정의 그룹 선택 시 변경사항은 적용되지 않습니다.

 


 이렇게 변경하면 결론적으로 아래와 같이 포스팅 시 다음과 같이 출력됩니다.

 

 

 

그리고 해당 출력(나열되는) 시퀀스 번호의 순차적 단계값은 다음과 같이 해당 컨트롤 정의 "NC출력" 항목의 블록 번호 항목에서 정의합니다.



① 블록번호 출력 : 시퀀즈(블록) 번호 출력 여부를 결정합니다.

② 시작 블록 번호 : 시퀀즈 번호 시작 초기 번호를 입력합니다.
예 : 100.0을 입력된 상태 이면 시퀀즈 번호는 100번부터 시작합니다.

③ 블록 번호 증분값 : 시작 블럭 번호부터 시작하는 시퀀즈 번호의 증분(증대되는) 단계별 값을 입력합니다.
예 : 시작번호가 100.0 인 상태에서 증분값이 10.0 이면 N100, N110, N120, N130 순으로 출력됨

④ 최대 블록 번호 : 시작또는 증분되는 시퀀즈 번호 한계값을 정의하는것으로 해당 값이상의 시퀀즈번호가 증분되면 그 숫자에서 멈추어 계속 같은 값이 출력됩니다.
예 : 최대 블록 번호가 9999.0 인 상태에서 이를 넘어 10000.0값이 증분되면 N9999, N10000, N10000, N10000씩으로 증분이 중단되어 출력됩니다.
 
⑤ 블럭 번호 소수점 사용 : 통상의 경우 시퀀즈 번호는 소수점사용을 하지 않습니다.(데이터 용량의 증대만 가져옴)

 

 그렇지만 만일 시퀀즈 번호에 소수점을 적용하고 싶으면 해당 기능을 활성화(체크)하면 소수점 단위가 표시됩니다.
예 : 비활성화 상태(N100, N101, N102~), 활성화 상태(N100.0, N101.0, N102.0~)로 출력됩니다.
* 단 앞서 블록 시작 또는 증분값에서 소수점 단위가 적용된 값이 입력되면 자동적으로 소수점 표시가 적용됩니다.

⑥ 소수점 오른쪽 자릿수 : 만일 블럭 번호 소수점 사용 기능을 활성화된 상태에서 해당 스퀀스 번호의 표시단위(문자 자릿수)를 정해 놓을 수 있습니다.
 이 항목은 출력되는 시퀀즈 번호 값의 소수점 기준으로 오른쪽(우측)의 표시 단위(자릿수)를 정의합니다.
 
⑦ 소수점 왼쪽 자릿수 : 만일 블록 번호 소수점 사용 기능을 활성화된 상태에서 해당 스퀀스 번호의 표시단위(문자 자릿수)를 정해 놓을 수 있습니다.
 이 항목은 출력되는 시퀀즈 번호 값의 소수점 기준으로 왼쪽(좌측)의 표시 단위(자릿수)를 정의합니다.

* 위 ⑥⑦항목의 정의는 만일 스퀀스 번호 시작이 1.0이고 증분값이 15.0이면 스퀀즈 번호 출력이 다음과 같이 출력됩니다.


*일단위 번호는 한자리 표시, 십 단위 번호는 두 자리 표시, 백단위 번호는 세 자리 표시 등으로 표시됩니다.

 

 이렇게 표시되면 뒤 가공프로그램(지령문) 선두 표시 자리가 달라지게 됩니다.
* 지령문이 한 줄로(수직방향)으로 정렬이 안된다는 의미입니다.

 


 이것이 문제시되는 작업환경에 경우 이를 정령 하고 싶은 경우가 있을 경우 여기에 사용합니다.

 이번에는 동일하게 시작값은 1.0, 증분값은 15.0인 상태에서 블록 번호 출력 입력을 다음과 같이 정의한 경우 아래와 같이 출력이 가능합니다.



* 단 통상의 경우 위 블럭 번호 출력 설정값만으로(실제로 이 설정값은 포스팅 시 소수점 자릿수 제한만 설정하고 실제 포스트의 해당 시 퀀즈 번호 출력 형식 변숫값(Fs2) 값을 따로 지정하여 사용하셔야 가능합니다.)만으로 출력이 되지 않습니다.


* 일단 이런 것이 있다고 계념적으로 받아 드리기 바랍니다.

 


⑧ 서브 프로그램 블록 번호 리셋 : 만일의 경우 같은 가공정의 그룹(해당 가공 프로그램 포스팅 시 같이 출력되는 서브 프로그램 경우) 내 서브 프로그램을 출력하는 경우 이러한 시퀀스 번호 초기(시작) 값을 다시 초기화하여 출력할 것인지 아니면 계속 시퀀즈 번호 증분값이 유지되며 이어가는지를 결정합니다.
 


* 당연하겠지만 따로 별도로 출력된 서브 프로그램과 연계는 되지 않습니다.

 

 


2. 해당 가공 G-code 편집 지원 텍스트 에디팅 프로그램(Cimcoedit 등)에서 블록 번호 부여 기능등으로 시퀀즈 번호 입력 또는 삭제합니다.

심코에디터(Cimcoedit) 경우



코드 엑스퍼터(Code expert) 경우




 그럼 이제 마스터캠 포스트(post)의 수정방법을 알아보겠습니다.

 앞서 애기한 머신정의-컨트롤정의-NC출력 항목의 설정값을 바꾸는 것은 간단하게 할 수 있으나 문제점은 항상 현재 적용하는 머신정의가 해당 설정값을 가지고 있어야 한다는 점과 만일의 다른 머신정의에서 생성된 가공정의는 그 해당 머신정의 설정값을 따라가기 때문에 머신정의 설정값이 틀리면 다시 해당 가공정의의 머신정의 설정값을 수정해야 한다는 큰(?) 단점이 있습니다.


* 그렇지만 현재 추세는 포스트에 일괄적으로 수정하는 것이 아니고 마스터캠 내 설정값에서 조절하는 것을 지향하고 있습니다.

 또한 현재 기본적인 상황에서는 시퀀즈 번호를 일괄적으로 전체적으로 부여하는 것만 가능합니다.


* 그래서 간단히 임시적으로 하신다면 그냥 수기로 시퀀즈 번호를 부여하는 것을 권장합니다.


 그리고 당연한 것이지만 따로 매크로 같은 부가프로그램 생성 시는 또 다른 방법으로 시퀀즈 번호를 부여하는 것을 권장(?) 합니다.

 그럼 여기서는 포스트 수정을 통해서 일정한 특정위치에서만 시퀀즈 번호를 부여하는것을 알아보겠습니다.
* 사실 전체적으로 일괄적으로 시퀀즈 번호를 부여하는 것은 위에 설명한 방법을 참고하길 바랍니다.

 우선 이것이 무엇이냐면 흔히 현재 가공프로그램에 시퀀즈 번호를 부여하는 것이 왜 필요한 것인가 생각해 보여야 합니다.
특정한 매크로 프로그램 또는 호출형식으로 선별하기 위한 시퀀즈번호를 부여하는 것이 아닌 경우에는 보통의 경우 해당 가공프로그램의 공정순번 확인 및 경우에 따라 가공프로그램의 재시작 위치 특정을 위한 방법에 적용합니다.

 


즉    
 마스터캠 해당 가공정의 적용된 머신정의-컨트롤정의-블록번호 출력의 설정이 아래와 같은 경우.



 출력되는 시퀀즈 번호 표시 형태가 우측 저럼 톨체인지 구간 앞에 표시되도록 포스트를 수정하는 것을 말합니다.



* 출력되는 위치는 여러 가지 방법이 있으나 가공 공정의 선두위치(톨체인지 위치로 전제)로 하여 설명하겠습니다. 


* 시퀀즈 번호 출력여부는 우선 마스터캠 머신정의-컨트롤정의에서 설정하는 것을 우선 전제하겠습니다.

 일단 위와 같이 시퀀즈번호 출력여부(출력하냐 안 하냐만 선택)는 머신정의 - 컨트롤정의에서 한다고 전제하고 작업자가 선택한 포스트를 별도 위치에서(마스터캠 실행과 관계없이) 별도의 텍스트 에디터 프로그램(여기서는 심코에디터로 지정)으로 열어봅니다.


* 이때 작업자는 반드시 해당 포스트를 별도의 폴더에 해당 포스트 파일(MPFAN.pst)을 복사하거나 해당 위치에서 다른 이름으로 변경 복사한 복사본을 남겨 놓고 포스트 수정 작업을 시작하시기 바랍니다.


(포스트 수정 중 실수 또는 잘못으로 해당 포스트를 원래대로 되돌려야 하는데... 경우에 따라 안 되는 경우가 많습니다.)

 


 우선 시퀀즈 번호 출력 관련 수정전에 알아야 할 사항이 있습니다.


 우선 지금 시퀀즈 번호 관련 변수명이 무엇인지 알아야 합니다.
* 사실 이 시퀀즈 번호 변수명은 고정된 시스템변수명($)이라 동일한 명칭을 사용합니다. (n$)

 해당 포스트"MPFAN.pst"의 텍스트 검색기능(찾기)으로 "Format assignments" 문자열을 찾아봅니다.
* Format assignments는 출력된 수치값의 표시형식(단위, 문자 표시단계) 정의 항목의 선두문장입니다.


 해당 항목을 보면 (Fmt "N" 21 n$)이라고 기재되어 있습니다.


 fmt(format : 형식) "N"(시퀀즈 번호 출력 문자) 21 출력형태 규정 번호(format statements에 정의된) n$(마스터캠 nci에서 넘어온 시퀀즈 번호)이라는 의미입니다.


 즉 해당 포스트 각종 숫자, 문자의 표시방법(소수점여부, 문자 자릿수, 표시 형태 등등을 정의한 format statements 항목에서 정의한 21번 표시형태 (소수점 7자리 까지 적용이 허용되는(한계치) 표시 형태이며 만일 정수(소수점이 필요 없는)의 경우 소수점을 표시하지 않는다)을 따라 "N"문자 다음에 스퀀스 번호 시스템 변수(n$)의 내용(숫자)을 표시합니다.

 중요한 것(여기서는)은 각 포스팅 출력 구간에서 "n$"변수를 이용하여 스퀀스 번호를 출력위치를 지정하는 것을 알 수 있습니다.

 그래서 해당 포스트에서 이러한 시퀀즈 번호 출력위치를 알아보기 위하여 심코에티터에서 해당 문자열 " n$"을 검색해 봅니다.


* 주의 사항 "n$"(선두에 스페이스가 없는) 경우 시스템 변수중 마지막 문자가 "n$"으로 끝나는 다른 변수도 같이 검색되므로 오로지 "n$"만 검색되도록 " n$"(선두에 스페이스가 있는 문자열)로 검색하시기 바랍니다.


* 보시다시피 무려 76개가 검색됩니다..

 


 그러므로 항상 이러한 수정작업을 시작하기 전에 반드시 현재 작업파일의 백업본(복사본)을 만들어 놓고 작업을 시작하시기 바랍니다.
(일단 수정을 진행하면 복귀가 불가능합니다.)

 


 그럼 먼저 수정내용이 톨체인지 위치에서만 시퀀즈 번호가 출력되길 바라는 것이므로 우선 현재 포스트 내용 중 시퀀즈 번호 출력 구간을 전부 삭제하여야 합니다.


* 위에서 검색해 본 것처럼 76개을 일일이 수정하는 것은 좀.. 어려워서.. 일단 한 번에 전부 삭제하고.. 시작..


* 주의 사항으로 아래 변수 표시형식 정의하는 구간의 "n$"는 남겨두셔야 합니다.


 그럼 "n$"변수를 삭제 완료 한 후 다시 생각해 봅니다.

* 삭제 방법은 심코에티터의 경우 "교체" 기능으로 해당 문자열 전체를 스페이스(공백)로 교체하여 삭제하는 방법을 사용합니다.


 이때 해당 시 퀀즈 번호출력 지령문 전체 문자열(포스트 문법을 지켜야 하므로)을 교체 대상으로 하셔야 합니다.
말 그대로 "n$"만 삭제하시는 것이 아니고 "빈칸+n$+", "(지령문 구분용)을 다 포함하여 교체 대상으로 입력하여 스페이스(빈칸)로 교체하셔야 합니다.




 그럼 이제 다시 시퀀즈 번호를 부여할 구간을 찾아야 하는데 이 경우 톨체인지 구간을 찾아가야 합니다.

* 포스트 내부 구조에 대한 간략한(?) 내용은 아래 링크를 참조 바랍니다.
https://momoman83.tistory.com/545

 

마스터캠 2021를 활용한 POST관련 정보(포스트 내부 구조)-7

이번에는 마스터캠 포스트(post)에 대하여 다시 한번 알아보겠습니다.  우선 여러 가지 이유로 포스트를 수정하는데 어려움을 겪는 이유 중 하나가 어디를 수정해야 하는지 모르는 경우입니

momoman83.tistory.com

 

 

 톨체인지 변수는 크게 두 가지가 있습니다.

 ptlchg0$(Call from NCI null tool change (tool number repeats)) = 지정된 공구번호가 없는(null) 상태에서 공구 교환 지령이 내려진 경우에 사용되는 톨체인지 지령 변수


* 다시 얘기하면 가공프로그램 맨 처음 선두 툴체인지 구간과 동일 공구번호를 재호출 공구교환 지령이 이루어지는 구간에 대한 톨체인지 변수명입니다.


* 결론은 경우에 따라 툴체인지 지령을 무시(패스)하는 경우에 사용됩니다.
 


ptlchg$(Tool change) = 일반적인 정상적인(?) 상태에서 지령되는 톨체인지 지령 변수


* 통상 선두를 제외한 톨체인지 지령이 실행되는(출력되는) 구간에 사용되는 변수명입니다.

 


 그러므로 현재 무조건 톨체인지 지령 전에 시퀀즈 번호가 출력되길 바란다면 우선 "ptlchg$" 문자열을 검색해 봅니다.


 위와 같이 검색된 톨체인지 구간에서 자세히 보시면 "pbld, *t$, sm06, e$" = pbld(Post block line delete : 포스트 지령구간 출력) + *t$(마스터캠에서 지령된 공구번호 강제출력 지령) + sm06(톨체인지 지령문 "M6"의 지정 변수명) + e$(블록 한 줄 종료(EOB) 기능) = T1 M6;

 


 그래서 저부분을 다시 복원(?)하여 원래대로 수정한 후 해당 가공정의를 출력하여 적용 여부를 알아봅니다.



 그런데 출력된 가공프로그램은 맨 처음 선두에 출력된(공구번호-1)에 대한 시퀀즈번호가 톨체인지 지령 앞에 출력되지 않습니다.

 톨체인지 구간은 "ptlchg0$", "ptlchg$" 2개뿐인데 그중 사실 "ptlchg0$"경우 톨체인지 지령이 생기지 않는 것이라 그럼 "ptlchg$" 밖에 없는데 맨 처음 선두 가공경로 톨체인지에는 생성되지 않습니다.

 그래서 잠시 생각을 해보니 포스트 구조 목록의 포스트 스타트 오브 파일(Psof$ : Start of file)이라는 구간이 있습니다.
즉 말 그대로 해당 포스팅되는 가공 프로그램의 가공경로 출력되는 최선두 부분에 대한 출력 구간입니다.

 


 그래서 찾아보면... 심코에디터 찾기 기능으로...



 Psof$ 루틴 내용을 잘 살펴보면 톨체인지 지령을 출력하는 부분(아까 "ptlchg$" 구간과 동일한 내용)이 있는 것을 확인할 수 있습니다.
* 다만 이 상황은 해당 포스트에 따라 틀려질 수 있습니다.

 


 그래서 동일하게 시퀀즈 번호 변수(n$)를 해당 위치에 추가합니다.



 그리고 다시 해당 가공정의를 포스팅하여 가공프로그램을 출력하였습니다.

 

 이번에는 제대로 각 톨체인지 지령 앞에 해당 스퀀스 번호가 출력됩니다.

 이렇게 수정된 포스트는 별도 재수정(?) 하지 않은 이상 해당위치(톨체인지 위치)에만 스퀀스 번호가 생성됩니다.


 그리고 적용되는 스퀀즈 번호의 시작번호와 증분값은 해당 마스터캠 가공정의 머신정의 - 컨트롤 정의 - 블록 번호 출력 항목에서 설정값에 따라갑니다.

 


 일단 여기 까지는 성공 하였으나 잠깐 좀 더 개조를 시도해 봅니다.

 우선 출력형식인데...


 지금은 아래와 같이 한 줄에 시퀀즈 번호와 톨체인지 지령이 같은 줄에 출력됩니다.


 이것이 살짝 불편해서 시퀀즈 번호는 한 줄 위로 올라가고 톨체인지 지령은 그전 그대로 출력되길 바랍니다.


 이것은 크게 어려운 것은 아니고 단지 시퀀즈 번호 출력 부분만 하나 더 출력 블록을 따로 생성하시면 됩니다.

 


 예전의 지령문 형식이 이러했다면...



 한 줄 더 추가하여 해당 지령문을 삽입하면 됩니다.


* n$앞에 *가 추가된 것은 단독문으로 지령되면 모달 적용으로 시퀀즈 번호가 출력되지 않는 현상이 있어 항상 무조건 강제출력이 되도록 "*"표시를 추가합니다.



 그럼 마지막으로 좀 더 생각해 보면 이 시퀀즈 번호를 시작번호 나 증분값등을 변경하고 싶은데 일일이 해당 머신정의-컨트롤정의 설정을 수정해야 하는 단점이 있습니다.


* 또한 해당 머신정의가 정의되지 않은 다른 업체 캠파일 이거나 또는 수정전 옛 파일 등을 열어보아 출력 시 전부 다시 머신정의-컨트롤정의 수정해야 하는 단점이 있어 이에 대한 보완을 했으면 합니다.

 그래서 해당 마스터캠 가공정의(머신정의-컨트롤정의 설정값)에 관계없이 포스트 파일 자체에서 해당 시 퀀즈 번호에 대한 정의를 설정하길 원합니다.

 그럼 잠시 생각해 보면 마스터캠 컨트롤정의 설정값(시퀀즈 시작번호, 증분값)과 관계없이(어느 값이 넘어오던) 포스팅 시 포스트 파일 내에서 해당 시 퀀즈번호 시작번호와 증분값을 지정하면 그대로 지정된 값대로 시퀀즈 번호가 생성될 수 있습니다.

 


 먼저 해당 변숫값을 알아보면....

 우선 포스팅 시 마스터캠 설정에서 넘어오는 시퀀즈 번호값은 "n$"에 들어갑니다.

 그리고.

 시퀀즈 번호 시작값은 "seqno$" 들어가고 번호 증분값은 "seqinc$"에 들어갑니다.

 그러므로 만일 일반적인 가공정의 머신정의-컨트롤정의-블록번호 출력 항목의 설정값이 아래와 같이 설정되어 있다면.


 포스팅 시 seqno$ = 500 , seqinc$ = 10의 값이 들어가서 포스팅됩니다.

 

 

 그러므로 이러한 변숫값을 포스트 내에서 정의하여 대체하여 적용시켜봅니다.

 다만 Seqno$값은 초기 시작값(처음 한 번만 적용되는값)이고 Seqinc$값은 계속 반영하여야 할값(증분값)이며 이러한 값이 연산되는 과정 식(계산식)을 별도로 해당 출력 루틴에 넣어주어야 합니다.

 즉.
 Seqno$값은 초기 한번만 정의하면 되므로 우선 포스트 선두 설정구간에 추가 기입하였습니다.

* 위치는 임의적으로 하셔도 되지만 여기서는 출력 관련 일반설정(General Output Settings) 구간에 추가하였습니다.



* 위 이미지처럼 출력 관련 일반설정 부분에 일단 예제로 150이라는 값을 Seqno$=150으로 추가해 놓았습니다.

 나머지 Seqinc$(증분값), n$=seqno$(증분값 적용 루틴)은 계속 순환되어야 하므로 "psof$(Start of file for non-zero tool number : 입력된 지정 공구번호 기준 시작 파일) 내에 추가해 놓겠습니다.



 이렇게 설정이 되면 일단 앞서 예제와 동일하게 마스터캠 머신정의-컨트롤정의-블록번호 출력 설정내용 (시퀀즈 번호 시작번호 : 500, 증분값 10)인 상태에서 해당 수정된 포스팅을 이용하여 포스팅을 하게 되면 앞서 포스트 수정 내용에 따라 Seqno$값은 500에서 150으로 변경되고 Seqinc$값은 10에서 4로 변경되어 포스팅됩니다.

 


 그래서 결과물은 아래와 같이 출력됩니다.



 위와 같이 마스터캠 스퀀스 번호 출력 설정과 달리 해당 포스트 파일에 수정된 변수값에 따라 시퀀즈 번호가 출력되므로 이 경우 마스터캠 해당 가공정의 시퀀즈 설정에 관련 없이 해당 포스트 내 지정된 값에 따라 시퀀즈 번호가 출력되게 됩니다.


* 다만 이 경우 마스터캠 설정과 관계없이 무조건 스퀀즈 번호가 출력되게 됩니다.

 


 그러므로 이러한 여러 가지 사항을 고려하여 해당 포스트를 수정하여 가공 작업에 적용하시기 바랍니다.

반응형