본문 바로가기
PLC 자동제어 학습

LS산전PLC에서 MOV명령과 BCD명령의 이해

by 인터넷떠돌이 2018. 1. 13.
반응형

안녕하세요?


이번 시간에는 많은 사람들이 헷갈려 하고 있는 MOV명령과 BCD라는 PLC의 ladder diagram에서 나오는 명령어에 대해서 포스팅을 하고자 합니다.



먼저 MOV명령에 대해서 설명에 들어 가고자 합니다. 뭐라고 해야 할까요? PLC도 어떻게 보면 초소형 컴퓨터와 비슷하다고 할 수 있는데, 여기에도 CPU가 들어가 있습니다. 당연히 data(데이터)를 넣기 위해서는 2진수로 변환이 되어야 하며, 이를 PLC의 메모리에 넣는데, 문제는 어디에 들어가는 것이냐 하는 것입니다.



그래서 이 데이터의 단위가 주로 '워드'라고 하는 단위로 저장이 된다고 보시면 됩니다. 그래서 이 단위를 워드라고 해서 16개의 비트로 이루어져 있습니다.



그리고 이 1개의 워드 안에서는 뭐라고 해야 할까요? 16개의 비트라고 해서, 얘네도 각각의 주소가 있는데, 비유하자면 워드는 아파트의 '호수'라고 부를 수 있고, 각각의 '비트'는 한개의 아파트 호에 있는 '방의 번호'라고 보시면 될듯 합니다. 예를 들면 P10이라는 워드의 P10F라는 비트아파트 108호에 있는 16번 방 이라는 식으로 부를 수 있다고 보시면 될 듯 합니다.



그래서 위 그림과 같이 83이라는 10진수의 숫자가 2진수로 변형이 된 다음에, P0라는 워드에 들어가서 각각의 비트를 1로 만든다-전구로 치면 ON을 시키는 것을 볼 수 있습니다.



지금까지는 LS산전 PLC에 대해서 알아본 것인데, 미쯔비시 PLC에서도 사용이 가능한지 알아보니, 다를 것 없이 이 부분에서는 공통적으로 사용할 수 있다는 것을 알 수 있었습니다. 지금으로서는 크게 와 닿지는 않지만, 나중에 대량의 출력점을 제어해야 하는 상황에서는 상당히 필요성이 있다는 생각이 듭니다.





이제부터는 BCD 명령어에 대해서 이야기를 하도록 해 보겠습니다. BCD명령은 복잡한 설명이 있지만, 제 경우에는 피부에 와 닿는 표현이라고 하면, 10진수의 수가 원래는 위 그림에 있는 것처럼 실제로는 2진수로 변환되어 저장이 되어 있습니다. 그걸 각각의 자리수를 끊어 준다고 보시면 됩니다.



그래서 워드에는 어떻게 저장이 되느냐 하면, 위 그림의 묘사와 같은 방식으로 저장이 됩니다. 즉, 이전에는 1234를 글로 쓰면, 일천 이백 삼십 사 라고 해서 1000+200+30+4의 구성이 되었다면, BCD명령어가 실행이 되고 나면, 1 / 2 / 3 / 4 로 한자리씩 떨어지게 됩니다.



그런데 PLC의 래더상에서 보면, 위 그림과 같이 1234를 BCD 명령을 받은 다음에, Y60이라는 디바이스 공간에 4660이라는 숫자로 저장이 되는 것을 볼 수 있습니다. 많은 사람들이 헷갈려 했는데, 왜 이런 결과가 나왔는 가 하면, 바로 아래와 같은 연산이 있었기 때문입니다.



즉 Y60이라는 워드-때로는 디바이스라고도 불이는 이 할당된 공간에다가 1234의 값이 한자리씩 끊겨서 2진수 형태로 저장이 되면, 래더 상에서는 이 값들의 합계를 보여주어야 하는 것입니다. 그래서 위 그림의 묘사에 나오는 연산처럼 모든 한계가 10진수로 표현하면 4660이 되는 것입니다.



물론 여기서 4660이라는 것은 겉으로 보이는 것이고, 실제 본질은 BCD명령을 받아서 변환이 된 데이터라고 보시면 됩니다. 이제 이러한 상태에서 SEG라고 세크먼트 디코더 명령어를 받게 되면, FND에서 숫자로 표현할 수 있는 형태로 바뀔 준비가 끝난 것입니다.


지금은 아무것도 아닌것 같다는 느낌이 들지만, 아마 조만간에 나오는 실습에서 이게 얼마나 큰 역할을 하게 될지 모르겠습니다만, 실제로는 상당히 중요할 것이라는 생각이 듭니다.

반응형