PLC Counter(카운터)란?
PLC(Programmable Logic Controller)를 이용한 자동화 제어에서 Counter(카운터)는 입력 신호가 발생한 횟수를 계산하는 명령어입니다. 센서가 감지한 제품 개수, 버튼을 누른 횟수, 생산 수량, 공정 사이클 등을 카운트할 때 가장 많이 사용됩니다.
실제 산업 현장에서는 제품 개수 확인, 컨베이어 생산량 집계, 포장 수량 관리, 자동문 출입 횟수 등 다양한 자동화 설비에서 Counter 기능이 활용되고 있습니다.
Counter는 PLC 프로그래밍의 기본 명령어 중 하나이며, Timer와 함께 반드시 익혀야 하는 핵심 기능입니다.
XGK PLC에는 2,048개의 카운터가 있으며 기능별로 CTU, CTD,CTUD, CTR 등 4종의 카운터가 있으며, 1개의 카운터는 최대 65,535까지 계수 할 수 있습니다.
Counter의 동작 원리
Counter는 입력이 OFF에서 ON으로 변하는 순간(상승 엣지)을 한 번의 카운트로 인식합니다.
예를 들어 목표값(Set Value)이 10이라면 입력 신호가 10번 들어왔을 때 출력이 ON됩니다.
동작 순서는 다음과 같습니다.
- 입력 신호 발생
- 현재 카운트 값(Current Value) 1 증가
- 목표값과 비교
- 목표값 이상이면 Counter 완료 신호 ON
즉, Timer가 시간을 계산한다면 Counter는 횟수를 계산하는 명령어라고 이해하면 쉽습니다.
Counter의 주요 구성
PLC 제조사마다 표현은 조금씩 다르지만 대부분 다음과 같은 요소로 구성됩니다.
- Counter 번호(C)
- 현재값(Current Value)
- 설정값(Set Value)
- Reset 입력
예시
- Counter 번호 : C0
- 설정값 : 100
- 현재값 : 0 → 100
현재값이 100이 되는 순간 Counter 출력이 ON됩니다.
CTU(Up Counter )명령어
UP Counter의 초기 현재값 = 0 입니다. 카운터의 동작 조건에 상승 에지가 발생(OFF→ON)할 때 마다 카운터의 현재값이 1씩 증가 되고 카운터의 현재값 = 설정값이 될때 하운터의 접점이 ON되는 카운터 입니다.
- 카운터의 초기 현재값 = 0 이며 동작 조건에 상승 에지가 발생하면 현재값이 1 증가 됩니다.
- 카운터의 현재값 = 설정값이 될 때 카운터의 접점이 ON 됩니다.
- 카운터의 접점이 ON된 상태에서 동작 조건에 상승 에지가 발생하면 현재값은 1 증가 되고 접점은 ON 상태를 유지 합니다.
- 카운터의 현재값이 65,535인 상태에서 동작 조건에 상승 에지가 발생해도 현재값은 변경되지 않습니다.
- 카운터를 리셋하면 현재값 = 0 이되며, 카운터의 접점이 ON되어 있는 경우 접점은 OFF 됩니다.
- 카운터의 현재값을 강제로 변경시킬 경우 접점 상태는 변경되지 않습니다.

예제)
P00000 입력 스위치가 10회 ON되면 P00020 LED가 ON됩니다.

CTD( Down Counter) 명령어
DOWN Counter 의 최기 현재값 = 설정값이 됩니다.
카운터의 동작 조건에 상승 에지가 발생(OFF→ON)할때 마다 카운터의 현재값이 1씩 감소되고, 카운터의 현재값 = 0이 될때 카운터의 접점이 ON 되는 카운터 입니다.
- 카운터의 초기 현재값 = 설정값이 됩니다.
- 카운터의 동작 조건에 상승 에지가 발생하면 현재값이 1 감소 됩니다.
- 카운터의 현재값 = 0 이 될때 카운터의 접점이 ON됩니다.
- 카운터의 접점이 ON된 상태(현재값 = 0 )에서 동작 조건에 상승 에지가 발생해도 현재값은 변화되지 않습니다.
- 카운터를 리셋하면 현재값 = 설정값이 되며, 카운터의 접점이 ON 되어 있는 경우 접점은 OFF 됩니다.
- 카운터의 현재 값을 강제로 변경시킬 경우 접점 상태는 변경되지 않습니다.

예제)P00004 입력 스위치가 10회 이상 ON되면 P00023 LED가 ON 됩니다.

CTUD(UP/DOWN Counter) 명령어
UP/DOWN Counter의 초기 현재값 = 0 입니다.
CTUD의 동작 조건은 상시 ON로 사용해야 하며 명령어 편집시 증가 및 감소 계수의 조건을 설정 합니다.
중가 계수의 조건에 상승 에지가 발생(OFF→ON)할때 카운터의 현재값이 1씩 증가되고, 감소 계수의 조건에 상승 에지가 발생(OFF → ON)할때 카운터의 현재값이 1씩 감소 됩니다.
- 카운터의 초기 설정값 = 0 입니다.
- 증가 계수 조건에 상승에지가 발생하면 현재값이 1 증가 되고 감소 계수 조건에 상승 에지가 발생하면 현재값이 1 감소 합니다.
- 카운터의 현재값 = 설정값이 될때 카운터의 접점이 ON 됩니다.
- 카운터의 접점이 ON 된 상태에서 중가 계수 조건에 상승 에지가 발생하면 현재값이 1 증가 되고 접점은 ON 상태를 유지 합니다.
- 카운터의 현재값 = 65,535인 상태에서 증가 계수 조건에 상승 에지가 발생해도 현재값이 변화도지 않습니다.
- 카운터를 리셋하면 현재값 = 0 이 되며 카운터의 접점이 ON되어 있는 경우 접점은 OFF 됩니다.
- 카운터의 현재값을 강제로 변경 시킬 경우 접점 상태는 변경되지 않습니다.

예제) 입고 센서 (P00006) 와 출고 센서(P00007)가 있는 창고에 재고가 10개 이하일때 P00024 LED가 2초 주기로 점멸하고
90개 초과 할때 P00025 LED가 점멸 합니다.

CTR(RING Counter)
RING Counter의 초기 현재값은 = 0 입니다.
카운터의 동작 조건에 상승 에지가 발생(OFF→ ON)할때 마다 카운터의 현재값이 1씩 증가되고 카운터의 현재값 = 설정값이 될때 카운터의 접점이 ON 됩니다. 접점이 ON 된 상태에서 동작 조건에 상승 에지가 1번 발생하면 카운터의 현재값이 0으로 변경되고 접점이 OFF됩니다.
카운터의 동작 조건에 상승 에지가 발생하면 현재값이 1 증가 됩니다.
카운터의 현재값 = 설정값이 될때 카운터의 접점이 ON 됩니다.
카운터의 접점이 ON 된 상태에서 동작 조건에 상승 에지가 발생하면 현재값 = 0 이 되고 접점은 OFF 됩니다.
카운터를 리셋하면 현재값 = 0 이되며, 카운터의 접점이 ON되어 있는 경우 접점은 OFF 됩니다.
카운터의 현재값을 강제로 변경시킬 경우 접점 상태는 변경 되지 않습니다.

예제) BOX에 10개의 제품이 들어 가면 컨베이어가 정지하고 BOX센서가 ON 되면 다시 컨베이어가 기동 합니다.


Timer와 Counter의 차이점
많은 초보자가 Timer와 Counter를 혼동합니다.
Timer
- 시간을 측정
- 일정 시간이 지나면 출력
Counter
- 횟수를 계산
- 설정 횟수에 도달하면 출력
예를 들어
- 5초 후 모터 ON → Timer 사용
- 제품 100개 후 모터 OFF → Counter 사용
상황에 따라 적절한 명령어를 선택해야 합니다.
Counter 활용 사례
Counter는 거의 모든 자동화 설비에서 사용됩니다.
대표적인 예는 다음과 같습니다.
- 생산 수량 카운트
- 컨베이어 제품 개수 확인
- 자동 포장 수량 관리
- 프레스 작업 횟수
- 출입 인원 계산
- 병 충전 개수 확인
- 로봇 작업 사이클 관리
자동화 공장을 운영한다면 Counter를 사용하지 않는 설비를 찾기 어려울 정도로 활용 범위가 넓습니다.
Counter 사용 시 주의사항
Counter를 사용할 때 가장 흔한 실수는 입력 신호의 중복 인식입니다.
센서가 순간적으로 여러 번 ON/OFF를 반복하면 실제보다 많은 횟수가 카운트될 수 있습니다.
이를 방지하기 위해서는 다음 사항을 확인해야 합니다.
- 센서 노이즈 제거
- 입력 필터 사용
- 상승 엣지(One Shot) 적용
- Reset 조건 명확히 설정
특히 고속 생산 라인에서는 이러한 설정이 매우 중요합니다.
마무리
Counter는 PLC 프로그래밍에서 가장 기본적이면서도 실무 활용도가 높은 명령어입니다. 생산 개수 관리, 공정 횟수 계산, 자동화 설비 제어 등 다양한 분야에서 핵심 역할을 수행합니다.
Timer와 Counter를 함께 활용하면 대부분의 기본 자동화 로직을 구현할 수 있으며, 이후 비교 명령어(Compare), 이동(MOV), 데이터 처리 명령어와 조합하면 더욱 복잡한 자동화 프로그램도 설계할 수 있습니다.
'산업 자동화 기술(PLC편) > PLC프로그래밍' 카테고리의 다른 글
| [PLC 프로그래밍 4편 ] PLC 명령어 종류와 사용법 총정리 (0) | 2026.08.01 |
|---|---|
| [PLC 프로그래밍 3편] Coil(코일)이란? (0) | 2026.07.31 |
| [PLC프로그래밍 2편] 접점 완벽 이해하기 | A접점과 B접점 P접점 N접점 차이부터 실무 예제까지 (0) | 2026.07.30 |
| [PLC 프로그래밍 1편] Ladder Diagram(래더 다이어그램)이란? PLC 기초부터 쉽게 이해하기 (0) | 2026.07.27 |