PLC Engineer's Field Notes

Practical solutions for industrial automation


[실무] SM·SD 잘못 건드리면 로직 충돌로 장비 멈춘다


PLC 프로그래밍을 하다 보면 이런 순간이 반드시 옵니다. “이거 항상 ON 되어 있는 접점 없나?” “지금 에러 뭐 때문에 장비가 선 거야?”

이때 사용하는 것이 바로 PLC가 미리 정의해 둔 특수 디바이스(SM, SD)입니다.

[한 줄 직설] “SM/SD를 모르는 건 계기판 안 보고 운전하는 것과 같습니다. 장비 상태를 읽고 제어하는 가장 빠른 길입니다.”

※ 본 글은 미쓰비시 MELSEC Q/R 시리즈 및 GX Works2/3 기준입니다. 시리즈마다 번호가 다를 수 있으니 반드시 매뉴얼을 확인하십시오.


1. SM (Special Relay): “PLC가 이미 만들어 놓은 신호”

mitsubishi plc sm special relay definition gx works2 help screen
[Fig.1] 미쓰비시 PLC SM 디바이스 정의 (GX Works2 Help)

위 이미지는 GX Works2 도움말에 정리된 SM 디바이스 정의 화면입니다.
전체 목록이 궁금하다면 직접 확인해도 되고, 아래부터는 현장에서 자주 쓰는 것들만 실무 기준으로 정리하겠습니다.
사용자가 직접 만드는 게 아니라, PLC 시스템이 내부 상태를 ON/OFF 신호로 알려주는 비트 디바이스입니다.

  • SM400 (Always ON): PLC가 RUN 상태일 때 항상 ON 되어 있습니다. 상시 감시 로직이나 초기화 조건에 필수입니다.
    • 실무 포인트:
      조건 없이 항상 실행해야 하는 로직은 SM400을 앞에 두는 게 기본입니다.
      현장에서 정말 자주 쓰는 특수 릴레이입니다.
      다만 시운전 단계에서는 센서 위치, 실린더 스트로크, 도어 인터록 같은 기구 조건이 아직 완전히 잡히지 않은 경우가 많습니다.
      이때는 정상 조건대로 로직을 걸어두면 테스트 자체가 진행되지 않습니다.
      저도 이런 상황에서는 SM400을 무작정 쓰기보다, 미사용 내부 비트를 B접점으로 걸어 임시 조건처럼 사용한 뒤, 기구 수정이 끝나면 정상 센서 조건으로 다시 바꾸는 방식으로 작업했습니다.
      예를 들어 지금은 도어 센서가 아직 안 달렸다면 임시 비트로 우회하고, 나중에 실제 입력(X) 신호로 교체하는 식입니다.
      왜 이렇게 하냐면, SM400을 여기저기 쓰면 나중에 어느 부분이 상시 로직인지, 어느 부분이 시운전용 우회인지 찾기 어려워지기 때문입니다.
      조건 없이 항상 실행해야 하는 로직은 SM400을 앞에 두는 게 기본입니다.

      고정 상시 로직 → SM400
      임시 시운전 우회 로직 → 미사용 비트 활용 후 나중에 원복
      이렇게 구분해 두면 유지보수가 훨씬 편해집니다.
  • SM401 (Always OFF): 항상 OFF 상태입니다. 로직 테스트 시 특정 조건을 임시로 차단할 때 사용합니다.
    • 실무 포인트
      HMI에서 Lamp와 스위치 기능을 함께 쓰는 버튼 구성 시, 별도 조건 없이 이미지를 유지해야 할 때 SM401을 쓰면 간단히 해결됩니다.
  • SM402 (1 Scan ON – Initial Pulse): RUN 직후 첫 번째 스캔에서만 딱 1 스캔 ON 됩니다. 파라미터 초기값 세팅(Initialize) 시 가장 기본으로 사용합니다.
  • SM403 (1 Scan Delay ON): SM402의 다음 스캔에서 ON 되는 신호입니다.
    • ※ 실무 포인트
      CPU 기동 직후 바로 값을 쓰면 통신 모듈이나 특수 모듈이 아직 준비되지 않아 값이 정상 반영되지 않는 경우가 있습니다.
      이때 SM403으로 한 사이클 늦춰 처리하면 안정적으로 동작합니다. (현장에서 많이 쓰는 패턴입니다)
  • SM412 / SM413 (Clock): 각각 1초(SM412), 2초(SM413) 간격으로 깜빡입니다. 램프 점멸이나 타이머 없이 간단한 주기 제어를 할 때 유용합니다.
    • 실무 주의 (중요)
      SM412는 0.5초 ON / 0.5초 OFF 반복 신호입니다.
      “1초마다 한 번만 ON 되는 펄스 신호가 아닙니다.”
      이걸 헷갈리면:
      – 카운터 값 두 배로 올라감
      – 로직 타이밍 틀어짐
      👉 “2초마다 한 번 동작” 같은 로직은
      클럭을 그대로 쓰지 말고 펄스 로직으로 따로 만드는 게 안전합니다.

2. SD (Special Register): “PLC의 상태를 보여주는 진짜 데이터”

PLC 시스템 정보(에러 코드, 스캔 타임, 시각 등)를 수치로 담고 있는 워드 디바이스입니다.

  • SD0 (Latest Error Code): 현재 발생한 최신 에러 코드가 담깁니다. 터치(HMI)에 이 값을 띄우면 정비 대응이 빨라집니다.
  • SD210 (Clock Data): PLC의 현재 시각 정보가 들어 있습니다. (연, 월, 일, 시, 분, 초)
  • SD520 (Current Scan Time): 프로그램이 한 바퀴 도는 데 걸리는 시간(ms)을 보여줍니다. 로직이 무거워지는지 감시할 때 씁니다.

🔥 [꿀팁] 실무에서 무조건 쓰는 SM/SD 베스트 3

① SM400으로 상시 조건 잡기

로직 중간에 조건 없이 항상 살아야 하는 구문은 무조건 SM400을 앞에 다세요. 접점 없이 코일만 있으면 나중에 가독성도 떨어지고 에러의 원인이 됩니다.

② SD0 ~ SD20으로 트러블슈팅 자동화

에러 발생 시 SD0의 코드를 읽어 터치스크린에 “에러 코드 [1234] 발생: 매뉴얼 참조”라고 띄워주세요. 노트북 연결해서 에러 로그 뒤지는 시간을 획기적으로 줄여줍니다.

③ SM412/413(클럭)과 카운터의 조합

정밀한 타이머가 필요 없을 때, 클럭 신호를 카운터(C)로 세면 아주 간단하게 설비 가동 시간(Hour Meter)이나 주기적인 신호 발생기를 만들 수 있습니다.

다만 1워드 숫자는 한계가 있는데, 이걸 보다가 1초 클럭마다 D메모리를 증가시키면 더 길게 누적할 수 있겠다는 아이디어가 나왔습니다. 필요하면 32비트(Double Word)까지 확장할 수 있어 장시간 운전 설비에도 적용 가능합니다.


⚠️ 주의사항: “쓰기(Write) 금지!”

SM, SD는 기본적으로 읽기(Read) 전용입니다. 여기에 MOV로 값을 억지로 쓰거나 SET으로 강제 제어하면, PLC 내부 시스템이 꼬이면서 원인 모를 정지(STOP)가 터질 수 있습니다. 초보자는 무조건 “읽기 전용”으로만 사용하십시오.


결론: 시스템과 대화하는 엔지니어가 됩시다

SM, SD를 잘 쓴다는 건 PLC 상태를 실시간으로 모니터링하고 있다는 뜻입니다. 장비가 왜 서는지, 스캔 타임은 적절한지 체크하며 로직을 짜야 진짜 ‘현장 엔지니어’입니다.

SM/SD를 모르면 문제를 ‘추측’하게 되고, 알면 ‘확인’하게 됩니다.


[다음 포스팅 예고]

타이머(T), 카운터(C) 여기서 많이 꼬입니다. 단순히 시간 재는 거 같죠? 비트랑 워드 둘 다 물려 있습니다. 이 구조 모르고 쓰면 나중에 로직 무조건 꼬입니다.

👉 [실무] 타이머·카운터를 ‘어디에’ 걸어야 오동작이 안 날까?