PLC 프로그램을 작성하다 보면 항상 ON 상태로 동작해야 하는 조건, 첫 스캔에서만 실행해야 하는 초기화, 현재 에러 코드 확인, 스캔 타임 감시처럼 PLC 내부 상태를 직접 확인해야 하는 경우가 생깁니다. 이때 사용하는 것이 미쓰비시 PLC의 특수 디바이스인 SM과 SD입니다. SM은 PLC가 제공하는 특수 비트 신호이고, SD는 PLC 내부 상태를 수치로 담는 특수 레지스터입니다.
SM·SD를 구분해야 하는 이유
SM과 SD는 사용자가 자유롭게 만드는 일반 M, D 디바이스와 성격이 다릅니다. PLC 시스템이 내부적으로 관리하는 특수 영역이기 때문에 용도를 정확히 알고 사용해야 합니다.
SM은 ON/OFF 상태를 나타내는 특수 릴레이입니다. 예를 들어 PLC가 RUN 상태일 때 항상 ON 되는 접점, 첫 스캔에서만 ON 되는 접점, 일정 주기로 깜빡이는 클럭 접점 등이 여기에 해당합니다.
SD는 수치 데이터를 담는 특수 레지스터입니다. 예를 들어 최신 에러 코드, 현재 스캔 타임, PLC 시각 정보 같은 값이 SD 영역에 들어갑니다.
본 글은 미쓰비시 MELSEC Q/R 시리즈 및 GX Works2/3 기준의 일반적인 내용을 바탕으로 작성했습니다. SM, SD 번호와 세부 기능은 CPU 시리즈, 펌웨어, 설정에 따라 다를 수 있으므로 실제 적용 전 반드시 해당 CPU 매뉴얼을 확인해야 합니다.
SM은 PLC가 제공하는 특수 비트 신호
SM은 Special Relay의 약자로, PLC 시스템이 미리 정의해 둔 특수 비트 디바이스입니다. 사용자가 임의로 용도를 정하는 일반 M 릴레이와 달리, 각 번호마다 기능이 정해져 있습니다.
대표적으로 다음과 같은 기능에 사용됩니다.
| 디바이스 | 일반적인 용도 |
|---|---|
| SM400 | RUN 중 항상 ON |
| SM401 | 항상 OFF |
| SM402 | RUN 직후 첫 스캔에서 ON |
| SM403 | 초기 펄스 이후 지연 조건 |
| SM412 | 1초 주기 클럭 |
| SM413 | 2초 주기 클럭 |
SM은 시스템에서 제공하는 신호이므로 일반 내부 릴레이처럼 임의로 SET, RST하여 사용하는 방식은 피해야 합니다. 기본적으로 PLC 상태를 읽는 용도로 이해하는 것이 안전합니다.
SM400은 상시 조건에 사용한다
SM400은 PLC가 RUN 상태일 때 항상 ON 되는 특수 릴레이입니다. 조건 없이 계속 실행해야 하는 로직 앞에 자주 사용됩니다.
예를 들어 상시 감시 로직, 상태 표시 로직, 기본 운전 조건 판단 로직처럼 PLC가 RUN 중일 때 계속 동작해야 하는 부분에 사용할 수 있습니다.
다만 모든 우회 조건에 SM400을 무조건 사용하는 것은 좋지 않습니다. 시운전 단계에서는 도어 센서, 실린더 전진·후진 센서, 안전 조건, 기구 위치 조건이 아직 완전히 정리되지 않은 경우가 있습니다. 이때 테스트를 위해 조건을 임시로 우회해야 한다면 SM400으로 전부 처리하기보다, 별도 미사용 내부 비트를 임시 조건으로 두고 나중에 실제 입력 조건으로 교체하는 방식이 관리에 유리합니다.
정리하면 다음과 같이 구분하는 것이 좋습니다.
| 구분 | 권장 방식 |
|---|---|
| 항상 실행해야 하는 고정 로직 | SM400 사용 |
| 시운전 중 임시 우회 조건 | 별도 내부 비트 사용 후 원복 |
| 나중에 실제 센서로 교체할 조건 | 주석을 남기고 임시 비트로 관리 |
SM400이 여러 곳에 무분별하게 들어가면 나중에 어떤 로직이 정상 상시 조건이고, 어떤 로직이 시운전용 임시 우회인지 구분하기 어려워질 수 있습니다.
SM401은 항상 OFF 조건에 사용한다
SM401은 항상 OFF 상태인 특수 릴레이입니다. 특정 회로를 임시로 막거나, 조건을 항상 불성립 상태로 두고 싶을 때 사용할 수 있습니다.
예를 들어 로직 테스트 중 특정 출력을 막아야 하거나, HMI 화면에서 별도 조건 없이 램프 이미지만 유지해야 하는 경우에 활용할 수 있습니다.
다만 SM401 역시 임시 차단 용도로 사용할 경우에는 주석을 남겨야 합니다. 나중에 유지보수자가 해당 조건이 의도적인 차단인지, 작업자가 임시로 막아둔 것인지 바로 알 수 있어야 합니다.
SM402는 첫 스캔 초기화에 사용한다
SM402는 PLC가 RUN으로 전환된 직후 첫 번째 스캔에서만 ON 되는 특수 릴레이입니다. 초기값 설정, 내부 상태 초기화, 기동 시 한 번만 실행해야 하는 로직에 사용됩니다.
예를 들어 다음과 같은 경우에 사용할 수 있습니다.
| 사용 예 | 설명 |
|---|---|
| 내부 플래그 초기화 | 이전 운전 상태를 초기 상태로 정리 |
| 초기 설정값 대입 | 특정 D 영역에 기본값 입력 |
| 통신 요청 초기화 | 송수신 상태 플래그 초기화 |
| 자동 운전 단계 초기화 | 스텝 번호를 초기 단계로 복귀 |
첫 스캔에서만 실행되어야 하는 로직을 일반 M 조건이나 SM400으로 처리하면 매 스캔 반복 실행될 수 있습니다. 초기화 로직은 반드시 한 번만 실행되어야 하는지, 계속 실행되어도 되는지 구분해야 합니다.
SM403은 한 스캔 늦춘 조건에 활용한다
SM403은 초기 펄스 이후 한 스캔 늦춰 처리할 때 활용할 수 있는 특수 릴레이입니다. CPU 기동 직후 바로 값을 쓰면 통신 모듈이나 특수 모듈의 준비 상태가 아직 안정되지 않은 경우가 있습니다.
이런 경우 첫 스캔에서 모든 초기값을 바로 쓰기보다, 한 사이클 늦춰 처리하는 방식이 안정적일 수 있습니다.
예를 들어 통신 모듈 초기화, 특수 모듈 버퍼 메모리 접근, 특정 장치 상태 확인은 CPU RUN 직후 바로 실행할 때보다 지연 조건을 두는 것이 안전한 경우가 있습니다.
다만 이 부분은 사용하는 모듈과 구성에 따라 다릅니다. 모든 상황에서 SM403을 사용해야 하는 것은 아니며, 실제 모듈 매뉴얼의 초기화 순서와 Ready 조건을 함께 확인해야 합니다.
SM412와 SM413은 클럭 신호다
SM412와 SM413은 일정 주기로 ON/OFF를 반복하는 클럭 신호입니다. 램프 점멸, 간단한 주기 동작, 운전 시간 누적 조건 등에 사용할 수 있습니다.
일반적으로 다음과 같은 용도로 활용됩니다.
| 디바이스 | 용도 |
|---|---|
| SM412 | 1초 주기 클럭 |
| SM413 | 2초 주기 클럭 |
여기서 중요한 점은 클럭 신호를 펄스 신호와 혼동하지 않는 것입니다. SM412는 1초마다 한 번만 순간적으로 ON 되는 신호가 아니라, 일정 시간 ON/OFF를 반복하는 신호로 이해해야 합니다.
이 차이를 잘못 이해하면 카운터가 예상보다 많이 올라가거나, 동작 타이밍이 의도와 다르게 구성될 수 있습니다.
예를 들어 2초마다 한 번만 어떤 동작을 실행해야 한다면 클럭 접점을 그대로 사용하기보다 상승엣지 펄스 또는 별도 펄스 로직을 만들어 사용하는 것이 더 안전합니다.
SD는 PLC 상태를 담는 특수 레지스터
SD는 Special Register의 약자로, PLC 시스템 상태를 수치 데이터로 제공하는 특수 워드 디바이스입니다.
SM이 ON/OFF 신호라면, SD는 에러 코드, 시간, 스캔 타임, 시스템 상태값 같은 데이터를 담는 영역입니다.
대표적으로 다음과 같은 항목을 확인할 때 사용합니다.
| 디바이스 | 일반적인 용도 |
|---|---|
| SD0 | 최신 에러 코드 확인 |
| SD210 계열 | PLC 시각 정보 확인 |
| SD520 | 현재 스캔 타임 확인 |
SD 번호와 의미는 CPU 시리즈에 따라 달라질 수 있습니다. 따라서 실제 프로젝트에 적용할 때는 사용하는 CPU의 특수 레지스터 목록을 기준으로 확인해야 합니다.
SD0은 에러 확인에 활용한다
SD0은 최신 에러 코드 확인에 사용되는 대표적인 특수 레지스터입니다. PLC에 에러가 발생했을 때 해당 값을 HMI에 표시하면 현장 대응이 빨라질 수 있습니다.
예를 들어 HMI 화면에 다음과 같은 방식으로 표시할 수 있습니다.
PLC 에러 코드: SD0 값 표시
상세 내용: 해당 CPU 매뉴얼의 에러 코드 표 확인
이렇게 구성하면 장비 정지 시 작업자가 노트북을 연결하기 전에도 기본적인 에러 코드를 확인할 수 있습니다.
다만 SD0 값만으로 모든 원인을 바로 확정할 수 있는 것은 아닙니다. 실제 원인 분석에는 PLC 진단, 에러 이력, 모듈 상태, 네트워크 상태, 외부 인터록 조건을 함께 확인해야 합니다.
SD210 계열은 PLC 시각 정보에 활용한다
SD210 계열은 PLC 내부 시각 정보를 확인할 때 사용됩니다. 연, 월, 일, 시, 분, 초와 같은 시각 정보를 참조해 생산 이력, 알람 발생 시간, 주기 동작 기준으로 활용할 수 있습니다.
예를 들어 알람 발생 시점의 시간을 HMI나 상위 시스템에 기록하려면 PLC 시각 정보를 함께 저장하는 구조가 필요합니다.
다만 PLC 시각은 배터리 상태, 시간 설정, 상위 장비와의 동기화 여부에 따라 실제 시간과 차이가 날 수 있습니다. 이력 관리에 사용할 경우에는 PLC 시각이 정확히 관리되고 있는지도 확인해야 합니다.
SD520은 스캔 타임 감시에 활용한다
SD520은 현재 스캔 타임을 확인하는 데 사용됩니다. PLC 프로그램이 한 바퀴 도는 데 걸리는 시간을 확인할 수 있으므로, 로직이 무거워지는지 판단할 때 참고할 수 있습니다.
스캔 타임이 증가하면 다음과 같은 문제가 생길 수 있습니다.
| 영향 | 설명 |
|---|---|
| 입력 반응 지연 | 센서 변화에 대한 처리 지연 |
| 출력 타이밍 지연 | 실린더, 모터, 밸브 제어 타이밍 변화 |
| 통신 처리 지연 | 통신 요청과 응답 주기 불안정 |
| 연산 부하 증가 | 반복문, 대량 연산, 불필요한 상시 처리 증가 |
스캔 타임은 장비 규모, 프로그램 구조, 통신 처리량, 특수 모듈 사용 여부에 따라 달라집니다. 절대값 하나만 보고 판단하기보다 정상 운전 시 기준값을 잡아두고 변화 추이를 보는 것이 좋습니다.
SM·SD 활용 시 자주 쓰는 패턴
SM과 SD는 단순히 알고 있는 것보다 실제 로직에 어떻게 배치하는지가 중요합니다.
자주 사용하는 패턴은 다음과 같습니다.
| 패턴 | 설명 |
|---|---|
| SM400 + 상시 감시 | RUN 중 계속 확인해야 하는 조건 처리 |
| SM402 + 초기화 | RUN 직후 한 번만 초기값 설정 |
| SM412 + 램프 점멸 | 알람 램프 또는 상태 램프 점멸 |
| SD0 + HMI 표시 | PLC 에러 코드를 화면에 표시 |
| SD520 + 진단 화면 | 스캔 타임을 표시해 부하 변화 확인 |
이런 항목은 장비 진단 화면이나 유지보수 화면에 넣어두면 현장 대응에 도움이 됩니다. 특히 SD0과 스캔 타임은 장비가 멈췄을 때 원인 추적의 출발점으로 사용할 수 있습니다.
클럭 신호와 카운터 사용 시 주의할 점
SM412나 SM413 같은 클럭 신호를 카운터와 조합하면 간단한 시간 누적 기능을 만들 수 있습니다. 예를 들어 운전 중일 때 1초 클럭을 기준으로 D 값을 증가시키면 설비 가동 시간 누적 구조를 만들 수 있습니다.
다만 이때도 클럭 신호를 그대로 카운터 입력에 넣을지, 상승엣지 펄스를 만들어 넣을지 구분해야 합니다.
또한 누적 시간이 길어질 경우 16비트 범위를 초과할 수 있으므로 32비트 데이터 사용 여부를 검토해야 합니다. 단순한 초 단위 누적이라도 장시간 운전 설비에서는 데이터 범위가 부족할 수 있습니다.
운전 시간 누적값, 생산 카운터, 알람 발생 횟수처럼 장기간 보존해야 하는 값은 래치 영역 사용 여부도 함께 검토해야 합니다.
SM·SD는 쓰기 대상으로 사용하지 않는다
SM과 SD는 기본적으로 PLC 시스템이 관리하는 특수 디바이스입니다. 일반 M, D처럼 임의로 값을 쓰는 방식은 피해야 합니다.
일부 특수 디바이스는 특정 목적의 쓰기 기능이 정의되어 있는 경우도 있지만, 초보 단계나 일반 장비 로직에서는 읽기 전용으로 사용하는 것이 안전합니다.
특히 다음과 같은 방식은 주의해야 합니다.
| 잘못된 사용 예 | 문제점 |
|---|---|
| SM을 일반 내부 릴레이처럼 SET/RST | 시스템 신호와 충돌 가능 |
| SD에 임의 값을 MOV | PLC 진단값 해석 오류 가능 |
| 용도를 모르는 SM/SD 사용 | CPU 상태나 진단 로직 오해 가능 |
| 매뉴얼 확인 없이 번호만 복사 | 시리즈 차이로 기능 불일치 가능 |
SM/SD는 편리하지만 시스템 영역입니다. 반드시 해당 CPU 매뉴얼에서 기능을 확인한 뒤 사용해야 합니다.
SM·SD 사용 기준 정리
SM과 SD를 사용할 때는 다음 기준을 지키는 것이 좋습니다.
| 구분 | 권장 기준 |
|---|---|
| SM400 | 상시 실행 조건에 사용 |
| SM401 | 임시 차단 또는 항상 OFF 조건에 제한적으로 사용 |
| SM402 | RUN 직후 1회 초기화 조건에 사용 |
| SM403 | 초기화 지연이 필요한 조건에 사용 |
| SM412/SM413 | 점멸, 주기 조건에 사용하되 펄스와 구분 |
| SD0 | 에러 코드 표시와 진단에 활용 |
| SD210 계열 | 시각 정보가 필요한 이력 관리에 활용 |
| SD520 | 스캔 타임 감시에 활용 |
이 기준은 일반적인 실무 정리입니다. 실제 번호와 기능은 CPU 시리즈별 매뉴얼을 기준으로 최종 확인해야 합니다.
특수 디바이스 정리
SM과 SD는 PLC 내부 상태를 확인하고 로직을 안정적으로 구성하기 위한 특수 디바이스입니다. SM은 PLC가 제공하는 특수 비트 신호이고, SD는 PLC 상태를 담는 특수 워드 데이터입니다.
SM400, SM402, SM412 같은 특수 릴레이를 정확히 사용하면 상시 조건, 초기화, 클럭 처리 로직을 간단하게 구성할 수 있습니다. SD0, SD520 같은 특수 레지스터를 활용하면 에러 코드와 스캔 타임을 HMI나 진단 화면에서 확인할 수 있습니다.
다만 SM/SD는 일반 사용자 디바이스가 아니라 PLC 시스템이 관리하는 영역입니다. 용도를 모른 채 값을 쓰거나, 시리즈 차이를 확인하지 않고 번호만 복사하면 오동작이나 진단 오류의 원인이 될 수 있습니다.
SM/SD는 장비 상태를 추측하지 않고 확인하기 위한 기본 도구입니다. 로직 설계 단계에서 필요한 항목만 선별해 사용하고, 매뉴얼 기준으로 번호와 동작을 확인하는 것이 안전합니다.
타이머와 카운터는 비트 접점과 워드 현재값의 성격을 함께 가지므로 일반 비트·워드 디바이스와 구분해서 이해해야 합니다. 이 부분은 별도 글에서 구조와 사용 위치를 나누어 정리하는 것이 좋습니다.