8. 주변기기
8.1. 엔드 Lua 커스텀 오픈 프로토콜
8.1.1. 개요
엔드 Lua 커스텀 오픈 프로토콜은 힘 센서, 그리퍼, 용접 핸드 핸들의 사용을 지원하며, 동시에 힘 센서와 그리퍼의 병용도 지원합니다.
8.1.2. 조작 절차
Step1: 시스템 설정 -> 개요 -> 펌웨어 업그레이드 화면으로 이동하여 엔드 펌웨어 .bin 파일을 선택하고 엔드 펌웨어를 업그레이드합니다.
중요
먼저 엔드 펌웨어 버전 FV2.010.06 이후의 소프트웨어 버전이 호환되는지 확인해야 합니다. 버전이 맞지 않으면 해당 소프트웨어 펌웨어를 업그레이드하고, 호환된다면 펌웨어 업그레이드는 필요하지 않습니다.
엔드 펌웨어 업그레이드 패키지를 업로드하기 전에 먼저 로봇을 비이네이블 상태로 전환한 뒤 boot 모드로 들어가야 합니다.
그림 8.1‑1 엔드 펌웨어 업그레이드
Step2: 주변기기 -> 그리퍼/힘 센서/용접 핸드 핸들 화면으로 이동하여 커스텀 프로토콜 카드를 클릭해 인터페이스에 들어간 뒤, Lua 엔드 오픈 프로토콜을 선택하여 업로드합니다.
중요
엔드 프로토콜을 업로드하기 전에 boot 모드에 들어가야 합니다. 또한 파일명은 `AXLE_LUA`로 시작해야 합니다.
그림 8.1‑2 Lua 엔드 오픈 프로토콜 업로드
Step3: 엔드 통신 파라미터를 설정합니다. 통신 파라미터에는 보레이트, 데이터 비트, 스톱 비트 등이 포함됩니다. 설정이 끝나면 설정 버튼을 클릭합니다.
그림 8.1‑3 엔드 통신 파라미터 설정
엔드 통신 상세 파라미터는 다음과 같습니다.
보레이트: 1-9600, 2-14400, 3-19200, 4-38400, 5-56000, 6-67600, 7-115200, 8-128000`을 지원합니다. 엔드 `RS485 드라이버 칩은 저속 485이므로 보레이트를 200k 이상으로 설정할 수 없습니다.
타임아웃 시간: 1~1000ms. 주변기기 조합에 맞춰 합리적인 시간 값을 설정해야 합니다.
타임아웃 횟수: 1~10. 주로 타임아웃 재전송에 사용되며, 우발적인 이상을 줄여 사용자 경험을 향상시킵니다.
주기 명령 시간 간격: 1~1000ms. 주기 명령의 매회 발행 간격에 사용됩니다.
Step4: 엔드 Lua를 활성화하고 열기 버튼을 클릭합니다.
그림 8.1‑4 엔드 Lua 활성화
Lua 파일에 이상이 발생하면 엔드 Lua 파일 이상 경고가 표시되며, 복구 안 함/복구 처리를 수행할 수 있습니다. Lua 활성화 버튼을 끄면 경고 표시도 함께 꺼집니다.
그림 8.1‑5 Lua 파일 이상
장치 유형이 그리퍼인 경우 상태 모니터링을 수행할 수 있습니다.
`상태 모니터링` 켜기: 오른쪽 그리퍼 상태 영역에 그리퍼의 실행 속도, 토크, 위치 등의 상태 정보가 실시간으로 표시됩니다.
`상태 모니터링` 끄기: 오른쪽 그리퍼 데이터 상태 영역이 꺼집니다.
그림 8.1‑6 상태 모니터링
8.2. 그리퍼
초기 설정 -> 주변기기 -> 그리퍼 인터페이스에서 현재 적합 완료 장치와 엔드 Lua 커스텀 오픈 프로토콜을 사용해 그리퍼를 사용할 수 있습니다.
8.2.1. 적합 완료 장치
Step1: 적합 완료 장치`를 클릭해 엔드 주변기기 설정 인터페이스로 들어갑니다. 그리퍼 설정 정보는 그리퍼 제조사, 그리퍼 유형, 소프트웨어 버전, 장착 위치로 나뉩니다. 사용자는 실제 생산 요구에 따라 해당 그리퍼 정보를 설정할 수 있습니다. 설정을 변경해야 할 경우 먼저 해당 그리퍼 번호를 선택하고 `지우기 버튼을 클릭해 기존 설정을 삭제한 뒤 다시 설정합니다.
그림 8.2‑1 그리퍼 설정
중요
설정을 지우기 전에 해당 그리퍼는 비활성 상태여야 합니다.
Step2: 그리퍼 설정이 완료되면 페이지 하단의 그리퍼 정보 표에서 해당 그리퍼 정보를 확인할 수 있습니다. 설정 오류가 있으면 지우기 버튼을 클릭해 다시 설정할 수 있습니다.
그림 8.2‑2 그리퍼 설정 정보
Step3: 설정이 완료된 그리퍼를 선택하고 리셋 버튼을 클릭합니다. 페이지에 명령 전송 성공 팝업이 표시되면 이어서 활성 버튼을 클릭합니다. 그리퍼 정보 표의 활성 상태를 확인해 활성화 성공 여부를 판단할 수 있습니다.
중요
그리퍼를 활성화할 때 그리퍼에 물체가 잡혀 있으면 안 됩니다.
Step4: 프로그램 티칭 명령 인터페이스에서 Gripper 명령을 선택합니다. 사용자는 제어하려는 그리퍼 번호(설정 및 활성화 완료된 그리퍼)를 선택하고, 대응하는 개폐 상태, 개폐 속도, 개폐 토크, 그리퍼 동작의 최대 대기 시간을 설정할 수 있습니다. 설정이 끝나면 추가 및 적용을 클릭합니다. 또한 프로그램 실행 중 그리퍼를 활성화/리셋하기 위한 명령도 추가할 수 있습니다.
그림 8.2‑3 그리퍼 명령 편집
8.2.1.1. 그리퍼 프로그램 티칭
번호 |
명령 형식 |
주석 |
|---|---|---|
1 |
PTP(template2,100,-1,0) |
#파지 대기점 |
2 |
PTP(template1,100,-1,0) |
#파지점 |
3 |
MoveGripper(1,255,255,0,1000,0) |
#그리퍼 닫기 |
4 |
PTP(template2,100,-1,0) |
/ |
5 |
PTP(template3,100,-1,0) |
#워크 해제 대기점 |
6 |
PTP(template3,100,-1,0) |
#워크 해제점 |
7 |
MoveGripper(1,0,255,0,1000,0) |
#그리퍼 열기 |
8.2.2. 커스텀 오픈 프로토콜
그리퍼 커스텀 프로토콜 업로드 절차는 엔드 Lua 커스텀 오픈 프로토콜 내용을 참조하십시오.
Step1: 그리퍼 활성화 -> 그리퍼 ID 선택 -> 그리퍼 적합 기능 코드를 확인 -> 설정 클릭. 설정된 장치 목록에 그리퍼의 ID와 기능 코드가 표시됩니다.
그림 8.2‑4 그리퍼 설정
참고
엔드 오픈 기능은 현재 그리퍼 장치 주소를 1~8 범위로 지원합니다. 사용 전에 그리퍼 제조사의 상위 소프트웨어에서 장치 주소를 조정해야 합니다.
선택하는 기능 코드는 그리퍼 제조사가 제공하는 제품 설명서에서 적합 기능을 확인한 뒤 엔드 Lua 기능 코드와 일치해야 합니다. 자세한 내용은 `엔드 Lua 적합 그리퍼 설명 매뉴얼`을 참조하십시오.
Step2: 그리퍼 ID를 선택하고 `리셋 -> 활성화`를 수행합니다. 그리퍼는 한 번 초기화를 수행하며, 구체적인 초기화 과정은 그리퍼 제조사의 제품 설명서를 참조하십시오.
그림 8.2‑5 그리퍼 활성화
Step3: `티칭 프로그램 -> 프로그램 편집`에서 그리퍼 동작 명령을 추가합니다.
그림 8.2‑6 그리퍼 동작 명령 추가
그림 8.2‑7 그리퍼 동작 명령 예시
8.2.2.1. 복수 그리퍼
활성화와 운동 제어는 그리퍼 절차를 참조하십시오.
그림 8.2‑8 복수 그리퍼 설정
참고
엔드 오픈 기능은 현재 그리퍼 장치 주소를 1~8 범위로 지원합니다. 사용 전에 그리퍼 제조사의 상위 소프트웨어에서 장치 주소를 조정해야 합니다.
8.2.2.2. 회전 그리퍼
Step1: 그리퍼를 활성화하고 그리퍼 ID를 선택한 뒤, 그리퍼 적합 기능 코드를 체크하고 `설정`을 클릭합니다. 설정된 장치 목록에 그리퍼 ID와 기능 코드가 표시됩니다.
그림 8.2‑9 그리퍼 및 기능 코드 설정
참고
선택하는 기능 코드는 그리퍼 제조사가 제공하는 제품 설명서에서 적합 기능을 확인한 뒤 엔드 Lua 기능 코드와 일치해야 합니다. 자세한 내용은 `RY6P5L922-엔드 전체 주변기기 프로토콜-V2.5-20241101.xlsx`를 참조하십시오.
Step2: 그리퍼 ID를 선택하고 `리셋 -> 활성화`를 수행합니다. 그리퍼는 한 번 초기화를 수행하며, 구체적인 초기화 과정은 그리퍼 제조사의 제품 설명서를 참조하십시오.
그림 8.2‑10 그리퍼 활성화
Step3: `티칭 프로그램 -> 프로그램 편집`에서 회전 그리퍼 동작 명령을 추가합니다.
그림 8.2‑11 회전 그리퍼 동작 명령 추가
그림 8.2‑12 회전 그리퍼 동작 명령 예시
8.3. 힘 센서
초기 설정 -> 주변기기 -> 힘 센서 인터페이스에서 현재 적합 완료 장치와 엔드 Lua 커스텀 오픈 프로토콜을 사용해 힘 센서를 사용할 수 있습니다.
8.3.1. 적합 완료 장치
Step1: `적합 완료 장치`를 클릭해 엔드 주변기기 설정 인터페이스로 들어갑니다.
힘 센서 설정 정보는 제조사, 유형, 소프트웨어 버전, 장착 위치로 나뉩니다. 사용자는 실제 생산 요구에 따라 해당 힘 센서 정보를 설정할 수 있습니다. 설정을 변경해야 할 경우 먼저 해당 번호를 선택하고 지우기 버튼을 클릭해 기존 정보를 삭제한 뒤 다시 설정할 수 있습니다.
그림 8.3‑1 힘 센서 설정
중요
설정을 지우기 전에 해당 센서는 비활성 상태여야 합니다.
Step2: 힘 센서 설정이 완료되면 페이지 하단의 정보 표에서 해당 센서 정보를 확인할 수 있습니다. 설정 오류가 있으면 지우기 버튼을 클릭해 다시 설정할 수 있습니다.
그림 8.3‑2 힘 센서 설정 정보
Step3: 설정이 완료된 힘 센서 번호를 선택하고 리셋 버튼을 클릭합니다. 페이지에 명령 전송 성공 팝업이 표시되면 이어서 활성 버튼을 클릭합니다. 힘 센서 정보 표의 활성 상태를 확인해 활성화 성공 여부를 판단할 수 있습니다. 또한 힘 센서에는 초기값이 있으므로, 사용 요구에 따라 `영점 보정`과 `영점 제거`를 선택합니다. 영점 보정을 수행할 때는 힘 센서가 수직 하방을 향하고 있으며 로봇에 부하가 설정되지 않았는지 확인해야 합니다.
Step4: 힘 센서 설정이 완료되면 센서형 툴 좌표계를 설정해야 합니다. 센서와 엔드 툴 중심 사이 거리 기준으로 센서 툴 좌표계 값을 직접 입력해 적용할 수 있습니다.
8.3.2. 센서 부하 식별
초기 설정 -> 기본 -> 부하 메뉴바에서 `센서 식별`을 클릭해 센서 부하 식별 인터페이스로 들어갑니다.
특정 자세 식별: 엔드 부하 데이터를 지우고 힘 센서를 설정한 뒤 센서 좌표계를 설정하고, 로봇 엔드 자세를 수직 하방으로 조정한 상태에서 `영점 보정`을 수행한 후 엔드 부하를 장착합니다. 먼저 대응하는 센서 툴 좌표계를 선택하고, 센서 및 툴이 수직 하방이 되도록 로봇을 조정하여 데이터를 기록하고 질량을 계산합니다. 다음으로 로봇을 서로 다른 3개의 자세로 조정해 각각 3세트 데이터를 기록하고 무게중심을 계산합니다. 오류가 없음을 확인한 뒤 적용을 클릭합니다.
동적 식별: 엔드 부하 데이터를 지우고 힘 센서를 설정한 후 센서 좌표계를 설정하고, 로봇 엔드 자세를 수직 하방으로 조정한 상태에서 `영점 보정`을 수행한 뒤 엔드 부하를 장착합니다. `식별 시작`을 클릭한 뒤 로봇을 드래그하여 움직이고, 이어서 `식별 종료`를 클릭하면 부하 결과가 자동으로 로봇에 적용됩니다.
자동 영점 조정: 센서가 초기 위치를 기록한 후 자동 영점 조정을 수행할 수 있습니다.
그림 8.3‑3 센서 부하 식별
8.3.3. 힘 센서 보조 드래그
센서를 설정한 후에는 센서와 조합해 로봇 드래그를 더 효과적으로 보조할 수 있습니다. 최초 사용 시에는 오른쪽 그림의 데이터를 기준으로 설정하고, 적용이 끝나면 별도로 드래그 모드에 들어갈 필요 없이 엔드 힘 센서를 직접 드래그하는 것만으로 로봇을 자세 고정 상태로 이동시킬 수 있습니다. (아래 그림 데이터는 참고값입니다.)
그림 8.3‑4 힘/토크 센서 드래그 잠금
참고
특이점 전략은 힘 센서 보조 잠금 상태에서 개발된 특이점 통과 및 회피 기능입니다.
특이점 회피 전략은 기본 기능 옵션입니다. 보조 드래그를 활성화하면 기본적으로 회피 기능이 켜집니다. 특이점 회피는 로봇이 특이 자세에 있을 때 가상 힘을 추가해 로봇을 특이 자세에서 벗어나게 하는 기능입니다.
특이 자세:
팔꿈치 특이점: 회전축 2, 3, 4가 동일 평면 내에 있을 때 팔꿈치 관절이 완전 신장 또는 완전 수축 상태가 됩니다. RY 로봇의 기계적 한계로 인해 완전 수축 자세는 도달할 수 없습니다.
손목 특이점: 회전축 4와 6이 평행할 때 발생합니다. RY 로봇의 기계적 한계로 인해 이 자세는 도달할 수 없습니다.
어깨 특이점: 손목 중심점이 회전축 1과 2가 이루는 평면 안에 있을 때 발생합니다.
특이점 통과 기능은 `특이점 전략`을 `통과`로 선택해 적용합니다. 로봇이 현재 위치 자세가 특이 자세라고 검출하면 자동으로 전류 루프 드래그 모드로 전환됩니다. 특이 자세에서 벗어났다고 검출되면 드래그 모드가 힘 센서 보조 드래그로 전환되어 동작을 계속합니다.
적응 선택: 조립 작업 시 활성화합니다. 활성화하면 드래그가 무거워집니다.
관성 파라미터: 드래그 과정의 조작감을 조정합니다. 기술자의 지도 아래 신중하게 조작해야 합니다.
감쇠 파라미터:
병진 방향: 파라미터는 [100-200] 범위로 설정할 것을 권장합니다.
회전 방향: 파라미터는 [3-10] 범위로 설정할 것을 권장합니다. 이 중 RZ 방향 설정 범위는 `[0.1-5]`입니다.
효과: 센서를 사용해 드래그할 때 감쇠를 크게 하면 드래그가 어려워지고, 감쇠를 작게 하면 로봇 드래그가 지나치게 가벼워집니다. 너무 작게 설정하지 않는 것을 권장합니다.
감쇠 파라미터 전체 범위: 병진 XYZ`는 `[100-1000], 회전 RX, RY`는 `[3-50], `RZ`는 `[2-10]`입니다.
최대 드래그 힘은 50, 최대 드래그 속도는 `180`입니다.
강성 파라미터: 모두 `0`으로 설정합니다.
드래그 힘 임계값: 병진 XYZ`는 `[5-10], 회전 RX, RY, `RZ`는 `[0.5-5]`입니다.
중요
병진 방향 XYZ 또는 회전 방향 RX, RY, `RZ`의 힘 임계값을 크게 설정해 잠금 효과를 구현하는 방식입니다.
8.3.4. 힘/토크 센서 충돌 검출
명령 설명: FT_Guard 명령은 충돌 검출 명령입니다. 해당 센서 좌표계를 선택하고 유효한 모멘트 방향 검출을 체크한 뒤, 현재값, 충돌 최대 임계값, 충돌 최소 임계값 3개 항목을 설정합니다. 충돌 검출 조건의 정상 범위는 (현재값 - 최소 임계값, 현재값 + 최대 임계값)`입니다. 프로그램에 `시작`과 `종료 명령을 추가합니다.
그림 8.3‑5 FT_Guard 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
FT_Guard(1,1,1,1,1,0,0,0,5,0,0,0,0,0,10,0,0,0,0,0,5,0,0,0,0,0) |
#힘/모멘트 충돌 검출 시작 |
2 |
PTP(template1,100,-1,0) |
#운동 명령 |
3 |
FT_Guard(0,1,1,1,1,0,0,0,5,0,0,0,0,0,10,0,0,0,0,0,5,0,0,0,0,0) |
#힘/모멘트 충돌 검출 종료 |
8.3.5. 힘/토크 센서 힘 제어 운동
명령 설명: FT_Control 명령은 힘 제어 운동 명령으로, 로봇이 설정 힘 부근에서 동작하도록 할 수 있으며 연마 작업에서 자주 사용됩니다. 해당 센서 좌표계를 선택하고 유효한 모멘트 방향 검출을 체크한 뒤, 검출 임계값과 각 방향의 PID 비례 계수(일반적으로 p=0.001)를 설정하고, 최대 조정 거리(X, Y, Z)와 최대 조정 각도(RX, RY, RZ)를 설정합니다. 프로그램에 시작`과 `종료 명령을 추가합니다.
그림 8.3‑6 FT_Control 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
FT_Control(1,11,1,0,1,0,0,0,10,0,5,0,0,0,0.001,0,0,0,0,0,0,0,0,10,5) |
#힘/모멘트 운동 제어 시작 |
2 |
Lin(template3,100,-1,0,0) |
#운동 명령 |
3 |
FT_Control(0,11,1,0,1,0,0,0,10,0,5,0,0,0,0.001,0,0,0,0,0,0,0,10,5) |
#힘/모멘트 운동 제어 종료 |
8.3.6. 힘/토크 센서 나선 삽입
명령 설명: FT_Spiral 명령은 나선 탐색 삽입 명령으로, 일반적으로 원통축의 축-홀 조립 작업에 사용됩니다. 동작 실행 전에 로봇 엔드를 홀 위치의 대략적인 위치로 드래그한 뒤, 현재 작업 장면에 맞게 명령 파라미터를 설정하여 프로그램에 추가합니다. 실행 후 로봇은 나선형 운동으로 탐색을 수행합니다.
그림 8.3‑7 FT_Spiral 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
FT_Control(1,10,0,0,1,0,0,0,0,0,5,0,0,0,0.0005,0,0,0,0,0,0,10,0) |
#힘/모멘트 운동 제어 시작 |
2 |
FT_SpiralSearch(0,0.7,0,60000,5) |
#나선 삽입 |
3 |
FT_Control(0,10,0,0,1,0,0,0,0,0,5,0,0,0,0.0005,0,0,0,0,0,0,10,0) |
#힘/모멘트 운동 제어 종료 |
8.3.7. 힘/토크 센서 회전 삽입
명령 설명: FT_Rot 명령은 회전 탐색 삽입 명령으로, 일반적으로 나선 삽입 동작에 이어 키 축의 축-홀 조립에 사용됩니다. 동작 실행 전에 로봇 엔드를 나선 탐색으로 찾은 홀 위치 또는 완전히 정렬된 티칭 홀 위치로 이동시키고, 현재 작업 장면에 맞게 명령 파라미터를 설정하여 프로그램에 추가합니다. 실행 후 로봇은 완만한 회전 운동으로 탐색을 수행합니다.
그림 8.3‑8 FT_Rot 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
FT_Control(1,10,0,0,1,0,0,0,0,0,5,0,0,0,0.0005,0,0,0,0,0,0,10,0) |
#힘/모멘트 운동 제어 시작 |
2 |
FT_RotInsertion(0,3,0,5,1,0,1) |
#회전 삽입 |
3 |
FT_Control(0,10,0,0,1,0,0,0,0,0,5,0,0,0,0.0005,0,0,0,0,0,0,10,0) |
#힘/모멘트 운동 제어 종료 |
8.3.8. 힘/토크 센서 직선 삽입
명령 설명: FT_Lin 명령은 직선 삽입 명령으로, 일반적으로 나선 삽입 동작 또는 회전 삽입 동작에 이어 키 축의 축-홀 조립에 사용됩니다. 동작 실행 전에 로봇 엔드를 나선 탐색으로 찾은 홀 위치, 회전 삽입 동작 종료 위치 또는 완전히 정렬된 티칭 홀 위치로 이동시키고, 현재 작업 장면에 맞게 명령 파라미터를 설정하여 프로그램에 추가합니다. 실행 후 로봇은 설정된 방향으로 직선 운동을 수행합니다.
그림 8.3‑9 FT_Lin 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
FT_Control(1,10,0,0,1,0,0,0,0,0,5,0,0,0,0.0005,0,0,0,0,0,0,10,0) |
#힘/모멘트 운동 제어 시작 |
2 |
FT_LinInsertion(0,50,1,0,100,1) |
#직선 삽입 |
3 |
FT_Control(0,10,0,0,1,0,0,0,0,0,5,0,0,0,0.0005,0,0,0,0,0,0,10,0) |
#힘/모멘트 운동 제어 종료 |
8.3.9. 힘/토크 센서 표면 위치 결정
명령 설명: FT_FindSurface 명령은 표면 위치 결정 명령으로, 일반적으로 물체 표면을 찾는 데 사용됩니다. 현재 작업 장면에 맞게 해당 좌표계, 이동 방향, 이동 축, 탐색 직선 속도, 탐색 직선 가속도, 최대 탐색 거리, 동작 종료 힘 임계값 등의 파라미터를 설정하여 프로그램에 추가합니다. 프로그램을 실행하면 로봇 엔드는 표면이 있는 방향으로 천천히 이동하기 시작합니다.
그림 8.3‑10 FT_FindSurface 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
PTP(1,30,-1,0) |
#초기 위치 |
2 |
FT_FindSurface(0,1,3,1,0,100,5) |
#평면 위치 결정 |
8.3.10. 힘/토크 센서 중심 위치 결정
명령 설명: FT_CalCenter 명령은 중심 위치 결정 명령으로, 일반적으로 두 표면 사이의 중앙 평면을 찾는 데 사용됩니다. 현재 작업 장면에 맞게 해당 좌표계, 이동 방향, 이동 축, 탐색 직선 속도, 탐색 직선 가속도, 최대 탐색 거리, 동작 종료 힘 임계값 등을 설정해 각각 표면 A와 표면 B를 탐색합니다. 프로그램에 추가하고 실행하면 로봇은 먼저 표면 A 방향으로 천천히 이동하여 위치를 찾고, 이어서 표면 B 방향으로 이동하여 위치를 찾은 뒤 중심 평면 위치를 계산할 수 있습니다.
그림 8.3‑11 FT_CalCenter 명령 편집
프로그램 예:
번호 |
명령 형식 |
주석 |
1 |
PTP(1,30,-1,0) |
#초기 위치 |
2 |
FT_CalCenterStart() |
#표면 위치 결정 시작 |
3 |
FT_Control(1,10,0,0,1,0,0,0,0,0,-10,0,0,0,0.00001,0,0,0,0,0,0,100,0) |
#힘/모멘트 운동 제어 시작 |
4 |
FT_FindSurface(1,2,2,10,0,200,5) |
#표면 A 위치 결정 |
5 |
FT_Control(0,10,0,0,1,0,0,0,0,0,-10,0,0,0,0.00001,0,0,0,0,0,0,100,0) |
#힘/모멘트 운동 제어 종료 |
6 |
PTP(1,30,-1,0) |
#초기 위치 |
7 |
FT_Control(1,10,0,0,1,0,0,0,0,0,-10,0,0,0,0.00001,0,0,0,0,0,0,100,0) |
#힘/모멘트 운동 제어 시작 |
8 |
FT_FindSurface(1,1,2,20,0,200,5) |
#표면 B 위치 결정 |
9 |
FT_Control(0,10,0,0,1,0,0,0,0,0,10,0,0,0,0.00001,0,0,0,0,0,0,100,0) |
#힘/모멘트 운동 제어 종료 |
10 |
pos={} |
#배열 pos 정의 |
11 |
pos = FT_CalCenterEnd() |
#위치 결정 중심의 데카르트 위치 자세 취득 |
12 |
MoveCart(pos,GetActualTCPNum(),GetActualWObjNum(),30,10,100,-1,0) |
#위치 결정 중심 위치로 이동 |
8.3.11. 커스텀 오픈 프로토콜
커스텀 프로토콜 카드를 클릭해 인터페이스로 들어가 힘 센서를 활성화합니다. 설정된 장치 목록에 힘 센서가 표시되며, FT 인터페이스에 들어가 힘 센서 데이터를 조회할 수 있습니다.
그림 8.3‑12 힘 센서 활성화
8.4. 용접 핸드 핸들
초기 설정 -> 주변기기 -> 용접 핸드 핸들 인터페이스에서 현재 적합 완료 장치와 엔드 Lua 커스텀 오픈 프로토콜을 사용해 용접 핸드 핸들을 사용할 수 있습니다.
8.4.1. 적합 완료 장치
8.4.1.1. 설정 절차
Step1: 적합 완료 장치 카드를 클릭해 적합 완료 장치 인터페이스로 들어갑니다. 설정 정보는 제조사, 유형, 소프트웨어 버전, 장착 위치로 나뉩니다. 사용자는 실제 생산 요구에 따라 해당 정보를 설정할 수 있습니다. 설정을 변경해야 할 경우 먼저 해당 제조사를 선택하고 지우기 버튼을 클릭해 기존 정보를 삭제한 뒤 다시 설정할 수 있습니다.
그림 8.4‑1 용접 핸드 핸들 적합 완료 장치 설정
중요
설정을 지우기 전에 해당 장치는 비활성 상태여야 합니다.
Step2: A-E 키 위치와 IO 키를 순서대로 설정합니다. Smart Tool 설정이 완료되면 태스크 매니저 내부에서 각 버튼에 대응하는 기능을 유지합니다. 특정 버튼이 눌렸다고 검출되면 해당 버튼에 대응하는 기능 항목이 자동으로 실행됩니다.
A-E 키 위치 기능:
신규 프로그램
프로그램 저장
PTP
Lin
ARC
위빙 시작
위빙 종료
IO 포트
운동 명령: PTP, LIN, ARC 운동 명령을 선택할 때는 해당 점 속도를 입력해야 합니다. 설정이 성공하면 티칭 프로그램에 관련 운동 명령이 1개 추가됩니다. ARC 운동 명령을 설정할 때는 먼저 PTP/LIN 명령을 설정해야 합니다.
DO 출력: DO 출력`을 선택하면 드롭다운 박스가 표시되며 출력 `DO0~DO7 옵션을 선택할 수 있습니다.
그림 8.4‑2 A-E 키 위치
IO 키 위치 기능:
IO 신호 설정: 드롭다운 박스에서 DO0~DO7, CO0~CO7, End-DO0, End-DO1, 확장 IO(Aux-DO0~Aux-DO127)를 선택할 수 있습니다.
조합 명령: IO 신호`를 선택하면 특정 조건에서 `용접기 선택`과 `점 속도 설정 항목이 표시되며, 이에 따라 서로 다른 프로그램 명령이 생성됩니다.
중요
IO 신호 설정이 DO0~DO7 또는 CO0~CO7`(`아크 시작 미설정)인 경우 프로그램은 `SetDO`를 추가합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
IO 신호 설정이 End-DO0, `End-DO1`인 경우 프로그램은 `SetToolDO`를 추가합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
IO 신호 설정이 확장 IO(용접기 아크 시작 미설정)인 경우 프로그램은 `SetAuxDO`를 추가합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
IO 신호 설정이 CO0~CO7`(`아크 시작 설정)이고 `용접기 선택`이 `없음`인 경우 프로그램은 `SetDO`를 추가합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
IO 신호 설정 항목이 확장 IO(용접기 아크 시작 설정)이고 `용접기 선택`이 `없음`인 경우 프로그램은 `SetAuxDO`를 추가합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
IO 신호 설정이 CO0~CO7`(`아크 시작 설정) 또는 확장 IO(용접기 아크 시작 설정)이고 용접기 선택`이 `용접`인 경우, 1회차 눌림에서 `ARCStart, 2회차에서 ARCEnd, 3회차에서 ARCStart, 4회차에서 `ARCEnd`를 추가하며 이후 교대로 반복합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
IO 신호 설정이 CO0~CO7`(`아크 시작 설정) 또는 확장 IO(용접기 아크 시작 설정)이고 용접기 선택`이 `LIN+용접`인 경우, 1회차에서 `LIN`과 `ARCStart, 2회차에서 LIN`과 `ARCEnd, 3회차에서 LIN`과 `ARCStart, 4회차에서 `LIN`과 `ARCEnd`를 추가하며 이후 교대로 반복합니다. 이때 `용접기 선택`과 `점 속도`가 표시됩니다.
IO 신호 설정이 CO0~CO7`(`아크 시작 설정) 또는 확장 IO(용접기 아크 시작 설정)이고 용접기 선택`이 `LIN+용접+위빙`인 경우, 1회차에서 `LIN, ARCStart, WeaveStart, 2회차에서 LIN, ARCEnd, WeaveEnd, 3회차에서 LIN, ARCStart, WeaveStart, 4회차에서 LIN, ARCEnd, `WeaveEnd`를 추가하며 이후 교대로 반복합니다. 이때 `용접기 선택`과 `점 속도`는 표시되지 않습니다.
그림 8.4‑3 IO 키 위치
8.4.2. 커스텀 프로토콜
`커스텀 프로토콜`을 클릭해 엔드 Lua 오픈 프로토콜 적합 용접 핸드 핸들 기능 인터페이스로 들어갑니다.
8.4.2.1. 프로토콜 설정
오픈 프로토콜을 사용해 용접 핸드 핸들을 적합 설정하려면, 로봇 전원 기동 후 먼저 웹 페이지에서 오픈 프로토콜 업로드 설정을 수행해야 합니다.
`커스텀 프로토콜 업로드`를 클릭하고 `Boot 진입`을 클릭한 뒤 오픈 프로토콜을 업로드합니다. 업로드가 완료된 후 장치를 재시작하면 엔드 Lua 오픈 프로토콜 적합 용접 핸드 핸들을 사용할 수 있습니다.
그림 8.4‑4 엔드 오픈 프로토콜 업로드
엔드 프로토콜 활성화 슬라이더를 켜면 용접 핸드 핸들을 적합 설정할 수 있습니다. 활성화 후에는 전원을 껐다 켜도 파라미터가 유지됩니다.
그림 8.4‑5 엔드 오픈 프로토콜 활성화
8.4.2.2. 오픈 프로토콜 템플릿
자스다 적합 오픈 프로토콜을 예로 들면 다음과 같습니다.
function Getbit(X,Bit) --X의 해당 bit 비트를 추출
return ((X&(1<<Bit))>>Bit)
end
while(1)
do
IwdgTaskHandle()
MainLoop()
UpDownLoadHandle()
SdoRwPara()
EndErrClear()
local BFlag=LuaBreak()
if(BFlag==1)then
break
end
RxData={}
T0={0x7D,0x08,0x22,0xB3,0x01,0x00}
T1={0x7D,0x08,0x22,0xB4,0x03,0x00}
T2={0x7D,0X08,0X22,0XB5,0x1E,0x00}
DelayMs(5)
RxLen=WeldToolMasterGetCmd(RxData) --WeldToolMasterGetCmd() 함수는 용접 핸드 핸들이 송신한 명령을 가져오는 데 사용됩니다(용접 핸드 핸들이 마스터인 경우). 사용할 때는 빈 테이블(X={})을 준비해야 합니다
if (RxData[1]==0x7D)and(RxData[2]==0x08)and(RxData[3]==0x22) then
if(RxData[4] == 0xB3)then
--JASIC 용접 핸드 핸들의 기능 코드를 예로 들면, 여기서는 0xB3(용접 파라미터 설정)입니다.
local SetParams={A2=RxData[7],A1=RxData[8],A6=(ByteToDwFloat(RxData[9],RxData[10],RxData[11],RxData[12]))*1000,
A8=(ByteToDwFloat(RxData[13],RxData[14],RxData[15],RxData[16])),A7=(ByteToDwFloat(RxData[17],RxData[18],RxData[19],RxData[20])),
A4=(ByteToDwFloat(RxData[21],RxData[22],RxData[23],RxData[24]))*1000,A5=(ByteToDwFloat(RxData[25],RxData[26],RxData[27],RxData[28]))*1000}
SetWeldParams(SetParams) --SetWeldParams() 함수는 컨트롤러의 용접 파라미터를 설정하는 데 사용되며, 용접 핸드 핸들의 커스텀 파라미터 표를 참고해 수정할 항목을 정해야 합니다(총 A, B, C 3개 영역)
Dword=GetRobotState() --GetRobotState() 함수는 로봇 관련 상태를 가져오는 데 사용됩니다. 현재 bit0은 로봇 인에이블 상태, bit1은 로봇 오류 상태, bit2는 로봇 이동 상태, bit3은 아크 시작/종료 명령 신호입니다. 엔드 전체 주변기기 프로토콜 V2.7을 참조할 수 있습니다
T0[7]=((Dword)&(1<<1))
T0[8],T0[9]=WeldToolCrcValue(T0) --WeldToolCrcValue() Nurirobot 커스텀 프로토콜 CRC 검사
T0[10]=0x0E
EndTxWeldData(T0) --EndTxWeldData() 함수는 패킷 데이터를 송신하는 데 사용됩니다(여기서는 용접 핸드 핸들의 용접 파라미터 설정 명령에 대한 응답)
DelayMs(5)
end
if(RxData[4] == 0xB4)then --0xB4 실시간 제어 명령
local key={K0=Getbit(RxData[7],0),K1=Getbit(RxData[7],1),K2=Getbit(RxData[7],2),K3=Getbit(RxData[7],3),
K4=Getbit(RxData[7],4),K5=Getbit(RxData[7],5),K6=Getbit(RxData[7],6),K7=Getbit(RxData[7],7),
K8=Getbit(RxData[8],0),K9=Getbit(RxData[8],1),K10=Getbit(RxData[8],2),K11=Getbit(RxData[8],3),
K12=Getbit(RxData[8],4),K13=Getbit(RxData[8],5),K14=Getbit(RxData[8],6),K15=Getbit(RxData[9],0),
K16=Getbit(RxData[9],1),K17=Getbit(RxData[9],2),K18=Getbit(RxData[9],3),K19=Getbit(RxData[9],4),
K20=Getbit(RxData[9],5),K21=Getbit(RxData[9],6),K22=Getbit(RxData[9],7),K23=Getbit(RxData[10],0),
K24=Getbit(RxData[10],1)} --키 값은 엔드 전체 주변기기 프로토콜 V2.7의 표 26을 참조해야 합니다. K0-K31은 DWordInput10의 bit0-bit31, K32-K63은 DWordInput9의 bit0-bit31에 대응합니다
SetWeldToolKeys(key) --SetWeldToolKeys() 함수는 용접 핸드 핸들의 키 상태를 업로드하는 데 사용되며, 실제 장치에 맞춰 표의 키 값을 조정할 수 있습니다
Dword=GetRobotState()
T1[7]=(Dword)&(0x1)
T1[8]=(Dword>>1)&(0x1)
T1[9]=(Dword>>2)&(0x1)
T1[10],T1[11]=WeldToolCrcValue(T1)
T1[12]=0X0E
EndTxWeldData(T1)
DelayMs(5)
end
if(RxData[4] == 0xB5)then
--용접 파라미터 읽기(컨트롤러에서 가져와 용접 핸드 핸들로 전달)
local wldpams={"A2","A1","A6","A8","A7","A4","A5"}
--용접 핸드 핸들에 실제로 필요한 용접 파라미터에 따라 작성합니다. 여기서는 JASIC 장치가 이 값들을 사용합니다. 엔드 전체 주변기기 프로토콜 V2.7의 표 26을 참조할 수 있습니다
GetWeldParams(wldpams) --GetWeldParams()는 대응하는 용접 파라미터를 가져와 테이블의 값을 치환합니다(예: A2=100이면 함수 호출 후 wldpams[1]=100)
T2[7]=wldpams[1]
T2[8]=wldpams[2]
wldpams[3]=wldpams[3]/1000
wldpams[6]=wldpams[6]/1000
wldpams[7]=wldpams[7]/1000
for i=0,4 do
T2[9+(i*4)+3],T2[9+(i*4)+2],T2[9+(i*4)+1],T2[9+(i*4)+0]=DwFloatToByte(wldpams[3+i])
end
for i=0,7 do
T2[29+i]=0
end
T2[37],T2[38]=WeldToolCrcValue(T2)
T2[39]=0x0E
EndTxWeldData(T2)
DelayMs(5)
end
end
LuaGc()
end
8.4.2.3. 오픈 프로토콜에서 지원 가능한 명령
오픈 프로토콜에서는 아래 명령을 설정할 수 있으며, 동시에 `39-63`은 예약되어 있어 후속 확장이 가능합니다.
표 8.4-1 오픈 프로토콜에서 지원 가능한 명령
Bit |
설명 |
0 |
프로그램 지우기 |
1 |
프로그램 저장 |
2 |
안전점 생성(LIN 명령) |
3 |
직선 실행점 생성(LIN 명령) |
4 |
원호 전이점 추가 |
5 |
원호 종점 추가 및 ARC 명령 생성 |
6 |
모드 전환, 기본값은 수동 모드 |
7 |
로봇 실행 상태 전환 |
8 |
로봇 드래그 상태 전환 |
9 |
스폿 용접 시작 |
10 |
위빙 아크 시작 명령 추가 |
11 |
위빙 아크 종료 명령 추가 |
12 |
X 정방향 조그 |
13 |
X 역방향 조그 |
14 |
Y 정방향 조그 |
15 |
Y 역방향 조그 |
16 |
Z 정방향 조그 |
17 |
Z 역방향 조그 |
18 |
RX 정방향 조그 |
19 |
RX 역방향 조그 |
20 |
RY 정방향 조그 |
21 |
RY 역방향 조그 |
22 |
RZ 정방향 조그 |
23 |
RZ 역방향 조그 |
24 |
시작점 생성 |
25 |
PTP |
26 |
고정 자세 드래그 |
27 |
용접 중단 복구 |
28 |
용접 중단 종료 |
29 |
SetDO |
30 |
offline |
31 |
설정 파라미터 갱신 |
32 |
아크 시작 ArcStart |
33 |
아크 종료 ArcEnd |
34 |
Lin+ArcStart+weaveStart |
35 |
Lin+ArcEnd+weaveEnd |
36 |
Lin+ArcStart |
37 |
Lin+ArcEnd |
38 |
프로그램 취소 |
39 |
예약 |
… |
예약 |
63 |
예약 |
8.4.2.4. 오픈 프로토콜에서 설정 가능한 파라미터
오픈 프로토콜에서는 아래 파라미터를 설정할 수 있습니다.
표 8.4-2 오픈 프로토콜에서 설정 가능한 파라미터
인덱스 |
데이터 내용 |
데이터 타입 |
범위 |
0 |
용접 속도 |
float |
0-100% |
1 |
공주행 속도 |
float |
0-100% |
2 |
아크 시작, 수호 타임아웃 시간 |
float |
0-65535(ms) |
3 |
위빙 좌측 대기 시간 |
float |
0-99999(ms) |
4 |
위빙 우측 대기 시간 |
float |
0-99999(ms) |
5 |
스폿 용접 시간 |
float |
0-99999(ms) |
6 |
위빙 폭 |
float |
0-1000(0.1mm) |
7 |
위빙 주파수 |
float |
0-100(0.1Hz) |
8 |
용접기 제어 타입; 0-제어 박스 IO, 1-디지털 통신 프로토콜(UDP) |
float |
0-255 |
9 |
용접 프로세스 번호(0-99) |
float |
0-99 |
10 |
위빙 타입 |
float |
0-255 |
11 |
전류 제어용 아날로그 출력 포트 |
float |
0-1 |
12 |
전압 제어용 아날로그 출력 포트 |
float |
0-1 |
13 |
동작 DO 포트 번호 |
float |
0-15 |
14 |
위빙 파라미터 번호 |
float |
0-255 |
15 |
수동 모드 전역 속도 |
float |
0-100% |
16 |
자동 모드 전역 속도 |
float |
0-100% |
17 |
용접 전류 |
float |
0-999990(0.1A) |
18 |
용접 전압 |
float |
0-999990(0.1V) |
19 |
단회 조그 최대 거리 |
float |
0-1000(0.1mm) |
20 |
용접기 준비 확장 DI 포트 |
float |
0-127 |
21 |
아크 시작 성공 확장 DI 포트 |
float |
0-127 |
22 |
용접 중단 복구 확장 DI 포트 |
float |
0-127 |
23 |
용접 중단 종료 확장 DI 포트 |
float |
0-127 |
24 |
용접기 아크 시작 확장 DO 포트 |
float |
0-127 |
25 |
가스 검출 확장 DO 포트 |
float |
0-127 |
26 |
정방향 송선 확장 DO 포트 |
float |
0-127 |
27 |
역방향 송선 확장 DO 포트 |
float |
0-127 |
28 |
용접 중단 복구 유효 |
float |
0-1 |
29 |
재복귀 점 속도 |
float |
0-100% |
30 |
운동 방식 |
float |
0-1 |
31 |
용접 아크 중단 검출 유효 |
float |
0-1 |
32 |
대기 시간 포함 여부(ms) |
float |
0-1 |
33 |
위빙 콜백 비율 |
float |
0-100% |
34 |
위빙 위치 대기 타입 |
float |
0-255 |
35 |
아크 시작 시간 |
float |
0-65535(ms) |
36 |
수호 시간 |
float |
0-65535(ms) |
37 |
용접 아크 중단 확인 시간 |
float |
0-65535(ms) |
38 |
중복 거리 |
float |
0-1000(0.1mm) |
39 |
아크 시작 전류 |
float |
0-999990(0.1A) |
40 |
아크 시작 전압 |
float |
0-999990(0.1V) |
41 |
수호 전류 |
float |
0-999990(0.1A) |
42 |
수호 전압 |
float |
0-999990(0.1V) |
43 |
최소 용접 전류 |
float |
0-999990(0.1A) |
44 |
최대 용접 전류 |
float |
0-999990(0.1A) |
45 |
최소 용접 전류 대응 출력 아날로그량 |
float |
0-100(0.1A) |
46 |
최대 용접 전류 대응 출력 아날로그량 |
float |
0-100(0.1A) |
47 |
최소 용접 전압 |
float |
0-2000(0.1V) |
48 |
최대 용접 전압 |
float |
0-2000(0.1V) |
49 |
최소 용접 전압 대응 출력 아날로그량 |
float |
0-100(0.1V) |
50 |
최대 용접 전압 대응 출력 아날로그량 |
float |
0-100(0.1V) |
51 |
수직 삼각 위빙 좌측 현 길이 |
float |
0-1000(0.1mm) |
52 |
수직 삼각 위빙 우측 현 길이 |
float |
0-1000(0.1mm) |
53 |
위빙 방향 방위각 |
float |
-1800-1800(0.1°) |
54 |
위빙 방향 경사각 |
float |
-1800-1800(0.1°) |
55 |
수직 삼각 위빙 꼭짓점 대기 시간 |
float |
0-99999(ms) |
8.5. 스프레이건
8.5.1. 스프레이건 주변기기 설정 절차
Step1: 초기 설정 -> 주변기기 메뉴바에서 `스프레이건`을 클릭해 스프레이건 설정 인터페이스로 들어갑니다.
사용자는 스프레이 기능 원클릭 설정 버튼을 통해 스프레이에 필요한 DO를 빠르게 설정할 수 있습니다. 기본 설정은 `DO10`이 스프레이 시작/정지, `DO11`이 스프레이건 청소입니다.
사용자는 필요에 따라 `초기 설정 -> 기본 -> I/O 설정`에서 사용자 정의 DO 설정도 할 수 있습니다.
중요
스프레이 기능을 사용하기 전에 해당 툴 좌표계를 설정하고, 프로그램 티칭 시 설정한 툴 좌표계를 적용해야 합니다.
Step2: 설정이 완료되면 스프레이 시작, 스프레이 정지, 청소 시작, `청소 정지`의 4개 버튼을 클릭해 스프레이건을 조정합니다.
그림 8.5‑1 스프레이건 설정
Step3: 프로그램 편집 명령 인터페이스에서 스프레이건 명령을 선택합니다. 실제 프로그램 티칭 요구에 따라 필요한 위치에 스프레이 시작, 스프레이 정지, 청소 시작, `청소 정지`의 4개 명령을 추가해 적용합니다.
그림 8.5‑2 스프레이건 명령
8.5.2. 스프레이 프로그램 티칭
번호 |
명령 형식 |
주석 |
|---|---|---|
1 |
Lin(template1,100,-1,0,0) |
#스프레이 시작점 |
2 |
SprayStart() |
#스프레이 시작 |
3 |
Lin(template2,100,-1,0,0) |
#스프레이 경로 |
4 |
Lin(template3,100,-1,0,0) |
#스프레이 정지점 |
5 |
SprayStop() |
#스프레이 정지 |
6 |
Lin(template4,100,-1,0,0) |
#건 청소점 |
7 |
PowerCleanStart() |
#청소 시작 |
8 |
WaitTime(5000) |
#청소 시간 ms |
9 |
PowerCleanStop() |
#청소 정지 |
8.6. 용접기
협동 로봇이 용접 토치를 장착하고 용접 작업을 수행하면 용접 효율과 용접 품질을 크게 향상시킬 수 있습니다. Nurirobot 협동 로봇은 컨트롤러 IO, 디지털 통신 프로토콜(UDP), `디지털 통신 프로토콜(Modbus TCP)`의 세 가지 방식으로 용접 제어를 수행할 수 있습니다.
컨트롤러 IO: 로봇은 제어 박스의 아날로그 출력(0-10V)을 설정해 용접 전류와 용접 전압을 제어하고, 제어 박스의 디지털 출력으로 아크 시작, 와이어 송급, 가스 공급을 제어하며, 디지털 입력으로 용접기 준비 완료, 아크 시작 성공 등의 신호를 수집합니다.
디지털 통신 프로토콜(UDP): 로봇은 UDP로 PLC와 통신하고, PLC는 CANOpen 버스 또는 기타 프로토콜로 용접기와 통신하여 용접 전압, 전류, 아크 시작, 와이어 송급, 가스 공급 등의 동작을 제어합니다. (로봇 UDP 통신 프로토콜 내용은 부록 1 참조)
디지털 통신 프로토콜(Modbus TCP): 즉 컨트롤러 주변기기 오픈 프로토콜을 의미하며, 일반적으로 실행 가능한 LUA 프로그램 형태입니다. 이 프로그램은 통신 생성 명령, 슬레이브 장치 제어 데이터 쓰기, 실시간 상태 데이터 읽기 루프를 포함하며, 실행 시 로봇과 장치가 통신을 수립해 데이터를 교환합니다. 컨트롤러 주변기기 오픈 프로토콜 LUA 프로그램에서는 IP 주소, 포트 번호, 주기 등의 통신 파라미터를 사용자 정의할 수 있습니다. 사용자는 실제 장치 상황에 맞게 이 프로토콜 내용을 수정해야 합니다. 지원 장치에는 연마 헤드, 레이저 센서, CNC, 용접기 등이 포함됩니다. 파일명은 `CtrlDev`로 시작해야 하며, 예를 들어 `CtrlDev_Welding.lua`처럼 작성합니다. 최대 4개의 오픈 프로토콜을 동시에 실행할 수 있습니다.
그림 8.6‑1 용접기
컨트롤러 IO 또는 `디지털 통신 프로토콜(UDP)`를 이용한 용접 제어는 주로 다음 단계를 포함합니다. 1. 용접 토치 장착 및 신호 배선 2. 용접기 파라미터 설정 3. 용접 제어 프로그램 작성
8.6.1. 용접 토치 장착
용접 토치는 변환판을 통해 로봇 엔드에 장착되며, 용접 토치 케이블은 로봇 암에 고정해야 합니다.
그림 8.6‑2 로봇 엔드에 용접 토치 장착
용접 토치 고정 장착이 완료되면 6점법으로 용접 토치 툴 좌표계를 보정하고, 이를 현재 툴 좌표계로 적용합니다. 용접 토치 툴 좌표계 보정 정밀도는 실제 용접 정밀도에 영향을 줍니다.
그림 8.6-3 로봇 툴 좌표계 보정 및 적용
8.6.2. 용접기 파라미터 설정
협동 로봇은 컨트롤러 IO 신호 또는 `디지털 통신 프로토콜`로 용접 과정을 제어할 수 있습니다. 두 방식의 설정에는 주로 다음 두 가지 차이가 있습니다.
`컨트롤러 IO`를 사용할 때는 실제 제어 용접 전류/전압과 제어 박스 아날로그 출력값의 대응 관계를 설정해야 합니다.
`디지털 통신 프로토콜`을 사용할 때는 통신 파라미터를 설정해야 합니다.
8.6.2.1. 컨트롤러 IO 용접 제어 설정
초기 설정 -> 주변기기 -> 용접기 메뉴바에서 컨트롤러 I/O 카드를 클릭해 인터페이스로 들어갑니다.
그림 8.6-4 컨트롤러 I/O
8.6.2.1.1. 용접 IO 신호 설정
아래 그림과 같이 용접기 상태 신호 DI 입력 포트와 용접기 제어 신호 DO 출력 포트를 선택한 뒤 설정 버튼을 클릭합니다. 각 신호의 의미는 다음과 같습니다.
그림 8.6-5 용접기 신호 포트 설정
용접기 준비 완료: 용접기가 준비 완료되어 용접 작업을 수행할 수 있는 상태가 되면 이 신호를 로봇에 출력합니다.
용접기가 고장 또는 기타 원인으로 준비 완료 상태가 아니면 이 신호를 로봇에 입력하지 않으며, 이때 로봇 WebApp 우측 상단에 `용접기 준비 미완료`가 표시됩니다. 사용 중인 용접기에 준비 완료 신호가 없는 경우 이 항목의 포트를 `없음`으로 설정할 수 있습니다.
그림 8.6-6 용접기 준비 미완료 오류
그림 8.6-7 용접기 준비를 `없음`으로 설정
아크 시작 성공: 용접기의 아크 시작이 성공했음을 나타냅니다. 로봇이 아크 시작 신호를 용접기에 출력한 후, 용접기로부터의 아크 시작 성공 피드백 신호를 대기합니다. 설정된 타임아웃 시간 내에 로봇이 해당 신호를 검출하지 못하면 아크 시작 타임아웃 오류를 보고합니다.
로봇 용접 기능을 사용할 때 아크 시작 성공 신호를 설정하지 않아도 용접은 가능하지만, 로봇은 아크 시작 성공 DI 미설정 경고를 표시합니다. 사용 중인 용접기에 해당 출력 신호가 있다면 더 안전한 용접을 위해 이 신호를 설정하는 것을 권장합니다.
그림 8.6-8 아크 시작 타임아웃 오류
그림 8.6-9 아크 시작 성공 DI 미설정 경고
용접 중단 복구: 로봇 용접 중 아크가 예기치 않게 중단되었거나 작업자가 능동적으로 용접을 일시정지했을 때 용접 중단이 트리거됩니다. 중단 후 외부에서 로봇으로 들어오는 이 신호가 무효에서 유효로 바뀌면 로봇은 원래 중단 위치에서 자동으로 용접을 복구합니다.
용접 중단 종료: 로봇 용접 중 아크가 예기치 않게 중단되었거나 작업자가 능동적으로 용접을 일시정지했을 때 용접 중단이 트리거됩니다. 중단 후 외부에서 로봇으로 들어오는 이 신호가 무효에서 유효로 바뀌면 로봇은 용접을 종료합니다. 종료 후에는 다시 용접을 복구할 수 없습니다.
용접기 아크 시작: 로봇이 용접기의 아크 시작을 제어하는 DO 출력 포트입니다. 로봇 프로그램이 아크 시작 명령을 실행하면 해당 DO 출력 포트가 자동으로 유효 상태를 출력합니다.
가스 검출/공급: 로봇이 용접기의 가스 공급을 제어하는 DO 출력 포트입니다. 로봇이 가스 공급 명령을 실행하면 해당 DO 출력 포트가 자동으로 유효를 출력합니다.
정방향 와이어 송급: 로봇이 용접기의 정방향 와이어 송급을 제어하는 DO 출력 포트입니다. 로봇이 해당 명령을 실행하면 대응 DO 출력 포트가 자동으로 유효를 출력합니다.
역방향 와이어 송급: 로봇이 용접기의 역방향 와이어 송급을 제어하는 DO 출력 포트입니다. 로봇이 해당 명령을 실행하면 대응 DO 출력 포트가 자동으로 유효를 출력합니다.
8.6.2.1.2. 용접 프로세스 파라미터 설정
아래 그림과 같이 용접 설정 페이지에서 용접 프로세스 파라미터 항목을 찾습니다. 협동 로봇은 `0~99`의 총 100개 용접 프로세스 파라미터 세트를 제공합니다. 이 중 프로세스 번호 `0`은 용접 프로세스 곡선을 사용하지 않음을 의미하며, `1~99`는 용접 프로세스 곡선을 사용합니다.
그림 8.6-10 용접 프로세스 파라미터 설정
용접 프로세스 곡선을 사용하는 경우, 예를 들어 용접 프로세스 번호 1`을 선택하고 아크 시작 전류부터 수호 시간까지의 파라미터를 그림과 같이 순서대로 입력한 뒤 `설정 버튼을 클릭합니다. 이 프로세스 파라미터가 의미하는 실제 용접 과정은 다음과 같습니다.
용접 전류 200A, 전압 23V 설정
아크 시작 실행 후 아크 시작 성공 대기
아크 시작 성공 후 500ms 동안 아크 유지(아크 시작 시간, 로봇은 이동하지 않음)
용접 전류 150A, 용접 전압 `21V`를 설정한 뒤 로봇이 이동을 시작하며 용접 수행
용접 종점 도달 후 용접 전류를 100A, 용접 전압을 `19V`로 설정(수호 전류, 수호 전압)
수호 전류/전압 설정 완료 후 500ms 동안 아크 연소를 유지(로봇은 이동하지 않음)하고 마지막에 아크 종료
용접 프로세스 곡선을 사용하지 않는 경우, 즉 용접 프로세스 파라미터 번호 `0`을 선택하는 경우, 아래 그림과 같이 용접 과정은 다음과 같습니다.
용접 전류와 용접 전압 설정
로봇이 용접기의 아크 시작을 제어하고 아크 시작 성공 대기
아크 시작 성공 후 로봇이 이동을 시작하며 용접 수행
로봇이 용접 종점에 도달하면 즉시 아크 종료
그림 8.6-11 용접 프로세스 곡선을 사용하지 않음
8.6.2.1.3. 용접 전류/전압과 아날로그 출력 관계 설정
협동 로봇의 용접 제어 타입이 컨트롤러 IO`로 선택된 경우, 제어 박스의 아날로그 출력 크기로 용접 전류와 용접 전압 값을 제어합니다. (제어 박스 아날로그 출력 전압 범위는 `0~10V) 이때 제어 박스 아날로그 출력값과 실제 용접 전류/전압 값의 선형 대응 관계를 설정해야 합니다.
그림과 같이 용접기 설정 페이지에서 `아날로그 전류/전압 관계도`를 찾습니다. 이 중 `A-V`는 용접 전류와 제어 박스 아날로그 출력 전압 간 대응 관계를, `V-V`는 용접 전압과 제어 박스 아날로그 출력 전압 간 대응 관계를 나타냅니다.
A-V`를 선택하고 용접 전류 범위 `0-1000A, 아날로그 출력 전압 0-10V`를 입력한 뒤, 출력 AO를 `Ctrl-AO0`(용접 전류 제어 아날로그 출력 포트는 `AO0)로 설정하고 설정 버튼을 클릭합니다. 이 파라미터에서는 제어 박스 출력 아날로그 전압이 `1.5V`일 때 대응 용접 전류는 `150A`입니다.
그림 8.6-12 용접 전류와 출력 아날로그 대응 관계 설정
V-V`를 클릭해 용접 전압과 제어 박스 아날로그 출력 전압 사이의 대응 관계를 설정합니다. 용접 전압 범위 `0-60V, 아날로그 출력 전압값 0-10V`를 입력하고, 출력 AO를 `Ctrl-AO1`로 설정한 뒤 `설정 버튼을 클릭합니다. 이때 제어 박스 `AO1`의 아날로그 출력이 `3.5V`이면 실제 제어 용접 전압은 `21V`입니다.
그림 8.6-13 용접 전압과 출력 아날로그 대응 관계 설정
8.6.2.1.4. 용접기 조정
그림과 같이 용접기 설정 페이지에서 용접기 조정`을 찾고, 프로세스 번호 `1`을 선택한 뒤 타임아웃 시간을 `1000ms`로 입력하고 `가스 공급`을 클릭하면 로봇이 용접기의 보호 가스 공급을 시작하도록 제어합니다. `가스 정지 버튼을 클릭하면 보호 가스 공급을 중지하도록 제어합니다. 다른 버튼인 아크 시작, 정방향 와이어 송급, 역방향 와이어 송급 등의 조작 방법도 동일하므로 여기서는 반복하지 않습니다.
그림 8.6-14 용접기 조정
8.6.2.2. 디지털 통신 프로토콜(UDP) 용접 제어 설정
로봇이 `디지털 통신 프로토콜`로 용접 제어를 수행하는 핵심은 로봇과 PLC가 UDP 통신을 수행하고, 로봇이 UDP 통신을 통해 아크 시작, 와이어 송급, 가스 공급, 전류, 전압 등의 제어 데이터를 PLC로 전달한 뒤, PLC 측이 CANOpen 버스(또는 기타 방식)로 용접기를 제어하는 것입니다. 동시에 PLC는 실제 용접 전류/전압, 아크 시작 성공 신호를 수집해 로봇에 피드백합니다. (로봇 UDP 통신 프로토콜 내용은 부록 1 참조)
초기 설정 -> 주변기기 메뉴바에서 `용접기`를 클릭해 용접기 설정 인터페이스로 들어갑니다. 아래 그림과 같습니다.
그림 8.6-15 디지털 통신 프로토콜(UDP)
로봇과 PLC가 UDP 통신을 수행하기 위해 UDP 통신 파라미터를 설정해야 합니다. 각 항목의 의미는 다음과 같습니다.
IP 주소: UDP 통신 PLC 측의 IP 주소
포트 번호: PLC 측 UDP 통신 포트 번호
통신 주기: 로봇과 PLC의 UDP 통신 주기, 기본값은 2ms
패킷 손실 검출 주기, 패킷 손실 횟수: 검출 주기 내 패킷 손실 수가 설정값을 초과하면 로봇은 UDP 통신 패킷 손실 이상 오류를 보고하고 통신은 자동으로 끊어집니다.
통신 중단 확인 시간: 로봇이 이 시간 내에 1프레임의 완전한 PLC 피드백 데이터 패킷을 수신하지 못하면 UDP 통신 중단 오류 알람을 보고하고 UDP 통신을 끊습니다.
전원 차단 재기동 자동 재연결: 로봇이 전원 차단 후 재기동을 감지했을 때 자동으로 재연결 복구를 수행할지 여부
통신 중단 자동 재연결: 로봇이 UDP 통신 중단을 감지한 후 자동으로 재연결 복구를 수행할지 여부
재연결 주기, 재연결 횟수: UDP 통신 중단 자동 재연결이 활성화되어 있고 UDP 통신 중단이 검출되면 로봇은 설정한 주기에 따라 재연결을 수행합니다. 재연결 횟수가 최대 설정값에 도달해도 연결에 실패하면 UDP 통신 중단 오류 알람을 보고하고 UDP 통신을 끊습니다.
위 파라미터 설정이 완료되면 설정 버튼을 클릭합니다. 설정 성공 후에는 로드 버튼을 클릭합니다.
그림 8.6-16 UDP 통신 설정
8.6.2.2.1. 용접 IO 신호 설정
용접기 상태 신호의 DI 입력 포트와 용접기 제어 신호의 DO 출력 포트를 선택한 뒤 설정 버튼을 클릭합니다. 각 신호의 의미는 다음과 같습니다.
그림 8.6-17 용접기 신호 포트 설정
용접기 준비 완료: 용접기가 준비를 마치고 용접 작업을 수행할 수 있는 상태가 되면, 용접기는 이 신호를 로봇에 출력합니다.
용접기가 고장 또는 기타 원인으로 준비 완료 상태가 아닐 때는 이 신호를 로봇에 입력하지 않으며, 이 경우 로봇 WebApp 우측 상단에 `용접기 준비 미완료`가 표시됩니다. 사용 중인 용접기에 준비 완료 신호가 없다면 이 항목의 포트를 `-1`로 설정할 수 있습니다.
그림 8.6-18 용접기 준비 미완료 오류
그림 8.6-19 용접기 준비를 `-1`로 설정
아크 시작 성공: 용접기의 아크 시작이 성공했음을 나타냅니다. 로봇이 용접기에 아크 시작 신호를 출력한 뒤, 용접기로부터 아크 시작 성공 신호의 피드백을 기다립니다. 설정된 타임아웃 시간 내에 로봇이 용접기의 아크 시작 성공 신호를 감지하지 못하면 로봇은 아크 시작 타임아웃 오류를 보고합니다.
로봇 용접 기능을 사용할 때 아크 시작 성공 신호를 설정하지 않아도 용접은 가능하지만, 로봇은 아크 시작 성공 DI 미설정 경고를 보고합니다. 사용 중인 용접기에 아크 시작 성공 신호 출력이 있다면, 보다 안전한 용접을 위해 이 신호를 설정하는 것을 권장합니다.
그림 8.6-20 아크 시작 타임아웃 오류
그림 8.6-21 아크 시작 성공 DI 미설정 오류
용접 중단 복구: 로봇 용접 과정 중 아크가 예기치 않게 끊어졌거나 작업자가 능동적으로 용접을 일시정지한 경우 용접 중단이 트리거됩니다. 용접 중단 후 외부에서 로봇으로 들어오는 이 신호 입력이 무효에서 유효로 바뀌면, 로봇은 원래의 중단 위치에서 자동으로 용접을 복구합니다.
용접 중단 종료: 로봇 용접 과정 중 아크가 예기치 않게 끊어졌거나 작업자가 능동적으로 용접을 일시정지한 경우 용접 중단이 트리거됩니다. 용접 중단 후 외부에서 로봇으로 들어오는 이 신호 입력이 무효에서 유효로 바뀌면, 로봇은 용접을 종료합니다. 용접 종료 후에는 다시 용접을 복구할 수 없습니다.
용접기 아크 시작: 로봇이 용접기의 아크 시작을 제어하는 DO 출력 포트입니다. 로봇 프로그램이 아크 시작 명령을 실행하면, 용접기 아크 시작에 대응하는 DO 출력 포트가 자동으로 유효 신호를 출력합니다.
가스 검출: 로봇이 용접기의 가스 공급을 제어하는 DO 출력 포트입니다. 로봇이 용접 가스 공급 명령을 실행하면, 가스 공급에 대응하는 DO 출력 포트가 자동으로 유효 신호를 출력합니다.
정방향 와이어 송급: 로봇이 용접기의 정방향 와이어 송급을 제어하는 DO 출력 포트입니다. 로봇이 정방향 와이어 송급 명령을 실행하면, 해당 DO 출력 포트가 자동으로 유효 신호를 출력합니다.
역방향 와이어 송급: 로봇이 용접기의 역방향 와이어 송급을 제어하는 DO 출력 포트입니다. 로봇이 역방향 와이어 송급 명령을 실행하면, 해당 DO 출력 포트가 자동으로 유효 신호를 출력합니다.
8.6.2.2.2. 용접 프로세스 파라미터 설정
그림 22와 같이 용접 설정 페이지에서 용접 프로세스 파라미터 항목을 찾습니다. 협동 로봇은 `0~99`의 총 100개 용접 프로세스 파라미터 세트를 제공합니다. 이 중 프로세스 번호 `0`은 용접 프로세스 곡선을 사용하지 않는다는 뜻이며, 프로세스 번호 `1-99`는 용접 프로세스 곡선을 사용합니다.
그림 8.6-22 용접 프로세스 파라미터 설정
용접 프로세스 곡선을 사용하는 경우, 예를 들어 용접 프로세스 번호 1`을 선택한 뒤 아크 시작 전류부터 수호 시간까지의 파라미터를 그림과 같이 순서대로 입력하고 `설정 버튼을 클릭합니다. 이 프로세스 파라미터가 나타내는 실제 용접 과정은 다음과 같습니다.
① 용접 전류 200A, 전압 23V 설정
② 아크 시작 실행 후 아크 시작 성공 대기
③ 아크 시작 성공 후 500ms 동안 아크 유지(아크 시작 시간, 로봇은 이동하지 않음)
④ 용접 전류 150A, 용접 전압 `21V`를 설정하고 이후 로봇이 이동을 시작해 용접 수행
⑤ 용접 종점 도달 후 용접 전류를 100A, 용접 전압을 `19V`로 설정(수호 전류, 수호 전압)
⑥ 수호 전류와 전압 설정 완료 후 500ms 동안 아크 연소를 유지(로봇은 이동하지 않음)한 다음 마지막에 아크를 끕니다.
용접 프로세스 파라미터를 사용하지 않는 경우, 즉 용접 프로세스 파라미터 번호를 `0`으로 선택한 경우의 용접 과정은 다음과 같습니다.
① 전류, 전압 설정 인터페이스를 통해 해당 용접 전류와 용접 전압 설정
② 로봇이 용접기의 아크 시작을 제어하고 아크 시작 성공 대기
③ 아크 시작 성공 후 로봇이 이동을 시작해 용접 수행
④ 로봇이 용접 종점에 도달하면 즉시 아크 종료
그림 8.6-23 용접 프로세스 곡선을 사용하지 않음
8.6.2.2.3. 용접기 조정
용접기 설정 페이지에서 용접기 조정`을 찾고, 프로세스 번호 `1`을 선택한 뒤 타임아웃 시간을 `1000ms`로 입력하고 `가스 공급`을 클릭하면 로봇이 용접기의 보호 가스 공급을 시작하도록 제어합니다. `가스 정지 버튼을 클릭하면 로봇이 보호 가스 공급을 중지하도록 제어합니다. 다른 버튼인 아크 시작, 정방향 와이어 송급, 역방향 와이어 송급 등의 조작 방법도 동일하므로 여기서는 반복하지 않습니다.
그림 8.5-24 용접기 조정
8.6.3. 용접 프로그램 작성
8.6.3.1. 용접 프로세스 곡선을 사용하는 프로그램 작성
용접 프로세스 곡선을 사용하는 경우(즉, 용접 프로세스 파라미터 번호 1~99 선택), 용접 중 전압/전류 제어는 해당 프로세스 번호에 설정된 곡선 파라미터를 따르므로 용접 전압과 전류를 개별적으로 설정하는 명령을 추가할 필요가 없습니다. 그림과 같이 `티칭 프로그램 -> 프로그램 편집`을 클릭하여 새 사용자 프로그램 `testWeld.lua`를 생성합니다.
그림 8.6-25 testWeld.lua 프로그램 작성
열린 용접 명령 추가 페이지에서 제어 타입을 컨트롤러 I/O`(실제 설정한 용접 제어 방식에 따라 선택)로 선택하고, 용접 프로세스 번호를 `1`로 선택한 뒤(프로세스 번호 `0`은 곡선 미사용, `1-99`는 곡선 사용), 최대 대기 시간을 `10000ms`로 입력하고 `아크 시작, 수호 버튼을 순서대로 클릭한 후 마지막으로 `적용`을 클릭합니다.
그림 8.6-26 용접 명령 추가
이 시점에서 testWeld.lua 프로그램에는 이미 용접 아크 시작 명령과 수호 명령이 추가되어 있습니다. 아크 시작과 수호가 용접 프로세스 곡선 번호 `1`을 사용하도록 선택되어 있으므로, 용접 중 전압/전류 제어는 프로세스 번호 `1`에 설정된 곡선 파라미터를 따르며 용접 전압과 전류를 개별적으로 설정하는 명령을 따로 추가할 필요가 없습니다.
그림 8.6-27 아크 시작/수호 프로그램
2개의 직선 운동 명령을 추가하고 명령 순서를 조정하여, 로봇이 먼저 P1 점으로 이동해 아크 시작을 실행하고, 이후 P2 점으로 이동해 수호를 실행하도록 구성하면 로봇이 `P1`에서 `P2`까지 용접하게 됩니다.
그림 8.6-28 로봇이 P1점에서 P2점까지 용접
8.6.3.2. 용접 프로세스 곡선을 사용하지 않는 프로그램 작성
용접 프로세스 곡선을 사용하지 않는 경우(즉, 용접 프로세스 파라미터 번호 0 선택), 용접 프로그램에는 용접 전압과 전류를 설정하는 명령을 추가해 실제 용접 파라미터를 제어해야 합니다. 티칭 프로그램, `프로그램 티칭`을 클릭해 새 사용자 프로그램 `testWeld.lua`를 생성합니다.
그림 8.6-29 testWeld.lua 프로그램 작성
열린 용접 명령 추가 페이지에서 제어 타입을 `컨트롤러 I/O`로 선택하고, 용접 프로세스 번호를 `0`으로 선택한 뒤(프로세스 번호 `0`은 곡선 미사용, `1-99`는 곡선 사용), 용접 전류 제어 AO를 `Ctrl-AO0`로 설정하고 용접 전류를 `150A`로 입력한 후 `추가`를 클릭합니다. 이어서 용접 전압 제어 AO를 `Ctrl-AO1`로 설정하고 용접 전압을 `21V`로 입력한 후 `추가`를 클릭합니다. 최대 대기 시간을 `10000ms`로 입력하고, `아크 시작`과 `수호`를 순서대로 클릭한 뒤 마지막에 `적용`을 클릭합니다.
그림 8.6-30 용접 명령 추가
이 시점에서 testWeld.lua 프로그램에는 이미 용접 아크 시작 명령과 수호 명령이 추가되어 있습니다. 아크 시작과 수호 명령이 용접 프로세스 번호 `0`을 선택하고 있으므로, 프로그램이 용접 전압/전류 설정 명령을 실행할 때 로봇은 설정된 용접 전압/전류 값과 용접기 설정 페이지에서 정의한 `용접 전압/전류와 출력 아날로그 대응 관계`에 따라 자동으로 해당 제어 박스 아날로그 출력을 내보냅니다.
그림 8.6-31 용접 전압, 전류, 아크 시작, 수호 설정 프로그램
2개의 직선 운동 명령을 추가하고 명령 순서를 조정하여, 로봇이 먼저 P1 점으로 이동해 아크 시작을 실행하고, 이후 P2 점으로 이동해 수호를 실행하도록 구성하면 로봇이 P1 점에서 P2 점까지 용접하게 됩니다.
그림 8.6-32 로봇이 P1점에서 P2점까지 용접
위 프로그램을 실행하면 직선 P1 ~ P2 구간의 용접을 수행할 수 있습니다. 프로그램 실행 전에 다음을 확인하십시오.
용접 토치가 올바르게 장착되어 있는지, 용접 토치 툴 좌표계 보정이 완료되었는지, 그리고 현재 툴 좌표계로 적용되어 있는지
용접 전원, 가스 경로, 와이어 경로가 정상 동작하는지
로봇과 용접기 사이의 각 신호선 연결이 정상인지
8.6.4. 용접 중단과 복구
로봇 용접 과정 중에는 다음과 같은 상황에서 중단이 발생할 수 있습니다.
작업자가 능동적으로 용접을 일시정지하고 실제 용접 상태를 확인하거나 노즐을 청소하는 경우
용접 아크가 예기치 않게 중단된 경우
로봇 충돌이 발생해 용접이 일시정지된 경우
용접 중 중단이 발생한 뒤 작업자는 로봇을 수동 모드로 전환하고, 로봇을 안전한 위치로 드래그한 후 중단 원인을 처리할 수 있습니다.
문제 처리가 끝나면 협동 로봇은 현재 위치에서 자동으로 용접 중단 발생 위치로 이동해 다시 아크를 시작하고 용접을 복구할 수 있습니다. 구체적인 조작 절차는 다음과 같습니다.
용접 중단 복구 파라미터 설정
용접 프로그램을 실행하고, 용접 중 용접을 일시정지해 중단 상황을 발생시킴
로봇을 수동 모드로 전환해 관련 문제를 처리하고, 처리 완료 후 다시 자동 모드로 전환
용접 복구 버튼을 클릭하면 로봇이 자동으로 용접을 복구함
8.6.4.1. 용접 중단 복구 파라미터 설정
초기 설정 -> 주변기기 메뉴에서 용접기`를 클릭해 용접기 설정 인터페이스로 들어간 뒤, `아크 중단 검출 파라미터 설정 항목을 찾아 기능 활성화`를 켜고 `확인 시간`을 `20ms`로 입력한 후 `설정 버튼을 클릭합니다. 즉, 용접 과정 중 아크 시작 성공 신호가 무효 상태인 시간이 20ms`를 초과하면 로봇은 `용접 아크 중단 오류를 보고합니다.
그림 8.6-33 아크 중단 검출 파라미터 설정
용접 중단 재복구 파라미터 설정 항목을 찾아 기능 활성화`를 켜고, `중복 거리`를 `5mm, 속도`를 `10%, 운동 방식`을 `PTP`로 입력한 뒤 `설정 버튼을 클릭합니다. 위 3개 파라미터의 설명은 다음과 같습니다.
중복 거리: 용접 복구 시, 복구 후 용접 비드와 중단 전 용접 비드의 연속성을 보장하기 위해 복구 용접의 아크 시작점과 원래 용접 비드 사이에는 일정한 중복 거리가 필요합니다.
속도: 용접 중단 후에는 대부분 로봇을 안전한 위치로 이동시키고 용접 비드를 처리해야 합니다. 처리가 끝난 뒤 용접 복구를 실행할 때, 로봇은 현재 위치에서 재아크 시작점으로 이동합니다. 이 `속도`는 로봇이 재아크 시작점으로 이동하는 속도를 의미합니다.
운동 방식: 용접 중단 후에는 대부분 로봇을 안전한 위치로 이동시키고 용접 비드를 처리해야 합니다. 처리가 끝난 뒤 용접 복구를 실행할 때, 로봇은 현재 위치에서 재아크 시작점으로 이동합니다. 이 운동 방식`은 로봇이 재아크 시작점으로 이동하는 방식으로, `LIN`과 `PTP 두 가지 중에서 선택할 수 있습니다.
그림 8.6-34 용접 중단 재복구 파라미터 설정
8.6.4.2. 용접 중단 복구 응용
testWeld 프로그램을 예로 들면, 로봇을 자동 모드로 전환하고 시작 버튼을 클릭하면 로봇이 용접 작업을 시작합니다. 용접 과정 중 일시정지 버튼을 클릭하면 이때 용접 중단이 발생하며, WebApp 우측 상단에 용접 중단 복구 안내 상자가 팝업됩니다. 용접 복구 버튼을 클릭하면 로봇은 자동으로 재아크 시작점으로 이동해 이후의 용접 작업을 수행합니다.
그림 8.6-35 용접 프로그램 실행
그림 8.6-36 용접 복구
경고
협동 로봇의 용접 중단 복구 기능은 직선 용접 비드 또는 원호 용접 비드에만 사용할 수 있습니다. while(1) 루프 용접을 사용하는 경우 다중 while 루프 중첩은 지원하지 않으며, 지역 변수를 포함한 조건문도 포함할 수 없습니다. 세그먼트 용접 기능을 사용할 경우에는 피드백 세그먼트 용접 정보 인터페이스를 추가해야 합니다.
8.6.5. 부록 1: 로봇 UDP 통신 프로토콜
경고
CRC 검증 방식: modbus 16 검증을 사용하지만 하위 8비트만 취해 검증합니다. 검증 데이터 영역은 D100-D176, `D200-D273`입니다.
아크 트래킹: 실제 전류 피드백은 PLC가 취득한 용접기의 실제 전류를 0-4095`의 아날로그 값으로 변환하여 UDP 데이터 프로토콜의 아날로그 채널 `0, 즉 `D168`로 전송합니다.
속도 환산 로직: 로봇에서 내려보낸 속도(단위 mm/s) V ÷ 리드 × 60 = V’
PLC는 로봇에서 내려보낸 속도를 변환하여 V’ × 엔코더 분해능 ÷ 60 = V” 단위(pulse/s)로 사용합니다.
8.6.5.1. 로봇 컨트롤러 -> PLC
번호 |
레지스터 주소 |
데이터 타입 |
데이터 값 |
변수명 |
|---|---|---|---|---|
1 |
D199 |
INT |
0x5A5A |
프레임 헤더 |
2 |
D200 |
INT |
1#모터 제어 워드 |
|
3 |
D201 |
DINT |
1#목표 위치 입력 |
|
4 |
D202 |
DINT |
1#목표 위치 입력 |
|
5 |
D203 |
INT |
1#원점 복귀 제어 워드 |
|
6 |
D204 |
DINT |
1#원점 복귀 고속 입력 |
|
7 |
D205 |
DINT |
1#원점 복귀 고속 입력 |
|
8 |
D206 |
DINT |
1#원점 복귀 저속 입력 |
|
9 |
D207 |
DINT |
1#원점 복귀 저속 입력 |
|
10 |
D208 |
DINT |
1#위치 오프셋(예약) |
|
11 |
D209 |
DINT |
1#위치 오프셋(예약) |
|
12 |
D210 |
DINT |
1#속도 오프셋(예약) |
|
13 |
D211 |
DINT |
1#속도 오프셋(예약) |
|
14 |
D212 |
DINT |
1#토크 오프셋(예약) |
|
15 |
D213 |
DINT |
1#토크 오프셋(예약) |
|
16 |
D214 |
INT |
2#모터 제어 워드 |
|
17 |
D215 |
DINT |
2#목표 위치 입력 |
|
18 |
D216 |
DINT |
2#목표 위치 입력 |
|
19 |
D217 |
INT |
2#원점 복귀 제어 워드 |
|
20 |
D218 |
DINT |
2#원점 복귀 고속 입력 |
|
21 |
D219 |
DINT |
2#원점 복귀 고속 입력 |
|
22 |
D220 |
DINT |
2#원점 복귀 저속 입력 |
|
23 |
D221 |
DINT |
2#원점 복귀 저속 입력 |
|
24 |
D222 |
DINT |
2#위치 오프셋(예약) |
|
25 |
D223 |
DINT |
2#위치 오프셋(예약) |
|
26 |
D224 |
DINT |
2#속도 오프셋(예약) |
|
27 |
D225 |
DINT |
2#속도 오프셋(예약) |
|
28 |
D226 |
DINT |
2#토크 오프셋(예약) |
|
29 |
D227 |
DINT |
2#토크 오프셋(예약) |
|
30 |
D228 |
INT |
3#모터 제어 워드 |
|
31 |
D229 |
DINT |
3#목표 위치 입력 |
|
32 |
D230 |
DINT |
3#목표 위치 입력 |
|
33 |
D231 |
INT |
3#원점 복귀 제어 워드 |
|
34 |
D232 |
DINT |
3#원점 복귀 고속 입력 |
|
35 |
D233 |
DINT |
3#원점 복귀 고속 입력 |
|
36 |
D234 |
DINT |
3#원점 복귀 저속 입력 |
|
37 |
D235 |
DINT |
3#원점 복귀 저속 입력 |
|
38 |
D236 |
DINT |
3#위치 오프셋(예약) |
|
39 |
D237 |
DINT |
3#위치 오프셋(예약) |
|
40 |
D238 |
DINT |
3#속도 오프셋(예약) |
|
41 |
D239 |
DINT |
3#속도 오프셋(예약) |
|
42 |
D240 |
DINT |
3#토크 오프셋(예약) |
|
43 |
D241 |
DINT |
3#토크 오프셋(예약) |
|
44 |
D242 |
INT |
4#모터 제어 워드 |
|
45 |
D243 |
DINT |
4#목표 위치 입력 |
|
46 |
D244 |
DINT |
4#목표 위치 입력 |
|
47 |
D245 |
INT |
4#원점 복귀 제어 워드 |
|
48 |
D246 |
DINT |
4#원점 복귀 고속 입력 |
|
49 |
D247 |
DINT |
4#원점 복귀 고속 입력 |
|
50 |
D248 |
DINT |
4#원점 복귀 저속 입력 |
|
51 |
D249 |
DINT |
4#원점 복귀 저속 입력 |
|
52 |
D250 |
DINT |
4#위치 오프셋(예약) |
|
53 |
D251 |
DINT |
4#위치 오프셋(예약) |
|
54 |
D252 |
DINT |
4#속도 오프셋(예약) |
|
55 |
D253 |
DINT |
4#속도 오프셋(예약) |
|
56 |
D254 |
INT |
예약 |
|
57 |
D255 |
INT |
용접 모드 설정(0-직류 단일, 1-펄스 단일, 2-JOB 모드, 3-근접 제어 모드, 4-분리 모드, 5-CC/CV, 6-TIG, 7-CMT 모드) |
|
58 |
D256 |
INT |
일반 출력 DO(0-15) |
|
59 |
D257 |
INT |
일반 출력 DO(16-31) |
|
60 |
D258 |
INT |
일반 출력 DO(32-47) |
|
61 |
D259 |
INT |
일반 출력 DO(48-63) |
|
62 |
D260 |
INT |
일반 출력 DO(64-79) |
|
63 |
D261 |
INT |
일반 출력 DO(80-95) |
|
64 |
D262 |
INT |
고속 출력 DO(96-111) |
|
65 |
D263 |
INT |
고속 출력 DO(112-127) |
|
66 |
D264 |
INT |
아날로그 출력 AO0 |
|
67 |
D265 |
INT |
아날로그 출력 AO1 |
|
68 |
D266 |
INT |
아날로그 출력 AO2 |
|
69 |
D267 |
INT |
아날로그 출력 AO3 |
|
70 |
D268 |
REAL |
용접 전압 출력 |
|
71 |
D269 |
REAL |
용접 전압 출력 |
|
72 |
D270 |
REAL |
용접 전류 출력 |
|
73 |
D271 |
REAL |
용접 전류 출력 |
|
74 |
D272 |
REAL |
패킷 손실 검출 주기 |
|
75 |
D273 |
INT |
패킷 손실 수 |
|
76 |
D274 |
INT |
프레임 카운트(0-255) |
|
77 |
D275 |
INT |
CRC 검증 코드 |
8.6.5.2. PLC -> 로봇 컨트롤러
번호 |
레지스터 주소 |
데이터 타입 |
데이터 값 |
변수명 |
|---|---|---|---|---|
1 |
D99 |
INT |
0x5A5A |
프레임 헤더 |
2 |
D100 |
INT |
1#모터 상태 워드 |
|
3 |
D101 |
DINT |
1#현재 위치 |
|
4 |
D102 |
DINT |
1#현재 위치 |
|
5 |
D103 |
INT |
1#원점 복귀 상태 워드 |
|
6 |
D104 |
DINT |
1#원점 복귀 고속 피드백 |
|
7 |
D105 |
DINT |
1#원점 복귀 고속 피드백 |
|
8 |
D106 |
DINT |
1#원점 복귀 저속 피드백 |
|
9 |
D107 |
DINT |
1#원점 복귀 저속 피드백 |
|
10 |
D108 |
INT |
1#고장 코드 |
|
11 |
D109 |
DINT |
1#추종 편차(예약) |
|
12 |
D110 |
DINT |
1#추종 편차(예약) |
|
13 |
D111 |
DINT |
1#속도 피드백(예약) |
|
14 |
D112 |
DINT |
1#속도 피드백(예약) |
|
15 |
D113 |
DINT |
1#실시간 토크(예약) |
|
16 |
D114 |
DINT |
1#실시간 토크(예약) |
|
17 |
D115 |
INT |
2#모터 상태 워드 |
|
18 |
D116 |
DINT |
2#현재 위치 |
|
19 |
D117 |
DINT |
2#현재 위치 |
|
20 |
D118 |
INT |
2#원점 복귀 상태 워드 |
|
21 |
D119 |
DINT |
2#원점 복귀 고속 피드백 |
|
22 |
D120 |
DINT |
2#원점 복귀 고속 피드백 |
|
23 |
D121 |
DINT |
2#원점 복귀 저속 피드백 |
|
24 |
D122 |
DINT |
2#원점 복귀 저속 피드백 |
|
25 |
D123 |
INT |
2#고장 코드 |
|
26 |
D124 |
DINT |
2#추종 편차(예약) |
|
27 |
D125 |
DINT |
2#추종 편차(예약) |
|
28 |
D126 |
DINT |
2#속도 피드백(예약) |
|
29 |
D127 |
DINT |
2#속도 피드백(예약) |
|
30 |
D128 |
DINT |
2#실시간 토크(예약) |
|
31 |
D129 |
DINT |
2#실시간 토크(예약) |
|
32 |
D130 |
INT |
3#모터 상태 워드 |
|
33 |
D131 |
DINT |
3#현재 위치 |
|
34 |
D132 |
DINT |
3#현재 위치 |
|
35 |
D133 |
INT |
3#원점 복귀 상태 워드 |
|
36 |
D134 |
DINT |
3#원점 복귀 고속 피드백 |
|
37 |
D135 |
DINT |
3#원점 복귀 고속 피드백 |
|
38 |
D136 |
DINT |
3#원점 복귀 저속 피드백 |
|
39 |
D137 |
DINT |
3#원점 복귀 저속 피드백 |
|
40 |
D138 |
DINT |
3#고장 코드 |
|
41 |
D139 |
DINT |
3#추종 편차(예약) |
|
42 |
D140 |
DINT |
3#추종 편차(예약) |
|
43 |
D141 |
DINT |
3#속도 피드백(예약) |
|
44 |
D142 |
DINT |
3#속도 피드백(예약) |
|
45 |
D143 |
DINT |
3#실시간 토크(예약) |
|
46 |
D144 |
DINT |
3#실시간 토크(예약) |
|
47 |
D145 |
INT |
4#모터 상태 워드 |
|
48 |
D146 |
DINT |
4#현재 위치 |
|
49 |
D147 |
DINT |
4#현재 위치 |
|
50 |
D148 |
INT |
4#원점 복귀 상태 워드 |
|
51 |
D149 |
DINT |
4#원점 복귀 고속 피드백 |
|
52 |
D150 |
DINT |
4#원점 복귀 고속 피드백 |
|
53 |
D151 |
DINT |
4#원점 복귀 저속 피드백 |
|
54 |
D152 |
DINT |
4#원점 복귀 저속 피드백 |
|
55 |
D153 |
DINT |
4#고장 코드 |
|
56 |
D154 |
DINT |
4#추종 편차(예약) |
|
57 |
D155 |
DINT |
4#추종 편차(예약) |
|
58 |
D156 |
DINT |
4#속도 피드백(예약) |
|
59 |
D157 |
DINT |
4#속도 피드백(예약) |
|
60 |
D158 |
DINT |
실시간 토크(예약) |
|
61 |
D159 |
DINT |
실시간 토크(예약) |
|
62 |
D160 |
INT |
일반 입력 DI(0-15) |
|
63 |
D161 |
INT |
일반 입력 DI(16-31) |
|
64 |
D162 |
INT |
일반 입력 DI(32-47) |
|
65 |
D163 |
INT |
일반 입력 DI(48-63) |
|
66 |
D164 |
INT |
일반 입력 DI(64-79) |
|
67 |
D165 |
INT |
일반 입력 DI(80-95) |
|
68 |
D166 |
INT |
고속 입력 DI(96-111) |
|
69 |
D167 |
INT |
고속 입력 DI(112-127) |
|
70 |
D168 |
INT |
아날로그 AI0 |
|
71 |
D169 |
INT |
아날로그 AI1 |
|
72 |
D170 |
INT |
아날로그 AI2 |
|
73 |
D171 |
INT |
아날로그 AI3 |
|
74 |
D172 |
REAL |
실제 전류 피드백 |
|
75 |
D173 |
REAL |
실제 전류 피드백 |
|
76 |
D174 |
REAL |
실제 전압 피드백 |
|
77 |
D175 |
REAL |
실제 전압 피드백 |
|
78 |
D176 |
INT |
고장 코드 0-무고장, 1-데이터 패킷 손실 |
|
79 |
D177 |
INT |
프레임 카운트 |
|
80 |
D178 |
INT |
CRC 검증 코드 |
8.6.6. 디지털 통신 프로토콜(Modbus TCP)
초기 설정 -> 주변기기 -> 용접기`를 클릭해 용접기 인터페이스로 들어간 뒤, `디지털 통신 프로토콜(Modbus TCP) 카드를 클릭해 용접기 오픈 프로토콜 인터페이스로 들어갑니다。
8.6.6.1. 프로토콜 설정
오픈 프로토콜 설정에서 업로드 버튼을 클릭해 작성한 오픈 프로토콜 LUA 프로그램 파일을 컨트롤러에 업로드합니다. 오픈 프로토콜 ID와 오픈 프로토콜 이름을 선택한 뒤 설정 버튼을 클릭합니다. 프로토콜 ID는 오픈 프로토콜 파일에 작성된 ID와 일치해야 합니다. 각 오픈 프로토콜에는 고유한 ID를 지정합니다.
그림 8.6‑37 컨트롤러 주변기기 오픈 프로토콜 업로드 및 설정
설정이 완료된 프로토콜에서 로드 버튼을 클릭하면 실행 상태 표시등이 켜지며, 이 오픈 프로토콜이 정상적으로 로드되었음을 나타냅니다.
그림 8.6-38 컨트롤러 주변기기 오픈 프로토콜 로드 및 실행 표시
8.6.6.2. 용접기 오픈 프로토콜
로봇과 용접기는 컨트롤러 주변기기 오픈 프로토콜을 통해 Modbus TCP 통신을 수행합니다. 용접기 슬레이브 레지스터 정의에 따라 대응하는 통신 프로토콜 LUA 파일을 작성하고, 이 파일에서 용접기 IP 주소, 포트 번호 같은 통신 파라미터와 아크 시작 제어, 와이어 송급 제어 등의 레지스터 주소를 설정합니다. 이후 이 프로토콜을 로봇 컨트롤러에 업로드하고 로드하면 로봇과 용접기 사이의 통신이 구현됩니다.
8.6.6.2.1. 용접기 오픈 프로토콜 예시
1local id = 1 --프로토콜 번호, WebApp에서 설정한 프로토콜 번호와 일치해야 합니다
2local ctrlValues = {0, 0, 0, 0, 0, 0}
3local realTimeState = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
4ModbusTCPMasterClose(id)
5ModbusTCPMasterCreate('192.168.58.45', 502, 1, id)
6while(1) do
7setArcStart, setWireForward, setWireReverse, setShieldingGas, setTouchEnable, setRobotError,setRobotEnableState,default1,default2, default3, default4, setCurrent, setVoltage, SetMode = WeldingGetCtrlState()
8local ctrlWord = 0
9ctrlWord = SetBitWithIndex(ctrlWord, 0, setArcStart)
10ctrlWord = SetBitWithIndex(ctrlWord, 1, setWireForward)
11ctrlWord = SetBitWithIndex(ctrlWord, 2, setWireReverse)
12ctrlWord = SetBitWithIndex(ctrlWord, 3, setShieldingGas)
13ctrlWord = SetBitWithIndex(ctrlWord, 4, setTouchEnable)
14ctrlWord = SetBitWithIndex(ctrlWord, 7, setRobotError)
15ctrlValues[1] = setRobotEnableState
16ctrlValues[2] = ctrlWord
17ctrlValues[3] = 0
18ctrlValues[4] = setCurrent
19ctrlValues[5] = setVoltage
20ctrlValues[6] = 0
21ModbusTCPMasterSetHoldRegs(id, 201, 6, ctrlValues, "U16")
22localtmpCtrlMode={0,0,0,0}
23tmpCtrlMode[1]=SetMode
24ModbusTCPMasterSetHoldRegs(id,0x1000,1,tmpCtrlMode,"U16")
25sleep_ms(10)
26
27getWeldState, getCurrent, getVoltage,default1, default2, getWelderErrorCode = ModbusTCPMasterGetHoldRegs(id, 211, 6, "U16")
28realTimeState[1] = GetBitWithIndex(getWeldState, 0) + GetBitWithIndex(getWeldState, 1) * 2 --welderType
29realTimeState[2] = GetBitWithIndex(getWeldState, 5) --arc state(WCR)
30realTimeState[3] = GetBitWithIndex(getWeldState, 4) --touch state
31realTimeState[4] = GetBitWithIndex(getWeldState, 7) --welder error state
32realTimeState[12] = getCurrent --current
33realTimeState[13] = getVoltage --voltage
34realTimeState[14] = getWelderErrorCode --welder error code
35realTimeState[15] = getWeldState / 255 --heart jump
36WeldingSetRealtimeState(realTimeState)
37
38local stopFlag = GetOpenLUAStopFlag(id)
39if(stopFlag ~= 0) then
40ModbusTCPMasterClose(id)
41break
42end
43
44sleep_ms(10)
45end
8.6.6.2.2. 용접기 오픈 프로토콜 해석
용접기 오픈 프로토콜은 주로 세 부분으로 구성됩니다.
① 통신 연결 설정: 프로토콜 번호 id`(오픈 프로토콜 로드 시 설정한 프로토콜 번호는 프로토콜 파일 안의 번호와 일치해야 함), 용접기 IP 주소, 포트 번호 등의 파라미터를 지정하고 `ModbusTCPMasterCreate() 명령을 통해 로봇과 용접기 사이의 Modbus TCP 연결을 설정합니다.
② 용접기로의 제어 데이터 쓰기 루프: 용접기 오픈 프로토콜 실행 시 먼저 로봇 컨트롤러 내부에서 현재 용접기 제어 데이터를 읽은 뒤, 그 데이터를 용접기에 기록하여 용접기 동작을 제어합니다. 프로토콜 안의 로봇 제어 용접 데이터 읽기 명령 `WeldingGetCtrlState()`의 반환값 정의는 표 2-1과 같으며, 실제 용접기 제어 레지스터 정의에 따라 제어 데이터를 분해한 뒤 Modbus TCP를 통해 용접기에 기록할 수 있습니다.
표 8.19-1 WeldingGetCtrlState() 반환값
번호 |
타입 |
명칭 |
설명 |
1 |
uint16_t |
setArcStart |
아크 시작 신호: 0-아크 종료, 1-아크 시작 |
2 |
uint16_t |
setWireForward |
정방향 와이어 송급: 0-와이어 송급 정지, 1-정방향 와이어 송급 |
3 |
uint16_t |
setWireReverse |
역방향 와이어 송급: 0-와이어 송급 정지, 1-역방향 와이어 송급 |
4 |
uint16_t |
setShieldingGas |
보호 가스 제어: 0-가스 정지, 1-가스 공급 |
5 |
uint16_t |
setTouchEnable |
용접 와이어 위치결정 유효: 0-무효, 1-유효 |
6 |
uint16_t |
setRobotError |
로봇 고장: 0-무고장, 1-고장 |
7 |
uint16_t |
setRobotEnableState |
로봇 인에이블 상태: 0-미인에이블, 1-인에이블 |
8 |
uint16_t |
default1 |
예약 |
9 |
uint16_t |
default2 |
예약 |
10 |
uint16_t |
default3 |
예약 |
11 |
uint16_t |
default4 |
예약 |
12 |
uint16_t |
setCurrent |
용접 전류 설정(0.1A) |
13 |
uint16_t |
setVoltage |
용접 전압 설정(0.01V) |
14 |
uint16_t |
SetMode |
용접 모드 설정: 0-직류 단일, 1-펄스 단일, 2-JOB 모드, 3-근접 제어 모드, 4-분리 모드, 5-CC/CV, 6-TIG, 7-CMT 모드 |
15 |
uint16_t |
default6 |
예약 |
16 |
uint16_t |
default7 |
예약 |
17 |
uint16_t |
default8 |
예약 |
18 |
uint16_t |
default9 |
예약 |
19 |
uint16_t |
default10 |
예약 |
20 |
uint16_t |
default11 |
예약 |
③ 용접기 상태 데이터 읽기 루프: 용접기 오픈 프로토콜은 먼저 Modbus TCP를 통해 용접기에서 실시간 상태 데이터를 읽고, 이후 관련 데이터를 로봇 컨트롤러에 기록하여 로봇이 용접기의 실시간 동작 상태를 감시할 수 있게 합니다. 프로토콜이 로봇에 용접기 상태를 설정하는 인터페이스 `WeldingSetRealtimeState()`의 파라미터는 모든 용접기 상태를 포함하는 배열이며(주의: 오픈 프로토콜 LUA에서는 배열 인덱스가 1부터 시작), 표 2-2와 같이 실제 용접기 상태 레지스터 정의에 따라 Modbus TCP를 통해 용접기 상태 데이터를 읽은 뒤 용접기 상태 배열로 조합해 로봇 컨트롤러에 기록할 수 있습니다.
표 8.19-2 WeldingSetRealtimeState() 상세 파라미터
타입 |
명칭 |
배열 인덱스 |
설명 |
uint16_t[20] |
realTimeState |
1 |
용접기 모델 |
uint16_t[20] |
realTimeState |
2 |
아크 상태: 0-아크 미시작, 1-아크 시작됨 |
uint16_t[20] |
realTimeState |
3 |
용접 와이어 접촉 상태: 0-미접촉, 1-접촉됨 |
uint16_t[20] |
realTimeState |
4 |
용접기 고장 상태: 0-무고장, 1-용접기 고장 |
uint16_t[20] |
realTimeState |
5 |
예약 |
uint16_t[20] |
realTimeState |
6 |
예약 |
uint16_t[20] |
realTimeState |
7 |
예약 |
uint16_t[20] |
realTimeState |
8 |
예약 |
uint16_t[20] |
realTimeState |
9 |
예약 |
uint16_t[20] |
realTimeState |
10 |
예약 |
uint16_t[20] |
realTimeState |
11 |
예약 |
uint16_t[20] |
realTimeState |
12 |
실시간 용접 전류(0.1A) |
uint16_t[20] |
realTimeState |
13 |
실시간 용접 전압(0.01V) |
uint16_t[20] |
realTimeState |
14 |
용접기 고장 코드 |
uint16_t[20] |
realTimeState |
15 |
용접기 통신 하트비트 데이터 |
uint16_t[20] |
realTimeState |
16 |
예약 |
uint16_t[20] |
realTimeState |
17 |
예약 |
uint16_t[20] |
realTimeState |
18 |
예약 |
uint16_t[20] |
realTimeState |
19 |
예약 |
uint16_t[20] |
realTimeState |
20 |
예약 |
8.6.6.2.3. 용접기 오픈 프로토콜 업로드 및 로드
순서대로 초기 설정, 주변기기, 제어 박스, 주변기기 오픈 프로토콜`을 클릭한 뒤 `업로드 버튼을 클릭하여 용접기 오픈 프로토콜 `CtrlDev_WELDING.lua`를 업로드합니다. 프로토콜 파일명은 `CtrlDev`로 시작해야 하며 확장자는 `.lua`여야 합니다.
그림 8.6‑39 용접기 오픈 프로토콜 업로드
프로토콜 설정`에서 `프로토콜 번호`를 선택합니다. 이 번호는 오픈 프로토콜 파일 안의 프로토콜 번호와 일치해야 합니다. 여기서는 번호 `1`을 예로 들고, `프로토콜명`은 용접기 오픈 프로토콜 `CtrlDev_WELDING.lua`로 선택한 뒤 `설정 버튼을 클릭합니다. 그러면 `장치 조작 및 상태`에 설정된 용접기 오픈 프로토콜이 표시됩니다.
그림 8.6‑40 용접기 오픈 프로토콜 설정
연결 버튼을 클릭해 용접기 오픈 프로토콜을 로드합니다. 실행 상태 표시등이 켜지면 로봇과 용접기가 통신 중임을 나타냅니다.
그림 8.6‑41 용접기 오픈 프로토콜 로드
8.6.6.2.4. 용접기 조정
용접기 조정을 수행하기 전에 먼저 용접기 오픈 프로토콜이 정상적으로 로드되었고, 관련 레지스터 주소가 올바르게 설정되었는지 확인하십시오.
순서대로 초기 설정, 주변기기, `용접기`를 클릭한 뒤 `디지털 통신 프로토콜(ModbusTcp)`을 선택합니다.
그림 8.6‑42 디지털 통신 프로토콜(ModbusTcp) 선택
아크 시작, 수호, 가스 공급, 가스 정지 등의 버튼을 클릭해 실제 용접기 동작이 설정과 일치하는지 확인합니다. 용접기가 설정된 동작을 수행하지 않는다면, 용접기 오픈 프로토콜 안의 레지스터 설정에 오류가 없는지 확인하고 추가 디버깅을 진행합니다.
그림 8.6‑43 용접기 조정
8.6.6.2.5. 용접 프로그램 작성
초기 설정, 티칭 프로그램, `프로그램 편집`을 클릭하여 새 프로그램 `testWeld.lua`를 생성합니다.
그림 8.6‑44 용접 LUA 프로그램 작성
용접 버튼을 클릭하고, 표시된 용접 명령 추가 페이지에서 디지털 통신 프로토콜(Modbus Tcp)`을 선택한 뒤 순서대로 `아크 시작`을 클릭하고 `추가, 수호`를 클릭하고 `추가`를 누른 다음 마지막에 `적용 버튼을 클릭합니다.
그림 8.6‑45 아크 시작, 수호 명령 추가
이 시점에 testWeld.lua 안에 아크 시작과 수호 명령이 추가됩니다.
그림 8.6‑46 아크 시작, 수호 명령 추가
이어서 용접 시작점과 용접 종료점을 차례대로 추가합니다. 로봇을 자동 모드로 전환한 뒤 안전이 확보된 조건에서 프로그램을 시작하면, 로봇이 용접기를 제어하여 하나의 용접 비드 용접 작업을 수행합니다.
그림 8.6‑47 용접 프로그램
8.6.6.2.6. 용접기 오픈 프로토콜 언로드
순서대로 초기 설정, 주변기기, 제어 박스, 주변기기 오픈 프로토콜`을 클릭한 뒤, `장치 조작 및 상태`에서 `언로드 버튼을 클릭합니다.
그림 8.6‑48 오픈 프로토콜 언로드
이때 프로토콜 실행 상태 표시등이 꺼집니다.
그림 8.6‑49 오픈 프로토콜 언로드
이 상태에서 용접 조정 또는 용접 프로그램을 실행하면, 로봇은 WebApp 왼쪽 아래에 `프로토콜 미로드 오류`를 보고합니다.
그림 8.6‑50 프로토콜 미로드 오류
8.7. 확장축 설정
`초기 설정 -> 주변기기`에서 `확장축`을 클릭해 확장축 설정 인터페이스로 들어갑니다. 여기에는 확장축 좌표계 설정과 확장축 주변기기 설정이 포함됩니다. 확장축 설정 인터페이스에 처음 진입하면 다음과 같습니다.
그림 8.7‑1 확장축 설정 최초 진입 인터페이스
현재 확장축 주변기기 설정은 통신 방식에 따라 다음 두 가지로 나뉩니다.
컨트롤러 + PLC(UDP 통신)
컨트롤러 + 서보 드라이버(485 통신)
8.7.1. 확장축 좌표계
확장축 좌표계 설정 인터페이스에서는 확장축 좌표계의 적용, 초기화, 설정을 수행할 수 있습니다.
확장축 좌표계 드롭다운 목록에는 총 5개의 번호가 있으며 exaxis0~exaxis4`로 구성됩니다. 해당 좌표계를 선택하면 하단에 대응하는 좌표값이 표시됩니다. 어떤 좌표계를 선택한 뒤 `적용 버튼을 클릭하면, 현재 사용 중인 확장축 좌표계가 선택한 좌표로 변경됩니다. 아래 그림과 같습니다.
그림 8.7‑2 확장축 좌표계
exaxis0 이외의 확장축 좌표계를 선택하고 `설정`을 클릭해 확장축 좌표계 설정 인터페이스로 들어가면, 해당 번호의 확장축 좌표계를 다시 설정할 수 있습니다. 아래 그림과 같습니다.
중요
교정 전에 먼저 교정할 확장축 좌표계를 초기화하고, 이 확장축 좌표계를 적용해야 합니다.
확장축 번호를 선택하고 정보 취득을 통해 해당 확장축의 드라이버 정보를 가져올 수 있습니다. 이 정보를 바탕으로 파라미터를 설정할 수 있습니다.
그림 8.7‑3 확장축 좌표계 교정
현재 확장축 솔루션은 다음과 같습니다.
0-단자유도 직선 슬라이드 레일
1-2자유도 L형 포지셔너
2-3자유도(임시 미개방)
3-4자유도(임시 미개방)
4-단자유도 포지셔너
5-2자유도 대차
단자유도 직선 슬라이드 레일: 먼저 DH 파라미터를 설정한 뒤 로봇 상대 확장축 위치를 설정합니다. 직선 가이드는 확장축 위에 있습니다. 교정하지 않는 경우에는 저장만 클릭하면 되며, 이때 확장축은 비동기 운동만 가능합니다.
그림 8.7-4 직선 슬라이드 레일 DH 파라미터 설정
그림 8.7-5 직선 슬라이드 레일 – 로봇 상대 확장축 위치 설정
로봇과 동기 운동이 필요한 경우, 확장축 영점에서 조작 구역 `Eaxis`에서 확장축을 인에이블하고 로봇 말단 중심(적용된 툴 좌표계에서 툴 말단점을 사용)을 서로 다른 두 자세로 확장축 위의 고정된 한 점에 맞춘 뒤 각각 점 1과 점 2를 설정합니다.
그림 8.7‑6 직선 슬라이드 레일 교정점 1과 2
인에이블을 해제하고 확장축을 일정 거리 이동시킨 뒤 다시 인에이블한 후, 같은 방식으로 로봇 말단 중심점을 앞서 사용한 고정점에 맞춰 점 3을 설정합니다. 다시 인에이블을 해제하고 확장축을 영점으로 이동시킨 뒤 확장축을 인에이블합니다. 로봇 말단 중심점을 고정점의 수직 상방에 있는 공간상의 한 점으로 이동시켜 점 4를 설정하고, 좌표계를 계산해 저장합니다.
그림 8.7‑7 직선 슬라이드 레일 교정점 3과 4
2자유도 L형 포지셔너: 포지셔너는 2개의 확장축으로 구성됩니다. 먼저 DH 파라미터를 설정하고, 그림에 따라 포지셔너의 DH 파라미터를 측정해 입력 상자에 입력합니다. 이어서 로봇 상대 확장축 위치를 설정합니다. 포지셔너는 확장축 외부에 있습니다. 교정하지 않는 경우에는 저장만 클릭하면 되며, 이때 확장축은 비동기 운동만 가능합니다.
그림 8.7‑8 2자유도 L형 포지셔너 DH 파라미터 설정
그림 8.7‑9 2자유도 L형 포지셔너 – 로봇 상대 확장축 위치
로봇과 동기 운동이 필요한 경우, 확장축 영점에서 조작 구역 `Eaxis`에서 확장축을 인에이블하고 포지셔너 위에 좌표계를 설정한 뒤 한 점을 선택하여 그 점의 해당 좌표계 기준 데카르트 위치와 자세를 입력합니다. 예를 들어 Y축 정방향의 한 점을 선택하고 Y가 `100mm`로 측정되었다면 그림과 같은 수치를 입력한 뒤 `기준점`을 클릭하면 기준점을 설정할 수 있습니다. 이후의 4개 교정점은 모두 로봇 말단 중심(적용된 툴 좌표계에서 툴 말단점을 사용)을 이 기준점에 맞춰야 합니다.
그림 8.7‑10 2자유도 L형 포지셔너 – 기준점 설정
로봇 말단 중심(적용된 툴 좌표계에서 툴 말단점을 사용)을 이 기준점에 맞춰 점 1을 설정하고, 조작 구역 `Eaxis`에서 두 축을 조금 조그 이동시킨 뒤 로봇 말단 중심을 기준점에 맞춰 점 2를 설정합니다. 이어서 다시 두 축을 조그 이동시켜 점 3을 설정하고, 마지막으로 한 번 더 두 축을 조그 이동시켜 점 4를 설정한 뒤 `계산`을 클릭하면 좌표계 결과를 얻을 수 있으며, `저장`을 클릭하고 적용합니다.
그림 8.7‑11 2자유도 L형 포지셔너 교정
단자유도 포지셔너: 하나의 회전 확장축으로 구성되며, DH 파라미터 설정값은 0입니다. 로봇 상대 확장축 위치는 확장축 외부로 설정합니다. 교정하지 않는 경우에는 저장만 클릭하면 되며, 이때 확장축은 비동기 운동만 가능합니다.
그림 8.7‑12 단자유도 포지셔너 DH 파라미터 설정
그림 8.7‑13 단자유도 포지셔너 – 로봇 상대 확장축 위치
로봇과 동기 운동이 필요한 경우, 확장축 영점에서 조작 구역 `Eaxis`에서 확장축을 인에이블하고 포지셔너 위에 좌표계를 설정한 뒤 한 점을 선택하여 그 점의 해당 좌표계 기준 데카르트 위치와 자세를 입력하고 `기준점`을 클릭하면 기준점을 설정할 수 있습니다.
그림 8.7‑14 단자유도 포지셔너 기준점 설정
이후의 4개 교정점은 모두 로봇 말단 중심(적용된 툴 좌표계에서 툴 말단점을 사용)을 이 기준점에 맞춰야 합니다. 로봇 말단 중심을 기준점에 맞춰 점 1을 설정하고, 조작 구역 `Eaxis`에서 회전축을 조금 조그 이동시킨 뒤 로봇 말단 중심을 기준점에 맞춰 점 2를 설정합니다. 이어서 회전축을 다시 조그 이동시켜 점 3을 설정하고, 마지막으로 한 번 더 회전축을 조그 이동시켜 점 4를 설정한 뒤 `계산`을 클릭하면 좌표계 결과를 얻을 수 있으며, `저장`을 클릭하고 적용합니다.
그림 8.7‑15 단자유도 포지셔너 교정
8.7.2. 컨트롤러 + PLC(UDP 통신)
확장축 UDP 통신 방식을 사용하기 전에 먼저 해당 확장축 좌표계를 설정해야 합니다. 해당 확장축 좌표계 아래에서 대응하는 확장축 솔루션을 설정하고, 프로그램 티칭 시 확립한 툴 좌표계를 적용해야 합니다. 확장축 기능은 주로 용접기 기능과 레이저 트래킹 센서 기능과 함께 사용됩니다.
그림 8.7‑16 확장축 좌표계 적용 및 현재 확장축 솔루션 표시
현재 확장축 좌표계만 변경하면 되는 경우에는 주변기기 확장축 설정 인터페이스에서 좌표계만 선택해 적용하면 됩니다. 확장축 솔루션을 변경해야 하는 경우에는 확장축 좌표계 설정 인터페이스로 들어가 변경해야 합니다.
확장축 솔루션이 0-단자유도 직선 슬라이드 레일, 1-2자유도 L형 포지셔너, 2-3자유도, 3-4자유도, 4-단자유도 포지셔너`인 경우에는 UDP 통신 설정이 성공한 뒤 `UDP 확장축`과 `위치결정 완료 시간 설정 항목이 표시됩니다. 확장축 솔루션이 5-2자유도 대차`인 경우에는 인터페이스에 `2자유도 대차 테스트 항목이 표시됩니다.
8.7.2.1. UDP 통신 설정
Step1: 확장축 UDP 통신 파라미터를 설정합니다. IP 주소, 포트 번호, 통신 주기, 패킷 손실 검출 주기, 패킷 손실 횟수 등의 파라미터를 설정합니다. 이 중 재연결 주기와 재연결 횟수는 통신 중단 자동 재연결 스위치를 켠 뒤에만 설정할 수 있습니다.
IP 주소: 사용자 지정 IP 주소
포트 번호: 실제 상황에 맞게 정의
통신 주기: 실제 상황에 맞게 정의, 단위 ms
패킷 손실 검출 통신 주기: 10 ~ 1000 ms
패킷 손실 횟수: 1 ~ 100
통신 중단 확인 시간: 0 ~ 500 ms
전원 차단 후 재기동 자동 재연결: 온/오프
통신 중단 자동 재연결: 온/오프
재연결 주기: 1 ~ 1000 ms
재연결 횟수: 1 ~ 100
그림 8.7‑17 확장축 UDP 통신 파라미터 설정
중요
통신 차단 확인 시간을 설정한 뒤, 통신 이상이 이 시간을 초과했을 때 비로소 통신 차단을 확인하고 오류를 보고합니다.
UDP 통신이 끊어진 뒤에는 UDP 차단 오류가 트리거됩니다(리셋 가능). 경고 정보 지우기 버튼을 클릭하면 UDP 통신이 다시 설정됩니다.
Step2: 통신 파라미터 설정이 완료된 뒤 로드 버튼을 클릭하여 UDP 통신을 설정합니다. 통신이 성공하면 UDP 통신 설정 앞쪽의 버튼이 녹색으로 바뀌며, 로봇 상태 정보의 확장축 상태에서 확장축이 이미 서보 위치결정을 완료했는지 확인할 수 있습니다.
그림 8.7‑18 확장축 UDP 통신 설정
그림 8.7‑19 확장축 서보 위치결정 완료
중요
UDP 통신 연결이 설정되지 않은 상태에서는 UDP 확장축 번호 정보의 설정과 확인을 할 수 없습니다.
확장축 UDP 통신을 로드하기 전에 반드시 번호 0이 아닌 확장축 좌표계의 설정과 적용을 완료해야 합니다.
8.7.2.2. UDP 확장축
Step1: 임의의 확장축 번호(현재는 번호 1, 2, 3, 4만 지원)를 선택하고, 확장축 번호 뒤쪽의 편집 버튼을 클릭해 상세 설정 인터페이스로 들어갑니다. 축 타입, 축 방향, 운행 속도, 가속도, 정방향 리미트, 역방향 리미트, 리드, 엔코더 분해능, 기점 오프셋, 제조사, 모델, 모드를 설정한 뒤 `설정`을 클릭하면 설정이 완료됩니다.
축 타입: 직선 가이드, 회전축, 무한 회전축
축 방향: 정/역
운행 속도: 0~2000mm/s
가속도: 0 ~ 2000 mm/s²
정방향 리미트: 0 ~ 50000
역방향 리미트: -50000 ~ 0
리드: 0~1000
엔코더 분해능: 0 ~ 10000000
기점 오프셋: 0 ~ 10000mm
제조사: Hechuan, Inovance, Panasonic
모델: 제조사에 따라 자동으로 모델 목록과 연동
모드: 증분 시스템, 절대 위치 시스템
그림 8.7‑20 확장축 파라미터 설정
Step2: 확장축 파라미터 설정이 끝나면 인에이블 해제 버튼을 클릭하여 해당 확장축 번호를 인에이블합니다. 인에이블이 성공하면 원점 복귀 방식 설정과 확장축 테스트를 진행할 수 있습니다. 확장축이 인에이블되어 있지 않으면 원점 복귀 방식 설정과 확장축 테스트를 할 수 없습니다.
그림 8.7‑21 확장축 인에이블/인에이블 해제
Step3: 확장축 인에이블이 성공하지 않은 경우 설정 인터페이스에 들어갈 수 없고 버튼은 회색으로 표시됩니다. 확장축 인에이블이 성공한 뒤 원점 복귀 버튼을 클릭하면 원점 복귀 방식 설정 인터페이스로 들어갑니다. 원점 복귀 방식, 원점 탐색 속도, 영점 고정 속도를 설정하고 설정 버튼을 클릭하면 확장축이 원점 복귀를 시작합니다. 원점 복귀 상태는 축 방향 하단의 빈칸에 표시되며, 원점 복귀 완료 안내가 표시되면 확장축 영점 설정이 성공했음을 의미합니다.
원점 복귀 방식: 현재 위치 원점 복귀, 음의 리미트 원점 복귀, 양의 리미트 원점 복귀
원점 탐색 속도: 0~2000mm/s
영점 고정 속도: 0~2000mm/s
그림 8.7‑22 원점 복귀 방식 설정
Step4: 확장축 인에이블이 성공하지 않은 경우 설정 인터페이스에 들어갈 수 없고 버튼은 회색으로 표시됩니다. 확장축 인에이블이 성공하고 원점 복귀 방식 설정이 완료된 뒤 테스트 버튼을 클릭하면 확장축 테스트 인터페이스로 들어갑니다. 운행 속도, 가속도, 최대 거리를 설정한 뒤 정회전과 역회전 테스트를 통해 확장축을 시험합니다. 동시에 회전 과정 중 정지 버튼을 클릭해 확장축이 정상적으로 멈추는지도 테스트할 수 있습니다.
그림 8.7‑23 확장축 테스트
Step5: 확장축은 보통 레이저 센서와 함께 사용됩니다. 이때 레이저 센서는 일반적으로 외부 장착 방식을 사용하며, 센서 기준점 설정은 3점법 교정을 사용해야 하고 이전에 사용하던 6점법 교정은 사용하지 않습니다. 툴 중심을 우측 횡단면 하단 중앙점(카메라에 가까운 쪽)에 맞춰 점 1을 설정하고, 툴 중심점을 반대쪽 단면인 좌측 횡단면 하단 중앙점에 맞춰 점 2를 설정합니다. 이어서 툴 중심점을 센서 우측 횡단면 상단 중앙점으로 이동시켜 점 3을 설정한 뒤 계산하고 저장하고 `적용`을 클릭하면 3점법 교정이 완료됩니다.
그림 8.7‑24 센서 3점법 교정
Step6: 티칭 프로그램 -> 프로그램 편집 인터페이스에서 주변기기 명령의 확장축 명령을 선택합니다. 실제 프로그램 티칭 요구에 따라 적절한 위치에 명령을 추가합니다.
그림 8.7‑25 확장축 명령 편집
8.7.2.3. 확장축과 레이저 트래킹 용접 티칭 프로그램
번호 |
명령 형식 |
주석 |
1 |
EXT_AXIS_PTP(1,1laserstart) |
#외부축 이동 레이저 센서 시작점 |
2 |
PTP(laserstart,10,-1,0) |
#로봇 이동 레이저 센서 시작점 |
3 |
LTSearchStart(3,20,10,10000) |
#위치결정 시작 |
4 |
LTSearchStop() |
#위치결정 종료 |
5 |
EXT_AXIS_PTP(1,1,seamPos) |
#외부축 이동 용접 비드 시작점 |
6 |
Lin(seamPos,20,-1,00,0) |
#로봇 이동 용접 비드 시작점 |
7 |
LTTrackOn() |
#레이저 트래킹 |
8 |
ARCStart(0,10000) |
#용접기 아크 시작 |
9 |
EXT_AXIS_PTP(1,1,laserend) |
#외부축 이동 용접 비드 종료점 |
10 |
Lin( laserend,10,-1,0,0) |
#로봇 이동 용접 비드 종료점 |
11 |
ARCEnd(0,10000) |
#용접기 아크 종료 |
12 |
LTTrackOff |
#레이저 트래킹 종료 |
8.7.2.4. 위치결정 완료 시간
확장축이 UDP 통신을 설정한 뒤 시간을 입력하고 설정 버튼을 클릭하면 설정이 완료됩니다. 이 설정 항목은 확장축 운동 정지 시간을 감시하는 데 사용됩니다.
그림 8.7‑26 위치결정 완료 시간 설정
8.7.3. 2자유도 대차 테스트
확장축 좌표계 설정의 확장축 솔루션이 `5-2자유도 대차`인 경우, UDP 통신 인터페이스에 들어간 뒤 이 항목이 표시되며 그렇지 않으면 확인할 수 없습니다.
그림 8.7‑27 확장축 솔루션이 `5-2자유도 대차`인 인터페이스
중요
2자유도 대차는 기본적으로 확장축 번호 1과 2를 사용하며, UDP 통신이 성공한 뒤 로봇 상태 정보의 확장축 상태에서 확장축 1과 2의 서보 위치결정 완료 여부를 확인할 수 있습니다.
그림 8.7‑28 2자유도 대차 확장축 서보 위치결정 완료
Step1: UDP 통신이 성공한 뒤 인에이블 해제 버튼을 클릭해 2자유도 대차에 대응하는 확장축을 인에이블합니다. 로봇 상태 정보의 확장축 상태에서 확장축 1과 2의 서보 인에이블 상태를 확인할 수 있습니다.
그림 8.7‑29 2자유도 대차 확장축 인에이블
Step2: 확장축 인에이블이 성공하면 원점 복귀 버튼을 클릭해 확장축 현재 위치 원점 복귀를 설정합니다. 원점 복귀가 성공하면 테스트 버튼이 하이라이트되고, 그렇지 않으면 회색으로 표시됩니다.
그림 8.7‑30 2자유도 대차 현재 위치 원점 복귀 성공
Step3: 2자유도 대차 현재 위치 원점 복귀가 성공한 뒤 테스트 버튼을 클릭해 인터페이스로 들어가고, 운동 방식을 선택한 뒤 파라미터를 입력해 운동 테스트를 진행합니다. 운동 과정 중 정지 버튼을 클릭해 정지 기능도 테스트합니다.
운동 방식: 직선/원호
거리: `-5000~5000mm`(직선 운동 방식)
반지름: `1~5000mm`(직선 운동 방식)
각도: `-360~360°`(원호 운동 방식)
속도: 1~100%
그림 8.7‑31 2자유도 대차 테스트
8.7.4. 컨트롤러 + 서보 드라이버(485 통신)
8.7.4.1. 하드웨어 배선
RS485 통신 제어 서보 확장축을 사용하기 전에 먼저 서보 드라이버의 RS485 통신 인터페이스와 로봇 제어 박스의 RS485 통신 인터페이스를 연결해야 합니다. Nurirobot 로봇 Easy Manufacturing 제어 박스의 전기 인터페이스 개략도는 아래와 같습니다.
그림 8.7‑32 Nurirobot 로봇 mini 제어 박스 전기 인터페이스 개략도
Dynatek 서보 드라이버 FD100-750C 모델을 예로 들면, 이 드라이버 패널 단자 개략도와 FD100-750C`의 `X3A-IN 단자 정의를 참고합니다. 로봇이 FD100-750C 서보 확장축과 통신하도록 설정하려면, 제어 박스의 485-A0 단자와 485-B0 단자를 각각 드라이버 X3A-IN 단자의 4번, 5번 핀에 연결해야 합니다. 주의할 점은 서보 드라이버 패널에 485 표시가 있는 플러그 단자가 보이지만, 이 단자는 현재 사용자용으로 개방되지 않았으므로 RS485 통신 케이블을 이 단자에 연결하면 안 됩니다. 또한 여러 서보 드라이버를 연결하고 해당 드라이버가 체인의 마지막에 위치한다면, 패널의 RS485 통신 종단 저항 DIP 스위치(2번 DIP)를 켜야 합니다.
그림 8.7‑33 FD100-750C 드라이버 패널
그림 8.7‑34 FD100-750C의 X3A-IN 단자 정의
8.7.4.2. 통신 설정
RS485 통신 케이블이 올바르게 연결되어 있고, 로봇과 서보 확장축에 정상적으로 전원이 공급되고 있는지 확인한 뒤 로봇 WebApp을 엽니다.
구성 방식이 컨트롤러 + 서보 드라이버`인 이미지를 클릭해 상세 설정 인터페이스로 들어갑니다. 서보 드라이버 설정에서 번호 `1`을 선택합니다. 여러 서보를 연결하는 경우 이 번호는 서로 다른 서보를 구분하는 데 사용되며 이후에도 반복해서 사용됩니다. 제조사는 `Dynatek`으로 선택하고 해당 서보 드라이버 모델을 선택합니다. 여기서는 모델이 `FD00-750C, 소프트웨어 버전이 V1.0`이며, 서보 드라이버에 대응하는 분해능은 `131072, 기구 모델에 따라 기계 전달비는 15.45`를 입력한 뒤 `설정 버튼을 클릭합니다.
그림 8.7‑35 서보 드라이버 설정
이로써 로봇과 서보 드라이버의 485 통신 설정이 완료되었습니다. WebApp 오른쪽의 서보 상태 영역에서 서보의 실시간 상태 정보를 확인할 수 있습니다. 아래 그림과 같습니다.
그림 8.7‑36 서보 상태 영역
이제 순서에 따라 확장축 장치를 인에이블하고 원점 복귀 방식을 설정한 뒤, 일정한 운동 테스트를 진행할 수 있습니다. 안전이 확보되었는지 확인한 뒤 이 매뉴얼에 따라 아래 테스트 작업을 수행하십시오.
8.7.4.3. 설정된 서보 드라이버
8.7.4.3.1. 서보 제어 모드와 인에이블
설정된 서보 드라이버`에서 제어 모드를 `위치 모드`로 선택하고, 해당 서보 번호를 선택한 뒤 `인에이블 해제 버튼을 클릭합니다. 이때 먼저 서보 드라이버 번호가 설정되고, 설정 성공 후 제어 모드가 설정됩니다. 제어 모드 설정이 성공하면 서보 드라이버가 인에이블됩니다. 주의할 점은 제어 모드를 전환한 뒤 먼저 서보 드라이버를 인에이블 해제한 다음 다시 인에이블해야 서보의 제어 모드 전환이 유효해진다는 점입니다. 서보 인에이블이 성공한 뒤에는 제어 모드 전환이 무효가 됩니다.
그림 8.7‑37 서보 제어 모드와 인에이블
서보 인에이블이 성공한 뒤에는 로봇 상태 영역의 Servo`에서 `서보 인에이블 상태등이 켜져 있는 것을 확인할 수 있습니다. 이는 서보 드라이버가 이미 인에이블되었음을 의미합니다. 인에이블 상태 버튼을 클릭하면 서보 드라이버 인에이블이 해제되고 서보 인에이블 상태등이 꺼집니다.
그림 8.7‑38 서보 드라이버 상태 영역
8.7.4.3.2. 서보 원점 복귀
서보 드라이버 인에이블이 성공하면 원점 복귀 버튼이 하이라이트되며, 버튼을 클릭해 설정 인터페이스로 들어갑니다. 원점 복귀 모드를 현재 위치 원점 복귀`로 선택하고, 원점 복귀 속도는 `5mm/s, 영점 고정 속도는 1mm/s`로 설정합니다. `설정 버튼을 클릭하면 서보 현재 위치 원점 복귀 작업이 완료됩니다. 로봇 상태 영역의 Servo`에서 현재 `서보 위치`가 `0`인지 확인할 수 있습니다. 이 매뉴얼을 모두 읽은 뒤에는 원점 복귀 모드를 `음의 리미트 원점 복귀 또는 `양의 리미트 원점 복귀`로 선택해 원점 복귀 테스트를 수행하십시오.
그림 8.7‑39 서보 원점 복귀
8.7.4.3.3. 서보 운동
실제로 서보 모터를 제어하기 전에 서보 모터의 `위치 모드`와 `속도 모드`를 이해해야 합니다. 다시 한 번 강조하면 다음과 같습니다.
위치 모드: 일정한 운동 속도와 목표 위치 파라미터를 입력할 수 있으며, 서보는 설정된 속도로 목표 위치까지 이동합니다. 목표 위치에 도달한 뒤 서보는 움직임을 멈춥니다.
속도 모드: 일정한 목표 속도를 입력할 수 있으며, 서보는 설정된 목표 속도로 계속 움직입니다. 목표 속도를 `0`으로 설정하거나 서보 모터 인에이블을 해제할 때까지 계속 운동합니다.
제어 모드를 전환할 때 현재 제어 모드 표시는 자동으로 바뀝니다. 주의할 점은 제어 모드를 전환한 뒤 먼저 서보 인에이블을 해제하고 그다음 다시 서보를 인에이블해야 제어 모드 전환이 유효해진다는 점입니다. 현재 사용 중인 서보가 위치 모드`가 아니라면 먼저 위치 모드로 전환하십시오. `목표 위치`를 `50mm, 운행 속도를 5mm/s`로 입력하고 안전이 확보된 상태에서 `설정 버튼을 클릭합니다. 그러면 서보 모터는 설정된 파라미터에 따라 운동합니다. 로봇 상태 영역의 `Servo`에서 서보의 위치와 속도 등을 실시간으로 관찰할 수 있습니다.
그림 8.7‑40 서보 운동 조정(위치 모드)
서보의 제어 모드를 속도 모드`로 변경하고, `인에이블 상태 버튼을 클릭해 서보 드라이버 인에이블을 해제한 다음 인에이블 해제 상태 버튼을 클릭합니다. 그러면 서보는 속도 모드로 전환됩니다. 주의할 점은 서보 모터가 움직인 뒤 목표 속도를 0`으로만 설정해도 서보 모터를 정지시킬 수 있다는 것입니다. 목표 속도를 `5mm/s`로 입력하고 `설정 버튼을 클릭하면 서보 모터는 5mm/s 속도로 계속 운동을 유지합니다. 마찬가지로 로봇 상태 영역의 `Servo`에서 서보의 위치와 속도 등을 실시간으로 관찰할 수 있습니다.
그림 8.7‑41 서보 운동 조정(속도 모드)
8.7.4.4. 고급 설정
로봇이 충돌했거나 비상정지 버튼을 누른 경우 같은 긴급 상황에서는 확장축이 비상정지를 트리거하고, 설정된 비상정지 감속도로 정지할 수 있어야 합니다. 충돌 경보가 복구된 뒤에는 명령을 다시 발행하여 확장축이 운전을 재개할 수 있어야 합니다. 이를 위해 고급 설정에서 서보 가감속도와 서보 비상정지 가감속도를 설정해야 합니다. 아래 그림과 같습니다.
그림 8.7‑42 고급 설정
8.7.4.5. 확장축 프로그래밍
`티칭 프로그램 -> 프로그램 편집`에서 새 사용자 프로그램 `testServo.lua`를 생성하고 `주변기기 명령`을 선택합니다.
그림 8.7‑43 주변기기 명령 열기
확장축`을 클릭해 확장축 명령 추가 인터페이스를 엽니다. 조합 방식을 `컨트롤러 + 서보 드라이버(485)`로 선택하고, 제어 모드를 `위치 모드`로 설정한 뒤 오른쪽의 `추가 버튼을 클릭합니다. 확장축 명령 추가 인터페이스를 맨 아래까지 스크롤한 다음 적용 버튼을 클릭합니다.
그림 8.7‑44 확장축 제어 모드 설정
이때 testServo.lua 프로그램에는 서보 제어 모드 전환 명령 그룹이 생성됩니다. 로봇을 자동 모드로 전환한 뒤 이 프로그램을 실행할 수 있습니다.
그림 8.7‑45 서보 제어 모드 설정 프로그램
사용자 프로그램에서 서보 운동을 제어하려면 어떻게 해야 할까요? 같은 방식으로 확장축 명령 추가 인터페이스를 엽니다. 아래 그림과 같이 파라미터 설정 항목을 찾고, 위치 모드를 예로 들면 목표 위치와 운행 속도를 입력한 뒤 추가 버튼을 클릭합니다. 확장축 명령 추가 인터페이스를 맨 아래까지 스크롤한 뒤 적용 버튼을 클릭하고 인터페이스를 닫습니다.
그림 8.7‑46 위치 모드 운동 명령 추가
testServo.lua 프로그램에 서보 운동 명령 `AuxServoSetTargetPos(1,50,5)`가 추가됩니다. 명령 함수 안 3개 파라미터의 의미는 각각 다음과 같습니다.
1: 서보 번호는 1
50: 목표 위치
5: 목표 속도
그림 8.7‑47 위치 모드 서보 운동 프로그램
로봇을 자동 모드로 전환한 뒤 이 프로그램을 실행하면 서보는 5mm/s 속도로 50mm 위치까지 이동합니다.
이로써 RS485 제어 서보 확장축의 초기 설정과 테스트가 완료됩니다. 실제 상황에 따라 로봇 운동과 서보 운동을 조합한 프로그램을 작성할 수 있습니다. 아래 그림은 하나의 예제 프로그램입니다.
8.7.4.5.1. 확장축과 로봇 협조 운동 프로그램 예시
번호 |
명령 형식 |
주석 |
1 |
AuxServoSetTargetPos(1,50,5) |
#확장축이 리셋점으로 이동 |
2 |
if(GetDI(8,0) == 1) then |
#만약 CI0 입력이 유효하면 |
3 |
AuxServoSetTargetPos(1,50,5) |
#확장축이 50mm로 이동 |
4 |
PTP(testptp1,100,-1,0) |
#로봇이 testptp1 점으로 이동 |
5 |
elseif(GetDI(9,0) == 1) then |
#만약 CI1 입력이 유효하면 |
6 |
AuxServoSetTargetPos(1,150,5) |
#확장축이 150mm로 이동 |
7 |
PTP(testptp2,100,-1,0) |
#로봇이 testptp2 점으로 이동 |
8 |
else |
#만약 CI0와 CI1 입력이 모두 무효라면 |
9 |
AuxServoSetTargetPos(1,300,5) |
#확장축이 300mm로 이동 |
10 |
PTP(testptp3,100,-1,0) |
#로봇이 testptp3 점으로 이동 |
11 |
end |
#종료 |
8.7.4.6. 정리
정리하면, 협동 로봇과 서보 확장축의 RS485 통신을 설정할 때는 다음 사항에 유의해야 합니다.
협동 로봇과 서보 드라이버의 RS485 통신 케이블을 올바르게 연결할 것
서보 확장축의 제어 모드를 올바르게 선택할 것
제어 모드를 전환한 뒤 먼저 인에이블을 해제하고 그다음 다시 서보를 인에이블해야 제어 모드 전환이 유효해집니다.
8.8. 선 레이저 센서
Nurirobot 협동 로봇은 레이저 센서와 조합해 사용할 수 있으며, 센서가 용접 비드 등의 특징 위치를 인식함으로써 프로그래밍을 단순화하고 생산 효율을 높일 수 있습니다. 협동 로봇은 RuiNiu, ChuangXiang, QuanShi 3개 제조사의 레이저 센서와 호환되며, 다른 센서를 사용할 경우 대응하는 통신 프로토콜만 로드하면 됩니다.
8.8.1. 하드웨어 배선
레이저 센서를 사용하기 전에 먼저 레이저 센서를 적절한 위치에 설치하고, 레이저 센서의 LAN 케이블을 직접 연결하거나 스위치를 통해 로봇 제어 박스의 RJ45 인터페이스 중 하나에 연결해야 합니다.
8.8.2. 센서 설정
레이저 센서와 용접 토치가 로봇 말단에 고정 장착되어 있고, 레이저 센서가 로봇 제어 박스와 LAN 케이블로 연결되어 있으며, 레이저 센서와 로봇 제어 박스의 IP 주소가 동일한 서브넷 안에 있는지 확인하십시오. 그다음 로봇과 센서의 전원을 켭니다. 아래 그림은 RuiNiu 레이저 센서의 장착 예시입니다.
그림 8.8‑1 레이저 센서 장착
통신 설정 항목에서 센서의 IP 주소와 포트 번호를 입력하고 설정 버튼을 클릭합니다. 샘플링 주기의 기본값은 25`이며, 좌표계는 `레이저 평면 좌표계`를 선택하고, 사용 중인 센서 모델에 따라 대응하는 통신 프로토콜을 선택한 뒤 `로드 버튼을 클릭합니다.
그림 8.8‑2 레이저 센서 설정
트래킹 센서 테스트 항목에서 순서대로 `온`과 `오프`를 클릭해 센서의 레이저가 실제로 켜지거나 꺼지는지 확인합니다. 레이저가 정상적으로 켜지고 꺼진다면 로봇과 센서가 정상적으로 통신을 설정했다는 뜻입니다. 그렇지 않다면 IP 주소와 포트 번호 등의 파라미터가 올바른지, 그리고 센서와 로봇의 네트워크 연결이 올바른지 확인해야 합니다.
그림 8.8‑3 레이저 센서 통신 테스트
8.8.3. 센서 교정
레이저 센서를 사용하기 전에 먼저 레이저 센서를 교정해야 합니다. 교정 정밀도는 레이저 센서의 트래킹 정밀도에 직접 영향을 줍니다. 레이저 센서의 교정 방법에는 5점법, 6점법, 8점법이 있습니다. 용접 응용 장면에서 가장 자주 사용하는 5점법을 예로 들면, 교정 원리는 먼저 툴(용접 토치)로 고정 교정점(그림 4와 같음)을 가리킨 다음, 레이저 센서로 4개의 서로 다른 자세에서 조사하여 이 점을 인식하는 방식입니다.
참고
이 교정점은 레이저 센서가 정확하게 인식할 수 있어야 합니다. 그렇지 않으면 정확한 교정을 수행할 수 없습니다.
이후 센서 좌표의 위치와 자세를 계산합니다. 아래에서 그 교정 과정을 자세히 설명합니다.
그림 8.8‑4 레이저 센서 교정점
step1: 로봇 WebApp을 열고 순서대로 초기 설정 -> 기본 -> 툴 좌표`를 클릭하여 툴 좌표계 인터페이스로 들어갑니다. 사용하지 않는 툴 좌표계를 선택한 뒤 이름을 `용접 토치`로 바꾸고, 툴 타입은 `툴, 장착 위치는 `말단`으로 설정합니다.
그림 8.8‑5 용접 토치 좌표계 설정
다시 사용하지 않는 좌표계를 선택한 뒤 이름을 레이저 센서`로 바꾸고, 툴 타입은 `센서, 장착 위치는 `말단`으로 선택합니다.
그림 8.8‑6 레이저 센서 좌표계 설정
step2: 6점법으로 용접 토치의 툴 좌표계를 교정합니다. 용접 토치 좌표계를 선택하고 수정 버튼을 클릭한 뒤, 6점법을 사용해 용접 토치 툴 좌표계를 교정합니다. 구체적인 교정 방법은 Nurirobot 문서를 참고하며 여기서는 자세히 설명하지 않습니다.
그림 8.8‑7 용접 토치 좌표계 교정
step3: `툴 좌표계 설정`에서 0번 좌표계(기준 좌표계)를 선택합니다. 기본 이름은 `toolcoord0`이며, `적용`을 클릭해 현재 좌표계를 기준 좌표계로 전환합니다.
그림 8.8‑8 센서 교정 step1
step4: 이전에 설정한 레이저 센서 좌표계를 다시 선택합니다. (적용`은 누르지 않음) 그다음 `편집 버튼을 클릭하고, 툴 타입은 센서, 센서 고정 위치는 로봇 말단, 교정 방법은 `5점법`으로 선택합니다.
그림 8.8‑9 센서 교정 step2
step5: 로봇을 드래그하여 용접 토치 끝을 교정점에 맞추고, 용접 토치 좌표계를 선택한 뒤 `적용`을 클릭하고 `점1 설정`을 클릭합니다. 그림 13과 같습니다.
그림 8.8‑10 센서 교정 step3
그림 8.8‑11 센서 교정 step4
step6: 다시 0번 좌표계(toolcoord0)를 선택합니다. 그다음 센서 좌표계를 선택합니다. (`적용`은 클릭하지 않음) 이제 계속 교정을 진행할 수 있습니다.
그림 8.8‑12 센서 교정 step5
그림 8.8‑13 센서 교정 step6
step7: 레이저 센서 위치를 이동하여 레이저가 교정점을 정확히 스캔하도록 한 뒤 `점2 설정`을 클릭합니다. 이때 왼쪽의 센서 출력값 표시 위치에 현재 센서 데이터가 표시됩니다. 데이터가 정상이라면 현재 교정점 설정이 성공한 것이고, 그렇지 않다면 재교정이 필요합니다.
그림 8.8‑14 센서 교정 step7
그림 8.8‑15 센서 교정 step8
step8: 이어서 레이저로 서로 다른 3개의 자세에서 추가로 교정점을 조사하고, 각각 점3 설정, 점4 설정, 점5 설정`을 클릭합니다. 마지막으로 각 점의 데이터가 모두 정상인지 확인한 뒤 `계산 버튼을 클릭합니다.
그림 8.8‑16 센서 교정 step9
step9: 이때 WebApp에 센서의 교정 결과와 교정 정밀도가 표시됩니다. 적용 버튼을 클릭하면 레이저 센서 교정이 완료됩니다. 교정 정밀도가 너무 나쁘면 취소 버튼을 클릭하고 다시 교정할 수 있습니다.
그림 8.8‑17 센서 교정 정밀도
8.8.4. 레이저 센서 응용
레이저 센서를 사용하기 전에 먼저 용접 토치 툴 좌표계를 현재 툴 좌표계로 적용합니다.
그림 8.8‑18 용접 토치 좌표계 적용
8.8.4.1. 레이저 센서 티칭점
로봇을 드래그하여 레이저 센서 광선을 티칭하려는 용접 비드 점에 맞춥니다. WebApp에서 센서를 레이저 센서`로 선택하고, 센서 점 이름을 `laserPt`로 입력한 뒤 `추가 버튼을 클릭합니다. 새 사용자 프로그램 `testLaser.lua`를 생성하고, 운동 명령 `PTP`를 만든 뒤 목표점을 `laserPt`로 선택하고 단일 스텝으로 이 명령을 실행합니다. 그러면 용접 토치가 앞서 레이저 센서가 가리키던 점으로 이동합니다.
그림 8.8‑19 레이저 센서 용접 비드 점
그림 8.8‑20 센서 점 티칭
그림 8.8‑21 용접 토치가 용접 비드 점을 가리킴
8.8.4.2. 레이저 위치결정 + 트래킹
협동 로봇과 레이저 센서가 연동하여 레이저 위치결정 + 레이저 트래킹 기능을 수행하려면 다음 단계가 필요합니다.
로봇이 용접 비드 바깥의 한 점으로 이동
레이저 위치결정을 시작하고, 로봇이 레이저 센서를 가지고 용접 비드 위치로 이동
레이저 센서가 용접 비드를 인식하고, 로봇이 용접 토치를 용접 비드 인식점으로 이동
레이저 트래킹 시작과 동시에 로봇이 용접 비드 종점으로 이동하고, 레이저 센서가 이동 과정 중 실시간으로 위치를 기록
용접 토치가 레이저 센서가 기록한 위치를 따라 이동하여 트래킹 효과를 구현
위치결정 트래킹을 조정하기 전에 센서가 올바르게 장착되어 있는지, 용접 토치 툴 좌표계가 정확하게 교정되었는지, 그리고 레이저 센서도 정확하게 교정 완료되었는지 확인해야 합니다. 그림의 녹색 직선이 용접 비드라고 가정하고, 로봇이 자동으로 용접 시작점 A를 찾고 자동으로 B점까지 용접하도록 하려면 아래와 같은 명령 작성이 필요합니다.
그림 8.8‑22 센서 장착
8.8.4.2.1. 위치결정 명령 작성
새 사용자 프로그램 `laserTrack.lua`를 만들고 `용접 명령`을 선택합니다. `레이저 트래킹`을 클릭해 레이저 트래킹 명령 추가 페이지를 엽니다.
그림 8.8‑23 레이저 트래킹 명령
위치결정 명령`을 찾고 좌표계 이름은 `레이저 센서, 방향은 +x`로 선택합니다. 이는 로봇이 레이저 센서를 장착한 채 현재 위치에서 `용접 토치 좌표계의 +x 방향을 따라 이동하면서 용접 비드를 탐색한다는 뜻입니다. 속도`는 레이저 센서 위치결정 이동 속도이고, 길이는 레이저 센서의 최대 위치결정 길이입니다. 로봇의 위치결정 거리가 이 길이를 넘었는데도 용접 비드를 찾지 못하면 로봇은 오류를 보고합니다. 최대 위치결정 시간도 길이와 같은 개념으로, 이 시간을 초과해도 용접 비드를 찾지 못하면 로봇이 오류를 보고합니다. 실제 장면에 맞게 위 파라미터를 올바르게 입력한 뒤 순서대로 `위치결정 시작`과 `위치결정 종료 명령을 클릭하고 적용 버튼을 누릅니다.
그림 8.8‑24 위치결정 명령 추가
이때 `laserTrack.lua`에는 해당 레이저 위치결정 시작/종료 명령이 추가됩니다.
그림 8.8‑25 위치결정 프로그램
8.8.4.2.2. 위치결정점으로의 운동 명령 작성
포인트 투 포인트 운동 LIN 명령을 추가하고, 목표점은 seamPos, 즉 레이저 센서 위치결정점으로 설정합니다.
참고
seamPos 점은 로봇 시스템 내부에서 레이저 센서 위치결정 전용으로 사용하는 점 이름이므로 별도로 티칭할 필요가 없습니다. 레이저 센서 위치결정 후 위치결정점 정보가 자동으로 seamPos 점에 저장됩니다.
위치결정점은 오프셋을 설정할 수 있으며, 오프셋 타입은 기준 좌표계 오프셋, 툴 좌표계 오프셋, 레이저 원시 데이터 오프셋 중에서 선택할 수 있습니다.
그림 8.8‑26 위치결정 오프셋 옵션
위치결정 오프셋 기능을 활성화하면 오프셋 파라미터를 설정할 수 있습니다. dx`는 선택한 좌표계의 x방향 오프셋 거리를 의미하고, `drx`는 선택한 좌표계의 x축 회전 각도를 의미합니다. `추가 버튼을 클릭한 뒤 적용 버튼을 클릭합니다.
그림 8.8‑27 위치결정 오프셋 파라미터 설정
이때 `testTrack.lua`에는 위치결정점으로 이동하는 운동 명령이 추가됩니다. 그림 32와 같습니다.
그림 8.8‑28 위치결정 오프셋 프로그램
8.8.4.2.3. 레이저 트래킹 명령 작성
다시 레이저 트래킹 명령 추가 페이지를 열고, 순서대로 트래킹 시작`과 `트래킹 정지 버튼을 클릭한 뒤 마지막으로 페이지 맨 아래의 적용 버튼을 클릭합니다.
그림 8.8‑29 레이저 트래킹 시작과 정지
이 시점의 사용자 프로그램 `testTrack.lua`는 다음과 같습니다.
그림 8.8‑30 레이저 트래킹 프로그램
8.8.4.2.4. 위치결정 시작점과 트래킹 종료점 명령 작성
레이저 위치결정을 시작하기 전에 먼저 위치결정 시작점을 지정해야 합니다. 로봇은 먼저 위치결정 시작점으로 이동한 뒤 일정한 방향과 속도로 위치결정을 수행합니다. 레이저 센서 광선이 용접 비드 시작점 A 부근에 오도록 위치결정 시작점 1 `seamStartPt1`을 티칭하고, 위치결정 시작점과 위치결정 방향이 서로 맞는지 주의하여 로봇이 설정된 거리와 최대 위치결정 시간 안에 용접 비드 위치를 찾을 수 있게 해야 합니다.
그림 8.8‑31 위치결정 시작점
용접 비드 말단에서 트래킹 종료점 `trackEndPt`를 티칭합니다.
그림 8.8‑32 위치결정 종료점
위의 두 점을 testTrack.lua 사용자 프로그램에 추가하면 최종 사용자 프로그램은 다음과 같습니다.
그림 8.8‑33 위치결정 트래킹 프로그램
8.8.4.2.5. 용접 관련 명령 작성
마지막으로 용접 위치결정점 seamPos`와 `trackEndPt 사이에 용접 명령을 추가하면 최종 프로그램은 다음과 같습니다.
그림 8.8‑34 위치결정 트래킹 용접 프로그램
위 프로그램을 실행하면 로봇은 레이저 센서를 장착한 채 위치결정 시작점에서 위치결정 운동을 시작하고, 용접 비드를 찾은 뒤 즉시 용접 비드 시작점으로 이동하여 아크 시작 동작을 실행합니다. 아크 시작이 성공하면 로봇은 용접 비드 종점으로 이동하면서 이동 과정 중 용접 비드 궤적을 트래킹합니다. 로봇이 용접 비드 종점에 도달하면 용접을 정지합니다.
8.8.4.3. 레이저 궤적 기록 + 궤적 재현
레이저 궤적 기록 + 궤적 재현의 작업 흐름은 다음과 같습니다.
로봇이 레이저 센서를 장착한 채 용접 비드를 따라 한 구간의 궤적을 이동하고, 레이저 센서가 이동 과정 중 실시간으로 용접 비드 위치 궤적 데이터를 기록
궤적 기록이 완료된 뒤 로봇이 궤적 기록 시작점으로 이동
로봇이 레이저 센서가 기록한 궤적을 따라 궤적 재현 운동을 수행
8.8.4.3.1. 로봇 궤적 기록 명령 작성
새 사용자 프로그램 testRecord.lua`를 생성하고 `레이저 기록`을 클릭해 레이저 기록 명령 추가 페이지를 엽니다. `용접 비드 데이터 기록`을 찾아 `기록 시작`을 선택하고 `추가 버튼을 클릭한 뒤, 기록 정지`를 선택하고 다시 `추가 버튼을 클릭합니다. 마지막으로 적용 버튼을 클릭합니다.
그림 8.8‑35 레이저 기록
그림 8.8‑36 기록 시작과 기록 정지
이때 페이지에 궤적 기록 시작/정지 명령이 표시됩니다.
그림 8.8‑37 궤적 기록 프로그램
그림의 녹색 선분 AB를 용접 비드라고 가정하고, 각각 레이저를 용접 비드 시작점 A와 용접 비드 끝점 B에 조사하여 궤적 기록 시작점 `recordStartPt`와 종료점 `recordEndPt`를 티칭합니다.
그림 8.8‑38 궤적 기록 시작점과 종료점
testRecord.lua`에 2개의 직선(`LIN) 운동 명령을 추가하고, 각각 궤적 기록 시작점 recordStartPt`와 종료점 `recordEndPt`로 이동하도록 설정합니다. 명령 위치를 조정하여 로봇이 먼저 `recordStartPt 점으로 이동해 궤적 기록을 시작하고, 이후 recordEndPt 점으로 이동해 궤적 기록을 정지하도록 구성합니다.
그림 8.8‑39 궤적 기록 프로그램
8.8.4.3.2. 로봇의 궤적 기록 시작점 이동 명령 작성
레이저 기록`을 클릭해 레이저 기록 명령 추가 페이지를 열고, `용접 비드 점으로의 이동 항목을 찾습니다. 운동 방식은 PTP`로 선택하고 일정한 운동 속도를 입력한 뒤 `시작점으로 이동`을 클릭하고 `적용 버튼을 클릭합니다.
그림 8.8‑40 궤적 시작점으로의 이동
이때 testRecord.lua 사용자 프로그램은 다음과 같습니다.
그림 8.8‑41 궤적 시작점 이동 프로그램
8.8.4.3.3. 레이저 센서 궤적 재현 명령 작성
레이저 기록`을 클릭해 레이저 기록 명령 추가 페이지를 열고, `용접 비드 데이터 기록`을 찾아 `궤적 재현`을 선택한 뒤 `추가 버튼을 클릭합니다. 이어서 레이저 트래킹 재현 버튼을 클릭하고 마지막으로 적용 버튼을 클릭합니다.
그림 8.8‑42 궤적 재현
추가 완료 후 프로그램은 다음과 같습니다.
그림 8.8‑43 궤적 재현 프로그램
8.8.4.3.4. 용접 관련 명령 작성
마지막으로 궤적 재현 시작 전과 종료 후에 용접 시작/종료 명령을 추가합니다.
그림 8.8‑44 궤적 기록 재현 용접 프로그램
위 프로그램을 실행하면 로봇은 레이저 센서를 장착한 채 먼저 용접 비드 궤적을 따라 이동하면서 전체 궤적을 기록합니다. 이후 로봇이 궤적 기록 시작점으로 이동하고 아크를 시작한 뒤, 레이저 센서가 기록한 궤적을 따라 용접을 시작합니다. 로봇의 궤적 재현이 완료되면 용접 아크가 꺼지고 용접이 완료됩니다.
8.8.5. 레이저 센서용 컨트롤러 주변기기 오픈 프로토콜
Step1: 오픈 프로토콜 연결`과 `레이저 센서 제어`를 사용해야 하는 경우, 센서 트래킹 설정에서 `프로토콜 타입 옵션을 `주변기기 오픈 프로토콜`로 선택합니다. 기존 방식을 사용하는 경우에는 `적합 완료 장치`를 선택하고, 트래킹 센서 인터페이스에서 레이저 주변기기를 설정/로드합니다.
그림 8.8‑45 오픈 프로토콜 연결`과 `레이저 센서 제어 설정 인터페이스
Step2: `주변기기 오픈 프로토콜`을 클릭해 인터페이스로 들어갑니다. `오픈 프로토콜 설정`에서 해당 레이저 센서의 주변기기 오픈 프로토콜을 업로드합니다. 업로드가 성공하면 프로토콜 번호와 업로드한 파일명을 선택하고 `설정`을 클릭합니다. 이후 장치 조작 및 상태에서 업로드한 레이저 센서를 실행하면 해당 레이저 센서와 연결을 설정할 수 있습니다.
그림 8.8‑46 레이저 센서 연결 설정
8.9. 연마
초기 설정 -> 주변기기 -> 연마 인터페이스에서 현재 `적합 완료 장치`와 `주변기기 오픈 프로토콜`을 사용해 연마 기능을 사용할 수 있습니다.
그림 8.9-1 연마 상태 설정 페이지
8.9.1. 적합 완료 장치
통신 설정 및 로드: 통신 정보를 설정해야 합니다. IP 주소, 포트, 샘플링 주기, 통신 프로토콜을 설정해야 하며, 로드/언로드 버튼으로 연마 장치와의 통신을 설정합니다.
그림 8.9-2 통신 설정 및 로드
장치 기능: 장치 인에이블, 오류 클리어, 힘 센서 영점 조정 등의 작업을 수행할 수 있습니다.
그림 8.9-3 장치 기능
파라미터 설정: 연마 장치의 회전수, 접촉력, 돌출 거리, 제어 모드를 설정할 수 있습니다. 설정이 성공하면 오른쪽 Polish 상태 피드백 영역에 해당 데이터와 상태가 표시됩니다.
그림 8.9-4 파라미터 설정
그림 8.9-5 파라미터 설정
8.9.2. 주변기기 오픈 프로토콜
`주변기기 오픈 프로토콜`을 클릭해 인터페이스로 들어갑니다. `오픈 프로토콜 설정`에서 해당 연마 장치의 주변기기 오픈 프로토콜을 업로드합니다. 업로드가 성공하면 프로토콜 번호와 업로드한 파일명을 선택하고 `설정`을 클릭합니다. 이후 장치 조작 및 상태에서 업로드한 연마 주변기기 오픈 프로토콜을 실행하면 해당 연마 장치와 연결을 설정할 수 있습니다.
그림 8.9‑6 연마 장치 연결 설정
8.10. 보조 센서
초기 설정 -> 주변기기 -> 보조 센서 인터페이스에서 현재 `적합 완료 장치`를 사용할 수 있습니다. 커스텀 프로토콜 기능은 현재 미개방 상태입니다.
그림 8.10‑1 보조 센서 – 적합 완료 장치
8.10.1. 적합 완료 장치
`적합 완료 장치`를 클릭해 보조 센서 설정 인터페이스로 들어갑니다.
보조 센서의 설정 정보는 제조사, 타입, 소프트웨어 버전, 장착 위치로 나뉘어 있습니다. 사용자는 실제 생산 요구에 따라 해당 보조 센서 정보를 설정할 수 있습니다.
사용자가 설정을 변경해야 할 경우, 먼저 해당 보조 센서 번호를 선택하고 클리어 버튼을 클릭해 해당 항목을 초기화한 뒤 필요에 따라 다시 설정할 수 있습니다.
그림 8.10‑2 보조 센서 – 적합 완료 장치
8.11. 조합 장치(SmartTool + 힘 센서 조합)
초기 설정 -> 주변기기 -> 조합 장치 인터페이스에서 현재 `적합 완료 장치`를 사용할 수 있습니다. 커스텀 프로토콜은 현재 미개방 상태입니다.
그림 8.11-1 조합 장치
8.11.1. 적합 완료 장치
`적합 완료 장치`를 클릭해 설정 인터페이스로 들어갑니다.
설정 정보는 제조사, 타입, 소프트웨어 버전, 장착 위치로 나뉘어 있습니다. 제조사에 따라 대응하는 타입이 다르며, 현재 제조사는 `RY`입니다.
사용자는 실제 생산 요구에 따라 해당 장치 정보를 설정할 수 있으며, 설정이 성공하면 장치 정보 표가 표시됩니다. 설정을 변경해야 하는 경우에는 먼저 해당 번호를 선택하고 클리어 버튼을 클릭해 해당 정보를 초기화한 뒤 필요에 따라 다시 설정할 수 있습니다.
중요
설정을 초기화하기 전에 해당 장치는 비활성 상태여야 합니다.
그림 8.11‑2 적합 완료 장치
8.11.1.1. RY
RY에 대응하는 타입은 `SmartTool`과 힘 센서의 조합 사용입니다. 협동 로봇은 Xinjingcheng, NSR, Gangzhichuangxin 3종류의 힘 센서와 호환되며, 다른 센서를 사용할 경우 해당 통신 프로토콜만 로드하면 됩니다. 구체적으로는 다음과 같습니다.
SmartTool + `XJC-6F-D82`(Xinjingcheng)
SmartTool + `NSR-FT Sensor A`(NSR)
SmartTool + `GZCX-6F-75A`(Gangzhichuangxin)
하드웨어 장착
SmartTool 핸들을 분해해 중간 지그를 꺼낸 뒤 로봇 말단에 장착합니다. 지그 장착이 완료되면 SmartTool 핸들을 다시 조립합니다. 조립이 완료되면 연결선을 로봇 말단에 연결합니다.
그림 8.11‑3 SmartTool 핸들 중간 지그 장착
그림 8.11‑4 SmartTool 핸들 장착 완료
SmartTool 핸들 장착이 완료되면 힘 센서(예: Gangzhichuangxin)를 SmartTool 핸들 말단에 장착하고 연결선을 SmartTool 핸들에 연결합니다.
그림 8.11‑5 Gangzhichuangxin 힘 센서의 SmartTool 핸들 말단 장착
장치 설정
중요
사용 중인 SmartTool 핸들이 로봇 말단에 고정 장착되어 있고 로봇 말단에 올바르게 연결되어 있는지, 또한 힘 센서가 SmartTool 핸들 말단에 고정 장착되어 SmartTool 핸들에 올바르게 연결되어 있는지 확인하십시오.
SmartTool 핸들을 설정합니다. (용접 핸드 핸들 키 기능 설정 참고)
SmartTool 핸들 키 기능 설정이 끝나면 제조사를 FR`로 설정하고 `타입, 소프트웨어 버전, 장착 위치 정보를 선택한 뒤 설정 버튼을 클릭합니다.
그림 8.11‑6 RY 장치 정보 설정 인터페이스
장치 정보 설정이 성공하면 설정된 힘 센서를 선택하고 활성화 버튼을 클릭해 힘 센서를 활성화합니다. 활성화가 성공한 뒤 영점 보정 버튼을 클릭해 힘 센서의 영점 조정을 수행하고 표 데이터를 확인합니다.
그림 8.11‑7 힘 센서 영점 조정
현재 말단 장착 상태에 따라 부하 인터페이스에서 부하 데이터를 설정하고, 툴 좌표 인터페이스에서 툴 좌표 데이터, 툴 타입, 장착 위치를 설정합니다.
그림 8.11‑8 말단 부하 설정
그림 8.11‑9 툴 좌표 설정
응용
장치 정보 설정이 성공하면 SmartTool 키 기능과 힘 센서 기능을 각각 독립적으로 사용할 수 있습니다. 예를 들어 힘의 크기 및 수력 방향 측정, 힘 센서 기반 보조 드래그 잠금 등이 가능합니다.
그림 8.11‑10 힘의 크기 및 수력 방향 측정
8.12. 배열식 흡착컵
8.12.1. 개요
로봇 말단에 배열식 흡착컵을 장착하면 로봇이 다양한 작업물 픽업 스테이션을 빠르게 구성할 수 있고, 서로 다른 크기와 형상의 작업물에 맞춰 흡착컵 수와 레이아웃을 맞춤 설정할 수 있어 작업 효율과 안정성을 높일 수 있습니다.
협동 로봇은 최대 20개의 흡착컵으로 구성된 흡착컵 배열을 지원하며, 그중 특정 흡착컵의 픽업과 해제를 개별 제어할 수 있고 현재 연결된 배열 전체의 모든 흡착컵을 동기 동작시킬 수도 있습니다. 각 흡착컵의 슬레이브 주소는 `1~20`까지 설정할 수 있으며, 설정은 DynamicLAB 소프트웨어 기반으로 수행됩니다.
8.12.1.1. 하드웨어 설명
협동 로봇은 Ethernet-to-485 모듈을 통해 흡착컵 배열과 통신 및 제어를 수행합니다. WebApp에서 배열식 흡착컵 통신 프로토콜을 생성하면, 이 프로토콜은 제어 데이터를 TCP/IP를 통해 Ethernet-to-485 모듈로 보내고, 모듈은 수신한 제어 데이터를 485를 통해 각 흡착컵으로 전송하여 배열식 흡착컵 제어를 구현합니다. (위 제어 데이터 형식은 Modbus RTU 프로토콜 형식입니다.)
이때 Ethernet-to-485 모듈은 이더넷 통신의 서버이자 485 통신의 마스터 역할을 하며, 배열 안의 각 흡착컵은 모두 485 통신 슬레이브입니다. 또한 각 흡착컵은 서로 다른 슬레이브 주소를 설정해야 합니다.
그림 8.12-1 협동 로봇 흡착컵 배열 그리퍼 응용
Ethernet-to-485 모듈은 보통 2개의 TCP Server 포트가 여러 개의 485 슬레이브 포트에 대응합니다. CH9121을 예로 들면, TCP Server 포트 1은 485 슬레이브 포트 1-10에 대응하고 TCP Server 포트 2는 485 슬레이브 포트 11-20에 대응합니다. 로봇과 Ethernet-to-485 모듈은 2개의 TCP 통신을 설정하고, 최종적으로 각각 최대 20개의 흡착컵을 제어합니다.
위 Ethernet-to-485 모듈은 다음과 같이 설정해야 합니다.
① 이더넷 측을 TCP Server로 설정하고, IP 주소는 192.168.58.10, 포트 1의 포트 번호는 50001, 포트 2의 포트 번호는 `50002`로 설정
② 485 측은 보레이트 115200, 데이터 비트 8, 스톱 비트 1, 패리티 없음으로 설정. Ethernet-to-485 모듈에는 보통 설정 소프트웨어가 제공되며, 이를 통해 위 설정을 수행할 수 있습니다. 아래 그림은 CH9121 모델 Ethernet-to-485 모듈의 설정 도구 페이지입니다.
그림 8.12-2 Ethernet-to-485 모듈 설정 도구
8.12.2. 기능 설정
WebApp을 열고 순서대로 초기 설정 -> 주변기기 -> 배열식 흡착컵`을 클릭합니다. 배열식 흡착컵의 제어 모드에는 `유니캐스트 모드`와 `브로드캐스트 모드 두 가지가 있습니다.
유니캐스트 모드: 통신 프로토콜에 각 흡착컵의 통신 제어 내용이 포함되어 있어, 배열 안의 각 흡착컵을 독립적으로 제어할 수 있습니다.
브로드캐스트 모드: 배열 안의 모든 흡착컵에 대해 통신 프로토콜을 생성하여 모든 흡착컵의 픽업과 해제를 동기 제어할 수 있지만, 특정 하나만 따로 제어할 수는 없습니다.
작업 중에는 실제 장면에 따라 유니캐스트 모드만 설정할 수도 있고, 두 모드를 동시에 설정할 수도 있습니다. 이렇게 하면 특정 흡착컵을 개별 제어하면서 동시에 모든 흡착컵을 동기 제어할 수도 있습니다.
그림 8.12-3 배열 흡착컵 제어 모드
8.12.2.1. 유니캐스트 모드 설정
WebApp을 열고 순서대로 초기 설정 -> 주변기기 -> 배열식 흡착컵 -> 유니캐스트 모드`를 클릭합니다. 유니캐스트 모드 프로토콜 설정 방식에는 `자동 설정`과 `수동 설정 두 가지가 있습니다.
그림 8.12-4 유니캐스트 설정 모드
자동 설정: 기존 프로토콜 파일을 로봇 컨트롤러에 직접 업로드합니다. 기존 프로토콜 파일은 다음과 같은 경로로 확보할 수 있습니다. ① 이미 설정과 디버깅이 완료된 다른 배열식 흡착컵 로봇에서 다운로드 ② 기술자가 실제 장면에 맞게 직접 작성. 사용자가 프로토콜 파일을 직접 작성하면 더 유연하고 효율적인 흡착컵 제어를 구현할 수 있습니다. 여러 장치가 동일한 배열식 흡착컵을 사용하는 경우 자동 설정으로 프로토콜을 직접 업로드하는 방식이 배포 속도를 높일 수 있습니다.
수동 설정: 배열 안의 흡착컵 슬레이브 ID와 진공도 상태에 따라 각 흡착컵의 통신 프로토콜을 설정합니다. 수동 설정 절차는 다음과 같습니다.
슬레이브 주소를 1`로 선택하고, 최대 진공도, 최소 진공도, 픽업 타임아웃 시간(타임아웃 시간은 현재 미개방)을 입력한 뒤 `설정 버튼을 클릭합니다. 그러면 장치 조작 및 상태 항목에 프로토콜 번호 1의 흡착컵 프로토콜이 생성되고, 동시에 수동 설정, 슬레이브 주소 탭에는 현재 이미 설정된 모든 슬레이브 주소가 표시됩니다.
그림 8.12-5 유니캐스트 흡착컵 설정
위 단계를 반복하면 필요에 따라 여러 슬레이브 주소의 흡착컵을 설정할 수 있습니다. 흡착컵을 설정할 때마다 로봇 시스템은 자동으로 프로토콜 번호: 1`에 대응하는 흡착컵 통신 프로토콜 내용을 업데이트합니다. 최대 20개의 흡착컵을 설정할 수 있습니다. 모든 흡착컵 설정이 완료된 뒤 `프로토콜 번호 1 박스에서 연결 버튼을 클릭하면 로봇과 흡착컵 간 통신이 시작되고 실행 상태 표시등이 켜집니다. 주의할 점은 먼저 모든 슬레이브 주소 흡착컵 설정을 끝낸 뒤 연결 버튼을 눌러야 하며, 통신이 설정된 후에는 흡착컵 슬레이브를 다시 설정해도 반영되지 않습니다.
로봇과 흡착컵의 통신이 설정되면 장치 조작 및 상태 항목에 설정된 모든 흡착컵 슬레이브 조작 박스 목록이 나타납니다. 각 슬레이브 주소에 대응하는 흡착컵 조작 페이지에서 흡착컵 제어와 상태 감시(픽업 상태, 현재 진공도, 흡착컵 압력 등 포함)를 수행할 수 있습니다. 아래 그림에서 설정된 흡착컵 슬레이브 ID는 각각 `2`와 `11`입니다.
그림 8.12-6 유니캐스트 흡착컵 연결
슬레이브 주소 1번 흡착컵의 제어 박스 오른쪽 위에서 픽업 버튼을 클릭하면 흡착컵은 설정 진공도 픽업 동작을 수행합니다. 이때 픽업 버튼은 해제 버튼으로 바뀌며, 다시 이 버튼을 클릭하면 흡착컵은 해제 동작을 수행합니다. 흡착컵이 위 동작을 수행하는 동안 픽업 상태, 현재 진공도 등의 상태 항목은 흡착컵 상태를 실시간으로 표시합니다.
참고
주의: 흡착컵 프로토콜을 설정하고 연결이 완료된 뒤에는 한 번 픽업 버튼을 클릭해 이 흡착컵을 활성화해야 하며, 동시에 로봇과 흡착컵 간 통신이 정상인지도 테스트할 수 있습니다.
로봇과 흡착컵 연결에 실패하면 흡착컵 제어 박스가 표시되지 않고 프로토콜 번호: 1 안의 실행 상태 표시등도 꺼집니다.
참고
주의: 사용 중 흡착컵과 Ethernet-to-485 모듈 간의 통신 물리 연결이 끊겼다가 다시 연결되면, 프로토콜 연결이 정상적으로 설정되지 않을 수 있습니다. 이 경우 Ethernet-to-485 모듈의 LAN 케이블을 다시 꽂고 재연결을 시도하십시오.
그림 8.12-7 로봇과 흡착컵 연결 실패
8.12.2.2. 유니캐스트 모드 프로토콜 다운로드
수동 설정`에서 `다운로드 버튼을 클릭하면 흡착컵 프로토콜을 로컬 컴퓨터로 다운로드할 수 있습니다. 흡착컵 프로토콜은 루프 실행되는 LUA 프로그램이며, 프로그램은 각 루프에서 다음 단계를 수행합니다.
① 로봇에서 흡착컵 제어 데이터 읽기
② socket을 통해 제어 데이터를 흡착컵에 쓰기
③ socket에서 흡착컵 상태 데이터 읽기
④ 로봇에 흡착컵 상태 데이터 피드백
흡착컵 통신 프로토콜은 루프 실행을 통해 로봇과 흡착컵 사이의 통신 제어를 구현합니다. 통신 프로토콜에서는 사용자가 루프 주기, 제어 데이터 레지스터 주소, 상태 데이터 레지스터 주소를 사용자 지정할 수 있으며 실제 상황에 맞게 프로토콜 내용을 수정할 수 있습니다. 아래는 흡착컵 통신 프로토콜 코드 예시입니다.
흡착컵 프로토콜 프로그램 예시:
1local id = 1
2local ctrlValues = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
3local realTimeState = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
4local suckerConfig = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
5clearSuckerState()
6socket1 = TCPClientConnect('192.168.58.10', 50001, 500, 10, 2, 3)
7socket2 = TCPClientConnect('192.168.58.10', 50002, 500, 10, 2, 3)
8suckerConfig[1] = 30
9suckerConfig[2] = 20
10suckerConfig[3] = 100
11ModbusRTUOverTCPWriteMultiReg(socket1, 0, 0x0501, 3, suckerConfig)
12ModbusRTUOverTCPWriteMultiReg(socket2, 0, 0x0501, 3, suckerConfig)
13sleep_ms(10)
14while(1) do
15 setAllCtrl,ctrlValues[1],ctrlValues[2],ctrlValues[3],ctrlValues[4],ctrlValues[5],ctrlValues[6],ctrlValues[7],ctrlValues[8],ctrlValues[9], ctrlValues[10], ctrlValues[11],ctrlValues[12],ctrlValues[13],ctrlValues[14],ctrlValues[15],ctrlValues[16],ctrlValues[17],ctrlValues[18],ctrlValues[19], ctrlValues[20] = getSuckerCtrlState()
16 if(setAllCtrl ~= 0) then
17 ModbusRTUOverTCPWriteSingleReg(socket1, 0, 0x0500, setAllCtrl)
18 ModbusRTUOverTCPWriteSingleReg(socket2, 0, 0x0500, setAllCtrl)
19 ctrlValues = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
20 sleep_ms(1)
21 else
22 ModbusRTUOverTCPWriteSingleReg(socket1, 2, 0x0500, ctrlValues[2])
23 ModbusRTUOverTCPWriteSingleReg(socket2, 11, 0x0500, ctrlValues[11])
24 end
25 suckerState, pressValue, error, default1, default2 = ModbusRTUOverTCPReadReg(socket1, 2, 0x0600, 3)
26 realTimeState[1] = suckerState
27 realTimeState[2] = pressValue
28 realTimeState[3] = error
29 ctrlState, maxPress, minPress, time, default2 = ModbusRTUOverTCPReadReg(socket1, 2, 0x0500, 4)
30 realTimeState[4] = ctrlState
31 realTimeState[5] = maxPress
32 realTimeState[6] = minPress
33 realTimeState[7] = time
34 setSuckerRealtimeState(2, realTimeState)
35 suckerState, pressValue, error, default1, default2 = ModbusRTUOverTCPReadReg(socket2, 11, 0x0600, 3)
36 realTimeState[1] = suckerState
37 realTimeState[2] = pressValue
38 realTimeState[3] = error
39 ctrlState, maxPress, minPress, time, default2 = ModbusRTUOverTCPReadReg(socket2, 11, 0x0500, 4)
40 realTimeState[4] = ctrlState
41 realTimeState[5] = maxPress
42 realTimeState[6] = minPress
43 realTimeState[7] = time
44 setSuckerRealtimeState(11, realTimeState)
45 local stopFlag = GetOpenLUAStopFlag(id)
46 if(stopFlag ~= 0) then
47 TCPClientDisconnect(socket1)
48 TCPClientDisconnect(socket2)
49 clearSuckerState()
50 break
51 end
52 sleep_ms(100)
53end
위 프로토콜은 getSuckerCtrlState() 명령으로 흡착컵 제어 데이터를 가져오고, ModbusRTUOverTCPWriteSingleReg() 명령으로 제어 데이터를 통신을 통해 흡착컵에 기록하며, ModbusRTUOverTCPReadReg() 명령으로 흡착컵의 상태 데이터를 읽은 뒤 `setSuckerRealtimeState()`로 흡착컵 상태 데이터를 로봇에 피드백합니다. 위 여러 명령의 상세 정의는 다음과 같습니다.
표 8.12-1 getSuckerCtrlState() 반환값
번호 |
타입 |
변수명 |
설명 |
1 |
int |
setAllCtrl |
브로드캐스트 모드 제어 데이터: 1-최대 진공도로 픽업, 2-설정 진공도로 픽업(즉 흡착컵 진공도를 최대 진공도와 최소 진공도 사이에 유지), 3-픽업 정지 |
2 ~ 21 |
int |
ctrlValues[i] |
슬레이브 주소 1~20에 대응하는 흡착컵 제어 데이터: 1-최대 진공도로 픽업, 2-설정 진공도로 픽업(즉 흡착컵 진공도를 최대 진공도와 최소 진공도 사이에 유지), 3-픽업 정지 |
표 8.12-2 ModbusRTUOverTCPWriteSingleReg() 상세 파라미터
번호 |
타입 |
변수명 |
설명 |
1 |
int |
socket |
socket 핸들 |
2 |
int |
slaveID |
슬레이브 주소 0-20; 0-브로드캐스트; 1~20-슬레이브 주소 |
3 |
uint16_t |
regAddr |
쓰기 레지스터 주소 |
4 |
uint16_t |
data |
기록할 데이터 |
표 8.12-3 ModbusRTUOverTCPWriteMultiReg() 상세 파라미터
번호 |
타입 |
변수명 |
설명 |
1 |
int |
socket |
socket 핸들 |
2 |
int |
slaveID |
슬레이브 주소 0-20; 0-브로드캐스트; 1~20-슬레이브 주소 |
3 |
uint16_t |
regStartAddr |
다중 레지스터 쓰기 시작 주소 |
4 |
int |
num |
쓸 레지스터 수 |
5 |
uint16_t[] |
data |
기록할 데이터 내용 배열 |
표 8.12-4 ModbusRTUOverTCPReadReg() 상세 파라미터
번호 |
타입 |
변수명 |
설명 |
1 |
int |
socket |
socket 핸들 |
2 |
int |
slaveID |
슬레이브 주소 0-20; 0-브로드캐스트; 1~20-슬레이브 주소 |
3 |
uint16_t |
regStartAddr |
다중 레지스터 읽기 시작 주소 |
4 |
int |
num |
읽을 레지스터 수 |
표 8.12-5 ModbusRTUOverTCPReadReg() 반환값
번호 |
타입 |
변수명 |
설명 |
1 |
int |
suckState |
흡착컵 현재 상태: 0-물체 릴리즈 또는 흡착컵 기동 성공, 1-워크 검출 및 물체 흡착, 2-물체 흡착 실패, 3-물체 이탈 |
2 |
float |
pressValue |
현재 진공도/압력 |
3 |
int |
err |
오류 코드: 0-정상, 그 외-이상 |
표 8.12-6 setSuckerRealtimeState() 상세 파라미터
번호 |
타입 |
변수명 |
설명 |
1 |
int |
slaveID |
슬레이브 ID |
2 |
int[] |
states |
|
8.12.2.3. 브로드캐스트 모드
협동 로봇은 브로드캐스트 모드를 통해 연결된 모든 흡착컵의 동작을 동시에 제어할 수 있습니다.
참고
주의: 브로드캐스트 모드를 설정하려면 먼저 유니캐스트 모드 설정을 완료해야 합니다.
WebApp을 열고 초기 설정 -> 주변기기 -> 배열식 흡착컵 순서로 클릭한 뒤, 먼저 유니캐스트 모드에서 필요한 모든 흡착컵 슬레이브 설정을 완료합니다. (설정만 수행하며 통신 프로토콜 연결은 아직 설정하지 않음)
브로드캐스트 모드`를 클릭하고 `파라미터 설정`에서 흡착컵의 `최대 진공도, 최소 진공도, 파지 타임아웃 시간`(타임아웃 시간은 미개방)을 입력한 뒤 `설정 버튼을 클릭합니다. 그러면 장치 조작 및 상태 박스에 브로드캐스트 모드 통신 프로토콜이 표시됩니다. 브로드캐스트 모드에서는 진공도 파라미터 설정이 연결된 각 흡착컵에 모두 적용됩니다.
그림 8.12-8 브로드캐스트 모드 파라미터 설정
프로토콜 번호 1 조작 박스에서 연결 버튼을 클릭하고 실행 상태 표시등이 켜지면 로봇과 배열식 흡착컵 사이의 통신이 설정되었다는 뜻입니다. 연결이 성공하면 연결된 모든 흡착컵의 조작 박스 목록이 장치 조작 및 상태 항목에 표시됩니다.
파라미터 설정 -> 원키 흡입`에서 `시작`을 클릭하면 배열식 흡착컵 안의 각 흡착컵이 `설정 진공도 흡입 동작을 수행하고, `정지`를 클릭하면 배열 안의 각 흡착컵이 흡입 동작을 멈춥니다.
그림 8.12-9 브로드캐스트 모드 통신 설정
브로드캐스트 모드에서의 프로토콜 파일 다운로드 작업은 유니캐스트 모드와 동일합니다. 두 모드에서 다운로드한 프로토콜 파일은 유니캐스트 모드 페이지의 `자동 설정`을 통해 로봇에 업로드할 수 있습니다.
8.12.3. 배열식 흡착컵 LUA 프로그램 응용
로봇의 LUA 프로그램에 흡착컵 제어, 상태 취득 등의 명령을 추가하고 로봇 운동 명령과 연동하면 소재 픽업 및 이송 응용을 유연하고 편리하게 구현할 수 있습니다.
WebApp을 열고 티칭 프로그램 -> 프로그램 편집 순서로 클릭한 뒤 새 LUA 프로그램 `testSucker.lua`를 생성합니다.
그림 8.12-10 새 testSucker.lua 프로그램 생성
명령 타입을 주변기기 명령`으로 선택하고, 주변기기 명령에서 `흡착컵 버튼을 클릭합니다. 그러면 WebApp 오른쪽에 Sucker 배열식 흡착컵 명령 추가 페이지가 표시됩니다.
그림 8.12-11 배열식 흡착컵 명령 추가
8.12.3.1. 흡착컵 제어 명령 추가
LUA 프로그램에서 흡착컵 제어 명령을 작성하면 흡착컵의 흡입 제어와 릴리즈 제어를 수행할 수 있습니다. 유니캐스트 모드와 브로드캐스트 모드에서는 제어 로직이 다릅니다.
8.12.3.1.1. 유니캐스트 모드 제어 명령 추가
유니캐스트 모드 제어에서는 슬레이브 시작 주소와 수량을 기준으로 단일 또는 여러 흡착컵을 제어할 수 있으며, 각 흡착컵에 서로 다른 제어 상태를 설정할 수 있습니다.
흡착컵 명령 추가 페이지에서 흡착컵 제어 명령`을 클릭하고, 제어 모드는 `유니캐스트 모드, 슬레이브 번호는 1, 쓰기 수량은 2, 흡입 상태는 1,2`로 입력합니다. `추가 버튼을 클릭하면 `프로그램 미리보기`에 유니캐스트 모드 흡착컵 제어 명령이 1개 추가됩니다.
그림 8.12-12 흡착컵 제어 명령 추가
흡착컵 제어 명령의 각 파라미터 의미는 다음과 같습니다.
슬레이브 번호: 유니캐스트 모드에서 제어할 흡착컵의 시작 슬레이브 번호
쓰기 수량: 유니캐스트 모드에서 시작 슬레이브 번호부터 제어할 흡착컵의 수량
흡입 상태: 유니캐스트 모드에서 시작 슬레이브 번호부터 각 흡착컵의 제어 상태 플래그를 의미합니다. `1`은 최대 진공도로 흡입, `2`는 설정 진공도로 흡입(즉 흡착컵 진공도를 최대 진공도와 최소 진공도 사이에 유지), `3`은 흡입 정지입니다. 각 흡착컵 제어 상태 플래그는 `,`로 구분하며, 제어 플래그 개수는 제어할 흡착컵 수와 일치해야 합니다. 예를 들어 두 개의 흡착컵을 제어하고 각 제어 동작을 `최대 진공도 흡입`과 `설정 진공도 흡입`으로 하려면 이 항목 입력값은 `1,2`가 됩니다.
적용 버튼을 클릭하면 testSucker.lua 프로그램에 흡착컵 제어 명령이 1개 추가됩니다. 로봇을 자동 모드로 전환하고 이 LUA 프로그램을 실행하면, 로봇은 슬레이브 번호가 각각 1과 2인 두 개의 흡착컵을 최대 진공도와 설정 진공도로 각각 흡입 동작하도록 제어합니다.
그림 8.12-13 LUA 프로그램에 흡착컵 명령 추가
8.12.3.1.2. 브로드캐스트 모드 제어 명령 추가
브로드캐스트 모드 제어 명령에서 설정하는 흡입 상태는 현재 연결된 모든 흡착컵에 적용됩니다.
흡착컵 제어 명령`을 클릭하고, 제어 모드는 `브로드캐스트 모드, 흡입 상태는 1`(최대 진공도로 흡입)로 입력한 뒤 `추가 버튼을 클릭합니다.
그림 8.12-14 브로드캐스트 제어 명령 추가
적용 버튼을 클릭하면 `testSucker.lua`에 브로드캐스트 모드 흡착컵 제어 명령이 1개 추가됩니다. 로봇을 자동 모드로 전환하고 이 프로그램을 실행하면 연결된 모든 흡착컵이 최대 진공도로 흡입 동작을 시작합니다.
그림 8.12-15 LUA 프로그램에 브로드캐스트 제어 명령 추가
8.12.3.2. 흡착컵 상태 취득 명령 추가
흡착컵 상태 취득`을 클릭하고 상태를 가져올 흡착컵의 슬레이브 번호를 선택한 뒤 `추가, 적용 버튼을 순서대로 클릭합니다. 그러면 `testSucker.lua`에 흡착컵 상태 취득 명령 `GetSuckerState(1)`이 1개 추가됩니다.
그림 8.12-16 흡착컵 상태 취득 명령 추가
GetSuckerState() 명령은 3개의 값을 반환합니다. 각각은 다음과 같습니다.
state: 흡착컵 현재 상태. 0-물체 릴리즈 또는 흡착컵 기동 성공, 1-워크 검출 및 물체 흡착, 2-물체 흡착 실패, 3-물체 이탈
pressValue: 현재 진공도/압력
err: 오류 코드. 0-정상, 그 외-이상
testSucker.lua`에서 3개의 변수를 사용해 `GetSuckerState() 함수의 반환값을 받아오고, Lua 변수 조회를 통해 위 정보를 WebApp의 변수 조회 표시 영역에 표시합니다.
그림 8.12-17 흡착컵 상태 취득 프로그램
8.12.3.3. 흡착컵 흡착 상태 대기 명령 추가
배열식 흡착컵의 실제 응용에서는 흡착컵의 흡입(릴리즈) 완료를 기다린 뒤 다음 동작을 수행해야 하는 경우가 많습니다. 협동 로봇은 흡착컵 동작 완료 대기 명령을 제공하며, 흡착컵이 설정 상태에 도달하면 명령 실행이 종료되고, 그렇지 않으면 설정된 타임아웃 시간 안에서 흡착컵 동작이 완료될 때까지 블로킹 대기합니다.
배열식 흡착컵 명령 추가 페이지에서 흡착컵 흡착 상태 대기`를 클릭하고, 해당 흡착컵의 슬레이브 번호 `1`을 선택한 뒤 제어 모드는 `워크를 검출하여 물체를 흡착`으로, 타임아웃 시간은 `10000ms`로 입력합니다. 이후 `추가 버튼을 클릭합니다.
그림 8.12-18 흡착컵 상태 대기 명령 추가
적용 버튼을 클릭하면 `testSucker.lua`에 물체를 흡착할 때까지 대기하는 흡착컵 명령이 1개 추가됩니다.
그림 8.12-19 LUA 프로그램에 물체 흡착 대기 명령 추가
8.12.3.4. 응용 예시
흡착컵 이송 제어 LUA 프로그램 예시:
1while (1) do
2::satety_suck::
3PTP(sucker_safey,100,-1,0)
4PTP(sucker_suck,100,-1,0)
5SetSuckerCtrl(2, 1, {2})
6SetSuckerCtrl(11, 1, {2})
7loop1 = 0
8while (loop1 < 10) do
9 state, press, errorcode = GetSuckerState(2)
10 RegisterVar("number","state")
11 RegisterVar("number","press")
12 RegisterVar("number","errorcode")
13 state11, press11, errorcode11 = GetSuckerState(11)
14 RegisterVar("number","state11")
15 RegisterVar("number","press11")
16 RegisterVar("number","errorcode11")
17 loop1 = loop1 + 1
18 WaitMs(50)
19end
20
21if(state11 == 1) then
22 PTP(sucker_safey,100,-1,0)
23 PTP(sucker_release,100,-1,0)
24 WaitMs(1000)
25 SetSuckerCtrl(2, 1, {3})
26 SetSuckerCtrl(11, 1, {3})
27 WaitMs(500)
28else
29 PTP(sucker_safey,100,-1,0)
30 SetSuckerCtrl(2, 1, {3})
31 SetSuckerCtrl(11, 1, {3})
32 WaitMs(2000)
33 goto satety_suck
34end
35::satety_release::
36PTP(sucker_safey,100,-1,0)
37PTP(sucker_release,100,-1,0)
38SetSuckerCtrl(2, 1, {2})
39SetSuckerCtrl(11, 1, {2})
40loop1 = 0
41while (loop1 < 10) do
42 state, press, errorcode = GetSuckerState(2)
43 RegisterVar("number","state")
44 RegisterVar("number","press")
45 RegisterVar("number","errorcode")
46 state11, press11, errorcode11 = GetSuckerState(11)
47 RegisterVar("number","state11")
48 RegisterVar("number","press11")
49 RegisterVar("number","errorcode11")
50 loop1 = loop1 + 1
51 WaitMs(50)
52end
53
54if(state11 == 1) then
55 PTP(sucker_safey,100,-1,0)
56 PTP(sucker_suck,100,-1,0)
57 WaitMs(1000)
58 SetSuckerCtrl(2, 1, {3})
59 SetSuckerCtrl(11, 1, {3})
60 WaitMs(500)
61else
62 PTP(sucker_safey,100,-1,0)
63 SetSuckerCtrl(2, 1, {3})
64 SetSuckerCtrl(11, 1, {3})
65 WaitMs(2000)
66 goto satety_release
67end
68end
8.13. FOCAS 기반 CNC 기능 패키지(Linux 시스템에서만 사용)
8.13.1. 개요
기계 가공에서 자동화된 소재 로딩/언로딩 공정을 구현하기 위해 FOCAS 통신 기반 CNC 기능 패키지를 개발했습니다. 이를 통해 협동 로봇과 CNC 공작기계 사이의 통신 인터랙션과 협조 운동이 가능해집니다.
그림과 같이 FOCAS 통신은 이더넷 기반입니다. 로봇 제어 박스의 네트워크 포트와 공작기계 내장 네트워크 포트를 LAN 케이블로 연결하기만 하면 로봇과 공작기계 간 FOCAS 통신이 설정되어, 로봇 측에서 CNC 제어와 공작기계 상태 감시를 수행할 수 있습니다.
그림 8.13‑1 로봇과 CNC의 FOCAS 통신 토폴로지
현재 제어 박스의 FOCAS 통신 기반 CNC 기능 패키지가 지원하는 공작기계 제어 및 상태 피드백 기능은 아래 표와 같습니다.
표 8.13-1 FOCAS 통신 기반 CNC 기능 패키지 지원 기능표
번호 |
기능명 |
설명 |
1 |
공작기계 타입 |
상태 피드백 |
2 |
FOCAS 통신 상태 |
상태 피드백 |
3 |
자동 모드 실행 |
제어, 상태 피드백 |
4 |
알람 상태 |
상태 피드백 |
5 |
안전 도어 |
상태 피드백 |
6 |
척 |
제어, 상태 피드백 |
7 |
비상정지 |
제어, 상태 피드백 |
8.13.2. 관련 조작 설명
8.13.2.1. FOCAS 통신 설정
FOCAS 통신은 이더넷 기반이므로 로봇, CNC 공작기계, PC 단말을 LAN으로 연결해 물리 회선을 구성하고, 로봇의 오픈 프로토콜을 통해 최종적으로 FOCAS 통신을 설정해야 합니다.
8.13.2.1.1. 네트워크 설정
Step1: 먼저 PC 단말의 IP 주소를 로봇 제어 박스와 같은 서브넷으로 변경합니다. 로봇 제어 박스의 IP 주소는 `192.168.58.2`입니다.
스위치를 사용하지 않고 네트워크를 구성하는 경우 로봇 제어 박스에 내장된 2개의 네트워크 포트를 사용해 네트워크를 구성할 수 있습니다. 절차는 다음과 같습니다. 로봇 WebAPP에 로그인한 뒤 시스템 설정 -> 일반 설정 -> 네트워크 설정`에서 네트워크 포트 0의 IP를 `192.168.58.2, 네트워크 포트 1의 IP를 `192.168.57.2`로 설정합니다. 동시에 WebAPP은 네트워크 포트 0, WebRecovery는 네트워크 포트 1로 설정합니다. 모든 설정이 끝나면 `네트워크 설정`을 클릭합니다.
그림 8.13‑2 로봇 네트워크 설정도
Step2: 이어서 제어 박스를 재시작하고 네트워크 카드 0의 포트를 PC 단말에 연결한 뒤 로봇 WebApp에 로그인합니다. 동시에 통신이 필요한 CNC 공작기계의 IP 주소를 PC 단말 및 로봇 제어 박스와 동일한 서브넷인 `192.168.58.xx`로 설정하고, 공작기계 포트는 `8193`으로 변경합니다. 이로써 모든 네트워크 설정이 완료됩니다.
8.13.2.1.2. 오픈 프로토콜 파일 설정
Step1: 이어서 주변기기 오픈 프로토콜을 설정합니다. 먼저 FOCAS 통신 연결용 오픈 프로토콜 파일로, CtrlDev_CNC``로 시작하는 이름의 lua 파일을 새로 만들어야 합니다. 예: ``CtrlDev_CNC_demo.lua.
이 파일에서 오픈 프로토콜 ID를 설정하고, CNCComSet 함수를 통해 CNC와의 연결 또는 연결 해제를 수행합니다. CNCComSet 함수의 파라미터 설명은 아래 표를 참조하세요. 예제 코드는 다음과 같습니다.
표 8.13-2 CNCComSet 함수 파라미터 설명
번호 |
기능명 |
설명 |
1 |
공작기계 제조사 |
0-무효 1-공작기계(FOCAS) |
2 |
통신 명령 |
1-연결 1001-연결 해제 |
3 |
공작기계 IP 주소 |
– |
4 |
공작기계 포트 번호 |
– |
FOCAS 통신 연결용 오픈 프로토콜 예제 코드:
1local id = 1 --오픈 LUA 프로토콜 ID
2--FOCAS 연결 해제
3CNCComSet(1, 1001, '192.168.57.100', 8193)
4sleep_ms(1000)
5--FOCAS 연결
6CNCComSet(1, 1, '192.168.57.100', 8193)
7sleep_ms(1000)
8while(1) do
9sleep_ms(5000)
10end
Step2: 오픈 프로토콜 lua 파일 작성을 마친 뒤, 앞에서 만든 CtrlDev_CNC_fanuc.lua 파일을 선택해 업로드합니다. 그다음 파일에서 설정한 ID를 선택하고, 드롭다운에서 업로드한 오픈 프로토콜 파일을 고른 뒤 ``설정``을 클릭합니다.
그림 8.13-3 오픈 프로토콜 파일 업로드와 설정
Step3: 모든 통신 배선이 정상인지 확인하고, CNC 공작기계가 기동 상태인지 확인한 뒤 오픈 프로토콜의 연결 버튼을 클릭합니다. 오른쪽 상태 피드백 영역의 ``CNC->FOCAS 통신 상태``에서 공작기계와의 연결 여부를 확인할 수 있습니다(빨간색: 연결됨, 회색: 연결 해제). 아래 그림과 같습니다.
그림 8.13-4 FOCAS 통신 연결
8.13.2.2. CNC 상태 피드백 설명
CNC 공작기계의 상태 피드백은 WebApp 우측 끝의 주변기기 상태 피드백 영역에 있는 CNC 아이콘에 표시됩니다. 그림과 같이 아이콘을 클릭하면 현재 공작기계의 모든 상태를 볼 수 있습니다. 여기에는 장치 제조사, 공작기계 타입, FOCAS 통신 상태, 알람 플래그, 공작기계 가공 실행 상태, 공작기계 도어 개폐 상태, 공작기계 척 상태, 공작기계 비상정지 상태가 포함됩니다.
그림 8.13-5 CNC 상태 피드백 영역
CNC 각 상태 표시등의 의미는 아래 표와 같습니다.
표 8.13-3 CNC 상태 피드백 아이콘 표시등 의미
번호 |
기능명 |
설명 |
1 |
FOCAS 통신 상태 |
회색-통신 끊김 빨간색-통신 정상 |
2 |
알람 플래그 |
회색-경고 없음 빨간색-경고 있음 |
3 |
공작기계 가공 실행 상태 |
회색-정지 녹색-실행 중 |
4 |
공작기계 도어 개폐 상태 |
회색-도어 닫힘 녹색-도어 열림 |
5 |
공작기계 척 상태 |
회색-해제 녹색-체결 |
6 |
공작기계 비상정지 상태 |
회색-비상정지 비활성 녹색-비상정지 활성 |
8.13.2.3. CNC 제어 설명
CNC 공작기계 제어는 주변기기 오픈 프로토콜 안에서 수행합니다. FOCAS 통신 연결이 완료된 뒤, 설정한 주변기기 오픈 프로토콜 우측 상단을 클릭하면 CNC 제어 페이지가 열립니다. 아래 그림과 같습니다.
참고
제어 버튼에는 도어 제어(열기, 닫기), 척 제어(체결, 해제), 기동/정지 제어(실행, 정지), 비상정지 제어(비상정지, 해제)가 포함됩니다. 모든 제어 신호는 에지 신호 트리거 방식입니다.
그림 8.13-6 CNC 제어 페이지
8.13.2.4. CNC 티칭 프로그램 설명
CNC 기능 패키지는 티칭 프로그램에서 제어 명령 호출과 공작기계 상태의 실시간 조회를 지원합니다. 티칭 프로그램 -> 프로그램 편집 -> 주변기기 명령 -> CNC 순으로 열면 지원되는 모든 CNC 티칭 명령을 확인할 수 있습니다. 아래 그림과 같습니다.
그림 8.13-7 CNC 티칭 명령
참고
제어 명령은 CNC 제어와 일대일로 대응하며, 모두 에지 신호로 동작합니다. 즉, 시작 명령을 실행한 뒤에는 반드시 정지 명령을 실행해야 다음 시작 명령이 유효합니다.
``공작기계 현재 상태 가져오기``는 lua 함수입니다. 이 함수는 9개의 값을 반환하며 의미는 아래 표와 같습니다.
표 8.13-4 공작기계 현재 상태 가져오기 반환값 설명
번호 |
명칭 |
의미 |
1 |
장치 제조사 |
0-무효 1-기타-예약 |
2 |
FOCAS 통신 상태 |
0-통신 정상 기타-통신 끊김 |
3 |
공작기계 모델(string) |
‘15’ : Series 150/150i ‘16’ : Series 160/160i ‘18’ : Series 180/180i ‘21’ : Series 210/210i ‘30’ : Series 300i ‘31’ : Series 310i ‘32’ : Series 320i ‘0’ : Series 0i |
4 |
공작기계 타입(string) |
‘15’ : Series 150/150i ‘16’ : Series 160/160i ‘18’ : Series 180/180i ‘21’ : Series 210/210i ‘30’ : Series 300i ‘31’ : Series 310i ‘32’ : Series 320i ‘0’ : Series 0i |
5 |
공작기계 실행 상태 |
0-정지 1-실행 |
6 |
공작기계 비상정지 상태 |
0-비상정지 활성 기타-비상정지 비활성 |
7 |
공작기계 경고 상태 |
0-경고 없음 기타-경고 있음 |
8 |
공작기계 도어 상태 |
0-도어 열림 1-도어 닫힘 |
9 |
공작기계 척 상태 |
0-해제 1-체결 |
로봇의 소재 투입/배출(로딩/언로딩) 공정을 예로 들어 lua 티칭 프로그램 예제를 작성했습니다. 이 예제에는 CNC 도어 닫기/열기, 실행/정지, 척 해제/체결 제어가 포함되어 있으며, CNC의 현재 상태를 읽어 판단 조건으로 사용하고 로봇이 안전점, 취출점, 적치점 3개 위치로 이동하도록 설정했습니다. 코드는 아래와 같습니다.
로봇과 CNC 협조 동작용 티칭 lua 프로그램 예제:
1 while (1) do
2 CNCDoorClose()
3 CNCWorkStart()
4 WaitMs(1000)
5 t1,t2,t3,t4,t5,t6,t7,t8,t9=CNCGetStatus()
6 if t5 == 1 then
7 PTP(CNCsafe,100,-1,0)
8 else
9 CNCWorkStop()
10 CNCDoorOpen()
11 WaitMs(1000)
12 PTP(CNCg1,100,-1,0)
13 WaitMs(1000)
14 CNCChuckOpen()
15 PTP(CNCg2,100,-1,0)
16 PTP(CNCsafe,100,-1,0)
17 end
18 t1,t2,t3,t4,t5,t6,t7,t8,t9=CNCGetStatus()
19 if t8 == 0 then
20 if t5 == 0 then
21 PTP(CNCg2,100,-1,0)
22 PTP(CNCg1,100,-1,0)
23 CNCChuckFastening()
24 WaitMs(1000)
25 PTP(CNCsafe,100,-1,0)
26 end
27 end
28end
8.14. 힘 센서 기반 가상벽 설정
힘 센서 기반 가상벽 기능은 사용자가 가상벽을 설정해 로봇의 작업 공간을 제한하고, 직접적인 충돌 접촉을 피할 수 있게 합니다.
8.14.1. 힘 센서 장착 설정
Step1: 坤維 센서를 예로 들면, 장착 시 힘 센서의 좌표계 방향이 엔드 플랜지 좌표계와 일치해야 합니다. 그림 1과 같으며, 그림에서 빨간색은 엔드 플랜지 좌표계 X+ 방향, 녹색은 Y+ 방향, 파란색은 Z+ 방향입니다.
그림 8.14-1 힘 센서 장착
Step2: 초기 설정 -> 주변기기 -> 힘 센서 메뉴에서 `호환 장치`를 클릭해 힘 센서 장치 설정 화면으로 들어갑니다.
힘 센서 설정 정보는 제조사, 타입, 소프트웨어 버전, 장착 위치로 나뉩니다. 사용자는 실제 생산 요구에 맞춰 해당 힘 센서 정보를 설정할 수 있습니다. 설정을 변경해야 할 경우에는 먼저 해당 번호를 선택하고 클리어 버튼을 눌러 정보를 지운 뒤 필요에 따라 다시 설정합니다. 자세한 조작은 그림과 같습니다.
Step3: 설정이 끝난 힘 센서 번호를 선택하고 리셋 버튼을 클릭합니다. 명령 전송 성공 팝업이 뜨면 활성화 버튼을 클릭합니다. 힘 센서 정보 표의 활성화 상태를 확인해 성공 여부를 판단할 수 있습니다. 또한 힘 센서에는 초기값이 있으므로 사용 목적에 따라 제로점 교정 또는 `제로점 제거`를 선택합니다. 제로점 교정 시에는 힘 센서가 수직 아래 방향을 향하고 있으며, 로봇에 부하가 설정되지 않았는지 확인해야 합니다.
그림 8.14-2 힘 센서 설정과 활성화
그림 8.14-3 힘 센서 활성화
8.14.2. 가상벽 설정
힘 센서를 이용한 보조 드래그를 사용하려면 힘 센서 아래에 드래그 핸들을 장착하고 툴 좌표계를 설정해야 합니다. 자세한 조작은 그림 4와 같습니다. 이때 간섭 영역 검출은 설정한 툴 좌표계 위치를 기준으로 하며, 툴 좌표계를 설정하지 않으면 엔드 플랜지를 기준으로 합니다.
Step1: 초기 설정 -> 안전 -> 간섭 영역 메뉴에서 `단일`을 클릭해 간섭 영역 설정 화면으로 들어갑니다.
Step2: 간섭 방식과 간섭 영역 진입 시 동작을 설정해야 합니다. `직육면체 간섭`을 클릭해 설정 화면으로 들어가고, 간섭 영역 진입 드래그 설정은 `드래그 제한 없음`으로, 간섭 영역 진입 시 운동 설정은 어느 쪽이든 사용할 수 있습니다.
Step3: 필요에 따라 파라미터를 변경할 수 있습니다. 검출 방식은 명령 위치`와 `피드백 위치 두 가지가 있고, 간섭 영역 모드는 범위 내 간섭`과 `범위 외 간섭 두 가지가 있습니다. 기준 좌표계는 `베이스 좌표`를 선택해 실제 사용에 맞게 설정합니다. 자세한 조작은 그림을 참조하세요.
그림 8.14-4 드래그 핸들 장착과 툴 좌표계 설정
그림 8.14-5 가상벽 파라미터 설정
Step4: 파라미터 설정의 간섭 영역 모드는 범위 내 간섭`과 `범위 외 간섭 두 가지로 나뉩니다.
그림 8.14-6 범위 내 간섭
그림 8.14-7 범위 외 간섭
Step5: 간섭 영역을 생성합니다. 자세한 조작은 그림 7, 그림 8과 같습니다. `범위 외 간섭`을 선택하는 경우에는 간섭 영역을 가능한 한 크게 설정하는 것을 권장합니다.
그림 8.14-8 2점법에 의한 간섭 영역 생성
그림 8.14-9 중심점+변 길이 방식의 간섭 영역 생성
8.14.3. 힘 센서 보조 드래그
Step1: 보조 응용 -> 툴 응용 메뉴에서 `드래그 잠금`을 클릭해 힘 센서 보조 잠금 기능 화면으로 들어갑니다.
Step2: 그림과 같이 파라미터를 설정하면 힘 센서 기반 가상벽 기능을 구현할 수 있습니다. 동작 효과는 다음과 같습니다. 가상벽에 가까워질수록 저항이 커지고, 가상벽에서 멀어질수록 힘 센서 보조 드래그 기능이 정상적으로 작동합니다.
그림 8.14-10 힘 센서 보조 드래그 파라미터 설정
파라미터의 구체적인 역할:
적응 선택: 조립 시 활성화해야 하며, 활성화하면 드래그가 무거워집니다.
관성 파라미터: 드래그 과정의 조작 감각을 조정합니다. 기술자의 지도하에 신중하게 조정해야 합니다.
댐퍼 파라미터:
병진 방향: 파라미터는 [100-200] 범위로 설정하는 것을 권장합니다.
회전 방향: 파라미터는 [3-10] 범위로 설정하는 것을 권장합니다. 단, RZ 방향의 설정 범위는 `[0.1-5]`입니다.
효과: 센서를 사용한 드래그에서 댐퍼를 크게 하면 끌기 어려워지고, 너무 작게 하면 로봇 드래그가 지나치게 가벼워집니다. 너무 작게 설정하지 않는 것을 권장합니다.
댐퍼 파라미터 전체 범위: 병진 XYZ [100-1000], 회전 RX/RY [3-50], RZ [2-10]
최대 드래그 힘은 50, 최대 드래그 속도는 `180`입니다.
강성 파라미터: 모두 `0`으로 설정합니다.
드래그 힘 임계값: 병진 XYZ는 [5-10], 회전 RX/RY/RZ는 [0.5-5]
최대 드래그 힘: 50
최대 드래그 속도: 180
8.14.4. 6축 힘 + 관절 임피던스 혼합 드래그 기능
8.14.4.1. 개요
6축 힘 + 관절 임피던스 혼합 드래그 기능은 힘 센서로 외력을 감지하고, 로봇이 드래그 모드에서 보조 드래그를 수행하도록 합니다. 게인 계수를 조정해 서로 다른 드래그 감각을 얻을 수 있으며, 관절 임피던스는 임피던스 제어로 드래그 힘을 제한합니다.
8.14.4.2. 힘 센서 장착 설정 및 제로점 조정
힘 센서 장착 설정
힘 센서 장착 설정의 자세한 조작은 앞의 `힘 센서 기반 가상벽 설정`을 참조하세요.
힘 센서 제로점 조정
로봇을 쉽게 드래그할 수 있도록 센서 아래에 드래그 핸들을 장착해야 합니다. 그림 1과 같습니다.
그림 8.14-11 드래그 핸들
Step1: 실제 핸들 길이에 맞춰 툴 좌표계를 설정합니다. 그림 2와 같습니다.
Step2: 초기 설정 -> 기본 -> 부하 메뉴에서 `센서`를 클릭해 힘/토크 센서 부하 화면으로 들어갑니다.
드래그 버튼을 사용해 로봇 말단이 수평 아래 방향이 되도록 조정한 뒤, 부하 -> 센서 식별 순으로 들어가 센서 자동 제로점 조정 영역의 초기 위치 기록 버튼을 찾습니다. 이후 로봇 모드를 자동 모드로 전환하고 자동 제로점 조정 버튼을 클릭합니다. 프로그램 실행이 끝날 때까지 기다리면 센서 제로점 조정이 완료됩니다. 자세한 조작은 그림을 참조하세요.
그림 8.14-12 툴 좌표계 설정
그림 8.14-13 힘/토크 센서 자동 제로점 조정
8.14.4.3. 6축 힘 + 관절 임피던스 혼합 드래그
보조 드래그
Step1: 보조 응용 -> 툴 응용 메뉴에서 `드래그 잠금`을 클릭해 드래그 잠금 기능 화면으로 들어갑니다.
Step2: 6축 힘 + 관절 임피던스 혼합 드래그 항목에서 제어 상태를 ON, 임피던스 활성 상태를 OFF`로 설정하고, 드래그 게인을 설정한 뒤 말단 선속도 `1000mm/s, 각속도 제한 100°/s`로 설정합니다. 이후 `적용 버튼을 누르면 기능이 활성화됩니다. 자세한 설정은 그림 4와 같습니다.
Step3: 로봇 모드를 드래그 모드로 전환하면 로봇을 직접 끌 수 있습니다. 동작 효과는 다음과 같습니다. 로봇 말단을 끌면 가볍고 조작감이 좋으며, 로봇 관절을 끌면 상대적으로 무겁게 느껴집니다.
그림 8.14-14 6축 힘 보조 드래그 설정 파라미터
관절 임피던스 제어
임피던스 제어의 역할은 드래그 힘과 드래그 위치를 제한하는 것입니다. 기본 상태는 `OFF`입니다.
자세한 조작은 그림 5와 같습니다. 임피던스 활성 상태를 `ON`으로 설정하고, 그림 5와 같이 감쇠 계수와 강성 계수를 설정합니다. 단, 강성 계수 기능은 아직 개방되지 않았습니다.
그림 8.14-15 관절 임피던스 설정 파라미터
파라미터의 구체적인 역할:
제어 상태: ON으로 설정하면 드래그 모드에서 이 기능을 사용할 수 있습니다.
임피던스 활성: ON으로 설정하면 강성 파라미터와 감쇠 파라미터를 설정해야 하며, 드래그 힘과 드래그 위치를 제한하는 역할을 합니다.
드래그 게인: 파라미터는 [0-5] 범위로 설정하는 것을 권장합니다. 값이 `0`이면 로봇을 드래그할 수 없고, `1`이면 개선 효과가 거의 없습니다. `1`보다 크면 드래그가 가벼워지고 체감이 좋아지며, 값이 클수록 더 쉽게 끌 수 있습니다.
강성 게인: `0`으로 설정하면 드래그 후 드래그 전의 초기 위치로 복귀하는 역할을 합니다.
감쇠 게인: 드래그 힘을 제한하는 역할을 합니다. 1-3축 파라미터 범위는 [0-0.5], 4-5축은 [0-0.1], 6축은 `[0-0.05]`입니다.
말단 선속도: 1000mm/s. 이 제한을 초과하면 로봇이 수동 모드로 전환되고 TCP 과속 메시지가 표시됩니다.
각속도 제한: 100°/s. 이 제한을 초과하면 로봇이 수동 모드로 전환되고 TCP 과속 메시지가 표시됩니다.
8.15. 확장축 레이저 정점 트래킹 기능
8.15.1. 로봇 확장축 레이저 정점 트래킹 시스템 구성
그림 8.15-1 로봇 확장축 레이저 정점 트래킹 시스템 구성
시스템에서 (a)는 컴퓨터, (b)는 로봇 및 제어 박스, (c)는 포지셔너 및 구동 장치, (d)는 용접 심 트래킹 레이저 센서, (e)는 용접기 및 관련 장치입니다.
그림 8.15-2 주변기기 장착 개략도
용접 심 트래킹 레이저 센서와 토치 (b)는 로봇 (a)의 엔드 플랜지에 장착되며, 포지셔너 (c)는 로봇 외부에 고정 설치됩니다.
8.15.2. 확장축 통신 설정
로봇과 확장축의 통신 방식은 UDP 또는 RS485 두 가지를 사용할 수 있습니다.
그림 8.15-3 확장축 설정 페이지
로봇 조작 화면에서 초기 설정 -> 주변기기 -> 확장축 버튼을 클릭해 확장축 설정 페이지로 들어갑니다. PLC가 UDP 통신으로 로봇에 연결되는 경우를 예로 들어 UDP 통신 아이콘을 클릭해 UDP 통신 확장축 설정 페이지로 들어갑니다.
그림 8.15-4 UDP 통신 설정 화면
UDP 통신 확장축 설정 페이지에서는 해당 확장축 번호를 선택하고, UDP 통신 파라미터(주소, 포트, 주기, 패킷 손실 검출 등)와 확장축 위치결정 완료 시간을 연결 및 설정할 수 있습니다.
확장축 설정 내용은 이 기능 소개의 핵심이 아니므로, 자세한 설정은 해당 사용자 매뉴얼을 참조하세요.
8.15.3. 용접 심 트래킹 레이저 센서 연결 설정
아래 설정 페이지에서 용접 심 트래킹 레이저 센서를 연결합니다:
그림 8.15-5 레이저 센서 연결 및 설정 페이지
초기 설정 -> 주변기기 -> 선 레이저 센서`의 `호환 장치`를 클릭해 설정 페이지로 들어갑니다. 설정 페이지에는 `센서 설정, 통신 설정 및 로드, `기준 계산`이 포함되어 있으며, `센서 설정`을 클릭하면 센서 입력 필터 파라미터를 설정할 수 있고, `통신 설정 및 로드`를 클릭하면 해당 통신 파라미터를 입력해 레이저 센서를 연결할 수 있습니다.
레이저 센서 설정 내용은 이 기능 소개의 핵심이 아니므로, 자세한 설정은 해당 사용자 매뉴얼을 참조하세요.
8.15.4. 용접기 연결 설정
아래 설정 페이지에서 용접기를 설정합니다:
그림 8.15-6 용접기 설정 페이지
용접기 통신은 IO 통신 또는 RS485 통신을 사용할 수 있습니다. 초기 설정 -> 주변기기 -> 용접기 순으로 클릭해 설정 및 연결 화면으로 들어갑니다. 여기서 제어 타입, 신호 대응 IO, 용접 프로세스 파라미터, 용접기 디버그 등의 모듈을 설정할 수 있습니다.
용접기 설정 내용은 이 기능 소개의 핵심이 아니므로, 자세한 설정은 해당 사용자 매뉴얼을 참조하세요.
8.15.5. 툴 좌표계와 레이저 센서 좌표계 교정
로봇 말단에 토치를 장착한 뒤, 토치와 레이저 센서의 외부 파라미터를 교정합니다:
그림 8.15-7 툴 좌표계 설정 페이지
초기 설정 -> 기본 -> 좌표계 -> 툴 순으로 클릭해 워크 좌표계 설정 페이지로 들어갑니다.
그림 8.15-8 6점법으로 토치 교정
비어 있는 좌표계를 선택하고 툴 타입을 `툴`로 선택한 뒤, 6점법으로 토치 툴을 교정합니다.
그림 8.15-9 5점법으로 레이저 센서 교정
비어 있는 좌표계를 선택하고 툴 타입을 `센서`로 선택한 뒤, 5점법으로 레이저 센서를 교정합니다.
툴 좌표계와 레이저 센서 좌표계 교정은 이 기능 소개의 핵심이 아니므로, 자세한 교정 방법은 해당 사용자 매뉴얼을 참조하세요.
8.15.6. 확장축과 레이저 정점 트래킹 기능
확장축과 레이저 정점 트래킹에는 두 가지 방식이 있습니다. 레이저 데이터 변환 방식 사용은 먼저 기록 후 재현 전략을 수행하고, 변환 방식 미사용은 기록하면서 재현 전략을 수행합니다.
8.15.6.1. 확장축 좌표계 교정
확장축 좌표계를 사용해 확장축과 로봇의 동기 레이저 트래킹을 구현하려면 확장축 좌표계 교정이 필요합니다.
그림 8.15-10 확장축 좌표계 설정 페이지
초기 설정 -> 주변기기 -> 확장축 순으로 클릭해 확장축 좌표계 설정 화면으로 들어갑니다. 설정이 필요한 확장축 번호를 선택하고 편집 버튼을 클릭한 뒤 `4-단자유도 포지셔너`를 선택해 저장합니다.
그림 8.15-11 확장축 교정 페이지
확장축 교정 시에는 `로봇 상대 확장축 위치`가 `확장축 외부`인지 확인해야 합니다. 포지셔너의 경우 4점법으로 교정합니다.
확장축 교정 내용은 이 기능 소개의 핵심이 아니므로, 자세한 교정 방법은 해당 사용자 매뉴얼을 참조하세요.
8.15.6.2. 확장축과 로봇 동기 레이저 트래킹
8.15.6.2.1. 레이저 데이터 변환 방식 사용
베이스 좌표계에서의 확장축-로봇 동기 레이저 트래킹은 외부축 교정이 필요하지 않지만, 그 외 기능 설정과 구성은 확장축 좌표계에서의 동기 트래킹과 동일합니다.
먼저 레이저 트래킹 데이터를 설정하고, 레이저 트래커 데이터를 변환 방식 사용 타입 데이터로 설정합니다.
그림 8.15-12 레이저 데이터 변환 방식 사용 타입 설정
초기 설정 -> 주변기기 -> 트래킹 -> 센서 순으로 클릭한 뒤, 페이지 드롭다운에서 `센서 설정`을 클릭하고 `데이터 처리`를 변환 방식 사용 타입 데이터로 조정합니다.
그림 8.15-13 레이저 트래킹 기능 페이지
이 기능은 여러 기능 모듈의 조합으로 구현되며, 주요 기능 모듈은 레이저 트래킹 기능 안에 포함됩니다. 티칭 프로그램 -> 프로그램 편집 -> 레이저 트래킹 순으로 클릭해 레이저 트래킹 페이지로 들어가거나, `레이저 기록`을 직접 클릭해 기록 페이지로 들어갑니다.
그림 8.15-14 레이저 데이터 기록 시작 명령 추가
확장축이 용접 시작점으로 이동한 뒤, 레이저 데이터 기록 시작 명령을 추가합니다.
그림 8.15-15 레이저 데이터 기록 정지 명령 추가
확장축이 용접 종료점으로 이동한 뒤, 레이저 데이터 기록 정지 명령을 추가합니다.
로봇이 제자리에서 확장축 운동 시의 용접 심 궤적 기록을 마치면, 확장축을 용접 시작점으로 되돌려 동기 트래킹 용접을 준비합니다.
용접 시작 시에는 토치를 레이저 센서가 데이터를 기록한 시작점 위치로 이동시켜야 하므로, 용접점 이동 명령을 추가합니다:
그림 8.15-16 용접점 이동 명령 추가
티칭 프로그램 -> 프로그램 편집 -> 레이저 기록 버튼을 클릭하고 용접점 이동`을 선택한 뒤, 운동 방식과 운동 속도를 설정하고 `시작점 버튼을 클릭해 적용합니다.
그림 8.15-17 레이저 기록 데이터 궤적 재현 명령 추가
레이저 트래킹 페이지에서 데이터 기록 -> 궤적 재현 명령을 선택하고 추가`를 클릭해 적용합니다. 이 명령에서 대기 시간 기본값은 `0ms`이며, 속도는 재현 속도와 기록 속도의 비율로 설정하고 `50% 이상을 권장합니다.
궤적 재현 명령 뒤에 확장축 운동 명령을 추가하면 확장축과 로봇 레이저 트래킹의 동기 운동을 구현할 수 있습니다.
아래는 전형적인 확장축 레이저 데이터 변환 방식 사용 정점 트래킹 LUA 프로그램입니다:
그림 8.15-18 확장축 레이저 데이터 변환 방식 사용 정점 트래킹 예제 프로그램
로봇은 먼저 기록 후 재현 프로세스를 수행합니다. 먼저 확장축 운동 시 워크 용접 심의 변화 궤적을 기록하고, 이후 용접 시 확장축과 궤적 재현을 동기 실행합니다.
8.15.6.2.2. 레이저 데이터 변환 방식 미사용
레이저 데이터 변환 방식 미사용 정점 트래킹을 사용할 경우 확장축 좌표계 교정은 필요하지 않습니다.
레이저 트래킹 센서 데이터를 변환 방식 미사용 타입으로 설정합니다.
그림 8.15-19 레이저 데이터 변환 방식 미사용 타입 설정
초기 설정 -> 주변기기 -> 선 레이저 센서 순으로 클릭한 뒤, 페이지 드롭다운에서 `센서 설정`을 클릭하고 `데이터 처리`를 변환 방식 미사용 타입 데이터로 조정합니다.
그림 8.15-20 레이저 트래킹 기능 페이지
티칭 프로그램 -> 프로그램 편집 -> 레이저 트래킹 순으로 클릭해 레이저 트래킹 페이지로 들어가거나, `레이저 기록`을 직접 클릭해 기록 페이지로 들어갑니다.
그림 8.15-21 기록하면서 재현 명령 추가
레이저 기록 페이지에서 기록하면서 재현 명령을 선택하고 추가`를 클릭해 적용합니다. 이 명령에서는 `지연 시간 또는 `지연 거리`(거리 권장)를 선택할 수 있으며, 보정 감도 계수는 실제 센서 레이저 데이터에 맞춰 조정합니다. 수치가 낮을수록 조정 감도는 낮아지고 간섭 내성은 좋아집니다. 재현 속도 기본값은 `100%`입니다.
기록하면서 재현 명령 뒤에 확장축 운동 명령을 추가하면 확장축과 로봇 레이저 트래킹의 동기 운동을 구현할 수 있습니다.
아래는 전형적인 확장축 레이저 데이터 변환 방식 미사용 정점 트래킹 LUA 프로그램입니다:
그림 8.15-22 확장축 레이저 데이터 변환 방식 미사용 정점 트래킹 예제 프로그램
토치가 전방 레이저 위치의 오프셋량에 맞춰진 뒤, 로봇 확장축이 움직이면서 기록하면서 재현 프로세스를 수행합니다. 전방 레이저 트래커가 먼저 확장축 운동 시 워크 용접 심의 변화 궤적을 기록하고, 설정된 지연 거리 또는 시간 뒤에 토치 위치에서 보정합니다.
8.16. 레이저 위치결정점 위치 취득 기능
8.16.1. 로봇 레이저 위치결정점 위치 취득 시스템 구성
그림 8.16-1 로봇 레이저 위치결정점 위치 취득 시스템 구성 토폴로지
시스템에서 (a)는 컴퓨터, (b)는 로봇 및 제어 박스, (c)는 레이저 센서입니다.
8.16.2. 레이저 센서 통신 설정
WebApp을 열고 초기 설정 -> 주변기기 -> 선 레이저 센서 순으로 클릭해 센서 통신을 설정합니다.
그림 8.16-2 센서 통신 설정
8.16.3. 레이저 위치결정점 위치 취득 기능
레이저 위치결정점 위치를 취득하는 절차는 다음과 같습니다:
Step 1: 레이저 위치결정을 시작하기 전에 먼저 위치결정 시작점 seamStartPt1, `seamStartPt2`를 지정합니다. 이후 `티칭 프로그램 -> 프로그램 편집`을 클릭하고 `점대점`을 선택해, 레이저 센서의 광선을 첫 번째 용접 시작점 근처의 위치결정 시작점 1 `seamStartPt1`으로 접근시킵니다.
그림 8.16-3 위치결정 시작점 1 이동 명령 추가
Step 2: 명령 타입에서 위치결정 시작`을 클릭한 뒤, 교정된 센서 좌표계를 선택하고 위치결정 방향, 속도, 길이, 최대 위치결정 시간을 설정한 후 `추가 버튼을 클릭합니다. 그다음 위치결정 종료`를 클릭하고 `추가 버튼을 다시 클릭합니다.
그림 8.16-4 위치결정 시작 명령 추가
Step 3: 센서점 취득 운동`을 선택하고, 좌표계 이름에서 교정한 `레이저 센서`를 선택합니다. 운동 방식으로 `PTP 또는 LIN`을 선택하고, 디버그 속도를 설정한 뒤 `자세 설정 여부`를 선택하고 `추가 버튼을 누릅니다. 이후 적용 버튼을 클릭해 LUA 프로그램에 추가합니다.
그림 8.16-5 센서점 취득 운동 명령 추가
Step 4: 프로그램 편집 화면에서 모드 전환 버튼을 클릭하고 변수 `pos`를 `pos1`로 변경한 뒤, 위치결정점 이동 명령을 삭제합니다.
그림 8.16-6 프로그램 편집 모드 전환
그림 8.16-7 레이저 위치결정점 취득 프로그램 수정
Step 5: Step1-Step4와 같은 방식으로 두 번째 용접부의 위치결정을 수행해 레이저 위치결정점 위치를 취득합니다.
그림 8.16-8 두 번째 용접 위치결정점 취득











