PLC Engineer's Field Notes

Practical solutions for industrial automation


[실무] 비상정지 복귀 시 오동작 막는 MC/MCR 설계 기준

비상정지 해제 후 설비가 예상과 다르게 즉시 동작하는 경우가 있습니다.
대부분 인터락 구조와 MC/MCR 설계 방식에서 원인을 찾을 수 있습니다.

MC OFF 상태에서 어떤 출력이 꺼지고, 어떤 상태는 유지되는지 정확히 이해하지 못하면 재기동 사고로 이어질 수 있습니다.

이번 글에서는 PLC 인터락 로직에서 MC/MCR을 어떻게 사용해야 하는지, 그리고 SET/RST와 함께 사용할 때 주의할 점을 실무 기준으로 정리합니다.


1. MC/MCR 블록은 어디까지 영향을 주는가?

마스터 코일은 특정 로직 구간을 통째로 ON/OFF 시키는 상위 제어 코일입니다. MC(Master Control) 명령어로 시작해서 MCR(Master Control Reset)로 구간을 닫아주는 구조를 가집니다.

  • MC ON 상태: 구간 내의 모든 로직이 정상적으로 연산되고 출력이 나갑니다.
  • MC OFF 상태: 구간 내의 일반 출력(OUT)은 강제로 OFF 되며, 해당 구간의 로직은 연산되지 않습니다. (단, SET은 예외 – 아래 2번 참고)
PLC MC MCR 블록 구조 예시 SM400 Always ON 신호 포함 래더 다이어그램
[Fig. 1] MC/MCR 블록 제어 구조와 내부 로직 동작 예시 (SM400 포함)

위 그림처럼 MC(N1)로 시작된 구간은 MCR(N1)까지 하나의 블록으로 동작합니다. 이 범위 안의 로직만 MC ON/OFF에 따라 동작하며, SM400(Always ON)과 같은 신호도 MC 내부에 있으면 함께 영향을 받습니다.

[한 줄 직설] “MC 안에 들어가면 ALWAYS ON도 조건 신호가 된다.”

※ 실무 주의사항: MC/MCR 번호(N) 불일치 및 중첩(Nesting)

  • 마스터 코일은 반드시 시작(MC)과 종료(MCR)의 번호(N)가 일치해야 합니다.
  • 중첩 사용 시: N0 안에 N1이 있는 경우, 상위 번호(N0)가 OFF 되면 하위 번호(N1)의 상태와 상관없이 그 내부 로직 전체가 정지됩니다.
  • MC/MCR 번호가 틀리거나 종료 구간이 빠지면 어느 로직이 제어 대상인지 확인이 어려워집니다. 유지보수와 트러블 대응이 급격히 힘들어지므로 계층별로 정확히 관리해야 합니다.

2. 🚨 실무 핵심: MC와 SET 명령어의 동작 간섭

👉 관련 글: [실무] PLC 로직이 꼬이는 이유: SET/RST, 자기유지, 스캔 구조 제대로 이해하기

실무에서 가장 주의해야 할 포인트입니다. 위 글에서 설명했듯 SET은 리셋 신호 전까지 상태를 유지하는 특성이 있으며, 이는 마스터 코일 구간 내에서도 동일하게 작동합니다.

  • 일반 코일(OUT): MC가 OFF 되면 즉시 소자됩니다. 안전 설계의 기본입니다.
  • SET 명령어: MC가 OFF 되어도 기존의 ON 상태를 그대로 유지(HOLD)합니다.

현장 위험 시나리오: 비상정지 상황을 MC로 설계했을 때, 구간 내부에서 SET으로 살려놓은 출력 비트는 메모리에 살아있습니다. 비상을 해제(MC ON)하는 순간, 별도의 기동 명령 없이도 설비가 즉시 동작할 수 있습니다. 이는 설비 손상이나 안전사고로 이어지는 중대한 설계 결함입니다.

※ 현장 경험: 비상정지 풀자마자 실린더가 튀어나가면서 작업자가 놀란 케이스가 실제로 있었습니다. 원인은 MC 내부 SET 유지 상태 때문이었습니다.

⚠️ 추가 주의사항: MC 구간 내 RST(리셋) 명령어 사용

실무에서는 MC 구간 내부에 RST 명령어를 같이 넣는 경우도 있습니다.
하지만 MC가 OFF 상태일 때는 해당 구간 자체가 연산되지 않기 때문에, RST 명령어도 실행되지 않습니다.

즉, MC 내부에 RST를 넣어놓으면 “꺼진 상태에서는 리셋이 안 먹는 구조”가 됩니다.
비상정지 시 내부 RST가 실행되지 않아 SET 비트가 남게 되고, 다시 ON 되는 순간 사고로 이어집니다.

저도 이걸 모르고 RST를 MC 안에 넣었다가 같은 증상을 반복해서 겪었습니다.
현장에서는 일단 PLC를 껐다 켜면 정상처럼 보여서 넘겼는데, 다시 운전하면 같은 문제가 또 발생했습니다.

결국 원인을 못 잡고 다시 출장까지 갔고, 그때서야 전원 문제가 아니라 MC 내부 RST 구조 문제였다는 걸 확인했습니다.

[한 줄 직설]
“RST를 MC 안에 넣으면, 정작 꺼져 있을 때는 리셋이 안 된다.”


3. 해결 방법 (안전 설계 실무 기준)

사고를 막기 위해서는 아래 3단계 설계 기준을 반드시 로직에 반영해야 합니다.

  • Step 1. MC 구간 내부 SET 존재 여부 확인
    • 구간 내에 SET 명령어가 있다면 무조건 별도의 관리 대상으로 표시합니다.
  • Step 2. SET 출력은 반드시 ‘외부 RST’로 제어
    • SET을 사용하는 경우, MC OFF 또는 비상정지 시 해당 출력이 반드시 OFF 되도록 RST 조건을 함께 설계해야 합니다.
    • 중요: RST는 반드시 MC 외부 또는 상위 조건에서 실행되도록 구성해야 합니다. MC 내부에 RST를 넣으면 OFF 상태에서는 동작하지 않아 초기화가 되지 않습니다.
    • [한 줄 직설] “SET이 위험한 게 아니라, RST가 없으면 위험하다.”
  • Step 3. 재기동 조건 분리
    • MC가 다시 ON 되더라도, 작업자가 기동(Start) 버튼을 다시 눌러야만 동작이 시작되도록 로직을 분리합니다.

4. 📌 MC 설계 시 안전 체크리스트

  • [ ] 일반 코일(OUT)로 해결 가능한 동작을 굳이 SET/RST로 짜지 않았는가?
  • [ ] MC 구간 내에 SET이 있다면, MC 복구 전 초기화(RST) 로직이 있는가?
  • [ ] RST 명령어가 MC 구간 외부에 위치하여 확실히 동작하는가?
  • [ ] MC 해제 후 자동 재기동 방지 로직(기동 조건 분리)이 있는가?
  • [ ] 비상정지 해제 시 출력이 자동으로 살아나지 않도록 검증 테스트를 거쳤는가?
  • [ ] MC 내부 출력이 외부 인터락(하드웨어)과 이중으로 보호되는가?
  • [ ] MC/MCR의 N 번호가 쌍으로 일치하며, 중첩 구조(N0 > N1)가 올바른가?

👉 오늘 내용 3줄 요약

  1. MC는 로직 구간 전체를 일괄 제어하는 메인 스위치 역할을 한다.
  2. MC가 OFF 되어도 SET 출력은 유지되며, 내부 RST도 동작하지 않는다.
  3. SET을 막는 게 아니라, 외부 RST를 통해 완벽히 통제하는 것이 실무 설계의 핵심이다.

📌 결론

“MC는 편의 기능이 아니라, 잘못 쓰면 사고를 만드는 기능입니다.” 상위 제어 조건을 설계할 때는 반드시 인터락 해제 시 하위 명령어들이 어떻게 반응하는지 논리적으로 검토해야 실수를 줄일 수 있습니다.


[다음 포스팅 예고]

로직을 그룹화하는 법을 배웠으니, 이제 상황에 따라 로직을 “건너뛰는” 기술이 필요합니다.
불필요한 연산을 생략하고 실행 흐름을 제어하는 CJ(Conditional Jump)의 실무 활용법을 다음 글에서 다룹니다.

👉[실무] PLC 스캔 타임 개선과 CJ 점프 명령어 활용법