비상정지 해제 후 설비가 예상과 다르게 즉시 동작하는 경우가 있습니다. 이런 문제는 단순히 출력 회로만 볼 것이 아니라 PLC 내부의 인터락 구조, MC/MCR 블록, SET/RST 사용 위치를 함께 확인해야 합니다. MC OFF 상태에서 어떤 로직은 멈추고, 어떤 상태 비트는 그대로 남는지 구분하지 못하면 재기동 시 오동작으로 이어질 수 있습니다.
MC/MCR을 이해해야 하는 이유
MC/MCR은 특정 로직 구간을 통째로 제어하기 위한 마스터 제어 구조입니다. MC로 블록을 시작하고 MCR로 블록을 닫는 방식으로 사용하며, 해당 구간 안의 로직을 상위 조건에 따라 일괄적으로 동작시키거나 차단할 수 있습니다.
예를 들어 자동운전 조건, 안전 조건, 비상정지 조건, 도어 인터록 조건이 정상일 때만 특정 구간의 로직을 실행하고 싶다면 MC/MCR 구조를 사용할 수 있습니다.
다만 MC/MCR은 단순한 전원 스위치처럼 생각하면 안 됩니다. MC가 OFF되었을 때 일반 코일, 내부 비트, SET/RST, 타이머, 카운터가 각각 어떻게 동작하는지 확인해야 합니다.
본 글은 미쓰비시 MELSEC Q/R 시리즈 및 GX Works2/3 기준의 일반적인 내용을 바탕으로 작성했습니다. MC/MCR 명령의 세부 동작과 제한 사항은 CPU 시리즈와 프로그램 구조에 따라 달라질 수 있으므로 실제 적용 전 매뉴얼을 확인해야 합니다.
MC/MCR 블록은 특정 구간에만 영향을 준다
MC/MCR은 프로그램 전체를 끄는 명령이 아니라, MC와 MCR 사이에 있는 특정 로직 구간에 영향을 줍니다.
MC 조건이 ON이면 해당 구간의 로직은 정상적으로 연산됩니다. MC 조건이 OFF되면 해당 구간의 일반 출력은 차단되고, 구간 내부 로직은 정상 실행 상태와 다르게 처리됩니다.
일반적인 개념은 다음과 같습니다.
| 상태 | 동작 개념 |
|---|---|
| MC ON | MC/MCR 구간 내부 로직이 정상 연산됨 |
| MC OFF | 구간 내부 일반 출력이 OFF 방향으로 처리됨 |
| MCR | MC로 시작한 제어 구간을 종료함 |
| MC/MCR 범위 밖 로직 | 해당 MC 조건의 직접 영향 없음 |
중요한 점은 MC 내부에 있는 신호는 그 신호가 SM400 같은 항상 ON 접점이라도 MC 조건의 영향을 받는다는 것입니다. MC 블록 안에 들어간 순간, 그 로직은 상위 MC 조건이 살아 있을 때만 정상적으로 의미를 갖습니다.
MC/MCR 번호와 중첩 구조를 확인해야 한다
MC/MCR은 시작과 종료 번호가 맞아야 합니다. 예를 들어 MC N1로 시작했다면 해당 구간은 MCR N1로 닫아야 합니다.
번호가 맞지 않거나 MCR이 빠지면 어느 구간까지 MC의 영향을 받는지 파악하기 어려워집니다. 유지보수 시 로직 범위가 불명확해지고, 비상정지나 자동운전 조건이 의도하지 않은 구간까지 영향을 줄 수 있습니다.
중첩 구조도 주의해야 합니다. 예를 들어 N0 블록 안에 N1 블록이 들어가 있다면, 상위 N0가 OFF될 경우 하위 N1 조건이 ON이어도 내부 로직은 영향을 받을 수 있습니다.
MC/MCR을 사용할 때는 다음 항목을 확인해야 합니다.
| 확인 항목 | 설명 |
|---|---|
| MC 번호 | 시작 번호가 의도한 번호인지 확인 |
| MCR 번호 | 종료 번호가 MC 번호와 일치하는지 확인 |
| 적용 범위 | 어느 로직까지 MC 영향권인지 확인 |
| 중첩 구조 | 상위 MC와 하위 MC의 관계 확인 |
| 주석 | 블록 목적과 적용 범위를 명확히 표시 |
MC/MCR은 로직을 깔끔하게 묶을 수 있지만, 범위가 틀어지면 문제 원인을 찾기 어려워집니다.
MC OFF 시 일반 코일과 SET은 다르게 봐야 한다
MC/MCR에서 가장 주의해야 할 부분은 일반 코일과 SET 명령의 차이입니다.
일반 코일 OUT은 MC 구간이 OFF되면 함께 OFF되는 방향으로 처리됩니다. 그래서 안전 조건이나 자동운전 조건이 끊겼을 때 출력이 꺼지는 구조를 만들기 쉽습니다.
하지만 SET으로 이미 ON된 비트는 별도의 RST가 실행되지 않으면 상태가 남을 수 있습니다. 이 차이를 모르고 MC 내부에서 SET을 사용하면 비상정지 복귀 후 예상하지 못한 동작이 발생할 수 있습니다.
| 구분 | MC OFF 시 주의점 |
|---|---|
| 일반 코일 OUT | MC 조건이 끊기면 OFF 방향으로 처리됨 |
| 자기유지 | MC 조건이 상위에 있으면 함께 끊기도록 구성 가능 |
| SET 비트 | RST가 실행되지 않으면 상태가 남을 수 있음 |
| RST 명령 | MC 내부에 있으면 MC OFF 중 실행되지 않을 수 있음 |
MC는 SET으로 켜진 상태를 자동으로 정리해 주는 기능이 아닙니다. SET을 사용했다면 반드시 RST 조건을 별도로 설계해야 합니다.
비상정지 복귀 후 즉시 동작하는 원인
비상정지 해제 후 실린더나 모터가 바로 동작하는 경우에는 내부 상태 비트가 남아 있는지 확인해야 합니다.
예를 들어 MC 내부에서 특정 동작 플래그를 SET해 두었고, 비상정지로 MC 조건이 OFF되었다고 가정합니다. 이때 일반 출력은 꺼졌기 때문에 설비는 멈춘 것처럼 보입니다. 그러나 SET된 내부 플래그가 RST되지 않았다면 메모리 상태는 여전히 ON으로 남아 있을 수 있습니다.
이후 비상정지를 해제해 MC 조건이 다시 ON되면, 남아 있던 SET 비트가 다시 출력 조건을 만족시켜 설비가 즉시 동작할 수 있습니다.
문제 흐름을 정리하면 다음과 같습니다.
| 단계 | 상태 |
|---|---|
| 동작 중 | 내부 동작 플래그가 SET됨 |
| 비상정지 발생 | MC OFF로 일반 출력은 차단됨 |
| MC 내부 RST 미실행 | SET 비트가 그대로 남음 |
| 비상정지 해제 | MC ON 복귀 |
| 재기동 명령 없음 | 남아 있던 SET 비트 때문에 출력 조건 성립 가능 |
이 구조에서는 작업자가 다시 시작 버튼을 누르지 않았는데도 설비가 움직일 수 있습니다. 따라서 비상정지 복귀 조건과 재기동 조건은 반드시 분리해야 합니다.
RST를 MC 내부에만 두면 문제가 생길 수 있다
MC 구간 내부에 RST 명령을 넣는 경우가 있습니다. 그러나 MC가 OFF되었을 때 해당 구간이 정상 연산되지 않는 구조라면, 내부 RST도 실행되지 않을 수 있습니다.
즉, 비상정지나 상위 인터락으로 MC가 OFF된 상태에서는 정작 SET 비트를 꺼야 하는 RST가 동작하지 못할 수 있습니다.
이 문제는 현장에서 반복적으로 발생합니다. 전원을 껐다 켜면 일시적으로 정상처럼 보일 수 있지만, 같은 운전 조건이 반복되면 다시 동일한 증상이 발생합니다. 원인은 출력부가 아니라 내부 SET 비트와 RST 위치일 수 있습니다.
따라서 비상정지, 알람, 자동운전 해제처럼 반드시 상태를 정리해야 하는 RST 조건은 MC 외부 또는 상위에서 확실히 실행되는 위치에 두는 것이 안전합니다.
SET을 사용할 때는 외부 RST 구조를 만든다
SET 자체가 항상 나쁜 것은 아닙니다. 알람 기억, 공정 완료 플래그, 특정 상태 유지처럼 SET/RST가 적합한 경우도 있습니다.
문제는 SET을 사용하고도 확실한 RST 조건을 만들지 않는 것입니다.
SET을 사용하는 경우에는 다음 조건에서 RST가 실행되는지 확인해야 합니다.
| RST 조건 | 목적 |
|---|---|
| 비상정지 발생 | 위험 상태에서 내부 동작 플래그 제거 |
| 자동운전 OFF | 자동 시퀀스 상태 초기화 |
| 알람 발생 | 이상 상태에서 다음 동작 차단 |
| 원점 복귀 시작 | 이전 공정 상태 정리 |
| 운전 준비 해제 | 재기동 전 내부 상태 제거 |
| 작업자 리셋 | 확인 후 다음 사이클 준비 |
특히 비상정지와 자동운전 OFF 조건은 MC 내부가 아니라 MC 외부에서 RST가 실행되도록 구성하는 것이 좋습니다. 그래야 MC가 OFF된 상태에서도 내부 상태를 확실히 정리할 수 있습니다.
재기동 조건은 비상정지 복귀와 분리한다
비상정지를 해제했다고 해서 설비가 바로 다시 동작하면 안 됩니다. 비상정지 해제는 운전 가능 상태로 돌아가는 조건일 뿐, 기동 명령 자체가 되어서는 안 됩니다.
안전한 구조는 다음과 같이 나누는 것입니다.
| 구분 | 의미 |
|---|---|
| 비상정지 해제 | 설비가 다시 운전 가능한 상태 |
| 운전 준비 | 안전 조건, 원점, 알람 상태 정상 확인 |
| 작업자 시작 | 작업자가 Start 버튼으로 재기동 승인 |
| 자동운전 플래그 | 시작 조건 후에만 ON |
| 출력 동작 | 자동운전 플래그와 공정 조건이 모두 만족될 때 동작 |
이렇게 구성하면 비상정지를 해제해도 내부 상태가 바로 출력으로 이어지지 않습니다. 작업자가 다시 시작 명령을 넣어야만 자동운전 플래그가 살아나고, 그 이후 공정 조건이 순서대로 진행됩니다.
MC 내부 출력은 최종 인터락을 한 번 더 거치는 것이 좋다
MC/MCR은 소프트웨어 인터락 구조입니다. 하지만 실제 출력은 별도 안전 조건과 최종 인터락을 거쳐 제어하는 것이 좋습니다.
예를 들어 실린더 전진 출력은 단순히 공정 플래그만으로 나가는 것이 아니라 다음 조건을 함께 봐야 합니다.
| 출력 전 확인 조건 | 설명 |
|---|---|
| 비상정지 정상 | 안전 회로 정상 여부 |
| 자동운전 상태 | 작업자가 운전을 승인했는지 확인 |
| 알람 없음 | 장비 이상 상태가 아닌지 확인 |
| 반대 동작 OFF | 전진·후진 동시 출력 방지 |
| 위치 조건 | 현재 위치가 동작 가능한 상태인지 확인 |
| 에어 압력 정상 | 공압 동작 가능 여부 확인 |
MC 내부 로직이 정상이어도 최종 출력부에서 한 번 더 조건을 걸면 예상하지 못한 내부 플래그 잔류로 인한 동작을 줄일 수 있습니다.
MC와 SET/RST 사용 시 점검할 항목
MC/MCR과 SET/RST가 함께 사용된 로직은 다음 항목을 확인하는 것이 좋습니다.
| 점검 항목 | 확인 내용 |
|---|---|
| MC 범위 | MC와 MCR 사이에 어떤 로직이 포함되는지 확인 |
| SET 위치 | MC 내부에 SET 명령이 있는지 확인 |
| RST 위치 | RST가 MC 외부 또는 상위 조건에서 실행되는지 확인 |
| 비상정지 시 상태 | 비상정지 발생 시 내부 플래그가 정리되는지 확인 |
| 복귀 시 상태 | 비상정지 해제 후 출력이 즉시 살아나지 않는지 확인 |
| 재기동 조건 | Start 버튼 등 작업자 기동 조건이 분리되어 있는지 확인 |
| 중복 제어 | 같은 비트를 OUT, SET, RST로 여러 곳에서 제어하지 않는지 확인 |
| MC 번호 | MC/MCR 번호와 중첩 구조가 맞는지 확인 |
시운전 중에는 비상정지, 알람 발생, 자동운전 해제, 전원 재투입, 원점 복귀 같은 비정상 흐름을 반드시 테스트해야 합니다. 정상 사이클만 확인하면 SET 비트 잔류 문제를 놓치기 쉽습니다.
MC/MCR 설계 기준 정리
MC/MCR은 로직 구간을 일괄적으로 제어할 수 있는 유용한 구조입니다. 자동운전 조건, 안전 조건, 상위 인터락을 기준으로 특정 구간을 묶어 관리할 때 효과적입니다.
하지만 MC가 OFF된다고 해서 모든 내부 상태가 자동으로 안전하게 초기화되는 것은 아닙니다. 일반 코일은 MC 조건에 따라 OFF될 수 있지만, SET으로 유지된 비트는 RST가 실행되지 않으면 그대로 남을 수 있습니다. 또한 RST를 MC 내부에만 두면 MC OFF 상태에서 정작 리셋이 실행되지 않을 수 있습니다.
따라서 MC 내부에 SET을 사용하는 경우에는 반드시 MC 외부 또는 상위 조건에서 실행되는 RST 구조를 만들어야 합니다. 비상정지 해제 후에는 자동 재기동이 되지 않도록 작업자의 Start 조건을 별도로 요구해야 합니다.
MC/MCR은 편의 기능이 아니라 상위 인터락 구조입니다. 설계할 때는 MC OFF 시 일반 출력, SET 비트, RST 조건, 재기동 조건이 각각 어떻게 동작하는지 확인해야 비상정지 복귀 시 오동작을 줄일 수 있습니다.