Ethernet 통신 하기[1]
죄송해서 출처를 계속 찾아보니 melsec PLC 동호회(http://cafe.daum.net/melsec)의 회색늑대 (grizlupo)님의 초보 통신 이야기 연재글 이었군요. 감사드립니다.
초보 통신 이야기 연재글은 Ethernet 뿐만 아니라 시리얼 통신등의 주제도 다루고 있습니다.
회색늑대 (grizlupo)님의 초보 통신 이야기중 Ethernet 통신에 관련하여 전반적으로 이해 할 수 있는 좋은 글입니다. 총 3회 분량의 글 입니다.
1. 네트워크
RS-422/485를 이용하는 1:N이나 N:N 통신은 기본적인 형태의 네트워크입니다. 모든 것을 직접 식별하고, 통제하고 해야 하는 불편한 형태이지만 아무튼 이렇게 여러대의 장비를 하나의 범주로 묶어서 서로 간에 통신이 가능하도록 해주는 것이 네트워크입니다.
MELSECNET, Ethernet, CC-Link 처럼 우리에게 익숙한 통신들이 모두 기본으로 네트워크를 형성합니다.
MELSECNET이나 CC-Link 등은 국번으로 서로를 구별하고, 네트워크에 연결된 장치중의 하나가 서로 간의 통신을 통제하는 즉, 마스터가 되는 형태입니다. 이렇게 마스터가 있는 것이 가장 일반적입니다. 하지만 Ethernet은 좀 다릅니다. 마스터가 없습니다.
네트워크에 연결된 모든 장치는 동일한 입장입니다. 누군가 누구를 통제하지 않습니다. Ethernet은 마스터라는 존재가 없더라도 통신이 가능하도록 하기 위한 목적에서 의도적으로 그렇게 한 것입니다.
애초에 군사용으로 계획되었던 Ethernet은 최악의 상황 즉, 네트워크의 대부분이 파괴되더라도 두 장비간의 선로만 이상이 없다면 마스터같은 특별한 장비의 도움 없이도 서로 통신이 가능하도록 하는 것이 최우선의 목적이였다고 합니다. 그래서 마스터라는 존재가 없더라도 통신이 가능할 수 있도록 고안하여 Ethernet이 탄생한 것입니다.
따라서 Ethernet에서는 여러 대의 장비에서 동시에 송신하는 일이 발생할 수도 있습니다. Ethernet은 이러한 문제를 마스터 같은 통제 장치를 두어 없애는 방법보다는 그렇게 될 확률을 줄이는 방법을 선택했습니다. 약간의 송신 트러블 보다는 마스터라는 존재를 없애는 것이 더 중요했기 때문입니다.
덕분에 지금은 전 세계가 Ethernet을 주요 기반으로 하는 인터넷으로 거대한 네트워크를 구축하게 되었고, FA에서도 PC를 포함하는 상위의 네트워크는 대부분 Ethernet으로 구축되고 있습니다. 그런 의미에서 이 Ethernet을 PLC에서 다루는 방법을 아는 것이 요즘 많이 요구되고 있습니다.
2. TCP/IP
우리가 사용해야 할 것은 분명 이더넷 모듈입니다. 하지만 실제로 이 이더넷 모듈을 다루는 과정에서 우리가 다루는 것이 이더넷 모듈이라는 것 이외에 Ethernet에 대해 우리가 알아야 하는 것은 신기하게도 하나도 없습니다.
특히 프로그램을 하는 입장에서는 더더욱 그렇습니다. 프로그램에 있어 이더넷 모듈은 Ethernet이기 보다는 TCP/IP입니다.
이더넷 모듈에 대한 프로그램을 배운다는 것은 TCP/IP를 배우는 것에 다름 아닙니다.
네트워크에 대한 이야기를 할 때는 언제나 등장하는 말 중에 OSI 7계층이라는 것이 있습니다. 통신을 그 역할에 따라 7 단계로 나누어 놓은 것입니다. 물리계층, 데이터링크계층, 네트워크계층, 전송계층, 세션계층, 표현계층, 응용계층이 그것입니다.
이러한 계층들은 편지가 전달되는 과정 같은 것입니다. 우리는 편지를 써서 우체통에 넣기만 하면 받는 사람에게 전달이 됩니다.
하지만 하나의 편지가 받는 사람에게까지 전달되는 과정은 정말이지 파란만장합니다. 이더넷 모듈을 사용하는 프로그램에 있어서도 우리가 전달하는 문자열이 반대편 장비에 도착하는 과정은 편지 하나가 전달되는 것만큼이나 파란만장합니다.
그렇지만 우리는 편지를 우체통에 넣기만 하면 되는 것처럼 문자열의 전송도 하나의 명령만을 수행하면 됩니다. 시리얼 모듈을 다룰 때처럼 결국에 우리가 배우는 것은 한 두개의 명령 뿐입니다.
하지만 조금만 더 들여다 보면 편지봉투, 우편번호, 주소, 우표, 기타 등등 편지는 좀 더 복잡해 집니다. TCP/IP를 사용하는 데 있어서도 편지봉투나 주소 같은 것이 필요합니다. TCP는 UDP와 함께 편지봉투 같은 것이고, IP는 주소 같은 것입니다.
3. IP
모든 컴퓨터들이 인터넷에 연결되어 있는 요즘, 이 IP라는 말은 프로그램을 하지 않는 사람이라 하더라도 컴퓨터를 다루는 과정에서 여러 곳에서 자주 접하게 되는 흔한 말이 되었습니다. 그리고 대략 컴퓨터의 주소 같은 것이라고 인식하고 있습니다. 지금 제가 해 드릴 수 있는 말도 컴퓨터의 주소라는 것 뿐입니다.
IP는 4바이트의 숫자입니다. 표시할 때는 각각의 바이트들을 ‘.’으로 구분해서 192.168.1.1과 같은 형태로 표시합니다.
하나의 바이트는 0에서 255까지의 256개의 숫자를 가지므로 수적인 단순한 계산으로는 256*256*256*256개의 주소가 가능합니다. 40억이 조금 넘는 정도인데, 인터넷이 처음 말들어질 때는 어땠는지 모르겠지만 지금은 턱없이 부족한 숫자가 되어 버렸습니다.
(그래서 지금의 IP(IPv4)와는 비교가 되지 않는 엄청난 양으로 주소를 늘린 IPv6이라는 새로운 주소체계를 사용하려고 하고 있습니다.)
어쨌든 우리가 사용해야 하는 이더넷 모듈은 자체적인 주소체계(Mac Address)는 뒤에 숨기고, 외형적으로는 IP를 사용하도록 되어 있기 때문에 이더넷을 사용하기 위해서는 가장 먼저 각각의 이더넷 모듈에게 IP를 지정해 주어야 합니다.
기존 A시리즈에서는 이것을 래더 프로그램으로 해야 했습니다. 하지만 Q 시리즈에서는 파라메터만 설정하면 되도록 되었습니다.
GX-Developer를 실행하고, Parameter -> Network Parameter -> MELSECNET/Ethernet을 선택해서 Network type에 Ethernet을 선택하시고, Operational settings에서 하시면 됩니다.
그런데 IP를 뭐라고 하지?
하나의 IP는 오직 하나의 컴퓨터만 사용해야 합니다. 즉, 아무 IP나 마구 사용하면 안된다는 말인데, 그러면 도대체 내가 사용하고자 하는 이더넷 모듈의 IP는 어떻게 해야 하는 걸까요?
공장 차원에서 IP가 할당되어져 내려오는 경우가 대부분이므로 그냥 그것을 받아서 사용하면 됩니다. 하지만 그렇지 않고, 자체적으로 IP를 주어야 하는 경우라면 사설 IP라는 것을 사용하셔야 합니다. 물론 대부분의 공장 설비는 이더넷을 사용하고는 있지만 인터넷에 연결되는 경우는 거의 없기 때문에 IP를 아무렇게나 하더라도 문제 될 것은 없습니다. 그 안에서만 서로 겹치지 않으면 되니까요. 하지만 이런 경우에 사용하라는 IP가 따로 있으므로 되도록이면 그것을 사용하는 것이 좋을 것입니다.
A: 10.0.0.0/8
B: 172.16.0.0/12
C: 192.168.0.0/16
위에 열거한 것은 모두 사설 IP입니다. 10.0.0.0/8 같은 경우에 /8은 처음 8비트, 즉, 첫번째 바이트는 변경할 수 없다는 뜻입니다. 그러니 첫 바이트에 해당하는 10은 바꿀 수 없고, 나머지는 사용하고 싶은 사람이 마음대로 정해서 사용하면 된다는 말입니다. 나머지도 모두 같은 방법으로 이해하시면 됩니다.
4. Subnet Mask
이더넷 모듈의 IP를 설정할 때는 특별하게 묻지 않지만 IP를 설정할 때는 IP와 함께 Subnet Mask라는 것을 함께 설정해야 합니다.
4개의 숫자로 된 하나의 IP 에는 두 개의 값이 함께 들어 있습니다. 그것은 네트워크와 국입니다. 즉, Subnet Mask란 IP에서 AND 연산을 하면 네트워크 번호만 남길 수 있는 값입니다.
192.168.1.1이라는 IP의 Subnet Mask는 대부분 255.255.255.0인데, 둘을 AND 연산 하면 192.168.1.0이 됩니다. 즉, 192.168.1.1이라는 IP는 192.168.1.0 이라는 네트워크의 1번 국인 셈입니다. 그렇기 때문에 192.168.1.0이라는 IP를 사용할 수는 없습니다. 192.168.1.0은 국이 아니라 네트워크 번호이기 때문입니다. 아울러 192.168.1.255라는 IP도 사용할 수 없습니다. 이 값은 네트워크에 포함된 모든 국이라는 의미로 사용됩니다. 즉, 192.168.1.255에 메세지를 보낸다는 것은 192.168.1.0 네트워크에 속하는 모든 국에 메세지를 보낸다는 의미가 되는 것입니다.
하나의 네트워크에서 가능한 주소 중 처음과 끝은 각각 네트워크 자체를 가리키는 용도와 전체 국을 지칭하는 용도로 사용되므로 사용해서는 안됩니다.
앞서 사설 IP에서 앞 쪽에 A, B, C라고 적은 것은 그냥 차례를 나타내기 위한 것이 아니라 IP의 클래스입니다. 192.168.1.1은 C 클래스의 IP입니다. C 클래스는 255.255.255.0 이라는 Subnet Mask가 말해주는 것처럼 앞 세 바이트가 네트워크를, 나머지 한 바이트가 국을 나타내는 용도로 사용됩니다. 즉, 하나의 네트워크에는 254개의 국만을 포함할 수 있지만 그런 네트워크는 엄청나게 많이 만들 수 있는 형태입니다. 이에 비해 A 클래스는 첫 바이트만 네트워크이기 때문에 네트워크는 얼마되지 않지만 그 안에 국은 실로 엄청나게 많은 형태를 위한 것입니다.
그래서 대부분의 경우 C 클래스 사설 IP인 192.168.0.0을 사용하는 것입니다. 물론 A 클래스라 하더라도 실제적인 네트워크와 국의 구분은 Subnet Mask에 의하기 때문에 Subnet Mask만 255.255.255.0이라고 한다면 10.0.0.0이나 192.168.0.0이나 다를 것은 없습니다.
'PLC 프로그래밍 > MELSEC PLC ' 카테고리의 다른 글
Ethernet 통신 하기[3] (0) | 2019.02.20 |
---|---|
Ethernet 통신 하기[2] (0) | 2019.02.20 |
MELSEC-Q PLC/ CC-LINK DATA BOOK (1) | 2019.01.20 |
MR-J3을 MR-J4로 변경 방법 (0) | 2019.01.13 |
PLC 작업용 노트북 선택 기준 (6) | 2018.12.26 |
댓글