[카테고리:] PLC/Automation

PLC/자동제어 카테고리는 산업 자동화 현장에서 사용하는 PLC 제어, 전장 설계, 산업용 통신, 서보·모션, 제어반 제작과 관련된 실무 내용과 자동화 산업 현장 인사이트를 정리합니다. 현장 시운전과 유지보수 과정에서 자주 발생하는 문제, 전시회와 설비 트렌드에서 확인한 내용을 기준으로 작성합니다.

  • [실무] D·W·R·Z 데이터 구조와 용도 제대로 이해하기

    PLC에서 비트 디바이스가 ON/OFF 상태를 다룬다면, 워드 디바이스는 수치와 데이터를 다루는 영역입니다. 생산 수량, 설정값, 위치값, 통신 데이터, 레시피처럼 숫자로 관리해야 하는 값은 대부분 워드 단위로 처리됩니다. 미쓰비시 MELSEC Q/R 시리즈와 GX Works2/3 환경에서는 D, W, R, Z의 용도를 구분해 두어야 데이터 충돌과 주소 혼선을 줄일 수 있습니다.

    워드 디바이스를 이해해야 하는 이유

    PLC 로직은 단순한 접점 제어만으로 끝나지 않습니다. 실제 설비에서는 설정값을 변경하고, 현재 위치를 표시하고, 생산 수량을 누적하고, HMI나 다른 장비와 데이터를 주고받아야 합니다.

    이때 사용하는 기본 단위가 워드 디바이스입니다. 워드는 일반적으로 16비트 단위로 데이터를 저장하며, 더 큰 숫자는 2워드를 묶어 32비트 데이터로 처리합니다.

    미쓰비시 PLC에서는 용도에 따라 D, W, R, Z 같은 워드 디바이스를 구분해 사용합니다. 각각의 성격을 제대로 이해하지 못하면 값이 초기화되거나, 통신 주소가 밀리거나, 레시피 데이터가 덮이는 문제가 발생할 수 있습니다.

    본 글은 미쓰비시 MELSEC Q/R 시리즈 및 GX Works2/3 기준의 일반적인 내용을 바탕으로 작성했습니다. 실제 사용 가능 범위와 보존 방식은 CPU 모델, 파라미터, 프로젝트 설정에 따라 달라질 수 있으므로 적용 전 사용 중인 PLC 매뉴얼과 파라미터를 확인해야 합니다.

    D 데이터 레지스터의 기본 용도

    D는 데이터 레지스터입니다. PLC 내부에서 숫자 데이터를 저장할 때 가장 많이 사용하는 범용 워드 디바이스입니다.

    D 디바이스는 생산 수량, 설정값, 위치값, 타이머나 카운터의 기준값, 연산 결과 저장 등에 자주 사용됩니다. 현장에서 가장 많이 접하는 워드 디바이스라고 볼 수 있습니다.

    예를 들어 다음과 같은 용도로 사용할 수 있습니다.

    사용 예설명
    생산 수량 저장카운터 결과나 생산 누적값 저장
    설정값 저장HMI에서 입력한 속도, 시간, 압력 등의 기준값 저장
    위치 데이터 저장서보 위치값, 원점 보정값, 이동 거리 저장
    연산 결과 저장사칙연산, 비교 연산 결과 보관

    D 디바이스는 기본적으로 16비트 단위입니다. 16비트 정수로 처리할 경우 표현 범위에 제한이 있으므로, 큰 수치나 정밀한 위치값을 다룰 때는 32비트 명령과 2워드 사용 여부를 확인해야 합니다.

    예를 들어 D100 하나만 사용하는 경우와 D100, D101을 묶어 32비트로 사용하는 경우는 데이터 구조가 다릅니다. 이 부분을 구분하지 않으면 음수로 보이거나 값이 비정상적으로 튀는 문제가 생길 수 있습니다.

    D 디바이스와 래치 설정

    D 디바이스를 사용할 때 중요한 부분은 전원 OFF 후 값이 유지되는지 여부입니다.

    일부 D 영역은 파라미터에서 래치 범위로 설정해야 전원 차단 후에도 값이 유지됩니다. 래치 설정이 되어 있지 않은 영역은 전원 재투입 또는 CPU 초기화 조건에 따라 값이 0으로 초기화될 수 있습니다.

    따라서 생산 수량, 모델 설정값, 보정값처럼 전원 OFF 후에도 유지해야 하는 데이터는 반드시 래치 범위에 포함해야 합니다.

    반대로 임시 연산값이나 순간 상태값처럼 전원 재투입 시 초기화되어도 되는 데이터는 비래치 영역에 두는 것이 관리하기 쉽습니다.

    메모리 설계 시에는 다음과 같이 영역을 구분하는 것이 좋습니다.

    구분사용 예
    비래치 D 영역임시 연산값, 순간 상태값, 자동운전 중간 데이터
    래치 D 영역생산 수량, 보정값, 모델 설정값, HMI 입력 설정값

    D 레지스터의 전체 용량과 래치 가능 범위는 CPU 모델마다 다를 수 있습니다. 설계 전 해당 CPU의 디바이스 범위와 파라미터 설정을 확인해야 합니다.

    W 링크 레지스터의 기본 용도

    W는 링크 레지스터입니다. 주로 네트워크 통신이나 장비 간 데이터 공유에 사용됩니다.

    CC-Link, Ethernet, MELSECNET, HMI 통신 등에서 다른 PLC, 터치스크린, PC, 상위 시스템과 데이터를 주고받을 때 W 영역을 사용하는 경우가 많습니다.

    W 디바이스는 다음과 같은 용도로 자주 사용됩니다.

    사용 예설명
    HMI 표시 데이터현재 속도, 위치, 상태값 표시
    장비 간 데이터 공유다른 PLC와 생산 정보 또는 인터록 정보 교환
    네트워크 통신 버퍼통신 모듈이나 링크 영역 데이터 관리
    상위 시스템 연동MES, PC, 검사 장비와의 데이터 전달

    W 디바이스에서 특히 주의할 점은 주소 체계입니다. W는 일반적으로 16진수 주소 체계를 사용합니다. 따라서 W9 다음은 W10이 아니라 WA입니다.

    이 규칙을 모르면 주소를 10진수처럼 계산해 데이터 영역을 잘못 배치할 수 있습니다. 통신 데이터가 한 칸씩 밀리거나, HMI에서 다른 값을 표시하는 문제가 발생할 수 있습니다.

    W 주소를 사용할 때 주의할 점

    W 주소는 16진수 체계로 관리됩니다. 숫자 0부터 9까지 사용한 뒤 A, B, C, D, E, F가 이어지고, 그 다음이 10으로 넘어갑니다.

    예를 들면 다음과 같습니다.

    순서W 주소
    1W0
    2W1
    10W9
    11WA
    12WB
    16WF
    17W10

    실무에서 W 주소를 배치할 때는 엑셀이나 메모리 맵에 16진수 기준으로 정리하는 것이 안전합니다. 특히 HMI, 상위 PC, 다른 PLC와 주소를 공유하는 경우에는 주소 체계를 서로 동일하게 이해하고 있어야 합니다.

    W 영역도 CPU와 네트워크 구성, 파라미터에 따라 사용 가능 범위와 보존 방식이 달라질 수 있습니다. 통신 전용 영역으로 사용할 경우에는 다른 내부 연산 데이터와 섞지 않는 것이 좋습니다.

    R 파일 레지스터의 기본 용도

    R은 파일 레지스터입니다. D 영역만으로 데이터 저장 공간이 부족하거나, 대량의 레시피 데이터를 관리해야 할 때 사용하는 워드 디바이스입니다.

    R 디바이스는 제품별 설정값, 모델별 위치값, 생산 조건, 검사 기준값처럼 여러 세트로 관리해야 하는 데이터를 저장할 때 유용합니다.

    예를 들어 제품 모델이 10개이고, 각 모델마다 속도, 위치, 압력, 시간 설정값이 필요하다면 D 영역만으로 관리하기보다 R 영역을 사용해 레시피 구조로 정리하는 방식이 적합할 수 있습니다.

    R 디바이스는 다음과 같은 용도로 많이 사용됩니다.

    사용 예설명
    모델별 레시피제품별 위치, 속도, 시간, 압력 조건 저장
    생산 이력 일부 저장간단한 누적값 또는 작업 조건 보관
    대용량 설정 데이터D 영역보다 많은 데이터가 필요한 경우
    장비 조건 백업특정 조건 세트를 별도 영역에 보관

    R 영역은 일반 D 영역과 별도 구조로 사용되는 경우가 많습니다. 다만 실제 보존 방식과 사용 가능 범위는 CPU 모델과 파라미터 설정에 따라 달라질 수 있습니다. 중요한 데이터는 반드시 백업 방식과 초기화 조건까지 함께 확인해야 합니다.

    Z 인덱스 레지스터의 기본 용도

    Z는 인덱스 레지스터입니다. 값을 저장하는 일반 워드 디바이스라기보다, 주소를 가변적으로 지정할 때 사용하는 보조 디바이스에 가깝습니다.

    Z를 사용하면 같은 명령어로 여러 주소를 순차적으로 읽거나 쓸 수 있습니다. 배열 처리, 반복 처리, 레시피 데이터 접근, 다수의 동일 구조 데이터 관리에 활용됩니다.

    예를 들어 Z0의 값이 5일 때 D100Z0을 지정하면 실제 참조 주소는 D105가 됩니다.

    Z0 = 5
    D100Z0 = D105
    

    이 방식은 같은 구조의 데이터가 여러 개 반복될 때 유용합니다.

    예를 들어 D100부터 D199까지 제품별 설정값이 순서대로 저장되어 있고, 현재 선택된 모델 번호에 따라 읽을 주소가 달라져야 한다면 Z를 이용해 주소를 계산할 수 있습니다.

    Z 사용 시 주의할 점

    Z는 주소를 바꾸는 역할을 하기 때문에 잘못 사용하면 전혀 다른 영역을 읽거나 쓸 수 있습니다.

    특히 MOV, BMOV, FMOV, 비교 명령, 연산 명령과 함께 사용할 때는 Z 값이 어떤 조건에서 변경되는지 명확히 관리해야 합니다.

    다음 사항을 확인하는 것이 좋습니다.

    확인 항목이유
    Z 값 초기화 조건이전 동작의 인덱스 값이 남아 있을 수 있음
    최대 주소 범위의도하지 않은 영역 접근 방지
    모델 번호와 인덱스 관계레시피 주소 계산 오류 방지
    반복문 종료 조건데이터 영역 초과 접근 방지

    Z는 편리하지만 추적이 어려운 디바이스입니다. 유지보수자가 로직을 볼 때 실제 주소를 바로 알기 어렵기 때문에, 주석과 메모리 맵을 함께 정리해야 합니다.

    워드 디바이스를 비트 단위로 사용하는 방법

    미쓰비시 PLC에서는 CPU 시리즈와 명령, 설정 조건에 따라 워드 디바이스의 특정 비트를 지정해 사용할 수 있습니다.

    예를 들어 D0.0, D0.F, W10.5처럼 워드 주소 뒤에 비트 번호를 붙여 특정 비트만 상태 신호처럼 사용할 수 있습니다.

    이 방식은 통신 데이터나 상태 데이터를 묶어서 관리할 때 유용합니다.

    예를 들어 D100 하나에 16개의 에러 상태를 할당하면, 상위 시스템은 D100 워드 하나만 읽어도 여러 개의 에러 상태를 확인할 수 있습니다.

    D100.0 = 비상정지 에러
    D100.1 = 도어 열림 에러
    D100.2 = 서보 알람
    D100.3 = 센서 이상
    ...
    D100.F = 예비 에러
    

    이 방식은 통신 효율을 높일 수 있지만, 같은 워드 주소를 숫자 저장용과 비트 상태용으로 동시에 사용하면 문제가 생깁니다.

    예를 들어 D100에 숫자 값을 MOV로 저장하면서 동시에 D100.0을 에러 비트로 사용하면, 숫자 값이 바뀔 때 비트 상태도 함께 바뀔 수 있습니다. 반대로 비트 제어가 숫자 데이터를 깨뜨릴 수도 있습니다.

    따라서 워드 단위 데이터와 비트 단위 상태 데이터는 메모리 맵에서 영역을 분리해야 합니다.

    D·W·R·Z 비교 정리

    D, W, R, Z는 모두 워드 디바이스로 분류되지만 실제 용도는 다릅니다. 설계 단계에서 역할을 구분해 두면 로직 해석과 유지보수가 쉬워집니다.

    디바이스주소 체계전원 OFF 시 보존실무 핵심 용도
    D10진수파라미터 설정에 따라 다름범용 데이터 저장, 설정값, 위치값, 연산값
    W16진수파라미터 및 구성에 따라 다름통신 데이터, 네트워크 공유, HMI 연동
    R10진수보존용 데이터 관리에 주로 사용대용량 레시피, 모델 정보, 조건 데이터
    Z10진수일반적으로 초기화 대상주소 간접 지정, 배열 처리, 반복 접근

    이 표는 일반적인 실무 기준의 정리입니다. 실제 프로젝트에서는 CPU 모델, 파라미터, 네트워크 구성, 메모리 할당 방식에 따라 차이가 있을 수 있습니다.

    워드 디바이스 설계 시 확인할 사항

    워드 디바이스를 사용할 때는 단순히 비어 있는 주소를 쓰는 방식보다, 용도별로 영역을 나누는 것이 좋습니다.

    예를 들어 다음과 같이 구분할 수 있습니다.

    영역사용 목적
    D0~D99내부 임시 연산값
    D100~D199HMI 설정값
    D200~D299현재 상태 표시값
    D300~D399서보 위치 데이터
    W 영역통신 전용 데이터
    R 영역모델별 레시피 데이터
    Z 영역주소 간접 지정용

    이런 식으로 기준을 정해두면 나중에 로직을 수정하거나 HMI 화면을 추가할 때 주소 충돌을 줄일 수 있습니다.

    또한 워드 디바이스를 사용할 때는 다음 항목을 함께 확인해야 합니다.

    확인 항목설명
    16비트 / 32비트 구분데이터 크기에 따라 사용하는 워드 수가 달라짐
    부호 있는 값 / 부호 없는 값음수 표시나 범위 오류를 방지하기 위해 확인 필요
    래치 여부전원 OFF 후 유지해야 하는 값인지 확인
    주소 체계D, R은 10진수 기준, W는 16진수 기준으로 관리
    통신 공유 여부HMI, PC, 다른 PLC와 공유되는 주소인지 확인
    비트 사용 여부워드 단위 숫자와 비트 단위 상태를 혼용하지 않도록 관리

    데이터 구조 정리

    D, W, R, Z는 단순한 저장 공간이 아니라 PLC 데이터 구조의 기본입니다. D는 범용 데이터, W는 통신 공유, R은 대용량 보존 데이터, Z는 주소 간접 지정에 주로 사용됩니다.

    워드 디바이스를 정확히 구분하면 HMI 표시 오류, 통신 주소 밀림, 전원 재투입 후 데이터 초기화, 레시피 데이터 충돌 같은 문제를 줄일 수 있습니다.

    특히 W의 16진수 주소 체계와 D의 래치 설정, Z를 이용한 간접 주소 지정은 현장에서 자주 혼선이 생기는 부분입니다. 설계 단계에서 메모리 맵을 정리하고, 숫자 저장 영역과 비트 상태 영역을 분리해 두는 것이 안정적인 PLC 프로그램 관리의 기본입니다.

    타이머와 카운터는 현재값과 접점 성격을 함께 가지는 복합 디바이스로 볼 수 있습니다. 이 부분은 일반 워드 디바이스와 구분해 별도로 정리하는 것이 좋습니다.

  • [실무] X·Y·M·L·B 트러블 없이 구분하는 핵심 기준

    미쓰비시 PLC에서 X, Y, M, L, B는 ON/OFF 신호를 다루는 대표적인 비트 디바이스입니다. 각 디바이스는 입력, 출력, 내부 연산, 상태 유지, 통신 공유처럼 역할이 다르기 때문에 용도를 구분해서 사용해야 합니다.

    PLC 로직의 기본은 비트 신호입니다. 센서가 감지되었는지, 출력이 켜졌는지, 내부 조건이 성립했는지, 상태를 유지해야 하는지 모두 0과 1의 상태로 판단합니다.

    초보 단계에서는 X와 Y는 비교적 쉽게 이해하지만, M과 L의 차이, B 디바이스의 통신 용도, 주소 체계 차이에서 혼동이 자주 발생합니다.

    이 글에서는 미쓰비시 PLC 현장에서 자주 사용하는 X, Y, M, L, B 비트 디바이스를 실무 기준으로 정리합니다.

    비트 디바이스의 기본 개념

    비트 디바이스는 ON 또는 OFF 상태만 가지는 디바이스입니다. 쉽게 말해 PLC 내부에서 사용하는 접점 또는 릴레이라고 볼 수 있습니다.

    ON 상태는 1, OFF 상태는 0으로 표현됩니다. 센서 입력, 버튼 신호, 출력 코일, 내부 조건, 통신 인터록 같은 신호를 모두 비트 단위로 처리할 수 있습니다.

    PLC 로직은 입력 신호를 받아 내부 조건을 판단하고, 그 결과를 출력으로 내보내는 구조입니다. 이 과정에서 X, Y, M, L, B가 각각 다른 역할을 담당합니다.

    중요한 점은 비트 디바이스마다 역할과 유지 특성이 다르다는 것입니다. 같은 ON/OFF 신호라도 어디에 저장하느냐에 따라 동작 방식이 달라질 수 있습니다.

    X 입력 디바이스

    X는 입력 디바이스입니다. 현장의 물리적인 신호를 PLC 내부로 받아들이는 역할을 합니다.

    센서, 푸시 버튼, 리미트 스위치, 근접 센서, 안전 스위치 같은 외부 신호가 PLC 입력 모듈을 통해 X 디바이스로 들어옵니다.

    예를 들어 제품 감지 센서가 켜지면 PLC 내부에서 X0이 ON 될 수 있습니다. 작업자가 버튼을 누르면 해당 입력 주소가 ON 되어 프로그램 조건으로 사용됩니다.

    X는 기본적으로 외부 입력 모듈과 연결되는 디바이스입니다. 따라서 실제 입력 모듈, 배선, COM 기준, I/O 할당이 맞아야 정상적으로 동작합니다.

    X 입력 사용 시 확인할 점

    X 입력이 들어오지 않을 때는 프로그램보다 먼저 실제 입력 조건을 확인해야 합니다. 센서 LED가 켜져 있어도 PLC 입력 모듈까지 신호가 들어오지 않으면 X는 ON 되지 않습니다.

    입력 모듈의 COM 전원, NPN·PNP 방식, 입력 주소 할당, 단자 번호를 함께 확인해야 합니다. 특히 I/O Assignment가 실제 장착 모듈과 맞지 않으면 주소가 맞아도 입력이 정상적으로 들어오지 않을 수 있습니다.

    시운전 중에는 Force 기능으로 X 입력 상태를 강제로 바꿀 수 있습니다. 하지만 Force 상태를 해제하지 않고 작업을 끝내면 실제 현장 신호와 다른 상태로 장비가 동작할 수 있습니다.

    입력 문제를 확인할 때는 실제 입력 LED, GX Works 모니터 상태, 배선 전압, 파라미터 설정을 함께 봐야 합니다.

    Y 출력 디바이스

    Y는 출력 디바이스입니다. PLC가 연산한 결과를 현장 장치로 내보내는 역할을 합니다.

    모터 기동 신호, 솔레노이드 밸브 동작, 램프 점등, 릴레이 코일 구동, 전자접촉기 동작 같은 출력에 사용됩니다.

    예를 들어 프로그램 조건이 만족되어 Y0이 ON 되면 출력 모듈을 통해 외부 장치로 신호가 나갑니다. 이 신호가 릴레이나 밸브를 동작시켜 실제 장비가 움직입니다.

    Y는 로직의 최종 결과로 많이 사용됩니다. 따라서 출력이 안 나갈 때는 로직 조건뿐 아니라 출력 모듈, 출력 COM 전원, 부하 배선까지 함께 확인해야 합니다.

    Y 출력 사용 시 확인할 점

    프로그램에서 Y가 ON 되어도 실제 출력이 나가지 않을 수 있습니다. 출력 모듈이 없거나, 주소 할당이 맞지 않거나, 출력 COM 전원이 빠져 있으면 현장 장비는 동작하지 않습니다.

    출력 문제를 볼 때는 PLC 출력 모듈의 LED를 먼저 확인하는 것이 좋습니다. GX Works에서는 Y가 ON으로 보이는데 출력 LED가 OFF라면 로직 실행, I/O 파라미터, 모듈 상태를 확인해야 합니다.

    출력 LED가 ON인데 장비가 움직이지 않는다면 PLC 내부보다는 외부 회로를 확인해야 합니다. 릴레이, 솔레노이드 밸브, 단자대, 커넥터, 부하 전원 쪽 문제가 될 수 있습니다.

    Y 출력은 실제 장비 동작과 연결되므로 강제 출력이나 테스트 시에는 안전 상태를 먼저 확인해야 합니다.

    M 내부 릴레이

    M은 내부 릴레이입니다. PLC 내부에서 조건 판단, 인터록, 단계 제어, 상태 플래그를 만들 때 사용합니다.

    외부 입력이나 출력과 직접 연결되는 디바이스가 아니라, 프로그램 안에서 사용하는 내부 접점입니다. 과거 외부 릴레이 배선으로 구성하던 조건 회로를 PLC 내부에서 처리하기 위해 사용하는 개념입니다.

    예를 들어 자동 운전 조건이 모두 만족되었을 때 M100을 ON 시키고, 이후 여러 출력 조건에서 M100을 공통 조건으로 사용할 수 있습니다.

    M은 로직 정리에 매우 많이 사용됩니다. 복잡한 조건을 한 번에 정리하거나, 공정 단계별 상태를 나누는 데 유용합니다.

    M 사용 시 확인할 점

    M은 내부 릴레이이므로 실제 외부 배선과 직접 연결되지 않습니다. 따라서 M이 ON 되어도 그것만으로 현장 장비가 움직이는 것은 아닙니다. M 조건이 최종적으로 Y 출력으로 연결되어야 실제 동작이 발생합니다.

    일반적으로 M은 전원 OFF 시 초기화되는 영역으로 사용하는 경우가 많습니다. 다만 CPU 설정과 래치 범위 설정에 따라 일부 M 영역을 유지 영역으로 사용할 수도 있습니다.

    따라서 M을 사용할 때는 해당 주소가 래치 범위에 포함되어 있는지 확인해야 합니다. 전원 재투입 후 상태가 유지되어야 하는 신호라면 M 대신 L이나 래치 설정된 영역을 검토해야 합니다.

    M을 무분별하게 사용하면 유지보수가 어려워집니다. 자동 조건, 수동 조건, 알람 조건, 공정 단계처럼 용도별로 영역을 나누어 관리하는 것이 좋습니다.

    L 래치 릴레이

    L은 래치 릴레이입니다. 전원이 꺼져도 상태를 유지해야 하는 비트 신호에 사용합니다.

    자동 운전 상태, 원점 복귀 완료 상태, 주요 에러 이력, 장비 모드 기억처럼 전원 OFF 후에도 유지가 필요한 조건에 사용할 수 있습니다.

    M과 L은 로직상 비슷하게 보일 수 있습니다. 둘 다 내부 비트처럼 사용할 수 있지만, L은 상태 유지 목적이 더 강합니다.

    다만 L이라고 해서 모든 상황에서 무조건 유지된다고 보면 안 됩니다. 실제 유지 여부는 CPU 파라미터의 래치 설정과 디바이스 범위에 따라 달라질 수 있습니다.

    L 사용 시 확인할 점

    L을 사용할 때는 반드시 래치 범위 설정을 확인해야 합니다. CPU 파라미터에서 해당 L 영역이 유지 영역으로 설정되어 있어야 전원 OFF 후에도 상태가 유지됩니다.

    시운전 중에는 L 상태가 남아 있어 예상과 다른 동작이 나올 수 있습니다. 예를 들어 원점 완료 상태가 이전 값으로 남아 있으면 장비가 실제 원점 확인 없이 다음 동작으로 넘어갈 수 있습니다.

    따라서 L은 중요한 상태를 유지할 때만 사용해야 합니다. 불필요하게 많은 조건을 L로 만들면 초기화 관리가 어려워지고, 재가동 시 상태 불일치가 생길 수 있습니다.

    L을 사용한 로직에는 초기화 조건과 리셋 조건을 명확히 넣어야 합니다. 상태를 유지하는 것만큼 언제 지울 것인지도 중요합니다.

    B 링크 릴레이

    B는 링크 릴레이입니다. 다른 PLC, 네트워크 모듈, 리모트 I/O, 상위 장치와 비트 신호를 주고받을 때 사용하는 디바이스입니다.

    설비 간 인터록, 라인 준비 신호, 원격 장비 상태, 네트워크 공유 신호처럼 PLC 간에 ON/OFF 정보를 공유할 때 사용됩니다.

    예를 들어 앞 공정 PLC가 작업 완료 신호를 B 디바이스로 보내고, 뒤 공정 PLC가 그 신호를 받아 다음 동작을 수행하는 구조를 만들 수 있습니다.

    B는 통신과 관련된 디바이스이므로 네트워크 파라미터, 링크 범위, 국번 설정, 할당 영역을 함께 확인해야 합니다.

    B 사용 시 확인할 점

    B 디바이스에서 가장 많이 혼동하는 부분은 주소 체계입니다. B는 일반적으로 16진수 주소 체계를 사용합니다.

    따라서 B9 다음은 B10이 아니라 BA로 이어지는 구조를 이해해야 합니다. 16진수 주소 체계를 10진수처럼 생각하면 주소가 밀리고 통신 신호가 맞지 않을 수 있습니다.

    B 디바이스도 설정에 따라 래치 여부나 사용 범위가 달라질 수 있습니다. 통신 파라미터에서 어느 영역을 송신하고 어느 영역을 수신하는지 확인해야 합니다.

    B가 ON 되지 않을 때는 로직만 보지 말고 네트워크 상태, 링크 파라미터, 상대 PLC의 송신 영역, 국번 설정을 함께 확인해야 합니다.

    X Y M L B 비교

    X, Y, M, L, B는 모두 비트 디바이스지만 역할은 다릅니다. X는 외부 입력을 받고, Y는 외부 출력으로 내보내며, M과 L은 PLC 내부 상태를 처리하고, B는 통신 신호를 공유합니다.

    각 디바이스의 역할을 구분하지 않으면 로직 설계와 트러블슈팅이 어려워집니다. 특히 M과 L을 혼동하거나, B 주소를 10진수처럼 관리하면 문제가 생길 수 있습니다.

    디바이스구분주요 역할전원 OFF 시 기준
    X입력센서, 버튼, 스위치 신호 입력외부 입력 상태에 의존
    Y출력모터, 밸브, 램프, 릴레이 구동일반적으로 초기화
    M내부 릴레이조건 판단, 인터록, 공정 단계설정에 따라 다름
    L래치 릴레이상태 유지, 완료 상태, 에러 기억래치 설정 확인 필요
    B링크 릴레이PLC 간 통신, 네트워크 인터록통신 설정에 따라 다름

    전원 OFF 시 동작은 CPU 종류와 파라미터 설정에 따라 달라질 수 있습니다. 실제 적용 전에는 반드시 사용하는 PLC의 디바이스 설정과 래치 범위를 확인해야 합니다.

    10진수와 16진수 주소 체계

    미쓰비시 PLC에서는 디바이스별로 주소 표시 체계가 다를 수 있습니다. 이 부분을 혼동하면 주소가 맞지 않아 입력과 출력이 밀리는 문제가 생깁니다.

    일반적으로 M과 L은 10진수 주소로 관리하는 경우가 많습니다. 이 경우 M9 다음은 M10입니다.

    반면 X, Y, B는 16진수 주소 체계를 사용하는 경우가 많습니다. 이 경우 X9 다음은 XA이고, XF 다음이 X10입니다.

    주소 체계가 다르면 도면 작성, I/O 할당, 통신 주소 매핑에서 혼동이 생길 수 있습니다. 특히 X, Y, B 주소를 10진수처럼 세면 실제 주소와 맞지 않게 됩니다.

    주소 체계적용 예증가 방식
    10진수M, L8, 9, 10, 11
    16진수X, Y, B8, 9, A, B, C, D, E, F, 10

    비트 디바이스 사용 흐름

    PLC 로직은 입력, 판단, 출력 흐름으로 이해하면 쉽습니다. 현장 신호가 X로 들어오고, PLC 내부에서 M이나 L로 조건을 판단한 뒤, 결과를 Y로 출력합니다.

    통신이 포함된 설비에서는 B가 이 흐름에 추가됩니다. 다른 PLC에서 받은 B 신호를 내부 조건에 반영하거나, 내 장비 상태를 B로 상대 장비에 전달합니다.

    예를 들어 X0 제품 감지, X1 실린더 원점, M100 자동 조건, L200 원점 완료 기억, Y10 밸브 출력, B50 상대 설비 준비 신호처럼 역할을 나누어 사용할 수 있습니다.

    이처럼 디바이스 역할을 나누면 로직이 정리되고 트러블슈팅도 쉬워집니다. 입력 문제인지, 내부 조건 문제인지, 출력 문제인지, 통신 문제인지 구분할 수 있기 때문입니다.

    디바이스 사용 시 실무 기준

    X는 실제 입력 모듈과 연결된 신호에 사용합니다. 센서와 버튼 신호를 내부 조건처럼 임의로 바꾸어 사용하면 현장 상태와 로직 상태가 맞지 않을 수 있습니다.

    Y는 실제 출력 모듈과 연결되는 신호에 사용합니다. 같은 Y 주소를 여러 위치에서 코일로 중복 사용하면 이중 코일 문제가 생길 수 있습니다.

    M은 내부 조건 정리에 사용합니다. 자동 조건, 수동 조건, 공정 단계, 인터록 조건을 영역별로 나누어 관리하면 유지보수에 유리합니다.

    L은 전원 OFF 후에도 남아야 하는 상태에만 사용합니다. 원점 완료, 중요 상태, 일부 에러 기록처럼 유지가 필요한 항목에 제한적으로 쓰는 것이 좋습니다.

    B는 통신 공유 신호에 사용합니다. 상대 장비와 주고받는 인터록은 송신 영역과 수신 영역을 명확히 나누어 관리해야 합니다.

    X Y M L B 점검 기준

    비트 디바이스 문제를 확인할 때는 디바이스 종류에 따라 점검 방향을 다르게 잡아야 합니다.

    X가 안 들어오면 센서, 입력 전원, COM, 배선, 입력 모듈을 봐야 합니다. Y가 안 나가면 로직 조건, 출력 LED, 출력 COM, 부하 회로를 확인해야 합니다.

    M이 예상과 다르면 내부 로직 조건과 SET/RST 구조를 확인해야 합니다. L이 예상과 다르면 래치 범위와 초기화 조건을 봐야 합니다.

    B가 맞지 않으면 통신 상태, 파라미터, 링크 영역, 상대 PLC 신호를 함께 확인해야 합니다.

    증상우선 확인 항목
    X 입력이 안 들어옴센서, COM, 입력 모듈, I/O 할당
    Y 출력이 안 나감로직 조건, 출력 LED, 출력 COM, 부하
    M 조건이 이상함내부 로직, 이중 사용, SET/RST
    L 상태가 남거나 사라짐래치 범위, 초기화 조건
    B 신호가 맞지 않음통신 파라미터, 링크 영역, 국번 설정

    X Y M L B 정리

    X, Y, M, L, B는 모두 ON/OFF 신호를 다루는 비트 디바이스입니다. 하지만 각각의 역할은 명확히 다릅니다.

    X는 현장의 입력 신호를 PLC로 가져오는 디바이스입니다. Y는 PLC의 판단 결과를 현장 장치로 내보내는 디바이스입니다.

    M은 PLC 내부에서 조건 판단과 상태 처리를 위해 사용하는 내부 릴레이입니다. L은 전원 OFF 후에도 유지가 필요한 상태를 저장할 때 사용하는 래치 릴레이입니다.

    B는 다른 PLC나 네트워크 장치와 비트 신호를 공유할 때 사용하는 링크 릴레이입니다. 특히 B는 16진수 주소 체계를 사용하므로 주소 계산에 주의해야 합니다.

    PLC 로직은 입력 X를 받아 내부 M과 L에서 판단하고, 출력 Y로 내보내며, 필요한 경우 B를 통해 다른 장비와 신호를 공유하는 구조입니다. 이 흐름을 기준으로 디바이스를 구분하면 로직 설계와 트러블슈팅이 훨씬 명확해집니다.

  • [실무] 미쓰비시 PLC D메모리 값이 깨지거나 음수로 튀는 이유

    미쓰비시 PLC에서 D메모리 값이 갑자기 음수로 보이거나, 옆 주소의 값까지 같이 변하는 경우가 있습니다. 이런 현상은 PLC 고장보다 데이터 크기, 주소 점유 범위, 표시 형식이 맞지 않아서 발생하는 경우가 많습니다.

    GX Works로 모니터링을 하다 보면 분명히 양수 값을 넣었는데 값이 음수로 바뀌거나, 건드리지 않은 D메모리 값이 함께 변하는 경우가 있습니다. 처음 보면 프로그램이 이상해 보이지만, 실제로는 데이터 해석 기준을 잘못 잡은 경우가 많습니다.

    D메모리는 숫자를 저장하는 워드 디바이스입니다. 하지만 D 하나가 항상 모든 숫자를 안전하게 담는 것은 아닙니다. 16비트로 볼 것인지, 32비트로 볼 것인지, 부호 있는 값으로 볼 것인지, 부호 없는 값으로 볼 것인지에 따라 같은 데이터도 다르게 보입니다.

    이 글에서는 미쓰비시 PLC D메모리에서 값이 깨지거나 음수로 튀는 대표적인 원인을 GX Works 기준으로 정리합니다.

    D메모리는 16비트 워드 단위다

    미쓰비시 PLC에서 D메모리는 기본적으로 16비트 워드 단위로 사용됩니다. D10 하나는 16비트 데이터를 저장할 수 있는 공간입니다.

    16비트 데이터는 저장할 수 있는 범위가 제한되어 있습니다. 부호 있는 정수로 보면 -32768부터 32767까지 표현할 수 있고, 부호 없는 정수로 보면 0부터 65535까지 표현할 수 있습니다.

    문제는 같은 D10 값을 어떤 형식으로 해석하느냐에 따라 화면에 보이는 숫자가 달라진다는 점입니다. PLC 내부 데이터는 같아도 GX Works에서 표시 형식을 다르게 보면 전혀 다른 값처럼 보일 수 있습니다.

    그래서 D메모리를 사용할 때는 단순히 주소만 볼 것이 아니라 데이터 크기와 해석 방식을 함께 봐야 합니다.

    32767을 넘으면 음수로 보일 수 있다

    가장 흔한 현상은 값이 32767까지 올라가다가 그다음 값에서 -32768처럼 음수로 보이는 경우입니다.

    이 현상은 16비트 부호 있는 정수 범위를 넘었을 때 발생합니다. 16비트 Signed 기준에서는 32767이 최대 양수이고, 이 범위를 넘으면 음수 영역으로 넘어가 보입니다.

    예를 들어 카운터 값이나 위치 값이 계속 증가하는데 D 하나만 사용하면 32767 이후부터 값이 이상하게 보일 수 있습니다. 실제 데이터가 사라진 것이 아니라 16비트 기준으로 해석 가능한 범위를 넘은 것입니다.

    값이 32767을 넘을 가능성이 있다면 16비트 명령이 아니라 32비트 명령을 사용해야 합니다.

    16비트와 32비트 명령어를 구분해야 한다

    미쓰비시 PLC에서는 일반 명령과 32비트 명령을 구분해서 사용해야 합니다. 16비트 명령어로 큰 값을 처리하면 범위 초과나 값 깨짐이 발생할 수 있습니다.

    예를 들어 MOV는 16비트 데이터를 이동하는 명령이고, DMOV는 32비트 데이터를 이동하는 명령입니다. 덧셈도 +와 D+처럼 데이터 크기에 따라 명령을 구분해야 합니다.

    중요한 점은 데이터 저장만 32비트로 한다고 끝나는 것이 아니라는 점입니다. 이동, 비교, 사칙연산, 표시 형식까지 모두 같은 기준으로 맞아야 합니다.

    한쪽에서는 32비트로 저장하고 다른 곳에서는 16비트로 비교하면 값이 맞지 않거나 조건이 엉뚱하게 동작할 수 있습니다.

    32비트 데이터는 D 두 개를 사용한다

    32비트 데이터를 사용할 때 가장 많이 하는 실수가 주소 점유 범위를 놓치는 것입니다. 32비트 데이터는 D 하나만 쓰는 것이 아니라 연속된 D 두 개를 사용합니다.

    예를 들어 D10을 시작 주소로 32비트 데이터를 저장하면 실제로는 D10과 D11을 함께 사용합니다. 이때 D11을 다른 용도로 사용하면 데이터가 서로 겹치게 됩니다.

    그래서 D10에 값을 넣었는데 D11 값이 같이 바뀌거나, D11에 다른 값을 넣었더니 D10의 32비트 값이 깨지는 현상이 발생합니다.

    32비트 데이터를 사용할 때는 D10, D12, D14처럼 주소를 한 칸씩 띄워서 잡는 것이 관리하기 쉽습니다. 핵심은 시작 주소와 점유 범위를 명확히 관리하는 것입니다.

    옆 D메모리 값이 바뀌는 이유

    D10에만 값을 넣었다고 생각했는데 D11이 같이 변한다면 32비트 명령어 사용 여부를 확인해야 합니다. DMOV, D+, D-, D*, DDIV 같은 32비트 계열 명령은 지정한 주소와 다음 주소를 함께 사용합니다.

    예를 들어 DMOV K100000 D10을 실행하면 D10 하나에만 값이 들어가는 것이 아니라 D10과 D11이 하나의 32비트 데이터로 사용됩니다.

    이 상태에서 D11을 다른 용도로 사용하면 32비트 데이터의 상위 워드 또는 하위 워드를 덮어쓰게 됩니다. 그러면 D10 기준으로 보던 값도 갑자기 깨집니다.

    D메모리 값이 갑자기 이상해졌다면 Cross Reference로 해당 D주소와 그 다음 주소가 어디서 사용되는지 함께 확인해야 합니다.

    시작 주소가 틀리면 값이 다르게 보인다

    32비트 데이터는 시작 주소가 중요합니다. D10과 D11을 묶어서 만든 값을 D10 기준으로 보면 정상일 수 있지만, D11 기준으로 보면 전혀 다른 값으로 해석될 수 있습니다.

    D10 기준 32비트 값은 D10과 D11을 한 세트로 봅니다. 그런데 D11 기준으로 모니터링하면 D11과 D12를 한 세트로 다시 묶어서 해석합니다.

    이 경우 D12가 다른 데이터라면 D11 기준 값은 완전히 엉뚱하게 보입니다. 실제 데이터가 바뀐 것이 아니라 보는 기준점이 달라진 것입니다.

    32비트 데이터를 모니터링할 때는 반드시 설계한 시작 주소를 기준으로 확인해야 합니다. D10부터 쓰기로 했다면 D10 기준으로 봐야 하고, D11부터 보면 안 됩니다.

    32비트 곱셈은 결과 영역을 더 크게 사용한다

    곱셈 연산은 특히 주의해야 합니다. 32비트 데이터끼리 곱셈을 하면 결과가 더 커질 수 있고, 결과 저장 영역도 더 많은 워드를 사용할 수 있습니다.

    일부 더블워드 곱셈 명령은 결과 저장 영역으로 4워드를 사용할 수 있습니다. 예를 들어 결과 시작 주소를 D10으로 지정했다면 D10부터 D13까지 사용되는 구조가 될 수 있습니다.

    이 점을 모르고 D12나 D13을 다른 용도로 사용하면 곱셈 결과가 다른 데이터를 덮어쓰거나, 반대로 다른 데이터가 곱셈 결과를 깨뜨릴 수 있습니다.

    곱셈은 단순히 값이 커지는 문제가 아니라 메모리 점유 범위가 넓어지는 문제로 봐야 합니다. 연산 결과가 몇 워드를 사용하는지 반드시 확인해야 합니다.

    Display Format 때문에 값이 이상하게 보일 수 있다

    GX Works에서 값이 이상하게 보일 때 실제 데이터가 틀린 것이 아니라 표시 형식이 맞지 않는 경우도 있습니다.

    같은 D메모리라도 10진수, 16진수, Signed, Unsigned, 32비트 표시 기준에 따라 화면에 보이는 값이 달라질 수 있습니다.

    예를 들어 H8000이라는 값은 16진수로 보면 단순한 비트 패턴입니다. 하지만 16비트 Signed로 보면 -32768로 해석될 수 있습니다. Unsigned로 보면 32768로 볼 수도 있습니다.

    HMI에서는 정상으로 보이는데 GX Works에서는 음수로 보인다면 Display Format을 먼저 확인해야 합니다. 데이터가 틀린 것이 아니라 표시 기준이 다른 것일 수 있습니다.

    HMI와 PLC 모니터 값이 다르게 보이는 이유

    HMI와 GX Works에서 같은 주소를 보고 있는데 값이 다르게 보이는 경우도 있습니다. 이때는 HMI 태그 설정과 PLC 모니터 표시 형식을 비교해야 합니다.

    HMI에서는 해당 주소를 Unsigned 32bit로 보고 있는데 GX Works에서는 Signed 16bit로 보면 값이 다르게 나옵니다.

    또는 HMI는 D10부터 32비트로 읽고 있는데 GX Works에서는 D11부터 32비트로 보고 있다면 완전히 다른 값이 표시됩니다.

    통신 문제가 아닌데 값이 다르게 보인다면 데이터 타입, 시작 주소, 워드 순서, 표시 형식을 먼저 확인해야 합니다.

    16비트와 32비트 혼용 시 주의할 점

    프로그램 안에서 16비트 명령과 32비트 명령을 섞어 쓰면 값 깨짐이 발생하기 쉽습니다. 저장은 DMOV로 해놓고 비교는 16비트 비교로 하면 조건 판단이 틀어질 수 있습니다.

    예를 들어 위치값, 누적 카운트, 생산 수량, 거리값처럼 큰 숫자가 들어갈 수 있는 데이터는 처음부터 32비트 기준으로 설계하는 것이 좋습니다.

    반대로 작은 설정값이나 ON/OFF 상태를 숫자로 저장하는 정도라면 16비트로 충분할 수 있습니다. 모든 데이터를 32비트로 만들 필요는 없습니다.

    중요한 것은 데이터 성격에 맞는 크기를 정하고, 해당 데이터에 접근하는 모든 명령어와 표시 형식을 같은 기준으로 맞추는 것입니다.

    D메모리 주소 설계 기준

    D메모리를 사용할 때는 주소표를 만들어 관리하는 것이 좋습니다. 특히 32비트 데이터는 시작 주소와 점유 주소를 함께 기록해야 합니다.

    예를 들어 D100부터 D101까지는 현재 위치, D102부터 D103까지는 목표 위치처럼 2워드 단위로 배치하면 중복을 줄일 수 있습니다.

    32비트 데이터 사이에 16비트 데이터를 섞어 넣으면 나중에 유지보수가 어려워질 수 있습니다. 가능하면 16비트 영역과 32비트 영역을 구분해두는 것이 좋습니다.

    데이터가 깨지는 문제는 로직 오류보다 주소 관리 오류에서 발생하는 경우가 많습니다. D메모리는 값 자체보다 점유 범위 관리가 중요합니다.

    GX Works에서 확인할 항목

    D메모리 값이 이상할 때는 PLC 고장부터 의심하지 말고 GX Works에서 기본 항목부터 확인해야 합니다.

    먼저 해당 데이터가 16비트인지 32비트인지 확인합니다. 값이 32767을 넘는다면 16비트 Signed 기준으로는 정상 표시가 어렵습니다.

    다음으로 해당 주소와 다음 주소가 어디서 사용되는지 확인합니다. 32비트 데이터라면 D+1 주소까지 같은 데이터 영역으로 봐야 합니다.

    그다음 Display Format을 확인합니다. Signed, Unsigned, Hex, Decimal, 32bit 표시 기준이 맞는지 확인해야 합니다.

    확인 항목점검 기준
    데이터 범위32767 또는 65535를 넘는지 확인
    데이터 크기16비트인지 32비트인지 확인
    주소 점유32비트 사용 시 D와 D+1 사용 확인
    시작 주소설계한 시작 주소 기준으로 모니터링
    곱셈 결과결과 저장 영역이 몇 워드인지 확인
    표시 형식Signed, Unsigned, Hex, Decimal 확인
    중복 사용Cross Reference로 주소 중복 확인

    D메모리 트러블 점검 순서

    D메모리 값이 깨지거나 음수로 보이면 먼저 값의 범위를 확인합니다. 16비트 Signed 범위를 넘는 값이라면 음수로 보이는 것이 이상 현상이 아닐 수 있습니다.

    두 번째로 명령어를 확인합니다. MOV, +, -, 비교 명령을 사용했는지, DMOV, D+, D-, 32비트 비교 명령을 사용했는지 확인해야 합니다.

    세 번째로 주소 점유 범위를 확인합니다. 32비트 데이터는 D와 D+1을 함께 사용하고, 곱셈 결과는 더 넓은 영역을 사용할 수 있습니다.

    네 번째로 GX Works의 Display Format을 확인합니다. 데이터가 실제로 깨진 것인지, 화면에서 다르게 해석하고 있는지 구분해야 합니다.

    순서확인 내용판단 기준
    1값 범위16비트 한계 초과 여부
    2명령어16비트와 32비트 명령 혼용 여부
    3주소 범위D+1 또는 결과 영역 침범 여부
    4시작 주소32비트 데이터 시작 주소 일치 여부
    5표시 형식Signed, Unsigned, 32bit 설정 확인
    6중복 사용다른 로직에서 같은 D주소 사용 여부

    미쓰비시 PLC D메모리 값 깨짐 정리

    미쓰비시 PLC에서 D메모리 값이 음수로 튀거나 옆 주소까지 같이 변하는 것은 대부분 데이터 크기와 주소 점유 범위를 잘못 이해해서 발생합니다.

    D메모리 하나는 기본적으로 16비트 워드입니다. 32767을 넘는 값을 Signed 16비트로 보면 음수처럼 표시될 수 있습니다. 더 큰 값을 안정적으로 사용하려면 32비트 명령과 32비트 표시 기준을 함께 적용해야 합니다.

    32비트 데이터는 D와 D+1을 함께 사용합니다. D10을 시작 주소로 사용했다면 D11은 같은 데이터의 일부입니다. D11을 별도로 사용하면 값이 깨질 수 있습니다.

    곱셈 같은 연산은 결과 영역이 더 커질 수 있으므로 저장 주소 범위를 반드시 확인해야 합니다. GX Works에서 값이 이상하게 보일 때는 Display Format도 함께 확인해야 합니다.

    D메모리 문제는 결국 데이터가 몇 비트인지, 몇 워드를 점유하는지, 어디서부터 읽는지를 확인하는 문제입니다. 이 기준을 잡아두면 값 깨짐과 음수 표시 문제를 훨씬 빠르게 해결할 수 있습니다.