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_* 함수에 대해 로봇 모드를 확인하지 않습니다.