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 영역에 저장하거나, 여러 개의 설정값을 한 번에 초기화하거나, 모델 변경 시 설정값 묶음을 이동하는 방식으로 활용할 수 있습니다.
| 명령어 | 활용 예 |
|---|---|
| MOV | T/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 표시나 진단 화면에 활용할 수 있습니다.
타이머와 카운터는 단순한 보조 기능이 아니라 시퀀스 제어의 핵심 요소입니다. 접점으로 사용할 때와 값으로 관리할 때의 차이를 구분하면 로직 오동작과 유지보수 혼선을 줄일 수 있습니다.