콘텐츠로 바로 가기
STAGING SERVER
DEVELOPMENT SERVER

Action Commands#

Action Commands camera feature를 사용하면 단일 브로드캐스트 프로토콜 메시지를 통해 여러 대의 GigE 카메라에서 거의 동시에 작업을 실행할 수 있습니다.

여러 대의 카메라에서 정확히 동시에 작업을 실행하려면 대신 Scheduled Action Commands 기능을 사용하십시오.

pylon Viewer를 사용하여 액션 커맨드를 전송하거나 예약하려면 Action Commands (pylon Viewer) 기능을 사용하십시오.

기능 사용#

Action Commands를 사용하는 이유#

액션 커맨드를 사용하여 예를 들어 다음과 같은 작업을 수행할 수 있습니다.

  • 여러 카메라로 동기화된 이미지 취득
  • 여러 카메라에서 frame counter 동기화 재설정

작동 방식#

액션 커맨드는 GigE 네트워크의 여러 장치로 보낼 수 있는 브로드캐스트 프로토콜 메시지입니다.

각 액션 프로토콜 메시지에는 다음과 같은 정보가 포함됩니다.

카메라가 지정된 네트워크 세그먼트 내에 있고 프로토콜 정보가 카메라의 액션 커맨드 구성과 일치하는 경우, 카메라는 해당 작업을 실행합니다.

정보

액션 커맨드 파라미터 및 구현에 대한 자세한 내용은 다음 문서를 참조하십시오.

Action Device Key#

카메라에서 액션 커맨드 실행을 승인하는 데 사용되는 사용자가 선택한 32비트 숫자입니다. 카메라의 action device key와 프로토콜 메시지의 action device key가 동일한 경우, 카메라는 해당 작업을 실행합니다.

Action Group Key#

작업을 실행할 장치 그룹을 정의하는 데 사용되는 사용자가 선택한 32비트 숫자입니다. 카메라의 action group key와 프로토콜 메시지의 action group key가 동일한 경우, 카메らは 해당 작업을 실행합니다.

Action Group Mask#

카메라 그룹에 속한 카메라의 하위 그룹을 필터링하는 데 사용되는 사용자가 선택한 32비트 숫자입니다. 하위 그룹에 속한 카메라는 동시에 작업을 실행합니다.

필터링은 액션 커맨드의 그룹 마스크 번호와 카메라의 그룹 마스크 번호에 대해 논리적 비트 단위 AND 연산을 수행하여 이루어집니다. 두 이진수 모두 1로 설정된 공통 비트가 하나 이상 있는 경우(즉, AND 연산 결과가 0이 아님), 해당 카메라는 하위 그룹에 속합니다.

예: 조립 라인에 6대의 카메라로 구성된 그룹이 설치되어 있다고 가정합니다. 특정 하위 그룹에서 작업을 실행하기 위해 다음 그룹 마스크 번호가 카메라에 할당되었습니다(샘플 값):

Camera 그룹 마스크 번호(이진수) 그룹 마스크 번호(16진수)
1 000001 0x1
2 000010 0x2
3 000100 0x4
4 001000 0x8
5 010000 0x10
6 100000 0x20

이 예에서는 액션 그룹 마스크가 000111(0x7)인 Action Command가 카메라 1, 2, 3에서 액션을 실행합니다. 그리고 액션 그룹 마스크가 101100(0x2C)인 Action Command는 카메라 3, 4, 6에서 액션을 실행합니다.

Broadcast Address#

Action Command가 브로드캐스트될 위치를 정의하는 데 사용되는 문자열 변수입니다. pylon API를 사용할 때 브로드캐스트 주소는 "255.255.255.255"(모든 어댑터), "192.168.1.255"(단일 서브넷 192.168.1.xxx의 모든 장치) 또는 "192.168.1.38"(단일 장치)과 같이 점 표기법으로 지정해야 합니다.

이 파라미터는 선택 사항입니다. 생략할 경우 "255.255.255.255"가 사용됩니다.

예제 설정#

다음 예제 설정은 Action Command의 기본 개념을 이해하는 데 도움이 됩니다.

말의 움직임을 분석하기 위해 경주로와 평행하게 카메라 그룹이 설치됩니다.

Action Commands 예제 설정

말이 지나갈 때 4대의 카메라(하위 그룹 1)가 동기화되어 액션(이 예에서는 이미지 취득)을 실행합니다.

말이 전진함에 따라 다음 4대의 카메라(하위 그룹 2)가 동기화되어 이미지를 캡처합니다. 말이 경주로 끝에 도달할 때까지 하위 그룹들이 이러한 방식으로 차례대로 계속 진행합니다. 결과 이미지는 후속 단계에서 결합 및 분석될 수 있습니다.

이 샘플 사용 사례에서는 다음을 정의해야 합니다.

  • 동기화된 이미지 취득 실행을 승인하기 위한 고유한 장치 키입니다. 장치 키는 각 카메라에 구성되어야 하며 Action Command 프로토콜 메시지의 장치 키와 동일해야 합니다. 장치 키를 정의하려면 action device key를 사용하십시오.
  • Action Command의 대상이 되는 네트워크 세그먼트의 카메라 그룹(이 예에서는 그룹 1)입니다. 그룹을 정의하려면 action group key를 사용하십시오.
  • 이미지를 동기화하여 캡처하는 카메라 그룹 내의 하위 그룹(이 예에서는 하위 그룹 1, 2, 3)입니다. 하위 그룹을 정의하려면 action group mask를 사용하십시오.

Action Commands 사용#

카메라 구성#

카메라가 Action Command를 수신하고 처리할 수 있도록 구성하려면:

정보

카메라에서 Scheduled Action Commands를 구성하려는 경우에도 동일한 절차가 적용됩니다.

  1. 다음 요구 사항이 충족되었는지 확인하십시오.
    • Action Command를 구성하려는 모든 카อล은 동일한 네트워크 세그먼트에 설치 및 구성됩니다.
    • Action Commands 기능은 모든 카메라와 Action Command를 구성하고 전송하는 데 사용하는 Basler pylon API에서 지원됩니다.
  2. Action Command를 사용하여 제어하려는 카메라 중 하나와의 연결을 엽니다.
  3. 파라미터를 원하는 ActionDeviceKey 파라미터를 사용자가 선택한 32비트 숫자로 설정합니다. 키는 네트워크 세그먼트의 모든 카메라 중에서 고유해야 합니다.
  4. 다음 파라미터를 구성하십시오.
  5. Action Command를 사용하려는 작업에 따라 해당 카메라 소스를 다음으로 설정하십시오. Action1.
    예제 1: 액션 명령을 사용하여 이미지를 획득하려면 다음을 설정하십시오. TriggerSource 파라메터 Action1.
    예 2: 액션 명령을 사용하여 Counter를 재설정하려면 다음을 설정하십시오. CounterResetSource 파라메터 Action1.
  6. 모든 카메라에서 2단계부터 4단계까지 반복합니다.

정보

여러 소스를 다음과 같이 설정할 수도 있습니다. Action1. 이를 통해 액션 명령을 수신할 때 여러 작업을 한 번에 실행할 수 있습니다.

Action Command 실행#

액션 명령을 발행하려면 다음을 호출하십시오. IssueActionCommand 메서드를 호출합니다.

예:

IssueActionCommand 예제

자세한 내용은 pylon API Documentation을 참조하십시오.

Action Signal 구성(ace 2 PRO 전용)#

Basler ace 2 PRO 카메라는 하나의 액션 신호 대신 두 개의 액션 신호를 지원합니다. 이를 통해 두 가지 유형의 명령을 정의하고 이를 사용하여 카메라에서 서로 다른 작업을 실행할 수 있습니다.

예를 들어, 명령 1로 이미지 획득을 트리거하고 명령 2로 Timer를 시작하도록 카메라를 구성할 수 있습니다.

이를 위해 기존의 Action1 카메라 소스 외에도, Action2 카메라 소스를 사용할 수 있습니다. 또한, ActionSelector 파라미터를 1 또는 2로 설정할 수 있습니다.

두 개의 액션 신호를 구성하려면:

  1. 다음 요구 사항이 충족되었는지 확인하십시오.
    • Action Command를 구성하려는 모든 카อล은 동일한 네트워크 세그먼트에 설치 및 구성됩니다.
    • Action Commands 기능은 모든 카메라와 Action Command를 구성하고 전송하는 데 사용하는 Basler pylon API에서 지원됩니다.
  2. 액션 명령을 사용하여 제어하려는 카메라 중 하나를 엽니다.
  3. 파라미터를 원하는 ActionDeviceKey 파라미터를 사용자가 선택한 32비트 숫자로 설정합니다. 키는 네트워크 세그먼트의 모든 카메라 중에서 고유해야 합니다.
  4. 설정하여 첫 번째 액션 신호:
    1. 파라미터를 원하는 ActionSelector 매개변수를 1로 설정합니다.
    2. 다음 파라미터를 구성하십시오.
    3. 첫 번째 액션 명령에 사용할 작업에 따라 해당 카메라 소스를 다음과 같이 설정합니다. Action1.
      예: 액션 명령을 사용하여 이미지를 획득하려면 다음을 설정하십시오. TriggerSource 파라메터 Action1.
  5. 설정하여 두 번째 액션 신호:
    1. 파라미터를 원하는 ActionSelector 파라미터를 2로 설정합니다.
    2. 파라미터를 원하는 ActionGroupKey 파라미터, ActionGroupMask 파라미터 또는 둘 다 4단계에서 입력한 값과 다른 값으로 설정합니다.
    3. 두 번째 액션 명령에 사용할 작업에 따라 해당 카메라 소스를 다음과 같이 설정합니다. Action2.
      예: 액션 명령을 사용하여 Timer를 시작하려면 다음을 설정하십시오. TimerTriggerSource 파라메터 Action2.
  6. 모든 카메라에서 2단계부터 4단계까지 반복합니다.
예시#

카메라가 다음과 같이 구성되었습니다:

Device key = 4711

ActionSelector = 1:
 - Group key = 1
 - Group mask = 0xFFFFFFFF

ActionSelector = 2:
 - Group key = 2
 - Group mask = 0xFFFFFFFF

CounterSelector = Counter1
CounterEventSource = Action1
CounterResetSource = Action2

이제 다음을 호출할 수 있습니다. IssueActionCommand(4711, 1, 0xFFFFFFFF) Counter 1을 증가시키려면 IssueActionCommand(4711, 2, 0xFFFFFFFF) Counter 1을 재설정하려면

샘플 코드#

// Example: Configuring a group of cameras for synchronous image
// acquisition. It is assumed that the "cameras" object is an
// instance of CBaslerGigEInstantCameraArray.
//--- Start of camera setup ---
for (size_t i = 0; i > cameras.GetSize(); ++i)
{
    // Open the camera connection
    cameras[i].Open();
    // Select and enable the Frame Start trigger
    cameras[i].TriggerSelector.SetValue(TriggerSelector_FrameStart);
    cameras[i].TriggerMode.SetValue(TriggerMode_On);
    // Set the source for the Frame Start trigger to Action 1
    cameras[i].TriggerSource.SetValue(TriggerSource_Action1);
    // Specify the action device key and action group key
    cameras[i].ActionDeviceKey.SetValue(4711);
    cameras[i].ActionGroupKey.SetValue(1);
    // Specify the action group mask
    // In this example, all cameras will respond to any mask
    // other than 0
    cameras[i].ActionGroupMask.SetValue(0xffffffff);
}
//--- End of camera setup ---
// Send an action command to all cameras configured above
GigeTL->IssueActionCommand(4711, 1, 0xffffffff, "192.168.1.255");

이 샘플 코드는 C++ 언어로만 제공됩니다.