[카테고리:] PLC/Automation

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

  • [실무] MOV·BMOV·FMOV로 래더 줄이는 방법

    PLC 명령어는 종류가 많지만, 실제 현장에서 반복적으로 사용하는 명령어는 어느 정도 정해져 있습니다. 그중에서도 MOV, BMOV, FMOV는 데이터 처리 로직에서 가장 자주 사용하는 기본 명령어입니다. 값을 옮기고, 여러 데이터를 묶어서 복사하고, 특정 영역을 한 번에 초기화하는 구조를 이해하면 래더가 길어지는 문제를 줄일 수 있습니다.

    데이터 명령어를 먼저 이해해야 하는 이유

    PLC 로직이 복잡해지는 원인은 어려운 명령어를 몰라서만은 아닙니다. 기본 데이터 명령어를 적절히 쓰지 못해 같은 동작을 반복 접점과 반복 MOV로 길게 작성하는 경우가 많습니다.

    예를 들어 다음과 같은 상황에서 데이터 명령어가 필요합니다.

    상황필요한 처리
    HMI에서 입력한 값을 PLC 내부 설정값으로 저장MOV
    모델별 레시피를 한 번에 불러오기BMOV
    리셋 시 여러 D 영역을 0으로 초기화FMOV
    생산 수량 또는 위치값 비교비교 명령
    누적값 증가 또는 남은 수량 계산산술 연산

    본 글은 미쓰비시 MELSEC Q/R 시리즈 및 GX Works2/3 기준의 일반적인 내용을 바탕으로 작성했습니다. 실제 명령어 지원 범위, 16비트·32비트 처리 방식, 디바이스 사용 가능 범위는 CPU 모델과 프로젝트 설정에 따라 달라질 수 있으므로 적용 전 매뉴얼을 확인해야 합니다.

    MOV는 데이터 전송의 기본이다

    MOV는 특정 값을 다른 디바이스로 옮기는 명령어입니다. 상수값을 D 영역에 저장하거나, D 영역의 값을 다른 D 영역으로 복사할 때 사용합니다.

    예를 들어 MOV K100 D0은 K100 값을 D0에 저장하는 형태입니다.

    MOV는 다음과 같은 상황에서 자주 사용됩니다.

    사용 예설명
    HMI 입력값 저장터치스크린에서 입력한 값을 PLC 내부 파라미터로 전달
    모델 번호 저장현재 선택된 기종 번호를 D 영역에 저장
    설정값 복사운전 조건에 따라 기준값을 다른 영역으로 복사
    현재값 백업운전 중인 값을 특정 시점에 보관

    MOV는 데이터 처리의 기본입니다. 값 이동이 필요할 때는 먼저 MOV로 처리할 수 있는 구조인지 확인하는 것이 좋습니다.

    MOV를 사용할 때 확인할 점

    MOV는 단순한 명령어처럼 보이지만, 데이터 크기를 확인하지 않으면 값이 깨지거나 음수처럼 보일 수 있습니다.

    일반 MOV는 16비트 데이터를 기준으로 사용하는 경우가 많습니다. 큰 수치, 엔코더 누적값, 긴 거리 위치값, 장기간 생산 누적값처럼 16비트 범위를 넘을 수 있는 데이터는 32비트 명령어 사용 여부를 확인해야 합니다.

    예를 들어 32비트 데이터를 다룰 때는 DMOV 같은 더블워드 명령어를 검토해야 합니다. 이동을 32비트로 했다면 비교나 연산도 32비트 기준으로 맞춰야 합니다.

    구분확인 기준
    16비트 데이터일반 설정값, 짧은 범위의 수치
    32비트 데이터누적 생산량, 엔코더 값, 큰 위치값
    부호 있는 값음수 표시 가능성 확인
    부호 없는 값표시 범위와 비교 조건 확인

    데이터가 이상하게 표시될 때는 명령어 자체보다 데이터 크기와 해석 방식이 맞는지 먼저 확인해야 합니다.

    비교 명령은 워드 데이터를 조건으로 바꾸는 역할을 한다

    비교 명령은 D 값이나 상수값을 비교해 조건이 맞을 때 로직을 실행하는 명령어입니다.

    예를 들어 = D0 K10은 D0 값이 10일 때 조건이 성립하는 형태입니다.

    비교 명령은 비트 접점처럼 보이지만, 실제로는 워드 데이터를 기준으로 조건을 만드는 역할을 합니다.

    현장에서는 다음과 같은 용도로 자주 사용됩니다.

    사용 예설명
    목표 수량 도달 확인현재 생산 수량이 목표값 이상인지 판단
    온도 조건 판단현재 온도가 설정 범위에 들어왔는지 확인
    위치 도달 확인서보 현재 위치가 목표 위치에 도달했는지 판단
    모델 번호 분기선택된 모델 번호에 따라 로직 분기

    비교 명령도 데이터 크기를 맞춰야 합니다. 32비트로 저장된 값을 비교할 때 16비트 비교를 사용하면 조건이 맞지 않는 문제가 생길 수 있습니다. 큰 값은 D=, D>, D< 같은 더블워드 비교 명령 사용 여부를 확인해야 합니다.

    산술 연산은 데이터를 가공할 때 사용한다

    산술 연산은 데이터를 더하거나 빼고, 필요에 따라 곱하거나 나누는 명령입니다. 생산 수량 누적, 남은 수량 계산, 보정값 적용, 위치 오프셋 계산에 자주 사용됩니다.

    예를 들어 + D0 K1 D0은 D0 값에 1을 더해 다시 D0에 저장하는 형태입니다.

    산술 연산은 다음과 같은 상황에서 사용됩니다.

    사용 예설명
    생산 카운트 증가제품 통과 시 현재 수량 증가
    남은 수량 계산목표 수량에서 현재 수량을 빼서 표시
    위치 보정기준 위치에 보정값을 더해 목표 위치 계산
    검사값 보정센서값에 오프셋을 적용

    단순히 1씩 증가시키는 목적이라면 INCP 같은 증가 명령어가 더 직관적인 경우도 있습니다. 다만 설비 구조에 따라 기본 산술 연산이 더 적합한 경우도 있으므로 목적에 맞게 선택해야 합니다.

    연산도 데이터 크기를 확인해야 합니다. 누적 생산량이나 위치값처럼 범위가 큰 데이터는 D+, D-, DMUL, DDIV 같은 32비트 연산이 필요한지 검토해야 합니다.

    FMOV는 같은 값을 여러 영역에 채울 때 사용한다

    FMOV는 Fill Move의 의미로, 같은 값을 연속된 디바이스 영역에 한 번에 채우는 명령어입니다.

    예를 들어 FMOV K0 D0 K10은 D0부터 D9까지 10개 영역에 모두 0을 넣는 형태입니다.

    FMOV는 주로 초기화에 사용됩니다.

    사용 예설명
    설비 리셋여러 데이터 영역을 한 번에 0으로 초기화
    알람 데이터 정리알람 표시용 D 영역 초기화
    임시 연산 영역 초기화자동 운전 시작 전 임시값 정리
    HMI 표시값 정리화면에 남은 이전 데이터 제거

    FMOV를 사용하지 않으면 같은 초기화 로직을 여러 줄 작성해야 합니다. 초기화 대상이 많을수록 FMOV를 사용하는 편이 로직이 짧고 관리하기 쉽습니다.

    FMOV 사용 시 주의할 점

    FMOV는 지정한 범위에 같은 값을 모두 써 넣습니다. 따라서 범위를 잘못 지정하면 필요한 데이터까지 같이 지워질 수 있습니다.

    예를 들어 D0부터 D99까지 임시 데이터 영역으로 정해 둔 경우에는 FMOV K0 D0 K100처럼 한 번에 초기화할 수 있습니다. 하지만 그 중간에 모델 설정값이나 생산 누적값이 섞여 있다면 FMOV 한 번으로 중요한 값까지 초기화될 수 있습니다.

    FMOV를 사용할 때는 다음 항목을 확인해야 합니다.

    확인 항목설명
    시작 주소초기화할 첫 주소가 맞는지 확인
    개수 K값몇 개의 워드를 초기화할지 확인
    중간 주소 용도범위 안에 다른 용도 데이터가 없는지 확인
    래치 데이터 포함 여부유지해야 할 값이 포함되지 않았는지 확인
    실행 조건매 스캔 실행되는지, 특정 조건에서만 실행되는지 확인

    초기화 명령은 편리하지만, 잘못 쓰면 데이터가 사라지는 원인이 됩니다. 특히 전원 투입 시 초기화, 모델 변경 시 초기화, 알람 리셋 시 초기화는 각각 범위를 다르게 잡는 것이 안전합니다.

    BMOV는 연속된 데이터를 묶어서 복사한다

    BMOV는 Block Move의 의미로, 연속된 여러 데이터를 한 번에 복사하는 명령어입니다.

    예를 들어 BMOV D0 D20 K3은 D0부터 D2까지의 값을 D20부터 D22까지 한 번에 복사하는 형태입니다.

    BMOV는 레시피 데이터, 모델별 설정값, 위치 데이터 묶음처럼 연속된 데이터를 통째로 이동할 때 유용합니다.

    사용 예설명
    레시피 불러오기모델별 설정값 묶음을 현재 운전 영역으로 복사
    위치 데이터 이동여러 축의 위치값을 한 번에 복사
    설정값 백업현재 설정값을 백업 영역으로 저장
    패턴 데이터 적용제품별 패턴 데이터를 운전 영역으로 이동

    데이터가 1개라면 MOV를 사용하고, 연속된 여러 개의 데이터라면 BMOV를 검토하는 것이 일반적입니다.

    BMOV를 사용할 때 가장 중요한 조건

    BMOV는 연속된 주소를 통째로 복사합니다. 따라서 복사 대상 영역이 실제로 하나의 묶음인지 반드시 확인해야 합니다.

    예를 들어 D100부터 D119까지가 모델 1번 레시피이고, D200부터 D219까지가 현재 운전 영역이라면 BMOV로 복사하기 좋습니다. 하지만 D100부터 D119 중간에 알람 이력, 수동 설정값, 임시 계산값이 섞여 있다면 BMOV를 사용하면 안 됩니다.

    BMOV 사용 전에는 다음 항목을 확인해야 합니다.

    확인 항목설명
    원본 시작 주소복사할 데이터의 시작 위치가 맞는지 확인
    목적지 시작 주소덮어쓸 영역이 맞는지 확인
    복사 개수K값이 실제 데이터 개수와 일치하는지 확인
    중간 주소 용도블록 안에 다른 용도 데이터가 없는지 확인
    데이터 크기16비트·32비트 구조가 섞여 있지 않은지 확인
    실행 조건모델 변경 시 한 번만 실행되는지 확인

    BMOV는 MOV 여러 줄을 줄일 수 있는 좋은 명령어지만, 범위가 잘못되면 여러 값을 한 번에 덮어씁니다. 따라서 메모리 맵이 정리되어 있지 않은 상태에서는 신중하게 사용해야 합니다.

    MOV와 BMOV를 구분하는 기준

    MOV와 BMOV는 모두 데이터를 옮기는 명령어지만 목적이 다릅니다.

    구분MOVBMOV
    이동 단위1개 데이터연속된 여러 데이터
    주요 용도설정값 1개 저장, 값 복사레시피, 패턴, 설정값 묶음 복사
    장점단순하고 명확함로직을 크게 줄일 수 있음
    주의점반복 사용 시 로직이 길어짐범위 오류 시 여러 데이터가 한 번에 덮임

    기준은 간단합니다. 하나의 값만 옮기면 MOV를 사용하고, 연속된 데이터 묶음을 옮기면 BMOV를 사용합니다.

    다만 BMOV를 쓰기 위해 억지로 데이터 구조를 맞추기보다, 처음부터 레시피나 설정값 영역을 연속 주소로 설계하는 것이 좋습니다.

    16비트와 32비트 명령어를 맞춰야 한다

    데이터 명령어에서 가장 자주 발생하는 문제 중 하나가 16비트와 32비트 혼용입니다.

    일반적으로 D가 붙은 명령어는 더블워드, 즉 32비트 처리를 의미하는 경우가 많습니다. 예를 들어 DMOV, D+, D= 같은 명령어는 32비트 데이터를 처리할 때 사용합니다.

    문제는 이동, 비교, 연산의 데이터 크기가 서로 다를 때 발생합니다.

    예를 들어 위치값을 DMOV로 32비트 복사해 놓고, 비교는 일반 = 명령으로 16비트만 비교하면 값은 들어가 있는데 조건이 맞지 않는 상황이 생길 수 있습니다.

    다음 기준을 기억하는 것이 좋습니다.

    데이터 처리16비트 예32비트 예
    이동MOVDMOV
    비교=, >, <D=, D>, D<
    덧셈+D+
    뺄셈D-
    곱셈*DMUL
    나눗셈/DDIV

    큰 값을 다루는 경우에는 이동만 32비트로 맞추는 것이 아니라 비교와 연산도 32비트 기준으로 맞춰야 합니다.

    데이터 명령어 사용 전 점검할 항목

    MOV, BMOV, FMOV는 기본 명령어지만 잘못 사용하면 원인 파악이 어려운 문제가 생깁니다. 로직을 작성하거나 수정할 때는 다음 항목을 확인하는 것이 좋습니다.

    점검 항목확인 내용
    MOV 값 확인원본 값이 목적지에 정상적으로 들어갔는지 확인
    비교 기준 확인K값이나 D값이 실제 기준과 맞는지 확인
    연산 결과 확인결과값이 정상 범위 안에 있는지 확인
    FMOV 범위 확인초기화하면 안 되는 영역이 포함되지 않았는지 확인
    BMOV 개수 확인복사 개수 K값이 실제 데이터 개수와 맞는지 확인
    16비트·32비트 확인데이터 크기와 명령어가 일치하는지 확인
    실행 조건 확인매 스캔 실행인지, 1회 실행인지 확인

    특히 BMOV와 FMOV는 한 번에 여러 주소를 처리하기 때문에 실행 조건이 중요합니다. 모델 변경 버튼을 누르는 동안 매 스캔 반복 복사되는 구조인지, 상승엣지로 한 번만 복사되는 구조인지 확인해야 합니다.

    래더를 줄이는 방향으로 명령어를 사용한다

    MOV, BMOV, FMOV를 잘 사용하면 래더를 줄일 수 있습니다. 하지만 단순히 줄이는 것만 목표로 하면 안 됩니다. 유지보수자가 나중에 봤을 때 어떤 데이터가 어디로 이동하는지 이해할 수 있어야 합니다.

    좋은 데이터 명령어 사용 기준은 다음과 같습니다.

    기준설명
    용도별 주소 분리설정값, 현재값, 레시피, 임시값 영역을 구분
    주석 작성BMOV, FMOV 범위와 목적을 명확히 표시
    연속 주소 설계레시피나 패턴 데이터는 처음부터 연속 주소로 배치
    1회 실행 조건모델 변경, 초기화는 필요한 순간에만 실행
    데이터 크기 통일16비트와 32비트 구조를 섞지 않도록 관리

    명령어를 많이 아는 것보다 데이터 구조를 먼저 정리하는 것이 중요합니다. 데이터 구조가 정리되어 있으면 MOV, BMOV, FMOV만으로도 많은 로직을 단순하게 만들 수 있습니다.

    MOV·BMOV·FMOV 정리

    MOV는 하나의 값을 옮기는 기본 명령어입니다. HMI 입력값 저장, 모델 번호 저장, 설정값 복사처럼 단일 데이터 이동에 사용합니다.

    BMOV는 연속된 여러 데이터를 묶어서 복사하는 명령어입니다. 레시피, 패턴 데이터, 위치값 묶음처럼 구조가 정리된 데이터 영역에 적합합니다.

    FMOV는 같은 값을 여러 디바이스에 한 번에 채우는 명령어입니다. 설비 리셋, 알람 데이터 정리, 임시 연산 영역 초기화처럼 여러 주소를 동일한 값으로 초기화할 때 사용합니다.

    이 세 가지 명령어를 정확히 구분하면 반복 MOV를 줄이고, 초기화 로직을 단순하게 만들며, 레시피 데이터 관리도 안정적으로 구성할 수 있습니다. 다만 BMOV와 FMOV는 범위를 잘못 지정하면 여러 데이터를 한 번에 덮어쓸 수 있으므로 메모리 맵과 실행 조건을 반드시 확인해야 합니다.

    PLC 로직은 복잡한 명령어를 많이 쓰는 것보다 기본 명령어를 정확한 위치에 사용하는 것이 중요합니다. MOV, BMOV, FMOV는 데이터 처리 로직의 기본이므로, 16비트·32비트 구분과 복사 범위만 정확히 관리해도 현장 로직의 가독성과 안정성을 크게 높일 수 있습니다.

  • [실무] PLC 타이머(T)·카운터(C)는 비트일까 워드일까?

    PLC에서 X, Y, M 같은 비트 디바이스와 D 같은 워드 디바이스는 따로 구분해서 배우는 경우가 많습니다. 그러나 실제 로직에서는 비트와 워드의 성격을 함께 가진 디바이스를 자주 사용합니다. 대표적인 예가 타이머(T)와 카운터(C)입니다. T와 C는 접점으로 조건을 판단할 수 있고, 동시에 내부에는 현재값이라는 수치 데이터를 가지고 있습니다.

    타이머와 카운터를 따로 이해해야 하는 이유

    타이머와 카운터는 단순히 시간을 재거나 횟수를 세는 기능으로만 보면 안 됩니다. 로직에서는 접점처럼 사용되지만, 내부적으로는 현재값과 설정값을 가진 데이터 디바이스의 성격도 함께 가지고 있습니다.

    이 구조를 이해하지 못하면 타이머가 설정 시간까지 도달하지 않거나, 카운터가 다시 동작하지 않거나, HMI에서 설정값을 바꿀 수 없는 문제가 생길 수 있습니다.

    예를 들어 타이머 입력 조건이 중간에 순간적으로 끊기면 현재값이 초기화될 수 있습니다. 카운터는 완료 후 리셋 조건이 없으면 완료 상태가 계속 유지될 수 있습니다. 또한 타이머 설정값을 K 상수로 고정해 두면 현장에서 시간을 변경할 때마다 PLC 프로그램을 수정해야 합니다.

    본 글은 미쓰비시 MELSEC Q/R 시리즈 및 GX Works2/3 기준의 일반적인 내용을 바탕으로 작성했습니다. 타이머 단위, 고속 타이머 지원 여부, 카운터 종류, 디바이스 범위는 CPU 모델과 파라미터에 따라 달라질 수 있으므로 실제 적용 전 매뉴얼을 확인해야 합니다.

    T 타이머의 기본 구조

    T는 Timer의 약자로, 특정 조건이 일정 시간 이상 유지되었을 때 완료 접점을 ON시키는 디바이스입니다.

    예를 들어 입력 조건이 ON된 뒤 설정 시간이 지나면 T0 접점이 ON되고, 그 접점을 이용해 다음 동작을 실행할 수 있습니다.

    타이머는 두 가지 성격을 함께 가집니다.

    구분설명
    비트 성격설정 시간이 완료되면 T 접점이 ON됨
    워드 성격현재 시간이 얼마나 누적되었는지 현재값을 가짐

    즉, T0은 접점으로 사용할 수 있고, 동시에 현재값을 가진 데이터처럼 다룰 수도 있습니다.

    타이머 사용 예

    미쓰비시 PLC에서 일반 타이머는 보통 OUT T0 K100과 같은 형태로 사용합니다.

    이 예에서 T0은 타이머 번호이고, K100은 설정값입니다. 0.1초 단위 타이머 기준이라면 K100은 10초를 의미합니다.

    조건이 ON 상태로 유지되면 T0의 현재값이 증가하고, 설정값에 도달하면 T0 접점이 ON됩니다. 이후 입력 조건이 OFF되면 일반 타이머의 현재값은 초기화됩니다. 다시 조건이 ON되면 0부터 다시 시간을 측정합니다.

    고속 타이머나 적산 타이머는 일반 타이머와 동작 방식이 다를 수 있습니다. 사용하는 CPU와 명령어 기준을 확인해야 합니다.

    타이머는 조건이 끊기면 초기화될 수 있다

    일반적인 타이머는 입력 조건이 OFF되면 현재값이 초기화됩니다. 이 특성을 모르고 사용하면 현장에서 원인을 찾기 어려운 문제가 생깁니다.

    예를 들어 10초 후 동작해야 하는 로직에서 9초까지는 정상적으로 시간이 누적되다가 센서 신호가 순간적으로 끊기면 타이머는 다시 0부터 시작할 수 있습니다.

    이 경우 타이머 자체가 고장 난 것이 아니라, 타이머를 구동하는 조건이 안정적으로 유지되지 않은 것입니다.

    확인해야 할 항목은 다음과 같습니다.

    확인 항목설명
    입력 센서 상태센서가 미세하게 ON/OFF 반복되는지 확인
    인터록 조건중간 조건이 순간적으로 빠지는지 확인
    자동 운전 조건운전 모드가 유지되는지 확인
    안전 조건도어, 비상정지, 에어 압력 조건이 흔들리는지 확인
    타이머 종류일반 타이머인지 적산 타이머인지 확인

    시간을 끊김 없이 누적해야 하는 경우에는 일반 타이머가 아니라 적산 타이머 또는 별도 누적 로직을 검토해야 합니다.

    C 카운터의 기본 구조

    C는 Counter의 약자로, 입력 신호가 들어온 횟수를 세고 설정값에 도달하면 완료 접점을 ON시키는 디바이스입니다.

    카운터 역시 타이머와 마찬가지로 비트와 워드 성격을 함께 가집니다.

    구분설명
    비트 성격설정 횟수에 도달하면 C 접점이 ON됨
    워드 성격현재 몇 번 카운트되었는지 현재값을 가짐

    예를 들어 C0이 5회 카운트로 설정되어 있다면 입력 신호가 5번 들어왔을 때 C0 접점이 ON됩니다. 동시에 C0 내부에는 현재 카운트값이 저장됩니다.

    카운터는 리셋 조건이 중요하다

    카운터는 타이머와 다르게 입력 조건이 OFF되어도 현재값을 유지하는 방식으로 사용되는 경우가 많습니다. 따라서 설정값에 도달한 뒤 다시 사용하려면 리셋 조건이 필요합니다.

    일반적으로 카운터를 초기화할 때는 RST C0과 같은 형태를 사용합니다. 이 명령이 실행되면 C0의 현재값과 완료 접점 상태가 초기화됩니다.

    카운터 로직에서 리셋 조건이 빠지면 카운터가 다시 세지 않거나, 완료 접점이 계속 ON 상태로 남을 수 있습니다. 생산 수량이나 반복 동작 횟수를 관리하는 로직에서는 리셋 기준이 불명확하면 실제 동작 횟수와 표시값이 맞지 않을 수 있습니다.

    카운터를 사용할 때는 카운트 조건보다 리셋 조건을 더 명확히 설계해야 합니다.

    T와 C는 현재값을 데이터로 다룰 수 있다

    타이머와 카운터는 접점처럼 사용할 수 있지만, 내부에 현재값이 있으므로 데이터 명령어와 함께 사용할 수 있습니다.

    예를 들어 MOV T0 D100은 T0의 현재값을 D100으로 옮기는 형태입니다. MOV C0 D110은 C0의 현재 카운트값을 D110으로 옮기는 형태입니다.

    이 방식은 HMI 표시, 이력 저장, 상위 시스템 전송, 진단 화면 구성에 활용할 수 있습니다.

    활용 예설명
    HMI 현재 시간 표시T 현재값을 화면에 표시
    생산 수량 표시C 현재값을 HMI 또는 상위 시스템에 표시
    알람 발생 전 지연 시간 확인타이머 현재값을 진단용으로 표시
    카운트 이력 저장특정 시점의 카운터 값을 D 영역에 보관

    타이머와 카운터를 단순한 접점으로만 보면 이런 활용이 어렵습니다. 접점 상태와 현재값을 분리해서 이해해야 합니다.

    HMI에서 타이머 설정값을 관리하는 방법

    타이머 설정값을 K100처럼 상수로 넣으면 현장에서 시간을 바꾸기 어렵습니다. 시간 변경이 필요할 때마다 PLC 프로그램을 수정해야 하기 때문입니다.

    현장에서 자주 바뀌는 대기 시간, 실린더 지연 시간, 검사 대기 시간, 배출 지연 시간 등은 HMI에서 설정할 수 있도록 D 디바이스를 사용하는 편이 관리에 유리합니다.

    예를 들어 OUT T0 D100과 같이 구성하면 D100에 들어 있는 값이 타이머 설정값으로 사용됩니다. HMI에서 D100 값을 변경하면 작업자가 설정 시간을 조정할 수 있습니다.

    다만 이 방식에서는 다음 사항을 확인해야 합니다.

    확인 항목설명
    D100 값의 단위0.1초 단위인지, 0.01초 단위인지 확인
    최소·최대 제한HMI에서 비정상적인 값 입력 방지
    래치 여부전원 OFF 후 설정값 유지 필요 여부
    초기값값이 0이 되었을 때 장비가 의도와 다르게 동작하지 않도록 관리
    표시 단위HMI에는 초 단위로 보일지, PLC 값 그대로 보일지 결정

    HMI에서 설정값을 받는 경우에는 단순히 D를 연결하는 것보다 입력 제한과 초기값을 함께 설계하는 것이 중요합니다.

    카운터 설정값도 워드로 관리할 수 있다

    카운터도 설정값을 고정 상수로 둘 수도 있고, D 디바이스를 이용해 가변 설정값으로 만들 수도 있습니다.

    예를 들어 제품별로 배출 개수, 검사 횟수, 반복 동작 횟수가 달라진다면 카운터 설정값을 HMI에서 변경할 수 있도록 구성할 수 있습니다.

    OUT C0 D200과 같이 구성하면 D200 값이 카운터 설정값으로 사용됩니다.

    다만 카운터 설정값을 HMI에서 변경할 때는 현재 카운트값과 설정값의 관계를 주의해야 합니다. 운전 중 설정값이 갑자기 현재값보다 작아지면 완료 접점이 바로 ON될 수 있습니다.

    따라서 제품 모델 변경 시에는 카운터 리셋, 설정값 변경, 자동 운전 시작 조건을 순서대로 정리하는 것이 좋습니다.

    타이머와 카운터에서 자주 발생하는 실수

    타이머와 카운터는 구조가 단순해 보이지만 현장에서는 반복적으로 비슷한 실수가 발생합니다.

    실수결과
    타이머 조건이 불안정함시간이 누적되지 않고 반복 초기화됨
    카운터 리셋 조건이 없음완료 상태가 계속 유지됨
    HMI 설정값 제한이 없음0 또는 과도한 값 입력으로 오동작 가능
    현재값과 완료 접점을 혼동함표시값은 변하지만 접점 조건은 다르게 동작
    K 상수만 사용함현장 조건 변경 시 프로그램 수정 필요
    래치 여부를 확인하지 않음전원 재투입 후 값이 예상과 다르게 유지 또는 초기화됨

    타이머와 카운터를 사용할 때는 접점이 ON되는 조건뿐 아니라 현재값이 언제 증가하고, 언제 초기화되며, 어떤 조건에서 리셋되는지까지 함께 확인해야 합니다.

    일반 타이머와 적산 타이머의 차이

    일반 타이머는 입력 조건이 OFF되면 현재값이 초기화되는 방식으로 많이 사용됩니다. 반면 적산 타이머는 조건이 끊겨도 누적값을 유지하고, 별도 리셋 조건으로 초기화하는 방식입니다.

    장비 운전 시간 누적, 모터 가동 시간 기록, 필터 교체 시간 관리처럼 시간이 끊기지 않고 누적되어야 하는 경우에는 일반 타이머보다 적산 방식이 적합할 수 있습니다.

    구분일반 타이머적산 타이머
    조건 OFF 시현재값 초기화현재값 유지
    리셋 방식조건 OFF로 초기화별도 리셋 필요
    주요 용도동작 지연, 대기 시간운전 시간 누적, 유지보수 시간
    주의점조건 흔들림에 취약리셋 조건 누락 주의

    적산 타이머의 명령어와 지원 범위는 CPU 시리즈에 따라 달라질 수 있으므로 매뉴얼 기준으로 확인해야 합니다.

    T/C와 데이터 명령어의 관계

    타이머와 카운터의 현재값은 MOV, BMOV, FMOV 같은 데이터 명령어와 함께 자주 사용됩니다.

    예를 들어 현재 타이머 값을 D 영역에 저장하거나, 여러 개의 설정값을 한 번에 초기화하거나, 모델 변경 시 설정값 묶음을 이동하는 방식으로 활용할 수 있습니다.

    명령어활용 예
    MOVT/C 현재값을 D 영역으로 복사
    BMOV여러 설정값을 연속 영역으로 복사
    FMOV여러 영역을 같은 값으로 초기화

    이때 주의할 점은 현재값, 설정값, 표시값을 구분하는 것입니다. 같은 D 영역을 여러 용도로 함께 사용하면 HMI 표시값과 실제 제어값이 달라질 수 있습니다.

    타이머와 카운터 사용 기준 정리

    타이머와 카운터를 안정적으로 사용하려면 다음 기준을 적용하는 것이 좋습니다.

    항목확인 기준
    타이머 조건설정 시간 동안 조건이 안정적으로 유지되는지 확인
    타이머 단위0.1초, 0.01초 등 사용하는 단위 확인
    카운터 입력한 번의 동작에 한 번만 카운트되는지 확인
    카운터 리셋언제 0으로 되돌릴지 명확히 설정
    HMI 설정값최소값, 최대값, 초기값 관리
    현재값 표시T/C 현재값을 별도 D에 옮겨 표시할지 결정
    래치 여부전원 OFF 후 유지해야 하는 값인지 확인
    데이터 크기장시간 누적 시 16비트 범위를 초과하지 않는지 확인

    특히 카운터 입력은 센서 채터링, 반복 스캔, 상승엣지 처리 여부에 따라 실제 카운트 수가 달라질 수 있습니다. 단순 접점으로만 처리하기보다 한 번의 제품 통과에 한 번만 카운트되도록 조건을 정리해야 합니다.

    타이머와 카운터 정리

    타이머와 카운터는 비트 디바이스와 워드 디바이스의 성격을 함께 가진 복합 디바이스입니다. T와 C는 접점으로 조건 판단에 사용할 수 있고, 동시에 현재값을 가진 데이터로도 활용할 수 있습니다.

    타이머는 조건이 유지되는 동안 시간이 누적되고, 일반 타이머는 조건이 끊기면 현재값이 초기화될 수 있습니다. 카운터는 입력 횟수를 누적하고, 설정값에 도달하면 완료 접점이 ON되며, 다시 사용하려면 리셋 조건이 필요합니다.

    현장에서 시간을 자주 변경해야 한다면 K 상수보다 D 디바이스를 설정값으로 사용하는 방식이 관리에 유리합니다. 또한 T/C 현재값은 MOV 같은 데이터 명령어로 옮겨 HMI 표시나 진단 화면에 활용할 수 있습니다.

    타이머와 카운터는 단순한 보조 기능이 아니라 시퀀스 제어의 핵심 요소입니다. 접점으로 사용할 때와 값으로 관리할 때의 차이를 구분하면 로직 오동작과 유지보수 혼선을 줄일 수 있습니다.

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

    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 릴레이와 달리, 각 번호마다 기능이 정해져 있습니다.

    대표적으로 다음과 같은 기능에 사용됩니다.

    디바이스일반적인 용도
    SM400RUN 중 항상 ON
    SM401항상 OFF
    SM402RUN 직후 첫 스캔에서 ON
    SM403초기 펄스 이후 지연 조건
    SM4121초 주기 클럭
    SM4132초 주기 클럭

    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를 반복하는 클럭 신호입니다. 램프 점멸, 간단한 주기 동작, 운전 시간 누적 조건 등에 사용할 수 있습니다.

    일반적으로 다음과 같은 용도로 활용됩니다.

    디바이스용도
    SM4121초 주기 클럭
    SM4132초 주기 클럭

    여기서 중요한 점은 클럭 신호를 펄스 신호와 혼동하지 않는 것입니다. 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에 임의 값을 MOVPLC 진단값 해석 오류 가능
    용도를 모르는 SM/SD 사용CPU 상태나 진단 로직 오해 가능
    매뉴얼 확인 없이 번호만 복사시리즈 차이로 기능 불일치 가능

    SM/SD는 편리하지만 시스템 영역입니다. 반드시 해당 CPU 매뉴얼에서 기능을 확인한 뒤 사용해야 합니다.

    SM·SD 사용 기준 정리

    SM과 SD를 사용할 때는 다음 기준을 지키는 것이 좋습니다.

    구분권장 기준
    SM400상시 실행 조건에 사용
    SM401임시 차단 또는 항상 OFF 조건에 제한적으로 사용
    SM402RUN 직후 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는 장비 상태를 추측하지 않고 확인하기 위한 기본 도구입니다. 로직 설계 단계에서 필요한 항목만 선별해 사용하고, 매뉴얼 기준으로 번호와 동작을 확인하는 것이 안전합니다.

    타이머와 카운터는 비트 접점과 워드 현재값의 성격을 함께 가지므로 일반 비트·워드 디바이스와 구분해서 이해해야 합니다. 이 부분은 별도 글에서 구조와 사용 위치를 나누어 정리하는 것이 좋습니다.