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

[PLC 프로그래밍] C(Counter) / MOV / FMOV / BMOV / $MOV / EMOV

by 나는영하 2022. 1. 15.

※ 주의사항 

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

감사합니다😁

 

안녕하세요!!

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

 

 

C(Counter)

MOV

FMOV

BMOV

$MOV

EMOV


오늘은 PLC 래더프로그램에서 COUNTER(C) 명령어와 MOV 관련 명령어들에 대하여 알아보겠습니다.

1. C(Counter)

 1) 명령어 : [C0  N`]

 - N` : 카운팅할 횟수 (십진수는 숫자 앞에 'K'를 붙혀야 합니다, ex. K10)

 - 미쓰비시 PLC는 "UP COUNTER" 한 종류만 기본 제공한다.

 - 카운팅 신호는 주로 펄스형태로 준다. (권장사항)

 - 계수값 < 설정값 → 카운터 출력접점 변화 없음
   계수값 > 설정값 → 카운터 출력접점 변화 발생

 

 2) 명령어 사용 예제

 - 카운터 횟수를 초기화하기 위해서는 RST 명령어 사용 필수!😀

 

 3) 카운터 명령어 응용 예제

  (1) 실행 조건

 - 10개의 물체가 감지되면 컨베이어벨트가 움직이고 BZ가 1초 주기로 울린다.

 - BZ가 10번 울리면 모든 카운터는 초기화 되고 컨베이어와 부저도 정지한다. 

응용예제 구동 사진

  (2) 입출력 소자별 단자명
 - 카운터계전기 리셋 → ‘X0’

 - 근접센서(카운터 입력) → ‘X5’

 - MC → ‘Y20’
 - PL → ‘Y21’
 - GL → ‘Y22’
 - BZ → ‘Y27’  
 - 카운터계전기(CNT) → ‘C1’
 - 플리커 계전기(전기시퀀스상 존재, PLC에는 특수릴레이로 대체) → ‘SM412’

 

  (3) 래더프로그램

 - 파란색 네모칸 설명 :
 20번행에 하강펄스(caF5, Ctrl + Alt + F5)를 넣어주면 입력신호의 하강펄스일때 카운터가 되기 때문에 정확히 10회 부저가 울린다.


2. 데이터 전송 관련 명령어

 2-1. MOV

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

(1) (P) : 상승 펄스 명령 처리 (생략가능) 
 ※ 데이터를 처리하는 응용명령어는 가급적 펄스형태로 처리하는것이 좋습니다.

(2) S` : 이동시킨 데이터 값
 ✔ 10진 상수 (K10)  16진 상수 (H1234)  데이터 레지스터(D1) 
 ※ 데이터 레지스터는 PLC에서 데이터를 저장하는 곳

(3) D` : 데이터를 보내는 곳 (저장소)
 ✔ 데이터 레지스터(D0)  외부 출력(K4Y10)  내부 메모리(K4M10) 

 

 2) 디바이스 버퍼 메모리

디바이스 버퍼 메모리는 데이터 레지스터(D) 또는 내부메모리(M), 외부출력(Y)에 어떠한 값이 저장되어있는지 확인 할 수 있는 기능(?) 입니다.

 - 실행경로 : Online → Monitor → Device / Buffer memory batch

D10 ~ D20에 어떠한 값이 들어있는지 알 수 있다.

 3) 명령어 활용

 타이머와 카운터의 설정값으로 활용이 가능하다.

 (1) 특수릴레이 ‘SM402’
 - PLC RUN(실행) 후에 1SCAN만 동작한다.

 - 주로 초기값을 설정할때 많이 사용하는 특수릴레이
 (2) 카
운터 관련 입력신호(X1, X2)는 펄스형태 처리하는 것이 좋다.

 

🙉 영하의 팁 🙉

일반 윈도우 계산기에서 좌측 상단의 메뉴를 누르고 '프로그래머' 모드로 설정을 하면

손쉽게 2진수, 8진수, 10진수, 16진수의 변환 값을 구할 수 있습니다!!

추후 16진수와 10진수 2진수 관련 내용이 자주 나옵니다!!

 

 2-2. FMOV

 1) 명령어 : [FMOV(P) S` D` N`]
 지정된 데이터(S`)를 지정된 데이터 시작번지(D`)부터 (N`)개 만큼 일괄 전송
  (1) 래더프로그램 

 - ex. [FMOV K7 D10 K10] 
 레지스터 10번부터 19번까지(K10 만큼) 10진수인 7로 모두 채운다.

  (2) 디바이스 버퍼 메모리

D10부터 D19까지 7이 들어있는걸 알 수 있다.

 2) 응용 예제

 - T0 ~ T2 3개의 타이머 값을 별도로 지정하지 않아도 FMOV 명령어를 통해 일괄적으로 1초로 설정하였다.

 - X1 A접점을 추가해서 타이머의 설정 값을 일괄적으로 0.5초로 변경하였다.

 

 2-3. BMOV

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

지정된 데이터 시작번지(S`)에서 지정된 데이터 시작번지(D`)까지 N개만큼 일괄 전송한다.

  (1) 래더프로그램

  - ex. [BMOV D10 D20 K4] 

 D10번에서 D13번까지(K4) 저장된 값을 D20번에서 D23번까지 1:1로 매칭하여 저장한다.

(D10 → D20, D11 → D21, D12 → D22, D13 → D23)

  (2) 디바이스 버퍼 메모리  

 

 2-4. $MOV / EMOV

 1) 명령어 : [$MOV “MELSEC” D0] / [EMOV E0.1234 D10]

 (1) 래더프로그램

 - 문자열은 '큰따옴표("")' 안에 입력하고, 부동소수점은 숫자 앞에 'E'를 붙혀준다.

 - 문자 1개당 1Byte(8bit) 소모, 부동소수점은 2Word(32bit, 4Byte) 소모한다.

※ 1Word는 총 2개의 문자를 저장할 수 있다.
※ D0, D1등 데이터 레지스터는 16bit로 각각 1Word의 용량을 가진다.

※ 즉, 2개의 문자 = 1개의 데이터 레지스터(D0) / 부동소수점 = 2개의 데이터 레지스터(D0, D1)

 (2) 디바이스 버퍼 메모리

데이터 레지스터 하나당 문자열 2개씩 들어간것을 확인할 수 있다.
2개의 데이터 레지스터에 부동소수점이 들어가 있는것을 확인할 수 있다.

 - 버퍼메모리에서 값을 확인하기 위해서는 문자열은 아스키(ASCII), 부동소수점은 Real Number(32-bit)로 확인하여야 한다.

 

 2-5. MOV 관련 응용예제

 1) 실행조건

 ※ 참고사항

(1) SM402를 통해 처음 PLC RUN 하면 초기설정값으로 램프 6개가 점등되게 설정

(2) SM412와 SM413으로 플리커 회로 구성한다.

(3) Y20부터 8비트(Y28) 까지 할당을 하고, 점등시키고자 하는 램프에다 1의 값을 입력한다.

 

 2) 래더프로그램

※ 구동 메커니즘

(1) 0번행, 2진수 0011 111은 10진수 63에 해당된다.

따라서 Y20번부터 Y25까지 6개의 램프에는 1의 값을 넣어주고 Y26, Y27은 0을 할당한다.

(2) 8번행, X0버튼과 X1버튼이 자기유지가 되도록 한다.

(3) 22번행과 35번행, 특수릴레이를 활용해서 1초 및 2초 간격으로 램프의 점등위치를 제어한다.

(4) 48번행, 모든 외부출력(Y20 ~ Y27)에 0을 할당함으로써 램프를 소등시킨다.

댓글