PLC 로직에서 출력 상태를 유지하는 방법은 여러 가지가 있습니다. 일반 코일을 사용할 수도 있고, 자기유지 회로를 만들 수도 있으며, SET/RST 명령어로 상태를 기억하게 만들 수도 있습니다. 겉으로 보면 모두 출력이 유지되는 것처럼 보이지만, 상위 조건이 끊겼을 때의 동작, 리셋 방식, 전원 재투입 시 상태가 다릅니다. 이 차이를 구분하지 못하면 설비가 멈추지 않거나, 반대로 다시 동작하지 않는 문제가 생길 수 있습니다.
자기유지와 SET/RST를 구분해야 하는 이유
PLC를 처음 다룰 때는 출력이 ON되면 모두 같은 동작처럼 보일 수 있습니다. 그러나 실제 설비에서는 어떤 조건에서 ON되고, 어떤 조건에서 OFF되는지가 중요합니다.
일반 코일은 조건이 ON일 때만 출력이 살아납니다. 조건이 OFF되면 출력도 바로 OFF됩니다.
자기유지는 출력 자신의 접점을 이용해 조건이 한 번 성립된 뒤에도 상태를 유지합니다. 다만 상위 조건이나 정지 조건이 끊기면 함께 OFF되도록 구성하는 것이 일반적입니다.
SET/RST는 SET 조건이 들어오면 해당 비트를 ON 상태로 만들고, RST 조건이 들어오기 전까지 유지합니다. 이 구조는 편리하지만, RST 조건이 빠지거나 특정 공정에서 도달하지 못하면 신호가 계속 남을 수 있습니다.
일반 코일, 자기유지, SET/RST 비교
세 방식은 모두 로직 상태를 제어할 때 사용되지만 동작 성격이 다릅니다.
| 구분 | 일반 코일 OUT | 자기유지 | SET/RST |
|---|---|---|---|
| 기본 동작 | 조건 ON 시 출력 ON, 조건 OFF 시 출력 OFF | 시작 조건 후 자기 접점으로 상태 유지 | SET 시 ON, RST 전까지 유지 |
| 상위 조건 영향 | 상위 조건이 끊기면 OFF | 상위 조건이 끊기면 OFF되도록 구성 가능 | RST가 없으면 상태가 남을 수 있음 |
| 전원 재투입 시 | 일반적으로 OFF | 일반적으로 OFF | 사용하는 디바이스 속성에 따라 다름 |
| 주요 용도 | 기본 출력 제어 | 운전 시작 유지, 공정 상태 유지 | 상태 기억, 완료 플래그, 특정 조건 유지 |
| 주의점 | 조건이 흔들리면 출력도 흔들림 | 정지 조건 누락 주의 | RST 조건 누락 시 오동작 가능 |
가장 기본은 일반 코일입니다. 일반 코일로 해결할 수 있는 동작을 굳이 SET/RST로 만들면 나중에 원인을 찾기 어려운 유지 신호가 생길 수 있습니다.
일반 코일은 조건에 따라 바로 움직인다
일반 코일은 가장 단순한 출력 방식입니다. 조건이 ON되면 출력이 ON되고, 조건이 OFF되면 출력이 OFF됩니다.
예를 들어 센서가 들어올 때만 램프를 켜거나, 특정 조건이 만족될 때만 밸브를 켜는 구조라면 일반 코일이 가장 적합합니다.
일반 코일의 장점은 동작 원인이 명확하다는 점입니다. 출력이 ON되어 있다면 앞 조건이 살아 있는 것이고, 출력이 OFF되어 있다면 앞 조건 중 하나가 빠진 것입니다.
따라서 특별히 상태를 기억할 필요가 없는 동작은 일반 코일로 처리하는 것이 유지보수에 유리합니다.
자기유지는 조건을 붙잡고 유지한다
자기유지는 시작 조건이 한 번 들어온 뒤, 자기 자신의 접점을 이용해 ON 상태를 유지하는 구조입니다.
예를 들어 자동운전 시작 버튼을 누르면 자동운전 플래그가 ON되고, 이후 시작 버튼에서 손을 떼도 자동운전 상태가 유지됩니다. 정지 버튼이나 비상정지 조건이 들어오면 자기유지 회로가 끊어져 OFF됩니다.
자기유지는 다음과 같은 용도에 적합합니다.
| 사용 예 | 설명 |
|---|---|
| 자동운전 시작 유지 | 시작 버튼을 한 번 누르면 운전 상태 유지 |
| 공정 단계 유지 | 특정 단계 진입 후 다음 조건 전까지 상태 유지 |
| 수동 동작 유지 | 버튼 순간 입력 후 일정 조건까지 동작 유지 |
| 준비 완료 상태 유지 | 여러 조건이 만족된 뒤 상태 플래그 유지 |
자기유지 회로의 핵심은 정지 조건입니다. 시작 조건보다 정지 조건을 더 명확히 설계해야 합니다. 정지 버튼, 비상정지, 도어 인터록, 에어 압력 이상, 서보 알람 같은 조건이 자기유지를 확실히 끊을 수 있어야 합니다.
SET/RST는 상태를 강제로 기억한다
SET/RST는 특정 비트를 ON 상태로 만들고, 별도의 RST 조건으로 OFF시키는 방식입니다.
예를 들어 SET M100 조건이 들어오면 M100은 ON 상태가 됩니다. 이후 원래 SET 조건이 OFF되어도 M100은 계속 ON 상태로 남습니다. M100을 끄려면 별도로 RST M100 조건이 실행되어야 합니다.
SET/RST는 완료 플래그, 알람 발생 기억, 특정 공정 상태 저장처럼 상태를 명확히 기억해야 할 때 사용할 수 있습니다.
다만 SET/RST는 편리한 만큼 위험합니다. 어떤 상황에서도 RST 조건이 반드시 실행될 수 있도록 설계하지 않으면 설비가 멈추지 않거나, 다음 사이클에서 이전 상태가 남는 문제가 생길 수 있습니다.
SET/RST와 래치는 다르다
SET/RST와 래치는 혼동하기 쉽지만 서로 다른 개념입니다.
SET/RST는 비트를 켜고 끄는 명령어입니다. 래치는 전원 OFF 후에도 값을 유지하는 메모리 속성 또는 영역입니다.
| 구분 | 의미 |
|---|---|
| SET/RST | 특정 비트를 ON 또는 OFF시키는 명령어 |
| 래치 | 전원 OFF 후에도 값을 유지하는 메모리 영역 또는 설정 |
| 일반 M 비트 | 전원 재투입 시 초기화될 수 있음 |
| 래치 영역 L 또는 래치 설정된 비트 | 전원 재투입 후에도 상태가 남을 수 있음 |
일반 M 비트를 SET한 경우에는 전원 재투입 시 OFF로 초기화될 수 있습니다. 하지만 래치 영역에 있는 비트를 SET한 경우에는 전원을 껐다 켜도 ON 상태가 남을 수 있습니다.
이 차이를 모르면 전원 복귀 후 설비가 예상하지 못한 상태로 시작될 수 있습니다. 특히 출력 동작과 직접 연결되는 조건을 래치 영역에 SET할 때는 복귀 시 초기화 조건과 안전 인터록을 반드시 확인해야 합니다.
SET/RST를 사용할 때 가장 중요한 기준
SET/RST를 사용할 때는 SET 조건보다 RST 조건을 먼저 봐야 합니다.
SET은 신호를 살리는 명령입니다. 그러나 설비 안정성은 그 신호를 언제, 어떤 조건에서 끄는지에 따라 결정됩니다.
RST 조건에는 다음과 같은 항목을 포함하는 것이 좋습니다.
| RST 조건 예 | 목적 |
|---|---|
| 정지 버튼 | 작업자 정지 명령 반영 |
| 비상정지 또는 안전 조건 | 위험 상태에서 유지 신호 제거 |
| 공정 완료 | 해당 상태가 더 이상 필요 없을 때 해제 |
| 알람 발생 | 이상 상태에서 동작 유지 방지 |
| 원점 복귀 또는 초기화 | 다음 사이클 시작 전 상태 정리 |
| 전원 투입 초기화 조건 | 재기동 시 이전 상태 제거 |
SET/RST는 상태를 기억해야 할 때만 사용하고, 단순 출력 유지에는 자기유지 회로를 우선 검토하는 것이 좋습니다.
MC 영역 안에서 SET을 사용할 때 주의할 점
마스터 코일(MC)이나 상위 인터록 영역 안에서 SET을 사용할 때는 특히 주의해야 합니다.
상위 조건이 끊기면 해당 영역의 일반 코일이나 자기유지 회로는 OFF되는 구조로 이해하기 쉽습니다. 그러나 SET으로 이미 ON시킨 비트는 RST가 실행되지 않는 한 상태가 남을 수 있습니다.
문제는 상위 조건이 끊기면서 RST 회로까지 실행되지 못하는 구조가 될 수 있다는 점입니다. 이 경우 작업자는 전체 로직이 죽었다고 생각하지만, 내부 SET 비트는 계속 ON 상태로 남아 있을 수 있습니다. 이후 조건이 다시 살아났을 때 예상하지 못한 동작이 발생할 가능성이 있습니다.
따라서 MC 영역 안에서 SET을 사용할 때는 다음을 확인해야 합니다.
| 확인 항목 | 설명 |
|---|---|
| RST 회로 위치 | 상위 조건이 끊겨도 RST가 실행 가능한지 확인 |
| SET 비트 용도 | 실제 출력과 직접 연결되는지 확인 |
| 복귀 조건 | MC 복귀 시 이전 SET 상태가 남아도 되는지 확인 |
| 초기화 조건 | 운전 시작 전 SET 상태를 정리하는지 확인 |
| 안전 조건 | 비상정지나 알람 시 강제 해제되는지 확인 |
SET을 사용할 때는 해당 비트를 살리는 조건보다 끄는 조건이 더 중요합니다.
스캔 구조가 로직 결과를 바꿀 수 있다
PLC는 프로그램을 위에서 아래로, 왼쪽에서 오른쪽으로 순차 처리합니다. 이 스캔 구조 때문에 같은 디바이스를 여러 곳에서 제어하면 마지막에 처리된 결과가 실제 상태에 더 큰 영향을 줄 수 있습니다.
예를 들어 위쪽 로직에서 M100을 SET했지만 아래쪽 로직에서 같은 스캔 안에 M100을 RST하면, 최종적으로는 M100이 OFF 상태가 될 수 있습니다.
반대로 위쪽에서 RST하고 아래쪽에서 SET하면 최종 결과는 ON으로 남을 수 있습니다.
이 문제는 로직이 틀린 것이 아니라 스캔 순서를 고려하지 않은 설계에서 발생합니다.
이중 코일과 SET/RST 중복 사용을 피해야 한다
같은 디바이스를 여러 곳에서 OUT, SET, RST로 중복 제어하면 유지보수가 어려워집니다. 특히 같은 M 비트를 위에서는 OUT으로 쓰고 아래에서는 SET/RST로 제어하면 현재 상태가 왜 그렇게 되었는지 추적하기 어렵습니다.
기본 원칙은 다음과 같습니다.
| 항목 | 권장 기준 |
|---|---|
| 일반 코일 OUT | 같은 디바이스를 여러 곳에서 중복 사용하지 않음 |
| SET/RST | 한 디바이스의 SET/RST 조건을 한 영역에서 관리 |
| 자기유지 | 정지 조건을 같은 회로 안에서 명확히 구성 |
| 출력 Y | 여러 회로에서 직접 중복 구동하지 않음 |
| 상태 M | 용도별로 하나의 제어 구조만 사용 |
특히 출력 Y를 직접 SET/RST하는 구조는 신중해야 합니다. 가능하면 내부 상태 비트를 먼저 만들고, 최종 출력은 안전 조건과 인터록을 거쳐 한 곳에서 제어하는 것이 관리하기 쉽습니다.
자기유지와 SET/RST 선택 기준
자기유지와 SET/RST 중 어느 것을 사용할지는 상태를 어떻게 해제할지에 따라 결정하는 것이 좋습니다.
| 상황 | 권장 방식 |
|---|---|
| 버튼을 누른 뒤 운전 상태 유지 | 자기유지 |
| 상위 조건이 끊기면 함께 OFF되어야 함 | 자기유지 또는 일반 코일 |
| 알람 발생 이력을 남겨야 함 | SET/RST |
| 특정 공정 완료 상태를 다음 단계까지 기억 | SET/RST 가능 |
| 전원 재투입 후 상태가 남으면 위험 | 일반 코일 또는 초기화 포함 자기유지 |
| RST 조건이 불명확함 | SET/RST 사용 지양 |
SET/RST는 편해서 쓰는 명령어가 아니라 상태를 책임지고 관리할 수 있을 때 사용하는 명령어입니다.
전원 재투입 시 동작을 반드시 확인한다
PLC 로직은 운전 중 동작만 확인해서는 부족합니다. 실제 설비에서는 전원이 꺼졌다가 다시 들어오는 상황이 반드시 발생합니다.
전원 재투입 시 다음 항목을 확인해야 합니다.
| 확인 항목 | 설명 |
|---|---|
| SET 비트 초기 상태 | 전원 복귀 후 ON으로 남는지 확인 |
| 래치 영역 사용 여부 | L, 래치 M, 래치 D 영역 확인 |
| 출력 조건 | 복귀 직후 출력이 바로 나가지 않는지 확인 |
| 자동운전 플래그 | 자동으로 운전 재개되는 구조인지 확인 |
| 알람 플래그 | 이전 알람을 유지할지 초기화할지 결정 |
| 원점 상태 | 원점 미확인 상태에서 동작하지 않도록 구성 |
특히 실린더, 모터, 서보, 히터처럼 실제 동작을 만드는 출력은 전원 복귀 직후 바로 살아나지 않도록 해야 합니다. 래치된 SET 비트가 출력 조건에 직접 연결되어 있으면 예상하지 못한 재동작이 발생할 수 있습니다.
로직 점검 체크리스트
자기유지와 SET/RST가 들어간 로직을 점검할 때는 다음 항목을 확인하는 것이 좋습니다.
| 점검 항목 | 확인 내용 |
|---|---|
| 일반 코일로 가능한지 | SET/RST 없이 처리할 수 있는 동작인지 확인 |
| RST 조건 존재 여부 | 모든 SET 비트에 명확한 RST 조건이 있는지 확인 |
| 안전 조건 포함 여부 | 정지, 비상정지, 알람 조건에서 해제되는지 확인 |
| 래치 영역 여부 | 전원 OFF 후 상태가 남아도 되는지 확인 |
| MC 조건 영향 | 상위 인터록 해제 시 어떤 상태가 남는지 확인 |
| 중복 제어 여부 | 같은 디바이스를 여러 곳에서 제어하지 않는지 확인 |
| 스캔 순서 | 위쪽 조건과 아래쪽 조건이 서로 덮어쓰지 않는지 확인 |
| 복귀 시 동작 | 전원 재투입 또는 알람 리셋 후 바로 동작하지 않는지 확인 |
이 항목을 확인하면 SET/RST 남용으로 인한 유지 신호, 정지 불량, 재기동 오동작을 줄일 수 있습니다.
자기유지와 SET/RST 정리
자기유지와 SET/RST는 모두 상태를 유지할 수 있지만 동작 성격이 다릅니다. 자기유지는 조건 기반으로 상태를 유지하는 방식이고, 상위 조건이나 정지 조건이 끊기면 함께 OFF되도록 구성하기 쉽습니다. SET/RST는 명령으로 상태를 기억시키는 방식이며, RST가 실행되기 전까지 상태가 남을 수 있습니다.
SET/RST는 알람 기억, 공정 완료 플래그, 특정 상태 보존처럼 목적이 분명할 때 유용합니다. 하지만 RST 조건이 불명확하거나 래치 영역과 결합되면 설비가 멈추지 않거나 전원 복귀 후 예상하지 못한 동작이 발생할 수 있습니다.
PLC는 스캔 순서대로 로직을 처리하므로 같은 디바이스를 여러 곳에서 제어하면 아래쪽 로직이 위쪽 결과를 덮어쓸 수 있습니다. 따라서 하나의 상태 비트는 한 곳에서 관리하고, SET/RST를 사용할 때는 반드시 해제 조건과 복귀 조건까지 함께 설계해야 합니다.
일반 코일로 처리할 수 있는 동작은 일반 코일을 우선 사용하고, 상태 유지가 필요하면 자기유지를 검토하며, SET/RST는 명확한 리셋 조건이 있을 때만 사용하는 것이 안전합니다.