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

LIFO란? 마지막 데이터를 먼저 처리하는 원리

읽는 시간 약 7분

LIFO란 PLC에서 가장 마지막에 저장된 데이터를 가장 먼저 꺼내 처리하는 Last In First Out 방식입니다. Stack과 Push·Pop을 이용한 데이터 처리 원리를 알아봅니다.

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

LIFO는 Last In First Out의 약자로, 가장 마지막에 들어온 Data를 가장 먼저 꺼내 처리하는 Data Structure입니다. 우리말로는 후입선출 방식이라고 합니다. 책이나 상자를 위로 차곡차곡 쌓아 놓은 뒤 가장 위에 있는 것부터 꺼내는 모습을 생각하면 이해하기 쉽습니다. 이러한 구조를 Stack이라고 하며 Data를 추가하는 동작을 Push, 가장 최근 Data를 꺼내는 동작을 Pop이라고 표현합니다. 예를 들어 LIFO에 A, B, C를 순서대로 저장했다면 가장 마지막에 저장된 C가 먼저 처리되고 그다음 B, A 순서로 꺼내집니다. PLC 제조사와 Programming Environment에 따라 LIFO Load·Unload, Stack 또는 관련 Instruction을 제공할 수 있으며 Array와 Index를 이용하여 직접 구현할 수도 있습니다. LIFO는 FIFO처럼 제품이 들어온 순서를 그대로 유지하는 것이 아니라 가장 최근에 발생한 Data나 작업을 우선적으로 처리해야 하는 경우에 적합합니다. 따라서 PLC에서는 최근 상태 저장, 임시 작업관리와 일부 순서복원 Logic 등에 활용할 수 있습니다.

Stack에서 Push와 Pop은 어떻게 동작할까?

LIFO의 핵심은 Stack의 가장 위쪽 위치를 나타내는 Stack Pointer 또는 Index를 관리하는 것입니다. 예를 들어 10개의 Data를 저장할 수 있는 Array를 Stack으로 사용한다고 가정할 수 있습니다. 새로운 Data가 들어오면 현재 Pointer가 가리키는 위치에 값을 저장하고 Pointer를 다음 위치로 변경하는 방식으로 Push를 구현할 수 있습니다. 이후 Pop 명령이 발생하면 Pointer를 이전 위치로 이동한 다음 그곳에 저장된 가장 최근 Data를 읽어오는 방식으로 구현할 수 있습니다. 정확한 Pointer 증가·감소 순서는 Program 설계와 PLC Instruction 정의에 따라 달라질 수 있습니다. 중요한 것은 가장 최근에 Push된 Data가 다음 Pop의 대상이 된다는 것입니다. 일부 PLC에는 전용 LIFO Instruction이 제공되지만 그렇지 않은 경우에도 Array, INT 또는 DINT Index와 비교명령을 이용하여 Stack Logic을 구성할 수 있습니다. 이때 현재 저장된 Data 개수를 별도로 관리하면 Stack이 비어 있는지 또는 최대용량까지 가득 찼는지 판단하기 쉬워집니다.

PLC에서는 LIFO를 어떤 경우에 사용할까?

LIFO는 FIFO보다 생산라인의 일반적인 제품 Tracking에 사용되는 경우는 적지만 최근 Data부터 역순으로 처리해야 하는 Logic에서는 유용합니다. 예를 들어 자동화설비에서 작업단계를 임시로 저장했다가 이전 상태로 역순 복귀해야 하는 기능을 구현한다면 수행한 Step이나 Position을 Stack에 Push하고 복귀할 때 Pop하여 최근 위치부터 역순으로 처리할 수 있습니다. 최근 발생한 작업요청이나 임시 Data를 우선적으로 확인하는 Logic에도 응용할 수 있습니다. Program 내부에서는 중첩된 상태나 복귀정보를 관리하는 Stack 개념을 이해하는 데도 도움이 됩니다. 다만 PLC의 CPU가 Function Call이나 Program 실행을 위해 내부적으로 사용하는 System Stack과 사용자가 Application Logic으로 만드는 LIFO Data Structure는 구분해야 합니다. System Stack을 일반 User Program의 LIFO Storage처럼 직접 제어할 수 있다고 생각해서는 안 됩니다. 실제 설비에서 LIFO를 적용할 때는 가장 최근 Data를 먼저 처리하는 것이 공정순서에 적합한지부터 확인해야 합니다.

LIFO와 FIFO는 무엇이 다를까?

LIFO와 FIFO의 가장 큰 차이는 Data를 꺼내는 순서입니다. FIFO는 First In First Out 방식이므로 가장 먼저 들어온 Data를 먼저 처리합니다. 반대로 LIFO는 Last In First Out 방식으로 가장 마지막에 저장된 Data를 먼저 처리합니다. A, B, C를 차례대로 저장했다면 FIFO에서는 A→B→C 순서로 나오지만 LIFO에서는 C→B→A 순서로 처리됩니다. 따라서 FIFO는 Queue, LIFO는 Stack이라는 Data Structure로 표현합니다. Conveyor에 제품이 들어온 순서대로 다음 Process를 진행해야 한다면 FIFO가 자연스럽지만 최근 작업부터 역순으로 되돌아가야 하는 Logic에서는 LIFO가 더 적합할 수 있습니다. 두 방식 모두 Array를 Storage로 활용할 수 있지만 FIFO는 일반적으로 Read와 Write 위치를 별도로 관리하고 LIFO는 Stack의 Top을 나타내는 Pointer를 중심으로 관리합니다. 어떤 방식을 사용할지는 단순히 Instruction 사용편의성이 아니라 실제 Process가 요구하는 Data 처리순서에 따라 결정해야 합니다.

LIFO를 사용할 때 무엇을 주의해야 할까?

LIFO Logic에서는 Stack Overflow와 Underflow를 방지하는 것이 중요합니다. Stack이 최대용량까지 가득 찬 상태에서 새로운 Data를 Push하면 저장범위를 벗어나거나 기존 Data를 잘못 덮어쓸 수 있습니다. 반대로 Stack이 비어 있는 상태에서 Pop을 실행하면 유효하지 않은 Data를 읽게 될 수 있습니다. 따라서 Push 전에 Full Condition을 확인하고 Pop 전에 Empty Condition을 검사해야 합니다. Push나 Pop Trigger가 여러 PLC Scan 동안 TRUE로 유지되면 같은 명령이 반복 실행될 수 있으므로 필요에 따라 Rising Edge 또는 One Shot을 적용해야 합니다. 설비정지와 Power Cycle 이후 Stack Data와 Pointer를 유지할지 초기화할지도 명확하게 정해야 합니다. Retentive Memory를 사용하더라도 실제 Equipment State와 저장된 Stack Data가 일치하지 않으면 잘못된 Sequence가 실행될 수 있기 때문입니다. 또한 Stack에 Structure와 같은 복합 Data를 저장한다면 Memory 사용량과 Copy 처리시간도 고려해야 합니다. 결국 LIFO는 가장 최근에 저장된 Data부터 역순으로 처리하는 Stack 기반의 Data Management 방식으로, PLC에서 순서복원과 최근 Data 우선처리가 필요한 Logic을 구현하는 데 활용할 수 있습니다.

jssj2627

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

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

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