페이지

2016년 3월 14일 월요일

오픈소스 SCADA(or HMI) 프로그램인 pvbrowser 에 대하여

pvbrowser

공정 시각화를 위한 오픈 소스 클라이언트 프로그램으로, Windows, Linux, Unix, OS-X 에서 실행이 가능하다. 이 프로그램은 Qt 를 기본으로 개발된 C++ 응용프로그램으로 공정시각화에 필수적인 빠른 갱신속도를 위해 최적화된 프로그램이다.
Qt 에 내장된 WebKit을 이용하여 일반적인 http 프로토콜을 지원하므로 일반 인터넷 브라우저로 사용할 수 있다.


pvdeveloper

공정시긱화 처리용서버 프로그램을 개밯하기 위한 통합 개발 환경 프로그램으로 lua, python, C/C++을 지원한다. python의 경우 실시간 수정 및 반영이 가능하지만 C++인 경우 추가적인 컴파일과정이 필요하다.

daemon

서버와 연결된 PLC, embeded device와 같은 기기로 부터 공정 data 를 송수신 하기 위한 프로그램으로 여러 종류의 protocol을 지원한다. 필요한 경우 직접 프로토콜을 제작하여도 된다. modbus protol이 기본 내장되어 사용이 편리하다.



pvbrowser 홈페이지에 따르면 다음과 같은 기능을 지원해 준다.

  • Client/Server

    Client : 인터넷이 연결된 여러 컴퓨터에서 실행되는 pvbrowser 프로그램
    Server : 인터넷이 연결된 웹페이지 서비스 프로그램으로 connectionoriented pv protocol 서비스를 지원.
  • Qt Widgets

    기본 Qt Widgets 과 ---Widgets을 지원한다.
  • Custom Widgets

    필요한 경우 widget을 만들어 사용할 수 있다.
    pvdeveloper 프로그램을 컴파일 할때 사용한 Qt 버전을 사용하여 정적 라이브러리 형태로 만들어야 하는 것 같다. 기본적으로 지원하는 위젯만 이용하여도 충분히 사용 가능하지만, 미적 요소를 따지는 분이라면 직접 빌드하여 사용하는 것도 한 방법이다.
  • platform independent

    거의 모든 운영 체제에서 동작한다.
    기 본적으로 윈도우 운영체제 보다는 Linux 운영체제를 염두에 두고 작업된 내용이 많을 뿐 아니라, 기본적인 설명도 Linux 위주로 되어있다. 하지만 윈도우용으로 컴파일된 설치 파일 및 기본 메뉴얼이 제공되기 때문에 다소 쉽게 접근이 가능하다.
  • SVG Graphics

    가 장 좋아하는 기능이다. SVG 이미지 제작툴(본인의 경우 Inkscape)을 이용하여 SVG 이미지를 제작한 후, GUI 화면으로 사용할 수 있다. SVG 이미지 제작시 사용하는 요소들(box, text, line,...)의 테그값을 이용하여 데이터 값을 입력하거나 GUI 화면에 변화를 줄 수 있다.
  • xy Graphics

  • 3D Graphics

  • web pages using WebKit

    pvbrowser의 주소창에 http 주소를 입력하면 일반적인 브라우저와 동일하게 사용이 가능하다.
  • IDE support

    pvdevelop 는 Integrated Develop Environment 로 만들어져 있다. 앞으로 개발이 계속 진행된다면 기대되는 항목이다. Qt Designer, Eclipse 와 같은 IDE를 생각하면 허접하다고 할 수 있지만, 소스코드 작성, 위젯 배치, 컴파일 및 실행을 할 수 있는 최소한의 환경이 구비되어 있다.
    간단한 코드의 경우 별 무리가 없지만, 코드가 길어지는 경우, 작업이 점점 힘들어진다. 메모하는 습관을 기르거나 정리를 잘하기 바란다. 내장된 함수의 경우 삽입 및 help 파일이 존재하기 때문에 조금이나마 쉽게 접근이 가능하지만, 사용자 함수 및 변수의 경우, 일일이 확인하여 입력하여 주어야 한다.(OTL...)
  • graphical Design

    pvdevelop 프로그램에서gui 화면을 직접 만들 수 있다. Qt의 Designer 수준 혹은 유사한 것을 기대하지 말자. 아주 기본적인 형태이며 사용이 다소(매우...) 불편하지만 간단한 GUI 화면의 경우 익숙해지면 사용할 만 하다. 복잡한 화면의 경우 OTL...
    메뉴얼에 보면 Qt Designer를 이용하는 방법이 나와 있지만, 범인이 이해하기 다소 힘든 요소가 산재해 있다.
  • programming in C/C++ or Lua

    pvdevelop 를 이용하여 서버 프로그램을 작성할 떄 python, C/C++ 둘 중 하나를 선택하여 프로그램을 하게 된다. python을 이용하는 경우 수정한 내용이 바로 적용(컴파일 작업이 필요 없음)되는 반면에 C/C++을 이용하는 경우 내용이 수정되면 반드시 컴파일을 하여야 한다. 즉 python을 이용하는 경우 서버를 정지할 필요가 없지만 C/C++의 경우 수정된 프로그램을 반영하기 위해서는 서버를 정지한 후 재 가동하여야 한다. 물론 속도는 인터프리터 방식으로 실행되는 python 방식보다 C/C++이 빠르다.
  • Multithreaded or Inetd

    윈도우 와 Linux에서 지원하는 방식이 다르다.
    아직 사용법을 제대로 파악하지는 못했다...
    서버프로그램 여러개를 동시에 작동하는 것도 가능한 것 같은데...
  • Unicode support(Chinese, Arabic, Cyrilic,...)

    아직 한글 테스트를 해보지 않았다.
    pvdevelop를 Qt 를 이용해 재 컴파일 해야 할 것 같다.
    (Alarm 항목 할때 사용했었나.... 잘 기억이 나지 않네.)
  • Support for ssh-urls

    내부 intranet에서 사용하기 때문에 사용해보지는 않았지만, 외부 네트워크에서 접근할 경우 사용하여야 할 것 같다.
  • Connections to Fieldbuses

    Phillips 에서 제안한 규격으로, 유럽에서 많이 사용되는 통신 방식, Safety 개념이 상당히 강하다. Fieldbuse 라인에 순차적으로(Serial ? ) 연결된 기기들의 통신이 완벽하지 않은 경우, 통신 에러 및 통신이 되지 않는다(?)
  • Connections to PLC's

    전 용 프로토콜이 지원되지 않는 일반적인 PLC(or Device)의 경우 내장된 Modbus/TCP driver를 이용하면 된다. 이 드라이버는 RTU(?) 방식과 TCP 방식을 지원한다. 일반적인 경우에는 RTU 방식으로 사용하면 되고, 만약 인터넷을 이용한 연결이 가능한 기기의 경우 TCP 방식으로 설정하면된다.
    시리얼 전송 모드는 데이터의 인코딩 방식에 따라 아스키 혹은 RTU로 설정할 수 있는데 RTU 방식이 속도가 빠르지만, 개발초기 패킷 송수신이 제대로 되는지 확인이 필요한 경우에는 아스키 방식으로 설정하는 것이 유리하다.
  • Build your own authorization

  • pvbrowser client and pvdevelop GPL License

    % GPL(General Public License) : 내부적인 목적으로만 사용할 경우에는 소스코드를 공개할 필요가 없지만, 어떤 형태로든(유료 혹은 무료) 외부에 배포할 경우에는 전체 소스 코드를 공개하여야 하는 라이센스
  • Libraries LGPL License

     LGPL(Lesser General Public License) : 라이브러리를 정적 또는 동적으로 사용한 프로그램을 개발하여 판매 혹은 배포할 경우 프로그램 소스 공개없이 LGPL 코드를 사용하였다고 명기하면 사용에 아무런 제약이 없는 라이센스, 단 라이브러리를 수정하였거나 파생된 라이브러리를 개발한 경우, 역시 공개가 원칙입니다.
...
pvbrowser 홈페이지는 여기입니다.

-

댓글 3개:

  1. pvbrower 애 대해 상세하고 친절한 글을 너무 고맙고 재밌개 잘 읽었습니다
    읽으면서 응용할 것을 생각하다보니 몇가지 없는 기능이 있는거 같아서 질문드리고 싶은데요.
    pvbrowser scada에는 Alarm 설정 및 이메일이나 기타 sms와 같은 알람문자전송기능이 없을까요?
    또 외부에서 서버에 접속하기전에 사용자로그인 과정을 넣으면 좋겠는데 그런 기능이 혹시 있나요?
    실력은 부족하면서 너무 좋은 툴을 발견한거 같아서 이것저것 궁금한게 많네요 ㅎㅎ

    답글삭제
  2. 하이퍼 스카다 국산 SCADA 배우기 카페입니다. 놀러오세요. 자동제어 배우러
    https://cafe.naver.com/hyperhmi/

    답글삭제
  3. 제이지스카다 까페에서 scada 배우기가 가능합니다.
    참고하세요.
    https://cafe.naver.com/jgscada

    답글삭제