OPC UA를 사용하는 IDS NXT 인터페이싱

OPC UA를 통해 IDS NXT 카메라를 공장 자동화에 통합하기

소프트웨어 업데이트는 공장 자동화로의 끊김 없는 통합을 위해 IDS NXT 카메라에 또 다른 미래 지향적인 구성 요소를 제공합니다. 플러그인은 OPC UA 서버를 카메라에 통합합니다. 소프트웨어 업데이트를 통해 OPC UA가 장착되어, 네트워크의 "레시피 컬렉션"을 통해 AI 기능을 사용할 수 있게 하고, 현장 레벨로부터 기계 및 제어 레벨로 결과를 직접 통신하게 만듭니다. 그러므로, OPC UA는 카메라의 설정과 Vision App 기반의 인퍼런스 작업들을 OPC UA 클라이언트에게 호환, 판독 가능한 형식으로 접근할 수 있도록 IDS NXT 카메라를 이상적으로 보완합니다. 따라서, OPC UA는 IDS NXT 카메라에 이상적인 Industry 4.0 애드온(add-on)입니다.

OPC UA

OPC UA가 핵심 기술입니다. 이것은 클라이언트와 서버 간의 통신을 통합합니다. 추가로, 이것은 어떻게 장치(서버)가 클라이언트에게 자신을 설명하는지 및 어떤 정보 및 서비스를 제공할지를 결정합니다. 클라우드까지의 이더넷 기반의 필드버스들 및 모든 물리적인 레이어들에 걸친 균일한 교환은, 만약 데이터가 다른 프로토콜을 통해 판독, 변환, 및 동기화될 필요가 없으면, 엔지니어링 노력을 대폭 단순화합니다. 이를 통해 자동화에 드는 시간과 비용을 절약하고, 산업 공정(industrial plant)과의 신속한 통합을 보장합니다. OPC Machine Vision Companion 사양으로, 제조업체 간의 및 산업 간의 통신 기술은, 공장 자동화에서 AI 기반의 "레시피"를 쉽게 사용하기 위하여 IDS NXT 카메라에 이상적인 인터페이스 확장을 제공합니다.

IDS NXT OPC UA 서버 플러그인

OPC UA 서버 플러그인은, IDS NXT 카메라를 임의의 OPC UA 클라이언트에 의하여 다뤄질 수 있는 OPC UA 서버로 전환(turn)합니다. 이미지 처리 작업은 "레시피"라 불리는 기능 모듈의 플러그인에 의해 캡슐화됩니다. 마찬가지로, 특별한 어플리케이션에 대해, 필요한 및 때로는 상세한 설정들은, 요약되고 설정 데이터 세트에 저장됩니다. 이러한 측정들에 대하여, 플러그인은 REST 인터페이스를 통해 대응하는 기능을 제공합니다. IDS NXT cockpit의 GUI를 통해 매우 쉽게 사용할 수 있습니다. 이미지 처리 결과는, 결과 관리를 통해 OPC UA 클라이언트에서 쿼리되거나 이벤트로 등록될 수 있습니다. 이름 또는 일련 번호와 같은 일반 장치 정보는, 장치 정보 모델을 통해 제공됩니다. OPC UA 통신은, OPC UA 서버를 시작한 후에, 이더넷 기반의 네트워크에서 사용할 수 있는 추가 카메라 인터페이스처럼 작동합니다.

OPC UA 클라이언트

IDS NXT 카메라는 OPC UA 플러그인을 통해 임의의 OPC UA 클라이언트에 연결될 수 있습니다. 예를 들어, 이는 기계 제어 또는 관리 시스템의 독점 소프트웨어일 수 있습니다. C++, C# 또는 Python과 같은 서로 다른 프로그래밍 언어들을 위한 OPC UA 개발 라이브러리의 도움으로, 자신만의 OPC UA 클라이언트를 구현할 수도 있습니다. 여기에서, 우리는 카메라가 기존 OPC UA 네트워크에 얼마나 쉽고 빠르게 통합될 수 있는지 보여주는 것을 원하므로, 잘 알려진 OPC UA 클라이언트 "UaExpert®"를 사용하여 OPC UA 플러그인을 시연합니다. 모든 기능을 갖춘 클라이언트는, IDS NXT OPC UA 서버의 가능성을 쉽게 보여줄 수 있는 GUI와 광범위한 기능들을 제공합니다. 데이터 액세스, 이벤트 및 OPC UA 메소드의 호출과 같은 OPC UA 기능들을 지원합니다.

IDS NXT를 OPC UA 비전 시스템으로 사용

OPC UA를 통해 IDS NXT 카메라를 제어하는 것을 보여주기 위하여, 이 테크팁에서는 IDS NXT 카메라와 몇 가지 오브젝트들(볼펜, 눈금자, 지우개, 열쇠 등)로 자신을 쉽게 재현할 수 있는 AI 이미지 처리 워크플로의 예시를 설명합니다. 이를 위하여, 아래의 지침을 단계별로 따르세요.

1) 인퍼런스 작업 설정

  • 이 예시에서, 사전 설치된 신경망(CNN) "ImageNet1000"이 포함된 "Classifier" 비전 앱을 사용합니다. IDS NXT cockpit의 "Vapp Manager"를 통해 앱을 설치하고 시작합니다.
  • 분류기는, 미리 훈련된 ImageNet1000을 통해, 볼펜, 열쇠, 명함과 같은 많은 오브젝트들을 인식합니다. 여러분의 오브젝트들이 적절한 설정(색상, 선명도, 노출 등)으로 완전히 이미징되도록, IDS NXT 카메라 아래에 임의의 오브젝트들을 놓고 프리런 모드(freerun mode)에서 이미지 캡처를 설정합니다.
  • 식별하기를 원하는 오브젝트들에 ROI를 사용하세요.
    각 이미지 캡처의 분류에 대한 인퍼런스 결과는, ROI에서 결과 영역에 각각의 확률과 함께 표시됩니다.
    우리의 경우에서, 볼펜(68 %), 샤프(100 %), 지우개(98 %)가 인식됩니다.

2) OPC UA Server 시작

  • 카메라 부분에서 OPC 통신을 제공하기 위해 어떤 것도 프로그래밍할 필요가 없습니다. IDS NXT 카메라의 IDS NXT cockpit에서 "VAPP Manager"를 통해 OPC UA 서버 플러그인을 간단히 설치 (1) 및 시작 (2)하세요.
  • 플러그인의 액션들을 통해 OPC UA 서버를 시작 (1) 및 중지 (2) 할 수 있습니다. 디폴트로, 서버는 플러그인이 시작될 때 자동으로 시작됩니다 (3).

3) OPC UA 설정 및 레시피 생성

  • IDS NXT cockpit을 활용하면, OPC UA 플러그인을 통해 IDS NXT 카메라에서 설정을 생성하고 저장하는 것은 쉽습니다.
  • 분류기 (레시피 이름)로 인퍼런스 작업 및 현재 카메라 세팅 (설정 이름)의 이름을 정하고, 해당 액션들을 통해 설정 및 레시피를 저장하면 됩니다. 이것으로, 이미 cockpit을 통해 카메라의 OPC UA 셋업을 완료했습니다.

4) OPC UA 클라이언트 설정 - 서버 연결

  • OPC UA 클라이언트 "UaExpert®"를 설치하고 시작하세요.
  • 카메라의 OPC UA 서버를 연결하기 위하여, 메뉴 바에서 (서버 추가)를 클릭하세요. "고급" 탭으로 전환하세요.
  • 연결에 "설정 이름"을 지정하세요
  • 서버의 "Endpoint URL"을 지정하세요 (예: "opc.tcp://169.254.173.231:4840")
    • 프로토콜: opc.tcp
    • 카메라의 IP 주소
    • OPC UA 서버 포트: 4840
  • 원하는 "보안 정책"을 선택하세요(지원되는 항목: 없음, Basic128Rsa15, Basic256, Basic256Sha256)
  • "메시지 보안 모드"를 선택하세요(없음, 서명, 서명&암호화)
  • "인증 설정"에서 IDS NXT 카메라에 대한 액세스 데이터를 입력하세요.(예: 관리자 또는 서비스 사용자)
  • 이제 OPC UA 서버에 연결할 수 있습니다: "연결"

5) 장치 정보 요청/편집

  • 서버 연결을 테스트하기 위하여, "주소 공간" 창에서 카메라의 정보 모델을 통해 탐색할 수 있습니다. 예를 들어, UaExpert®에서 장치 이름을 변경하면 IDS NXT cockpit에서도 업데이트될 것입니다.
  • 더욱이, "데이터 액세스 보기"를 통해 상태 및 통계 파라미터를 등록하여 변경 사항들을 추적할 수 있습니다. 예를 들어, 이미지 카운터 "총 이미지"을 창으로 드래그하면, 해당 값이 카메라에 의하여 캡처된 새 이미지마다 역동적으로 증가할 것입니다.
  • 이미지 카운터를 리셋하려면, "모두 리셋" 메소드의 컨텍스트 메뉴에서 "호출"을 실행하세요. 그러면, 등록된 프레임 카운터는 "0"에서 다시 카운팅을 시작합니다.

6) 카메라 설정 활성화

  • 먼저 GetConfigurationList 함수를 호출하여 카메라에 저장된 설정의 목록을 검색하세요.
    ResultCount 는 InternalId "conf_classifier.json"과 함께 사용 가능한 구성을 "1"로 보여줍니다.
  • ActivateConfiguration 함수를 사용하여, 카메라에서 사용되는 저장된 파라미터를 갖는 현재 유효한 설정을 정의하세요. 해당 InternalId를 호출에 대한 입력 값 (Id)으로 세팅합니다.
  • 노드 Active Configuration을 통해 현재 활성 설정을 확인할 수 있습니다. Id "conf_classifier.json"이 속성에 나타나야 합니다.

7) 작업 준비 (레시피)

이제 카메라의 미리 저장된 이미지 처리 작업을 동일한 방식으로 진행합니다.

  • 입력 값 IsPrepared = 2 (DONTCARE_2)를 사용하여 GetRecipeListFiltered 함수를 호출하면 저장된 레시피 "1"을 ResultCount로 리턴합니다. 우리의 경우에는, Id "recipe_classifier_imagenet.json"로 저장된 레시피입니다.
  • PrepareRecipe 함수로, 이전에 쿼리한 Id를 입력 값 "InternalIdIn"으로 설정함으로써 이 레시피를 활성 이미지 처리 작업으로 준비합니다.

8) 결과 이벤트 등록

이제 카메라는 OPC UA 클라이언트를 통해 완전히 준비되었습니다. 카메라 작업을 실행하기 전에, 먼저 결과 이벤트를 등록해야 합니다.

  • 이를 위하여, EventView를 추가하세요...
  • 그리고 카메라의 VisionSystem시스템을 이 뷰로 드래그 앤 드랍하세요.
  • 모든 세부 사항을 얻으려면 SimpleEventsConditionTypes 필드를 활성화하세요.
  • 적용 버튼을 통해 선택을 확정하세요.

9) 작업 실행 (레시피) - 이벤트 결과 평가

이제 카메라가 정확히 한 번 작업을 수행하도록 합니다.

  • 이를 위하여, StartSingleJob 메소드를 한 번 호출하세요.
  • EventView의 카메라로부터 ResultReadyEvent가 수신됩니다.
  • 이벤트 세부 정보에서, 세 가지 지정된 ROI(ballpoint, pencil_sharpener, rubber_eraser)의 인퍼런스 결과를 각각에 대한 분류 확률과 함께 볼 수 있습니다.