본문 바로가기
대한상공회의소 스마트팩토리 교육/PLC 프로그래밍

[PLC 프로그래밍] BIN / BCD 명령어

by 나는영하 2022. 1. 16.

※ 주의사항 

 

본 블로그는 수업 내용을 바탕으로 제가 이해한 부분을 정리한 블로그입니다.
본 내용을 참고로만 보시고, 틀린 부분이 있다면 지적 부탁드립니다!

감사합니다😁

 

안녕하세요!!

오늘은 아래와 같은 내용을 확인해보겠습니다.

 

BIN 명령어

BCD 명령어


1. BIN

 1) 명령어 : [BIN S` D`]

 - 디바이스 S`의 BCD 데이터(0 ~ 9999)를 BIN으로 변환하여 지정된 디바이스 D`에 저장한다.

즉, 2진화 10진수의 값을 2진수로 바꾸어준다.

※ BCD(Binary - Coded Decimal) 란?

- 2진화 10진수

- 0~9까지의 10진수 1자리를 4비트 2진수로 표현한 것!

- 10진수를 나타낼 경우 8-4-2-1 이라는 자리값 부여한 후 4비트의 2진수로 표현하고 자리값의 합이 10진의 1자리를 나타낸다.

 2) 사전 준비

디지털 스위치 결선도
디지털 스위치(로터리 썸 휠 스위치) 결선전(좌) 결선후(우)

 - BCD값을 입력하기 위한 스위치, PLC 디지털 입력카드와 1:1로 결선 완료!

 3) 래더프로그램 예시 및 버퍼메모리

- 디지털 스위치로 입력한 값(7,777)이 X0을 누른순간 D0 데이터 레지스터로 저장이 되었다.

래더프로그램
버퍼 메모리

 - [BIN K4X10 D0] : K4X10은 BCD값이 들어오는곳을 지칭한다.

 - K4 : 4Nible(16bit)

 - D0 : BIN(Binary) 값을 저장하는곳 

4) 응용 예제

- 디지털 S/W가 9 ↔ 0 변경될때 9를 초과하는 경우 오버플로우가 발생한다. (PLC에서 ERROR 발생)

ERROR을 해결하기 위한 래더 프로그램

 (1) 상기의 오류 문제를 해결하기 위해 비교연산을 직렬로 연결해서 AND연산을 통해 해결한다.

 (각 자리수가 9를 초과하지 않도록)

 (2) 별도로 입력스위치를 누르지 않아도 디지털스위치를 변경하면 자동적으로 해당값이 데이터 레지스터(D0)에 저장된다.


2. BCD

 1) 명령어 : [BCD(P) S` D`]

- 디바이스의 S`의 BIN 데이터를 BCD로 변환하여 지정된 디바이스 D`에 저장한다.

즉, 2진수를 2진화 10진수(BCD)로 바꿔준다.

 2) 사전 준비

FND 모듈(SEVEN Segament) 결선도
FND(SEVEN Segament) 모듈 결선전(좌) 결선후(우)

 3) 래더프로그램 예시 및 버퍼메모리

BCD 래더프로그램
버퍼 메모리

- 버퍼 메모리에는 10진수 값이 표시된다.

 4) 응용예제

 (1) BCD 명령어와 MOV 명령어 비교 

- 같은 2345(10진수)를 BCD 명령어와 MOV명령어를 통해 FND 모듈로 출력 실행.

- BCD 명령어 : Binary(2진수)를 BCD로 변경 / MOV 명령어 : 단순히 10진수 전달

 - 10진수 2345는 2진수 1001 0010 1001 이다.

 - MOV 명령어를 통해 FND 모듈로 출력을 하면 이값을 그대로 2진화 10진수로 표현이 된다.

 - 따라서 0000 (0) / 1001 (9) / 0010 (2) / 1001 (9) 로 인식되어 0929가 SEVEN Segament로 출력된다.

 

 (2) 음수값 표현

 - 음수값을 BCD 명령어를 활용하여 FND 모듈에 전송하면 에러가 발생되어 CPU가 STOP 된다.

이럴경우 음수값을 부호 변환하여 양수값을 BCD 명령어로 전송한다. → 'NEG' 명령어 사용

NEG 명령어를 통해 음수를 양수로 변환한다.

(3) 2자리수 사칙연산
 - 디지털 스위치에서 2자리 수를 받아 뺄셈하여 FND에 표시하는 프로그램으로 변경하시오.

 값1 : 1000의 자리와 100의자리 / 값2 : 10의자리와 1의자리

입력단에 한자리씩 비교연산을 and로 배치한다.

 - 0번, 11번 스텝 : 2자리라고 해서 비교연산을 한번에 2자리를 하면 안된다.
ex. [> K100 K2X18] -- [BIN K2X18 D0]  (X)

     [> K10 K2X1C]-- [> K10 K2X18] -- [BIN K2X18 D0] (O)

댓글