[카테고리:] PLC/Automation

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

  • [실무] 자기유지랑 SET 같아 보이는데 왜 다를까

    PLC 로직에서 출력 상태를 유지하는 방법은 여러 가지가 있습니다. 일반 코일을 사용할 수도 있고, 자기유지 회로를 만들 수도 있으며, SET/RST 명령어로 상태를 기억하게 만들 수도 있습니다. 겉으로 보면 모두 출력이 유지되는 것처럼 보이지만, 상위 조건이 끊겼을 때의 동작, 리셋 방식, 전원 재투입 시 상태가 다릅니다. 이 차이를 구분하지 못하면 설비가 멈추지 않거나, 반대로 다시 동작하지 않는 문제가 생길 수 있습니다.

    자기유지와 SET/RST를 구분해야 하는 이유

    PLC를 처음 다룰 때는 출력이 ON되면 모두 같은 동작처럼 보일 수 있습니다. 그러나 실제 설비에서는 어떤 조건에서 ON되고, 어떤 조건에서 OFF되는지가 중요합니다.

    일반 코일은 조건이 ON일 때만 출력이 살아납니다. 조건이 OFF되면 출력도 바로 OFF됩니다.

    자기유지는 출력 자신의 접점을 이용해 조건이 한 번 성립된 뒤에도 상태를 유지합니다. 다만 상위 조건이나 정지 조건이 끊기면 함께 OFF되도록 구성하는 것이 일반적입니다.

    SET/RST는 SET 조건이 들어오면 해당 비트를 ON 상태로 만들고, RST 조건이 들어오기 전까지 유지합니다. 이 구조는 편리하지만, RST 조건이 빠지거나 특정 공정에서 도달하지 못하면 신호가 계속 남을 수 있습니다.

    일반 코일, 자기유지, SET/RST 비교

    세 방식은 모두 로직 상태를 제어할 때 사용되지만 동작 성격이 다릅니다.

    구분일반 코일 OUT자기유지SET/RST
    기본 동작조건 ON 시 출력 ON, 조건 OFF 시 출력 OFF시작 조건 후 자기 접점으로 상태 유지SET 시 ON, RST 전까지 유지
    상위 조건 영향상위 조건이 끊기면 OFF상위 조건이 끊기면 OFF되도록 구성 가능RST가 없으면 상태가 남을 수 있음
    전원 재투입 시일반적으로 OFF일반적으로 OFF사용하는 디바이스 속성에 따라 다름
    주요 용도기본 출력 제어운전 시작 유지, 공정 상태 유지상태 기억, 완료 플래그, 특정 조건 유지
    주의점조건이 흔들리면 출력도 흔들림정지 조건 누락 주의RST 조건 누락 시 오동작 가능

    가장 기본은 일반 코일입니다. 일반 코일로 해결할 수 있는 동작을 굳이 SET/RST로 만들면 나중에 원인을 찾기 어려운 유지 신호가 생길 수 있습니다.

    일반 코일은 조건에 따라 바로 움직인다

    일반 코일은 가장 단순한 출력 방식입니다. 조건이 ON되면 출력이 ON되고, 조건이 OFF되면 출력이 OFF됩니다.

    예를 들어 센서가 들어올 때만 램프를 켜거나, 특정 조건이 만족될 때만 밸브를 켜는 구조라면 일반 코일이 가장 적합합니다.

    일반 코일의 장점은 동작 원인이 명확하다는 점입니다. 출력이 ON되어 있다면 앞 조건이 살아 있는 것이고, 출력이 OFF되어 있다면 앞 조건 중 하나가 빠진 것입니다.

    따라서 특별히 상태를 기억할 필요가 없는 동작은 일반 코일로 처리하는 것이 유지보수에 유리합니다.

    자기유지는 조건을 붙잡고 유지한다

    자기유지는 시작 조건이 한 번 들어온 뒤, 자기 자신의 접점을 이용해 ON 상태를 유지하는 구조입니다.

    예를 들어 자동운전 시작 버튼을 누르면 자동운전 플래그가 ON되고, 이후 시작 버튼에서 손을 떼도 자동운전 상태가 유지됩니다. 정지 버튼이나 비상정지 조건이 들어오면 자기유지 회로가 끊어져 OFF됩니다.

    자기유지는 다음과 같은 용도에 적합합니다.

    사용 예설명
    자동운전 시작 유지시작 버튼을 한 번 누르면 운전 상태 유지
    공정 단계 유지특정 단계 진입 후 다음 조건 전까지 상태 유지
    수동 동작 유지버튼 순간 입력 후 일정 조건까지 동작 유지
    준비 완료 상태 유지여러 조건이 만족된 뒤 상태 플래그 유지

    자기유지 회로의 핵심은 정지 조건입니다. 시작 조건보다 정지 조건을 더 명확히 설계해야 합니다. 정지 버튼, 비상정지, 도어 인터록, 에어 압력 이상, 서보 알람 같은 조건이 자기유지를 확실히 끊을 수 있어야 합니다.

    SET/RST는 상태를 강제로 기억한다

    SET/RST는 특정 비트를 ON 상태로 만들고, 별도의 RST 조건으로 OFF시키는 방식입니다.

    예를 들어 SET M100 조건이 들어오면 M100은 ON 상태가 됩니다. 이후 원래 SET 조건이 OFF되어도 M100은 계속 ON 상태로 남습니다. M100을 끄려면 별도로 RST M100 조건이 실행되어야 합니다.

    SET/RST는 완료 플래그, 알람 발생 기억, 특정 공정 상태 저장처럼 상태를 명확히 기억해야 할 때 사용할 수 있습니다.

    다만 SET/RST는 편리한 만큼 위험합니다. 어떤 상황에서도 RST 조건이 반드시 실행될 수 있도록 설계하지 않으면 설비가 멈추지 않거나, 다음 사이클에서 이전 상태가 남는 문제가 생길 수 있습니다.

    SET/RST와 래치는 다르다

    SET/RST와 래치는 혼동하기 쉽지만 서로 다른 개념입니다.

    SET/RST는 비트를 켜고 끄는 명령어입니다. 래치는 전원 OFF 후에도 값을 유지하는 메모리 속성 또는 영역입니다.

    구분의미
    SET/RST특정 비트를 ON 또는 OFF시키는 명령어
    래치전원 OFF 후에도 값을 유지하는 메모리 영역 또는 설정
    일반 M 비트전원 재투입 시 초기화될 수 있음
    래치 영역 L 또는 래치 설정된 비트전원 재투입 후에도 상태가 남을 수 있음

    일반 M 비트를 SET한 경우에는 전원 재투입 시 OFF로 초기화될 수 있습니다. 하지만 래치 영역에 있는 비트를 SET한 경우에는 전원을 껐다 켜도 ON 상태가 남을 수 있습니다.

    이 차이를 모르면 전원 복귀 후 설비가 예상하지 못한 상태로 시작될 수 있습니다. 특히 출력 동작과 직접 연결되는 조건을 래치 영역에 SET할 때는 복귀 시 초기화 조건과 안전 인터록을 반드시 확인해야 합니다.

    SET/RST를 사용할 때 가장 중요한 기준

    SET/RST를 사용할 때는 SET 조건보다 RST 조건을 먼저 봐야 합니다.

    SET은 신호를 살리는 명령입니다. 그러나 설비 안정성은 그 신호를 언제, 어떤 조건에서 끄는지에 따라 결정됩니다.

    RST 조건에는 다음과 같은 항목을 포함하는 것이 좋습니다.

    RST 조건 예목적
    정지 버튼작업자 정지 명령 반영
    비상정지 또는 안전 조건위험 상태에서 유지 신호 제거
    공정 완료해당 상태가 더 이상 필요 없을 때 해제
    알람 발생이상 상태에서 동작 유지 방지
    원점 복귀 또는 초기화다음 사이클 시작 전 상태 정리
    전원 투입 초기화 조건재기동 시 이전 상태 제거

    SET/RST는 상태를 기억해야 할 때만 사용하고, 단순 출력 유지에는 자기유지 회로를 우선 검토하는 것이 좋습니다.

    MC 영역 안에서 SET을 사용할 때 주의할 점

    마스터 코일(MC)이나 상위 인터록 영역 안에서 SET을 사용할 때는 특히 주의해야 합니다.

    상위 조건이 끊기면 해당 영역의 일반 코일이나 자기유지 회로는 OFF되는 구조로 이해하기 쉽습니다. 그러나 SET으로 이미 ON시킨 비트는 RST가 실행되지 않는 한 상태가 남을 수 있습니다.

    문제는 상위 조건이 끊기면서 RST 회로까지 실행되지 못하는 구조가 될 수 있다는 점입니다. 이 경우 작업자는 전체 로직이 죽었다고 생각하지만, 내부 SET 비트는 계속 ON 상태로 남아 있을 수 있습니다. 이후 조건이 다시 살아났을 때 예상하지 못한 동작이 발생할 가능성이 있습니다.

    따라서 MC 영역 안에서 SET을 사용할 때는 다음을 확인해야 합니다.

    확인 항목설명
    RST 회로 위치상위 조건이 끊겨도 RST가 실행 가능한지 확인
    SET 비트 용도실제 출력과 직접 연결되는지 확인
    복귀 조건MC 복귀 시 이전 SET 상태가 남아도 되는지 확인
    초기화 조건운전 시작 전 SET 상태를 정리하는지 확인
    안전 조건비상정지나 알람 시 강제 해제되는지 확인

    SET을 사용할 때는 해당 비트를 살리는 조건보다 끄는 조건이 더 중요합니다.

    스캔 구조가 로직 결과를 바꿀 수 있다

    PLC는 프로그램을 위에서 아래로, 왼쪽에서 오른쪽으로 순차 처리합니다. 이 스캔 구조 때문에 같은 디바이스를 여러 곳에서 제어하면 마지막에 처리된 결과가 실제 상태에 더 큰 영향을 줄 수 있습니다.

    예를 들어 위쪽 로직에서 M100을 SET했지만 아래쪽 로직에서 같은 스캔 안에 M100을 RST하면, 최종적으로는 M100이 OFF 상태가 될 수 있습니다.

    반대로 위쪽에서 RST하고 아래쪽에서 SET하면 최종 결과는 ON으로 남을 수 있습니다.

    이 문제는 로직이 틀린 것이 아니라 스캔 순서를 고려하지 않은 설계에서 발생합니다.

    이중 코일과 SET/RST 중복 사용을 피해야 한다

    같은 디바이스를 여러 곳에서 OUT, SET, RST로 중복 제어하면 유지보수가 어려워집니다. 특히 같은 M 비트를 위에서는 OUT으로 쓰고 아래에서는 SET/RST로 제어하면 현재 상태가 왜 그렇게 되었는지 추적하기 어렵습니다.

    기본 원칙은 다음과 같습니다.

    항목권장 기준
    일반 코일 OUT같은 디바이스를 여러 곳에서 중복 사용하지 않음
    SET/RST한 디바이스의 SET/RST 조건을 한 영역에서 관리
    자기유지정지 조건을 같은 회로 안에서 명확히 구성
    출력 Y여러 회로에서 직접 중복 구동하지 않음
    상태 M용도별로 하나의 제어 구조만 사용

    특히 출력 Y를 직접 SET/RST하는 구조는 신중해야 합니다. 가능하면 내부 상태 비트를 먼저 만들고, 최종 출력은 안전 조건과 인터록을 거쳐 한 곳에서 제어하는 것이 관리하기 쉽습니다.

    자기유지와 SET/RST 선택 기준

    자기유지와 SET/RST 중 어느 것을 사용할지는 상태를 어떻게 해제할지에 따라 결정하는 것이 좋습니다.

    상황권장 방식
    버튼을 누른 뒤 운전 상태 유지자기유지
    상위 조건이 끊기면 함께 OFF되어야 함자기유지 또는 일반 코일
    알람 발생 이력을 남겨야 함SET/RST
    특정 공정 완료 상태를 다음 단계까지 기억SET/RST 가능
    전원 재투입 후 상태가 남으면 위험일반 코일 또는 초기화 포함 자기유지
    RST 조건이 불명확함SET/RST 사용 지양

    SET/RST는 편해서 쓰는 명령어가 아니라 상태를 책임지고 관리할 수 있을 때 사용하는 명령어입니다.

    전원 재투입 시 동작을 반드시 확인한다

    PLC 로직은 운전 중 동작만 확인해서는 부족합니다. 실제 설비에서는 전원이 꺼졌다가 다시 들어오는 상황이 반드시 발생합니다.

    전원 재투입 시 다음 항목을 확인해야 합니다.

    확인 항목설명
    SET 비트 초기 상태전원 복귀 후 ON으로 남는지 확인
    래치 영역 사용 여부L, 래치 M, 래치 D 영역 확인
    출력 조건복귀 직후 출력이 바로 나가지 않는지 확인
    자동운전 플래그자동으로 운전 재개되는 구조인지 확인
    알람 플래그이전 알람을 유지할지 초기화할지 결정
    원점 상태원점 미확인 상태에서 동작하지 않도록 구성

    특히 실린더, 모터, 서보, 히터처럼 실제 동작을 만드는 출력은 전원 복귀 직후 바로 살아나지 않도록 해야 합니다. 래치된 SET 비트가 출력 조건에 직접 연결되어 있으면 예상하지 못한 재동작이 발생할 수 있습니다.

    로직 점검 체크리스트

    자기유지와 SET/RST가 들어간 로직을 점검할 때는 다음 항목을 확인하는 것이 좋습니다.

    점검 항목확인 내용
    일반 코일로 가능한지SET/RST 없이 처리할 수 있는 동작인지 확인
    RST 조건 존재 여부모든 SET 비트에 명확한 RST 조건이 있는지 확인
    안전 조건 포함 여부정지, 비상정지, 알람 조건에서 해제되는지 확인
    래치 영역 여부전원 OFF 후 상태가 남아도 되는지 확인
    MC 조건 영향상위 인터록 해제 시 어떤 상태가 남는지 확인
    중복 제어 여부같은 디바이스를 여러 곳에서 제어하지 않는지 확인
    스캔 순서위쪽 조건과 아래쪽 조건이 서로 덮어쓰지 않는지 확인
    복귀 시 동작전원 재투입 또는 알람 리셋 후 바로 동작하지 않는지 확인

    이 항목을 확인하면 SET/RST 남용으로 인한 유지 신호, 정지 불량, 재기동 오동작을 줄일 수 있습니다.

    자기유지와 SET/RST 정리

    자기유지와 SET/RST는 모두 상태를 유지할 수 있지만 동작 성격이 다릅니다. 자기유지는 조건 기반으로 상태를 유지하는 방식이고, 상위 조건이나 정지 조건이 끊기면 함께 OFF되도록 구성하기 쉽습니다. SET/RST는 명령으로 상태를 기억시키는 방식이며, RST가 실행되기 전까지 상태가 남을 수 있습니다.

    SET/RST는 알람 기억, 공정 완료 플래그, 특정 상태 보존처럼 목적이 분명할 때 유용합니다. 하지만 RST 조건이 불명확하거나 래치 영역과 결합되면 설비가 멈추지 않거나 전원 복귀 후 예상하지 못한 동작이 발생할 수 있습니다.

    PLC는 스캔 순서대로 로직을 처리하므로 같은 디바이스를 여러 곳에서 제어하면 아래쪽 로직이 위쪽 결과를 덮어쓸 수 있습니다. 따라서 하나의 상태 비트는 한 곳에서 관리하고, SET/RST를 사용할 때는 반드시 해제 조건과 복귀 조건까지 함께 설계해야 합니다.

    일반 코일로 처리할 수 있는 동작은 일반 코일을 우선 사용하고, 상태 유지가 필요하면 자기유지를 검토하며, SET/RST는 명확한 리셋 조건이 있을 때만 사용하는 것이 안전합니다.

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

    PLC에서 타이머와 카운터는 기능 자체보다 배치 위치가 더 중요할 때가 많습니다. 시간을 얼마나 줄 것인지, 몇 번을 셀 것인지도 중요하지만, 그 신호를 어느 공정의 조건으로 사용할지, 언제 이전 동작을 끊을지, 언제 카운터를 리셋할지를 잘못 잡으면 설비는 쉽게 꼬입니다. 타이머와 카운터는 단순 보조 기능이 아니라 공정 순서를 정리하는 조건 장치로 이해해야 합니다.

    타이머와 카운터가 오동작 원인이 되는 이유

    시운전 중 타이머와 카운터 때문에 문제가 생기는 경우는 단순히 명령어를 몰라서가 아닙니다. 대부분은 타이머 완료 접점과 카운터 완료 접점을 어디에 사용할지 명확하지 않아서 발생합니다.

    타이머는 동작을 늦추는 역할만 하는 것이 아니라, 앞 공정이 안정된 뒤 다음 공정으로 넘어가도 되는지 판단하는 조건이 됩니다. 카운터는 숫자를 세는 기능만 하는 것이 아니라, 목표 횟수에 도달했을 때 다음 동작을 막거나 다음 사이클로 넘기는 기준이 됩니다.

    예를 들어 실린더가 전진한 뒤 바로 다음 공정으로 넘어가면 기구 흔들림이나 센서 채터링 때문에 오동작할 수 있습니다. 이때 타이머는 단순 대기 시간이 아니라 공정 안정화 조건으로 사용됩니다.

    또한 카운터가 목표 수량에 도달했는데 리셋 시점이 빠르면 아직 처리되지 않은 제품을 놓칠 수 있고, 리셋 시점이 늦으면 다음 사이클에 이전 카운트값이 섞일 수 있습니다.

    타이머는 공정 안정화 조건으로 사용한다

    실무에서 타이머는 단순히 시간을 기다리는 용도가 아닙니다. 앞선 동작이 실제로 완료되었고, 그 상태가 일정 시간 이상 안정적으로 유지되었는지 확인하는 역할을 합니다.

    대표적인 사용 목적은 다음과 같습니다.

    사용 목적설명
    동작 지연실린더, 모터, 밸브 동작 후 다음 단계까지 대기
    신호 안정화센서 신호가 일정 시간 유지될 때만 정상으로 인정
    공정 전환 조건타이머 완료 후 다음 스텝으로 이동
    인터락 조건일정 시간이 지나기 전에는 다음 동작을 막음

    예를 들어 실린더 전진 센서가 ON되자마자 다음 동작을 실행하면 기계적 흔들림이나 센서 접점 흔들림이 남아 있을 수 있습니다. 이때 전진 확인 후 0.5초 정도의 타이머를 두면 다음 공정으로 넘어가기 전에 안정 시간을 확보할 수 있습니다.

    타이머를 어디에 걸어야 하는가

    타이머는 아무 조건에나 붙이면 안 됩니다. 타이머를 시작시키는 조건이 공정의 실제 완료 조건인지 확인해야 합니다.

    예를 들어 실린더 전진 후 대기 시간이 필요하다면 타이머 조건은 단순 시작 버튼이 아니라 전진 확인 센서가 되어야 합니다. 시작 버튼에 타이머를 걸면 실린더가 실제로 전진했는지와 관계없이 시간이 흘러 다음 공정이 실행될 수 있습니다.

    타이머 조건을 잡을 때는 다음 기준을 확인하는 것이 좋습니다.

    확인 항목설명
    실제 완료 조건인지시작 명령이 아니라 완료 확인 신호에 타이머를 거는지 확인
    신호가 안정적인지센서가 순간적으로 흔들리지 않는지 확인
    다음 공정 조건인지타이머 완료 접점이 어느 공정을 살리는지 확인
    이전 공정을 끊는지필요 시 이전 출력이 계속 유지되지 않도록 인터락 구성
    안전 조건과 충돌 없는지도어, 비상정지, 에어 압력 조건과 함께 확인

    타이머는 시작 명령에 거는 것이 아니라, 대부분 완료 확인 신호 뒤에 배치하는 것이 안정적입니다. 그래야 실제 동작이 끝난 뒤 시간을 계산할 수 있습니다.

    카운터는 리셋 타이밍이 중요하다

    카운터는 숫자를 올리는 것보다 언제 리셋할지가 더 중요합니다. 카운터가 목표값에 도달했을 때 바로 리셋할지, 배출 완료 후 리셋할지, 작업자 확인 후 리셋할지에 따라 설비 동작이 달라집니다.

    예를 들어 제품 10개가 쌓이면 박스를 배출하는 구조가 있다고 가정합니다. 이때 10개가 되자마자 카운터를 바로 리셋하면 아직 박스가 빠져나가기 전인데 다음 제품 카운트가 시작될 수 있습니다.

    반대로 리셋이 너무 늦으면 다음 사이클이 시작되어야 하는데 이전 완료 상태가 계속 남아 있어 동작이 막힐 수 있습니다.

    카운터 리셋 조건은 다음 요소를 함께 봐야 합니다.

    확인 항목설명
    목표 수량 도달카운터 완료 접점이 ON되었는지 확인
    실제 배출 완료제품 또는 박스가 실제로 빠져나갔는지 확인
    원위치 확인실린더, 스토퍼, 컨베이어 상태가 초기 위치인지 확인
    작업자 확인필요 시 확인 스위치 또는 재시작 조건 포함
    다음 사이클 준비다음 동작이 시작되어도 되는 상태인지 확인

    카운터는 세는 조건보다 리셋 조건이 설비 안정성에 더 큰 영향을 주는 경우가 많습니다.

    동일한 타이머와 카운터 번호를 중복 사용하지 않는다

    동일한 T 번호나 C 번호를 여러 곳에서 동시에 사용하는 것은 피해야 합니다. 하나의 타이머 코일이나 카운터 코일을 여러 회로에서 중복으로 사용하면 스캔 순서에 따라 의도하지 않은 결과가 나올 수 있습니다.

    예를 들어 위쪽 로직에서는 T0을 동작시키고 있는데 아래쪽 로직에서 다른 조건으로 같은 T0을 다시 사용하면, 실제 동작은 마지막에 처리된 회로의 영향을 받을 수 있습니다.

    기본 원칙은 간단합니다.

    항목기준
    T 코일하나의 타이머 번호는 한 곳에서만 구동
    C 코일하나의 카운터 번호는 한 곳에서만 카운트
    T/C 접점필요한 곳에서 참조 가능
    리셋 조건별도 조건으로 명확히 관리
    주석타이머와 카운터의 용도를 반드시 기록

    타이머와 카운터는 접점으로 여러 곳에서 사용할 수 있지만, 코일이나 카운트 구동부는 한 곳에서 관리하는 것이 안전합니다.

    짧은 신호는 카운터가 놓칠 수 있다

    카운터 입력 신호가 너무 짧으면 PLC 스캔 타임에 따라 신호를 놓칠 수 있습니다. 특히 고속으로 지나가는 제품 감지, 짧은 펄스 센서, 엔코더성 신호를 일반 입력과 일반 카운터로 처리하면 누락이 발생할 수 있습니다.

    이 문제는 로직만으로 해결되지 않을 수 있습니다. 필요한 경우 입력 모듈의 응답 시간, 펄스 캐치 기능, 고속 카운터 사용 여부, 센서 출력 유지 시간을 함께 확인해야 합니다.

    카운터 입력이 불안정할 때는 다음 항목을 확인합니다.

    확인 항목설명
    센서 ON 시간PLC가 읽을 수 있을 만큼 충분히 긴지 확인
    스캔 타임신호 길이보다 스캔 주기가 긴지 확인
    입력 필터입력 지연 또는 필터 설정 확인
    상승엣지 처리한 제품에 한 번만 카운트되는지 확인
    하드웨어 기능펄스 캐치 또는 고속 카운터 필요 여부 확인

    제품 한 개가 지나갈 때 카운터가 두 번 올라가거나 아예 올라가지 않는다면, 로직 조건뿐 아니라 입력 신호의 물리적 길이도 함께 봐야 합니다.

    고정 타이머와 가변 타이머를 구분한다

    타이머 설정값은 모두 HMI에서 바꿀 수 있게 만드는 것이 항상 좋은 것은 아닙니다. 반대로 모든 값을 프로그램에 고정하는 것도 유지보수에 불리할 수 있습니다.

    타이머 값은 설비 성격에 따라 고정값과 가변값으로 구분하는 것이 좋습니다.

    구분사용 예
    고정값충돌 방지, 안전 인터락, 최소 보호 시간
    가변값제품별 대기 시간, 공정 최적화 시간, 검사 대기 시간
    제한 필요 값HMI에서 변경 가능하지만 최소·최대값 제한 필요

    예를 들어 충돌 방지용 최소 대기 시간은 작업자가 임의로 줄이면 위험할 수 있으므로 고정값으로 두는 편이 안전합니다. 반면 제품별로 달라지는 건조 시간, 검사 대기 시간, 배출 지연 시간은 HMI에서 조정 가능하게 설계하는 것이 편리합니다.

    가변 타이머를 사용할 때는 OUT T0 D100처럼 D 레지스터 값을 설정값으로 사용할 수 있습니다. 이 경우 HMI에서 D100 값을 변경하면 타이머 설정값을 조정할 수 있습니다. 다만 단위, 최소값, 최대값, 초기값을 반드시 관리해야 합니다.

    실린더 반복 동작에서 타이머와 카운터를 배치하는 기준

    실린더 반복 동작을 예로 들면 타이머와 카운터의 역할을 이해하기 쉽습니다.

    전진 명령이 나가고, 전진 확인 센서가 들어온 뒤, 일정 시간 대기하고, 작업 횟수를 카운트한 다음, 목표 횟수에 도달하면 자동 동작을 막고, 후진 확인과 작업자 확인 후 카운터를 리셋하는 구조를 생각할 수 있습니다.

    이 구조에서 각 장치의 역할은 다음과 같습니다.

    단계사용 조건역할
    전진 시작시작 조건 + 카운터 미완료목표 횟수 전까지만 동작 허용
    전진 확인전진 센서 ON실제 동작 완료 확인
    안정화 대기전진 센서 ON 후 타이머기계적 안정 시간 확보
    카운트 증가타이머 완료작업 1회 완료로 인정
    자동 정지카운터 완료목표 횟수 도달 후 추가 동작 차단
    리셋후진 확인 + 작업자 확인다음 사이클 준비

    여기서 중요한 것은 카운트 조건을 단순 시작 버튼에 걸지 않는 것입니다. 시작 버튼에 카운터를 걸면 실제 실린더가 전진하지 않았는데도 횟수가 올라갈 수 있습니다.

    작업 1회를 인정하는 기준은 실제 전진 완료 후 안정화 시간이 지난 시점이 더 적합합니다. 그래서 타이머 완료 접점을 카운터 입력 조건으로 사용하는 구조가 현장에서 자주 사용됩니다.

    카운터 완료 접점은 다음 동작을 막는 인터락으로 사용할 수 있다

    카운터 완료 접점은 목표 수량 도달을 알리는 신호일 뿐 아니라, 추가 동작을 막는 인터락으로도 사용할 수 있습니다.

    예를 들어 C0이 목표 횟수에 도달하면 C0 B접점을 이용해 시작 조건을 차단할 수 있습니다. 이렇게 하면 작업자가 시작 버튼을 다시 눌러도 목표 횟수 이후에는 실린더가 추가로 동작하지 않습니다.

    이 구조는 다음과 같은 상황에서 유용합니다.

    적용 상황설명
    정해진 횟수만 반복목표 횟수 이후 자동 정지
    제품 수량 제한설정 수량 이후 추가 투입 방지
    공정 횟수 제한압입, 검사, 반복 동작 횟수 제한
    작업자 확인 필요완료 후 확인 전까지 다음 사이클 차단

    카운터 완료 후 바로 리셋하지 않고, 완료 상태를 유지해 다음 동작을 막는 방식이 더 안전한 경우가 많습니다.

    리셋 조건은 다음 사이클 준비 완료 조건이어야 한다

    카운터 리셋은 단순히 목표 수량에 도달했을 때 실행하면 안 됩니다. 리셋은 다음 사이클을 시작해도 되는 상태에서 실행되어야 합니다.

    예를 들어 다음 조건이 모두 만족된 뒤 리셋하는 방식이 안정적입니다.

    리셋 조건의미
    카운터 완료목표 횟수 도달
    후진 확인실린더가 원위치로 복귀
    배출 완료제품 또는 박스가 빠져나감
    작업자 확인사람이 다음 작업을 승인
    자동운전 가능안전 조건과 운전 조건 정상

    이렇게 리셋 조건을 강화하면 카운터가 너무 빨리 초기화되어 다음 제품을 잘못 세는 문제를 줄일 수 있습니다.

    타이머와 카운터 점검 기준

    타이머와 카운터 로직을 점검할 때는 다음 항목을 확인하는 것이 좋습니다.

    점검 항목확인 내용
    타이머 시작 조건실제 완료 신호 뒤에 타이머가 있는지 확인
    타이머 완료 접점다음 공정을 살리는 조건인지, 이전 공정을 끊는 조건인지 확인
    카운터 입력 조건실제 작업 1회 완료 시점에 카운트되는지 확인
    카운터 완료 접점추가 동작을 막는 인터락으로 사용되는지 확인
    리셋 조건다음 사이클 준비 완료 후 리셋되는지 확인
    T/C 중복 사용같은 번호를 여러 코일에서 사용하지 않았는지 확인
    HMI 설정값가변 시간의 최소·최대 범위가 제한되어 있는지 확인
    짧은 신호스캔 타임보다 짧은 입력이 없는지 확인

    문제가 생겼을 때 타이머 값이나 카운터 값만 볼 것이 아니라, 그 값이 어떤 조건에서 증가하고 어떤 조건에서 초기화되는지를 함께 확인해야 합니다.

    타이머와 카운터 배치 정리

    타이머는 시간을 기다리는 기능이 아니라 공정이 안정되었는지 확인하는 조건으로 사용하는 것이 중요합니다. 시작 명령에 바로 거는 것보다 실제 완료 신호 뒤에 배치해야 다음 공정이 안정적으로 이어집니다.

    카운터는 횟수를 세는 기능보다 리셋 타이밍이 중요합니다. 목표 횟수에 도달한 즉시 리셋하는 것이 아니라, 실제 배출 완료, 원위치 확인, 작업자 확인 등 다음 사이클 준비 조건이 충족된 뒤 리셋해야 합니다.

    동일한 T/C 번호는 중복 코일로 사용하지 않고, 짧은 센서 신호는 스캔 타임과 입력 필터 조건을 함께 확인해야 합니다. 또한 안전이나 충돌 방지 시간은 고정값으로 관리하고, 제품별 조정이 필요한 시간은 HMI 설정값으로 분리하는 것이 좋습니다.

    타이머와 카운터는 설비의 동작 순서와 반복 기준을 만드는 핵심 요소입니다. 어디에 걸고, 어디에서 끊고, 언제 리셋할지를 명확히 정리하면 시운전 중 발생하는 오동작을 크게 줄일 수 있습니다.

  • [실무] 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비트 구분과 복사 범위만 정확히 관리해도 현장 로직의 가독성과 안정성을 크게 높일 수 있습니다.