(3) PLC [통신 프로토콜, 인터페이스]

PLC 통신 프로토콜

(3) PLC [통신 프로토콜, 인터페이스]

이전 장에서는 PLC 프로그램을 작성하기 위해 사용되는 툴과 PLC 메모리 영역과 주소에 대해서 설명하며 알아보았습니다. 이번에는 PLC의 통신 프로토콜 구조와 통신 프로토콜을 통한 인터페이스 방식에 대해서 알아보도록 하겠습니다.

PLC 통신 프로토콜


PLC와 통신을 하기 위해 사용되는 프로토콜이며, 제조사 별로 구성이 되어있습니다. LS 산전 ‘FEnet(FastEthernet)’, 미쯔비시 ‘MC(MelsecCommunication) 프로토콜’ 등이 있으며, 범용적으로 사용되고 있는 ‘Modbus’ 프로토콜이 있습니다. 이번 장에서는 FEnet 프로토콜을 대표적으로 설명을 하도록 하겠습니다.

FEnet은 XGT 전용 프로토콜이며, PLC와 통신하여 PLC 메모리에 데이터를 읽거나 쓰기 위해서 사용합니다. FEnet은 TCP와 UDP 2가지 방식으로 사용이 가능하며 TCP 경우에는 2004번 포트를 사용하고, UDP 경우에는 2005번 포트를 사용하도록 되어 있습니다.

FEnet 프로토콜이 구성은 다음과 같습니다. 이더넷 프레임이 구조를 먼저 살펴보면, 이더넷 통신을 위한 MAC, IP 헤더, TCP 헤더와 데이터를 포함한 LS IS 프레임으로 구성되어 있습니다. PLC와 인터페이스를 하기 위해서 필요한 정보들은 LS IS 프레임에 들어있다고 보시면 될 것 같습니다.

Ethernet Frame

Ethernet Frame

여기에서 LS IS 프레임의 구조를 살펴보면 LS 산전 고유 데이터를 나타내는 Company Header, 요청 명령어를 나타내는 Command, PLC 데이터 타입을 나타내는 Data Type, 데이터를 나타내는 Data가 포함되어 있습니다. 자세한 구조와 나타내는 정보들은 아래 그림과 같습니다.

LS IS Frame Format

LS IS Frame Format

좀 더 자세하게 설명해야 할 부분들은 Company Header 영역에서 프레임 방향과 길이, Data 영역에서 블록 개수, 변수 길이, 데이터 주소에 대해서 설명하겠습니다.

Company Header 영역의 프레임 방향은 ‘Host → PLC , PLC → Host’ 즉, 요청과 응답에 대해서 나타내고 있고, 길이의 경우에는 Company Header를 제외한 나머지 프레임 정보에 대한 길이의 정보를 나타내고 있습니다.

데이터 영역의 블록 개수는 변수 길이부터 데이터 개수까지 요청되는 정보가 몇개가 있는지를 나타내는 정보입니다. 사진에서 확인이 가능하듯이 여러 개의 요청은 16개 정도로 제한을 두고있습니다. 변수 길이는 데이터 주소의 길이를 표현합니다. 예를 들어서 데이터 주소가 ‘%MW0001’일 경우, 7글자를 나타내는 h’07이 들어가게 되는 것입니다. 데이터 주소는 이전 장에서 설명하였던 PLC 메모리 주소에 대한 정보를 나타내고 있습니다.

읽기 명령을 구성할 때 개별 주소 읽기와 주소 연속 읽기로 구분이 되어질 수 있습니다. 개별 주소는 읽고 싶은 메모리 주소들을 특정하여 요청하는 것이고 주소 연속은 처음 메모리 주소에서부터 주소의 길이 만큼 한번에 읽는 것을 의미합니다. 쓰기 명령의 요청 또한 동일합니다.

해당 프로토콜을 통해서 PLC 메모리의 데이터에 읽기와 쓰기의 명령을 통해서 PLC와 인터페이스를 합니다.


통신 프로토콜을 통해서 PLC와 요청응답에 대해 차이점이 있는지에 대해서 살펴보도록 하겠습니다.

PLC 에게 통신 프로토콜 형식에 맞추어서 요청을 보내게 되면 PLC 에서는 명령어 수행에 대한 응답을 보내주게 되어있습니다. 응답 프레임에서는 데이터 영역에 요청 프레임의 형식이 잘못되었는지 혹은 PLC에 이상이 있는지에 대한 ‘오류 코드’와 정상적으로 수행이 되었다면 요청에 대한 ‘데이터’가 담겨져 있습니다.

응답 프레임 Data 영역

응답 프레임 Data 영역

그림에서와 같이 Data 영역의 에러 상태에는 오류 코드가 담겨있으며, 정상일 경우에는 ‘0’으로 보내지며, 그 외의 경우에는 각 상태를 나타내는 정보가 담겨져 있습니다.

데이터에는 읽기 명령어와 쓰기 명령어에 따라 형태가 달라지게 됩니다. 읽기의 경우에는 ‘요청한 블록 수, 데이터 크기, 데이터 정보’가 반복되어 표시되는 반면에 쓰기의 경우에는 요청한 ‘블록 수’의 정보만 있습니다.

이렇게 에러 상태를 확인하여 정상인 경우에는 데이터가 표시되는 정보를 확인하여 원하는 정보를 얻을 수가 있습니다.


여기까지 설명한 내용이 PLC 통신 프로토콜과 인터페이스의 과정에 대해서 설명을 하였습니다. 기본적으로 모든 PLC 통신 프로토콜의 필요한 구성과 인터페이스의 과정은 동일하다고 생각합니다. 설명 글을 쓰면서 이해하기 쉽도록 최대한 정리를 해서 설명을 하다보니 빠진 부분도 많을 수 있다고 생각을 합니다. 부족한 부분들에 대해서는 앞으로 채워나갈 수 있도록 노력해보겠습니다. 여기까지 읽어주셔서 감사합니다.