PLC 통신기초 1

PLC / / 2021. 7. 8. 16:15

컴퓨터에서의 통신이라는 것을 잘 이해하지 못하는 분들이 많으신 것 같아 몇자 적어 봅니다.
제가 여기서 말하는 것은 프로그래머의 입장에서
논리적인 차원에서 통신이라는 것을 바라볼 때의 얘기입니다.

 

우리가 가장 분명하게 이해하고 있는 통신 형태는 전화입니다.
오늘을 살아가는 사람치고, 전화 한다는 것을 이상하게 생각하는 사람은 아무도 없을 겁니다.
실제로 컴퓨터간의 통신도 전화와 전혀 다를 것이 없습니다.
단지 전화는 양쪽에 사람이 있고, 말을 주고 받는 다는 것이고, 
컴퓨터간의 통신은 양쪽에 컴퓨터가 있고, 말이 아닌 숫자들을 주고 받는 다는 것입니다.

 

컴퓨터 통신에 있어 양쪽 컴퓨터가 주고 받는 최소 형태는 바이트입니다.
한 바이트는 0에서 255사이의 숫자를 표현할 수 있습니다.
정리하면 컴퓨터 통신은 한 쪽 컴퓨터가 45 56 72 라고 전달하면
반대편 컴퓨터가 34 44 67 이라고 응답하는 식이라는 것입니다.
이를 다시 전화로 비유한다면 전화기를 들고 있는 양쪽 사람이
난수표 같은 숫자로 서로 얘기하고 있다고 생각하시면 됩니다.
(이건 간첩들이 주로 하는 수법인데 그렇다면 통신은 간첩?)

 

PLC도 컴퓨터입니다.
PLC에 PC를 연결해서 통신을 한다는 것도 서로 간에 바이트들을 주고 받는 과정입니다.
멜섹에서는 이 바이트들을 어떻게 주고 받을 것인가에
누가 그것을 처리할 것인가에 따라 세 가지 형태의 통신을 얘기하고 있습니다.

 

1. 무수순
'무'라는 말이 포함하는 의미처럼 아무 것도 정해진 것이 없는 경우를 말합니다.
PC가 어떤 바이트들을 전달할지 그것들에 대해 PLC가 어떤 바이트들로 반응을 할지 정해져 있지 않습니다. 반대도 마찬가지 입니다. 아무것도 정해진 것이 없습니다.

 

이는 다른 말로 모든 것을 통신을 하고자 하는 양쪽이 정해야 한다는 것입니다.
가령은 PC가 32를 전달할 때
PLC는 현재의 리프트 상태에 따라 상승이면 1을 하강이면 2을 전달하는 것으로 정할 수 있습니다.
이런 규칙들을 일반적으로 프로토콜 혹은 전송규약이라고 표현합니다.

 

이렇게 되면 PLC측에서도 32가 전달되었다는 것을 판단하는 프로그램
그것에 대해 1혹은 2로 대답하는 프로그램을 래더로 작성해 주어야 합니다. 
많은 PLC 프로그래머들은 PC하고 연결될 때
자신이 무슨 프로그램을 해야 한다는 것에 익숙하지 않습니다.
하지만 무수순으로 하겠다고 했다면 프로그램을 하셔야 합니다.

 

반대로 많은 경우 PLC에 바코드 리더같은 장치가 물리는 경우도
무수순 방식 즉, 통신의 양쪽 주체가 무엇을 어떻게 주고 받을 지 정한 것입니다.
하지만 PC가 연결된 경우에서와는 달리 
PLC 프로그래머가 그것을 위한 프로그램을 해야 한다는 것을 당연하게 받아 드립니다.
PLC 프로그래머는 해당 장치를 사용해야만 하는 입장에 있기 때문에
바코드 리더기를 만든 업체에서 일방적으로 정한 규칙이기는 하지만 그것에 맞춰주는 
프로그램을 할 수 밖에 없는 것이죠

 

얼마전에 전자저울과 통신을 해야 하는데 어떻게 해야하는지를 묻는 질문을 본 것 같습니다.
하지만 그 답이라는 것은 전자저울 업체의 관련 프로토콜을 구하셔서 그것이 필요하다는 데로
바이트들을 전달하고, 그것이 준다는 바이트들을 받으면 되는 겁니다.
전자저울이 사용하는 프로토콜은 그 업체에서 다음대로 정한 것이니까 답해 줄 수 있는 것이 아니고,
바이트들을 어떻게 하면 주고 받을 수 있는지는
이미 통신모듈 사용 설명서에 잘 나와 있으니 구구한 설명이 필요없는 것이고, 
제가 보기에 이런 류의 질문에 제대로 된 답이 올라온다는 것이 오히려 이상한 것입니다.

 

2. 쌍방향
기본적으로 무엇을 어떻게 주고 받을지가 정해져 있지 않다는 것에서는 무수순과 동일합니다.

 

"너 밥 먹었니?"라는 질문에 대해 "예/아니오"라고 대답하는 전화를 비유해서 말씀드리겠습니다.
우선 무수순인 경우 "너 밥 먹었니?"라고 질문을 한 사람은 반대편 사람이 "예" 혹은 "아니오"라고 
대답할 때까지 무한정 기다리거나 성질이 좀 겁한 사람 같으면 전화를 끊어버릴 겁니다.
이 때 질문한 사람은 자기가 한 말을 상대방이 들었는지 아닌지를 알 수가 없습니다.
혹시 잡음이 생겨 질문이 제대로 전달되지 않은 경우에도 질문한 그 사람은 그 사실을 알 수가 없습니다.

반면에 쌍방향은 "너 밥 먹었니?"라고 말하면
반대편 사람이 "예/아니오"라고 대답하는 것과는 상관없이 전화기가 알아서 "삐"하는 소리를 보냅니다.
즉, "너 밥 먹었니?"하는 말이 이 쪽 사람에게 전달되었다는 것을 반대편 사람에게 알려주는 것입니다.
대답을 해야 하는 사람이 자기가 밥을 먹었는지 안 먹었는지 헷갈려서 뜸을 들이는 것과는 상관없이 
질문을 한 사람은 그 질문이 반대편 사람에게 전달되었다는 것을 알 수 있는 것입니다.

 

3. MC프로토콜
MC는 멜섹 커뮤니케이션의 약자입니다. 즉, 멜섹이 정한 통신을 위한 프로토콜입니다.
앞서 무수순이라는 말에서 정해진 것이 없다는 것은
정확하게 다시 말하면 MC프로토콜을 사용하지 않는다는 것입니다.


이 MC프토토콜은 PLC 프로그래머가 굳이 래더 프로그램을 하지 않더라도
통신모듈이 자신이 알아서 처리할 수 있는 프로토콜입니다.
그러니까 MC프로토콜을 사용하는 경우에 PLC는 아무런 래더 프로그램도 할 필요가 없습니다.
대신 MC프로토콜을 사용하는 PLC에 연결되는 PC 프로그램은 이 MC프로토콜 대로 바이트들을 전달하고,
응답을 해석할 수 있어야 하는 것입니다.

 

MC프로토콜은 PLC의 디바이스를 읽거나 쓸 수 있는 용도를 위한 것입니다.
무수순에서 예로 든 
PC가 32를 전달하면 PLC가 1혹은 2로 대답하는 경우를 MC프로토콜로 한다면
PLC는 상승인 경우 M1000을 1로 하강인 경우 M1001을 1로 설정하고
PC는 MC프로토콜로 이 M1000과 M1001의 값을 읽으므로서 동일한 효과를 얻게 되는 것입니다.
이 경우 PLC는 아무런 프로그램도 해 줄 필요가 없습니다.
자신이 늘상 하는 방법대로 그냥 디바이스에 자신의 상태를 기록해 두기만 하면 
PC가 MC프로토콜로 통신모듈에게 M1000의 값을 전달해 주도록 할 수 있고, 
통신모듈 선에서 M1000값이 PC로 전달되기 때문에 PLC 프로그래머는 통신을 하고 있다는 것 
자체를 신경 쓸 필요가 없는 것입니다.
많은 경우 PLC 프로그래머는 이런 형태를 선호합니다.

덧말>

문제는 선호 정도가 아니라 초보 PLC 프로그래머에 있어 MC프로토콜 형태가 아니면 통신 자체가 불가능하다는 것입니다.

'PLC' 카테고리의 다른 글

PLC MOV명령어  (5) 2021.05.18
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기