일상에 꼭 필요한 정보, 늘 함께하는 나침반 일상에 꼭 필요한 정보, 늘 함께하는 나침반

FIFO란? 먼저 들어온 데이터를 먼저 처리하는 원리

읽는 시간 약 7분

FIFO란 PLC에서 먼저 저장된 데이터를 가장 먼저 꺼내 처리하는 First In First Out 방식입니다. Queue 구조와 Write·Read Pointer를 이용한 데이터 관리 원리를 알아봅니다.

FIFO란 무엇이며 왜 사용할까?

FIFO는 First In First Out의 약자로, 가장 먼저 들어온 Data를 가장 먼저 꺼내 처리하는 Data Structure입니다. 우리말로는 선입선출 방식이라고 표현합니다. 자동화설비에서는 제품이나 작업정보가 들어온 순서대로 처리되어야 하는 경우가 많기 때문에 PLC에서도 FIFO가 널리 활용됩니다. 예를 들어 Conveyor에 제품 A, B, C가 순서대로 투입되었다면 FIFO에는 A가 먼저 저장되고 그다음 B와 C가 저장됩니다. 이후 Data를 꺼낼 때도 A, B, C 순서로 처리됩니다. 이러한 구조를 Queue라고도 합니다. PLC 제조사에 따라 FIFO Load, FIFO Unload, FFL, FFU 또는 Queue 관련 Instruction이 제공될 수 있으며 직접 Array와 Pointer를 이용하여 구현할 수도 있습니다. FIFO는 단순히 Data를 한 칸씩 이동시키는 기능이라기보다 Data가 들어온 순서를 보존하면서 저장과 인출을 관리하는 방식이라는 점이 중요합니다. 따라서 제품번호, 검사결과, 작업요청과 생산정보처럼 처리순서가 중요한 Data 관리에 적합합니다.

FIFO에는 데이터를 어떻게 저장하고 꺼낼까?

FIFO에는 일반적으로 Data를 넣는 Enqueue 또는 Load 동작과 Data를 꺼내는 Dequeue 또는 Unload 동작이 있습니다. 예를 들어 빈 FIFO에 100, 200, 300이라는 값이 차례대로 들어오면 Queue의 가장 앞에는 100이 위치합니다. 이후 첫 번째 Read 또는 Unload가 실행되면 100이 먼저 출력되고 다음에는 200이 처리됩니다. PLC에서는 Array의 모든 Data를 매번 실제로 이동시키는 방법도 사용할 수 있지만 효율적인 구현에서는 Read Pointer와 Write Pointer를 관리하는 Circular Buffer 구조를 사용할 수 있습니다. Write Pointer는 새로운 Data를 저장할 위치를 나타내고 Read Pointer는 다음에 꺼낼 Data의 위치를 나타냅니다. Pointer가 Array의 마지막 위치에 도달하면 처음으로 돌아가는 방식으로 Memory를 반복 사용할 수 있습니다. 다만 PLC 제조사의 FIFO Instruction은 내부적으로 다른 방식을 사용할 수 있으므로 직접 구현방식과 동일하다고 단정해서는 안 됩니다. 사용자는 Queue Length와 현재 저장된 Data Count를 함께 관리하여 비어 있는 상태와 가득 찬 상태를 구분해야 합니다.

PLC 자동화설비에서는 FIFO를 어디에 사용할까?

FIFO는 실제 제품의 투입순서와 Data 처리순서가 동일해야 하는 공정에서 특히 유용합니다. 예를 들어 Vision System이 Conveyor에 들어오는 제품을 순서대로 검사하고 검사결과를 PLC에 전달한다고 가정할 수 있습니다. PLC는 각 제품의 Product ID와 검사결과를 FIFO에 저장하고 Downstream Station에서 제품이 도착할 때 가장 먼저 저장된 Data를 꺼내 해당 제품의 처리조건으로 사용할 수 있습니다. 생산설비의 작업요청 Queue, Barcode Data, Recipe Request와 Communication Message를 순서대로 처리하는 데도 활용할 수 있습니다. 여러 작업이 동시에 요청되더라도 FIFO에 저장하면 요청순서를 유지하면서 하나씩 처리할 수 있기 때문입니다. 하지만 실제 제품의 순서가 중간에서 변경되거나 제품이 Conveyor에서 제거될 수 있는 설비에서는 단순 FIFO만으로 정확한 Tracking이 어려울 수 있습니다. 이런 경우에는 Product ID, Position Data와 Structure를 결합하여 개별 제품을 식별하는 방식이 필요합니다.

FIFO와 Shift Register는 무엇이 다를까?

FIFO와 Shift Register는 순서가 있는 Data를 관리한다는 점에서 비슷해 보이지만 목적과 동작방식에는 차이가 있습니다. Shift Register는 Trigger가 발생할 때 Bit나 Data를 한 위치씩 이동시키므로 Conveyor의 Station 또는 Pitch 이동과 Data 위치를 대응시키는 데 적합합니다. 반면 FIFO는 Data가 들어온 순서를 보존하고 가장 오래된 Data부터 꺼내는 Queue 관리가 핵심입니다. 예를 들어 제품이 5개의 Station을 이동할 때 각 Station 위치에 검사결과를 맞추려면 Shift Register가 직관적일 수 있습니다. 반대로 여러 작업요청이 발생하고 설비가 요청된 순서대로 하나씩 처리해야 한다면 FIFO가 적합합니다. FIFO에서는 저장위치 자체보다 어떤 Data가 가장 먼저 입력되었는지가 중요합니다. 또한 Bit뿐 아니라 INT, DINT, REAL 또는 PLC가 지원하는 Structure Data를 Queue로 관리할 수도 있습니다. 따라서 Shift Register는 위치의 순차이동, FIFO는 처리순서의 보존이라는 관점에서 구분하면 이해하기 쉽습니다.

FIFO를 사용할 때 어떤 점을 주의해야 할까?

FIFO Logic에서는 Queue가 가득 찬 Full 상태와 Data가 하나도 없는 Empty 상태를 반드시 관리해야 합니다. Full 상태에서 새로운 Data를 계속 저장하면 기존 Data를 덮어쓰거나 Instruction Error가 발생할 수 있으며 Empty 상태에서 Data를 읽으면 유효하지 않은 값이 처리될 수 있습니다. 따라서 Load 전에 Full 여부를 확인하고 Unload 전에 Data Count 또는 Empty 상태를 확인하는 Logic이 필요합니다. Trigger가 여러 PLC Scan 동안 TRUE로 유지되면 같은 Data가 여러 번 저장되거나 여러 Data가 연속으로 빠져나갈 수 있으므로 Rising Edge나 One Shot을 사용하는 것도 중요합니다. 설비정지나 Power Cycle 이후 Queue Data를 유지할 것인지 초기화할 것인지도 공정특성에 맞게 정의해야 합니다. Communication System과 연동할 때는 상대방이 Data를 정상적으로 수신했다는 Acknowledge를 확인한 뒤 Queue에서 제거하는 Handshake 방식이 유용할 수 있습니다. 결국 FIFO는 먼저 들어온 Data를 먼저 처리한다는 단순한 원칙을 기반으로 생산정보, 제품 Tracking과 작업요청을 순서대로 관리하는 중요한 PLC Data Processing 방식입니다.

jssj2627

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.