콘텐츠로 건너뛰기
STAGING SERVER
DEVELOPMENT SERVER

Action Commands#

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

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

pylon Viewer를 사용하여 action commands를 전송하거나 예약하려면 Action Commands (pylon Viewer) 기능을 사용하십시오.

기능 사용법#

Action Commands를 사용하는 이유#

action commands를 사용하여 예를 들어 다음 작업을 수행할 수 있습니다:

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

작동 원리#

Action commands는 GigE 네트워크의 여러 장치로 전송할 수 있는 브로드캐스트 프로토콜 메시지입니다.

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

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

정보

action command 매개변수 및 해당 구현에 대한 자세한 내용은 다음 문서를 참조하십시오:

Action Device Key#

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

Action Group Key#

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

Action Group Mask#

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

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

예시: 조립 라인에 6대의 카메라 그룹이 설치되어 있다고 가정해 보겠습니다. 특정 하위 그룹에서 작업을 실행하기 위해 카메라에 다음 group mask 번호가 할당되었습니다(샘플 값):

Camera Group Mask Number (Binary) Group Mask Number (Hexadecimal)
1 000001 0x1
2 000010 0x2
3 000100 0x4
4 001000 0x8
5 010000 0x10
6 100000 0x20

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

Broadcast Address#

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

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

설정 예시#

다음 예제 설정은 액션 명령의 기본 개념을 이해하는 데 도움이 됩니다.

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

액션 명령 예제 설정

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

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

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

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

Action Commands 사용#

카메라 구성#

카메라가 액션 명령을 수신하고 처리할 수 있도록 구성하려면 다음을 수행하십시오.

정보

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

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

정보

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

Action Command 실행#

액션 명령을 발행하려면 애플리케이션에서 다음을 호출하십시오. IssueActionCommand 메서드.

예:

IssueActionCommand 예시

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

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

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

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

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

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

  1. 다음 요구 사항이 충족되는지 확인하십시오.
    • 액션 명령을 구성하려는 모든 카อล은 동일한 네트워크 세그먼트에 설치되고 구성되어야 합니다.
    • Action Commands 기능은 모든 카메라와 액션 명령을 구성하고 전송하는 데 사용하는 Basler pylon API에서 지원됩니다.
  2. 액션 명령을 사용하여 제어하려는 카메라 중 하나를 엽니다.
  3. 다음 값 중 하나로 ActionDeviceKey 파라미터를 원하는 32비트 숫자로 설정합니다. 키는 네트워크 세그먼트의 모든 카메라 중에서 고유해야 합니다.
  4. 이 시퀀스 세트의 first 액션 신호:
    1. 다음 값 중 하나로 ActionSelector 파라미터를 1로 설정합니다.
    2. 다음 파라미터를 구성하십시오.
    3. 첫 번째 액션 명령에 사용할 작업에 따라 해당 카메라 소스를 다음과 같이 설정합니다. Action1.
      예: 액션 명령을 사용하여 이미지를 취득하려면 다음을 설정하십시오. TriggerSource 매개변수: Action1.
  5. 이 시퀀스 세트의 second 액션 신호:
    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++ 언어로만 제공됩니다.