Ladder와 ST 차이|PLC 프로그래밍 언어 비교
Ladder와 ST는 PLC에서 널리 사용되는 프로그래밍 언어입니다. Ladder Diagram과 Structured Text의 표현방식, 장단점, 연산·Sequence·Interlock·데이터 처리 차이를 비교하고 어떤 상황에서 선택하면 좋은지 알아봅니다.
PLC 프로그램을 처음 접하면 대부분 Ladder Diagram부터 배우게 됩니다.
Ladder는 전기 릴레이 회로와 비슷한 형태로 프로그램을 표현하기 때문에 센서 입력과 출력, Motor Start·Stop, Interlock 같은 논리제어를 이해하기 쉽습니다.
하지만 PLC 프로그램이 복잡해지면서 수학 계산이나 Array, 반복처리, Recipe, State Machine 같은 기능이 필요해지면 **Structured Text(ST)**를 사용하는 경우도 많습니다.
그렇다면 Ladder와 ST 중 어떤 언어가 더 좋은 것일까요?
두 언어는 어느 하나가 항상 우수하다기보다 표현하려는 제어로직의 성격에 따라 장점이 달라지는 PLC 프로그래밍 언어로 이해하는 것이 좋습니다.
Ladder Diagram이란?
Ladder Diagram은 전기 릴레이 회로와 비슷한 형태로 PLC 프로그램을 표현하는 그래픽 기반 언어입니다.
일반적으로 LD 또는 Ladder라고 부릅니다.
입력조건을 Contact 형태로 표현하고 결과를 Coil이나 Function Block 등으로 표현합니다.
개념적으로 다음과 같은 구조입니다.
|----[ Start ]----[ Motor Ready ]--------( Motor Run )----|
Start 조건과 Motor Ready 조건이 모두 만족되면 Motor Run 출력이 동작하는 형태입니다.
실제 전기제어 회로와 구조가 비슷하기 때문에 전기설비와 자동화 분야에서 직관적으로 이해하기 좋다는 장점이 있습니다.
특히 Digital Input과 Output을 이용하는 논리제어에서 프로그램의 상태를 시각적으로 확인하기 편리합니다.
Structured Text란?
Structured Text는 텍스트 명령어를 이용해 PLC 프로그램을 작성하는 언어입니다.
일반적으로 ST라고 부르며 Ladder와 마찬가지로 IEC 61131-3에서 다루는 PLC 프로그래밍 언어입니다.
Ladder에서 접점과 Coil로 표현하는 조건을 ST에서는 IF문 등을 이용해 작성할 수 있습니다.
예를 들어 개념적으로 다음과 같습니다.
IF Start AND MotorReady THEN
MotorRun := TRUE;
ELSE
MotorRun := FALSE;
END_IF;
또한 CASE, FOR 등의 구문과 수학연산을 이용할 수 있어 복잡한 데이터 처리와 계산을 비교적 간결하게 표현할 수 있습니다.
일반적인 프로그래밍 언어를 경험한 사람이라면 Ladder보다 ST가 익숙하게 느껴질 수도 있습니다.
Ladder와 ST의 가장 큰 차이는 무엇일까?
가장 큰 차이는 프로그램을 표현하는 방식입니다.
Ladder는 그래픽 형태로 조건과 출력을 표현하고 ST는 텍스트와 명령문을 이용합니다.
| 비교항목 | Ladder Diagram | Structured Text |
|---|---|---|
| 표현방식 | 그래픽 기반 | 텍스트 기반 |
| 기본구조 | Contact·Coil | IF·CASE·FOR 등 |
| 논리제어 | 직관적 | 가능 |
| 복잡한 계산 | 길어질 수 있음 | 비교적 간결 |
| 반복처리 | 상대적으로 불편 | FOR 등 활용 |
| Array 처리 | 환경에 따라 복잡 | 비교적 편리 |
| State 처리 | Step Bit 등 활용 | CASE 활용 가능 |
| 현장 모니터링 | 직관적인 편 | 코드 추적 필요 |
| 전기회로 경험 | 접근하기 쉬움 | 별도 문법 학습 필요 |
| 코드 재사용 | FB 등 활용 가능 | Function·FB 활용 가능 |
같은 PLC에서도 프로젝트의 성격에 따라 Ladder와 ST를 함께 사용할 수 있습니다.
단순한 ON/OFF 제어는 Ladder가 편리할까?
Motor, Solenoid Valve, Lamp처럼 Digital Output을 제어하는 프로그램에서는 Ladder가 직관적인 경우가 많습니다.
예를 들어 모터를 운전하기 위해 다음 조건이 필요하다고 가정해 보겠습니다.
Start
Motor Ready
Interlock OK
Fault 없음
Ladder에서는 여러 조건을 직렬 접점으로 구성하면 운전조건을 한눈에 확인하기 쉽습니다.
현장에서 PLC를 Online Monitoring하고 있을 때 어떤 접점이 성립하지 않아 출력이 나오지 않는지 확인하기도 편리합니다.
따라서 Motor Start·Stop, Interlock, Sensor Logic처럼 Boolean 조건이 중심인 제어에서는 Ladder가 효과적일 수 있습니다.
복잡한 계산은 ST가 편리한 이유
ST의 장점은 계산식이 복잡해질수록 두드러집니다.
예를 들어 센서의 Raw Value를 실제 Engineering Value로 변환한다고 가정해 보겠습니다.
ST에서는 다음과 같이 하나의 수식으로 표현할 수 있습니다.
EngineeringValue :=
(RawValue - RawMin) *
(EngMax - EngMin) /
(RawMax - RawMin) +
EngMin;
Ladder에서도 동일한 계산을 구현할 수 있지만 여러 연산 명령을 단계적으로 연결해야 할 수 있습니다.
따라서 Scaling, 좌표 계산, 보정식, 통계처리 등 수학연산이 많은 프로그램에서는 ST가 프로그램을 간결하게 만드는 데 유리할 수 있습니다.
단, 수식이 짧다고 해서 반드시 실행시간까지 짧다고 단정할 수는 없습니다. 실제 실행시간은 CPU와 명령, 데이터형, 컴파일 방식 등에 따라 달라집니다.
Array와 반복처리는 ST가 유리할까?
여러 데이터를 같은 방식으로 처리해야 한다면 ST의 FOR문을 활용할 수 있습니다.
예를 들어 100개의 데이터를 초기화한다고 가정해 보겠습니다.
FOR i := 0 TO 99 DO
Data[i] := 0;
END_FOR;
Ladder에서 각각의 데이터를 개별적으로 처리한다면 비슷한 로직을 반복해서 작성해야 할 수 있습니다.
ST에서는 반복문을 이용하여 비교적 간결하게 표현할 수 있습니다.
이러한 방식은 Recipe 데이터 검사, 측정값 처리, Array 초기화, 반복 계산 등에 활용할 수 있습니다.
다만 반복문은 한 번의 Task 실행에서 많은 연산을 수행할 수 있으므로 반복 횟수가 커질수록 Scan Time이나 Task 실행시간에 미치는 영향을 확인해야 합니다.
Sequence Control은 Ladder와 ST 중 무엇이 좋을까?
Sequence Control은 두 언어 모두 구현할 수 있습니다.
Ladder에서는 Step Bit나 Step Number 등을 이용해 공정을 구성할 수 있습니다.
예를 들어 다음과 같습니다.
Step 10 → Clamp
Step 20 → Cylinder Forward
Step 30 → Processing
Step 40 → Return
각 Step의 조건과 출력을 Ladder Network로 나누어 작성하면 공정의 흐름을 구성할 수 있습니다.
ST에서는 CASE문을 활용할 수 있습니다.
CASE Step OF
10:
ClampForward := TRUE;
IF ClampComplete THEN
Step := 20;
END_IF;
20:
CylinderForward := TRUE;
IF CylinderForwardSensor THEN
Step := 30;
END_IF;
30:
ProcessRun := TRUE;
IF ProcessComplete THEN
Step := 40;
END_IF;
END_CASE;
공정 단계가 많아질수록 CASE 구조를 이용해 각 Step을 분리하면 전체 프로그램을 체계적으로 관리할 수 있습니다.
하지만 현장에서 Ladder 중심으로 유지보수하는 환경이라면 Ladder Sequence가 더 적합할 수도 있습니다.
따라서 Sequence 프로그램은 언어 자체보다 프로그램을 누가 작성하고 누가 유지보수할 것인지도 고려하는 것이 중요합니다.
State Machine은 ST가 더 편리할까?
State Machine은 현재 설비의 상태에 따라 프로그램을 구분해야 하므로 ST의 CASE문과 잘 어울립니다.
예를 들어 다음과 같은 State를 사용할 수 있습니다.
Idle
Ready
Running
Error
Recovery
ST에서는 현재 State를 기준으로 각각의 처리 프로그램을 분리할 수 있습니다.
CASE MachineState OF
0: (* Idle *)
IF StartCommand THEN
MachineState := 10;
END_IF;
10: (* Ready *)
IF AllReady THEN
MachineState := 20;
END_IF;
20: (* Running *)
IF Fault THEN
MachineState := 90;
END_IF;
90: (* Error *)
IF FaultCleared AND ResetCommand THEN
MachineState := 0;
END_IF;
END_CASE;
Ladder에서도 동일한 State Machine을 구현할 수 있습니다.
따라서 State Machine은 반드시 ST로 작성해야 한다고 볼 수는 없습니다.
다만 State가 많고 전환조건이 복잡하다면 ST의 CASE 구조가 프로그램을 정리하는 데 편리할 수 있습니다.
Interlock은 Ladder가 유리할까?
Interlock Logic은 Ladder가 강점을 가지는 대표적인 영역 중 하나입니다.
예를 들어 Motor Run을 위해 여러 조건이 필요할 때 Ladder에서는 각 조건을 직렬 접점으로 표현할 수 있습니다.
Start → Ready → Interlock → No Fault → Motor Run
Online Monitoring을 하면 어떤 조건이 끊어져 있는지 시각적으로 확인하기 쉬운 개발환경이 많습니다.
설비 유지보수 담당자가 전기회로와 Ladder에 익숙하다면 문제를 빠르게 찾는 데 도움이 됩니다.
ST에서도 동일한 조건을 작성할 수 있습니다.
MotorRun :=
Start
AND MotorReady
AND InterlockOK
AND NOT MotorFault;
이처럼 조건이 간단하다면 ST 역시 충분히 읽기 쉽습니다.
하지만 조건이 수십 개로 증가한다면 단순히 한 줄의 Boolean Expression으로 작성하기보다 조건을 기능별로 나누고 의미 있는 변수명을 사용하는 것이 유지보수에 유리합니다.
Recipe와 데이터 처리는 어떤 언어가 적합할까?
제품별 설정값을 관리하는 Recipe는 데이터 처리량이 많아질 수 있습니다.
제품마다 온도, 속도, 시간, 위치 등 여러 Parameter를 가지고 있다면 Array나 Structure를 활용하여 데이터를 관리할 수 있습니다.
이런 경우 ST를 사용하면 Index와 반복문을 이용해 여러 데이터를 처리하기 편리합니다.
예를 들어 Recipe의 설정값이 허용범위 안에 있는지 반복해서 검사하는 프로그램을 구성할 수 있습니다.
하지만 HMI 자체에서 Recipe 기능을 제공하는 시스템이라면 PLC에서 복잡한 Recipe 프로그램을 작성할 필요가 없는 경우도 있습니다.
따라서 Recipe는 ST 사용 여부보다 PLC와 HMI 중 어디에서 데이터를 저장하고 관리할 것인지를 먼저 결정하는 것이 중요합니다.
Ladder가 무조건 초보자에게 쉬운 것은 아니다
Ladder는 전기회로 경험이 있는 사람에게 매우 직관적입니다.
하지만 프로그래밍을 먼저 배운 사람에게는 오히려 ST의 IF문과 CASE문이 이해하기 쉬울 수 있습니다.
따라서 Ladder는 초보자용, ST는 전문가용처럼 단순하게 구분하는 것은 적절하지 않습니다.
두 언어는 목적과 표현방법이 다릅니다.
Ladder는 전기적인 논리와 I/O 상태를 시각적으로 표현하는 데 강점이 있고 ST는 알고리즘과 데이터 처리를 텍스트 형태로 표현하는 데 강점이 있습니다.
PLC 개발자가 두 방식을 모두 이해하면 제어 대상에 따라 더 적절한 언어를 선택할 수 있습니다.
Ladder와 ST를 하나의 프로젝트에서 같이 사용할 수 있을까?
PLC 개발환경이 지원한다면 Ladder와 ST를 같은 프로젝트에서 함께 사용할 수 있습니다.
예를 들어 다음과 같이 역할을 나눌 수 있습니다.
Ladder 영역
Motor Start·Stop, Digital I/O, 기본 Interlock, 현장 신호처리
Structured Text 영역
수학연산, Array 처리, Recipe, 데이터 변환, 복잡한 State Machine
또한 사용자 정의 Function Block 내부를 ST로 작성하고 Ladder에서 해당 Function Block을 호출하는 구조도 가능합니다.
이렇게 하면 현장 유지보수에서는 Ladder의 직관성을 활용하면서 복잡한 내부 계산은 ST로 구조화할 수 있습니다.
구체적인 혼용방법과 지원 언어는 PLC 제조사, CPU 및 Programming Software에 따라 달라질 수 있습니다.
Ladder와 ST의 실행속도도 다를까?
언어만 보고 어느 쪽이 항상 빠르다고 판단해서는 안 됩니다.
PLC 개발환경에서는 Ladder와 ST 등의 프로그램이 CPU가 실행할 수 있는 내부 명령이나 코드로 변환됩니다.
실제 실행시간은 사용한 명령의 종류와 연산량, 데이터형, 반복 횟수, Function Block, CPU 성능, 컴파일러 및 실행환경 등에 영향을 받습니다.
예를 들어 ST로 매우 짧게 작성한 FOR문이라도 내부적으로 수천 번 반복된다면 상당한 실행시간이 필요할 수 있습니다.
반대로 Ladder가 화면상 길어 보인다고 해서 반드시 실행시간이 더 길다고 단정할 수도 없습니다.
따라서 Scan Time이 중요한 프로그램이라면 언어의 모양만 비교하지 말고 실제 PLC의 Task 실행시간과 Scan Time을 측정하는 것이 정확합니다.
유지보수까지 고려해서 언어를 선택해야 한다
PLC 프로그램은 개발자가 작성한 뒤 수년 이상 현장에서 사용되는 경우가 많습니다.
따라서 프로그램을 작성하기 편한 것만큼 고장 발생 시 다른 사람이 프로그램을 이해할 수 있는가도 중요합니다.
공장 유지보수 담당자가 대부분 Ladder에 익숙하다면 모든 프로그램을 ST로 작성했을 때 현장 대응이 어려워질 수 있습니다.
반대로 데이터 계산이 매우 많은 프로그램을 억지로 Ladder로만 작성하면 프로그램이 지나치게 길어지고 수정이 어려워질 수 있습니다.
따라서 프로젝트에서는 언어 선택 기준과 프로그램 작성규칙을 정해두는 것이 좋습니다.
예를 들어 Digital I/O와 기본 Interlock은 Ladder, 데이터 처리와 복잡한 계산은 ST처럼 역할을 구분할 수 있습니다.
Ladder와 ST를 사용할 때 공통으로 주의할 점
어떤 언어를 사용하더라도 결국 PLC에서 실행되는 프로그램이라는 점은 같습니다.
PLC의 Scan Cycle과 Task 실행주기를 이해해야 하고 출력이 언제 갱신되는지도 확인해야 합니다.
ST에서는 반복문과 조건문 때문에 코드의 실행량이 눈에 잘 보이지 않을 수 있으므로 Scan Time을 주의해야 합니다.
Ladder에서도 너무 많은 중복 Network와 불필요한 연산이 있다면 프로그램의 복잡도와 실행시간이 증가할 수 있습니다.
또한 사람의 안전과 관련된 기능은 일반 Ladder나 ST 프로그램을 작성했다는 것만으로 필요한 기능 안전이 확보되는 것은 아닙니다.
비상정지나 안전도어 등 안전 관련 제어는 위험성 평가와 요구되는 안전수준에 맞는 Safety PLC, Safety I/O 또는 안전회로 등을 적절하게 적용해야 합니다.
Ladder와 ST 차이 핵심 정리
Ladder Diagram과 Structured Text는 모두 PLC 프로그램을 작성하기 위한 언어이지만 표현방법과 강점이 다릅니다.
Ladder는 접점과 Coil을 이용하는 그래픽 방식으로 Digital I/O, Motor 제어, Interlock과 같은 논리제어를 시각적으로 확인하기 좋습니다.
Structured Text는 IF, CASE, FOR 등의 구문과 수식을 사용하는 텍스트 방식으로 복잡한 계산, Array, Recipe, 데이터 처리와 State Machine을 간결하게 표현하기 좋습니다.
따라서 Ladder와 ST 중 하나만 선택해야 한다고 생각할 필요는 없습니다.
PLC 개발환경에서 여러 언어를 지원한다면 각 기능의 특성에 따라 적절한 언어를 선택하고 하나의 프로젝트에서 함께 활용할 수도 있습니다.
결국 중요한 것은 어떤 언어가 더 뛰어난지를 결정하는 것이 아니라 제어로직의 성격, 현장 유지보수 환경, 프로그램의 가독성과 재사용성을 고려해 적합한 언어를 선택하는 것입니다.




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