SFC란?|Step·Transition으로 공정을 표현하는 PLC 언어
SFC는 PLC의 순차 공정을 Step과 Transition으로 표현하는 프로그래밍 방식입니다. SFC의 기본 구조와 Action, Transition Condition, Sequence Control과의 관계 및 설계 시 주의사항을 알아봅니다.
자동화 설비에서는 제품 투입부터 위치 확인, 고정, 가공, 검사, 배출까지 여러 공정이 정해진 순서에 따라 진행됩니다.
이러한 공정을 Ladder Diagram으로만 작성하면 설비가 복잡해질수록 현재 어느 단계가 실행되고 있으며 어떤 조건에서 다음 단계로 이동하는지 파악하기 어려워질 수 있습니다.
이때 순차적인 공정을 Step과 Transition을 이용해 흐름도처럼 표현하는 방법이 SFC입니다.
SFC를 이해하면 PLC 프로그램을 단순한 접점과 Coil의 조합이 아니라 전체 공정의 진행 흐름을 중심으로 바라볼 수 있습니다.
SFC란 무엇일까?
SFC는 Sequential Function Chart의 약자로 순차적으로 진행되는 제어공정을 Step과 Transition을 이용하여 표현하는 PLC 프로그래밍 언어입니다.
SFC는 IEC 61131-3에서 다루는 PLC 프로그래밍 언어 중 하나로, 공정의 진행순서를 시각적으로 표현하는 데 적합합니다.
기본적인 구조는 다음과 같이 이해할 수 있습니다.
Initial Step
↓
Transition 조건
↓
Step A
↓
Transition 조건
↓
Step B
↓
Transition 조건
↓
Step C
Step에서는 현재 단계에서 수행해야 할 동작을 정의하고 Transition에서는 다음 Step으로 넘어가기 위한 조건을 정의합니다.
따라서 SFC를 보면 현재 어떤 공정이 실행되고 있고 어떤 조건이 충족되어야 다음 공정으로 넘어가는지 비교적 직관적으로 파악할 수 있습니다.
SFC의 Step이란 무엇일까?
Step은 SFC에서 특정 공정상태 또는 동작단계를 나타냅니다.
예를 들어 자동 가공설비의 공정을 다음과 같이 나눌 수 있습니다.
| Step | 공정 | 주요 동작 |
|---|---|---|
| Initial | 초기 대기 | 운전 준비 |
| Product Check | 제품 확인 | 제품 센서 확인 |
| Clamp | 제품 고정 | Clamp 전진 |
| Processing | 가공 | 가공장치 운전 |
| Return | 복귀 | 실린더 후진 |
| Unclamp | 고정 해제 | Clamp 후진 |
| Discharge | 배출 | 제품 배출 |
SFC에서는 특정 Step이 활성화되면 해당 Step에 연결된 동작을 실행할 수 있습니다.
예를 들어 Clamp Step이 Active 상태일 때 Clamp Solenoid를 동작시키는 방식입니다.
중요한 것은 Step이 단순한 프로그램 번호가 아니라 현재 공정이 어떤 상태에 있는지를 나타내는 논리적인 상태라는 점입니다.
Initial Step은 어떤 역할을 할까?
SFC에는 일반적으로 Sequence가 시작되는 위치를 나타내는 Initial Step이 있습니다.
PLC의 SFC 실행이 초기화될 때 시작점 역할을 하는 Step입니다.
예를 들어 자동화설비에서는 Initial Step을 설비 대기상태로 구성할 수 있습니다.
Initial Step에서는 장치를 무조건 움직이기보다 현재 운전모드와 장치상태, 초기조건 등을 확인하도록 구성할 수 있습니다.
Initial Step → 운전 준비조건 확인 → Start 조건 → 다음 Step
다만 PLC가 RUN 상태가 되었다는 이유만으로 실제 기계를 강제로 원위치로 이동시키는 방식은 설비에 따라 적절하지 않을 수 있습니다.
설비 내부에 제품이 남아 있거나 장치가 중간 위치에 있을 수 있기 때문입니다.
따라서 초기 Step에서도 실제 센서와 장치상태를 확인하고 필요한 경우 별도의 Initialization 또는 Recovery 절차를 구성하는 것이 중요합니다.
Transition이란 무엇일까?
Transition은 현재 Step에서 다음 Step으로 이동하기 위한 전환조건입니다.
SFC에서 Step만큼 중요한 요소입니다.
예를 들어 Clamp Step이 실행되고 있다고 가정해 보겠습니다.
Clamp 전진 출력이 발생했다고 바로 다음 Step으로 이동하는 것이 아니라 Clamp Forward Sensor가 확인되었을 때 다음 Step으로 이동하도록 구성할 수 있습니다.
Clamp Step
↓
Clamp 전진 완료 센서 = ON
↓
Processing Step
여기서 Clamp 전진 완료 센서 = ON이 Transition Condition입니다.
Transition에는 센서뿐 아니라 Timer 완료, 작업자 명령, 계산결과, 다른 장치의 완료신호 등 다양한 조건을 사용할 수 있습니다.
SFC에서는 Step의 동작과 Step 전환조건을 명확하게 구분하는 것이 중요합니다.
Action은 어떤 기능일까?
SFC에서는 Step이 활성화되어 있을 때 실행해야 하는 동작을 Action으로 연결할 수 있습니다.
예를 들어 Motor Run Step에서는 Motor Run 명령을 실행하고 Heating Step에서는 Heater 제어 프로그램을 실행할 수 있습니다.
개념적으로 보면 다음과 같습니다.
Step = Clamp
Action = Clamp Forward Output
또는
Step = Processing
Action = Processing Motor Run
실제 SFC의 Action 표현과 실행방식은 PLC 제조사와 개발환경에 따라 차이가 있습니다.
어떤 시스템에서는 Step 내부에 직접 프로그램을 작성할 수 있고 다른 시스템에서는 별도의 Ladder, ST 등의 프로그램 블록을 Action으로 연결할 수 있습니다.
따라서 SFC를 사용할 때는 해당 PLC의 Step과 Action 실행규칙을 확인해야 합니다.
SFC는 Sequence Control과 무엇이 다를까?
Sequence Control은 설비를 정해진 순서에 따라 제어하는 제어 개념입니다.
SFC는 이러한 Sequence Control을 구현하고 표현할 수 있는 PLC 프로그래밍 언어 또는 표현방식입니다.
예를 들어 다음 공정이 있다고 가정해 보겠습니다.
제품 확인 → Clamp → 가공 → 복귀 → 배출
이 자체는 Sequence Control입니다.
이를 Ladder에서 Step Bit 또는 Step 번호를 사용하여 구현할 수도 있고 SFC를 이용해 Step과 Transition으로 표현할 수도 있습니다.
따라서 두 개념의 관계는 다음과 같이 정리할 수 있습니다.
| 구분 | Sequence Control | SFC |
|---|---|---|
| 의미 | 순차제어 개념 | 순차제어 표현·프로그래밍 방식 |
| 핵심 | 공정의 순서 | Step과 Transition |
| 구현 | Ladder, ST, SFC 등 | SFC 구조 사용 |
| 목적 | 공정을 순서대로 제어 | 공정 흐름을 구조적으로 표현 |
즉 Sequence Control을 구현하는 방법 중 하나가 SFC라고 이해하면 쉽습니다.
SFC와 State Machine은 어떤 관계가 있을까?
State Machine 역시 State와 State Transition을 이용하여 시스템 상태를 관리합니다.
그래서 SFC와 State Machine은 구조적으로 비슷하게 느껴질 수 있습니다.
하지만 State Machine은 설비 전체의 운전상태를 관리하는 데 활용할 수 있고 SFC는 순차적으로 진행되는 공정을 표현하는 데 특히 적합합니다.
예를 들어 설비 전체 상태를 다음처럼 State Machine으로 관리할 수 있습니다.
Idle → Ready → Running → Error
그리고 Running 상태 내부의 생산공정을 SFC로 구성할 수 있습니다.
제품 투입 → Clamp → 가공 → 검사 → 배출
물론 실제 프로젝트에서는 State와 Step의 역할이 겹치는 경우도 있습니다.
중요한 것은 어떤 기술을 사용하느냐보다 설비 전체 상태와 세부 공정 진행상태를 프로그램에서 명확하게 구분하는 것입니다.
SFC에서는 분기 공정을 어떻게 표현할까?
실제 자동화설비는 항상 하나의 직선적인 순서로만 진행되는 것은 아닙니다.
제품 종류나 검사결과에 따라 서로 다른 공정으로 이동해야 할 수 있습니다.
예를 들어 검사 결과가 정상이라면 포장공정으로 이동하고 불량이라면 Reject 공정으로 이동할 수 있습니다.
개념적으로는 다음과 같습니다.
Inspection Step
↓
검사 OK → Packaging Step
검사 NG → Reject Step
SFC에서는 이러한 조건에 따른 분기 구조를 표현할 수 있습니다.
또한 설비에 따라 여러 공정을 병렬로 실행해야 하는 경우도 있습니다.
예를 들어 Clamp 완료 후 가열과 다른 준비작업을 동시에 진행하고 두 작업이 모두 완료되면 다음 공정으로 넘어가는 구조가 필요할 수 있습니다.
SFC는 이러한 순차·분기·병렬 흐름을 시각적으로 표현하는 데 장점이 있습니다.
다만 구체적인 분기 및 병렬 구조의 표현방법과 지원기능은 사용하는 PLC 개발환경을 확인해야 합니다.
Transition 조건에는 Timeout도 고려해야 한다
SFC 프로그램을 작성할 때 정상적인 완료조건만 만들어 놓으면 특정 장치가 고장났을 때 Step이 영원히 멈출 수 있습니다.
예를 들어 Cylinder Forward Step에서 전진 완료 센서가 들어와야 다음 Step으로 이동한다고 가정해 보겠습니다.
실린더가 기계적으로 걸려 센서가 들어오지 않는다면 SFC는 해당 Step에서 계속 기다리게 됩니다.
따라서 중요한 장치에는 Timeout 감시를 함께 구성할 수 있습니다.
Cylinder Forward Step 활성
↓
정상 : 전진 완료 센서 ON → 다음 Step
이상 : 일정 시간 내 센서 미확인 → Alarm 처리
이렇게 구성하면 장치가 정상적으로 완료되지 않았을 때 단순히 Sequence가 정지하는 것에서 끝나지 않고 작업자에게 원인을 알릴 수 있습니다.
SFC에서도 Interlock은 필요하다
SFC에서 현재 Step이 활성화되었다고 해서 장치를 무조건 동작시키는 것은 적절하지 않을 수 있습니다.
예를 들어 Cylinder Forward Step이 활성화되어도 상대 장치가 아직 작업영역에서 빠져나오지 않았다면 전진을 허용해서는 안 될 수 있습니다.
따라서 실제 출력에는 Interlock 조건을 함께 적용할 수 있습니다.
Cylinder Forward Step Active
상대 장치 후진 완료
공압 정상
관련 Fault 없음
이러한 조건을 확인한 후 실제 전진 출력을 발생시키는 방식입니다.
즉 SFC가 공정상 현재 무엇을 해야 하는지 결정한다면 Interlock은 현재 실제로 그 동작을 실행해도 되는지 확인하는 역할을 할 수 있습니다.
SFC에서 Fault가 발생하면 어떻게 처리할까?
정상적인 SFC 흐름만큼 중요한 것이 Fault 처리입니다.
예를 들어 가공 Step에서 Servo Fault가 발생했다고 가정해 보겠습니다.
이때 다음 정상 Step으로 진행하는 것이 아니라 Sequence를 정지시키고 Alarm을 발생시키거나 별도의 Error 처리로 이동해야 할 수 있습니다.
문제는 Fault가 제거된 이후입니다.
Reset했다고 무조건 이전 Step을 다시 실행하면 실제 기계 위치와 프로그램 상태가 맞지 않을 수 있습니다.
따라서 설비에 따라 현재 Step을 유지한 뒤 재시작하거나 Recovery Sequence를 실행한 후 Initial Step으로 복귀하는 방식 등을 설계할 수 있습니다.
복잡한 자동화설비에서는 정상 SFC뿐 아니라 중단, Reset, Recovery 흐름도 함께 설계하는 것이 중요합니다.
SFC의 장점은 무엇일까?
SFC의 가장 큰 장점은 공정의 진행 흐름을 시각적으로 파악하기 쉽다는 것입니다.
Ladder Diagram에서 여러 Step Bit와 조건을 추적해야 하는 프로그램도 SFC에서는 Step과 Transition의 연결관계를 통해 전체 공정을 이해하기 쉬울 수 있습니다.
현재 활성화된 Step을 개발환경에서 모니터링할 수 있는 시스템이라면 설비가 어느 공정에서 멈춰 있는지도 확인하기 편리합니다.
분기와 병렬공정이 있는 복잡한 Sequence를 구조화하기에도 유용합니다.
또한 Step별로 프로그램을 분리할 수 있기 때문에 공정의 역할을 명확하게 관리하는 데 도움이 될 수 있습니다.
SFC를 사용할 때 주의할 점
SFC라고 해서 자동으로 좋은 프로그램이 만들어지는 것은 아닙니다.
Transition 조건이 불명확하면 Step이 예상보다 빨리 변경되거나 특정 Step에서 빠져나오지 못할 수 있습니다.
Step에 너무 많은 기능을 넣으면 SFC의 구조적인 장점도 줄어듭니다.
또한 여러 Transition이 동시에 TRUE가 될 수 있는 분기에서는 어떤 경로가 선택되는지 사용하는 PLC 시스템의 실행규칙을 정확하게 확인해야 합니다.
PLC가 정지하거나 전원이 차단된 후 재시작될 때 활성 Step이 어떻게 처리되는지도 중요합니다.
CPU Stop, Reset, 다운로드, 전원 복구 등의 상황에서 SFC 상태를 유지하는지 또는 Initial Step부터 다시 시작하는지는 PLC와 설정에 따라 달라질 수 있습니다.
따라서 실제 설비에 적용할 때는 해당 제조사의 SFC 실행규칙과 초기화 방식을 반드시 확인해야 합니다.
SFC 핵심 정리
SFC는 Sequential Function Chart의 약자로 자동화 공정을 Step과 Transition을 이용해 순차적으로 표현하는 PLC 프로그래밍 언어입니다.
Step은 현재 수행해야 하는 공정이나 상태를 나타내고 Transition은 다음 Step으로 이동하기 위한 조건을 나타냅니다.
Step에는 필요한 Action을 연결하여 모터, 실린더, Servo 등의 동작을 실행할 수 있습니다.
SFC는 특히 공정의 흐름을 시각적으로 표현하기 때문에 여러 단계가 연결된 자동화설비의 Sequence Control을 구조화하는 데 유용합니다.
하지만 SFC에서도 센서 Feedback, Interlock, Timeout, Alarm, Reset 및 Recovery 처리가 중요합니다.
결국 SFC의 핵심은 단순히 Step을 순서대로 연결하는 것이 아니라 현재 공정에서 무엇을 실행하고 어떤 조건을 확인한 뒤 다음 공정으로 이동할 것인지 명확하게 표현하는 것입니다.




댓글 0
첫 댓글을 남겨보세요.