모드버스(Modbus)는 수많은 자동화 애플리케이션에 혈액과 같은 요소다. 마스터-슬레이브 아키텍처를 따르는 이 표준은 사실상 업계 표준 통신 프로토콜로, 두 가지 주요 포맷이 있다.

모드버스 RTU, 그리고 이것의 수정된 형태인 모드버스 TCP가 그것이다. 기본적으로 두 포맷 모두 동일한 기능을 수행한다.

두 포맷 간의 가장 큰 차이점은 실행 기반이 되는 물리 계층과 관련이 있다.

모드버스 RTU는 직렬 통신(RS-232 또는 RS-485)에서 사용되는 반면 모드버스 TCP는 TCP/IP 네트워크를 통한 통신을 촉진한다. 또 모드버스 TCP 데이터 패킷은 TCP 연결에 추가 헤더를 사용한다.

구현이 쉽고 매우 적은 비용으로 문제 해결이 가능하다는 점에서 많은 필드 장치가 모드버스 RTU 프로토콜을 지원한다. 모드버스 RTU 의 보급이 확산된 이유가 바로 여기에 있다. 더욱 복잡한 네트워킹 요구를 충족하기 위해 점차 많은 산업 응용 분야가 이더넷으로 전환함에 따라 이제 많은 시스템이 SCADA(감시 제어 및 데이터 취득) 소프트웨어에서 모드버스 TCP를 사용하고 있다.

하지만 한 가지 아쉬운 점은 모드버스 RTU와 TCP 프로토콜 사이에 통신 문제가 있다는 사실이다.

잘 알고 있겠지만 전환 과정에서는 새로운 기회가 대두된다. 물론 과제도 있다. 이와 관련해 모드버스 지원 장치를 SCADA 시스템에 연결할 때 언급하고 싶은 4가지 주요 과제가 있다.

첫번째 과제는 시장에서 독자적인 SCADA 소프트웨어의 과잉 공급을 처리하는 것과 관련이 있다. 각 소 프트웨어 프로그램이 서로 다른 모드버스 드라이버 지원 기능을 시장에 내놓을 것이므로 시스템 운영자 가 해당 요건에 적합한 제품을 찾기가 복잡해진다.

시스템 운영자를 골치 아프게 하는 또 다른 문제는 TCP 연결 아키텍처에서 수많은 직렬 장치를 관리할 때의 압박이다. 다수의 SCADA 호스트가 동일한 모드버스 RTU 지원 장치에 액세스해야 할 때는 문제가 더욱 복잡해진다.

지금까지의 상황으로 볼 때 최적의 작동 성능을 얻기 위해 미션 크리티컬 애플리케이션에서 빠른 응답 시간을 확보해야 하는 문제는 극복이 쉽지 않다.

이 문제는 마지막으로 언급했지만 위의 어떤 문제만큼이나 중요하다. 이 문서 에서는 앞서 언급한 과제를 개괄적으로 설명하고 계속해서 변화하는 기술 환경에서 작동 속도를 높일 수 있는 해결 방법을 제시한다.

해결 과제 1—고성능으로 가는 관문

SCADA 소프트웨어 공급자는 시장에 넘쳐나고 모두가 서로 다른 방식으로 모드버스 드라이버를 지원한다. 따라서 시스템의 필요성을 정확하게 파악해야 가장 적합한 소프트웨어를 선택할 수 있다. 모드버스 RTU 지원 직렬 장치를 이더넷 네트워크에 연결한 후 상호 운용성 문제가 대두되어 혼란을 겪고 싶지는 않을 것이다.

모드버스 TCP 드라이버가 장착된 SCADA 호스트 = 여기서 프로토콜 변환 게이트웨이를 사용할 수 있다. 게이트웨이를 사용하면 모드버스 TCP 프로토콜을 사용해 모드버스 RTU 지원 장치와 통신할 수 있다.

모드버스 RTU 슬레이브 장치에 대한 모드버스 TCP 연결을 가능하게 하는 많은 게이트웨이가 자동화 시장에 출시돼 있다. 게이트웨이는 모드버스 TCP 요청을 수신한 후 패킷을 모드버스 RTU 패킷으로 변환하고 이를 즉시 모드버스 RTU 지원 장치로 전송한다.

모드버스 RTU 드라이버와 내장 직렬 포트 장착된 SCADA 호스트 = 몇 가지 이유로 인해 내장 직렬 포트와 모드버스 RTU 지원 장치가 장착된 기존 SCADA 호스트는 변경 할 수 없지만 내장 직렬 포트와 모드버스 RTU 지원 장치 둘 다를 이더넷 네트워크로 연결시켜야 하는 경우가 있다.

이 경우 게이트웨이 쌍을 이용하면 연결이 가능하다. 아래 토폴로지 그림과 같이 게이트웨이는 모드버스 RTU 패킷을 모드버스 TCP 패킷으로 변환하고 이를 다시 모드버스 RTU 패킷으로 변환할 수 있다.

모드버스 RTU 드라이버가 장착돼 있지만 내장 직렬 포트가 없는 SCADA 호스트 = 기존 SCADA 프로그램과 장치를 사용하려고 하지만 원래 SCADA 호스트에 내장 직렬 포트가 없는 경우 직렬 장치 서버를 이용해 직렬 장치에 연결된 원격 직렬 장치 서버에서 직렬 포트에 대한 가상 COM 포트를 만들 수 있다. 이 구성에서는 기본 COM 포트가 있는 것처럼 직렬 장치 서버를 통해 원격 직렬 장치에 액세스할 수 있다.

직렬 장치 서버는 SCADA 호스트에 가상 COM 포트드라이버를 설치해 가상 COM 포트를 만든다. 가상 COM 포트를 사용하려면 직렬 장치 서버를 가상 COM 모드로 구성해야 한다.

이 가상 COM 포트로 전송된 데이터는 직렬 장치 서버의 원격 직렬 포트로 전송된다. 모뎀 신호에 대한 동작도 같은 식으로 처리된다. 가상 COM 포트는 기본적인 로컬 COM 포트와 같은 식으로 사용할 수 있기 때문에 실제 COM 포트에서 하는 것처럼 모드버스 RTU 요청 을 COM 포트로 직접 전송할 수 있다.

이더넷 캡슐화 드라이버가 장착된 SCADA 호스트 = SCADA 호스트에 직렬 포트가 내장돼 있지 않고 가상 COM 포트 드라이버를 설치하지 않으려는 경우 이더넷 캡슐화 드라이버를 대안으로 고려할 수 있다. 그러나 이를 위해서는 SCADA 소프트웨어가 이더넷 캡슐화 드라이버를 지원할 수 있어야 하지만 현실적으로 항상 그런 것은 아니다. 일반적으로 말해서 직렬 및 TCP/IP 네트워크에 대한 수준 높은 지식을 가지고 있다면 이더넷 캡슐화 드라이버가 최선의 선택이다.

이 경우 원시 소켓 모드 또는 터널링 모드가 선택된 직렬 장치 서버가 필요하다. 즉, SCADA 가필드 장치로 모드버스 RTU 패킷을 전송할 때 관련되는 어떤 프로토콜도 없이 호스트와 직렬 장치 서버간의 연결에 투명한 TCP/IP 또는 UDP 통신이 사용된다.

모드버스 RTU는 간격 시간 초과를 이용해 패킷의 끝을 확인하기 때문에 직렬 장치 서버를 올바르게 구성해야 한다. 호스트가 올바르게 구성되지 않으면 모드버스 패킷이 2개 이상의 TCP/IP 또는 UDP 패킷으로 분할돼 호스트가 불완전한 패킷을 전달하게 된다.

직렬 장치 서버가 모드버스 RTU 장치를 이더넷 네트워크에 연결할 수도 있지만 게이트웨이 솔루션이 거의 모든 시스템 요건을 충족할 수 있다. 해당 호스트가 모드버스 TCP 연결을 지원할 수 있어야 한다.

모드버스 TCP는 매우 폭넓게 이용 및 지원되고 있기 때문에 이 부분은 문제가 되지 않는다. 다음은 지정 게이트웨이 솔루션을 시용해야 하는 몇 가지 상황이다.

다중 마스터 또는 이중화 = 원격 액세스를 지원하는 외에도 이더넷 연결은 다중 연결 액세스 기능도 제공한다. 대부분의 게이트웨이는 최대 32개의 연결을 지원할 수 있다. 다시 말해서 최대 32 개의 SCADA 호스트가 모드버스 RTU 지원 장치에 동시 쿼리를 수행할 수 있다.

대부분의 직렬 장치 서버가 다중 마스터를 지원하지 않기 때문에 직렬 장치 서버가 이 상황에서 네트워크 이중화를 제공하기는 어렵겠지만 게이트웨이의 경우에는 문제가 없다.

다중 모드버스 RTU 지원 장치를 위한 단일 연결 = SCADA 호스트에서 단일 연결을 이용해 여러 직렬 포트에 연결된 다수의 모드버스 RTU 지원 장치에 쿼리를 수행해야 하는 경우가 있을 수 있다. 이 경우에는 게이트웨이가 라우팅 메커니즘을 처리하기 위한 유일한 해결책이다.

다수의 직렬 포트 게이트웨이를 사용하면서 고유 슬레이브 ID 에 기초하여 올바른 직렬 포트로 모드버스 요청을 보내도록 이러한 게이트웨이를 구성할 수 있다. 직렬 장치 서버는 이러한 복잡한 요청을 처리할 수 없다.

구형 모드버스 RTU HMI와 신형 모드버스 TCP SCADA에 대한 동시장치 액세스 = 이더넷 연결이 구축하기 간편한 경우도 있을 수 있다. 이 원격 액세스를 제공하기는 하지만 기존 로컬 HMI 연결을 유지해야 할 경우 장치의 직렬 포트가 게이트웨이에 이미 연결돼 있어 HMI 연결에 이용할 직렬 포트가 없다는 것이 문제다.

이 상황에서 일부 게이트웨이는 이러한 문제를 해결하도록 직렬 포트 리디렉터를 제공한다. 게이트웨이가 슬레이브 ID를 기초로 여러 직렬 포트 간에 요청을 전송할 수 있다는 점에서 직렬 포트 리디렉터는 라우터와 매우 유사하다.

최선의 선택

직렬 이더넷 통신을 위한 여러 가지 다양한 솔루션을 사용할 수 있다. 이러한 솔루션은 직렬 포트와 이더넷 포트 사이의 투명한 데이터 전송 정도로 간단할 수 있지만 모드버스와 같은 산업용 프로토콜을 처리해야 한다면 지정 게이트웨이가 대체적으로 훨씬 좋은 선택이다.

지정 게이트웨이는 초기에 더 많은 투자가 필요할 수 있지만 장기적으로 더 안정적인 통신을 제공하고 모드버스 패킷을 인식해 전체 패킷을 적합하게 처리할 수 있다.

해결 과제 2—처히해야 할 부분이 너무 많음

이것은 더 많이 가지고 있을수록 처리해야 할 것이 더 많아지는 문제로 볼 수 있다. 많은 수의 직렬 장치를 이더넷 네트워크에 연결해야 하는 경우가 정확히 여기에 해당한다.

TCP 연결 아키텍처를 계획하는 문제에 직면했을 때는 네트워크 엔지니어의 도움을 요청하라. 다행인 점은 대부분의 게이트웨이가 게이트웨이의 여러 직렬 포트에 연결된 다수의 모드버스RTU 지원 장치에 대해 충분한 TCP 연결 아키텍처를 계획할 수 있는 유연한 솔루션을 제공한다는 것이다. 일반적으로 세 가지 라우팅 메커니즘이 적용된다.

직렬 포트를 고유 TCP 포트에 연결 = 이것이 게이트웨이 토폴로지에 대한 가장 일반적인 설정 형태다. 이 게이트웨이 구성에서 각 직렬 포트는 하나의 고유한 TCP 포트로 식별된다.

예를 들어 직렬포트1에서는 4001, 직렬 포트2에는 4002와 같은 식이다. 직렬포트1에서 모드버스 RTU 지원 장치와 통신하려는 경우 4001에 대한 Modbus TCP 연결을 구성해야 한다.

게이트웨이는 TCP 포트 4001과 직렬포트1의 TCP 연결 사이에서 모드버스 패킷을 전송한다. 이 토폴로지에서는 SCADA 드라이버가 다수의 모드버스 TCP 연결을 구성해야 한다.

직렬 포트를 고유 IP 주소에 연결 = 이 방법은 게이트웨이가 서로 다른 직렬 포트를 식별하기 위해 서로 다른 IP 주소를 사용한다는(예를 들어 직렬포트1에 192.168.2.1을 사용하고 직렬포트2에 192.168.2.2 사용) 점을 제외하고 이전 메커니즘과 매우 유사하다. 직렬포트1에서 Modbus RTU 지원 장치와 통신하려면 TCP 포트 502를 통해 192.168.2.1에 대해 모드버스 TCP 연결을 구성해야 한다.

게이트웨이는 192.168.2.1:502와 직렬포트1 사이에서 TCP 연결을 통해 모드버스 패킷을 전송한다. 이 토폴로지에서도 SCADA 드라이버가 다수의 모드버스 TCP 연결을 구성해야 한다.

라우팅 테이블 사용 = 이 토폴로지는 단일 연결을 사용해 다수의 장치와 통신한다. 요청이 올바른 직렬 포트로 전송될 수 있도록 게이트웨이와 라우팅 경로를 모두 올바르게 구성해야 한다.

예를 들어 직렬 포트1은 슬레이브 ID 1~10인 모든 모드버스 패킷을 처리하고 직렬포트2는 슬레이브 ID 11~20을 처리하는 식이다. 이 메커니즘의 단점은 토폴로지가 하나의 연결만 사용하므로 다른 두 메커니즘보다 속도가 느리다는 점이다. 그러나 예산이 제한적이어서 SCADA 연결 수에 제한이 따르고 성능이 요구를 수용하기에 적합한 수준이라면 단일 연결이 훌륭한 선택일 수 있다.

(※ 하나의 직렬 포트에 더 많은 장치를 연결하거나 하나의 TCP 연결에 다수의 직렬 포트를 연결하는 경우 모드버스 폴링 시간을 늘리게 된다. 그러나 마찬가지로 폴링 속도를 늘리려고 하면 더 많은 TCP 연결이 필요할 수 있으므로 SCADA 비용이 증가할 것인지를 확인해야 한다)

해결 과제 3—무제한 액세스

범위가 넓은 프로젝트에서는 여러 개의 호스트가 하나의 지역을 모니터링하면서 필요시 다른 지역의 장치를 모니터링하기 위한 이중화 호스트의 역할도 할 수 있다. 따라서 동시 액세스가 가능하도록 모드버스 RTU 지원 장치를 다수의 마스터에 연결해야 한다.

게이트웨이가 이를 적합하게 처리할 수 있지만 직렬 포트의 대역폭은 그대로 유지된다는 점을 염두에 둬야 한다. 따라서 동일한 직렬 포트를 통해 다수의 요청이 수신되면 게이트웨이가 대기 열에 있는 이전 요청을 먼저 처리해야 하기 때문에 지연이 발생할 가능성이 커진다. 즉, 다수의 마스터가 동일한 모드버스 RTU 장치에 동시 액세스할 수 있게 하려면 적합한 폴링 시간을 계산해야 한다.

예를 들어 하나의 요청에 100㎳가 걸린다면 동시 연결이 다섯 개인 경우 다음 요청을 보내기 전에 최소한 100㎳×(5-1)=400㎳ 동안 기다려야 한다. 다시 말해서 각 SCADA 호스트가 폴링 주기 시간에 400㎳(약간의 허용 오차 포함)를 사용해야 한다.

그러나 위의 방법이 유일한 해결책은 아니다. 일부 게이트웨이는 연결된 장치로부터 데이터를 능동적이고 지속적으로 가져오는 에이전트 모드를 지원한다. 업데이트된 데이터가 내부 메모리에 저장돼 호스트 요청에 응답하는 데 사용된다. 이 솔루션이 더 빠르고 효율적이기는 하지만 가져온 데이터가 시간상으로 최신 상태는 아닐 수 있다.

해결 과제 4—속도에 대한 요구

일부 주요한 애플리케이션의 경우 장치로부터 빠른 응답을 얻는 것이 절대적일 수 있다. 그러나 다수의 모드버스 RTU 지원 장치를 연결하면 모드버스 동작(폴링과 응답이 하나씩 대응)과 직렬 전송의 속도 한계로 인해 속도가 떨어진다. 이러한 경우에는 에이전트 게이트웨이가 필요합니다. 에이전트 게이트웨이는 각 모드버스 RTU 지원 장치로 모드버스 명령을 하나씩 보낼 수 있어 다수의 모드버스 RTU 지원 장치로부터 데이터를 능동적으로 가져오고 이를 단일 레지스터에 배치해 내부 메모리에 데이터가 저장되도록 할 수 있다. 따라서 보다 빠른 응답을 얻으려면 호스트가 이더넷 연결을 통해 데이터를 가져와야 한다.

그뿐 아니라 모든 데이터를 게이트웨이 내부 메모리의 단일 데이터 블록에 배열시켜 한 번의 모드버스 읽기 명령으로 호스트로부터 데이터를 가져올 수 있다.

MOXA 솔루션 정보

MOXA는 직렬 이더넷 연결 분야의 업계 리더다. NPort 직렬 장치 서버는 리얼 COM 모드, TCP 클라이언트 모드 및 UDP 모드 같은 다양한 작동 모드를 제공해 여러 유형의 직렬 장치를 네트워크에 연결한다. 더욱이 NPort에는 다양한 고급 기능이 포함돼 있어 각 작동 모드에서 사용자가 작업 효율을 높이고 직렬-이더넷 연결의 이점을 극대화하도록 지원한다.

MOXA의 MGate 게이트웨이는 서로 다른 프로토콜을 사용하는 SCADA/PLC 와 장치 사이에서 프로토콜 변환을 지원한다. MGate 게이트웨이를 업계의 다른 솔루션과 차별하는 기능으로는 사용자 친화적 웹 콘솔을 이용한 간편한 구성, 내장 모니터링 및 진단 기능을 이용한 간편한 유지관리, 그리고 신뢰할 수 있는 성능 등을 내세울 수 있다.

직렬 장치 서버

직렬 장치 서버는 하나 이상의 이더넷 포트와 하나 이상의 직렬 포트를 포함한 독립형 장치다. 직렬 장치 서버에는 네트워크 운영 체제가 내장돼 있으며 이 장치는 컴퓨터가 네트워크를 통해 직렬 장치에 액세스하도록 한다.

직렬 장치 서버는 직렬 인터페이스와 이더넷 인터페이스 사이에서 투명하게 데이터를 전송하면서 수신된 모든 직렬 데이터를 이더넷 프로토콜 통신에 적합하게 변환하고 수신된 모든 이더넷 데이터를 직렬 프로토콜 통신에 적합하게 변환하는 역할을 한다.

또 첨단 직렬 장치 서버는 추가 직렬 포트가 없는 호스트 컴퓨터에 가상 COM 포트를 제공해 기본적으로 이더넷 포트를 COM 포트로 변환한다. 이러한 기본적 기능 외에 더욱 정교한 직렬 장치 서버는 이더넷 네트워크에서 직렬 또는 텔넷 프로토콜의 PPP까지 지원할 수 있다.

직렬 장치 서버는 콘솔 관리(일부 공급업체가 직렬 장치 서버를 콘솔 케이션(때때로 직렬 장치 서버를 서버라고 하는 이유)나 구형 뱅킹 시스템에서 원격 터미널 애플리 터미널 서버라고도 하는 이유)에도 사용할 수 있다.

가상 COM 포트·가상 COM 포트 드라이버

가상 COM 포트는 호스트 컴퓨터에 있는 실제(물리적) COM 포트가 아니다. 대신 로컬 COM 포트의 동작을 완전하게 에뮬레이션하기 위해 윈도 환경에서 가상 COM 포트 드라이버 프로그램이 호스트 컴퓨터에 설치된다. 이 드라이버는 TCP/IP 네트워크를 통해 호스트에 연결하는 직렬장치 서버의 포트에 사용된다.

원격 직렬 장치 서버의 직렬 포트는 로컬 COM 포트와 동일한 동작을 나타낸다. 이 가상 COM 포트는 직렬 장치 서버에 연결하도록 구성됩니다. 예를 들어 COM3 이 IP주소가 192.168.2.1 인 원격 직렬장치 서버의 직렬포트1 이라고 가정한다. 이 포트에 데이터를 쓰면 모든 데이터가 가상 COM이 가상 COM 포트에 대한 모든 포트 드라이버에 의해 ‘192.168.2.1@serial port 1’로 전송된다. 요청은 ‘192.168.2.1@serial port 1’로 리디렉션된다. 최근의 호스트 컴퓨터에는 직렬 포트가 내장되지 않은 경우가 많기 때문에 가상 COM 포트는 산업 자동화 분야에서 오래된 장비를 연결할 때 중요한 도구다.

투명한 게이트웨이

투명한 게이트웨이는 모드버스 게이트웨이를 사용하는 가장 기본적인 방식이다. 모드버스 RTU 및 모드버스 TCP는 PDU(프로토콜 데이터 단위)가 동일하고 주소 필드만 다르기 때문에 게이트웨이가 모드버스 RTU와 모드버스 TCP 사이에서 데이터를 전송하기가 쉽다.

따라서 이더넷 네트워크에서 모드버스 TCP 패킷이 수신되면 게이트웨이가 모드버스 RTU 주소 지정을 수용하기 위해 주소 필드를 간단히 대체하고 패킷을 즉시 직렬포트로 전송할 수 있다. 게이트웨이가 모드버스 RTU 장치로부터 응답을 수신하면 모드버스 TCP 클라이언트에 응답한다.

투명한 게이트웨이

에이전트 게이트웨이

에이전트 게이트웨이는 모드버스 게이트웨이를 이용해 모드버스 TCP와 모드버스 RTU 사이에서 데이터를 전송하는 또 다른 방법이다. 에이전트 게이트웨이에는 데이터를 임시로 저장하기 위한 자체 내부 메모리가 있으며 연결된 장치로부터 데이터를 지속적으로 쿼리한다.

에이전트 게이트웨이

SCADA 드라이버 쿼리가 수신되면 게이트웨이가 내부 메모리에 저장된 데이터를 이용해 쿼리에 응답한다. 이런 식으로 게이트웨이가 장치 데이터를 능동적으로 쿼리하는 에이전트의 역할을 한다. 이 기능은 다음과 같은 경우 프로토콜 변환에 이용할 수 있다.

▲두 프로토콜이 서로 다른 패킷 구조를 사용하는 경우(PROFIBUS, Modbus, 이더넷/IP, PROFINET 등) ▲두 프로토콜이 서로 다른 주기 시간을 사용하는 경우

PROFIBUS, PROFINET 및 이더넷/IP 같은 일부 프로토콜은 투명한 게이트웨이가 수용할 수 없는 매우 짧은 시간 사이클 내에 데이터를 교환한다.

<글 에드워드 린(Edward Lin) MOXA 제품 관리자>

<자료제공 : MOXA>

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지