Operator Library: Hardware Platform
이 연산자는 CXP 카메라와 VisualApplets 간의 이미지 데이터 인터페이스를 나타냅니다. 이 연산자는 단일 채널, 듀얼 채널 또는 쿼드 채널 CXP 인터페이스에 사용할 수 있습니다. 인터페이스 유형은 ConnectionCount 매개변수를 통해 선택됩니다. 이 연산자는 카메라가 어떤 형식으로 데이터를 전송하든 상관없이 원시 이미지 데이터를 출력합니다. 그런 다음 이 이미지 데이터를 카메라에서 전송하는 형식으로 변환해야 합니다. 이미지 데이터를 변환하려면 원시 바이트 값을 집계하고 픽셀 값으로 형변환하는 데 적합한 연산자를 사용하십시오 . 작동 중 발생하는 특정 상황은 아래에 설명된 대로 이벤트 시스템을 통해 전달될 수 있습니다. 또한, 이 연산자에는 카메라와의 연결 상태를 알리는 다양한 매개변수가 있습니다.
오퍼레이터가 프레임 크기가 CXP 이미지 헤더에서 카메라가 지정한 크기보다 크거나 작다는 것을 감지하면 안전 회로가 작동합니다. 이때 운영자는 초과된 픽셀과 라인을 잘라내어, VisualApplets 가 항상 이미지 헤더에 정의된 프레임 크기를 인식하도록 합니다. 만약 프레임의 크기가 이미지 헤더에 지정된 크기보다 작을 경우, 운영자는 수신된 프레임을 미정의 데이터로 채워 이미지 헤더에 정의된 지정 프레임 크기를 맞춥니다. 더 작은 프레임을 채우는 과정에서 다음 프레임들이 손실될 수 있습니다. 이러한 손실은 이벤트 단위로 소프트웨어에 보고되며, 크기 불일치 역시 별도의 이벤트를 발생시킵니다.
| 하드웨어 플랫폼별 지원 여부 |
|---|
| imaFlex CXP-12 Penta |
| imaFlex CXP-12 Quad |
~에서의 인스턴스화 VisualApplets
오퍼레이터는 출력 O로 이미지 데이터를 제공합니다. 이 출력은 항상 존재합니다. 이 표준 출력 포트 외에도 CXP 헤더 메타데이터를 위한 선택적 MetaDataO 출력을 구성할 수 있습니다. 오퍼레이터 인스턴스화 중에 다음 팝업 대화상자가 나타납니다.

여기서 선택적 메타데이터 포트를 지정할 수 있습니다. 포트 가용성을 "0"(기본값)으로 설정하면 오퍼레이터에 포트가 표시되지 않습니다. 포트 가용성을 1로 설정하면 오퍼레이터 인터페이스에서 메타데이터 포트를 사용할 수 있습니다.
선택적 MetaDataO 포트
32비트 출력의 형식은 다음 그림과 같습니다.

각 CXP 프레임은 이에 상응하는 오류가 없는 이미지 헤더를 제공합니다. 이미지 헤더에 오류가 있는 경우, 이미지 스트림 데이터는 VisualApplets 파이프라인으로 전달되지 않습니다. 압축된 이미지 헤더는 6개의 워드로 구성됩니다. 마지막 바이트는 내부 용도로만 사용되는 추가 정보를 담는 데 사용됩니다. 특히, HeaderError 비트는 이미지 헤더 자체에 오류가 발생했는지 여부를 알려줍니다.
| 이미지 헤더 | 설명 |
|---|---|
| StreamId | CXP 스트림의 ID |
| 태그 | 16비트 소스 이미지 인덱스. 전송되는 각 이미지마다 이 값이 증가하며, 0xFFFF에 도달하면 0으로 되돌아갑니다. 동일한 이미지와 관련된 데이터를 포함하는 각 스트림(다중 탭 스트림의 경우)에서는 동일한 번호를 사용해야 합니다. |
| XSize | 이미지의 너비를 픽셀 단위로 나타내는 24비트 값입니다. |
| XOff | 전체 기기 이미지의 가장 왼쪽 픽셀을 기준으로 한 이미지의 수평 오프셋을 픽셀 단위로 나타내는 24비트 값입니다. |
| YSize | 이미지 높이를 픽셀 단위로 나타내는 24비트 값입니다. 이 값은 라인 스캔 이미지의 경우 0으로 설정됩니다. CameraScanMode 매개변수는 항상 이 값에서 읽은 카메라 유형을 표시합니다. O.Img 프로토콜 가 VALT_LINE1D로 설정된 경우, YSize는 처리 과정에서 무시되며 연산자는 수신되는 모든 데이터를 끝없는 라인 스트림으로 출력합니다. 이미지 프로토콜이 VALT_IMAGE2D로 설정된 경우에도 YSize=0이면 끝없는 라인 스트림이 생성됩니다. |
| YOff | 전체 장치 이미지의 최상단 라인을 기준으로 한 이미지의 수직 오프셋을 픽셀 단위로 나타내는 24비트 값입니다. 라인 스캔 이미지의 경우 이 값은 0으로 설정됩니다. |
| DSizeL | 이미지의 한 줄당 데이터 워드 수를 나타내는 24비트 값 . |
| PixelF | 픽셀 형식을 나타내는 16비트 값입니다. |
| TapG | 탭의 기하학적 구조를 나타내는 16비트 값입니다. |
| Flags | 이미지 플래그입니다. |
| x-Mirror | (아직 사용되지 않음). 입력 이미지가 x-미러링되었는지 아니면 그렇지 않은지를 나타냅니다. |
| y-Mirror | (아직 사용되지 않음). 입력 이미지가 Y축 대칭인지 아니인지를 나타냅니다. |
| HeaderError |
1: 이미지 헤더에 오류가 있어 프레임이 손실된 것으로 판정되었습니다. 연산자의 출력 데이터 스트림에는 해당 이미지 데이터가 존재하지 않습니다. 0: 이미지 헤더가 올바르며, 연산자 출력 데이터 스트림에 해당 이미지 데이터가 존재합니다. |
![]() |
이미지 프로토콜: 면취 및 라인 스캔 카메라 |
|---|---|
|
카메라 조작자 출력에 대한 이미지 프로토콜에는 두 가지 서로 다른 요인이 영향을 미칩니다.
CameraScanMode 매개변수는 항상 CXP 헤더에서 읽은 카메라 유형을 표시합니다. O.Img 프로토콜이 VALT_LINE1D로 설정된 경우, 처리 과정에서 YSize는 무시되며, 오퍼레이터는 수신되는 모든 데이터를 끝없는 라인 스트림으로 출력합니다. 이미지 프로토콜이 VALT_IMAGE2D로 설정된 경우, YSize=0일 때도 끝없는 라인 스트림이 생성되며, 이로 인해 이미지가 O Max Img Height를 초과하게 됩니다. 크기가 너무 큰 이미지는 설계에서 CxpCamera 연산자 뒤에 위치한 연산자에서 정의되지 않은 동작을 유발할 수 있습니다. 이를 방지하려면, 예를 들어 SplitImage 연산자를 사용하여 들어오는 라인 스트림을 여러 이미지로 분할하는 것이 권장됩니다. |
Device Resource Usage
이 연산자는 ConnectionCount 매개변수의 선택에 따라 하나 이상의CameraPort 유형 리소스를 사용합니다. 이벤트 시스템의 경우 EventPort 유형의 리소스가 사용됩니다. ConnectionCount가 X4 (4채널)로 설정된 경우, 리소스 대화 상자는 다음과 같이 표시됩니다:

![]() |
이미지 너비 및 이미지 높이 수정 |
|---|---|
|
출력 링크의 최대 이미지 너비 및 높이 속성을 통해 너비와 높이를 카메라 고유 설정에 맞게 조정할 수 있습니다. 단, 연산자 포트 O의 최대 이미지 너비는 포트 O의 Parallelism으로 나누어 떨어져야 합니다. 따라서 최대 이미지 너비가 포트 O의 Parallelism으로 나누어 떨어지도록 하십시오! |
Error Handling and Event System
운영자가 수신된 재구성된 프레임의 크기가 CXP 이미지 헤더에서 카메라가 지정한 크기보다 크거나 작음을 감지하면 안전 회로가 작동합니다. 그러면 운영자는 초과된 픽셀과 라인을 잘라내어, 후속 처리 파이프라인이 항상 이미지 헤더에 정의된 프레임 크기를 인식하도록 합니다. 수신된 프레임의 크기가 이미지 헤더에 명시된 크기보다 작을 경우, 운영자는 수신된 프레임을 정의되지 않은 데이터로 채워 이미지 헤더에 정의된 지정된 프레임 크기를 달성합니다. 작은 프레임을 채우는 과정에서 후속 프레임이 손실될 수 있습니다. 이 손실은 이벤트 단위로 소프트웨어에 보고됩니다(다음 단락 참조). 크기가 일치하지 않는 경우에도 이벤트가 발생합니다.
For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

-
word [0]:
-
bits [0:15]: 이벤트가 발생한 CXP 이미지 태그.
-
-
word [1]:
-
bits [8:15]: 이벤트가 발생한 스트림 ID.
-
bits [0:7]: 예약됨, 무시함.
-
-
word [2]:
-
비트 [0]: CRC 오류가 발생했습니다.
-
비트 [1]: 이미지 헤더에서 스트림 마커 오류가 감지되었습니다.
-
bit [2]: 이미지 헤더에서 오류가 감지되었으나 이를 수정할 수 없었습니다.
-
비트 [3]: 프레임 크기 오류가 감지되었습니다. 즉, CXP 이미지 헤더에 정의된 이미지 크기가 전송된 패킷에서 재구성된 프레임 크기와 일치하지 않습니다. 전송된 패킷에서 재구성된 프레임 크기와 일치하지 않습니다. 이는 카메라가 이미지 헤더에 특정 정보를 기재했으나 헤더에 명시된 양과 다른 양의 데이터를 전송할 때 발생합니다.
-
비트 [4:15]: 예약되어 있으므로 무시하십시오.
-
-
word [3]:
-
bit [0]: 이벤트 유형, 0 = 손상된 엔티티, 1 = 분실된 엔티티.
-
손상된 엔티티 이는 오류가 프레임 내에서 발생했으며, 해당 프레임이 이미 VisualApplets 파이프라인으로 불러와졌음을 의미합니다.
-
손실된 엔티티 이는 프레임이 다음 운영자에게 전달되기 전에 오류가 발생했으며, 해당 프레임이 카메라 운영자에 의해 폐기되었음을 의미합니다.
-
손상된 엔티티가 감지되면, 작업자는 CXP 이미지 헤더 정의에 따라 프레임을 채워, 후속 작업자들이 정의되지 않은 동작을 일으키지 않도록 합니다. 이 채우기 과정에서 새로운 프레임이 도착할 수 있으며, 이 경우 해당 프레임은 손실됩니다. 또한 카메라가 프레임 태그에 따라 간격이 있는 데이터를 전송할 때에도 엔티티 손실 이벤트가 발생합니다.
-
-
비트 [1]: 유형에 대한 이벤트 손실 손상된 엔티티 가 발생했습니다. 이는 앞서 발생한 유형의 '손상된 엔티티' 에 속하는 이전 이벤트들이 손실되었음을 의미합니다. 이는 런타임 소프트웨어가 이벤트에 반응하지 않아 내부 이벤트 큐가 가득 찼을 때 발생합니다.
-
bit [2]: 유형에 대한 이벤트 손실 'Lost Entity' 유형의 이벤트 손실이 발생했습니다. 이는 'Lost Entity' 유형의 이전 이벤트들이 손실되었음을 의미합니다. 이는 런타임 소프트웨어가 이벤트에 반응하지 않아 내부 이벤트 큐가 가득 찼을 때 발생합니다.
-
bits [3:15]: 손실된 손실된 엔티티 이벤트 수.
-
이벤트에는 두 가지 유형이 있습니다: 손상된 엔티티에 대한 이벤트와 손실된 엔티티에 대한 이벤트입니다. 3번째 워드의 0번 비트는 어떤 종류의 이벤트가 발생했는지를 나타냅니다. 이벤트 버퍼가 가득 차면 이벤트가 손실될 수 있습니다. 손상된 엔티티를 나타내는 이벤트가 손실되면, 3번째 워드의 1번 비트가 설정됩니다. 손실된 엔티티를 나타내는 이벤트가 손실되면, 3번 워드의 2번 비트가 설정되고, 3번에서 15번 비트 는 손실된 프레임을 나타내는 손실된 이벤트 수를 제공합니다. 2번 비트가 설정되어 있지만 카운터가 0인 경우, 카운터 오버플로가 발생한 것을 의미합니다.
모든 이벤트는 소프트웨어 인터럽트를 발생시킵니다. 이벤트 수를 줄이기 위해, 동일한 프레임 태그를 가진 여러 이벤트가 합쳐질 수 있습니다. 이 경우 일부 오류 플래그가 통합됩니다. 이벤트가 누락된 경우, 누락된 이벤트 바로 앞의 이벤트에는 누락된 이벤트에 대한 정보가 포함되어 있으므로, 동일한 프레임 태그를 가진 이후의 이벤트와 더 이상 합쳐질 수 없습니다.
CRC 오류로 인해 발생하는 이벤트는 프레임 태그를 보고하지만, 이 태그는 CRC 오류가 발생한 프레임과 정확히 일치하지 않을 수 있습니다. 프레임 태그는 앞선 프레임이나 뒤따르는 프레임의 것일 수 있습니다. 이러한 현상은 카메라가 2개 이상의 프레임 간 전환이 포함된 CXP 패킷을 전송할 때만 발생할 수 있습니다. CRC 계산은 패킷 끝에서 완료되지만, 스트림 데이터는 실시간으로 재구성됩니다. 즉, 운영자가 이전 프레임을 이미 전송한 후에 CRC 오류가 탐지되는 상황이 발생할 수 있습니다. 일반적인 상황에서, 즉 카메라 패킷에 현재 진행 중인 프레임의 끝과 다음 프레임의 시작 부분 데이터가 모두 포함되어 있지 않은 경우, CRC 오류 발생 시 프레임 태그는 항상 올바를 것입니다. 그 외의 모든 경우, 전체 프레임 스트림 데이터가 최대 패킷 크기인 8k보다 작다면, 1개의 패킷 내에서 단 1개의 프레임만 중복될 수 있습니다. 이 경우 소프트웨어 애플리케이션은 프레임 태그가 -1인 이전 프레임과 프레임 태그가 +1인 다음 프레임도 잠재적으로 손상되었을 가능성이 있는 것으로 간주해야 합니다.
| ConnectionCount | |
|---|---|
| Type | Static Write 파라미터 |
| Default | X1 |
| Range | {X1, X2, X4} |
|
매개변수 ConnectionCount는 CXP 링크로 집계되는 CXP 레인의 수를 정의합니다. 사용되는 연결 포트의 인덱스는 CameraPort 유형의 리소스에 의해 처리됩니다. 포트 리소스의 수는 연결 수와 일치합니다(예: X2: 두 개의 CameraPort 리소스 항목). 하나 이상의 CxpCamera 연산자를 인스턴스화할 때(예: 듀얼 카메라 애플릿의 경우), 동일한 인덱스를 가진 여러 리소스가 사용되거나 소비되는 CameraPort 리소스 소비량이 최대 4개를 초과할 때 리소스 충돌이 발생할 수 있습니다. 이 경우 설계 규칙 검사에서 오류가 보고됩니다. |
|
| 상태 초기화 | |
|---|---|
| Type | Dynamic Write 파라미터 |
| Default | Off |
| Range | {꺼짐, 켜짐} |
|
ResetStatus 매개변수는 카메라 통계, 즉 오류 카운터를 초기화합니다. |
|
| UsedConnections | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | {1,2,4} |
|
매개변수 UsedConnections는 실행 시점에 디스커버리 소프트웨어에 의해 구성된 CXP 레인의 수를 나타냅니다. |
|
| PacketTagErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
매개변수 PacketTagErrorCount는 수신된 패킷 중 CXP 표준에 따라 예상되는 태그와 호환되지 않는 태그를 가진 패킷의 수치를 나타냅니다. 특히, 이 값은 후속 스트림 패킷 태그 열거에서 간격이 관찰될 때 증가합니다. 이 매개변수는 13 비트 폭을 가지며, 비트 [11:0]은 실제 카운터 값을 나타내고 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시되어야 합니다. |
|
| ImageTag 오류 개수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 매개변수는 이미지 헤더 태그, CXP 표준에 따른 예상 태그, 그리고 수신된 태그 사이에서 발생하는 불일치 횟수를 계산합니다. 이 매개변수는 13비트 폭이며, 여기서 비트 [11:0]은 실제 카운터 값을 나타내고, 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시되어야 합니다. |
|
| StreamId 오류 횟수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 매개변수는 스트림 패킷에서 수신된 스트림 ID 값이 이미지 헤더에 지정된 스트림 ID 값과 일치하지 않는 빈도를 계산합니다. 이 매개변수의 비트 폭은 13비트이며, 여기서 비트 [11:0]은 실제 카운터 값을 나타내고, 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시되어야 합니다. |
|
| 수정된 오류 수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 매개변수는 이미지 헤더나 라인 마커에서 감지된 오류 중 수정된 개수를 계산합니다. 이 매개변수는 13비트 폭이며, 비트 [11:0]은 실제 카운터 값을 나타내고, 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시되어야 합니다. |
|
| 수정되지 않은 오류 수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 매개변수는 이미지 헤더나 라인 마커에서 감지된 오류 중, 동일한 바이트 내의 다중 비트 오류로 인해 수정할 수 없었던 오류의 수를 집계합니다. 이 매개변수는 13비트 폭이며, 비트 [11:0]은 실제 카운터 값을 나타내고, 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시 처리되어야 합니다. |
|
| 패킷 버퍼 오버플로 횟수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 매개변수는 집계 모드에서 채널 본딩 시 패킷 버퍼 오버플로가 발생하는 빈도를 집계합니다. 이 매개변수는 ConnectionCount = X2 또는 X4인 경우에만 적용됩니다. 이 매개변수는 13비트 폭이며, 비트 [11:0]은 실제 카운터 값을 나타내고, 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시(don't care)로 처리되어야 합니다. |
|
| 패킷 버퍼 오버플로 원본 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0x0 : 0xf] |
|
이 매개변수는 4개의 잠재적 CXP 채널 중 어느 채널에서 패킷 버퍼 오버플로가 발생했는지 조회하기 위한 비트 마스크를 구현합니다. 이 매개변수의 너비는 ConnectionCount 매개변수에 따라 달라집니다. X1 모드에서는 이 매개변수의 폭이 1비트이며, X2 모드에서는 이 매개변수의 폭이 2비트이며, X4모드에서는 매개변수 폭이 4비트입니다. 순서는 다음과 같습니다: LSB = 모드에서는 매개변수 폭이 4비트입니다. 순서는 다음과 같습니다: LSB = 가장 낮은 CXP 채널 번호, MSB = 운영자가 할당한 가장 높은 CXP 채널 번호. |
|
| 카메라 스캔 모드 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | {영역,선} |
|
수신된 이미지 헤더에는 스트림이 영역 스캔 (YSize > 0)용인지, 아니면 라인 스캔 (YSize = 0)용인지에 대한 정보가 포함되어 있습니다. 이 매개변수는 마지막으로 유효하게 수신된 스트림 이미지 헤더 정보를 나타냅니다. |
|
| 오류 개수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 매개변수는 CXP 스트림 마커와 헤더 또는 라인 마커의 순서가 잘못된 횟수를 집계합니다. 이 매개변수는 13비트 폭이며, 비트 [11:0]은 실제 카운터 값을 나타내고, 비트 [12]는 카운터 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, 카운터 값은 무시되어야 합니다. |
|
| 예상치 못한 시작 데이터 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | {false, true} |
|
이 매개변수는 연산자 재설정 후 첫 번째 데이터 값이 예상치 못한 경우, 즉, 그 전에 이미지 헤더가 수신되지 않은 오류 상황을 감지합니다. 이러한 상황은 카메라나 프레임 그래버 펌웨어의 구현 오류, 또는 검색 절차에 대한 잘못된 소프트웨어 제어 때문에 발생할 수 있습니다. 또한, 카메라의 하드웨어 결함으로 인해 이론적으로 이러한 상황이 발생할 수도 있습니다. |
|
| FrameLostCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 33554431] |
|
이 파라미터는 이미지 취득 중 손실되어 VisualApplets 파이프라인으로 전송되지 않은 프레임 수를 카운트합니다. 이미지 헤더에서 에러가 감지되거나 프레임이 다른 프레임과 겹칠 때 프레임이 손실됩니다. 이 파라미터는 25비트 너비이며, [23:0]비트는 실제 Counter 값을 나타내고 [24]비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정되면 Counter 값은 무시해도 됩니다. |
|
| FrameCorruptedCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 33554431] |
|
이 파라미터는 이미지 취득 중 손상된 프레임을 카운트합니다. 손상된 프레임은 에러 픽셀이 포함된 상태로 VisualApplets 파이프라인으로 전송되는 프레임을 의미합니다. 이 파라미터는 25비트 너비이며, [23:0]비트는 실제 Counter 값을 나타내고 [24]비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정되면 Counter 값은 무시해도 됩니다. |
|
다음 예제에서는 CxpCamera 연산자의 사용법을 보여줍니다.
-
예시 - 기본 습득
-
예시 - 기본 습득
-
'Area Scan Trigger for imaFlex CXP-12 Quad'
CoaXPress12용 영역 스캔 트리거가 제공됩니다. 외부 소스, 내부 주파수 생성기 또는 소프트웨어 트리거 펄스를 트리거 생성에 사용할 수 있습니다.
-
'Line Scan Trigger for imaFlex CXP-12 Quad Using Signal Operators'
CoaXPress12용 라인 스캔 트리거가 제공됩니다. 이 트리거에는 캡처 게이트를 사용하는 이미지 트리거와 다기능 라인 트리거가 포함됩니다. 트리거 생성을 위해 외부 소스, 내부 주파수 생성기 또는 소프트웨어 트리거 펄스를 사용할 수 있습니다.

![[중요]](../common/images/admon/important.png)

이전

