이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

6.4.1 용접 튜토리얼

용접 튜토리얼 절에서는 두산로보틱스 API로 용접 애플리케이션을 제어하는 예제를 제공합니다. 아날로그 인터페이스와 디지털 인터페이스를 모두 다루며, 위빙(진동) 모션, 매개변수 조정, TCP 캘리브레이션도 함께 설명합니다.

이 예제들은 용접 인터페이스를 실제 로봇 모션 시퀀스와 통합해 동기화된 용접 제어를 구현하는 방법을 보여 줍니다.

튜토리얼 흐름

  1. 아날로그 용접 제어: 아날로그 용접 조건을 설정하고 조정합니다.

  2. 디지털 용접 제어(EtherNet/IP): 디지털 인터페이스와 프로세스 매핑을 설정합니다.

  3. 위빙 패턴: 사다리꼴, 지그재그, 원형, 사인파 위빙 모션을 적용합니다.

  4. 실시간 매개변수 조정: 운전 중에 용접 조건을 동적으로 변경합니다.

  5. 용접 TCP 캘리브레이션: 용접 툴 중심점(TCP)을 캘리브레이션합니다.

  6. 모니터링 및 신호 출력: 용접 데이터를 모니터링하고 디지털 용접 신호를 제어합니다.

아날로그 용접 제어

목적
아날로그 용접 제어 인터페이스를 활성화하고 전압, 전류, 와이어 송급 속도 같은 기본 용접 조건을 설정합니다.

CONFIG_ANALOG_WELDING_INTERFACE analog_if{};
CONFIG_ANALOG_WELDING_SETTING analog_set{};

// 아날로그 인터페이스 활성화. 설정은 값으로 전달됩니다.
Drfl.app_weld_enable_analog(analog_if);

// 아날로그 용접 조건 설정
analog_set._fTargetVoltage      = 22.5f;    // V
analog_set._fTargetCurrent      = 160.0f;   // A
analog_set._fTargetFeedingSpeed = 6.5f;
analog_set._fTargetVel          = 10.0f;    // 이동 속도, mm/s
Drfl.app_weld_set_weld_cond_analog(analog_set);

확인
아날로그 인터페이스가 활성화되고, 설정한 매개변수(전압/전류/송급 속도)가 외부 용접기에 적용됩니다.

디지털 용접 제어(EtherNet/IP)

목적
EtherNet/IP로 용접기와 통신을 설정하고 R2M(로봇→기계) 신호와 M2R(기계→로봇) 신호를 모두 구성합니다.

CONFIG_DIGITAL_WELDING_INTERFACE_PROCESS    r2m_process{};
CONFIG_DIGITAL_WELDING_INTERFACE_MONITORING m2r_monitoring{};

// EtherNet/IP 인터페이스 설정. 방향과 신호 그룹마다
// 설정 타입이 따로 있습니다.
Drfl.app_weld_set_interface_eip_r2m_process(r2m_process);
Drfl.app_weld_set_interface_eip_m2r_monitoring(m2r_monitoring);

// 디지털 인터페이스 활성화
Drfl.app_weld_enable_digital(1);

확인
디지털 인터페이스가 활성화되고 EtherNet/IP 연결 상태가 정상입니다.

위빙 패턴

목적
위빙 패턴(사다리꼴, 지그재그, 원형, 사인파)을 설정하고 적용해 용접 비드의 진동을 구현합니다.

// 지그재그 위빙과 사인파 위빙은 패턴을 인수로 받습니다:
// 오프셋 Y, 오프셋 Z, 기울기, 위빙 폭, 위빙 주기
Drfl.app_weld_weave_cond_zigzag(2.0f, 1.0f, 0.0f, 5.0f, 3.0f);

// 사다리꼴 위빙은 대신 설정 구조체를 받습니다
CONFIG_TRAPEZOID_WEAVING_SETTING weave{};
weave._fOffsetY  = 2.0f;
weave._fOffsetZ  = 1.0f;
weave._fGradient = 0.0f;
Drfl.app_weld_weave_cond_trapezoidal(weave);

확인
로봇이 설정한 진동 패턴을 따르며, 용접 경로 전체에서 비드 폭을 일정하게 유지합니다.

실시간 매개변수 조정

목적
적응 제어를 위해 운전 중에 용접 매개변수를 동적으로 조정합니다.

unsigned char real_time = 1;
unsigned char reset     = 0;

float target_voltage = 23.0f;   // V
float feeding_speed  = 7.0f;    // 와이어 송급
float travel_speed   = 10.0f;   // 단위 mm/s

// 실시간 플래그, 리셋 플래그, 전압, 송급 속도, 이동 속도,
// 오프셋 Y, 오프셋 Z, 폭 비율
Drfl.app_weld_adj_welding_cond_analog(
    real_time, reset, target_voltage, feeding_speed, travel_speed,
    0.0f, 0.0f, 1.0f
);

확인
용접 공정을 중단하지 않고 전압, 와이어 송급, 이동 속도가 실시간으로 갱신됩니다.

용접 TCP 캘리브레이션

목적
용접 토치를 정확하게 정렬하기 위해 TCP(툴 중심점)를 캘리브레이션합니다.

unsigned char mode = 0;          // 측정 모드
float stickout     = 15.0f;      // 토치 스틱아웃
float target_pos[9][6] = { };    // 교시한 조인트 자세 9개

LPMEASURE_TCP_RESPONSE result = Drfl.measure_welding_tcp(mode, stickout, target_pos);

확인
호출하면 측정한 TCP와 측정 오차가 반환되고, 캘리브레이션한 위치가 토치 끝 위치와 일치합니다.

모니터링 및 신호 출력

목적 용접 데이터를 모니터링하고 아크 시작/정지 신호용 디지털 출력을 제어합니다.

// 모니터링 시작
Drfl.set_on_monitoring_welding_data(OnMonitoringWeldingData);

// 용접 신호 강제 출력. 첫 번째 인수는 용접 인터페이스 설정에 정의된
// 신호를 선택하고, 두 번째 인수는 그 값을 전달합니다.
unsigned char command_type = 0;

Drfl.set_digital_welding_signal_output(command_type, 1.0f);  // 아크 시작
std::this_thread::sleep_for(std::chrono::seconds(2));
Drfl.set_digital_welding_signal_output(command_type, 0.0f);  // 아크 정지

확인
모니터링 콜백이 실시간 용접 피드백을 제공하고, 디지털 출력이 외부 용접기를 올바르게 켜고 끕니다.

참고

  • app_weld_* 함수와 measure_welding_tcp는 DRCF_VERSION을 2로 정의했을 때만 컴파일됩니다. 헤더의 기본값은 3이므로 기본 빌드에서는 이 함수들을 사용할 수 없습니다.

  • 용접 튜토리얼을 실행하려면 올바른 매개변수로 설정한 외부 용접기(아날로그 또는 디지털 EtherNet/IP)가 있어야 합니다.

  • 용접 작업은 자동 모드에서 서보 온 상태로 실행하세요. 라이브러리는 app_weld_* 함수에 대해 로봇 모드를 확인하지 않습니다.