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

[PLC 프로그래밍] 로테이션 명령어 / 쉬프트 명령어 / 산술 명령어 / 비교 명령어

by 나는영하 2022. 1. 16.

※ 주의사항 

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

감사합니다😁

 

안녕하세요!!

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

 

ROL / ROR

SFL / SFR

BSFL / BSFR

산술명령어

INC / DEC

비교명령어


1. 비트이동 관련 명령어

 1-1. 로테이션 명령어(ROL / ROR)

 1) 명령어 : [ROL(P) D` N`] / [ROR(P) D` N`]

 지정된 데이터 D`에서 N`Bit 수 만큼 좌측 또는 우측으로 회전하면서 이동한다.

ROL
ROR

 2) 래더프로그램

 3) 응용예제

  (1) 실행조건

  - PLC RUN 하면 모든 램프는 소등이 된다.

  - X0을 누르면 Y20 → Y27 순서로 1초 주기로 1개씩만 점등되며 계속 반복된다.

  - X1을 누르면 Y27 → Y20 순서로 1초 주기로 1개씩만 점등되고 이를 반복한다.

  - X2를 누르면 모든 램프는 소등된다.

  (2) 래더프로그램

 

 1-2. 쉬프트 명령어(SFL / SFR)

 1) 명령어 : [SFL(P) D` N`] / [SFR(P) D` N`]

 지정된 데이터(D`)에서 N` Bit 수 만큼 좌측 또는 우측으로 쉬프트 한다.

 2) 래더프로그램

 ※ 로테이션 명령어와 쉬프트 명령어의 차이점!!

 - 로테이션(ROL / ROR) : 원점으로 복귀 가능

 - 쉬프트(SFL / SFR) : 원점으로 복귀 불가(비트 사라짐)

 

 1-3. 1비트 쉬프트 명령어(BSFL / BSFR)

 1) 명령어 : [BSFL(P) D` N`] / [BSFR(P) D` N`]

 D`의 디바이스 선두번지부터 좌측 또는 우측으로 1비트씩 N`만큼 이동한다.

 2) 래더프로그램

(1) [MOV K1 K1M0] : M0에 1의 값 전송

(2) [BSFL M0 K7] : 한번 누를때마다 1비트씩 왼쪽으로 이동

(1번 클릭 → M1 = 1, 2번 클릭 → M2 = 1, 3번 클릭 → M3 = 1 // 최대 M6까지)

(3) 쉬프트 명령어라 입력단에 B접점(M6, M0)을 넣어서 비트가 사라지지 않도록 함.

 


 

2. 산술 명령어

PLC 프로그램에서 값을 사칙연산을 하고자 할때 사용.

※ 주의사항

사칙연산시 덧셈 또는 뺄셈 연산에는 반드시! 펄스 형태 명령어를 사용할 것!!

WHY? 일반 접점을 사용하면 ON되어 있는 동안 지속적으로 연산이 수행 됨

 

1) 사칙연산(+, -, *, /)

 (1) 연산범위 : 

 - 16Bit → -32768 ~ 32767

 - 32Bit → -2147483 ~ 2147484

 (2) 미쓰비시 PLC의 경우 나머지 연산시 몫과 나머지의 값을 따로 저장해준다.

D3은 300/17의 몫, D4는 300/17의 나머지 값에 해당된다

 (3) 음수의 경우는 2의보수를 통해 표현이 된다.

 

2) 부동소수점

부동 소수점 연산시에는 각각의 산술 명령어에 'E'를 붙여주고, 소수점에도 'E'를 붙인다

부동소수점 래더프로그램(좌) 및 디바이스 버퍼 메모리(우)

3) 산술명령어를 활용한 카운터

A = A+1, B = B+1이라는 컴퓨터 언어적인 공식을 근거하여 UP & DOWN COUNTER를 만들 수 있다.

(일반적인 카운터(C)로는 다운 카운터를 만들 수 없다.)

 (1) X0을 누를때마다 D0의 값에 1을 더해서 D0에 저장한다.

 (2) X1을 누를때마다 D0의 값에 1을 빼서 D0에 저장한다.

 

4) INC / DEC 명령어

INC와 DEC 명령어를 사용하면 각각 +1증가 및 -1씩 감소시킬 수 있다.(UP & DOWN COUNTER 명령어)

 (1) [+ D0 K1 D0] == [INC D0]  

 (2) [- D0 K1 D0] == [DEC D0]

 


 

3. 비교 명령어

 1) 명령어 : ["비교연산자" "값1" "값2"]

 (1) 좌측 입력부에 "F8"Coil을 눌러서 접점형태로 사용한다. (예외적)

 (2) 비교연산자 종류 : >, <, >=, <=, ==, <>(같지않음)

 (3) 비교명령어는 직렬로 연결해서 AND형태나 병렬로 연결해서 OR형태로 사용 가능하다.

 

 2) 응용 예제

 (1) 실행조건

 (2) 래더프로그램

 

댓글