
이미지 파일명 : PLC-INC-DEC-명령어-래더-프로그램.png
이미지 설명 : 미쓰비시 PLC INC DEC와 INCP DECP 명령어의 데이터 1 증가 감소 원리
학습용으로 제작한 AI 설명 이미지이며 실제 장비 배선도는 아닙니다.
HMI의 설정 수량을 한 단계 올리거나, 버튼을 누를 때마다 데이터 값을 1씩 줄이고 싶은 경우가 있습니다. 두 값의 합계를 구하는 사칙연산보다 현재 값을 딱 1만 바꾸는 명령이 읽기 쉬운 상황입니다.
이번 PLC 기초 시리즈 15탄에서는 미쓰비시 MELSEC-Q/L의 기본 명령을 기준으로 INC·DEC와 INCP·DECP의 차이를 알아봅니다. 이어서 버튼 입력, 범위 제한, 초기화를 연결한 연습 예제를 살펴보겠습니다. 텍스트 래더는 동작 설명용이며 GX Works2에서 해당 CPU를 선택해 작성·변환한 뒤 시뮬레이터로 확인하세요.
1. PLC INC·DEC 명령어란?
INC는 지정한 데이터에 1을 더하고, DEC는 1을 뺍니다. 결과를 별도의 목적지에 보내는 예제와 달리, 지정한 디바이스의 값 자체가 바뀐다는 점을 기억하면 됩니다.
| 명령 | 동작 | D0가 10일 때 1회 실행 |
|---|---|---|
| INC D0 | D0 ← D0 + 1 | D0 = 11 |
| DEC D0 | D0 ← D0 − 1 | D0 = 9 |
예를 들어 D0를 작업자가 정하는 목표 수량으로 쓰고 있다면, 증가 버튼은 D0에 1을 더하고 감소 버튼은 D0에서 1을 빼도록 구성할 수 있습니다.
2. INC를 쓰면 버튼을 누른 동안 계속 증가할 수 있다
|----[ X0 ]----------------[ INC D0 ]----|
초기값 D0 = 10
X0가 ON인 상태에서 이 명령을 3회 실행
10 → 11 → 12 → 13
일반 INC는 실행 조건이 성립할 때마다 실행됩니다. 동일한 명령을 매 스캔 실행하는 프로그램이라면 버튼을 누르고 있는 동안 값이 계속 올라갑니다. ‘버튼 한 번’과 ‘명령 한 번 실행’은 같은 의미가 아닙니다.
증가량을 실제 시간으로 단정하지 마세요. 프로그램 스캔 시간과 실행 구조가 다르면 같은 시간 동안 누르더라도 연산 횟수가 달라집니다.
3. 버튼 한 번에 1만 바꾸려면 INCP·DECP
|----[ X0 ]----------------[ INCP D0 ]----|
|----[ X1 ]----------------[ DECP D0 ]----|
초기 D0 = 10
X0 : OFF → ON : D0 = 11
X0 : ON 유지 : D0 = 11
X0 : OFF → ON : D0 = 12
X1 : OFF → ON : D0 = 11
P가 붙은 명령은 실행 조건이 OFF에서 ON으로 바뀔 때 한 번 동작하는 펄스형입니다. 위 예제처럼 단일 입력을 조건으로 사용하면 입력이 다시 OFF가 된 뒤 ON될 때 다음 연산이 일어납니다.
실제 버튼의 접점이 여러 번 흔들리는 채터링까지 INCP가 자동 제거하는 것은 아닙니다. 여러 상승 변화가 입력으로 들어오면 여러 번 계산될 수 있으므로 입력 필터나 별도 신호 정리가 필요한지 확인합니다.
4. INC·INCP·DEC·DECP 차이 한눈에 보기
| 명령 | 값의 변화 | 실행 방식 |
|---|---|---|
| INC | +1 | 조건이 ON인 동안 실행될 때마다 |
| INCP | +1 | 조건의 OFF → ON에서 한 번 |
| DEC | −1 | 조건이 ON인 동안 실행될 때마다 |
| DECP | −1 | 조건의 OFF → ON에서 한 번 |
여러 조건을 직렬로 연결했다면 ‘실행 조건’은 버튼 하나가 아니라 그 명령 앞의 전체 조건입니다. 버튼은 계속 ON이어도 다른 허가 조건이 OFF에서 ON으로 바뀌면 펄스형 명령이 새로 실행될 수 있습니다.
5. 실무 연습: 설정 수량을 0~100 안에서 조절하기
이번에는 규칙을 먼저 정해보겠습니다. 증가·감소는 각각 버튼을 새로 누를 때 한 번만 처리하고, 두 버튼이 함께 ON이면 조절하지 않습니다. 초기화 버튼을 누르면 D0를 0으로 만듭니다. 초기값이 이미 범위를 벗어났다면 먼저 원인을 확인하고 초기화합니다.
| 디바이스 | 이 예제의 용도 |
|---|---|
| X0 / X1 | 증가 / 감소 버튼 |
| X2 | 초기화 버튼 |
| M10 / M11 | 버튼 상승 시 한 스캔만 ON되는 내부 신호 |
| D0 | 설정 수량, 0~100 |
버튼 자체의 상승 시점을 별도 내부 신호로 만들면, 버튼을 계속 누른 상태에서 범위 조건만 바뀌어 다시 계산되는 상황을 피하기 쉽습니다. 아래의 LDP는 상승 펄스 접점을 뜻합니다.
; 버튼의 OFF → ON을 한 스캔 신호로 변환
LDP X0
OUT M10
LDP X1
OUT M11
; 설명용 텍스트 래더: [ /X ]는 해당 입력의 부정 접점
|--[M10]--[/X1]--[/X2]--[>= D0 K0]--[< D0 K100]--[INC D0]--|
|--[M11]--[/X0]--[/X2]--[> D0 K0]--[<= D0 K100]--[DEC D0]--|
|--[ X2 ]----------------------------------------[MOV K0 D0]--|
이 예제에서는 M10·M11이 한 스캔 신호이므로 뒤쪽 연산은 일반 INC·DEC를 사용했습니다. X2의 초기화가 우선하도록 두 조절 회로에 X2의 부정 조건도 넣었습니다. 두 버튼을 동시에 누른 뒤 하나만 떼는 동작으로는 새 상승 펄스가 생기지 않으므로, 다시 눌러야 조절됩니다.
이 회로는 위 규칙을 위한 학습 예제입니다. 실제 설비에서 이미 쓰는 M10·M11·D0와 중복되지 않는지 확인하고, 생산 중인 장비의 입력을 강제로 바꾸는 대신 시뮬레이터에서 먼저 시험하세요.
6. 초기화와 전원 재투입은 구분해야 한다
D 레지스터를 0으로 만드는 예제는 MOV K0 D0처럼 값 대입으로 표현하면 의미가 명확합니다. X2를 누른 동안 이 명령을 실행하면 해당 기간에는 D0가 0으로 유지됩니다.
프로그램에서 초기화하는 것과 전원을 껐다 켰을 때 값이 유지되는 것은 별개의 문제입니다. 보존 여부는 CPU와 디바이스·래치 설정을 확인하세요. 생산 누적량은 유지하고 작업용 설정은 초기화하는 등 데이터의 목적에 맞춰 정해야 합니다.
7. 16비트 범위를 넘으면 어떻게 될까?
부호 있는 16비트 값으로 보면 범위는 −32,768~32,767입니다. 이 형식에서 32,767에 INC를 실행하면 −32,768, −32,768에 DEC를 실행하면 32,767로 돌아갑니다. 원하는 상한·하한에서 자동으로 멈추는 명령이 아닙니다.
생산 누적량처럼 큰 수를 다룬다면 32비트 명령인 DINC·DDEC와 펄스형 DINCP·DDECP의 지원 여부를 확인합니다. D0를 시작점으로 쓰는 32비트 데이터는 D0와 D1을 함께 사용하므로 D1을 다른 용도로 덮어쓰지 않도록 해야 합니다.
HMI와 PLC 모니터의 부호·비트 수 표시도 맞추세요. 같은 비트 패턴을 서로 다른 형식으로 읽으면 숫자가 다르게 보일 수 있습니다.
8. GX Works2에서 확인할 시험 순서
- 예제용 프로젝트를 만들고 CPU를 실제 학습 대상과 맞춥니다.
- 사용할 D0, M10, M11이 다른 회로에서 사용되지 않는지 확인합니다.
- 프로그램을 변환하고 지원되는 시뮬레이터에서 실행합니다.
- D0를 10으로 초기 설정하고 X0를 OFF → ON → ON 유지 → OFF 순서로 바꿉니다.
- X0를 다시 ON하면 D0가 한 번 더 증가하는지 봅니다.
- D0=100에서 증가, D0=0에서 감소가 차단되는지 확인합니다.
- 두 버튼 동시 입력과 X2 초기화 우선 동작을 확인합니다.
센서가 짧고 빠르게 들어오는 계수 용도라면 일반 스캔으로 모든 펄스를 감지할 수 있는지도 별도로 검토해야 합니다. INCP를 쓴다고 고속 카운터 기능이 생기는 것은 아닙니다.
9. 값이 이상할 때 확인할 것
| 증상 | 먼저 확인할 부분 |
|---|---|
| 한 번 눌렀는데 계속 증가 | 일반 INC가 ON 조건에서 반복 실행되는지 |
| 버튼을 눌러도 변화 없음 | 다시 OFF를 거쳤는지, 범위·금지 조건이 있는지 |
| 값이 잠깐 변했다가 돌아옴 | 다른 회로의 MOV·연산·HMI 쓰기가 같은 D를 덮는지 |
| 큰 양수가 음수로 변함 | 16비트 범위와 표시 형식이 맞는지 |
| 한 번 눌렀는데 가끔 두 번 계산 | 입력 채터링 또는 중복 연산 회로가 있는지 |
10. INC·DEC 핵심 정리
INC·DEC는 현재 데이터를 1씩 바꾸는 명령입니다. 버튼 한 번에 한 번만 계산하려면 INCP·DECP 또는 별도 상승 펄스 처리를 사용합니다. 실무에서는 명령어 선택에 더해 범위 제한, 동시 입력 규칙, 초기화 우선순위까지 함께 설계하는 것이 중요합니다.
함께 보면 좋은 글
PLC 실무노트 · 14탄
PLC 사칙연산 명령어 사용법|ADD·SUB·MUL·DIV
값을 1씩 바꾸는 연산에서 더 나아가, 두 값을 계산하고 결과를 저장하는 방법을 확인해보세요.
이전 글 자세히 보기 →
다음 글 예고
PLC 기초 시리즈 16탄
PLC 상승·하강 펄스 접점 사용법|LDP·LDF로 한 스캔 신호 만들기
버튼을 누르는 순간과 떼는 순간을 구분하고, 전체 조건의 변화와 입력 자체의 변화를 분리하는 방법을 알아보겠습니다.
참고 자료
기본 명령 동작은 미쓰비시 공식 매뉴얼을 기준으로 정리했습니다. 예제의 범위 제한·동시 입력 규칙은 본문 학습용으로 구성했습니다. 기종별 적용 범위는 사용하는 CPU의 매뉴얼에서 최종 확인하세요.
'PLC 기초' 카테고리의 다른 글
| PLC 사칙연산 명령어 사용법|ADD·SUB·MUL·DIV 미쓰비시 PLC 래더 프로그램 예제 (0) | 2026.09.09 |
|---|---|
| PLC 카운터란? CNT 명령어와 RST 사용법|미쓰비시 PLC 래더 프로그램 예제 (0) | 2026.09.09 |
| PLC 타이머란? TON·TOF·RTO 동작 원리와 래더 프로그램 예제 (0) | 2026.09.03 |
| PLC 비교 명령어 사용법|=, <>, >, <, >=, <= 조건과 래더 프로그램 예제 (0) | 2026.09.03 |
| PLC MOV·BMOV·FMOV 명령어 차이와 사용법|미쓰비시 PLC 데이터 전송 예제 (0) | 2026.09.03 |
댓글