로직 프로그램

설명

PolyScope X 애플리케이션에는 메인 로봇 프로그램과 별도로 백그라운드에서 지속적으로 실행되는 로직 프로그램 이 포함될 수 있습니다. 이는 암의 전원이 꺼졌을 때, 메인 프로그램이 일시 중지되거나 정지되었을 때, 또는 작업자가 안전 구역에 진입했을 때에도 계속 실행되어야 하는 작업에 유용합니다.


일반적인 용도로는 필드버스 통신(Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) 유지, 외부 센서 입력에 대한 반응, 생산용 PLC에 로봇 상태 보고, 메인 프로그램이 중지되었을 때 외부 장비 제어 등이 있습니다.

로직 프로그램에서는 로봇 암을 직접 이동시키거나, 페이로드를 변경하거나, TCP 매개변수를 수정하는 기능을 사용할 수 없습니다.

로직 프로그램을 활용한 적용 사례

  1. 로봇이 세이프가드 정지(Safeguard Stop), 보호 정지(Protective Stop) 또는 비상 정지(Emergency Stop)와 같은 정지 모드에 있고, 메인 프로그램이 일시 중지되거나 정지된 상태이거나, 로봇 암의 전원이 켜지기 전인 상황에서 외부 센서 입력에 대한 능동적인 반응.

  2. 로봇 암의 전원이 꺼져 있거나 프로그램이 실행 중이 아니더라도 필드버스 통신(Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC)은 유지됩니다.

  3. 운영자가 메인 프로그램을 일시 중지한 상태에서도 셀 로직 작동이 지속적으로 유지됩니다.

  4. 생산 제어 소프트웨어(생산용 PLC)로 전송되는 로봇 상태 보고서.

  5. 메인 프로그램이 중지되거나 일시 정지될 때 용접기, 컨베이어, 접착제 디스펜서 등 외부 장비의 제어된 정지.

  6. 프로그램이 시작되기 전에 작업자의 입력이 수집됩니다.

  7. 오류 상태에 따른 맞춤형 복구. 작업자는 메인 프로그램을 재개한 후 어떤 작업을 수행할지 결정할 수 있습니다.

  8. 소형 로봇 셀 내 외부 PLC 컨트롤러 교체.

라이선스

로직 프로그램(Logic Program)을 사용하려면 라이선스가 필요하며, 고객 포털을 통해 구매할 수 있습니다.

 

로직 프로그램 제어

'프로그램' 페이지에서 사이드바의 '로직 프로그램'을 선택하십시오. 확장된 사이드바에는 로직 프로그램의 여러 부분을 탐색하기 위한 제어 기능이 표시됩니다. 또한 프로그램을 시작, 일시 중지, 중지 및 재설정할 수 있습니다.

 

“프로그램 실행” 버튼은 로직 프로그램의 상태에 따라 “프로그램 실행 ” 또는 “프로그램 중지”로 표시가 바뀝니다. 이는 로직 프로그램(Logic Program) 컨텍스트 메뉴에서 사용할 수 있는 프로그램 제어 작업에 대한 바로 가기 역할을 합니다.

네 개의 로직 프로그램 표시등 은 프로그램의 현재 상태를 나타냅니다. 또한 애플리케이션이 로드될 때 프로그램이 자동으로 시작되도록 설정되어 있는지 여부도 표시합니다.

 

논리 프로그램 구조

논리 프로그램은 메인 프로그램과 동일한 구조적 섹션을 가지고 있습니다:

  • 메인 프로그램 본문 — 수동으로 중지하거나, 중지 명령어를 사용하거나, 런타임 오류가 발생할 때까지 지속적으로 실행됩니다.
  • 시작 전 — 로직 프로그램이 시작될 때 한 번 실행됩니다.
  • 모듈 — 함수 및 스레드, 메인 프로그램과 동일한 방식으로 구성되어 있습니다. 스레드 함수는 기본적으로 한 번만 실행됩니다. 스레드를 지속적으로 실행하려면 루프 옵션을 활성화하십시오.

로봇 프로그램과 로직 프로그램은 각각 고유한 전역 변수 세트, 독립적인 스레드 풀, 그리고 독립적인 실행 라이프사이클을 가지고 있습니다. 한 프로그램을 시작, 중지하거나 오류가 발생하더라도 다른 프로그램은 중단되지 않습니다. 중지 또는 일시 중지 명령은 해당 명령이 실행되는 프로그램에만 영향을 미칩니다.

 

 

'시작 전(Before Start )' 섹션에서는 프로그램을 한 번만 실행할 수 있습니다.

'모듈' 섹션에서는 해당 프로그램에서 사용할 수 있는 함수와 스레드 목록을 확인할 수 있습니다.

 

로봇 프로그램과의 데이터 교환

로봇 프로그램과 로직 프로그램 간의 통신을 위한 주요 수단은 애플리케이션 변수입니다. 변수는 로봇 및 로직 프로그램에서 설정하거나 읽을 수 있습니다.

이 예제는 로봇 셀의 입력 버퍼로 들어오는 항목을 계수하고, 그 개수를 로봇 프로그램에 표시합니다. 로봇 암의 전원이 꺼진 상태에서도 카운터는 계속 증가합니다.

 

로봇 상태 확인

로봇의 상태는 내장된 RTDE 변수를 통해 확인할 수 있습니다. 이러한 변수들은 스크립트 함수 get_rtde_value() 를 사용하여 읽을 수 있습니다. 사용 가능한 RTDE 필드의 전체 목록을 보려면 RTDE 가이드를 참조하십시오.

다음 예제는 '안전 정지(Safeguard Stop)'가 활성화되어 있는지 확인하는 방법을 보여줍니다:


safety_status = get_rtde_value("safety_status")
# 세이프가드 정지 및 자동 모드 세이프가드 정지
확인  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

다음 예제는 로봇 프로그램이 일시 정지 상태인지 확인합니다:

is_program_paused = get_rtde_value("runtime_state") == 4

URScript 제어 API도 이 기능을 래핑합니다.

 

로직 프로그램 자동 시작

응용 프로그램이 로드될 때 자동으로 실행될 프로그램을 선택할 수 있습니다. '자동 시작' 옵션을 선택하면, 애플리케이션이 로드된 직후 로직 프로그램이 즉시 실행됩니다.

로봇 컨트롤러의 전원이 켜지고 마지막 애플리케이션이 로드되면 로직 프로그램을 자동으로 시작할 수도 있습니다.

자동 시작 기능은 작동 모드나 로봇 암의 상태에 관계없이 작동합니다. 로딩 시 자동 실행이 트리거되면, 스낵바 알림을 통해 로직 프로그램이 시작되었음을 확인해 줍니다.

 

 

Logic Program 아이콘의 사이드바 배지는 프로그램이 실행 중인지 중지되었는지와 같은 프로그램의 현재 상태를 항상 표시합니다.

로봇의 전원이 켜져 있거나 다양한 애플리케이션이 로드된 상태에서 로직 프로그램이 안전한지 확인하는 것은 사용자의 책임입니다.

로직 프로그램은 유선 또는 PLC 연결(Modbus, PROFINET, Ethernet/IP, 소켓, 직접 출력 또는 기타 인터페이스)을 사용하여 외부 장비를 활성화하거나 비활성화할 수 있습니다.

 

모듈 및 스레드

로직 프로그램의 기능은 함수 단위로 구성할 수 있습니다. 이 기능은 로봇 프로그램에서와 동일한 방식으로 작동합니다.

각 기능은 스레드 로 표시할 수 있습니다. 기본적으로 스레드는 한 번만 실행됩니다. 스레드를 지속적으로 실행하려면 스레드 함수의 [ 루프 ] 확인란을 선택하십시오.

 

자원 공유

로봇 프로그램과 로직 프로그램은 각각 고유한 스레드 풀과 변수 풀을 사용하여 독립적으로 실행되지만, 모두 동일한 하드웨어 리소스를 공유합니다. 이로 인해 프로그래머가 유의해야 할 몇 가지 제한 사항이 있습니다:

  • 로직 프로그램 스레드는 로봇 프로그램과 동일한 CPU에서 실행됩니다. 모든 로직 프로그램 스레드의 실행 시간은 모든 로봇 프로그램 스레드의 실행 시간에 더해집니다. 극단적인 경우, 이로 인해 “실행 시간이 너무 많이 지연됨” 오류가 발생할 수 있습니다.

  • Modbus 신호나 범용 레지스터와 같은 일부 통신 리소스는 공유 리소스입니다. 동일한 레지스터에 동시에 쓰기 작업을 수행하면 예상치 못한 결과가 발생할 수 있습니다. 또한 현재 관찰되는 동작은 향후 기본 구현이 최적화됨에 따라 변경될 수 있습니다.

  • Modbus — 하나의 Modbus 클라이언트가 공유됩니다. 두 프로그램 중 하나에서 생성된 신호는 양쪽 모두에서 확인할 수 있습니다.

  • 이더넷/IP 유연한 어댑터 — 각 프로그램은 동일한 인스턴스에 대해 자체적인 읽기 또는 쓰기 핸들을 엽니다. 핸들은 동일한 데이터 필드에 값을 기록해서는 안 됩니다.

 

제한 사항

  • 로직 프로그램에서는 URScript 명령어 중 일부만 사용할 수 있습니다.

  • 로직 프로그램의 경우 프로그램 실행 표시기 및 중단점 기반 디버깅이 지원되지 않습니다.

  • 로직 프로그램에서는 인터프리터 모드가 지원되지 않습니다. 그러나 로직 프로그램이 실행 중일 때도 로봇 프로그램 내에서 인터프리터 모드를 시작할 수 있습니다.