티스토리 뷰

728x90

"DNP3 프로토콜에 대한 고찰"을 통해서 DNP3 프로토콜을 살펴보고 실제로 DNP3 맛보기를 해볼까 한다. 실제 장비가 있으면 더 실감 나겠지만 테스트와 스터디를 위한 것이므로 실제 장비처럼 동작하는 시뮬레이터를 찾아보았다. 문제는 라이브러리는 많은데 의외로 라이선스가 개방적인 시뮬레이터 프로그램은 찾기 어려웠다. 그래도 차선으로 제한적인 라이선스이지만 Freyr SCADA에서 배포하고 있는 무료 시뮬레이터를 사용하기로 했다.  https://sourceforge.net/projects/dnp3-source-code-library/files/에서는 시뮬레이터와 윈도우 및 리눅스 SDK까지 한 번에 받을 수도 있고, https://sourceforge.net/projects/dnp3-outstation-simulator/에서 아웃스테이션 서버 시뮬레이터만 받거나 https://sourceforge.net/projects/dnp3-client-master-simulator/에서 마스터 클라이언트 시뮬레이터를 받아도 된다. 

 

다운로드하여 설치를 진행하면 재배포도 하지 말고 활용도 하지 말라는 엄격한 라이선스 동의문을 만날 수 있다. 개인적이 라니라 회사 업무 프로세스에 공식적으로 사용하고 싶다면 구입하라는 전략이다.

 

일단 아웃스테이션 시뮬레이터 설치를 끝내고 바로 실행에 들어간다.

 

프로그램을 실행하면 바로 눈에 들어오는 것은 우측 상단의 남은 시간이다. 남은 시간이 줄어드는 모습에 긴장이 될 수는 있지만 프로그램 시작 후 15분이므로 웬만한 테스트 시간으로는 충분하지 않을까 싶다.

 

시간이 종료되면 위와 같은 창을 만난다. 편하게 쓰고 싶다면 구입하라는 이야기...... 시작 때도 10초를 기다려야 한다.

 

아웃스테이션 서버를 가동했으면 [Add Server]로 서버를 추가한다.

 

서버를 추가하면 위의 그림과 같이 서버 설정창으로 바로 이동하지만 좌측 트리의 계층적인 구조와 우측의 탭 항목이 연관되므로 이런 구조를 인식하고 작업하면 혼란이 없다.

 

그림에서 보듯이 시리얼 모드, TCP, UDP 모드로 서버를 설정할 수 있으므로 테스트하려는 서버 형태를 선택하고 IP 주소와 포트와 같은 필요한 설정을 보완한다. 기본적으로 TCP모드로 127.0.0.1의 20000 포트를 사용하도록 추가되는데 변경하고자 하는 항목을 클릭하여 적절하게 변경한다. 필자는 테스트를 위하여 IP 주소만 바꾸어 주었다.

 

다음에 필요한 것은 오브젝트를 추가하는 것으로 위의 그림처럼 [Configuration] 탭을 선택하여 진행한다. 처음에는 아무것도 없는데 [Add Row]를 클릭한다. Row를 추가한 다음에는 "Coose a Group"을 클릭하여 어떤 타입의 오브젝트로 만들 것인지를 선택한다.

 

포인트 개수를 더블클릭하여 지정한 타입의 오브젝트를 몇 개 만들 것인지 지정한다. 이러한 방식으로 테스트에 필요한 다른 타입의 포인트들도 생성한다. 모든 오브젝트 정의가 끝나면 우측 상단의 [Load Configuration]을 클릭한다.

 

무료 버전은 시간이 지나면 작업 내용이 사라질 수 있으므로 File> Save 메뉴로 현재 설정을 저장해 놓으면 테스트 작업을 무리 없이 진행할 수 있다. 앞선 작업에서 [Load Configuration]을 클릭하면 위의 그림처럼 [Data Objects] 탭으로 넘어가면서 앞서 정의한 오브젝트 목록을 확인할 수 있다. 오브젝트의 구조를 보면 BACnet 프로토콜과 유사해 보이기도 한다. 값 항목을 우측 마우스로 클릭하여 "Update"를 선택하면 해당 오브젝트의 값을 변경할 수도 있다. 정확한 테스트를 위해서는 아웃스테이션에서 값을 변경했을 때 마스터에서도 그대로 반영되는지 확인하는 것이 필요하므로 이 작업은 꼭 기억해야 한다.

 

값 변경 창을 통해서 오브젝트의 값을 변경했으면 상단의 [Start Communication] 버튼으로 서비스를 시작한다. File> Save 메뉴로 현재 설정을 꼭 저장해 두어야 짜증 나지 않고 작업을 진행할 수 있다. 15분이 지나서 프로그램이 중단되면 다시 실행하여 File> Open으로 이전 작업 과정을 복구할 수 있다.

 

DNP3 마스터(클라이언트) 시뮬레이터를 설치하고 실행하면 서버처럼 우측 상단에서 15분 제한 시간 중에서 남은 시간을 확인할 수 있다. 각종 설정은 서버처럼 File> Save 및 Open 메뉴를 활용해서 저장하고 복원하여 사용하면 15분 제한 시간을 극복하면서(?) 시뮬레이터를 사용할 수 있다.

 

상단의 [Add Client] 버튼을 누르면 서버처럼 TCP 모드로 127.0.01/20000으로 기본 설정이 만들어진다. 수정하려는 항목을 클릭하여 필요한 내용을 입력한다. 앞서 서버에서 입력한 내용과 동일한 내용을 입력한다.

 

아웃스테이션의 정보를 입력했으면 [Data Object] 탭을 클릭한다. 서버와 달리 [Configuration]이 없다.  [Data Object] 탭에서 [Start Communication] 버튼을 누르면 서버와 연결하여 위의 그림과 같이 데이터를 가져온다.

 

오브젝트가 읽기 전용이 아니라 출력도 가능한 ANALOG_OUTPUTS와 같은 포인트면 위의 그림처럼 값 항목에서 우측 마우스로 클릭하여 콘텍스트 메뉴> Point Command로 아웃스테이션의 포인트 값을 클라이언트에서 수정할 수 있다.

 

위의 그림은 값을 직접 변경하는 창의 모습이다. 수정 내용은 서버에서도 정상 반영되었고 위의 명령창 하단에도 그 결과를 표시해 주었다. 같은 창에서 값을 연속적으로 변경할 수 있다.

 

DNP3 서버(아웃스테이션) 및 클라이언트(마스터) 시뮬레이터는 비록 15분이라는 사용 시간제한이 있었지만 프로그램을 테스트하고 기능을 확인하는 용도로는 충분했다. 오픈소스는 아니지만 나름 개발자를 배려한 무료 프로그램이었다. 훌륭하다.

 

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함