본문 바로가기
PLC 자동제어 학습/CiMon Scada 수업

통신관련 수업의 CiMon에서 실습한 내용 part2

by 인터넷떠돌이 2017. 11. 29.
반응형

안녕하세요?


어제 포스팅에서 급한대로 실습한 내용만 포스팅을 하고, 배웠는 이론에 대해서 포스팅을 하지 않아서 반쪽짜리 포스팅이 되었는데, 이번 포스팅에서는 이 이론에 대한 내용을 포스팅 하고자 합니다.


먼저 통신에 관해서 인데, 크게 병렬과 직렬 2가지가 있습니다. 여기서 제가 배우고자 했는 것은 직렬 통신이며, 여기에는 USB와 Ethernet(이더넷)이라는 것이 있는데, 대용량에 많은 데이터가 오고가기에는 이더넷이 더 알맞지만, 아직도 현장에서는 시리얼 통신이 많이 쓰인다고 합니다.




이 시리얼 통신이라는 것이 무슨 인터넷이나 이런 것과는 관련이 얼마나 있는지는 모르겠습니다만, 간단하게 말해서 PC와 자동제어를 위한 제어장치와의 통신이라고 해서, 서로 신호를 주고 받는 것을 말하는 것입니다. 이런 방식의 시리얼 통신에는 세부적으로 3가지 종류가 있다고 합니다.



일단 위 그림에서 나와 있는 것처럼, 422방식의 시리얼 통신은 이제는 쓰이지 않는다고 합니다. 그래서 위 그림에서 보면 일반적으로 많이 쓰이는 것은 232라는 방식과 485라는 방식인데, 232는 가까운 거리라고 해서 주로 PLC와 터치스크린을 이어주는 방식으로 쓰이며, 485는 동시에 송수신이 필요없는 온도와 같은 센서와 PLC의 연결에 쓰인다고 합니다. 



일단 먼저 시리얼 통신에는 컨트롤 하기 위해서 명령을 내리는 것을 Master(마스터)라고 하고, 오로지 1개만 존재할 수 있지만, 여러개의 Slave(슬레이브)를 둘 수 있다고 합니다. 그런데 많은 사람들이 헷갈릴 수도 있는게, 이게 Ethernet통신 방식에서는 정 반대가 되기 때문입니다.


시리얼 통신에서는 Master라는 말 대신에 Client(클라이언트)라고 하며, 마치 온라인 게임을 하듯이 여러개의 PC가 한대의 Slave-여기서는 Server(서버)라는 말로 부르고 있는데, 서버는 단 1개만 존재를 하는 것이 이더넷 통신이라고 합니다. 



이제 Frame(프레임)이라고 해서, 통신 프레임에 대해서 설명을 하고자 합니다. 일단 프레임은 이 전체를 말하는 것이며, 일반적으로 컨트롤러에 가는 신호라고 해야 할까요? 통신에 들어가는 내용은 위 그림에 묘사된 것처럼 구성이 되어 있습니다. 우선 시작 신호에 대해서는 지난번 포스팅에서 이야기 했듯이 통신이 시작한다는 신호이며, 실습을 해본 결과 주로 1개의 아스키 코드로 이루어져 있었습니다.




그리고 주소라는 것은 간단하게 시리얼 통신에는 신호를 받는 슬레이브가 여러개 있기 때문에 정확히 어떤 슬레이브가 받는지에 대해서 알려져 있어야 합니다. 그리고 데이터는 말 그대로 일종의 슬레이브인 컨트롤러에 내리는 명령이 되려나요? 그리고 마지막 테일에 해당하는 검사는 이 통신이 제대로 전달이 되었는지 아닌지에 대한 신호입니다. 그런데, 과거에는 회선이 빈약해서 오류가 많이 나서 필요했지만, 지금은 그렇게 많이 사용은 하지 않는다고 합니다.



다음으로는 통신에 있어서 한가지 특이한 것이라면, 컴퓨터는 당연하게 숫자나 이런것을 인식할 수 없기에, 하는 수 없이 Hex code라는 16진수로 변환을 해야 합니다. 그런데 통신에서는 이런 숫자가 가는 것이 아니라, 아스키(AscII) 코드라고 하는 일종의 문자로 전달이 된다고 합니다. 그러고 당연히 문자는 어떻게 연산을 할 수 없기 때문에, 신호를 받은 컨트롤러는 아스키 코드를 Hex code(헥사 코드)로 변환을 해서 연산을 합니다.


당연하다면 당연히 컨트롤러에서 PC로 명령은 당연 아니고-시리얼 통신에서 슬레이브는 마스터인 PC에 명령을 내릴 수는 없습니다. 대신 신호라고 해서 센서등이 감지한 신호를 줄 수 있는데, 이럴 때는 반대로 신호를 Hex Code로 바꾼 다음에, 아스키 코드로 마스터인 PC에 전달을 하는 것입니다.



마지막으로 Swap(스왑)이라는 것이 있습니다. 이건 통신에서 차례차례 보내면 좋겠지만, 특이하게도 통신에서는 제일 뒷차리를 처음으로 보내고, 제일 첫 머리를 가장 마지막으로 보내는 특성이 있다고 합니다. 그래서 1개의 문자는 8비트=1바이트 단위로 보내는데, 보낼 때는 1이라고 쳤지만, 받는 컨트롤러에서는 이런 스왑이 일어나서 256이라는 이상한 값으로 나오게 되는 것입니다. 




그래서 이런 상황을 방지하기 위해서 통신 프로그램에서는 스왑이라는 것을 일으켜서 이렇게 선후가 바뀐 데이터의 순서를 도로 바꾸어 준다고 합니다. 단, 예전에 포스팅에서 다룬 적이 있었는 Modbus에서는 단어 전체를 1word라는 단위로 만들어서 보내는 특성이 있기 때문에 Swap이 일어나지 않아도 된다고 합니다. 


이상이 화요일에 있었던 수업의 내용이라고 볼 수 있었습니다. 일단 이론에 대해서 무언가 장황한 설명이 있었는데, 이걸 다 소화하기는 힘들기는 힘든게, 우선 여기 몇시간에 걸쳐서 나온 내용이 원래는 대학 학부에서 한 한기 이상은 들어야 이해를 할 수 있는 내용이라고 듣기는 했습니다. 다행이라고 해야 할까요? 이론보다는 실무위주로 배우는 곳이다 보니, 이론은 여기까지만 하고 넘어가기는 했습니다.

반응형