
🔹 1. 개요
DECO 명령어는 디코더(Decoder) 기능을 수행하는 명령어로, 바이너리 입력을 받아 해당 값에 따라 하나의 출력 비트를 ON시키는 명령입니다. 예를 들어, 3비트 입력으로 최대 8개의 출력 중 하나를 선택적으로 ON할 수 있습니다.
이는 주로 다중 분기, 메뉴 선택, 이벤트 트리거 등에 활용됩니다.
🔹 2. 명령어 형식
[DECO S D]
- S : 입력 비트의 값(바이너리 값)을 가지는 워드 (16비트 정수)
- D : 출력 비트 주소 시작점 (비트 단위, 예: M100)
입력된 정수값 S가 n이라면, D+n 비트가 ON되고, 나머지는 OFF됩니다.
🔹 3. 사용 예제
🎯 목적
입력 디바이스 X0~X2 (총 3비트)로 07의 값을 만들고, 해당 값에 해당하는 M100 ~ M107 중 하나의 비트를 ON시키는 디코더 기능 구현.
💡 회로 구성
입력의미설명
| X0 | LSB | 2^0 |
| X1 | 2^1 | |
| X2 | MSB | 2^2 |
→ 총 8가지 조합 (000~111)
🧠 래더 논리
| LD X0 | OUT M0 | LD X1 | OUT M1 | LD X2 | OUT M2 | MOV K0 D0 ; 초기화 | LD M0 | SFTL D0 K1 | LD M1 | SFTL D0 K1 | LD M2 | SFTL D0 K1 | DECO D0 M100 ; 결과 디코딩
또는 간단히 BIN → 워드로 변환 후 DECO 적용:
| LD X0 | OUT M0 | LD X1 | OUT M1 | LD X2 | OUT M2 | MOV K0 D0 | LD M0 | = D0.0 | LD M1 | = D0.1 | LD M2 | = D0.2 | DECO D0 M100
결과:
- X2~X0 = 011 (3) → M103 ON
- X2~X0 = 101 (5) → M105 ON
🔹 4. 동작 원리
✔️ 디코딩 방식
- S 값이 n일 때, D+n 비트만 ON
- 예를 들어 S=5, D=M100이면 M105 = ON, 나머지 M100~M104, M106~M107 = OFF
✔️ 3비트 입력 기준
입력값 (10진수)출력 비트
| 000 | 0 | M100 |
| 001 | 1 | M101 |
| 010 | 2 | M102 |
| 011 | 3 | M103 |
| 100 | 4 | M104 |
| 101 | 5 | M105 |
| 110 | 6 | M106 |
| 111 | 7 | M107 |
🔹 5. 주의 사항 및 팁
- S 값이 0~7 범위를 초과하면 모든 출력이 OFF 상태가 됩니다.
- D의 주소는 반드시 비트 디바이스 (M, B, X 등) 이어야 합니다.
- 사용 후 즉시 리셋됨 → 1 스캔 동안만 유효합니다. 결과를 유지하려면 결과를 별도 저장 필요.
- S 값을 생성할 때는 반드시 정수값으로 변환되도록 주의하세요. (예: BIN→INT 변환)
- 래더 프로그램 내에서는 디코딩 후 출력 비트를 이용해 타 로직을 구분하면 깔끔합니다.
🔹 6. 활용 예시
✅ 다중 기능 선택기 (예: 기계 모드 선택)
- 3비트 스위치로 기계 모드 8가지 설정 (자동, 수동, 점검, 유지보수 등)
✅ 화면 전환 제어
- 선택 스위치를 디코딩하여 HMI 화면 전환 트리거
✅ 신호 라우팅
- 복수 장치 중 하나 선택 → 해당 장치에만 신호 전달
🔹 7. 요약
항목내용
| 명령어 | DECO S D |
| 입력 | 워드 (0~7 등 정수값) |
| 출력 | 비트 주소 시작점부터 선택 ON |
| 스캔 지속 | 1 스캔 한정 (리셋 자동) |
| 활용 예시 | 모드 선택, 화면 제어 등 |