티스토리 뷰
본 글은 SolidCam Post Processor의 수정에 대한 기본 개념에 대한 내용을 담고 있습니다. 총 2번에 나눠 내용을 정리할 예정이며, 첫번째는 포스트 수정을 위한 준비단계이고 두번째는 기본 문법에 대한내용을 담을 예정입니다.
출처 : https://www.youtube.com/@SolidCAMProfessor
만약 유지 보수 중이라면 리셀러 업체에 문의 하시길 바라며 포스트의 임의 수정은 장비와 작업자의 부상을 일으킬수 있으므로 반드시 주의가 필요한 작업임을 명심하시기 바랍니다.
수정전 포스트는 백업 하시기 바라며 수정 후 코드를 반드시 확인 하시기 바랍니다.
시작에 앞서 왜 저희가 선택한 캠이 SolidCam인지 프로그램 부흥을 위해 선택한 이유를 설명할까 합니다.
마스터캠등 여러 프로그램이 있지만 매년 수천만원씩 하는 마캠은 부담스러웠고, 4축 인덱스가 가능한 캠 프로그램을 찾던중 가장 접근하기 쉬웠던 프로그램은 Fusion360과 SolidCam이 있었습니다.
그 중 SolidCam은 SolidWorks Standard버전이 캠 가격에 포함 되어있었고, 3축 가격에 인덱스 A축 가공 코드를 뽑을수 있어 선택하게 되었습니다. 혹시 저희와 비슷한 상황의 업체라면 SolidCam을 추천합니다.
이 글을 작성하는 이유는 저희 SolidCam의 유지 보수기간이 종료되고 간단한 포스트 수정이 필요하여 유튜브와 기타 다른곳의 정보를 취합하여 우리의 포스트를 수정하였고 다른분들도 필요한 부분이 있지 않을까,, 혹은 추후 다른 부분을 수정 할일이 생기면 다시 보기 위함이니 중요한 부분을 수정한다면 반드시 전문가의 도움을 받으시길 바랍니다.
Post Processor란?
CAM(Computer Aided Manufacturing) 시스템에서 생성된 절삭에 대한 내용을 기계 구성, 제어장치, 가공 조건에 맞게 G 코드로 변환, 최적화하고, 사용자의 스타일에 맞춰 Customizing 해주는 프로세서 이며, 간단히 CAM과 가공장비 사이의 징검다리 같은 존재입니다.
CAM 프로그램에서는 없어서는 안될 프로세서지만 한번 설정하면 변경 할일이 잘 없고, 프로그램 구매시 업체에서 제작, 수정을 하는 부분이기에 사용자는 알 필요가 없는 내용이기도 합니다. 그리고 가장 중요한 부분은 잘못 수정할시 장비나 작업자에게 심각한 부상을 일으킬 소지도 있기에 신중한 작업을 요하는 부분이기도 합니다.
SolidCam의 Post Processor는 GPPL이라는 언어로 되어있습니다. 그 말은 하나의 프로그래밍 언어라는 이야기 입니다. 그렇기 때문에 코딩에 대해 전혀 모르는 분은 이해하기 어려운 내용이 있을수도 있습니다.
준비사항
Post 파일을 수정하기 위해선 편집 프로그램이 필요합니다. 메모장으로도 수정은 가능하나 오류나 편리함을 위해 편집 프로그램은 필수라 생각합니다. 타 프로그램에선 전용 프로그램이 필요하고 SolidCam도 전용 프로그램이 있지만 지금은 Visual Studio Code만 있으면 됩니다. 기업에서도 무료로 사용가능한 프리웨어이고 디버그 기능을 사요하기 위해선 필요한 프로그램이니 설치 하시길 바랍니다.
https://code.visualstudio.com/
단순 코드 수정은 VS Code만으로도 수정 가능하지만 추적 기능과 Debug 기능은 SolidCam 버전에 따라 동작 되지 않을수도 있습니다.
Debug 기능은 추후에 다시 설명하겠지만, 코드 한줄 한줄 실행시키거나 함수단위로 실행시켜 현재 변수나 함수의 값이 어떻게 변하는지를 확인하면서 코드를 작성할수 있는 기능입니다. SolidCam 2019 SP2 버전 이상에서 가능한것은 확인되는데 그 이하 버전에서 동작여부는 정확하지 않습니다.
Visual Studio Code Extension 설치
G-Code 파일이나 GPP파일을 열때 색상으로 구분하여 좀더 가독성을 높이기 위해 Extension을 추가해주는게 좋습니다.
현재 화면은 저의 확장 프로그램 목록입니다.
1번의 "확장 "아이콘을 누르면 현재 설치된 Extension 목록이 나오고 가장 위 "마켓플레이스에서 확장 검색" 창에서 검색 후 설치 하면 됩니다.
이 중에서 2번이 GPP파일의 가독성을 높이기 위한 프로그램이고, 4번은 g코드의 가독성을 높여주기 위한 프로그램입니다. 가독성 높이기 위한 프로그램은 어떤 프로그램을 사용해도 무관합니다. 더 좋은프로그램이 나왔다면 사용하시면 됩니다.
2번 : gpp-laanguage
4번 : nc-gcode
아래 링크는 솔리드캠 공식 채널에 올라온 Visual Studio Code Extension 파일입니다.
https://solidcam.app.box.com/s/l8vex20fzh7fu8eomvzgmxhvx80dmiri/
위 링크가 막히게 된다면 아래 자료에서 받으시길 바랍니다.
설치법과 사용법에 대한 유튜브 링크 입니다.
https://youtu.be/txR09VS_gKg?si=8iatNFvmwz4up71z
디버거 사용법에 대한 내용도 함께 있지만 그 부분은 기본 문법을 익힌 후 보시는걸 추천합니다.
추적 기능 사용하기
추적 기능은 포스트의 세부 내용에 대한 정보를 g코드 파일에 표시하는 기능입니다.
trace'all' : 1 이란 명령을 포스트에 삽입 하게 되면 아래 그림1.과 같이 함수명에 대한 내용이 g코드 파일에 표시 됩니다.
좌측의 @start_of_job 이 부분이 함수 명입니다.
trace'all' 명령은 0~5까지 존재하며 0이 기본상태이며, 5는 모든 정보가 표시됩니다.
위 추적 기능을 사용하기 위해선 레지스트리와 포스트에 아래와 같은 내용이 추가되어야 합니다.
1. 레지스트리 추가사항
\HKEY_CURRENT_USER\SOFTWARE\SolidCAM\SolidCAM버전\Cam Experimental Mode
- DWORD 추가
이름 : SuperMachIDEditor
값 : 1
"SolidCAM버전"은 자신이 사용하는 캠 버전 폴더입니다.
2. gpp에 추가사항
gpp 기본 경로 : C:\Users\Public\Documents\SolidCAM\SolidCAM2021\Gpptool
gpp 파일 수정전 반드시 백업하시기 바랍니다.
사용할 post파일.gpp 를 편집기로 열어보면 많은 내용이 보입니다.
처음 보면 복잡한데 @init_post 이런 @로 시작하는 문자가 함수 명이고,
함수의 끝은 endp로 끝납니다.
@~~로 시작 endp로 되어있는게 하나의 함수 입니다.
여러 함수 묶음이 있고, @init_post의 내용은 어떤 변수를 사용할지 미리 변수 명을 할당 하는 내용이 있고 Post파일의 초반에 위치해 있습니다.
@init_post로 시작하는 함수중 endp 위에
trace"all":5 라고 작성 후 포스트 파일을 저장합니다.
SolidCam에서 포스트를 뽑아보면 지금것 보던 코드와 전혀 다른 내용들이 추가 되어있을겁니다.
함수명이 나오고 어떤 내용들이 실행되었으며 어떤 결과가 나왔는지 표시가 됩니다.
숫자결과값 뒤의 T,와 F가 붙는데 T는 True의 앞 글자, F는 False의 앞글자입니다.
T가 붙은 숫자는 결과에 사용할 숫자이고, F가 붙은 글자는 결과에 사용하지 않는 숫자 입니다.
이런기능이 있구나' 정도로만 넘기셔도 무방합니다. 함수 순서가 어떻게 되는지만 아셔도 코드 수정할때 어느부분을 수정해야하는지 알수있으니 도움이 됩니다.
코드중 ; 쉼표 표시는 주석(설명)이며 쉼표 뒤의 내용은 포스트 프로세서 실행에서 제외됩니다.
이 코드가 어떤 내용이며 어떤 상황에 사용하는가등,, 설명을 작성하기 위해 사용합니다.
주석 작성은 다른 사람 혹은 미래의 나를 위해 작성해 두는것이 좋습니다.
변수의 종류
변수란 변하는 숫자, 문자등을 담을수 있는 상자이고 상수는 변하지 않는 문자나, 숫자인데 상수를 할당하는 방법은 이곳에선 사용하지 않으니 모두 변수라 생각하시면 됩니다.
SolidCam의 변수에는 크게 시스템에서 이미 할당 되어있는 변수명이 있고, 사용자가 할당하는 변수명이 있습니다.
1. 시스템 변수
SolidCam에서 이미 정해놓은 변수명입니다.
이 변수명은 사용자가 변경 할 수 없고, 변수 타입도 정해져 있어 사용자는 사용만 할수 있는 변수라 이해하시면 됩니다.
2. 사용자 변수
2.1 Global 변수 : 전역 변수 ( 다른 함수에서도 변수값을 사용할수 있는 변수 )
2.2 Local 변수 : 지역 변수 ( 현재 함수에서만 사용 가능한 변수, 다른 함수에서 사용할 수 없음. )
지역변수와 전역변수를 구분하는 이유는 메모리 관리(속도)입니다.
모든 변수를 Global변수로 만들어도 상관은 없지만 불필요한 메모리를 가지기 때문에 현재 함수안에서만 사용할 임시함수는 Local 변수로 만드는것이 좋습니다.
- 시스템 변수와 사용자 변수의 구분
시스템 변수를 구별 하는 방법은 VSCode에 Extension이 정상적으로 설치가 되어있다면 마우스를 올려보면 아래와 같이 구분됩니다.
xpos_f 에 마우스를 올리면 global system variable 이라고 뜨고
qcode_f에 마우스를 올리면 global string 이라고 뜹니다.
변수의 형식
변수에는 숫자를 담을수도 있고, 문자를 담을수도 있습니다, 해당 변수는 어떤 형식으로 담을지에 따라 변수의 계산 방식이 달라지기 때문에 형식은 중요하며 한번 정한 형식은 지켜야하는 룰 입니다.
1. 정수형 변수
Interger 형식의 변수는 소수점이 없는 -999999999 부터 +999999999 까지의 숫자를 담을 수 있습니다.
2. 실수형 변수
Numeric 형식의 변수는 소수점이 포함된 변수 형식입니다.
3. 논리형 변수
Logical 형식의 변수는 참 True:1 과 거짓 False:0 의 값을 가집니다.
4. 문자형 변수
String 형식의 변수는 문자를 담는 변수입니다.
5. 배열형 변수
Array 형식의 변수는 변수의 묶음형식의 변수입니다.
SolidCam Post에서 사용하는 변수의 형식은 총 5개 밖에 없습니다.
ex) global integer teststr testsss
위처럼 선언하면 전역 정수형 변수명 teststr과 testsss의 변수가 2개가 만들어집니다.
지역변수인지 전역 변수인지 먼저 쓰고 변수가 어떤 형식인지 쓰고 변수 명을 씁니다.
같은 형식의 변수라면 옆으로 이어서 변수명만 쓰면 변수가 생성되는 구조입니다.
앞서 말한것 처럼 사용자가 작성하는 변수명이 아니라 이미 솔리드캠에서 사용하는 시스템 변수명이라는것이 존재하기 때문에 일부 변수명은 사용자가 사용할수 없고 사용해선 안됩니다. 변수명 작성시 자동으로 시스템 변수명을 체크해주는 부분이 없기 때문에 에러 메세지를 확인하거나 도움말에서 사용하는 시스템 변수명을 확인해야 합니다.
도움말 위치는 아래 그림2. 를 참조바랍니다.
다음글에서 변수의 활용과 기본 문법에 대해 알아보도록 하겠습니다.
'프로그래밍 > SolidCAM Post' 카테고리의 다른 글
SolidCAM - Post Processor - 2 (0) | 2024.01.14 |
---|