오늘은 PLC 명령어 중에서 MOV 명령어에 대해서 배워보겠습니다.
MOV 명령어는 BMOV, DMOV 등등 여러가지 명령어가 있는데 그 중에서 가장 기본적인 MOV명령어부터
알아보겠습니다.
MOV는 MOVE를 의미한다고 생각하면 되는데 기본적으로 영어의 뜻을 해석하면 옮기다, 이동하다의 의미이지만
PLC에서는 약간 다르게 생각해야 합니다.
PLC에서는 복사하다. 복제하다.의 의미로 생각을 하셔야 합니다.
작성방법은 [MOV S1 S2]로 작성을 하며, 해석하자면 S1의 16bit(1word) 값을 S2에 복사한다. 입니다.
S1에는 상수부터 D address까지 입력이 가능하며, S2에는 D address를 입력 가능합니다.
또한 16bit(1word) 값이므로 0 ~ 65,535 or -32,768 ~ 32,767까지 표현이 가능합니다.
(메모리 체계와 데이터 사이즈에 대한 내용은 아래 포스팅을 참조하시기 바랍니다.)
이제 한번 직접 사용해 보겠습니다.
먼저 GX-WORKS2를 실행하여 아래와 같이 작성합니다.
주의할 점은 타이머나, 카운터와는 달리 출력코일 F7이 아니라 응용명령 F8을 눌러 [ ]을 이용해야 한다는 것입니다.
위의 프로그램 응용명령 [MOV K-30000 D0]을 해석하면
입력접점M0가 ON되면 -30000이 D0로 복사된다. 입니다.
이제 F4를 눌러 컴파일 한 뒤, 시뮬레이터를 실행시켜 보겠습니다.
그리고 M0를 ON시켜보면 아래와 같이 D0에 -30000이 들어간 것을 확인 할 수 있습니다.
D0에 입력된 -30000이라는 값은 PLC 전원이 OFF되거나 아니면 리셋을 한다던가 D0에 강제로 다른 값을 입력하기 전에는 입력접점 M0가 OFF된다고 한들 지워지지 않습니다.
자 그럼 16bit(1word)보다 더 큰 수를 복사하고 싶으면 어떻게 해야할까요?
DMOV 명령어를 사용하면 됩니다.
MOV는 16bit(1word)이고 DMOV는 32bit(double word) 입니다.
작성법은 동일하게 [DMOV S1 S2] 입니다.
그리고 DMOV는 Double word인데 S1이나 S2에서 표현하는건 word address인 D address 하나뿐이죠?
어떻게 Double word address를 인식시킬까요? 그것은 자동으로 한답니다.
그래서 D와 D+1 address를 자동으로 인식하는것을 기억해야 합니다.
예를들어 [DMOV D10 D20] 으로 작성했다면, D11&D10 => D21&D20 으로 가게 됩니다.
그리고 32bit(Double word)의 값은 뒤쪽address부터 씌여진다는 것을 기억해야 합니다.
이게 무슨 말이냐면 D0의 가장 높은 address가 D0.F인데 이 자리수가 2^15이고 D1의 가장 낮은 address가 D1.0인데 여기가 2^16이라는 의미입니다.
곰곰히 생각해보면 이해가 되실거에요.
그리고 MOV명령어에는 상승펄스에 작동하는 명령어도 있습니다.
이건 MOVP, DMOVP라고 작성하시면 됩니다.
명령어 Manual에 아래와 같이 친절하게 설명이 되어있네요.
S : Source
D : Destination
이라고 생각하시면 됩니다.
다음 포스팅에서는 BMOV등 더 많은 종류의 MOV명령어를 알아보겠습니다.
감사합니다.
'PLC > MITSUBISHI (MELSEC Q)' 카테고리의 다른 글
GX-WORKS2 명령어 BMOV (0) | 2021.03.08 |
---|---|
GX-WORKS2 명령어 FMOV (0) | 2021.03.08 |
GX-WORKS2 카운터 (0) | 2021.03.07 |
GX-WORKS2 타이머 (0) | 2021.03.07 |
GX-WORKS2 명령어 SET, RST (0) | 2021.03.07 |
댓글